Aes
軟體中HMAC的側通道安全
假設我們有一個帶有支持 AES 的對稱協處理器的處理器。但是,此處理器不為 SHA-1 或 SHA-256 等雜湊算法提供協處理器支持。
我有以下密切相關的問題:
- 基於軟體中的雜湊實現的 HMAC 實現——沒有明確保護免受側通道攻擊——是否容易受到側通道攻擊?
- 如果是這樣,是否有理由說明這種攻擊比例如在 CBC 模式下針對對稱密碼的側通道攻擊更強或更弱?
- 是否可以檢索用於加密 HMAC 算法的密鑰?
- 最後,如果硬體中的 AES 實現可用,那麼選擇 AES-CMAC 會更安全嗎?
假設認證標籤值的比較不洩漏資訊。可以考慮 DPA 和定時攻擊。
我問的原因是因為雜湊算法通常沒有明確保護免受側通道攻擊。在這種情況下仍然經常使用 HMAC。
我是根據評論中連結的這篇論文(pdf)以及它引用或被引用的一些相關論文來回答的。我不知道對 HMAC 的更現實的攻擊。
它假設一個 DPA 側通道洩漏了當一個新值被讀入 CPU 寄存器(或某些論文中的另一條指令)時翻轉的位數。即它洩露了舊值和新值之間的漢明距離。這允許對 HMAC 進行直接密鑰恢復攻擊,因為 HMAC 使用相距已知距離的內部密鑰和外部密鑰這一事實變得更加容易。
如果您假設這樣一個側通道,那麼您可以在電腦上安全地做很多事情。事實上,如果您仍然必須從記憶體中載入密鑰才能使用它,那麼 HMAC 的典型硬體實現幾乎同樣容易受到攻擊。
- 基於軟體中的雜湊實現的 HMAC 實現——沒有明確保護免受側通道攻擊——是否容易受到側通道攻擊?
我不認為這是軟體與硬體甚至側通道保護的問題。如果存在如上所述的側通道,那麼您可以在 CPU 上安全地做很多事情。當然,必須重新考慮大多數具有秘密值的傳統數據處理。
- 如果是這樣,是否有理由說明這種攻擊比例如在 CBC 模式下針對對稱密碼的側通道攻擊更強或更弱?
更強,從某種意義上說,它是一種密鑰恢復攻擊,與針對 CBC 的填充預言攻擊不同。但假設也更強大。
- 是否可以檢索用於加密 HMAC 算法的密鑰?
是的,假設。
- 最後,如果硬體中的 AES 實現可用,那麼選擇 AES-CMAC 會更安全嗎?
不必要。例如,使用 AES-NI 指令,您必須將 AES 密鑰載入到 XMM 寄存器中,這有可能以相同的方式允許密鑰恢復攻擊。
如果您有一個也儲存密鑰的專用加密晶片組,那麼它可能是另一回事。當然,沒有先驗理由假設它也沒有邊通道。你需要把鑰匙安全地放進去。