異構計算系統中的微架構側信道攻擊
異構計算系統是指存在多種不同架構、功能處理器的計算系統。在日常生活中,異構計算系統隨處可見,手機便是一個典型的異構計算系統。手機的SoC中一般都會包含CPU(中央處理器)和GPU(圖形處理器)。部分手機還會包含NPU等定制處理器來加速手機的某項功能,如華為的麒麟970中就加入了NPU,用于加速圖像識別等數據處理能力。另一方面,相較于普通的單CPU計算系統,異構計算系統帶來了新的安全隱患和風險。
蘋果M1芯片
微架構側信道攻擊是什么
側信道攻擊又稱側信道密碼分析,最早是由美國密碼學家P.C.Kocher于上個世紀九十年代末提出,用于針對密碼實現的物理攻擊方法。該方法主要利用密碼實現在執行過程中產生的側信息(如能量消耗、電磁輻射、運行時間等)來恢復密鑰。
相較于傳統側信道攻擊利用物理信息,微架構側信道攻擊利用CPU、內存等組件的實現特性,能夠獲取更細粒度、更準確的信息。同時攻擊更加隱蔽和高效,尤其適用于目前廣泛應用的云計算平臺場景。
微架構側信道攻擊已經成為了計算機體系結構中難以繞過的一個安全問題。由于側信道的產生的根本原因是有限資源的共享,而現代處理器中出于效率和成本的考慮,無法提供無限的資源或者完全的隔離機制,因此不能從根本上解決側信道問題。由于側信道攻擊并不直接接觸數據本身,這使得傳統的基于權限的訪問控制系統不能抵御側信道攻擊。近年來研究者針對現有的可信執行環境如Intel SGX[1]、Arm TrustZone[2]等,提出了多種側信道攻擊方式,完全破壞了受保護程序數據的機密性。
CPU中的側信道攻擊
目前CPU微架構中幾乎每個組件都被發現可被用于進行側信道攻擊。其中緩存(cache)側信道攻擊[3]是最常見的攻擊手法。由于CPU訪問內存的速度較慢,因此通過將程序常用的數據放在靠近CPU、速度更快的緩存中,能夠加速程序執行。利用這一特性,攻擊者通過測量內存數據的訪問速度快慢,來判斷該內存數據事先是否位于緩存中。以Flush-Reload攻擊方法為例,攻擊者通過Flush指令,將共享內存中的某個內存數據從緩存中驅逐;在受害者執行一段時間后,攻擊者再嘗試Reload該內存數據,通過指令執行速度的快慢,攻擊者能夠判斷該內存數據是否在緩存中,進而判斷受害者在執行過程中是否讀取了該數據,進而推測受害者的敏感信息。此外,攻擊者還可以利用微架構側信道攻擊建立隱蔽通道,實現跨權限的數據傳輸。在18年發現的Spectre攻擊[4]中,就利用了緩存側信道攻擊來建立隱蔽通道,將推測執行窗口中獲取到的數據傳遞出來。

CPU中的存儲層次
CPU中的分支預測功能也常被用于進行側信道攻擊[5]。當程序執行過程中發現后續的控制流依賴于某個值,而這個值位于內存中,因此CPU需要讀取內存后再進行判斷。然而,正如之前提到的,CPU訪問內存的速度遠遠慢于自身的執行速度,一般需要上百個時鐘周期,而在這個過程中,CPU只能處于空閑狀態,等待數據返回,從而大大降低CPU的利用效率。因此現代CPU中往往會預測一個可能的分支方向,在等待內存數據返回的過程中,先執行后續的指令,再根據分支判斷結果來保留或者丟棄執行內容。該過程也被稱為推測執行或者亂序執行。現代CPU中使用了大量的技術和芯片面積來優化分支預測的準確率。一般來說,CPU中的分支預測過程如圖3所示,預測的結果依賴于歷史的分支跳轉。

分支預測過程
攻擊者利用這一特點,通過在自身的內存空間中模仿受害者進程的分支結構,利用自身程序分支預測結果從而影響受害者進程的分支跳轉。分支預測功能雖然大大加快了程序執行的效率,但會導致程序產生了在設計者設想之外的控制流,從而帶來了諸多隱患。Meltdown[7]、Spectre[4]、Foreshadow[8]等攻擊都是利用了亂序執行。

Meltdown和Spectre
超線程技術[9]也常被用于進行側信道攻擊。超線程技術能夠在一個核心上同時運行兩個執行上下文,從而提高了CPU核心的利用率。然而,這也產生了新的側信道攻擊方式。由于超線程技術并沒有增加核心中的計算單元數量,因此核心中的2個執行上下文同時共享核心中的組件(如ALU),因此可以通過利用組件競爭來進行側信道攻擊。另一方面,如果攻擊者能夠控制受害進程和攻擊進程在同一個核心上,那么就能夠在避免中斷用戶程序的情況下,實時地進行攻擊。

