Improved Security for a Ring-Based Fully Homomorphic Encryption Scheme-2013:解讀

PamShao發表於2022-06-14

本文記錄閱讀此論文的筆記

摘要

image

(1)1996年,HPS三人提出一個格上的高效加密方案,叫做NTRUEncrypt,但是沒有安全性證明;之後2011年,SS等人修改此方案,將其安全規約到標準格上的困難問題;2012年,LTV等人基於修改的方案,提出一個FHE方案。

(2)non-standard assumption:非標準假設,是什麼意思?

(3)本片論文是去除了non-standard assumption,通過使用**技術,並且構建了一個新的FHE方案,基於標準格假設問題(比如,SVP,CVP等)和迴圈安全假設【circular security assumption】。

(4)scale-invariant:縮放比例不變?

(5)該方案不使用模切換【modulus switching】,且密文是一個環元素(在環上);另外給出一個實用的變體方案,其具有強假設,並給出推薦的引數和效能提升後的結果。

(6)最後,給出了一種優化方法,可以擴充套件密文大小,利用CRT技術。

介紹

image
image
(1)【On-the-fly multiparty compu- tation on the cloud via multikey fully homomorphic encryption-2012】提出一個多金鑰的FHE方案,是基於【Making NTRU as secure as worst-case problems over ideal lattices-2011】--對【NTRU: A ring-based public key cryp- tosystem-1998】的安全性進行證明。但方案為了保證安全性,需要額外的假設(decisional small polynomial ratio (DSPR) )。
對應摘要中的(1)

(2)該方案去掉了這個額外的假設;原來的是基於理想格,該方案基於的是格上的標準問題;引入張量技術(tensoring technique)【Fully homomorphic encryption without modulus switching from clas- sical GapSVP】降低噪音

(3)該方案是scale-invariant,即可以不使用模交換技術;該方案中的密文是一個環元素,而一半基於(R)LWE的方案密文都是兩個以上的環元素,這能降低密文大小;最後給出一種增加明文空間大小的技術,即通過使用CRT技術,將小的明文模數變為大的明文模數。

(4)引數變大,密文大小變大。

預備知識

環上的有界分佈(B-bounded)

image
取自該分佈中的元素是有界限的,即無窮範數是小於\(B\)的。

具體的分佈:離散高斯分佈(discrete Gaussian distribution)
image
\(D_{Z,\sigma }\):均值為0,方差為\(\sigma\),取樣概率為\(exp(-\pi |x|^2 / {\sigma }^2)\)

通常在FHE中,噪音多項式需要採用該方式取樣,選取的元素,值小且概率高。

通過拒絕取樣法(rejecting samples),來保證該分佈是有界的。

通常多項式的係數在環上,一個數\(x\)需要模\(q\),有兩種表示:\(x\in (-q/2,q/2)\)或者\(x\in [.]_q\);還有一種是\(x\in [0,q)\),用\(r_q(x)\)表示\(x\)\(q\)

image

該方案中,使用兩種模表示。方案中的\(q\)是密文多項式的係數模數,還有一個確定明文訊息空間的明文模數\(t<q\),滿足:\(q-r_t(q)=\Delta*t\),其中\(\Delta=\left \lfloor q/t \right \rfloor\)
image
下面講解了BitDecomp和PowersOfTwo兩個技術以及其性質:
其中,\(w\)相當於是基,這裡取\(w=2\)
(1)BitDecomp
\(w=2\)時,給出一個環上的元素(整數多項式,可以看成一個整數向量(多項式係數))\(x\in R\),變為二進位制表示的向量。

例如:\(q=5\),即\(l_{w,q}=4\)\((1,2)\)變為\(([1,0,0,0],[0,1,0,0])\)

(2)PowersOfTwo
\(w=2\)時,給出一個環上的元素(整數多項式,可以看成一個整數向量(多項式係數))\(x\in R\),變為元素乘以\(w\)的倍數。
例如:\(q=5\),即\(l_{w,q}=4\)\((1,2)\)變為\(([1,2,4,3],[2,4,3,1])\)

