课程笔记:全同态加密的理论与构造-下篇:学习

本文紧接上文课程笔记:全同态加密的理论与构造-上篇:学习,继续学习“课程笔记:全同态加密的理论与构造-下篇”,并做相应笔记和补充。

第一代FHE#

image

  • 第一代,主要就是Gentry09和DGHV10方案。
  • 安全性基于的是近似GCD数学问题,这里的2ri很像LWE中的噪音。

方案#

image

  • 基于AGCD问题,p作为私钥。
  • 密文后两项都可以看做是“噪音项”,消去(模p、模2)即解密。
  • 加密时,s是一个τ向量
  • 解密正确性保证:m+i=1τrisip1

image

  • 计算时,r1=s1r1,q1=s1q1,加法的噪音是累加的,乘法的噪音增长过大,如果超过p,则解密出错。
  • 假设新鲜密文的噪音上限为B,经过d乘法,密文的噪音上限变为B2d,需要解密正确,需要满足噪音小于p,得到了乘法深度的范围dO(logλ)

第二代FHE#

  • 第一代比较复杂的是Gntry09,基于理想格上计算,后面又给出一个简单的版本,基于整数上计算。
  • 第二代基于LWE问题设计,首次在Regev中给出LWE问题并设计出对应的加密方案,后又在BV11中给出具体的全同态加密方案(使用重线性化),后面在BGV12和BGV12中又将方案完善,提升效率,避免使用昂贵的自举技术,使用密钥交换和模交换技术实现Leveled-FHE方案。

image

  • 噪音分布χ,噪音选取eχ
  • LWE分布As,χsZqn是一个n向量,eχ是一个随机数,AZqmn是一个n的向量。解LWE问题就是去解带噪音项的线性方程组b=a.s+e
  • n应该是公开的参数。

image
image

  • SLWE问题就是解线性方程组问题(m个方程,n未知数,记作m=m(n)),即给出(A,b=A.s+e),求s,其中sZqn是一个n向量,eχm是一个m向量,AZqn是一个mn的矩阵。
  • DLWE问题就是区分计算出(A,b)和随机取的(A,b),即输出的是(1/0)。
  • 两个版本的LWE问题是可以互相规约的,即可以能求解出一个问题,就能求解出另外一个问题。

BGV方案#

image

  • BGV是在整数域上计算的方案,之后引入编码计算,将其放在多项式上计算。
  • 密钥生成:满足A.s=2e,其中AZql,n,l=n.polylog(q)
  • 加密:c0=ATrZqn,其中ATZqn,lbTr+m,其中bTr+mZq
  • 解密:cZqn+1,即<c,s>是一个数,另外2eTr是噪音项,需要约去或者消去。

image

  • 加法:噪音值累加
  • 乘法:相乘后,密文维数变大(对应的密钥规模变大),BGV中使用密钥交换(Key Switching)降低密文维数。

image
image
image

  • 密钥交换是在明文不变的情况下,将密文1对应的密钥1转换为密文2对应的密钥2。最重要的是:将密钥加密作为计算密钥(交换密钥)ksk,应该在密钥生成时计算,作为“公钥”的一部分。
  • 密钥交换可以降维u,但会增加噪音,这里使用的是Gadget矩阵,使得增加的噪音变小。
  • 因为引入的G很大,所以G1很小,也就使得最后增加的噪音很小。

image
image

  • 上面解决了降维问题,乘法运算还引起噪音增加,BGV中使用模交换用于降噪,可以将密文的噪音规模从B降低为Bp/q
  • 模交换:明文不变,将密文c对应的模数q转换为密文c对应的模数为pp远小于q)。因为密文的模数变小,所以密文大小也变小,具体为:cpq.c且满足c=cmod2
  • 通过模交换,得到[<c,s>]ppq.[<c,s>]q,其中<c,s>kp=pq.[<c,s>]q+<cpq.c,s><cpq.c,s>很小(因为LWE问题中s很小)。
  • 通过模交换,密文变小pq倍,对应的噪音也变小\frac{p}{q}倍,可以通过合理设置q(得足够大,且远大于p),可以实现噪音的线性增长。
  • 所以做密文(噪音上限B)乘法后(噪音上限B2),需要依次降维(噪音上限B2+small)、降噪(噪音上限B.poly(n))。

BFV方案#

image

  • 密钥生成:与BGV不同的是,这里使用的是b=As+e,(原因?)
  • 加密:c0计算与BGV相同,c1计算与BGV不同是c1=bTr+[q/2].m
  • 解密:与BGV不同,且这里要求|eT.t|<12.q/2才能正确解密。

