TW201928677A - 處理故障注入攻擊的安全系統和方法 - Google Patents
處理故障注入攻擊的安全系統和方法 Download PDFInfo
- Publication number
- TW201928677A TW201928677A TW107130113A TW107130113A TW201928677A TW 201928677 A TW201928677 A TW 201928677A TW 107130113 A TW107130113 A TW 107130113A TW 107130113 A TW107130113 A TW 107130113A TW 201928677 A TW201928677 A TW 201928677A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- sensitivity level
- fault injection
- processor core
- instructions
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2113—Multi-level security, e.g. mandatory access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2137—Time limited access, e.g. to a computer or data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明提供一種根據處理器核心執行流程動態地控制故障注入對策電路的安全系統,該故障注入對策電路用於保護該處理器核心免受故障注入攻擊。在一實施例中,安全系統包含一靈敏度等級控制模組,以動態調整靈敏度等級時避免假警報。
Description
本發明一般涉及裝置安全領域,並且更具體地涉及應對故障(fault)注入攻擊。
美國專利號 9523736和其先前技術描述了傳統的安全對策(security countermeasure,CM)的機制和電路。
已知有靈敏度等級可調的對策機制,且已知有頻率突變(Glitch)檢測器,並在下列連結中進行了描述: http://www.invia.fr/detectors/voltage-glitch-detector.aspx 此些網頁係描述了使用“可配置的檢測閾值”;以及 https://hal.inria.fr/emse-01099006/document
“Josep Balasch、Benedikt Gierlichs和Ingrid Verbauwhede所著的白皮書”8-Bit時脈頻率突變對8位MCU的影響的詳細了解和黑盒特性(An In-depth and Black-box Characterization of the Effects of Clock Glitches on 8-bit MCUs)“,可從IEEE獲得,其描述了故障注入研究。
由Martin S. Kelly等人所著的白皮書“藉由執行時資料分析表徵的CPU故障攻擊模型(Characterising 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等人所著的白皮書“電磁故障注入:針對32位元微控制器上的故障模型(Electromagnetic fault injection: towards a fault model on a 32-bit microcontroller)”可從IEEE獲得,其描述了故障注入研究。
NCC集團於2015年11月發布的“實施實用電氣頻率突變攻擊(Implementing Practical Electrical Glitching Attacks)”中介紹了關於頻率突變攻擊的最新知識,並可透過網際網路https://www.blackhat.com/docs/eu-15/materials/eu-15-Giller-Implementing-Electrical-Glitching-Attacks.pdf 取得。
在Thierno Barry、Damien Courouss_e、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的執行流程而操作的認證機制,例如美國專利號9703945。
第1圖繪示CPU操作週期之習知技術,其係取自Mike McDonald和Tony Jacobs所著的“DLX機器的基本操作(Basic Operation of a DLX Machine)”,可在以下網際網路位置獲得: https://www.cs.umd.edu/class/fall2001/cmsc411/projects/DLX/proj.html。
說明書中提及的所有出版物和專利文件以及其中直接或間接引用的出版物和專利文獻的公開內容在此透過引用併入本文。這些出版物和專利文件對可專利性的實質性不予承認。
故障注入是一種廣泛使用和高度有效的(從駭客觀點)技術。某些實施例試圖提供針對故障注入攻擊或指令跳過故障攻擊的改進的保護。
安全系統的衡量標準是誤報率(rate of false positives),又稱假警報(false alarms)以及它們提供的安全等級。本發明的某些實施例試圖提供一種有優勢的系統,即通常在系統全部操作時間(100%)之記憶體在較低安全風險的時期,例如但不限於經驗上被認為不太受駭客攻擊的時期,以及存在較高安全風險的時期,例如但不限於經驗上被認為更受駭客歡迎的時期。然後,系統會將對安全威脅更敏感的時間限制為第二類的時段,從而整體上減少了系統對假警報的靈敏度,使得系統更安全,並在相對於將系統在100%的時間內置於對故障注入具有最高的靈敏度的狀態下,不會影響可得性(availability)和可用性(usability)。
某些實施例試圖提供一種故障注入檢測器,其具有即時操作中動態調整(例如,即時調整)靈敏度等級,其具有比故障注入檢測器確保CPU的單個指令的解碼執行週期(decode-through-execution cycle)更短的回應時間。通常,檢測是連續的,而不是間歇的。
該領域的技術人員可能知道或不知道取決於晶片的狀態,例如取決於晶片是處於活動狀態還是處於睡眠狀態而將對策開啟和關閉。本文所示和描述的特定實施例試圖即時調整靈敏度等級,以犧牲一些誤報為代價來微調提供攻擊保護的裝置中固有的權衡(tradeoffs inherent)。通常地,以對單一操作碼的分辨率來提供對策的控制,例如,因為在第一操作碼(first opcode)時的檢測可能提供第一靈敏度等級,可能是低靈敏度等級,並產生第一權衡,其提供較低等級檢測並遭受較低等級的假警報,並且可以在緊接在第一操作碼之後的第二操作碼的檢測時提供第二靈敏度等級,可能是較高的靈敏度等級,產生第二權衡,其以犧牲更高等級的假警報為代價提供更高等級的檢測。
本發明的某些實施例試圖提供一種安全系統、方法和電腦程序產品,其根據CPU的執行流程動態地控制故障注入對策電路,以保護CPU免受故障注入攻擊。例如,可以提供CPU或處理器核心,其在使用時即時產生將要執行的至少一個條件分支(conditional branch)的輸出指示,以回應於將要被執行的條件分支的輸出指示,如果除了條件分支以外的至少一個指令即將被處理器核心執行,則靈敏度等級配置模組用於選擇比由靈敏度等級配置模組選擇的至少一個靈敏等級更高的下一個靈敏等級。
因此,至少提供以下實施例:
實施例1:根據處理器核心執行流程,動態地控制故障注入對策電路的安全系統,故障注入對策電路用於保護處理器核心免受故障注入攻擊,安全系統包括: 1.處理器核心,其在使用時執行指令並且同時即時地產生至少一些將要執行的指令的輸出指示; 2.具有多個可選靈敏度等級的故障注入檢測器;以及 3.靈敏度等級控制模組,其即時執行以下操作, 接收輸出指示, 使用至少接收輸出指示作為輸入的靈敏度等級選擇邏輯元件,來從多個可選靈敏度等級中選擇下一個靈敏度等級;以及 將故障注入檢測器設置為下一個靈敏度等級, 從而當根據至少一些指令的輸出指示保護處理器核心免受故障注入攻擊時提供差動敏感(differentially sensitive)的故障注入對策電路,如果處理器核心保護被提供在與至少一些指令的輸出指示無關的靈敏度等級時避免至少一個假警報。
實施例2:根據前述實施例中任一項所述的安全系統,其中,其中當靈敏度等級控制模組接收到與風險等級(risk level)R相關聯的單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對與低於風險等級R的風險等級相關聯的至少一個指令選擇的靈敏度等級要高。
實施例3:根據前述實施例中任一項所述的安全系統,其中當靈敏度等級控制模組接收到決定來自中斷處理程序的處理器核心返回的單獨指令的輸出指示時,靈敏度等級控制模組回應性地選擇下一個靈敏度等級,其比針對單獨指令以外的至少一個指令的靈敏度等級要高。
通常,當CPU完成執行if語句(if-statement)時,靈敏度回復到較低的等級,除非即將到來的操作碼指示將要由處理器核心執行的即將到來的指令是另一個條件分支或其他操作碼,且其靈敏度等級配置模組可操作來選擇高靈敏度等級。通常,輸出指示是指示當前時刻處理器核心即將執行什麼的訊號,並且靈敏度等級由靈敏度等級配置模組相應地設置。當下一個或即將到來的操作碼的輸出指示出現時,靈敏度等級再次被相應地調整,因此可以保留相同或改變,這取決於接下來的操作碼是否與前面的操作碼相同,或對應於邏輯元件,其恰好為與前一個操作碼相對應的靈敏度等級。
實施例4:根據前述實施例中任一項所述的安全系統,其中,當靈敏度等級控制模組接收到決定例程返回地址的單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對單獨指令以外的至少一個指令的靈敏度等級要高。
實施例5:根據前述實施例中任一項所述的安全系統,其中,當靈敏度等級控制模組接收到決定迴圈的停止條件的單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對單獨指令以外的至少一個指令的靈敏度等級要高。
實施例6:根據前述實施例中任一項所述的安全系統,其中當靈敏度等級控制模組接收到決定處理器核心執行模式改變的單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對單獨指令以外的至少一個指令的靈敏度等級要高。
執行模式改變可以例如包括在代碼有權訪問某些受限資源(restricted resources)(例如,某些儲存區域、某些硬體功能或其他特定資源)的特權模式(privileged mode)和其中代碼未被授權的非特權模式(non-privileged mode)以訪問受限制的資源。
實施例7:根據前述實施例中任一項所述的安全系統,其中當靈敏度等級控制模組接收到從記憶體讀取資料的單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對所述單獨指令以外的至少一個指令的靈敏度等級要低。
實施例8:根據前述實施例中任一項所述的安全系統,其中,該處理器核心包括記憶體,並且其中當靈敏度等級控制模組接收到將資料從記憶體讀取到本地儲存裝置(例如,高速緩存或暫存器)中的單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對單獨指令以外的至少一個指令的靈敏度等級要低。
實施例9:根據前述實施例中任一項所述的安全系統,其中當靈敏度等級控制模組接收到包括條件分支的單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對單獨指令以外的至少一個指令的靈敏度等級要高。
應理解的是,條件分支可能與高風險等級相關聯,因為條件分支可能是駭客在有限的代碼中尋找有價值的攻擊目標中的有吸引力的目標。例如,條件分支可能是對駭客而言有吸引力的目標,因為分支可以將代碼流(code flow)路由到授權終端用戶秘密資訊的第一選項,或者因此認為終端用戶不可授權而不提供秘密資訊的第二選項。
實施例10:根據前述實施例中任一項所述的安全系統,其中當處理器核心即將執行指令I時,產生與指令I有關的至少一個輸出指示,從而在執行指令I之前提供指令I將要被執行的輸出指示。
實施例11:根據前述任一實施例所述的安全系統,其中其中處理器核心包括適配的解碼邏輯元件,解碼邏輯元件至少一次解碼從程序記憶體獲取的單獨指令,從而導出至少一個CPU內部訊號,至少一個CPU內部訊號隨後操作CPU的至少一個單元,從而執行單獨指令,並且其中解碼邏輯元件還適於在至少一個單元回應於在從程序記憶體取回的單獨指令導出的至少一個CPU內部訊號而操作之前提供單獨指令的輸出指示,以便在執行單獨指令之前而不是在之後將故障注入檢測器設置為下一個靈敏度等級。
實施例12:根據前述任一實施例所述的安全系統,其中處理器核心對複數個操作碼進行解碼,從而生成包括對處理器核心的複數個執行單元的指令的訊號,以及複數個輸出指示包括由操作碼解碼的指令指示的從處理器核心輸出的訊號,由此提供靈敏度等級選擇邏輯元件的將由處理器核心執行的指令的預覽。
實施例13:根據前述任一實施例的安全系統,其中從核心輸出的訊號包括從操作碼解碼的指令。
實施例14:根據前述任一實施例的安全系統,其中故障注入檢測器包括具有分別對應於多個靈敏度等級的多個調諧選項的類比電路。
實施例15:根據前述任一實施例所述的安全系統,其中處理器核心包括適配的解碼邏輯元件,解碼邏輯元件至少一次解碼從程序記憶體獲取的單獨指令,從而導出至少一個CPU內部訊號,至少一個CPU內部訊號隨後操作CPU的至少一個單元,從而執行單獨指令,並且其中對於由解碼邏輯元件解碼的所有指令,解碼邏輯元件還適於在該至少一個單元回應於從程序記憶體得出的單獨指令導出的至少一個CPU內部訊號而操作之前,提供單獨指令的輸出指示,由此確保故障注入檢測器在由靈敏度等級邏輯元件選擇特定靈敏度等級所使用的指令被執行之前而不是在之後始終被設置至每個特定靈敏度等級。
實施例16:根據前述實施例中任一項所述的安全系統,還包括故障注入改善電路,故障注入改善電路被配置為回應於由檢測器檢測到的故障注入而執行至少一個故障注入改善操作。
實施例17:根據前述實施例中任一項所述的安全系統,其中處理器核心包括執行管線(execution pipeline),執行管線包括具有至少一個重疊階段(overlapping phase)的複數個連續指令,其中靈敏度等級選擇邏輯元件向故障注入檢測器提供用於根據至少一個指令I選擇靈敏度等級的指示,指示獨立地與複數靈敏度等級中的最高故障檢測靈敏度等級相關聯。重疊階段可以包括解碼階段和/或執行階段。
實施例18:根據前述實施例中任一項所述的安全系統,其中,至少一個指令I一旦被解碼,就優先於所有正被解碼的其他指令,並優先於將要執行的所有其他指令,其中最高檢測靈敏度等級被設置為在解碼至少一個指令I並僅在該至少一個指令I已被完全執行之後結束,而無關被解碼以及即將被執行的其他指令。
實施例19:根據前述實施例中任一項所述的安全系統,其中處理器核心輸出指示包括哪個操作碼即將被執行的輸出指示。
實施例20:根據前述實施例中任一項所述的安全系統,其中故障注入檢測器可操作以保護CPU,其故障注入攻擊的單個指令的解碼執行週期為T時間單位長,並且其中故障注入檢測器具有比T短的回應時間。
實施例21:根據前述任一實施例所述的安全系統,其中故障注入檢測器包括分別部署在複數個處理器核心位置中的複數個故障注入檢測器單元,從而檢測所有複數個處理器核心位置處的故障注入攻擊。
實施例22:根據前述實施例中任一項所述的安全系統,其中,故障注入檢測器警告在設置於位置L處的至少一個故障注入檢測單元檢測到故障注入攻擊時發出警報。
實施例23:一種根據處理器核心執行流程動態地控制故障注入對策電路的安全方法,該故障注入對策電路用於保護一處理器核心免受故障注入攻擊,該安全方法包括: i)提供該處理器核心,該處理器核心在使用時執行指令並且同時即時產生將要執行的至少一些指令的一輸出指示; ii)提供具有多個可控靈敏度等級的故障注入檢測器;以及 iii)使用靈敏度等級控制模組,即時執行以下操作: 接收輸出指示, 使用靈敏度等級選擇邏輯元件從多個可控靈敏度等級中選擇下一個靈敏度等級,靈敏度等級選擇邏輯元件至少接收輸出指示作為輸入,以及 將故障注入檢測器設置為下一個靈敏度等級, 從而當根據至少一些指令的該輸出指示保護處理器核心免受故障注入攻擊時,提供差動敏感(differentially sensitive)的故障注入對策電路,故障注入對策電路在靈敏度等級與至少一些指令的輸出指示無關時避免至少一個假警報
實施例24:根據前述任一實施例的安全方法,其中處理器核心包括適配的解碼邏輯元件,解碼邏輯元件至少一次對從程序記憶體獲取的單獨指令進行解碼,從而導出至少一個CPU內部訊號,至少一個CPU內部訊號隨後操作CPU的至少一個單元,從而執行單獨指令,解碼邏輯元件還適於在至少一個單元回應於從程序記憶體得出的單獨指令導出的至少一個CPU內部訊號而操作之前,提供單獨指令的輸出指示,以允許故障注入檢測器在單獨指令被執行之前而不是在之後被設置至下一個靈敏度等級。
實施例25:根據前述實施例中任一實施例的安全方法,其中處理器核心透過向其施加組合邏輯來解碼複數個操作碼,從而生成包括到處理器核心的複數個執行單元的指令的訊號,並且輸出指示包括從操作碼解碼出的指令所指示的處理器核心輸出的訊號,由此向靈敏度等級選擇邏輯元件提供尚未由該處理器核心執行的指令的預覽。
可以理解的是,如果需要,某些實施例可以實現為包括電腦程序的電腦程序驅動的決策靈敏度控制產品,該電腦程序通常比由其保護的處理器核心的執行更即時。因此可以提供一種電腦程序產品,其包括具有嵌入其中的電腦可讀程序代碼的非暫態有形電腦可讀介質,電腦可讀程序代碼適於被執行以實現安全方法,安全方法根據處理器核心執行流程控制可操作用以保護處理器免受故障注入攻擊的故障注入對策電路,該方法包括: i)提供處理器核心,處理器核心在使用時執行指令並且同時即時產生將要執行的至少一些指令的輸出指示; ii)提供具有多個可控靈敏度等級的故障注入檢測器;以及 iii)使用靈敏度等級控制模組,即時執行以下操作, 接收輸出指示, 使用靈敏度等級選擇邏輯元件從該多個可控靈敏度等級中選擇下一個靈敏度等級,靈敏度等級選擇邏輯元件至少接收輸出指示作為輸入,並將故障注入檢測器設置為下一個靈敏度等級, 從而當根據至少一些指令的輸出指示保護處理器核心免受故障注入攻擊時,提供差動敏感的故障注入對策電路,故障注入對策電路在靈敏度等級與至少一些指令的輸出指示無關時避免至少一個假警報。替代地或附加地,如果靈敏度等級設置為完全避免假警報,則故障注入對策電路可以檢測到至少一個故障注入,其在CPU保護以無關至少一些指令的輸出指示的靈敏度等級下不會被檢測到。
上面提到的實施例和其他實施例在下一部分中詳細描述。
文中或圖式中出現的任何商標均為其擁有者的財產,在此僅出現以解釋或說明如何實施本發明的實施例的一個例子。
除非另外具體說明,否則從以下討論中顯而易見的是,應該理解,在整個說明書中,利用諸如“處理(processing)”、“計算(computing)”、“估計(estimating)”、“選擇(selecting)”、“排名(ranking)”、“分級(grading)”、“計算(calculating)”、“決定(determining)”、“產生(generating)”、“重新評估(reassessing)”、“分類(classifying)”、“產生(generating)”、“製造(producing)”、“立體匹配(stereo-matching)”、“註冊(registering)”、“檢測(detecting)”、“關聯(associating)”、“疊加(superimposing)”、“獲得(obtaining)”及其類似術語是指至少一個電腦、或電腦系統、或處理器、或類似電子計算裝置的操作和/或過程,其處理和/或變換表示為物理的資料,例如計算系統的暫存器和/或記憶體內的電子數量,轉換成類似地表示為計算系統的記憶體、暫存器或其它這樣的資訊儲存、傳輸或顯示裝置內的物理量的其它資料。術語“電腦(computer)”應該被廣義地理解為涵蓋具有資料處理能力的任何種類的電子裝置,包括(作為非限制性的例子)個人電腦、伺服器、嵌入式核心(embedded core)、計算系統、通信裝置、處理器(例如數位訊號處理器(DSP)、微控制器、現場可編程閘陣列(FPGA)、專用集成電路(ASIC)等),和其他電子計算裝置。
本文單獨列出的元件不必是不同的組件,或者可以為相同的結構。元件或特徵可能存在的陳述旨在包括(a)元件或特徵存在的實施例;(b)其中元件或特徵不存在的實施例;以及(c)其中元件或特徵可選地存在的實施例,例如用戶可以配置或選擇元件或特徵是否存在。
Mike McDonald和Tony Jacobs所著的“DLX機器的基本操作(Basic Operation of a DLX Machine)”,可在以下網址獲得 : https://www.cs.umd.edu/class/fall2001/cmsc411/projects/DLX/proj.html
其中描述了DLX架構中的五個執行階段:指令獲取(Instruction Fetch,IF)、指令解碼(Instruction Decode,ID)、執行(Execution,EX)、記憶體(Memory,MEM)和回寫(Write-Back,WB)。每個階段都需要與最慢的一個相同多的時間,即使它不需要如此多的時間來完成。這段時間係為一個時脈週期(clock cycle)。因此,每條指令從開始到結束總共需要5個時脈週期才能執行。每個執行階段都與CPU中的硬體相對應,如Hennessy和Patterson的第3.1圖所示。資料路徑上的硬體的每個“部分(section)”都可以同時運行,而管線利用這些部分來獲得巨大的性能優勢。非常具體的操作在每個階段完成。
1.指令獲取(IF):從記憶體讀取指令並將其寫入指令暫存器(IR)。更新新的程序計數器(new program counter,NPC),使其指向下一條指令(PC+4,或記憶體中的下一個字元)。
2.指令解碼(ID):解碼指令(基於操作碼)。暫存器(REGS[IR6..10]),及從暫存器文件的REG[IR11..15])的輸出被放置到臨時暫存器“A”和“B”。符號將可能是立即值(immediate value)的指令的部分擴展,並將該值放入臨時暫存器“Imm”中。
3.執行(EX):這裡發生什麼取決於要執行的指令類型。ALU將在這個週期中運行,執行所需的操作。
第1圖是說明常規CPU週期的習知技術圖,其明顯地通常地包括獲取過程,隨後是解碼,隨後執行。
現在詳細描述用於故障注入對策靈敏度調整的系統。
“IF”語句或條件分支是CPU指令的例子,這些指令可能容易受到故障注入的攻擊,又稱為“故障注入攻擊”,例如可能作為故障注入的目標,例如程序流中可能被故意駭客攻擊的點。例如,條件分支可以被配置為基於先前操作跳轉到向用戶提供一些秘密資訊的代碼段,例如,條件是用戶在先前操作中成功提供了用戶認證,或跳轉到其他地方,或根本不跳轉,其中任何一個都不會向用戶提供所請求的資訊(如果用戶未能在先前操作中成功提供用戶認證)。在後一種情況下,即使在之前的操作中用戶未提供必要的用戶認證,駭客可能會在特定時間嘗試注入“故障”,試圖欺騙條件分支指令而跳轉到提供秘密資訊的代碼。
根據某些實施例,提供了一種安全系統,其中處理器核心在(例如,即時使用時)指示哪個操作碼/指令即將被執行。例如,CPU在從程序記憶體中獲取指令時,通常首先對指令進行解碼。指令的解碼通常地包括通常以二進制形式(指令操作碼通常地包括作為相應程序的二進制碼所順序儲存的數字,其可以與指令操作數交錯(interleaved))的邏輯函數作為操作碼的輸入,並且應用邏輯函數(又稱“解碼邏輯元件”),其產生適合於操作CPU的各種單元以執行相應功能的CPU內部訊號,例如用於操作CPU的ALU以執行算術運算(arithmetic operation)等等。根據某些實施例,解碼邏輯元件可以適於將經解碼的訊號輸出到CPU外部的子系統(例如,靈敏度等級控制模組),以使該子系統儘管在CPU外部仍然可以採取行動(例如,選擇靈敏度等級),以回應預先知識(advance knowledge)表徵CPU在某一特定時間處於即將執行的狀態。
可以理解的是,傳統上,內置的CPU解碼邏輯元件被專門設計用於根據正在處理的指令來控制CPU的操作單元,例如ALU,並且CPU不知道哪個指令即將在給定的時間被執行。與此相反,根據某些實施例中,解碼邏輯輸出通常地指示哪個指令是現在即將被執行。此外,在CPU指令內可能有重疊的控制狀態。例如,一個系列的兩個(或N個)不同指令可能具有一些相同的內部控制,因為兩個不同的指令操作相同的CPU模組。
令解碼邏輯元件與外部子系統通信的一個特別的優點可能是由於解碼先於相關的CPU單元(例如,由ALU)對解碼指令的實際執行,外部子系統給予CPU尚未實際執行的指令的預覽。
可以理解,一部分的IC實現低功耗模式。例如,一旦檢測到核心正在執行某些特定的預定義指令(例如,在某些CPU中,WAIT指令或某種其他類型的HALT指令或等待中斷(Wait-For-Interrupt))時,IC可進入低功耗模式,所有這些通常可能會使CPU的核心處於核心通常維持的保留狀態,等待事件觸發核心退出該保留狀態。這將涉及到即將執行哪個操作碼/指令的即時指示。
例如共同擁有的美國專利號9703945,存在基於跟踪CPU的執行流程而操作的認證機制。執行流程可擱置要執行的指令的特定組以對代碼進行認證。具體而言,美國專利號9703945描述了基於跟踪CPU的執行流程操作的認證機制。美國專利號9703945描述了特定的操作或指令,例如訪問記憶體映射的I/O地址的特定空間,其透過系統設計者的決定,認為其需要在代碼認證方面具有更高等級的安全性。因此,一旦檢測到這樣的指令,例如對該I/O地址空間的寫入操作,則執行流程暫時停止,直到某個代碼認證序列完成。完成此操作後,假設相應的代碼已透過認證,則會恢復流程並執行操作。因此,在此方法中,某些指令的觸發會改變程序的流程以執行一些預定義的操作,即對代碼進行認證。
此外,美國專利號9703945描述了一種處理核心,其被耦合以從輸入橋(input bridge)接收程序指令並執行這些程序指令,其中程序指令包括能夠通過輸出橋輸出訊號的程序指令、以及其不將資料發送到一個或多個系統輸出的程序指令,並且其中處理核心可以執行程序指令,在輸出橋處於第一狀態和處於第二狀態時,處理核心皆可以執行不向一個或多個系統輸出發送資料的程序指令。
術語“靈敏度等級”旨在包括由故障注入檢測器對故障注入的任何標準或觸發特性所施加的、或由故障注入檢測器對故障注入反應所相關的任何截止點(cut-off point)或閾值,並由故障注入檢測器的邏輯元件來區分故障和非故障。通常,故障注入檢測器努力檢測預期和實際現實之間的差異,並且每次檢測到這種差異時,都會提供“故障”警報。
由於不同類型的故障注入檢測器使用不同的機制來實現,因此可以採用各種靈敏度控制機制來實現靈敏度等級,例如但不限於以下:
a)故障注入檢測器可以識別突然的改變,即電源電壓中的故障或晶片中的接地位準(ground level)。在這種情況下,當實際的真實情況(實際檢測到的電壓)與預期電壓相差50mV、100mV或300mV時,可以將檢測器設置為識別異常狀態。
b)可以在同一邏輯網路上的不同位置之間進行電壓位準的比較,以檢測本地差異(local differences),因為預期的現實是所有位置將處於相同狀態。
c)光檢測器可以用於嘗試使用光能識別故障注入,基於與光強度相對應的電壓位準產生故障注入檢測。
可以理解的是,可以在任何給定時間比較應該處於相同邏輯狀態的數位訊號的電壓位準,無論其是1還是0。在這樣的比較中,觸發電壓差可以被定義為X、Y或Z。
而且,靈敏度不需要基於電壓位準。具有不基於電壓的靈敏度等級的探測器可以例如包括:
1.設計為用於直接檢測光線(例如雷射)的檢測器。如果檢測器將光能轉換成與所吸收的光的能量成比例的電壓位準,則可以分別檢測對應於光能位準X、Y和Z的電壓位準A、B或C.
2.設計用於直接檢測除光以外的電磁能量的檢測器。如果檢測器將電磁能轉換為與所吸收的電磁能成比例的電壓位準,則可以分別檢測對應於電磁能位準X、Y和Z的電壓位準A、B或C.
在一個例子中,檢測器具有不基於電壓的非即時操作的靈敏度等級,其係為頻率偏差檢測器,其對期望的頻率中的頻率偏差的幅度的具有多個靈敏度等級(應該理解,以這種目標的故障注入可以包括通常地具有預定頻率(也就是“期望頻率”)的晶片時脈,例如,如果給定晶片的時脈具有250MHz的期望頻率,並且與該值有瞬間偏差,例如檢測到比預期更接近的兩個時脈脈衝,這可能表示有故障正嘗試被注入。]
一些頻率突變檢測器可以被設計為具有透過配置選擇的多個靈敏度等級,並且根據系統架構決策和預先配置(與本發明的實施例中動態配置相反)而被預定義。
第2圖描述了用於構建安全系統的方法,該安全系統可以從處理器核心或CPU接收操作碼指示,從而即時相應地做出靈敏度等級判定,可選地,其他因素也可以影響該判定,並且隨後提供靈敏度等級控制到對策電路,以上全部根據本發明的實施例。
如上所述,可能存在一些情況或條件,例如但不限於執行條件分支時,安全開發者可能認為這具有較高風險會引起硬體故障注入。
通常情況下,注入故障最終會轉化為IC的電氣事件(electrical event),並且該事件會干擾IC的硬體一致性和操作一致性。例如,在MCU/CPU執行代碼的情況下,故障注入努力干擾IC硬體的一致和操作一致性,通常會試圖干擾代碼的執行流程,攻擊IC的硬體來干擾IC軟體和/或韌體的執行。
在這種情況下,安全開發人員可能希望在安全等級和假警報之間動態應用不同的權衡。
在開始配置邏輯元件時,安全開發人員可以遵循任何適當的步驟。例如,設計者可以先模擬和/或跨全方位的預期正常現實生活場景操作該裝置,並允許操作條件,以確保在允許的運行條件下的機構從未(或僅在可接受範圍的少數)觸發誤警報。然後,設計者可以操作該裝置,假定該裝置意圖承受故障注入,並且決定故障注入檢測等級,該故障注入檢測等級例如在可接受的可靠性等級下正確地觸發全部或幾乎所有故障注入。設計者可以將此“適當等級(proper level)”定義為檢測故障注入的預設檢測等級。設計者隨後可以調整即時啟用較高靈敏度等級的邏輯元件(對應於稍微更積極的檢測),以回應於設計者認為與更高故障攻擊風險關聯的CPU將要執行的指令的輸出指示。
通常情況下,開發人員調整檢測等級,使其在操作條件確實可能導致硬體不正常運行時觸發(檢測到攻擊)。開發人員可以透過多種裝置變型來表徵這些等級,以確保在正常操作期間很少或根本沒有檢測到故障注入。
通常地,希望提供能夠以設計者定義的大於一個等級上執行檢測的電路,例如至少兩個檢測等級,其中兩個等級中的一個但不是另一個等級,以不必要地干擾裝置正常操作的風險等級攔截輕度故障注入。這些等級可能包括:
a)第一級,其檢測導致異常情況(例如,產生裝置故障風險的狀況)的嚴重故障注入;以及
b)第二級,不僅能夠檢測到嚴重的故障注入,還能夠檢測到非侵入性(又稱輕度(mild))故障注入,這會導致意外的情況,而這種情況可以在裝置不發生故障的情況下持續。
繼續參照第2圖,通常提供一種處理器,其產生指示在每個給定時刻即將執行哪個指令/操作碼或系列/操作碼組的操作的訊號。例如,從處理器的解碼單元識別主題指令/命令開始直到執行單元指示執行指令/命令完成的時間為止,訊號可以指示處理器將要執行給定指令。在此實施例中,指示包含給定指令的“解碼”和“執行”兩個階段,然而不限於此。可選地,這些訊號可以指示給定指令即將在給定指令的“執行”階段期間執行,而不是在解碼階段期間執行。另一個可能的實施例是保留指示從主體指令I(並包括)的“解碼”階段開始,直到(但不包括)指令I+1的“解碼”階段(在處理器執行指令I之後的指令)。
可以理解的是,控制上述週期的CPU內部訊號的某些控制訊號是CPU內部設計的一部分,並且對於所有或許多CPU而言是共同的。例如,
a)訊號告訴獲取單元從記憶體獲取指令,並將指令儲存在本地的某處,以及
b)由解碼單元產生的訊號,該訊號命令或告訴其他CPU單元操作和執行該指令。
而且,如第2圖中所示,系統設計者通常將至少一個操作碼或一組操作碼與相關的安全風險相關聯。通常情況下,條件分支操作碼與高於風險R(R可能是標量(scalar))相關的部分或全部操作碼相關,而不是與風險低於R的條件分支操作碼。這是因為條件分支指令控制該程序流程,且是故障注入可以將程序從正確和有序流程的轉移的點。
可選地或附加地,根據某些實施例,可以使用詳細的風險分析來獲得與各種不同操作碼相關聯的相對風險的理解。
為了進行風險分析,設計者可以研究處理器的指令集。以下鏈接提供了一個指令集(ARM Cortex-M0)的例子做為說明: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0432c/CHDCICDF.html 。
至少在某種程度上,這樣的分析可以在處理器之間通用化,因為指令集傾向於在處理器之間,至少在類似類型的處理器之間(例如在RISC處理器之間或在CISC處理器之間)相似。例如,許多處理器可能具有全部或大部分的以下指令類型或指令組:
記憶體和暫存器處理:通常包括加載(load)、儲存(store)和移動(move)指令。
算術和邏輯操作:通常包括加、減、有時乘、除或算術移位(arithmetic shifts),以及邏輯操作,如Or、And、Xor。
堆棧管理(Stack management):通常為推(push)/彈出(pop)。
分支:有條件的和無條件的。
控制:例如但不限於狀態管理、中斷管理。
儘管如此,最終可能會進行一些處理器風險分析,因為每個特定處理器的指令集傾向於與其他處理器至少有所不同。
設計者還可以審查應用程序及其實施方式(包括應用程序代碼分析),並據此量化特定指令或類型指令的風險。例如:
a)堆棧管理指令相對於除堆棧管理指令以外的至少一個指令(和/或相對於與上述指令組3-5中的至少一個指令組中的至少一個指令相關聯的風險等級,和/或相對於視為低風險的操作碼)具有較高風險,例如,因為堆棧在程序流程中也可能有作用,特別是涉及子程序調用時;堆棧通常會保留返回地址,因此透過故障注入操作它們也可能會將程序從有序的執行流程轉移。
b)在算術/邏輯組(上述第2組)中,基於代碼的分析,系統設計者可能發現特定運算指令是在影響程序流和/或"做出決策"的代碼的“關鍵的”地點“中使用。這些特定指令可能與高風險相關聯,例如高於代碼中算術指令的風險,該算術指令不在該關鍵位置或高於上述指令群3-5中的至少其一的至少一個指令相關聯的風險等級和/或高於視為低風險的操作代碼。
此外,第2圖所繪示的故障注入檢測器,其具有L=至少兩個靈敏度等級:一個容忍度較高(具有較低的靈敏度等級),而另一個較敏感(具有較高的靈敏度等級)。
同時,繼續參考第2圖,可以以任何合適的方式實現動態靈敏度等級調整(例如即時選擇L個等級之一)。例如,可以提供解碼邏輯元件,其接收來自處理器的那些訊號,並且根據操作碼的安全風險等級,基於容忍或較敏感的檢測等級產生相應的訊號以在任何時間向故障注入檢測器指示其是否應該觸發。第5圖顯示了一個實現的例子,顯示了三級靈敏度,包括定義為預設等級的最低靈敏度等級和兩個高於預設等級的額外等級。
根據某些實施例,對檢測器的指示在解碼指令之後馬上或立即熄滅(go off),使得檢測器在核心開始執行該指令之前獲得訊號。檢測電路通常不這樣做,他們自己“拒絕”或吸收或以其它方式處理故障注入。然而,電路確實產生了一個標誌,指示出現故障注入,從而允許其他模組以任何合適的方式作出回應,例如但不限於將裝置以及程序(例如,CPU或處理器)恢復到流程中的已知狀態的已知點。這種恢復可能比較緩慢地發生,例如僅在發生故障注入之後,然而,這是可接受的,因為故障注入的損害不是立即發生,而是僅在達到代碼中的某個地方時才發生,而且不應該抵達,並且如果沒有故障注入其確實不會達成。在到達代碼中的這個位置之前就會恢復。
第2圖的方法通常包括以下操作中的一些或全部的命令,例如適當地如下的順序: 操作1.提供易受故障注入影響的處理器核心/CPU,並產生指示在任意給定時刻執行哪個指令/操作碼,或系列/操作碼組的操作碼的訊號。 操作2.風險分析:系統設計者將安全風險(例如故障注入風險)與操作碼或操作碼組列表相關聯,並相應地生成靈敏度等級決策/選擇邏輯。例如:條件分支操作碼:高風險;所有其他操作碼:低風險。 操作3.為故障注入檢測器提供至少兩個靈敏度等級。 操作4.實現對策電路的靈敏度等級調整,例如提供一個對策電路,其靈敏度可以即時調整,例如透過動態選擇至少兩個等級中的一個。通常,故障注入檢測器支持即時操作的靈敏度級別的動態即時調整,並且具有比由處理器或CPU透過故障注入檢測器保護的單個指令的解碼執行週期短的回應時間。
回應時間通常如上所述的較短,因為通常期望控制訊號透過靈敏度控制單元傳播到檢測器的時段能留下足夠的時間讓檢測器反應。例如:如果指令週期是40ns長,那麼從操作碼指示到檢測器被設置為所需的靈敏度等級所經過的時間,例如最大到10ns,剩下30ns的時間空窗期,其中檢測器可能會有反應。
參考第3圖,可以理解,條件執行和條件分支,即軟體判定點被認為是安全代碼中的弱點,即易於發生故障注入攻擊的點。第3圖是根據某些實施例的安全系統的簡化方塊圖,其可以例如根據第2圖的方法來提供。第3圖的安全系統通常包括:
具有操作碼或其他代碼指示的處理器核心或CPU,指示特定指令或指令類別(例如但不限於條件分支、特定比較等)的執行;以及
對策電路,例如電子對策電路,包括一個設計有多個可控靈敏度等級的故障注入檢測器。該電路可以包括故障注入改善電路以及具有可調節靈敏度的故障注入檢測器。如果故障檢測器檢測到故障注入,例如在每次故障注入檢測器檢測到故障的時候造成觸發,使故障注入改善電路被致動。
關於這種電路的某些例子的設計問題例如在以下白皮書中描述,兩者均可在網上獲得: Thierno Barry、Damien Courouss_e、Bruno Robisson所著:針對指令跳過故障攻擊的對策彙編(Compilation of a Countermeasure Against Instruction-Skip Fault Attacks),以及,低成本軟體對抗故障攻擊的對策:實施和性能折衷(Low-Cost Software Countermeasures Against Fault Attacks: Implementation and Performances Trade Offs)。
應該理解,術語“對策”通常用於指用於改善(例如,防止或糾正)故障注入攻擊的不良影響的檢測器和/或模組。第3圖的背景下,對策電路檢測到這種攻擊並觸發任何合適的模組來防止或糾正這種攻擊的不良影響。
根據一個實施例,已經識別條件分支的執行的安全系統隨即將相應電路的檢測等級調整為更敏感。
可以理解的是,與沒有被考慮的指令相比,各種指令或類型可以被考慮引入更高的錯誤注入風險。為了給出一些非限制性例示性,任何或所有以下操作碼可被認為引入故障注入的較高風險(其可導致系統設計決策將任何或所有以下操作碼具有高安全性風險(例如對故障注入具有高風險),即其風險等級高於與以下操作碼相關的風險等級,和/或提供在遇到這樣的指令時增加故障注入檢測器的靈敏度等級的邏輯元件):
a)指示條件分支的操作碼,例如,相等則分支(branch-if-equal)、不相等則分支(branch-if-not-equal)為RISC CPU分支指令,其基於在條件分支之前的兩個操作數之間的比較並產生隨後由條件分支使用的“結果”來決定是分支還是繼續。
b)操作碼執行比較或其他“測試”,這導致設置各種標誌,然後由“決定”是否採用給定的條件分支的邏輯元件使用。
例如,可以操作比較指令來比較兩個操作數,並且在兩者相等的情況下(或者在兩者不相等的情況下)設置標誌。減法運算可以在結果為負或非零時設置標誌,以比較操作數,例如數字。
c)操作碼將特定類型的資訊推入處理器堆棧,例如,稍後用於條件操作的關鍵或敏感資訊或資料或CPU子系統標誌的返回地址。
d)操作碼是表徵為用作執行迴圈的停止條件。例如,迴圈描述如下: https://www.tutorialspoint.com/assembly_programming/assembly_loops.htm
所描述的“迴圈”指令假定迴圈計數器保存在預定義的CPU暫存器中。當CPU遇到“迴圈”指令時,CPU可以遞減迴圈計數器,比較迴圈計數器為零,並且如果計數器大於或等於零,則返回到迴圈的開始,從而實現迴圈停止條件。
在某些情況下,它可能不會預先知道使用了哪些指令,例如因為使用的指令可能取決於CPU特定的編譯器的選擇。例如,一個CPU可能有一個內置迴圈指令,它處理一個指定的暫存器或變量,自動增加和減少該暫存器或變量,然後如果迴圈計數器如此規定則跳回迴圈的開始,或者如果迴圈計數器已經消逝,則讓程序繼續順序執行。
可以理解,相對於未被考慮的指令,各種指令或類別可以被考慮引入更低的故障注入風險。為了給出一些非限制性例示性,可以認為以下的任何或全部操作碼可以被認為具有對於引入故障注入的特別低的風險(其可導致系統設計決策將任何或所有以下操作碼具有低安全性風險(例如對故障注入具有低風險),即其風險等級低於與以下操作碼相關的風險等級,和/或提供在遇到這樣的指令時降低故障注入檢測器的靈敏度等級的邏輯元件):
a)加載操作碼,其剛剛從記憶體讀取資料,或
b)儲存操作碼,其剛剛將資料儲存在記憶體中
雖然故障注入可能導致上述情況發生故障,但駭客可能認為基於干擾特定儲存/加載指令來定義有效的攻擊實際上是不可能的。
第4圖是根據某些實施例的操作的例示性方法;例如根據第2圖的方法提供的安全系統和/或第3圖的安全系統。
第4圖的方法通常地結合核心執行指令而操作,其中指示被提供並被解碼,並被用於即時選擇故障注入檢測器的靈敏度等級。通常,給定的靈敏度等級與多個指令組/指令集中的每一個相關聯。通常,根據設計者的風險評估,系統的設計者將更高的靈敏度等級與被視為具有較高風險等級的指令相關聯,例如,從駭客尋找適合故障注入攻擊的目標位置的角度來看,其被認為是有吸引力的目標,相反的,較低的靈敏度等級與指令被認為遭受較低的風險等級。通常地,使用第4圖的方法的安全系統被構成為使得指令被即時地解碼和回應。指令設置為與剛剛解碼並即將執行的指令,或相對應的靈敏度等級相關聯。通常,接著在解碼指令和由其執行指令之間的時間空窗期中設置靈敏度等級。
第4圖的方法通常包括以下操作中的一些或全部,例如如圖所示適當地依序執行:
310.CPU將操作碼指示I提供給靈敏度等級控制模組使用的靈敏等級判定邏輯元件(又稱靈敏度等級選擇邏輯元件)。
320.靈敏度等級決定邏輯元件產生一個決定:對策電路的靈敏度等級應該是L_I。
330.靈敏度等級控制模組訊號(或命令)將對策電路的靈敏度等級調整為L_I。
340.回應地,靈敏度等級控制模組向對策電路發出靈敏度等級控制訊號。
350.對策電路將其靈敏度等級調整為L_I。例如,可以使用合適的選擇器元件來調整等級,該選擇器元件的控制包括或者從靈敏度等級控制命令導出這些指示將要執行哪個操作碼。
第5圖至第6圖是根據某些實施例的動態靈敏度等級調整系統的三級例示性。預先分析裝置的設計,包括風險分類,然後,在操作過程中,檢測器基於預先風險分類即時回應。
具體地,第5圖是示出三級靈敏度的例示性動態靈敏度等級調整系統的圖,其包括被定義為預設等級的最低靈敏度等級和兩個高於預設等級的額外等級。第6圖是第5圖的故障檢測器的例示性實現。
第7圖是示出指令解碼訊號組合風險等級(例如低、中或高)和所選靈敏度等級(例如保守、中等或積極/高度敏感)的例示性三級波形圖。可以理解的是,除了三個以外的任何數量的等級都可以被採用,並且不需要如所示的預設等級。
如圖所示,在CPU的例示性執行管線中,如果管線正在處理一個“低風險”指令和一個“高風險”指令,則高風險指令一旦被解碼,就優先設置檢測器的靈敏度等級。例如,在提取到“中等風險”進入的時候,只要指令解碼後(立即)靈敏度就會增加。類似地,當提取到“高風險”時,只要指令被解碼,靈敏度立即進一步增加。更一般地,當第7圖的安全系統識別出比當前設置風險高的指令時,新解碼(較高)風險將會優先直到CPU完成處理高風險指令,接著返回到先前的指令處理。
可以理解,例如在第7圖中的“提取”包括“解碼”,為了簡潔起見,因此圖中的“提取”可以被解釋為“提取和解碼”。
現在參考第8圖。根據某些實施例,故障注入檢測器包括分別部署在多個處理器核心位置中的多個故障注入檢測器單元,例如如第8圖的例子中所示,從而在考慮所有多個位置時,檢測故障注入攻擊的某些常規故障注入檢測器的局部依賴特性。如果部署在位置L的檢測器單元中的至少一個在位置L處檢測到故障注入攻擊,則故障注入檢測器可以發出警告(和/或可以觸發施加到位置L的故障注入改善操作)。因此,OR函數(或任何其他合適的邏輯元件功能)可以用於組合由多個單元中的各個單元進行的故障注入檢測決定。可以提供任何合適數量的單元,它們之間具有任何合適的距離,通常根據以下因素中的至少一個來決定:每個單元占據的IC晶粒面積,IC電路的物理特性被保護,以及預測故障注入攻擊的空間特徵。
第8圖是根據本發明的某些實施例的分佈在各個處理器核心位置並分別佔據多個IC晶粒區域的多個故障注入檢測器單元的簡化圖。
用於本發明的某些實施例的例子有許多。
例如,共同擁有的美國專利號9,523,736描述了檢測給定電網的不同分支之間的狀態差異。在IC電性邏輯網路通常預計為通過所有分支時其邏輯狀態將會為1或0的相同狀態。因此,當在同一邏輯(電力)網路上的兩個物理點之間檢測到電壓位準的差異時,可能指示故障注入正在嘗試導致局部改變。設計者可能會認為,在兩點之間的地點與其他地方之間的差距是50mV是正常的,相對的300mV的差異則不是,這對於IC功能的風險是足夠異常的,而200mV的差異雖然是異常的,但不被視為有風險。根據某些實施例,取決於例如即時的變化的靈敏度等級,可以將設置的控制信號發送到檢測器以將檢測器設置為200mV靈敏度等級或者300mV靈敏度水平,而不是僅設計目標為300mV的檢測器,檢測器可以憑藉如本文所述的控制來檢測200mV的差異或300mV的差異。因此,系統即時決定是否考慮50mV或200mV或300mV作為差異,其中差異的正檢測表明已經檢測到故障注入。
可以理解的是,可能存在除了故障注入風險以外或更普遍的使用例,其可以即時調整靈敏度等級。例如,駭客被認為研究並表徵了他們所針對的給定裝置的靈敏度,以便進行故障注入。這可能會先於駭客在特定時間和/或特定裝置位置對注入故障的集中嘗試。如本文所述,例如透過將特定指令與特定風險等級相關聯,隨機或根據即時檢測到的風險即時改變靈敏度等級可能會混淆或干擾此類研究。
可選地或附加地,如果即時地在某個操作時段期間裝置檢測到大量(超過閾值)數量的故障注入嘗試,例如在Y時間段內多於X個檢測,則可以提高靈敏度等級。例如,在系統運行時間的100%中,可能存在安全風險較低的時間段,例如但不限於從經驗上看的不太受駭客攻擊歡迎的時間段,並且可能存在安全性更高的時間段風險,例如但不限於從經驗上看的受駭客歡迎的時間段。
可以記錄檢測到的故障注入的時間標記事件,此後適當的代碼可以隨時間跟踪故障注入並且識別具有特別高或特別低的故障注入發生率的離群時間段。
可以理解,這裡的故障檢測器可以被集成到更大的系統中,從而改善它們的操作。
例如,可以理解的是,這裡所示出和描述的實施例不需要作為使條件分支操作更難以破解的唯一防線。相反,在代碼等級,這裡的故障檢測器可以有效地與傳統的反駭客技術相結合,用於在代碼等級對抗故障注入漏洞,例如:
a)透過防止或阻止或減少故障注入的發生或出現;和/或
b)一旦故障注入發生時,將其避免或改善。
其中的任一個都可以由本文所示和所述的故障注入檢測技術觸發。
本文中示出和描述的用於檢測故障注入的任何方法都可以被採用,並且可以增加或替代在傳統系統中使用的傳統故障注入檢測技術,其中該傳統故障注入檢測技術包括用於一旦檢測到故障注入時避免或改善故障注入的影響的模組。例如,當由兩個或多個故障注入檢測器觸發時,該模組可以被啟動。
通常,b類要求檢測到故障注入。因此,透過使用在此示出和描述的改進的,動態控制的故障注入檢測方法,可以改進類別b中的任何反駭客測量。
一旦檢測到故障注入(例如如本文所示和所述),則可以由此觸發任何合適的故障注入影響改善操作,並且可以回應地執行以改善,例如糾正至少一個影響(例如,故障注入的不良影響),例如但不限於適用於以下步驟的模組:
a)將裝置置於不可逆狀態,防止進一步選擇的選項。
b)使處理器跳轉到指定的例程,例如執行整體完整性檢查,然後通常重置或重新啟動CPU。
c)將處理器置於無限迴圈直到被看門狗定時器(watchdog timer)復位。
d)停止裝置直到經過一段時間。
即e)提升靈敏度等級一定時間之後,在沒有進一步的檢測的情況下將其恢復為預設的靈敏度等級。
f)禁用特定的預先指定的“風險”功能一段時間。風險功能可能是認證的批准、敏感資料的洩露、加密密鑰的洩露。
g)暫停系統,直到電源週期或系統或裝置硬體重置為止;看門狗定時器復位或任何其他停止標準或釋放卡住的CPU的機制。
可以理解的是,上述故障注入改善操作僅僅是可以為設計用於改善故障注入攻擊的不良影響的模組提供的功能的例子。改進操作或功能可包括防止或阻止或減少故障注入的發生或出現,和/或一旦發生故障注入時避免或改善故障注入的影響。可以理解的是,改進的操作可以用硬體和/或軟體來實現,並且可以利用處理器核心的程序/資料記憶體。
可以理解,可以執行多於一個這種故障注入改善操作。例如,上面的操作e可能會與操作a至d或f至g中的一個相結合。
實現條件分支序列:例如,許多這樣的技術中,為了使故障注入更困難,因此,例如按照上面的類別a,重複條件分支n>1次,例如兩次(n=2),在這種情況下,第一個分支跳轉到第二個分支,基於相同的條件,該分支是跳轉到最終目的地的分支,n=2的兩個分支或者更通常地所有n個分支。這解決了漏洞問題,因為在這裡,對於分支被駭客入侵,單個故障將不足夠,相對的,需要在兩個或更多個通常的n個點中的每個點上注入故障,這增加了駭客攻擊主題的執行流程複雜度的等級。可以理解的是,如果系統設計者期望的話,本文中示出和描述的實施例可以與其他反駭客措施(例如,用於改善例如糾正例如故障注入的不良影響的至少一個影響的任何適當措施)在一起使用,使有條件的分支機構操作更難以破解。上述實現條件分支序列的技術由此透過使故障注入變得更加困難因此,例如可以與用於改善故障注入的影響或不良影響的任何合適的技術組合,例如可以包括使用本文所示和所述的任何實施例來檢測故障注入,並且接著,如果當檢測到故障注入時,實施任何適當的故障注入衝擊改善措施。
在共同擁有的美國專利號9,523,736中描述了一種用於更好地檢測故障注入(並且因此更好地改善其效果的已知技術,例如透過停止系統直到施加電源週期),其描述了用於檢測故障注入的裝置,其包括跨越集成電路(IC)的高扇出(high-fanout)網路和電路。高扇出網路可以在IC的功能操作期間連續不活動,並且電路可以被配置為感測高扇出網路中的多個採樣點處的訊號等級,並且透過基於感測到的訊號等級,檢測出高扇出網路中的訊號異常。電路可以被配置為檢測高扇出網路中的多個採樣點處的訊號等級,以基於感測到的訊號等級在IC的功能操作期間區分高扇出網路中的合法訊號變化和訊號異常,並透過檢測訊號異常來識別故障注入嘗試。該電路可以被配置為回應於識別故障注入嘗試而修改高扇出網路中的一個或多個訊號等級。由於斷言ALERT訊號,控制單元或感應器48可修改網路根部40或高扇出網路的另一分支上的訊號等級(例如,強制訊號為有效)。
另一個例子是檢測硬體頻率突變,例如由外部電磁能源引起的集成電路中電源/接地的頻率突變。透過電源頻率突變進行故障注入是一種已知的對IC元件進行入侵的方法。電磁(Ëlectromagnetic,EM)故障已連續多年被認為是實現對IC的物理攻擊的有效故障注入技術。檢測硬體頻率突變的電路,其指示故障注入漏洞以及其困擾於安全等級和誤警報(又稱假陽性)之間的權衡,例如,那些可透過互聯網在以下網址找到: http://ieeexplore.ieee.org/document/5376828; https://www.blackhat.com/docs/eu-15/materials/eu-15-Giller-Implementing-Electrical-Glitching-Attacks.pdf; Zussa,L等所著“針對電磁故障注入的故障檢測器的效率(Efficiency of a glitch detector against electromagnetic fault injection)” http://ieeexplore.ieee.org/document/6800417/
關於故障注入攻擊檢測器的最新技術知識在2016年12月16日發布的“廉價和快樂:用於檢測雷射故障注入攻擊的低成本數位感應器(A Low-Cost Digital Sensor for Detecting laser fault injection attacks)”中進行了描述,可透過網際網路在以下網址找到: http://www-users.math.umn.edu/~math-sa-sara0050/space16/slides/space2016121602-37.pdf 。所提出的解決方案是可調整的(“該感應器具有在後端階段具有可調靈敏度的雙向檢測能力”)。如其他地方所指出的,本文件的公開內容以及實際上在此引用的所有文件透過引用結合於此。
可以理解的是,透過使用本文的實施例來增加操作碼回應動態靈敏度等級調整,可以改進上述檢測器。上述“廉價和快樂”的公開內容中的CPU設計可以調整,以提供指示將要在任何時間執行的指令的輸出訊號。例如,可以將即時選擇的多個調諧(tuning)嵌入到設計中,或者可以添加多個電路,每個調諧之間具有差異,其中即時選擇多個電路中的一個電路的一個輸出,這取決於此處顯示和描述的判定邏輯元件指示的靈敏度等級。
通常,本領域中已知的任何故障注入攻擊對策例如在下文中進行描述:
Thierno Barry、Damien Courouss_e、Bruno Robisson撰寫的“針對指令跳過故障攻擊的對策彙編”,可透過網際網路 https://hal-cea.archives-ouvertes.fr/cea-01296572/document找到;以及 低成本軟體對抗故障攻擊的對策:實施和性能折衷,可透過網際網路獲得:http://euler.ecs.umass.edu/research/bpbk-WESS-2010.pdf
可以與本發明的實施例共存為互補檢測/保護層。它們共同提高了CPU或類似裝置對於例如故障注入攻擊等攻擊的保護程度。
可以理解的是,類比電路通常設計有調諧選項,例如具有多個檢測等級/閾值,因為可能難以預先預測哪個等級/閾值在真實電氣系統的環境中最有效。一旦進入矽片中,通常會執行測試以決定哪種配置最佳地工作,然後根據某些實施例將電路配置為一個特定“最適”或最佳可行設置,而不是配置為以單個測試選擇設置。相對的,保留多個設置中的全部或多於一個,並且添加控制電路以即時選擇要使用的多個設置中的哪一個,如本文所示和所述。然後可以簡單地進行測試來重新確認實際矽片中電路的性能。
在此示出和描述的實施例的特定優點是即使在單個操作碼的粒度(granularity)下也能夠在故障注入檢測的安全等級和假陽性等級之間進行高度可調節的權衡。這允許在極小的範圍內克服折衷,透過將必要但令人遺憾的對假陽性(或低安全等級)的高容忍度僅限於那些需要如此高容忍度的操作代碼,並且期望地降低誤報容差(或對於不需要如此高的容差的所有操作碼,都是低安全等級的)。
可以理解的是,這裡的特定實施例並非旨在進行限制。本發明旨在包括例如結合CPU或處理器進行操作的任何實施例,所述CPU或處理器在內部具有作為將要執行的指令的解碼結果的解碼結果的訊號。根據這些實施例,這些訊號被發送出CPU,由此允許CPU外部的至少一個操作單元基於這些訊號的狀態來動作,從而利用在一個背景中可用的訊號,並且為CPU的內部目的而設計用於另一個,通常是在通常的CPU外部位置或背景中的CPU外部目的。例如,回應於將要執行哪個操作碼/指令的即時指示,安全系統中的靈敏度等級控制模組可以即時地(例如立刻)調整靈敏度等級(又稱安全等級)的對策電路中的故障注入檢測器功能,以對應故障注入攻擊。
如果用於實現本文某些實施例的韌體可以保存在非揮發性記憶體中,例如快閃記憶體或ROM。可以使用任何合適的技術來防止韌體的位置限制對快閃記憶體管理的干擾。
或者,本文中描述的某些實施例可部分地或排他地(即,沒有韌體地)以硬體實現,在這種情況下,這裡描述的變量、參數、順序操作和計算中的一些或全部可以在硬體中實現。
應該理解,為了清楚起見,諸如“強制(mandatory)”、“需要(required)”、“需要(need)”和“必須(must)”的術語是指在此處描述的特定實施方式或應用的背景下做出的實施選擇,並且不旨在限制,在另一種實現中,相同的元件可能被定義為並非強制性的,並且不是必需的,或者甚至可能被完全移除。
本發明的特徵(包括在單獨實施例的上下文中描述的操作)也可以在單個實施例中組合提供。例如,系統實施例旨在包括相應的過程實施例,反之亦然。而且,每個系統實施例旨在包括系統、電腦可讀介質、裝置等的全部功能的以服務器為中心的“觀點(view)”或以客戶為中心的“觀點”或來自系統的任何其他節點的“觀點”僅包括在該服務器或客戶端或節點上執行的那些功能。本發明的技術特徵還可以與本領域中已知的特徵組合,並且特別地,但不限於背景技術部分或其中提及的出版物中所述的特徵。相反地,為了簡潔起見,在單個實施例的上下文中或以特定順序描述的本發明的特徵(包括操作)可以單獨地或以任何合適的子組合方式提供,包括具有本領域已知的特徵(特別但限於所描述的那些在背景技術或在其中提及的出版物中)或以不同的順序。“例如(e.g.)”用於表示不旨在限制的例子。每個方法可以包括所示出或描述的操作中的一些或全部,適當地例如本文所繪示或所述的內容。
1~4‧‧‧步驟
310~350‧‧‧步驟
在以下附圖中示出了本發明的某些實施例:
第1圖係繪示說明常規CPU操作週期的習知技術圖,操作週期明顯地通常地包括一個獲取過程,隨後進行解碼,隨後執行。
第2圖係繪示根據某些實施例的用於構建系統的方法的簡化流程圖。
第3圖係繪示根據某些實施例的安全系統的簡化方塊圖,其通常特徵在於由處理器核心或CPU執行的指令成為用於調整保護該核心免受這些攻擊的故障注入攻擊檢測器的觸發器,例如執行條件分支或被認為具有被駭客高風險的代碼的其他部分可能即時觸發對檢測器的調整以使其更敏感。
第4圖係繪示根據某些實施例的用於動態靈敏度等級調整系統的即時操作的方法的簡化流程圖。
第5圖係繪示例示性動態靈敏度等級調整系統的圖,其示出包括被定義為預設等級的最低靈敏度等級的三級靈敏度和兩個均高於預設等級的額外等級實施例。
第6圖係繪示第5圖的故障檢測器的例示性實施方式。
第7圖係繪示指令解碼信號、組合風險等級(例如低、中或高)和所選靈敏度級別(例如保守、中等或積極/高度敏感)的例示性三級波形圖;可以理解的是,可以可選地採用除三個以外的任何數量的等級。
第8圖係繪示本發明的多個檢測器單元實施例的簡化圖。
包括在本發明範圍內的方法和系統可以以任何合適的順序,例如如所示的那樣,透過例示的方式包括具體示出的實現中示出的一部分(例如任何合適的子集)或全部功能塊(functional block)。
這裡描述和示出的計算、功能或邏輯組件可以以各種形式實現,例如,作為硬體電路,諸如但不限於定制VLSI電路或閘陣列或可編程硬體裝置,諸如但不限於FPGA,或者作為軟體儲存在至少一個有形或無形電腦可讀介質上並可由至少一個處理器執行的程序代碼,或其任何適當的組合。特定功能組件可以由軟體代碼的一個特定序列或透過多個這樣的軟體代碼來形成,其共同地起作用或行為,或如本文參考所討論的功能組件所描述起作用或表現。例如,組件可以分佈在多個代碼序列上,例如但不限於對象、過程、功能、例程和程序,並且可以源自通常協同操作的若干電腦檔案。
本文中描述的任何邏輯元件功能可以被實現為即時應用,如果適當的話並且其可以採用任何合適的架構選項,諸如但不限於ASIC或DSP或其任何合適的組合。這裡提到的任何硬體組件實際上可以包括一個或多個硬體裝置,例如晶片,它們可以位於同一位置或彼此遠離。
Claims (25)
- 一種根據處理器核心執行流程動態地控制故障注入對策電路的安全系統,該故障注入對策電路用於保護該處理器核心免受故障注入攻擊,該安全系統包括: 一處理器核心,在執行指令的同時,該處理器核心係即時地產生將要執行的至少一些指令的複數個輸出指示; 一故障注入檢測器,具有多個可選靈敏度等級;以及 一靈敏度等級控制模組,其即時執行以下操作, 接收該複數個輸出指示, 使用接收該複數個輸出指示作為輸入的一靈敏度等級選擇邏輯元件,從該多個可選靈敏度等級中選擇下一個靈敏度等級;以及 將該故障注入檢測器設置為該下一個靈敏度等級, 從而當根據該至少一些指令的該複數個輸出指示保護該處理器核心免受故障注入攻擊時提供不同敏感度的故障注入對策電路,如果一處理器核心保護被提供在與該至少一些指令的該輸出指示無關的靈敏度等級時避免至少一個假警報。
- 如申請專利範圍第1項所述的安全系統,其中當該靈敏度等級控制模組接收到與一風險等級R相關聯的一單獨指令的輸出指示時,該靈敏度等級控制模組回應性地選擇下一個靈敏度等級,其比針對與低於該風險等級R的風險等級相關聯的至少一個指令選擇的靈敏度等級更高。
- 如申請專利範圍第1項所述的安全系統,其中當該靈敏度等級控制模組接收到決定來自一中斷處理程序的一處理器核心返回的一單獨指令的輸出指示時,該靈敏度等級控制模組回應性地選擇下一個靈敏度等級,其比針對該單獨指令以外的至少一個指令的靈敏度等級更高。
- 如申請專利範圍第1項所述的安全系統,其中,當該靈敏度等級控制模組接收到決定例程返回地址的一單獨指令的輸出指示時,該靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對該單獨指令以外的至少一個指令的靈敏度等級更高。
- 如申請專利範圍第1項所述的安全系統,其中,當該靈敏度等級控制模組接收到決定迴圈的停止條件的一單獨指令的輸出指示時,靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對該單獨指令以外的至少一個指令的靈敏度等級更高。
- 如申請專利範圍第1項所述的安全系統,其中,當該靈敏度等級控制模組接收到決定一處理器核心執行模式改變的一單獨指令的輸出指示時,該靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對該單獨指令以外的至少一個指令的靈敏度等級更高。
- 如申請專利範圍第1項所述的安全系統,其中當該靈敏度等級控制模組接收到從一記憶體讀取資料的一單獨指令的輸出指示時,該靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對該單獨指令以外的至少一個指令的靈敏度等級更低。
- 如申請專利範圍第1項所述的安全系統,其中該處理器核心包括一記憶體,並且其中當該靈敏度等級控制模組接收到將資料從該記憶體讀取到一本地儲存裝置中的一單獨指令的輸出指示時,該靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對該單獨指令以外的至少一個指令的靈敏度等級更低。
- 如申請專利範圍第1項所述的安全系統,其中當該靈敏度等級控制模組接收到包括一條件分支的一單獨指令的輸出指示時,該靈敏度等級控制模組回應地選擇下一個靈敏度等級,其比針對該單獨指令以外的至少一個指令的靈敏度等級更高。
- 如申請專利範圍第1項所述的安全系統,其中當該處理器核心即將執行一指令時,產生與該指令有關的至少一個輸出指示,從而在執行該指令之前提供該指令將要被執行的輸出指示。
- 如申請專利範圍第1項所述的安全系統,其中該處理器核心包括適配的一解碼邏輯元件,該解碼邏輯元件至少一次解碼從一程序記憶體獲取的一單獨指令,從而導出至少一個CPU內部訊號,該至少一個CPU內部訊號隨後操作一CPU的至少一個單元,從而執行該單獨指令,並且其中該解碼邏輯元件還適於在該至少一個單元回應於在從程序記憶體取回的該單獨指令導出的該至少一個CPU內部訊號而操作之前提供該單獨指令的輸出指示,以便在執行該單獨指令之前而不是在之後將故障注入檢測器設置為該下一個靈敏度等級。
- 如申請專利範圍第1項所述的安全系統,其中該處理器核心對複數個操作碼進行解碼,從而生成包括對該處理器核心的複數個執行單元的指令的訊號,以及該複數個輸出指示包括由該操作碼解碼的該指令指示的從該處理器核心輸出的訊號,由此提供該靈敏度等級選擇邏輯元件的將由該處理器核心執行的指令的一預覽。
- 如申請專利範圍第12項所述的安全系統,其中從該處理器核心輸出的該訊號包括從該操作碼解碼的指令。
- 如申請專利範圍第1項所述的安全系統,其中該故障注入檢測器包括具有分別對應於該多個靈敏度等級的多個調諧選項的一類比電路。
- 如申請專利範圍第1項所述的安全系統,其中該處理器核心包括適配的一解碼邏輯元件,該解碼邏輯元件至少一次解碼從一程序記憶體獲取的一單獨指令,從而導出至少一個CPU內部訊號,該至少一個CPU內部訊號隨後操作一CPU的至少一個單元,從而執行該單獨指令,並且其中對於由該解碼邏輯元件解碼的所有指令,該解碼邏輯元件還適於在該至少一個單元回應於從程序記憶體得出的該單獨指令導出的該至少一個CPU內部訊號而操作之前,提供該單獨指令的輸出指示,由此確保該故障注入檢測器在由該靈敏度等級邏輯元件選擇一特定靈敏度等級所使用的指令被執行之前而不是在之後始終被設置至每個該特定靈敏度等級。
- 如申請專利範圍第1項所述的安全系統,還包括一故障注入改善電路,該故障注入改善電路被配置為回應於由該檢測器檢測到的一故障注入而執行至少一個故障注入改善操作。
- 如申請專利範圍第1項所述的安全系統,其中該處理器核心包括一執行管線,該執行管線包括具有至少一個重疊階段的複數個連續指令,其中該靈敏度等級選擇邏輯元件向該故障注入檢測器提供用於根據至少一個指令I選擇靈敏度等級的指示,其獨立地與該複數靈敏度等級中的一最高故障檢測靈敏度等級相關聯。
- 如申請專利範圍第17項所述的安全系統,其中,該至少一個指令一旦被解碼,就優先於所有正被解碼的其他指令,並優先於將要執行的所有其他指令,其中該最高檢測靈敏度等級被設置為在解碼該至少一個指令並僅在該至少一個指令已被完全執行之後結束,而無關被解碼以及即將被執行的其他指令。
- 如申請專利範圍第1項所述的安全系統,其中該處理器核心輸出指示包括哪個操作碼即將被執行的輸出指示。
- 如申請專利範圍第1項所述的安全系統,其中該故障注入檢測器可操作以保護一CPU,其故障注入攻擊的單個指令的解碼執行週期為T時間單位長,並且其中該故障注入檢測器具有比T短的回應時間。
- 如申請專利範圍第1項所述的安全系統,其中該故障注入檢測器包括分別部署在複數個處理器核心位置中的複數個故障注入檢測器單元,從而檢測所有該複數個處理器核心位置處的故障注入攻擊。
- 如申請專利範圍第21項所述的安全系統,其中該故障注入檢測器警告在設置於位置L處的該複數個故障注入檢測器單元的至少其一檢測到故障注入攻擊時發出警報。
- 一種根據處理器核心執行流程動態地控制故障注入對策電路的安全方法,該故障注入對策電路用於保護一處理器核心免受故障注入攻擊,該安全方法包括: i)提供該處理器核心,該處理器核心在執行指令並且即時產生將要執行的至少一些指令的一輸出指示; ii)提供具有多個可控靈敏度等級的一故障注入檢測器;以及 iii)使用一靈敏度等級控制模組,即時執行以下操作 接收該輸出指示, 使用一靈敏度等級選擇邏輯元件從該多個可控靈敏度等級中選擇下一個靈敏度等級,該靈敏度等級選擇邏輯元件至少接收該輸出指示作為輸入,以及 將該故障注入檢測器設置為該下一個靈敏度等級, 從而當根據該至少一些指令的該輸出指示保護該處理器核心免受故障注入攻擊時,提供差動敏感的一故障注入對策電路,該故障注入對策電路在該靈敏度等級與該至少一些指令的該輸出指示無關時避免至少一個假警報。
- 如申請專利範圍第23項所述的安全方法,其中該處理器核心包括適配的一解碼邏輯元件,該解碼邏輯元件至少一次對從一程序記憶體獲取的一單獨指令進行解碼,從而導出至少一個CPU內部訊號,該至少一個CPU內部訊號隨後操作CPU的至少一個單元,從而執行該單獨指令,該解碼邏輯元件還適於在該至少一個單元回應於從程序記憶體得出的該單獨指令導出的該至少一個CPU內部訊號而操作之前,提供該單獨指令的輸出指示,以允許該故障注入檢測器在該單獨指令被執行之前而不是在之後被設置至該下一個靈敏度等級。
- 如申請專利範圍第23項所述的安全方法,其中該處理器核心透過向其施加組合邏輯來解碼複數個操作碼,從而生成包括到該處理器核心的複數個執行單元的指令的訊號,並且該輸出指示包括從該操作碼解碼出的指令所指示的該處理器核心輸出的訊號,由此向該靈敏度等級選擇邏輯元件提供尚未由該處理器核心執行的指令的一預覽。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/845,412 | 2017-12-18 | ||
US15/845,412 US10990682B2 (en) | 2017-12-18 | 2017-12-18 | System and method for coping with fault injection attacks |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201928677A true TW201928677A (zh) | 2019-07-16 |
TWI685739B TWI685739B (zh) | 2020-02-21 |
Family
ID=66816110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107130113A TWI685739B (zh) | 2017-12-18 | 2018-08-29 | 處理故障注入攻擊的安全系統和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10990682B2 (zh) |
CN (1) | CN110048997B (zh) |
TW (1) | TWI685739B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI761027B (zh) * | 2021-01-08 | 2022-04-11 | 瑞昱半導體股份有限公司 | 可應用於透過動態電壓改變來進行系統保護之積體電路 |
TWI803927B (zh) * | 2021-01-05 | 2023-06-01 | 新唐科技股份有限公司 | 處理器、用以保護處理器的裝置、以及用以保護處理器的方法 |
TWI844836B (zh) * | 2021-09-27 | 2024-06-11 | 新唐科技股份有限公司 | 電源供應裝置、方法與安全系統 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10922203B1 (en) * | 2018-09-21 | 2021-02-16 | Nvidia Corporation | Fault injection architecture for resilient GPU computing |
CN113632432B (zh) * | 2019-09-12 | 2023-09-19 | 奇安信安全技术(珠海)有限公司 | 一种攻击行为的判定方法、装置及计算机存储介质 |
EP3839779A1 (en) * | 2019-12-18 | 2021-06-23 | Thales DIS France SA | Electronic system and methods for a dynamic activation of countermeasures |
US11321458B2 (en) | 2020-01-28 | 2022-05-03 | Nuvoton Technology Corporation | Secure IC with soft security countermeasures |
CN111651353B (zh) * | 2020-05-29 | 2023-07-18 | 北京百度网讯科技有限公司 | 故障注入的方法、装置、电子设备和存储介质 |
US20220180003A1 (en) * | 2020-12-08 | 2022-06-09 | University Of Florida Research Foundation, Incorporated | Security property-driven vulnerability assessments of ics against fault-injection attacks |
TWI812042B (zh) * | 2021-03-30 | 2023-08-11 | 新唐科技股份有限公司 | 安全系統 |
US11336273B1 (en) | 2021-09-02 | 2022-05-17 | Mellanox Technologies, Ltd. | Protection against attacks on integrated circuits using voltage monitoring |
US12032684B2 (en) | 2022-01-14 | 2024-07-09 | Nxp B.V. | Method for detecting a fault injection in a data processing system |
CN114978866B (zh) * | 2022-05-25 | 2024-02-20 | 北京天融信网络安全技术有限公司 | 一种检测方法、检测装置及电子设备 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216218B1 (en) * | 1997-11-03 | 2001-04-10 | Donald L. Sollars | Processor having a datapath and control logic constituted with basis execution blocks |
US6167479A (en) * | 1998-08-03 | 2000-12-26 | Unisys Corporation | System and method for testing interrupt processing logic within an instruction processor |
US7584386B2 (en) * | 2004-04-21 | 2009-09-01 | Stmicroelectronics Sa | Microprocessor comprising error detection means protected against an attack by error injection |
US8781111B2 (en) * | 2007-07-05 | 2014-07-15 | Broadcom Corporation | System and methods for side-channel attack prevention |
US8141163B2 (en) * | 2007-07-31 | 2012-03-20 | Vmware, Inc. | Malicious code detection |
KR101537018B1 (ko) * | 2008-10-01 | 2015-07-17 | 삼성전자주식회사 | 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드 |
US8612995B1 (en) * | 2009-03-31 | 2013-12-17 | Symantec Corporation | Method and apparatus for monitoring code injection into a process executing on a computer |
US9742778B2 (en) * | 2009-09-09 | 2017-08-22 | International Business Machines Corporation | Differential security policies in email systems |
WO2011156021A2 (en) * | 2010-03-01 | 2011-12-15 | The Trustees Of Columbia University In The City Of New York | Systems and methods for detecting design-level attacks against a digital circuit |
US9967092B2 (en) * | 2010-05-25 | 2018-05-08 | Via Technologies, Inc. | Key expansion logic using decryption key primitives |
US9495541B2 (en) * | 2011-09-15 | 2016-11-15 | The Trustees Of Columbia University In The City Of New York | Detecting return-oriented programming payloads by evaluating data for a gadget address space address and determining whether operations associated with instructions beginning at the address indicate a return-oriented programming payload |
WO2013130548A2 (en) * | 2012-02-27 | 2013-09-06 | University Of Virginia Patent Foundation | Method of instruction location randomization (ilr) and related system |
US9703945B2 (en) | 2012-09-19 | 2017-07-11 | Winbond Electronics Corporation | Secured computing system with asynchronous authentication |
US8683400B1 (en) * | 2012-11-21 | 2014-03-25 | Cadence Design Systems, Inc. | System and method for fault sensitivity analysis of mixed-signal integrated circuit designs |
WO2014196059A1 (ja) * | 2013-06-06 | 2014-12-11 | 株式会社日立製作所 | マイコン故障注入方法及びシステム |
US9523736B2 (en) | 2014-06-19 | 2016-12-20 | Nuvoton Technology Corporation | Detection of fault injection attacks using high-fanout networks |
JP6347681B2 (ja) * | 2014-07-01 | 2018-06-27 | キヤノン株式会社 | 情報処理システム、処理装置、画像処理装置、情報処理システムの処理方法及びプログラム |
EP3001562B1 (en) * | 2014-09-23 | 2021-09-01 | Nxp B.V. | Fault resistant flip-flop |
TWI711939B (zh) * | 2014-11-25 | 2020-12-01 | 美商飛塔公司 | 用於惡意程式碼檢測之系統及方法 |
US9729562B2 (en) * | 2015-03-02 | 2017-08-08 | Harris Corporation | Cross-layer correlation in secure cognitive network |
US9268938B1 (en) * | 2015-05-22 | 2016-02-23 | Power Fingerprinting Inc. | Systems, methods, and apparatuses for intrusion detection and analytics using power characteristics such as side-channel information collection |
CN105391542B (zh) * | 2015-10-22 | 2019-01-18 | 天津大学 | 用于集成电路检测电磁故障注入攻击探测方法及探测器 |
US10452493B2 (en) * | 2016-05-24 | 2019-10-22 | Virginia Tech Intellectual Properties, Inc. | Microprocessor fault detection and response system |
US20180173534A1 (en) * | 2016-12-20 | 2018-06-21 | Intel Corporation | Branch Predictor with Branch Resolution Code Injection |
US10878103B2 (en) * | 2017-06-05 | 2020-12-29 | Karamba Security Ltd. | In-memory protection for controller security |
-
2017
- 2017-12-18 US US15/845,412 patent/US10990682B2/en active Active
-
2018
- 2018-08-29 TW TW107130113A patent/TWI685739B/zh active
- 2018-12-18 CN CN201811554212.9A patent/CN110048997B/zh active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI803927B (zh) * | 2021-01-05 | 2023-06-01 | 新唐科技股份有限公司 | 處理器、用以保護處理器的裝置、以及用以保護處理器的方法 |
TWI761027B (zh) * | 2021-01-08 | 2022-04-11 | 瑞昱半導體股份有限公司 | 可應用於透過動態電壓改變來進行系統保護之積體電路 |
TWI844836B (zh) * | 2021-09-27 | 2024-06-11 | 新唐科技股份有限公司 | 電源供應裝置、方法與安全系統 |
Also Published As
Publication number | Publication date |
---|---|
CN110048997A (zh) | 2019-07-23 |
US10990682B2 (en) | 2021-04-27 |
CN110048997B (zh) | 2021-10-15 |
US20190188391A1 (en) | 2019-06-20 |
TWI685739B (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI685739B (zh) | 處理故障注入攻擊的安全系統和方法 | |
Dessouky et al. | {HardFails}: insights into {software-exploitable} hardware bugs | |
Yuce et al. | Fault attacks on secure embedded software: Threats, design, and evaluation | |
US20210294900A1 (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 | |
CN109508536B (zh) | 一种篡改程序流攻击的检测方法和装置 | |
Bloom et al. | OS support for detecting Trojan circuit attacks | |
US8621298B2 (en) | Apparatus for protecting against external attack for processor based on arm core and method using the same | |
US10878099B2 (en) | Hardware assisted fault injection detection | |
WO2017099922A1 (en) | System management mode disabling and verification techniques | |
Proy et al. | A first ISA-level characterization of EM pulse effects on superscalar microarchitectures: a secure software perspective | |
WO2019152752A1 (en) | Systems and methods for preventing code insertion attacks | |
Nashimoto et al. | Bypassing isolated execution on risc-v using side-channel-assisted fault-injection and its countermeasure | |
US20210240823A1 (en) | System and method for coping with fault injection attacks | |
Proy et al. | Studying EM pulse effects on superscalar microarchitectures at ISA level | |
Hasan et al. | Software variants for hardware trojan detection and resilience in COTS processors | |
JP7383750B2 (ja) | 故障注入攻撃を検出する改善されたシステムと方法 | |
Ragel et al. | Micro embedded monitoring for security in application specific instruction-set processors | |
Zhu et al. | Jintide: Utilizing low-cost reconfigurable external monitors to substantially enhance hardware security of large-scale CPU clusters | |
Jiang et al. | Efficient and trusted detection of rootkit in IoT devices via offline profiling and online monitoring | |
Yuce | Fault attacks on embedded software: New directions in modeling, design, and mitigation | |
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 | |
Kanuparthi et al. | Reliable integrity checking in multicore processors | |
Ghosh | Trustguard: A containment architecture with verified output | |
Chen et al. | Vulnerability-based backdoors: Threats from two-step trojans |