一種有效應對側通道記憶體攻擊的新方法

安全頻道發表於2022-03-16

如今,共享計算裝置是一種非常普遍的行為,尤其是當使用者在雲端或移動裝置進行計算時。但是這種資源共享行為很可能會無意間洩露使用者的隱私資訊。由於同一臺計算機上執行的多個程式可能共享相同的記憶體資源,因此它們中存放的隱私資料(例如儲存在計算機記憶體中的加密金鑰或使用者密碼)可能會被惡意程式通過“記憶體時序(memory-timing)側通道攻擊(side-channel attacks)”竊取。

側通道記憶體攻擊目前在現實中並不常見,原因在於,這種攻擊通常具有高度的複雜性,不僅需要定製攻擊程式,還要對電訊號(electric signaling)的工作原理以及操縱模式非常瞭解。但是,研究人員發現,一些高階攻擊者已經開始利用該技術對高價值目標發起針對性攻擊。值得一提的是,北卡羅來納州立大學研究人員不久前正是通過側通道攻擊,實現了對同態加密技術的繞過。攻擊方僅通過監聽執行同態加密編碼操作的裝置功耗,就成功以明文形式提取了同態加密中的資料。這件事情也為行業敲響了警鐘,警示我們即便是下一代加密技術也同樣需要針對側通道攻擊的有效防護機制。

阻止這種攻擊的傳統方法是,一次只允許一個程式使用記憶體控制器,但這會大大降低計算速度。麻省理工學院的研究團隊目前成功設計出了一種新方法,該方法允許記憶體共享繼續存在,同時提供針對此類側通道攻擊的安全防護能力。這種新方法,將程式的記憶體請求“塑造”成預定義的模式,並混淆程式實際需要使用記憶體控制器的時間,從而擾亂攻擊者的視線。

在一個程式可以訪問記憶體控制器之前,它必須通過一個“請求塑造器”(request shaper)來“塑造”記憶體請求。這種“請求塑造器”使用圖形結構來處理請求並按照固定的時間表將它們傳送到記憶體控制器。這種型別的圖稱為有向無環圖(DAG),而這種創新安全方案稱為 DAGguise。

使用這種嚴格的時間表,有時DAGguise會將程式的請求延遲到下一次允許訪問記憶體(根據固定的時間表),或者有時如果程式不需要訪問記憶體,它會提交一個假請求排程間隔。總之,通過這種非常結構化的模式,使用者可以向攻擊者隱藏實際行為。

DAGguise會將程式的記憶體訪問請求表現為一個圖,其中每個請求都儲存在一個“節點”中,連線節點的“邊”是請求之間的時間依賴關係。(請求A必須在請求B之前完成。)節點之間的邊——每個請求之間的時間是固定的。程式可以在需要時向DAGguise提交記憶體請求,DAGguise將調整該請求的時間以始終確保安全。無論處理記憶體請求需要多長時間,攻擊者看到的都只是請求實際傳送到控制器的時間。

這種圖結構使記憶體控制器能夠動態共享。如果有許多程式試圖一次使用記憶體,DAGguise可以適應並相應地調整固定時間表,從而更有效地使用共享記憶體硬體,同時仍然保持安全性。研究人員稱,“我們的解決方案就是將受害者對記憶體控制器的訪問請求轉移到動態隨機存取儲存器(Dynamic Random Access Memory,簡稱DRAM),然後‘塑造’請求。這樣一來,無論攻擊者通過何種方式,都很難竊取到隱私資料。對此,我們進行了模擬驗證,結果顯示DAGguise這一方案非常有效。”

研究人員承認,DAGuise會對系統效能產生一定影響,但與其他安全解決方案相比,DAGguise 對計算裝置效能的影響大幅降低。當然,除了在實現更快計算的同時提供更好的安全性之外,該技術還可以應用於一系列針對共享計算資源的不同側通道攻擊。

來自 “ 安全牛 ”, 原文作者:aqniu;原文連結:https://www.aqniu.com/industry/81563.html,如有侵權,請聯絡管理員刪除。

相關文章