MAC的完美否認
概述
One-Time Pad 經常被忽視的一項功能是其完美的否認性。即,如果 Alice 向 Bob 發送了一條 Eve 看到的消息,那麼如果 Eve 後來帶著密文去找 Alice 並試圖強迫 Alice 公開她的密鑰 Alice 可以“製作”一個密鑰,而 Eve 不能證明密鑰 Alice提供的是不是真正的鑰匙。
OTP 的一個缺點是它的延展性。所以一個常見的建議是附加一個 MAC,這樣 Bob 就可以看到消息是否被篡改。
我很好奇是否有可能構造一個 MAC,這樣如果 Eve 試圖從 Alice 那裡檢索密鑰,Alice 可以為 MAC“製作”一個密鑰,而 Eve 無法證明那是真正的密鑰。即給定一個明文和MAC Alice 可以在多項式時間內構造一個看起來真實的“假”密鑰。例如,HMAC 將不滿足此屬性,因為否則它很容易受到原像攻擊。
這是對 MAC 的完美否認的一個很好的定義嗎?
應用
- 實際上沒有,因為 OTP 是不切實際的。
- 如果 Alice 和 Bob 在匿名網路上(例如 TOR),那麼 Eve 無法證明是誰發送了消息,但 Bob 可以確認它是從 Alice 發送的,以及它是否被篡改
- 如果 Alice 在公共場所(如論壇、區塊鍊或公共公告板)發布此消息,沒有人可以證明 Alice 發布了它(假設她是匿名發布的),但 Bob 可以確認它是從 Alice 發送的,以及它是否被篡改
- 你能想到其他應用嗎?
當您使用一次性密碼本加密通用雜湊時,Carter-Wegman 式 MAC 可讓您輕鬆否認。您可以為您的虛假消息計算一個雜湊值並相應地選擇密鑰,就像您使用用於加密消息內容的一次性密碼本一樣。
這實際上對程序員來說是廣泛使用的:NaCl使用
crypto_onetimeauth
Poly1305(一種多項式評估 MAC),單次使用密鑰的後半部分用作一次性鍵盤。要為另一條消息獲得相同的 MAC 值,您只需計算 MAC,然後修改填充部分以匹配您的目標。然而,並不是 Poly1305 的所有用途都能為您提供完美的推諉。密鑰或填充來自 AES (Poly1305-AES) 或其他密碼(例如
crypto_secretbox
)的那些可能不會,因為您無法在不影響消息解密或其他消息的身份驗證的情況下自由選擇它的值。
如果你的 MAC 然後加密,任何 MAC 都可以工作。如果 MAC 是通過為 MAC 製作密鑰而使用一次性密碼加密的,您可以將其替換為 MAC 以用於製作的消息。然而,試圖破壞消息的攻擊者需要以一致的方式更改消息的兩個部分,如果 MAC 是安全的,這被認為是困難的。