Hash

簡單來說海綿結構是什麼?

  • October 11, 2020

我建議我的客戶使用 SHA3 而不是 SHA2。我知道 SHA3 基於贏得 NIST 競爭的 Ke​​ccak 算法。

我想用非常簡單的術語來解釋海綿函式的結構;有人對加密海綿有簡單的解釋嗎?

我發現以下來自 Wikipedia 的圖片,雖然對您的目的來說可能有點過於技術化,但對一些解釋仍然很有幫助:

海綿功能圖

本質上,一個函式 $ f $ 在吸收和擠壓兩個階段重複使用。

在吸收階段,輸入數據的小塊使用 XOR 混合到緩衝區的開頭(使用圖像中的變數: $ r \oplus P_i $ )。然後通過這個更新的緩衝區值 $ f $ 並且該過程繼續進行。每一步都有少量的輸入日期( $ r $ ) 使用“吸收”到緩衝區中 $ f $ 半隨機化整個緩衝區。

在擠壓階段,重複相同的過程,但不是第一個異或 $ r $ 帶有數據的位,它們被提取為下一個 $ r $ 位的輸出。

tl; dr:輸入在緩衝區隨機化的階段之間的小卡盤中混合到緩衝區中,然後重複隨機化緩衝區,同時將其中的小卡盤作為輸出。

有關更多詳細資訊,請參閱此網頁和Keccak 團隊的這篇論文


值得一提的是,您推薦 SHA-3 而不是 SHA-2 的目的可能更重要。他們對 SHA-2 的應用是否會受到長度擴展攻擊的影響?SHA-3 還有其他可以讓您受益的好處嗎?正如這裡所提到的,情況並不是真的“遷移到 SHA-3,因為它是 SHA-2 的更好版本”。

您可能已經意識到這一點,但您的客戶可能沒有。因此,對其工作原理的簡單描述可能並不是他們真正需要的,即使這就是他們所要求的全部。

簡單的解釋

一個簡單的解釋對不同的人可能意味著非常不同的事情。 thesquaregroot 的答案從“簡單但仍然技術性”的角度解決了這個問題。對我來說,簡單意味著(邊界)非技術性的。

海綿結構以海綿命名。不是動物本身,而是您用來清潔黑板或廚房櫃檯的衍生設備。海綿能夠吸收液體和粉筆,然後將其擠出

每次你用海綿吸收液體和粉筆(數據)時,它都會記住這個動作,它永遠存在於它的歷史中。當海綿被擠壓時,結果是海綿所有歷史的混合:海綿混合了它以前的所有輸入,通常會產生粘糊糊的粉筆,原始輸入無法辨識。

另一種類似物是永久燉菜:定期補充新鮮食材的大燉菜。結果永遠不會一樣,因為它取決於添加的成分,有多少人從中食用,或者季節和調味料,以及可能的其他因素。


海綿可以內置很多東西,其中一個雜湊函式:你用海綿吸收輸入數據,然後擠出剛好足以形成雜湊。

或者您可以非常巧妙地將其用於 Fiat-Shamir 轉換,例如https://github.com/dalek-cryptography/merlin/,基於STROBE:向互動式驗證者發送的消息被吸收,挑戰被簡單地擠出。

或者您可以使用海綿作為流密碼:吸收密鑰材料並根據需要擠出盡可能多的密碼流。

在這一點上,與海綿的物理類比變得越來越困難:海綿只能擠出吸收的量,而加密海綿可以繼續擠出必要的量,直到安全性可能開始崩潰。


免責聲明:我試圖讓這個答案專注於直覺,這可能會妨礙技術的正確性。如果您覺得我應該提到一些不正確的類比,請告訴我!

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