TW202145007A - 應用加速驗證映像檔方法的系統 - Google Patents
應用加速驗證映像檔方法的系統 Download PDFInfo
- Publication number
- TW202145007A TW202145007A TW109116620A TW109116620A TW202145007A TW 202145007 A TW202145007 A TW 202145007A TW 109116620 A TW109116620 A TW 109116620A TW 109116620 A TW109116620 A TW 109116620A TW 202145007 A TW202145007 A TW 202145007A
- Authority
- TW
- Taiwan
- Prior art keywords
- image file
- public key
- digital signature
- verification
- hash value
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- 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
-
- 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
Abstract
一種應用加速驗證映像檔方法的系統,系統自第一非揮發性記憶體取得映像檔,對映像檔演算一雜湊值,以此雜湊值結合公開金鑰與數位簽章,比對儲存於第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章,藉此驗證在第一非揮發性記憶體中的映像檔,經通過驗證後,可使系統載入映像檔。如此,可以取代習知以數位簽章驗證映像檔的方式,有效加速驗證映像檔的驗證程序。
Description
說明書公開一種驗證映像檔的技術,特別是指一種通過驗證映像檔雜湊值、公開金鑰與數位簽章的正確性來驗證受到保護的映像檔的正確性的加速驗證映像檔的系統。
在一單晶片系統(System on a Chip,SoC)中,其中設有一嵌入式系統(embedded system),嵌入式系統常以韌體映像(firmware image)的形式儲存在一個快閃記憶體(flash memory)中。單晶片系統初始運作時,其開機程式由此快閃記憶體中將韌體載入到嵌入式系統,為了要確保所使用的韌體是來自安全的信任方,習知技術會在程式載入的過程中對所要載入的韌體進行安全驗證,這個驗證通常是基於數位簽章(digital signature)的方式。
圖1顯示一個嵌入式系統的硬體架構示意圖,圖示中系統10如一個單晶片系統(SoC),主要電路元件包括處理器101、唯讀記憶體(ROM)102、靜態隨機記憶體(SRAM)104、周邊裝置(peripherals)107,以及一儲存器106,另外,系統可能需要外接一個快閃記憶體(flash memory)110,因此設有一快閃記憶體控制器(flash controller)105,快閃記憶體110即可用於儲存映像檔,例如系統10開機所需的韌體映像檔,或是可直接執行的程式碼等。以上各電路元件彼此可以通過匯流排相互電性連接。
在此嵌入式系統實施例中,還可設有一種一次式編程記憶體(one-time Programming,OTP)103,一次式編程記憶體103為一次式寫入,成本較高,儲存空間有限,因此僅用於儲存關鍵資料,例如驗證所需密鑰可以儲存在此一次式編程記憶體103中,但仍在特定實施例中可儲存在另一個記憶體,如額外的快閃記憶體110中。
根據嵌入式系統中的安全開機流程,當系統開啟後,先初始化系統硬體,通常是對系統的電源、時脈、記憶體控制器以及周邊裝置做初始化。之後,執行系統開機程式,系統開機程式儲存於唯讀記憶體(ROM),即由唯讀記憶體開始執行開機程式,這時,將開始驗證儲存在特定記憶體(如圖1顯示的快閃記憶體110)中的韌體映像檔,這個驗證程序即用來確保正在被載入的韌體映像檔是來自受信任的一方,驗證的方式通常是基於數位簽章的演算法。
傳統的開機安全驗證程序中驗證韌體映像檔的流程可參考圖2。
在步驟S201中,以雜湊演算法(hash algorithm)計算對應一韌體映像檔的公開金鑰的雜湊值,此以雜湊值比對已經事先儲存的公開金鑰雜湊值,在步驟S203中,判斷是否一致,若兩者不一致,即如步驟S215,映像檔的驗證程序失敗;若兩者一致,表示公開金鑰驗證成功,這時繼續步驟S205,以一演算法計算韌體映像檔的雜湊值,在步驟S207中,通過比對事先演算產生的映像檔雜湊值,以比對結果判斷映像檔驗證成功與否。
若雜湊值比對結果表示兩者不一致,也就如步驟S215,映像檔驗證失敗;反之,若比對結果一致,即繼續步驟S209,接著驗證對應此映像檔的數位簽章。其中驗證數位簽章的方式是,一旦確認公開金鑰的正確性,也確認韌體映像檔沒有遭受到竄改,這時,即可以認證過得公開金鑰以及韌體映像檔的雜湊值,執行數位簽章驗證。當數位簽章驗證失敗,如步驟S215,映像檔驗證失敗。
反之,在步驟S211的判斷中,當成功驗證了映像檔的數位簽章,即表示驗證韌體映像檔成功(步驟S213),即可載入映像檔至嵌入式系統中,其中內容會被載入系統上其它的記憶體,例如圖1顯示的靜態隨機記憶體104,或是可以在儲存此映像檔的快閃記憶體(如圖1顯示的快閃記憶體110)中直接執行(稱為一種晶片配執行(execution in place, XIP)),而無需載入至系統的記憶體。更者,在極安全的考量下,於完成韌體映像載入後通常還需要做一次檢查以確認載入內容的正確性。
常見用於驗證韌體映像檔的數位簽章演算法包含(但不限於)RSA數位簽章演算法、橢圓曲線數位簽章演算法(Elliptic Curve Digital Signature Algorithm, ECDSA)和愛德華曲線數位簽章演算法(Edwards-curve Digital Signature Algorithm, EdDSA)。常見雜湊演算法包含各式非加密哈希函數(Non-cryptographic hash functions)和加密哈希函數(Keyed/Unkeyed cryptographic hash functions)等演算法,例如MD5、SHA-1、SHA-2、HMAC。
然而,對於安全性有要求的系統常使用數位簽章的演算法來驗證所要載入的韌體映像,安全性等級越高的數位簽章演算法伴隨的是越高的計算量。對於安全性要求較高的系統,數位簽章的驗證需要花費大量的運算,因此常造成系統開機時需要較長的時間用於韌體映像的驗證,這對某些裝置,例如錄影監控裝置、電子門鈴,會要求裝置從開機到可以開始工作的時間非常的短,這樣的系統往往無法兼顧開機速度與系統的安全性。於是,對於某些有快速開機要求的系統,可能會選擇犧牲系統安全性,而採用驗證速度快但是安全性較低的演算法來驗證其韌體映像檔。
為了達到不犧牲安全性又能加速驗證映像檔的目標,說明書公開一種應用加速驗證映像檔方法的系統。
在系統執行的加速驗證映像檔的方法的實施例中,自第一非揮發性記憶體取得一映像檔,對映像檔的全部或一部分執行一雜湊演算法,產生一映像檔雜湊值,之後能以此映像檔雜湊值結合映像檔對應的公開金鑰與數位簽章,比對儲存於另一第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章,以此驗證儲存於第一非揮發性記憶體的映像檔。其中,映像檔可為系統執行一程序所需的韌體、程式或檔案的映像檔,第一非揮發性記憶體則可為連接系統的外接儲存裝置,以及第二非揮發性記憶體可為系統中的一非揮發性記憶體。
進一步地,若上述比對結果顯示第一非揮發性記憶體中儲存的映像檔雜湊值、公開金鑰和數位簽章與儲存於第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章為一致時,表示映像檔通過驗證,可使系統載入此映像檔。
當判斷驗證映像檔成功,轉為以系統的一開機程序接手,系統即載入此映像檔,完成一開機程序。
優選地,所述第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章可以形成一快速驗證資料,再經演算形成一認證代碼,並儲存於第二非揮發性記憶體中。對應地,可以相同演算法將第一非揮發性記憶體中的映像檔雜湊值、公開金鑰與數位簽章計算一待驗證的認證代碼,以能比對第二非揮發性記憶體中的認證代碼,同樣進行驗證。
進一步地,若比對結果顯示第一非揮發性記憶體中儲存的映像檔雜湊值、公開金鑰和數位簽章與儲存於第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章為不一致時,系統還能執行習知以數位簽章驗證映像檔的流程。
進一步地,若習知驗證流程成功驗證映像檔,除可由系統載入映像檔外,還能更新儲存於第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章。
為使能更進一步瞭解本發明的特徵及技術內容,請參閱以下有關本發明的詳細說明與圖式,然而所提供的圖式僅用於提供參考與說明,並非用來對本發明加以限制。
以下是通過特定的具體實施例來說明本發明的實施方式,本領域技術人員可由本說明書所公開的內容瞭解本發明的優點與效果。本發明可通過其他不同的具體實施例加以施行或應用,本說明書中的各項細節也可基於不同觀點與應用,在不悖離本發明的構思下進行各種修改與變更。另外,本發明的附圖僅為簡單示意說明,並非依實際尺寸的描繪,事先聲明。以下的實施方式將進一步詳細說明本發明的相關技術內容,但所公開的內容並非用以限制本發明的保護範圍。
應當可以理解的是,雖然本文中可能會使用到“第一”、“第二”、“第三”等術語來描述各種元件或者信號,但這些元件或者信號不應受這些術語的限制。這些術語主要是用以區分一元件與另一元件,或者一信號與另一信號。另外,本文中所使用的術語“或”,應視實際情況可能包括相關聯的列出項目中的任一個或者多個的組合。
說明書公開一種應用加速驗證映像檔方法的系統,適用需要即時驗證特定程式、檔案或韌體的系統中,如單晶片系統(System on a Chip,SoC),通過所述方法可以加速系統中的程序,如開機程序,對於較複雜的系統,例如具有多開機程序的單晶片系統,所述方法可以產生更顯著的加速效果。所提出的應用加速驗證映像檔方法的系統將適用各種需要驗證特定程式、檔案或韌體的系統中。
對於如上述提到單晶片系統等嵌入式系統,包括使用此嵌入式系統的電子裝置,可能面對的威脅是外部的儲存裝置(如圖1顯示的快閃記憶體110)內容被修改,例如,駭客以具有惡意程式韌體取代原先設備上正常的韌體,以此達到入侵系統、竊取機密資料的目的。面對這樣的威脅,防禦措施之一是在相關電子裝置開機或啟動特定程序時,先驗證所要載入執行的映像檔的安全性,包括確保其中內容並未被竄改。
說明書所提出的應用加速驗證映像檔方法的系統可以滿足高安全性與快速啟動的要求,其中技術方案可參考圖3顯示的加速驗證映像檔的技術概念示意圖。應用所述方法的系統中,可以具備多種儲存媒體,如圖中顯示的第一非揮發性記憶體30、第二非揮發記憶體34,以及一次式編程記憶體(OTP)32。
每個韌體映像檔的發行可伴隨有一個由發行者透過使用私鑰(private key)所簽署的數位簽章(digital signature),此例中,映像檔301可為程式、檔案或韌體的映像檔(image file),以及驗證此映像檔301的數位簽章309,一併儲存於特定儲存媒體,此儲存媒體為一非揮發性記憶體(non-volatile memory, NVM),例如快閃記憶體等,如圖3所示的第一非揮發性記憶體30。此映像檔301即為系統啟動後需要驗證的對象,數位簽章309為確保映像檔301來自一可信任方。根據實施例,可以第一非揮發性記憶體30或特定儲存裝置用於儲存驗證數位簽章309所需的公開金鑰(public secure key)305。
在所述加速驗證映像檔的方案中,先將此映像檔301進行一雜湊演算(hash algorithm),經雜湊演算得出一映像檔雜湊值303,這個映像檔雜湊值303以及驗證映像檔301所使用的公開金鑰305和數位簽章(digital signature)309備份儲存於系統中一個非揮發性記憶體中,如所示的第二非揮發性記憶體34中,形成備份的映像檔雜湊值303’、公開金鑰305’和數位簽章309’。在一實施例中,公開金鑰305可經雜湊演算法後產生公開金鑰雜湊值307,並儲存於嵌入式系統中的一次式編程記憶體32中,當系統需要取出公開金鑰305以驗證數位簽章309時,可經此公開金鑰雜湊值307驗證公開金鑰305是否有被竄改。
更者,在一實施例中,儲存這些備份數據(303’, 305’, 309’)時,還可通過一個加密的程序保護這個存儲的映像檔雜湊值303’、公開金鑰305’和數位簽章309’的備份數據。儲存在第二非揮發性記憶體34中的映像檔雜湊值303’、公開金鑰305’與數位簽章309’可受到所述密鑰311保護,密鑰311本身可以儲存於系統中的一次式編程記憶體32中,只有受信任的程式可以讀取。在此一提的是,這組儲存在第二非揮發性記憶體34的數據(303’, 305’, 309’)形成一快速驗證資料(fast validation data)。
經過上述程序,可預備好執行加速驗證映像檔的方法之前的雜湊值303、公開金鑰305和數位簽章309的備份數據(303’, 305’, 309’),備份時可經密鑰311以一加密演算法加密後儲存在第二非揮發性記憶體34,形成快速驗證資料。之後,在系統開機或需要啟始特定程序時,即執行加速驗證映像檔的方法,經解密後取出映像加速驗證資料,以快速驗證資料來驗證要被載入的映像檔的雜湊值、公開金鑰與數位簽章,可同時參考圖4所示的實施例流程圖。
所述方法運行於系統開機準備載入所需的韌體,或是執行特定程式或檔案的映像檔之前,系統需要執行映像檔驗證程序,其中經系統的處理器執行一啟始程式(如開機程式,或是執行特定流程的程式)以運行此驗證程序,先驗證此映像檔301。
開始時,自第一非揮發性記憶體30中取得映像檔301,以雜湊演算法演算一映像檔雜湊值303(步驟S401),接著以此雜湊值,加上原本驗證映像檔301的公開金鑰305與數位簽章309等檔案,比對儲存於第二非揮發性記憶體34中的快速驗證資料(步驟S403),以確認其中資料內容是否一致?(步驟S405)。其中,必要時,應先至一次式編程記憶體32中取得密鑰311,再解密得出快速驗證資料中的映像檔雜湊值303’、公開金鑰305’以及數位簽章309’,用以檢查儲存在第一揮發性記憶體30中的映像檔301的映像檔雜湊值303、公開金鑰305以及數位簽章309等內容是否正確。
當映像檔雜湊值303、公開金鑰305和數位簽章309三者的內容與快速驗證資料內容完全一致(是),代表這個映像檔301通過驗證,同時也驗證映像檔301的數位簽章309以及用於驗證此數位簽章309的公開金鑰305的正確性,即可直接載入映像檔301至系統中(步驟S407)。在一實施例中,當系統完成驗證此映像檔301,即由上述驗證程序轉為以一開機程序接手,使系統載入映像檔,完成一開機程序。
反之,如果前述的映像檔301的映像檔雜湊值303、公開金鑰305、數位簽章309,或是映像檔301本身被竄改,系統在開機或特定程序中的快速驗證機制會偵測到這個錯誤,而讓映像檔的驗證流程回到原先的驗證方法(也就是驗證數位簽章的演算流程),還能仍然保有原先的系統安全性。實施例如步驟S409,若在步驟S405中的判斷顯示驗證並未成功,表示映像檔301的映像檔雜湊值303、公開金鑰305以及數位簽章309與儲存在第二非揮發性記憶體34中的備份數據不符(其中至少一個比對不符),將回到習知利用數位簽章驗證映像檔的驗證流程,也就是直接以數位簽章演算法驗證儲存在第一非揮發性記憶體30中的映像檔301,這個驗證程序即用來確保正在被載入的映像檔是來自可信任的一方(如圖2的步驟S205)(步驟S409)。
在步驟S409中,當回到習知的驗證流程,需要取出公開金鑰305,而取出公開金鑰305之前,可驗證公開金鑰305正確性,步驟包括讀取儲存於第一非揮發性記憶體30中映像檔301對應的公開金鑰305,計算此公開金鑰305的雜湊值,再將這個雜湊值與儲存於一次式編程記憶體32中的公開金鑰雜湊值307比較,以確認公開金鑰305的正確性。經確認內容正確的公開金鑰305即用來驗證數位簽章309的正確性,其中方式是以習知數位簽章運算法驗證映像檔301對應的數位簽章309是否正確,確認數位簽章309正確後,即可將映像檔301載入系統。
值得一提的是,所述方法中用於快速驗證映像檔的主要依據是由儲存於第二非揮發性記憶體34中的映像檔雜湊值303’、公開金鑰305’和數位簽章309’組成的快速驗證資料,其中可以通過加密後再儲存於記憶體中。而比對快速驗證資料來確認映像檔的正確性的另一實施方式是,將快速驗證資料演算形成一認證代碼,可稱加密雜湊信息認證代碼(keyed-hash message authentication code,簡稱HMAC),並先儲存於第二非揮發性記憶體34中,作為驗證的依據,第二非揮發性記憶體34如圖1顯示的儲存器106。之後進行驗證時,通過上述流程,以相同演算法將第一非揮發性記憶體30中數值得出的映像檔雜湊值303、公開金鑰305與數位簽章309計算另一待驗認證代碼,即另一加密雜湊信息認證代碼,以此比對儲存在第二非揮發性記憶體34中的加密雜湊信息認證代碼,產生驗證結果。
在此加速驗證映像檔的方法的實施例中,以上驗證程序可以取代複雜的習知數位簽章運算法,即減少了傳統需要驗證數位簽章的時間,可以有效加速系統所要執行的特定程序中的驗證程序,例如可有效加速開機程序。在此一提的是,儲存在第二非揮發性記憶體34的映象快速驗證資料只有當映像檔中的韌體、程式或檔案有被更新時或是系統遭受攻擊而造成資料毀損才需要被更新,在一般正常情況下,這個快速驗證機制都可以縮短映像檔驗證的時間,以加速系統程序並且保有安全性。
根據實施例,上述快速驗證資料以及由快速驗證資料演算的加密雜湊信息認證代碼(HMAC)可以儲存在第二非揮發性記憶體34,然而,實際運行時,仍可以依照需求分別儲存在不同記憶體,例如,當快速驗證資料有透過加密或是由加密雜湊信息認證代碼保護時,相關資料仍可儲存在第一非揮發性記憶體30中。
續參考圖3,對照圖1顯示的系統硬體架構實施例圖,根據應用加速驗證映像檔的方法的系統實施例,映像檔301儲存在第一非揮發性記憶體30中,第一非揮發性記憶體30可以為連接此系統以外的外接儲存裝置,如圖1所示的快閃記憶體110,此映像檔301事先以雜湊(hash)演算得出一個雜湊值,雜湊值的目的是驗證映像檔301的完整性,映像檔301一般也伴隨著數位簽章309,數位簽章309的目的是用於驗證映像檔301確實來自可信任方。在一實施例中,驗證映像檔301所需要的公開金鑰305也可儲存於快閃記憶體110中,而將公開金鑰雜湊值307儲存於如圖3實施例所公開的一次式編程記憶體32中。當驗證映像檔成功後,載入映像檔,其中的程式碼會被載入到系統的靜態隨機記憶體(104,圖1)執行,也或是可直接在快閃記憶體110上執行。
圖5所示為建立快速驗證資料的實施例流程圖。
當系統原本要載入的映像檔經過修改時,或是新建立的映像檔,這時需要建立一個值得信賴的映像檔以及其執行驗證的數值,可對確認內容正確的映像檔的全部,或是部分,通過一雜湊演算法計算一映像檔雜湊值(步驟S501)。其中值得一提的是,所產生的映像檔雜湊值可以根據映像檔的全部或部分演算得出,之後驗證時,也應以對等的內容產生雜湊值。
接著,使用密鑰並以一加密演算法加密所產生的映像檔雜湊值,以及對應映像檔的公開金鑰與數位簽章(步驟S503),並將加密後內容儲存至特定儲存媒體,如非揮發性記憶體,成為上述實施例所稱的快速驗證資料(步驟S505)。
用於日後驗證映像檔正確性的快速驗證資料可以非原本數值,在一實施例中,還可進一步以一特定演算法根據快速驗證資料內容計算出一個用於驗證的代碼,即加密雜湊信息認證代碼(步驟S507),最後再將此代碼儲存於儲存媒體(步驟S509)。
在此一提的是,上述步驟中加密與雜湊演算的順序並不限制在所描述的實施例中。上述步驟中形成加密雜湊信息認證代碼的方式可以先將快速驗證資料加密後,再計算此代碼;或者,加密演算法所使用的密鑰可以包括計算加密雜湊信息認證代碼的密鑰以及加密快速驗證資料的密鑰,這些密鑰可儲存於系統中的一次式編程記憶體中;或是在使用之前,可由存放在一次式編程記憶體中的密鑰來推導出加密使用的密鑰。然而,儲存於一次式編程記憶體的密鑰可以通過一硬體鎖以限制其讀取,例如,僅允許載入映像檔的程式在開機階段存取。
圖6接著顯示確認加速驗證資料的完整性的實施例流程圖,此流程的主要目的是要驗證儲存於系統中特定非揮發性記憶體中的快速驗證資料的完整性,此快速驗證資料的主要內容為待驗證的映像檔的雜湊值、公開金鑰和數位簽章。
當系統啟始一程序時,如開機程序,或是執行特定程序,此流程提供確認其中快速驗證資料的完整性,經由確認完整性後,再繼續驗證其中的映像檔。在此一提的是,流程中驗證快速驗證資料的程序可由記載於唯讀記憶體或是系統內特定記憶體中的程式來執行,以確保其安全性。
在此流程中,一開始如步驟S601,先判斷應用在此程序中的快速驗證資料是否存在,若此快速驗證資料並不存在系統中的儲存媒體或是外接的儲存媒體中,即結束此流程,也就表示驗證快速驗證資料失敗(步驟S619)。
然而,當確認有此快速驗證資料,如步驟S603,即對此演算產生用於比對的認證代碼,此認證代碼即如以上實施例所描述,以一特定演算法將儲存媒體中的映像檔雜湊值、公開金鑰與數位簽章計算出用於驗證的加密雜湊信息認證代碼。
這時,如步驟S605,將計算得出的認證代碼比對事先已經儲存在特定記憶體的認證代碼,根據比對結果判斷當下算出的認證代碼是否與事先儲存的認證代碼一致,若不一致,同樣結束此流程,驗證快速驗證資料失敗(步驟S619)。
若比對結果顯示認證代碼為一致,執行步驟S607,步驟S607是要解決當中若有加密的情況,即需要解密,否則可以跳過解密的步驟。當判斷快速驗證資料並未被加密,流程接著執行步驟S611;如果有被加密,則執行步驟S609,將快速驗證資料解密,以取得未加密的快速驗證資料。
接著在步驟S611中,從快速驗證資料中取得公開金鑰與數位簽章等資料,以此比對待驗證的映像檔對應的公開金鑰與數位簽章,再判斷是否一致。若比對公開金鑰與數位簽章後判斷不一致,表示當中有竄改的疑慮,即結束此流程,表示驗證快速驗證資料失敗(步驟S619)。
若比對結果顯示為一致,執行步驟S613,繼續驗證映像檔,包括對待驗證的映像檔計算一映像檔雜湊值,再如步驟S615,以此比對事先儲存在系統的快速驗證資料中的映像檔雜湊值。若兩者不一致,表示待驗證映像檔有被竄改的疑慮,即結束此流程(步驟S619)。反之,若比對後為一致,如步驟S617,表示驗證此快速驗證資料為成功,即可繼續後續加速驗證映像檔的流程。
圖7繼續以加速驗證映像檔的方法的另一實施例流程表示,當提出的加速驗證映像檔的方法遭遇到其中有檔案被竄改或是不正確時,仍可以回到習知驗證流程,並能在習知驗證程序中再次重建快速驗證資料,讓系統在下次需要時,還能以快速驗證映像檔的流程運行。
此例中,開始如步驟S701,判斷系統是否能以加速驗證映像檔方法成功地驗證映像檔,也就是利用上述快速驗證資料驗證待載入的映像檔,若可以成功驗證映像檔,除可以更新快速驗證資料(步驟S707)外,還繼續執行步驟S709,系統載入映像檔。反之,若無法以加速驗證映像檔的方法驗證映像檔,繼續步驟S703,系統跳出加速驗證映像檔的流程,而自動執行習知驗證程序,再如步驟S705,判斷系統是否可以成功驗證映像檔。
習知驗證流程即通過數位簽章演算法驗證所要載入的映像檔,若仍無法驗證成功,如步驟S711,表示映像檔驗證失敗,即進行驗證失敗處理程序,包括,若此時可以用習知驗證方法成功驗證映像檔,可繼續步驟S709,載入映像檔;或是流程終止。
特別的是,當習知驗證方法可以成功驗證映像檔,其中之一理由是表示映像檔內容有合法變更(如被可信任方修改),例如版本更新、錯誤修正等,這時,在此流程中,執行步驟S707,系統利用其中的程式一併更新用來快速驗證映像檔的快速驗證資料,即更新儲存於上述實施例所提到的第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章,作為下次快速驗證映像檔的依據。
圖8顯示應用加速驗證映像檔的方法在系統開機流程的實施例流程圖,此例為以上述方法應用於系統中的開機流程中,當系統開機後執行一開機程序(步驟S801),運行於其中的開機程式(boot loader)將先於唯讀記憶體(ROM)81中執行系統初始化(步驟S803),包括初始化系統中電源、時脈、記憶體等硬體,接著,進入步驟S805,驗證系統需要載入的韌體映像檔,驗證步驟如上述實施例,主要是通過比對儲存於儲存媒體中的映像檔雜湊值(此例為韌體映像檔雜湊值)、公開金鑰和數位簽章組成的快速驗證資料以確認韌體映像檔的正確性,取代習知驗證映像檔的數位簽章的過程。經驗證後,如步驟S807,系統從唯讀記憶體開機後,載入所需的韌體映像檔至隨機存取記憶體(RAM)中。
流程接著以另一開機程式在隨機存取記憶體82中預備載入特定程式的映像檔,同樣地先通過比對映像檔雜湊值、公開金鑰和數位簽章組成的快速驗證資料,以驗證映像檔(步驟S809),於完成驗證後,可以載入此映像檔至隨機存取記憶體中(步驟S811),並可執行後續步驟,包括執行經載入的程式(步驟S813)。
通過所述驗證程序,不論系統開機後在任何程序中需要多少的韌體、程式或檔案,都可以快速驗證各自對應的映像檔。
綜上所述,根據以上應用加速驗證映像檔方法的系統的實施例內容,可知所述方法可以加速驗證映像檔的驗證程序,也就是在一個電腦程序中(如開機程序)中,因為驗證韌體的速度加快了,即可以加速這個電腦程序。舉例來說,當要喚醒一個正處於省電模式的系統,所述方法可以在喚醒系統並需要驗證韌體時,可加速喚醒到開機完成所花的時間;更者,當驗證韌體映像檔的過程可以加速,系統所使用的演算時間更少,還有省電的效果,特別是需要多次開啟與關閉的系統,省電效果更為顯著;還有,當所述方法應用在較複雜的系統,如具有多開機程序的系統,如複雜的單晶片系統(SoC),所述方法可以產生更顯著的加速效果。
以上所公開的內容僅為本發明的優選可行實施例,並非因此侷限本發明的申請專利範圍,所以凡是運用本發明說明書及圖式內容所做的等效技術變化,均包含於本發明的申請專利範圍內。
10:系統
101:處理器
102:唯讀記憶體
103:一次式編程記憶體
104:靜態隨機記憶體
105:快閃記憶體控制器
106:儲存器
107:周邊裝置
110:快閃記憶體
30:第一非揮發性記憶體
301:映像檔
303, 303’:映像檔雜湊值
32:一次式編程記憶體
305, 305’:公開金鑰
307:公開金鑰雜湊值
309, 309’:數位簽章
34:第二非揮發性記憶體
311:密鑰
81:唯讀記憶體
82:隨機存取記憶體
步驟S201~S215:習知驗證映像檔流程
步驟S401~S409:快速驗證映像檔流程
步驟S501~S509:更新快速驗證資料的流程
步驟S601~S619:快速驗證映像檔流程
步驟S701~S711:快速驗證映像檔流程
步驟S801~S813:快速驗證映像檔應用流程
圖1顯示一個嵌入式系統的硬體架構示意圖;
圖2顯示習知嵌入式系統中的安全開機流程;
圖3顯示為加速驗證映像檔的技術概念示意圖;
圖4顯示為加速驗證映像檔的方法的實施例流程圖;
圖5所示為建立快速驗證資料的實施例流程圖;
圖6顯示確認加速驗證資料的完整性的實施例流程圖;
圖7顯示加速驗證映像檔的方法的實施例流程圖;以及
圖8顯示應用加速驗證映像檔的方法的實施例流程圖。
30:第一非揮發性記憶體
301:映像檔
303,303’:映像檔雜湊值
32:一次式編程記憶體
305,305’:公開金鑰
307:公開金鑰雜湊值
309,309’:數位簽章
34:第二非揮發性記憶體
311:密鑰
Claims (10)
- 一種應用加速驗證映像檔方法的系統,包括: 一處理器;以及 一第二非揮發性記憶體,其中用以儲存備份的映像檔雜湊值、公開金鑰與數位簽章,其中該公開金鑰用以驗證該數位簽章是否正確,該數位簽章為伴隨該映像檔而用以驗證該映像檔是否來自一可信任方; 其中,以該處理器執行該加速驗證映像檔的方法,包括: 由連接該系統的一第一非揮發性記憶體取得一映像檔,對該映像檔的全部或一部分執行一雜湊演算法,產生一映像檔雜湊值;以及 以該映像檔雜湊值結合該映像檔對應的一公開金鑰與一數位簽章,比對儲存於該第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章; 其中,若比對結果顯示該第一非揮發性記憶體中儲存的該映像檔雜湊值、該公開金鑰和該數位簽章與儲存於該第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章為一致時,表示該映像檔通過驗證,使該系統載入該映像檔。
- 如請求項1所述的應用加速驗證映像檔方法的系統,其中該備份的映像檔雜湊值、公開金鑰與數位簽章以一密鑰經一加密程序儲存於該第二非揮發性記憶體中,於進行比對時,經解密後取得該備份的映像檔雜湊值、公開金鑰與數位簽章。
- 如請求項1所述的應用加速驗證映像檔方法的系統,其中該系統包括一一次式編程記憶體,該密鑰儲存於該一次式編程記憶體中。
- 如請求項3所述的應用加速驗證映像檔方法的系統,其中該公開金鑰經該雜湊演算法後產生一公開金鑰雜湊值,並儲存於該一次式編程記憶體中,當該系統需要取出該公開金鑰以驗證該數位簽章時,經該公開金鑰雜湊值驗證該公開金鑰。
- 如請求項1所述的應用加速驗證映像檔方法的系統,其中該映像檔為該系統執行一程序所需的一韌體、一程式或一檔案的映像檔。
- 如請求項5所述的應用加速驗證映像檔方法的系統,其中該系統為一嵌入式系統,設有一快閃記憶體控制器,該第一非揮發性記憶體為通過該快閃記憶體控制器而連接該系統的外接的一快閃記憶體。
- 如請求項6所述的應用加速驗證映像檔方法的系統,其中該嵌入式系統為具有多個開機程序的一單晶片系統。
- 如請求項1所述的應用加速驗證映像檔方法的系統,其中該第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章組成一快速驗證資料,再經演算形成一認證代碼,該認證代碼儲存於該第二非揮發性記憶體中;當以該映像檔雜湊值結合該映像檔對應的該公開金鑰與該數位簽章進行比對時,以相同演算法將該第一非揮發性記憶體中的該映像檔雜湊值、該公開金鑰與該數位簽章計算一待驗證的認證代碼,比對儲存於該第一非揮發性記憶體的該認證代碼,以產生驗證結果。
- 如請求項1至8中任一項所述的應用加速驗證映像檔方法的系統,其中,於該加速驗證映像檔的方法中,若比對結果顯示該第一非揮發性記憶體中儲存的該映像檔雜湊值、該公開金鑰和該數位簽章與儲存於該第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章為不一致時,執行習知以該數位簽章驗證該映像檔的流程。
- 如請求項9所述的應用加速驗證映像檔方法的系統,其中,若習知驗證流程成功驗證該映像檔,除由該系統載入該映像檔外,還更新儲存於該第二非揮發性記憶體中備份的映像檔雜湊值、公開金鑰與數位簽章。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109116620A TWI760752B (zh) | 2020-05-20 | 2020-05-20 | 應用加速驗證映像檔方法的系統 |
US17/324,241 US20210367781A1 (en) | 2020-05-20 | 2021-05-19 | Method and system for accelerating verification procedure for image file |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109116620A TWI760752B (zh) | 2020-05-20 | 2020-05-20 | 應用加速驗證映像檔方法的系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202145007A true TW202145007A (zh) | 2021-12-01 |
TWI760752B TWI760752B (zh) | 2022-04-11 |
Family
ID=78608003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109116620A TWI760752B (zh) | 2020-05-20 | 2020-05-20 | 應用加速驗證映像檔方法的系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210367781A1 (zh) |
TW (1) | TWI760752B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021262160A1 (en) * | 2020-06-24 | 2021-12-30 | Hewlett-Packard Development Company, L.P. | Bios backup |
US20230359466A1 (en) * | 2022-05-04 | 2023-11-09 | Micron Technology, Inc. | Boot processes for storage systems |
CN116611075A (zh) * | 2023-07-18 | 2023-08-18 | 深圳市楠菲微电子有限公司 | XIP启动时预防攻击芯片的检测方法、os检测固件及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005143094A (ja) * | 2003-10-14 | 2005-06-02 | Canon Inc | 画像検証システム、管理方法、及びコンピュータ読み取り可能な記憶媒体 |
US7930544B2 (en) * | 2004-10-28 | 2011-04-19 | Canon Kabushiki Kaisha | Data processing apparatus and its method |
US9385918B2 (en) * | 2012-04-30 | 2016-07-05 | Cisco Technology, Inc. | System and method for secure provisioning of virtualized images in a network environment |
US9753874B2 (en) * | 2015-02-20 | 2017-09-05 | Qualcomm Incorporated | Multi-step programming of heat-sensitive non-volatile memory (NVM) in processor-based systems |
US10949546B2 (en) * | 2017-08-02 | 2021-03-16 | Samsung Electronics Co., Ltd. | Security devices, electronic devices and methods of operating electronic devices |
TWI682296B (zh) * | 2018-12-06 | 2020-01-11 | 啓碁科技股份有限公司 | 映像檔打包方法及映像檔打包系統 |
-
2020
- 2020-05-20 TW TW109116620A patent/TWI760752B/zh active
-
2021
- 2021-05-19 US US17/324,241 patent/US20210367781A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI760752B (zh) | 2022-04-11 |
US20210367781A1 (en) | 2021-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI498813B (zh) | 受信賴構件更新系統與方法 | |
US11574061B2 (en) | Rollback resistant security | |
TWI760752B (zh) | 應用加速驗證映像檔方法的系統 | |
US8732445B2 (en) | Information processing device, information processing method, information processing program, and integrated circuit | |
CN109814934B (zh) | 数据处理方法、装置、可读介质和系统 | |
US11270003B2 (en) | Semiconductor device including secure patchable ROM and patch method thereof | |
CN104899524A (zh) | 中央处理器和验证主机板数据的方法 | |
KR101988404B1 (ko) | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 | |
JP6930884B2 (ja) | Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラム | |
KR101954439B1 (ko) | 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법 | |
WO2017012588A1 (en) | Fast authentication of code in low-power system | |
US20230273977A1 (en) | Managing ownership of an electronic device | |
CN114995918A (zh) | 基板管理控制器的启动方法、配置方法、装置及电子设备 | |
WO2016024967A1 (en) | Secure non-volatile random access memory | |
CN113742784A (zh) | 应用加速验证映像文件方法的系统 | |
US20230129942A1 (en) | Method for locking a rewritable non-volatile memory and electronic device implementing said method | |
US20230351056A1 (en) | Sram physically unclonable function (puf) memory for generating keys based on device owner | |
CN116089967B (zh) | 数据防回滚方法和电子设备 | |
CN111357003A (zh) | 预操作系统环境中的数据保护 | |
WO2023212178A1 (en) | Sram physically unclonable function (puf) memory for generating keys based on device owner | |
TW202343231A (zh) | 管理電子設備的所有權 | |
KR20230082388A (ko) | 차량 제어기의 부트로더 검증 장치 및 그 방법 | |
TW202343291A (zh) | 防止抗重放攻擊之方法 | |
WO2023136829A1 (en) | Firmware authentication | |
JP2023026017A (ja) | 起動検証プログラム、情報処理装置および起動検証方法 |