Hmac
HMAC - “在途”是什麼意思
我經常讀到 MAC 提供了“傳輸中”有效載荷的真實性證明。
我想知道“傳輸中”是否有任何特殊定義會阻止它在很長一段時間內保持可靠 - 例如證明數據不是簡單地被儲存介質損壞。
如果意思是“通過網路,攻擊者只有很短的時間來成功修改有效負載和 MAC”,那麼這意味著長期儲存有效負載和 MAC 以在以後提供真實性是不安全的日期。
我猜的意思是“端到端”的真實性,比如在愛麗絲和鮑勃之間獨立於時間。
這可能是一個愚蠢的問題,簡單歸結為 MAC 是否安全,那麼這將取決於特定的 HMAC、GMAC 或曾經使用過的東西。
在安全傳輸協議中,身份驗證標籤(即 MAC 值)通常使用會話密鑰計算。此會話密鑰與發送的數據無關,它僅用於保護傳輸協議中的記錄。因此,在處理完記錄後,標籤被剝離以檢索發送的實際數據。此外,在會話結束後,會話密鑰被銷毀 - 它通常在應用程序級別不可用。
因此,儘管身份驗證標籤確實在數據“傳輸中”時保護了數據,但之後它不提供任何保護。這並不是因為 MAC 算法不夠強大,只是身份驗證標籤和會話密鑰不再可用於驗證完整性/真實性(如上所述)。HMAC 實際上是最可靠的方案之一。
以各種 TLS 庫為例。我不知道 TLS 記錄或會話密鑰在哪里傳遞到應用程序層。無論如何,TLS 始終使用身份驗證標籤保護數據。
為了保護傳輸協議之外的數據,需要在應用層協議中添加保護。例如,可以使用加密消息語法發送封裝消息。為此,需要長期密鑰。當然可以使用 MAC 為應用級消息添加完整性以進行長期儲存。
不過簽名更常見。這是因為 MAC 需要共享密鑰;當涉及到不同方之間的密鑰管理時,對稱密碼學很麻煩。
因為現在添加一個tl;dr似乎很常見:與其說是 MAC 的屬性,不如 說是它 在協議中的使用方式,使它只是保護傳輸中的消息。