image

  • 加法:噪音累加。
  • 乘法时和BGV一样同样使用交换密钥,对密钥重加密,并使用密钥交换来降维(文中给出的重现线性化)。
  • 分析:KSK就是在计算交换密钥,KS就是使用计算密钥和相乘密文做密钥交换。

第三代FHE#

  • 第三代(密文形式是矩阵)不同于第二代(密文形式是向量/多项式),所以就没有了密文相乘维数变大的烦恼,所以只需要处理噪音就行,总的来说就是理论上更简单,但性能没有第二代的BGV和BFV好,第三代典型的方案是GSW,使用简单的比特转换等技术实现Leveled-FHE方案,后续的TFHE,FHEW等都是基于GSW优化而来。

image

  • BFV和BGV是基于RLWE,GSW是基于LWE的。
  • 密钥生成:这里公钥为(A,b=As+e(modq)),且满足pk.sk=e(modq)
  • 加密:R是个(n+1)logql矩阵,得到的密文是一个矩阵
  • GSW主要是利用“近似特征向量”是为框架设计的,解密时Cs=Re+mGTs,将其Re,GT去掉后,就近似得到了特征向量和特征值,即Csm.s。【所以关键是如何去掉这两项!】

image
image

  • 加法:因为|R|=1,所以可以约去,两密文相加噪音也是累加的。
  • 乘法:因为G是单位矩阵,所以GT=G,即XGT=XG=C2,其中(Xe1+m1e2)是噪音项。
  • 上面的方案给出了一个简化版的方案,并未做相应的优化,比如如何去掉Re,GT,参考原文,使用BitDecompt等技术。

面向应用的全同态算法#

image

  • BGV和BFV都是在整数域上计算的FHE方案,对于实用性能来说,更加推荐BFV,相比于BGV更加简化。
  • 对于浮点数、复数域上的计算就首推CKKS方案,但因其是基于RLWE问题,所以实质上也是在整数上计算,所以需要编码,即将浮点数、复数编码为整数,再进行后续计算。
  • x是一个实数(浮点数),将其编码为整数,需要乘上扩张因子Δ,再进行取整。
  • 对编码后数计算乘法,扩张因子变为Δ2,所以需要消去一个,即在CKKS中的rescale操作。

CKKS方案#

image

  • 从分类上讲,CKKS也属于第二代FHE。
  • 密钥生成:这里采用的是多个模数,表明该方案是一个Leveled-FHE;也可以看出,基于RLWE的方案,密钥生成大都是类似。
  • 加密与BGV、BFV相似。
  • 解密后需要解码。
  • 密文乘法会导致维数扩张、扩张因子和噪音变大,所以需要使用重线性化降维,使用重缩放降低扩张因子和噪音。

TFHE方案#

image
image

  • TFHE基于GSW方案,属于第三代FHE,是目前最快的全同态加密方案(真正FHE)。
  • 基于的是RLWE问题,也是分为搜索型和判定型。
  • 加密:<c,s>=e+q2m(modq),其中m[0,1]是明文,c是密文,s[0,1]n是密钥。
  • 该方案暂时没有看过,后续补充~

开源库#

image

  • 这是我见过的最全的总结,(点赞~)

研究方向#

image

  • 无循环安全假设实现FHE。
  • 除自举外实现FHE。
  • 除基于LWE构造的FHE,比如LPN。
  • 扩大GSW系列方案的明文空间,比如FHEW和TFHE等。
  • 在FHEW和TFHE含自举的方案中实现打包。
  • 更高效的自举。
  • 在保证精度的情况下,对于CKKS方案实现高效的自举。
  • 实现混合FHE,比如CKKS-FHEW、TFHE等。
  • 硬件加速,比如使用GPU、FPGA等。

参考#

image

  • 【1】Gentry09
  • 【2】DGHV10
  • 【3】BV11
  • 【4】BGV12
  • 【5】Bra12
  • 【7】CKKS17
  • 【8】Regev10
  • 【9】FHEW15
  • 【10】TFHE16
  • 【BFV12】:Somewhat Practical Fully Homomorphic Encryption

作者:Hang Shao

出处:https://www.cnblogs.com/pam-sh/p/16614457.html

版权:本作品采用「知识共享」许可协议进行许可。

声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.

posted @   PamShao  阅读(2601)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-08-26 数字签名
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu