TWI812042B - 安全系統 - Google Patents

安全系統 Download PDF

Info

Publication number
TWI812042B
TWI812042B TW111107892A TW111107892A TWI812042B TW I812042 B TWI812042 B TW I812042B TW 111107892 A TW111107892 A TW 111107892A TW 111107892 A TW111107892 A TW 111107892A TW I812042 B TWI812042 B TW I812042B
Authority
TW
Taiwan
Prior art keywords
sensitivity level
fault injection
sensitivity
functional module
chip
Prior art date
Application number
TW111107892A
Other languages
English (en)
Other versions
TW202238422A (zh
Inventor
伊蘭 馬格利特
Original Assignee
新唐科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/217,472 external-priority patent/US20210240823A1/en
Application filed by 新唐科技股份有限公司 filed Critical 新唐科技股份有限公司
Publication of TW202238422A publication Critical patent/TW202238422A/zh
Application granted granted Critical
Publication of TWI812042B publication Critical patent/TWI812042B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Abstract

一種配置在待保護晶片上的安全系統,該系統包括配置在晶片上的故障注入偵測子系統,每一故障注入偵測子系統具有多個實時可選靈敏度級別且包括部署在晶片上之至少一硬體故障注入偵測器電路,及/或與硬體故障注入偵測器電路耦接的靈敏度級別控制邏輯,可部署在晶片上且可實時操作以將故障注入檢測子系統從多個可選靈敏度級別中的目前靈敏度級別轉移到複數可選靈敏度級別中的下一靈敏度級別,例如透過產生靈敏度控制信號(也稱為靈敏度級別選擇)及/或將靈敏度控制信號發送到故障注入偵測子系統中的至少一個硬體故障注入偵測器電路。

Description

安全系統
本發明係有關於裝置的安全性,特別係有關於偵測錯誤注入攻擊(fault injection attack)。
共同擁有的美國專利 9,523,736 及其現有技術描述了用於識別故障注入嘗試的現有技術方法。
靈敏度級別可調節的對抗機制可以是已知的突波偵測器(Glitch detectors),其已知並描述於例如在以下 http www 連結中:invia.fr/detectors/voltage-glitch-detector.aspx。這些被描述為具有「可配置的偵測臨限值」;以及以下 https 連結:hal.inria.fr/emse-01099006/document 以及 Josep Balasch、Benedikt Gierlichs 與 Ingrid Verbauwhede所撰寫的「An In-depth and Black-box Characterization of the Effects of Clock Glitches on 8-bit MCUs」是一份描述故障注入研究的白皮書,可從 IEEE 獲得。
Martin S. Kelly 等人撰寫的「Characterizing a CPU Fault Attack Model via Run-Time Data Analysis」是一份描述故障注入研究的白皮書,可從 IEEE 獲得。
Nicolas Moro 等人撰寫的「Experimental evaluation of two software countermeasures against fault attacks」是一份用於評估軟體對策的白皮書,可從 IEEE 獲得。
Nicolas Moro 等人撰寫的「Electromagnetic fault injection: towards a fault model on a 32-bit microcontroller」是一份描述故障注入研究的白皮書,可從 IEEE 獲得。
NCC Group 於 2015 年 11 月發表的「Implementing Practical Electrical Glitching Attacks」中描述了有關突波攻擊的最新知識,可通過網際網路存取以下 https www 連結:blackhat.com/docs/eu-15/materials/eu-15 -Giller-Implementing-Electrical-Glitching-Attacks.pdf。軟體中的對策,例如重複的指令,描述於可通過網際網路在以下 https 連結中:hal-cea.archives-ouvertes.fr/cea -01296572/document 所獲得之由Thierno Barry、Damien Couroussé以及Bruno Robisson所撰寫的「Compilation of a Countermeasure against Instruction-Skip Fault Attacks」以及可透過網際網路於網址為 http://euler.ecs.umass.edu/research/bpbk-WESS-2010.pdf獲取之「Low-Cost Software Countermeasures Against Fault Attacks: Implementation and Performances Trade Offs」。
存在基於跟踪 CPU 的執行流程而運行的身份驗證機制,例如共同擁有的美國專利號9703945。
現有技術之第1圖取自 Mike McDonald 和 Tony Jacobs 所撰寫的「DLX 機器的基本操作」,可在以下 https www 連結中獲得:cs.umd.edu/class/fall2001/cmsc411/projects/DLX/proj.html。
這篇文章 https://www.nuvoton.com/support/technical-support/technical-articles/TSNuvotonTechBlog-000154/ 介紹了「運行進程順序的隨機延遲和隨機變化」,兩者都會產生不可預測的系統執行時間,作為對抗故障注入攻擊的對策。
一般突波偵測器在題為「Glitch detection...」的美國專利 9729988B2 、 https://www.chipestimate.com/log.php?from=%2FInvia%2FVoltage-Glitch-Detector%2Fdatasheet%2Fip%2F30894&logerr=1、https://www.design-reuse.com/sip/glitch-detector-tsmc-n5-ip-48440/ 以及 https://hal.archives-ouvertes.fr/lirmm-01096047/之中有所描述。
說明書中提及的所有出版物和專利文件的公開內容以及其中直接或間接引用的出版物和專利文件的公開內容均通過引用併入本文。在此並不承認此類出版物和專利文件對可專利性的重要性。
故障注入是一種廣泛使用且非常有效(從駭客的角度來看)的技術。某些實施例尋求提供針對故障注入攻擊或指令跳過(instruction-skip)故障攻擊的改進保護。
安全系統的衡量標準係為假陽性(false positive)率(又稱誤報(false alarm)率)以及它們提供的安全級別。本發明的某些實施例試圖提供一種系統,該系統利用通常在 100% 的系統操作時間中存在較低安全風險的時段的事實,例如但不限於根據經驗已經觀察到不太受駭客攻擊的時期,並且存在較高安全風險的時期,例如但不限於根據經驗觀察到更易受駭客攻擊的時期。然後系統將系統對安全威脅更敏感的時間限制在第二類時間段內,從而總體上降低系統對誤報的感受性,使系統更加安全且同時不影響相對於將系統設置在 100% 的時間內對故障注入具有最高靈敏度的可用性和使用性。
某些實施例尋求提供一種具有動態的例如實時操作的靈敏度級別的實時調整且具有比由故障注入偵測器保護之CPU的單個指令的解碼-執行(decode-through-execution)週期更短的響應時間之錯誤注入偵測器。通常,偵測是連續的,而不是間隔的。
根據晶片狀態而打開以及關閉對策,例如取決於晶片是處於活動狀態還是處於睡眠狀態,在本領域中可能已知也可能未知。在此顯示和描述的某些實施例尋求實時調整靈敏度級別,以便微調裝置中提供攻擊保護以及以一些誤報為代價之固有的權衡。通常,對策的控制係以單個操作碼的分辨率提供,例如因為可以在偵測到第一個操作碼時提供可能是低靈敏度級別之第一個靈敏度級別,產生提供較低級別的偵測並遭受較低級別的誤報之第一個權衡,而可能是在偵測到緊隨第一個操作碼之後即將到來的第二個操作碼時提供可能是更高的靈敏度級別之第二個靈敏度級別,產生提供更高級別的偵測以及以更高級別的誤報為代價之第二個權衡。
本發明的某些實施例尋求提供一種安全系統及/或方法及/或電腦程式產品,其根據CPU的執行流程動態地控制故障注入對策電路以保護CPU免受故障注入攻擊。例如,可以提供CPU或處理器核心,在其使用時實時生成將將要執行的至少一個條件分支的輸出指示。通常,如果至少有一條指令除了一個條件分支即將被處理器核心執行,響應於將要執行的條件分支的輸出指示,靈敏度級別配置模組可操作以選擇下一個靈敏度級別,該靈敏度級別高於靈敏度級別配置模組所選擇的至少一個靈敏度級別。
還至少提供了以下實施例:
實施例1. 一種安全系統,根據處理器核心的執行流程動態地控制故障注入對策電路,以保護處理器核心免受故障注入攻擊,該系統包括:
i. 處理器核心在使用時執行指令並同時實時生成至少一些將要執行的指令的輸出指示;
ii. 具有多個可選靈敏度級別的故障注入偵測器;以及
iii. 靈敏度級別控制模組實時運行,
以接收輸出指示,
使用至少接收輸出指示作為輸入的靈敏度級別選擇邏輯從多個可選靈敏度級別中選擇下一個靈敏度級別,並且
將故障注入偵測器設置為下一個靈敏度級別,
從而提供差異敏感的故障注入對策電路,當保護處理器核心免受故障注入攻擊時,取決於至少一些指令的輸出指示,避免如果處理器核心保護被提供為與至少一些指令的輸出指示無關的靈敏度級別時所導致的至少一個誤報。
實施例2. 根據前述實施例中任一項所述的系統,其中當上述靈敏度級別控制模組接收到與風險級別R相關聯的單個指令的輸出指示時,上述靈敏度級別控制模組響應地選擇下一個靈敏度級別,其中上述下一個靈敏度級別高於與具有風險級別低於 R 相關的至少一個指令的靈敏度級別。
實施例3. 根據前述實施例中任一項所述的系統,其中當上述靈敏度級別控制模組接收到確定從中斷處理程序返回的處理器核心的個別指令的輸出指示時,上述靈敏度級別控制模組響應地選擇下一個靈敏度級別,上述下一靈敏度級別為高於上述個別指令之外的至少一個指令所選擇的靈敏度級別。
通常,當 CPU 執行完 if 語句時,除非即將到來的操作碼表明即將由處理器核心執行的即將到來的指令是另一個條件分支或靈敏度級別配置模組會選擇高靈敏度級別的其他操作碼,靈敏度恢復到較低級別。通常,輸出指示用以指示目前處理器核心將要執行什麼以及由靈敏度級別配置模組需相應地設置之靈敏度級別的信號。當下一個或即將到來的操作碼的輸出指示出現時,靈敏度級別將再次相應的調整,因此可保持不變或有所改變,這取決於後面來的操作碼是否與前一個操作碼相同(或在邏輯上對應,以靈敏度級別而言恰好與對應於前一個操作碼的靈敏度級別相同)。
實施例4. 根據前述實施例中任一項所述的系統,其中當靈敏度級別控制模組接收到確定例程返回位址的個別指令的輸出指示時,靈敏度級別控制模組響應地選擇之下一個靈敏度級別係高於為除個別指令之外的至少一項指令所選擇的靈敏度級別。
實施例5. 根據前述實施例中任一項所述的系統,其中當上述靈敏度級別控制模組接收到確定迴圈之停止條件的個別指令的輸出指示時,上述靈敏度級別控制模組響應地選擇之下一個靈敏度級別係高於為除個別指令之外的至少一個指令所選擇的靈敏度級別。
實施例6. 根據前述實施例中任一項所述的系統,其中當上述靈敏度級別控制模組接收到確定處理器核心執行模式改變的個別指令的輸出指示時,上述靈敏度級別控制模組響應地選擇之下一個靈敏度級別係高於為個別指令之外的至少一個指令所選擇的靈敏度級別。
例如,執行模式更改可以包括在特權模式(其中程式碼有權訪問某些限制資源(例如某些記憶體區域、某些硬體功能或其他特定資源))以及非特權模式(其中程式碼無權存取限制資源)之間進行更改。
實施例7. 根據前述實施例中任一項所述的系統,其中當靈敏度級別控制模組接收從記憶體讀取數據的個別指令的輸出指示時,靈敏度級別控制模組響應地選擇之下一個靈敏度級別係低於為個別指令之外的至少一指令所選擇的靈敏度級別。
實施例8. 根據前述實施例中任一項所述的系統,其中處理器核心包括記憶體,並且當靈敏度級別控制模組接收到從記憶體將數據讀入本地儲存裝置(例如快取記憶體或暫存器)的個別指令的輸出指示時,靈敏度級別控制模組響應地選擇之下一個靈敏度級別係低於為個別指令之外的至少一個指令選擇的靈敏度級別。
實施例9. 根據前述實施例中任一項所述的系統,其中當靈敏度級別控制模組接收到包括條件分支的個別指令的輸出指示時,靈敏度級別控制模組響應地選擇之下一個靈敏度級別係高於為個別指令之外的至少一項指令所選擇之靈敏度級別。
應當理解的是,因為條件分支對於在給定程式碼中尋找有價值目標以進行攻擊的駭客來說可能是有吸引力的目標,因此條件分支可與高風險級別相關聯。例如,由於該分支可能會將程式碼流導到授予終端用戶機密資訊的第一個選項,或者將其導到認為終端用戶不被認證的第二個選項而不提供秘密資訊,因此條件分支對於駭客來說可能是一個有吸引力的目標。
實施例 10. 根據前述實施例中任一項所述的系統,其中當處理器核心將要執行指令 I 時,產生與指令 I 有關的至少一個輸出指示,從而在指令 I 被執行之前提供指令 I 將被執行的輸出指示。
實施例 11. 根據前述實施例中任一項所述的系統,其中處理器核心包括適配的解碼邏輯,該解碼邏輯至少一次解碼從程式記憶體中所提取的個別指令,從而導出至少一個 CPU 內部信號,該信號隨後操作CPU之至少一個單元從而執行個別指令,其中解碼邏輯還適用於在至少一個單元響應於從程式記憶體中提取的個別指令導出的至少一個CPU內部信號而進行操作之前,提供個別指令的輸出指示,從而允許在個別指令執行之前,而非之後,將故障注入偵測器設置為下一靈敏度級別。
實施例12. 根據前述實施例中任一項所述的系統,其中處理器核心對操作碼進行解碼從而產生包括到處理器核心的執行單元之指令的信號以及包括從處理器核心輸出的信號之輸出指示,從處理器核心輸出的信號指示自操作碼解碼的指令,從而向靈敏度級別選擇邏輯提供處理器核心尚未執行的指令的預覽。
實施例13. 根據前述實施例中任一項所述的系統,其中從處理器核心輸出的信號包括從操作碼解碼的指令。
實施例14.根據前述實施例中任一個的系統,其中故障注入偵測器包括具有分別對應於多個靈敏度級別的多個調整選項的類比電路。
實施例 15. 根據前述實施例中任一項所述的系統,其中處理器核心包括適配的解碼邏輯,該解碼邏輯至少一次解碼從程式記憶體中提取的個別指令,從而導出至少一個 CPU 內部信號,該信號隨後操作至少一個單元CPU從而執行個別指令,其中對於由解碼邏輯解碼的所有指令,解碼邏輯還用於在至少一個單元響應於從程式記憶體中提取的個別指令所導出之上述至少一個CPU內部信號之前提供操作個別指令的輸出指示,從而在執行靈敏度級別邏輯用以選擇特定靈敏度級別的指令之前,而不是之後,確保故障注入偵測器始終設置為每個特定靈敏度級別。
實施例16. 一種安全方法,根據處理器核心執行流程動態地控制故障注入對策電路,以保護處理器核心免受故障注入攻擊,該方法包括:
i. 提供處理器核心,在使用時,該處理器核心執行指令並同時實時產生至少一些將要執行的指令的輸出指示;
ii. 提供具有多個可控靈敏度級別的故障注入偵測器;以及
iii. 實時地使用靈敏度級別控制模組,
接收輸出指示,
使用至少接收輸出指示作為輸入的靈敏度級別選擇邏輯從多個可控靈敏度級別中選擇下一靈敏度級別,並且
將故障注入偵測器設置為下一個靈敏度級別,
從而當保護處理器核心免受故障注入攻擊時,取決於至少一些指令的輸出指示,提供差異敏感的故障注入對策電路,以避免如果CPU被保護的靈敏度級別與至少一些指令的輸出指示無關所導致的至少一個誤報。
實施例17. 根據前述實施例中的任一個的系統並且還包括故障注入改善電路,故障注入改善電路用以響應於偵測器對故障注入的偵測而執行至少一個故障注入改善操作。
實施例 18. 根據前述實施例中任一項所述的方法,其中處理器核心包括適配的解碼邏輯,該解碼邏輯至少一次解碼從程式記憶體中所提取的個別指令,從而導出至少一個 CPU 內部信號,該信號隨後操作CPU之至少一個單元從而執行個別指令,其中在至少一個單元響應於從程式記憶體中提取的個別指令而導出的至少一個CPU內部信而進行號操作之前,解碼邏輯還用於提供該個別指令之輸出指示,從而在個別指令執行之前,而非之後,允許將故障注入偵測器設置為下一個靈敏度級別。
實施例19. 根據前述實施例中任一項所述的方法,其中上述處理器核心透過使用組合邏輯來解碼操作碼,從而產生包括至處理器核心的執行單元之指令的信號以及包括從處理器核心導出用以指示從操作碼中解碼之指令之信號的輸出指示,從而向靈敏度級別選擇邏輯提供處理器核心尚未執行的指令的預覽。
實施例20. 根據前述實施例中任一項所述的系統,其中處理器核心包括執行管線,該執行管線包括具有至少一重疊階段的多個連續指令,其中靈敏度級別選擇邏輯根據獨立地與多個靈敏度級別中的最高故障偵測靈敏度級別相關聯之至少一個指令 I,向故障注入偵測器提供用於選擇靈敏度級別的指示。
重疊階段可以包括解碼階段及/或執行階段。
實施例21. 根據前述實施例中任一項所述的系統,其中由於最高偵測靈敏度級別是設置在指令 I 解碼後立即開始,僅在指令 I 完全執行後結束,而不管其他正在解碼之指令以及其他將要執行之指令,因此上述至少一個指令I一旦被解碼,優先於所有其他被解碼的指令並且優先於所有其他將被執行的指令。
實施例22. 根據前述實施例中任一個的系統,其中處理器核心輸出指示包括將要執行哪個操作碼的輸出指示。
實施例23. 根據前述實施例中任一項所述的系統,其中上述故障注入偵測器可操作以保護CPU免受故障注入攻擊, CPU的個別指令的解碼-執行週期係為T個時間單位長,並且其中故障注入偵測器具有比 T短的響應時間。
實施例24. 根據前述實施例中任一個的系統,其中故障注入偵測器包括分別部署在多個處理器核心位置的多個故障注入偵測器單元,從而偵測在所有多個位置處的故障注入攻擊。
實施例25. 根據前述實施例中任一項所述的系統,其中如果部署在位置L處的偵測器單元中的至少一個偵測到位置L處的故障注入攻擊,則故障注入偵測器發出警報。
實施例101. 一種安全系統,配置為部署在待保護的晶片上,該系統包括:
至少一個故障注入偵測子系統部署在晶片上,每個故障注入偵測子系統具有多個實時可選的靈敏度級別,包括:
至少一個硬體故障注入偵測器電路,部署在晶片上,
並且,與硬體故障注入偵測器電路耦接之
靈敏度級別控制邏輯,被部署在晶片上並實時操作透過生成靈敏度控制信號(又稱為靈敏度級別選擇)且將靈敏度控制信號發送到故障注入偵測子系統中的至少一個硬體故障注入偵測器電路,以將故障注入偵測子系統從多個可選靈敏度級別中的目前靈敏度級別轉換到多個可選靈敏度級別中的下一個靈敏度級別。
故障注入偵測子系統可以包括被配置用於故障注入攻擊偵測的任何邏輯,通常包括實時識別篡改晶片電路的嘗試,並且實時警告該嘗試作為響應。偵測器的位置通常表示最有可能受到攻擊的晶片電路的位置,並且偵測器的性質通常表示攻擊的類型,例如突波(glitch)、溫度或其他。
實施例102. 根據前述實施例中任一項所述的系統,並且其中上述至少一個故障注入偵測子系統還包括至少一個功能模組,上述功能模組被配置為部署在晶片上,用以實時產生輸出信號,並發送輸出信號到靈敏度級別控制邏輯,從而為靈敏度級別控制邏輯提供關於要從多個可選靈敏度級別中選擇的下一個靈敏度級別的指示。
實施例103. 根據前述實施例中任一項所述的系統,其中上述至少一個功能模組可操作以產生至少一個輸出信號並將其發送到靈敏度級別控制邏輯,上述至少一個輸出信號包括狀態指示,上述狀態指示用以指示功能模組是否是活動的,並且其中靈敏度級別控制邏輯至少部分地根據狀態指示來選擇下一個級別。
實施例104. 根據前述實施例中任一項所述的系統,其中上述邏輯靈敏度級別控制邏輯至少一次響應於複數功能模組中的至少一個別功能模組變得活躍,而選擇更高的下一靈敏度級別。
實施例105. 根據前述實施例中任一項所述的系統,其中上述至少一個輸出信號表示與上述至少一功能模組的目前活動相關聯的風險級別,其中上述靈敏度級別控制邏輯至少部分地自上述風險級別導出靈敏度級別而作為下一靈敏度級別。
實施例106. 根據前述實施例中任一項所述的系統,其中如果功能模組是活動的且具有第一風險級別,則靈敏度級別控制邏輯選擇第一靈敏度級別作為下一靈敏度級別,如果功能模組處於活動狀態並具有低於第一級風險的第二級風險,則靈敏度級別控制邏輯選擇第二靈敏度級別作為下一靈敏度級別,如果功能模組處於不活動狀態,則靈敏度級別控制邏輯選擇第三靈敏度級別作為下一個靈敏度級別。
實施例107. 根據前述實施例中任一項所述的系統,其中上述晶片具有多個可能的功率狀態,功率狀態包括至少一閒置狀態和至少一喚醒狀態,並且其中上述靈敏度級別控制邏輯響應於晶片的新狀態而選擇下一個靈敏度級別,晶片的新狀態包括多個可能狀態之一者。
實施例108. 根據前述實施例中任一項所述的系統,其中功能模組包括韌體,韌體用以觸發可能的功率狀態之間的轉變,從而使靈敏度級別控制邏輯知道目前狀態。
實施例109. 根據前述實施例中任一項所述的系統,其中在晶片的功率狀態轉變到新狀態之前,選擇下一靈敏度級別。
實施例110. 根據前述實施例中任一項所述的系統,其中在晶片的功率狀態轉變到新狀態之前,將偵測器設置為下一靈敏度級別。
實施例111. 根據前述實施例中任一項所述的系統,其中在晶片的功率狀態已經轉變到新狀態之後,選擇下一靈敏度級別。
實施例112.根據前述實施例中任一項所述的系統,其中在晶片的功率狀態已經轉變到新狀態之後,將硬體故障注入偵測器電路設置為下一靈敏度級別。
實施例113. 根據前述實施例中任一項所述的系統,其中上述系統被部署於待保護的晶片上。
實施例114. 根據前述實施例中任一項所述的系統,其中上述至少一個故障注入偵測子系統包括多個故障注入偵測子系統,每個故障注入偵測子系統被配置為部署在晶片上並且每個故障注入偵測子系統包括硬體故障注入偵測器電路以及與故障注入偵測子系統耦合的靈敏度級別控制邏輯。
實施例115. 根據前述實施例中任一項所述的系統,其中上述系統部署在要保護的晶片上,其中上述至少一個功能模組至少包括第一功能模組以及第二功能模組,並且其中上述多個故障注入偵測子系統包括第一故障注入偵測子系統以及第二故障注入偵測子系統,用以分別保護第一功能模組以及第二功能模組,其中第一模組比第二模組更靠近第一故障注入偵測子系統,第二模組比第一模組更靠近第二故障注入偵測子系統。
實施例116. 根據前述實施例中任一項所述的系統,並且其中多個故障注入偵測子系統中的至少一故障注入偵測子系統S保護晶片上的至少一個功能模組,其中多個故障注入偵測子系統的每一者的相應硬體故障注入偵測器電路具有由受硬體故障注入偵測器電路保護之至少一功能模組所實時選擇的靈敏度級別。
實施例117. 根據前述實施例中任一項所述的系統,並且其中每個硬體故障注入偵測器電路具有多個實時可選擇的靈敏度級別。
實施例118. 根據前述實施例中任一項所述的系統,並且其中故障注入偵測子系統包括多個硬體故障注入偵測器電路,並且其中故障注入偵測子系統在時間點t的靈敏度級別被實現為多個硬體故障注入偵測器電路中的一數量之硬體故障注入偵測器電路在時間點t被啟用,其中靈敏度級別控制邏輯確定在時間點t啟用多個硬體故障注入偵測器電路中的多少個,從而提供具有實時可配置靈敏度級別的對策,因而透過較少數量的致能的硬體故障注入偵測器電路實現較低的靈敏度級別,更高的靈敏度級別是透過更多的致能的硬體故障注入偵測器電路所實現。
實施例119. 根據前述實施例中任一項所述的系統,其中上述至少一功能模組包括多個功能模組,並且其中上述靈敏度級別控制邏輯透過組合來自每個功能模組的輸出指示而導出將被選為下一靈敏度級別的靈敏度級別,並組成一組靈敏度控制信號。
實施例120. 根據前述實施例中任一項所述的系統,其中上述靈敏度級別控制邏輯至少一次響應於至少個別功能模組變得不活動而將靈敏度級別釋放到低於更高的下一靈敏度級別。
實施例121. 根據前述實施例中任一項所述的系統,其中上述功能模組包括與高風險級別相關聯的加密模組。
可以理解的是,如果需要,某些實施例可以實現為電腦程式驅動的CM靈敏度控制產品,該產品包括電腦程式,該電腦程式通常比待保護的處理器核心的執行更實時。因此提供了一種電腦程式產品,包括其中包含電腦可讀程式碼的非暫時性有形電腦可讀介質,該電腦可讀程式碼適於被執行以實現安全方法,該安全方法動態地取決於處理器核心的執行流程,控制故障注入對策電路操作以保護處理器免受故障注入攻擊,該方法包括:
i. 提供處理器核心,該處理器核心在使用時執行指令並同時實時產生至少一些將要執行的指令的輸出指示;
ii. 提供具有多個可控靈敏度級別的故障注入偵測器;以及
iii. 實時地使用靈敏度級別控制模組,
接收輸出指示,
使用至少接收輸出指示作為輸入的靈敏度級別選擇邏輯從多個可控靈敏度級別中選擇下一靈敏度級別,並將故障注入偵測器設置為下一個靈敏度級別,
從而當保護CPU免受故障注入攻擊時,提供故障注入對策電路對至少一些指令的輸出指示做出響應,以避免如果在提供CPU保護之靈敏度級別與至少一些指令的輸出指示無關時所導致的至少一個誤報。此外,如果將靈敏度級別設置為完全避免誤報,則故障注入對策電路可以偵測到如果在提供 CPU 保護之靈敏度級別與至少一些指令的輸出指示無關時所不會偵測到的至少一故障注入。
上面提到的實施例和其他實施例將在下一段落中詳細描述。
出現在文本或附圖中的任何商標是其所有者的財產,並且在此所示僅用於解釋或說明可以如何實施本發明的實施例的一個示例。
除非另外特別說明,從以下討論中顯而易見,在整個說明書討論中,應當理解,使用諸如「處理」、「計算」、「估計」、「選擇」、「排序」、「分級」、「計算」、「確定」、「生成」、「重新評估」、「分類」、「產生」、「生成」、「立體匹配」、「註冊」、「偵測」、「關聯」、「疊加」、「獲得」等,是指至少一台或多台電腦或計算系統、或處理器或類似電子計算裝置的操作及/或轉換表示為物理的數據的動作及/或過程,例如計算系統的暫存器及/或記憶體內的電子量,轉換成類似地表示為計算系統的記憶體、寄存器或其他此類資訊儲存、傳輸或顯示裝置內的物理量的其他數據。術語「電腦」應廣義地解釋為涵蓋具有數據處理能力的任何類型的電子裝置,包括但不限於個人電腦、伺服器、嵌入式核心、計算系統、通信裝置、處理器(例如數位信號處理器(DSP)、微控制器、現場可編程閘陣列(FPGA)、專用積體電路(ASIC)等)和其他電子計算裝置。
在此單獨列出的元件不必是不同的元件,或者可以是相同的結構。元件或特徵可能存在的聲明旨在包括 (a) 元件或特徵存在於其中的實施例; (b) 元件或特徵不存在的實施例; (c) 元件或特徵可選擇地存在的實施例,例如用戶可以配置或選擇元件或特徵是否存在。
以下說明為本發明的實施例。其目的是要舉例說明本發明一般性的原則,不應視為本發明之限制,本發明之範圍當以申請專利範圍所界定者為準。
能理解的是,雖然在此可使用用語「第一」、「第二」、「第三」等來敘述各種元件、組成成分、區域、層、及/或部分,這些元件、組成成分、區域、層、及/或部分不應被這些用語限定,且這些用語僅是用來區別不同的元件、組成成分、區域、層、及/或部分。因此,以下討論的一第一元件、組成成分、區域、層、及/或部分可在不偏離本揭露一些實施例之教示的情況下被稱為一第二元件、組成成分、區域、層、及/或部分。
值得注意的是,以下所揭露的內容可提供多個用以實踐本發明之不同特點的實施例或範例。以下所述之特殊的元件範例與安排僅用以簡單扼要地闡述本發明之精神,並非用以限定本發明之範圍。此外,以下說明書可能在多個範例中重複使用相同的元件符號或文字。然而,重複使用的目的僅為了提供簡化並清楚的說明,並非用以限定多個以下所討論之實施例以及/或配置之間的關係。此外,以下說明書所述之一個特徵連接至、耦接至以及/或形成於另一特徵之上等的描述,實際可包含多個不同的實施例,包括該等特徵直接接觸,或者包含其它額外的特徵形成於該等特徵之間等等,使得該等特徵並非直接接觸。
「DLX 機器的基本操作」由 Mike McDonald 和 Tony Jacobs 所撰寫,可在以下 https www 互聯網連結中線上獲得,帶有 html 後綴:cs.umd.edu/class/fall2001/cmsc411/projects/DLX/proj。上述文件描述了DLX架構中的五個執行階段:指令提取(Instruction Fetch,IF)、指令解碼(Instruction Decode,ID)、執行(Execution,EX)、記憶體(Memory,MEM)以及回寫(Write-Back,WB)。每個階段都需要與最慢的階段一樣多的時間,即使它不需要這麼多時間來完成。這個時間段是一個時脈週期。因此,每條指令從開始到結束執行總共需要 5 個時脈週期。每個執行階段都對應於 CPU 中的硬體,如 Hennessy 和 Patterson 的第3.1 圖所示。數據路徑上硬體的每個「部分」都可以同時運行,流水線利用這些優勢來獲得巨大的性能優勢。每個階段都進行非常特定的操作。
1. 指令提取(Instruction Fetch,IF):從記憶體中讀取指令並將其放入指令暫存器(instruction register,IR)。更新新的程式計數器 (new program counter,NPC),使其指向下一條指令(PC + 4,或記憶體中的下一個字)。
2. 執行(Execution,EX):對指令進行解碼(基於操作碼(opcode))。來自暫存器文件的暫存器的輸出被放置到臨時暫存器中。符號擴展可能是立即數值的指令部分,並將該數值放入臨時暫存器。
3. 執行(Execution,EX):這裡發生的事情取決於將要執行的指令類型。 ALU 在此週期中運行,以執行所需的操作。
第1圖係顯示一般CPU操作週期之現有技術,其特別包括提取過程,其後是解碼,再其後是執行。
現在將詳細描述用於故障注入對策(countermeasure)靈敏度調整的系統。
“If”語句或條件分支是 CPU 指令的示例,它們可能容易受到故障注入即「故障注入攻擊(fault injection attack)」的影響,例如可以作為故障注入的目標,例如程序流可能被故意破壞的點。例如,條件分支可以被配置為基於先前的操作,跳轉到向用戶提供一些秘密信息的程式碼部分。例如,以用戶之前的操作成功提供用戶認證為條件,或者跳轉到其他地方,或者根本不跳轉,這兩種情況都不會向用戶提供請求的信息(如果用戶在之前的操作中沒有成功提供用戶認證)。在後一種情況下,駭客(hacker)可能會在某個時間嘗試注入一個「錯誤」,試圖欺騙條件分支指令跳轉到提供秘密信息的程式碼,即使在之前的操作中該用戶沒有提供必要的用戶身份驗證。
根據一些實施例,提供了一種安全系統,其中處理器核心在使用時(例如,實時)指示即將執行的操作碼/指令。例如,CPU 在從程式記憶體中提取指令時,通常首先對指令進行解碼。指令的解碼通常包括將操作碼作為輸入的邏輯功能,通常以二進制形式(指令操作碼通常包括通常作為相應程序的二進制程式碼順序儲存的數字,其可以與指令操作數交錯)以及應用邏輯功能(又名「解碼邏輯」)產生用以操作 CPU 的各種單元以執行各自的功能之CPU內部信號,例如操作 CPU 的 ALU 以執行算術運算,等等。根據一些實施例,解碼邏輯可用於將解碼信號輸出到 CPU 外部的子系統(例如,靈敏度級別控制模組),以使該子系統儘管在 CPU 外部響應於表徵 CPU 在給定時間即將執行的操作的預先通知(advance knowledge)而採取的行動(例如選擇靈敏度級別)。
可以理解的是,通常,內置的 CPU 解碼邏輯是專門設計來控制 CPU 的操作單元的,例如ALU,根據正在處理的指令,CPU 並不「知道」在任何給定時間將要執行哪條指令。相反的,根據一些實施例,解碼邏輯輸出通常指示現在將要執行哪個指令。此外,CPU指令內部可能有重疊的控制狀態。例如,一個家族的兩個(或 N 個)不同指令可能具有一些相同的內部控制,因為這兩個不同的指令操作相同的 CPU 區塊。
調整解碼邏輯以與外部子系統通信的一個特殊優勢可能是,由於解碼先於相關 CPU 單元(例如 ALU)解碼指令的實際執行,因此外部子系統可以預覽CPU 尚未實際執行的指令。
可以理解的是,一些積體電路實現了低功率模式。例如,當偵測到內核正在執行某些特定的預定義指令時,積體電路可能會進入低功耗模式,例如,在某些 CPU 中,WAIT 指令或某些其他類型的 HALT 指令,或 Wait-For-Interrupt,所有這些通常都會使 CPU 的內核處於保持狀態,在這種狀態下,內核通常會保留,等待觸發內核退出該保持狀態的事件。這將涉及將要執行哪個操作碼/指令的實時指示。
存在基於追蹤 CPU 的執行流程而運行的身份驗證機制,例如共同擁有的美國專利號9703945。當執行一組特定指令時,可能會暫停執行流程以驗證程式碼。具體而言,美國專利 9703945 描述了基於跟踪 CPU 的執行流程運行的認證機制。美國專利 9703945 描述了特定的操作或指令(例如,存取記憶體映射 I/O 位址的特定空間)。根據系統設計者的決定,這些操作或指令被認為在程式碼驗證方面需要更高級別的安全性。因此,在偵測到此類指令時,例如對該 I/O 地址空間的寫操作,執行流程會暫時停止,直到某個程式碼驗證序列完成。完成此操作後,假設相應程式碼已通過身份驗證,則將恢復執行流程並執行操作。因此,該方法由某些指令觸發,改變程序流程以採取一些預定義的操作,即程式碼驗證。
此外,美國專利9703945描述了一種處理核心,其耦合以從輸入橋接收程序指令並執行這些程序指令,其中程序指令包括能夠通過輸出橋輸出信號的程序指令以及不向一個或多個系統輸出發送數據的程序指令,並且其中當輸出橋處於第一狀態時以及當輸出橋處於第二狀態時,處理核心都可以執行不向一個或多個系統輸出發送數據的程序指令。
術語「靈敏度級別(sensitivity level)」旨在包括任何截止點或臨限值,由故障注入偵測器應用於故障注入的任何規範或觸發特性或與故障注入相關的任何規範或觸發特性,使得故障注入偵測器可以對其作出反應,且由故障注入偵測器之邏輯所使用來區分故障和非故障。通常,故障注入偵測器會努力偵測預期和實際情況之間的差異,並且每次偵測到差異時,都會提供「故障」警報。
由於不同類型的故障注入偵測器係使用不同的機制來實現,因此可以採用各種靈敏度控制機制來實現靈敏度級別,例如但不限於以下:
a. 故障注入偵測器可以識別突然的變化,即電源電壓或晶片中的接地位準的突波(glitch)。在這種情況下,可以將偵測器設置為在實際情況(實際偵測到的電壓)與預期電壓相差 50mV、100mV 或 300mV 時識別異常情況。
b. 可以在同一邏輯網絡上的不同位置之間進行電壓位準比較以偵測局部的差異,因為預期上是所有位置都處於相同狀態。
c. 光偵測器可操作用於嘗試使用光能識別故障注入,基於對應於光強度的電壓位準所得的故障注入偵測。
可以理解的是,可以在任何給定時間比較的數位信號的電壓位準(假定處於相同邏輯狀態(無論是 1 還是 0))。在這樣的比較中,觸發電壓差可以定義為 X、Y 或 Z。
此外,靈敏度根本不需要基於電壓位準。例如,具有非基於電壓靈敏度級別的偵測器可能包括:
第一種為, 設計用於直接偵測光(例如雷射、能量)的探測器。如果偵測器將光能轉換為與吸收的光能成正比的電壓位準,則可以偵測分別對應於光能級別 X、Y 和 Z 的電壓位準 A、B 或 C。
第二種為,設計用於直接偵測除光以外的電磁能的偵測器。如果偵測器將電磁能轉換成與吸收的電磁能成正比的電壓位準,則可以偵測分別對應於電磁能級別X、Y和Z的電壓位準A、B或C。
具有不實時操作的非基於電壓的靈敏度級別的偵測器的示例是頻率偏差偵測器,其在與預期頻率的頻率偏差的幅度方面可以具有多個靈敏度級別。應當理解的是,在這種情況下,故障注入的目標可以包括通常具有既定頻率(也稱為“預期頻率”)的晶片時脈。例如,如果給定晶片的時脈具有 250MHz 的預期頻率,並且與該值的瞬時偏差,例如偵測到比預期更接近的兩個時脈脈衝,這可能表示發生故障注入。
一些突波偵測器(glitch detector)可以被設計為具有多個靈敏度級別,這些靈敏度級別通過配置選擇並且根據系統架構決定被預先定義並且被預先配置(與在本發明的實施例中動態配置相反)。
第2圖係根據本發明之一些實施例描述了一種構建系統的方法,該系統可以從處理器內核或 CPU 接收操作碼指標,實時做出相應的靈敏度級別決定,儘管其他因素也可能影響該決定,接著將靈敏度級別控制提供制對策電路。
如上所述,可能存在安全開發人員可能認為引入硬體故障注入的更高風險的情況或條件,例如但不限於條件分支的執行。
一般而言,注入的故障最終會轉化為積體電路的電氣事件,該事件會干擾積體電路硬體的一致性以及連貫操作。例如,在 MCU/CPU 執行程式碼的情況下,試圖干擾積體電路硬體的一致性以及連貫操作的故障注入通常會試圖干擾程式碼的執行流程,攻擊積體電路的硬體以干擾積體電路軟體的執行及/或韌體。
在這種情況下,安全開發人員可能希望在安全級別和誤報之間動態使用不同的權衡。
安全開發人員在配置邏輯時可以遵循任何合適的程序。例如,設計人員可以首先在預期的正常現實生活場景和允許的操作條件下模擬及/或操作裝置,以確保在允許的操作條件下,該機制永遠不會(或僅以可接受的稀有性)觸發錯誤警報。然後,設計者可以操作裝置,給定裝置旨在承受的故障注入,並確定正確觸發所有或幾乎所有故障注入的故障注入偵測級別,例如在可接受的可靠性級別。然後,設計人員可以將此「適當級別」定義為用於偵測故障注入的預設偵測級別。然後,設計者可以調整邏輯,從而響應於 CPU 將要執行設計者認為與更高的故障攻擊風險相關聯的指令的輸出指示,實時啟用選定的更高靈敏度級別(對應於稍微更積極的偵測)。
通常,開發人員會調整偵測級別,以便在操作條件確實可能導致硬體操作不正確時觸發(偵測到發生攻擊)。此類級別可由開發人員在多個裝置變形上標註,以確保在正常操作期間很少或沒有偵測到故障注入。
通常,希望提供一種能夠在超過一個設計者定義的級別進行偵測的電路,例如至少兩個偵測級別,其中兩個級別之一,而不是另一個,以非必要地干擾裝置正常運行的風險之下攔截輕度故障注入。這些級別可能包括:
第一級:偵測導致異常情況(例如,產生裝置故障風險的情況)的侵略性故障注入;以及
第二級:不僅可以偵測攻擊性故障注入,還可以偵測非攻擊性(也稱為輕度)故障注入,這會導致出現意外情況,但裝置可以在沒有故障的情況下仍維持運作。
請參考第2圖,通常提供處理器,其產生指示在每個既定時刻將要執行哪個指令/操作碼或操作碼族/組的信號。例如,從處理器的解碼單元識別主指令/命令(subject instruction/command)的時間到執行單元指示指令/命令的執行是完成的,信號會指示處理器即將要執行給定指令。在該實施例中,該指示包括定指令的「解碼」和「執行」階段,然而情況並非必須如此。或者,信號可以指示給定指令將要在給定指令的「執行」階段期間執行,而非在給定指令的解碼階段期間執行。另一個可能的實施例係為,使指示從(並包括)一主指令  的「解碼」階段開始,直到(但不包括)下一指令(在處理器執行指令前一之後所執行的指令)的「解碼」階段保持活動狀態。
可以理解的是,控制上述週期的某些控制信號(也稱為 CPU 內部信號)是 CPU 內部設計的一部分,但對所有或許多的 CPU 來說都是平常的,例如:
(a) 通知信號,用以通知提取單元從記憶體中獲取指令並將指令儲存在本地某處,以及
(b)由解碼單元所產生的信號,指派或告知其他 CPU 單元操作以及執行指令。
此外,仍然如第2圖所示,系統設計者通常將至少一個操作碼或一組操作碼與相關的安全風險相關聯。一般來說,條件分支操作碼與高風險 R(R可為標量)相關聯,係相對於某些或所有操作碼並非與風險低於 R相關聯的條件分支操作碼。這是因為條件分支指令控制程式的流程,因此是故障注入可以使程式偏離正確且有序的流程之節點。
替代地或另外地,根據某些實施例,可以使用詳細的風險分析來理解各種不同操作碼相關聯的相對風險。
為了進行風險分析,設計人員可能會研究處理器的指令集。指令集(ARM Cortex-M0)的示例描述可在網路上獲得,其位於以下 http 連結且帶有 html 後綴:infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/CHDCICDF。
至少,由於指令集在處理器之間趨於相似,至少在相似類型的處理器之間,例如在 RISC 處理器之間或在 CISC 處理器之間,因此在某種程度上,這種分析可以在處理器之間推廣。例如,許多處理器可能具有以下全部或大部分指令類型或指令組:
1. 記憶體以及暫存器處理:通常包括載入指令、儲存指令以及移動指令。
2. 算術和邏輯操作:通常包括加法、減法、有時是乘法和除法或算術移位,以及邏輯運算,如或、與、異或。
3. 堆疊(stack)管理:通常是push/pop。
4. 分支(Branch):有條件的以及無條件的。
5. 控制: 例如但可能不限於狀態管理、中斷管理。
儘管如此,由於每個特定處理器確實傾向於具有與其他處理器至少有些不同的指令集,因此最終可以進行一些處理器的個別風險分析。
設計人員還可以審查應用程式及其實現方式(包括對應用程式碼的分析),並可以相應地量化特定指令或指令類型的風險。例如:
a. 一堆疊管理指令相對於堆疊管理指令以外的至少一條指令(及/或相對於與上述指令組 3-5 中的至少一個指令組中的至少一個指令相關聯的風險級別及/或相對於被視為低風險的操作碼),可被視為高風險。例如因為堆疊也可能在程式流程中起作用,特別是在涉及子程序調用時;堆疊通常會保留返回位址,因此通過故障注入操作它們也可能會使程序偏離有序的執行流程。
b. 在算術/邏輯操作的指令組(上述第 2 組)中,基於對程式碼的分析,系統設計人員可能會發現特定算術指令用於程式碼中「關鍵」位置會影響程式流程及/或程式碼之「決策」。這些特定指令可能與高風險相關,例如該風險高於程式碼中不在此類關鍵位置的算術指令或高於與上述指令組 3-5 中至少一個指令組中的至少一條指令相關的風險級別及/或高於視為低風險的操作碼。
此外,仍然如第2圖 所示,有一個故障注入偵測器具有 至少兩個靈敏度級別(L>=2),其中之一較寬鬆(具有較低的靈敏度級別),另一靈敏度級別較靈敏(具有更高的靈敏度級別)。
此外,仍然如第2圖所示,可以以任何合適的方式實施動態靈敏度級別調整(例如實時的選擇L個級別之一)。例如,可以提供從處理器接收這些信號的解碼邏輯,且根據操作碼的安全風險等級,基於寬鬆或更靈敏的偵測級別,在任何時間產生相應的信號以向故障注入偵測器指示它是否應該被觸發。第5圖顯示了一個實施例,顯示了3級別靈敏度,其包括定義為預設級別的最低靈敏度級別以及兩個均高於預設級別的附加級別。
根據某些實施例,對偵測器的指示在解碼指令之後立即或立即消失,使得偵測器在核心開始執行該指令之前獲得信號。偵測電路本身通常不會「拒絕」或吸收或以其他方式處理故障注入。然而,電路確實會產生一個旗標(flag)以指示發生故障注入,允許其他模組以任何合適的方式回應,例如但不限於將裝置(例如 CPU 或處理器)恢復到已知狀態以及將程式恢復至流程中的一個已知節點。這種恢復可以相對緩慢地發生,例如只有在發生故障注入之後。然而,由於故障注入造成的損害不會立即發生因此這是可以接受的,除非只有在到達程式碼中本不應該到達且實際上若不是故障注入也不會到達的某個地方時,恢復發生在到達程式碼中的這個位置之前。
第2圖的方法通常包括一些或所有以下操作,適當排序如下:
步驟21. 將何者易受故障注入影響以及何者產生用以指示在任何給定的時間執行哪個指令/操作碼或操作碼族/組的信號,提供至處理器核心/CPU。
步驟 22. 進行風險分析:系統設計者將安全風險(例如,錯誤注入之風險)與操作碼或操作碼組的列表相關聯,並相應地生成靈敏度級別決策/選擇邏輯。例如:條件分支操作碼係為高風險;所有其他操作碼係為低風險。
步驟23. 提供具有至少兩個靈敏度級別的故障注入偵測器。
步驟24. 實現CM電路的靈敏度級別調整,例如提供可實時調節靈敏度級別的CM電路,例如通過動態選擇至少兩個級別之一。一般來說,故障注入偵測器支持動態調整,例如實時調整靈敏度級別且其響應時間短於由故障注入偵測器進行保護之處理器或 CPU 的單個指令的解碼執行週期。
如上所述,由於通常希望控制信號通過靈敏度控制單元傳播到偵測器的時間段留出足夠的時間讓偵測器做出反應,因此響應時間通常較短。例如:如果指令周期是40ns長,那麼從操作碼的指示到偵測器被設置在所需的靈敏度級別所經過的時間是,比如說最多10ns而留下一個 30ns 的時間窗口,其中偵測器可於時間窗口內反應。
現在參考第3圖,可以理解的是,條件執行和條件分支,即軟體決策點,被視為安全程式碼中的弱點,即易於發生故障注入攻擊的節點。第3圖係顯示根據某些實施例所述之安全系統的簡化方塊圖,其可如根據第2圖的方法所提供。第3圖的系統通常包括:
具有操作碼或其他程式碼之指示的處理器核心301或CPU,指示特定指令或指令類別的執行,例如但不限於條件分支、特定比較等;以及
對策 (countermeasure,CM)電路,例如包括一個設計有多個可控的靈敏度級別之故障注入偵測器302。該CM電路可包括與具有可調靈敏度的故障注入偵測器相結合的故障注入改善(amelioration)電路303。如果故障注入偵測器偵測到故障注入,則故障注入改善電路被啟動。例如,每次故障注入偵測器偵測到故障注入時,觸發故障注入改善電路。
例如,有關此類電路的某些示例的設計問題在以下白皮書中進行了描述,均可在網路上獲得:
Compilation of a Countermeasure Against Instruction-Skip Fault Attacks
Thierno Barry, Damien Courouss_e, Bruno Robisson
以及:
Low-Cost Software Countermeasures Against Fault Attacks: Implementation and Performances Trade Offs
應當理解的是,術語「對策(countermeasure)」通常用於指用於改善(例如,防止或糾正)故障注入攻擊的不良影響的偵測器及/或模組。在第 3圖 的上下文中,CM電路偵測此類攻擊並觸發任何合適的模組以防止或糾正此類攻擊的不良影響。
根據一個實施例,已經識別出條件分支的執行的安全系統將相應電路的偵測級別調整為更加敏感的級別。
可以理解的是,與不被如此考慮的指令相比,各種指令或其類別可以被認為引入更高的故障注入風險。舉一些非限制性的例子,任何或所有以下操作碼可能被認為引入了更高的故障注入風險,其可能導致系統設計決策將以下任何或所有操作碼與高安全性風險相關聯(例如,故障注入的風險很高),即風險級別高於與操作碼(而非以下內容及/或在遇到此類指令時增加故障注入偵測器的靈敏度級別所提供的邏輯)相關的風險級別,例如以下操作碼:
a. 指示條件分支的操作​​碼,例如,基於條件分支之前的兩個操作數之間的比較並產生條件分支隨後使用的「結果」分支來決定是分支還是按順序繼續之RISC CPU的分支指令之branch-if-equal、branch-if-not-equal。
b. 執行比較或其他「測試」之操作碼,導致設置各種標誌,然後由「決定」是否採用給定條件分支的邏輯所使用。例如,比較指令可用於比較兩個操作數並在兩者相等的情況下(或在兩者不相等的情況下)設置標誌。在結果為負或非零的情況下,減法操作可以設置一個標誌以比較運算元(operand),例如數字。
c. 操作碼將特定類型的資訊推送到處理器堆疊中,例如稍後用於條件操作的關鍵或敏感資訊或數據或CPU子系統旗標的返回地址。
d. 操作碼的特點係用作實現迴圈(loop)的停止條件。例如,迴圈在以下 https www 連結所提供的檔案中進行了描述,該連結具有 htm 後綴:tutorialspoint.com/assembly_programming/assembly_loops。
所述的迴圈(loop)指令係假定迴圈計數器保存於預定的 CPU 暫存器中。當CPU遇到「迴圈」指令時,CPU可能會遞減迴圈計數器,將迴圈計數器與零進行比較,且若計數器大於或等於零時返回到迴圈的起點,從而實現迴圈停止條件。
在某些情況下,可能事先不知道使用了哪些指令,例如因為使用的指令可能取決於不同的CPU之編譯器的選擇。例如,CPU 可能有一個用於迴圈的內置指令,用以處理指定的暫存器或變量,自動增加與減少該暫存器或變量,接著若迴圈計數器如此規定則跳回到迴圈的起點,或者若循環計數器已過則讓程式按順序繼續。
應當理解的是,相對於不被如此考慮的各種指令或其類別,相較於被如此考慮者具有特別低的故障注入風險。為了給出一些非限定的實施例,以下任何或所有皆可能被認為引入了特別低的故障注入風險(這可能肇因於系統設計決策而將以下任何或所有操作碼與低安全風險相關聯,即風險級別低於與除以下操作碼以外的操作碼相關聯的風險級別,及/或提供在遇到此類指令時降低故障注入偵測器的靈敏度級別的邏輯,從而減少誤報而幾乎沒有或沒有不利影響):
a. 載入僅從記憶體中讀取數據的操作碼或
b. 儲存僅在記憶體中儲存數據的操作碼
雖然故障注入可能會導致上述問題而導致誤動作,但駭客根據干擾特定的儲存/加載指令來定義有效的攻擊被認為實際上是不可能的。
第4圖係顯示根據某些實施例所述之操作方法;例如根據第2圖的方法及/或第3圖的系統之操作方法。
第4圖的方法通常結合核心執行指令操作,其中指令係被實時地提供、解碼以及使用,以選擇故障注入偵測器的靈敏度級別。通常,給定的靈敏度級別與多個指令或指令族/組中之每一者相關聯。通常,系統的設計者根據設計者的風險評估而將更高的靈敏度級別與認為會遭受更高風險級別的指令相關聯,例如從駭客為故障注入攻擊尋找合適的目標位置的角度來看,它們被認為是有吸引力的目標,相反的,較低的靈敏度級別與被認為具有較低風險級別的指令。使用第4圖的方法的系統通常被建構成使得指令被實時地解碼和響應。指令被設置為與剛剛解碼並即將執行的指令相關聯或對應的靈敏度級別。接著,在指令的解碼及其由核心執行之間的時間窗口中,進行設置靈敏度級別。
第4圖的方法通常包括以下操作中的一些或全部,適當排序,例如:如圖所示:
在步驟310, CPU向靈敏度級別控制模組所採用的靈敏度級別決策邏輯(又稱靈敏度級別選擇邏輯)提供操作碼指標I。
在步驟320,靈敏度級別決策邏輯產生一個決定:CM 電路的靈敏度級別應為 L_I。
在步驟330, 靈敏度級別控制模組對靈敏度級別控制模組發出信號(或命令),將CM電路的靈敏度級別調整為L_I。
在步驟340,靈敏度級別控制模組向CM電路發出靈敏度級別控制信號。
在步驟350,CM 電路將其靈敏度及別調整為 L_I。例如,可以使用合適的選擇器單元來調整該級別,該選擇器單元的控制包括(或源自)指示將要執行哪個操作碼的靈敏度級別控制命令。
第5-6圖係根據某些實施例所述之動態靈敏度級別調整系統的3級實施例。預先分析裝置的設計,包括風險分類,接著在操作過程中,探測器根據先前所進行的風險分類實時回應。
具體來說,第5圖係顯示具有3級靈敏度動態靈敏度級別調整系統的示意圖,其中3級靈敏度包括被定義為預設級別的最低靈敏度級別以及均高於預設級別的兩個附加級別。第6圖係為第5圖之故障偵測器的方塊圖。
第7圖係顯示根據一些實施例所述之指令解碼信號、組合風險等級(例如低、中或高)和選擇的靈敏度級別(例如保守、中等或激進/高度敏感)的3級波形圖;應當理解的是,可以替代地採用3以外的任何數量的級別,並且不需要如圖所示的預設級別。
在 CPU 的實施例執行管線(execution pipeline)中,如圖所示,如果管線正在處理一條「低風險」指令以及一條「高風險」指令時,一旦高風險指令被解碼,將優先設置偵測器的靈敏度等級。例如,在「中等風險」提取發生的點上,一旦指令被解碼,(緊接著)靈敏度就會增加。類似地,當「高風險」提取發生時,一旦指令被解碼,靈敏度立即進一步增加。更一般地,當第7圖的系統識別出比當前所設置之指令具有更高風險之指令時,新解碼的具有(更高的)風險優先權,直到 CPU 完成處理高風險指令,然後恢復到之前的指令處理。
要知道的是「提取(fetch)」如第7圖中所示,係包括「解碼」,為簡潔起見,因此圖中所示之「提取(fetch)」可以解釋為「提取以及解碼」。
參考第8圖。根據某些實施例,故障注入偵測器包括分別部署在處理器核心中的多個位置中的複數故障注入偵測器單元,如第8圖的實施例中所示,從而在考慮到某些一般故障注入偵測器的位置相關性的同時偵測所有多個位置處的故障注入攻擊。如果部署在第一位置的至少一個偵測器單元偵測到第一位置處的故障注入攻擊時,則故障注入偵測器可以發出警報(及/或可以觸發應用於位置L的故障注入改善操作)。因此,OR函數(或任何其他合適的邏輯函數)可用於組合由複數單元之各個單元所做出的故障注入偵測確定。可以提供任何合適數量的單元且其間具有任何合適的距離,通常根據以下因素中的至少一個來確定:每個單元占用的積體電路晶粒(die)面積、被保護之積體電路的物理特性以及預期故障注入攻擊的空間特徵。
第8圖係根據本發明的某些實施例所述之部署在處理器核心中各個位置並分別佔據多個積體電路晶粒區域之複數故障注入偵測器單元的簡化示意圖。
對於本發明的某些實施例,使用方式比比皆是。
例如,共同擁有的美國專利 9,523,736 描述了偵測給定電網的不同分支之間的狀態差異。積體電路中的電氣邏輯網路通常預期處於相同狀態,例如1或0的邏輯狀態,通過所有分支。因此,當在同一邏輯(電氣)網絡上的兩個物理點之間偵測到電壓位準差異時,很可能代表故障注入嘗試導致局部變化。設計人員可能會認為,該位置與其他地方之間的差異(例如,兩點之間的 50mV)是正常的,而 300mV 的差異對於積體電路功能的風險來說是足夠異常的,而 200mV 的差異雖然是異常的,但不視為有風險。根據某些實施例,不僅僅是設計目標為 300mV 的偵測器,偵測器取決於靈敏度的變化級別,可以通過在此所述之虛擬控制來偵測 200mV 的差異或 300mV 的差異,例如可以實時向偵測器發送設置控制信號,以將偵測器設置為 200 mV 之靈敏度級別或 300 mV之靈敏度級別。因此,系統實時確定是否將 50mV 或 200mV 或 300mV 視為差異,其中差異的正偵測(positive detection)代表已偵測到故障注入。
可以理解的是,除了故障注入風險之外,可能還有其他或者比故障注入風險更一般的使用方式,這將證明實時調整靈敏度級別是合理的。例如,據信駭客會研究和特性畫他們所針對的給定裝置對故障注入的靈敏度,這可能先於駭客集中嘗試在非常特定的時間及/或特定的裝置位置注入故障。實時、隨機或根據實時偵測到的風險而更改靈敏度級別,例如如本文所述通過將特定指令與特定風險級別相關聯,可能會混淆或干擾此類研究。
此外,如果在特定的操作週期內裝置實時偵測到大量(超過臨限值)的故障注入嘗試,例如:在 Y 時間內進行超過 X 次偵測。例如,在 100% 的系統運行時間中,可能存在較低安全風險的時期,例如但不限於根據經驗觀察到駭客不太流行的時期,並且可能存在較高安全性風險的時期,例如但不限於從經驗上觀察到更受駭客歡迎的時期。
可以記錄偵測到的故障注入的時間標記事件,之後合適的程式碼可以隨時間跟踪故障注入並辨別具有特別高或特別低的故障注入發生率的外圍時間段。
可以理解的是,這裡的故障偵測器可以整合至更大的系統中,從而改進它們的操作。
例如,應當理解的是,本文所示以及所述的實施例不需要充當使條件分支操作更難以破解的唯一防線。相反的,本文所述的故障偵測器可以有效地與傳統的反駭客技術相結合,以在程式碼級別對抗故障注入的脆弱性,例如:
a. 通過防止或阻止或減少故障注入的發生或發生率及/或
b. 通過規避或改善故障注入的影響,一旦發生時,
其中任何一個都可以由這裡所示以及所述的故障注入偵測技術所觸發。
可以採用在此所示以及所述之用於偵測故障注入的任何方法,並且可以增加或替換在先前系統中使用的先前故障注入偵測技術,該先前系統包括一旦被偵測到可操作用於規避或改善故障注入影響的模組。例如,當由兩個或多個故障注入偵測器中的任一個觸發時,可以激活該模組。
通常,類別 b 需要偵測故障注入。因此,可以通過使用在此所示以及所述之改進的、動態控制的故障注入偵測方法來改進類別b中的任何反駭客措施。
一旦偵測到故障注入,例如如本文所示以及所述的,任何合適的故障注入影響改善操作可以由此被觸發並且可以響應地執行,以改善例如糾正至少一種影響,例如故障注入的不良影響,例如但不限於適用於以下故障注入改善操作:
a. 將裝置置於不可逆轉的狀態,阻止任何進一步的選項。
b. 使處理器跳轉到指定的例程,例如執行整體完整性檢查,然後通常會重置或重新啟動 CPU。
c. 將處理器置於無限迴圈中,直到被看門狗定時器重置。
d. 停止裝置,直到過一段特定的時間。
e. 提高靈敏度級別一既定時間後,如果沒有進一步偵測,靈敏度將恢復為預設值。
f. 在一段時間內禁用特定的預先指定之「風險」功能。風險功能可能是認證的批准、敏感數據的揭露或加密密鑰的揭露。
g. 暫停系統,直到應用電源循環被設置或直到系統或裝置硬體重置;看門狗定時器重置或任何其他用於釋放卡住 CPU 的停止標準或機制。
應當理解的是,上述故障注入改善操作僅僅是可以為被設計為改善故障注入攻擊的不良影響的模組提供的功能的實施例。改善操作或功能可包括,防止或阻止或減少故障注入的發生或發生率及/或一旦故障注入發生就迴避或改善其影響。應當理解的是,改善操作可以在硬體及/或軟體中實現並且可以利用處理器核心的程式/數據記憶體。
可以理解的是,可以執行不止一個這樣的故障注入改善操作。例如,上面的操作 e 可能會與操作 a – d 或 f – g 之一者相結合。
實現一系列條件分支:例如,許多技術中的一種,用於使故障注入更加困難,因此不太可能,例如按照上面的類別 a,重複條件分支 n > 1 次,例如兩次 (n = 2)。 在這種情況下,第一個分支跳轉到第二個分支,第二個分支是跳轉到最終目的地的分支,n = 2 中的兩個分支,或更一般地說,所有 n 個分支都基於相同的條件。這解決了漏洞,因為在這裡對於要被駭客入侵的分支,單個故障是不夠的,反而需要在兩個或更多通常為 n 個節點的每一個節點注入故障,這增加了駭客攻擊主題的複雜程度執行流程。應當理解的是,如果系統設計者需要,本文所示以及所述的實施例可以與其他反駭客措施(例如任何合適的措施來改善例如糾正至少一種影響,例如故障注入的不良影響)相結合,從而一起使條件分支操作更難以駭入。以上有關「Implementing A Sequence Of Conditional Branches」的技術藉由使故障注入更困難來阻止故障注入,因此不太可能可以例如與用於改善故障注入的影響或不良影響的任何合適的技術相結合以改善故障輸入的影響或負面效應。合適的技術可為,例如包括使用在此所示以及所述的任何實施例來偵測故障注入,然後當偵測到故障注入時,實施任何合適的故障注入影響改善措施。
在共同擁有的美國專利 9,523,736 中描述了一種用於更好地偵測故障注入(並因此更好地改善其影響,例如通過停止系統直到應用電源循環)的已知技術,該專利描述了一種用於偵測故障注入的裝置包括跨越機體電路以及電路之高扇出網路。在積體電路的功能操作期間,高扇出網絡可以持續不活動,並且電路可以被配置為偵測高扇出網絡中多個採樣點處的信號位準,並通過基於感測到的信號位準而偵測高扇出網路中的信號異常來識別故障注入嘗試。該電路可以被配置為偵測高扇出網絡中多個採樣點處的信號位準,以基於感測到的信號位準,在積體電路的功能操作期間區分高扇出網路中的合法信號變化和信號異常,並通過偵測信號異常來識別故障注入嘗試。該電路可以被配置為響應於識別故障注入嘗試而修改高扇出網路中的一個或多個信號位準。由於ALERT信號的設置,控制單元或感測器48可以修改網路根40或高扇出網路的另一分支上的信號位準(例如,強制信號處於活動狀態)。
另一個例子是偵測硬體突波(glitch),例如由外部(如,電磁能量源)所引起的積體電路中的電源/接地發生突波。通過電源突波進行故障注入是一種已知用於入侵積體電路裝置的方法。多年來,電磁 (Electromagnetic,EM)突波一直被認為是實現對積體電路的物理攻擊的有效故障注入技術。用於指示故障注入漏洞且「承受」著安全級別以及誤報(false alarm)(又稱假陽性(false positive))之間的權衡之偵測硬體突波的電路,包括,如可通過 網際網路在以下 http 位置獲得的電路:
ieeexplore.ieee.org/document/5376828;
Zussa, L 等人所著,「Efficiency of a glitch detector against electromagnetic fault injection」ieeexplore.ieee.org/document/6800417/
並在以下 https www 位置:
blackhat.com/docs/eu-15/materials/eu-15-Giller-Implementing-Electrical-Glitching-Attacks.pdf。
關於故障注入攻擊偵測器的最新知識在日期為 2016 年 12 月 16 日之「Cheap & Cheerful: A Low Low-Cost Digital Sensor for Detecting Laser Fault Injection Attacks」中有所描述,可通過網際網路在以下 http 位置獲得:www- users.math.umn.edu/~math-sa-sara0050/space16/slides/space2016121602-37.pdf。建議的解決方案是可調的(「該傳感器具有雙向偵測能力,且後端階段(back-end stage)的靈敏度可調」)。也如別處所指出的,本文件的公開內容,以及實際上這裡引用的所有文件,特此通過引用併入。
可以理解的是,可以通過使用在此所述的實施例而增加操作碼響應動態靈敏度級別調整,來增進上述的偵測器。上述「Cheap & Cheerful」的公開文件中的CPU設計是可調整的,可以適用於隨時提供指示將要執行的指令的輸出信號。例如,可以在設計中嵌入多個實時可選擇的調整,或者可以添加多個電路,每個電路具有不同的調整,其中根據由此處所示以及所述的決策邏輯所指示之靈敏度級別,僅實時選擇多個電路之一者之其中一個輸出。
一般而言,本領域已知的任何故障注入攻擊對策如以下所述:
由 Thierno Barry、Damien Courousse、Bruno Robisson所著之「Compilation of a Countermeasure Against Instruction-Skip Fault Attacks」,可通過網際網路在以下 https 位置中獲得:hal-cea.archives-ouvertes.fr/cea-01296572/document;以及
「Low-Cost Software Countermeasures Against Fault Attacks: Implementation and Performances Trade Offs」可通過網際網路在以下 http 位置獲得:euler.ecs.umass.edu/research/bpbk-WESS-2010.pdf
可以與本發明的實施例共存,作為互補的偵測/保護層。這一切共同增強了 CPU 或類似的裝置免受攻擊的總體保護程度,例如故障注入攻擊。
可以理解的是,類比電路通常設計有調整的選擇,例如提供多個靈敏度級別之多個偵測級別/臨限值,因此可能難以提前預測哪些級別/臨限值在實際電氣系統環境中最有效。一般而言,一旦在矽電路中,就執行測試以確定哪種配置最有效,然後根據某些實施例,電路可以被配置為一個特定的「最佳」或最可行的設置,而不是配置為單個測試選擇的設置。取而代之的是,保留所有或多於一個的多個設置,並且如本文所示以及所述,添加控制電路以實時選擇使用多個設置中的哪一個。然後可以簡單地進行測試以重新確認電路在真實矽中的性能。
此處所示以及所述的實施例的一個特定優點是使的故障注入偵測的安全級別以及誤報程度之間的權衡是高度可調整的,即使在單個操作碼上也是如此。通過將必要但令人遺憾的誤報的高容忍度(或低安全級別)限制在那些需要如此高容忍度的操作碼,並希望降低誤報的容忍度(或低安全級別)適用於所有不需要如此高容忍度的操作碼,允許在不小的程度上克服權衡。
應了解的是,本文的特定實施例並非旨在進行限定。本發明旨在包括例如與CPU或處理器結合操作的任何實施例,這些CPU或處理器在內部具有作為將要執行的指令的解碼結果的信號。根據這些實施例,這些信號被發送出 CPU,從而允許 CPU 外部的至少一個操作單元基於這些信號的狀態來採取行動,從而利用在一個環境中可用且設計用於 CPU 內部目的的信號用於另一個環境,通常用於CPU 外部目的係用於 CPU 外部位置或環境。例如,響應於將要執行哪個操作碼/指令的實時指示,安全系統中的靈敏度級別控制模組可以同時(例如實時)調整,可操作以對抗故障注入攻擊的對策電路中的故障注入偵測器功能的靈敏度級別(也稱為安全級別)。
如果用於實現這裡的某些實施例,韌體則可以保存在非揮發性記憶體中,例如快閃式記憶體或 ROM。可以使用任何合適的技術來防止韌體位置的限制而干擾快閃記憶體的管理。
或者,本文描述的某些實施例可以部分的或單獨的(即,沒有韌體)在硬體中實現,在這種情況下,本文描述的變量、參數、順序操作以及計算中的一些或全部可以在硬體中。
如本文所用的術語「對策(Countermeasure,CM)」旨在包括晶片上電路的操作的任何方面,其通常可實時對控制信號做出反應,因此通常是硬體實現的,其保護CPU及/或晶片中的任何其他操作功能或阻止故障注入攻擊,例如但不限於電源突波攻擊、時脈突波攻擊以及信號突波攻擊。
一些對策是「迴避(evasive)」的,因為它們混淆了敵人或攻擊者該於何時何地注入故障;可以理解的是,如果攻擊者在「錯誤的」(從攻擊的角度來看)地點或時間注入故障,則攻擊不太可能導致其預期效果。
例如,這篇文章 https://www.nuvoton.com/support/technical-support/technical-articles/TSNuvotonTechBlog-000154/ 介紹了「隨機延遲和隨機變化處理流程的順序」,這兩者都會產生不可預測的系統執行時序,作為針對故障注入攻擊的對策,解釋「讓攻擊者無法輕易的了解系統內部運作的時序,將會是一個有效的防護,最簡單的方法就是建立不可預測的系統時序和處理流程, 讓攻擊者不容易找到合適的攻擊時間點,也不容易持續攻擊到同一個關鍵運行點,而這可以透過隨機延遲和隨機變化處理流程的順序來實現。」
在本文中所使用之術語對策(countermeasure,CM)包括可操作以偵測及/或響應攻擊的任何機制、電路、偵測器或其他硬體或韌體或軟體,例如通過反擊或採取行動來反擊曾經或將要或可能已經或即將由攻擊引起的任何危險或威脅。對策可以包括一種機制,例如溫度傳感器或由攻擊觸發的突波偵測器(又稱為「陷阱(trap)」或「暗門(trapdoor)」)因此偵測到攻擊;然後,該機制也可以觸發適當的動作,例如辯護或決議。
CM可以包括由攻擊觸發及/或觸發保護受保護電路的動作的任何硬體、韌體甚至軟體,無論是全部還是部分,無論是在攻擊之前還是攻擊期間,例如主動或在攻擊之後,例如追溯。
本文中的術語「突波(glitch)」旨在包括在積體電路中的特定點或積體電路IO 端子/引腳處施加一些外在的電、磁、雷射或其他能量,這會以各種可能的方式干擾晶片功能,例如但不限於導致 CPU 採取 CPU 不應該採取的條件分支,導致邏輯狀態機(state-machine)做出邏輯狀態機不應該做出的狀態改變,由外在故意地改變暫存器或記憶體的狀態位元,使某些晶片邏輯暫時產生不正確的(從設計者的角度來看)邏輯結果。本領域中使用的術語「突波(glitch)」旨在包括發生在信號上的任何轉變。這通常會在信號穩定到其預期值之前發生,尤其是在數位電路中。通常,轉變包括通常持續時間較短的電脈衝,例如由於可能來自共同來源但可能具有不同延遲的多個信號之間的競爭條件(race condition)。某些電子元件,例如觸發器,需要由至少給定長度的脈衝所觸發,否則觸發器(例如)無法正常工作。在這種情況下,比最小長度短的脈衝也被認為是突波。突波還可以包括矮波(runt pulse),或者其幅度小於正確操作所需的最小位準的脈衝,及/或例如可能由震盪或串音(crosstalk)引起的突波(spike)。例如在適當調整時序的同步電路中,突波(glitch)可能無害或耐受良好,但更多情況下會構成導致誤動作的影響,因此被視為故障或設計錯誤。此處使用的術語突波(glitch)通常包括發生在信號及/或電源/接地線上並被引入攻擊者的轉換,其目的是使積體電路出現故障,及/或使積體電路執行某些操作,或無法執行某些操作,透過他們的委託(commission)或疏忽(omission)而分別產生攻擊者想要的結果,例如向攻擊者揭露秘密資料,如儲存在積體電路上的社會安全號碼。
根據某些實施例,一種安全系統被配置為部署在要保護的晶片上,該安全系統包括至少一個配置為部署在晶片上的故障注入偵測子系統,每個故障注入偵測子系統具有實時可選的多個靈敏度級別,並包括:至少一個硬體故障注入偵測器電路,用以部署在晶片上,以及與其耦合的靈敏度級別控制邏輯,靈敏度級別控制邏輯用於部署在晶片上且實時操作以通過生成靈敏度控制信號(也稱為靈敏度級別選擇)而將故障注入偵測子系統自多個可選靈敏度級別中的目前靈敏度級別轉換至多個可選靈敏度級別中的下一個靈敏度級別,並將靈敏度控制信號發送到子系統中至少一硬體故障注入偵測器。
可以理解的是,任何合適的機制都可以觸發狀態改變。晶片狀態轉換可以由硬體自動發生,例如在偵測到無活動時,或可由韌體觸發。
可以理解的是,晶片上可能有一個或多個子系統,並且這些子系統中的每一者可包括一或多個硬體故障注入偵測器、一或多個靈敏度級別控制邏輯電路,其中一或多個靈敏度級別控制邏輯電路的每一者都可耦接至一或多個硬體故障注入偵測器,以及一或多個功能模組,每個功能模組可與不同的偵測器相關聯。
可採用適用於多個靈敏度級別的任何合適的實施方式。可以使用具有多個對應偵測位準的電壓突波偵測器(例如,如本文中詳細描述或顯示的),或者具有多個對應的溫度偵測臨限值的溫度感測器。
術語「突波(glitch)偵測器」旨在包括監控電源線並在每次功率位準下降到低於  額定的功率位準的 X%(或 Y mV)時所觸發的任何電路。每次偵測到這種下降時,這可能是由於攻擊者試圖惡意操縱晶片的電源所注入的故障。
突波(glitch)偵測器可以通過(偵測)突波(glitch)偵測器監測的任何電源或信號上的突波(glitch)來觸發。類似地,當放置感測器的晶片的某個區域的溫度偏離(通常預定義的)「正常」溫度範圍時,可以觸發溫度傳感器。當CM被觸發時可能發生的其他事件包括,例如,停止CPU執行及/或選擇性地重置某些晶片機制及/或阻止存取某些記憶體區域及/或禁用某些晶片IO通道的功能。
提供具有多個靈敏度級別的對策的另一個實施例係為給定子系統可以包括多個偵測器,其中多個偵測器的子集合可以是活動的,例如100個偵測器中只有25個的子集合可以是活動的,或者50個偵測器中只有第二個子集是活動的,或者只有75個偵測器的第三子集可以是活動的,從而在各種不同時間點產生每個子系統的複數個(例如,在這種情況下為3個)靈敏度級別。
更一般地說,子系統可以包括多個偵測器,並且子系統在時間 t 的靈敏度級別可以實現為多個偵測器中的多個偵測器,這些偵測器在時間 t 啟用,通常靈敏度級別控制邏輯確定在時間 t 啟用許多偵測器中的多少個偵測器,從而提供具有實時可配置靈敏度級別的對策,使得透過較少數量的致能的偵測器電路來實現較低的靈敏度級別,且透過較大數量的致能的偵測器電路來實現較高的靈敏度級別。
可以偵測故障注入攻擊的硬體偵測器電路的多個實例(例如,突波(glitch)偵測器、或溫度傳感器或其他對策)可以分佈在要保護的晶片的至少一(通常是預定義的)部分之上,或者均勻分佈,或者使用預定義的、有意的放置,而這尤其取決於晶片之功能模組的位置及/或與其相關的安全風險。
通常,至少一個故障注入子系統還包括部署在晶片上之至少一個功能模組,實時產生輸出信號,並將輸出信號發送到靈敏度級別控制邏輯,從而提供具有關於要從多個可選靈敏度級別中選擇的下一個靈敏度級別的指示之靈敏度級別控制邏輯。
例如,每個功能模組可包括:
加密加速器;及/或
通信功能模組(例如,通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter, UART)、I2C、USB 控制器或任何(通常是硬體)模組)使用一組特定的信號並遵循預定義的協議,與另一個晶片及/或另一個可能部署的子系統進行通信在同一個系統板上;及/或
外圍功能,例如定時器或功能模組控制對非揮發性記憶體的存取,例如一次性密碼、看門狗定時器、中斷控制器、DMA 控制器。
由給定功能模組所產生的每個輸出信號通常指示該功能模組的當前狀態,或該功能模組的狀​​態將是什麼(例如,功能模組將要轉變到的狀態)。例如,功能模組可以包括處理器核心,其中處理器核心用以指示處理器核心將要執行哪些指令的輸出。功能模組可產生指示功能模組將要轉換到哪個狀態(例如致能與非致能)的輸出。功能模組可產生指示特定活動(例如密碼活動)即將開始由功能模組所執行或密碼活動可能即將在功能模組中結束的輸出。
通常,模組每次保持相同狀態時(每次下一狀態相對於當前狀態不變),輸出信號保持不變。在這種情況下,只要被選擇的下一個靈敏度級別受到目標模組的影響,就可以是當前的靈敏度級別。
可以理解的是,一個晶片可以包括任意合適數量的故障注入偵測子系統,每個故障注入偵測子系統可包括耦接至靈敏度級別控制邏輯之任意合適數量的硬體故障注入偵測器電路,且可包括任意合適數量的功能模組。例如,第9圖係顯示在其上部署了包括單個功能模組91、靈敏度級別控制邏輯92、和單個硬體錯誤注入偵測器93的單個子系統的晶片。在第10圖中,晶片上部署了單個故障注入偵測子系統,此子系統包括3個功能模組91a、91b、91c。在第11圖中,晶片上部署了單個故障注入偵測子系統,與第10圖一樣,子系統包括3個功能模組91a、91b、91c,而在第11圖中,子系統包括2個硬體錯誤注入偵測器電路93a、93b。第12圖係顯示了其上部署了兩個子系統且每個子系統包括3個功能模組以及一個硬體錯誤注入偵測器之晶片。
因此,如至少一個/或多個功能模組可包括多個功能模組並且靈敏度級別控制邏輯可以透過將來自多個功能模組之每一者的輸出指示組合成單個靈敏度控制信號集合,而導出要被選擇之下一靈敏度級別。
通常,每組信號包括多位元靈敏度控制信號。
通常,提供複數故障注入偵測子系統,其中每個故障注入偵測子系統被配置為部署在晶片上且包括至少一個硬體故障注入偵測器,並且每個故障注入偵測子系統與靈敏度級別控制邏輯相互耦接。
根據某些實施例,系統部署在被保護的晶片上,並且至少一功能模組包括至少第一功能模組以及第二功能模組。一般而言,複數子系統包括分別保護第一功能模組以及第二功能模組的第一子系統以及第二子系統,第一功能模組比第二功能模組更靠近第一子系統,第二功能模組比第一個功能模組更靠近第二子系統。
應當理解的是,故障注入被電氣地和物理地施加到作為目標的晶片電路的附近。因此,功能模組以及「負責」保護該功能模組的偵測器之間相互接近是合乎需要的,以允許偵測器(故障注入偵測器電路)有效地攔截可能是故障注入嘗試的相關活動。如果需要,功能模組以及給定子系統的偵測器之間的距離(例如,用以確定哪些功能模組更接近哪些子系統)可以定義為偵測器在晶片上的位置與功能模組的邏輯之「加權中心」之間的距離,其中「加權中心」指的是功能模組之邏輯中的一個點,對於該點,從該點到功能模組中包含的每個單元(例如到其中的每個邏輯閘(比如說包含在給定功能模組中的 10k 個邏輯閘))的距離平方之總和的平方根,相對於功能模組之邏輯中所有其他點的類似平方根而言是最小的。
通常,多個故障注入偵測子系統中的至少一個子系統S保護晶片上的至少一個功能模組。通常,來自多個子系統的相應硬體故障注入偵測器中的每個單獨偵測器具有由單獨偵測器所保護的至少一功能模組所實時選擇的靈敏度級別。
特定功能模組與特定偵測器之間可能存在排他性關聯。然而在一般情況下,每個功能模組可能影響(例如為其選擇靈敏度級別)一個以上的探測器,並且每個探測器可能受到多個功能模組的影響,例如可以透過組合由多個功能模組產生的輸出來選擇給定的偵測器的靈敏度級別,這些功能模組通常由該偵測器所保護(例如在其偵測範圍內)。
通常,每個偵測器具有多個可實時選擇的靈敏度級別。
根據某些實施例,靈敏度級別控制邏輯根據至少部分地某些晶片上的模組是否致能,來實時選擇可控的靈敏度級別。
例如,當某些晶片上的模組處於致能狀態時,可控靈敏度級別可以由靈敏度級別控制邏輯選擇為低於當某些晶片上的模組不致能時由機制所選擇的可控靈敏度級別。
及/或,例如,當給定的晶片上的模組處於致能狀態時,可由靈敏度級別控制邏輯選擇的可控靈敏度級別高於當給定的晶片上的模組處於未致能狀態時由靈敏度級別控制邏輯所選擇的可控靈敏度級別。
晶片上的模組可以包括如:
a. 進行通信的通信模組,在操作時被認為是安全關鍵的,例如發射器,可用於在晶片外部傳輸被視為機密的數據,或接收器,可用於接收數據而關鍵數據影響晶片任務的正確執行。
b. 被視為安全關鍵的 GPIO 模組,用以控制和監控某些 IO 信號,例如控制晶片的輸出信號,這些信號致能晶片外的某些功能,關鍵的是除非某個特定的安全標準,例如密碼認證成功,否則不得啟用這些功能。
c. 一個特定的記憶體介面模組,在處理預定義的記憶體區域時被認為是安全關鍵的。例如,對用於儲存關鍵或秘密信息的給定儲存區的存取可能被認為是安全關鍵的。該區域從位址 A 開始,到位址 B 結束;這兩者都可以是可編輯的。解碼器知道或確定正在存取該區域內的位址,並且可以輸出發送到靈敏度級別控制邏輯的信號作為響應,告訴靈敏度級別控制邏輯提高其靈敏度級別,以便在從那個記憶體區域獲取數據時產生更高的安全性。
d.自檢模組,例如當運行時被認為是安全關鍵的一個測試某個記憶體陣列。可以理解的是,記憶體錯誤會導致安全問題,因此一些傳統的安全系統在開始使用被測試單元之前會執行某些單元的自檢。干擾這種自檢會導致安全系統發生誤動作,無論是非嚴重的還是嚴重的,這取決於被測試單元的重要程度。
如果該模組在受到干擾或被駭客入侵時會對晶片的安全產生嚴重影響,則該模組通常被認為是關鍵或安全關鍵的,因為它會對晶片的操作產生嚴重的不利影響,從而產生風險。
可以理解的是,可以在任何合適的階段做出關於什麼是關鍵的決定。例如,晶片的架構者可以決定哪些元件或功能模組是關鍵的,或者可以決定哪些元件或功能模組(晶片的元件或功能模組的所有或任何子集合)可被認為是關鍵的,將決定的自由度留給後面的階段,例如系統的設計者,可以隨後決定致能什麼。
根據某些實施例,關於什麼是關鍵的決定在積體電路初始化期間被編輯以及配置,然後通過設計的操作而保持固定。
根據某些實施例,例如對於包括 CM 和靈敏度控制的系統,靈敏度可以設置為給定值(例如最大值),直到積體電路的韌體被另行設置。由於配置是關鍵階段,因此該實施例允許在釋放CM以在正常級別運行之前進型高度保護之配置,正常級別通常比為配置階段所設置的安全級別更不安全。
根據某些實施例,某些元件或功能模組被配置為具有向靈敏度控制指示它們當前是致能還是非致能的能力。例如,每次加速器主動執行加密活動時,諸如加密加速器之類的給定功能可產生輸出信號。該輸出可以連接到靈敏度級別控制邏輯,其可相應地設置對策電路靈敏度的級別作為回應。
應當理解的是,可以使用任何合適的技術來確保給定元件或功能模組知道它是否是致能。例如,加密加速器通常加載要處理的數據,然後通過設置「開始」或「啟動」位元來促使其採取行動。一旦數據加載或一旦開始/啟動被致能時,加速器可被認為是致能的,並且直到數據被載入或直到開始/啟動被致能之前被認為是未致能。當到達其內部狀態機中的狀態(又名「傳輸開始」狀態)時,通信模組可知道它已經開始通信,並且如果通信模組不在「傳輸開始」狀態,知道它並未致能。
根據某些實施例,至少一個功能模組可操作以產生至少一輸出信號並將其發送到靈敏度級別控制邏輯,該輸出信號包括指示模組是否致能的狀態指示。通常,邏輯根據至少部分的狀態指示來選擇下一個靈敏度級別。
根據某些實施例,當且僅當模組是致能的時,下一個靈敏度級別被選擇為給定級別。根據其他實施例,下一個靈敏度級別既取決於模組是否處於致能狀態,也取決於其他因素,例如模組是高風險模組還是低風險模組(這可能例如需要相對於高風險模組稍低的靈敏度級別,即使是致能的)。
根據某些實施例,響應於功能模組中的至少一個單獨模組變為活動,邏輯至少一次選擇更高的下一靈敏度級別。
根據某些實施例,至少響應於個別的模組變得不活動,邏輯至少一次釋放至比更高的下一靈敏度級別較低的級別。
可以理解的是,如果沒有其他模組要求更高的靈敏度級別,則可能發生釋放到較低的靈敏度級別,並且如果任何其他模組確實要求更高(例如,當前)靈敏度級別,則可能不會發生釋放到較低的靈敏度級別。相反的,需要提升靈敏度級別的單個模組可能會導致靈敏度提升到更高級別。
因此,系統可以利用這樣一個事實,即在 100% 的系統操作時間中通常存在較低安全風險的時段,例如但不限於,根據經驗,已經觀察到不太受駭客攻擊的時段,及/或即使確實發生了攻擊但每次攻擊導致較少負面結果的時期,並且存在較高安全風險的時期,例如但不限於,根據經驗,已經觀察到更受駭客攻擊的時期及/或每次攻擊將導致更負面結果的時期。然後,系統將系統對安全威脅更敏感的時間限制在第二種類型的時段內,從而總體上降低系統對誤報的感受性,相對於系統在 100% 的時間內對故障注入具有最高靈敏度之情況下,使系統更安全且同時不影響可用性和使用性。
根據某些實施例,至少一個輸出信號代表與至少一個功能模組的當前活動相關聯的風險級別。通常,靈敏度級別控制邏輯至少部分地從風險級別導出靈敏度級別,並將該靈敏度級別選為下一個靈敏度級別。
通常,晶片架構者和晶片設計者會提前確定合適的風險等級(例如:確定密碼活動是最高風險活動等),然後進行相應設計,為靈敏度級別控制邏輯提供狀態信號或輸出信號以進行實時監控,允許邏輯相應地實時調整靈敏度級別控制信號。例如,如果希望基於給定模組是否處於活動/非活動狀態來確定靈敏度級別,則這些模組可以被設計為提供指示(例如實時改變)模組是否正在做某事的單個二進制輸出信號,或是否在任何給定時間閒置。對於多個 級別的風險評級,設計者可以為多個模組中的每一者提供決策,以便每個模組的狀態攜帶相關資訊。
根據某些實施例,如果功能模組是活動的並且具有第一級別的風險,則邏輯選擇第一靈敏度級別作為下一靈敏度級別。如果功能模組是活動的並且具有第二級別的風險,則邏輯選擇低於第一級風險之第二靈敏度級別作為下一級別風險。如果功能模組不活動,則選擇第三級靈敏度作為下一個靈敏度級別。
可以理解的是,可以提供任何合適數量的風險級別,例如 2 或 3 或 4 或更多風險級別,通常取決於晶片設計所提供的靈敏度級別的數量(或者,晶片被設計為提供足夠的靈敏度級別以適應所需的任何風險分級解決方案)。
應當理解的是,攻擊者有時可能知道加密活動何時發生,在這種情況下,CM 在這種情況下更加敏感可能尤為重要,以便在這種情況下提供更好的保護。 因此,根據某些實施例,靈敏度級別控制邏輯至少部分地根據晶片是否正在執行加密加速來實時選擇可控靈敏度級別。
根據某些實施例,功能模組包括與高風險級別相關聯的密碼模組。
例如,當CPU正在執行加密加速時,可控靈敏度級別可被靈敏度級別控制邏輯強制為高於當CPU沒有執行加密加速時靈敏度級別控制邏輯所強制的可控靈敏度級別之靈敏度級別。
術語「更高的靈敏度」意味著相較於當系統的靈敏度級別較低時被診斷為故障注入,更多的事件被判斷為故障注入。通常,攻擊者會嘗試研究目標裝置何時執行各種操作(例如但不限於加密活動、敏感通信活動,如傳送社會安全號碼或其他敏感數據;存取某些記憶體範圍—這基本上係為另一個實施例;執行某些與安全相關的測量/偵測;時脈電路處於鎖定/調整狀態),然後根據攻擊者所欲完成的目標決定何時進行攻擊。例如,如果攻擊者試圖欺騙系統認為某個軟體(例如由攻擊者注入的惡意軟體)是被授權的,儘管它不是,攻擊者可能會選擇在他知道或認為是加密活動的時間進行他的攻擊。通常,當執行加密活動時,系統會切換到較高的靈敏度級別,儘管這涉及到較高級別的誤報,並且在執行加密活動後,系統會切換回較低的靈敏度級別。
根據某些實施例,靈敏度級別控制邏輯至少部分地取決於晶片的功率狀態,實時地選擇可控靈敏度級別。
當CPU處於閒置功率狀態時,靈敏度級別控制邏輯可以選擇比靈敏度級別控制邏輯在CPU處於活動狀態時所選擇的可控靈敏度級別,更低或更高的可控靈敏度級別。系統可以在閒置時強制第一靈敏度級別,並在活動時強制更高的第二靈敏度級別。例如,由於如果晶片處於休眠狀態,就不太擔心它受到攻擊。或者,系統可能會在致能時強制使用較低的第二靈敏度級別,例如由於執行不必要的故障偵測補救措施是有風險的或不可取的,這通常會給晶片的正常操作帶來很大負擔。
根據某些實施例,CM始終是活動的,但是其靈敏度級別隨時間變​​化,因為CM的靈敏度級別有時會在此所示以及所述的硬體自動降低。
應當理解的是,韌體已知一些功率狀態轉換,例如由韌體觸發的功率狀態轉換,例如韌體通過向控制暫存器寫入一些內容來使晶片處於某種閒置狀態。
因此,根據一個實施例,功能模組包括韌體,該韌體觸發可能的功率狀態之間的轉換,從而使靈敏度級別控制邏輯知道當前狀態。
可以理解的是,即使轉換不是由韌體觸發的,韌體也可以知道電源狀態轉換。例如,退出低功耗狀態通常由硬體觸發,例如計時器或外部事件。在這種情況下,該事件可能會觸發中斷,通過該中斷通知韌體喚醒。
在這些情況下,韌體可以被配置(例如由韌體設計者)以包括至少部分地取決於已知的當前功率狀態的實時靈敏度級別的選擇。
或者,例如如果韌體不知道電源狀態的某些變化,這些變化又稱為轉換可能會產生控制信號,這可能會降低靈敏度級別。
根據某些實施例,晶片具有多種可能的功率狀態,包括至少一種閒置狀態和至少一種喚醒狀態。通常,邏輯響應晶片的新狀態而選擇下一個靈敏度級別,新狀態包括多個可能狀態中的一個。
在該實施例中,功能模組可被稱為電源管理模組或電源控制模組。該功能模組通常不產生或處理任何東西或將任何東西從一個地方移動到另一個地方,而是收集晶片中存在的各種指示,從而控制晶片及其模組的狀態。例如,在偵測到特定的、通常預定義的「進入睡眠」之CPU 指令時,電源管理或電源控制模組(邏輯)可使晶片進入睡眠狀態及/或可禁用某些其他功能。通常,韌體會使晶片進入睡眠狀態。在執行這樣的指令時,CPU可以將自己置於休眠狀態,並且還可以響應於該功率管理邏輯可將晶片的其他部分或功能元件置於休眠狀態而發出信號。
可以在晶片的電源狀態轉換到新狀態之前選擇下一個靈敏度級別。在晶片的電源狀態轉換到新狀態之前,可以將偵測器設置為下一個靈敏度級別。在晶片的電源狀態轉換到新狀態後,可以選擇下一個靈敏度級別。
在晶片的電源狀態轉換到新狀態之後,偵測器可以被設置為下一個靈敏度級別。
應當理解的是,諸如「強制」、「必需」、「需要」和「必須」之類的術語是指為了清楚起見在此處描述的特定實現或應用的上下文中做出的實現選擇,並且不用以限制,因為在另一種實現方式中,相同的元件可能被定義為非強制性和非必需,甚至可能一併消除。
本發明的特徵,包括在單獨實施例的上下文中描述的操作,也可以在單個實施例中組合提供。例如,系統實施例旨在包括相應的過程實施例,反之亦然。此外,每個系統實施例旨在包括系統、電腦可讀介質、裝置的整個功能的以伺服器為中心的「視角」或以客戶端為中心的「視圖」或來自系統的任何其他節點的「視圖」,僅包括在該服務器、客戶端或節點上執行的那些功能。特徵還可以與本領域已知的特徵組合,特別是但不限於在背景部分或其中提及的出版物中描述的那些特徵。相反的,本發明的特徵包括在單個實施例的上下文中或以特定順序為簡潔描述的操作,可以單獨提供或以任何合適的子組合提供,包括本領域已知的特徵(特別地但不限於那些在背景部分或其中提到的出版物中描述)或以不同的順序。 「例如」用於表示不旨在限定的實施例。每個方法可以包括所示或所述的一些或所有操作,適當的排序,例如,如本文所示或所述。
雖然本揭露的實施例及其優點已揭露如上,但應該瞭解的是,任何所屬技術領域中具有通常知識者,在不脫離本揭露之精神和範圍內,當可作更動、替代與潤飾。此外,本揭露之保護範圍並未侷限於說明書內所述特定實施例中的製程、機器、製造、物質組成、裝置、方法及步驟,任何所屬技術領域中具有通常知識者可從本揭露一些實施例之揭示內容中理解現行或未來所發展出的製程、機器、製造、物質組成、裝置、方法及步驟,只要可以在此處所述實施例中實施大抵相同功能或獲得大抵相同結果皆可根據本揭露一些實施例使用。因此,本揭露之保護範圍包括上述製程、機器、製造、物質組成、裝置、方法及步驟。另外,每一申請專利範圍構成個別的實施例,且本揭露之保護範圍也包括各個申請專利範圍及實施例的組合。
301:處理器核心 302:故障注入偵測器 303:故障注入改善電路 91,91a,91b,91c:功能模組 92:靈敏度級別控制邏輯 93,93a,93b:硬體錯誤注入偵測器 21~24,310~350:步驟流程
本發明的一些實施例係於以下圖式中顯示: 第1圖係顯示一般CPU操作週期之現有技術,其特別包括提取過程,其後是解碼,再其後是執行。 第2圖係根據一些實施例顯示用於構建系統的方法的簡化流程圖。 第3圖係根據一些實施例顯示安全系統的簡化方塊圖,其典型特徵在於由處理器核心或CPU執行的指令成為用於調整保護該核心免受一些攻擊(例如執行被認為有被駭客入侵的高風險的條件分支或程式碼的其他部分)的故障注入攻擊偵測器的觸發器,且該觸發器可能會實時觸發偵測器的調整,使其更加敏感。 第4圖係根據一些實施例顯示用於動態靈敏度級別調整系統的實時操作的方法的簡化流程圖。 第5圖係顯示根據本發明之一些實施例所述之動態靈敏度級別調整系統的示意圖,其顯示了3級靈敏度,包括定義為預設級別的最低靈敏度級別以及兩個均高於預設級別的附加級別。 第6圖係顯示第5圖的故障偵測器之一實施例。 第7圖係顯示指令解碼信號、組合風險等級(例如低、中或高)即選擇的靈敏度級別(例如保守、中或激進/高度敏感)之3級波形圖;可以理解的是,可替代地採用除3之外的任何數量的級別。 第8圖係顯示根據本發明之一些實施例所述的多個偵測器單元的簡化示意圖。 第9圖係顯示根據本發明之一些實施例所述的單-單-單的簡化圖。 第10圖係顯示根據本發明之一些實施例所述的多-單-單的簡化圖。 第11圖係顯示根據本發明之一些實施例所述的多單多實施例的簡化圖。 第12圖係顯示根據本發明之另一些實施例所述的構造以及操作的包括複數個多單單組件的實施例的簡化圖。 在本發明範圍內所涵蓋的方法和系統可以任何合適的順序(例如,如圖所示)包括一些(例如任何合適的子集合)或在具體說明的實現中示出的功能區塊。 此處描述和說明的計算、功能或邏輯組件可以以各種形式實現,例如,作為硬體電路,例如但不限於客制化 VLSI 電路或閘陣列,或可編程硬體裝置,例如但不限於 FPGA,或作為軟體程式碼儲存在至少一種有形或無形的電腦可讀介質上並且可由至少一個處理器或其任何合適的組合所執行。特定功能源件可以由軟體程式碼的一個特定序列或由多個這樣的軟體程式碼所形成,這些軟體程式碼共同作用或表現或如本文參考所討論的功能源件所描述的那樣起作用。例如,元件可以分佈在多個程式碼序列上,例如但不限於對象、過程、函數、例程(routine)以及程式,並且可以源自一般協同操作的多個電腦文件。 在此描述的任何邏輯功能可以在適當情況下實現為實時應用,並且可以採用任何合適的架構選項,例如但不限於ASIC或DSP或其任何合適的組合。這裡提到的任何硬體元件實際上都可以包括一個或多個硬體裝置,例如晶片,它們可以位於同一位置,也可以彼此遠離。
91:功能模組
92:靈敏度級別控制邏輯
93:硬體錯誤注入偵測器

