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