Encryption

FHE更長的密鑰是否比傳統的加密算法帶來更高的安全性?

  • September 25, 2017

我檢查了一些FHE庫生成的密鑰大小,例如HElib的密鑰大小將超過300M,而tfhe的也接近100M. 既然這些密鑰這麼長,是否保證FHE加密比傳統加密更安全,比如RSA

不,大尺寸基本上來自這樣一個事實,即需要能夠處理非常大的錯誤項才能執行稱為“引導”的過程。自舉的基本思想是我們使用一個“基本”同態系統,它有點容易出錯;也就是解密 $ c_1 \oplus c_2 $ 本質上是一些 $ m_1 + m_2 + \epsilon $ 對於一些錯誤 $ \epsilon $ . 隨著我們評估的越來越多 $ \oplus $ 我們積累了越來越多的錯誤,但是我們可以通過在每個“信號”位中包含越來越多的位來處理“雜訊”位來解決這個問題,甚至還有一些巧妙的方法來移動模數以保持乘法等的絕對誤差幅度 - 重要的是您可以限制使用的電路的深度,或者增加狀態空間的大小。最後,作為解密的一部分,我們最終截斷了這個錯誤。

在引導過程中,我們採用到目前為止已經建立的固定密文(我們當然知道),並形成電路,該電路將採用可變私鑰(我們當然不知道)並用它解密這個密文鑰匙。因此,我們通過將密鑰視為輸入並將密文視為固定的已知布爾常量來“同態化”這個解密電路。然後我們可以將同態電路應用於加密的私鑰 $ \kappa = E_k(k) $ 儲存為公鑰的一部分,以獲得“加密解密的密文” - 換句話說,獲得我們固定密文的新表示, $ c \mapsto c’. $

這聽起來完全沒用,如果你不包含截斷錯誤的邏輯的同態版本,它也是完全沒用的。但是當同態錯誤截斷邏輯進入畫面時,神奇的事情發生了:無論 $ \epsilon_c $ 迄今已建成 $ c\leftrightarrow m + \epsilon_c $ 被一個固定的錯誤取代, $ c’\leftrightarrow m + \epsilon_0. $ 此錯誤取決於解密電路的深度(以這種反向密鑰優先方式查看時)。

我喜歡 TFHE 的一位研究人員給出的引導類比:蜘蛛俠只能在一條織帶上擺動一段時間,然後它“用完”(他開始倒退之類的)。但是蜘蛛俠能夠擺動任意時間/距離。他是怎麼做到的?當他揮舞時,他會花一些時間來發射另一條織帶,並在目前的那條“用完”之前切換到那條織帶。同樣,我們有一個操作的錯誤門檻值;在我們“用完”之前,我們只能繼續進行一定數量的操作,因此我們投入一定數量的這些操作來重置我們密文狀態的錯誤欄,然後我們可以繼續這樣做。

無論如何,長話短說,可容忍的誤差範圍和密鑰/明文/密文的寬度的組合共同設定了安全級別;為了處理更大的同態電路,您可能需要增加密鑰文本的寬度而不使密鑰更安全。例如,TFHE 軟體的文件指定它們僅針對 110 位安全級別;根據 RSA security 2003 年的估計,它的安全性大致處於 2048 位 RSA 級別。它具有兆字節大小的密鑰這一事實純粹是為了處理成功引導所需的錯誤。

引用自:https://crypto.stackexchange.com/questions/51801