Paillier cryptosystem(Paillier 密码系统)

同态加密

1. 定义

一种加密算法E()和相应的解密算法D()
为某种数学运算。
如果加密算法满足:E(x + y) = E(x) ⊕ E(y),我们将这种加密函数叫做加法同态
如果加密算法满足:E(x * y) = E(x) ⊙ E(y),我们将这种加密函数叫做乘法同态
一个加密函数如果只满足加法同态,就只能进行加减法运算;如果只满足乘法同态,就只能进行乘除法运算;如果同时满足加法同态和乘法同态,称为完全同态

2. 运用

将数据处理权与数据所有权分离,使得在不解密密文的情况对密文数据进行数学运算等同于对原文数据做运算。例如:某公司要计算员工平均新增,而员工薪资是隐私数据,以密文的形式存储。利用同态加密技术可以在不解密数据的情况下计算员工平均薪资。

定义:E(x + y) = E(x) ⊕ E(y)

  原数据               密文
    x                  E(x)
    +                   ⊕
    y                  E(y)
    ‖                   ‖
  x + y            D(E(x)⊕E(y))

3. 一种实现:Paillier密码体系

Paillier加密系统,是1999年Paillier发明的概率公钥加密系统。基于复合剩余类的困难问题。该加密算法是一种同态加密,满足加法和乘法同态。

3.1 秘钥生成
  1. 随机选择两个大质数p和q满足 g c d ( p q , ( p − 1 ) ( q − 1 ) = 1 gcd(pq,(p-1)(q-1)=1 gcd(pq,(p1)(q1)=1。 这个属性是保证两个质数长度相等。
  2. 计算 n = p q n=pq n=pq λ = l c m ( p − 1 , q − 1 ) λ=lcm (p - 1,q-1) λ=lcm(p1,q1)
  3. 选择随机整数g( g ∈ Z n 2 ∗ g\in {\mathbb Z}_{n^2}^* gZn2),使得满足n整除g的阶。
  4. 定义 L ( x ) = ( x − 1 ) n L(x)=\frac{(x−1)}{n} L(x)=n(x1)
  5. 计算 μ = ( L ( g λ   m o d   n 2 ) ) − 1   m o d   n \mu =(L(g^{\lambda }{\bmod n}^{2}))^{-1}{\bmod n} μ=(L(gλmodn2))1modn
  6. 公钥为 ( n , g ) (n,g) (n,g)
  7. 私钥为 ( λ , μ ) (\lambda,\mu) (λ,μ)
3.2 加密
  1. m为原文 ( 0 ≤ m &lt; n ) (0≤m&lt;n) (0m<n)
  2. 选择随机数r(0<r<n, r ∈ Z n 2 ∗ r\in {\mathbb Z}_{n^2}^* rZn2),且 g c d ( r , n ) = 1 gcd(r,n)=1 gcd(r,n)=1
  3. 加密: c = g m ∗ r n &VeryThinSpace; m o d &VeryThinSpace; n 2 c=g^m*r^n\bmod n^2 c=gmrnmodn2
3.3 解密
  1. 解密: m = L ( c λ &VeryThinSpace; m o d &VeryThinSpace; n 2 ) ∗ μ &VeryThinSpace; m o d &VeryThinSpace; n m=L(c^\lambda \bmod n^2)*\mu \bmod n m=L(cλmodn2)μmodn
3.4 同态属性
  1. 加法同态(两个密文的乘积将解密为它们相应的明文之和)
    D ( E ( m 1 ) ∗ E ( m 2 ) &VeryThinSpace; m o d &VeryThinSpace; n 2 ) = m 1 + m 2 &VeryThinSpace; m o d &VeryThinSpace; n D(E(m_1)*E(m_2) \bmod n^2)=m_1 + m_2\bmod n D(E(m1)E(m2)modn2)=m1+m2modn

  2. 同态倍增
    D ( E ( m 1 ) m 2 &VeryThinSpace; m o d &VeryThinSpace; n 2 ) = m 1 m 2 &VeryThinSpace; m o d &VeryThinSpace; n D(E(m_1)^{m_2} \bmod n^2) = m_1m_2 \bmod n D(E(m1)m2modn2)=m1m2modn
    D ( E ( m 2 ) m 1 &VeryThinSpace; m o d &VeryThinSpace; n 2 ) = m 1 m 2 &VeryThinSpace; m o d &VeryThinSpace; n D(E(m_2)^{m_1} \bmod n^2) = m_1m_2 \bmod n D(E(m2)m1modn2)=m1m2modn

参考文献

  1. The Paillier Cryptosystem
  2. 维基
  3. 百度百科
  4. Java 实现
  • 21
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值