Authentication
什麼是 mac-and-continue?
我在這裡看到了 Keccak 團隊在一篇論文中提到的術語,這裡的 Adam Langley在談論正確驗證流密碼時提到了這個術語。
它實際上是什麼意思,它是如何工作的?在加密和認證流的情況下它有什麼優勢?
看起來您連結的第一篇論文暗示了解釋。
據我所知,這個想法與“中間標籤”相同,即你有一個密碼實例,你處理所有數據到某個點,然後創建一個 MAC 標籤,將其插入數據流供以後驗證並繼續使用相同的實例來處理更多數據。論文說:
通過適當的域分隔填充,安全證明允許海綿狀態用於任意數量的連續認證消息(“MAC-and-Continue”),而無需序列號和重新加密。
那麼為什麼要這樣做呢?
TL;DR:對於程序員和資料結構設計者來說,這是一個“不錯的功能”。
嚴格來說,在您完全驗證整個消息的完整性之前,您無法確定解密消息的安全性。這意味著如果您的消息是 1MB,您必須對整個 1MB進行身份驗證和解密在你的加密實現之前的消息應該傳遞給應用程序。在通常的模式下,標籤標誌著消息的結束,這意味著您必須可能重新初始化實例並擔心新的 nonce 應該是什麼。“Mac-and-Continue”簡化了這一點,您可以在 1MB 塊中的幾乎任何位置插入一個標籤,然後對該標籤的所有數據進行身份驗證,這意味著它可以比預期更快地傳遞給應用程序。這有助於減少緩衝區大小,減少延遲(因為在能夠傳遞它之前您需要處理的東西更少)並且它消除瞭如果您必須手動設計具有塊的模式(這意味著定義隨機數,保護反對重新排序攻擊和重新初始化你的模式對象)。