Intel 超線程技術
除去CPU組件中側信道問題之外,操作系統中的缺頁異常也被用于進行側信道攻擊[10]。由于計算機的內存大小有限,因此操作系統會對內存頁進行換入和換出操作。當程序需要訪問的內存頁并未在內存中時,會觸發缺頁異常,由操作系統將硬盤上的內存頁數據讀取到內存中。攻擊者可利用程序的缺頁異常對受SGX保護的程序進行側信道攻擊。攻擊者通過將程序運行所能使用的物理內存大小限制為一個內存頁大小,然后觀察程序運行過程中的缺頁序列,從而獲取程序的控制流,進而推導出程序輸入中的敏感信息。
GPU中的側信道攻擊
目前最為常見的異構計算系統為CPU-GPU計算系統。在手機中,在一個SoC中包含CPU、GPU,二者通過核間的高速通道連接,并且一般共享同一個LLC和內存;在PC中,CPU和GPU之間一般都是通過PCIe通道進行連接,GPU擁有獨立的緩存和內存。
相較于CPU,GPU中現有的側信道攻擊相對較少,其原因一方面是因為研究關注度相對較低,另一方面是因為GPU的體系結構與CPU存在較大差異,許多CPU中的側信道攻擊方法在GPU中并不適用。比如,GPU中存在大量的核心,不同的上下文一般不會共享一個核心,并且同時會有多個線程同時運行,使得緩存側信道攻擊的噪聲過大、效果差。不過,GPU也帶來了新的側信道攻擊方法。
在PC中,由于CPU和GPU之間通過PCIe通道進行連接,GPU上的多個上下文都需要在同一條PCIe通道中進行數據傳輸,因此攻擊者能夠通過PCIe中的擁塞情況進行側信道攻擊[11]。攻擊者通過測量自身程序的數據傳輸速度來推測受害者的數據傳輸情況,進而推測受害程序的行為。

利用PCIe通道擁塞的側信道攻擊
這種利用擁塞的側信道攻擊也同樣可被用于GPU內部[12]。在Nvidia GPU中,計算單元會在物理上被劃分為不同的組,同組之間共享輸入輸出的管道。因此,攻擊者能夠利用管道中的擁塞建立隱蔽通道,接收方根據指令執行的速度快慢來區分0和1。

利用GPU內部管道擁塞的
側信道攻擊[12]
相較于CPU,GPU中的核心數量更多,數據處理過程會由多個核心并行處理,因此GPU中需要額外的功能單元進行線程調度、指令優化等,而這些特殊組件也帶來了新的側信道問題。在GPU中,不同線程可能會執行同一條指令流,因此不同線程會同時進行內存訪問。而內存讀寫的最小單位為行,一個行的大小一般為64或128 Byte,各個線程讀取訪問的數據可能位于同一行中,最終導致重復讀取同一行。為了對這種內存訪問行為進行優化,GPU中的內存聚合單元會將訪問同一個行的指令聚合,壓縮內存訪問指令的數量,提高程序執行的速度,而執行速度的差異便產生了側信道信息。攻擊者通過觀察受害程序執行的速度,來推測受害程序在執行過程中訪問的內存地址是否在同一行中[13]。如AES加密算法中通過查找表來實現快速的非線性變換,而查找過程中的索引由明文和密鑰共同決定,因此攻擊者通過測量加密算法執行的速度,能夠推測訪問的索引是否相近,并結合明文推測密鑰。

GPU 內存訪問聚合
此外,GPU中的可用顯存大小、頻率、功耗等也可被用于進行側信道攻擊。攻擊者可以利用GPU提供的性能計數器來獲取GPU運行過程中的狀態信息[14]。比如,現代瀏覽器在渲染網頁時會使用GPU進行物理加速,于是攻擊者利用不同網頁渲染網頁所需要的顯存變化,來判斷用戶正在訪問的網頁。

不同網頁渲染過程的內存請求
最新的一項研究[15]發現,在智能手機的鍵盤輸入的過程中由于動畫的不同,GPU在渲染時的性能計數器會發生變化,因此,攻擊者能夠通過監控GPU的性能計數器來判斷用戶的輸入內容。

渲染不同的按鍵動畫導致的
GPU性能計數器變化[15]
FPGA中的側信道攻擊
相較于GPU,其他的硬件加速器的應用范圍相對較小,其中較為常見的一種硬件加速器為FPGA(Field-Programmable Gate Arrays)。FPGA是一種可定制的半定制電路,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。FPGA常被用于電路設計驗證,以及作為硬件加速器使用。例如,通過FPGA加速深度學習的計算過程。
由于電壓的波動會影響FPGA中邏輯計算模式的運行速度,因此攻擊者可以通過在FPGA中通過功耗傳感器檢測電路的電壓變化,并利用電壓的波動進行側信道攻擊,竊取機密信息。攻擊者可以在FPGA中不同槽中部署環形振蕩器,由于不同的電壓會顯著影響環形振蕩器的頻率,因此攻擊者可以將該電路的輸出與T觸發器相連,從而獲取環形振蕩器的頻率。
由于FPGA中執行的不同操作都會影響功耗傳感器的數值,因此攻擊者可以通過追蹤功耗來推導FPGA中的操作。以攻擊CNN為例[16],CNN中的全連接層、卷積層和池化層會在FPGA的功耗上產生明顯區別,因此攻擊者能夠通過功耗推測受害者的CNN模型結構。

