Paillier加法同态加密原理及证明

时间:2024-03-13 11:34:37

Paillier加法同态加密

基础知识

  1. 算术基本定理(唯一分解定理):任何大于1的自然数,都可以唯一分解成有限个质数的乘积,记为 n = p 1 a 1 p 2 a 2 ⋯ p k a k = Π i = 1 k p i a i n=p_1^{a_1} p_2^{a_2} \cdots p_k^{a_k}=\Pi_{i=1}^k p_i^{a_i} n=p1a1p2a2pkak=Πi=1kpiai,其中 p i p_i pi为素数, a i a_i ai为正整数。

  2. 欧拉函数:计算不大于n且与n互素的正整数的个数,用φ(n)表示。这些正整数的集合记为 Z n ∗ \mathbb{Z}_n^* Zn,则 φ ( n ) = ∣ Z n ∗ ∣ φ(n)=|\mathbb{Z}_n^*| φ(n)=Zn

  3. 引理一:若 p p p为素数,则 Z p = Z p ∗ \mathbb{Z}_p = \mathbb{Z}_p^* Zp=Zp,且 φ ( p ) = p − 1 φ(p)=p-1 φ(p)=p1
    证明:Paillier加法同态加密原理及证明

  4. 引理二:若 p p p为素数,任一整数r,则 φ ( p r ) = p r − 1 φ ( p ) = p r − 1 ( p − 1 ) φ(p^r)=p^{r-1} \varphi(p) = p^{r-1}(p-1) φ(pr)=pr1φ(p)=pr1(p1)
    证明:Paillier加法同态加密原理及证明

  5. 引理3:设 m = m 1 m 2 m=m_1 m_2 m=m1m2,若 m 1 m_1 m1 m 2 m_2 m2互素且均为大于1的整数,则 φ ( m ) = φ ( m 1 ) φ ( m 2 ) φ(m)=φ(m_1) φ(m_2) φ(m)=φ(m1)φ(m2)
    证明:证明过程较长,可参考这里

  6. 引理4(引理3的扩展通用形式): φ ( x ) = x Π i = 1 k ( 1 − 1 p i ) φ(x)=x \Pi_{i=1}^k (1-\frac{1}{p_i}) φ(x)=xΠi=1k(1pi1),其中 x > 1 x>1 x>1 p i p_i pi x x x的所有素因数。
    证明:根据算术基本定理, x = p 1 a 1 p 2 a 2 ⋯ p k a k = Π i = 1 k p i a i x=p_1^{a_1} p_2^{a_2} \cdots p_k^{a_k}=\Pi_{i=1}^k p_i^{a_i} x=p1a1p2a2pkak=Πi=1kpiai;显然 p i p_i pi两两之间互素,易证若干素数的幂方乘积与另外若干不同素数的幂方乘积互素;根据引理3, φ ( x ) = Π i = 1 k φ ( p i a i ) φ(x)=\Pi_{i=1}^k φ(p_i^{a_i}) φ(x)=Πi=1kφ(piai);根据引理2, φ ( x ) = Π i = 1 k [ p i a i − 1 ( p i − 1 ) ] = Π i = 1 k [ p i a i ( 1 − 1 p i ) ] = x Π i = 1 k ( 1 − 1 p i ) φ(x)=\Pi_{i=1}^k [p_i^{a_i-1}(p_i -1)] = \Pi_{i=1}^k [p_i^{a_i}(1-\frac{1}{p_i})] = x \Pi_{i=1}^k (1-\frac{1}{p_i}) φ(x)=Πi=1k[piai1(pi1)]=Πi=1k[piai(1pi1)]=xΠi=1k(1pi1)

  7. 欧拉定理:正整数n, a ∈ Z n a \in \mathbb{Z}_n aZn,若a与n互素,即 a ∈ Z n ∗ a \in \mathbb{Z}_n^* aZn,则 a φ ( n ) ≡ 1 m o d    n a^{\varphi(n)} \equiv 1 \mod n aφ(n)1modn

  8. 引理5(乘法逆元):根据欧拉定理, a φ ( n ) ≡ 1 m o d    n a^{\varphi(n)} \equiv 1 \mod n aφ(n)1modn,则有 a a φ ( n ) − 1 ≡ 1 m o d    n a a^{\varphi(n)-1} \equiv 1 \mod n aaφ(n)11modn,因为 a a − 1 ≡ 1 m o d    n a a^{-1} \equiv 1 \mod n aa11modn,显然乘法逆元必定存在,且 a − 1 = a φ ( n ) − 1 a^{-1} = a^{\varphi(n)-1} a1=aφ(n)1

  9. 费马小定理(欧拉定理的特例):大素数p, a ∈ Z p a \in \mathbb{Z}_p aZp,显然 Z p = Z p ∗ \mathbb{Z}_p = \mathbb{Z}_p^* Zp=Zp,则有 a φ ( p ) = a p − 1 ≡ 1 m o d    p a^{\varphi(p)} = a^{p-1} \equiv 1 \mod p aφ(p)=ap11modp,即 a p ≡ a m o d    p a^{p} \equiv a \mod p apamodp

  10. 二项式定理:泰勒展开 y = ( 1 + n ) x = ∑ k = 0 x C x k n k = 1 + n x + C x 2 n 2 + 更 高 阶 可 以 被 n 2 整 除 的 部 分 y = (1+n)^x = \sum_{k=0}^x C_x^k n^k = 1+nx+ C_x^2 n^2 + 更高阶可以被n^2整除的部分 y=(1+n)x=k=0xCxknk=1+nx+Cx2n2+n2,显然 ( 1 + n ) x ≡ 1 + n x m o d    n 2 (1+n)^x \equiv 1+nx \mod n^2 (1+n)x1+nxmodn2。显然 y − 1 ≡ n x m o d    n 2 y-1 \equiv nx \mod n^2 y1nxmodn2,根据同余定理,同÷n, x ≡ y − 1 n m o d    n x \equiv \frac{y-1}{n} \mod n xny1modn。故在Paillier方案中,会构造函数 L ( y ) = y − 1 n L(y)=\frac{y-1}{n} L(y)=ny1,可得 L ( y m o d    n 2 ) ≡ x m o d    n L(y \mod n^2) \equiv x \mod n L(ymodn2)xmodn

