TWI701571B - 判定一碼影像之一驗證雜湊之電腦實施之方法及設備,以及對一訊息進行數位簽署之電腦實施之方法及設備 - Google Patents
判定一碼影像之一驗證雜湊之電腦實施之方法及設備,以及對一訊息進行數位簽署之電腦實施之方法及設備 Download PDFInfo
- Publication number
- TWI701571B TWI701571B TW106134144A TW106134144A TWI701571B TW I701571 B TWI701571 B TW I701571B TW 106134144 A TW106134144 A TW 106134144A TW 106134144 A TW106134144 A TW 106134144A TW I701571 B TWI701571 B TW I701571B
- Authority
- TW
- Taiwan
- Prior art keywords
- hash
- fuse
- code
- information
- memory
- Prior art date
Links
Images
Classifications
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- 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
-
- 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
- G06F21/73—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 by creating or determining hardware identification, e.g. serial numbers
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本發明揭示用於簽署將由一目標裝置執行之碼且驗證該碼之簽名之系統、設備及方法。判定將由一目標裝置執行之一碼影像之一驗證雜湊之一實例性方法包括:接收一標頭及碼影像;基於後設資料及碼影像而判定一影像雜湊;基於目標裝置之硬體熔絲之值而判定一熔絲雜湊;基於儲存於記憶體中之資訊而判定一資訊雜湊;基於影像雜湊、熔絲雜湊及資訊雜湊而判定一驗證雜湊;對照標頭中之一碼簽名驗證驗證雜湊;基於驗證雜湊而獲得一解鎖常數;比較解鎖常數與一所儲存預定值以解鎖目標裝置之一記憶體區域;及在目標裝置上執行碼影像中之碼。
Description
本文中所闡述之標的物一般而言係關於運算裝置之領域且包含在一運算裝置之啟動期間執行之安全措施。安全措施可包含碼簽名之驗證。
在安全運算環境中,呈程式碼或一指令序列之形式之軟體或韌體可經驗證為在於一運算裝置中執行之前係真實未變更碼。軟體可經數位簽署,且數位簽名可透過一驗證程序來驗證以確保軟體係來自一信任源。駭客技術在不斷改良。如此,碼驗證程序可能易遭受非侵入及實體攻擊。
非侵入攻擊一般涉及在不導致對裝置之實體損害之情況下觀察或操縱一裝置。可係非侵入攻擊之目標的一運算裝置之組件包含CPU、記憶體及I/O介面。記憶體元件可包含SRAM、快閃記憶體及ROM。由一CPU處理之元素可包含指令、資料及處理結果。安全性可因強加一偵錯模式、獲得對裝置記憶體中之額外區域之存取權或發現加密金鑰之值而折衷。
錯誤注射係非侵入攻擊之一形式。錯誤注射一般涉及產生系統中之失靈。稱為「故障」的錯誤注射之一形式一般涉及毀損資料、跳過或變更指令或者變更時脈信號或電源供應器(在其用於執行一安全程序時)。變更時脈信號可導致諸如一不正確指令擷取之錯誤。調用一電力故障可引起毀
損自記憶體讀取之一資料。
運算裝置尤其在其中可使裝置埠、記憶體及秘密資料用於執行測試之製造測試期間易遭受錯誤注射攻擊。舉例而言,諸如加密金鑰之敏感資料及諸如韌體之碼可儲存於快閃記憶體中。而且,一運算裝置可在一運算裝置中之有效負載安裝或應用軟體安裝期間易遭受攻擊。如此,在安裝期間使用之碼驗證演算法尤其易發生故障。
另外,在一碼驗證演算法中使用之硬式編碼初始條件可使演算法更容易使用一轉返方案(rollback scheme)進行錯誤注射。
進一步地,運算裝置中之記憶體資源在早期測試階段期間可係有限的。
如發明人所認識到,需要准許僅由指定裝置執行碼及/或命令且禁止碼及/或命令之任何其他安裝及/或執行的一安全裝置及程序。此一安全裝置及程序應抵抗故障及其他駭客技術,包含在驗證過程期間。
如發明人所認識到,需要在且僅在碼未變更且執行環境匹配一碼簽署者之規格之情況下准許執行碼。執行環境可包括包含一晶片識別符之一裝置狀態及用於指示一版本號之熔絲狀態以阻止一轉返攻擊(rollback attack)。
一般而言,此說明書中所闡述之標的物之一項態樣可體現在判定將由一目標裝置執行之一碼影像之一驗證雜湊之一電腦實施之方法中,該目標裝置包含一記憶體控制器、硬體熔絲及記憶體,該碼影像包含具有一碼簽名及後設資料之一標頭,該電腦實施之方法包括:接收該標頭及該碼影像;使用一雜湊函數基於該後設資料及該碼影像而判定一影像雜湊;使用
一雜湊函數基於該等硬體熔絲中之至少某些硬體熔絲之值而判定一熔絲雜湊;使用一雜湊函數基於儲存於該記憶體中之至少某些資訊而判定一資訊雜湊;及基於該影像雜湊、該熔絲雜湊及該資訊雜湊而判定一驗證雜湊。
在至少一項實施例中,該電腦實施之方法進一步包括:對照該碼簽名驗證該驗證雜湊。
在至少一項實施例中,該基於該影像雜湊、該熔絲雜湊及該資訊雜湊而判定一驗證雜湊包含:將一雜湊函數應用於該影像雜湊、該熔絲雜湊及該資訊雜湊之一串連。
在至少一項實施例中,該使用一雜湊基於該等硬體熔絲中之至少某些硬體熔絲之值而判定一熔絲雜湊包含:產生一熔絲陣列;讀取包括識別該等硬體熔絲中之預定熔絲之一位元向量之一熔絲圖;將該等預定熔絲之值寫入至該熔絲陣列中;及使用一雜湊函數基於該熔絲陣列而判定該熔絲雜湊。
在至少一項實施例中,該使用一雜湊函數基於儲存於該記憶體中之至少某些資訊而判定一資訊雜湊包含:產生一資訊陣列;讀取包括識別記憶體之預定區域之一位元向量之一資訊圖;將儲存於記憶體之該等預定區域中之資訊寫入至該資訊陣列中;及使用一雜湊函數基於該資訊陣列而判定該資訊雜湊。
在至少一項實施例中,該電腦實施之方法進一步包括:判定該碼簽名之一冪以獲得一填補值;用該驗證雜湊判定該填補值之一邏輯函數以獲得一常數;使用一雜湊函數基於該常數而判定一解鎖常數;比較該解鎖常數與一預定值;及回應於該解鎖常數與該預定值匹配,解鎖記憶體之一經鎖定區域。
在至少一項實施例中,該邏輯函數係一相同-不同邏輯函數。
在至少一項實施例中,如請求項1之電腦實施之方法,其進一步包括:基於該驗證雜湊而判定一解鎖常數;及回應於該解鎖常數與一所儲存預定值之間的一成功比較,解鎖目標裝置之記憶體中之一區域且將控制轉移至該目標裝置之一記憶體管理單元、由該目標裝置執行之一作業系統或由包含於該目標裝置中之一電子處理器執行之一應用程式中之至少一者。
在至少一項實施例中,若該驗證雜湊對照該碼簽名通過驗證,則該目標裝置將該驗證雜湊儲存於一快取記憶體中且達成一暖重啟動。
一般而言,此說明書中所闡述之標的物之一項態樣可體現在用於驗證一數位簽名之一電腦實施之方法中,該電腦實施之方法包括使用具有(a×n-b)個位元之一長度之一模數對一n位元電子處理器執行(Montgomery)蒙哥馬利乘法,其中a及n係正整數且b係小於4之一正整數。
在至少一項實施例中,使用一3071位元模數對一32位元電子處理器執行蒙哥馬利乘法。
一般而言,此說明書中所闡述之標的物之一項態樣可體現在用於對一訊息進行數位簽署之一電腦實施之方法中,該訊息包含一熔絲圖、一資訊圖及將由一目標裝置執行之碼,該電腦實施之方法包括:使用一電子處理器產生該訊息,其中該訊息係基於該熔絲圖、該資訊圖及該將由該目標裝置執行之碼;及使用由一電子處理器執行之一數位簽名演算法簽署該訊息,其中該目標裝置包含硬體熔絲及記憶體,其中該熔絲圖係識別該等硬體熔絲之一集合之一位元向量,且其中該資訊圖係識別該記憶體之一區域之一位元向量。
在至少一項實施例中,該使用一電子處理器產生該訊息包含將一雜湊函數應用於如下(a)或(b)中之至少一者:(a)該熔絲圖、該資訊圖及該將由該目標裝置執行之碼,或(b)該熔絲圖之一雜湊、該資訊圖之一雜湊及該將由該目標裝置執行之碼之一雜湊。
一般而言,此說明書中所闡述之標的物之一項態樣可體現在判定將執行之一碼影像之一驗證雜湊之一設備中,該碼影像包含具有一碼簽名及後設資料之一標頭,該設備包括:至少一個處理器;硬體熔絲;記憶體;及一非暫時性電腦可讀媒體,其耦合至該至少一個處理器、其上儲存有在由該至少一個處理器執行時致使該至少一個處理器進行以下操作之指令:接收該標頭及該碼影像;使用一雜湊函數基於該後設資料及該碼影像而判定一影像雜湊;使用一雜湊函數基於該等硬體熔絲中之至少某些硬體熔絲之值而判定一熔絲雜湊;使用一雜湊函數基於儲存於該記憶體中之至少某些資訊而判定一資訊雜湊;基於該影像雜湊、該熔絲雜湊及該資訊雜湊而判定一驗證雜湊;基於該驗證雜湊而判定一解鎖常數;及回應於該解鎖常數與一所儲存預定值之間的一成功比較,解鎖該記憶體中之一區域且准許執行該碼影像中之碼。
一般而言,此說明書中所闡述之標的物之一項態樣可體現在對一訊息進行數位簽署之一設備中,該訊息包含一熔絲圖、一資訊圖及將由一目標裝置執行之碼,該設備包括:至少一個處理器;及一非暫時性電腦可讀媒體,其耦合至該至少一個處理器、其上儲存有在由該至少一個處理器執行時致使該至少一個處理器進行以下操作之指令:執行產生一訊息之一演算法;及執行簽署該訊息之一數位簽名演算法,其中該目標裝置包含硬體熔絲及記憶體,其中該熔絲圖係識別該等硬體熔絲之一集合之一位元向
量,其中該資訊圖係識別該記憶體之一區域之一位元向量,且其中該訊息係基於該熔絲圖、該資訊圖及該將執行之碼。
在僅藉由圖解說明之方式給出之附圖及下文說明中陳述一或多項實施例之細節。其他特徵、態樣及優點將依據說明、圖式及申請專利範圍而變得顯而易見。在各個圖式中,相同的參考符號及命名指示相同的元件。
100:晶片裝置/半導體裝置/目標晶片裝置
101:偵錯埠
103:嵌入式處理器
105:記憶體
107:ROM
109:SRAM
111:快閃記憶體/一次寫入快閃記憶體
121:熔絲控制器/裝置狀態解碼器
123:熔絲
125:金鑰熔絲/熔絲
127:裝置狀態熔絲/熔絲
129:裝置ID熔絲/熔絲
131:安全共處理器
133:真隨機數產生器
135:串列周邊介面從控制
137:串列周邊介面主控制
141:快閃記憶體測試控制
143:測試存取埠/掃描控制
145:快閃記憶體測試埠
147:掃描測試埠
149:接腳
151:接腳
161:開機ROM
163:開機載入器
190:金鑰管理伺服器
200:標頭/應用程式標頭
201:簽名/標頭簽名
203:影像檢查
205:標籤/標頭標籤
207:標頭金鑰標識
209:公開金鑰
213:ro base
215:ro max
217:rx base
219:rx max
221:熔絲圖
223:資訊圖
225:標頭出現時間
227:Major
241:填補值
243:熔絲檢查
245:資訊檢查
700:裝置/數位組件/運算裝置
701:非常基本組態/基本組態
710:處理器
711:層級1快取記憶體
712:層級2快取記憶體
713:處理器核心
714:暫存器
715:記憶體控制器
720:系統記憶體
721:作業系統
722:應用程式
724:程式資料
730:記憶體匯流排
900:熔絲巨集/實際熔絲
905:有限狀態機
910:內部控制器
913:裝置狀態解鎖電路
915:熔絲影子暫存器
917:預設參數保存電路
919:邏輯閘
931:串列線偵錯埠
933:處理器匯流排
935:介面
圖1係根據一或多個項實施例之一實例性半導體晶片裝置之一方塊圖。
圖1B係根據一或多個項實施例之一實例性裝置狀態解碼器之一方塊圖。
圖2係根據一或多個項實施例之可包含在一碼影像之開始處之一實例性標頭。
圖3係根據一或多個項實施例之用於判定一標頭及影像之一雜湊之一方法之一流程圖。
圖4係根據一或多個項實施例之用於判定熔絲值之一雜湊之一方法之一流程圖。
圖5係根據一或多個項實施例之用於判定資訊值之一雜湊之一方法之一流程圖。
圖6係根據一或多個項實施例之用於判定一解鎖常數之一方法之一流程圖。
圖7係根據一或多個項實施例之使開機ROM解鎖一ROM中之區域之一流程圖。
圖8係根據一或多個項實施例之使開機載入器解鎖一ROM中之區域之
一流程圖。
圖9係根據一或多個項實施例之晶片裝置之暖重啟動之一流程圖。
圖10係根據一或多個項實施例之鎖定金鑰梯(Keyladder)硬體之一方法之一流程圖。
圖11係根據一或多個項實施例之對包括碼及限制之一訊息進行數位簽署之一方法之一流程圖。
圖12係圖解說明根據一或多個項實施例之實施數位組件之一實例性運算裝置之一方塊圖。
各圖僅出於圖解說明之目的而繪示本發明之實施例。熟習此項技術者依據以下論述將認識到,在不背離本發明之原理之情況下可採用本文中所圖解說明之結構及方法之替代實施例。
以下說明參考附圖。以下說明不意欲限制範疇。替代地,範疇由隨附申請專利範圍定義。
態樣提供與碼簽署相關之問題之解決方案。進一步地,態樣提供具有達成以碼及/或命令為目標之彈性限制之碼簽署,使得目標碼可僅由具體裝置執行。碼驗證可係一嵌入式解決方案且亦可在一資源限制環境中操作或以其他方式具有不過度地影響資源之一小佔用面積。此一安全程序可較佳地在驗證過程期間抵抗故障或其他攻擊。
在一實例性實施例中,在控制轉移至一處理器之前將一運算裝置開機期間驗證將執行之碼。該運算裝置可係包含一處理器及記憶體(其具有專用於一開機程序之一區域)之任一系統。該開機程序包含用於驗證將執行之碼之一驗證程序。初始碼可含納於開機ROM中。因此,該初始碼可
係不可變更的。該初始碼可係可信根且可驗證下一級之碼。
圖1中展示一實例性晶片(半導體)裝置100。晶片裝置100包含若干存取埠。該等存取埠可包含偵錯埠101,偵錯埠101中之一者可係提供去往熔絲123之一路徑之一串列線偵錯(SWD)埠。亦可包含其他埠以提供用於測試之存取,諸如快閃記憶體測試埠145及掃描測試埠147。快閃記憶體測試埠145可具有一相關聯快閃記憶體測試控制141。掃描測試埠147可具有一相關聯測試存取埠(TAP)/掃描控制143。
晶片裝置100可係一串列周邊介面(SPI)從裝置,其中可使用分別具有SPI從控制135及SPI主控制137之接腳SPI IN 149及SPI OUT 151傳輸命令及資料。
在一實例性實施例中,可存在用作位元儲存裝置之熔絲123。作為一非限制性實例,熔絲123可係27位元儲存裝置,但應理解,位元數目可取決於應用而變化。
在實例性實施例中,熔絲123可實施為熔絲暫存器及熔絲巨集之一冗餘集合(參見圖1B,稍後所闡述)。更進一步地,該等熔絲可實施為熔絲巨集之一集合。
在一實例性實施例中,熔絲123可包含金鑰熔絲125、裝置狀態熔絲127及裝置ID熔絲129。
金鑰熔絲125可用於儲存金鑰及其他秘密。舉例而言,金鑰熔絲125可儲存係一金鑰之秘密資料或用於導出亦儲存於金鑰熔絲125中之一金鑰。一具體實例係一裝置初始化金鑰(DIK),該裝置初始化金鑰可充當晶片裝置100與一金鑰管理伺服器190之間的根共享秘密。
裝置狀態熔絲127儲存且定義裝置狀態。更具體而言,裝置狀態熔絲
127可包含熔絲之一集合或組,其中每一集合/組在晶片裝置100經歷製造測試時定義晶片裝置100之一遞增狀態。
裝置ID熔絲129可儲存晶片裝置100之一唯一裝置ID。
熔絲123可具有一相關聯熔絲控制器及裝置狀態解碼器121。在一實例性實施例中,可使用一裝置狀態解碼器121將裝置狀態導出為儲存於裝置狀態熔絲127中之一位元型樣之一函數。可直接或經由熔絲影子暫存器(圖1B中所展示)完成裝置狀態熔絲127之讀取。進一步地,亦可執行裝置狀態熔絲127值與熔絲影子暫存器值之間的一比較操作以確保熔絲127及/或暫存器尚未被攻擊或破壞。亦可在讀取金鑰熔絲125及/或裝置ID熔絲129時執行此等比較操作。
晶片裝置100可包含一嵌入式處理器103及記憶體105組件,記憶體105組件包含諸如ROM 107及快閃記憶體111之非揮發性記憶體以及諸如SRAM 109之一小晶片上RAM。在晶片裝置100生命週期之過程中,包含一開機ROM 161之一有效負載可寫入至ROM 107中,且一開機載入器163可寫入至快閃記憶體111中。
晶片裝置100可包含安全處理功能。一安全共處理器131可用於處理安全演算法,諸如一安全雜湊演算法。實例性安全雜湊演算法包含演算法之SHA家族,較佳地為SHA-2或SHA-3。而且,可包含諸如一真隨機數產生器(TRNG)133之一隨機數產生器以提供隨機值。
圖1B係處置相關聯熔絲巨集900之一集合之程式化之熔絲控制器121之一實例性實施例之一方塊圖。在此實例性實施例中,熔絲影子暫存器915可冗餘地儲存熔絲巨集之位元值。熔絲位元之冗餘儲存器可以為任何測試模式控制或安全敏感特徵提供一額外保護層之一方式來配置。熔絲巨
集之位元值之冗餘儲存器亦可併入用以防止遭受對影子操作之攻擊之機構。舉例而言,在攻擊可導致所有熔絲影子暫存器915變為0時甚至在熔絲巨集900自身並非為0時可偵測到對熔絲巨集鎖存操作之一攻擊。
在實例性熔絲控制器121中,可藉助於熔絲影子暫存器915程式化熔絲位元,其中實際熔絲巨集在內部被熔絲控制器熔斷。與程式化實際熔絲900及讀取熔絲值相關聯之功能可由一內部控制器910處置。而且,熔絲控制器121可包含一有限狀態機905以處置特定熔絲巨集900之程式化。可基於透過一串列線偵錯埠(SWDP)931傳輸至一裝置狀態解鎖電路913之一命令而啟用熔絲巨集900之程式化。裝置狀態解鎖電路913使得儲存於熔絲巨集中之一裝置狀態能夠遞增至下一裝置狀態。用於將裝置狀態設定為預設之一機制可由預設參數保存電路917及邏輯閘919提供,預設參數保存電路917及邏輯閘919控制經由一介面935存取熔絲。一處理器匯流排933提供用於讀取或程式化儲存於熔絲影子暫存器915中之熔絲值之一路徑。
在一實例性實施例中,將安裝於晶片裝置100中之一有效負載可包含一標頭200。該標頭可包含一簽名及其他後設資料。該簽名係用於驗證該有效負載以確保其係來自一信任源。
圖2中展示可包含在有效負載之一碼影像之開始處之一實例性標頭200。在一實例性實施例中,該標頭可係一1024位元組標頭。標頭200可包含一簽名201,簽名201可係在先前已應用於碼或命令集之一雜湊函數上之一數位簽名之結果。簽名201可由碼或命令集之提供者提供。在一實例性實施例中,開機ROM 161或開機載入器163可使用簽名201來驗證碼
或命令集未被變更且並非來自一不受信任源。進一步地,在一實例性實施例中,開機ROM 161或開機載入器163可使用簽名201來驗證碼影像與具體晶片裝置100有關。更具體而言,如下文進一步闡釋,態樣包含根據熔絲及資訊狀態將一碼塊(碼影像)結合至一具體裝置。
簽名201可具有節省運算工作且減少執行簽名驗證所需要之碼量之一嵌入因素。運算額外負擔(overhead)及碼量之減少可起因於嵌入因素消除了當在具有受一位元寬度限制之一資料管道之一電子處理器上處理多個精密模數算術時另外需要之模數約減步驟。在實例性實施例中,簽名201可以一蒙哥馬利形式來提供,且在驗證簽名201時可使用蒙哥馬利乘法。在一實例性實施例中,可在將簽名201併入至標頭200中之前將一因數R乘至簽名201中。在實施於一n位元處理器上之一實例性實施例中,因數R可係2kn,其中k係一正整數。在一實例性實施例中,因數R可係23072。在實施於一n位元處理器上之一實例性實施例中,模數可具有(a×n-b)個位元之一長度,其中a及n係正整數且b係小於4之一正整數。在實施於一32位元處理器上之一實例性實施例中,模數可具有3071個位元之一長度。具有(a×n-b)個位元之一長度之一模數可減少或消除蒙哥馬利約減步驟,藉此出於本文中論述之原因改良一電子電腦之功能。
標頭200亦可包含一選用公開金鑰209。在一實例性實施例中,公開金鑰209可包含於一應用程式標頭200中,且由一開機載入器163使用以用公開金鑰209、標籤205及出現時間(epoch)225之一雜湊驗證並初始化一金鑰梯以提供唯一且安全金鑰梯。在一實例性實施例中,安全金鑰梯可提供自簽署可傳送至晶片裝置100中且自晶片裝置100傳送出之應用程式之一方法,同時保持其自身之私有金鑰材料。
一實例性實施例包含用於儲存晶片裝置100之一狀態之裝置狀態熔絲127,如圖1中所展示。通常在晶片生產期間設定裝置狀態熔絲127。實施例包含可在執行碼或命令期間用作儲存器之非揮發性記憶體中之暫存器。在一實例性實施例中,暫存器可包含ROM 107中之唯讀區域且可包含快閃記憶體111中之可執行區域。
一態樣係晶片裝置100之當前狀態之一有彈性計算或量測。可使用包含三個分量之一碼簽名有彈性地計算所量測狀態。該三個分量可包含將在目標晶片裝置(100)上執行之碼或命令之影像、熔絲(123、125、127及/或129)及資訊(目標晶片裝置100之可塑裝置狀態(經由例如快閃記憶體111之非揮發性記憶體,或諸如RAM之揮發性記憶體,例如SRAM 109))。
影像分量可包含標頭200、除簽名201以外之後設資料及一預期影像雜湊值(影像檢查203)。影像分量(影像)包含將由晶片裝置100執行之碼或命令集之一或多個影像。
熔絲分量(熔絲)可對應於晶片裝置100之裝置狀態熔絲127。裝置狀態熔絲分量可指示晶片裝置100之裝置狀態。在一實例性實施例中,可存在變化位元寬度之128個熔絲。可在製造晶片裝置100期間設定熔絲值。
資訊分量(資訊)可指示記憶體之狀態,或換言之,目標晶片裝置100之可塑裝置狀態。在一實例性實施例中,資訊分量可使用快閃記憶體111之一次寫入區域中之128個字組之四個集合指示可塑裝置狀態。
在一實例性實施例中,資訊分量可用於版本防轉返保護(version rollback protection)。碼版本可包含版本0、版本1等。防轉返保護可阻止較早碼版本被執行。舉例而言,版本0之一簽名可指示應抹除所有128個字組。版本1之簽名可指示應抹除除了第一字組,使得一旦碼之版本1寫入
至第一字組,版本0便絕不可再次有效。
態樣包含在一目標晶片裝置100上運行之碼或命令集驗證,該驗證藉由使用一限制集合來將一具體裝置100定位目標。態樣提供使碼簽署者基於熔絲(熔絲分量)及資訊(資訊分量)狀態而將碼結合至一具體裝置之一方式。
在一實例性實施例中,限制集合包含提供於標頭200中之一熔絲圖221及一資訊圖223。熔絲圖221可係一位元向量,該位元向量識別哪些熔絲保存一碼簽署者想要驗證以允許執行碼簽署者之碼的值。資訊圖223可係一位元向量,該位元向量識別一次寫入區域中之哪些字組將受碼簽署者關注。藉由基於碼簽署者選擇之值而實施碼驗證限制,可在不將安全敏感控制流程暴露給基於故障之攻擊之情況下使驗證程序穩健。
標頭200可包含一影像檢查203、一熔絲檢查243及一資訊檢查245。標頭200亦可包含填補值以填寫剩餘位元組(填補值241)。
在一實例性實施例中,一開機ROM 161及一開機載入器163可在將控制轉移至一處理器或應用程序之前執行可執行碼或命令集之驗證。可執行碼或命令集之驗證涉及包含於標頭200中之簽名201之驗證。
在一實例性實施例中,簽名201之驗證可涉及量測或判定三個分量中之每一者之雜湊。簽名201與影像相關聯,該等影像可係將在晶片裝置中執行之碼或將在晶片裝置中執行之一命令集中之命令之影像。
在一實例性實施例中,開機ROM韌體161可包含用於使用一影像雜湊、一熔絲雜湊及一資訊雜湊之一組合驗證將由一目標晶片裝置100執行之碼之一程序,如圖3中所圖解說明。圖3係可藉由基於標頭200以及將由
目標晶片裝置100驗證及執行之碼之相關聯影像而判定一雜湊來開始的一實例性程序之一流程圖。在一實例性實施例中,使用開機ROM 161之一特定版本執行用於判定一雜湊之程序。
在步驟S301中,在晶片裝置100中接收包含一標頭200之影像。在步驟S303中,晶片裝置100之開機ROM 161使用諸如SHA-256之一雜湊函數判定影像之一雜湊,該雜湊包含標頭之一部分(在圖2中以標籤205開始)及目標碼之影像位元。結果係一影像雜湊(「影像雜湊」)。
晶片裝置100可具有可用於指示晶片裝置之各種實體狀態之若干個相異裝置狀態熔絲127。裝置狀態熔絲127可具有不同位元長度。在一實例性實施例中,晶片裝置100具有128個熔絲(裝置狀態熔絲127),該128個熔絲中之某些或所有熔絲可經選擇為在一熔絲圖221中規定且在一驗證程序中使用。一碼簽署者可選擇具體熔絲。一碼簽署者可選擇任意熔絲。替代地,一碼簽署者可經由熔絲圖221選擇所關注之特定熔絲127,或彼對於執行目標碼可係必要的。具體熔絲之選擇可以儲存於熔絲圖221(其提供於標頭200中)中之一位元向量表示。
在步驟S305中,晶片裝置100中之開機ROM基於熔絲123、125、127及/或129(其位置或身份由熔絲圖221規定)之值而判定一雜湊。
圖4係判定步驟S305之熔絲值之雜湊之一實例性程序之一流程圖。在步驟S401中,可宣告一熔絲陣列,且可藉由將該熔絲陣列中之每一元素設定至一規定預設值而初始化該熔絲陣列。在步驟S403中,可自標頭200獲得熔絲圖221。熔絲圖221係指示哪些熔絲受碼簽署者關注之一位元向量。
在一實例性實施例中,程序迴圈經過熔絲圖221中之每一位元且改變
熔絲陣列之選定元素中之預設值以匹配與熔絲圖221中之位元相關聯之一熔絲之值。迴圈在步驟S405中藉由讀取熔絲圖221中之一位元值而開始。若位元經設定(舉例而言,已設定至一值1)(是,在步驟S407中),則將與位元位置相關聯之一熔絲之值寫入(步驟S409)至熔絲陣列中之一對應元素中。若熔絲圖221中之一位元值未經設定(否,在步驟S407中),則迴圈移動至熔絲圖221中之下一位元。迴圈繼續經過每一位元以將選擇熔絲之值寫入至熔絲陣列中,直至在步驟S411中已到達熔絲圖221之結尾(是,在步驟S411中)。
在步驟S413中,晶片裝置100中之開機ROM 161使用諸如SHA-256之一雜湊函數判定熔絲陣列之一雜湊。結果係一熔絲雜湊。
以一類似方式,在步驟S307中,晶片裝置100中之開機ROM判定諸如快閃記憶體111之一記憶體中之資訊之一雜湊以獲得一資訊雜湊。晶片裝置100迴圈經過資訊圖223中之位元,且針對每一經設定位元,用自一次寫入快閃記憶體111位置讀取之值替換資訊陣列中之對應項目。在一實例性實施例中,晶片裝置可具有快閃記憶體111之一次寫入區域中之128個字組之4個集合。在一實例性實施例中,開機ROM 161參照第一集合中之值,且開機載入器163參照第二集合中之值。
圖5係判定步驟S307之資訊雜湊之一實例性程序之一流程圖。在步驟S501中,可宣告一資訊陣列,且可藉由將資訊陣列中之每一元素設定至一規定預設值而初始化該陣列。在步驟S503中,可自標頭200獲得資訊圖223。資訊圖223係指示哪些記憶體(例如快閃記憶體111)位置受碼簽署者關注之一位元向量。
在一實例性實施例中,程序迴圈經過資訊圖223中之每一位元且構建
一資訊陣列。迴圈在步驟S505中藉由讀取資訊圖223中之一位元值而開始。若位元經設定(舉例而言,已設定至一值1)(是,在步驟S507中),則將與位元位置相關聯之一快閃記憶體位置之值寫入(步驟S509)至資訊陣列中之一對應元素中。若資訊圖223中之一位元值未經設定(否,在步驟S507中),則迴圈移動至資訊圖223中之下一位元。迴圈繼續經過每一位元以將選擇記憶體(例如快閃記憶體111)位置之值寫入至資訊陣列中,直至在步驟S511中已到達資訊圖223之結尾(是,在步驟S511中)。
在步驟S513中,晶片裝置100中之開機ROM 161使用諸如SHA-256之一雜湊函數判定資訊陣列之一雜湊。結果係一資訊雜湊(「資訊雜湊」)。
返回至圖3之較高階流程圖,分量雜湊值(例如影像雜湊(「影像雜湊」)、熔絲雜湊及/或資訊雜湊(「資訊雜湊」))可在判定用於驗證標頭簽名201之一雜湊中使用。在一實例性實施例中,開機ROM串連(步驟S309)影像雜湊、熔絲雜湊及資訊雜湊,且然後在步驟S311中判定一驗證雜湊,該驗證雜湊係經串連雜湊之一雜湊。
最後,在步驟S313中,可藉由對照標頭200中之簽名201檢查在S311中獲得之驗證雜湊而執行一驗證程序。
藉由量測熔絲及資訊之一雜湊(其中諸如快閃記憶體區域之具體熔絲及資訊由碼簽署者規定),碼簽署者能夠根據裝置之熔絲及資訊狀態將一碼塊結合至一具體裝置。舉例而言,晶片裝置100上之一裝置ID熔絲129可編碼12345之一值。若碼簽署者想要將具有12345之一值之一裝置ID定為目標,則對應於裝置ID熔絲129之熔絲圖221中之一位元將經設定。在碼塊簽署時間處,由碼簽署者對裝置ID之值12345進行雜湊運算,且使用
例如FIPS 186-4數位簽名標準之一安全數位簽名方案簽署此雜湊之輸出。
藉由允許碼簽署者選擇熔絲及快閃記憶體區域,判定圖3之程序之雜湊達成碼之穩健驗證。碼簽署者不需要知曉一特殊安全敏感控制流程之細節。此等特徵允許在簽名驗證流程中彈性防範各種類型之故障及錯誤注射攻擊。
假定一攻擊者可致使碼執行跳過指令。進一步地,假定攻擊者可導致載入及儲存操作產生所有0或所有1,但不能夠載入或儲存特定型樣之大位元向量。在此攻擊模型下,一攻擊者可如本文中所闡述在處理標頭200時或在對熔絲或資訊(可塑裝置狀態)進行取樣時導致一故障或一跳過。然而,產生匹配驗證雜湊之一位元向量對於攻擊者而言計算上不可行。
除使一碼簽署者具備選擇具體熔絲及快閃記憶體區域之一能力之外,態樣亦包含一硬體解鎖機制作為在碼驗證流程時而且在將控制轉移至嵌入式處理器103之程序中對抗故障攻擊之一進一步防禦。在實例性實施例中,一晶片裝置100可使用ROM 107中之一受限制可執行區域來開機。開機ROM 161然後可開啟記憶體中之額外區域以用於碼執行。為開啟記憶體中之額外區域,參考在ro base 213、ro max 215之一唯讀記憶體區域中之一範圍內之值,且參考在rx base 217及rx max 219之一可執行記憶體區域中之一範圍內之值,ro base 213、ro max 215、rx base 217及rx max 219係標頭200中之欄位。在一實例性實施例中,建立嵌入式處理器103之可執行區域以執行為一記憶體管理單元(MMU)可需要將base及max值寫入至分級暫存器。在一實例性實施例中,晶片裝置100可具有數個可執行區域,每一可執行區域具有rwx(讀取寫入執行)屬性。
在一實例性實施例中,為了啟動分級暫存器且准許一碼塊之執行,
一或多個硬體比較器比較一解鎖常數與一預定值。在一實例性實施例中,不可執行碼塊,除非一或多個硬體比較器之全部同意解鎖常數等於預定值。此硬體解鎖機制防範碼驗證程序之故障及在執行碼中之一條件語句期間之故障。
圖6係用於計算一解鎖常數之一實例性程序之一流程圖。在一實例性實施例中,解鎖常數經判定為碼驗證程序之一部分且用於啟動記憶體之額外區域作為控制轉移之一部分。在步驟S601中,藉由判定影像雜湊、熔絲雜湊及資訊雜湊(圖3中所展示之程序之結果)之串連之一雜湊而獲得驗證雜湊。在步驟S603中,驗證雜湊之一冪可用於獲得填補值之一值。在一實例性實施例中,冪係簽名201之立方。在一實例性實施例中,填補值可係PKCS #1版本1.5填補值。在步驟S605中,用驗證雜湊判定填補值之一邏輯函數以獲得一常數。所得常數可在雜湊欄位中包含填補值、ASN.1位元及0。在步驟S607中,判定此常數之一雜湊以獲得解鎖常數。
步驟S605之邏輯函數可係XOR,但實施例不限於此。舉例而言,可用驗證雜湊對填補值進行XOR運算以獲得常數。在另一實例中,可用驗證雜湊對填補值進行XNOR運算以獲得常數。更一般而言,將一函數應用於填補值及驗證雜湊,且該函數無側通道係較佳的。注意,可在硬體中實施且快速地判定XOR(及XNOR),且XOR(及XNOR)不涉及一進位位元。如本文中所使用,一「相同-不同邏輯函數」係在給定一第一位元向量及一第二位元向量為輸入時提供一位元向量作為輸出之一邏輯函數,其中每一第i個位元指示第一位元向量之第i個位元與第二位元向量之第i個位元相同還是不同。因此,XOR及XNOR兩者皆係相同-不同邏輯函數之實例。
判定一解鎖常數之程序可由開機ROM 161在將控制轉移至嵌入式處理器103之程序中使用。判定一解鎖常數之程序可由開機載入器163在將控制轉移至一應用程式之一程序中使用。
圖7係由開機ROM 161執行之一例示性解鎖程序之一流程圖。步驟S701係判定圖6之解鎖常數之程序。在步驟S703中,將解鎖常數寫入至一硬體比較器且比較該解鎖常數與一預定值,該預定值可係一所儲存常數。若比較係成功的(是,步驟S705),則在步驟S707中,將值鎖存至分級暫存器且可使用由分級暫存器中之值定義之區域來將控制轉移至嵌入式處理器103。
圖8係由開機載入器163執行之一例示性解鎖程序之一流程圖。該程序類似於由開機ROM 161執行之程序,除了在開機載入器163之情形中,程序係用於將控制轉移至一作業系統或應用程式。步驟S801係基於將在下一執行位準中執行之碼而判定(圖6)驗證雜湊之解鎖常數之程序。在步驟S803中,將解鎖常數寫入至一硬體比較器且比較該解鎖常數與一預定值,該預定值可係一所儲存常數。若比較係成功的(是,步驟S805),則在步驟S807中,將值鎖存至分級暫存器且啟動由分級暫存器中之值定義之區域且將控制轉移至一作業系統或一應用程式。
在某些情況中,每當重啟晶片裝置100時重複驗證雜湊之判定可係不必要的。在一實例性實施例中,可藉由快取一先前所判定驗證雜湊而完成一較快重啟使得可在後續重啟中執行一暖重啟動。圖9係一實例性暖重啟動程序之一流程圖。在任一暖重啟動之後,在步驟S901中,開機ROM 161可執行判定驗證雜湊之一程序(圖3)。在步驟S903中,開機ROM 161
可檢查驗證雜湊是否匹配儲存於一快取記憶體中之一先前驗證雜湊。在一實例性實施例中,該快取記憶體可係在晶片裝置100之低功率暫停模式期間保存其值之特殊暫存器。
若驗證雜湊不匹配儲存於快取記憶體中之一驗證雜湊(否,步驟S903),則在步驟S917中,開機ROM 161使用(舉例而言)RSA驗證執行完全簽名驗證。在步驟S919中,開機ROM 161檢查驗證雜湊在RSA簽名驗證程序中是否已通過驗證。若開機ROM 161不能夠使驗證雜湊通過驗證(否,在步驟S919中),則在步驟S921中,阻止記憶體中之額外區域經解鎖以用於執行。
若開機ROM 161能夠使驗證雜湊通過驗證(是,在步驟S919中),則在步驟S923中,通過驗證之驗證雜湊可儲存於快取記憶體中以用於未來暖重啟動處理。在步驟S907中,開機ROM 161可嘗試使用通過驗證之驗證雜湊執行一解鎖程序以開啟記憶體中之一區域以用於執行。
替代地,在驗證雜湊匹配儲存於快取記憶體中之一先前通過驗證之雜湊(是,在步驟S903中)之情形中,在步驟S907中,開機ROM 161可嘗試使用在步驟S901中判定之驗證雜湊執行一解鎖程序以開啟記憶體中之一區域以用於執行(圖7)。
若解鎖程序係成功的(是,步驟S909),則在步驟S915中,開啟記憶體中之區域以用於執行。
解鎖程序之一失敗(否,步驟S909)將導致在步驟S913中阻止開機ROM 161解鎖記憶體中之區域以用於執行。
亦可由開機載入器163執行圖9之一暖重啟動程序。在由開機載入器163進行暖重啟動之情形中,安全共處理器131可用於執行雜湊程序。在
一實例性實施例中,可由安全共處理器131執行諸如SHA-256之一安全雜湊演算法之處理。
在一實例性實施例中,晶片裝置100可包含一硬體金鑰梯機制。嵌入式處理器103可操縱金鑰梯機制。嵌入式處理器103可不觀察金鑰梯之輸入且可僅獲得經批准輸出。開機ROM 161及開機載入器163兩者皆可必須將各種輸入載入且鎖定至金鑰梯方案作為其在晶片裝置100中之作用之一部分。
圖10係根據一或多個項實施例之鎖定金鑰梯之一程序之一流程圖。在接收到一標頭(步驟S1001)之後,在步驟S1003中,開機ROM可將一開機載入器之標頭標籤205及標頭金鑰標識207寫入至金鑰梯之一RWR暫存器。在步驟S1005中,鎖定RWR暫存器使得保存於暫存器中之值可被看到但不被後續碼變更。不由開機ROM 161執行進一步金鑰梯處理。
在接收到一應用程式標頭(步驟S1011)之後,在步驟S1013中,開機載入器163可將一應用程式之標頭標籤205及標頭出現時間225寫入至金鑰梯之一FWR暫存器。在步驟S1015中,開機載入器可將應用程式之標頭major作為輸入寫入且鎖定至金鑰梯。
另外,在步驟S1021中,開機載入器163可載入且鎖定一RBC金鑰梯輸入。在一實例性實施例中,輸入值可係整個開機ROM碼之SHA-256。可由開機載入器163執行步驟S1021以便適應在製造期間之初始矽故障風險。在一實例性實施例中,可在開機ROM 161中替代地執行步驟S1021。
自此以後,應用程式可獲得自金鑰梯導出之各種值,但應用程式由major 227限制且不可改變經鎖定RWR、FWR或RBC輸入。
圖11係根據一或多項實施例之對包括碼及限制之一訊息進行數位簽署之一方法之一流程圖。該等限制可不具限制地包含一目標裝置之記憶體之一狀態、目標裝置之一裝置ID、目標裝置之一防轉返計數器之一值及/或目標裝置之一熔絲集合之值。首先,使用對一電子處理器執行之一雜湊函數對一熔絲圖、一資訊圖及將由一目標裝置執行之碼進行雜湊運算(步驟S1110)。其次,使用由一電子處理器執行之一數位簽名演算法簽署雜湊函數之一輸出(步驟S1120)。數位簽名演算法可包含於國家標準與技術研究院之一數位簽名標準中或包含於FIPS公開號186-4中。目標裝置可包含硬體熔絲及記憶體。熔絲圖可係識別目標裝置之硬體熔絲之一集合之一位元向量,且資訊圖可係識別目標裝置之記憶體之一區域之一位元向量。包含於由圖11中所陳述之方法數位簽署之訊息中之熔絲圖及資訊圖可分別係熔絲圖221及資訊圖223,如本文中所闡述。該訊息亦可包含標頭200之若干部分。
圖12係根據本文中所闡述之一或多個項實施例之一例示性裝置(700)之一高階方塊圖。裝置700可(舉例而言)係一資源限制環境中之一嵌入式系統。取決於應用,裝置700可具有包含大小、功率、成本及執行延時之約束。裝置700可(舉例而言)係一微控制器,諸如將安全、加密及密碼協定提供至一所連接電腦或通信裝置、數位簽署碼、驗證經數位簽署碼、執行經數位簽署碼或執行蒙哥馬利模數算術之一安全微控制器或者包含嵌入安全之一電腦或通信裝置。根據至少一項實施例,數位組件/運算裝置(700)可經組態以執行各種功能,包含判定一雜湊函數、判定一數位簽名且檢查硬體熔絲之值。根據至少一項實施例,數位組件/運算裝置(700)可包含一金鑰梯、熔絲控制器及裝置狀態解碼器121、熔絲123、金鑰熔絲
125、裝置狀態熔絲127、裝置ID熔絲129、安全共處理器131、真隨機數產生器133、SPI從控制135及/或SPI主控制137。根據至少一項實施例,數位組件/運算裝置(700)可實施一金鑰管理伺服器190。
在一非常基本組態(701)中,運算裝置(700)通常包含一或多個處理器(710)及系統記憶體(720)。一記憶體匯流排(730)可用於在處理器(710)與系統記憶體(720)之間通信。
取決於所要組態,處理器(710)可係為任何類型,包含但不限於一微處理器(μP)、一微控制器(μC)、一數位信號處理器(DSP)或其任一組合。處理器(710)可包含一或多個快取層級,諸如一層級1快取記憶體(711)及一層級2快取記憶體(712)、一處理器核心(713)及暫存器(714)。該處理器核心(713)可包含一算術邏輯單元(ALU)、一浮動點單元(FPU)、一數位信號處理核心(DSP核心)或其任一組合。一記憶體控制器(715)亦可與處理器(710)一起使用,或在某些實施方案中記憶體控制器(715)可係處理器(710)之一內部部分。
取決於所要組態,系統記憶體(720)可係為任何類型,包含但不限於揮發性記憶體(諸如RAM)、非揮發性記憶體(諸如ROM、快閃記憶體等)或其任何組合。系統記憶體(720)通常包含一作業系統(721)、一或多個應用程式(722)及程式資料(724)。根據本文中所闡述之一或多項實施例,應用程式(722)可包含一偽隨機數產生器之軟體實施方案、雜湊函數、數位簽名演算法及/或密碼函數。根據本文中所闡述之一或多項實施例,程式資料(724)可包含在由一或多個處理裝置執行時實施一偽隨機數產生器之儲存指令、雜湊函數、數位簽名演算法及/或密碼函數。在某些實施例中,應用程式(722)可經配置以藉助一作業系統(721)上之程式資料(724)進
行操作。
運算裝置(700)可具有額外特徵或功能性及額外介面以促進基本組態(701)與任何所需要裝置及介面之間的通信。
系統記憶體(720)係電腦儲存媒體之一實例。電腦儲存媒體包含但不限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位通用磁碟(DVD)或其他光學儲存器、磁盒、磁帶、磁碟儲存器或其他磁性儲存裝置或者可用於儲存所要資訊且可由運算裝置700存取之任何其他媒體。任何此類電腦儲存媒體可係裝置(700)之一部分。
運算裝置(700)可實施於諸如一微控制器或一系統單晶片(SoC)之一積體電路中,或其可實施為一小外觀尺寸可攜式(或移動)電子裝置(諸如一移動電話、一智慧型電話、一個人數位助理(PDA)、一個人媒體播放器裝置、一平板電腦(平板)、一無線web手錶裝置、一個人頭戴式裝置、一特殊應用裝置或包含以上功能中之任一者之一混合裝置)之一部分。另外,運算裝置(700)亦可實施為包含膝上型電腦及非膝上型電腦組態兩者之一個人電腦、一或多個伺服器、物聯網系統及諸如此類。
前述詳細說明已經由使用方塊圖、流程圖及/或實例陳述裝置及/或程序之各項實施例。只要此等方塊圖、流程圖及/或實例含有一或多個功能及/或操作,熟習此項技術者即將理解,可藉由一寬廣範圍之硬體、軟體、韌體或幾乎其任一組合來個別地及/或共同地實施此等方塊圖、流程圖或實例內之每一功能及/或操作。
根據至少一項實施例,可經由一或多個ASIC、場可程式化閘陣列(FPGA)、數位信號處理器(DSP)或其他整合格式實施本文中所闡述之標的物之數個部分。然而,熟習此項技術者將認識到,本文中所揭示之實施例
之某些態樣完全地或部分地可在一或多個積體電路中等效實施為在一或多個電腦上運行之一或多個電腦程式、實施為在一或多個處理器上運行之一或多個程式、實施為韌體或實施為幾乎其任何組合,且設計電路及/或寫入軟體及/或韌體之碼鑒於本發明將正好在熟習此項技術者之技能範圍內。
另外,熟習此項技術者將瞭解,本文中所闡述之標的物之機制之數個部分能夠作為一程式產品以各種形式分配,且本文中所闡述之標的物之一說明性實施例適用而不管所使用之特定類型之非暫時性電腦可讀媒體如何。一非暫時性電腦可讀媒體之實例包含但不限於以下各項:諸如一快閃隨身機之一可記錄類型媒體、一硬碟機、一固態磁碟機、一光碟(CD)、一數位影音光碟(DVD)、一數位磁帶及一電腦記憶體等。
關於本文中實質上任何複數及/或單數術語之使用,熟習此項技術者可在適於上下文及/或應用時自複數轉變成單數及/或自單數轉變成複數。為清晰起見,可在本文中明確地陳述各種單數/複數置換。
因此,已闡述標的物之特定實施例。其他實施例在所附申請專利範圍之範疇內。在某些情形中,在申請專利範圍中所陳述之行動可以一不同次序來執行且仍可達成合意結果。另外,附圖中所繪示之程序未必需要所展示之特定次序或順序次序來達成合意結果。在特定實施方案中,多任務及並行處理可為有利的。
本文中所論述之系統、設備及方法不需要使用者個人資訊之收集或使用。在其中特定實施方案可收集或使用關於使用者之個人資訊(例如,使用者資料、關於一使用者之社會網絡之資訊、使用者之位置及時間、使用者之生物計量資訊、使用者之活動及人口統計資訊)之情景中,給使用
者提供控制是否收集個人資訊、是否儲存個人資訊、是否使用個人資訊及如何收集、儲存及使用關於使用者之資訊的一或多個機會。亦即,本文中所論述之系統、設備及方法收集、儲存及/或使用使用者個人資訊,特別在接收到來自相關使用者之如此操作之明確授權之後。另外,可在儲存或使用特定資料之前以一或多種方式處理特定資料,使得移除可個別地識別之資訊。作為一項實例,可處理一使用者之身份,使得不可判定可個別地識別之資訊。作為另一實例,一使用者之地理位置可一般化至一較大區域,使得無法判定使用者之特定位置。
雖然本文中已揭示了各種態樣及實施例,但熟習此項技術者將明瞭其他態樣及實施例。本文中所揭示之各種態樣及實施例皆係出於圖解說明之目的且並非意欲加以限制,其中真實範疇及精神皆係由以下申請專利範圍指示。
100:晶片裝置/半導體裝置/目標晶片裝置
101:偵錯埠
103:嵌入式處理器
105:記憶體
107:ROM
109:SRAM
111:快閃記憶體/一次寫入快閃記憶體
121:熔絲控制器/裝置狀態解碼器
123:熔絲
125:金鑰熔絲/熔絲
127:裝置狀態熔絲/熔絲
129:裝置ID熔絲/熔絲
131:安全共處理器
133:真隨機數產生器
135:串列周邊介面從控制
137:串列周邊介面主控制
141:快閃記憶體測試控制
143:測試存取埠/掃描控制
145:快閃記憶體測試埠
147:掃描測試埠
149:接腳
151:接腳
161:開機ROM
163:開機載入器
190:金鑰管理伺服器
Claims (13)
- 一種判定將由一目標裝置執行之一碼影像之一驗證雜湊之電腦實施之方法,該目標裝置包含一記憶體控制器、多個硬體熔絲及記憶體,該碼影像包含具有一碼簽名及後設資料(metadata)之一標頭(header),該電腦實施之方法包括:接收該標頭及該碼影像;使用一雜湊函數基於該後設資料及該碼影像而判定一影像雜湊;使用該雜湊函數基於該等硬體熔絲中之至少某些硬體熔絲之值而判定一熔絲雜湊;使用該雜湊函數基於儲存於該記憶體中之至少某些資訊而判定一資訊雜湊;及基於該影像雜湊、該熔絲雜湊及該資訊雜湊而判定一驗證雜湊。
- 如請求項1之電腦實施之方法,其進一步包括對照該碼簽名驗證該驗證雜湊。
- 如請求項1之電腦實施之方法,其中該基於該影像雜湊、該熔絲雜湊及該資訊雜湊而判定一驗證雜湊包含:將該雜湊函數應用於該影像雜湊、該熔絲雜湊及該資訊雜湊之一串連。
- 如請求項1之電腦實施之方法,其中該使用該雜湊函數基於該等硬體熔絲中之至少某些硬體熔絲之值而判定一熔絲雜湊包含: 產生一熔絲陣列;讀取包括識別該等硬體熔絲中之預定熔絲之一位元向量之一熔絲圖;將該等預定熔絲之值寫入至該熔絲陣列中;及使用該雜湊函數基於該熔絲陣列而判定該熔絲雜湊。
- 如請求項1之電腦實施之方法,其中該使用該雜湊函數基於儲存於該記憶體中之至少某些資訊而判定一資訊雜湊包含:產生一資訊陣列;讀取包括識別記憶體之預定區域之一位元向量之一資訊圖;將儲存於記憶體之該等預定區域中之資訊寫入至該資訊陣列中;及使用該雜湊函數基於該資訊陣列而判定該資訊雜湊。
- 如請求項1之電腦實施之方法,其進一步包括:判定該碼簽名之一冪以獲得一填補值;用該驗證雜湊判定該填補值之一邏輯函數以獲得一常數;使用該雜湊函數基於該常數而判定一解鎖常數;比較該解鎖常數與一預定值;及回應於該解鎖常數與該預定值匹配,解鎖記憶體之一經鎖定區域。
- 如請求項6之電腦實施之方法,其中該邏輯函數係一相同-不同邏輯函數。
- 如請求項1之電腦實施之方法,其進一步包括:基於該驗證雜湊而判定一解鎖常數;及回應於該解鎖常數與一所儲存預定值之間的一成功比較,解鎖該目標裝置之記憶體中之一區域且將控制轉移至該目標裝置之一記憶體管理單元、由該目標裝置執行之一作業系統或由包含於該目標裝置中之一電子處理器執行之一應用程式中之至少一者。
- 如請求項2之電腦實施之方法,其中若該驗證雜湊對照該碼簽名通過驗證,則該目標裝置將該驗證雜湊儲存於一快取記憶體中且達成一暖重啟動。
- 一種用於對一訊息進行數位簽署之電腦實施之方法,該訊息包含一熔絲圖、一資訊圖及將由一目標裝置執行之碼,該電腦實施之方法包括:使用一電子處理器產生該訊息,其中該訊息係基於該熔絲圖、該資訊圖及該將由該目標裝置執行之碼;及使用由該電子處理器執行之一數位簽名演算法簽署該訊息,其中該目標裝置包含多個硬體熔絲及記憶體,其中該熔絲圖係識別該等硬體熔絲之一集合之一位元向量,且其中該資訊圖係識別該記憶體之一區域之一位元向量。
- 如請求項10之電腦實施之方法,其中該使用一電子處理器產生該訊息包含將一雜湊函數應用於如下(a)或(b)中之至少一者:(a)該熔絲圖、該資訊圖及該將由該目標裝置執行之碼,或 (b)該熔絲圖之一雜湊、該資訊圖之一雜湊及該將由該目標裝置執行之碼之一雜湊。
- 一種判定將執行之一碼影像之一驗證雜湊之設備,該碼影像包含具有一碼簽名及後設資料之一標頭,該設備包括:至少一個處理器;多個硬體熔絲;記憶體;及一非暫時性電腦可讀媒體,其耦合至該至少一個處理器、其上儲存有在由該至少一個處理器執行時致使該至少一個處理器進行以下操作之指令:接收該標頭及該碼影像;使用一雜湊函數基於該後設資料及該碼影像而判定一影像雜湊;使用該雜湊函數基於該等硬體熔絲中之至少某些硬體熔絲之值而判定一熔絲雜湊;使用該雜湊函數基於儲存於該記憶體中之至少某些資訊而判定一資訊雜湊;基於該影像雜湊、該熔絲雜湊及該資訊雜湊而判定一驗證雜湊;基於該驗證雜湊而判定一解鎖常數;及回應於該解鎖常數與一所儲存預定值之間的一成功比較,解鎖該記憶體中之一區域且准許該碼影像中之碼之執行。
- 一種對一訊息進行數位簽署之設備,該訊息包含一熔絲圖、一資訊圖及將由一目標裝置執行之碼,該設備包括:至少一個處理器;及一非暫時性電腦可讀媒體,其耦合至該至少一個處理器、其上儲存有在由該至少一個處理器執行時致使該至少一個處理器進行以下操作之指令:執行產生一訊息之一演算法;及執行簽署該訊息之一數位簽名演算法,其中該目標裝置包含多個硬體熔絲及記憶體,其中該熔絲圖係識別該等硬體熔絲之一集合之一位元向量,其中該資訊圖係識別該記憶體之一區域之一位元向量,且其中該訊息係基於該熔絲圖、該資訊圖及該將執行之碼。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/438,065 US10491401B2 (en) | 2017-02-21 | 2017-02-21 | Verification of code signature with flexible constraints |
US15/438,065 | 2017-02-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201832128A TW201832128A (zh) | 2018-09-01 |
TWI701571B true TWI701571B (zh) | 2020-08-11 |
Family
ID=60263064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106134144A TWI701571B (zh) | 2017-02-21 | 2017-10-03 | 判定一碼影像之一驗證雜湊之電腦實施之方法及設備,以及對一訊息進行數位簽署之電腦實施之方法及設備 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10491401B2 (zh) |
TW (1) | TWI701571B (zh) |
WO (1) | WO2018156208A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10491401B2 (en) | 2017-02-21 | 2019-11-26 | Google Llc | Verification of code signature with flexible constraints |
US10643006B2 (en) * | 2017-06-14 | 2020-05-05 | International Business Machines Corporation | Semiconductor chip including integrated security circuit |
US10985922B2 (en) * | 2017-09-29 | 2021-04-20 | Taiwan Semiconductor Manufacturing Co., Ltd. | Device with self-authentication |
US10853309B2 (en) | 2018-08-13 | 2020-12-01 | Micron Technology, Inc. | Fuseload architecture for system-on-chip reconfiguration and repurposing |
US11244078B2 (en) * | 2018-12-07 | 2022-02-08 | Nxp Usa, Inc. | Side channel attack protection |
CN110460580B (zh) * | 2019-07-11 | 2022-02-22 | 中国银联股份有限公司 | 图像采集装置、服务器及加、解密方法 |
US11100229B2 (en) * | 2019-07-18 | 2021-08-24 | Infineon Technologies Ag | Secure hybrid boot systems and secure boot procedures for hybrid systems |
CN110690968B (zh) * | 2019-08-19 | 2022-07-01 | 广东工业大学 | 一种基于蒙哥马利-rsa算法的图像加密方法 |
US11132470B2 (en) * | 2019-11-07 | 2021-09-28 | Micron Technology, Inc. | Semiconductor device with secure access key and associated methods and systems |
US11288360B2 (en) | 2020-03-04 | 2022-03-29 | Kyndryl, Inc. | Preventing untrusted script execution |
US11152052B1 (en) * | 2020-06-03 | 2021-10-19 | Micron Technology, Inc. | Apparatuses, systems, and methods for fuse array based device identification |
US11269637B2 (en) * | 2020-07-23 | 2022-03-08 | Hewlett Packard Enterprise Development Lp | Validating machine-readable instructions using an iterative validation process |
EP4278281A1 (en) * | 2022-01-06 | 2023-11-22 | Google LLC | Hardened encoded message check for rsa signature verification |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040177354A1 (en) * | 2003-03-03 | 2004-09-09 | Microsoft Corporation | Compact hardware indentification for binding a software package to a computer system having tolerance for hardware changes |
US20090259855A1 (en) * | 2008-04-15 | 2009-10-15 | Apple Inc. | Code Image Personalization For A Computing Device |
TWI363296B (en) * | 2006-02-15 | 2012-05-01 | Intel Corp | Technique for providing secure firmware |
US20120166781A1 (en) * | 2008-04-15 | 2012-06-28 | De Cesare Joshua | Single security model in booting a computing device |
US20140181498A1 (en) * | 2012-12-22 | 2014-06-26 | Samsung Electronics Co., Ltd. | Method and apparatus for supporting dynamic change of authentication means secure booting |
US20150019872A1 (en) * | 2004-11-22 | 2015-01-15 | Core Wireless Licensing, S.a.r.l. | Method and device for verifying the integrity of platform software of an electronic device |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2252078C (en) | 1998-10-28 | 2009-02-17 | Certicom Corp. | Power signature attack resistant cryptographic system |
US7519819B2 (en) | 2002-05-29 | 2009-04-14 | Digimarc Corporatino | Layered security in digital watermarking |
US7907729B2 (en) | 2002-09-13 | 2011-03-15 | Bally Gaming, Inc. | Rollback attack prevention system and method |
US8041957B2 (en) | 2003-04-08 | 2011-10-18 | Qualcomm Incorporated | Associating software with hardware using cryptography |
US7467417B2 (en) | 2003-06-18 | 2008-12-16 | Architecture Technology Corporation | Active verification of boot firmware |
US7491122B2 (en) | 2003-07-09 | 2009-02-17 | Wms Gaming Inc. | Gaming machine having targeted run-time software authentication |
US7953980B2 (en) | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US8006095B2 (en) | 2007-08-31 | 2011-08-23 | Standard Microsystems Corporation | Configurable signature for authenticating data or program code |
DE102008021567B4 (de) | 2008-04-30 | 2018-03-22 | Globalfoundries Inc. | Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel |
US7853780B2 (en) | 2008-07-31 | 2010-12-14 | Oracle America, Inc. | Core initialization code validation |
GB2477774A (en) | 2010-02-12 | 2011-08-17 | Icera Inc | Overriding production processor authentication restrictions through remote security unit for development code testing |
US8563798B2 (en) * | 2010-03-04 | 2013-10-22 | Kalliope Dontas | Enclosing bandage for providing comfortable wound care and limiting fluid leakage |
FR2985128B1 (fr) | 2011-12-21 | 2015-11-06 | Oberthur Technologies | Procede de determination de la valeur de u = 2^r mod n, avec 2^r > r ou r est une constante de montgomery. |
US9100174B2 (en) | 2012-08-31 | 2015-08-04 | Freescale Semiconductor, Inc. | Secure provisioning in an untrusted environment |
US9223982B2 (en) | 2013-03-01 | 2015-12-29 | Intel Corporation | Continuation of trust for platform boot firmware |
US10374793B2 (en) * | 2016-12-09 | 2019-08-06 | Intel Corporation | Simon-based hashing for fuse validation |
US10491401B2 (en) | 2017-02-21 | 2019-11-26 | Google Llc | Verification of code signature with flexible constraints |
-
2017
- 2017-02-21 US US15/438,065 patent/US10491401B2/en active Active
- 2017-10-03 TW TW106134144A patent/TWI701571B/zh active
- 2017-10-20 WO PCT/US2017/057636 patent/WO2018156208A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040177354A1 (en) * | 2003-03-03 | 2004-09-09 | Microsoft Corporation | Compact hardware indentification for binding a software package to a computer system having tolerance for hardware changes |
US20150019872A1 (en) * | 2004-11-22 | 2015-01-15 | Core Wireless Licensing, S.a.r.l. | Method and device for verifying the integrity of platform software of an electronic device |
TWI363296B (en) * | 2006-02-15 | 2012-05-01 | Intel Corp | Technique for providing secure firmware |
US20090259855A1 (en) * | 2008-04-15 | 2009-10-15 | Apple Inc. | Code Image Personalization For A Computing Device |
US20120166781A1 (en) * | 2008-04-15 | 2012-06-28 | De Cesare Joshua | Single security model in booting a computing device |
US20140181498A1 (en) * | 2012-12-22 | 2014-06-26 | Samsung Electronics Co., Ltd. | Method and apparatus for supporting dynamic change of authentication means secure booting |
Also Published As
Publication number | Publication date |
---|---|
WO2018156208A1 (en) | 2018-08-30 |
TW201832128A (zh) | 2018-09-01 |
US10491401B2 (en) | 2019-11-26 |
US20180241568A1 (en) | 2018-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI701571B (zh) | 判定一碼影像之一驗證雜湊之電腦實施之方法及設備,以及對一訊息進行數位簽署之電腦實施之方法及設備 | |
US10872154B2 (en) | Secure device state apparatus and method and lifecycle management | |
US8438658B2 (en) | Providing sealed storage in a data processing device | |
CN103093150B (zh) | 一种基于可信芯片的动态完整性保护方法 | |
US20150058979A1 (en) | Processing system | |
US10902098B2 (en) | Logic encryption for integrated circuit protection | |
US10146655B2 (en) | Method for determining an intergrity of an execution of a code fragment and a method for providing an abstracted representation of a program code | |
TW201500960A (zh) | 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術 | |
US10642947B2 (en) | System, method and computer-accessible medium providing secure integrated circuit camouflaging for minterm protection | |
US20220108018A1 (en) | Identity and Root Keys Derivation Scheme for Embedded Devices | |
US20110145919A1 (en) | Method and apparatus for ensuring consistent system configuration in secure applications | |
US10181956B2 (en) | Key revocation | |
JP6518798B2 (ja) | 安全な集積回路状態を管理する装置およびその方法 | |
US11829464B2 (en) | Apparatus and method for authentication of software | |
JP2021179982A (ja) | シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 | |
EP3561705A1 (en) | Secure activation of functionality in a data processing system using iteratively derived keys | |
TWI522914B (zh) | 微處理器以及撤銷第一密碼之方法 | |
US20230010319A1 (en) | Deriving independent symmetric encryption keys based upon a type of secure boot using a security processor | |
Li et al. | Enhancing tpm security by integrating sram pufs technology | |
CN111357003A (zh) | 预操作系统环境中的数据保护 | |
Chakraborty | Hardware security through design obfuscation | |
US20230015334A1 (en) | Deriving dependent symmetric encryption keys based upon a type of secure boot using a security processor | |
Nicholas | A Secure SoC Platform for Security Assessments in FPGAs | |
WO2023166363A1 (en) | Secure attestation of hardware device |