同态加密是一种支持数据密态处理的密码学技术,可以广泛应用于云计算、医疗、金融等领域。本热心小编不允许还有人不知道什么是同态加密!都给小编进来学!(天空一声巨响 🌩 小编闪亮登场 🕶~)

一、什么是同态加密
全同态加密是一种加密技术,允许在不解密的前提下,对密文进行一些有意义的运算,使得解密后的结果与在明文上做"相同计算"得到的结果相同
-
常见的错误公式(E 代表加密) ❌
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> E ( m 1 ) ∘ E ( m 2 ) = E ( m 1 ∙ m 2 ) \textcolor{red}{{E(m_1)\circ E(m_2)=E(m_1\bullet m_2)}} </math>E(m1)∘E(m2)=E(m1∙m2)
-
正确公式(E 代表加密,D 代表解密) ✅
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> D ( E ( m 1 ) ∘ E ( m 2 ) ) = m 1 ∙ m 2 \textcolor{green}{D(E(m_1) \circ E(m_2))=m_1 \bullet m_2} </math>D(E(m1)∘E(m2))=m1 ∙ m2
通常所说的"同态加 法","同态乘 法",指的是明文 上的运算,即 <math xmlns="http://www.w3.org/1998/Math/MathML"> ∙ \bullet </math>∙对应的运算
同态加密被称为密码学的"圣杯",原因是同态加密算法功能十分强大,可以支持密文上的任意操作。

目前的全同态加密算法效率比较低,只能支持一些简单的代数或逻辑运算,对一些复杂的计算逻辑支持较差。

二、理论到实现
2.1 理论
全同态加密的思想早在 1978 年由 Rivest,Adleman 和 Dertouzos(前两位就是 RSA 中的 R 和 A)在他们的论文《On Data Banks and Privacy Homomorphisms》中提出。论文中提出了对密文进行一定的计算,可以间接地对原文进行操作的构想 。需要指出的是,这离公钥密码学概念的提出,才仅过去两年的时间,由此也凸显了密码大牛的想象力和洞见力。后来,这种技术才被重新命名为同态加密。
传统的一些密码方案具有一些简单的同态性质,如教科书式的 RSA 算法(支持同态乘法),Paillier 算法(支持同态加法)等。然而,这 些算法 离真正的全同态加密还有很大的距离。
2.2 方案
经过 30 多年的发展,Gentry 在其博士论文中提出了第一个真正意义上的全同态加密方案。该方案基于理想格,利用环结构上的同态性质设计。

- 全同态加密方案:
简单来说,假如 <math xmlns="http://www.w3.org/1998/Math/MathML"> I ⊂ R I \subset R </math>I ⊂ R 是环 <math xmlns="http://www.w3.org/1998/Math/MathML"> R R </math>R 的一个理想, <math xmlns="http://www.w3.org/1998/Math/MathML"> x ∈ R x\in R </math>x∈ R 是环中的任意一个元素,则 <math xmlns="http://www.w3.org/1998/Math/MathML"> x I ⊂ I xI \subset I </math>xI ⊂ I(吸收律), <math xmlns="http://www.w3.org/1998/Math/MathML"> I + I = I I+I=I </math>I+I=I(封闭性)。考虑商环 <math xmlns="http://www.w3.org/1998/Math/MathML"> R / I R/I </math>R/I。对于任意的 <math xmlns="http://www.w3.org/1998/Math/MathML"> x , y ∈ R , x,y\in R, </math>x,y∈ R, 有
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> ( x + I ) + ( y + I ) = ( x + y ) + I , ( x + I ) ( y + I ) = ( x y ) + I (x+I)+(y+I)=(x+y)+I,\\ (x+I)(y+I)=(xy)+I </math>(x+I)+(y+I)=(x+y)+I,(x+I)(y+I)=(xy)+I
这些就是商环的运算性质,而性质恰好可以用来构造同态加密。不严格地讲,如果把 <math xmlns="http://www.w3.org/1998/Math/MathML"> + I +I </math>+I 运算想象成"加密"过程,上面实际上可以翻译为:
- " <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x的密文" 与 " <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y的密文" 经过 "加法"运算 ===》" <math xmlns="http://www.w3.org/1998/Math/MathML"> x + y x+y </math>x+y的密文"
- " <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x的密文" 与 " <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y的密文" 经过 "乘法"运算 ===》 " <math xmlns="http://www.w3.org/1998/Math/MathML"> x y xy </math>xy的密文"
这正是同态加密所要完成的功能!

然而需要指出的是,这种方案还是只能支持有限次的同态乘法和同态加法,离"任意运算"还是有不小的距离,所以仍然不是一个真正的全同态加密方案。因为上述由理想格设计出的方案本质上是基于噪声的,运算过程中噪声的规模会增长。当噪声增长到一定程度后,就不能从密文中将信息恢复出来了。Gentry 将这类可以支持一定程度上的同态加法和同态乘法的加密方案称为"SomeWhat Homomorphic Encryption" (简称为 SHE 或 SWHE) 。
在 Gentry 之前仅有的类似方案是 05 年提出的 BGN 方案。其基于椭圆曲线上的双线性对构造,可以支持同态加法和一次同态乘法因此,为了实现真正意义上的全同态加密,Gentry 并没有停下前进的脚步。

