1. 什麼叫錯誤注射攻擊
錯誤注射攻擊,指在密碼晶片裝置中通過在密碼演算法中引入錯誤,導緻密碼裝置產生錯誤結果,對錯誤結果進行分析從而得到密鑰。
它比差分能量攻擊(DPA,DifferentialPower Analysis)、簡單能量攻擊(SPA,SimplePower Analysis)、電磁分析攻擊(EMA,ElectromagneticAnalysis)都更強大。攻擊沒有防護的RSA-CRT只需要一個trace(能量跡),AES或者DES需要兩個traces。DPA和EMA通常需要上千或者上萬條traces,SPA需要少量traces,但不夠強大。
2. 錯誤注射攻擊的主要方式
a) Glitch Attack
通過擾亂外部電壓或者外部時鐘使裝置失靈對裝置進行攻擊,優點是易於實施,但無法對某一個特定的部分進行攻擊。現在的大多數晶片都有glitch detector或者DC filter來抵抗攻擊。
b) Temperature Attack
通過改變外部的溫度來擾亂裝置的正常運行,從而得到錯誤結果。
c) Light Attack
通過雷射照射,利用光子擾亂密碼裝置的正常運行。它可以選擇攻擊的位置,是最強的攻擊方式。由於晶片主要都是在正面進行保護,背面很少採用保護措施。Laser attack可以通過照射背部進行攻擊。
d) Magnetic Attack
電磁攻擊,利用強大的磁場對裝置進行幹擾。優勢在於廉價,但不如Laser attack強。
3. 錯誤的種類:包括永久性錯誤和暫時性錯誤
a) 永久性錯誤
強大,可用於攻擊資料(EEPROM、RAM)或者代碼(EEPROM),但是難於實現。
b) 暫時性錯誤
幹擾代碼的特定操作過程,包括:跳過子過程skip subroutine, 避免檢測avoidtest, 錯誤執行代碼executedifferently, 抓取錯誤數值fetch wrongvalue, 改變程式計數器modify programcounter等
4. 錯誤注射攻擊模型的選擇:步驟分兩步,首先選擇引入哪種錯誤,然後再選擇實踐的方式。
a) Bit v.s. Byte
Bit: 攻擊單bit,強大,幾乎可以成功攻擊所有的密碼系統,但難於實現
Byte:攻擊整個Byte,由於byte是裝置資料的儲存和傳輸的主要方式,所以它比較易於實現
b) Specific v.s. Random Value
Specific:把資料設為全0或者全1,理論上比較容易想到的攻擊方式
Random Value:利用隨機數進行攻擊,比較易於實現。
c) Static v.s. Computational
Static:用於攻擊DSA,攻擊點是儲存空間memory,比較困難
Computational:用於攻擊RSA-CRT,在攻擊中引入錯誤操作計算,實現起來比較容易。
d) Data v.s. Control
Data:攻擊晶片操作中的資料
Control:攻擊晶片的操作過程,這種方法比較難於實現,但更加強大。
Reference:
Kim, Chong Hee, and J-J. Quisquater. "Faults, injection methods, and fault attacks." Design & Test of Computers, IEEE 24.6 (2007): 544-545.