安全多方计算之三:同态加密
1. 同态加密概述
同态加密首次由R.Rivest等人于1978年在《On data banks and privacy homomorphisms》中以隐私同态(Privacy homomorphism)的概念提出。同态性使得可以在加密数据上进行运算,从而保护用户数据隐私。
同态加密体制定义:对于加密体制三元组 ( G , E , D ) (G,E,D) (G,E,D),其中 G G G表示密钥生成算法, E E E表示加密算法, D D D表示解密算法,称该加密体制为同态的,如果对于 G G G产生的每一对密钥 ( e , d ) (e,d) (e,d),满足 ∀ m 1 , m 2 ∈ M , Pr ( D ( E ( m 1 , e ) ⨀ C E ( m 2 , e ) , d ) = m 1 ⨀ M m 2 ) = 1 forall m_1, m_2 in mathcal{M}, quad operatorname{Pr}left(D(E(m_1, e) bigodot_{mathcal{C}} E(m_2, e), d)=m_1 bigodot_{mathcal{M}} m_2right)=1 ∀m1,m2∈M,Pr(D(E(m1,e)C⨀E(m2,e),d)=m1M⨀m2)=1其中, M mathcal{M} M表示明文集合, C mathcal{C} C表示对应的密文集合, ⨀ M bigodot_{mathcal{M}} ⨀M与 ⨀ C bigodot_{mathcal{C}} ⨀C分别表示明文集合与密文集合中的运算符。若对应加法运算符,称其为加同态;若对应乘法运算符,称其为乘同态。
2. 乘同态的ElGamal加密方案
系统参数:随机选择一个大素数 p p p,且要求 p − 1 p-1 p−1有大素数因子, g ∈ Z p ∗ g in boldsymbol Z^{*}_p g∈Zp∗是一个本原元( Z p Z_p Zp是一个有 p p p个元素的有限域, Z p ∗ Z^{*}_p Zp∗是 Z p Z_p Zp中的非零元构成的乘法群)
选一个随机数 x ( 1 < x < p − 1 ) x(1<x<p-1) x(1<x<p−1)作为私钥,计算 y ≡ g x m o d p y equiv g^x bmod p y≡gxmodp作为公钥
加密: C = ( c , c ′ ) C = (c,c^{'}) C=(c,c′),其中 c ≡ g r m o d p , c ′ ≡ m y r m o d p c equiv g^{r} bmod p, c^{'} equiv m y^{r} bmod p c≡grmodp,c′≡myrmodp
解密: m ≡ ( c ′ / c x ) m o d p m equiv (c^{'}/c^{x}) bmod p m≡(c′/cx)modp
ElGamal加密方案具有乘同态特性,对于 E ( m 1 , r 1 ) = ( c 1 , c ’ 1 ) = ( g r 1 m o d p , m 1 y r 1 m o d p ) Eleft(m_1, r_1right)=left(c_1, c’_1right)=(g^{r_1} bmod p, m_1y^{r^1} bmod p) E(m1,r1)=(c1,c’1)=(gr1modp,m1yr1modp) E ( m 2 , r 2 ) = ( c 2 , c ’ 2 ) = ( g r 2 m o d p , m 2 y r 2 m o d p ) Eleft(m_2, r_2right)=left(c_2, c’_2right)=(g^{r_2} bmod p, m_2y^{r^2} bmod p) E(m2,r2)=(c2,c’2)=(gr2modp,m2yr2modp) 有 E ( m 1 , r 1 ) E ( m 2 , r 2 ) = ( g r 1 m o d p , m 1 y r 1 m o d p ) × 模 p 笛卡尔积 ( g r 2 m o d p , m 2 y r 2 m o d p ) = ( g r 1 + r 2 m o d p , ( m 1 m 2 ) y r 1 + r 2 m o d p ) = E ( m 1 m 2 , r 1 + r 2 ) begin{aligned} Eleft(m_1, r_1right) Eleft(m_2, r_2right) &= left(g^{r_1}bmod p, m_1y^{r_1} bmod pright) times_{text {模 } mathrm{p} text { 笛卡尔积 }} left(g^{r_2}bmod p, m_2y^{r_2} bmod pright) \ &=left(g^{r_1+r_2} bmod p, (m_1 m_2)y^{r_1+r_2} bmod pright) \ &=Eleft(m_1 m_2, r_1+r_2right) end{aligned} E(m1,r1)E(m2,r2)=(gr1modp,m1yr1modp)×模 p 笛卡尔积 (gr2modp,m2yr2modp)=(gr1+r2modp,(m1m2)yr1+r2modp)=E(m1m2,r1+r2)即 D ( E ( m 1 , r 1 ) E ( m 2 , r 2 ) ) = m 1 m 2 Dleft(Eleft(m_1, r_1right) Eleft(m_2, r_2right)right)=m_1 m_2 D(E(m1,r1)E(m2,r2))=m1m2 。
Eg
系统参数: p = 23 , g = 5 p=23, g=5 p=23,g=5,选择 x = 2 x=2 x=2作为私钥,公钥 y = 5 2 m o d 23 = 2 y=5^2 bmod 23=2 y=52mod23=2
对于明文消息 M = 5 M=5 M=5, 选择随机数 r = 5 r=5 r=5, E ( 5 , 5 ) = ( 5 5 m o d 23 , 2 5 ⋅ 5 m o d 23 ) = ( 20 , 22 ) E(5,5)=left(5^5 bmod 23,2^5 cdot 5 bmod 23right)=(20,22) E(5,5)=(55mod23,25⋅5mod23)=(20,22)选择随机数 r = 6 r=6 r=6, E ( 5 , 6 ) = ( 5 6 m o d 23 , 2 6 ⋅ 5 m o d 23 ) = ( 8 , 21 ) E(5,6)=left(5^6 bmod 23,2^6 cdot 5 bmod 23right)=(8,21) E(5,6)=(56mod23,26⋅5mod23)=(8,21)则 E ( 5 , 5 ) E ( 5 , 6 ) = ( 20 × 8 m o d 23 , 22 × 21 m o d 23 ) = ( 22 , 2 ) E(5,5)E(5,6)=(20 times 8 bmod 23,22 times 21 bmod 23)=(22,2) E(5,5)E(5,6)=(20×8mod23,22×21mod23)=(22,2)可验证 E ( 5 × 5 , 5 + 6 ) = ( 22 , 2 ) E(5times 5,5+6) = (22,2) E(5×5,5+6)=(22,2)因此 E ( 5 × 5 , 5 + 6 ) = E ( 5 , 5 ) E ( 5 , 6 ) E(5times 5,5+6) = E(5,5)E(5,6) E(5×5,5+6)=E(5,5)E(5,6)
3. 加同态的Paillier加密方案
Paillier加密方案的安全性依赖于合数剩余判定假设(DCRA,Decisional Composite Residuosity Assumption),即没有多项式时间算法来区分一个模数是否是模 n 2 n^2 n2的 n n n次剩余。
Paillier加密体制如下:
系统参数: 选取 n = p q n=pq n=pq , 其中 p p p 与 q q q 为两个大素数, 并且 n n n 满足 gcd ( n , ϕ ( n ) ) = 1 operatorname{gcd}(n, phi(n))=1 gcd(n,ϕ(n))=1, 选取 随机整数 g ∈ ( Z / n 2 Z ) g inleft(Z / n^{2} Zright) g∈(Z/n2Z) , 满足 g c d ( L ( g λ m o d n 2 ) , n ) = 1 gcd left(Lleft(g^{lambda} bmod n^{2}right), nright)=1 gcd(L(gλmodn2),n)=1 , 则公钥为 ( n , g ) (n, g) (n,g) , 私钥为 λ ( n ) = lcm ( ( p − 7 ) , ( q − 7 ) ) lambda(n)= operatorname{lcm}((p-7) ,(q-7)) λ(n)=lcm((p−7),(q−7)), M M M 为明文消息。
加密: 选择随机数 r ∈ Z P ∗ , E ( M ) = g m r n m o d n 2 . r in Z_{P}^{*}, E(M)=g^{m} r^{n} bmod n^{2} . r∈ZP∗,E(M)=gmrnmodn2.
解密: M = L ( C λ ( N ) m o d n 2 ) L ( g λ ( N ) m o d n 2 ) m o d n M=frac{Lleft(C^{lambda(N)} bmod n^{2}right)}{Lleft(g^{lambda(N)} bmod n^{2}right)} bmod n M=L(gλ(N)modn2)L(Cλ(N)modn2)modn
Paillier加密方案具有加同态特性, 对于 E ( m 1 , r 1 ) = g M 1 r 1 n m o d n 2 Eleft(m_{1}, r_{1}right)= g^{M^{1}} r_{1}^{n} bmod n^{2} E(m1,r1)=gM1r1nmodn2 E ( m 2 , r 2 ) = g M 2 r 2 n m o d n 2 Eleft(m_{2}, r_{2}right)=g^{M_{2}} r_{2}^{n} bmod n^{2} E(m2,r2)=gM2r2nmodn2有 E ( m 1 , r 1 ) E ( m 2 , r 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 , r 1 r 2 ) begin{aligned} Eleft(m_{1}, r_{1}right) Eleft(m_{2}, r_{2}right) =&left(g^{m_{1}} r_{1}^{n} bmod n^{2}right)left(g^{m_{2}} r_{2}^{n} bmod n^{2}right) \ = & g^{(m_{1}+m_{2})}left(r_{1} r_{2}right)^{n} bmod n^{2} \ = & Eleft(m_{1}+m_{2}, r_{1} r_{2}right) end{aligned} E(m1,r1)E(m2,r2)===(gm1r1nmodn2)(gm2r2nmodn2)g(m1+m2)(r1r2)nmodn2E(m1+m2,r1r2)即 D ( E ( m 1 , r 1 ) E ( m 2 , r 2 ) ) = m 1 + m 2 Dleft(Eleft(m_1, r_1right) Eleft(m_2, r_2right)right)=m_1+m_2 D(E(m1,r1)E(m2,r2))=m1+m2 。
4. 全同态加密方案
全同态加密体制使得可以在加密数据上进行任意计算与分析,可应用于加密云存储服务,隐私信息检索,隐私数据挖据等许多重要领域。比如许多企业需要委托第三方(云计算数据中心)对数据进行处理分析,但是数据中含有商业机密等敏感信息,可以首先使用全同态加密算法对数据加密后再发送给第三方,这样云端服务器不用解密就可以直接处理数据,完成后返给用户。用户再对数据进行解密,得到处理结果。
全同态加密方案是指, 对于 n n n个明文消息$ m_{1}, m_{2}, ldots, m_{n}$ , 及对应的密文$ c_{1}, c_{2}, ldots, c_{n}$ , 其加密算法 E E E与解密算法 D D D满足, 对于有限域上的任意可计算函数 f f f D ( f ( E ( m 1 ) , E ( m 2 ) , … , E ( m n ) ) = f ( m 1 , m 2 , … , m n ) Dleft(fleft(Eleft(m_{1}right), Eleft(m_{2}right), ldots, Eleft(m_{n}right)right)=fleft(m_{1}, m_{2}, ldots, m_{n}right)right. D(f(E(m1),E(m2),…,E(mn))=f(m1,m2,…,mn)Gentry, C. 于2009年在《Fully homomorphic encryption using ideal lattics》给出了全同态的定义,并基于理想格构造了一系列全同方案。
一个同态的公钥加密方案 ε mathcal{varepsilon} ε 中包含以下四种算法: K e y G e n ε , E n c r y p t ε , D e c r y p t ε , E v a l u a t e ε KeyGen_{varepsilon}, Encrypt_{varepsilon} ,Decrypt_{varepsilon} , Evaluate_{varepsilon} KeyGenε,Encryptε,Decryptε,Evaluateε
E v a l u a t e ε Evaluate_{varepsilon} Evaluateε 表示在加密数据集上进行的运算, 输人是公钥, 许可电路集 C ε C_{varepsilon} Cε 上的电路 C C C以及密文集合 Ψ = ⟨ ψ 1 , … , ψ t ⟩ Psi=leftlanglepsi_{1}, ldots, psi_{t}rightrangle Ψ=⟨ψ1,…,ψt⟩ , 输出为密文 ψ psi ψ 。
以上四种的计算复杂度是关于安全参数 λ lambda λ和电路 C C C的大小的多项式函数。
同态加密(Homomorphic Encryption):对于许可电路集 C ε C_{varepsilon} Cε上的电路 C C C,方案 ε rm{varepsilon} ε是同态的,如果在 C ε C_{varepsilon} Cε 上对于由 K e y G e n ε KeyGen_{varepsilon} KeyGenε 产生的公钥私钥对 ( P u , P r ) (Pu, Pr) (Pu,Pr) , 电路 C ∈ C ε C in C_{varepsilon} C∈Cε , 任意明文 Π 1 , … , Π t Pi_{1}, ldots, Pi_{t} Π1,…,Πt 以及任意密 文 Ψ = ⟨ ψ 1 , … , ψ t ⟩ , ( Psi=leftlanglepsi_{1}, ldots, psi_{t}rightrangle, quadleft(right. Ψ=⟨ψ1,…,ψt⟩,( 其中 ψ i ← E n c r y p t ε ( p k , Π i ) ) left.psi_{i} leftarrow E n c r y p t_{varepsilon}left(p k, Pi_{i}right)right) ψi←Encryptε(pk,Πi)) 满足: ψ ← Evaluate ε ( P u , C , Ψ ) ⇒ Decrypt ε ( P r , ψ ) = C ( Π 1 , … , Π t ) psi leftarrow text { Evaluate }_{varepsilon}(Pu, C, Psi) Rightarrow text { Decrypt }_{varepsilon}(Pr, psi)=Cleft(Pi_{1}, ldots, Pi_{t}right) ψ← Evaluate ε(Pu,C,Ψ)⇒ Decrypt ε(Pr,ψ)=C(Π1,…,Πt)
并且 D e c r y p t ε Decrypt_{varepsilon} Decryptε可以被表示为大小为 p o l y ( λ ) poly(lambda) poly(λ)的电路 D ϵ D_{epsilon} Dϵ 。
全同态加密(Fully Homomorphic Encryption):方案 E mathcal{E} E是全同态的,如果该方案对于许可电路集上的所有电路都是同态的。
同等全同态加密(Leveled Fully Homomorphic Encryption):方案集合 { ε ( d ) : d ∈ Z + } left{varepsilon^{(d)}: d in Z^{+}right} {ε(d):d∈Z+} 是同等全同态加密的,如果这些方案都使用相同的解密电路,且 ε ( d ) varepsilon^{(d)} ε(d)对于这些最大深度为 d d d的所有电路 (这些电路中门的类型集合是相同的) 都是同态的, ε ( d ) varepsilon^{(d)} ε(d)上算法的计算复杂度是关于 λ , d lambda, d λ,d以及电路 C mathrm{C} C的规模的多项式函数。