用 PRF 代替 PRP 的海綿
在大多數使用 Sponge 操作模式(例如 SHA3)和NIST 輕量級密碼學項目中的許多第 2 輪候選操作中,底層原語是一種密碼排列——也就是說,它是雙射的。
出於好奇,我注意到一個提議的基於 Sponge 的 PRNG通過將部分排列狀態截斷為全位為零來實現前向保密(回溯阻力)(連結論文的第 4.3 節)。
這讓我想知道,如果排列是單向的(例如 $ p(x) \oplus x $ ):
Q1:如果 SHA3 雜湊和 XOF 函式建立在 Sponge-PRF 之上,會有什麼安全隱患?
Q2:如果提議的 PRNG 使用 PRF,安全證明將如何分解?
Q3:如果基於海綿的雙工 AEAD 使用 PRF,它們的安全證明將如何分解?
我向 Keccak 團隊發送了一封郵件詢問此事,我收到了其中一位作者(具體是 Joan Daemen)的回复。
據他介紹,我們實際上可以通過除了排列之外的“轉換”來實例化 Sponge 函式和 Duplex 對象,後者是我們通常所做的。只要底層(固定寬度)函式與隨機函式無法區分(計算上)。
所以我們通常不使用“轉換”的真正原因是 -它通常效率不高。
從郵件回復中引用。
海綿構造主要使用排列(Keccak、Xoodyak、Spongent 等)進行實例化的原因是,作為一個密碼學社區,我們有一種方法可以建構有效的排列,這種排列似乎會產生安全的海綿函式,但不能建構就不可微分性和不可區分性界限而言,執行相同操作的有效轉換和排列的可逆性不會受到傷害。…
確實如此,Feistel 網路分組密碼(例如 DES 和 SM4)中的輪函式在效率方面並不是最優的,尤其是與 ARX(例如 ChaCha20 中的 add-rotate-xor)和按位- and-shift 操作(例如 Gimli、Keccak、NORX 中的操作)。
總結:
…我們實際上通過迭代一個簡單的輪函式來建構一個排列,該函式執行混合、非線性和洗牌。Sponges 是通過非排列的轉換建構的,例如 Gluon,但在我看來,這並沒有取得很大的成功。