TWI715826B - 用於改良一矽基系統之安全性之電腦實施方法及設備 - Google Patents
用於改良一矽基系統之安全性之電腦實施方法及設備 Download PDFInfo
- Publication number
- TWI715826B TWI715826B TW107105626A TW107105626A TWI715826B TW I715826 B TWI715826 B TW I715826B TW 107105626 A TW107105626 A TW 107105626A TW 107105626 A TW107105626 A TW 107105626A TW I715826 B TWI715826 B TW I715826B
- Authority
- TW
- Taiwan
- Prior art keywords
- software code
- code block
- executable
- comparators
- marking
- Prior art date
Links
Images
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/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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- 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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- 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/575—Secure boot
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
Abstract
本發明揭示用於藉由產生用於在一矽基系統上執行一軟體碼塊之一防短時脈衝干擾程序來改良該矽基系統之安全性的系統、設備及方法。一種例示性方法可藉由將該軟體碼塊標記為不可執行的而開始。第二,使用一分級暫存器來暫存執行該軟體碼塊之意圖。第三,將該軟體碼塊壓縮成一壓縮常數。第四,使用兩個比較器來比較該壓縮常數與一第一預定值。第五,回應於該等比較器,在比較之後提供一真結果,該軟體碼塊經標記為可執行的,以容許執行該軟體碼塊。在另一態樣中,該例示性方法可重複n>1個迭代,且在各迭代i中,將一第i軟體碼塊壓縮成一第i壓縮常數,比較該第i壓縮常數與一第i預定值。
Description
在許多矽基系統(諸如行動電腦及智慧型電話)中使用矽晶片。各矽晶片可含有積體電路且用作一電腦或電子系統之一組件。然而,矽晶片容易受惡意攻擊(諸如由攻擊者使用電壓、雷射或類似破壞技術引起的短時脈衝干擾)影響。此等短時脈衝干擾可影響程式控制流,包含引起至一特定碼位置之跳躍(可能對一攻擊者有利)。
詳細言之,可回應於具有驗證碼之一單一條件之一條件IF/THEN(若/則)檢查指令而執行習知矽基系統之碼執行指令(諸如JUMP(跳躍)指令)。若滿足該條件,則指令返回TRUE(真)且執行一碼執行操作。若指令係一JUMP,則藉由改變指令指標暫存器將執行流轉移至一指定碼空間。若不滿足該條件,則指令返回FALSE(假)且不執行碼執行操作。
此簡單的IF/THEN條件運算極易受攻擊,此係因為一IF檢查可易受短時脈衝干擾而從FALSE至TRUE,或JUMP操作可經短時脈衝干擾以跳躍至由一攻擊者指定之一位置以執行惡意碼。一攻擊者可能愚弄系統使之相信未經驗證或不良碼實際上係正規的,或即使該碼係正規的,一攻擊者仍能夠使系統跳躍至一不良位置且執行非所要的碼。
本發明揭示用於藉由產生用於執行一軟體碼塊之一防短時脈衝干擾程序而改良一矽基系統之安全性之系統、設備及方法。一例示性方法可藉由將該軟體碼塊標記為不可執行的而開始。第二,使用一分級暫存器暫存執行該軟體碼塊之意圖。第三,將該軟體碼塊壓縮成一壓縮常數。第四,使用兩個比較器比較該壓縮常數與一第一預定值。第五,回應於該等比較器在比較之後提供一真結果,該軟體碼塊經標記為可執行的以容許執行該軟體碼塊。在另一態樣中,該例示性方法可重複n>1個迭代,且在各迭代i中,將一第i軟體碼塊壓縮成一第i壓縮常數,比較該第i壓縮常數與一第i預定值。
在下文之僅藉由實例給出之隨附圖式及描述中提出一或多態樣之細節。自描述、圖式及技術方案將使其他特徵、態樣及優勢變得明顯。在各種圖式中之類似元件符號及命名指示類似元件。
100:矽基系統
101:軟體碼塊
102:記憶體
103:控制器
104:分級暫存器
105:請求
106:驗證處理器
107:壓縮處理器
108a:比較器
108b:比較器
108n:比較器
110:載入器
111:額外載入器
200:電腦實施方法
201:步驟
202:步驟
203:步驟
204:步驟
205:步驟
206:步驟
207:步驟
300:電腦實施方法
301:步驟
302:步驟
303:步驟
304:步驟
305:步驟
306:步驟
307:步驟
308:步驟
309:步驟
310:步驟
311:步驟
312:步驟
313:步驟
314:步驟
400:運算裝置
401:基本組態
410:處理器
411:第一級快取區
412:第二級快取區
413:處理器核心
414:暫存器
415:記憶體控制器
420:系統記憶體
421:作業系統
422:應用程式
423:安全性改良演算法
424:程式資料
430:記憶體匯流排
圖1繪示支援一防短時脈衝干擾軟體碼塊執行程序之一矽基系統之功能元件之一方塊圖。
圖2係用於藉由產生用於由一矽基系統功能執行一軟體碼塊之一防短時脈衝干擾程序而改良該矽基系統之安全性之一例示性電腦實施方法之流程圖。
圖4係繪示一例示性矽基系統之一方塊圖。
為防止攻擊者能夠利用短時脈衝干擾一IF/THEN條件檢查運算,一安全矽基系統獲益於一防短時脈衝干擾方法以跳躍至經驗證碼。需要防止一IF/THEN條件檢查之短時脈衝干擾且防止一短時脈衝干擾引起系統跳躍至一不良位置之一機構。
即使一條件敘述(如一IF敘述)經正確地評估,一JUMP敘述仍可經短時脈衝干擾而使系統跳躍至一不良位置。此外,一JUMP敘述可不包含在一條件敘述塊內,此意味著一旦執行達到碼中出現JUMP敘述之點,便會執行JUMP敘述。並不包含在一條件敘述塊內之一JUMP敘述可能受短時脈衝干擾。
因此,除防止一短時脈衝干擾引起一條件敘述之一不正確評估之外,亦期望防止歸因於一短時脈衝干擾使跳躍至一不正確位置之惡意碼之執行。
此文件描述藉由提供用於跳躍至經驗證碼且在不存在驗證是否應執行特定碼之一條件檢查中之一單一故障點的情況下執行該碼之一防短時脈衝干擾方法而改良一矽基系統之安全性。此外,根據一或多個態樣,可藉由提供用於跳躍至經驗證碼且在不存在指定至一記憶體位置之一跳躍之命令處之一單一故障點的情況下執行該碼之一防短時脈衝干擾方法而改良一矽基系統之安全性。
一例示性態樣包含改良矽基系統之安全性的若干單獨部分。第一,一矽基系統上用於儲存之記憶體能夠保持可執行碼,且可執行碼可具有至少一個執行屬性。記憶體可包含開機記憶體、唯讀記憶體、隨機存取記憶體、電可擦除可程式化唯讀記憶體(EEPROM)及快閃,如下文參考圖3進一步解釋。第二,一例示性態樣可具有為邏輯指定至少一個執行屬性之分
級暫存器,邏輯根據執行屬性來控制對記憶體之存取。第三,可存在判定是否驗證且信賴可執行碼之至少兩個比較器。
碼執行可被分離為不同執行級,其中各執行級與一單獨軟體碼塊相關。各執行級可具有一不同預定值。在與當前執行級相關聯之預定值未匹配在當前執行級期間獲得之一壓縮常數的情況下,碼執行可不移動至一不同執行級。一軟體碼塊、含有一軟體碼塊之記憶體或在一後續時間可含有一軟體碼塊之記憶體之一執行屬性可包含以下之至少一者:可執行、不可執行,或不受信賴。
圖1繪示支援一防短時脈衝干擾軟體碼塊執行程序之一矽基系統(100)之功能元件之一方塊圖。矽基系統可呈任何數量個形式,包含一系統單晶片(SoC)(由一單一矽晶片上之記憶體及/或邏輯積體電路(IC)構成)、一系統級封裝(SiP)或多晶片封裝(MCP)(由具有專用功能性之多個離散矽晶片構成)、具有多個離散組件之一運算裝置(各組件具有一囊封/封裝晶片),或類似物。
一軟體碼塊(101)可經接收或下載至矽基系統(100)之一記憶體(102)。一控制器(103)可控制是否可讀取記憶體(102)。可以圍繞記憶體(102)之至少一個硬體件之形式來實施控制器。在至少一項實施例中,於執行軟體碼塊(101)之前,一載入器(110)(諸如一開機載入器)可將最新下載之軟體碼塊(101)標記為「不可執行」,此意味著若存在自軟體碼塊(101)讀取碼之數次嘗試,則可鎖定矽基系統(100)及/或可提供一錯誤。載入器(110)可係在經固線連接於矽基系統(100)上之ROM(諸如一開機ROM)中。一旦驗證且保全載入器(110),便可將可選之額外載入器(111)載入記憶體(102)中。
在至少一項實施例中,將軟體碼塊(101)標記為不可執行可藉由將含有軟體碼塊(101)之記憶體(102)標記為不可執行之至少一者實現。類似地,將軟體碼塊(101)標記為可執行可藉由將含有軟體碼塊(101)之記憶體(102)標記為可執行之至少一者實現。
將軟體碼塊(101)標記為可執行或不可執行可藉由標記記憶體(102)內之一起始記憶體位址及一結束記憶體位址以便識別經接收或儲存於記憶體(102)中之軟體碼塊(101)之一位置而實現。在特定例項中,此標記可在記憶體(102)接收或儲存軟體碼塊(101)之前發生。記憶體(102)內之特定位置範圍亦可依據預設標記為不可執行(且隨後在本文描述之條件下標記為可執行)。
當存在來自一請求處理器以執行軟體碼塊(101)之一請求(105)時,可使用一分級暫存器(104)暫存執行軟體碼塊(101)之意圖。在至少一項實施例中,可藉由將具有對應於軟體碼塊(101)之一記憶體位置之一載入指令儲存於分級暫存器(104)中而實現暫存意圖。控制含有軟體碼塊(101)之記憶體(102)之一控制器(103)可判定是否可基於軟體碼塊(101)經標記為「可執行」或「不可執行」而執行軟體碼塊(101)。分級暫存器(104)可接著提供資訊至請求驗證處理器(106),其驗證含有軟體碼塊(101)之記憶體(102)可採取由至少一個分級暫存器(104)指定之至少一個執行屬性。例如,若發現軟體碼塊(101)受信賴且經驗證,則將軟體碼塊(101)標記為「可執行」。直至接收軟體碼塊(101)經標記為可執行之通知才發生請求程序之執行或請求程序中之一執行緒之執行。
一驗證處理器(106)執行實施一驗證程序以驗證軟體碼塊(101)經標記為可執行之指令。作為驗證程序之部分,驗證處理器(106)識別待運行之
軟體碼塊(101)以及使用一雜湊函數雜湊後設資料及軟體碼塊(101)兩者。軟體碼塊(101)可包含在自矽基系統(100)外側接收之一有效負載內側。有效負載亦可含有後設資料,後設資料可含有指示應如何驗證軟體碼塊(101)之資訊。驗證處理器(106)亦可使用有效負載之內容與指示應如何驗證有效負載之一位元域之一組合。若有效負載與位元域表示不一致,則可不藉由驗證處理器(106)驗證有效負載。
一旦驗證處理器(106)已經成功完成驗證,便可經由執行一雜湊演算法之一壓縮處理器(107)將軟體碼塊(101)壓縮為一壓縮常數。可使用一安全雜湊演算法(諸如SHA2-256或SHA3-256)來產生壓縮常數。接著,可藉由軟體將壓縮常數饋入兩個比較器(108a、108b)中以供驗證。兩個比較器(108a、108b)比較壓縮常數與一預定值。將預定值儲存於矽基系統(100)之記憶體(102)或其他硬體中。
實施例不限於兩個比較器。驗證可採用三個、四個或更多個可選比較器(108n)。由比較器進行之比較之結果必須在比較壓縮常數與預定值時一致(返回真),以便判定軟體碼塊(101)無惡意。
比較器(108a、108b、......、108n)可接收相同輸入,且應返回指示壓縮常數等於預定值之相同結果。即,比較器(108a、108b、......、108n)之各者可接收相同輸入且應返回真,此指示壓縮常數等於預定值。由比較器(108a、108b、......、108n)提供之經返回的結果必須一致(返回真),以便判定經測試之軟體碼塊(101)無惡意。冗餘比較器檢查使例示性系統更不易受攻擊,此係由於所有比較器檢查必須在將軟體碼塊(101)標記為「可執行」之前匹配。
在一例示性實施例中,若由比較器(108a、108b、......、108n)提供
之經返回的結果對壓縮常數等於預定值一致(返回真),則軟體碼塊(101)可被標記為「可執行」。在另一例示性實施例中,若由比較器(108a、108b、......、108n)提供之所有經返回結果對壓縮常數等於預定值一致(返回真),則軟體碼塊(101)可被移動至或儲存於標記為「可執行」之記憶體中。在至少一項實施例中,若由比較器(108a、108b、......、108n)提供之經返回結果不一致,則可不將軟體碼塊標記為「可執行」,且控制記憶體(102)之控制器(103)可不容許執行經測試軟體碼塊(101)。若至少一個比較器在判定壓縮常數是否等於預定值時返回假,則軟體碼塊(101)可被標記為「不可執行」,或被移動至或儲存於標記為「不可執行」之記憶體中。
若所有比較器(108a、108b、......、108n)皆不一致,則軟體碼塊(101)可被標記為「不受信賴」。在至少一項實施例中,若一軟體碼塊(101)經標記為「不受信賴」,則可鎖定矽基系統(100)(例如,可禁止進一步碼執行及/或可報告一錯誤)。
藉由組合分級暫存器、驗證程序及至少兩個比較器,可在硬體重複進行多次一條件敘述之一檢查,以產生短時脈衝干擾阻力。
由矽基系統(100)執行之軟體可經分割為不同執行級。必須比較一特定執行級之一軟體碼塊(例如,軟體碼塊(101))與特定執行級特有之一預定值。可藉由軟體判定執行級。在矽基系統(100)開機時,軟體可指示矽基系統正運行哪一執行級。
可鎖定軟體碼塊(101),直至意圖使用一分級暫存器暫存以執行軟體碼塊。藉由僅在比較器提供指示壓縮常數等於預定值之結果之後將軟體碼塊標記為「可執行」,驗證程序確保(除了可忽略的概率外),一攻擊者無法從軟體碼塊(101)跳躍執行至矽基系統(100)中之任一處。僅在軟體碼塊
(101)經標記為「可執行」時,才可執行軟體碼塊(101)。在執行軟體碼塊(101)之後,另一軟體碼塊可經下載且經歷程序之一下一迭代。
可在已經存取軟體碼塊(101)之後使之無效。在此等例項中,軟體碼塊(101)經標記為不可執行且經由簡單暫存器寫入而無效。若期望在一後續時間再次執行軟體碼塊,則可再次啟用軟體碼塊(101)。
圖2係用於藉由產生用於由一矽基系統功能執行一軟體碼塊之一防短時脈衝干擾程序而改良該矽基系統之安全性之一例示性電腦實施方法(200)之流程圖。
第一,且視情況而言,在(201)接收對一矽基系統執行之軟體碼塊。矽基系統可為圖1之矽基系統(100)且軟體碼塊可為圖1之軟體碼塊(101)。若已經載入或接收軟體碼塊(101),則接收軟體碼塊(101)以對矽基系統(100)執行係可選的。
第二,在(202),將軟體碼塊(101)標記為不可執行。第三,在(203),使用至少一個分級暫存器(諸如圖1之分級暫存器(104))來暫存執行軟體碼塊(101)之意圖。
視情況而言,及第四,在(204),執行驗證軟體碼塊(101)之一驗證程序。可藉由一驗證處理器(諸如圖1之驗證處理器(106))執行驗證程序。
第五,在(205),將軟體碼塊壓縮成一壓縮常數。可藉由一壓縮處理器(諸如執行一雜湊演算法之圖1之壓縮處理器(107))執行壓縮。
第六,在(206),使用至少兩個比較器比較壓縮常數與一第一預定值。比較器可為(例如)圖1之比較器(108a、108b、......、108n)。
第七,在(207),且回應於比較器在比較之後提供一真結果,軟體碼塊(101)經標記為可執行的以容許執行軟體碼塊。
圖3係用於藉由產生用於執行n>1個軟體碼塊之一防短時脈衝干擾程序而改良一矽基系統之安全性之一例示性電腦實施方法(300)之一例示性流程圖,其中第i軟體碼塊在一第i執行級(i{1,...,n})上執行。可藉由圖1中描繪之矽基系統(100)之功能元件之一或多個組合執行方法。
第一,在(301),將一計數器設定為等於1。可藉由一驗證處理器(諸如圖1之驗證處理器(106))或可存在於矽基系統中之其他邏輯電路或硬體設定且維持計數器。
視情況而言,及第二,在(302),接收一第i軟體碼塊。第i軟體碼塊可為圖1之軟體碼塊(101)且可藉由一記憶體(諸如圖1之記憶體(102))接收。接收一第i軟體碼塊係可選的,其中(例如)可已經載入或接收一第i軟體碼塊。
第三,在(303),將第i軟體碼塊(例如,軟體碼塊(101))標記為不可執行。可(例如)藉由圖1之載入器(110)將第i軟體碼塊標記為不可執行,載入器(110)將第i軟體碼塊之起始及結束位置標記為經接收至記憶體(102)中。
第四,在(304),使用至少一個分級暫存器(諸如圖1之分級暫存器104)來暫存執行第i軟體碼塊之意圖。視情況而言,在第五,在(305),執行一驗證程序。可至少部分藉由一驗證處理器(諸如圖1之驗證處理器(106))執行驗證程序。
第六,在(306),藉由一壓縮處理器(諸如圖1之壓縮處理器(107))將第i軟體碼塊壓縮成一第i壓縮常數。壓縮處理器(107)可執行一雜湊演算法以便產生第i壓縮常數。
第七,在(307),使用至少兩個比較器比較第i壓縮常數與一第i預定值。預定值可經儲存於記憶體(102)中且使用圖1之比較器(108a、
108b、......、108n)比較。
第八,在(308),且回應於比較器在比較之後提供一真結果,第i軟體碼塊經標記為可執行的以容許執行第i軟體碼塊。第i軟體碼塊(例如,軟體碼塊(101))可(例如)藉由載入器(110)標記為可執行。
第九,且在(309),執行第i軟體碼塊。可藉由對矽基系統(100)可用的一或多個處理器、處理核心或類似物執行第i軟體碼塊(例如,軟體碼塊(101))。視情況而言,第十,在(310),將第i軟體碼塊標記為不可執行。
第十一,在(311),若藉由一處理器(諸如,圖1之驗證處理器(106))做出一判定i=n,則程序停止在(312)。若在(311),藉由驗證處理器(106)做出一判定i≠n,則在(313),i增加1;在(314)開始第i執行級;且視情況而言,接收對矽基系統執行之另一(例如)第i+1軟體碼塊(402)。
圖4係繪示一例示性矽基系統之一方塊圖。例示性矽基系統可使用圖1之矽基系統(100)。
在一基本組態(401)中,運算裝置(400)通常包含一或多個處理器(410)及系統記憶體(420)。使用一記憶體匯流排(430)來進行處理器(410)與系統記憶體(420)之間的通信。
取決於所需組態,處理器(410)可具有任何類型,包含但不限於一微處理器(μP)、一微控制器(μC)、一數位信號處理器(DSP)或其等之任何組合。處理器(410)可包含一或多個快取級(諸如一第一級快取區(411)及一第二級快取區(412))、一處理器核心(413)及暫存器(414)。處理器核心(413)可包含一算術邏輯單元(ALU)、一浮點單元(FPU)、一數位信號處理核心(DSP核心)或其等之任何組合。一記憶體控制器(415)亦可配合處理器(410)使用,或在一些實施方案中,記憶體控制器(415)可為處理器(410)之
一內部零件。
取決於所需組態,系統記憶體(420)可具有任何類型,包含但不限於揮發性記憶體(諸如RAM)、非揮發性記憶體(諸如ROM、EEPROM、快閃記憶體等等)或其等之任何組合。系統記憶體(420)通常包含一作業系統(421)、一或多個應用程式(422)及程式資料(424)。應用程式(422)可包含矽基系統(100)之安全性改良演算法(423),其產生用於執行一軟體碼塊(諸如圖1之軟體碼塊(101))之一防短時脈衝干擾程序。防短時脈衝干擾程序可根據圖2及圖3之一或多個流程圖。程式資料(424)可包含儲存當藉由一或多個處理裝置執行時實施用於藉由產生一防短時脈衝干擾程序而改良矽基系統(100)之安全性之一方法之指令。
另外,程式資料(424)可包含一或多個軟體碼塊(諸如圖1之軟體碼塊(101))及/或用於與壓縮常數比較之一或多個預定值。在一些實施例中,應用程式(422)可經配置以在一作業系統(421)上配合程式資料(424)操作。
運算裝置(400)可具有額外特徵或功能性,及促進基本組態(401)與任何需要之裝置及介面之間的通信之額外介面。
系統記憶體(420)係電腦儲存媒體之一實例。電腦儲存媒體包含但不限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(DVD)或其他光學儲存器、磁卡、磁帶、磁碟儲存器或其他磁性儲存裝置、或可用於儲存所需資訊且可藉由運算裝置400存取之任何其他媒體。任何此電腦儲存媒體可為運算裝置400之部分。系統記憶體(420)可為圖1之記憶體(102)且受如藉由圖2之方法200或圖3之方法300描述之方法約束。
一記憶體控制器(415)可基於系統記憶體(420)之一部分經標記為「可
執行」或「不可執行」而控制系統記憶體(420)或控制對系統記憶體(420)之存取、讀取或寫入。在至少一項實施例中,記憶體控制器(415)可基於是否可取決於一軟體碼塊(101)經標記為「可執行」或「不可執行」執行軟體碼塊(101)而控制系統記憶體(420)或控制對系統記憶體(420)之存取、讀取或寫入。
運算裝置(400)之一處理器(410)可執行邏輯及/或比較功能。邏輯及/或比較功能可支援圖2或圖3之方法200,且包含由圖1之驗證處理器(106)、壓縮處理器(107)及比較器(108a、108b、......、108n)執行之功能。另外且特定言之,運算裝置(400)之暫存器(314)可執行圖1之分級暫存器(104)之功能。
運算裝置(400)可經實施為一小尺寸可攜式(或行動)電子裝置之一部分,諸如一行動電話、一智慧型電話、一個人資料助理(PDA)、一個人媒體播放器裝置、一平板電腦(平板)、一無線網路手錶裝置、一個人耳機組裝置、一特定應用裝置或包含任何以上功能之一混合裝置。運算裝置(400)亦可經實施為包含膝上型電腦及非膝上型電腦組態兩者之一個人電腦。
前述詳細描述已經由方塊圖、流程圖及/或實例之使用闡述裝置及/或程序之各種實施例。在此等方塊圖、流程圖及/或實例含有一或多個功能及/或操作之範圍內,熟習此項技術者將理解,可藉由大範圍之硬體、軟體、韌體或實質上其等之組合個別及/或共同實施此等方塊圖、流程圖或實例內之各功能及/或操作。根據至少一項實施例,可經由特定應用積體電路(ASIC)、場可程式化閘極陣列(FPGA)、數位信號處理器(DSP)或其他整合格式實施在本文中描述之標的物之若干部分。然而,熟習此項技術
者將認知,在本文中揭示之實施例之一些態樣(整體或部分地)可等效地實施在積體電路中,作為在一或多個電腦上運行之一或多個電腦程式、作為在一或多個處理器上運行之一或多個程式、作為韌體或作為實際上其等之任何組合且鑑於本發明,設計電路及/或編寫用於軟體及/或韌體之碼將完全落在一般技術者之技術內。
另外,熟習此項技術者將暸解,在本文中描述之標的物之機制能夠以各種形式分佈為一程式產品,且無關於用以執行分佈之非暫時性電腦可讀媒體之類型,本文描述之標的物之一闡釋性實施例同樣適用。一非暫時性電腦可讀媒體之實例包含但不限於以下:一可記錄類型媒體,諸如一快閃隨身碟、一硬碟機、一固態硬碟(SSD)、一光碟(CD)、一數位光碟(DVD)、一藍光光碟(BD)、一數位磁帶、一電腦記憶體、一電可擦除可程式化唯讀記憶體(EEPROM)等。
關於本文中之實質上任何複數及/或單數術語,熟習此項技術者可適合於內容脈絡及/或申請案而從複數轉變為單數及/或從單數轉變為複數。可為清晰起見而未在本文中明確闡述各種單數/複數排列。
因此,已描述標的物之特定實施例。其他實施例在下列發明申請專利範圍之範疇內。在一些情況中,在發明申請專利範圍中敘述之動作可以一不同順序執行且仍達成所要結果。另外,在附圖中描繪之程序不必要求所展示之特定順序或連續順序來獲得所要結果。在特定實施方案中,多工處理及並行處理可為有利的。
例示性態樣
一般言之,此說明書中描述之標的物之一個態樣可在一種用於藉由產生用於在一矽基系統上執行一軟體碼塊之一防短時脈衝干擾程序而改良
該矽基系統之安全性之電腦實施方法中具體實施,該電腦實施方法包括:將該軟體碼塊標記為不可執行;使用至少一個分級暫存器暫存執行該軟體碼塊之意圖;將該軟體碼塊壓縮成一壓縮常數;使用至少兩個比較器比較該壓縮常數與一第一預定值;且回應於該至少兩個比較器在比較之後提供一真結果,將該軟體碼塊標記為可執行以容許執行該軟體碼塊。
此等及其他態樣可視情況包含下列特徵之一或多者。在至少一個態樣中,該電腦實施方法進一步包括:回應於該至少兩個比較器之至少一者在比較之後提供一假結果,禁止執行該軟體碼塊。
在至少一個態樣中,該電腦實施方法進一步包括:回應於將該軟體碼塊標記為可執行,執行該軟體碼塊;且在執行該軟體碼塊之後,將該軟體碼塊標記為不可執行。
在至少一個態樣中,該電腦實施方法進一步包括:將一第二軟體碼塊標記為不可執行;使用至少一個分級暫存器暫存執行該第二軟體碼塊之意圖;將該第二軟體碼塊壓縮成一第二壓縮常數;使用該至少兩個比較器來比較該第二壓縮常數與不同於該第一預定值之一第二預定值;及回應於該至少兩個比較器在該比較之後提供一真結果,將該第二軟體碼塊標記為可執行以容許執行該第二軟體碼塊。此一電腦實施方法可進一步包括接收在該矽基系統上執行之該軟體碼塊以及自一驗證程序接收該第二軟體碼塊之一驗證。
在至少一個態樣中,該電腦實施方法進一步包括:回應於在將該軟體碼塊標記為不可執行時讀取該軟體碼塊之一嘗試,提供一錯誤或鎖定該矽基系統,使得不執行該軟體碼塊。
在該電腦實施方法之至少一個態樣中,將該軟體碼塊標記為不可執
行包含將該軟體碼塊儲存於已經標記為不可執行之記憶體中。
在該電腦實施方法之至少一個態樣中,在儲存該軟體碼塊之前,一載入器將可含有該軟體碼塊之記憶體標記為不可執行。
在至少一個態樣中,該電腦實施方法進一步包括:回應於該至少兩個比較器之至少一者在比較之後提供一假結果,將該軟體碼塊標記為不受信賴;且提供一錯誤或鎖定該矽基系統,使得禁止進一步碼執行。
一般言之,此說明書中描述之標的物之一個態樣可在一種提供用於執行一軟體碼塊之一防短時脈衝干擾程序之設備中具體實施,該設備包括:一分級暫存器;兩個比較器;及一處理器,其中該處理器經組態以執行操作,其等包含:將該軟體碼塊標記為不可執行;使用該分級暫存器暫存執行該軟體碼塊之意圖;將該軟體碼塊壓縮成一壓縮常數;使用該兩個比較器比較該壓縮常數與一第一預定值;且回應於該兩個比較器在比較之後提供一真結果,將該軟體碼塊標記為可執行以容許執行該軟體碼塊。
在至少一個態樣中,該設備經組態以自一驗證處理器接收該軟體碼塊之一驗證。
在至少一個態樣中,該設備經進一步組態以雜湊該軟體碼塊及與該軟體碼塊相關之後設資料。
在至少一個態樣中,該設備經組態以執行進一步操作,其等包含:回應於該兩個比較器在比較之後提供一假結果,禁止執行該軟體碼塊。
在至少一個態樣中,該設備經組態以執行進一步操作,其等包含:回應於將該軟體碼塊標記為可執行,執行該軟體碼塊;且在執行該軟體碼塊之後,將該軟體碼塊標記為不可執行。
在至少一個態樣中,該設備進一步包括:記憶體;及一載入器,其
中該載入器經組態以將將含有該軟體碼塊之記憶體標記為不可執行,隨後將該軟體碼塊儲存於標記為不可執行之該記憶體中。
在至少一個態樣中,該設備之該處理器經進一步組態以執行進一步操作,其等包含:將一第二軟體碼塊標記為不可執行;使用該至少一個分級暫存器暫存執行該第二軟體碼塊之意圖;將該第二軟體碼塊壓縮成一第二壓縮常數;使用該兩個比較器來比較該第二壓縮常數與不同於該第一預定值之一第二預定值;及回應於該兩個比較器在該比較之後提供一真結果,將該第二軟體碼塊標記為可執行以容許執行該第二軟體碼塊。
在至少一個態樣中,該設備之該處理器經進一步組態以執行進一步操作,其等包含:回應於該兩個比較器在比較之後提供一假結果,將該軟體碼塊標記為不受信賴;且提供一錯誤或鎖定該設備,使得禁止進一步碼執行。
200:電腦實施方法
201:步驟
202:步驟
203:步驟
204:步驟
205:步驟
206:步驟
207:步驟
Claims (20)
- 一種改良一矽基系統之安全性之電腦實施方法,其係藉由產生一防短時脈衝干擾(glitch-resistant)程序以在該矽基系統上執行一軟體碼塊(code block)來,該電腦實施方法包括:藉由在儲存該軟體碼塊之一記憶體內標記(marking)一起始記憶體位址及一結束(ending)記憶體位址,將該軟體碼塊標記為不可執行(non-executable);使用至少一個分級(staging)暫存器來暫存執行該軟體碼塊之意圖(intent);經由一雜湊(hash)演算法,將該軟體碼塊壓縮成一壓縮常數;使用至少兩個比較器來比較該壓縮常數與一第一預定值;及回應於該至少兩個比較器,在比較之後提供一真結果,將該軟體碼塊標記為可執行以容許執行該軟體碼塊。
- 如請求項1之電腦實施方法,進一步包括:回應於該至少兩個比較器之至少一者,在比較之後提供一假結果,禁止執行該軟體碼塊。
- 如請求項1或2之電腦實施方法,進一步包括:回應於將該軟體碼塊標記為可執行,執行該軟體碼塊;及在執行該軟體碼塊之後,將該軟體碼塊標記為不可執行。
- 如請求項1或2之電腦實施方法,進一步包括:將一第二軟體碼塊標記為不可執行;使用該至少一個分級暫存器來暫存執行該第二軟體碼塊之意圖;經由該雜湊演算法,將該第二軟體碼塊壓縮成一第二壓縮常數;使用該至少兩個比較器來比較該第二壓縮常數與不同於該第一預定值之一第二預定值;及回應於該至少兩個比較器,在該比較之後提供一真結果,將該第二軟體碼塊標記為可執行以容許執行該第二軟體碼塊。
- 如請求項4之電腦實施方法,進一步包括接收在該矽基系統上執行之該第二軟體碼塊。
- 如請求項4之電腦實施方法,進一步包括自一驗證程序接收該第二軟體碼塊之一驗證。
- 如請求項1或2之電腦實施方法,進一步包括:回應於在將該軟體碼塊標記為不可執行時讀取該軟體碼塊之一嘗試,提供一錯誤或鎖定該矽基系統,使得不執行該軟體碼塊。
- 如請求項1或2之電腦實施方法,進一步包括接收在該矽基系統上執行之該軟體碼塊。
- 如請求項1或2之電腦實施方法,進一步包括自一驗證處理器接收該 軟體碼塊之一驗證。
- 如請求項1或2之電腦實施方法,其中將該軟體碼塊標記為不可執行包含將該軟體碼塊儲存於已經標記為不可執行之記憶體中。
- 如請求項1或2之電腦實施方法,其中在儲存該軟體碼塊之前,一載入器將可含有該軟體碼塊之記憶體標記為不可執行。
- 如請求項1或2之電腦實施方法,進一步包括:回應於該至少兩個比較器之至少一者,在比較之後提供一假結果,將該軟體碼塊標記為不受信賴;及提供一錯誤或鎖定該矽基系統,使得禁止進一步碼執行。
- 一種提供用於執行一軟體碼塊之一防短時脈衝干擾程序之設備,該設備包括:一分級暫存器;兩個比較器;及一處理器,該處理器經組態以執行操作,包含:藉由在儲存該軟體碼塊之一記憶體內標記一起始記憶體位址及一結束記憶體位址,將該軟體碼塊標記為不可執行;使用該分級暫存器暫存執行該軟體碼塊之意圖;經由一雜湊演算法,將該軟體碼塊壓縮成一壓縮常數;使用該兩個比較器來比較該壓縮常數與一第一預定值;及 回應於該兩個比較器在比較之後提供一真結果,將該軟體碼塊標記為可執行以容許執行該軟體碼塊。
- 如請求項13之設備,其中該設備經組態以自一驗證處理器接收該軟體碼塊之一驗證。
- 如請求項14之設備,其中該處理器經進一步組態以經由該雜湊演算法來壓縮該軟體碼塊及與該軟體碼塊相關之後設資料。
- 如請求項13至15之任一者之設備,其中該處理器經進一步組態以執行操作,其等包括:回應於該兩個比較器在比較之後提供一假結果,禁止執行該軟體碼塊。
- 如請求項13至15之任一者之設備,其中該處理器經進一步組態以執行操作,其等包含:回應於將該軟體碼塊標記為可執行,執行該軟體碼塊;及在執行該軟體碼塊之後,將該軟體碼塊標記為不可執行。
- 如請求項13至15之任一者之設備,其中該設備進一步包括:記憶體;及一載入器,該載入器經組態以將將含有該軟體碼塊之記憶體標記為不可執行,隨後將該軟體碼塊儲存於標記為不可執行之該記憶體中。
- 如請求項13至15之任一者之設備,其中該處理器經進一步組態以執行操作,其等包含:將一第二軟體碼塊標記為不可執行;使用該至少一個分級暫存器來暫存執行該第二軟體碼塊之意圖;經由該雜湊演算法,將該第二軟體碼塊壓縮成一第二壓縮常數;使用該兩個比較器來比較該第二壓縮常數與不同於該第一預定值之一第二預定值;及回應於該兩個比較器在該比較之後提供一真結果,將該第二軟體碼塊標記為可執行以容許執行該第二軟體碼塊。
- 如請求項13至15之任一者之設備,其中該處理器經進一步組態以執行操作,其等包含:回應於該兩個比較器在比較之後提供一假結果,將該軟體碼塊標記為不受信賴;及提供一錯誤或鎖定該設備,使得禁止進一步碼執行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762466660P | 2017-03-03 | 2017-03-03 | |
US62/466,660 | 2017-03-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201833772A TW201833772A (zh) | 2018-09-16 |
TWI715826B true TWI715826B (zh) | 2021-01-11 |
Family
ID=61244839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107105626A TWI715826B (zh) | 2017-03-03 | 2018-02-14 | 用於改良一矽基系統之安全性之電腦實施方法及設備 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11157627B2 (zh) |
CN (1) | CN108537066B (zh) |
TW (1) | TWI715826B (zh) |
WO (1) | WO2018160341A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018160341A1 (en) | 2017-03-03 | 2018-09-07 | Google Llc | Secure code jump and execution gating |
US11100229B2 (en) * | 2019-07-18 | 2021-08-24 | Infineon Technologies Ag | Secure hybrid boot systems and secure boot procedures for hybrid systems |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI259985B (en) * | 2003-11-28 | 2006-08-11 | Matsushita Electric Ind Co Ltd | Confidential information processing system and LSI |
US20100107246A1 (en) * | 2007-02-09 | 2010-04-29 | Ntt Docomo, Inc. | Terminal device and method for checking a software program |
US20100169750A1 (en) * | 2008-12-30 | 2010-07-01 | Yen Hsiang Chew | Firmware verification using system memory error check logic |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2364404B (en) * | 2000-07-01 | 2002-10-02 | Marconi Comm Ltd | Method of detecting malicious code |
US7398554B1 (en) * | 2002-04-02 | 2008-07-08 | Winbond Electronics Corporation | Secure lock mechanism based on a lock word |
TWM259985U (en) | 2003-08-06 | 2005-03-21 | Chung Shan Inst Of Science | DIY photo print/ burn device |
FR2867929B1 (fr) * | 2004-03-19 | 2007-03-02 | Gemplus Card Int | Procede d'authentification dynamique de programmes par un objet portable electronique |
US7853780B2 (en) * | 2008-07-31 | 2010-12-14 | Oracle America, Inc. | Core initialization code validation |
US9980146B2 (en) * | 2009-01-28 | 2018-05-22 | Headwater Research Llc | Communications device with secure data path processing agents |
JP5251799B2 (ja) * | 2009-09-15 | 2013-07-31 | 株式会社リコー | データ処理装置およびデータ処理方法 |
WO2012122994A1 (en) * | 2011-03-11 | 2012-09-20 | Kreft Heinz | Off-line transfer of electronic tokens between peer-devices |
US20140007229A1 (en) * | 2012-06-29 | 2014-01-02 | Christopher T. Smith | System and method for identifying installed software products |
US9201642B2 (en) * | 2013-03-15 | 2015-12-01 | International Business Machines Corporation | Extending platform trust during program updates |
US9594912B1 (en) * | 2014-06-06 | 2017-03-14 | Fireeye, Inc. | Return-oriented programming detection |
US9647684B2 (en) * | 2014-10-21 | 2017-05-09 | Huawei Technologies Co., Ltd. | Memory-based history search |
WO2017048226A1 (en) * | 2015-09-14 | 2017-03-23 | Viasat, Inc. | Machine-driven crowd-disambiguation of data resources |
US9787332B2 (en) * | 2015-09-15 | 2017-10-10 | Intel Corporation | Error-checking compressed streams in heterogeneous compression accelerators |
US10664751B2 (en) * | 2016-12-01 | 2020-05-26 | Via Alliance Semiconductor Co., Ltd. | Processor with memory array operable as either cache memory or neural network unit memory |
CN105260653A (zh) * | 2015-10-20 | 2016-01-20 | 浪潮电子信息产业股份有限公司 | 一种基于Linux的程序安全加载方法及系统 |
US10496484B2 (en) * | 2016-08-05 | 2019-12-03 | Sandisk Technologies Llc | Methods and apparatus for error detection for data storage devices |
WO2018160341A1 (en) | 2017-03-03 | 2018-09-07 | Google Llc | Secure code jump and execution gating |
-
2018
- 2018-02-09 WO PCT/US2018/017693 patent/WO2018160341A1/en active Application Filing
- 2018-02-12 CN CN201810146500.4A patent/CN108537066B/zh active Active
- 2018-02-14 TW TW107105626A patent/TWI715826B/zh active
- 2018-02-19 US US15/898,858 patent/US11157627B2/en active Active
-
2021
- 2021-08-31 US US17/462,698 patent/US12032704B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI259985B (en) * | 2003-11-28 | 2006-08-11 | Matsushita Electric Ind Co Ltd | Confidential information processing system and LSI |
US20100107246A1 (en) * | 2007-02-09 | 2010-04-29 | Ntt Docomo, Inc. | Terminal device and method for checking a software program |
US20100169750A1 (en) * | 2008-12-30 | 2010-07-01 | Yen Hsiang Chew | Firmware verification using system memory error check logic |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
Also Published As
Publication number | Publication date |
---|---|
US20210397718A1 (en) | 2021-12-23 |
US20180253557A1 (en) | 2018-09-06 |
CN108537066A (zh) | 2018-09-14 |
US11157627B2 (en) | 2021-10-26 |
WO2018160341A1 (en) | 2018-09-07 |
TW201833772A (zh) | 2018-09-16 |
CN108537066B (zh) | 2022-04-05 |
US12032704B2 (en) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691806B2 (en) | Self-measuring nonvolatile memory device systems and methods | |
TWI607376B (zh) | 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法 | |
US11194586B2 (en) | Secure boot override in a computing device equipped with unified-extensible firmware interface (UEFI)-compliant firmware | |
KR20170095161A (ko) | 시큐어 시스템 온 칩 | |
US20090288161A1 (en) | Method for establishing a trusted running environment in the computer | |
US8122514B2 (en) | Software enhanced trusted platform module | |
US20090193211A1 (en) | Software authentication for computer systems | |
KR101618535B1 (ko) | 시스템 사전 부팅 동안 개선된 판독 전용 메모리 록킹을 이용하는 안전한 데이터 보호 | |
US9262631B2 (en) | Embedded device and control method thereof | |
US9104890B2 (en) | Data processing device and a secure memory device including the same | |
WO2020114342A1 (zh) | 内核安全检测方法、装置、设备及存储介质 | |
US10776493B2 (en) | Secure management and execution of computing code including firmware | |
US12032704B2 (en) | Secure code jump and execution gating | |
US10999057B2 (en) | Providing access to a hardware resource based on a canary value | |
US11829464B2 (en) | Apparatus and method for authentication of software | |
US20200097657A1 (en) | Secure data protection | |
US10824710B2 (en) | Method and device for authenticating application that requests access to memory | |
US7624442B2 (en) | Memory security device for flexible software environment | |
US11636907B2 (en) | Integrity verification of lifecycle-state memory using multi-threshold supply voltage detection | |
US11269986B2 (en) | Method for authenticating a program and corresponding integrated circuit | |
EP3440586B1 (en) | Method for write-protecting boot code if boot sequence integrity check fails | |
TWI467408B (zh) | 嵌入式元件與控制方法 | |
CN106775941A (zh) | 一种虚拟机内核完整性保护方法和装置 | |
CN112685754B (zh) | 一种调试接口的解锁电路及解锁方法 | |
US20220342996A1 (en) | Information processing apparatus, method of controlling the same, and storage medium |