(3)性質
\(<BitDecomp(x),PowersOfTwo(y)>=xy(mod q)\)
例如:\(<([1,0,0,0],[0,1,0,0]),([1,2,4,3],[2,4,3,1])>=1*1+2*2(mod 5)=5\)
image
將環上的元素擴充套件為多個,進行BitDecomp和PowersOfTwo計算,並且介紹了張量乘(tensor product)。
(1)BitDecomp
\(w=2\)時,給出多個環上的元素(整數多項式,每一個可以看成一個整數向量(多項式係數))\(x\in R^l\),變為二進位制表示的向量。

例如:\(q=5,l=2\),即\(l_{w,q}=4\)\(([1,2],[0,1])\)變為\(([1,0,0,0],[0,1,0,0],[0,0,0,0],[1,0,0,0])\)

(2)PowersOfTwo
\(w=2\)時,給出多個環上的元素(整數多項式,每個可以看成一個整數向量(多項式係數))\(x\in R^l\),變為元素乘以\(w\)的倍數。
例如:\(q=5,l=2\),即\(l_{w,q}=4\)\(([1,2],[0,1])\)變為\(([1,2,4,3],[2,4,3,1],[0,0,0,0],[1,2,4,3])\)

(3)張量乘
\((a_1,1_2)\bigotimes (b_1,b_2)=(a_1*b,a_2*b)=(a_1*b_1,a_1*b_2,a_2*b_1,a_2*b_2)\)
例如:\(([1,0,0,0,0,1,0,0],[0,0,0,0,1,0,0,0])\bigotimes ([1,2,4,3,2,4,3,1],[0,0,0,0,1,2,4,3])=([1,0,0,0,0,4,0,0],[0,0,0,0,0,2,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0])\)

最後說到,在方案計算中,會出現有理數計算(小數),所以最後需要攝入操作化為整數,這裡的舍入用的是“四捨五入”。

RLWE問題

image

RLWE問題來自【On ideal lattices and learning with errors over rings】。
這裡給出的是D-RLWR問題,困難性可以“量子規約”到格理想上的SVP問題

DSPR問題

image
DSPR問題:區分\(h\)和一個隨機取樣值是難以區分的。

基礎方案

這部分介紹一個公鑰加密方案,基於Regev框架,是下面同態加密方案的基礎。
image

