Poly1305 是資訊理論上安全的 MAC 嗎?
我聽說有人說 Poly1305 身份驗證器是“核”MAC,即它在資訊理論上是安全的。閱讀本文後,我發現它基於 Wegman-Carter MAC,據說這是與一次性密碼密碼配對的自然身份驗證。
儘管 Poly1305 真的是一個資訊理論上安全的 MAC,這是真的嗎?這是論文的摘錄:
1 簡介
本文介紹並分析了 Poly1305-AES,這是一種適用於各種應用的最先進的密鑰消息驗證碼。
Poly1305-AES使用**16字節 AES密鑰k 、16字節附加密鑰r**和16字節隨機數*_* 本文的第 2 節介紹了 Poly1305-AES 的完整定義。
Poly1305-AES 有幾個有用的特性:
- **如果 AES 是安全的,則保證安全。**安全漏洞很小,即使是長期密鑰;攻擊者破解 Poly1305-AES 的唯一方法是破解 AES。例如,假設消息是最多 1024 字節的數據包;攻擊者看到在 Poly1305-AES 密鑰下經過身份驗證的2 64條消息;攻擊者嘗試了高達 2 75次偽造;並且攻擊者不能以高於 δ 的機率破壞 AES。然後,以至少 0.999999-δ 的機率,所有2 75個偽造品都被拒絕。
- **密碼可替換性。**如果 AES 出現任何問題,使用者可以從 Poly1305-AES 切換到 Poly1305-AnotherFunction,並獲得相同的安全保證。在 Poly1305-AES 的非 AES 部分投入的所有努力都可以重複使用;Poly1305-AES 的非 AES 部分不能被破壞。
所以看來 Poly1305 只有在 AES 安全的情況下才是安全的。所以理論上,如果我不喜歡 AES,我可以把它換成 ChaCha20 之類的東西(正如許多人所做的那樣,例如 SSH 和 TLS 1.3)。但是,身份驗證仍然僅與 ChaCha20 一樣安全,ChaCha20 本身在資訊理論上並不安全。那麼,如果我需要一個能夠在很長一段時間(100 多年)內保持安全甚至無限期地抵抗密碼分析的身份驗證標籤怎麼辦?
我理解 Poly1305 的重點是只要 nonce 每次都改變,就可以重複使用許多消息的密鑰。然而,假設一個假設的系統有許多由 HWRNG 生成的一次性填充,並且它們通過物理交換在兩方之間預先共享。每條消息的關鍵材料劃分如下:
- 92 字節密鑰,用於使用 XOR 加密 92 字節消息 $ \oplus $
- 16 字節 Poly1305 加密密鑰 $ k $ (以前是 AES 密鑰)
- 16 字節 Poly1305 附加密鑰 $ r $
- 16 字節 Poly1305 隨機數 $ n $
所以在這種情況下 $ k $ , $ r $ 和 $ n $ 每條發送的消息都是唯一且真正隨機的。因此,每條一次性加密和經過身份驗證的消息都會使用 140 個字節的真正隨機數據。現在假設這個構造創建了 Poly1305 標籤:
聚1305 $ _r $ ( $ m $ , AES $ _k $ ( $ n $ ))
AES可以嗎 **$ _k $ ( $ n $ )**部分被簡單地替換為 $ k $ $ \oplus $ $ n $ ? 換句話說,使用一次性密碼加密隨機數。這會在理論上無限期地保持安全嗎?
所以在這種情況下 $ k $ , $ r $ 和 $ n $ 每條發送的消息都是唯一且真正隨機的。
$$ … $$現在假設這個構造創建了 Poly1305 標籤: $$ \textsf{Poly1305}_r(m, \textsf{AES}_k(n)) $$
可以 $ \textsf{AES}_k(n) $ 部分被簡單地替換為 $ k \oplus n $ ?
是的,但它仍然是不必要的複雜。只要每個 128 位密鑰 $ k $ 是隨機的並且只使用一次,你可以省略nonce $ n $ 完全使用 $ \textsf{Poly1305}_r(m, k) $ 直接地。
事實上,Poly1305-AES 中 AES 加密的唯一目的是通過加密一系列 nonce 值來建構“偽 OTP”(即偽隨機位序列)。如果您已經有一個真正的一次性墊,則根本不需要此步驟,並且可以直接使用墊的 128 位段(當然,不得將其用於此目的或任何其他目的)作為Poly1305 函式的輸入。