Paillier Cryptosystem

Paillier加法同态加密算法及相关证明

  • Paillier 加法同态加密
    • 算法及相关证明
      • 密钥生成
      • 加密
      • 解密
      • 同态的性质
    • 应用
    • 安全
  • 背景知识

Paillier 加法同态加密

参考slide,维基百科。

算法及相关证明

密钥生成

  • 随机选择两个大素数 p p p, q q q,使得他们彼此独立,即满足 g c d ( p q , ( p − 1 ) ( q − 1 ) ) = 1 \mathrm{gcd}(pq, (p-1)(q-1))=1 gcd(pq,(p1)(q1))=1,这个属性是为了保证两个质数长度相等。
  • 计算 n = p q n=pq n=pq, λ = l c m ( p − 1 ) ( q − 1 ) \lambda=\mathrm{lcm}(p-1)(q-1) λ=lcm(p1)(q1).
  • 随机选择一个整数 g , g ∈ Z n 2 ∗ g, g\in \mathbb{Z}_{n^2}^* g,gZn2.
  • μ = ( L ( g λ m o d    n 2 ) ) − 1 \mu =(L(g^\lambda \mod n^2))^{-1} μ=(L(gλmodn2))1,这里 L L L 被定义为 L ( x ) = x − 1 n L(x)=\frac{x-1}{n} L(x)=nx1.

公钥(public key) ( n , g ) (n, g) (n,g);
私钥(secret key) ( λ , μ ) (\lambda, \mu) (λ,μ).

如果使用等效长度的 p , q p,q p,q,则可以设置上述密钥生成步骤的更简单的变体 g = n + 1 g=n + 1 g=n+1   l a m b d a = φ ( n ) \ lambda = \varphi(n)  lambda=φ(n),   m u = φ ( n ) − 1 m o d    n \ mu = \varphi(n)^ {- 1} \mod n  mu=φ(n)1modn,这里 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)=(p-1)(q-1) φ(n)=(p1)(q1).

加密

  • m m m 是要被加密的明文,在这里 0 ≤ m < n 0 \leq m < n 0m<n.
  • 随机选择一个整数 r , 0 < r < n , r ∈ Z n 2 ∗ r, 0<r <n, r \in \mathbb{Z}^*_{n^2} r,0<r<n,rZn2,与 n n n互质,即 g c d ( r , n ) = 1 \mathrm{gcd}(r,n)=1 gcd(r,n)=1.
  • 计算密文: c = E ( m , r ) = g m ⋅ r n m o d    n 2 c=E(m,r)=g^m \cdot r^n \mod n^2 c=E(m,r)=gmrnmodn2

解密

  • c c c 是要解密的密文, c ∈ Z n 2 ∗ c \in \mathbb{Z}^*_{n^2} cZn2,

  • 计算明文: m = D ( c ) = L ( c λ m o d    n 2 ) ⋅ μ m o d    n m=D(c)=L(c^\lambda \mod n^2) \cdot \mu \mod n m=D(c)=L(cλmodn2)μmodn

  • 证明解密部分
    证明:
    m = 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 ) m o d    n m=L(c^\lambda \mod n^2) \cdot \mu \mod n = \frac{L(c^\lambda \mod n^2) }{L(g^\lambda \mod n^2) } \mod n m=L(cλmodn2)μmodn=L(gλmodn2)L(cλmodn2)modn
    Apply the private key λ \lambda λ and use Carmichael’s theorem:
    c λ = ( g m ⋅ r n ) λ = g m λ ⋅ r n λ = g m λ c^\lambda = (g^m\cdot r^n)^\lambda = g^{m\lambda}\cdot r^{n\lambda}= g^{m\lambda} cλ=(gmrn)λ=gmλrnλ=gmλ
    Make use of the relationship ( 1 + n ) x ≡ 1 + n x m o d    n 2 (1 + n)^ {x} \equiv 1 + nx {\mod {n ^ {2}}} (1+n)x1+nxmodn2
    g m λ = ( ( 1 + n ) α β n ) λ m = ( 1 + n ) α λ m β n λ m ≡ ( 1 + α λ m n ) m o d    n 2 g^{m\lambda} = ((1+n)^\alpha \beta^n)^{\lambda m}=(1+n)^{\alpha \lambda m}\beta^{n\lambda m} \equiv (1+\alpha \lambda mn) \mod n^2 gmλ=((1+n)αβn)λm=(1+n)αλmβnλm(1+αλmn)modn2
    Apply the L ( X ) L(X) L(X) fuction,
    L ( c λ m o d    n 2 ) L ( g λ m o d    n 2 ) m o d    n = L ( 1 + α λ m n ) L ( 1 + α λ n ) m o d    n = α λ m n α λ n m o d    n = m \frac{L(c^\lambda \mod n^2) }{L(g^\lambda \mod n^2) } \mod n=\frac{L(1+\alpha \lambda mn)}{L(1+\alpha \lambda n)} \mod n=\frac{\alpha \lambda mn}{\alpha \lambda n} \mod n=m L(gλmodn2)L(cλmodn2)modn=L(1+αλn)L(1+αλmn)modn=αλnαλmnmodn=m