密文模數\(q\),明文模數\(t\in (1,q)\),密文空間為\(R_q=Z_q[x]/\Phi(x)\),明文空間為\(R_t=Z_t[x]/\Phi(x)\),金鑰和誤差取自不同的分佈。\([m]_t\)表示m mod t。
正確性性:
image
如果滿足以上定理,則可以正確解密。
\(fc=(tf'+1)(q/t.m+e+hs)=(tf'+1)q/t.m+(tf'+1)(e+hs) (mod q)=q/t.m+(...)=\Delta.m+v\)
image
只要\(v\)的範數夠小,就看可以恢復出明文,所以\(v\)也叫做密文\(c\)的內在噪音。
下面給出內在噪音\(v\)的具體範數範圍:
image
所以能解密成功。
image

Leveled-FHE方案

下面基礎上面的公鑰加密方案,給出一個SWHE方案YASHE,包含同態計算以及分析其計算過程中密文噪音的上限:
image
image
可以看到,在乘法後需要進行金鑰交換,降低密文維數,加法則不用,因為加法不會導致密文維數變大。
重點在於:計算金鑰\(\gamma\)是如何生成的?同態乘法計算後如何降低密文噪音和維數的?

同態加法

image

同態加法就是將兩個密文直接相加,加完後的噪音小於兩個密文的噪音之和+模操作產生的噪音\(r_t(q)\),其中\(r_t(q)=q mod t\)。這裡給了相加密文的噪音上限。
這裡需要知道:$$\Delta t =\left \lfloor q/t \right \rfloor t=-r_t(q)(mod q)=-q (mod t) (mod q)\to q(mod t)=q-\left \lfloor q/t \right \rfloor t$$

同態乘法

密文乘法分為兩步:(1)直接將兩密文相乘,獲得一箇中間密文(對應的明文是\([m_1.m_2]_t\)),它不能直接使用私鑰解密。(2)將其轉換為一個可以用私鑰解密的新密文,在這裡用到了重線性化技術(BV11)/金鑰交換技術(BGV)進行密文轉換。
噪音處理主要在該步驟。
image
第一步給出瞭如何計算中間密文\(\widetilde{c}_{mult}\),並且分析噪音增長上限,這裡可以看出將兩個密文先進行PowerOfTwo操作,然後張量乘,維數擴張一倍,所以後面需要降維,同時這步驟也產生了噪音,所以也需要降噪。
image
第二步給出了金鑰交換的過程,以及分析噪音增長的上界。
首先,需要求出用於金鑰交換的計算金鑰\(evk\),它其實可以看作是\(f^{-1}P(D(f)\bigotimes D(f))\)在公鑰\(h\)下的加密,當然可以用私鑰\(f\)解密。這裡的\(evk\)是公開的,所以這裡需要做一個“迴圈安全假設(circular security assumption)”,即即使公開\(evk\),也不會影響方案的安全性。
另外可以看出,這裡做金鑰交換,也產生了一些噪音。這些噪音通過Decompt和PowerOfTwo技術控制在一定的範圍內,增長緩慢。

正確性

這裡給出在解密正確的前提下乘法次數的界限。方案的安全性基於DSPR問題,需要設定好引數。
image

安全性

為了證明方案是安全的,需要假設即使敵手知道了\(evk\),方案也可以保證是IND-CPA安全的。
在“迴圈安全假設”下,YASHE方案的IND-CPA安全性來自基於公鑰加密方案的IND-CPA安全,而基於公鑰加密方案的IND-CPA安全是基於RLWE困難問題。
image
要證明迴圈安全假設,需要方案設定的引數滿足:
image

變為FHE

image
如何將Leveled-FHE變為FHE,目前唯一的方法還是Gentry提出的“自舉”(bootstrapping)技術。
即方案能夠同態的計算自己的解密電路,這裡需要用公鑰將私鑰的每一個位元加密,類似於金鑰交換中的計算密,這裡需要一個“安全假設”,即加密私鑰的每個位元不會影響方案的安全性!
image
這裡將解密電路的複雜度降低為\(O(log(log(q))+log(d))\),具體是將縮放(scaling)和舍入(rounding)操作換成消耗更小的乘法和移位運算。最後的模2並不會增加計算深度。

YASHE的變體YASHE‘

不同之處是同態乘法,YASHE‘中乘法的中間密文只是一個簡單的多項式,而YASHE中的中間密文是一個多項式向量,這就導致了計算金鑰\(evk\)中只需包含\(l_{w,q}\)個多項式,而不是\(l_{w,q}^3\)個多項式,所以金鑰交換更加簡單了。下面介紹簡化過程和噪音分析。

image
image
在YASHE方案中,\(\widetilde{c}_{mult}\)相當於是\([m_1.m_2]_t\)\(D(f)\bigotimes D(f)\)下加密的;而在YASHE‘方案中,\(\widetilde{c}_{mult}\)相當於是\([m_1.m_2]_t\)\(f^2\)下加密的。
可以看出,在新方案中,乘法中沒有使用Decompt和PowerOfTwo技術,僅在金鑰交換中使用到。

同態乘法

這部分給出在乘法計算中,中間密文的噪音上限。
image

金鑰交換

image
同樣,這裡的\(evk\)可以看作是私鑰\(f\)在公鑰\(h\)下的加密。另外需要額外的“迴圈安全假設”保證方案的安全性。

正確性

每一層的密文中的噪音大小是近似的,為了減少計算量,儘量使用更多的加法,使用更少的乘法。
image
這裡給出密文的內在噪音的上限\(V\)、乘法深度\(L\),與方案其它引數的關係,需要滿足該條件才能執行L次乘法運算,即 Leveled-FHE方案。

安全性

新方案的安全性依賴於RLWE問題、“迴圈安全假設”和DSPR問題,原方案可以根據根據引數設定而避免使用DSPR假設。
可以證明在RLWE問題和DSPR問題下,該方案是安全的,即方案的IND-CPA安全是基於RLWE假設和DSPR假設的。且需要滿足於當 \(evk\)公開時,方案也是安全的。
這裡給出一個更弱的DSPR假設(引數選取的分佈不同,導致噪音上線不同)。
另外私鑰一般取值很小,可以為每一個級提供一個公私鑰對從而避免使用“迴圈安全假設”,此時每一層的\(evk\)和該層的公私鑰有關,具體如下:
image

引數推薦

這裡給出了需要事先確定的兩個重要引數:
(1)密文模數\(q\)
一般在64bit~1024bit之間取值
(2)多項式的級數
\(n=\varphi (d)\)一般取2的次冪,這裡給出\(2^{11}\)\(2^{16}\)
(3)下面給出推薦引數,兩種情況:固定\(q\),求\(n_{min}\),然後給出最大的層數\(L_{max}\);固定級數\(n\),求最大的\(q_{max}\),然後給出最大的層數\(L_{max}\)
image
可以看出,隨著引數的增大,支援計算的層數就變大,但計算量也隨之變大。

(4)【Can homomorphic encryption be practical? 】中給出的實驗結果
引數:\(R=Z[X]/(X^{4096}+1),t=2^{10},q:130bit\)
結果:加密:756ms,加法:4ms,乘法:1590ms,解密:57ms

(5)該方案的實驗結果

程式碼不依賴於第三方庫,基於C編寫
開源庫(其他人實現):https://github.com/iamtrask/PyYashe

引數:\(q:127bit,w=2^{23}\),其它引數一樣
結果:加密:27ms(百萬次迴圈),加法:0.024ms(7萬次迴圈),乘法:31ms(9070萬迴圈),解密:5ms(1410萬迴圈)

(6)方案的實際乘法次數為\(2^2~2^5\),效能更好。

截斷密文(Truncating)

image

在Bra12中提出scale-變體的LWE方案,即丟棄密文最低位(least significant bits ),基於該思想,方案給出兩種優化方向:
image

(1)約減密文長度
\(YASHE.Discard_w(c,i)\):輸入一個密文和要被階段的個數\(i\),輸出\(c'=\left \lfloor w_{-i}c \right \rfloor\),這裡的\(w\)時基,一般取2。且\(w^i.c'\)等於\(c\)的最低\(i\)位取0。
這裡舉例子:給出密文\(c=7=(0 1 1 1)_w\)\(w=2\)
\(i=2\)\(c'=1\),正好對應\(c\)去掉後兩位得到的\((0 1)_w\);且\(w^i.c'=4\),即\((0 1 0 0)_w\)
\(i=3\)\(c'=0\),正好對應\(c\)去掉後兩位得到的\((0)_w\);且\(w^i.c'=0\),即\((0 0 0 0)_w\)

如果\(cf=\Delta m+v(mod q)\),則\(w^ic'f=\Delta m+v'(mod q)\)

通過擷取密文,密文的長度變短,且不依賴於\(q\),而是依賴於\(q\)和噪音的比值。當用\(D_{w,q}(c)\)表示密文\(c\)時,大概需要\(log_w(q/B)\)的基,且最低\(log_w(B)\)位為0。

如果\(c\)\(f^2\)解密,則在金鑰交換時,我們僅需要\(evk\)中的前\(log_w(q/B)\)位的資訊進行切換。

(2)約減計算金鑰中元素個數
每次乘法,都需要減少\(evk\)中的元素數量。

通過CRT編碼

上面給出了推薦的引數和輸入邊界,以此來保證方案的正確性和安全性。
當需要更多的計算時,在不增加引數的情況下,使用該技術可以增大計算量。思想就是,利用中國剩餘定理將多個輸入編碼為一個更大數,使得計算精度更好或者輸入的數值更大。其中使用的引數一直不變,只需要密文個數變大。
image
通過CRT將每個輸入編碼為都是模\(t_i\)的集合元素,來進行邊界為\(B\)的整數計算;然後對集合進行計算,相當於對這些整數不涉及模約減(modular reductions)的運算,只要\(t_i\)的乘積不超過\(B\)。集合中的每個整數都相當於對應模\(t_i\)的明文(plain text)被加密的密文,並且能平行計算這些密文並返回結果;在解密時,利用CRT將輸出或恢復為實際的整數。
image

此時的技術不同於【Batch fully homomorphic encryption over the integers】【Fully homomorphic simd operations】中的技術,這裡沒有利用CRT將資訊打包到一個密文(single ciphertext)中的不同明文槽中(plain text slots)而是簡單加密了一個密文中每一個CRT編碼的部分,對應於模\(t_i\)的明文(plain text )。密文現在由多個環元素組成,但是可以平行計算,這可以使我們使用相同的引數處理雙位(integers of double bit length)長的整數,僅使用不同的值\(t_0,t_1\)擴充套件到兩個密文。

沒看太懂。說的太抽象。沒有具體例子。

相關文章