專利名稱:密碼系統的密鑰恢復機制的制作方法
技術領域:
一般來說,本申請案的標的物涉及密碼系統。
背景技術:
高級加密標準(AEQ是針對密碼算法的國家標準與技術研究院技術規范,其可保護對稱密鑰密碼中所使用的電子數據。AES算法可加密(加密器)及解密(解密器)呈電子數據形式的信息。加密將電子數據轉換為稱作密文的難理解的形式;解密所述密文將電子數據轉換回成其稱作明文的原始形式。AES算法是能夠使用1觀、192及256個位的密碼密鑰來加密及解密1 位塊中的電子數據的迭代對稱密鑰塊密碼編譯器。公鑰密碼編譯器可使用一對密碼密鑰。然而,AES算法使用相同的密碼密鑰來加密及解密電子數據。AES算法是一種塊密碼編譯器。由塊密碼編譯器返回的經加密數據可具有與輸入數據相同的位數目。AES算法對數據塊執行其密碼編譯,從而使其成為迭代密碼編譯器。迭代密碼編譯器可使用重復執行輸入數據的排列與置換的環路結構。每一經密碼編譯的數據塊均使用相同的密碼密鑰來加密或解密數據。AES算法加密或解密1 位塊中的數據。所述1 位數據塊通過AES算法的每一加密或解密可使用多個AES運算。1 位數據塊使用多個AES運算(其中迭代地執行連續運算群組)的加密或解密可稱為一回合。AES算法還取得密碼密鑰且執行密鑰擴展來產生供在AES加密算法中使用的密鑰調度。或者,在1 位數據塊的解密中,AES算法以經調度的密鑰開始且執行逆密鑰調度運算來產生加密中所使用的密碼密鑰以便解密所述1 位塊中的數據。128位數據塊的每一加密需要密碼密鑰連同1 位輸入數據塊一起作為輸入。用于加密的大于1 個位的輸入電子數據可被劃分成多個1 位塊。每一 1 位塊均可使用 AES算法進行加密。AES算法采用密碼密鑰且執行密鑰擴展例程來產生密鑰調度,從而變換原始密碼密鑰。128位數據塊的每一解密需要經調度的密鑰連同1 位輸入數據塊一起作為輸入。用于解密的大于1 個位的輸入電子數據可被劃分成多個1 位塊。每一 1 位塊可使用AES算法進行解密。AES算法可逆轉且以相反次序執行用于加密的AES運算。AES算法取得經調度的密鑰且執行逆密鑰調度運算來確定用于加密的原始密碼密鑰。常規密碼系統將加密所需的密鑰或解密所需的密鑰調度保存于緩沖器中,所述緩沖器與AES算法在加密或解密運算期間所使用的工作空間緩沖器分開。在每一 1 位塊加密或解密之前,所述系統從單獨的緩沖器分別還原所述密鑰或經調度的密鑰。或者,一些常規密碼系統分別向針對經加密或經解密的每一 1 位數據塊執行加密或解密的密碼編譯引擎提供所述密鑰或經調度的密鑰。此可導致對密碼密鑰或密鑰調度的額外處置及操縱。 此額外處置及操縱可損害對所述密鑰及其調度的保密。
發明內容
在一些實施方案中,密碼系統可執行密鑰恢復運算。在加密情況下,在加密1 位數據塊結束時,所述系統可對用于加密的經調度密鑰執行逆密鑰調度運算以恢復原始密碼密鑰。此密鑰可放置于密鑰緩沖器中以供在下一加密過程中使用。在解密情況下,在解密 1 位數據塊結束時,所述系統可對用于解密的密碼密鑰執行密鑰調度運算以恢復密鑰調度。在密碼編譯運算期間執行密鑰恢復運算可消除需要密碼編譯引擎維持分別用于加密或解密的密鑰或密鑰調度的副本。另外,其可消除對密鑰及密鑰調度的不必要的處置及操縱。在加密情況下,密碼系統無需針對用于加密的每一 1 位數據塊將密鑰重新加載到密碼編譯引擎中。在解密情況下,密碼系統無需針對用于解密的每一 1 位數據塊將密鑰調度重新加載到密碼編譯引擎中。
圖1是高級加密標準(AEQ密碼編譯引擎的實例性實施方案的框圖。圖2是高級加密標準(AES)塊中所包含的AES系統的實例性實施方案的框圖。圖3A是展示高級加密標準(AES)運算寄存器中的位及與位值相關聯的運算的表。圖;3B是展示使用AES運算寄存器選擇的高級加密標準(AEQ運算的執行次數的表。圖4是展示AES塊中的實例性高級加密標準(AES)密鑰狀態的狀態圖。圖5是密碼系統中的加密過程的實例性實施方案的流程圖。圖6是密碼系統中的解密過程的實例性實施方案的流程圖。圖7是可包含密碼系統的系統的實例性實施方案的框圖。
具體實施例方式AES密碼編譯引擎的實施方案圖1是高級加密標準(AES)密碼編譯引擎100的實例性實施方案的框圖。引擎 100可執行AES計算,所述AES計算可包含對電子數據塊進行的分別產生密文及明文的AES 加密及解密運算。引擎100可包含于密碼系統中。如圖1中所示,引擎100包含可向AES塊102提供可啟用并控制由AES塊102執行的AES加密及解密運算的輸入的寄存器。寄存器可為AES運算提供數據(例如,密文或明文)。寄存器可提供密碼密鑰數據以供在AES加密及解密運算中使用。另外,寄存器可提供與由AES塊102執行的AES運算有關的結果及狀態信息。寄存器可提供所述AES運算的所得數據(例如,密文或明文)。除非另有指示,否則所述寄存器含有八位(一字節)值。 下文將更詳細地描述特定寄存器、其值及功能。密碼系統中所包含的電力管理控制寄存器中的AES ON位可控制AES密碼編譯引擎100的啟用。當AES ON位設定為等于0時,所述密碼系統可關閉引擎100,從而使所述引擎的電流消耗最小化且將引擎100置于斷電模式中。在斷電模式期間,引擎100的寄存器中所含有的值不可用于讀取或寫入。此情況的例外情況是AES屏蔽寄存器116。所述密碼系統可讀取AES屏蔽寄存器116,屏蔽寄存器116可含有AES密碼編譯引擎100的版本號。 另外,引擎100中所包含的大多數寄存器的內容可在斷電模式期間得以維持。將AES ON位設定為等于1將引擎100通電并啟用所述引擎,從而將其置成計算模式。將引擎100通電
5增加其電流消耗。引擎100可使用AES運算來執行AES計算。使用AES ON位可通過在AES 密碼編譯引擎100未在使用中時將其斷電來使包含引擎100的密碼系統中的功率消耗最小化。AES運算寄存器(AESOP)可包含可輸入到AES塊102的六個位10 到104f。六個位10 到104f可選擇密碼編譯類型(加密或解密)、密鑰調度及AES運算中所使用的密碼密鑰中所含有的位數目。當被設定為等于1時,AES開始位104b (AESOP. START)可在AES塊 102中開始所請求的密碼編譯運算(加密或解密)。當AES塊102完成所請求的密碼編譯 (加密或解密)時,清除AES開始位104b (將其設定為等于0)。AES密碼編譯位10 (AES0P. CIPHER)可為加密方向(或密碼編譯類型選擇)位。將AES密碼編譯位10 設定為等于1 通知AES塊102其將執行AES加密。將AES密碼編譯位10 設定為等于0通知AES塊102 其將執行AES解密。AES 密鑰選擇位 104e、104f (分別為 AESOP. KEYSEL0 及 AESOP. KEYSEL1)可為輸入密碼密鑰選擇三個可能的輸入大小中的一者1觀、192或256個位。AES塊102可將所述密碼密鑰用于AES運算。在將AES開始位104b設定為等于1 (此開始AES運算)之前設定 AES密鑰選擇位l(Me、104f。在AES開始位104b等于1時對AES密鑰選擇位104e、104f做出的改變致使在AES塊102中發生故障狀況。AES塊102通過清除AES開始位104b (將其設定為等于0)及將AES狀態寄存器故障檢測位108a設定為等于1來指示發生了故障。AES 輸入數據寄存器106 (AESDI [OF])、AES輸出數據寄存器114(AESD0
)及AES密鑰寄存器112(AESK
)保持不變。下文將更詳細地描述這些寄存器。AES 運算位 l(Mc、104d (分別為 AESOP. AES0P0 及 AESOP. AESOP 1)可在 AES 開始位 104b設定為等于1時選擇起動可能的四個AES運算中的一者。清除AES運算位104c、104d 兩者(將其設定為等于0)為由密碼編譯位10 的值確定的選定密碼編譯運算選擇不具有密鑰恢復。將AES運算位104c、104d兩者設定為等于1選擇循環冗余校驗(CRC)密鑰計算來檢驗輸入密碼密鑰的完整性。清除AES運算位l(Mc (將其設定為等于0)且將AES運算位104d設定為等于1為由密碼編譯位10 的值確定的選定密碼編譯運算選擇密鑰恢復。 將AES運算位l(Mc設定為等于1且清除AES運算位104d (將其設定為等于0)選擇AES密鑰調度運算。下文將參考圖3更詳細地描述使用AES運算寄存器來設置且開始AES運算。密碼系統可設定或清除可包含四個位IlOa到IlOd的AES控制寄存器(AESCR) 的位以控制AES塊102中所執行的AES運算的方面。將XOR密鑰數據輸入位110a(AESCR. XKDI)設定為等于1允許對寫入到選定輸入數據寄存器(例如,AES輸入數據寄存器 106(AESDI
))的輸入數據與所述寄存器中已含有的數據進行“異或”運算(X0R運算)。清除XOR密鑰數據輸入位IlOa(將其設定為等于0)允許AES密碼編譯引擎100直接將數據寫入到選定輸入數據寄存器(例如,AES輸入數據寄存器106),從而蓋寫所述數據寄存器中所含有的任何先前數據。將M)R密鑰數據輸入位IlOa設定為等于1還可允許對寫入到選定密鑰寄存器(例如,密鑰寄存器112(AESKW...31]))的輸入數據與所述密鑰寄存器中已含有的數據進行 “異或”運算(X0R運算)。清除XOR密鑰數據輸入位IlOa(將其設定為等于0)允許AES密碼編譯引擎100直接將數據寫入到選定密鑰寄存器(例如,密鑰寄存器11 ,從而蓋寫所述密鑰寄存器中所含有的任何先前數據。
在一些實施方案中,密碼系統可在實施基于AES的密碼編譯塊鏈接消息驗證代碼 (CBC-MAC)算法時將XOR密鑰數據輸入位IlOa設定為等于1。對XOR密鑰數據輸入位IlOa的設定或清除可在將AES開始位104b設定為等于 1(此起始密碼編譯運算)之前發生或與其同時發生。可不在AES計算期間(以將AES開始位104b設定為等于1之后開始到AES計算結束時)寫入XOR密鑰數據輸入位110a。密鑰數據寄存器位IlOb及IlOc (分別為AESCR. RTKDRO及AESCR. RTKDR1)的結果可確定將AES塊運算的結果存儲于何處。在圖1中所示的實施方案中,清除密鑰數據寄存器位IlOb的結果(將其設定為等于0)。在清除密鑰數據寄存器位IlOb的結果(將其設定為等于0)時將密鑰數據寄存器位IlOc的結果設定為等于1將AES塊102中所執行的AES 塊運算的結果存儲于輸出數據寄存器114(AESD0
)及輸入數據寄存器106中。在保持密鑰數據寄存器位IlOb的結果被清除的同時清除密鑰數據寄存器位IlOc的結果(將其設定為等于0)將AES塊102中所執行的AES塊運算的結果存儲于輸出數據寄存器114 中。對密鑰數據寄存器位IlOb及IlOc的設定或清除可與將AES開始位104b設定為等于1同時發生。在已將AES開始位104b設定為等于1時設定或清除密鑰數據寄存器位 IlOb及IlOc的結果可致使在AES塊102中發生故障狀況。AES塊102通過清除AES開始位 104b (將其設定為等于0)及將AES狀態寄存器故障檢測位108a設定為等于1指示發生了故障。AES輸入數據寄存器106 (AESDI
)、AES輸出數據寄存器114(AESD0
) 及AES密鑰寄存器112(AE9(
)保持不變。AES數據屏蔽啟用位IlOd(AESCR. DATAMSK)控制AES密碼編譯引擎100中的數據屏蔽特征。將AES數據屏蔽啟用位IlOd設定為等于1啟用所述數據屏蔽特征。清除AES 數據屏蔽啟用位IlOd(將其設定為等于0)停用所述數據屏蔽特征。當被啟用時,所述數據屏蔽特征可用AES屏蔽寄存器116 (AESMSK)的內容屏蔽AES輸入數據寄存器106中所含有的用于加密或解密的輸入數據。下文將更詳細地對此進行描述。AES密碼編譯引擎100可包含AES CRC寄存器118 (AESCRC0及AESCRC1),當組合時,所述AES CRC寄存器含有對用于AES運算的輸入密碼密鑰執行的循環冗余校驗(CRC)的 16位結果。引擎100可對1觀、192及256個位的輸入密碼密鑰執行CRC校驗。AES塊102 可使用對所述密鑰執行的CRC的結果來在所述密鑰用于任何AES運算之前檢測所述密鑰的任何數據損壞。AES密碼編譯引擎100可包含可含有一字節(八位)屏蔽值的AES屏蔽寄存器 Iie(AESMSK)。密碼系統給屏蔽寄存器116加載一字節屏蔽值。在AES運算開始之前,引擎 100可在逐字節基礎上借助屏蔽寄存器116屏蔽輸入密碼密鑰數據。與AES運算開始同時, 引擎100還可在逐字節基礎上借助所述屏蔽寄存器屏蔽用于加密或解密的輸入數據。AES密碼編譯引擎100可在逐字節基礎上通過對屏蔽寄存器116中的值與輸入密碼密鑰的每一字節進行“異或”運算(X0R運算)來用所述密鑰的值屏蔽屏蔽寄存器116的內容。引擎100可將所得的經屏蔽密鑰寫入到密鑰寄存器112中。密鑰屏蔽可在任何AES 運算開始之前發生。如果清除XOR密鑰數據輸入位IlOa(將其設定為等于0),那么可發生以剛剛描述的方式對輸入密碼密鑰的屏蔽。將XOR密鑰數據輸入位IlOa設定為等于1允許對寫入到密鑰寄存器112的輸入密鑰數據與密鑰寄存器112中已含有的數據進行“異或”運算(X0R運算)。在一些實施方案中,AES密碼編譯引擎100可執行密碼密鑰CRC計算。可在逐字節基礎上對輸入密碼密鑰數據與屏蔽寄存器116的內容進行“異或”運算(X0R運算)。引擎 100可將所得的經XOR運算的密鑰字節寫入到密鑰寄存器112。密鑰寄存器112可為AES CRC計算引擎的輸入(例如,包含于AES塊102中)。所述CRC計算引擎可使用AES CRC寄存器118中所含有的值作為供在CRC計算中使用的初始值來執行所述CRC計算。如果在AES運算開始時將AES屏蔽寄存器116中的AES數據屏蔽啟用位IlOd設定為等于1,那么AES密碼編譯引擎100可借助輸入數據寄存器106中的每一者屏蔽屏蔽寄存器116。AES密碼編譯引擎100可通過對屏蔽寄存器116中的值與輸入數據寄存器中的值進行“異或”運算(X0R運算)來執行所述屏蔽。AES塊102可接收所得的經屏蔽輸入數據寄存器。當AES ON位設定為等于0時,可將AES密碼編譯引擎100置于關閉模式中。在此模式中,所述密碼系統可讀取可含有引擎100的版本號的AES屏蔽寄存器116。所述密碼系統可讀取屏蔽寄存器116且確定所述系統中所包含的引擎100的版本號。AES輸出數據寄存器114(AESD0
)可為16個八位(一字節)寄存器,其含有由AES密碼編譯引擎100中的AES塊102執行的AES計算的結果。AES輸入數據寄存器 114(AESDI
)可為16個八位(一字節)寄存器,其含有由AES密碼編譯引擎100中的AES塊102執行的AES計算中所使用的用于加密或解密的輸入數據。在起始引擎100中的AES運算的開始之前,密碼系統從數據總線120給輸入數據寄存器114加載用于加密或解密的輸入數據。如先前所描述,還可在起始AES運算的開始之前對輸入數據寄存器114 中所含有的輸入數據有條件地執行屏蔽操作。AES密鑰寄存器112(AESKW...31])可為32個八位(一字節)寄存器,其含有供在由AES密碼編譯引擎100中的AES塊102執行的AES計算中使用的密碼密鑰值。所述密碼系統針對數據總線120給密鑰寄存器112加載可為1觀、192或256個位(分別為16個字節、M個字節或32個字節)的密碼密鑰。如先前所描述,還可對密鑰寄存器112選擇性地執行屏蔽操作。所述密碼系統可讀取AES狀態寄存器(AESSR)的位以確定與AES密碼編譯引擎 100有關的狀態信息及與由AES塊102執行的AES運算有關的狀態信息。當AES塊102已完成AES計算時,可將AES中斷旗標位108b (AESSR. AESIRQ)設定為等于1。如果所述密碼系統中所包含的額外寄存器位經適當設定,那么設定中斷旗標位108b可致使在所述密碼系統中產生中斷。當被設定為等于1時,故障檢測位108a(AESSR. FAULT)指示在AES塊102正執行 AES運算時發生了問題。在一些實施方案中,AES塊102可通過將其內部狀態與所請求的運算進行比較來檢測所述問題。舉例來說,AES塊102可在AES塊102接收到無效請求時將故障檢測位108a設定為等于1。在另一實例中,AES塊102可在內部校驗其運算一致性且可在發生不一致時將故障檢測位108a設定為等于1。在替代實例中,AES塊102可計數其對輸入數據塊執行的 AES回合的數目。AES塊102可確定所述AES塊應對1 位數據塊執行的回合數目,因為所述回合數目是基于AES運算中所使用的密鑰的大小(例如,使用1 位密鑰的AES密碼編譯器對1 位數據塊執行10個回合)。如果實際回合數目與所計算的回合數目不同,那么 AES塊102可將故障檢測位108a設定為等于1。如果在AES塊102進行AES計算期間發生故障,那么在所述AES計算結束時由AES 塊102將故障檢測位108a設定為等于1,同時將中斷旗標位108b設定為等于1。在一些情況下,AES塊102檢測AES計算期間的故障可導致AES塊102繼續錯誤的AES計算。舉例來說,AES塊102可使用損壞的密鑰或者AES塊102的由所述AES計算產生的輸出數據可被損壞。在一些情況下,AES塊102可準備故障檢測位108a的設定且在完成從而導致錯誤的輸出數據之前停止所述AES計算。基本AES算法AES算法可對稱作如下狀態的4X4矩陣執行AES運算,在所述狀態中所述矩陣中的每一元是一個數據字節(八個位)。所述狀態含有總共16個數據字節或1 個數據位。 AES算法的用于加密或解密的輸入字節陣列還為組織成4X4矩陣的1 個數據位。對使用所述狀態的輸入數據執行AES運算以產生輸出數據,所述輸出數據也呈4X4矩陣的形式, 其中所述矩陣中的每一元是一個字節(八個位)。AES算法對每一 1 位數據塊執行多個 AES運算回合。可基于密碼密鑰的大小來確定回合數目。密碼系統可將大于1 個位的輸入數據劃分成若干1 個數據位。可將這些數據塊連續地輸入到如圖1中所示的AES塊 102 中。—回合中的所有AES運算均為可逆的。AES塊102可逆轉且以相反次序執行用于執行輸入數據的加密的運算以執行輸入數據的解密。在輸入數據的加密中,AES塊102可將密碼密鑰擴展為密鑰調度。AES算法可取得所述密鑰且執行密鑰擴展例程來產生密鑰調度。所述密鑰調度可將密鑰擴展成若干單獨的密鑰(子密鑰),其中AES塊102可將所述子密鑰用于AES算法的每一回合。所述子密鑰還可稱作回合密鑰。密鑰擴展例程可使用AES運算來擴展密鑰,其中經擴展密鑰的長度可等于塊大小*回合數目+1(例如,1 位密鑰擴展為176字節密鑰,192位密鑰擴展為208字節密鑰,且256位密鑰擴展為240字節密鑰)。AES塊102可將所述經擴展密鑰的不同部分用于AES算法的每一回合。在輸入數據的解密中,AES塊102可使用密鑰調度來解密所述輸入數據。AES塊102可執行逆密鑰調度運算來產生用于加密所述輸入數據的密碼密鑰。使用密鑰恢復的AES塊的實施方案圖2是圖1的高級加密標準(AES)塊102中所包含的AES系統200的實施方案的框圖。系統200可使用密鑰恢復來執行用于1 位輸入數據塊的加密或解密的AES運算。 一旦所述1 位輸入數據塊的加密或解密完成,便將結果輸出到AES密碼編譯引擎100且系統200可接收用于下一 1 位數據塊加密或解密的輸入數據。如圖2中所示,系統200包含輸入/輸出數據塊202。輸入/輸出數據塊202可將用于加密或解密的1 位輸入數據塊提供到AES數據處理加密/解密塊204。輸入/輸出數據塊202還可從AES數據處理加密/解密塊204接收所得的經加密或或經解密1 位輸出數據塊。數據處理加密/解密塊204可對由輸入/輸出數據塊202接收的每一 1 位數據塊執行AES運算。在使用AES密碼編譯引擎100開始數據加密或解密之前,密碼系統可將密碼密鑰加載到密鑰寄存器112中,如圖1中所示。在第一 1 位輸入數據塊的加密或解密開始之前,可將密鑰寄存器112加載到密鑰寄存器塊208中。當執行數據加密或解密時,AES密鑰處理加密/解密塊206可使用密碼密鑰執行密鑰擴展例程以產生密鑰調度。密鑰寄存器塊208可在任何AES加密運算開始之前最初存儲所述密碼密鑰。密鑰寄存器塊208可足夠大以緩沖整個密鑰(例如,256個位或32個字節(例如,密鑰寄存器112)),其中所述密鑰可為1觀、192或最大256個位。在對系統200中的第一 1 位輸入數據塊的加密或解密運算期間,可蓋寫從密鑰寄存器112加載到密鑰寄存器塊208中的初始密碼密鑰。在執行密碼編譯運算時可使用含有密鑰值的寄存器作為工作空間。在對下一 1 位輸入數據塊執行后續加密或解密運算之前,系統200可將所述密碼密鑰還原到密鑰寄存器塊208中。不同密鑰寄存器塊及密鑰調度運算的實施方案在一些實施方案中,在每一 1 位輸入數據塊加密或解密運算之前,AES密碼編譯系統100可將密鑰寄存器112加載到寄存器塊208中。此實施方案可需要針對已處理的每一 1 位數據塊處置密碼密鑰一次。對于大的數據塊,此可導致對密碼密鑰的大數目次操縱。另外,在一些實施方案中,系統200可每次在將密碼密鑰從密鑰寄存器112加載到寄存器塊208中時校驗所述密碼密鑰的完整性。此可增加AES密碼編譯引擎100的計算吞吐量。在一些實施方案中,系統100可將所述密碼密鑰的兩個副本存儲于密鑰寄存器塊 208中。在執行加密或解密運算時,可保存所述密鑰的一個副本且將其用于還原可在工作空間計算期間被蓋寫的所述密鑰的另一副本。此實施方案可需要密鑰寄存器塊208中的額外寄存器以用于存儲所述密碼密鑰,從而增加密鑰寄存器塊208的門計數。此增加包含AES 密碼編譯引擎100的集成處理器的門計數。增加的門計數可增加集成處理器的占用面積且增加其能量消耗。在一些實施方案中,系統200可在系統200執行第一 1 位輸入數據塊的加密之后將密碼密鑰還原到密鑰寄存器塊208中。系統200可對用于加密第一 1 位輸入數據塊的密鑰調度執行使用逆密鑰調度的密鑰恢復運算以恢復加密下一 1 位輸入數據塊所需的密碼密鑰。產生密鑰調度并將其用于加密1 位輸入數據塊導致更改密鑰數據,使得初始密碼密鑰值不再可用于系統200。系統200可在第一 1 位輸入數據塊經加密之后且在加密下一 1 位輸入數據塊之前執行密鑰恢復運算。系統200可將所恢復的密鑰存儲于保存從密鑰寄存器112接收的初始密碼密鑰的相同寄存器中的密鑰寄存器塊208中。系統 200可在第一 1 位輸入數據塊已經加密且輸出到輸出數據塊202時蓋寫可能已用作用于加密運算的工作空間的這些寄存器中所含有的任何數據。在一些實施方案中,系統200可在系統200執行第一 1 位輸入數據塊的解密之后將密鑰調度還原到密鑰寄存器塊208中。解密可使用加密所使用的相同的AES運算。然而,將所述運算逆轉且接著以相反次序實施。第一 1 位輸入數據塊的解密以初始密鑰調度開始。逆密鑰調度運算可確定用于加密原始數據的原始密碼密鑰。所述逆密鑰調度運算及其在解密1 位輸入數據塊中的使用可導致更改密鑰調度數據,使得初始密鑰調度數據不再可用于系統200。系統200可在第一 1 位輸入數據塊經解密之后且在解密下一 1 位輸入數據塊之前執行密鑰恢復運算。所述密鑰恢復運算通過對所得的密碼密鑰運行密鑰擴展運算來執行密鑰調度運算以產生并還原密鑰調度。系統200可將所恢復的密鑰調度存儲于保存初始密鑰調度的相同寄存器中的密鑰寄存器塊208中。系統200可在第一 1 位輸入數據塊已經解密且輸出到輸出數據塊202時蓋寫可能已用作用于解密的工作空間的這些寄存器中所含有的任何數據。密鑰恢復運算可增加AES密碼編譯引擎100的計算吞吐量。然而,AES塊102不需要引擎100將密鑰寄存器112加載到密鑰寄存器塊208中以還原密碼密鑰,從而導致較少的密鑰操縱及計算,因為系統200可每次在將密鑰值加載到系統200中時校驗所述密鑰值的完整性。另外,由于因密碼密鑰也不保存于密鑰寄存器塊208中而使用較少的寄存器, 因此密鑰寄存器塊208中可需要較少的門。在一些實施方案中,圖1中的AES密碼編譯引擎100可為密碼系統中所包含的集成處理器,所述密碼系統可包含用于在所述密碼系統中執行特定運算的額外集成處理器。 可期望使引擎100的占用面積最小化以幫助使所述密碼系統的占用面積最小化。減少引擎 100中的AES塊102中所包含的系統200中的密鑰存儲所需的寄存器的數目可幫助減小集成處理器的大小及密碼系統整體的大小。AES運算寄存器圖3A是展示高級加密標準(AEQ運算寄存器中的位及與位值相關聯的運算的表300。參考圖1,AES運算寄存器(AESOP)包含AES運算位l(Mc、104d(分別為AESOPO 及AES0P1)、AES密鑰選擇位l(Me、104f (分別為KEYSEL0及KEYSEL1)及AES密碼編譯位 104a (CIPHER)。當AES開始位104b設定為等于1時,AES運算位104c、104d可選擇起動可能的四個AES運算中的一者具有密鑰恢復的密碼編譯運算、不具有密鑰恢復的密碼編譯運算、密鑰調度運算或CRC計算。AES密碼編譯位10 可在加密與解密運算之間進行選擇。AES密鑰選擇位104e、104f可選擇三個可能的輸入大小中的一者用于輸入密碼密鑰1觀、192或 256個位。清除AES運算位104c、104d兩者(將其設定為等于0)選擇不具有密鑰恢復的運算。另外,清除AES密鑰選擇位104e、104f兩者(將其設定為等于0)選擇使用1 位密鑰的不具有密鑰恢復的AES運算。清除AES密碼編譯位104a(將其設定為等于0)或將其設定為等于1分別確定所述運算將是解密還是加密。清除AES運算位104c、104d兩者(將其設定為等于0)選擇不具有密鑰恢復的運算。另外,將AES密鑰選擇位l(Me設定為等于1且清除AES密鑰選擇位104f (將其設定為等于0)選擇使用192位密鑰的不具有密鑰恢復的AES運算。清除AES密碼編譯位104a (將其設定為等于0)或將其設定為等于1分別確定所述運算將是解密還是加密。清除AES運算位104c、104d兩者(將其設定為等于0)選擇不具有密鑰恢復的運算。另外,清除AES密鑰選擇位l(Me (將其設定為等于0)且將AES密鑰選擇位104f設定為等于1選擇使用256位密鑰的不具有密鑰恢復的AES運算。清除AES密碼編譯位104a (將其設定為等于0)或將其設定為等于1分別確定所述運算將是解密還是加密。清除AES運算位104d (將其設定為等于0)且將AES運算位l(Mc設定為等于1選擇密鑰調度運算。另外,清除AES密鑰選擇位l(Me、104f兩者(將其設定為等于0)選擇使用1 位密鑰的密鑰調度運算。清除AES密碼編譯位10 (將其設定為等于0)或將其設定為等于1分別確定所述密鑰調度運算將是密鑰調度運算還是逆密鑰調度運算。清除AES運算位104d (將其設定為等于0)且將AES運算位l(Mc設定為等于1選擇
11密鑰調度運算。另外,將AES密鑰選擇位l(Me設定為等于1且清除AES密鑰選擇位104f (將其設定為等于0)選擇使用192位密鑰的密鑰調度運算。清除AES密碼編譯位104a(將其設定為等于0)或將其設定為等于1分別確定所述密鑰調度運算將是密鑰調度運算還是逆密鑰調度運算。清除AES運算位104d (將其設定為等于0)且將AES運算位l(Mc設定為等于1選擇密鑰調度運算。另外,清除AES密鑰選擇位l(Me (將其設定為等于0)且將AES密鑰選擇位104f設定為等于1選擇使用256位密鑰的密鑰調度運算。清除AES密碼編譯位104a (將其設定為等于0)或將其設定為等于1分別確定所述密鑰調度運算將是密鑰調度運算還是逆密鑰調度運算。清除AES運算位l(Mc (將其設定為等于0)且將AES運算位104d設定為等于1選擇具有密鑰恢復的運算。另外,清除AES密鑰選擇位l(Me、104f兩者(將其設定為等于0) 選擇使用1 位密鑰的具有密鑰恢復的AES運算。清除AES密碼編譯位104a(將其設定為等于0)或將其設定為等于1分別確定所述運算將是解密還是加密。 清除AES運算位l(Mc (將其設定為等于0)且將AES運算位104d設定為等于1選擇具有密鑰恢復的運算。另外,將AES密鑰選擇位10 設定為等于1且清除AES密鑰選擇位104f (將其設定為等于0)選擇使用192位密鑰的具有密鑰恢復的AES運算。清除AES 密碼編譯位104a (將其設定為等于0)或將其設定為等于1分別確定所述運算將是解密還是加密。清除AES運算位l(Mc (將其設定為等于0)且將AES運算位104d設定為等于1選擇具有密鑰恢復的運算。另外,清除AES密鑰選擇位10 (將其設定為等于0)且將AES密鑰選擇位104f設定為等于1選擇使用256位密鑰的具有密鑰恢復的AES運算。清除AES 密碼編譯位104a(將其設定為等于0)或將其設定為等于1分別確定所述運算將是解密還是加密。將AES運算位l(Mc、104d兩者設定為等于1選擇密鑰CRC計算。另外,清除AES 密鑰選擇位104e、104f兩者(將其設定為等于0)且清除AES密碼編譯位104a (將其設定為等于0)選擇AES-U8密鑰CRC運算。將AES運算位l(Mc、104d兩者設定為等于1選擇密鑰CRC計算。另外,將AES密鑰選擇位l(Me設定為等于1、清除AES密鑰選擇位104f (將其設定為等于0)且清除AES密碼編譯位104a (將其設定為等于0)選擇AES-192密鑰CRC運算。將AES運算位l(Mc、104d兩者皆設定為等于1選擇一密鑰CRC計算。另外,清除 AES密鑰選擇位l(Me (將其設定為等于0)、將AES密鑰選擇位104f設定為等于1且清除 AES密碼編譯位104a (將其設定為等于0)選擇AES-256密鑰CRC運算。AES計算定時圖;3B是展示使用AES運算寄存器選擇的AES運算354的執行次數352 (以中央處理單元(CPU)循環計)的表350。圖3A中的表300展示用于選擇AES運算3M的AES運算寄存器的位的值。一般來說,使用較大密碼密鑰的AES運算需要完成較多CPU循環。使用密鑰恢復的AES運算還使用較多CPU循環。然而,CPU循環的增加可由存儲密碼密鑰所需的密鑰寄存器的數目的減少(從而減小集成處理器的大小)而抵消。另外,密鑰恢復減少密碼密鑰的不必要操縱量,從而減少密碼系統中的安全性問題。AES密鑰狀態4是展示AES塊(例如,圖1中的AES塊102)中的實例性高級加密標準(AES) 密鑰狀態的狀態圖400。圖示400展示加密及解密中所使用的AES密碼密鑰的可能的密鑰狀態及密鑰值。圖示400展示所述密鑰可演變的方式與AES塊所執行的運算之間的聯系。 圖4中所示的AES運算可為由圖3中所示的高級加密標準(AES)運算寄存器中的位選擇且由AES塊102中所包含的圖2中的AES系統200執行的AES運算。互連線展示AES運算。實線展示符合FIPS-197 AES標準的運算。虛線展示不符合FIPS-197 AES標準的運算,所述FIPS-197 AES標準可涉及AES運算的不尋常使用。當AES塊處于密鑰狀態402中時,執行具有密鑰恢復的AES加密運算404可使AES 塊返回到密鑰狀態402。當AES塊處于密鑰調度狀態406中時,執行具有密鑰恢復的AES解密運算408可使AES塊返回到密鑰調度狀態404。當AES塊處于密鑰狀態402中時,執行不具有密鑰恢復的AES加密運算410可將 AES塊置于密鑰調度狀態406中。當AES塊處于密鑰調度狀態406中時,執行不具有密鑰恢復的AES解密運算412可將AES塊置成密鑰調度狀態402。當AES塊處于密鑰狀態402中時,執行密鑰調度運算414可將AES塊置于密鑰調度狀態402中。當AES塊處于密鑰調度狀態406中時,執行逆密鑰調度運算416可將AES 塊置于密鑰調度狀態406中。不符合的運算可導致AES塊轉變成非預期狀態。當AES塊處于密鑰狀態402中時,執行不具有密鑰恢復的AES解密運算418可將AES塊置成非預期密鑰狀態420。當AES 塊處于密鑰狀態402中時,執行逆密鑰調度運算420可將AES塊置成非預期密鑰狀態422。 當AES塊處于密鑰狀態402中時,執行具有密鑰恢復的AES解密運算432可將AES塊置成密鑰狀態402。然而,AES解密運算使用密鑰調度作為其輸入密鑰,因此所述AES塊將不可能執行此運算。當處于密鑰調度狀態406中時,執行不具有密鑰恢復的AES加密運算4M可將AES 塊置成非預期密鑰狀態426。當處于密鑰調度狀態406中時,執行密鑰調度運算4 可將 AES塊置成非預期密鑰狀態430。當AES塊處于密鑰調度狀態406中時,執行具有密鑰恢復的AES加密運算434可將AES塊置成密鑰調度狀態402。然而,AES加密運算使用密鑰作為其輸入密鑰,因此所述AES塊將不可能執行此運算。加密過程的實施方案圖5是密碼系統中的加密過程500的實施方案的流程圖。所述密碼系統可包含圖 1中所示的AES密碼編譯引擎100。所述加密過程可使用如圖1到圖4中所描述的AES算法。過程500以密碼系統接收用于加密的數據塊開始(步驟502)。所述密碼系統確定數據子塊中所包含的位數目,其中所述數據子塊的大小小于所接收數據塊的大小(步驟 504)。舉例來說,如參考圖1所描述,供在AES算法中使用的數據子塊可為1 個位。可將輸入數據塊劃分成若干數據子塊,其中每一數據子塊為1 個位。所述密碼系統確定所述輸入數據塊中所包含的1 位數據塊的數目η (步驟506)。接下來,所述密碼系統獲得密碼密鑰(步驟508)。所述密碼系統使用AES算法及所述密碼密鑰來加密第η個1 位數據子塊(步驟510)。舉例來說,所述密碼系統中所包含的AES密碼編譯引擎100可加密第η個 1 位數據子塊。所述密碼系統使用密鑰恢復運算來恢復所述密碼密鑰(步驟512)。舉例來說,所述密碼系統中的AES密碼編譯引擎100中的AES塊102可包含恢復所述密鑰以供在下一子塊加密中使用的密鑰恢復運算。所述密碼系統可使數據子塊的數目遞減(步驟514)。如果存在待加密的剩余數據子塊(在步驟516中η不等于0),那么過程500繼續到步驟510。 接著,所述密碼系統使用步驟512中恢復的密鑰來加密另一數據子塊。如果不存在待加密的剩余數據子塊(在步驟516中η等于0),那么所述密碼系統可輸出經加密的所接收數據塊(步驟518)。過程500結束。在一些實施方案中,過程500可以第一子塊開始且以第η個子塊結束來加密所述數據子塊,其中輸入數據塊包含η個子塊。解密過程的實施方案圖6是密碼系統中的解密過程600的實施方案的流程圖。所述密碼系統可包含圖 1中所示的AES密碼編譯引擎100。所述解密過程可使用如圖1到圖4中所描述的AES算法。過程600以密碼系統接收用于解密的數據塊開始(步驟602)。所述密碼系統確定數據子塊中所包含的位數目,其中所述數據子塊的大小小于所接收數據塊的大小(步驟 604)。舉例來說,如參考圖1所描述,供在AES算法中使用的數據子塊可為1 個位。可將輸入數據塊劃分成若干數據子塊,其中每一數據子塊為1 個位。所述密碼系統確定所述輸入數據塊中所包含的1 位數據塊的數目η (步驟606)。接下來,所述密碼系統獲得密鑰調度(步驟608)。所述密碼系統使用AES算法及所述密鑰調度來解密第η個1 位數據子塊(步驟610)。舉例來說,所述密碼系統中所包含的AES密碼編譯引擎100可解密第η個 1 位數據子塊。所述密碼系統使用逆密鑰恢復運算來恢復所述密鑰調度(步驟612)。舉例來說, 所述密碼系統中的AES密碼編譯引擎100中的AES塊102可包含恢復所述密鑰調度以供在下一子塊解密中使用的逆密鑰恢復運算。所述密碼系統可使數據子塊的數目遞減(步驟 614)。如果存在待解密的剩余數據子塊(在步驟616中η不等于0),那么過程600繼續到步驟610。接著,所述密碼系統使用步驟612中恢復的密鑰來解密另一數據子塊。如果不存在待解密的剩余數據子塊(在步驟616中η等于0),那么所述密碼系統可輸出經解密的所接收數據塊(步驟618)。過程600結束。在一些實施方案中,過程600可以第一子塊開始且以第η個子塊結束來解密所述數據子塊,其中輸入數據塊包含η個子塊。系統架構圖7是可包含密碼系統的系統的實施方案的框圖,所述密碼系統可包含如圖1中所示的高級加密標準(AEQ密碼編譯引擎。系統700包含處理器710、存儲器720、存儲裝置730及輸入/輸出裝置740。組件710、720、730及740中的每一者是使用系統總線750 互連的。處理器710能夠處理用于在系統700內執行的指令。在一些實施方案中,處理器 710為單線程處理器。在另一實施方案中,處理器710為多線程處理器。處理器710能夠處理存儲器720中或存儲裝置730上所存儲的指令以在輸入/輸出裝置740上顯示用戶接口的圖形信息。存儲器720存儲系統700內的信息。在一些實施方案中,存儲器720為計算機可讀媒體。在其它實施方案中,存儲器720為易失性存儲器單元。在又一些實施方案中,存儲器720為非易失性存儲器單元。存儲裝置730能夠為系統700提供大容量存儲。在一些實施方案中,存儲裝置730 為計算機可讀媒體。在各種不同實施方案中,存儲裝置730可為軟盤裝置、硬盤裝置、光盤裝置或磁帶裝置。輸入/輸出裝置740為系統700提供輸入/輸出操作。在一些實施方案中,輸入/ 輸出裝置740包含鍵盤及/或指向裝置。在其它實施方案中,輸入/輸出裝置740包含用于顯示圖形用戶接口的顯示單元。所描述的特征可實施于數字電子電路中或計算機硬件、固件、軟件中或其組合中。 所述特征可實施于有形地體現于信息載體中(例如,機器可讀存儲裝置中或所傳播的信號中)以供可編程處理器執行的計算機程序產品中;且方法步驟可由可編程處理器執行,所述可編程處理器執行指令程序以通過對輸入數據進行操作并產生輸出來執行所描述實施方案的功能。所描述的特征可有利地實施于可在可編程系統上執行的一個或一個以上計算機程序中,所述可編程系統包含至少一個可編程處理器(其經耦合以從數據存儲系統接收數據及指令且將數據及指令傳輸到所述數據存儲系統)、至少一個輸入裝置及至少一個輸出裝置。計算機程序是計算機中可直接或間接用于執行某一活動或引起某一結果的指令集。可以任一形式的程序設計語言(包含編譯語言或解釋語言)寫入計算機程序,且可以任一形式部署所述計算機程序,包含部署為獨立程序或部署為模塊、組件、子例程或適合在計算環境中使用的其它單元。舉例來說,用于執行指令程序的適合處理器包含通用及專用微處理器兩者及任一種計算機的唯一處理器或多個處理器中的一者。一般來說,處理器將從只讀存儲器或隨機存取存儲器或兩者接收指令及數據。計算機的基本元件為用于執行指令的處理器及用于存儲指令及數據的一個或一個以上存儲器。一般來說,計算機還將包含用于存儲數據文件的一個或一個以上大容量存儲裝置或以操作方式耦合以與其通信;此些裝置包含磁盤(例如,內部硬盤及可裝卸磁盤);磁光盤;及光盤。適合于有形地體現計算機程序指令及數據的存儲裝置包含所有形式的非易失性存儲器,舉例來說,包含半導體存儲器裝置(例如, EPROM、EEPROM及快閃存儲器裝置);磁盤(例如,內部硬盤及可裝卸磁盤);磁光盤;以及 CD-ROM及DVD-ROM磁盤。所述處理器及所述存儲器可由ASIC (專用集成電路)補充或并入于ASIC中。為實現與用戶的交互,所述特征可實施于具有用于向所述用戶顯示信息的顯示裝置(例如,CRT(陰極射線管)或LCD(液晶顯示器)監視器)及所述用戶可借以向計算機提供輸入的鍵盤及指向裝置(例如,鼠標或軌跡球)的計算機上。所述特征可實施于包含后端組件(例如數據服務器)或包含中間軟件組件(例如應用程序服務器或因特網服務器)或包含前端組件(例如具有圖形用戶接口或因特網瀏覽器的客戶端計算機)或其任一組合的計算機系統中。所述系統的組件可通過任一數字數據通信形式或媒體(例如通信網絡)來連接。通信網絡的實例包含(例如)LAN、WAN以及形成因特網的計算機及網絡。
所述計算機系統可包含客戶端及服務器。客戶端與服務器通常彼此遠離且通常經由網絡交互。客戶端與服務器的關系借助運行于相應計算機上且彼此之間具有客戶端-服務器關系的計算機程序而出現。已描述若干實施方案。然而,將理解,可做出各種修改。舉例來說,可組合、刪除、 修改或補充一個或一個以上實施方案的元件以形成其它實施方案。所述圖中所描繪的邏輯流程未必需要所展示的特定次序或順序次序來實現所要的結果。另外,可提供其它步驟,或可從所描述的流程消除若干步驟,且可向所描述的系統添加或從所描述的系統移除其它組件。因此,其它實施方案也在以上權利要求書的范圍內。
權利要求
1.一種密碼系統,其包括 寄存器,其含有密鑰;處理器,其耦合到所述寄存器且可操作以用于執行第一加密運算,所述加密運算包含使用所述寄存器作為工作空間來計算密鑰調度;及在所述第一加密運算結束時,從所述寄存器恢復所述密鑰以供在第二加密運算中使用。
2.根據權利要求1所述的系統,其中恢復所述密鑰包括 運行逆密鑰調度運算。
3.一種密碼系統,其包括 寄存器,其含有密鑰;處理器,其耦合到所述寄存器且可操作以用于執行第一解密運算,所述解密運算包含使用所述寄存器作為工作空間來計算逆密鑰調度;及在所述第一解密運算結束時,從所述寄存器恢復所述密鑰以供在第二解密運算中使用。
4.根據權利要求4所述的系統,其中恢復所述密鑰包括 運行密鑰調度運算。
5.一種用于在密碼系統中加密數據的方法,所述方法包括 接收用于加密的數據塊;確定數據子塊中的位數目,其中數據子塊中的所述位數目小于或等于所述數據塊中的位數目;確定構成所述數據塊的多個數據子塊; 獲得密鑰;對第一數據子塊執行加密運算,其中所述加密運算包括 使用所述密鑰加密所述第一數據子塊;及恢復所述密鑰;及使用所述所恢復的密鑰對第二數據子塊執行所述加密運算。
6.根據權利要求5所述的方法,其中恢復所述密鑰包括 運行逆密鑰調度運算。
7.根據權利要求5所述的方法,其中所述位數目為128。
8.一種用于在密碼系統中解密數據的方法,所述方法包括 接收用于解密的數據塊;確定數據子塊中的位數目,其中數據子塊中的所述位數目小于或等于所述數據塊中的位數目;確定構成所述數據塊的多個數據子塊; 獲得密鑰調度;對第一數據子塊執行解密運算,其中所述解密運算包括 使用所述密鑰調度解密所述第一數據子塊;及恢復所述密鑰調度;及使用所述所恢復的密鑰調度對第二數據子塊執行所述解密運算。
9.根據權利要求8所述的方法,其中恢復所述密鑰包括 運行密鑰調度運算。
10.根據權利要求8所述的方法,其中所述位數目為128。
11.一種用于在密碼系統中加密數據的系統,所述系統包括 接口,其可操作以用于接收用于加密的數據塊;及處理器,其耦合到所述接口,所述處理器可操作以用于 確定數據子塊中的位數目,其中數據子塊中的所述位數目小于或等于所述數據塊中的位數目;確定構成所述數據塊的多個數據子塊; 獲得密鑰;對第一數據子塊執行加密運算,其中所述加密運算包括 使用所述密鑰加密所述第一數據子塊;及恢復所述密鑰;及使用所述所恢復的密鑰對第二數據子塊執行所述加密運算。
12.根據權利要求11所述的系統,其中恢復所述密鑰包括 運行逆密鑰調度運算。
13.根據權利要求11所述的系統,其中所述位數目為128。
14.一種用于在密碼系統中解密數據的系統,所述系統包括 接口,其可操作以用于接收用于解密的數據塊;及處理器,其操作地耦合到所述接口,所述處理器可操作以用于 確定數據子塊中的位數目,其中數據子塊中的所述位數目小于或等于所述數據塊中的位數目;確定構成所述數據塊的多個數據子塊; 獲得密鑰調度;對第一數據子塊執行解密運算,其中所述解密運算包括 使用所述密鑰調度解密所述第一數據子塊;及恢復所述密鑰調度;及使用所述所恢復的密鑰調度對第二數據子塊執行所述解密運算。
15.根據權利要求14所述的系統,其中恢復所述密鑰包括 運行密鑰調度運算。
16.根據權利要求14所述的系統,其中所述位數目為128。
全文摘要
本發明涉及一種密碼系統,其可包含含有密鑰的寄存器及耦合到所述寄存器的處理器。所述處理器可為可操作的以用于執行第一加密運算,其中所述加密運算包含使用所述寄存器作為工作空間來計算密鑰調度。在所述第一加密運算結束時,從所述寄存器恢復所述密鑰以供在第二加密運算中使用。
文檔編號H04L9/06GK102334307SQ201080009480
公開日2012年1月25日 申請日期2010年2月25日 優先權日2009年2月27日
發明者文森特·杜帕丘斯, 米歇爾·杜蓋 申請人:愛特梅爾盧梭公司