第三十九個知識點:側信道攻擊和故障攻擊有什么區別
側信道攻擊(Side-channel attacks, SCA)是一類攻擊者嘗試通過觀察側信道泄露來推測目標計算的信息。(例如,時間,功率消耗,電磁輻射,噪聲等。)
故障攻擊(Fault attacks, FA)是一類攻擊,在這種攻擊中,攻擊者嘗試利用錯誤計算的結果。錯誤可能導致程序或者設計錯誤(例如 Intel著名的FDIV錯誤),或者被攻擊者誘導的錯誤(例如,能量故障,時鍾故障,溫度變化,離子束注入等)。"The Sorcerer's Apprentice Guide to Fault Attacks',https://eprint.iacr.org/2004/100.pdf"給了一個更實用的故障注入技術的全貌。
概括的說,SCA利用計算泄露和FA利用故障計算的結果就是兩種方式的主要區別。這不是一個很有見解的答案,也許我們要討論的問題是‘討論一些在側信道和故障攻擊中的相似方法’。
我將會討論在SCA和FA三種不同的子類:非入侵,半入侵,入侵。另外,在這種分類可能有一些爭論。這些是我的問題,如果你不同意我的意見,你可以和我的出版商討論一下。(233333)
非入侵攻擊:
一個被分類成非入侵的攻擊,是當攻擊者沒有對目標有物理上的接觸。我在下面給出了例子,但是還有單獨的例子。
SCA:時間攻擊是有爭議的,它既是最適用的也是最少入侵的SCA向量。這部分上是因為時間攻擊可以遠程攻擊,因為它們能被很容易的引入。考慮一個例如OpenSSL支持海量平台和一個完整的密碼學套件這樣的庫。確保每個敏感計算都被編程進常數時間會讓各個平台十分繁瑣。除此之外,代碼編譯器使得這件事更加的困難,代碼優化變成了一個艱巨的戰斗。
FA:非入侵故障攻擊不太常見,因為它需要錯誤行為來觸發故障。我們可以使用前面提到的Intel FDIV漏洞來構建一個攻擊,它將在每90億個隨機輸入中返回一個不正確的除法結果。我似乎找不到任何具體攻擊的證據,所以我們相信這是可能的。
半入侵攻擊
如果對手與目標的物理接觸有限,則攻擊被歸為半侵入性攻擊。我在下面給出了單獨的例子,但是還有更多的例子。
SCA:在一個能量分析攻擊中,攻擊者監視目標機器在計算秘密數據的能量消耗。在這種攻擊的理論就是動態功耗(在某種程度上)將與正在處理的數據相關。如果對手可以近似這種關系,那么他們也可以對正在處理的數據進行推斷。這可以說是半侵入性的,因為對手需要對目標設備進行電源輕擊,而這並不總是可用的,因此對手需要修改目標。
FA:時鍾和電源故障攻擊的目的是通過改變目標環境來誘導目標設備的錯誤行為。考慮芯片的時鍾輸入,該時鍾控制目標設備的運行速度。器件的最大時鍾速率受目標的“關鍵路徑”的限制,這是組合電路達到穩定狀態所需的最長時間。違反此界限將觸發設備中的競爭條件,從而導致未定義的行為。這使得glitch攻擊有些不可預測,有時很難復制,但非常有效!
http://www.eurasia.nu/wiki/index.php/Xbox_360_Reset_Glitch_Hack
入侵攻擊
入侵攻擊指的是攻擊者又無限的資源同時能接觸目標。
SCA:探測SCAs使用對目標設備的數據總線的直接輕擊,允許對手(幾乎直接)讀出總線上的任何信息。為了精確地鎖定秘密數據,必須對目標進行完全的封裝和仔細檢查。
FA:探測FAs允許對手完全改變目標設備的行為。再一次,目標必須被完全解碼並被精確地繪制出來以影響行為,但是一旦這樣做了,對手就有能力重新連接目標,從而改變其操作。
總結
SCA和FA都已在實際設備上進行了演示,效果非常好。當然,針對這些攻擊,我們設計了幾種應對措施,但這些措施將在我們的“52件事”系列文章的后面出現。