0%

Pailler 算法

Paillier 算法:基于合数剩余问题的公钥密码体制,具有加法同态和混合乘法同态的特性。

算法加密与解密过程

密钥生成阶段

选着两个较为接近(一般是同bit量级)的大素数$p$和$q$,要求满足$gcd(pq,(p-1)(q-1))=1$。令$n=pq$,$p-1$和$q-1$的最小公倍数为$\lambda=lcm(p-1,q-1)$(或者为$\lambda=\varphi(n)$),随机选择一个整数$g \in Z_{n^2}^*$,且要求$ \mu = (L(g^ \lambda \;\text{mod}\;n^2))^{-1}$存在,其中$L(x)=(x-1)/n$。因此公钥为$(n,g)$,私钥为$\lambda$。

加密阶段

设$m \in Z_n$是明文,随机选者一个整数$r \in Z_n^*$,且满足$gcd(r,n)=1$,则密文为$c=E(m,r)=g^m·r^n \;\text{mod}(n^2)$

解密阶段

$m=D(c)=L((c^\lambda \; \text{mod}\;n^2)· (\mu \;\text{mod}\;n))$

算法验证

因为要保证$ \mu = (L(g^ \lambda \; \text{mod }\; n^2))^{-1}$的存在,也就是$L(g^\lambda \; \text{mod} \; n^2)$在模$n$下的逆存在,因此可以得出$gcd(g,p)=1$且$gcd(g,q)=1$。

若$g$为$p$或$q$的倍数,则有$gcd(g,n^2)=p \; or \; q$,则$g^ \lambda \equiv 1 \; mod \; n^2$。(根据欧拉定理),那么$L(g^ \lambda \;\text{mod}\;n^2)=0$,则$L(g^ \lambda \; \text{mod}\;n^2)$在模$n$下的逆也就不存在了。
因为

所以

根据费马定理可得

同理

所以

因此有

所以

所以

又因为

故有

所以

并且有

根据数学归纳法可以得出

所以

所以

又因为

-------------本文结束感谢您的阅读-------------