Encryption

簽名然後加密是否需要 MAC?

  • March 8, 2018

考慮一個使用公鑰密碼術加密和簽名的消息的場景。

使用非對稱加密時,如果消息很大(混合加密),您最終也會使用對稱加密,這就提出了一個問題:是否需要 MAC?

我知道在使用 Encrypt-then-Sign 時不使用 MAC 會導致漏洞,例如“在火山之唇上跳舞:Apple iMessage 上的選擇密文攻擊”一文中描述的漏洞。

但是,如果您使用 Sign-then-Encrypt,那麼在不使用 MAC 時是否存在任何已知的攻擊?

與所有事情一樣,答案是“視情況而定”。

如果您使用的是沒有填充的塊模式(例如 CTR 或 CTS),那麼您可能沒問題。密文長度是明文長度,您的雜湊時間是已知長度的函式,並且您在篡改時返回“錯誤”。

如果您使用帶填充的塊模式(CBC、ECB 等),那麼您就不太好了。通過使用StE(或MtE),接收者必須在知道它是否是被篡改的消息之前處理填充。所以假設我是一個壞演員,我在途中篡改了你的資訊。我在需要篡改的地方進行篡改以發起填充攻擊並觀察結果:

  • 如果你回复“填充失敗”,那麼你就是一個真正的填充預言機,我會很高興並很快攻擊你。
  • 如果您有時在“明顯”少於其他人的時間內回复“錯誤”,那麼您在開始散列之前檢查填充,並且您有一個嘈雜的基於時間的填充預言。我傻笑著攻擊你。
  • 如果您幾乎總是以相同的速度回复“錯誤”,但速度比其他人慢,那麼我已經達到了明文解釋的填充長度和摘要的填充長度之間的邊界條件。你有一個竊竊私語的神諭,無論如何我都會抱怨和攻擊你。完成後我會啟動一個殭屍網路並對你進行 DDoS 攻擊,因為你毫無意義地惹惱了我。

沒有任何情況可以讓您在線上場景中獲勝。

請注意,此答案並不關心您是否進行了非對稱簽名、MAC 或只是一個簡單的摘要。您通過輔助(或直接)渠道處理了不受信任的數據和洩露的資訊。

在離線場景中,預言機攻擊的空間不大,因此您可以可靠地檢測到儲存層中引發的錯誤。胡扎?

填充塊密碼模式的正確答案始終是 EtM。這樣,每個篡改都會在同一時間間隔內被拒絕,現在攻擊者只能通過暴力破解獲得成功(如果您的 MAC 在 128+ 位空間中,這是相當不可能的)。


與 Apple 問題相關:非對稱簽名有效的消息驗證碼(有些人保留“MAC”以排除非對稱簽名)。這個問題也與我是否需要使用帶有非對稱加密的 MAC 相關?, 是當您沒有與 WHO 關聯時才允許簽署特定消息。使用 HMAC/etc 僅通過強制接收者先驗地知道將使用什麼密鑰來改變等式。綁定預期簽名者的公鑰先驗地解決了同樣的問題。

引用自:https://crypto.stackexchange.com/questions/56255