安全啟動期間的密鑰提取的製作方法
2023-04-25 20:52:16 1

本申請案主張2014年1月22日在美國專利商標局申請的美國非臨時專利申請案第14/161,185號的優先權及權益,所述美國非臨時專利申請案的全部內容以引用的方式併入本文中。
技術領域
各種特徵一般涉及安全加密密鑰提取及存儲,且更確切地說,涉及基於易失性存儲器的物理不可克隆特徵而在安全啟動過程期間提取及存儲秘密加密密鑰。
背景技術:
許多電子通信裝置(例如行動電話、平板計算機及計算機)包含裝置專有的加密密鑰(或從此類密鑰導出的密鑰),其可用於電子通信裝置處的密碼安全過程。例如,僅裝置及可能另一受信任的實體(例如,向裝置提供通信服務的蜂窩式網絡認證伺服器)已知的裝置專有的密鑰用於導出隨後用於對由所述裝置傳輸的通信消息進行加密的密鑰(例如,公用-私用密鑰對)。保護裝置專有的密鑰以不讓其它方及/或應用未授權的存取是最重要的,以便更好地保證由所述裝置及/或通信網絡採用的密碼安全協議的完整性。
圖1說明可在電子通信裝置中發現的現有技術集成電路(IC)100的示意框圖。IC 100包含啟動加載器102、用戶應用104及非易失性存儲器電路106,所述非易失性存儲器電路又存儲可對於具有IC 100的裝置是唯一的加密密鑰108。在IC 100通電時,IC 100檢索並執行初始化IC 100的各種方面的啟動加載器。在IC 100完成其啟動過程之後,可執行用戶應用104(例如,高層級作業系統(HLOS)、在此類HLOS上運行的應用等)。啟動加載器102及用戶應用104可具有對密鑰108的直接存取權。例如,用戶應用可從非易失性存儲器106檢索密鑰108且使用其導出用於加密過程的額外密鑰。
此外,由於存儲密鑰108的存儲器電路106是非易失性存儲器,所以密鑰108存儲在IC 100中(並且因此理論上可存取),而不管IC 100是斷電還是通電。此使密鑰108更易受攻擊。例如,集成電路100封裝的頂部可物理地打開且電子顯微鏡可用於分析用於 存儲密鑰108的電路(例如,熔絲)。這樣做可顯露密鑰108且損害裝置的安全性。
需要提供密鑰提取/產生及存儲中的增加的安全性以幫助阻止對此類密鑰的未授權的訪問的方法和設備。密鑰提取/產生及存儲中的提高的安全性幫助增加依賴於此類密鑰的密碼算法及過程中的可信度及可靠性。
技術實現要素:
一個特徵提供在集成電路處操作的方法,所述方法包括:將第一易失性存儲器電路通電以產生多個初始邏輯狀態值,所述第一易失性存儲器電路在集成電路上;基於所述多個初始邏輯狀態值而導出秘密數據;將所述秘密數據存儲在安全易失性存儲器電路中,所述安全易失性存儲器電路由安全執行環境(SEE)保護;清除所述第一易失性存儲器電路中的所述多個初始邏輯狀態值;在SEE處執行密碼算法以基於所述秘密數據而提取秘密密鑰;及將所述秘密密鑰存儲在安全易失性存儲器電路中。根據一個方面,所述方法是集成電路的安全啟動流,其控制對第一易失性存儲器電路的存取以保護秘密數據及多個初始邏輯狀態值不讓一或多個不安全應用存取。根據另一方面,所述安全啟動流通過直到至少在已經清除第一易失性存儲器電路中的多個初始邏輯狀態值之後才使第一易失性存儲器電路可由一或多個不安全應用存取而保護秘密數據及多個初始邏輯狀態值不讓一或多個不安全應用存取。
根據一個方面,安全啟動流包含主要啟動加載器、第一次要啟動加載器及第二次要啟動加載器,且安全啟動流通過在第一次要啟動加載器執行之前讓主要啟動加載器認證第一次要啟動加載器、第一次要啟動加載器在第二次要啟動加載器執行之前認證第二次要啟動加載器且第二次要啟動加載器認證SEE而建立信任鏈,且其中在安全啟動流期間且在執行一或多個不安全應用之前在安全易失性存儲器電路中提取及存儲所述秘密密鑰。根據另一方面,將第一易失性存儲器電路復位會致使執行安全啟動流。根據另一個方面,所述秘密數據是多個初始邏輯狀態值。
根據一個方面,在清除第一易失性存儲器電路之後,第一易失性存儲器電路可用於一或多個不安全應用的數據存儲。根據另一方面,第一易失性存儲器電路是靜態隨機存取存儲器(SRAM)。根據另一個方面,SEE阻止不安全應用存取安全易失性存儲器電路。
根據一個方面,所述多個初始邏輯狀態值在每次第一易失性存儲器電路被通電時大體上相同。根據另一方面,所述密碼算法是基於塊碼算法、擴展碼算法及/或重複碼算法中的至少一者。根據另一個方面,所述方法進一步包括在將秘密數據存儲在安全易失性存儲器電路中之前將秘密數據存儲在第二易失性存儲器電路中,且在將秘密數據存儲在 安全易失性存儲器電路中之後清除存儲在第二易失性存儲器電路中的秘密數據。
根據一個方面,在清除存儲在第二易失性存儲器電路中的秘密數據之後,第二易失性存儲器電路可用於一或多個不安全應用的數據存儲。根據另一方面,SEE通過使秘密密鑰不可由不安全應用存取而控制對所述秘密密鑰的存取,且所述方法進一步包括從SEE處的不安全應用接收對次要密鑰及/或公用數據中的至少一者的請求;基於所述秘密密鑰而在SEE處產生次要密鑰及/或公用數據;及將所述次要密鑰及/或所述公用數據提供給請求所述次要密鑰及/或所述公用數據的不安全應用。根據另一個方面,基於由不安全應用提供的秘密密鑰及其它數據而產生所述次要密鑰及/或所述公用數據。根據另一方面,在SEE處執行的基於秘密數據而提取秘密密鑰的密碼算法進一步基於存儲在非易失性存儲器電路中的輔助數據。
另一特徵提供一種集成電路,其包括:第一易失性存儲器電路,其經配置以在通電之後產生多個初始邏輯狀態值;安全易失性存儲器電路,其由安全執行環境(SEE)保護;及處理電路,其通信地耦合到所述第一易失性存儲器電路及所述安全易失性存儲器電路,所述處理電路經配置以:基於所述多個初始邏輯狀態值而導出秘密數據;將所述秘密數據存儲在所述安全易失性存儲器電路中;清除所述第一易失性存儲器電路中的所述多個初始邏輯狀態值;在所述SEE處執行密碼算法以基於所述秘密數據而提取秘密密鑰;及將所述秘密密鑰存儲在所述安全易失性存儲器電路中。根據一個方面,所述處理電路通過以下操作執行安全啟動流:(i)導出所述秘密數據;(ii)存儲所述秘密數據;(iii)清除所述多個初始邏輯狀態值;(iv)執行所述密碼算法;及(v)存儲所述秘密密鑰,且其中所述安全啟動流控制對所述第一易失性存儲器電路的存取以保護所述秘密數據及所述多個初始邏輯狀態值不讓一或多個不安全應用存取。
根據一個方面,所述處理電路進一步經配置以在將所述秘密數據存儲在所述安全易失性存儲器電路中之前將所述秘密數據存儲在第二易失性存儲器電路中,且在將所述秘密數據存儲在所述安全易失性存儲器電路中之後清除存儲在所述第二易失性存儲器電路中的所述秘密數據。根據另一方面,所述SEE通過使秘密密鑰不可由不安全應用存取而控制對所述秘密密鑰的存取,且其中所述處理電路進一步經配置以:從SEE處的不安全應用接收對次要密鑰及/或公用數據中的至少一者的請求;基於所述秘密密鑰在SEE處產生所述次要密鑰及/或所述公用數據;及將所述次要密鑰及/或所述公用數據提供給請求所述次要密鑰及/或所述公用數據的所述不安全應用。
另一特徵提供一種集成電路,其包括:用於將第一易失性存儲器電路通電以產生多個初始邏輯狀態值的裝置,所述第一易失性存儲器電路在集成電路上;用於基於所述多 個初始邏輯狀態值而導出秘密數據的裝置;用於將所述秘密數據存儲在安全易失性存儲器電路中的裝置,所述安全易失性存儲器電路由安全執行環境(SEE)保護;用於清除所述第一易失性存儲器電路中的所述多個初始邏輯狀態值的裝置;用於在SEE處執行密碼算法以基於所述秘密數據而提取秘密密鑰的裝置;及用於將所述秘密密鑰存儲在安全易失性存儲器電路中的裝置。
另一特徵提供一種具有存儲在其上的一或多個指令的計算機可讀存儲媒體,所述一或多個指令在被至少一個集成電路執行時導致所述集成電路:將第一易失性存儲器電路通電以產生多個初始邏輯狀態值,所述第一易失性存儲器電路在集成電路上;基於所述多個初始邏輯狀態值而導出秘密數據;將所述秘密數據存儲在安全易失性存儲器電路中,所述安全易失性存儲器電路由安全執行環境(SEE)保護;清除所述第一易失性存儲器電路中的所述多個初始邏輯狀態值;在SEE處執行密碼算法以基於所述秘密數據而提取秘密密鑰;及將所述秘密密鑰存儲在安全易失性存儲器電路中。根據一個方面,所述一或多個指令是用於集成電路的安全啟動流,其在由所述集成電路執行時致使控制對第一易失性存儲器電路的存取以通過直到至少在已經清除第一易失性存儲器電路中的多個初始邏輯狀態值之後才使第一易失性存儲器電路可由一或多個不安全應用存取而保護秘密數據及多個初始邏輯狀態值不讓一或多個不安全應用存取。
附圖說明
圖1說明可在電子通信裝置中發現的現有技術集成電路(IC)的示意框圖。
圖2說明IC的高級示意框圖。
圖3說明易失性存儲器電路的示意框圖。
圖4說明安全執行環境的示意框圖。
圖5說明安全啟動流階層。
圖6說明以提取及存儲秘密密鑰的安全啟動流為特徵的IC。
圖7(包括圖7A及7B)說明描繪致使集成電路提取及存儲秘密密鑰的安全啟動流的流程圖。
圖8說明集成電路處操作的方法。
圖9說明本文中描述的IC的處理電路的示意框圖。
具體實施方式
在以下描述中,給出具體細節以提供對本發明的各種方面的徹底理解。然而,所屬 領域的技術人員將理解,可在沒有這些特定細節的情況下實踐所述方面。舉例來說,可以框圖展示電路以便避免以不必要的細節混淆所述方面。在其它情況下,可不詳細展示眾所周知的電路、結構和技術以便不混淆本發明的方面。
詞語「示範性」在本文中用於意指「充當實例、例子或說明」。本文中描述為「示範性」的任何實施或方面未必應解釋為比本發明的其它方面優選或有利。同樣,術語「方面」不要求本發明的所有方面包含所論述的特徵、優點或操作模式。
概述
本文中描述在集成電路的安全啟動流期間提取秘密密鑰的方法和設備。具體來說,所述安全啟動流包含:將第一易失性存儲器電路通電以產生多個初始邏輯狀態值;基於所述多個初始邏輯狀態值而導出秘密數據;將所述秘密數據存儲在安全易失性存儲器電路中,所述安全易失性存儲器電路由安全執行環境(SEE)保護;清除所述第一易失性存儲器電路中的所述多個初始邏輯狀態值;在SEE處執行密碼算法以基於所述秘密數據而提取秘密密鑰;及將所述秘密密鑰存儲在安全易失性存儲器電路中。所述安全啟動流控制對第一易失性存儲器電路的存取以通過直到至少在已經清除第一易失性存儲器電路中的多個初始邏輯狀態值之後才使第一易失性存儲器電路可由不安全應用存取而保護秘密數據及多個初始邏輯狀態值不讓一或多個不安全應用存取。此外,如果將第一易失性存儲器電路復位,那麼再次起始所述安全啟動流,且因此第一易失性存儲器電路的初始邏輯狀態值不可由不安全應用使用。
IC安全啟動期間的示範性密鑰提取
圖2說明根據本發明的一個方面的集成電路(IC)200的高級示意框圖。IC 200可例如為包含處理電路、存儲器電路等的處理器,且可在電子通信裝置中找到,所述電子通信裝置例如但不限於行動電話、計算機、平板計算機、手錶等。IC 200可包含資源電力管理(RPM)電路201、安全啟動加載器電路202、處理電路203、不安全應用204、易失性存儲器電路206及安全執行環境(SEE)208。易失性存儲器電路206包含物理不可克隆功能(PUF)210,且SEE 208包含安全易失性存儲器電路212。
此外,RPM電路201將電力供應到IC 200的各種電路及組件。例如,RPM電路201可控制供應到處理電路203、易失性存儲器電路206及/或安全易失性存儲器電路212的電力。RPM電路201表示用於將第一易失性存儲器電路通電以產生多個初始邏輯狀態值的裝置的一個實例。
在IC 200通電之後,IC 200通過使處理電路203獲得並執行安全啟動加載器(例如,安全啟動代碼)202而經歷/執行安全啟動過程(在本文中也被稱作「安全啟動流」)。安全 啟動加載器202可存儲在存儲器電路中,所述存儲器電路例如但不限於只讀存儲器(ROM)及/或其它非易失性存儲器。所述安全啟動加載器202初始化IC 200的各種模塊且執行其它基礎操作以便使IC 200準備用於正常操作。
根據本發明的一個方面,易失性存儲器電路206包含一或多個靜態隨機存取存儲器(SRAM)電路,其各自包含多個SRAM電路單元。根據其它方面,易失性存儲器電路206不限於SRAM且可基於其它類型的易失性存儲器,例如嵌入式動態隨機存取存儲器(eDRAM)。易失性存儲器電路206的一部分(即,若干易失性存儲器單元)可形成物理不可克隆功能(PUF)的基礎。
晶片上PUF是採用集成電路(IC)內部的製造工藝變化的晶片唯一的挑戰-響應機構。當向PUF施加物理刺激(即,挑戰)時,PUF由於刺激與採用PUF的裝置的物理微觀結構的複雜交互而以不可預測但可重複的方式產生響應。此確切微觀結構取決於在採用PUF的裝置的製造期間引入的不可預測的物理因素。PUF的「不可克隆性」意指採用PUF的每個裝置具有將挑戰映射到響應的唯一的且不可預測的方式,即使一個裝置以與另一表面相同裝置相同的過程製造。因此,以與另一裝置的PUF相同的挑戰-響應行為構造PUF實際上是不可行的,因為對製造工藝的準確控制是不可行的。
在本發明中,易失性存儲器電路206是一種類型的易失性存儲器(例如,SRAM),其中包括易失性存儲器電路206的每一電路單元在起動時(即,在通電時)自然地初始化為初始優選邏輯狀態值(例如,「0」或「1」)。例如,SRAM在通電時具有此特性。電路單元的初始邏輯狀態值是可重複的,原因在於每一易失性存儲器單元每次在起動時以高概率初始化為同一值。然而,電路單元的初始邏輯狀態值在IC之間是隨機的,即使製造為相同IC也如此。因此,歸因於製造工藝變化,每一集成電路的易失性存儲器電路206(即使製造為相同)將展現不同的可重複的初始值,使得在IC之間初始的易失性存儲器電路啟動值在跨越不同IC的同一存儲器地址位置處是不同的。因此,每一IC 200具有基於其易失性存儲器電路的單元的初始通電狀態而具有唯一但可重複的識別符的易失性存儲器電路206(例如,SRAM電路)。
用作PUF 210的基礎的易失性存儲器電路206的易失性存儲器單元的部分/數目可取決於應用而變化。根據一個實例,易失性存儲器電路206的8千字節部分可包括PUF 210。然而,實際上用於PUF 210的存儲器的量可為任何值,例如但不限於512位元組、1千字節、2千字節、4千字節、8千字節、16千字節等。整個易失性存儲器電路206的大小通常大於用於PUF 210的部分。僅作為一個實例,易失性存儲器電路206可為384千字節。然而,易失性存儲器電路206可為任何大小,例如但不限於64千字節、128千字節、 256千字節、384千字節、512千字節、768千字節、1,024千字節、2,048千字節等。
如上文所描述,在易失性存儲器電路206通電時,其存儲器電路單元各自基於單元當中的微小製造變化而穩定到起初優選的邏輯狀態值。用作PUF 210的存儲器的部分並非不同:其存儲器單元起初也將穩定到優選初始邏輯狀態值。在此意義上,PUF挑戰可被視為將PUF 210的易失性存儲器電路單元通電,且響應是其存儲器電路單元的初始邏輯狀態值。
一旦PUF 210的存儲器電路單元已穩定到它們的初始邏輯狀態值,安全啟動加載器202便可基於初始邏輯狀態值而導出秘密數據。根據一個方面,所述秘密數據可等於初始邏輯狀態值。根據另一方面,可基於初始邏輯狀態值的某一函數導出秘密數據。秘密數據所基於的所述函數的一些非限制性實例包含但不限於:秘密數據等於初始邏輯狀態值的每隔一個(或每隔多個)位;秘密數據等於基於對初始邏輯狀態值執行的一或多個數學運算(加法、減法、級聯等)的值等。安全啟動加載器202隨後將所述秘密數據存儲在由SEE 208控制的安全易失性存儲器電路212中。接下來,安全啟動加載器202清除/刪除它們的初始邏輯狀態值的PUF 210的存儲器電路單元。這可通過將邏輯狀態「0」或「1」寫入到所有PUF 210的存儲器電路單元或通過隨機改變它們的邏輯狀態值(隨機的「0」或「1」)而實現。以類似方式,安全啟動加載器202還清除/刪除可能已經臨時存儲在安全易失性存儲器電路212外部的其它地方的秘密數據中的任一者。一旦被清除,最初存儲初始邏輯狀態值的存儲器電路單元可自由地在需要時用於一般數據存儲。例如,在加載及執行高級作業系統(HLOS)及用戶應用時,它們可使用這些被清除的存儲器電路單元。
因此,安全啟動加載器202表示用於基於多個初始邏輯狀態值而導出秘密數據的裝置的一個實例。安全啟動加載器202還表示用於將秘密數據存儲在安全易失性存儲器電路212中的裝置的一個實例。此外,安全啟動加載器202表示用於清除第一易失性存儲器電路206中的多個初始邏輯狀態值的裝置的一個實例。
SEE 208是IC 200的安全操作模式。例如,SEE 208可包括特定硬體模塊及電路(例如控制邏輯、總線及在IC 200的不安全操作模式中運行的其它應用不可用的存儲器電路)且具有對其的存取權。SEE 208可具有對其安全易失性存儲器電路212的整個控制及存取,使得其它應用(例如,用戶應用、HLOS及甚至一些或所有類型的啟動加載器)不可存取(例如,讀取及/或寫入)安全易失性存儲器電路212。
SEE 208(例如,使用其自身的控制邏輯)接著可基於存儲在其安全易失性存儲器電路212中的秘密數據而提取秘密密鑰(例如,產生秘密密鑰)。SEE 208使用密碼安全算法實 現此。所使用的算法不限於任何一個特定類型的算法或算法族。一些非限制性實例包含塊碼算法、擴展碼算法及/或重複碼算法。在一個實例中,除了秘密數據之外,輔助數據可由所述算法使用以提取秘密密鑰。輔助數據可存儲在可由不安全應用存取的不安全存儲器中。即,不要求輔助數據安全地存儲,因為其自身暴露不會危及秘密密鑰及/或第一易失性存儲器電路206的初始邏輯狀態值的安全性。
由於基於易失性存儲器(例如,SRAM)的PUF 210在通電之後提供大體上相同的初始邏輯狀態值,所以SEE的密碼算法能夠每次提取相同的秘密密鑰。密碼算法可使用錯誤校正技術來提取相同的秘密密鑰,即使一些初始邏輯狀態值在不同的通電循環之間是不同的。所提取的秘密密鑰對於特定IC 200是唯一的,因為PUF 210的初始邏輯狀態值跨越不同的IC 200是不同的,即使IC被製造為相同也如此。
SEE 208存儲在安全易失性存儲器(例如,圖2中展示的安全易失性存儲器電路212)中提取的秘密密鑰,且因此不安全應用(例如,HLOS、用戶應用及/或一些次要啟動加載器等)204無法存取由SEE 208存儲及保護的秘密密鑰。而是,不安全應用204可向SEE 208作出請求以基於秘密密鑰而提供加密數據及/或公用數據(例如,可公開揭露的數據)。例如,SEE 208可基於秘密密鑰而產生加密數據(例如但不限於一或多個次要密鑰或密鑰對)且將那些次要密鑰提供給不安全應用204。SEE還可基於秘密密鑰而產生公用數據(例如但不限於裝置序列號)且將所述公用數據提供給不安全應用204。加密數據及公用數據兩者可在本文中被稱作「SEE輸出數據」。
此外,由於秘密密鑰僅存儲在安全易失性存儲器212中,所以在IC 200斷電時會丟失秘密密鑰。必須再次在通電之後基於PUF 210的初始邏輯狀態值重新提取所述秘密密鑰,如上文所描述。通過物理地打開IC 200且檢查存儲器電路而嘗試得到對秘密密鑰的未經授權的存取的邪惡方將不能夠獲得所述密鑰,因為其不存儲在非易失性存儲器中。
根據一個方面,IC 200及/或易失性存儲器電路206經設計成使得在復位(即,斷電及通電及/或返回到其初始狀態)之後,立即執行安全啟動流(例如,也將IC 200復位)。根據一個方面,RPM電路201可自行將易失性存儲器電路206復位。因此,不安全應用204無法將PUF 210及/或易失性存儲器電路206復位且得到對PUF 210的初始邏輯狀態值的存取權。將IC 200復位將終止不安全應用204運行且致使安全啟動流再次開始。
根據一個方面,可以各種方式選擇構成PUF 210的特定易失性存儲器電路單元。根據一個實例,PUF 210存儲器單元可為出於可靠性(即,在通電之後產生一致的邏輯狀態值的增加的可能性)而選擇的存儲器電路單元的鄰接塊。根據另一實例,PUF 210存儲器單元可彼此不鄰接,且甚至是從易失性存儲器電路206的各個部位隨機選擇。然而,一 旦選擇構成PUF 210的特定易失性存儲器電路單元,同一特定易失性存儲器電路單元每次在通電時被再次選擇為PUF 210的基礎。
雖然易失性存儲器電路206及安全易失性存儲器電路212在圖2中展示為獨立的電路塊,但根據一個方面,它們可為一個物理易失性存儲器電路的一部分。例如,安全易失性存儲器電路212可為由SEE 208攤派及保護的易失性存儲器電路206的一部分。然而,根據另一方面,兩個存儲器電路206、212可為定位在同一IC 200上的不同存儲器電路。
圖3說明根據本發明的一個方面的易失性存儲器電路206的示意框圖。易失性存儲器電路206可包含多個存儲器模塊/電路210、302、304、306,其各自包括多個易失性存儲器電路單元。根據一個實例,易失性存儲器模塊/電路206、302、304、306是SRAM模塊/電路,其各自包括多個SRAM電路單元。易失性存儲器電路206包含PUF存儲器電路210(本文中還被稱作「第一易失性存儲器電路」)。所有存儲器電路210、302、304、306可用於存儲一般的數據及代碼(例如,存儲與用戶應用、次要啟動加載器代碼及/或HLOS相關的代碼)。然而,根據一個方面,PUF存儲器電路210的初始邏輯狀態值應該在存儲器電路210用於一般數據存儲之前首先被清除。如下文將相對於圖6及7更詳細地解釋,PUF存儲器電路210的初始邏輯狀態值及/或從所述初始邏輯狀態值導出的秘密數據可首先存儲在第二易失性存儲器電路302(本文中也可被稱作「保留的易失性存儲器電路」)中,之後清除PUF存儲器電路210。
圖4說明根據本發明的一個方面的SEE 208的示意框圖。SEE 208可包含安全易失性存儲器電路212、控制電路402及允許SEE 208的組件(例如安全易失性存儲器電路212及控制電路402)之間的通信的安全總線線路404。控制電路402是僅可由SEE 208而不可由不安全應用(例如用戶應用、HLOS及/或一些次要啟動加載器)存取及利用的控制邏輯。控制電路402可控制如何將數據存儲及複製到安全易失性存儲器電路212及從所述安全易失性存儲器電路讀取數據。控制電路402還可基於從PUF 210的初始邏輯狀態值導出的秘密數據且在一些情況下基於額外輔助數據而執行本文中論述的提取秘密密鑰的密碼算法(參看圖2)。控制電路402可進一步基於秘密密鑰而產生額外次要密鑰及/或公用數據。因此,SEE控制電路402表示用於在SEE處執行密碼算法以基於秘密數據而提取秘密密鑰的裝置的一個實例。
安全易失性存儲器電路212包含一或多個安全易失性存儲器電路,其各自包括多個存儲器單元。安全易失性存儲器電路212可為任何類型的易失性存儲器,例如但不限於eDRAM、SRAM等。安全易失性存儲器電路212存儲秘密數據並且還存儲由控制邏輯 402部分基於秘密數據而提取的秘密密鑰。SEE 208執行對安全易失性存儲器電路212的完全控制,使得其它應用(例如,不安全應用)無法存取安全易失性存儲器電路212。例如,SEE 208可物理地下鎖(展示為停用總線邏輯406)將安全易失性存儲器電路212耦合到IC 200的其它不安全電路的任何總線408線路。
圖5說明根據本發明的一個方面的安全啟動流500階層。可由IC 200(例如,其處理電路203)執行的安全啟動流500可部分由安全啟動加載器501且部分由不安全應用加載器503構成。安全啟動加載器501可包含主要啟動加載器(PBL)502、第一次要啟動加載器(SBL1)504及第二次要啟動加載器(SBL2)506。由安全啟動加載器501執行的代碼被視為「安全的」,原因在於沒有未授權用戶代碼(例如,HLOS、用戶應用等)可在啟動過程的此部分期間執行及/或注入。因此,幾乎沒有以下風險:與PUF 210(參看圖2)的初始邏輯狀態值相關的信息、從此類初始邏輯狀態值導出的秘密數據及/或基於秘密數據而提取的秘密密鑰在安全啟動流500的此部分期間將受到損害/洩漏給未經授權的應用。
不安全應用加載器503可包含第三次要啟動加載器(SBL3)508、應用次要啟動加載器510、HLOS 512及用戶應用514。不安全應用加載器503被視為「不安全的」,原因在於可在這些加載器508、510、512、514中的一或多者的執行及/或認證期間執行及/或注入未授權用戶的代碼。
參考圖2及5,在IC 200通電之後,安全啟動流500開始執行主要啟動加載器502,其執行IC 200的最初始及基礎任務中的一些,包含IC 200的各種電路及模塊的初始化。PBL 502可被硬連線(例如,存儲在ROM中)且因此非常安全,因為其實際上不可更改。PBL 502還在執行SBL1 504之前加載並認證SBL1 504。在認證SBL1 504之後,SBL1 504執行且可尤其基於易失性存儲器電路206的初始邏輯狀態值而導出秘密數據且將秘密數據存儲到IC 200內的其它存儲器電路。SBL1 504還可:初始化RPM電路201;配置IC 200系統時鐘且發布復位;及在執行SBL2 506之前加載並認證SBL2 506。
在SBL2 506被認證之後,SBL2 506執行且可尤其將秘密數據從不安全存儲器電路複製到安全易失性存儲器電路212。SBL2 506還可:初始化IC 200的一或多個處理電路(例如,處理電路203);配置IC 200外部的存儲器電路(例如,外部DRAM及/或SRAM);及加載並認證SEE 208、其它固件及/或SBL3 508。在認證SBL3 508之後,SBL3 508執行且可尤其檢查用於軟體快閃的存儲模式。SBL3 508還可加載並認證HLOS 512及/或應用次要啟動加載器510。以類似方式,以連續次序(例如應用次要啟動加載器510、HLOS 512及用戶應用514)加載、認證及執行後續啟動過程。加載及執行這些過程502、504、506、508、510、512的次序可與圖5中展示的不同。此外,圖5中展示的次要啟動加載 器及其它應用代碼的數目及類型僅具說明性/示範性。例如,在本發明的其它方面中,更多或更少的次要啟動加載器可包括安全啟動流500。
圖6說明根據本發明的一個方面的以本文中描述的提取及存儲秘密密鑰的安全啟動流為特徵的IC 600。IC 600可包括RPM電路201、處理電路(例如,應用處理器)203、安全啟動加載器501、不安全應用啟動加載器503、易失性存儲器電路206、SEE 208及/或非易失性存儲器電路604。安全啟動加載器501可包含PBL 502、SBL1 504及/或SBL2。不安全應用啟動加載器503可包含在SBL2 506之後執行的安全啟動流500的部分的啟動加載器(參看圖5)。例如,不安全應用啟動加載器503可包含SBL3 508、應用次要啟動加載器510、HLOS代碼512及/或用戶應用514。易失性存儲器電路206包含第一易失性存儲器電路210(即,PUF)及第二/保留的易失性存儲器電路302。SEE 208包含SEE控制電路402及安全易失性存儲器電路212。安全易失性存儲器電路212包含經配置以存儲從PUF的初始邏輯狀態值導出的秘密數據的第一安全易失性存儲器電路608,及經配置以存儲秘密密鑰的第二安全易失性存儲器電路610。
非易失性存儲器電路604包含輔助數據606。根據一個實例,非易失性存儲器電路604是IC 600的部分(即,其在「晶片上」)。根據另一實例,非易失性存儲器電路604不是IC 600的部分且是與IC 600通信的單獨電路(即,其在「晶片外」)。輔助數據606中的一些或全部可不安全,原因在於其可由不安全應用存取。第一安全易失性存儲器電路608表示用於將秘密數據存儲在安全易失性存儲器電路中的裝置的一個實例,且第二安全易失性存儲器電路610表示用於將秘密密鑰存儲在安全易失性存儲器電路中的裝置的一個實例。
圖7(包括圖7A及7B)說明描繪根據一個方面的致使集成電路600提取及存儲秘密密鑰的安全啟動流的流程圖700。參考圖6及7,在IC 600通電之後,將電力供應到易失性存儲器電路206,包含第一易失性存儲器電路210(即,用於PUF的存儲器的部分)。如上文相對於圖2所描述,易失性存儲器電路206是一種類型的易失性存儲器,例如SRAM,其存儲器電路單元將通常歸因於對於每一單元是唯一的製造細節而在通電時各自起初穩定到優選邏輯狀態。初始邏輯值大體上可重複,使得在起動(即,通電)時,大部分單元將每次穩定到相同值。因此,在通電時,包含用於PUF的第一易失性存儲器電路210的易失性存儲器電路206穩定到初始邏輯狀態值702。
接下來,第一次要啟動加載器(SBL1)504定位易失性存儲器電路206的存儲器電路單元,將使用其初始邏輯狀態值(即,標示第一易失性存儲器電路210的存儲器的部分),且基於那些初始邏輯狀態值而導出秘密數據704。如上文所描述,秘密數據可等於初始 邏輯狀態值,或可基於初始邏輯狀態值的某一函數而導出秘密數據。在導出秘密數據之後,SBL1 504將秘密數據存儲在易失性存儲器電路的第二(即,保留的)存儲器部分302中706。隨後,SBL1 504清除第一易失性存儲器電路210的初始邏輯狀態值,使得後續過程/應用(例如,不安全應用)在那些存儲器地址位置處可找不到初始邏輯狀態值的跡線。一旦被清除,第一易失性存儲器電路210可用於一般數據存儲(即,任何後續過程/應用可使用所述第一易失性存儲器電路210)708。
接下來,第二次要啟動加載器(SBL2)506將存儲在第二存儲器部分302中的秘密數據複製/傳遞到SEE 208的安全易失性存儲器電路212。例如,安全數據可存儲在第一安全易失性存儲器電路608處。SBL2 506隨後清除易失性存儲器電路206的第二存儲器部分302及/或清除整個易失性存儲器電路206,以便消除易失性存儲器電路206中的秘密數據的任何跡線。一旦被清除,保留的存儲器部分302可用於一般數據存儲(即,任何後續過程/應用可使用所述保留的存儲器部分302)712。
此外,SEE 208隨後基於秘密數據而提取秘密密鑰。例如,SEE 208處的控制邏輯電路402獲得存儲在第一安全易失性存儲器電路608處的秘密數據及存儲在非易失性存儲器電路604處的輔助數據606。在獲得此數據之後,控制電路402將輔助數據606及秘密數據用作輸入而執行密碼算法(例如,塊碼算法、擴展碼算法、重複碼算法等中的至少一者)以提取秘密密鑰。所述密碼算法可包含錯誤校正技術以提取相同的秘密密鑰,儘管在啟動之間在秘密數據及/或初始邏輯狀態值之間存在一些差異也如此。秘密密鑰也存儲在安全易失性存儲器212(例如,第二安全易失性存儲器電路610)中714。
由於秘密密鑰在SEE 208的控制內安全地存儲在安全易失性存儲器電路212處,所以其它不安全應用無法存取秘密密鑰。此類不安全應用可基於秘密密鑰而將對SEE輸出數據(例如,如上文所描述,包含加密數據及/或公用數據)716的請求發送到SEE 208。SEE 208處的控制邏輯電路402接著可基於秘密密鑰而產生SEE輸出數據且將SEE輸出數據提供給請求的不安全應用718。
由於秘密密鑰僅存儲在安全易失性存儲器212中,所以在IC 600斷電時會丟失秘密密鑰。必須再次在通電之後通過安全啟動流700基於PUF 210的初始邏輯狀態值重新提取所述秘密密鑰,如上文所描述。通過物理地打開IC 600且檢查存儲器電路而嘗試得到對秘密密鑰的未經授權的存取的邪惡方將不能夠獲得所述密鑰,因為其不存儲在非易失性存儲器中。
根據一個方面,IC 600及/或易失性存儲器電路206經設計以使得在復位之後,立即執行(例如,也將IC 600復位)安全啟動流700。根據一個方面,RPM電路201可自行將 易失性存儲器電路206復位。因此,不安全應用無法將PUF 210及/或易失性存儲器電路206復位且得到對PUF 210的初始邏輯狀態值的存取權。將IC 600復位將終止不安全應用運行且致使安全啟動流700再次開始。
根據一個方面,可以各種方式選擇構成PUF 210的特定易失性存儲器電路單元。根據一個實例,PUF 210存儲器單元可為出於可靠性(即,在通電之後產生一致的邏輯狀態值的增加的可能性)而選擇的存儲器電路單元的鄰接塊。根據另一實例,PUF 210存儲器單元可彼此不鄰接,且甚至是從易失性存儲器電路206的各個部位隨機選擇。然而,一旦選擇構成PUF 210的特定易失性存儲器電路單元,同一特定易失性存儲器電路單元每次在通電時被再次選擇為PUF 210的基礎。
圖8說明根據本發明的一個方面的在集成電路處操作的方法800。首先,將第一易失性存儲器電路通電以產生多個初始邏輯狀態值,其中所述第一易失性存儲器電路在集成電路上802。接下來,基於多個初始邏輯狀態值而導出秘密數據804。隨後,秘密數據存儲在安全易失性存儲器電路中,其中通過安全執行環境(SEE)保護安全易失性存儲器電路806。接下來,在第一易失性存儲器電路中清除多個初始邏輯狀態值808。隨後,在SEE處執行密碼算法以基於秘密數據而提取秘密密鑰810。也將秘密密鑰存儲在安全易失性存儲器電路中812。根據一個方面,可提取及存儲秘密密鑰(即,步驟810、812),之後清除第一易失性存儲器電路中的多個初始邏輯狀態值(步驟808)。
圖9說明根據本發明的一個方面的IC 200、600的處理電路203的示意框圖。處理電路203可包含秘密數據導出電路902、清除電路904及/或密碼算法電路906。
參考圖2、6、8及9,秘密數據導出電路902是用於基於多個初始邏輯狀態值而導出秘密數據的裝置的一個實例。清除電路904是用於清除第一易失性存儲器電路206中的多個初始邏輯狀態值的裝置的一個實例。密碼算法電路906是用於在SEE 208處執行密碼算法以基於秘密數據而提取秘密密鑰的裝置的一個實例。
圖2、3、4、5、6、7A、7B、8及9中所說明的組件、步驟、特徵及/或功能中的一或多者可經重新布置及/或組合為單個組件、步驟、特徵或功能,或體現在若干組件、步驟或功能中。在不脫離本發明的情況下,還可以添加額外的元件、組件、步驟及/或功能。圖2、3、4、6、及/或9中所說明的設備、裝置及/或組件可經配置以執行圖5、7A、7B及/或8中所描述的方法、特徵或步驟中的一或多者。本文中所描述的算法也可以有效地實施於軟體中及/或嵌入於硬體中。
此外,在本發明的一個方面中,圖2、6及/或9中說明的處理電路203可為專用處理器(例如,專用集成電路(例如,ASIC)),其特定經設計及/或硬連線以執行圖5、7A、 7B及/或8中描述的算法、方法及/或步驟。因此,此類專用處理器(例如,ASIC)可為用於執行圖5、7A、7B及/或8中描述的算法、方法及/或步驟的裝置的一個實例。
此外,應注意,可以將本發明的各方面描述為過程,所述過程被描繪為流程圖、流圖、結構圖或框圖。儘管流程圖可將操作描述為連續過程,但許多操作可並行或同時執行。另外,可以重新布置操作的順序。過程在其操作完成時終止。過程可以對應於方法、功能、程序、子例程、子程序等。當過程對應於函數時,其終止對應於函數返回到調用函數或主函數。
此外,存儲媒體可表示用於存儲數據的一或多個裝置,包含只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁碟存儲媒體、光學存儲媒體、快閃記憶體裝置和/或其它機器可讀媒體;以及用於存儲信息的處理器可讀媒體和/或計算機可讀媒體。術語「機器可讀媒體」、「計算機可讀媒體」及/或「處理器可讀媒體」可包含(但不限於)非暫時性媒體,例如可攜式或固定存儲裝置、光學存儲裝置,及能夠存儲或含有指令及/或數據的各種其它媒體。因此,本文中描述的各種方法可完全或部分地由可存儲在「機器可讀媒體」、「計算機可讀媒體」及/或「處理器可讀媒體」中且由一或多個處理器、機器及/或裝置執行的指令及/或數據來實施。
此外,本發明的各方面可以由硬體、軟體、固件、中間件、微碼或其任何組合實施。當以軟體、固件、中間件或微碼實施時,用以執行必要任務的程序代碼或代碼段可存儲在例如存儲媒體或其它存儲裝置等機器可讀媒體中。處理器可以執行必要任務。代碼段可以表示過程、函數、子程序、程序、例程、子例程、模塊、軟體包、類,或指令、數據結構或程序語句的任意組合。代碼段可以通過傳遞和/或接收信息、數據、自變量、參數或存儲器內容而耦合到另一代碼段或硬體電路。信息、自變量、參數、數據等可以經由包含存儲器共享、消息傳遞、令牌傳遞、網絡傳輸等任何合適的方式傳遞、轉發或傳輸。
結合本文中揭示的實例描述的各種說明性邏輯塊、模塊、電路、元件及/或組件可以用通用處理器、數位訊號處理器(DSP)、專用集成電路(ASIC)、現場可編程門陣列(FPGA)或其它可編程邏輯組件、離散門或電晶體邏輯、離散硬體組件或其經設計以執行本文中描述的功能的任何組合來實施或執行。通用處理器可為微處理器,但在替代方案中,處理器可以為任何常規的理器、控制器、微控制器或狀態機。處理器還可以實施為計算組件的組合,例如DSP與微處理器的組合、多個微處理器的組合、一或多個微處理器與DSP核心的結合,或任何其它此類配置。
結合本文中揭示的實例而描述的方法或算法可以處理單元、編程指令或其它方向的 形式直接體現在硬體、可由處理器執行的軟體模塊或兩者的組合中,且可含於單個裝置中或跨越多個裝置而分布。軟體模塊可駐留在RAM存儲器、快閃記憶體、ROM存儲器、EPROM存儲器、EEPROM存儲器、寄存器、硬碟、可裝卸磁碟、CD-ROM,或此項技術中已知的任何其它形式的存儲媒體中。存儲媒體可耦合到處理器,使得處理器可從存儲媒體讀取信息和將信息寫入到存儲媒體。在替代方案中,存儲媒體可集成到處理器。
所屬領域的技術人員將進一步了解,結合本文所揭示的方面描述的各種說明性邏輯塊、模塊、電路及算法步驟可以實施為電子硬體、計算機軟體或兩者的組合。為清晰地說明硬體與軟體的此可互換性,以上已大體就其功能性來描述了各種說明性組件、塊、模塊、電路和步驟。此功能性是實施為硬體還是軟體取決於特定應用及施加於整個系統的設計約束。
本文中所描述的本發明的各種特徵可在不脫離本發明的情況下實施於不同系統中。應注意,本發明的前述方面僅為實例,且不應解釋為限制本發明。本發明的各方面的描述既定是說明性的,且不限制權利要求書的範圍。因此,本發明的教示可容易應用於其它類型的設備,且所屬領域的技術人員將明白許多替代方案、修改及變化。