Hash

PRF 和 PRP 之間有什麼區別,加密雜湊函式與 HMAC(PRF 或 PRPS)是否相同?

  • May 23, 2020

我閱讀了一個類似問題的答案,該問題提出散列函式與 PRF 不同,但是我還發現聲稱加密散列函式是 PRF 的材料,我現在不確定。另外,HMAC 是不是因為被加密而成為 PRP?我認為加密散列函式被鍵入(即,在輸入前附加/附加一個常數)是決定它是 PRF 還是 PRP 的原因,但是在搜尋更多時,我變得越來越困惑。現在我認為散列函式是 PRF,而 HMAC 是 PRP,這是因為 HMAC 是鍵控的。

我閱讀了一個類似問題的答案,該問題提出散列函式與 PRF 不同,但是我還發現聲稱加密散列函式是 PRF 的材料,我現在不確定。

後一種材料是錯誤的。

隨機函式

一種數學函式(即“純”函式),其輸出值僅取決於其輸入,但其輸出是隨機的。將其視為具有兩列的(可能是無限的)表:

  • 第一列只列出每個可能的輸入一次;
  • 第二列已經提前填充了從函式範圍中隨機選擇的值。

隨機函式是一個理想的對象——我們知道它實際上不可能以我們感興趣的大小存在。

偽隨機函式族 (PRF)

一種確定性電腦算法,它可以:

  • 接受一個密鑰和一個(不一定是秘密的)輸入;
  • 在多項式時間內執行;
  • 具有這樣的特性:如果您秘密地隨機選擇密鑰,對手會發現它很難破解,以至於他們甚至無法在任何實際時間內將其與隨機函式區分開來,即使他們知道算法並且可以選擇非關鍵輸入給它。

請注意,PRF 旨在充當一種實際的願望——密碼學家希望實用的電腦算法可以實現這一點。請注意,實際上並沒有確鑿的證據表明可以在真實的謊言中實現 PRF——PRF 的存在是一種猜想

另請注意,我一遍又一遍地用粗體表示秘密——這是一個重要的小細節。

隨機預言機模型

一種加密安全證明,其中雜湊函式被建模為隨機預言機——誠實方和對手都可以訪問的公共隨機函式。

請注意,就像我上面加粗的secret一樣,這裡我加粗了public,因為這是一個關鍵的區別。PRF 採用誠實方必須隨機選擇的密鑰,因此 PRF 應該表現得像一個只有該方才能評估的隨機函式。而像 SHA-256 這樣的加密雜湊函式旨在抵禦沒有密鑰的情況下的攻擊。例如,一個對手不應該能夠在任何實際時間內找到兩個發生衝突的 SHA-256 輸入,即使他們沒有對算法或計算保密。因此,理想情況下,散列函式應該表現得像每一方都知道的隨機函式。

請注意,您經常會遇到的另一個混淆是使用術語“隨機預言”來表示隨機函式的人。我喜歡用這個類比來思考:做一個隨機的預言家就像是美國的總統。你必須是天生的公民,年滿 35 歲,但讓他們成為總統的不是他們滿足這兩個要求,而是他們在政治體系中所扮演的角色。

同樣,隨機預言機必須是隨機函式,但使該函式成為隨機預言機的原因不僅在於它是隨機的,還在於它在某些場景中所扮演的角色。


現在,剩下的問題:

另外,HMAC 是不是因為被加密而成為 PRP?

HMAC 通常被推測為 PRF。這不是一個排列,因為必須存在多個產生相同輸出的輸入。因此它不能是 PRP,它是 PRF 的子類型,另外規定對於每個密鑰,算法必須實現一對一的函式(也稱為置換)。

我認為加密散列函式被鍵入(即,在輸入前附加/附加一個常數)是決定它是 PRF 還是 PRP 的原因,但是在搜尋更多時,我變得越來越困惑。

您在這裡的錯誤是認為“鍵控”是您在一種情況下選擇使用函式的上下文屬性,但您確實需要將其視為函式本身的內在屬性,否則您確實會得到使困惑。SHA-256 只有一個輸入,該輸入用於傳遞該函式不要求您保密的消息。所以不,SHA-256 絕對不是密鑰功能。

但是,如果您需要 PRF,則建構 PRF 的一種方法是 HMAC-SHA-256,該結構定義了一個函式,該函式確實採用單獨的密鑰(它要求您隨機秘密選擇)和消息。然後,在幕後,HMAC-SHA-256 以特定方式組合這兩個輸入並將它們交給 SHA-256。

但是,HMAC-SHA-256 是基於 SHA-256 建構的鍵控函式這一事實並不意味著 SHA-256 “有時是鍵控函式”——它只是意味著您可以使用非鍵控建構塊建構鍵控函式. 同樣,“鍵控”應該被理解為函式是如何定義的固定的、內在的屬性,而不是關於它在某些場景中如何使用的可變上下文事實。

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