同态的性质

  • 同态加法
    • 两个密文的乘机将解密为对应的明文之和
      D ( E ( m 1 , r 1 ) ⋅ E ( m 2 , r 2 ) m o d    n 2 ) = m 1 + m 2 m o d    n D(E(m_1,r_1)\cdot E(m_2,r_2) \mod n^2)=m_1+m_2 \mod n D(E(m1,r1)E(m2,r2)modn2)=m1+m2modn.
    • 证明
      D ( E ( m 1 , r 1 ) ⋅ E ( m 2 , r 2 ) m o d    n 2 ) = D ( g m 1 ⋅ r 1 n ⋅ g m 2 ⋅ r 2 n ) m o d    n 2 = D ( g m 1 + m 2 ⋅ ( r 1 r 2 ) n ) m o d    n 2 = m 1 + m 2 D(E(m_1,r_1)\cdot E(m_2,r_2) \mod n^2)=D(g^{m_1}\cdot r_1^n \cdot g^{m_2}\cdot r_2^n) \mod n^2=D(g^{m_1+m_2}\cdot (r_1r_2)^n) \mod n^2=m_1+m_2 D(E(m1,r1)E(m2,r2)modn2)=D(gm1r1ngm2r2n)modn2=D(gm1+m2(r1r2)n)modn2=m1+m2
    • 一个密文与以 g g g为底、明文为幂的数相乘将解密为对应明文之和
      D ( E ( m 1 , r 1 ) ⋅ g m 2 m o d    n 2 ) = m 1 + m 2 m o d    n D(E(m_1,r_1)\cdot g^{m_2} \mod n^2)=m_1+m_2 \mod n D(E(m1,r1)gm2modn2)=m1+m2modn.
    • 证明
      D ( E ( m 1 , r 1 ) ⋅ g m 2 m o d    n 2 ) = D ( g m 1 ⋅ r 1 n ⋅ g m 2 ) m o d    n 2 = D ( g m 1 + m 2 ⋅ r 1 n ) m o d    n 2 = m 1 + m 2 m o d    n D(E(m_1,r_1)\cdot g^{m_2} \mod n^2)=D(g^{m_1}\cdot r_1^n \cdot g^{m_2}) \mod n^2=D(g^{m_1+m_2}\cdot r_1^n) \mod n^2=m_1+m_2 \mod n D(E(m1,r1)gm2modn2)=D(gm1r1ngm2)modn2=D(gm1+m2r1n)modn2=m1+m2modn
  • 同态乘法
    • 密文的明文幂将倍解密为对应明文的乘积
      D ( E ( m 1 , r 1 ) m 2 m o d    n 2 ) = m 1 m 2 m o d    n D(E(m_1,r_1)^{m_2} \mod n^2)=m_1m_2 \mod n D(E(m1,r1)m2modn2)=m1m2modn.
      D ( E ( m 2 , r 2 ) m 1 m o d    n 2 ) = m 1 m 2 m o d    n D(E(m_2,r_2)^{m_1} \mod n^2)=m_1m_2 \mod n D(E(m2,r2)m1modn2)=m1m2modn.
      更一般地,
      D ( E ( m 1 , r 1 ) k m o d    n 2 ) = k m 1 m o d    n D(E(m_1,r_1)^{k} \mod n^2)=km_1 \mod n D(E(m1,r1)kmodn2)=km1modn.
    • 证明
      D ( E ( m 1 , r 1 ) k m o d    n 2 ) = D ( ( g m 1 ⋅ r 1 n ) k ) m o d    n 2 = D ( g k m 1 ⋅ r 1 k n ) m o d    n 2 = k m 1 m o d    n D(E(m_1,r_1)^{k} \mod n^2)=D((g^{m_1}\cdot r_1^n)^k) \mod n^2=D(g^{km_1}\cdot r_1^kn) \mod n^2=km_1 \mod n D(E(m1,r1)kmodn2)=D((gm1r1n)k)modn2=D(gkm1r1kn)modn2=km1modn.

应用

安全

如上所示的原始密码系统确实提供了针对所选明文攻击(IND-CPA)的语义安全性。成功区分挑战密文的能力基本上等于决定复合剩余的能力。所谓的决策复合剩余假设(DCRA)被认为是难以处理的。

然而,由于上述同态特性,该系统具有可延展性,因此不具有防止自适应选择密文攻击(IND-CCA2)的最高级语义安全性。通常在密码学中,可延展性的概念不被视为“优势”,但在某些应用中,例如安全电子投票和门限密码系统,这种属性可能确实是必要的。

然而,Paillier和Pointcheval继续提出一种改进的密码系统,它将消息m和随机r的组合散列结合起来。与Cramer-Shoup密码系统的意图相似,散列可以防止攻击者(仅给出c)能够以有意义的方式更改m。通过这种调整,改进的方案可以在随机预言模型中显示为IND-CCA2安全。

背景知识

Paillier密码系统利用了可以轻松计算某些离散对数的事实。

例如,通过二项式定理,

( 1 + n ) x = ∑ k = 0 x ( x k ) n k = 1 + n x + ( x 2 ) n 2 + higher powers of  n (1 + n)^x=\sum_{k = 0} ^ {x} {x \choose k} n ^ {k} = 1 + nx + {x \choose 2} n ^ {2 } + {\text {higher powers of }} n (1+n)x=k=0x(kx)nk=1+nx+(2x)n2+higher powers of n
这表明:
( 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 + n)^ {x} \mod n^ {2} y=1+nxmodn2,
那么
x ≡ y − 1 n m o d    n x \equiv {\frac {y-1} {n}} {\mod {n}} xny1modn.
从而:
L ( ( 1 + n ) x m o d    n 2 ) ≡ x m o d    n L((1 + n)^ {x} {\mod n} ^ {2})\equiv x {\mod {n}} L((1+n)xmodn2)xmodn,

你可能感兴趣的:(同态加密)