Claims (20)

  1. 一種安全系統,用以部署於一晶片之上以保護上述晶片,上述安全系統包括:至少一故障注入偵測子系統,用以部署於上述晶片之上,其中上述故障注入偵測子系統具有複數靈敏度級別,其中上述故障注入偵測子系統包括:至少一硬體故障注入偵測器電路,用以部署於上述晶片;以及一靈敏度級別控制邏輯,用以部署於上述晶片之上且實時操作以通過生成一靈敏度控制信號而將上述故障注入偵測子系統自上述複數靈敏度級別中的一目前靈敏度級別轉換至上述複數靈敏度級別中的下一靈敏度級別,並將上述複數靈敏度控制信號發送到上述故障注入偵測子系統中上述至少一硬體故障注入偵測器電路,其中上述晶片具有複數電源狀態,上述複數電源狀態包括至少一閒置狀態以及至少一喚醒狀態,其中上述靈敏度級別控制邏輯回應上述晶片之一新狀態而選擇上述下一靈敏度級別,上述新狀態包括上述複數電源狀態之一者。
  2. 如請求項1之安全系統,其中上述至少一故障注入偵測子系統更包括:至少一功能模組,用以部署於上述晶片之上,其中上述至少一功能模組實時產生一輸出信號,且將上述輸出信號發送至上述靈敏度級別控制邏輯,藉此指示上述靈敏度級別控制邏輯自上述複數靈敏度級別中選擇上述下一靈敏度級別。
  3. 如請求項2之安全系統,其中上述至少一功能模組產生至少一輸出信號並發送至上述靈敏度級別控制邏輯,其中上述至少一輸出信號包括一狀態指示,用以指示上述至少一功能模組是否為活動的,其中上述靈敏度級別控制邏輯至少部分取決於上述狀態指示,選擇上述下一靈敏度級別。
  4. 如請求項3之安全系統,其中上述靈敏度級別控制邏輯至少一次響應上述至少一功能模組中之至少一個別的功能模組變為活動的,選擇一較高的靈敏度級別作為上述下一靈敏度級別。
  5. 如請求項3之安全系統,其中上述至少一輸出信號代表與上述至少一功能模組之一目前活動有關的一風險級別;其中上述靈敏度級別控制邏輯至少部分的自上述風險級別,導出一靈敏度級別而作為上述下一靈敏度級別。
  6. 如請求項5之安全系統,其中若上述至少一功能模組係為活動的且具有一第一風險級別,上述靈敏度級別控制邏輯選擇一第一靈敏度級別作為上述下一靈敏度級別,其中若上述至少一功能模組係為活動的且具有一第二風險級別,上述靈敏度級別控制邏輯選擇一第二靈敏度級別作為上述下一靈敏度級別,其中若上述至少一功能模組係為不活動的,上述靈敏度級別控制邏輯選擇低於上述第一靈敏度級別之一第三靈敏度級別作為上述下一靈敏度級別。
  7. 如請求項1之安全系統,其中上述功能模組包括驅 動上述複數電源狀態之間的轉換之韌體,使得上述靈敏度級別控制邏輯知道上述晶片操作於上述複數電源狀態之一目前狀態。
  8. 如請求項1之安全系統,其中在上述晶片轉換至上述複數電源狀態之上述新狀態之前,選擇上述下一靈敏度級別。
  9. 如請求項8之安全系統,其中在上述晶片轉換至上述新狀態之前,上述硬體故障注入偵測器電路設置為上述下一靈敏度級別。
  10. 如請求項1之安全系統,其中在上述晶片轉換至上述新狀態之後,選擇上述下一靈敏度級別。
  11. 如請求項10之安全系統,其中在上述晶片轉換至上述新狀態之後,上述硬體故障注入偵測器電路被設置為上述下一靈敏度級別。
  12. 如請求項1之安全系統,其中上述安全系統係部署於待保護之上述晶片之上。
  13. 如請求項2之安全系統,其中上述至少一故障注入偵測子系統包括複數故障注入偵測子系統,其中上述複數故障注入偵測子系統之每一者用以部署於上述晶片之上,且上述複數故障注入偵測子系統之每一者包括上述硬體故障注入偵測器電路以及與上述硬體故障注入偵測器電路相耦接之上述靈敏度級別控制邏輯。
  14. 如請求項13之安全系統,其中上述安全系統係部 署於要被保護之上述晶片之上,其中上述至少一功能模組至少包括一第一功能模組以及一第二功能模組,其中上述複數故障注入偵測子系統包括一第一故障注入偵測子系統以及一第二故障注入偵測子系統,用以分別保護上述第一功能模組以及上述第二功能模組,其中上述第一功能模組較上述第二功能模組更靠近上述第一故障注入偵測子系統,上述第二功能模組較上述第一功能模組更靠近上述第二故障注入偵測子系統。
  15. 如請求項13之安全系統,其中上述複數故障注入偵測子系統中之至少一故障注入偵測子系統保護上述晶片上之至少一功能模組,其中上述複數故障注入偵測子系統之對應的複數硬體故障注入偵測器電路之每一硬體故障注入偵測器電路具有由上述每一硬體故障注入偵測器電路所保護之至少一個別的功能模組所實時選擇之一靈敏度級別。
  16. 如請求項15之安全系統,其中上述每一硬體故障注入偵測器電路具有可實時選擇之上述複數靈敏度級別。
  17. 如請求項1之安全系統,其中上述故障注入偵測子系統包括複數硬體故障注入偵測器電路,其中上述故障注入偵測子系統於一時間點之上述靈敏度級別係由在上述時間點致能之上述複數硬體故障注入偵測器電路中之一數量之硬體故障注入偵測器電路所實現,其中上述靈敏度級別控制邏輯判斷在上述時間點要致能多少個上述複數硬體故障注入偵測器電路;從而提供具有一可實時調整的靈敏度級別的對策,使得以致能 較少數量之硬體故障注入偵測器電路來實現較低的靈敏度級別,以致能較多數量之硬體故障注入偵測器電路來實現較高的靈敏度級別。
  18. 如請求項2之安全系統,其中上述至少一功能模組包括複數功能模組,其中上述靈敏度級別控制邏輯透過結合上述複數功能模組之每一者的上述輸出信號而導出作為上述下一靈敏度級別之一靈敏度級別,並組成一組靈敏度控制信號。
  19. 如請求項4之安全系統,其中上述靈敏度級別控制邏輯至少一次響應上述至少一功能模組中之至少一個別的功能模組變為活動的,而選擇低於上述較高的靈敏度級別之靈敏度級別。
  20. 如請求項3之安全系統,其中上述功能模組包括一加密模組,其中上述加密模組係與一高風險級別相關聯。