Paillier密码系统

  1. **生成:******()⟶(pk, sk);
    随机选取两个独立的大素数 p 和 q,且满足 ????????????(????????, (???? − 1)(???? − 1)) = 1,使得p 和 q长度相当。
    计算 n =????????,???? = ????????????(???? − 1, ???? − 1),随机选取 g ∈ Z n 2 ∗ g \in \mathbb{Z}_{n^2}^* gZn2简单起见,不如选择 g = n + 1 g=n+1 g=n+1,则令公钥 ???????? = (n, ????),私钥 ???????? = (????)。

  2. 加密算法:Encryption(pk, m)⟶c;
    随机选择 r ∈ Z n ∗ r \in \mathbb{Z}_{n}^* rZn,显然 r ∈ Z n 2 ∗ r \in \mathbb{Z}_{n^2}^* rZn2同样成立,计算密文 c = g m r n m o d    n 2 c = g^m r^n \mod n^2 c=gmrnmodn2

  3. 解密算法:Decryption(sk, c)⟶ m;
    令函数 L ( x ) = x − 1 n L(x)=\frac{x-1}{n} L(x)=nx1,可以计算明文 m = L ( c λ m o d    n 2 ) L ( g λ m o d    n 2 ) m o d    n m = \frac{L(c^{\lambda} \mod n^2)}{L(g^{\lambda} \mod n^2)} \mod n m=L(gλmodn2)L(cλmodn2)modn

  4. 正确性证明:
    Paillier加法同态加密原理及证明
    ( r n λ ) ≡ 1 m o d    n 2 (r^{n \lambda}) \equiv 1 \mod n^2 (rnλ)1modn2利用Carmichael定理证明,如下:
    Paillier加法同态加密原理及证明

  5. 加法同态性质:
    Paillier加法同态加密原理及证明

  6. 扩展至批量乘法(常数与明文相乘等同于密文的常数次幂):

( E ( m 1 ) ) k = ( g m 1 r n ) k m o d    n 2 = g k × m 1 ( r k ) n m o d    n 2 = E ( k × m 1 ) (E(m_1))^k = (g^{m_1} r^n)^k \mod n^2 = g^{k \times m_1} (r^k)^n \mod n^2 = E(k \times m_1) (E(m1))k=(gm1rn)kmodn2=gk×m1(rk)nmodn2=E(k×m1)