了解 MAC 以及為什麼要發送明文
假設 Alice 和 Bob 都有一個對稱的密鑰,我們稱之為ķ $ k $ .
他們同意加密雜湊函式,我們稱之為H一個小號H $ \mathsf{HASH} $ .
現在 Alice 想要發送一條經過身份驗證的消息。
她發(米sG∥H一個小號Hķ(米sG)) $ \left(\mathsf{msg}\parallel\mathsf{HASH}_\mathsf{k}(\mathsf{msg})\right) $ 給鮑勃。Bob 從米sG $ \mathsf{msg} $ 並檢查它是否等於他從 Alice 那裡收到的雜湊值。
我的問題是:
當愛麗絲發送(米sG∥H一個小號Hķ(米sG)) $ \left(\mathsf{msg}\parallel\mathsf{HASH}_\mathsf{k}(\mathsf{msg})\right) $ ,Eve,網路中的竊聽者,看到這個數據包是明文的,這會破壞機密性嗎?
如何保護機密?
我的猜測是:整個MAC認證(米sG∥H一個小號Hķ(米sG)) $ \left(\mathsf{msg}\parallel\mathsf{HASH}_\mathsf{k}(\mathsf{msg})\right) $ 被包裹在某種加密函式中?
MAC 用於確保兩個屬性,真的:消息沒有被更改,消息確實是由 Alice 而不是 Eve 發送的。如果 MAC 是安全的,則 Eve 無法更改消息並為修改後的消息計算有效的 MAC。Eve可以讀取消息,但在這種情況下,我們只保護消息不被修改,並且我們想知道它來自 Alice(因為 Bob 認為只有 Alice 擁有 MAC 的密鑰,所以除了他自己之外,唯一的能夠生成和檢查 MAC)。如果速度(避免加密成本)和真實性是您的主要關注點,例如在警報系統中,您不希望警報消息被攻擊者修改,但您不關心,則可能會出現這種僅 MAC 網路它是私人的。
如果需要隱私,可以將其與另一個密碼原語結合起來。最常見的做法是加密數據,然後在密文上計算 MAC 並發送兩者(EncryptThenMAC),這也是可能的,但可能不太安全:加密明文及其 MAC 並發送結果密文(MacThenEncrypt),或計算密文明文,並將密文與明文的 MAC 一起發送。(EncryptAndMac) 這可能會洩露一些資訊。但是這三個都完成了。或者使用塊密碼的認證加密模式,如 GCM 或 OCB 模式。這些模式大多遵循 EncryptThanMac 範式,因為它具有更好的安全性證明。
MAC 只對消息進行身份驗證而不是隱藏它。所以消息是否以明文形式發送無關緊要,只要它不能未經檢測就被修改即可。攻擊者可以觀察消息,但不能修改它,然後計算一個有效的 MAC(假設給定的 MAC 是安全的),因為它不知道密鑰。
========================