CKKS Part4: CKKS的乘法和重线性化

本文深入介绍了CKKS加密方案中的密文-密文乘法和重线性化技术。CKKS方案允许在加密数据上进行计算,而密文-密文乘法是其关键步骤。文章详细阐述了如何通过重线性化来处理乘法导致的密文尺寸增长问题,确保了密文大小的恒定,从而保持同态加密的实用性。

Python微信订餐小程序课程视频

https://edu.youkuaiyun.com/course/detail/36074

Python实战量化交易理财系统

https://edu.youkuaiyun.com/course/detail/35475目录


本文翻译于CKKS EXPLAINED, PART 4: MULTIPLICATION AND RELINEARIZATION,主要介绍CKKS方案中的密文乘法和重线性化技术

介绍

在上一篇 CKKS Part3: CKKS的加密和解密 ,我们看到了如何基于RLWE问题创建同态加密方案,实现同态加法和密文明文乘法。

虽然执行密文-明文乘法很容易,但正如我们将看到的,密文-密文要复杂得多。事实上,我们需要处理很多事情才能正确地完成它,比如找到正确的操作,这样一旦解密,我们就可以得到两个密文的乘积,以及管理密文的大小。

因此,本文将介绍密文乘法和重新线性化的概念,以减少生成的密文的大小。

基本概念

为了了解我们将如何在CKKS中执行密文-密文乘法,让我们回顾一下我们在前一篇文章中看到的内容。

首先,记住我们研究的是多项式空间Rq=Zq[X]/(XN+1)Rq=Zq[X]/(XN+1)R_{q}=\Zeta _{q}\left[ X \right]/\left( X^{N}+1 \right)。我们将s作为我们的私钥,然后我们可以安全地输出一个公钥p=(b,a)=(−a. s+e,a),其中a均匀取样RqRqR_{q}、 e是一个小的随机多项式。

然后我们有Encrypt(u,s)=c=(c0,c1)=(u,0)+p=(b+u,a)∈R2qEncrypt(u,s)=c=(c0,c1)=(u,0)+p=(b+u,a)∈Rq2\mbox{E}ncrypt\left( u,s \right)=c=\left( c_{0},c_{1} \right)=\left( u,0 \right)+p=\left( b+u,a \right)\in R_{q}^{2}是明文u∈Zq[X]/(XN+1)u∈Zq[X]/(XN+1)u \in \Zeta _{q}\left[ X \right]/\left( X^{N}+1 \right)使用公钥p的加密操作。要使用私钥s解密密文c,我们执行以下操作:

Decrypt(c,s)=c0+c1.s=u+eDecrypt(c,s)=c0+c1.s=u+eDecrypt\left( c,s \right)=c_{0}+c_{1}.s=u+e
然后我们发现定义一个在密文上的加法运算CAdd(c,c’)𝙲𝙰𝚍𝚍(c,c′)𝙲_{𝙰𝚍𝚍}(c,c′)很容易,所以一旦我们解密CAdd𝙲𝙰𝚍𝚍𝙲_{𝙰𝚍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值