Hash
基於 SHA-3 的 MAC 是否需要 HMAC?
HMAC 進行嵌套散列以防止長度擴展攻擊。
鑑於您使用 SHA-3 雜湊(可以抵抗長度擴展攻擊),您是否仍需要通過該過程才能生成安全的 MAC?
不用說,我們仍然會使用一個密鑰,我們將它預先或附加到消息中,但這對於 MAC 來說就足夠了嗎?
鑑於您使用 SHA-3 雜湊(可以抵抗長度擴展攻擊),您是否仍需要通過該過程才能生成安全的 MAC?
不,你不需要這樣做,但你可以。
不用說,我們仍然會使用一個密鑰,我們將它預先或附加到消息中,但這對於 MAC 來說就足夠了嗎?
是的,您可以在消息前加上密鑰,即使用 $ H(K||M) $ .
與 SHA-1 和 SHA-2 不同,Keccak沒有長度擴展的弱點,因此不需要 HMAC 嵌套結構。相反,可以通過簡單地在消息前加上密鑰來執行 MAC 計算。
但是,原標準並沒有規定這種MAC模式,只是一個hash函式。
現在有一個基於 SHA-3 或特別是 SHAKE 可擴展輸出函式的 KMAC(和其他結構)規範(pdf)。從“將鍵添加到消息”的變化是鍵填充以及包含常量和輸出長度,這些都是為了域分離而完成的。
可以使用 SHAKE128/SHAKE256 以這種形式實現 KMAC,但不使用其他 SHA-3 變體。