通過多個環形振蕩器獲取功耗信息
總 結
隨著5G、人工智能、高性能大數據分析等應用的蓬勃發展,數據體量的急劇膨脹,數據中心對計算能力的需求也日益龐大,遠超CPU處理器的能力所及。由CPU、GPU、FPGA等不同類型的計算設備組成的異構計算系統,具備強大計算性能、靈活可配置等特征,成為大規模高性能數據計算的趨勢。亞馬遜、阿里云、騰訊云等公有云服務提供商相繼推出了相應的異構計算服務。同時,在云數據中心提供大規模、高效能的數據計算服務的同時,其數據外包計算、計算平臺不可信等特征,使得數據安全問題相比傳統計算模式更加嚴重。雖然,Intel、ARM等芯片提供商提出了各種可信執行環境方案來保護數據安全,但側信道攻擊能夠繞過安全保護,竊取敏感數據,已經成為了云環境的一大安全威脅。
參考文獻:
- Intel. Intel SGX. https://www.intel.com/content/www/us/en/developer/tools/software-guard-extensions/overview.html.
- Arm.TrustZone. https://www.arm.com/technologies/trustzone-for-cortex-m.
- Lou Xiaoxuan, Zhang Tianwei, Jiang Jun and Zhang Yiqian. 2021. A Survey of Microarchitectural Side-channel Vulnerabilities, Attacks, and Defenses in Cryptography. ACM Computing Surveys.
- Kocher Paul, Horn Jann, Fogh Anders, Genkin Daniel and Gruss Daniel. 2019. Spectre Attacks: Exploiting Speculative Execution. 2019 IEEE Symposium on Security and Privacy.
- Lee Sangho, Shih Ming-Wei, Gera Prasun, Kim Taesoo, Kim Hyesoon and Peinado Marcus. 2017. Inferring fine-grained control flow inside SGX enclaves with branch shadowing. 26th USENIX Security Symposium.
- Barberis Enrico, Frigo Pietro, Muench Marius, Bos Herbert and Giuffrida Cristiano. 2022. Branch History Injection: On the Effectiveness of Hardware Mitigations Against Cross-Privilege Spectre-v2 Attacks. 31th USENIX Security Symposium.
- Lipp Moritz, Schwarz Michael, Gruss Daniel, Prescher Thomas and Haas Werner. 2018. Meltdown: Reading Kernel Memory from User Space. 27th USENIX Security Symposium.
- Bulck Jo Van, Minkin Marina, Weisse Ofir, Genkin Daniel and Kasikci Baris. 2018. Foreshadow: Extracting the Keys to the Intel SGX Kingdom with Transient Out-of-Order Execution. 27th USENIX Security Symposium.
- Intel. What is Hyper-threading . https://www.intel.com/content/www/us/en/gaming/r-esources/hyper-threading.html
- Xu Yuanzhong, Cui Weidong and Peinado Marcus. 2015. Controlled-Channel Attacks: Deterministic Side Channels for Untrusted Operating Systems. 2015 IEEE Symposium on Security and Privacy.
- Tan Mingtian, Wan Junpeng, Zhou Zhe and Li Zhou. 2021. Invisible Probe: Timing Attacks with PCIe Congestion Side-channel. 2021 IEEE Symposium on Security and Privacy (SP).
- Ahn Jaeguk, Kim Jiho, Kasan Hans, Delshadtehrani Leila, Song Wonjun, Joshi Ajay and Kim John. 2021. Network-on-Chip Microarchitecture-based Covert Channel in GPUs. 54th Annual IEEE/ACM International Symposium on Microarchitecture.
- Jiang Zhenhang, Fei Yunsi and Kaeli David. 2016. A complete key recovery timing attack on a GPU. 2016 IEEE International Symposium on High Performance Computer Architecture.
- Naghibijouybari Hoda, Neupane Ajaya, Qian Zhiyun and Abu-Ghazaleh Nael. 2018. Rendered Insecure: GPU Side Channel Attacks are Practical. 2018 ACM SIGSAC Conference on Computer and Communications Security.
- Yang Boyuan, Chen Ruirong, Huang Kai, Yang Jun and Gao Wei. 2022. Eavesdropping user credentials via GPU side channels on smartphones. 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems.
- Zhang Yicheng, Yasaei Rozhin, Chen Hao, Li Zhou and Faruque Mohammad Abdullah Al. 2021. Stealing Neural Network Structure Through Remote FPGA Side-Channel Analysis. IEEE Transactions on Information Forensics and Security.