什麼是推測執行(Speculative execution)

在分支結果等確定之前,依預測先執行後面指令的 CPU 機制。預測錯誤時會取消結果,但快取等處可能會留下痕跡。

日文名稱: 投機的実行

「推測執行(Speculative execution)」出現在1領域的6道練習題中(硬體安全等)。

這個名詞所屬的領域: 硬體安全

練習推測執行(Speculative execution)的題目

下列關於稱為Spectre的推測執行漏洞的原理,何者正確?

  1. A因CPU的運算錯誤,加法的結果會改變
  2. B依分支預測而推測執行的指令,即使結果被取消,載入快取的痕跡仍會殘留,並能以時間測量讀取出來
  3. C因推測執行而使CPU溫度過度上升
查看答案與解析

正確答案:B. 依分支預測而推測執行的指令,即使結果被取消,載入快取的痕跡仍會殘留,並能以時間測量讀取出來

CPU在分支結果確定之前,會先執行預測那一側的指令,預測錯誤時再捨棄結果。在Spectre中,攻擊者讓分支預測出錯,在原本不會執行的路徑上讀取機密資料,並使對應該值的位置被載入快取。即使結果被取消,快取的狀態也不會復原,因此可藉由快取旁路推測出該值。

下列關於為何即使推測執行的指令結果被取消,Spectre這類攻擊仍會洩漏資訊的原因,何者正確?

  1. A因為取消處理失敗,暫存器中殘留機密的值
  2. B因為推測執行的結果會被儲存到磁碟
  3. C因為被取消的只有暫存器等架構(architectural)狀態,快取等微架構(microarchitectural)狀態不會復原
查看答案與解析

正確答案:C. 因為被取消的只有暫存器等架構(architectural)狀態,快取等微架構(microarchitectural)狀態不會復原

CPU被設計成,對於程式可見的狀態(暫存器與記憶體的內容),預測錯誤時會完全復原。然而快取的內容與分支預測器的狀態等微架構狀態,屬於為了提升效能的內部狀態,不會被復原。即使遵守了ISA的約定,內部狀態仍會以時間差異的形式被外界看見,這正是此類漏洞的本質。

解析中的「推測執行(Speculative execution)」

出現「推測執行(Speculative execution)」的題目(6題)

  1. 下列關於稱為Spectre的推測執行漏洞的原理,何者正確?
  2. 下列關於為何即使推測執行的指令結果被取消,Spectre這類攻擊仍會洩漏資訊的原因,何者正確?
  3. 下列何者不屬於用來因應Spectre這類推測執行漏洞的對策?
  4. 下列關於推測執行漏洞的對策,一般而言何者正確?
  5. 下列何者最適合用來說明硬體安全所處理的問題?
  6. 下列關於部分CPU出現問題的Meltdown漏洞的原理,何者正確?

相關名詞

分支預測 Spectre 指令集架構(ISA) Meltdown 功耗分析攻擊(Power analysis attack) 安全開機(Secure boot) 冷開機攻擊(Cold boot attack) 抗竄改性(Tamper resistance) 防回滾保護(Anti-rollback protection) 信任根(Root of trust)

前往名詞解釋列表