Authenticated-Encryption
SpongeWrap 無填充和框架位
假設所有輸入的長度都與 rate 相同,除了 last 可以更短。是否有必要將每個輸入(不僅僅是最後一個)都填充到海綿中以確保經過身份驗證的加密安全?
這僅僅是因為它包裹在 Absorb and Squeeze 周圍嗎?
SpongeWrap中幀位的用途是什麼?
是否有必要將每個輸入(不僅僅是最後一個)都填充到海綿中以確保經過身份驗證的加密安全?
是的。填充的目的是使每個可能的輸入都是唯一的。所以一個完整的塊必須產生與任何填充的非完整塊不同的位串。沒有辦法只填充不完整的塊,並且仍然讓它與所有完整的塊不同。
如果您不使用此類填充,則兩條不同的消息可能會導致相同的狀態。
SpongeWrap 中幀位的用途是什麼?
幀位的目的是域分離。引用pdf(4.1.5):
用於生成密鑰流塊的雙工(或等效地,海綿)輸入和用於生成標籤塊的輸入位於不同的域中。用於加密下一個塊的每個雙工響應都有一個以幀位 1 結尾的字元串作為輸入,而用於形成標籤的每個雙工響應都有一個以幀位 0 結尾的字元串作為輸入。
如果不是這種情況,則身份驗證標籤和“下一個塊”密鑰流可能相等。如果您知道消息最後一個塊的明文,這將允許您截斷消息並從密文中偽造身份驗證標籤的攻擊。因為幀位是獨立的,所以密文不能幫你偽造。