Paillier同态加密
Paillier同态加密
上一篇分析了能够实现同态乘法的ElGamal加密
,有没有什么加密方式可以实现同态加法呢?
Paillier就是其中之一。
准备工作
- 首先选择两个大质数 p , q p,q p,q
- 计算 n = p ∗ q n=p*q n=p∗q。
- 令 μ \mu μ为 ( p − 1 , q − 1 ) (p-1,q-1) (p−1,q−1)的最小公倍数。
- g = n + 1 g=n+1 g=n+1。
- g , n g,n g,n为公钥, μ \mu μ为私钥。
加密消息 m m m
1.选择一个随机数 r r r。
计算 c = g m ∗ r n c=g^m*r^n c=gm∗rn。
解密密文 c c c
- m = ( c μ m o d n 2 ) − 1 ( g μ m o d n 2 ) − 1 m=\frac{{({c^\mu }\bmod {n^2}) - 1}}{{({g^\mu }\bmod {n^2}) - 1}} m=(gμmodn2)−1(cμmodn2)−1
正确性证明
先看分式的上半部分
- ( c μ mod n 2 ) − 1 = ( g m μ r n μ mod n 2 ) − 1 (c^\mu\ \text{mod}\ n^2)-1=(g^{m\mu}r^{n\mu}\ \text{mod}\ n^2)-1 (cμ mod n2)−1=(gmμrnμ mod n2)−1
根据欧拉定理可知,如果 r r r与 n n n互质,那 r φ ( n ) mod n = 1 r^{\varphi (n)}\ \text{mod}\ n=1 rφ(n) mod n=1, φ ( n ) \varphi (n) φ(n)为欧拉函数:在小于 n n n的正整数中,与 n n n互质的整数个数。那么
- φ ( p 2 ) = p ( p − 1 ) \varphi (p^2)=p(p-1) φ(p2)=p(p−1)
- φ ( q 2 ) = q ( q − 1 ) \varphi (q^2)=q(q-1) φ(q2)=q(q−1)
此时
r n μ mod n 2 r^{n\mu}\ \text{mod}\ n^2 rnμ mod n2
= r p ( p − 1 ) q ( q − 1 ) mod n 2 =r^{p(p-1)q(q-1)}\ \text{mod}\ n^2 =rp(p−1)q(q−1) mod n2
= r p ( p − 1 ) q ( q − 1 ) mod p 2 ∗ q 2 =r^{p(p-1)q(q-1)}\ \text{mod}\ p^2*q^2 =rp(p−1)q(q−1) mod p2∗q2
= 1 =1 =1
这个时候分式的上半部分:
- ( c μ mod n 2 ) − 1 = ( g m μ mod n 2 ) − 1 (c^\mu\ \text{mod}\ n^2)-1=(g^{m\mu}\ \text{mod}\ n^2)-1 (cμ mod n2)−1=(gmμ mod n2)−1
g m μ mod n 2 = ( n + 1 ) m μ mod n 2 g^{m\mu}\ \text{mod}\ n^2=(n+1)^{m\mu}\ \text{mod}\ n^2 gmμ mod n2=(n+1)mμ mod n2。
可以观察以下规律
- ( n + 1 ) mod n 2 = n + 1 (n+1)\ \text{mod}\ n^2=n+1 (n+1) mod n2=n+1
- ( n + 1 ) 2 mod n 2 = 2 n + 1 (n+1)^2\ \text{mod}\ n^2=2n+1 (n+1)2 mod n2=2n+1
- ( n + 1 ) 3 mod n 2 = 3 n + 1 (n+1)^3\ \text{mod}\ n^2=3n+1 (n+1)3 mod n2=3n+1
- ……
所以, ( n + 1 ) m μ mod n 2 = ( 1 + n m μ ) mod n 2 (n+1)^{m\mu}\ \text{mod}\ n^2=(1+nm\mu)\ \text{mod}\ n^2 (n+1)mμ mod n2=(1+nmμ) mod n2
分式的上半部分最后的结果为:
- ( c μ mod n 2 ) − 1 = ( g m μ mod n 2 ) − 1 = n m μ (c^\mu\ \text{mod}\ n^2)-1=(g^{m\mu}\ \text{mod}\ n^2)-1=nm\mu (cμ mod n2)−1=(gmμ mod n2)−1=nmμ
同理,分式的下半部分:
- ( g μ m o d n 2 ) − 1 = n μ {{({g^\mu }\bmod {n^2}) - 1}}=n\mu (gμmodn2)−1=nμ
所以:
( c μ m o d n 2 ) − 1 ( g μ m o d n 2 ) − 1 = n m μ n μ = m \frac{{({c^\mu }\bmod {n^2}) - 1}}{{({g^\mu }\bmod {n^2}) - 1}}=\frac{{nm\mu }}{{n\mu }}=m (gμmodn2)−1(cμmodn2)−1=nμnmμ=m
正确性得证。
安全性分析
- 从公钥 g , n g,n g,n,想要推测私钥 μ \mu μ,需要知道 p , q p,q p,q,而分解 p , q p,q p,q的过程是一个大整数分解难题。
安全性得证。
同态加法
给定明文 m 1 m_1 m1对应的密文 c 1 c_1 c1, m 2 m_2 m2对应的密文 c 2 c_2 c2。
明文 m = m 1 + m 2 m=m_1+m_2 m=m1+m2对应的密文
- c = c 1 ∗ c 2 c=c_1*c_2 c=c1∗c2。
正确性证明
- c 1 = g m 1 ∗ r 1 n mod n 2 c_1=g^{m_1}*r_1^n\ \text{mod}\ n^2 c1=gm1∗r1n mod n2
- c 2 = g m 2 ∗ r 2 n mod n 2 c_2=g^{m_2}*r_2^n\ \text{mod}\ n^2 c2=gm2∗r2n mod n2
- c = c 1 ∗ c 2 mod n 2 = g ( m 1 + m 2 ) ∗ ( r 1 ∗ r 2 ) n mod n 2 c=c_1*c_2\ \text{mod}\ n^2=g^{(m_1+m_2)}*(r_1*r_2)^n\ \text{mod}\ n^2 c=c1∗c2 mod n2=g(m1+m2)∗(r1∗r2)n mod n2
解密过程同上。不再赘述。
更多推荐



所有评论(0)