Authenticated-Encryption

SpongeWrap 無填充和框架位

  • October 13, 2014

假設所有輸入的長度都與 rate 相同,除了 last 可以更短。是否有必要將每個輸入(不僅僅是最後一個)都填充到海綿中以確保經過身份驗證的加密安全?

這僅僅是因為它包裹在 Absorb and Squeeze 周圍嗎?

SpongeWrap中幀位的用途是什麼?

是否有必要將每個輸入(不僅僅是最後一個)都填充到海綿中以確保經過身份驗證的加密安全?

是的。填充的目的是使每個可能的輸入都是唯一的。所以一個完整的塊必須產生與任何填充的非完整塊不同的位串。沒有辦法只填充不完整的塊,並且仍然讓它與所有完整的塊不同。

如果您不使用此類填充,則兩條不同的消息可能會導致相同的狀態。

SpongeWrap 中幀位的用途是什麼?

幀位的目的是域分離。引用pdf(4.1.5):

用於生成密鑰流塊的雙工(或等效地,海綿)輸入和用於生成標籤塊的輸入位於不同的域中。用於加密下一個塊的每個雙工響應都有一個以幀位 1 結尾的字元串作為輸入,而用於形成標籤的每個雙工響應都有一個以幀位 0 結尾的字元串作為輸入。

如果不是這種情況,則身份驗證標籤和“下一個塊”密鑰流可能相等。如果您知道消息最後一個塊的明文,這將允許您截斷消息並從密文中偽造身份驗證標籤的攻擊。因為幀位是獨立的,所以密文不能幫你偽造。

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