TW111107892A 2021-03-30 2022-03-04 安全系統 TWI812042B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/217,472 2021-03-30
US17/217,472 US20210240823A1 (en) 2017-12-18 2021-03-30 System and method for coping with fault injection attacks

Publications (2)

Publication Number Publication Date
TW202238422A TW202238422A (zh) 2022-10-01
TWI812042B true TWI812042B (zh) 2023-08-11

Family

ID=83407262

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111107892A TWI812042B (zh) 2021-03-30 2022-03-04 安全系統

Country Status (3)

Country Link
JP (1) JP7383750B2 (zh)
CN (1) CN115146265A (zh)
TW (1) TWI812042B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116233661B (zh) * 2023-05-04 2023-08-18 新华三技术有限公司 一种网络设备、光模块接入的控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI567581B (zh) * 2009-12-16 2017-01-21 英特爾股份有限公司 用於在隱藏式執行環境中提供完整性驗證與認證之技術的裝置、方法及系統
CN107949846A (zh) * 2015-06-27 2018-04-20 迈可菲有限责任公司 恶意线程挂起的检测
CN110048997A (zh) * 2017-12-18 2019-07-23 新唐科技股份有限公司 处理故障注入攻击的安全系统和方法
US20200301798A1 (en) * 2017-12-08 2020-09-24 Huawei Technologies Co., Ltd. Fault injection system and method of fault injection
TW202131207A (zh) * 2020-01-14 2021-08-16 新唐科技股份有限公司 安全積體電路及其方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003058428A (ja) 2001-08-20 2003-02-28 Sony Corp 集積回路およびデータ処理装置
US10380341B2 (en) 2016-04-01 2019-08-13 Qualcomm Incorporated Adaptive systems and procedures for defending a processor against transient fault attacks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI567581B (zh) * 2009-12-16 2017-01-21 英特爾股份有限公司 用於在隱藏式執行環境中提供完整性驗證與認證之技術的裝置、方法及系統
CN107949846A (zh) * 2015-06-27 2018-04-20 迈可菲有限责任公司 恶意线程挂起的检测
US20200301798A1 (en) * 2017-12-08 2020-09-24 Huawei Technologies Co., Ltd. Fault injection system and method of fault injection
CN110048997A (zh) * 2017-12-18 2019-07-23 新唐科技股份有限公司 处理故障注入攻击的安全系统和方法
TW202131207A (zh) * 2020-01-14 2021-08-16 新唐科技股份有限公司 安全積體電路及其方法

