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

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

第一代FHE

image

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

方案

image

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

image

  • 计算时,\(\overline{r_1}=s_1r_1,\overline{q_1}=s_1q_1\),加法的噪音是累加的,乘法的噪音增长过大,如果超过\(p\),则解密出错。
  • 假设新鲜密文的噪音上限为\(B\),经过\(d\)乘法,密文的噪音上限变为\(B^{2^d}\),需要解密正确,需要满足噪音小于\(p\),得到了乘法深度的范围\(d\le O(log^{\lambda })\)

第二代FHE

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

image

  • 噪音分布\(\chi\),噪音选取\(e\in \chi\)
  • LWE分布\(A_{s,\chi}\)\(s\in Z^n_q\)是一个\(n\)向量,\(e\in \chi\)是一个随机数,\(A\in Z^{m*n}_q\)是一个\(n\)的向量。解LWE问题就是去解带噪音项的线性方程组\(b=a.s+e\)
  • \(n\)应该是公开的参数。

image
image

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

BGV方案

image

  • BGV是在整数域上计算的方案,之后引入编码计算,将其放在多项式上计算。
  • 密钥生成:满足\(A.s=2e\),其中\(A\in Z_q^{l,n},l=n.polylog(q)\)
  • 加密:\(c_0=A^Tr\in Z_q^{n}\),其中\(A^T\in Z_q^{n,l}\)\(b^Tr+m\),其中\(b^Tr+m \in Z_q\)
  • 解密:\(c\in Z_q^{n+1}\),即\(<c,s>\)是一个数,另外\(2e^Tr\)是噪音项,需要约去或者消去。

image

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

image
image
image

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

image
image

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

BFV方案

image

  • 密钥生成:与BGV不同的是,这里使用的是\(b=As'+e\),(原因?)
  • 加密:\(c_0\)计算与BGV相同,\(c_1\)计算与BGV不同是\(c_1=b^Tr+[q/2].m\)
  • 解密:与BGV不同,且这里要求\(|e^T.t|<\frac{1}{2}.\left \lfloor q/2 \right \rfloor\)才能正确解密。

image

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

第三代FHE

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

image

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

image
image

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

面向应用的全同态算法

image

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

CKKS方案

image

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

TFHE方案

image
image

  • TFHE基于GSW方案,属于第三代FHE,是目前最快的全同态加密方案(真正FHE)。
  • 基于的是RLWE问题,也是分为搜索型和判定型。
  • 加密:\(<c,s>=e+\frac{q}{2} m(mod q)\),其中\(m\in [0,1]\)是明文,\(c\)是密文,\(s\in [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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章