可以使用同態加密交換密鑰嗎?
完全同態加密 (FHE) 允許對密文進行計算。這種技術可以用來交換密鑰嗎?
例如,Alice 和 Bob 需要就 4 位密鑰達成一致。Alice 向 Bob 發送 4 個不同的字元串,它們分別是
0001
,0010
,0100
,的密文1000
。現在 Bob 選擇了密鑰0101
。0100
他對和對應的密文進行按位或運算0001
,並將結果發回給 Alice。愛麗絲破譯結果並得到0101
。這個方案安全嗎?(除了密鑰通常更長的事實之外)
簡而言之
它可以是安全的,但效率會非常低。
詳細地
如果您將這些位字元串
0001
,0010
,0100
,1000
等視為整數(即, $ 2^0, 2^1, 2^2, 2^3 $ , 等) 並按位或對其中一些應用邏輯相當於將兩個的某些冪相加。因此,您提出的方案是 Alice 發布了幾個 2 的冪的加密, $ c_i := Enc(2^i) $ Bob 以某種隨機方式組合它們,即 Bob 選擇 $ b_i \in {0,1} $ 併計算 $$ c_B := \sum_{i=0}^{n-1} b_i\cdot c_i = Enc\left(\sum_{i=0}^{n-1} b_i\cdot 2^i\right). $$
很容易看出,如果每個 $ b_i $ 被統一選擇,則加密值的分佈由 $ c_B $ 是統一的 $ {0, 1, …, 2^n-1} $ ,這是一個完美的場景(交換的密鑰是統一的,那麼,很難猜到)。
但是,這種方法的問題是攻擊者可以查看 $ c_B $ 和所有的 $ c_i $ 的並嘗試找出 $ b_i $ 的。請注意,如果我們設法發現至少一個 $ b_i $ ,那麼我們知道什麼是 $ i $ - 交換密鑰的第一個位。所以,我們必須排除這種可能性。
一種標準的做法是使用 Leftover Hash Lemma 來保證 $ c_B $ 在密文集上在統計上接近統一 $ \mathcal C $ ,但它需要 $ n $ 遠大於安全參數 $ \lambda $ . 這意味著 Alice 需要發布的內容遠遠超過 $ \lambda $ 密文,每一個都有超過 $ \lambda $ 位,這意味著發布的內容遠遠超過 $ \lambda^2 $ 位(可能超過 $ \lambda^3 $ )。而且我們仍然必須考慮加密和組合所有這些值所需的時間……
此外,我認為沒有另一種已知的方法可以使這種密鑰交換安全,因為隱藏這些密鑰的問題 $ b_i $ ’s 與同態加密方案在轉化為公鑰方案時所面臨的問題基本相同,而我在論文中經常看到的解決方案就是我所說的(使用 Leftover Hash Lemma)。