京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用( 二 )


2.3 Paillier算法2.3.1 密钥生成类似于RSA算法,Paillier也拥有公钥和私钥对 。

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

文章插图
在上述过程中,Alice总计生成了6个数字:
p = 11q = 19n = 209λ = 90g = 147μ = 153Alice将 n 和g 封装成公钥 public-key = (n, g)将λ和μ封装成私钥: private-key = (λ, μ)
2.3.2 加密假设Bob需要加密明文m,0 <= m < n. 且Bob收到了Alice发送过来的公钥(n, g)
  • Bob选择一个随机数r,满足0 < r < n
  • Bob计算加密后的密文 c = gm.rn mod n2
m = 8r = 3n_square = pow(n, 2) # n_square = 43681c = gmpy2.mod(pow(g, m)*pow(r, n), n_square)# c = 329482.3.3 解密假设c是Bob发送过来的密文,且$c\in {\mathbb Z}_{{n^{{2}}}}^{{*}}$Alice计算明文m = L(cλ mod n2) * μ mod n
c = 32948m= gmpy2.mod(L(gmpy2.mod(pow(c, lam), n_square), n) * mu, n)# m =8正确性证明
为了证明解密操作的正确性,我们把加密的公式代入:
京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

文章插图
根据卡米切尔定理(Carmichael’s function)有:
京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

文章插图
继续化简得:
京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

文章插图
由于g ∈ Zn2*, n + 1 ∈ Zn2*, 那么一定存在唯一一对(a, b)使得:② gλ mod n2 = (1 + naλ) * bnλ mod n2 = 1 + a

推荐阅读