• 晶片資安第一站

矽前驗證旁通道安全性(二):時序攻擊概述

時序攻擊利用了時間的細微差異,而這些差異可能是來自於某些能洩漏關鍵訊息的細節所驅動。西門子 EDA 工程的資深總監 Raik Brinkmann 提到,「建立在暫態執行攻擊的新型漏洞,如 Spectre 跟 Meltdown,已獲得了眾多關注。因為它們不需要對目標系統擁有實體存取路徑,因此對於當代計算系統安全性來說,這類攻擊成為真正的威脅。」

代碼執行流程,快取和匯流排競爭都是在這種情況下,有可能會發生的案例。在第一種情況下,不同的代碼軌跡可能需要不同的時間來完成。如果有人對於該代碼有些了解(並非不可能,考慮到大量普及的開源原始碼),那麼觀察時間數據則有辦法提供一些關於該代碼正在處理的數據的線索。

Oberg 說,「很典型的例子是,假設你有一個加密金鑰,而且你正在執行 RSA 加密演算法,根據你如何實行它,它會在關鍵位元上進行一個數據依賴的計算。它有可能是平方或是乘法,還有一個根據關鍵位元設置的假設條件運算式。如果它演算表現不佳,很可能會依照金鑰的值而產生了時間延遲,而駭客就有辦法利用這個來確認你是用哪個金鑰。要是你在大量的運算上都這樣做,基本上你就有辦法弄清楚密鑰是什麼。」

這主要是由運行的軟體來驅動的,而不是硬體本身,所以矽晶片認證可能不適用於這樣的情況。

相較之下,監控快取變成是許多知名攻擊方式的其中一環。在接收到請求的時候,執行程式所需的數據如果沒有存在於快取之中,快存就會錯過這個執行,而數據就必須從記憶體中存取。這比一般快取讀取花上更長的時間,從而提供數據流的相關資訊。

透過快存進行的攻擊可能是很難察覺並複雜的。Oberg 解釋道,「快存的時序攻擊由攻擊者揭開序幕,迫使受害者的數據強行進入快取標籤裡,接著再透過快取命中跟沒命中的時間差異將該數據外洩。這個快取標籤跟內存記憶體的位置有關,指引哪個快取要對應到哪個內存記憶體的位置。該標籤很重要的原因是因為駭客無法直接從快取讀取數據,但它可以從命中與否的時間差上獲得受害者的記憶體位置相關資訊。」

這些線索本身不一定是機密資訊,但它們可能是一連串精心規劃的步驟之一;而這些步驟最終可能透過接管控制權、提供對重要記憶體的存取權,使數據從安全變得不安全來「倒置」資料等手段來通往機密。

Brinkmann 提醒,「原則上來說,這類後門或是木馬程式可以透過矽前驗證來分析跟預防,但它們極難被找到。因為它們既不會添加多餘的邏輯也不會破壞原本設計好的功能性。」

從 Meltdown 跟 Spectre 等知名攻擊來看,擁有推測執行能力來讀取一個可能永遠不會被執行的指令一直是個特殊的議題。這往往會是在完整啟動的系統上的一個大漏洞。

同時間,匯流排衝突攻擊能讓駭客控制的程式試圖利用匯流排的路徑進入系統,而同時還有另一個處理器也試著進入匯流排。這個時機點涉及到被授予存取權,又或是必須佇列中等待,目前都還沒有太多訊息能說明這個狀況。

Oberg 說,「由於匯流排或是類似浮點單元等共享資源的爭用,造成了一系列在時域裡不斷增加的網路攻擊。當有某些秘密交易正在攻擊匯流排時,駭客同時也有辦法操控這些匯流排。駭客之所以有辦法可以觀察到這一切,是因為他們在匯流排的資源爭用。因此,就算他們沒有獲取到任何有價值的機密資訊 – 他們所截取的訊息可能一文不值 – 但至少他們在其中得到了在時間延遲中所能獲得的相關資訊。」而在異構共享的架構下。這將會是一個持續擴大的攻擊向量。

像這樣的攻擊,精準的時間訊息來源是必備條件。Oberg 提到,「在多數實際案例中,處理方法是透過軟體來使用處理器核心內建的現有計時器。時間解析度越高,就有辦法從執行流程中獲得更多的資訊。要是計時器的解析度被降低到一定的程度,要分析時間差異很小的事件就變得困難許多。」

所有的時序攻擊都跟執行過程中透過系統的資訊流有關。矽前驗證則牽涉到追蹤這些資訊流以辨識出相關漏洞。Oberg 說,「我們辨識出受害者的資訊是如何在設計裡流動,包含了受害者的資訊是如何影響到時間。如果你有辦法阻止受害者的數據流向駭客有辦法存取的區域,那麼你就可以對系統的安全性提出強力證明。」

但驗證工程師必須確保他們有辦法辨識出可能會受到攻擊的資產。否則,大量不相關的資訊流跟時序關係可能會使得結果帶有太多雜訊。

編譯來源:Verifying Side-Channel Security Pre-Silicon

Share:
This site is registered on wpml.org as a development site.