原文:Paillier P. Public-key cryptosystems based on composite degree residuosity classes[C]//International conference on the theory and applications of cryptographic techniques. Springer, Berlin, Heidelberg, 1999: 223-238.
一、方案描述
密钥生成
- 随机选择两个大素数 p p p, q q q满足 g c d ( p q , ( q − 1 ) ( p − 1 ) ) = 1 gcd(pq,(q-1)(p-1))=1 gcd(pq,(q−1)(p−1))=1,且满足 p p p, q q q长度相等。
- 计算 n = p q n=pq n=pq以及 λ = l c m ( p − 1 , q − 1 ) \lambda = lcm(p-1,q-1) λ=lcm(p−1,q−1),这里 l c m lcm lcm表示最小公倍数, ∣ n ∣ |n| ∣n∣为 n n n的比特长度
- 随机选择整数 g ← Z n 2 ∗ g\leftarrow Z^*_{n^2} g←Zn2∗ ( 这里取 g = n + 1 既可以简化运算,且使得正确性证明更容易 ) \textcolor{red}{(这里取g=n+1既可以简化运算,且使得正确性证明更容易)} (这里取g=n+1既可以简化运算,且使得正确性证明更容易)
- 定义 L L L函数: L ( x ) = x − 1 n L(x)=\frac{x-1}{n} L(x)=nx−1,计算 μ = ( L ( g λ m o d n 2 ) ) − 1 m o d n \mu=(L(g^\lambda ~mod ~n^2))^{-1}~ mod ~ n μ=(L(gλ mod n2))−1 mod n
- 最终得到公钥 ( n , g ) (n,g) (n,g),私钥 ( λ , μ ) (\lambda,\mu) (λ,μ)
加密
- 输入明文消息 m m m,满足 0 ≤ m ≤ n 0\leq m \leq n 0≤m≤n
- 选择随机数 r r r满足 0 ≤ r ≤ n 0\leq r \leq n 0≤r≤n且 r ∈ Z n ∗ r \in Z^*_{n} r∈Zn∗
- 计算密文 c = g m r n m o d n 2 c=g^mr^n~mod ~ n^2 c=gmrn mod n2
解密
- 输入密文 c c c,满足 c ∈ Z n 2 ∗ c\in Z^*_{n^2} c∈Zn2∗
- 计算明文消息 m = L ( c λ m o d n 2 ) ⋅ μ m o d n m=L(c^\lambda~mod ~ n^2)\cdot \mu ~mod ~n m=L(cλ mod n2)⋅μ mod n
同态加法
c = c 1 ⊕ c 2 = c 1 ⋅ c 2 m o d n 2 c =c_1\oplus c_2= c_1\cdot c_2 ~mod~n^2 c=c1⊕c2=c1⋅c2 mod n2,其中 c 1 c_1 c1和 c 2 c_2 c2为密文。
同态标量乘法(密文明文乘法)
c = a ⊗ c 1 = c 1 a m o d n 2 c = a \otimes c_1=c_1^a~mod~n^2 c=a⊗c1=c1a mod n2,其中 c 1 c_1 c1为密文, a a a为明文(标量)。
二、正确性分析
加密解密正确性
m
=
D
e
c
r
y
p
t
(
c
)
=
L
(
c
λ
m
o
d
n
2
)
⋅
μ
m
o
d
n
=
L
(
c
λ
m
o
d
n
2
)
⋅
(
L
(
g
λ
m
o
d
n
2
)
)
−
1
m
o
d
n
m = Decrypt(c)=L(c^\lambda~mod ~ n^2)\cdot \mu ~mod ~n=L(c^\lambda~mod ~ n^2)\cdot (L(g^\lambda ~mod ~n^2))^{-1} ~mod~ n
m=Decrypt(c)=L(cλ mod n2)⋅μ mod n=L(cλ mod n2)⋅(L(gλ mod n2))−1 mod n
=
c
λ
m
o
d
n
2
−
1
g
λ
m
o
d
n
2
−
1
=
g
m
λ
⋅
r
n
λ
m
o
d
n
2
−
1
g
λ
m
o
d
n
2
−
1
=
g
m
λ
m
o
d
n
2
−
1
g
λ
m
o
d
n
2
−
1
=
(
1
+
n
)
m
λ
m
o
d
n
2
−
1
(
1
+
n
)
λ
m
o
d
n
2
−
1
~~~~~=\frac{c^\lambda~mod~n^2-1}{g^\lambda~mod~n^2-1}=\frac{g^{m\lambda}\cdot \textcolor{red}{r^{n\lambda}}~mod~n^2-1}{g^\lambda~mod~n^2-1}=\frac{g^{m\lambda}~mod~n^2-1}{g^\lambda~mod~n^2-1}=\frac{(1+n)^{m\lambda}~mod~n^2-1}{(1+n)^\lambda~mod~n^2-1}
=gλ mod n2−1cλ mod n2−1=gλ mod n2−1gmλ⋅rnλ mod n2−1=gλ mod n2−1gmλ mod n2−1=(1+n)λ mod n2−1(1+n)mλ mod n2−1
=
(
1
m
λ
+
1
(
m
λ
−
1
)
n
+
1
(
m
λ
−
2
)
n
2
+
⋯
+
n
m
λ
)
m
o
d
n
2
−
1
(
1
λ
+
1
(
λ
−
1
)
n
+
1
(
λ
−
2
)
n
2
+
⋯
+
n
λ
)
m
o
d
n
2
−
1
=
1
+
n
+
n
2
+
n
3
+
⋯
+
n
m
λ
m
o
d
n
2
−
1
1
+
n
+
n
2
+
n
3
+
⋯
+
n
λ
m
o
d
n
2
−
1
~~~~~=\frac{(1^{m\lambda}+1^{(m\lambda-1)}n+1^{(m\lambda-2)}n^2+\cdots+n^{m\lambda})~mod ~n^2-1}{(1^{\lambda}+1^{(\lambda-1)}n+1^{(\lambda-2)}n^2+\cdots+n^{\lambda})~mod ~n^2-1}=\frac{1+n+n^2+n^3+\cdots+n^{m\lambda} ~mod~ n^2 -1}{1+n+n^2+n^3+\cdots+n^{\lambda} ~mod~ n^2 -1}
=(1λ+1(λ−1)n+1(λ−2)n2+⋯+nλ) mod n2−1(1mλ+1(mλ−1)n+1(mλ−2)n2+⋯+nmλ) mod n2−1=1+n+n2+n3+⋯+nλ mod n2−11+n+n2+n3+⋯+nmλ mod n2−1
=
1
+
n
m
λ
/
2
m
o
d
n
2
−
1
1
+
n
λ
/
2
m
o
d
n
2
−
1
=
n
m
λ
n
λ
=
m
~~~~~=\frac{1+nm\lambda/2 ~mod ~n^2~-1}{1+n\lambda/2 ~mod ~n^2~-1}=\frac{nm\lambda}{n\lambda}=m
=1+nλ/2 mod n2 −11+nmλ/2 mod n2 −1=nλnmλ=m
补充:证明
r
n
λ
m
o
d
n
2
=
1
~~r^{n\lambda}~mod~n^2=1
rnλ mod n2=1:
根据欧拉定理:如果
r
r
r,
y
y
y互质,则
r
ϕ
(
y
)
=
1
m
o
d
y
r^{\phi(y) }=1~mod ~y
rϕ(y)=1 mod y
且
r
n
λ
=
r
p
q
(
p
−
1
)
(
q
−
1
)
r^{n\lambda}=r^{pq(p-1)(q-1)}
rnλ=rpq(p−1)(q−1),则可以得到
r
p
(
p
−
1
)
=
1
m
o
d
p
2
r^{p(p-1)}=1~mod~p^2
rp(p−1)=1 mod p2,则
(
r
p
(
p
−
1
)
)
x
=
(
p
2
+
1
)
x
=
1
m
o
d
p
2
(r^{p(p-1)})^x=(p^2+1)^x=1~mod~p^2
(rp(p−1))x=(p2+1)x=1 mod p2,
这里可以展开
(
p
2
+
1
)
x
\textcolor{red}{这里可以展开(p^2+1)^x}
这里可以展开(p2+1)x。
所以
r
n
λ
−
1
∣
p
2
r^{n\lambda}-1|p^2
rnλ−1∣p2,
r
n
λ
−
1
∣
q
2
r^{n\lambda}-1|q^2
rnλ−1∣q2,则
r
n
λ
−
1
∣
n
2
r^{n\lambda}-1|n^2
rnλ−1∣n2
同态加法正确性
c 1 ⊕ c 2 = c 1 ⋅ c 2 m o d n 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\oplus c_2= c_1\cdot c_2 ~mod~n^2 =g^{m_1}r_1^ng^{m_2}r_2^n~mod~n^2=\textcolor{red}{g^{m_1+m_2}}(r_1r_2)^n~mod~n^2 c1⊕c2=c1⋅c2 mod n2=gm1r1ngm2r2n mod n2=gm1+m2(r1r2)n mod n2,解密后得到 m 1 + m 2 m_1+m_2 m1+m2。
明文密文乘法正确性
a ⊗ c = ( g m r n ) k m o d n 2 = g m k r n k m o d n 2 a\otimes c=(g^mr^n)^k~mod~n^2=\textcolor{red}{g^{mk}}r^{nk}~mod~n^2 a⊗c=(gmrn)k mod n2=gmkrnk mod n2,解密得到 m k mk mk
三 安全性分析
- 敌手知道公钥 ( n , g ) (n,g) (n,g)无法推出私钥 λ \lambda λ,这是一个 大整数因子分解问题 \textcolor{red}{大整数因子分解问题} 大整数因子分解问题
- 满足语义安全(IND-CPA),如下图为secreflow社区课程的解析。
- 方案安全性可以归约到判定性合数剩余假设(DCRA),即给定一个合数n和整数z,判定z是否在 n 2 n^2 n2下是否是n次剩余是困难的。