Pailliar同态加密算法描述与证明
Pailliar加密算法1999年被提出,是基于DCRT(Decisional Composite Residuosity Assumption)的加法同态加密方案。
Pailliar加密算法1999年被提出,是基于DCRT(Decisional Composite Residuosity Assumption)的加法同态加密方案。
DCRT
DCRT问题是说,判断一个数是否是模 n 2 n^2 n2的 n n n次剩余是困难的,也就是没有多项式时间算法可以解决。
密钥生成
Pailliar算法是一个非对称加密算法,有公钥和私钥。
选择两个素数
p
p
p和
q
q
q,计算
n
=
p
q
n=pq
n=pq.
在区间
(
0
,
n
2
)
(0,n^2)
(0,n2)随机选择一个数
g
g
g,满足
L
(
g
λ
m
o
d
n
2
)
L(g^\lambda \mod n^2)
L(gλmodn2)与
n
n
n互素,其中
λ
\lambda
λ是
p
−
1
p-1
p−1与
q
−
1
q-1
q−1的最小公倍数(也就是n的欧拉函数值,即小于n与n互素的元素个数)。
L
(
x
)
L(x)
L(x)是一个函数,
L
(
x
)
=
x
−
1
n
L(x)=\frac{x-1}{n}
L(x)=nx−1,这里使用的是一般的除法,不是模除法。
通常需要选择
g
=
1
m
o
d
n
g=1 \mod n
g=1modn,使得
L
(
g
x
m
o
d
n
2
)
=
k
x
m
o
d
n
L(g^x \mod n^2)=kx \mod n
L(gxmodn2)=kxmodn,k是整数.
证明如下:
由
g
=
1
m
o
d
n
g=1 \mod n
g=1modn,知道
g
=
1
+
k
n
g=1+kn
g=1+kn,k是一个整数。
所以,
g
x
=
(
1
+
k
n
)
x
=
1
+
k
n
+
c
2
n
2
+
c
3
n
3
+
⋯
+
c
x
n
x
=
1
+
k
n
m
o
d
n
2
g^x=(1+kn)^x=1+kn+c_2n^2+c_3n^3+\cdots+c_xn^x=1+kn \mod n^2
gx=(1+kn)x=1+kn+c2n2+c3n3+⋯+cxnx=1+knmodn2.
所以,
g
=
1
m
o
d
n
g=1 \mod n
g=1modn,使得
L
(
g
x
m
o
d
n
2
)
=
k
x
m
o
d
n
L(g^x \mod n^2)=kx \mod n
L(gxmodn2)=kxmodn.
最后产生的公钥 p k = ( n , g ) pk=(n,g) pk=(n,g),私钥 s k = λ sk=\lambda sk=λ.
加密
设要加密的明文为
m
∈
[
0
,
n
)
m \in [0,n)
m∈[0,n);
在
(
0
,
n
)
(0,n)
(0,n)之间选择一个随机数
r
r
r;
密文
c
=
g
m
r
n
m
o
d
n
2
c=g^mr^n \mod n^2
c=gmrnmodn2.
解密
m = L ( c λ m o d n 2 ) ⋅ L − 1 ( g λ m o d n 2 ) m o d n m=L(c^\lambda \mod n^2) \cdot L^{-1}(g^\lambda \mod n^2) \mod n m=L(cλmodn2)⋅L−1(gλmodn2)modn,其中 L − 1 ( g λ m o d n 2 ) L^{-1}(g^\lambda \mod n^2) L−1(gλmodn2)是 L ( g λ m o d n 2 ) L(g^\lambda \mod n^2) L(gλmodn2)关于n的模逆元。
解密正确性验证
首先,我们知道
n
λ
n\lambda
nλ就是
n
2
n^2
n2的欧拉函数值,所以,
r
n
λ
=
1
m
o
d
n
2
r^{n\lambda}=1 \mod n^2
rnλ=1modn2.
m
=
L
(
c
λ
m
o
d
n
2
)
⋅
L
−
1
(
g
λ
m
o
d
n
2
)
m
o
d
n
=
L
(
g
m
λ
r
n
λ
m
o
d
n
2
)
⋅
(
k
λ
)
−
1
m
o
d
n
=
L
(
g
m
λ
m
o
d
n
2
)
⋅
(
k
λ
)
−
1
m
o
d
n
=
k
m
λ
⋅
(
k
λ
)
−
1
m
o
d
n
=
m
m
o
d
n
\begin{aligned} m&=L(c^\lambda \mod n^2) \cdot L^{-1}(g^\lambda \mod n^2) \mod n\\ &=L(g^{m\lambda}r^{n\lambda} \mod n^2) \cdot (k\lambda)^{-1} \mod n\\ &=L(g^{m\lambda} \mod n^2) \cdot (k\lambda)^{-1} \mod n\\ &=km\lambda \cdot (k\lambda)^{-1} \mod n\\ &=m \mod n \end{aligned}
m=L(cλmodn2)⋅L−1(gλmodn2)modn=L(gmλrnλmodn2)⋅(kλ)−1modn=L(gmλmodn2)⋅(kλ)−1modn=kmλ⋅(kλ)−1modn=mmodn
同态加法
假设
C
1
=
g
m
1
r
1
n
m
o
d
n
2
,
C
2
=
g
m
2
r
2
n
m
o
d
n
2
C_1=g^{m_1}r_1^n \mod n^2, C_2=g^{m_2}r_2^n \mod n^2
C1=gm1r1nmodn2,C2=gm2r2nmodn2分别是
m
1
m_1
m1和
m
2
m_2
m2的两个有效密文。
C
1
+
C
2
=
g
m
1
r
1
n
⋅
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
C_1+C_2=g^{m_1}r_1^n \cdot g^{m_2}r_2^n \mod n^2=g^{m_1+m_2}(r_1r_2)^n \mod n^2
C1+C2=gm1r1n⋅gm2r2nmodn2=gm1+m2(r1r2)nmodn2是
m
1
+
m
2
m_1+m_2
m1+m2的一个有效密文。
标量乘法
设
C
=
g
m
r
n
m
o
d
n
2
C=g^mr^n \mod n^2
C=gmrnmodn2是
m
m
m的密文。
则
C
a
=
(
g
m
r
n
)
a
m
o
d
n
2
=
g
a
m
(
r
a
)
n
m
o
d
n
2
C^a=(g^mr^n)^a \mod n^2=g^{am}(r^a)^n \mod n^2
Ca=(gmrn)amodn2=gam(ra)nmodn2显然是
a
m
am
am的一个有效密文。
更多推荐
所有评论(0)