加法同态密码系统实现密文乘法

在安全多方计算的系统中,保护数据隐私的方式有同态加密,秘密分享,可信执行环境等。其中同态加密又分为部分同态密码(PHE)和完全同态密码(FHE)。

同态密码有一个特性:将两个密文数据做运算,得到的结果解密后会等于这两个数据的明文状态做相同运算的结果。即:

f(E(m1), E(m2)) = E(f(m1, m2))

其中 f() 表示运算,E() 表示加密。

加法同态密码(如 Paillier 密码)有如下特性:

E(m1 + m2) = E(m1) + E(m2)

这个特性可以扩展到密文减法,数乘(密文与明文的乘法)运算,但不能实现密文乘法运算,这是密码系统本身决定的。

为解决这个问题,可以使用完全同态密码系统,或秘密分享等其他方案,但目前的完全同态密码体系的效率低下,而秘密分享则需要多个不同谋的计算方,这在中心化网络中难以实现。那么可不可以通过对乘法运算进行一些改造,以达到使用加法同态密码就可以实现密文乘法的目的呢?

由于在加法同态密码体系中,密文无法直接做乘法运算,而需要先解密再相乘,故需要先将密文发回给数据持有方,而这就会导致数据持有方的数据泄露,我们可以考虑使用随机数来对密文做一个隐藏,使用加法同态密码的特性,可以用一个随机数加上密文,即:

E(m1 + r1) , E(m2 + r2)

然后发给数据持有方,因数据持有方无法知道 r1 和 r2,故无法猜出原数据。数据持有方解密后做乘法,再将乘法结果加密发回给计算方,这样计算方可以得到以下结果:

E((m1 + r1) * (m2 + r2))

为得到  E(m1 * m2),我们可以比较这两者的不同,对上式的 E() 中的式子做拆解得:

(m1 + r1) * (m2 + r2) = m1 * m2 + m1 * r2 + m2 * r1 + r1 * r2

可以看到其中就有 m1 * m2 这个元素,而其他元素的运算都是数乘和加法,这符合加法同态密码的特性,故可得:

E(m1 * m2) = E((m1 + r1) * (m2 + r2)) - E(m1 * r2 + m2 * r1 + r1 * r2)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值