国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      可驗證防泄漏的加密和解密的制作方法

      文檔序號:6351765閱讀:277來源:國知局
      專利名稱:可驗證防泄漏的加密和解密的制作方法
      技術(shù)領(lǐng)域
      本專利涉及用于處理加密的數(shù)據(jù)輸入的技木,并且更具體地涉及保護這樣的系統(tǒng)和數(shù)據(jù)以防外部監(jiān)視攻擊。
      背景技術(shù)
      對敏感數(shù)據(jù)進行操作的系統(tǒng)需要防范攻擊者對這樣的數(shù)據(jù)的未授權(quán)訪問或者公開或者變更。獲得對密碼密鑰和其它秘密的訪問的攻擊者可以竊取或者篡改敏感數(shù)據(jù),從而導致嚴重后果(比如通過引入未授權(quán)命令和暴露機密的或者專有的信息來顛覆系統(tǒng)的關(guān)鍵操作)。一個被危及的元件也可能用來增加更多攻擊,從而危害系統(tǒng)的其它元件。更具體地,先前的研究已經(jīng)說明了攻擊者可以監(jiān)視設(shè)備的外部特性(比如操作時序、功率消耗和/或電磁輻射)并且使用這ー附加信息以提取正在設(shè)備內(nèi)使用的秘密密鑰。例如,如 Kocher 等人描述的那樣(見 P. Kocher、J. Jaffe、B. Jun 的 “DifferentialPower Analysis,,,Advances in Cryptology-しrypto 99Proceedings, Lecture Notes InComputer Science Vol. 1666, Springer-Verlag, 1999),在本領(lǐng)域中公知的是對將相同一組密鑰與不同數(shù)據(jù)一起用來執(zhí)行密碼操作序列的設(shè)備的外部監(jiān)視可能造成密鑰泄漏。由于外部監(jiān)視攻擊通常是被動的和非入侵的,所以基于阻礙物理訪問或者檢測不恰當使用的傳統(tǒng)防篡改防范對于提供保護以防這樣的攻擊而言是不足或者不切實際的。例如,在背景技術(shù)中已知用于使用物理上安全、屏蔽良好的空間來管理秘密密鑰的方法。然而,在許多應用中,要求密碼系統(tǒng)保持于物理上隔離的設(shè)施中在給定了它們預期操作于其中的環(huán)境時是不可行的。此外,這樣的設(shè)施建造和運營起來昂貴并且可能在它們防止將少量信息泄漏給對手的能力上仍有缺點。當然,在背景技術(shù)中已知可以減輕監(jiān)視攻擊所致的信息泄漏問題而不必依賴干物理屏蔽的其它方法。這些包括如下方法,該方法用于減少從事務泄漏信息的數(shù)量(或者速率)、修改密碼算法實現(xiàn)方式以對計算中介進行隨機化和/或在功率消耗和操作時序方面引入噪聲。例如,標題為“Leak-Resistant Cryptographic Indexed Key Update” 的美國專利6539092提供了用于將共享的主密鑰和索引值(例如,計數(shù)器)轉(zhuǎn)換成事務密鑰的方法,其中保護導出以防外部監(jiān)視攻擊。這些方法在如下應用中工作良好,在這些應用中,為了防范外部監(jiān)視攻擊而保護的設(shè)備可以對事務密鑰的導出起作用。例如,第092號專利描述了智能卡如何可以維護隨著每個事務而遞增的索引計數(shù)器,然后在密鑰導出中使用索引計數(shù)器。
      然而,存在如下應用,在這些應用中,應當保護協(xié)議中的參與者以防外部監(jiān)視攻擊,但是缺乏如第092號專利中描述的那樣的存儲序列計數(shù)器和更新的密鑰的能力。例如,考慮如下情況,在該情況中設(shè)備需要有規(guī)律地處理相同輸入數(shù)據(jù)(比如如下設(shè)備,該設(shè)備包含固定并且不變的嵌入式密鑰,該密鑰反復用來以任意順序解密密文)。固件加密是這樣的應用的示例;可以制造在熔斷器中具有嵌入式密鑰的微處理器,并且在毎次重新引導時,微處理器需要重新解密它的從非信任外部閃存加載的固件映像??梢耘既桓鹿碳诚瘢且部梢苑磸徒饷芟嗤拿芪?。因此,應用要求和物理制造限制(比如由于使用一次性可編程熔斷器以保持密鑰而不能修改存儲的密鑰)兩者可能使設(shè)備限制解密密鑰將被使用的次數(shù)不切實際。固件發(fā)行者可以每當 發(fā)布新的加密的固件時將在’ 092專利中描述的方法與新索引值一起使用,但是解密設(shè)備無法在毎次重新引導時使用不同索引值,因為將索引值改變成除了由加密設(shè)備使用的值之外的值將造成不正確解密。因此,攻擊者可以潛在地向解密設(shè)備供應篡改的數(shù)據(jù)集,繼而在設(shè)備處理(例如,解密等)這些密文時嘗試通過監(jiān)視外部特性來恢復秘密密鑰。統(tǒng)計旁信道攻擊(比如差分功率分析(DPA))可以根據(jù)在設(shè)備反復使用相同密鑰以對不同輸入值(比如之前示例中的不同固件密文或者相同固件密文的篡改的版本)操作時收集的一組測量推斷秘密密鑰。即使未篡改密文消息,來自單個長消息(例如,包括多個塊密碼輸入)或者合法消息的匯集(比如多個固件版本)的測量也可以提供用于旁信道攻擊的充分數(shù)據(jù)。當然,在其中設(shè)備將相同密鑰用于每個事務的ー些情形中,設(shè)備在理論上可以實施封鎖(例如,通過如果超過事務或者失敗閾值則自毀)以限制對手可以觀測的事務數(shù)目。然而,封鎖機制引入了諸多實際問題,比如與存儲失敗計數(shù)器相關(guān)聯(lián)的可靠性顧慮和困難(例如,許多半導體制造エ藝缺乏安全的片上非易失性存儲并且難以使片外存儲安全)。鑒于所有前述,ー種提供用于設(shè)備傳達和交換數(shù)據(jù)的而防范外部監(jiān)視攻擊的可驗證安全方式以及設(shè)備拒絕非真實數(shù)據(jù)的能力的方法將是有利的。

      發(fā)明內(nèi)容
      本專利描述用于使利用秘密密碼密鑰的設(shè)備安全免受外部監(jiān)視攻擊以及提供改善的安全性以防收集與設(shè)備的內(nèi)部操作相關(guān)的信息的常規(guī)密碼分析和其它攻擊(比如DPA和其它形式的外部監(jiān)視攻擊)的方式。在說明書中公開了用于加密敏感數(shù)據(jù)的各種示例性實施例。盡管這些各種實施例可以在它們的細節(jié)上明顯變化,但是它們?nèi)珀P(guān)于在說明書中描述的各種實施例可以容易驗證的那樣都涵蓋于以下通用技術(shù)內(nèi)關(guān)于加密,待加密的每個數(shù)據(jù)集與消息標識符(比如事務/消息計數(shù)器、明文的散列、隨機值或者另ー唯一或者半唯一值)相關(guān)聯(lián)。加密設(shè)備使用消息標識符和與解密設(shè)備共享的初始秘密內(nèi)部狀態(tài)來導出消息密鑰。通過從共享的秘密內(nèi)部狀態(tài)的至少部分開始并且促成消息密鑰的ー連串ー個或者多個中間密鑰以迭代方式執(zhí)行這ー導出,其中在每次迭代中,下一密鑰依賴于至少ー個先前密鑰和消息標識符的至少部分??梢詫⒚魑姆纸獬梢欢位蛘叨喽巍S每梢园ㄏ⒚荑€或者根據(jù)消息密鑰進一步導出的密鑰的ー個或者多個秘密密鑰加密每個明文段以創(chuàng)建對應的加密段。通常,不同密鑰(或者不同的一組密鑰)用于每段。加密設(shè)備繼而使用與解密設(shè)備共享的秘密密鑰(比如消息密鑰、秘密內(nèi)部密鑰、不同密鑰、根據(jù)前述各項導出的密鑰等)以計算至少ー個驗證器??梢允褂门c用來產(chǎn)生消息密鑰的迭代過程相似的迭代過程來執(zhí)行導出驗證器,借此將變換的序列應用于秘密密鑰以產(chǎn)生相繼值(例如,其中生成每個中間密鑰包括散列化它的父值)。加密設(shè)備輸出ー個或者多個加密段和一個或者多個驗證器。也可以如需要的那樣輸出附加信息以使接收方能夠確定消息標識符。在對應的解密過程期間,解密設(shè)備接收ー個或者多個加密段、一個或者多個驗證器和對應于加密段的消息標識符。它繼而使用一個或者多個驗證器以驗證至少尚未修改待解密的第一加密段。驗證器的驗證可以包括計算從與加密設(shè)備共享的秘密開始的相繼中間值序列,并且其中每個中間值是它的父代的散列(并且具體散列操作依賴于所述加密段的散列的部分)。通常,如果驗證未修改加密段則才允許用于該段的解密過程繼續(xù)。如果驗證成功,則解密設(shè)備通過遵循與加密設(shè)備遵循的相同迭代密鑰導出過程(即從共享的秘密內(nèi)部狀態(tài)的至少部分開始、經(jīng)過中間密鑰序列、促成最終消息密鑰,其中在每個步驟,下ー密鑰依賴于消息標識符的至少部分和至少ー個先前密鑰)、使用它與加密設(shè)備共享的秘密內(nèi) 部狀態(tài)來計算消息密鑰(如果尚未導出)。用根據(jù)消息密鑰導出的一個或者多個對應的秘密密鑰解密每個加密段(如果確定為未修改)以恢復對應的明文段。


      圖I示出了用于使用密鑰和密文散列鏈接的可驗證、防泄漏加密的整個過程的示例性實施例。圖2示出了始于共享的密碼秘密Kstakt并且經(jīng)過路徑P1. . . Pq繼續(xù)的防泄漏基于密鑰樹的密鑰導出過程的示例性實施例。圖2的密鑰導出過程可與圖I和圖3的第一示例性加密過程以及圖4的第一示例性解密過程結(jié)合使用。它也可與圖5、圖11和圖13的其它示例性加密過程以及圖6、圖12和圖14的其它示例性解密過程結(jié)合使用。圖3示出了用于加密的防泄漏密鑰和密文散列鏈接過程(例如,包括圖I中所示的整個加密過程的部分)的示例性實施例。圖4示出了對應于圖1(和圖3)的加密過程的使用密鑰和密文散列鏈接的可驗證、防泄漏解密過程的示例性實施例。圖5示出了用于使用密鑰和明文散列鏈接的可驗證、防泄漏加密的過程的示例性實施例。圖6示出了對應于圖5的加密過程的用于使用密鑰和明文散列鏈接的可驗證、防泄漏解密的過程的示例性實施例。圖7示出了如下環(huán)境,在該環(huán)境中,可驗證、防泄漏密碼操作用于向片上系統(tǒng)上加載固件。圖8示出了如下環(huán)境,在該環(huán)境中,可驗證、防泄漏密碼操作使用于安全CPU芯片內(nèi),其中不信任外部存儲器(比如閃存和/或者RAM)。圖9示出了如下環(huán)境,在該環(huán)境中,可驗證、防泄漏密碼操作用于向現(xiàn)場可編程門陣列上加載位流映像。圖10示出了如下環(huán)境,在該環(huán)境中,可驗證、防泄漏密碼操作使用于基于分組的網(wǎng)絡通信設(shè)備中。
      圖11示出了可以用在圖10中描述的環(huán)境以及在其它實施例中使用的用于可驗證分組級防泄漏加密的過程的示例性實施例。圖12示出了對應于圖11中描述的加密過程的用于可驗證分組級防泄漏解密的過程的示例性實施例。圖13示出了使用具有段內(nèi)密鑰改變的密碼塊鏈接(CBC)的示例性ENCO操作的示例性實施例。圖14示出了對應于圖13的加密操作的使用具有段內(nèi)密鑰改變的密碼塊鏈接(CBC)的示例性DECO操作的示例性實施例。
      具體實施例方式在本專利中描述的技術(shù)使多方能夠傳達密碼保護的敏感數(shù)據(jù)并具有増加的安全性以防外部監(jiān)視攻擊。雖然描述了涉及到兩方(通常稱為“加密設(shè)備”和“解密設(shè)備”)的示例性實施例,但是術(shù)語“設(shè)備”是為了便利而加以選擇并且無需必然直接對應于系統(tǒng)設(shè)計中的任何特定角色。設(shè)備可以但是并不必須利用不同形式的因素或者實現(xiàn)方式。例如,カロ密設(shè)備和解密設(shè)備可以均為便攜硬件設(shè)備。備選地,加密設(shè)備可以是在操作于設(shè)施中的服務器上運行的軟件應用,而解密設(shè)備可以是便攜式硬件設(shè)備(或者反之亦然)。另外,雖然多數(shù)密碼操作涉及到兩方,但是本專利的技術(shù)當然可以應用于僅涉及到一方的環(huán)境中(比如安全存儲器或者存儲系統(tǒng)(其中兩個角色例如在圖8中所示的示例性環(huán)境中在單方和/或單個設(shè)備的控制之下)中)或者應用于涉及到多于兩方和/或兩個設(shè)備的環(huán)境中(比如圖10中所示的示例性實施例中)。熵重新分布操作如這里所用,“熵重新分布操作”(或者“熵分布操作”)是如下操作,該操作混合它的輸入,從而使得關(guān)于輸入位的未知信息在輸出位之間重新分布。例如,假設(shè)用熵重新分布操作f反復處理X位密碼密鑰Ktl,從而使得對于每個i > I而言密鑰Ki = f (Ki^1)。接著,假設(shè)對手獲得關(guān)于η個不同密鑰Ki中的每個密鑰的y位信息(例如,作為嘗試的外部監(jiān)視攻擊的部分而獲得),從而提供用于求解密鑰Ktl的綽綽有余的信息(例如y*n > x)。使用熵分布操作f可以使這樣的解決方案在計算上不可行。密碼散列函數(shù)H是可以作為熵重新分布操作而使用的操作的示例。例如,考慮產(chǎn)生256位結(jié)果的強散列函數(shù)H。在隨機256位初始密鑰K0給定吋,對于每個i > I而言令Ki = H(Ki^1)。知道(例如)每個K0. · · Km999的最低有效位的對手具有與Kci有關(guān)的1,000,000位數(shù)據(jù)。具有無限計算能力的假想對手可以通過測試用于Ktl的所有可能的2 2 56個值以標識與最低有效位的已知序列一致的值來發(fā)現(xiàn)も。然而,實際對手具有有限計算能力可用,并且熵重新分布操作阻礙其成為ー種用于在給定通過嘗試的外部監(jiān)視攻擊而泄漏的信息時求解Ktl(或者任何其它Ki)的在計算上實際的方式??梢远幌抻谑褂妹艽a散列函數(shù)、使用塊密碼(比如AES)構(gòu)造的操作、偽隨機變換、偽隨機排列、其它密碼操作或者其組合來實施熵重新分布操作。為求便利,關(guān)于散列描述某些示例性實施例,但是本領(lǐng)域技術(shù)人員將理解按照前文,附加地或者備選地也可以使用其它熵重新分布函數(shù)。也可以根據(jù)基本操作構(gòu)造多個熵重新分布操作。舉例而言,如果需要兩個256位熵重新分布操作fQ O和も(),則fQ()可以包括將SHA-256密碼散列函數(shù)應用于與向fQ()的輸入級聯(lián)的操作標識符串“《)”,而も0可以包括將SHA-256應用于與和も()的輸入級聯(lián)的操作標識符串“ H”。可以使用公知的AES塊密碼來解析熵重新分布操作。例如,為了實施fQ(). . . fb_! O,每個もO可以使用它的輸入作為AES-256密鑰以加密對于i在O. . . b-1內(nèi)的選擇而言唯一的ー對128位輸入塊,從而產(chǎn)生256位的輸出。在背景技術(shù)中也知道并且也可以運用廣泛多種基于塊密碼的散列函數(shù)和MAC構(gòu)造。共享的密碼值和操作本節(jié)描述由加密設(shè)備和它的對應的解密設(shè)備兩者共享用來執(zhí)行如在本專利中描述的可驗證防泄漏密碼操作的某些密碼值和/或操作。設(shè)置加密設(shè)備和解密設(shè)備,從而使得每個設(shè)備具有對基本共享秘密密碼狀態(tài)值(比如表示為Κ·τ的秘密密鑰)的訪問權(quán)。這ー秘密狀態(tài)可以例如存儲于防篡改芯片上 的EEPR0M、閃存、熔斷器或者其它存儲中的ー項或者多項中,并且可以完全或者部分根據(jù)其它值或者過程來導出,或者可以從外部獲得。這些設(shè)備中的每個設(shè)備獲得Κ·τ的方法可以包括而不限于每個設(shè)備與!^OT—起制造、設(shè)備通過經(jīng)由物理鍵控接ロ接收Κ·τ、隨機生成Keoot (例如,如果加密設(shè)備和解密設(shè)備相同)等來直接或者經(jīng)由第三方相互協(xié)商Kktot (例如,使用如下協(xié)議,這些協(xié)議利用RSA、Diffie-Hellman或者其它公共密鑰密碼技術(shù)或者對稱技術(shù))。此外,加密設(shè)備和解密設(shè)備也均能夠計算一組非線性密碼熵重新分布操作ち(),も(),..., ·Η(),其中b > I為正整數(shù)??梢栽跇浣Y(jié)構(gòu)中配置這些b熵重新分布函數(shù)。例如,可以通過使用b個不同熵分布函數(shù)ち()...fw()以代表這ー b進制樹在樹的每個節(jié)點(每個節(jié)點代表可能的導出的密鑰)的b個可能的分支來創(chuàng)建高度為Q的簡單b進制樹結(jié)構(gòu)。在這樣的樹中,始于根密碼密鑰Kstakt(該密鑰在O級),可以在I級計算b個可能的導出的密鑰用于最左分支的ち(Kstakt);用于下一分支的(Kstakt);并且繼續(xù)直至用于最右分支的fw (Kstakt)。在2級,可以導出b2個可能的密鑰,因為ち()...U)中的每個函數(shù)可以應用于b個可能的I級密鑰中的每個密鑰。當然,計算具體2級節(jié)點僅需兩次(而不是b2次)計算(即不計算不在路徑上的節(jié)點)。樹針對相繼I級至Q級繼續(xù),其中可以通過輪流應用來處理先前級的每個可能的密鑰(即不同節(jié)點)以導出b個附加的可能的導出的密鑰。整個密鑰樹具有從在O級的單個節(jié)點開始、以在i級的V個節(jié)點繼續(xù)并且以在Q級的bQ個節(jié)點為結(jié)束的Q+1級。因此,存在從O級的根節(jié)點到Q級的bQ個最終節(jié)點的#個可能的路徑。對應于在不同級應用的唯一函數(shù)序列的每個這樣的可能路徑可以表示為Q個整數(shù)的序列(每個整數(shù)選自于(O... b-Ι))。例如,在示例性實施例中b = 2。因此,使用(并且可以例如如上文描述的那樣根據(jù)基本操作構(gòu)造)兩個熵重新分布操作foO和もO。如果Q = 128 (即高度為128),則2128個路徑是可能的并且需要128次熵重新分布函數(shù)計算以根據(jù)O級節(jié)點(即起始密鑰)導出Q級密鑰。作為變體,實施例可以涉及到b的更多選擇多樣性(比如在級之間變化b的值和/或基于去往特定級而取道的路由來變化b)。類似地,也可以比如通過使熵重新分布操作もO在不同級不同或者使這些操作依賴于對特定級采取的序列來變化熵重新分布操作。加密設(shè)備和解密設(shè)備也能夠執(zhí)行可以(但是未必)與函數(shù)も()相異的密碼非線性密鑰鏈接操作g()。例如,在一個實施例中,g()由密碼散列操作構(gòu)成。不同實施例可以將不同函數(shù)用于g()的不同應用(包括根據(jù)基本函數(shù)構(gòu)造的變體(例如,通過用計數(shù)器或者代表g()的應用的另ー個值散列化輸入數(shù)據(jù)))。加密設(shè)備和解密設(shè)備也具有可以(但是未必)與操作もO和g()相異的密碼防沖突單向散列函數(shù)hO (例如,用作段散列函數(shù))。在示例性實施例中,通過將操作も()、g()和h()中的每個操作計算為操作標識符和輸入數(shù)據(jù)的密碼散列來根據(jù)共同密碼散列函數(shù)構(gòu)造每個操作。操作標識符可以例如是由“f#”、“g”或者“h”構(gòu)成的零結(jié)尾串,其中#是用于給定的fi()的i的值,從而使得用于ち()的操作標識符將為“fO”。使用輸入作為密鑰的操作標識符的HMAC也可以用來實施這些操作??膳c本專利的技術(shù)一起使用的散列函數(shù)包括而不限于MD5、SHA-U SHA-256、SHA-512、任何SHA3候選操作以及前述各項與使用前述各項的構(gòu)造(比如HMAC)的組合。如這里所用,函數(shù) BLAKE、Blue Midnight Wish、CubeHash> ECHO、Fugue、Grostl、Hamsi、JH> Keccak>LANE、Luffa、Shabal、SHAvite-3、SMD和Skein中的每個函數(shù)是“SHA3候選操作”。在其它實施例中,使用將塊密碼(比如AES、DES或者其它密碼)轉(zhuǎn)換成散列函數(shù)的其它公知構(gòu)造(比如而不限于 Matyas-Meyer-Oseas、Davies-Meyer、Miyaguchi-Preneel、Merke-Damgard等)來導出散列函數(shù)。非防沖突的變換(比如MD5、散列變換的精簡輪回變體或者其它混合操作)也可以重新分布輸入中存在的熵、但是對于用作單向函數(shù)h()而言吸引カ將更小。更多其它實施例可以在實施熵重新分布操作fm O時利用流密碼(潛在地包括輕量級并且潛在地在密碼上為弱的流密碼)。例如,可以運用流密碼RC4,其中熵重新分布操作輸入用作RC4密鑰并且RC4輸出字節(jié)用作(或者用來形成)熵重新分布操作輸出。加密設(shè)備和解密設(shè)備具有秘密密鑰加密函數(shù)(或者函數(shù)集)ENC O,其具有對應的解密函數(shù)DECO。在一些實施例(比如固定長度消息的實施例)中,ENCO和DECO可以比如在ECB或者CBC模式中利用常規(guī)密碼構(gòu)造(比如AES)。后文分別關(guān)于圖13和圖14描述用于其它實施例的ENCO和DECO構(gòu)造。圖I和圖2中的示例性實施例本節(jié)描述用于可驗證防泄漏加密和解密的通用技術(shù)的示例性實施例。這ー第一示例性實施例使用密鑰鏈接和密文散列鏈接。加密 為求便利,按照密碼學中的傳統(tǒng)命名法,使用術(shù)語“明文”以指代待加密的數(shù)據(jù)。如本領(lǐng)域技術(shù)人員將理解的那樣,這未必意味著輸入數(shù)據(jù)為人類可讀的,并且實際上并未排除在利用本專利的技術(shù)保護這樣的數(shù)據(jù)之前對其本身進行壓縮、編碼乃至加密。類似地,本領(lǐng)域技術(shù)人員將理解術(shù)語“數(shù)據(jù)”涵蓋被處理的任何量并且可以包括而不限于內(nèi)容、數(shù)據(jù)、軟件、代碼和任何其它類型的信息。在給定待保護的敏感明文數(shù)據(jù)消息D吋,并且在知道共享的基本秘密密碼值Kkjot時,加密設(shè)備執(zhí)行如圖I中概括的以下步驟。首先,它將敏感明文數(shù)據(jù)D分解成L段D1,...,^的序列(步驟100),其中(LS I),每段小到足以相配到接收器中的用于傳入段的存儲器中。此外,這些段中的每段的大小應當充分小以滿足應用和實現(xiàn)方式的泄漏要求。段可以但是未必是相同大小。此外,其它變體也可以如下文將關(guān)于圖13和圖14示出的那樣通過改變密鑰(例如,在ENCO和DECO內(nèi))來支持無限制大小的段。加密設(shè)備也生成(步驟101)臨時數(shù)N,該臨時數(shù)(如下文將示出的那樣)可以用作用于與對D的加密結(jié)合使用的消息標識符(或者其前身)。例如,可以使用真隨機數(shù)生成器、偽隨機數(shù)生成器、真隨機數(shù)生成器與偽隨機數(shù)生成器的ー些組合、計數(shù)器值或者其它(優(yōu)選為唯一或者很少重復的)參數(shù)或者通過根據(jù)可用于加密設(shè)備的密鑰和/或數(shù)據(jù)(包括而不限于D (例如,通過將N設(shè)置成D的部分或者全部的散列))導出N來生成該臨時數(shù)。在圖I中,對于給定的Kkjot,用來加密特定消息的N的值優(yōu)選地未用來加密任何其它消息(或者如果用來加密,則任何重用應當是有限的、不太可能的和/或不頻繁的)。在以下示例性實施例中,使用臨時數(shù)N來形成消息標識符氏。在最簡單直接的實現(xiàn)方式(其中N充當消息標識符)中,H1可以簡單地等于N。作為另ー示例(其中N充當消息標識符的前身),加密設(shè)備可以將H1計算(步驟102)為使用函數(shù)h()的N的散列。散列化在如下情形中有用,在這些情形中,希望產(chǎn)生固定大小的消息標識符以例如在為求計算效率而對更短數(shù)量操作時允許并入更長數(shù)據(jù)值(比如文本串),或者為求計算簡化而將可變長度的數(shù)據(jù)值轉(zhuǎn)換成統(tǒng)一長度的消息標識符,或者減少對手可能具有的對H1的選擇有影響的任何能力。當然,散列化僅為ー種用于產(chǎn)生消息標識符的方式,并且本領(lǐng)域技術(shù)人員將理解可以運用除了 h之外的其它函數(shù)以產(chǎn)生氏。在計算H1之后,加密設(shè)備使用共享的基本秘密密碼值Kkqqt和H1 (103)作為向防泄漏的、基于密鑰樹的密鑰導出過程的輸入來計算消息密鑰Kmessac^為了便于討論,這里在(例如,由加密設(shè)備執(zhí)行的)加密的上下文中并且更具體地在圖I的第一示例性加密過程的上下文中呈現(xiàn)密鑰導出過程。然而,相同密鑰導出過程也將使用于圖4的第一示例性解密過程中,在該情況下,它將由解密設(shè)備執(zhí)行。類似地,密鑰導出過程也將與其它過程(包括圖5、圖11和圖13的示例性加密過程以及圖6、圖12和圖14的示例性解密過程)結(jié)合使用。在圖2中圖解表示示例性密鑰導出過程。該過程始于樹的起點(表示為Kstaet(201))和路徑P1. . . Pq(202)。例如,在圖I的上述步驟103中,Kstaet是共享的秘密密鑰Keoot的值,并且路徑P1. · · Pq (202)根據(jù)H1來確定。(下文討論將H1轉(zhuǎn)換成P1. ..Pqo )路徑指定將應用于Kstakt的一連串熵重新分布操作。在示例性實現(xiàn)方式中,將消息標識符H1分解成Q個部分P1, P2, , Pqo在示例性分解中,每個部分Pi是來自O(shè)至(b-ι)的整數(shù)(例如,如果b = 4,則每個Pi是兩位值(O、
      1、2或者3))。類似地,如果b = 2,則每個Pi是單個位(O或者I)。因此,路徑部分P1... Pq可以用來通過應用函數(shù)f0(),ちO,· · ·,しO以產(chǎn)生促成IWpath的多個中間密鑰來如下指定從Kstakt到
      Kstaet, path 的具體路徑。首先,將函數(shù)fp,應用于Kstakt(203)以產(chǎn)生中間密鑰KstartsP1,繼而對Kstart,P1*用 ρ2以產(chǎn)生中間密鑰Kstart,P1,P2 (204),并且以此類推直至對中間密鑰Kstart,P1,P2,... ,Pq., (205)應用fp<3以產(chǎn)生最后導出的密鑰kstart,p,,p2,..., Q
      (206)。注意,每個中間密鑰的導出依賴于至少ー個前代密鑰(例如,在圖2的情況下為它的直接父代)和消息標識符的相關(guān)部分。為求便利,應當用符號表示Kstakt,_(指示通過始于密鑰Ks■井且遵循PATH而達到的密鑰)表示這ー最后導出的密鑰。類似地,在圖I的步驟103的情況下,最后導出的密鑰(向Kmessme分配的消息密鑰)表示為Kroot,Hp因為起始密鑰事實上為Kkjot并且路徑事實上為P1, P2,. . .,PQ,這簡單地是H1的分解。(在備選實施例中,可以例如通過散列化Kroot,H1來根據(jù)Kroot,H1.導出Kmessme。在任一方式中,Kmessage、基于KROOlHr )在步驟104,基于所述消息密鑰Kmessme使用至少ー個密碼密鑰來加密數(shù)據(jù)段從而根據(jù)輸入段D=D1, , ^產(chǎn)生密文E = E1, , Ep在圖3中示出了用于步驟104的示例性實施例,該圖描繪了在計算加密段E1, . . . , El時涉及到的步驟和狀態(tài)。圖3的過程使用Kmessme以計算L個個別段加密密鑰Ki (i = I至L),每個密鑰用來加密秘密消息數(shù)據(jù)D的對應段Di (i = I至L)。首先,將函數(shù)g()應用于Kmessme以產(chǎn)生KJ302)(將用于第一段的加密密鑰)。繼而,將函數(shù)g()應用于密鑰K1以產(chǎn)生K2(用于第ニ段的加密密鑰(303)),并且以此類推。最后,將函數(shù)g()應用于密鑰Km以產(chǎn)生!^(用于最后段的加密密鑰(305))。將這ー類型的過程稱為密鑰鏈接,因為加密密鑰相互鏈接。在已經(jīng)確定用于加密L段的L個密鑰K1,...,Kl之后,段的加密如下進行。首先,處理最后(第L個)段,其中向ENCO函數(shù)的明文輸入(306)是與通過在密碼上散列化整個明文D1. . . Dl而計算的消息完整性值級聯(lián)的第L個數(shù)據(jù)段隊。(包括D1. . . Dl的散列是可 選的;實施例可以省略這一點或者級聯(lián)其它數(shù)據(jù)(比如‘0’字節(jié)序列或者某ー其它形式的填充))。這ー第L個明文段由密鑰Kl加密以產(chǎn)生加密段EJ307)。接著,在(308)通過將散列函數(shù)h O應用于も、向數(shù)據(jù)段!附加這一散列值并且使用結(jié)果作為向第L-I段的加密輸入來處理第L-I段。在(309),繼而使用密鑰IV1來加密第L-I個明文段以產(chǎn)生加密段Eu。針對其它段重復這ー過程。例如,對應于第二明文段的加密輸入(310)由后接h (E3)(第三加密段的散列)的第二數(shù)據(jù)段D2組成,并且繼而使用密鑰K2來加密輸入(310)以產(chǎn)生加密段E2 (311)。最后,對應于第一明文段的加密輸入(312)由后接h (E2)(第二加密段(311)的散列)的第一數(shù)據(jù)段Dl組成,繼而使用密鑰K1來加密輸入(311)以產(chǎn)生加密段E1 (313)。(作為前述的變體,無需加密后續(xù)段散列(例如,可以通過加密Di、繼而級聯(lián)加密結(jié)果與Ei+1的散列來形成Ei)。)加密段E1. . .E^形成密文E。繼而完成圖I中的步驟104。在計算Ei時使用每個Ei+1的散列有效地將加密值鏈接在一起,這適于使解密設(shè)備能夠在解密缺陷段之前檢測修改(或者缺陷)的密文段。將這稱為“密文散列鏈接”。在上文所示的示例中,每個密文段Ei(l<i<L)依賴于下一密文段的散列(例如,驗證器V用來認證第一密文段(E1)的散列,繼而E1 (如果必要則在解密成D1之后)產(chǎn)生E2,的預期散列。類似地,E2(如果必要則在解密之后)產(chǎn)生段E3的散列),并且以此類推。注意,當所有數(shù)據(jù)在一段中(即L = I)時(例如,由于輸入消息小或者運用加密過程ENCO (比如圖13中所示的過程))仍然可以執(zhí)行圖3的過程。對于L = I的情況,僅需K1并且K1 = g(Kmessage)。備選地,Kmessme可以直接用作K1,在該情況下可以完全省略操作g()。如上文描述的那樣,包括D1..隊(在該情況下將僅為D1,因為L= I)的散列是可選的。該過程的結(jié)果是E = E1,因為這是僅有的段?;仡檲D1,在已經(jīng)計算數(shù)據(jù)段Di之后,計算如下驗證器V,該驗證器將使加密消息的已授權(quán)接收方能夠在解密之前認證密文。首先,將值H2計算(105)為第一加密段E1的散列?;仡櫟谝欢蜤1并入所有其它段的散列。因此,E1的散列實際上反映所有段(包括段E1)的內(nèi)容并且可以用來驗證段都尚未改變。(可選地,除了 E1之外,向產(chǎn)生H2的散列的輸入也可以包括關(guān)于消息的附加信息(比如長度、版本號、發(fā)送方身份、N的值等))。接著,解密設(shè)備使用秘密密鑰以計算V (106),該V是消息標識符和明文段Ei的驗證器。使用至少ー個密文段的散列(例如,散列H2 = Ii(E1)和初始秘密(例如,Kmessme或者如在以下段落中描述的其它值))來計算驗證器V??梢允褂脠D2中所描述的防泄漏的、基于密鑰樹的密鑰導出過程以起始密鑰Kstakt為Kmessme和使用H2確定路徑來執(zhí)行V的計算(106)。因此,V的導出包括計算促成V的多個相繼中間值,其中每個值依賴于至少ー個前代(例如,在圖2的情況下為它的父值)和散列(例如,H2)的相關(guān)部分。注意,函數(shù)もO、值b等可以(但是并非必須)與在(103)中使用的函數(shù)も()、值b相同。這ー過程造成導出密鑰KLmessage,h2,該密鑰是(或者被進ー步處理以形成)驗證器V。前文描述在導出驗證器時始于Kmessme,但是備選實施例可以始于不同值。例如,在步驟104的密鑰Kmes■和在步驟106的密鑰Kmessme可以互不相同,但是二者均根據(jù)Kroot,Hi:來導出。類似地,可以根據(jù)在步驟104使用的Kmessme導出在步驟106使用的密鑰或者反之亦然,或者可以運用不同基本密鑰(除了 Kmot之外)作為KSTAKT。當然,Kmot本身可以甚至用作Kstakt (例如,如果H2是N和/或H1和一個或者多個密文段的散列)。
      驗證器如在本專利中利用的那樣是如下可驗證密碼證據(jù)某一推定密文是對與特定消息標識符相關(guān)聯(lián)的ー些明文消息數(shù)據(jù)的加密的未修改版本,并且由具有對秘密密碼值的訪問權(quán)的實體產(chǎn)生。在步驟106構(gòu)造的驗證器可以便利地由接收方(比如解密設(shè)備)以如下方式驗證,該方式避免易受差分功率分析和有關(guān)外部監(jiān)視攻擊。此外,驗證器創(chuàng)建過程(即執(zhí)行步驟106)也使加密設(shè)備能夠避免易受差分功率分析和有關(guān)外部監(jiān)視攻擊。在計算驗證器之后,加密過程完成。在步驟107,輸出結(jié)果。輸出數(shù)據(jù)由為了使接收方能夠?qū)С鱿俗R符而需要的信息(如果存在(例如,臨時數(shù)N))、驗證器V和加密的結(jié)果E (包括加密段E1... En)構(gòu)成。通過組合密鑰鏈接與密文散列連接,這ー類型的加密過程能夠產(chǎn)生具有消息認證的在密碼上為強的輸出,而又避免以如下方式重用位于加密設(shè)備中的秘密密鑰,這些方式將有助于對加密設(shè)備不利的差分功率分析和有關(guān)攻擊。以如下形式創(chuàng)建加密結(jié)果,該形式使解密設(shè)備能夠執(zhí)行解密而不以如下方式重用秘密密鑰,這些方式將有助于對解密設(shè)備不利的差分功率分析和有關(guān)攻擊。密鑰樹過程限制在形成Kmess■和驗證器V時重用密鑰,而密文散列鏈接方法限制使用在數(shù)據(jù)加密中使用的密鑰。下ー節(jié)說明輸出數(shù)據(jù)如何可以隨后由解密設(shè)備解密。解密圖4示出了對應于圖I和圖3的示例性加密過程的示例性解密過程。如更早所言,這要求解密設(shè)備和加密設(shè)備二者具有導出相同消息標識符(例如,因為每個設(shè)備知道臨時數(shù)N,所以它可以計算H1).基本秘密密碼值Kmot、密碼函數(shù)f()、g()和h()的能力。示例性解密過程將使用圖2中描繪的相同密鑰導出過程(和密鑰鏈接)。示例性解密過程在步驟400始于獲得(例如,通過非信任數(shù)字接ロ )對加密的推定結(jié)果(即消息標識符(例如,臨時數(shù)N)、驗證器V和包括段E1,. . .,En的加密的結(jié)果E)。在步驟401,設(shè)備接著通過散列化接收的臨時數(shù)N來計算值氏。注意,除非不正確地接收臨時數(shù),否則導出的H1將等于在加密過程中使用的氏。在步驟402,解密設(shè)備通過散列化段E1 (并且如果先前在加密期間使用則散列化向H2的導出中并入的關(guān)于消息的其它信息)來計算值H2。在步驟403,設(shè)備嘗試使用圖2中描述的防泄漏的、基于密鑰樹的密鑰導出過程以Kstakt = Keoot并且PATH = H1來計算消息密鑰KMESSAeE。在步驟404,設(shè)備通過使用與加密設(shè)備相同的防泄漏的、基于密鑰樹的密鑰導出過程(例如,使用密鑰Kstakt = Kmessage并且PATH=H2的圖2中的過程)來計算預期驗證器V’。在步驟405,將計算出的值V’與接收的驗證器V進行比較。如果預期驗證器V’未與提供的驗證器V匹配,則該過程以錯誤終結(jié)(步驟406),因為可能已經(jīng)破壞或者惡意修改了提供的數(shù)據(jù)或者某一其它錯誤已經(jīng)出現(xiàn)。如果在步驟405的校驗成功,則該過程前進到步驟407,其中將計數(shù)器i初始化成值I、將密鑰寄存器K初始化成計算g(Kmessme)的結(jié)果(該結(jié)果是用于解密第一加密段El的密鑰(即在圖3中標注為302的K1的值))。同樣在步驟407,將變量H初始化成H2。繼而在如圖4中所示的循環(huán)中執(zhí)行以下操作。首先計算待解密的下一密文段的散列(即Ii(Ei))并且比較該散列與預期散列H(步驟408)。如果比較失敗,則已經(jīng)變更了加密段,因而該過程以錯誤終結(jié)(409)并且不執(zhí)行進一歩解密。如果比較在步驟408成功,則在步驟410利用密鑰K使用解密函數(shù)DECO來解密段Ei以產(chǎn)生解密段,該段被解釋為包含明文Di、繼而為下ー密文段的推定散列。將H設(shè)置成這ー推定散列值。接著,在步驟411,執(zhí)行校驗以查看是否已經(jīng)解密了所有L段(即計數(shù)器i是否等于L)。如果計數(shù)器尚未達到L,則在步驟412遞增計數(shù)器i并且通過計算K = g(K)將寄存器K更新成用于下一段的解密密鑰,并且從步驟408向前重復該過程。如果步驟411確定i已經(jīng)達到L,則在步驟413執(zhí)行校驗以查看H是否等于預期填充數(shù)據(jù)(例如,D1... ^的散列)。如果這一校驗失敗,則解密以失敗 狀況結(jié)束(414)。如果校驗成功,則解密過程成功并且在步驟415返回恢復的解密的輸出D=D1. · · Dl ο注意,在這ー實施例中,解密過程可以用流方式(即解密設(shè)備可以初始獲得N、V和E1、繼而一次一個地接收剩余段E2,. . . ,El)來完成,并且仍然能夠?qū)崿F(xiàn)上文概括的步驟。例如,如果解密設(shè)備缺乏用于保持整個消息的充分存儲器,或者如果解密的數(shù)據(jù)的初始部分需要在已經(jīng)接收和解密所有數(shù)據(jù)之前可用,則流操作是有用的。第二示例性實施例本節(jié)描述用于可驗證防泄漏加密和解密的通用技術(shù)的第二示例性實施例。與使用密文散列鏈接的第一示例性實施例對照,第二示例性實施例使用明文散列鏈接。然而,在這兩種情況下,在加密設(shè)備和解密設(shè)備二者控制密鑰重用以防止差分功率分析和有關(guān)攻擊。加密在為求簡潔而描繪為組合的過程圖和狀態(tài)圖的圖5中示出了由加密設(shè)備進行的加密的第二示例性實施例。加密設(shè)備創(chuàng)建或者獲得待加密的消息D和消息標識符N(該標識符可以是計數(shù)器、隨機生成的值、明文散列等)。將輸入消息D劃分成段D1, . . .,^的序列(但是允許L = I),并且這些段用來創(chuàng)建明文段B1,...,如下所述。首先,通過級聯(lián)消息段D1與任何所需消息數(shù)據(jù)(表示為X,該數(shù)據(jù)可以包括諸如長度L、消息標識符N、事務標識符或者計數(shù)器等元素)的散列來形成段B1 (501)。接著,通過級聯(lián)D2與h(B1)(即B1的散列)來形成B2(502)。繼而,通過級聯(lián)Di與的散列來形成每個后續(xù)Bi直至Bh。最后,通過級聯(lián)來形成最后的明文段 Bl (504)。該過程的接下來的步驟(505-508)使用密鑰鏈接過程來生成用于每個明文段的加密密鑰,從而使得與第一示例性實施例相似,每個加密密鑰直接或者間接地基于消息密鑰。在第二示例性實施例中,將第一加密密鑰K1簡單地設(shè)置成通過使用如圖2中描述的防泄漏的、基于密鑰樹的密鑰導出過程以Kstakt = Keoot和PATH = h(N)來計算h(N)并且繼而も=
      ^MESSAGE — Kroot,h (N)
      來導出(505)的消息密鑰Kmessme的值。因此,第二密鑰K2是計算g(ig的結(jié)果(506)。重復這ー過程,從而使得將第L-I個密鑰(Kh)計算為g(KL_2) (507),并且將最終段密鑰ん計算為g (Kl^1) (508)。因此,每個密鑰Ki基于消息密鑰Kmessme (例如,等于K
      MESSAGE 或者使用 Kmessage 來導出)。該過程中的下一步驟是用對應的密鑰K1,...ん加密每個明文段B1,. . . ,Bl以產(chǎn)生加密段E1, ···,El。例如,通過用K1加密B1來創(chuàng)建加密段E1 (509),通過用K2加密B2來創(chuàng)建E2 (510),并且以此推論,以通過用Km加密B η來創(chuàng)建Em (511),并且通過用も加密來創(chuàng)建も(512)。加密的結(jié)果E由段E1,...,Ej勾成。
      該過程中的下一歩驟是計算用于加密的驗證器V(513)。首先,散列函數(shù)h O用來計算h (N I IE11 I. . . Iel) I |h (Bl)),其中“ 11 ”表示級聯(lián)。接著,計算Z =h(N| IE1 ... IelI Ih(Bj),繼而使用防泄漏的、基于密鑰樹的密鑰導出過程(例如,如圖2中所描述的,以Kstakt = Keoot和PATH = Z)來計算K·, z。繼而,將驗證器V計算為密鑰樹結(jié)果的散列(即h(K_T,z))。最后,提供加密過程的結(jié)果,該結(jié)果包括N、h(BJ、E和驗證器V(514)??梢栽谄渲休斎霐?shù)據(jù)D通過流來到達或者其中出于其它原因而不能一次全部處理D(例如,由于存儲器限制)的系統(tǒng)中運用上述加密過程。在這ー情況下,加密設(shè)備通過獲得N、h⑴和K1來開始。此外,用N初始化運行散列計算。I.創(chuàng)建或者獲得N2.初始化運行散列計算3.令 H = h (X) 4.令 K = KE00Tj h(N)5.用N更新運行散列計算6.令 i = I7.接收輸入數(shù)據(jù)Di (例如,流輸入)8.創(chuàng)建Bi = Di與H的級聯(lián)9.令 H = h (Bi)10.創(chuàng)建 Ei = ENC (K, Di)11.用Ei更新運行散列計算12.輸出 Ei13.遞增 i14.如果存在更多輸入數(shù)據(jù),則去往步驟715.用H更新運行散列計算16.完成運行散列計算并且在Z中存儲17.計算 V = h (KE00Tj z)18.輸出 H (其等于 h (Bl)、N、V)解密在圖6中圖示了解密的過程。在步驟600,解密設(shè)備接收(通常從非信任接ロ)接收加密過程的推定結(jié)果(即E、h (BJ、臨時數(shù)N和驗證器V)。解密設(shè)備將E劃分成E1,...,も、將計數(shù)器i初始化成1,并且將寄存器H設(shè)置成接收的值散列h (Bl)。還接收或者確定消息L的長度(例如,如果I千字節(jié)的段大小用于除了可以少于I千字節(jié)最后分段之外的所有分段,則L是消息以千字節(jié)為單位的向上取整的長度)。在步驟605,解密設(shè)備計算Z =h(NI Ie1I I... I IelI |h),其中“11”表示級聯(lián)。在步驟(610),解密設(shè)備使用圖2中描述的防泄漏的、基于密鑰樹的密鑰導出過程以根為Kstakt = Keoot和PATH = Z來計算Κ·τ,ζ的值,并且繼而散列化結(jié)果以產(chǎn)生h(K_T,z)。在步驟620,它比較計算的h (KMOT, z)與接收的驗證器V。如果結(jié)果不等于V,則存在數(shù)據(jù)破壞并且該過程停止于611而不執(zhí)行任何解密。如果校驗成功,則在步驟620,解密設(shè)備計算h (N),繼而用如下計算的結(jié)果初始化密鑰寄存器K并且將計數(shù)器i設(shè)置成1,該計算使用圖2中描述的防泄漏的、基于密鑰樹的密鑰導出過程以Kstaet = Keoot 和 PATH = h (N)來計算 Kkqqt, h(N)。接著,在循環(huán)中執(zhí)行以下操作在步驟630,用密鑰寄存器K中的密鑰解密段Ei以產(chǎn)生由數(shù)據(jù)段i和散列值構(gòu)成的明文段も。在步驟640,校驗來自解密的當前段的散列。對于第一段(即i = I),比較散列與h(X),其中X由與在加密期間的X相同的字段構(gòu)成。對于在第一段之后的段(即i> I),比較來自Bi的散列與先前段的散列(即ヒ㈨べ))。如果比
      較失敗,則解密過程在步驟641失敗。否則,在步驟650,向輸出緩沖器(例如,在RAM中)添加Bi的消息部分(即Di),并且通過計算g(K)、繼而在密鑰寄存器K中存儲結(jié)果來向下一段密鑰推進K。還將計數(shù)器i遞增I。在步驟660,比較i的值與L,并且如果i的值未超過L,則解密過程循環(huán)回到步驟630。否則,解密過程完成,并且在步驟670,其中比較最后的明文段的散列(即h(Bj)與接收的散列H。如果在步驟670的比較失敗(即值不相等),則錯誤已經(jīng)出現(xiàn)并且解密失敗(步驟671)。否則,在步驟680中輸出結(jié)果數(shù)據(jù)D1,...,隊。在這ー實施例中,鏈接明文的散列而明文段Bi包含明文Bh的散列。這ー鏈接盡管對于防泄漏而言并非嚴格必需,但是提供如下附加屬性可以檢測在解密過程期間出現(xiàn)的任何故障,因為明文被驗證為與加密的明文相同的明文。因此,這ー實施例有利于在其中有可能破壞解密過程的環(huán)境中使用。系統(tǒng)、應用和變體到目前為止,本專利已經(jīng)將ー種用于防泄漏的加密和解密的通用技術(shù)與該技術(shù)的一些示例性實施例一起描述。這ー節(jié)將描述其中可以利用前述內(nèi)容的一些示例性系統(tǒng)和/或應用以及上文描述的示例性實施例的方面的附加變體。安全防火墻加載圖7示出了將可驗證、防泄漏密碼術(shù)應用于在中央處理單元(CPU)上安全地加載敏感固件作為例如所謂的片上系統(tǒng)(SoC)的部分。為求便利,根據(jù)上下文,參考號可以指代過程中的步驟和/或由這樣的過程步驟使用(或者產(chǎn)生)的量。在這ー實施例中,SoC由包含CPU(703)和各種類型的存儲器的單個集成電路(700)構(gòu)成。存儲器可以包括而不限于隨機存取存儲器(RAM) (701)(可以從該RAM執(zhí)行代碼)、只讀存儲器(ROM) (704)(該ROM包含信任的自引導代碼)和秘密狀態(tài)存儲存儲器(702)(該存儲器保持共享的密碼秘密Kkjot)??梢允褂枚喾N技木,比如而不限于熔斷器/防熔斷器、后備電池RAM和EEPR0M,來實施密鑰存儲儲存器。SoC可以具有可以從(例如,潛在地在對手的控制和/或觀測之下的)非信任源接收功率的外部功率輸入(707)。也可以接收外部供應的時鐘(708)(并且該時鐘可以與PLL—起用來形成附加時鐘)。SoC具有密碼硬件部件(705),該部件具有用于數(shù)據(jù)加密和解密的AES引擎、散列函數(shù)引擎(比如而不限于SHA-I或者SHA-256或者基于AES的散列函數(shù)引擎)和基于圖2的防泄漏的、基于密鑰樹的密鑰導出過程的實現(xiàn)方式,而使用散列函數(shù)和/或AES功能或者它們的變體來實施函數(shù)も(),...,U)。本領(lǐng)域技術(shù)人員應當清楚,在其它實施例中,密碼硬件部件(705)的全部功能或者其某一子集可以用軟件(例如,由CPU)來執(zhí)行。響應于從ROM中的信任的自引導代碼自引導,SoC從在這一實施例中為閃存(709)的外部非信任存儲設(shè)備通過非信任接ロ(706)加載它的敏感軟件/數(shù)據(jù)。為了保護敏感軟件/數(shù)據(jù)以防公開或者未授權(quán)修改,由使用共享的秘密密碼值Kmot的設(shè)備制造商或者其它代碼簽發(fā)者使用可驗證的防泄漏技術(shù)(例如,如圖I或者圖5中所示)來加密它。加密結(jié)果存儲于閃存(709)中。SoC首先從閃存(709)向它的內(nèi)部RAM(701)加載加密的代碼/數(shù)據(jù)。它繼而執(zhí)行防泄漏解密(例如,如圖4中所示),其中在存儲于ROM (704)中的信任自引導代碼中在密碼硬件部件(705)中實施并且使用來自密鑰庫(702)的共享秘密密鑰Kkjot來執(zhí)行該過程。如果成功,則這ー過程在RAM存儲器(701)內(nèi)創(chuàng)建繼而可以執(zhí)行的驗證和解密的敏感代碼/數(shù)據(jù)映像。在解密過程失敗的情況下,清除RAM中的加密的代碼(數(shù)據(jù))(和任何部分解密的代碼/數(shù)據(jù))并且操作在需要時從開始重啟。
      ·
      在對這ー實施例的可選增強中,通過在設(shè)備的將向其上加載軟件的熔斷器、后備電池存儲器或者其它本地存儲中存儲最小可接收軟件版本號來補充安全性。將向設(shè)備上加載的所有軟件將攜帯版本號,并且設(shè)備將僅接受版本號大于最小值的軟件。此外,一些軟件版本可以具體指令SoC以更新最小可接受軟件版本號,由此防止軟件惡意回滾至視為不可接受的先前版本??梢元毩⒂诳沈炞C的防泄漏操作(例如,作為其附件)實施前述防回滾方法。備選地,防回滾方法可以實施為消息標識符的部分、驗證器或者在可驗證的防泄漏操作中使用的其它安全量。本領(lǐng)域普通技術(shù)人員將容易認識到SoC應用并不限于這里呈現(xiàn)的具體架構(gòu),并且可以保護如下SoC或者其它設(shè)備,這些SoC或者其它設(shè)備具有不同內(nèi)部架構(gòu)和/或來自圖7中呈現(xiàn)的實施例的部件。例如,圖8示出了將可驗證的防泄漏密碼術(shù)應用于安全處理器架構(gòu)(800)。為求便利,根據(jù)上下文,參考號可以指代過程中的步驟和/或由這樣的過程步驟使用(或者產(chǎn)生)的量。在這ー設(shè)置中,設(shè)備包含CPU、密鑰庫(該密鑰庫保持內(nèi)部秘密狀態(tài)(包括基本秘密密碼密鑰Kmot))??梢赃\用非易失性存儲(比如而不限于熔斷器(801))以用于存儲內(nèi)部密碼狀態(tài)。密碼硬件子部件(804)加密和/或完整性保護和/或回放保護從片上數(shù)據(jù)/指令高速緩存(803)向外部不安全RAM存儲器(806)移出的所有數(shù)據(jù),并且解密和/或完整性校驗和/或回放校驗從外部不安全RAM存儲器取得的所有數(shù)據(jù)。此外,所有代碼以加密和完整性保護的形式存儲于不安全閃存(805)中并且在帶入片上數(shù)據(jù)/指令高速緩存(803)中時被解密和完整性校驗。
      背景技術(shù)
      的示例性處理器架構(gòu),其可以通過添加可驗證的防泄漏密碼術(shù)來提高其安全性,這些密碼術(shù)包括而不限于來自IBM的Secure Blue設(shè)計(在 2006 年 4 月 6 日、標題為 “IBM Extends Enhanced Data Security to ConsumerElectronics Products”的IBM新聞發(fā)布中通告)和來自MIT的AEGIS設(shè)計(在第17屆Annual International Conference on Supercomputing 的 AEGIS Architecture forTamper-evident and Tamper-resistant Processing, Proceedings 的第 160-171 頁(2003)中描述)。
      使用可驗證的防泄漏密碼術(shù)通過提供保護以防監(jiān)視攻擊來明顯改善現(xiàn)有處理器設(shè)計的安全性。具體而言,這ー實施例增強密碼硬件子部件(804)以包括散列功能和密鑰樹處理能力,該能力重用現(xiàn)有安全處理器設(shè)計的(例如,AES)加密能力并且實施第一示例性實施例的步驟和方法以創(chuàng)建安全防泄漏安全處理器。具體而言,使用防泄漏加密過程(例如,如圖I中所示)和從非信任閃存(805)讀取的任何代碼來加密從高速緩存(803)向RAM存儲器(806)寫入的任何數(shù)據(jù),并且使用圖4中概括的防泄漏解密過程來解密非信任RAM。當向特定段寫入數(shù)據(jù)時,遞增對應于段的計數(shù)器,并且在用于段的加密和/或完整性校驗創(chuàng)建過程中并入計數(shù)器值、由此實現(xiàn)檢測涉及到替換舊數(shù)據(jù)的攻擊。FPGA位流加載將向現(xiàn)場可編程門陣列(FPGA)中加載的邏輯經(jīng)常包含需要被保護以防公開或者復制的高度敏感商業(yè)秘密、密碼秘密和/或其它敏感信息。通常從外部源(比如而不限于閃存設(shè)備或者CPU或者某一其它來源(907))向FPGA供應這ー加載的邏輯或者升級的邏輯作為位流。ー些FPGA包含用于存儲配置數(shù)據(jù)的非易失性存儲器,而其它FPGA每當將芯片 上電時必須重載。現(xiàn)有FPGA具有通常使用后備電池存儲器中保持的或者本地存儲(比如使用片上閃存、EEPROM或者熔斷器)的密鑰來解密位流的能力。FPGA在向存在于FPGA內(nèi)的可編程分片中安裝供應的加密的位流之前(或者之吋)解密它??梢詫ξ涣鹘饷苓^程嘗試差分功率分析攻擊和有關(guān)的外部監(jiān)視攻擊,從而引起嚴重的安全風險,因為成功攻擊可以造成公開位流解密密鑰和/或位流本身。參照圖9,可驗證的防泄漏密碼術(shù)可以用來在FPGA上創(chuàng)建安全位流解密能力。在解密之前,(使用軟件、硬件或者其某ー組合的)外部設(shè)備使用防泄漏加密過程(例如,如在第一示例性實施例中所描述的)來加密敏感位流從而產(chǎn)生加密位流。加密位流可以位于(907)非信任存儲器(比如外部閃存或者硬盤驅(qū)動器)中或者從非信任源(比如CPU等)被取回。在FPGA內(nèi),用于防泄漏解密的密碼秘密Kkqqt保持于密鑰庫(902)中,該密鑰庫存儲內(nèi)部秘密狀態(tài)并且可以使用比如而不限于熔斷器、后備電池RAM(902,903)、EEPR0M、閃存等技術(shù)來實施。FPGA(900)通過接ロ(906)接收加密位流。例如,可能已經(jīng)使用了第一實施例或者第二示例性實施例(對應于圖I和圖5)中的任一實施例來加密這一位流。如果圖I的實施例用于加密,則FPGA首先接收臨時數(shù)N、驗證器V、長度L和初始段民。E1存儲于加密段緩沖器(905)中。使用如上文描述的防泄漏的解密過程(例如,見圖4)來計算E1的散列,并且用K_T、L和散列來驗證驗證器V,從而產(chǎn)生(如果成功)Kmessace或者致命錯誤(在該情況下,該過程暫停)。如果成功,則FPGA使用段解密處理部件(904)以對E1-行防泄漏解密過程。E1的解密產(chǎn)生被加載、驗證和解密的段E2的散列。該過程一次繼續(xù)一段,直至最后段被解密和驗證。如果錯誤出現(xiàn),則該過程暫停并且擦去所有部分FPGA解密數(shù)據(jù)。(響應于失敗,該過程可以從開始再次重啟。)一個或者多個狀態(tài)寄存器910用于追蹤位流加載過程的狀態(tài)(例如,追蹤過程是否是在進行中、失敗或者完成)。也可以導出狀態(tài)以用于診斷目的和用于由外部部件使用。一旦已經(jīng)成功加載所有段,則現(xiàn)在配置并且可以使用FPGA(例如,F(xiàn)PGA現(xiàn)在可以允許I/O、鐘控等應用于加載的位流映像)??梢宰柚笷PGA操作直至完全加載位流(例如,以避免展現(xiàn)關(guān)于不完整的FPGA映像的信息并且以避免整個電路的由于不正確FPGA配置而發(fā)生的不可預測行為)。
      如果圖5的第二實施例用于加密,則FPGA首先接收E、V、N和h (Bj,并且在緩沖器中存儲E。FPGA的段解密處理部件904繼而使用圖6中描述的方法以驗證和解密所提供的加密段。狀態(tài)寄存器(910)用來跟蹤位流加載、驗證和解密過程的狀態(tài),并且任何嚴重錯誤造成暫停該過程和擦去任何部分解密的數(shù)據(jù)。網(wǎng)絡通信和其它基于分組的應用圖10示出了將可驗證的防泄漏密碼術(shù)應用于保護網(wǎng)絡通信免受外部監(jiān)視攻擊。在這ー實施例中,諸如設(shè)備A(IOOO)、設(shè)備B(1030)和設(shè)備C、D、E等(1040)多個網(wǎng)絡設(shè)備通過網(wǎng)絡(1020)相互通信。這些通信中的一些或者所有通信可以包含敏感信息,從而使它對于加密和認證數(shù)據(jù)有用。另外,要求這些設(shè)備中的一些設(shè)備(比如在這ー實施例中為設(shè)備A)保護它們的密碼計算和密鑰免受外部監(jiān)視攻擊。設(shè)備A具有密鑰庫(1001),該密鑰庫用于存儲與它需要與之通信的其它設(shè)備的共 享的密碼根密鑰的表。可能先前已經(jīng)存儲或者可以協(xié)商(例如,使用公共密鑰密碼術(shù))這 些密鑰。用于使用公共密鑰密碼系統(tǒng)以協(xié)商密鑰的方法在背景技術(shù)中公知并且在協(xié)議(比如SSL和IPSEC)中被利用。這ー實施例可以容易地集成到這些或者其它協(xié)議中。待加密的出站分組或者數(shù)據(jù)段源于應用、操作系統(tǒng)、驅(qū)動器或者其它部件(1002)并且進入明文分組緩沖器(1003)。繼而使用段加密/解密處理部件(1004)來處理每個分組,其中使用可驗證的防泄漏加密算法(例如,如圖I中所描述)來加密它。用于這ー加密的根密鑰是從密鑰庫(1001)獲得的在設(shè)備A與目的地設(shè)備之間的共享密鑰。對于這ー處理,消息標識符臨時數(shù)N可以是包括計數(shù)器的任何(優(yōu)選為)唯一值。例如,臨時數(shù)可以等于分組標識符、TCP序列號(該序列號有可能并入附加最高有效位以防止溢出)、值的散列、隨機值等。對于每個分組,防泄漏加密操作產(chǎn)生加密段和驗證器V。臨時數(shù)可以被傳輸或者可以是隱式的(例如,基于先前接收的分組數(shù)目)。將加密段、V和任何其它所需數(shù)據(jù)組裝成傳出分組并且移向網(wǎng)絡接ロ部件(1006),并且繼而移向網(wǎng)絡(1020)以用于向適當目的地設(shè)備尋路由。對于入站加密分組,假設(shè)發(fā)送設(shè)備已經(jīng)執(zhí)行了如上文描述的加密。這些分組由網(wǎng)絡接ロ部件(1006)從網(wǎng)絡(1020)接收,并且繼而移向密文分組緩沖器(1005)。每個分組繼而由段加密/解密處理部件(1004)處理,其中執(zhí)行防泄漏解密過程(例如,如圖4中所描述的)。對于這一解密過程,(i)從密鑰庫(1001)獲得在接收與發(fā)送設(shè)備之間的共享密鑰(例如,Keoot或者用來導出Κ·τ的前身),(ii)從分組恢復或者以別的方式確定臨時數(shù)N,(iii)按照N和加密分組驗證驗證器,并且(iv)如果驗證器正確則解密分組數(shù)據(jù)。在設(shè)備A與發(fā)送設(shè)備之間的共享密碼密鑰可以用作Κ·τ。如果解密或者驗證失敗,則丟棄分組。否則,響應于成功解密,可以向應用、操作系統(tǒng)、驅(qū)動器等提供解密結(jié)果。在圖11和圖12中概括這ー過程。圖11圖示了可驗證分組級防泄漏加密過程,并且圖12圖示了對應的解密過程。可驗證分組級防泄漏加密過程如下在給定輸入分組數(shù)據(jù)D (1100)而源和目的地共享基本密碼值Kktot時,在步驟1101中生成消息標識符N(例如,使用隨機源和/或存在于分組D中的信息和/或某一分組標識符(比如與通信協(xié)議相關(guān)聯(lián)的序列號))。對于TCP/IP通信,可以根據(jù)會話標識符、序列號(可選地有附加最高有效位以防止翻轉(zhuǎn))、源端ロ、目的地端口和/或其它值。接著,在步驟1102中,計算N的散列。(可選地,可以省略這ー步驟并且可以在導出Kmes■吋使用N而不是h (N)。)隨后,在步驟1103中,使用圖2中描述的防泄漏的基于密鑰樹的密鑰導出過程以Kstakt = Keoot和PATH = h(N)來計算消息密鑰Kmessme = Keoot, h(N)。用密鑰Kmessme加密輸入分組數(shù)據(jù)D以產(chǎn)生加密的結(jié)果E(1104)。接著,計算E的散列(1105)(例如,使用SHA-256)。繼而,使用圖2中概括的防泄漏的基于密鑰樹的密鑰導出過程以Kstakt = Kmessage和PATH = h(E)將用于加密的驗證器V計算為Kmessme, h(E) (1106)。最后,形成輸出分組以包括V、E和N(或者為了使接收方能夠恢復N而需要的任何其它信息(如果存在))(1107)。繼而,在分組中向遠程設(shè)備(比如通過因特網(wǎng)向遠程計算機)傳送輸出數(shù)據(jù)E。作為可選優(yōu)化,如果加密設(shè)備具有為了發(fā)送而緩沖的多個分組,則它可以同時加密多個分組,從而使得僅需單個驗證器以用于所有分組。例如,可以如圖3中所示執(zhí)行加密過程,其中每段Di為分組。以這一方式組合分組減少發(fā)送方和接收方二者需要的密鑰樹操作的次數(shù)。 在圖12中圖示了對應的可驗證分組級防泄露解密過程。在給定包括V、E、N(或者足以恢復N的數(shù)據(jù)(例如,序列號))的加密的分組和共享的密碼秘密Κ·(1200)時,解密過程如下進行首先,計算h (N)的值(1201)(或者如果加密設(shè)備直接使用N,則省略這ー步驟)。繼而,計算E的散列(1202)。接著,在步驟1203使用圖2中圖解表示的防泄漏的基于密鑰樹的方式以Kstakt = Keoot和PATH = h (N)來計算Kmessme = Keoot, h(N)。接著,使用圖2中概括的防泄漏的基于密鑰樹的過程以Kmessme = Keoot和PATH = h(E)來計算V’ = Kmessage,h(E)(1204)。隨后,解密設(shè)備校驗是否V’ = V(1205)。如果它們不相等,則針對這一分組停止處理并且丟棄分組(1206)。如果校驗成功,則用Kmessme解密E以產(chǎn)生D (明文分組)(1207)(例如,使用圖14中所示的DECO過程)。智能卡應用可驗證的防泄漏加密和解密可以實施于智能卡中(例如,結(jié)合如下協(xié)議,在這些協(xié)議中要求智能卡以安全地免受差分功率分析和有關(guān)的外部監(jiān)視攻擊的方式執(zhí)行加密和/或解密)。這樣的系統(tǒng)和協(xié)議的示例包括而不限于導出用于解密付費電視信號、付款(包括離線付款)、身份驗證/網(wǎng)絡登入、移動電話SIM卡和過境護照的密鑰(控制字)。在本專利中公開的示例性密碼技術(shù)可以用來保證在執(zhí)行這樣的協(xié)議時保護智能卡內(nèi)的秘密密鑰免受外部監(jiān)視攻擊。比如,如果智能卡實施圖3的基于密鑰樹的密鑰導出過程,從而使得Kstakt從未需要離開智能卡,則智能卡(或者其它安全芯片)也可以用來實施在更大系統(tǒng)中利用的防泄漏加密或者解密過程中的部分或者所有過程。相互認證應用在許多應用中,兩個或者更多設(shè)備需要相互認證和/或在它們之間交換敏感信息。這樣的協(xié)議的示例應用包括而不限于(i)在打印機與墨盒之間認證以保證兩個設(shè)備真實而非偽造;(ii)在機頂盒與智能卡之間認證以保證部件真實(例如,以防止引入竊取的視頻解密密鑰)在車庫門與打開者之間認證;(iv)無密鑰進入系統(tǒng)(比如可以在汽車中使用的系統(tǒng)),該系統(tǒng)認證密鑰(例如,在將車門解鎖或者啟動引擎之前);(v)由被頻繁竊取的物品(比如汽車無線電、GPS単元、蜂窩電話等)執(zhí)行認證協(xié)議以防止竊取或者操作篡改的設(shè)備;以及(vi)進入系統(tǒng)(比如在安全大樓中存在的在允許進入之前認證密鑰/ ロ令的系統(tǒng))。在這些應用中,在設(shè)備之間的挑戰(zhàn)響應協(xié)議已經(jīng)在傳統(tǒng)上用于相互認證以及設(shè)置用于交換敏感信息的共享的秘密密鑰??梢酝ㄟ^使用本專利的方法以執(zhí)行任何所需加密操作或者解密操作來構(gòu)造用于在防范DPA時執(zhí)行這些認證的簡單協(xié)議。例如,設(shè)備可以通過它的供應有效驗證器和/或解密消息的能力、使用在本專利中公開的技術(shù)來論證它的真實性。具有段內(nèi)密鑰改變的段加密和解密這ー節(jié)描述可以在實施示例性實施例(例如,如在圖3的步驟320、圖4的步驟410、圖5的步驟509、圖6的步驟630、圖11的步驟1104和圖12的步驟1207所示)時替代常規(guī)加密過程(比如在ECB或者CBC模式中的AES)而使用的ENC O操作和DEC O操作的示例性變體。在圖13和圖14中分別所示的ENCO變體和DECO變體中,為了甚至更大安全性而頻繁改變密碼密鑰。具體而言,附加密碼密鑰更新在將數(shù)據(jù)段Di加密成Ei (或者反之亦然)時出現(xiàn)。因而,將這些變體稱為實施段內(nèi)密鑰改變。 除了對ENCO和DECO的改變之外,可以如先前描述的那樣實施第一示例性實施例和第二示例性實施例中的其余操作。例如而非限制,無需改變涉及到初始消息密鑰KMESSAGE、驗證器V等的操作。圖13示出了用于加密數(shù)據(jù)段的ENCO操作的示例性實施例。圖14示出了 DEC()操作的對應的示例性實施例。在這ー實施例中,在密碼塊鏈接(CBC)模式中使用塊密碼AES來構(gòu)建這些操作,但是本領(lǐng)域技術(shù)人員應當清楚也可以使用其它塊密碼或者加密/解密原語或者加密模式。向用于段i的加密過程的輸入是段密鑰Ki (1301)和數(shù)據(jù)段Di (1310)。將輸入數(shù)據(jù)段Di (1310)劃分成子段0し1(1311)、0し2(1312)等。圖13和圖14示出了將數(shù)據(jù)段D劃分成3個AES塊的子段,但是也可以使用其它大小并且當然也可以運用除了 AES之外的算法。(更小子段增加計算開銷,而更大子段使密鑰使用于更多操作中從而增加信息泄漏的可能性。)用散列操作m()變換段密鑰Ki從而產(chǎn)生Kia (1302),該密鑰是用于第一子段Di,!的密鑰。如果將使用初始化矢量(IV) (1314),則將它與Diil的第一 AES塊X0R。(如果將不使用IV,則可以省略這ー XOR步驟。如果使用IV,則可以例如通過向驗證器計算中并入它或者通過根據(jù)經(jīng)驗證值(比如消息標識符)導出IV來認證它。)使用段密鑰Kia (1302)用AES (1315)加密(DiXORIV)的前多個位,從而形成密文子段Eia (1320)的第一部分。也將這ー密文部分與子段Diil (1311)的接下來多個位X0R,從而產(chǎn)生另ー AES輸入,隨后使用段密鑰U1302)來加密該另一 AES輸入以產(chǎn)生子段Diil (1311)的下一部分。執(zhí)行相似密碼塊連接操作以形成向也用密鑰Kia執(zhí)行的第三AES加密的輸入。三次AES操作的結(jié)果是密文子段Eia (1320)。對下ー數(shù)據(jù)子段Di,2 (1312)的第一塊執(zhí)行第四AES操作,并且使用通過將m()應用于Kia(1302)而導出的新密鑰(特別地為Ki,2 (1303))。來自處理Dia的最后密文變成用于Dii2 (1312)的第一部分的IV(1317)。加密過程繼續(xù),直至已經(jīng)加密所有s個數(shù)據(jù)子段的所有塊,從而最終產(chǎn)生加密子段Eii2 (1321),. . .,Ei,s(1322),并且其中將m()用于每個子段來導出新密鑰。最后,組裝密文子段以形成最后的密文段Ei (1330)。參照圖14,解密過程DECO是ENC()過程的反過程。經(jīng)由與用于上述加密相同的過程使用m()根據(jù)段密鑰Ki (1401)導出子密鑰1^(1402)、!^ (1403)等。將加密段Ei劃分成用子密鑰解密的子段,每個子段包括ー個或者多個AES輸入。在毎次解密操作之后,將適當IV(如果存在)或者先前密文與數(shù)據(jù)X0R。組裝最后的數(shù)據(jù)以形成子段(1420、1421、1432等),轉(zhuǎn)而組裝這些子段以形成Di (1430)。上述ENCO和DECO過程是涉及到迅速密鑰改變以便提供更大泄漏容忍度的示例。可以使用其它段加密和解密方法(包括在ECB、CBC或者計數(shù)器(例如,Galois計數(shù)器)模式中應用流密碼和/或塊密碼(比如RC4、SEAL、AES、DES、三元DES等))。對于這樣的操作(其中相同密鑰應用于段中的所有數(shù)據(jù)),在加密之前限制每段的大小以便限制用每個密鑰執(zhí)行的操作的次數(shù)由此減少對手可以觀測的用每個密鑰執(zhí)行的操作次數(shù)可以是有利的。通信信道可以用廣泛的可能方式實現(xiàn)這里描述的數(shù)據(jù)交換。例如而不限于,常規(guī)總線/接ロ (比如12(、1^6、卩(1、串行1/0(包括舊8)、?(1 Express、以太網(wǎng)等)、無線協(xié)議(比如 802. 11系列、藍牙、蜂窩電話協(xié)議、IS014443等)和芯片內(nèi)連接(比如APB、與其它觸發(fā)電路的直接連接等)都可以被使用。對于每個前述方式,發(fā)送設(shè)備和接收設(shè)備將具有可以發(fā)送、接收或者發(fā)送和接收(視情況而定)的適當接ロ(例如,前述類型的接ロ)。在解密之前的數(shù)據(jù)驗證的備選形式迄今為止呈現(xiàn)的示例性實施例已經(jīng)利用防泄漏的基于密鑰樹的導出過程(例如,如圖2中所示)以計算明文的可以在解密之前安全驗證的驗證器。盡管這一過程很好地適合于廣泛應用,但是用于創(chuàng)建值的其它技術(shù)可以發(fā)揮相似作用,并且可以在某些設(shè)置中是足夠的。例如,在一些實施例中,無需加密過程來防范外部監(jiān)視(但是解密過程需要這樣的防范)和/或可以存在用于公共密鑰數(shù)字簽署過程(比如在美國專利6,304,658中描述的過程)的算法級對策。對于這些系統(tǒng),數(shù)字簽署(數(shù)字簽名)操作可以用來構(gòu)造如下值,可以在解密時驗證該值以保證未修改密文。例如,數(shù)字簽名可以認證消息標識符和至少ー個加密段。公共密鑰數(shù)字簽署算法的示例包括而不限于RSA、DSA和橢圓曲線DSA變體(包括而不限于EC-DSA)。數(shù)字簽名的驗證無需任何敏感性信息并且因而可以在解密之前被執(zhí)行。然而,這ー靈活性換來的代價為需要加密設(shè)備內(nèi)的公共密鑰簽署邏輯和解密設(shè)備內(nèi)的公共密鑰驗證邏輯。也有可能讓驗證器(或者驗證器替代物)包括多個對稱驗證器、公共密鑰簽名或者其它元素。非依序段密鑰導出無需依序?qū)С雒荑€段(例如,圖3中的K1;K2,... KJ和后續(xù)段密鑰(圖13中的Ki,1; Ki,2等)。例如,可以在分級樹模式中導出密鑰,或者更一般地,每個密鑰可以是任何先前密鑰的函數(shù)或者可以使用密鑰樹構(gòu)造根據(jù)Kmot來獨立導出,或者可以使用其它密鑰與密鑰樹構(gòu)造的某ー組合來導出密鑰。數(shù)據(jù)傳輸和計算的重新排序可以變更數(shù)據(jù)傳輸和操作的排序。例如,圖I、圖3和圖4中描述的第一示例性實施例示出了從最后段!\向第一段D1進行的加密過程,其中每個段Di包含第i+Ι段的加密結(jié)果Ei+1的散列。針對第一加密段E1計算單獨驗證器(例如,見步驟106)。這一方式可以如圖4中所示有利于解密設(shè)備,因為它無需在解密之前緩沖整個加密結(jié)果,而加密設(shè)備必須這樣做。備選地,加密設(shè)備可以加密始于D1而結(jié)束于^的段,并且每個段Di+1包含對前ー段的加密Ei的散列。在這ー示例中,段D1(例如)由大小與散列函數(shù)的輸出長度相等的O的串擴展以指示它是第一段。繼而使用PATH = h(Ej來計算使用密鑰樹創(chuàng)建的驗證器。對于這ー變體,解密過程與圖4相似、但是在從最后加密段到第一加密段的反方向上進行。因此,加密設(shè)備不再需要緩沖數(shù)據(jù)段,但是解密設(shè)備現(xiàn)在必須這樣做。附加驗證器替代散列雖然ー些示例在數(shù)據(jù)段中示出了認證后續(xù)加密段的散列,但是后續(xù)段可以備選地攜帯它們自己的獨立驗證器。例如,圖3示出了第一數(shù)據(jù)段(312),該數(shù)據(jù)段攜帯用于驗證未改變段E2的散列h(E2)。然而,并非總是需要并且在一些情況下可以省略這樣的散列(例如,如果下一段代之以攜帶驗證器)。這有些簡化加密、但是増加計算時間,因為需要計算和校驗更多驗證器。在流應用中或者如果存儲/存儲器有限,考慮到避免需要讓后續(xù)數(shù)據(jù)可用和緩沖這樣的益處,附加計算工作變得合理。散列化中的變化在ー些圖中,多次應用單個操作(比如圖3中的h())和/或?qū)蝹€操作用于不同用途。一般并不要求這些都是相同函數(shù)。例如,不同步驟可以運用不同散列函數(shù)。散列函數(shù)的輸出可以被截短、與其它散列函數(shù)輸出組合或者以別的方式通過后處理來修改。例如,SHA-2產(chǎn)生256位輸出散列,但是可能希望更短消息標識符(比如160、128、80或者64位)。函數(shù)h()可以內(nèi)部使用SHA-2并且僅返回它的結(jié)果的ー些位。操作順序的變化一些示例性實施例指明數(shù)據(jù)元被級聯(lián)或者組合的具體順序。例如,在圖3的步驟303-312中,級聯(lián)數(shù)據(jù)Di與散列h(Ei+1)。其中在散列化之前依次級聯(lián)數(shù)據(jù)段的其它示例包括圖5的要素501-504和513、在圖3的步驟306中。這些具體排序僅為可能的排序的ー個示例,并且可以在備選實施例中利用多個其它數(shù)據(jù)排序?;跇涞拿荑€導出的變化
      如果操作(比如も)可逆,則有可能使用除了樹的頂部之外的值作為起始值。類似地,可以高速緩存計算的值(例如,如果消息標識符為計數(shù)器,則初始操作將通常不從ー個消息到下一消息改變并且因此無需被重新計算)。錯誤檢測和/或校正在本領(lǐng)域中公知的是由于在密碼設(shè)備的操作中注入故障而產(chǎn)生的不正確輸出可以產(chǎn)生關(guān)于敏感數(shù)據(jù)和密鑰的信息。在實際時,可以校驗密碼操作以幫助防止釋放可能危及秘密的不正確計算。例如,一種簡單而有效的技術(shù)是理想地將兩個(或者更多)獨立硬件處理器和實現(xiàn)方式與比較器一起使用來兩次執(zhí)行密碼操作以驗證二者(或者全部)產(chǎn)生相同結(jié)果。如果由單元產(chǎn)生的結(jié)果不匹配,則比較器將防止任一結(jié)果被使用和/或觸發(fā)其它錯誤條件。在個別密碼操作(比如散列化步驟)內(nèi),也可以運用錯誤檢測和/或錯誤校正邏輯以幫助防止或者檢測其中不正確地執(zhí)行密碼操作的情形。在本專利中公開的技術(shù)還可以附加地針對某些類型的對加密過程和解密過程的故障注入攻擊提供ー些固有防范。在加密過程期間,在基于密鑰樹的密鑰導出過程期間引入的有限或者部分錯誤將由于在這一過程內(nèi)使用熵重新分布函數(shù)而產(chǎn)生隨機的不可預測結(jié)果。具體而言,破壞的中介將通常由后續(xù)熵重新分布函數(shù)混合,這將限制對手發(fā)動如下攻擊的能力,這些攻擊利用缺陷結(jié)果。類似地,在解密期間,在密文或者消息標識符處理中引入的故障或者錯誤將一般造成拒絕驗證器。第二實施例用明文散列鏈接提供進ー步防范,因為在輸出之前獨立認證明文段以求正確。當然,還可以附加地利用操作的校驗和其它公知故障檢測技木。也可以并入自診斷功能(比如POST(上電自測)和隨機數(shù)測試)以驗證尚未毀壞密碼功能和隨機數(shù)生成能力。附加主機環(huán)境和形式因素上文描述了用于利用可驗證的防泄漏密碼術(shù)的若干示例性系統(tǒng)和應用。然而,如本領(lǐng)域技術(shù)人員將理解的那樣,上文描述的技術(shù)并不限于特定主機環(huán)境或者形式因素。實際上,它們可以使用于廣泛多種應用中,這些應用包括而不限于專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、片上系統(tǒng)(SoC)、微處理器、安全處理器、安全網(wǎng)絡設(shè)備、所有種類的密碼智能卡(包括而不限于基本上符合IS07816-1、IS07816-2和IS07816-3的智能卡(“IS07816順應智能卡”));無接觸和基于鄰近度的智能卡和密碼令牌(包括而不限于基本上符合IS014443的智能卡);存儲值卡和系統(tǒng);密碼安全保護的信用卡和借記卡;客戶忠誠卡和系統(tǒng);密碼認證的信用卡;密碼加速器;賭博和下賭系統(tǒng);安全密碼芯片;防篡改 微處理器;軟件程序(包括而不限于用于在個人計算機、服務器等上使用的程序和可以向密碼設(shè)備上加載或者在密碼設(shè)備中嵌入的程序);密鑰管理設(shè)備;銀行密鑰管理系統(tǒng);安全web服務器;防御系統(tǒng);電子支付系統(tǒng);微支付系統(tǒng)和計量器;預付費電話卡;密碼標識卡和其它身份驗證系統(tǒng);用于電子資金轉(zhuǎn)賬的系統(tǒng);自動柜員機;銷售點終端;證書簽發(fā)系統(tǒng);電子證章;門戶進入系統(tǒng);使用密碼鑰匙的所有種類的物理鎖;用于解密電視信號(包括而不限于廣播電視、衛(wèi)星電視和有線電視)的系統(tǒng);用于解密加密的音樂和其它音頻內(nèi)容(包括通過計算機網(wǎng)絡分發(fā)的音樂)的系統(tǒng);用于保護所有種類的視頻信號的系統(tǒng);內(nèi)容保護和復制保護系統(tǒng)(比如用來防止未授權(quán)復制或者使用電影、音頻內(nèi)容、計算機程序、視頻游戲、圖像、文本、數(shù)據(jù)庫等的系統(tǒng));蜂窩電話加擾和認證系統(tǒng)(包括電話認證智能卡);安全電話(包括用于這樣的電話的密鑰存儲設(shè)備);密碼PCMCIA卡;便攜密碼令牌;以及密碼數(shù)據(jù)審核系統(tǒng)。所有前述內(nèi)容例示了可驗證的防泄漏密碼術(shù)的示例性實施例和應用,根據(jù)這些示例性實施例和應用,有關(guān)變化、增強和修改將在本公開內(nèi)容的精神實質(zhì)和范圍的上下文內(nèi)是明顯的。因此,由本專利保護的發(fā)明不應限于前文公開內(nèi)容,而是按照所附權(quán)利要求來解釋。
      權(quán)利要求
      1.一種用于由設(shè)備用內(nèi)部秘密狀態(tài)加密明文數(shù)據(jù)而又限制重用密碼密鑰的方法,包括 (a)通過計算從所述內(nèi)部秘密狀態(tài)的至少部分開始并且促成消息密鑰的多個相繼中間密鑰來根據(jù)所述內(nèi)部秘密狀態(tài)和消息標識符導出所述消息密鑰,其中至少基于所述消息標識符的部分和先前密鑰來導出每個相繼密鑰; (b)使用至少基于所述消息密鑰的所述ー個或者多個密碼密鑰以加密所述明文數(shù)據(jù)的一個或者多個段以產(chǎn)生ー個或者多個加密的數(shù)據(jù)段; (c)使用秘密密鑰以計算至少基于所述加密的數(shù)據(jù)段中的一個或者多個加密的數(shù)據(jù)段并且可用于驗證所述加密的數(shù)據(jù)段中的一個或者多個加密的數(shù)據(jù)段的密碼驗證值;以及 (d)輸出所述ー個或者多個加密的數(shù)據(jù)段和所述密碼驗證值。
      2.根據(jù)權(quán)利要求I所述的方法,其中所述步驟(c)包括(i)根據(jù)至少一個所述加密的數(shù)據(jù)段計算密碼散列;以及(ii)根據(jù)至少秘密值和所述密碼散列導出驗證器,其中所述導出包括計算始于所述秘密值的多個相繼中間值,其中每個相繼值至少基于所述值中的先前值和所述密碼散列的部分。
      3.根據(jù)權(quán)利要求2所述的方法,其中在(a)中所述導出每個所述中間密鑰包括選擇熵分布操作,然后將所述熵分布操作應用于所述先前密鑰。
      4.根據(jù)權(quán)利要求3所述的方法,其中將所述消息標識符分解成多個部分,每個所述部分確定待應用的特定熵分布操作。
      5.根據(jù)權(quán)利要求4所述的方法,其中所述熵分布操作是至少依賴于以下各項的密碼散列操作(i)所述先前密鑰;以及(ii)對應于所述消息標識符的至少部分的值。
      6.根據(jù)權(quán)利要求2所述的方法,其中使用密鑰鏈接根據(jù)所述消息密鑰導出(b)中的所述密碼密鑰。
      7.根據(jù)權(quán)利要求2所述的方法,其中通過遵循經(jīng)過密鑰樹的路徑來計算(a)中的所述消息密鑰,所述路徑包括所述消息標識符。
      8.根據(jù)權(quán)利要求7所述的方法,其中通過遵循經(jīng)過密鑰樹的路徑來計算所述驗證器,所述路徑包括基于所述加密的數(shù)據(jù)段的散列。
      9.根據(jù)權(quán)利要求2所述的方法,其中(b)包括通過執(zhí)行多個熵分布操作根據(jù)所述消息密鑰導出多個所述密碼密鑰;并且進一歩(i)通過將熵分布函數(shù)應用于所述消息密鑰來計算所述密碼密鑰之一;以及(ii)通過將熵分布函數(shù)應用于多個相繼密碼密鑰中的先前密碼密鑰來計算所述密碼密鑰中的每個密碼密鑰。
      10.根據(jù)權(quán)利要求2所述的方法,其中(i)所述明文數(shù)據(jù)包括多個段;(ii)在加密僅ー個明文段時使用每個所述密碼密鑰,從而產(chǎn)生加密的數(shù)據(jù)段;并且(iii)計算基于所有所述加密的數(shù)據(jù)段的密碼散列。
      11.根據(jù)權(quán)利要求10所述的方法,其中使用散列鏈接來計算(iii)中的所述密碼散列。
      12.根據(jù)權(quán)利要求11所述的方法,其中在所述散列鏈接中,以與輸出所述加密的數(shù)據(jù)段的順序相反的順序散列化所述加密的數(shù)據(jù)段。
      13.根據(jù)權(quán)利要求2所述的方法,其中在(b)中(i)所述明文數(shù)據(jù)包括多個段,并且每段包括多個子段;并且(ii)對于每個明文子段,所述密碼密鑰中的新密碼密鑰用來加密所述子段。
      14.根據(jù)權(quán)利要求13所述的方法,還包括使用散列鏈接以基于所有所述加密的數(shù)據(jù)段計算密碼散列。
      15.根據(jù)權(quán)利要求2所述的方法,其中在(b)中i)所述明文數(shù)據(jù)包括多個段;(ii)密碼密鑰更新在段內(nèi)基礎(chǔ)上出現(xiàn);并且(iii)通過使用所述更新的密碼密鑰中的至少ー個密碼密鑰來產(chǎn)生每個所述加密的數(shù)據(jù)段。
      16.根據(jù)權(quán)利要求2所述的方法,其中每個所述相繼中間值是密碼散列操作的結(jié)果,所述密碼散列操作的輸入僅通過以下確定⑴所述相繼中間值的直接父值;以及⑵所述加密的數(shù)據(jù)段散列的一位或者兩位。
      17.根據(jù)權(quán)利要求2所述的方法,其中存在僅ー個明文數(shù)據(jù)段和僅ー個加密的數(shù)據(jù)段,并且其中所述密碼散列計算還包括數(shù)據(jù)段長度。
      18.根據(jù)權(quán)利要求2所述的方法,其中隨機生成所述消息標識符。
      19.根據(jù)權(quán)利要求2所述的方法,其中所述消息標識符為計數(shù)器。
      20.根據(jù)權(quán)利要求2所述的方法,其中所述設(shè)備是向解密設(shè)備傳輸數(shù)據(jù)分組的聯(lián)網(wǎng)通信設(shè)備。
      21.根據(jù)權(quán)利要求2所述的方法,還包括在向解密設(shè)備發(fā)送加密的數(shù)據(jù)之前認證所述解密設(shè)備。
      22.根據(jù)權(quán)利要求I所述的方法,其中所述密碼驗證值是認證所述加密的數(shù)據(jù)段中的至少ー個加密的數(shù)據(jù)段的數(shù)字簽名。
      23.一種用于由設(shè)備用內(nèi)部秘密狀態(tài)解密數(shù)據(jù)而又限制重用密碼密鑰的方法,包括 (a)接收ー個或者多個加密的數(shù)據(jù)段和密碼驗證值并且獲得與之對應的消息標識符; (b)驗證所述密碼驗證值以確定是否已經(jīng)修改了所述消息標識符或者所述加密的數(shù)據(jù)段中的至少ー個加密的數(shù)據(jù)段; (C)通過計算從所述內(nèi)部秘密狀態(tài)的至少部分開始并且促成消息密鑰的多個相繼中間密鑰來根據(jù)所述內(nèi)部秘密狀態(tài)和所述消息標識符導出所述消息密鑰,其中至少基于所述消息標識符的部分和先前密鑰來導出每個相繼密鑰;以及 (d)使用至少基于所述消息密鑰的所述ー個或者多個密碼密鑰以解密所述加密的數(shù)據(jù)的一個或者多個經(jīng)驗證段以產(chǎn)生ー個或者多個明文數(shù)據(jù)段。
      24.根據(jù)權(quán)利要求23所述的方法,其中所述步驟(b)包括 (i)根據(jù)至少一個所述加密的數(shù)據(jù)段計算密碼散列;(ii)根據(jù)至少秘密值和所述密碼散列導出預期驗證器,其中所述導出包括計算始于所述秘密值的多個相繼中間值,其中每個相繼值至少基于所述值中的先前值和所述密碼散列的部分;以及(iii)比較所述導出的預期候選驗證器與所述接收的密碼驗證值。
      25.根據(jù)權(quán)利要求24所述的方法,其中在(c)中所述導出每個所述中間密鑰包括選擇熵分布操作,然后將所述熵分布操作應用于所述先前密鑰。
      26.根據(jù)權(quán)利要求25所述的方法,其中將所述消息標識符分解成多個部分,每個所述部分確定待應用的特定熵分布操作。
      27.根據(jù)權(quán)利要求26所述的方法,其中所述熵分布操作是至少依賴于以下各項的密碼散列操作(i)所述先前密鑰;以及(ii)對應于所述消息標識符的至少部分的值。
      28.根據(jù)權(quán)利要求24所述的方法,其中使用密鑰鏈接根據(jù)所述消息密鑰導出(d)中的所述密碼密鑰。
      29.根據(jù)權(quán)利要求24所述的方法,其中通過遵循經(jīng)過密鑰樹的路徑來計算(c)中的所述消息密鑰,所述路徑包括所述消息標識符,并且其中通過遵循經(jīng)過密鑰樹的路徑來計算所述驗證器,所述路徑包括基于所述加密的數(shù)據(jù)段的散列。
      30.根據(jù)權(quán)利要求24所述的方法,其中(d)包括通過執(zhí)行多個熵分布操作根據(jù)所述消息密鑰導出多個所述密碼密鑰。
      31.根據(jù)權(quán)利要求30所述的方法,其中(i)通過將熵分布函數(shù)應用于所述消息密鑰來計算所述密碼密鑰之一;并且(ii)通過將熵分布函數(shù)應用于多個相繼密碼密鑰中的先前密碼密鑰來計算所述密碼密鑰中的每個密碼密鑰。
      32.根據(jù)權(quán)利要求24所述的方法,其中(i)所述加密的數(shù)據(jù)包括多個段;(ii)除了最后的加密的數(shù)據(jù)段之外的每個加密的數(shù)據(jù)段包括下一加密的數(shù)據(jù)段的密碼散列的表示;(iii)在解密第一加密的數(shù)據(jù)段之前計算和驗證它的密碼散列;(iv)在解密每個后續(xù)段之前計算它的密碼散列并且與在先前的加密的數(shù)據(jù)段中表示的所述散列比較;并且(V)在解密僅ー個加密的數(shù)據(jù)段時使用每個所述密碼密鑰。
      33.根據(jù)權(quán)利要求24所述的方法,其中在(d)中(i)所述加密的數(shù)據(jù)包括多個段,并且每段包括多個子段;并且(ii)對于每個加密的子段,所述密碼密鑰中的新密碼密鑰用來解密所述子段。
      34.根據(jù)權(quán)利要求24所述的方法,其中所述散列依賴于所有所述加密的數(shù)據(jù)段。
      35.根據(jù)權(quán)利要求24所述的方法,其中在(b)中所述加密的數(shù)據(jù)包括多個段;(ii)密碼密鑰更新在段內(nèi)基礎(chǔ)上出現(xiàn);并且(iii)通過使用所述更新的密碼密鑰中的至少ー個密碼密鑰來產(chǎn)生每個所述明文數(shù)據(jù)段。
      36.根據(jù)權(quán)利要求24所述的方法,其中每個所述相繼中間值是密碼散列操作的結(jié)果,所述密碼散列操作的輸入包括(A)父值;以及(B)它的對應于所述加密的數(shù)據(jù)段散列的至少部分的值。
      37.根據(jù)權(quán)利要求36所述的方法,其中向所述密碼散列操作的所述輸入僅通過以下確定(1)所述相繼中間值的直接父值;以及⑵所述加密的數(shù)據(jù)段散列的一位或者兩位。
      38.根據(jù)權(quán)利要求24所述的方法,其中存在僅ー個明文數(shù)據(jù)段和僅ー個加密的數(shù)據(jù)段,并且其中所述密碼散列計算還包括數(shù)據(jù)段長度。
      39.根據(jù)權(quán)利要求24所述的方法,其中所述預期驗證器驗證散列,其中(i)所述散列依賴于第一加密的數(shù)據(jù)段,所述第一加密的數(shù)據(jù)段并入第二加密的數(shù)據(jù)段的散列;并且(ii)所述第二加密的數(shù)據(jù)段和后續(xù)加密的數(shù)據(jù)段各自并入下一加密的數(shù)據(jù)段的散列。
      40.根據(jù)權(quán)利要求24所述的方法,其中所述消息標識符為計數(shù)器。
      41.根據(jù)權(quán)利要求24所述的方法,其中所述消息標識符是所述明文數(shù)據(jù)的至少部分的密碼散列。
      42.根據(jù)權(quán)利要求24所述的方法,其中所述明文數(shù)據(jù)包括FPGA位流。
      43.根據(jù)權(quán)利要求24所述的方法,包括使用處理器以執(zhí)行所述明文數(shù)據(jù)的至少部分的附加步驟。
      44.根據(jù)權(quán)利要求24所述的方法,用來使由包含處理器的芯片從外部存儲器向片上高速緩存中加載的數(shù)據(jù)安全。
      45.根據(jù)權(quán)利要求24所述的方法,其中所述設(shè)備是從解密設(shè)備接收數(shù)據(jù)分組的聯(lián)網(wǎng)通信設(shè)備。
      46.根據(jù)權(quán)利要求24所述的方法,還包括防回滾保護。
      47.根據(jù)權(quán)利要求23所述的方法,其中所述密碼驗證值是認證所述加密的數(shù)據(jù)段中的至少ー個加密的數(shù)據(jù)段的數(shù)字簽名。
      48.ー種用于加密明文數(shù)據(jù)而又限制重用密碼密鑰的設(shè)備,所述設(shè)備被配置成 (a)通過計算從內(nèi)部秘密狀態(tài)的至少部分開始并且促成消息密鑰的多個相繼中間密鑰來根據(jù)所述內(nèi)部秘密狀態(tài)和消息標識符導出所述消息密鑰,將基于所述消息標識符的至少部分和先前密鑰來導出每個相繼密鑰; (b)使用至少基于所述消息密鑰的所述ー個或者多個密碼密鑰以加密所述明文數(shù)據(jù)的一個或者多個段以產(chǎn)生ー個或者多個加密的數(shù)據(jù)段; (c)使用秘密密鑰以計算至少基于所述加密的數(shù)據(jù)段中的一個或者多個加密的數(shù)據(jù)段并且可用于驗證所述加密的數(shù)據(jù)段中的一個或者多個加密的數(shù)據(jù)段的密碼驗證值;以及 (d)輸出所述ー個或者多個加密的數(shù)據(jù)段和所述密碼驗證值。
      49.根據(jù)權(quán)利要求48所述的設(shè)備,其中所述(c)被配置成 (i)根據(jù)至少一個所述加密的數(shù)據(jù)段計算密碼散列;以及(ii)根據(jù)至少秘密值和所述密碼散列導出驗證器,其中所述導出包括計算始于所述秘密值的多個相繼中間值,每個相繼值將至少基于所述值中的先前值和所述密碼散列的部分。
      50.根據(jù)權(quán)利要求49所述的設(shè)備,其中在(a)中所述導出每個所述中間密鑰被配置成包括選擇熵分布操作,然后將所述熵分布操作應用于所述先前密鑰。
      51.根據(jù)權(quán)利要求50所述的設(shè)備,配置用于所述熵分布操作是至少依賴于以下各項的密碼散列操作(i)所述先前密鑰;以及(ii)對應于所述消息標識符的至少部分的值。
      52.根據(jù)權(quán)利要求49所述的設(shè)備,配置用于通過遵循經(jīng)過密鑰樹的路徑來計算(a)中的所述消息密鑰,所述路徑包括所述消息標識符。
      53.根據(jù)權(quán)利要求49所述的設(shè)備,配置用于(b)包括通過執(zhí)行多個熵分布操作根據(jù)所述消息密鑰導出多個所述密碼密鑰;并且配置用于(i)通過將熵分布函數(shù)應用于所述消息密鑰來計算所述密碼密鑰之一;以及(ii)通過將熵分布函數(shù)應用于多個相繼密碼密鑰中的先前密碼密鑰來計算所述密碼密鑰中的每個密碼密鑰。
      54.根據(jù)權(quán)利要求49所述的設(shè)備,配置用于每個所述相繼中間值是密碼散列操作的結(jié)果,所述密碼散列操作的輸入僅通過以下確定(I)所述相繼中間值的直接父值;以及(2)所述加密的數(shù)據(jù)段散列的一位或者兩位。
      55.根據(jù)權(quán)利要求48所述的設(shè)備,配置用于所述密碼驗證值是認證所述加密的數(shù)據(jù)段中的至少ー個加密的數(shù)據(jù)段的數(shù)字簽名。
      56.一種用于解密數(shù)據(jù)而又限制重用密碼密鑰的設(shè)備,所述設(shè)備被配置成 (a)接收ー個或者多個加密的數(shù)據(jù)段和密碼驗證值并且獲得與之對應的消息標識符; (b)驗證所述密碼驗證值以確定是否已經(jīng)修改了所述消息標識符或者所述加密的數(shù)據(jù)段中的至少ー個加密的數(shù)據(jù)段; (c)通過計算從內(nèi)部秘密狀態(tài)的至少部分開始并且促成消息密鑰的多個相繼中間密鑰來根據(jù)所述內(nèi)部秘密狀態(tài)和所述消息標識符導出所述消息密鑰,其中至少基于所述消息標識符的部分和先前密鑰來導出每個相繼密鑰;以及 (d)使用至少基于所述消息密鑰的所述ー個或者多個密碼密鑰以解密所述加密的數(shù)據(jù)的一個或者多個經(jīng)驗證段以產(chǎn)生ー個或者多個明文數(shù)據(jù)段。
      57.根據(jù)權(quán)利要求56所述的設(shè)備,其中所述(b)被配置成 (i)根據(jù)至少一個所述加密的數(shù)據(jù)段計算密碼散列;(ii)根據(jù)至少秘密值和所述密碼散列導出預期驗證器,其中所述導出包括計算始于所述秘密值的多個相繼中間值,其中每個相繼值至少基于所述值中的先前值和所述密碼散列的部分;以及(iii)比較所述導出的預期候選驗證器與所述接收的密碼驗證值。
      58.根據(jù)權(quán)利要求57所述的設(shè)備,其中在(c)中所述導出每個所述中間密鑰被配置成包括選擇熵分布操作,然后將所述熵分布操作應用于所述先前密鑰。
      59.根據(jù)權(quán)利要求58所述的設(shè)備,配置用于所述熵分布操作是至少依賴于以下各項的密碼散列操作(i)所述先前密鑰;以及(ii)對應于所述消息標識符的至少部分的值。
      60.根據(jù)權(quán)利要求57所述的設(shè)備,配置用于通過遵循經(jīng)過密鑰樹的路徑來計算(c)中的所述消息密鑰,所述路徑包括所述消息標識符。
      61.根據(jù)權(quán)利要求57所述的設(shè)備,配置用于(d)包括通過執(zhí)行多個熵分布操作根據(jù)所述消息密鑰導出多個所述密碼密鑰;并且配置用于(i)通過將熵分布函數(shù)應用于所述消息密鑰來計算所述密碼密鑰之一;以及(ii)通過將熵分布函數(shù)應用于多個相繼密碼密鑰中的先前密碼密鑰來計算所述密碼密鑰中的每個密碼密鑰。
      62.根據(jù)權(quán)利要求57所述的設(shè)備,配置用于每個所述相繼中間值是密碼散列操作的結(jié)果,所述密碼散列操作的輸入僅通過以下確定(I)所述相繼中間值的直接父值;以及(2)所述加密的數(shù)據(jù)段散列的一位或者兩位。
      63.根據(jù)權(quán)利要求57所述的設(shè)備,配置用于存在僅ー個明文數(shù)據(jù)段和僅ー個加密的數(shù)據(jù)段,并且用于所述密碼散列計算還包括數(shù)據(jù)段長度。
      64.根據(jù)權(quán)利要求57所述的設(shè)備,配置用于所述預期驗證器驗證散列,其中(i)所述散列依賴于第一加密的數(shù)據(jù)段,所述第一加密的數(shù)據(jù)段并入第二加密的數(shù)據(jù)段的散列;并且(ii)所述第二加密的數(shù)據(jù)段和后續(xù)加密的數(shù)據(jù)段各自被配置成并入下一加密的數(shù)據(jù)段的散列。
      65.根據(jù)權(quán)利要求57所述的設(shè)備,其中所述設(shè)備為FPGA,并且其中所述設(shè)備被配置用于所述明文數(shù)據(jù)包括FPGA位流。
      66.根據(jù)權(quán)利要求57所述的設(shè)備,還配置成使用所述設(shè)備中包含的處理器以執(zhí)行所述明文數(shù)據(jù)的至少部分。
      67.根據(jù)權(quán)利要求57所述的設(shè)備,其中所述設(shè)備是包含處理器的芯片,并且其中所述設(shè)備被配置成使由所述芯片從外部存儲器向片上高速緩存中加載的數(shù)據(jù)安全,并且其中所述數(shù)據(jù)將如由所述芯片先前加密的那樣被加載。
      68.根據(jù)權(quán)利要求56所述的設(shè)備,配置用于所述密碼驗證值是認證所述加密的數(shù)據(jù)段中的至少ー個加密的數(shù)據(jù)段的數(shù)字簽名。
      全文摘要
      公開了用于以提供安全性以防外部監(jiān)視攻擊的方式加密和解密敏感數(shù)據(jù)的方法和設(shè)備。加密設(shè)備具有對解密設(shè)備也已知的基本秘密密碼值(密鑰)的訪問權(quán)。將敏感數(shù)據(jù)分解成段,并且用根據(jù)基本密鑰和消息標識符導出的單獨加密密鑰加密每段,以創(chuàng)建一組加密段。加密設(shè)備使用基本密碼值以創(chuàng)建如下驗證器,這些驗證器證實用于這一消息標識符的加密段由具有對基本密鑰的訪問權(quán)的設(shè)備創(chuàng)建。解密設(shè)備響應于接收加密段使用驗證器以驗證未修改消息標識符和加密段。
      文檔編號G06F11/00GK102725737SQ201080060319
      公開日2012年10月10日 申請日期2010年12月2日 優(yōu)先權(quán)日2009年12月4日
      發(fā)明者J·M·雅菲, P·C·科徹, P·羅哈吉 申請人:密碼研究公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1