Also Published As

Publication number Publication date
JP2022155571A (ja) 2022-10-13
JP7383750B2 (ja) 2023-11-20
TW202238422A (zh) 2022-10-01
CN115146265A (zh) 2022-10-04

Similar Documents

Publication Publication Date Title
TWI685739B (zh) 處理故障注入攻擊的安全系統和方法
Sun et al. OAT: Attesting operation integrity of embedded devices
CN108304717B (zh) 用于安全监管的电路和方法
US9607151B2 (en) Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection/prevention, and/or other features
Dubeuf et al. Run-time detection of hardware Trojans: The processor protection unit
Sethumadhavan et al. Trustworthy hardware from untrusted components
Gnad et al. Voltage-based covert channels using FPGAs
US10599847B2 (en) Implementations to facilitate hardware trust and security
US11972033B2 (en) Alert handling
Qiu et al. Voltjockey: A new dynamic voltage scaling-based fault injection attack on intel sgx
TW202026929A (zh) 受保護系統及其保護方法
TWI812042B (zh) 安全系統
US20210240823A1 (en) System and method for coping with fault injection attacks
Saß et al. Oops..! I Glitched It Again! How to {Multi-Glitch} the {Glitching-Protections} on {ARM}{TrustZone-M}
Wang et al. An M-Cache-based security monitoring and fault recovery architecture for embedded processor
JS et al. Hardware trojan attacks in soc and noc
Zhu et al. Jintide: Utilizing low-cost reconfigurable external monitors to substantially enhance hardware security of large-scale CPU clusters
Linscott et al. SWAN: mitigating hardware trojans with design ambiguity
Venugopalan et al. Detecting and thwarting hardware trojan attacks in cyber-physical systems
Alanwar et al. Dynamic fpga detection and protection of hardware trojan: A comparative analysis
Provelengios et al. A hardware monitor to protect Linux system calls
Dessouky et al. When a patch is not enough-hardfails: Software-exploitable hardware bugs
Sharma Embedded Systems--A Security Paradigm for Pervasive Computing
Basu et al. Titan: Uncovering the paradigm shift in security vulnerability at near-threshold computing
Fawaz et al. Poweralert: integrity checking using power measurement and a game-theoretic strategy