ARM 和 Intel CPU 上指令執行時間對數據的依賴性

Eric Biggers 是Adiantum 密碼的開發者之一,也是Linux 核心fscrypt 子系統的維護者,他提出了一組修補程式來阻止因英特爾處理器的一個功能而引起的安全問題,該功能不能保證不同處理資料的恆定執行時間。 從 Ice Lake 系列開始,這個問題就出現在英特爾處理器中。 ARM 處理器中也存在類似的問題。

指令的執行時間對這些指令中處理的資料的依賴性的存在被修補程式的作者視為處理器中的漏洞,因為這種行為不能保證系統中執行的加密操作的安全性。 加密演算法的許多實作都是為了確保資料不會影響指令的執行時間而設計的,違反這種行為可能會導致側通道攻擊的產生,這種攻擊會根據處理時間的分析來恢復資料。

潛在地,運行時資料依賴性也可用於發動攻擊以從用戶空間確定核心資料。 根據Eric Biggers 的說法,即使對於執行加法和異或運算的指令,以及專門的AES-NI 指令,默認情況下也不提供恆定的執行時間(未經測試證實的信息,根據其他數據,存在XNUMX 的延遲)向量乘法和位元計數期間的循環)。

為了停用此行為,Intel 和 ARM 提出了新標誌:ARM CPU 的 PSTATE 位元 DIT(資料獨立時序)和 Intel CPU 的 MSR 位元 DOITM(資料運算元獨立時序模式),以恆定的執行時間傳回舊行為。 Intel 和 ARM 建議根據關鍵程式碼的需求啟用保護,但實際上,關鍵運算可能發生在內核和使用者空間的任何位置,因此我們正在考慮始終為整個核心啟用 DOITM 和 DIT 模式。

對於 ARM 處理器,Linux 6.2 核心分支已經採用了改變核心行為的補丁,但這些補丁被認為是不夠的,因為它們只覆蓋了核心程式碼,並沒有改變使用者空間的行為。 對於英特爾處理器,是否包含保護仍處於審查階段。 此補丁對效能的影響尚未測量,但根據英特爾文檔,啟用DOITM 模式會降低效能(例如,透過停用某些最佳化,例如特定於資料的預先載入),並且在未來的處理器型號中,效能降低可能會加劇。

來源: opennet.ru

添加評論