[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]43 为AES 对抗侧信道攻击的防御
這是一系列博客文章中最新的一篇,該文章列舉了“每個博士生在做密碼學時應該知道的52件事”:一系列問題的匯編是為了讓博士生們在第一年結束時知道些什么。
為AES描述一些基礎的(可能無效)的對抗側信道攻擊的防御
側信道防御:為什么
對于一個現代的嚴肅的密碼學方案,我們一般需要某種形式的安全證明。在AES中,我們認為如果攻擊者不知道密鑰,那么它就是一個隨機排列。然而如果攻擊者有側信道信息,這可能不再安全。因此,我們能做什么防御它呢?理想的,我們可以創建一個完全不受側信道攻擊影響的實現,然而,然而,這實際上意味著實現必須完全隔離,絕對沒有輸出流——這使得它相當沒有意義!
也許我們可以確保,無論我們做什么,AES實現是否通過側信道泄漏信息都無關緊要?這就引出了泄漏彈性密碼學(leakage resilient cryptography)領域,這確實是一個非常強的安全需求。在這些條件下(這種情況很少)安全的方案往往比那些避免(/忽略)問題的方案效率低得多。由于在設計中必須始終進行權衡,因此在實踐中,我們傾向于使用假定AES不泄漏任何信息的方案,并將它們與包含防御一些更簡單的側通道攻擊的實現相結合。這樣做的目的是將攻擊成本比安全信息的價值更高,這樣(即使他們可以做到)就沒有敵人會攻擊這個系統,因為它不再可行了。
一些基本的防御
因此,考慮到這一點,讓我們考慮一些基本的防御措施,以抵御一些不太復雜的側通道攻擊。正如問題中所指出的,這些技術可能很容易被忽略,所以請將本文視為解釋一般概念,而不是提供任何明智的建議!
時間攻擊
弱點:
一些實現的運行時間取決于它們的輸入。因此,通過通過觀察系統需要多長時間來響應,可以了解到一些關于鍵/輸入的信息。
防御:
常數時間實現。就像標題所說的,最好的對抗時間防御的方法就是確保實現需要花費常數時間運行,同時如今的大多數實現都是常數時間的。這可能在硬件上不是很難,但是在軟件上卻很難,因為微代碼(內部處理器的程序)通常是商業機密。
功率分析(DPA,SPA)
弱點:
一些實現的功耗與關鍵材料相關,這通常是由于存儲值時的漢明距離。更多信息,請閱讀兩周前的博客。
防御1:
掩碼不是直接使用AES Sbox,而是將掩碼應用于輸入值,并在掩碼Sbox中查找它(實際上,Sbox的值被重新排序以適應掩碼)。然后,盡管攻擊者可能能夠檢測到某些內部變量之間的關聯,但這些變量都是隱藏的,并且不像以前那樣(直接)對應于關鍵材料。更復雜的掩蔽方案實例化起來會更復雜,但是會導致更好的攻擊抵抗力。
防御2:
在進行功率分析攻擊時,攻擊者使用他們知道AES方案內部結構的事實。如果我們在我們的實現中打亂s盒的順序(通過一些秘密排列),對手將不知道他們的讀數如何與內部關鍵材料相對應。另一種變體是故意使用非決定論,允許處理器自行對某些指令集合重新排序。
緩存流
弱點:
如果適當的單元已經在處理器緩存中,那么使用查找表(例如SBox)的mplem朝向的效率將會提高或降低。通過將大部分查找表推出緩存,攻擊者可以觀察是否調用了適當的單元格,從而泄漏信息。如果可以觀察到加載緩存的成本,也可以觀察到定時攻擊或功率分析。
防御:
不要對秘密數據使用查詢表!這個列表中最簡單的防御方法——如果您不想泄漏使用了哪些查找條目的信息,那么就不要使用查找表。對于AES,這是合理的,因為AES Sbox實際上可以作為輸入字節上的一個簡單函數來計算。這對于(例如)沒有這種結構的DES Sbox就不太實用。
總結
以上是生活随笔為你收集整理的[密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]43 为AES 对抗侧信道攻击的防御的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [密码学基础][每个信息安全博士生应该知
- 下一篇: [Leetcode][第117题][JA