Aes

AES 定時攻擊

  • November 30, 2012

我只是對密碼學感興趣,所以請不要指望我是專家。;) 我最近閱讀了有關 AES 記憶體定時攻擊的文章,發現它非常有趣。我閱讀了 Daniel Bernstein 的文章Cache-timing Attacks on AES,但我似乎並不了解所有內容。

  1. 這與“現實生活”網路應用程序的相關性如何?據我了解,測量必須非常精確才能洩漏資訊。網路(甚至 LAN 網路)是否足夠快?(作者在伺服器上測量時間,然後發送給客戶端。)
  2. 作者用很長的篇幅介紹瞭如何防止作業系統中斷 AES 計算。但這如何洩露任何資訊?是的,計算比平時花費更多時間,但它不依賴於輸入?
  3. 假設這實際上是網路應用程序的一個問題。在加密之後和通過網路發送任何數據之前等待()到一個恆定的時間就足夠了嗎?

是的,定時攻擊與加密的現實世界實現相關。是的,正如那篇論文所展示的,這些攻擊可以在現實生活中進行:真實網路速度足以允許這些攻擊。

同樣重要的是要了解某些網路服務確實提供了時間戳,這些時間戳會洩露有關操作在伺服器上花費了多長時間的資訊。例如,一些 TCP 堆棧會自動為每個發送的數據包添加高精度時間戳,並且一些應用程序可能出於自身原因在其數據包中添加時間戳。這進一步增加了風險。如果我們希望 AES 成為一種通用加密算法,對於基本上所有合理的用途都是安全的(我們確實如此),那麼這是消除這種攻擊方法的通用防禦的額外動力。

有很多防禦措施。最好的防禦是確保實現是恆定的時間:它所花費的時間與密鑰的值無關。您可能還想阻止基於記憶體的攻擊,並確保讀/寫的記憶體地址序列是恆定的(與鍵的值無關)。

延遲到固定時間(最壞情況下的執行時間)有一些問題。考慮到可能導致執行需要很長時間的各種方式(例如,記憶體未命中、頁面錯誤、被作業系統搶占等等),在實踐中很難估計最壞情況的執行時間。如果您進行非常保守的估計,那麼估計將是一個很長的時間,並且性能將受到極大的影響。如果你不這樣做,那麼實際時間可能會超過你的恆定時間,然後你就無法恢復。因此,雖然這確實是一個需要考慮的可能的解決方案策略,但魔鬼在細節中,我認為這可能不是最有希望的策略:在大多數情況下,它的問題會使它在實踐中沒有吸引力。

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