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𝙲𝙰𝚍𝚍𝙲_{𝙰𝚍

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

被折叠的 条评论
为什么被折叠?



