同态加密(CKKS)中的重线性化(Relinearization)

在基于环上的同态加密方案,比如BGV,BFV或者CKKS,在经过乘法同态的时候,往往会导致密文的维度增加。比如由明文m_1加密而成的密文\textbf{c}_1=(a_0,a_1),明文m_2加密得到的密文为\textbf{c}_2=(b_0,b_1),则\textbf{c}_1 \cdot \textbf{c}_2=(a_0b_0,a_0b_1+a_1b_0,a_1b_1),维度变成了3。为了能高效的计算同态乘法,抑制密文增长,我们需要重线性化。

我们以CKKS为例

假设有密文\textbf{c}=(c_0,c_1)和一次乘法后的密文\textbf{d}=(d_0,d_1,d_2),私钥\textbf{s}=(1,s),则对于\textbf{c},解密为m+e=c_0+c_1s,对于\textbf{d},解密为m+e=d_0+d_1s+d_2s^2。(运算都是模p运算,p为明文空间的模,e为产生的噪声)

为了实现密文的重线性化,我们还需要一个辅助的密钥evk=(b,a) ,其中b=-as+e+ps^2

则对\textbf{d}进行重线性化后的密文\textbf{c}\prime=(c_0,c_1)=(d_0,d_1)+\lceil evk \cdot d_2 \cdot p^{-1} \rfloor

证明如下:

c_0=d_0+\lceil bd_2p^{-1} \rfloor=d_0+\lceil -asd_2p^{-1}+d_2ep^{-1}+d_2s^2 \rfloor

c_1=d_1+\lceil ad_2p^{-1}\rfloor

c_0+c_1s=d_0+d_1s+d_2s^2+\lceil d_2ep^{-1} \rfloor

由于e是噪声,相对于p来说很小,所以\lceil d_2ep^{-1} \rfloor在有效解密时为0。故,新的密文是\textbf{d}的一个2维密文。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值