兩個均勻隨機密鑰之和的雜湊值的安全級別
我生成兩個均勻隨機的 127 位整數 $ a $ 和 $ b $ .
我計算 $ c=a+b $ , 意思是 $ c $ 始終可以表示為 128 位整數。
$ c $ 不會均勻隨機分佈,但我需要將其用作私鑰的熵。我沒有計算選項 $ c=(a + b)\ mod\ 2^{127} $ .
我如何推斷密鑰的安全級別 $ k=H_{128}(c) $ , 在哪裡 $ H_{128}() $ 是一種加密安全雜湊,例如 SHA256,其結果被截斷為 128 位。
此外,安全級別如何 $ k $ 如果對手可以控制,則受影響 $ b $ . 對手將不知道 $ a $ ,並將嘗試解密我使用加密的數據 $ k $ .
安全級別如何 $ k $ 如果對手可以控制,則受影響 $ b $ . 對手將不知道 $ a $ ,並將嘗試解密我使用加密的數據 $ k $ .
我首先選擇第二個問題,因為它恰好更容易分析。
現在,如果 $ H_{128} $ 就像一個隨機函式,它的值無關緊要 $ b $ 攻擊者選擇;假設他將其設置為他知道的任意值。然後,他最好的方法是選擇任意值 $ a’ $ , 計算 $ H_{128}(a’+b) $ ,看看是否能解密。一個值 $ a’ $ 如果滿足以下條件將成功:
- 他碰巧猜到了 $ a $ , 那是, $ a = a’ $ - 機率 $ 2^{-127} $
- 他猜錯了 $ a’ \ne a $ , 然而 $ H_{128}(a+b) = H_{128}(a’+b) $ . 因為我們在建模 $ H_{128} $ 作為一個隨機函式,其機率約為 $ 2^{-128} $ 的發生。
因此,任何猜測 $ a’ $ 有機率 $ 2^{-127}+2^{-128} = 1.5 \cdot 2^{-127} $ 的成功。如果這是最好的攻擊(如果 $ H_{128} $ 是一個隨機函式,它是),那麼我們有大約 126.5 位的安全性(這還不錯,因為系統中只有 127 位的熵,即攻擊者不知道的資訊)。
如果攻擊者不知道怎麼辦 $ b $ ?
做一個徹底的分析有點複雜。在這種情況下,最優攻擊將涉及從最可能的值開始的搜尋 $ a+b = 2^{128}-1 $ ,並努力獲得不太可能的值;找到預期的工作量比我現在想做的要多。
另一方面,我們可以通過觀察攻擊者不知道來進行快速分析 $ b $ 對他來說並不容易,所以我們至少和前一個案例一樣好(126.5 位安全性)。而且,因為我們有一個 128 位的密鑰,我們不能擁有超過 128 位的安全性,所以它介於 126.5 和 128 之間。