課程筆記:全同態加密的理論與構造-下篇:學習

本文緊接上文課程筆記:全同態加密的理論與構造-上篇:學習,繼續學習“課程筆記:全同態加密的理論與構造-下篇”,並做相應筆記和補充。

第一代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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章