提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
传统的加密系统依赖于在参与交换加密信息的对等人之间共享一个密钥(公共或私人)。然而,这种方法带来了隐私问题。拥有密钥的用户或服务提供商对数据有专属权利。特别是在流行的云服务中,对敏感数据的优先权的控制会丧失。即使在不共享密钥的情况下,加密的材料也会与不一定需要访问内容的第三方共享。此外,不受信任的服务器、供应商和云运营商可以在用户结束与服务的关系后,长期保留用户的识别要素。事实上,同态加密(HE),一种特殊的加密方案,可以解决这些问题,因为它允许任何第三方在不事先解密的情况下对加密数据进行操作。虽然HE方案的这一极其有用的特点已经存在了30多年,但第一个可信的、可实现的完全同态加密(FHE)方案是由Craig Gentry在2009年推出的,它允许任何可计算的函数在加密数据上执行。尽管这是一项重大成就,但迄今为止不同的实现方式表明,FHE仍然需要大幅改进才能在每个平台上实用。因此,本调查着重于HE和FHE方案。首先,我们介绍了HE的基础知识和著名的部分同态加密(PHE)和部分同态加密(SWHE)的细节,它们是实现FHE的重要支柱。然后,介绍了主要的FHE系列,它们已成为其他后续FHE方案的基础。此外,还调查了Gentry型FHE方案的实现和最近的改进。最后,讨论了进一步的研究方向。本调查旨在为有兴趣了解、应用和扩展最先进的HE、PHE、SWHE和FHE系统的研究人员和从业人员提供清晰的知识和基础。
一、介绍
1.1 同态
在抽象代数中,同态被定义为保留一个代数集的域和范围之间所有代数结构的映射。该映射只是一个函数,即一个操作,它从域的集合中获取输入,并在范围中输出一个元素(例如,加法,乘法)
1.2 同态加密(HE)
是一种加密方案,允许第三方(如云,服务提供商)在加密数据上执行某些可计算的功能,同时保留功能的特征和加密数据的格式。
1.3 传统加密方案的劣势
加密是保护任何敏感信息隐私的重要机制,然而,传统的加密方案不能在没有解密的情况下对加密的数据起作用。因此用户必须牺牲他们的隐私使用云服务器完成文件存储、共享或协作等操作。此外,不受信任的服务器、供应商和流行的云运营商可以在用户结束与服务的关系后,长期保留用户的物理识别元素
1.4 使用云服务器简单的同态加密实例
图1展示了一个简单的云计算应用实例。在这种情况下,客户C首先对他的私人数据进行加密(步骤1),然后将加密数据发送到云服务器S(步骤2)。当客户想要在他自己的数据上执行一个函数(即查询),f(),他将该函数发送到服务器(步骤3)。服务器使用Eval函数对加密数据进行同态操作,即蒙上眼睛计算f()(步骤4),并将加密的结果返回给客户(步骤5)。最后,客户用他自己的秘密密钥恢复数据,并获得sf(m)(步骤6)。从这个简单的例子中可以看出,服务器端的同态操作Eval()不需要客户端的私钥,并允许对加密的客户端数据进行各种操作,如加法和乘法。
1.5 同态加密的类型
- 部分同态加密(Partially Homomorphic Encryption,PHE)允许对密文进行一种类型的操作被执行无数次。(即对使用次数没有限制)。
例如加法同态:Paillier算法,乘法同态:RSA算法 - 特定同态加密(Somewhat Homomorphic Encryption,SWHE) 允许对密文完成有限次的任意操作。(对操作没有限制,但是只能进行有限次)
- 完全同态加密(Fully Homomorphic Encryption,FHE)允许对密文进行无限次的任意操作。(操作和次数都没有限制)
二、同态加密方案
2.1 定义1
如果一个加密方案支持以下公式,则称其为操作 * 上的同态。
E
(
m
1
)
∗
E
(
m
2
)
=
E
(
m
1
∗
m
2
)
,
∀
m
1
,
m
2
∈
M
E(m_1)*E(m_2)=E(m_1*m_2), ∀m_1,m_2∈M
E(m1)∗E(m2)=E(m1∗m2),∀m1,m2∈M
其中,
E
E
E是加密算法,
M
M
M是所有可能的信息集合。
2.2 HE的四个主要步骤
- KeyGen:是为非对称版本的HE生成一对秘密和公共密钥的操作,或为对称版本生成一个单一的密钥。
- Enc:加密
- Dec:解密
KeyGen、Enc和Dec与传统加密方案中的经典任务没有区别。 - Eval:Eval是一个HE特有的操作,它将密码文本作为输入,并输出对应于一个函数的普通文本的密码文本。Eval在密码文本 ( c 1 , c 2 ) (c_1,c_2) (c1,c2)上执行函数 f ( ) f() f(),而不看信息 ( m 1 , m 2 ) (m_1,m_2) (m1,m2)。
三、Partially Homomorphic Encryption(PHE)方案
本节中描述了集中最基础,最中要的PHE算法,其他的算法基本都是基于这几种算法演化而来。
3.1 RSA
RSA是在1976年Diffie和Hellman发明公钥密码学后两年,由Rivest等人提出。RSA是公钥密码系统的第一个可行的研究成果(论文题目:‘ method for obtaining digital signatures and public-key cryp-tosystems’)。RSA密码系统的安全性是基于两个大素数乘积的因式分解问题的难易程度。定义如下:
- KeyGen算法:首先,对于大素数 p p p和 q q q,计算 n = p q n=pq n=pq和 ϕ = ( p − 1 ) ( q − 1 ) \phi=(p-1)(q-1) ϕ=(p−1)(q−1)。然后。然后,选择 e e e ,通过计算 e e e 的乘法逆(即, e d ≡ 1 m o d ϕ ed≡1 \; mod \; \phi ed≡1modϕ)来计算 g c d ( e , ϕ ) gcd(e,\phi) gcd(e,ϕ) 和 d d d。(原文:Then, e e e is chosen such that g c d ( e , ϕ ) gcd(e,\phi) gcd(e,ϕ) and d d d are calculated by computing the multiplicative inverse of e e e(i.e., e d ≡ 1 m o d ϕ ed≡1 \; mod \; \phi ed≡1modϕ).)最后, ( e , n ) (e,n) (e,n)作为公钥对被释放,而 ( d , n ) (d,n) (d,n)作为私钥对被保存。
g c d ( a , b ) gcd(a,b) gcd(a,b)表示 a a a和 b b b的最大公约数
乘法逆元:
定义:若存在正整数a,b,p, 满足ab = 1(mod p), 则称a 是b 的乘法逆元, 或称b 是a 的乘法逆元。b ≡ a-1 (mod p),a ≡ b-1 (mod p)
比如说, 在模7 意义下,3 的乘法逆元是5, 也可以说模7 意义下5的乘法逆元是3。模13意义下5的逆元是8
详解链接:http://t.zoukankan.com/mjtcn-p-7241896.html
- 加密算法:首先,将信息转换为明文m,使0≤m<n,然后采用RSA加密算法,如下所示,其中
c
c
c是密文:
c = E ( m ) = m e ( m o d n ) , ∀ m ∈ M c=E(m)=m^e \;(mod \;n),\quad ∀m∈M c=E(m)=me(modn),∀m∈M - 解密算法:使用私钥对
(
d
,
n
)
(d,n)
(d,n)可以从密码文本
c
c
c中恢复信息
m
m
m,如下所示:
m = D ( c ) = c d ( m o d n ) m=D(c)=c^d \;(mod \; n) m=D(c)=cd(modn) - 同态属性:对于
m
1
,
m
2
∈
M
m_1, m_2 \in M
m1,m2∈M:
E ( m 1 ) ∗ E ( m 2 ) = ( m 1 e ( m o d n ) ) ∗ ( m 2 e ( m o d n ) ) = ( m 1 ∗ m 2 ) e ( m o d n ) = E ( m 1 ∗ m 2 ) E(m_1)∗E(m_2)=(m^e_1 \; (mod \; n))∗(m^e_2 \; (mod \; n))=(m_1∗m_2)^e \;(mod \; n)=E(m_1∗m_2) E(m1)∗E(m2)=(m1e(modn))∗(m2e(modn))=(m1∗m2)e(modn)=E(m1∗m2)
RSA的同态性表明, E ( m 1 ∗ m 2 ) E(m_1∗m_2) E(m1∗m2)可以通过使用 E ( m 1 ) E(m_1) E(m1)和 E ( m 2 ) E(m_2) E(m2)直接评估,而无需解密。换句话说,RSA只对多乘法具有同态性。因此,它不允许密码文本的同态加法操作。
3.2 Goldwasser-Micali
Goldwasser和Micali(1982)提出了第一个概率性公钥加密方案GM。GM密码系统是基于二次剩余问题的难度(Kaliski2005)。如果存在一个整数 x x x,使得 x 2 ≡ a ( m o d n ) x^2≡a \; (mod \; n) x2≡a(modn),那么数字 a a a就被称为二次剩余模 n n n(quadratic residue modulo n n n)。二次残差问题决定了一个给定的数字q是否是模数n的二次方。GM密码系统描述如下。
- 密钥生成算法:与RSA类似,计算 n = p q n=pq n=pq,其中 p p p和 q q q是不同的大素数,然后 x x x被选为二次非保留模 n n n值中的一个, ( x n ) = 1 (\dfrac{x}{n})=1 (nx)=1(原文:then x x x is chosen as one of the quadratic nonresidue modulo n n n values with ( x n ) = 1 (\dfrac{x}{n})=1 (nx)=1)。最后, ( x , n ) (x,n) (x,n)被公布为公钥,而 ( p , q ) (p,q) (p,q)被保存为私钥。
- 加密算法:首先,消息
m
m
m被转换成一串比特。然后,对于信息
m
i
m_i
mi的每一个比特,产生一个二次非保留值
y
i
y_i
yi,使得
g
c
d
(
y
i
,
n
)
=
1
gcd(y_i,n)=1
gcd(yi,n)=1.然后,每个比特被加密为
c
i
c_i
ci,如下所示:
c i = E ( m i ) = y i 2 x i m ( m o d n ) , ∀ m i = { 0 , 1 } c_i=E(m_i)=y^2_ix^m_i \; (mod \; n),\quad ∀m_i=\left\{0,1 \right\} ci=E(mi)=yi2xim(modn),∀mi={0,1}
其中 m = m 0 m 1 . . . m r , c = c 0 c 1 . . . c r m=m_0m_1...m_r,c=c_0c_1...c_r m=m0m1...mr,c=c0c1...cr, r r r是用于信息空间的块大小,每次加密都从 Z n ∗ Z_n^∗ Zn∗中随机挑选 x x x,其中 Z n ∗ Z_n^∗ Zn∗是整数模 n n n的乘法子群,包括所有小于 r r r且相对于 r r r为素数的数字。 - 解密算法:由于 x x x是从集合 Z n ∗ ( 1 < x ≤ n − 1 ) Z_n^∗ \; (1<x≤n-1) Zn∗(1<x≤n−1)中挑选出来的, x x x是二次剩余模 n n n,只有 m i = 0 m_i=0 mi=0。因此,要解密密码文本 c i c_i ci,就要决定 c i c_i ci是否是二次剩余模 n n n;如果是, m i m_i mi返回 0 0 0,否则 m i m_i mi返回 1 1 1。
- 同态特性:对于每个比特
m
i
∈
{
0
,
1
}
m_i∈\{0,1\}
mi∈{0,1}:
E ( m 1 ) ∗ E ( m 2 ) = ( y 1 2 x m 1 ( m o d n ) ) ∗ ( y 2 2 x m 2 ( m o d n ) ) = ( y 1 ∗ y 2 ) 2 x m 1 + m 2 ( m o d n ) = E ( m 1 + m 2 ) E(m_1)∗E(m_2)=(y^2_1x^{m_1} \; (mod \; n))∗(y^2_2x^{m_2} \; (mod \; n)) \\ \qquad \qquad \qquad \qquad \quad \enspace = (y_1∗y_2)^2x^{m_1}+m_2 \; (mod \; n)=E(m_1+m_2) E(m1)∗E(m2)=(y12xm1(modn))∗(y22xm2(modn))=(y1∗y2)2xm1+m2(modn)=E(m1+m2)
GM密码系统的同态性表明,和的加密 E ( m 1 ⊕ m 2 ) E(m_1⊕m_2) E(m1⊕m2)可以直接从单独的加密位 E ( m 1 ) E(m_1) E(m1)和 E ( m 2 ) E(m_2) E(m2)计算出来。由于信息和密码文本是集合 { 0 , 1 } \{0,1\} {0,1}的元素,操作与排他性OR(XOR)相同。因此,GM只对二进制数字的加法进行同构。
3.3 EL-Gamal
1985年,Taher Elgamal提出了一个新的公钥加密方案(ElGamal1985),它是原来Diffie-Hellman Key Exchange(Diffieand Hellman1976)算法的改进版,它是基于离散对数中某些问题的难度(Kevin1990)。它多用于混合加密系统中,用于加密非对称加密系统的私钥。El-Gamal密码系统定义如下:
-
KeyGen算法:使用生成器 g g g产生一个具有 n n n阶的循环组 G G G。在一个循环组中,有可能使用其自身元素的幂来生成该组的所有元素。然后,对随机选择的 y ∈ Z n ∗ y \in Z_n^∗ y∈Zn∗计算出 h = g y h=g^y h=gy。最后,公钥是 ( G , n , g , h ) (G,n,g,h) (G,n,g,h), x x x是该计划的私钥。
-
加密算法:使用 g g g和 x x x对信息 m m m进行加密,其中 x x x是从 { 1 , 2 , . . . , n − 1 } \{1,2,...,n-1\} {1,2,...,n−1}集合中随机选择的,加密算法的输出是一对密码文本( c = ( c 1 , c 2 ) c=(c_1,c_2) c=(c1,c2)):
c = E ( m ) = ( g x , m h x ) = ( g x , m G x y ) = ( c 1 , c 2 ) c=E(m)=(g^x,mh^x)=(g^x,mG^{xy})=(c_1,c_2) c=E(m)=(gx,mhx)=(gx,mGxy)=(c1,c2) -
解密算法:为了解密密码文本 c c c,首先,计算 s = c 1 y s=c_1^y s=c1y,其中 y y y是私钥。然后,解密算法工作如下。
c 2 ⋅ s − 1 = m g x y ⋅ g − x y = m c_2·s^{−1}=mg^{xy}·g^{−xy}=m c2⋅s−1=mgxy⋅g−xy=m -
同态属性:
E ( m 1 ) ∗ E ( m 2 ) = ( g x 1 , m 1 h x 1 ) ∗ ( g x 2 , m 2 h x 2 ) = ( g x 1 + x 2 , m 1 ∗ m 2 h x 1 + x 2 ) = E ( m 1 ∗ m 2 ) E(m_1)∗E(m_2)=(g^{x_1},m_1h^{x_1})∗(g^{x_2},m_2h^{x_2})=(g^{x_1+x_2},m_1∗m_2h^{x_1+x_2})=E(m_1∗m_2) E(m1)∗E(m2)=(gx1,m1hx1)∗(gx2,m2hx2)=(gx1+x2,m1∗m2hx1+x2)=E(m1∗m2)
从这个推导可以看出,El-Gamal密码系统是乘法同构的。它不支持对密码文本的加法操作。
3.4 Paillier
1999年,Paillier(1999)介绍了另一种基于复合残差问题的新型概率加密方案(Jager2012)。复合残差问题与GM和Benaloh密码系统中使用的二次和更高残差问题非常相似。它询问是否存在一个整数x,使xn≡a(modn2)为一个给定的整数a。
-
KeyGen算法:对于大素数 p p p和 q q q,使 g c d ( p q , ( p − 1 ) ( q − 1 ) ) = 1 gcd(pq,(p-1)(q-1))=1 gcd(pq,(p−1)(q−1))=1,计算 n = p q n=pq n=pq和 λ = l c m ( p − 1 , q − 1 ) λ=lcm(p-1,q-1) λ=lcm(p−1,q−1)。然后,通过检查 g c d ( n , L ( g λ m o d n 2 ) ) gcd(n,L(g^{λ \; mod \; n^2})) gcd(n,L(gλmodn2))是否 = 1 =1 =1来选择一个随机整数 g ∈ Z n 2 ∗ g∈Z^∗_{n^2} g∈Zn2∗,其中函数 L L L被定义为 L ( u ) = ( u − 1 ) / n L(u)=(u-1)/n L(u)=(u−1)/n,对于来自子组 Z n 2 ∗ Z^∗_{n^2} Zn2∗的每个 u u u,它是一个整数模 n 2 n^2 n2的乘法子组,而不是像Benaloh密码系统中的 n n n。最后,公钥是 ( n , g ) (n,g) (n,g),秘钥是一对 ( p , q ) (p,q) (p,q)。
-
加密算法:对于每个信息 m m m,数字 r r r是随机选择的,加密工作如下:
c = E ( m ) = g m r n ( m o d n 2 ) c=E(m)=g^mr^n \; (mod \; n^2) c=E(m)=gmrn(modn2) -
解密算法:对于一个适当的密码文本c<n2,解密的方法是:
D ( c ) = L ( c λ ( m o d n 2 ) ) L ( g λ ( m o d n 2 ) ) m o d n = m D(c)=\dfrac{L(c^λ(mod \; n^2))}{L(g^λ(mod \; n^2))} \; mod \; n=m D(c)=L(gλ(modn2))L(cλ(modn2))modn=m
其中私钥对是(p,q) -
同态属性:
E ( m 1 ) ∗ E ( m 2 ) = ( g m 1 r 1 n ( m o d n 2 ) ) ∗ ( g m 2 r 2 n ( m o d n 2 ) ) = g m 1 + m 2 ( r 1 ∗ r 2 ) n ( m o d n 2 ) = E ( m 1 + m 2 ) E(m_1)∗E(m_2)=(g^{m_1}r_1^n \; (mod \; n^2))∗(g^{m_2}r_2^n \; (mod \; n^2)) \\ \qquad \qquad \qquad \qquad=g^{m_1+m_2}(r_1∗r_2)^n \; (mod \; n^2)=E(m_1+m_2) E(m1)∗E(m2)=(gm1r1n(modn2))∗(gm2r2n(modn2))=gm1+m2(r1∗r2)n(modn2)=E(m1+m2)
这一推导表明,Pailliler的加密方案对加法是同构的。除了对加法运算的同构性外,Pailliler的加密方案还有一些额外的同构性,它允许通过使用加密的明文
E
(
m
1
)
E(m_1)
E(m1)和
E
(
m
2
)
E(m_2)
E(m2)以及公钥对
(
n
,
g
)
(n,g)
(n,g)对明文
m
1
,
m
2
∈
Z
n
2
∗
m_1,m_2 \in Z^∗_{n^2}
m1,m2∈Zn2∗进行额外的基本运算。
E
(
m
1
)
∗
E
(
m
2
)
(
m
o
d
n
2
)
=
E
(
m
1
+
m
2
(
m
o
d
n
)
)
E
(
m
1
)
∗
g
m
2
(
m
o
d
n
2
)
=
E
(
m
1
+
m
2
(
m
o
d
n
)
)
E
(
m
1
)
m
2
(
m
o
d
n
2
)
=
E
(
m
1
m
2
(
m
o
d
n
)
)
E(m_1)∗E(m_2) \; (mod \; n^2)=E(m_1+m_2 \; (mod \; n)) \\ E(m_1)∗g^{m_2} \; (mod \; n^2)=E(m_1+m_2 \; (mod \; n)) \\ E(m_1)^{m_2} \; (mod \; n^2)=E(m_1m_2 \; (mod \; n))
E(m1)∗E(m2)(modn2)=E(m1+m2(modn))E(m1)∗gm2(modn2)=E(m1+m2(modn))E(m1)m2(modn2)=E(m1m2(modn))
这些额外的同态属性描述了加密数据和明文的各种操作之间的不同交叉关系。换句话说,在以上三个公式中显示了在加密数据上计算的操作如何影响明文。
3.5 其他
此外,Okamoto-Uchiyama(OU)(Okamoto and Uchiyama 1998)提出了一个新的PHE方案,通过改变以前HE方案的加密集来提高计算性能。此外,NaccacheStern(NS)(Naccache和Stern1998)提出了另一个PHE方案,作为Benaloh密码系统的概括,以提高其计算效率。同样,Damgard-Jurik (DJ) (Damgård and Jurik 2001) 提出了另一个PHE方案,作为Paillier的概括。这三个密码系统保留了同态属性,同时改进了原有的同态方案。
同样,Kawachi(KTX)等人(2007年)提出了一个基于底层晶格问题硬度的大循环群的加法同态加密方案。他们把他们提出的方案的同态属性命名为假同态。伪同态是一种代数属性,仍然允许对密码文本进行同态操作;但是,对同态操作的密码文本的解密是以小的解密误差进行的。最后,Galbraith(2002)介绍了Paillier密码系统的一个更自然的概括,将其应用于椭圆曲线,同时仍然保留Paillier密码系统的同态属性。表1简要总结了著名的PHE方案的同态特性。
四、Somewhat Homomorphic Encryption(SWHE)方案
2009年之前的文献中有一些有用的SWHE例子(Yao1982;Sanderetal.1999;Boneh等人2005;Ishai和Paskin2007)。在2009年发表了第一个可信的FHE(Gentry 2009)之后,由于FHE方案的性能问题,一些SWHE版本的FHE方案也被提出。我们将这些SWHE方案放在FHE部分。在本节中,我们主要关注主要的SWHE方案,它们被用作第一个可信的FHE方案的垫脚石。
4.1 BGN
在2005年之前,所有提议的密码系统的同态性只限于加法或乘法运算,即SWHE方案。Boneh-Goh-Nissim(BGN)在Boneh等人(2005)中提出了走向FHE方案的最重要的步骤之一。BGN在密码文本上评估 2 − D N F 5 2-DNF^5 2−DNF5公式,并通过保持密码文本大小不变,支持任意数量的加法和一个乘法。该方案的难点是基于子组决策问题(Gjøsteen2004)。子群决策问题只是决定一个元素是否是复合阶数 n = p q n=pq n=pq的群 G p G_p Gp的子群的成员,其中 p p p和 q q q是不同的素数。
-
KeyGen算法:公钥被发布为 ( n , G , G 1 , e , g , h ) (n,G,G_1,e,g,h) (n,G,G1,e,g,h)。在公钥中, e e e是一个双线性映射,即 e : G × G → G 1 e:G×G→G1 e:G×G→G1,其中 G 、 G 1 G、G_1 G、G1是 n = q 1 q 2 n=q_1q_2 n=q1q2阶的群。 g g g和 u u u是 G G G的生成器,设 h = u q 2 h=u^{q_2} h=uq2, h h h是阶为 q 1 q_1 q1的 G G G的生成器,作为私钥被隐藏起来。
-
加密算法:为了加密信息 m m m,从集合 { 0 , 1 , . . . , n − 1 } \{0,1,...,n-1\} {0,1,...,n−1}中挑选一个随机数r,并使用预先计算的 g g g和 h h h进行加密,如下所示:
c = E ( m ) = g m h r m o d n c=E(m)=g^mh^r \; mod \; n c=E(m)=gmhrmodn -
解密算法:要解密密码文本 c c c,首先要计算 c ′ = c q 1 = ( g m h r ) q 1 = ( g q 1 ) m c^′=c^{q_1}=(g^mh^r)^{q_1}=(g^{q_1})^m c′=cq1=(gmhr)q1=(gq1)m(注意 h q 1 ≡ 1 m o d n h^{q_1}≡1 \; mod \; n hq1≡1modn)和 g ′ = g q 1 g^′=g^{q_1} g′=gq1,使用秘钥 q 1 q_1 q1完成解密,如下所示:
m = D ( c ) = l o g g ′ c ′ m=D(c)=log_{g^′}c^′ m=D(c)=logg′c′
为了有效地解密,信息空间应保持小,因为离散对数不能快速计算。 -
同态加法:使用密码文本 E ( m 1 ) = c 1 E(m_1)=c_1 E(m1)=c1和 E ( m 2 ) = c 2 E(m_2)=c_2 E(m2)=c2对明文 m 1 m_1 m1和 m 2 m_2 m2进行同态加法,如下所示:
c = c 1 c 2 h r = ( g m 1 h r 1 ) ( g m 2 h r 2 ) h r = g m 1 + m + 2 h r ′ c=c_1c_2h^r=(g^{m_1}h^{r_1})(g^{m_2}h^{r_2})h^r=g^{m_1+m+2}h^{r^′} c=c1c2hr=(gm1hr1)(gm2hr2)hr=gm1+m+2hr′
其中 r = r 1 + r 2 + r r=r_1+r_2+r r=r1+r2+r,可以看出, m 1 + m 2 m_1+m_2 m1+m2可以很容易地从重新产生的密码文本 c c c中恢复出来。 -
乘法的同态性:为了进行同态性的乘法,使用阶数为 n n n的 g 1 g_1 g1和阶数为 q 1 q_1 q1的 h 1 h_1 h1,并设置 g 1 = e ( g , g ) , h 1 = e ( g , h ) g_1=e(g,g),h_1=e(g,h) g1=e(g,g),h1=e(g,h),和 h = g α q 2 h=g^{αq_2} h=gαq2.然后,使用密码 c 1 = E ( m 1 ) c_1=E(m_1) c1=E(m1)和 c 2 = E ( m 2 ) c_2=E(m_2) c2=E(m2)对信息 m 1 m_1 m1和 m 2 m_2 m2进行同态性的乘法计算如下。
c = e ( c 1 , c 2 ) h 1 r = e ( g m 1 h r 1 , g m 2 h r 2 ) h 1 r = g 1 m 1 m 2 h 1 m 1 r 2 + r 2 m 1 + α q 2 r 1 r 2 + r = g 1 m 1 m 2 h 1 r ′ c=e(c_1,c_2)h_1^r=e(g^{m_1}h^{r_1},g^{m_2}h^{r_2})h_1^r \\ \qquad \; =g_1^{m_1m_2}h_1^{m_1r_2+r_2m_1+αq_2r_1r_2+r}=g_1^{m_1m_2}h_1^{r^′} c=e(c1,c2)h1r=e(gm1hr1,gm2hr2)h1r=g1m1m2h1m1r2+r2m1+αq2r1r2+r=g1m1m2h1r′
可以看出, r ′ r^′ r′和 r r r一样是均匀分布的,所以 m 1 m 2 m_1m_2 m1m2可以正确地从结果密码文 c c c中恢复出来。然而, c c c现在是在组 G 1 G_1 G1中,而不是在 G G G中。他们的协议在协议复杂度方面比Yao(1982)中著名的乱码电路协议有了四倍的改进。
4.2 其他
在HE方案的文献中,最早的SWHE方案之一是PollyCracker方案(Fellows和Koblitz1994)。它允许对密码文进行乘法和加法运算。然而,密码文本的大小随着同构操作的进行而呈指数级增长,而乘法操作尤其极其昂贵。后来提出了更有效的变体(Levy-dit Vehel和Perret 2004;VanLy 2006),但几乎所有的变体后来都被证明容易受到攻击(Steinwandt 2010;Levy-dit Vehel et al.2009)。因此,它们要么是不安全的,要么是不切实际的(Le2003)。最近,Albrecht等人(2011年)引入了一个带噪声的Polly Cracker加密系统,其中同态加法运算不增加密码文的大小,而乘法运算则使其平方。
另一个对加密数据进行评估操作的想法是在不同的集合上实现的。Sander,Young和Yung(SYY)描述了第一个在半群上的SWHE方案,NC1,6(Sander等人,1999),它需要比群更少的属性。NC1是一个复杂性类别,包括具有多项式深度和多项式尺寸的电路。所提出的方案支持用一个OR/NOT门对密码文进行多项ANDing。然而,密码文的大小随着每个OR/NOT门的评估而以恒定的倍数增加。这种增加限制了对电路深度的评估。Yuval Ishai和Anat Paskin(IP)将这组程序扩展到分支程序(又称二进制决策图),这是一个有向无环图,其中每个节点都有两条标有二进制0和1的出线(Ishai and Paskin 2007)。换句话说,他们通过评估加密数据的分支程序提出了一个公开密钥加密方案。此外,Melchor等人(2010)提出了一个通用的构建方法,以获得一个链式加密方案,允许对密码文本的恒定深度电路进行同态评估。该链式加密方案是由具有一些同态特性的知名加密方案获得的。例如,他们展示了如何获得BGN(Boneh et al.2005)和Kawachi et al.(2007)的组合。如前所述,BGN允许任意数量的加法和一个乘法,而Kawachi的方案只具有加法同构性。因此,由此产生的组合方案允许任意的加法和两个乘法。他们还展示了如何将这一程序应用于Melchor等人(2008)的方案,允许预定数量的同态加法,以获得一个允许任意数量乘法的方案。然而,在乘法中,密码文本的大小呈指数级增长,而在同态加法中则是恒定的。如表2所示,在Yao、SYY和IP密码系统中,密码文本的大小随着每次同态操作而增长;而在BGN中,它保持不变。BGN的这一特性是获得FHE方案的一个重大改进。因此,Gentry、Halevi和Vaikuntanathan后来简化了BGN密码系统(Gentry et al.2010)。在他们的版本中,基本的安全假设被改变为LWE问题的硬性。BGN密码系统从一个小的集合中选择输入以正确解密。相比之下,Gentryet al.(2010)介绍的最新方案有更大的信息空间。此外,一些试图获得基于SWHE方案的FHE方案的尝试被报道为被破坏。例如,Mullenand Shiue (1994), i Ferrer (1996), Grigoriev and Ponomarenko (2006), and Domingo-Ferrer (2002)的漏洞分别在Steinwandt and Geiselmann (2002), Choi et al. (2007), Wagner (2003) and Cheonet al. (2006)报告。