TWI431526B - 硬體流控制監視器 - Google Patents
硬體流控制監視器 Download PDFInfo
- Publication number
- TWI431526B TWI431526B TW096143994A TW96143994A TWI431526B TW I431526 B TWI431526 B TW I431526B TW 096143994 A TW096143994 A TW 096143994A TW 96143994 A TW96143994 A TW 96143994A TW I431526 B TWI431526 B TW I431526B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- processor
- instructions
- instruction
- data value
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
Description
本發明各種實施方案係關於指令之程式的執行。
許多電子裝置使用資料處理器(例如微處理器或微控制器)來根據一程式化組之指令來執行操作。處理器可實施為在塑膠或陶瓷封裝中之積體電路。在處理器封裝內,可配置大量電晶體以形成(例如)用於電腦之中央處理單元(CPU)。
一些處理器架構(尤其係)包括一控制單元、一記憶體介面及一中斷控制器。在一些習知處理器中,該控制單元擷取、解碼及執行一系列指令。當解碼一個別指令時,該控制單元可將適當信號施加於算術邏輯單元(ALU)或其他組件。
該控制單元可透過記憶體介面擷取指令。記憶體介面可提供適當位址、控制及資料信號以存取且讀取儲存在一記憶裝置中之指令,記憶裝置例如磁碟機、隨機存取記憶體(RAM)或唯讀記憶體(ROM)。一典型記憶體介面可供應欲由控制單元順序地執行之一系列指令。其中由控制單元執行之指令的次序一般可稱作程式流。
中斷控制器回應一外部(如處理器封裝之外部)信號,可中斷該程式流。例如,中斷控制器可藉由暫時中斷控制單元之程式流,且造成控制單元執行一預定義組之指令(其典型係稱作中斷常式),來回應一外部信號。在完成該中
斷常式後,控制單元典型地重新開始原始程式流。
若當一處理器執行一程式流檢查指令時,一軟體程式流值不匹配一遞增地更新之硬體值時,用於偵測程式流破壞之系統可包括一硬體程式流監視器以產生一中斷信號。在一說明性範例中,指令之一程式包括一些程式流檢查指令。當處理器執行程式指令時,程式流監視器增量在一暫存器(例如在處理器外部)中之一硬體值。在一範例常式中,當處理器執行一程式流檢查指令時,一關聯該程式流檢查指令之軟體值被傳送至程式流監視器以與硬體值比較,來決定該等程式指令是否已依預期順序執行(如根據一預期程式流)。若該等值不對應,則程式流監視器中斷該處理器。
在一些實施方案中,例如可使硬體值增量以回應一系統時脈,或當執行某些指令(例如程式流檢查指令)時其可藉由處理器增量。在一些範例中,硬體值可維持在處理器外部之一暫存器中。在一些範例中,可使用處理器外部的硬體實施程式流監視器。程式流監視器可作為一評估模組,其係組態以評估該硬體值是否對應一軟體值。
在一些實施方案中,當程式被編譯成可執行碼時,用於該等程式流檢查指令之各指令的軟體值可由一編譯器、鏈接器或類似者決定。在一些範例中,用於各程式流檢查指令的軟體值可儲存在一查找表中,或直接嵌入程式流檢查指令操作碼中成為參數。
在包括至少一條件分支指令(如跳越、前進或類似者)的實施方案中,一程式流指令可重寫該硬體值,例如使該硬體及軟體值可保持同步。
在一些範例中,監控器(watchdog)可藉由一關聯一操作之信號重設,以將該軟體值傳送至程式流監視器。
各種實施方案可提供一或多個優點。例如,可使中斷一程式流之未經授權試圖實質上更困難造成。程式流破壞可藉由一處理器外部之硬體監視器偵測,因而在程式流完整性上提供一獨立檢查。在一些實施方案中,資料安全性演算法(如從記憶體抹除安全資料)可藉由一來自程式流監視器的硬體中斷信號觸發。
其他特徵、目的及優點將從描述及圖式以及從申請專利範圍瞭解。一或多個實施方案的細節係在附圖及以下描述中提出。
圖1A顯示一能監視一程式流的完整性之範例性系統100,其係針對一執行指令之程式的處理器。系統100包括一處理器105、一記憶體110及一程式流監視器(PFM)115。記憶體110儲存一已修改以包括一些程式流檢查指令(PFC)125的程式指令120。在正常操作中,處理器105根據一程式流來執行程式指令120。遍及該程式120,處理器105執行PFC 125以決定該程式流是否已被破壞。例如,當處理器執行PFC指令125之一時,處理器105將一軟體程式流值發送至PFM 115。在PFM 115中,該軟體值係與一第
二值(如硬體程式流值)比較。該第二值係一預期(如軟體)值。在各種實施方案中,該第二值可藉由對應於程式執行的信號增量。在寫至PFC指令125之PFM 115後,一些實施方案可使第二值增量。若軟體值不匹配預期值(如在硬體中),則PFM 115可起始一預設回應。在一實施方案中,該預設回應可包括產生一信號以中斷處理器105。在一些範例中,PFM 115可在PFC 125之一的各執行時提供一硬體程式流完整性檢查,且若偵測到一不正確程式流時產生一中斷信號。
在一些範例性應用中,程式流監視器115可操作以偵測能(例如)損及安全性之程式流破壞。在一些範例中,若程式流被破壞以致(例如)跳過保護安全資料之指令時,系統100可能受損。一些程式流破壞可能繞過需要出現一硬體密鑰、一軟體密鑰或一密碼(例如用以存取安全資料或執行受限制的操作)之相令。當偵測一程式破壞時,程式流監視器115可對處理器105產生一中斷信號,其可導致(例如)重新開始正確之程式流。當從程式流監視器接收中斷信號時,處理器在一些範例中可能重設該程式流及/或採取其他保護動作。
處理器105經由一資料匯流排130從記憶體110接收資料,包括程式指令120。例如,記憶體110可為一非揮發性記憶體,例如一NAND快閃記憶體、一NOR快閃記憶體、一硬碟或一唯讀記憶體(ROM)。
除了儲存該程式120以外,記憶體110中之一部分記憶體
空間可儲存安全資料。例如,該安全資料可包括一密碼以存取一銀行帳戶。在一些實施方案中,一些程式指令120在允許存取至安全資料前,可藉由(例如)需要一機密資料密鑰或使用者憑證來保護安全資料。
當處理器105執行PFC指令125之一時,程式流監視器115操作以自程式120之順序流偵測。在一實施方案中,當執行PFC指令125之一時,處理器105可將一寫致能(WE)信號、一時脈(CLK)信號及/或一輸出啟用(OE)信號發送至PFM 115。處理器105亦可將一軟體產生值發送至PFM 115。回應於接收到之信號,PFM 115將軟體值與一儲存於暫存器中的值比較。若該等值不對應,則在一實施方案中,PFM 115產生一中斷(INT)信號以中斷處理器105。一些用於產生INT信號的範例方法係參考圖3描述。
在一實施方案中,PFM 115包括一計數器135,一比較器140,及一1位元鎖存器145。計數器135可儲存一計數器值。在各種範例中,當偵測到一預定義信號時,計數器135可使該計數器值增量或減量。例如,計數器135在檢查資料寫至PFM 115後可將計數器值增量。在一些實施方案中,計數器135可包括用於預設該計數器之一值的邏輯。此可(例如)使用一在PFM 115內之計數器更新暫存器執行。在所述範例中,處理器105可發送WE信號及一替換值至計數器135,以替換計數器135中的計數器值。例如,當WE信號在一正時脈邊緣期間係作用時,計數器135可用資料匯流排130上之資料來替換該計數器值。在其他實施方
案中,計數器135亦可接收一重設信號,其當接收到時,可重設計數器135內之計數器值至一預定義值(如00H)。
比較器140將計數器值與接收到資料比較。鎖存器145可儲存一來自比較器140的比較結果。例如,鎖存器145可為一SR鎖存器或一D鎖存器。在一些範例中,當計數器值及接收到資料匹配時,比較器140可輸出一邏輯低電壓,且當計數器值及接收到資料不匹配時,比較器140可輸出一邏輯高電壓。
在所述範例中,鎖存器145亦從處理器105接收OE信號。處理器105可使用OE信號以致能或停用鎖存器145之一輸出。當致能輸出時,鎖存器145將儲存比較結果發送至處理器105。當接收到OE信號時,鎖存器145才鎖存該比較結果。若該等值(如硬體及軟體值)不匹配時,則鎖存器145輸出一信號,其耦合處理器105之一中斷(INT)輸入。
在一些範例中,處理器105可產生一關聯欲發送至PFM 115之PFC 125的軟體值。例如,該軟體值可由編譯器或載入器產生。在一些範例中,編譯器可藉由(例如)決定一關聯PFC 125之預期硬體值來產生PFC 125的軟體值。例如,當程式指令120依預定順序執行時,編譯器可預定用於計數器135之預期值。
軟體值的各值可依各種方法關聯一對應PFC指令。在一實施方案中,一軟體值可儲存在PFC 125的操作碼中(如成為一組合碼或機器碼之參數)。在另一實施方案中,PFC
125之操作碼可包括一對於含有該軟體值之一查找表的項目之指標。在提取該軟體值後,處理器105將所提取軟體值發送至PFM 115。在一些範例中,該處理器可造成該軟體值被供應至PFM 115,無須使軟體值傳遞至處理器或來自處理器。
使用關聯目前或最近處理(如執行)之PFC的軟體值,PFM 115可操作以決定程式流是否正確。例如,若比較器140決定接收到軟體值不對應於計數器值,則該程式流不正確。當計數器值及接收到軟體值不匹配時,PFM 115可將不匹配信號發送至處理器105以產生一中斷信號至處理器105。在各種實施方案中,處理器105可執行各種中斷常式。用於造成中斷常式以回應一PFC指令之執行的方法之一些範例係參考圖2描述。
編譯器可用各種方法來產生一軟體值,其係用於置入一程式或成組指令的各PFC。在一些範例中,計數器135使每一時脈循環之計數器值增量。接著,藉由決定在一順序指令之該分支中最近進行PFC後欲由處理器105執行的一些時脈循環,編譯器可產生關聯PFC 125的各軟體值。在具有順序執行指令之多個分支的一些程式中,編譯器可在各分支處或接近其開始處決定一基本計數器值(如初始化值)。用於該分支中PFC指令之預期計數值可基於一相對於用於該分支之基本計數器值的計數。在執行時期,在一分支中執行PFC指令前,用於該分支之基本計數值可載入PFM 115中之計數器135內。因此,當執行含有順序指令之多個
分支之程式時,可同步地維持計數器135中之計數器值。
在一些實施方案中,計數器135在每次執行一PFC指令時將計數器值增量。在此類實施方案中,編譯器可藉由相對於該分支中一立即進行PFC指令(若有的話)將軟體值增量,來產生關聯PFC 125的各軟體值。在一程式流破壞後,例如應在下一步執行之檢查指令可被跳過,或將在一未預期數目之時脈循環後執行。因此,當執行下一PFC指令時,硬體計數器值將很可能不匹配關聯的軟體值。回應此一不匹配,PFM 115將產生一中斷。
對於各程式流分支,處理器105可再同步化該計數器值與用於該分支的適當值。例如,處理器105可在執行各分支指令後,發送WE信號及一同步化替換值至PFM 115。當計數器135接收到WE信號及該替換值時,計數器135可儲存接收到替換值且丟棄目前儲存的計數器值。處理器105可在執行分支指令後自程式指令120提取該替換值。例如,各分支之一第一操作碼可包括一對於關聯替換值之指標,其可例如儲存在查找表項目中。
在一些實施方案中,PFM 115可用於與其他安全性機制結合,以監視及/或校正程式流。例如,PFM 115可用於與監控器計時器或軟體結合僅用於檢查。如圖1B中顯示,系統150包括PFM 115及一監控器計時器155以偵測不正確之程式流。在所述範例中,當偵測到不正確程式流時,處理器105從監控器計時器155接收INT信號。在一些範例中,由監控器計時器155產生的INT信號可觸發處理器105中的
中斷處理常式,以保護安全資料不被存取。
在所述範例中,處理器105發送一重設(如有時稱為踢除信號)信號至監控器計時器155。在一些實施方案中,踢除信號可回應於供應給PFM 115之WE、CLK、DATA及/或OE信號中一或多個。在此類範例中,只要處理器105在監控器155的一重設週期內與PFM 115相互作用,監控器155不會產生一INT信號。一般而言,若未在一預定義週期之時間(如10ms)內接收到該踢除信號,監控器155可能將INT信號發送至處理器105。在各種實施方案中,INT信號可觸發處理器105以處理一錯誤情況。例如,INT信號可觸發處理器105以再開始系統150。在另一範例中,INT信號可觸發處理器105以將操作改變成一其中安全資料無法從記憶體110讀取的安全模式。
如圖示,監控器155係實施為外部硬體。在其他實施方案中,監控器155可實施為處理器105的部分。在其他實施方案中,監控器155及PFM 115可整合成一模組(如ASIC),其經組態以提供處理器105靈活之錯誤發現能力。
在一些實施方案中,監控器155亦從PFM 115接收一信號。在一些範例中,控制信號可致使監控器155不接收該踢除信號。PFM 115基於由比較器140產生的比較結果產生信號。在所述範例中,當接收到OE信號時,比較器140可比較該接收到軟體值及計數器值。OE信號可停用比較器140之輸出,因此比較器140的比較結果未儲存在鎖存器145中。基於該比較結果,若接收到的軟體值不對應於硬
體計數器值,PFM 115可致能監控器155,且若接收到軟體值對應於計數器值時停用監控器155。
在各種範例中,可將系統或方法有利地用於包括(但不限於)可攜式或桌上型電腦系統、伺服器、通用電腦之應用,用於產業、科學或醫學應用之設備(如可程式化邏輯控制器、測試及測量系統,臨床監視器及類似者)、電信設備、自動櫃員機、智慧卡或手持行動裝置(如行動電話、可攜式數位助理)。一說明性範例可在一儲存安全資料及/或提供限制功能之以處理器為主裝置中實施。
在一些實施方案中,計數器135之一輸出可基於計數器值產生以改進資料安全性。藉由具有計數器的不同實施方案,可增加安全性層級。在一些範例中,計數器135可包括一簡單加法器(如上或下計數器、移位暫存器),或更複雜的邏輯,例如算術邏輯單元(ALU)。在一些範例中,計數器135可包括一執行CRC(循環冗餘檢查)碼的處理器。例如,計數器135可包括額外邏輯或硬體以產生計數器輸出值。例如,加法器或ALU可執行邏輯或算術運算以產生計數器輸出值。ALU可藉由(例如)用一數(如三)乘以計數器值來產生一輸出至比較器140。在其他範例中,計數器135可包括複雜邏輯,其包括結合及/或順序邏輯(如解碼器、編碼器或狀態機),以基於該計數器值產生一輸出至比較器140。
在其他實施方案中,計數器135可為一第二處理器,其執行軟體以產生儲存計數器輸出值。例如,計數器135可
執行一循環冗餘檢查(CRC),以基於儲存計數器值產生一核對和。在各種範例中,此一第二處理器可用同步及/或結合邏輯電路及/或類比電路(例如其可為離散、整合或其結合)整體或部分地實施。
在一些實施方案中,PFC 125之一或多個可由編譯器自動地及/或由軟體程式員手動地插入指令之一程式。例如,在編譯程序期間,編譯器可將PFC 125插入程式指令120中。在另一範例中,程式員可使用(例如)一預定語法在其中PFC 125欲插入程式指令120之一或多個位置手動地指定。在一些範例中,一程式員可在一編譯器將PFC自動地插入程式之前及/或之後手動地新增或移除PFC。
在一些實施方案中,亦可選擇PFC 125之自動插入。例如,編譯器可包括一選項,以對於系統100、150中之個別軟體選擇一保護層級。若一程式被選定具有更高層級之保護,則例如可將PFC 125更經常地插入程式。若一程式被選定具有低層級之保護,則例如可將PFC 125相對較少地插入該程式。例如,可每25指令插入一PFC用於高層級的安全性,或每100指令插入用於低層級的安全性。在各種範例中,PFC可在各個條件分支指令處自動插入,且可進一步包括一重設(如初始化)值,用於寫至PFM 115中之計數器135。
圖2顯示一流程圖,其說明用於在一CPU(如處理器105)中監視程式流之操作的範例性方法200。方法200包括一般可由一處理器(如處理器105)執行的操作。操作可在一電腦
系統(如系統100或系統150)的控制、監督及/或監視下執行。操作亦可由其他處理及/或控制元件(其可由一介面(如資料匯流排130或其他通信介面)合併)來輔助或擴充。一些或所有操作可由執行在一信號中實際執行之指令的一或多個處理器來執行。該處理可使用類比及/或數位硬體或技術實施,單獨或協同一或多個處理器執行指令。
當一欲在下一步處理的指令被識別(如接收)時,方法200在步驟205開始。例如,處理器105可在一指令擷取操作期間從記憶體110接收程式指令120。在步驟210,係決定接收到的指令是否係一PFC指令。例如,處理器105可使用一指令轉譯表且決定該接收到的指令係PFC 125。若其決定接收到的指令並非PFC,則接收到的指令在步驟215執行。其次,在步驟220中,係決定所執行指令是否係一分支指令(如前進、跳越或類似者)。若決定所執行指令並非一分支指令,則重覆步驟205。若決定所執行指令係一分支指令,則在步驟225中,識別(如提取)一替換值。例如,處理器105可從查找表項目中提取替換值。在步驟230中,產生替換值及一寫致能信號(WE)且將其儲存在一PFM(如PFM 115)之計數器(如計數器135)中,且重覆步驟205。例如,處理器105可發送WE信號及替換值至PFM 115之計數器135以更新該計數器值。
若在步驟210中決定指令係一PFC,則在步驟235中提取一軟體值。例如,處理器105可從PFC 125的操作碼或從一查找表提取該軟體值。所提取軟體值係在步驟240中發送
至PFM。例如,處理器105可經由資料匯流排130將所提取軟體值發送至PFM 115。
其次,一PFM輸出係在步驟245中致能。例如,處理器105可藉由將OE信號發送至鎖存器145來致能PFM。在另一範例中,處理器105可藉由將OE信號發送至比較器140來致能PFM。其在步驟250中決定是否從PFM接收一中斷。例如,處理器105可決定INT信號之電壓位準是否在一預定臨界值上。若(例如)從INT信號接收一邏輯高電壓,則處理器105可決定從PFM 115接收一中斷。若其決定未從PFM接收到中斷,則PFM輸出係在步驟255停用且重覆步驟205。若其決定從PFM接收到中斷,則在步驟260中會執行一中斷常式,且方法200結束。
圖3顯示一說明用於監視在CPU(如處理器105)中執行之一程式的程式流之範例性方法300的流程圖。方法300包括一般由PFM(如PFM 115)執行的操作。操作可在處理器的控制、監督及/或監視下執行。操作亦可由其他處理及/或控制元件(其可由一介面(如資料匯流排130或其他通信介面)合併)來輔助或擴充。
當PFM決定是否接收到信號之一相關部分(如正時脈邊緣)時方法300在步驟305開始。例如,PFM 115可監視一正邊緣之CLK信號。若其決定(例如)未接收到正時脈邊緣,則重覆步驟305。若其決定(例如)接收到正時脈邊緣,則在步驟310決定是否接收到一寫致能。例如,PFM 115可檢查是否從處理器105接收WE信號。若其決定接收到寫致能,
則一替換值在步驟315接收。例如,PFM 115可經由資料匯流排130從處理器105接收替換值。其次,一計數器值係在步驟320中以接收到的替換值更新,且重覆步驟305。例如,計數器135可使用來自處理器105之接收到替換值以更新儲存的計數器值。
在步驟310中,若其決定未接收到寫致能,則其在步驟330決定是否接收到一輸出致能。例如,PFM 115可決定是否從處理器105接收到OE信號。
若未接收到OE信號,則在步驟325係更新(即增量)一計數器值,且重覆步驟305。例如,計數器135可使計數器值增量。若接收到OE信號,則在步驟335接收一軟體值。例如,PFM 115可經由資料匯流排130從處理器105接收一軟體值。該軟體值可關聯一已由處理器執行的PFC指令。其次,在步驟340決否接收到之軟體值定是對應於儲存計數器值。例如,PFM 115可使用比較器140以比較該接收到的軟體值及計數器值。若其決定該接收到的軟體值對應於儲存計數器值,則重覆步驟325。若其決定接收到的軟體值不對應於儲存計數器值,則在步驟345產生一中斷,且方法300結束。例如,當接收到的軟體值不等於儲存計數器值時,則比較器140可產生一信號至1位元鎖存器145來產生INT信號。
儘管已參考以上圖式來描述一系統(其可為可攜式)的範例,其他實施方案可在其他應用中部署,例如其他電路應用、計算應用、網路應用及類似者。
在一些範例中,處理器當執行一程式流檢查指令時可執行操作,其包括將一預定值傳送至程式流監視器。該預定值(例如)可關聯在編譯時之指令,且當在執行一最近程式流檢查指令時,可代表程式流相對於該程式流之先前值中的預期改變。在一些具體實施例中,程式流監視器可從一(例如)維持在程式流監視器之計數器中的累積計數增加(或減去)該預定值。在一些具體實施例中,程式流監視器可維持一值,其代表一信號(如系統時脈)之轉變數目的計數,該轉變係因一最近程式流檢查指令或初始化一可順序執行之指令的分支內的計數器而發生。
雖然已描述範例架構之特定特徵,但可合併其他特徵以改進性能。例如,由PFM 115產生之中斷信號可傳送至中斷控制器或處理器105外部之其他中斷處理裝置。
當偵測到一不正確程式流時,處理器105可執行不同常式以保護安全資料。例如,當接收到中斷時,處理器105可抹除所有安全資料。在另一範例中,處理器105可重設系統100或150以防止安全資料被存取。在另一範例中,處理器105可產生一訊息以通知管理者有關不正確程式流。在另一範例中,處理器105可執行以上的結合以保護安全資料。
除了(或代替)直接比較一硬體及一軟體值以偵測程式流破壞外,一些實施可評估硬體及/或軟體值成為對於一或多個數位及/或類比函數的參數輸入。可將此類函數的計算結果與一預期值或臨界值比較以偵測程式流破壞。範例
性函數可包括(但不限於)雜湊函數、位元偏移、結合邏輯、數學運算(如乘法、減法、除法、加法),及/或此等或其他運算的結合。
各種實施方案可包括數位及/或類比電路、電腦硬體、韌體、軟體或其結合。一些系統可使用適合通信方法、設備及技術通信。系統之組件可藉由類比或數位資料通信之任何形式或媒體交流資訊。
在一態樣中,一範例系統包括一暫存器,其係可操作以儲存一第一資料值;及一評估模組,其評估該第一資料值是否對應於一第二資料值。該系統亦包括一處理器,以執行欲依預定順序執行的一組指令。執行指令之該順序造成操作被執行。該等操作之一涉及處理在該組指令中之一指令,以決定該指令是否根據預定順序執行。該等操作之另一者涉及將第二資料值傳送至評估模組。此第二資料值係關聯已處理指令及具有一值,其代表處理指令在預定順序中之位置。該系統進一步包括一更新模組以更新第一資料值,以回應於一係關聯處理器根據預定順序之執行指令的更新信號。最後,該系統包括一輸出模組,以當第二值不對應於第一資料值時產生一輸出信號。
在系統的一些具體實施例中,該組指令包括在指令之一程式內的順序指令之分支。指令的程式可包括順序指令的至少一額外分支。該系統可進一步包括一計數器,其包含暫存器及更新模組。
在一些應用中,申請專利範圍的系統包括一智慧卡,其
含有處理器及計數器。在一些範例中,更新信號對應於處理器的一或多個指令循環,或該更新信號對應於該等指令之一的各個執行,以決定該指令是否根據預定順序執行。
在一些範例中,預定順序之一值係當編譯該組指令時決定。若更新模組未接收更新信號達到至少一預定時間長度,系統可包括一監控器模組以產生輸出信號。該處理器可包括一耦合以接收輸出信號的中斷輸入。該系統可包括一資料匯流排,其係可操作以從處理器輸送第二資料值至評估模組。該評估模組亦可操作以決定第一值是否匹配第二值。
在另一態樣中,一範例方法包括一些操作。在第一操作中,在一具有一執行指令之一程式(其包括一或多個程式流驗證指令)的處理器之裝置中,該方法包括當處理器執行一程式指令時更新一程式流值。在另一操作中,當由處理器執行一程式流驗證指令時,該方法包括決定一關聯該程式流驗證指令之驗證值是否對應於更新程式流值。若驗證值不對應於更新程式流值,該方法包括起始一保護動作。該驗證值係一編譯器決定值,其代表相對於其他指令執行程式流驗證指令之預期次序。
在該方法的各種實施方案中,該方法可進一步包括在開始執行順序指令的一新分支後,初始化程式流值的一操作。起始一保護動作可包括中斷該處理器。
在另一態樣中,一範例系統包括一處理器,其經組態以執行具有一或多個程式流驗證指令之程式指令。各程式流
驗證指令係關聯一驗證值,其代表程式流驗證指令相對於其他程式指令之一預定次序執行。該系統進一步包括用於驗證程式流之構件,其係經組態用以決定(回應於由該處理器執行一程式流驗證指令)一關聯該已執行程式流驗證指令之驗證值是否對應於一預期程式流值。
在該系統的一些實施方案中,該系統可包括中斷構件,其係用於當決定該驗證值不對應於該預期程式流值時中斷該處理器。該驗證構件可進一步包括一計數器,其係可操作以儲存程式流值。當處理器執行程式指令時,計數器可操作以更新該預期程式流值。起始該保護方法可包括產生一信號以中斷該處理器。
在一些範例中,該驗證值可為一軟體產生值,如一關聯目前或最近處理(如執行)之PFC的軟體值。
以上已描述一些實施方案。然而,應理解可進行各種修正。例如,若所揭示操作係依不同順序執行,若所揭示系統中之組件係依不同方式結合,或若該等組件係由其他組件替換或輔助,亦可達到有利的結果。一些已揭示之功能及程序(包括演算法)可在硬體、軟體或其結合中執行,且一些實施方案可在與所述模組或硬體不相同之模組或硬體上執行。因此,其他實施方案係在下列申請專利範圍的範疇內。
100‧‧‧範例性系統
105‧‧‧處理器
110‧‧‧記憶體
115‧‧‧程式流監視器/PFM
120‧‧‧程式指令
125‧‧‧程式流檢查指令/PFC
130‧‧‧資料匯流排
135‧‧‧計數器
140‧‧‧比較器
145‧‧‧1位元鎖存器
150‧‧‧系統
155‧‧‧監控器(計時器)
圖1A至1B係說明能監視程式流之範例性系統的方塊圖。
圖2係一說明用於以程式流檢查指令執行一程式的範例性方法之流程圖。
圖3係一說明用於操作一程式流監視器以偵測程式流錯誤的範例性方法之流程圖。
100‧‧‧範例性系統
105‧‧‧處理器
110‧‧‧記憶體
115‧‧‧程式流監視器/PFM
120‧‧‧程式指令
125‧‧‧程式流檢查指令/PFC
130‧‧‧資料匯流排
135‧‧‧計數器
140‧‧‧比較器
145‧‧‧1位元鎖存器
Claims (13)
- 一種用於程式流控制之系統,其包含:一暫存器,其係可操作以儲存一第一資料值,該第一資料值代表在指令之一預定順序中之一指令的一預期位置;一處理器,其係用以執行欲依該預定順序執行的一組指令,其中執行指令之該順序造成操作被執行,該等操作包含:處理在該組指令中之一指令,以決定該指令是否根據該預定順序執行;以及將一第二資料值設定為一值,其代表該處理指令在該預定順序中之位置;一評估模組,其評估該第一資料值是否對應於該第二資料值;一更新模組,若該第一資料值對應於該第二資料值,則該更新模組更新該第一資料值,以回應於一與根據該預定順序之該等指令的該處理器之執行相關聯之一更新信號;一輸出模組,若該第二資料值不對應於該第一資料值,則該輸出模組產生一輸出信號;一計數器,其包含該暫存器及該更新模組;及一智慧卡,其包括該處理器及該計數器。
- 如請求項1之系統,其中該組指令包含一在指令之一程 式內的順序指令之分支。
- 如請求項2之系統,其中指令之該程式包含順序指令的至少一額外分支。
- 如請求項1之系統,其中該更新信號對應於該處理器的一或多個指令循環。
- 如請求項1之系統,其中該更新信號對應於該等指令之一的各個執行,以決定該指令是否根據該預定順序執行。
- 如請求項1之系統,其中該預定順序之一值係當編譯該組指令時決定。
- 如請求項1之系統,其進一步包含一監控器模組,以在該更新模組未接收該更新信號達到至少一預定時間長度情況下產生該輸出信號。
- 如請求項1之系統,其中該處理器包含一中斷輸入,其係耦合以接收該輸出信號。
- 如請求項1之系統,該系統進一步包含一資料匯流排,其係可操作以從該處理器輸送該第二資料值至該評估模組。
- 如請求項1之系統,其中該評估模組係可操作以決定該第一值是否匹配該第二值。
- 如請求項2之系統,其中該等操作進一步包含在開始執行順序指令的該分支後初始化該第二資料值。
- 如請求項1之系統,其中該輸出信號起始一保護動作。
- 如請求項12之系統,其中該保護動作包含中斷該處理器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/562,280 US7644322B2 (en) | 2006-11-21 | 2006-11-21 | Hardware flow control monitor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200837628A TW200837628A (en) | 2008-09-16 |
TWI431526B true TWI431526B (zh) | 2014-03-21 |
Family
ID=39327394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096143994A TWI431526B (zh) | 2006-11-21 | 2007-11-20 | 硬體流控制監視器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7644322B2 (zh) |
TW (1) | TWI431526B (zh) |
WO (1) | WO2008064087A2 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861305B2 (en) * | 2007-02-07 | 2010-12-28 | International Business Machines Corporation | Method and system for hardware based program flow monitor for embedded software |
US10802990B2 (en) * | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
KR101685633B1 (ko) * | 2009-01-05 | 2016-12-12 | 삼성전자주식회사 | 메모리 시스템 |
JP2012088815A (ja) * | 2010-10-15 | 2012-05-10 | Toshiba Corp | マイクロプロセッサ動作監視システム |
US20120179898A1 (en) * | 2011-01-10 | 2012-07-12 | Apple Inc. | System and method for enforcing software security through cpu statistics gathered using hardware features |
WO2017015963A1 (zh) | 2015-07-30 | 2017-02-02 | 华为技术有限公司 | 一种通信方法及通信设备 |
US10592433B1 (en) * | 2015-12-10 | 2020-03-17 | Massachusetts Institute Of Technology | Secure execution of encrypted software in an integrated circuit |
US10536168B2 (en) * | 2016-11-07 | 2020-01-14 | Infineon Technologies Ag | Program flow monitoring for deterministic firmware functions |
FR3065095B1 (fr) * | 2017-04-11 | 2019-06-28 | Centre National De La Recherche Scientifique | Procede d'execution d'un code machine d'une fonction securisee |
US10579457B1 (en) * | 2017-11-03 | 2020-03-03 | Government of the United States, as represented by Director National Security Agency | Processor for achieving flow integrity and a method of providing notice of a fault in control flow |
CN110376957B (zh) * | 2019-07-04 | 2020-09-25 | 哈尔滨工业大学(威海) | 一种基于安全规约自动构建的plc安全事件取证方法 |
US20220365838A1 (en) * | 2021-05-12 | 2022-11-17 | Nxp Usa, Inc. | System and method for improved control flow monitoring of processors |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4108359A (en) * | 1977-03-30 | 1978-08-22 | The United States Of America As Represented By The Secretary Of The Army | Apparatus for verifying the execution of a sequence of coded instructions |
US4184201A (en) | 1978-04-26 | 1980-01-15 | Sperry Rand Corporation | Integrating processor element |
US5515540A (en) | 1990-08-27 | 1996-05-07 | Dallas Semiconducter Corp. | Microprocessor with single pin for memory wipe |
US5473754A (en) | 1993-11-23 | 1995-12-05 | Rockwell International Corporation | Branch decision encoding scheme |
US6272637B1 (en) | 1997-04-14 | 2001-08-07 | Dallas Semiconductor Corporation | Systems and methods for protecting access to encrypted information |
US6044458A (en) * | 1997-12-12 | 2000-03-28 | Motorola, Inc. | System for monitoring program flow utilizing fixwords stored sequentially to opcodes |
US5974529A (en) * | 1998-05-12 | 1999-10-26 | Mcdonnell Douglas Corp. | Systems and methods for control flow error detection in reduced instruction set computer processors |
JP2000187600A (ja) * | 1998-12-22 | 2000-07-04 | Nec Corp | ウオッチドッグタイマ方式 |
FR2790844B1 (fr) | 1999-03-09 | 2001-05-25 | Gemplus Card Int | Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme |
AU763141B2 (en) * | 1999-04-19 | 2003-07-17 | Motorola Australia Pty Ltd | A method of detecting illegal sequences of code execution |
US6615324B1 (en) * | 2000-01-07 | 2003-09-02 | Cygnal Integrated Products, Inc. | Embedded microprocessor multi-level security system in flash memory |
US7853803B2 (en) | 2001-09-28 | 2010-12-14 | Verizon Corporate Services Group Inc. | System and method for thwarting buffer overflow attacks using encrypted process pointers |
EP1465038B1 (en) | 2003-04-03 | 2013-03-27 | STMicroelectronics (Research & Development) Limited | Memory security device for flexible software environment |
US20050257016A1 (en) * | 2004-05-17 | 2005-11-17 | Brian Boles | Digital signal controller secure memory partitioning |
US8335946B2 (en) * | 2005-11-21 | 2012-12-18 | GM Global Technology Operations LLC | Method for centralization of process sequence checking |
JP4849606B2 (ja) * | 2006-04-28 | 2012-01-11 | 株式会社日立製作所 | 制御フロー誤り検出方法、データ処理装置、及びコンパイラ |
-
2006
- 2006-11-21 US US11/562,280 patent/US7644322B2/en active Active
-
2007
- 2007-11-15 WO PCT/US2007/084861 patent/WO2008064087A2/en active Application Filing
- 2007-11-20 TW TW096143994A patent/TWI431526B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20080120492A1 (en) | 2008-05-22 |
US7644322B2 (en) | 2010-01-05 |
WO2008064087A3 (en) | 2008-09-04 |
WO2008064087A2 (en) | 2008-05-29 |
TW200837628A (en) | 2008-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI431526B (zh) | 硬體流控制監視器 | |
US7757098B2 (en) | Method and apparatus for verifying authenticity of initial boot code | |
US7584386B2 (en) | Microprocessor comprising error detection means protected against an attack by error injection | |
JP5536052B2 (ja) | ループ制御システムおよび方法 | |
US8930657B2 (en) | Method and apparatus for realtime detection of heap memory corruption by buffer overruns | |
US7752427B2 (en) | Stack underflow debug with sticky base | |
US10445168B2 (en) | Device and method for executing a program, and method for storing a program | |
JP2011526045A5 (zh) | ||
US9104890B2 (en) | Data processing device and a secure memory device including the same | |
EP2088529A2 (en) | System and method for securing and executing a flash routine | |
US8751817B2 (en) | Data processing apparatus and validity verification method | |
CN109997140B (zh) | 使用一次写入寄存器从设备的睡眠状态加速安全启动的低功耗嵌入式设备 | |
US10223117B2 (en) | Execution flow protection in microcontrollers | |
TWI803927B (zh) | 處理器、用以保護處理器的裝置、以及用以保護處理器的方法 | |
US7093115B2 (en) | Method and apparatus for detecting an interruption in memory initialization | |
TWI570556B (zh) | 記憶體系統及記憶體控制方法 | |
JP4766285B2 (ja) | 永久データハードウェアインテグリティ | |
JP2008287449A (ja) | データプロセッサ | |
US11442738B2 (en) | Method for executing a machine code of a secure function | |
JP2004038541A (ja) | メモリチェックシステムおよびメモリチェック方法、信号処理装置および信号処理装置のメモリチェック方法、ならびに、メモリチェックプログラム | |
US7533412B2 (en) | Processor secured against traps | |
KR20180126518A (ko) | 벡터 명령 처리 | |
KR20080044652A (ko) | Cpu에서의 스택을 이용한 디버깅 방법 | |
EP3620944A1 (en) | Low power embedded device using a write-once register to speed up the secure boot from sleep states of the device | |
JP2006133982A (ja) | マイクロコンピュータ、マイクロコンピュータにおける不揮発性メモリのデータ保護方法 |