密碼學系列之:海綿函式sponge function

flydean發表於2021-09-14

簡介

海綿函式sponge function是密碼學中使用的一種函式,它接收一定長度的輸入,然後輸出一定長度的輸出,中間包含了有限個內部狀態。

因為海綿函式的強大功能,所以可以用來建模和實現許多密碼原語,包括密碼雜湊,訊息身份驗證碼,生成掩碼,流密碼,偽隨機數生成器等。

本文將會講解海綿函式的結構。

海綿函式的結構

我們先看一個海綿函式的結構圖:

這個函式被分成了兩部分,左邊部分叫做吸收部分,右邊部分叫做輸出部分,一吸一出,像是海綿一樣,所以叫做海綿函式。

P表示的是輸入的字串,Z表示的時候輸出字串。

一個海綿函式由三部分組成,分別是state, 函式f和填充函式pad。

state就是上圖的r+c部分,r被稱為Bitrate, c被稱為Capacity

P被分成n份,每一份都會跟Bitrate進行異或操作,如果P的長度不是Bitrate的整數倍,那麼需要使用Pad函式進行填充。

每一輪,Bitrate跟P進行異或操作的結果作為最新的Bitrate, 然後生成新的state,然後這個state又被f(state)來替換。

其中函式 f 是 從n個{0,1} 到n個{0,1}的對映。

就這樣一輪一輪進行下去,直到所有的P都參與了運算。

輸出部分是將最終生成的state進行f運算,每次運算都取Bitrate部分作為輸出,從而得到最終的輸出。

海綿函式的應用

因為海綿函式的優秀的特性,所以被用在很多方面。比如SHA-3的實現演算法Keccak就是使用的海綿函式。

通過替換f和多輪置換,海綿函式可以生成非常安全的密碼演算法,所以得到了廣泛的使用。

本文已收錄於 http://www.flydean.com/36-sponge-function/

最通俗的解讀,最深刻的乾貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

歡迎關注我的公眾號:「程式那些事」,懂技術,更懂你!

相關文章