【引】走近任何一个领域,都会发现自己的渺小和微不足道,会越发地敬畏技术和未知,隐私计算也不例外。读了一点儿文章和paper,觉得还是ACM 上的这篇综述(https://queue.acm.org/detail.cfm?id=3561800)可以对全同态加密有一个概貌,从而了解其脉络方向,进而对隐私计算增加一点点认知。

隐私计算中的完同态加密为加密数据提供量子安全级的计算,保证明文数据及其衍生计算结果永远不会公开,并且在基础设施受到破坏的情况下保持安全,不会被修改和/或破坏。大多数完同态加密方案都是基于lattice 数学方式描述的(序理论和抽象代数子学科研究的一种抽象),被认为量子计算安全的,并被认为是后量子密码学。新的硬件加速器体系结构是一个活跃的研究和开发领域,和学术研究不断开发新的和更有效的实施方案,使得 完同态加密对数据处理的实现逐步来到了商业化阶段。其中:

  • 数据,包括其不受限制的计算及其派生物,在静止状态和整个生命周期中都保持加密,只有在安全、可信的环境中才能解密为明文。

  • 通过人工智能、大数据和分析,可以从数据中提取出有价值的见解,甚至可以从多个不同的来源中提取,而不需要暴露数据或者在必要时暴露底层的评估代码。

1. 当前的数据安全模型

不仅失效,而且很快失去相关性

在当今 IT 基础设施中,常见的行业标准和基于边界的安全机制是由数千个集成在一起的、不断变化的硬件和软件组件构建的。它们主要依赖于加密技术,依赖于现有硬件难以找到离散对数和/或大整数的素数。另外,这些组成部分的数量和质量在不断变化,唯一不知道的是这些变化是否会被识别和利用,基础设施的破坏点始终存在。

数据保护已成为一个日益复杂和容易出现漏洞的过程,目前的很多方法都无法实现可证明的数据安全。此外,数据处理工作在日益严格的监管环境下进行,违反规定的后果和成本也都很严重。

目前广泛使用的加密技术取决于在标准硬件上寻找离散对数和/或分解大整数的困难程度,而量子计算的算法可以很容易对这些问题进行求解。随着量子计算市场以36.5% 复合的年增长率在增长,预计到2028年将达到19.876亿美元,这些加密技术正在过时,需要后量子时代的密码学这样一种安全机制:

  • 假设 IT 基础设施已经受到损害,不依赖强大的外围防御也可以来保护数据。

  • 使用不易受量子计算攻击的加密技术。

从目前的技术进展来看,全同态加密可以满足这两个要求。

2. 从同态加密开始

在1978年,Ronald L. Rivest, Len Adelman, 和 Michael L. Dertouzos提出了直接对加密数据进行计算的想法。他们发现,在 RSA 加密下,两个加密数字可以相乘,结果将等同于使用相同密钥加密的明文产品。他们将这些属性称为隐私同态,认识到加密方案可以具有这样的属性:

对明文数据的一组操作的结果等于对其加密形式执行然后解密的那些相同操作的结果。

因此,RSA 加密表现出了相乘同态的属性,进而认识到:

  • 有了同态加密,即可以在加密数据上进行计算的能力,对数据的访问可以与对数据的处理分离开来,使计算可以在加密数据上进行,而不需要使用密钥解密。

  • 用户可以获取一段数据,同态地加密它,然后在数据库中查询加密数据,查询本身可以加密或不加密的,可以以同样的方式得到加密的结果。

  • 在计算过程中,查询的原始数据、解密密钥、查询结果或查询本身从未公开过。

30多年后的2009年,Craig Gentry 提出了第一个貌似安全的全同态方案。算法被定义为一个逻辑门电路,对加密数据进行不受限制的计算,结果以同样的方式加密。它非常慢,在标准 x86硬件上完成一个单独的逻辑门大约需要30分钟。因此,传统观点认为,要使 FHE 以商业上可行的速度运行,至少还需要额外的100万倍性能加速。

3. 同态加密的基础

同态加密提供了非对称公钥加密支持的所有功能。当前的非对称公钥加密基于查找离散对数或大整数的因数分解,有五个属性:

  1. 密钥生成: (sk,pk)->K (λ) ,其中,带有随机种子参数 λ 的密钥生成函数 K 生成一个由密钥 sk 和公钥 pk 组成的密钥对。

  2. 加密: c <- E(pk,m) ,其中加密函数 E 使用参数 pk 和明文消息 m 来产生加密的消息密文 c。

  3. 解密: m <- D(sk,c) ,其中解密函数 D 带有参数 sk 和 c 产生 m。

  4. 正确性: m = D (sk,E (pk,m))表示所有密钥对、消息和加密随机性。

  5. 语义安全: 对 m ∈{0,1}的所有单位消息 m,集合0和1的成员 E (pk,0)和 E (pk,1)必须是计算上不可区分的,并且必须是概率随机的(例如,每个明文消息 m 应该有许多加密消息 c)。

对于同态加密而言,还必须添加两个属性:

  1. 评估: 除了 K、 E 和 D 函数外,还要加上 V 来进行评估。

  2. 正确性修正: D (sk,V (pk,f,c1,… cn)) = f (m1,… ,mn) ,其中解密函数 D 带有参数 sk,计算函数 V 带有参数 pk; 函数 f,其中 f ∈ F (一组具有同态性质的高效可计算函数) ; 密文 c1,… ,cn 等于参数 m1,… ,mn 的 f函数计算结果。

对于乘法同态而言,这将是 D (sk,HE-MULTIPLY (pk,MULTIPLY,E (pk,m1) ,E (pk,m2))) = MultiplY (m1,m2)。

因此,为了实现不受限制的同态计算,必须选择 F 作为一组完整的函数来完成所有的计算。由于集合{ XOR,AND }是图灵完备的,实现这个目标所需的两个函数是位加法(相当于布尔异或)和位乘法(相当于布尔与)。任何可计算函数都可以通过 XOR和AND的组合来创建。同态计算系统是图灵完备的,XOR和AND是必需的,但算法不需要直接用这些底层语义来定义,当前一般用布尔电路、整数算法或实数/复数算法来定义计算。

4. 同态加密的安全性

在Ronald L. Rivest, Len Adelman, 和 Michael L. Dertouzos的论文中,密钥 sk通过创建 p 的随机倍数来隐藏在公钥 pk 中,qi 是一个密钥的因子分解,对于每个加密都是不同的。使用公钥对单比特 b 进行加密是将 p 的随机倍数加到 b 上,然后解密是 m = (c 模 p 模2)。

遗憾的是,这种方法打破了语义安全,因为c = qip + b 模 2,则0 的密文 = qip + 0 模2,那么 明文位0的加密只是 p 的倍数。

2010年,Martin van Dijk,Craig Gentry,Shai Halevi 和 Vinod Vaikuntanathan发现,在公钥中添加噪音能阻碍密钥被发现,如果从集合{xi = qip + 2ri : ri << p : p << qi}中抽样,其中 (1) ri 是一个轻微的噪声量,并且对于每个加密都是不同的, (2)每个 xi 非常接近 p 的倍数,但不是 p 的精确倍数,

那么整数的集合 xi 与相同大小的随机整数是不可区分的。

4.1 同态加密的数学基础

同态加密是将明文比特b 加密为一个多项式,具体步骤:

  1. 选择一个大的奇数 p 作为密钥。

  2. 对于每个加密,选择一个随机的、大的 p 的倍数,比如 qip。

  3. 然后,对于每个加密,用一个噪声表达式对比特b 和 qip 进行求和,该噪声表达式定义为将一个随机小数为2ri。这将生成密文 c = qip + 2ri + b,其中 qip + 2ri 是公钥。

同态加密的加法示意:

c1 = q1p + 2r1 + b1c2 = q2p + 2r2 + b2c1 + c2 = p(q1 + q2) + 2(r1 + r2) + (b1 + b2)其中 2(r1 + r2) 是噪声

同态加密的乘法示意:

c1 = q1p + 2r1 + b1c2 = q2p + 2r2 + b2c1c2 = p(q1q2 + q1b2 + q2b1) + r1(2pq2 + b2) + r2(2pq1 + b1) + r1r2 + b1b2 其中 r1(2pq2 + b2) + r2(2pq1 + b1) + r1r2为噪声

可见,同态加密的计算存在着噪音增长。如果 | 噪声 | 超过 p/2,则无法保证解密。加法噪声增长是线性的,乘法是指数的,如果没有机制来重置噪声增长,多次同态加密计算就会达到 p/2的限制。在 p/2噪音限制内工作, 这就是“部分”同态加密的定义,对于许多有价值的、有界限的用例如数据库查询和垃圾邮件过滤是有效的。如果在加密值的计算过程中,不支持对加密数据的无限制计算,因此不是 全同态加密。

4.2 全同态加密

在 Gentry 的2009年论文之前,同态加密计算过程中聚集的噪声问题显著地限制了真正应用的场景。处理更大的同态计算基本上有两种选择, 选择一是通过增加密钥 sk 的大小来增加噪声限制,但无法根治噪声问题。另一种方式稍显复杂,步骤如下:

  1. 在不可信、不安全的节点上冻结同态计算。

  2. 将加密的中间状态值 cn 传输回一个安全、可信的节点。

  3. 用密钥 sk 对 cn 进行明文解密mn。

  4. 使用公钥 pk 将 mn 加密回 cn,将噪音降低到一个很小状态。

  5. 将 cn 传回不可信、不安全的节点。

  6. 用新的重新加密的低噪声 cn 重新启动同态计算。

显然,后者是不现实的。Gentry 开发了一种在加密结果中重置“噪声”的机制,以便计算线程可以不受限地继续运行。在他的方法中,使用了基于Lattice的密码学,采用了一种递归、嵌入式的同态解密方法,允许重新设置加密值的噪音,而不会暴露它或密钥,以免潜在的破坏或将其实际转移到一个安全、可信的节点进行解密。通过这种方式,Gentry 展示了对加密数据进行无限制计算的可能性。Gentry 的方法遵循以下步骤:

  1. 使用公钥 pk 对明文消息 m 进行加密,生成密文 c1。

  2. 对 c1进行一定数量的同态计算,产生 cn,使 cn 接近但不超过噪声极限 sk/2。

  3. 使用公钥 pk 对密钥 sk 进行加密,创建一个加密的密钥 ck。

  4. 使用公钥 pk 对 cn 进行加密,生成一个新的双重加密 ccn。

  5. 利用加密密钥 ck 对 ccn 进行解密,产生具有复位噪声级的 cn。

  6. 使用 cn 继续计算。

Gentry 实现的是使用同态计算对加密的值 c 进行解密和重新加密,该同态计算使用加密的秘钥 sk 和公钥 pk。Gentry 称他的噪声重置过程为自举。虽然它表明加密数据的无限制计算是可能的,但是有两个重大的限制阻碍了它在编程应用中的应用: (1)自举算法所需的计算量远远超过了现有硬件平台的性能能力; (2)缺乏判断条件的有效实现。

自2009年以来,业界在原始 Gentry 方案的基础上进行了大量的性能和功能改进: 提高全同态计算的性能; 增加自举性能; 减少固定数量的同态计算所需的自举数量; 在没有自举的同态计算过程中最小化噪声增长; 以及基于已知的、量子计算无法解决的高难度lattice数学问题改进密码模型。具体包括:

  • LWE (有错误的学习)和 RLWE (有错误的环形学习),等价于解决Lattice数学中的 CVP (最接近向量问题) ,基于无法确定系数(代表密钥)在有限域上的线性方程组(LWE)或多项式环(RLWE)的抽样,其中每个方程都有一个小的、随机的、可加的误差。

  • 水准度量。在需要自举装置之前,允许对预定深度的逻辑门电路进行评估。

  • 重新线性化。通过减少密文长度(由同态乘法产生)同时保持底层消息的正确性来减少同态计算的开销和存储负担。

  • 模值转换。通过将密文 c 模 q 除以噪声因子 | r | 产生一个新的、低噪声的、等效的密文 c’= c/r 模 q/r,在保持密文 c 完整性的同时不使用密钥来降低噪声。

5. 全同态加密的发展

最初,基于Lattice的 全同态加密方案支持密文的加法和乘法,允许逻辑电路执行无限制的计算,非常慢。而后,Martin van Dijk,Craig Gentry,Shai Halevi 和 Vinod Vaikuntanathan 用一个简单的基于整数的方案取代了 Gentry 方法中的 同态加密部分。

接下来,BFV (Brakerski/Fan-Vercauteren)和 BGV (Brakerski-Gentry-Vaikuntantan)引入了 LWE 和 RLWE 安全模型,并且还引入了水准度量方案,允许在需要自举之前执行设置深度的逻辑门电路。

然后,GSW (Gentry-Sahai-Waters)避免了同态乘法中计算量很大的线性化问题,使得噪音增长较慢。使用 FHEW 开发了更高效的环变体,同时简化和增加了自举的优化。

近来,CKKS (Cheon-Kim-Kim-Song)为加密值引入了有效的舍入操作,控制了同态乘法中噪声率的增加,并减少逻辑电路中自举的数量。它还将 PBS (可编程自举)的概念引入到 TFHE(环面全同态加密)中,减少了逻辑电路所需的自举数量。

目前, 支持全同态加密的技术框架和模式如下:

目前的全同态加密方案主要有三种实现计算的方式:

5.1 布尔电路

  • 明文: 比特位

  • 计算: 任意布尔逻辑门电路

  • 特点:快速的数字比较和自举

  • 典型方式:GSW,FHEW,TFHE

5.2 高精度/模 运算

  • 明文: 对一个明文数据进行整数取模得到a (或其向量)

  • 计算: 整数算术电路取模 a

  • 特点:

    • 整数向量上有效的 SIMD (单指令多数据)批处理计算

    • 快速、高精度的整数运算和标量乘法

    • 可以避免自举的水平测量

  • 典型方式:BGV, BFV

5.3 近似数字算术

  • 明文: 实数或复数

  • 计算: 类似浮点运算

  • 特点:

    • 快速的多项式逼近

    • 相对较快的倒数和离散傅里叶变换

    • 深度近似计算,例如 Logit模型学习

    • 实数向量上有效的 SIMD 批处理计算

    • 可以避免自举的水平测量

    • 典型方式:BGV, BFV

6. 全同态加密的典型应用场景

随着全同态加密的硬件加速器出现,一些基于全同态加密的可能应用领域包括:

6.1 在整个生命周期内保护数据不被破坏/修改

加密数据上的隐私保护计算保证了数据及其派生计算结果在基础设施受到破坏的情况下不受修改和/或破坏的影响。在静止的数据和整个计算生命周期中,可证明的数据安全性将加速向不可信平台的转移,以提供机密数据的计算服务,从而消除了使用私有数据中心的大部分理由。

6.2 保护数据不受量子计算攻击

全同态加密中使用的基于Lattice数学的算法不易受到量子计算的攻击,随着许多量子计算机产品的发布或计划发布,后量子密码学时代或许已经开始。

6.3 保护应用服务数据、结果和分析模型不被披露

通过全同态加密,可以安全地引入用户加密的数据输入,并对服务结果和分析模型信息(如神经网络权重)执行大数据、 AI 和/或分析服务。

6.4 分析多个组织汇总的加密数据

多个组织的不同加密数据集可以在没有基础数据披露的情况下进行汇总和分析,包括:

  1. 大数据、人工智能或对整个行业趋势的分析见解;

  2. 评估并购的资产负债表汇总;

  3. 结合来自不同供应商的数据以促进药物试验;

  4. 应用于合并潜在合作伙伴数据的分析以确定潜在的商业价值。

6.5 与网络流量匹配的安全和保密规则

通过高级 NTA (网络流量分析) ,网络恶意行为者使用的行为模式、方法和技术随着时间的推移被学习,被定义为规则,并使用全同态加密方式进行加密。这些加密规则通过全同态加密计算应用于不可信环境中的网络流量,在不暴露威胁特征或不匹配流量的情况下识别和监视威胁者的存在。这对广/城/局域网的计算机网络安全和反洗钱都很有用。

6.7 隐私数据集的交互

在较大的数据库中进行安全和保密的数据集检查,这是查询大型数据存储区中是否存在特定数据的能力,而不会显示有关查询或数据存储区内容的信息。

6.8 增强型区块链

使用 全同态加密 和 零知识证明,那么,当在区块链上记录隐私交易时,可以证明交易发生时并没有披露数据细节。

6.9 确保感知/控制/执行实时控制链的数据安全和完整性

通过在源端对传感器数据进行加密,并在整个实时控制链中支持加密计算,可以保护数据不受破坏和修改。

6.10 加密数据资源的货币化

通过全同态加密方式加密的隐私/机密数据集,可以产生收入流,供不可信的机器学习平台、大数据平台或不可信平台上的分析应用程序使用。

7. 小结

通常,全同态加密被称为密码学的圣杯,商业化可能就在不远的将来。基础设施保安模式将成为不可避免的要求,后量子时代密码学成为政府和工业界的当务之急。一旦实现了全同态加密的商业化,数据访问将与不受限制的数据处理完全分离,安全的存储和计算将变得相对廉价。与数据库、云计算、 PKI 和人工智能的影响相似,全同态加密将引发机密/隐私信息保护、处理和共享方式的巨大变化,并将从根本上改变基础计算的进程。

【关联阅读】

  • 从隐私到隐私计算

  • 隐私计算中的联邦学习

  • 与代码无关的网络安全

  • 零信任安全的认知

  • 服务计算的思考

  • 物联网安全与区块链

  • 并发计算中的串行思考

  • 计算机体系结构的一知半解

  • 计算机网络的元认知、实践与未来

  • 这是你所了解的FaaS 么?——无服务计算的10个思考