安全性密鑰生成方法
2023-05-31 18:40:01 2
專利名稱:安全性密鑰生成方法
技術領域:
本發明涉及包括至少一個中央單元和兩個存儲區域的安全性模塊的領域。
背景技術:
這些單元被用於實現密碼系統的操作且以單片電路的形式被給出,它們在同一矽晶片上被產生或者它們被裝配在一個支撐物上並被嵌入在樹脂中或者由覆蓋不同元件並在企圖的入侵情況下擔當熔絲的薄片所保護。
這些安全處理器具有被稱為自舉區段(bootstrap zone)的第一存儲器區段,所述區段在處理器的激活期間或者在每次初始化時被執行。這個存儲器是ROM類型的,即,它是只讀存儲器。
在啟動程序的執行期間,此程序驗證第二存儲器區段,所述區段是可重寫類型的,通常是EEPROM、NVRAM或者Flash類型的。
此驗證很重要,因為它用來確保在這個第二區段中的數據是有效的,即,它一定是一程序(至少在某種程度上是)。
此驗證可以用各種方式被實現,例如,印記(imprint)(CRC,Hash)的計算以及此印記與儲存在同一區段中的數值的比較。
一旦最初已被啟動的主程序完成其驗證,則它切換到第二區段並在一常規地址處開始用戶程序的執行。
這類處理器的特性是當程序在第二區段中執行時,它不能自由訪問第一區段的存儲器。此訪問或者被明確禁止或者受驗證機制(例如口令)的限制。
此限制提供重要的安全性,因為驗證手段以及啟動數據對用戶程序來說是不可訪問的。因此保護包含在第一區段中的所有數據不受任意入侵。
此第一自舉區段除了具有隻讀存儲器(ROM)中的一部分之外,還可能包括可重寫的存儲器的部分,該可重寫的存儲器的部分受到同樣的安全性條件的限制。
當第一區段具有非常有限的大小時,驗證程序的執行可以從第二區段被執行。後者被分成驗證部分和用戶部分。
因此,用戶程序的驗證根據第一區段的數據,即,根據通常儲存在所述第一區段中並允許驗證第二區段的數據印記的第一密鑰,而被執行。
第二區段包含構成程序的數據和由該第一密鑰所加密的籤名(signature)。
可以位於第一區段中或者位於第二區段的驗證部分中的驗證程序計算關於要被驗證的數據的唯一印記(Hash,CRC)。
為了驗證數據被正確地證實,第二區段包含被最初儲存在第一區段中的由密鑰所加密的印記。此密鑰被用來解密所加密的印記,並且所獲得的結果與計算出的印記進行比較。
這個密鑰可以以確定的形式(ROM)或者以編程的形式(EEPROM或者Flash)位於第一區段中。在所述第二種情況中,編程在製造步驟期間或者在一個經授權的中心裡被執行,只要在此存儲器位置中沒有發現其它密鑰,第一區段的程序就接受這種寫入。
此密鑰可以是對稱的類型的並且因此是秘密的,或者它可以是不對稱的類型的。在此第二變形中,此密鑰可以在除了第一區段之外的存儲器區段中被發現,因為即使第三方發現了此密鑰,所述第三方也不能識別被修改的數據集,因為他必需具有相應的私有密鑰來識別所述數據。顯然,此密鑰被負責準備該數據更新的管理中心保持秘密。
第二存儲器區段的數據可以表示一個或者幾個程序、諸如權利或者解密密鑰的重要數據、或者二者的組合。
用於發現第二區段的內容的已知類型的攻擊之一是搜索安全性缺陷,比如允許對處理器進行控制的存儲器溢出。一旦成功地進行控制,則第三方向外部傳送第二區段的內容並且能夠分析所使用的安全性機制和密鑰。
使用第二存儲器區段的內容的知識,所述第三方具有用來管理對於控制此處理器的業務的各種權利和訪問的密鑰。
因此,如果由管理中心管理的密鑰發生改變,則此改變命令將被第二存儲器區段中的密鑰所加密。知道此密鑰的第三方就能夠解密這則消息並且也更新此新密鑰的內容。
因此,明顯地,雖然可靠的機制被用於驗證程序區段(第二區段)的內容,但是一旦安全性已被破壞,則管理中心發出的任何改變都無法影響安全性,因為改變手段(例如新的傳輸密鑰)使用第三方已經擁有的密鑰。他因此能夠解密更新消息並且也改變其傳輸密鑰。即使在應用中已經糾正了安全性缺口(security breach),但是破壞仍然無法被停止。
發明內容
本發明的目的是提出一種方法,一旦第二存儲器區段的內容已被第三方讀取,則該方法恢復這類安全性裝置的安全性。
使用一種由安全性模塊實現的用於生成安全性密鑰的方法來達到此目的,此安全性模塊包括中央單元、第一條件訪問存儲器區段和至少一個第二存儲器區段,所述第二存儲器區段包含用戶程序的全部或一部分,其中該方法包括如下步驟-讀出第二存儲器區段的全部或一部分,-基於第二區段的數據的全部或者一部分和存儲在第一存儲器區段中的秘密信息的至少一項來生成至少一個根密鑰。
因此,由於此新的根密鑰的生成,有可能保證傳輸密鑰的替換並且以同樣的方式保證隨後傳輸的所有密鑰的替換。
重要的是,這個根密鑰決不是固定的,並且因為所述原因而必需不同於諸如工廠密鑰的存儲在第一存儲器區段中的任何密鑰。為此原因,使用管理中心所傳輸的新數據作為變量來生成所述根密鑰。
在第一種形式中,生成這個新密鑰而不必驗證第二區段的數據。如果此數據已被修改,則根密鑰將只須成為錯誤的並且通過此密鑰對傳輸密鑰的將來的解密不會給出正確的結果。
此根密鑰因此一方面取決於第二存儲器的下載或內容(或者數據),另一方面取決於儲存在第三方不可訪問的位置中的密鑰。
根據另一實施例,工廠密鑰被儲存在第一區段中的秘密程序所替換,該秘密程序根據秘密算法計算關於第二區段數據的全部或一部分的印記。根據特定的算法對第二區段數據的操作(組合、乘法、除法、EXOR等)使得根密鑰被確定。
根據如下的詳細說明並且參考作為非限制性示例給出的附圖,將會更好地理解本發明,其中圖1描述了安全性處理器裝置的構造;圖2示出了第二區段的劃分;圖3描述了用於生成根密鑰的機制。
具體實施例方式
在圖1中,模塊MOD是安全性處理器模塊。為此原因,它處理至少兩個存儲器區域,即,第一區段Z1和第二區段Z2。第一區段包括所有或部分ROM存儲器,並且因此是不可重寫的。另外,其中也可能有一部分包括用於變量的RAM或EEPROM形式的存儲器。由於特別是在第二區段中的程序的執行期間,其不是可自由訪問的,因此這被稱為條件訪問。
第二區段Z2包含處理程序和數據。這個區段包括非易失性存儲器,但是有可能寫入此類EEPROM。區段Z2還可以包含諸如RAM的易失性存儲器。事實上,這個區段通常不是都同一類的並且可以包括幾個ROM、RAM、EEPROM、NVRAM和FLASH類型的存儲器。
在本示例中,被稱為工作區段Z2A的區段2的第一部分被考慮用來執行與根密鑰的生成相關的操作。
用戶區Z2B是包含處理程序的部分的示意圖。根據實現方法,其可能包括諸如安全性密鑰的變量。
處理器CPU在初始化或者重置期間在第一區段Z1中被自動搜尋。此時第一安全性操作被執行。
這些操作使用第一存儲器區段,但是,如果有必要也使用工作區段Z2A。由於第一區段的有限區域,消息被發送給工作區段以便例如執行印記的計算。允許計算此印記的例行程序可以在第二區段中被找到。什麼也不能阻止此例行程序形成將被驗證的數據的一部分。這個程序被稱為系統程序。
最初啟動的初始化程序計算有關要被驗證的數據的常規部分的印記。這個部分由在第二存儲器區段中包含的指針所定義。用戶區段Z2B的部分機制的說明被包含在圖2中。
對形成印記的數據的考慮可以在所有的或一部分的用戶區段上進行。在實踐中,優選地,此印記將是在程序部分上被計算的而不是在數據部分上被計算的(例如可視化權利),因為後者在用戶程序的使用期間易於修改。在系統啟動時初始化的印記的識別程序計算有關要被驗證的數據的預確定部分的所述印記。這個部分由在第二存儲器區段中包含的指針,尤其是在圖2中的部分DES中包含的指針所定義。
在本發明的範圍內,此印記通過單向操作來實現,此單向操作是源集朝著目的地集的數學運算H,其中源集的每個元素x用圖像(image)H(x)表示。這些函數在它們是所謂的Hash函數時特別有用,例如在著作″RSA Laboratories′Frequently Asked Questions AboutToday′s s Cryptography,v4.0″的第27頁中定義的內容。元素x可以是任意長度的,但是H(x)總是固定長度的字符,即,一個固定大小的串。這類函數難以反轉,也就是說,知道H(x)一般不能發現x。此外,它是無碰撞的(collision free),因為它是單射函數(injective function),也就是說,H(y)=H(x)必定導致y=x,類似地H(y)≠H(x)必定導致y≠x。
只要集x的單個數值被修改,即使其它值被修改以使第一修改生成的修改無效,再現同一控制信息H也被認為是不可能的。
在圖2中,圖1中的用戶區段Z2B被分成幾個部分PA、PB和PC。這些部分在這個示例中不是相鄰的並且被不影響印記計算的部分PI分開。描述這些不同部分的信息被包含在也形成用戶區段Z2B的一部分的部分DES中。它包含控制信息的計算中涉及的存儲器位置的指示。這些指示可以是以″啟動指針″和″長度″的形式的或者是以″啟動指針″和″結束指針″的形式的。
此外,具有不只一項而是幾項控制信息是可能的,每項信息H1、H2、Hn被應用在部分PA、PB或Pn上。這允許生成不止一個根密鑰而是生成幾個密鑰。
在圖1中,I/O塊說明了向模塊MOD的外部進行通信的手段,其是使用密碼函數和儲存在存儲器Z2B中的權利的不可缺少的手段。還是用這種方式,通過例如先前描述的缺陷的缺陷,數據從區段Z2中隨機提取。
在圖3中,根密鑰的生成被示意地表示。根據圖2中的示例,包括部分PA、PB和PC的數據DTA用來利用處理器計算印記,在我們的情況中,該印記是控制信息Hash。為了計算根密鑰RK,這個控制信息H和工廠密鑰MK2通過加密模塊ENC被用來獲得所述根密鑰RK。這個秘密密鑰將是對稱類型的(或者由管理中心對稱地使用),因為在相反的情況下,它在管理中心中和在模塊MOD中不是相同的合成根密鑰。
應該注意,如果當儲存的程序的一致性被驗證時用戶部分Z2B的內容已經具有建立的印記,則使用所述印記代替控制信息H是可能的。在這個操作中重要的因素是表示數據DTA的全部或者一部分的數據的使用。在一種變形中,有可能從三個八位位組中選擇一個例如來識別將被工廠密鑰MK2加密的數據。
根據另一實施例,工廠密鑰被儲存在第一區段Z1中的密秘算法(RTN)替換。必要時,所述算法可以在初始化階段期間從該第一區段拷貝到工作區段Z2A。
根據一個特定的方法,所述算法合併數據DTA的全部或者一部分以便獲得取決於所述數據的唯一結果。這種組合可以實現不同的算術操作,比如乘法、Exor等等。
一旦已經計算出這個根密鑰,則它被儲存在第二區段Z2的存儲器區段中。
這些方法步驟的執行的位置未被識別。自舉區段中的程序可以只需把工廠密鑰拷貝到一個臨時存儲器區段中,並且被稱為系統程序的根密鑰生成程序可以被包含在工作區段Z2A中。重要的因素是所述工廠密鑰在第一區段Z1中的存儲以便在用戶程序的正常執行期間使其不可訪問。
一旦根密鑰已被生成,則從臨時存儲器中刪除工廠密鑰。
根據一個實際應用,負責安全性的管理中心準備新的軟體以避免已知的缺陷,例如目的是提取區段Z2的數據的偽造者的攻擊。此新的軟體被籤名(sign),也就是說,關於該數據來計算Hash函數,並且用專用密鑰MK1加密該結果。
所有內容然後都被傳輸密鑰加密並且以消息的形式發送給安全性模塊MOD。
在用戶區段Z2B中的程序處理輸入數據並且藉助於一個或幾個系統傳輸密鑰解密所述消息。數據然後被儲存在為此目的所提供的位置中。一旦已經完成此下載,則處理器激活重啟函數。這允許所有新存儲的數據被驗證。
此驗證一般是指儲存的程序集,並且所述驗證是根據上述步驟來執行的。如果具有不安全模塊MOD的第三方的假設被考慮,則第一存儲器區段Z1不存在(或者為空),並且處理器立即在第二區段Z2中啟動。從管理中心接收到的新程序被第三方解密並且用戶區段因此與具有雙存儲器區段的安全處理器的相同。
在安全處理器的起動期間,根密鑰被生成並且被用來解密新的傳輸密鑰。偽造的模塊不具有這個根密鑰並且不能解密傳輸密鑰。此時,在管理中心和安全模塊之間交換的消息對偽造的模塊來說不再是可訪問的。如果後者嘗試藉助於允許其獲得第二區段內容的這種類型的攻擊來重新發現根密鑰,則這種攻擊將不再起作用,因為這個新軟體的目的正好是避免這類欺騙。安全的模塊在允許數據提取的攻擊之前重新發現安全級別。
因此,這種方法允許遠程地改正安全性缺陷並且重置原始的安全性而無需象通常的情況那樣交換所有的模塊。
如上所述,對第一區段Z1的訪問在微處理器起動時或者在驗證機制之後被執行。在上述情況期間,有可能不用激活微處理器的重置,並且通過網關請求訪問第一區段。一旦通過此請求網關(通過例如口令的引導)執行進入,則程序的執行不再是可見的,因為第二區段對重新拷貝此區段的第三方來說是未知的。用這種方式啟動的程序開始生成根密鑰。
條件訪問存儲器區段Z1不能提供必要的秘密數據來形成根密鑰。在這種配置中,用戶區段Z2的程序只能訪問第一區段Z1以便讀取用於計算根密鑰的數據。在這些操作期間,第一區段的可視性持續時間將被限制為用於讀取所必需的時間,然後將使此區段不可訪問。
根據一個實施例,工廠密鑰產生一組密鑰。在每次生成根密鑰時,工廠密鑰被停用。要被使用的密鑰的選擇可以用不同的方式來執行,即-根據管理中心的命令,也就是說,通過定義數據DES中的描述符,-通過使用印記的n個最後的比特(例如3個比特),其允許所述比特從儲存的密鑰(例如8個密鑰)中進行選擇。
權利要求
1.一種由安全模塊(MOD)所實現的用於生成安全性密鑰的方法,該安全模塊包括中央單元(CPU)、第一條件訪問存儲器區段(Z1)和至少一個第二存儲器區段(Z2),所述第二存儲器區段包括用戶程序的全部或者一部分,其中該方法包括以下步驟-讀出第二存儲器區段(Z2)的全部或者一部分,-基於第二區段(Z2)的數據(DTA)的全部或者一部分和在第一存儲器區段(Z1)裡存儲的秘密信息(MK2,RTN)中的至少一項來生成至少一個根密鑰(RK)。
2.根據權利要求1的方法,其中,該秘密信息是工廠密鑰(MK2)。
3.根據權利要求1的方法,其中,該秘密信息是描述生成根密鑰(RK)的數據(DTA)的使用的算法(RTN)。
4.根據權利要求1到3之一的方法,其中,所述方法包括計算表示第二區段(Z2)的數據(DTA)的全部或一部分的控制信息(H)的至少一項,所述控制信息(H)被用於生成根密鑰(RK)。
5.根據權利要求4的方法,其中,所述控制信息(H)是在第二存儲器區段(Z2)的數據的全部或一部分上執行的被稱為單向的且無碰撞的函數(Hash)的結果。
6.根據權利要求1到5之一的方法,其中,所述第二區段(Z2)還包括描述部分(DES),該描述部分包括確定控制信息(H)的構成的存儲器區段的位置。
7.根據權利要求6的方法,其中,所述描述部分(DES)包括用於和部分控制信息(H1,H2 H2...Hn)相對應的用戶存儲器區段(Z2B)的每個部分(PA,PB,PC)的多條位置信息。
8.根據權利要求2的方法,其中,所述工廠密鑰(MK2)是對稱類型的。
9.根據權利要求1到8之一的方法,其中,所述第二區段(Z2)包括驗證區段(Z2A)和用戶區段(Z2B),在驗證區段(Z2A)中所包括的程序負責用戶區段(Z2B)中的數據的驗證,第一區段的程序系統把必要的數據從所述第一區段向驗證區段(Z2A)進行傳送。
10.根據權利要求9的方法,其中,所述工廠密鑰(MK2)被系統程序從第一區段(Z1)向驗證區段(Z2A)進行拷貝。
11.根據權利要求10的方法,其中,當根密鑰被生成時所述工廠密鑰被刪除。
12.根據前面權利要求之一的方法,其中,根密鑰(RK)被用作傳輸密鑰以解密來自於管理中心的消息。
全文摘要
本發明的目的是提供一種在例如智慧卡的安全裝置的第二存儲器區域的內容已被第三方讀取之後恢復其安全性的方法。通過一種使用安全模塊來生成安全性密鑰的方法而達到此目的,該安全模塊包括中央處理單元、第一條件訪問存儲器區域和包括用戶程序的全部或一部分的至少一個第二存儲器區域,其特徵在於,所述方法包括以下步驟讀出第二存儲器區域的全部或一部分,基於第二區段區域中的數據的全部或者一部分和在第一存儲器區域中存儲的秘密信息中的至少一項來生成至少一個根密鑰。
文檔編號G07F7/10GK1795471SQ200480014723
公開日2006年6月28日 申請日期2004年5月27日 優先權日2003年5月23日
發明者亨利·庫德爾斯基, 瑟奇·高梅恩 申請人:納格拉卡德股份有限公司