Gentry 的另一个贡献,也是构造全同态加密的关键,那就是提出了 Bootstrapping 技术:通过同态执行解密电路(即始终保持在密文状态下执行解密电路),对密文进行刷新,将其中所含的噪声减少,使其能够再进行同态乘法和同态加法运算。通过重复执行 Bootstrapping, 便可以将 SWHE 方案转化为 FHE 方案。这就是 Gentry 提出的构造全同态加密的蓝图,也是目前唯一已知的构造全同态加密的方式。

这里有一个比较有意思的点。前面说了 ,SWHE 只能支持有限次的同态乘法操作,而 Bootstrapping 中需要同态执行解密电路,那么一个很显然的推论就是,解密电路中需要执行的乘法运算不能超过 SWHE 中能支持的同态乘法的界限,因为需要在 SWHE 中实现 Bootstrapping 操作。但是,通过分析发现,几乎所有的可用的加密方案,执行其解密电路所需的乘法操作总是超过了 SWHE 中能支持的同态乘法的界限。
这个看似不可逾越的鸿沟,好像给 Gentry 的同态加密构造蓝图打上了"不可能"的标签 。但是 Gentry 通过引入一些新的计算假设,成功地将解密电路中所需的乘法操作拉到 SWHE 能支持的乘法操作范围内。从而成功地构造出了第一个全同态加密方案。

三、全同态加密发展历程
此后的第二代(BGV 等方案为代表)、第三代(GSW 方案为代表)全同态加密方案中,都有 Gentry 的贡献。可以毫不夸张地说是 Gentry 大神敲开了全同态体系的大门 ,并在随后的 14 年中不断地推动「同态加密算法」的发展。由于在同态加密领域的杰出工作,Gentry 获得了 2022 年的哥德尔奖。有人预测,一旦同态加密获得大规模应用,Gentry 很可能获得 图灵奖。
花边新闻:Gentry 在哈佛获得法学学位后,曾做过一段时间律师。令人津津乐道的跨界成功的教科书式案例,"出道即巅峰"的典型代表。

从 Gentry 提出第一个全同态加密方案开始,全同态加密算法在设计、分析、优化、实现、应用等研究方向上都取得了很大的进展。而全同态加密算法本身也经历了轮的"迭代升级"。
(关于下面的分代,学术界也存在一些争议。这里给出其中一种便于我们描述的分代方式,不代表小编的观点)
发展历程 | 同态加密方案 |
---|---|
第一代 | 主要是以 Gentry 基于理想格的方案和 van Dijk 等基于整数环上的 AGCD 困难性的 DGHV 方案为代表。Gentry 的方案涉及了较多的代数数论,方案有些复杂。而 DGHV 方案基于整数,方案简单,便于理解,但计算复杂度高,公钥尺寸非常大,很不实用 |
第二代 | 以 Brakerski 和 Vaikuntanathan 等人基于 LWE 问题等设计的 BV 方案为起点,代表性的有 BGV 方案和 BFV 方案。这一类方案主要以层次型(leveled FHE)结构为主,针对一些特定的场景,通过精心设计参数,可以避免在计算过程中引入耗时的 Bootstrapping 操作。此外,同一时间内,López-Alt 等人还基于 NTRU(一个格密码方案)提出了一种称为多密钥 FHE 的同态加密方案的概念,支持对不同密钥加密的密文进行计算。进一步提升了同态加密的功能性,扩展了其在实际中的使用范围 |
第三代 | 以 Gentry 等人(GSW)方案为开端。GSW 方案基于近似特征向量构造,设计了一种不同的方法来执行同态运算。该方案一个非常有意思的点是可以用来构造属性基(Attribute-Based)加密。现在一些高级的设计中,很多都以 GSW 方案为组件。与此同时,比较著名的代表方案还包括 FHEW 和 TFHE 等 |
第四代 | 以 CKKS 为主要代表。也有学者将其归为第二代,与 BGV、BFV 方案等并列。严格来讲,CKKS 并不是同态加密方案,而是近似同态加密方案。 <math xmlns="http://www.w3.org/1998/Math/MathML"> D ( E ( m 1 ) ∘ E ( m 2 ) ) ≈ m 1 ∙ m 2 \\\textcolor{red}{D(E(m_1) \circ E(m_2)){\approx} m_1 \bullet m_2}\\ </math>D(E(m1)∘E(m2))≈ m1 ∙ m2 然而,由于其对浮点数的支持比较好。因此被广泛使用在隐私保护机器学习等场景中。此外,Li等人还对CKKS算法给出了攻击和修复建议 |
噪声管理是目前全同态加密方案中的一个重要部分,很多方案论文中,考虑的关键点就是更好的噪声管理方式。实际上,也出现过一些无噪声的"同态加密方案",主要基于非交换代数设计,但是这类方案安全性很低,基本上每出现一个方案,很快就被攻破了。
四、最后
以上就是本文的所有内容,如果大家还有那些想了解的隐私计算相关的内容请留言告诉我们!

PrimiHub 一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。