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)