用於隨機性提取的密碼雜湊函式的條件
假設我們要變換半隨機 $ n $ -位輸入更短 $ k $ -bit 輸出在計算上與均勻隨機位串無法區分,並且(在某種意義上,需要指定)每個半隨機輸入中都有足夠的熵來實現這一點。
在雜湊†函式的什麼條件下(就其不可或缺的而言,在半隨機輸入上)我們可以僅對每個半隨機輸入進行雜湊處理以達到隨機性提取的目的嗎?這種情況的標準名稱/聲明/參考是什麼?
雜湊被 SHA-256 截斷為時的狀態是什麼 $ k\le256 $ 位?
† 對於散列的某些定義,包括:具有 $ n $ -位輸入和 $ k $ -bit 輸出,公共的,除了可能在某種有限意義上用於輔助固定輸入。其他條件是問題的一部分。
動機:這就是 OP 想問的問題我可以使用諸如 sha256 的加密雜湊函式來進行隨機性提取嗎?. 問題的主體想知道抗碰撞性是否足夠(不是),並且該問題被使用者共識關閉為我們可以假設具有高抗碰撞性的雜湊函式也意味著高度均勻分佈嗎?.
我假設問題是關於計算隨機性提取的;特別是,我們不在用確定性函式提取隨機性的不可能結果的領域。此外,我將假設熵源獨立於雜湊函式。
有了這兩個假設,雜湊函式的一個充分條件(更像是假設)是雜湊函式“表現”得像一個隨機的 oracle。
現在,眾所周知,單一的雜湊函式無法實現隨機預言機。因此,“表現得像一個隨機預言機”的概念是不恰當的,不能從與隨機預言機無法區分的意義上來解釋。相反,我們真的可以理解“來自隨機預言機的不可區分性”的概念。
不可區分性: Maurer、Renner 和 Holenstein引入的不可區分性框架將不可區分性描述為不可區分性的概括。總結:讓 $ T $ 是使用理想化但公開可用資源的密碼系統 $ R $ 實現理想的密碼系統 $ T $ . $ S $ 據說是無差別的 $ T $ , 如果存在模擬器 $ \mathcal{S} $ 這樣“翻譯” $ R $ 來自理想的資源 $ T $ . 換句話說,對於任何(有效的)區分器 $ D $ ,它無法區分與 $ (R, S) $ 與 $ (\mathcal{S}, T) $ . 這個概念帶有一個組合定理,該定理本質上說對於任何密碼系統 $ \mathcal{C} $ 使用時證明是安全的 $ T $ , 而如果 $ S $ 和 $ T $ 是不可微分的,那麼 $ \mathcal{C} $ 使用時也很安全 $ S $ (有一些警告)。
這在這種情況下很有用,因為該框架已應用於雜湊函式 ( Sponges )、HMAC。
Hugo Krawczyk 還在這裡討論了假設固定的零鹽,不可區分性對 HKDF 安全性的作用。
注意事項:現在,可以出於多種原因對上述論點提出質疑:1)獨立性假設,2)理想化。因為我們假設源和底層雜湊函式(或壓縮)是獨立的,所以答案不像 HKDF 和隨機鹽的情況那樣普遍。但是這個問題並沒有說明這個假設是不可接受的。不可區分性仍然需要一些理想化(底層壓縮函式或分組密碼)。但是,該值可以看作是假設的最小化:理想化壓縮函式似乎不如對具有結構的完整雜湊函式等進行理想化……
為了盡可能通用,我仍然會使用加鹽的 HKDF 而不是單個散列函式,甚至使用零加鹽的 HKDF。
條件:通過像樣的隨機性測試。
如果它在下游看起來是隨機的,那麼如果驅動提取器函式的輸入是真正隨機的,我們就可以確定它是真正隨機的。您說得對,資訊論安全性不能僅通過滿足輸出測試而不審查整個堆棧來實現。因此,有必要了解原始熵源,以及您可以在手中玩弄的物理事物。
左邊的散列引理(重新排列)是:-
我們有 $ n $ = 輸入位在 $ s $ 來自源的原始熵的比特/比特, $ k $ 是提取器的輸出位數。 $ \epsilon $ 是遠離完美製服的偏差 $ k $ 位長字元串,即 $ H(k) = 1 - \epsilon $ 位/位。
然後,這允許設置輸入/輸出比以選擇輸出偏置 $ \epsilon $ . 我用 $ \epsilon = 2^{-128} $ 使用 SHA-512 因為我可以。其他利息比率是:-
在閱讀了一兩篇論文(!)並建構了許多通過所有隨機性測試的 TRNG 之後,我建議您正在尋找的術語是隨機性提取。質量度量是Left over hash lemma。不需要密碼功能。
了解原始熵源,通過隨機性測試,你就會閃閃發光。