亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

使用用于掩蔽操作中的有限子域查找表的密碼編譯加密算法的制作方法

文檔序號(hào):11335288閱讀:397來(lái)源:國(guó)知局
使用用于掩蔽操作中的有限子域查找表的密碼編譯加密算法的制造方法與工藝

相關(guān)申請(qǐng)案的交叉參考

本申請(qǐng)案主張于2015年3月9日向美國(guó)專利商標(biāo)局申請(qǐng)的非臨時(shí)申請(qǐng)案第14/642,591號(hào)的優(yōu)先權(quán)和權(quán)益,所述申請(qǐng)案的全部?jī)?nèi)容以引用的方式并入本文中。

各種特征涉及用于加密和解密的密碼編譯加密,尤其涉及高級(jí)加密標(biāo)準(zhǔn)(aes)加密或其它對(duì)稱加密。



背景技術(shù):

高級(jí)加密標(biāo)準(zhǔn)(aes)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所(nist)于2001年建立,其用于使用對(duì)稱密鑰(即,將相同密鑰用于加密和解密)的電子數(shù)據(jù)的加密和解密。aes的一些實(shí)施方案對(duì)伽羅華域(gf)利用有限域代數(shù),例如gf(28)。aes加密通常以初始addroundkey操作開(kāi)始,在所述操作中,待加密明文的當(dāng)前“狀態(tài)”的各字節(jié)與輪密鑰(自主加密算法密鑰衍生)組合。所述“狀態(tài)”是4×4字節(jié)矩陣。隨后,各輪加密通常包含四個(gè)主要階段:(1)subbytes階段,其為各字節(jié)根據(jù)查找表(即“s盒”)或其它合適替換引導(dǎo)而被另一字節(jié)所代替的非線性替換步驟;(2)shiftrows階段,其為所述狀態(tài)的最后幾行被循環(huán)移位某一步數(shù)的變位步驟;(3)mixcolumns階段,其為對(duì)所述狀態(tài)的列運(yùn)行的混合操作,從而組合各列中的四個(gè)字節(jié);以及(4)另一addroundkey階段。應(yīng)注意,階段的編號(hào)可以是任意的,且可以實(shí)際上將初始addroundkey階段稱為“第一”階段,因此subbytes步驟為“第二”階段。

設(shè)計(jì)一種實(shí)用aes硬件裝置的難題在于在緊湊性與性能之間實(shí)現(xiàn)有效取舍,其中整體性能受處理速度以及例如安全性的其它因素影響,例如對(duì)試圖獲得加密算法密鑰的側(cè)信道攻擊的免疫。為改進(jìn)安全性并避免攻擊,可尤其在subbytes階段期間執(zhí)行掩蔽操作。掩蔽是一種對(duì)抗側(cè)信道攻擊的對(duì)策,其涉及隨機(jī)化加密算法的內(nèi)部狀態(tài),使得在加密或解密期間對(duì)少數(shù)中間值的觀察將不會(huì)提供關(guān)于任何敏感變量(例如秘密密鑰)的信息。為使掩蔽適應(yīng)aes,可執(zhí)行一種利用8位隨機(jī)數(shù)產(chǎn)生器連同額外電路(例如動(dòng)態(tài)查找表)的乘法逆元素操作。

為了改進(jìn)處理效率而不降低安全性和/或在利用有限域代數(shù)的其它加密算法的對(duì)應(yīng)替換階段內(nèi)提供類似修改,修改掩蔽aes系統(tǒng)內(nèi)的subbytes階段(和任何對(duì)應(yīng)invsubbytes階段)是有用的。



技術(shù)實(shí)現(xiàn)要素:

一種在密碼編譯裝置中可操作的方法包含:作為密碼編譯操作的一部分,將輸入數(shù)據(jù)與輪密鑰組合,以獲得組合數(shù)據(jù);通過(guò)采用以下中的至少一個(gè)的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分:靜態(tài)查找表,其在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù);有限域的子域中的動(dòng)態(tài)查找表,其中使用置換來(lái)實(shí)施所有替換操作以獲得經(jīng)替換數(shù)據(jù);或有限域的子域中的替代靜態(tài)查找表,其靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換;以及通過(guò)一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。

在另一方面中,一種密碼編譯裝置包含:處理電路,其經(jīng)配置以作為密碼編譯操作的一部分而將輸入數(shù)據(jù)與輪密鑰組合,以獲得組合數(shù)據(jù);通過(guò)采用以下中的至少一個(gè)的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分:靜態(tài)查找表,其在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù);有限域的子域中的動(dòng)態(tài)查找表,其中使用置換來(lái)實(shí)施所有替換操作以獲得經(jīng)替換數(shù)據(jù);或有限域的子域中的替代靜態(tài)查找表,其靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換;及通過(guò)一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù)從而產(chǎn)生輸出數(shù)據(jù);以及存儲(chǔ)裝置,其經(jīng)配置以存儲(chǔ)輸出數(shù)據(jù)。

在又一方面中,一種密碼編譯裝置包含:用于作為密碼編譯操作的一部分,將輸入數(shù)據(jù)與輪密鑰組合以獲得組合數(shù)據(jù)的裝置;用于通過(guò)采用以下中的至少一個(gè)的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分的裝置:靜態(tài)查找表,其在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù);有限域的子域中的動(dòng)態(tài)查找表,其中使用置換來(lái)實(shí)施所有替換操作以獲得經(jīng)替換數(shù)據(jù);或有限域的子域中的替代靜態(tài)查找表,其靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換;以及用于通過(guò)一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù)從而產(chǎn)生輸出數(shù)據(jù)的裝置。

在再一方面中,一種適用于密碼術(shù)的機(jī)器可讀存儲(chǔ)媒體包含一或多個(gè)指令,所述指令在由至少一個(gè)處理電路執(zhí)行時(shí)使得至少一個(gè)處理電路執(zhí)行以下操作:作為密碼編譯操作的一部分,將輸入數(shù)據(jù)與輪密鑰組合,以獲得組合數(shù)據(jù);通過(guò)采用以下中的至少一個(gè)的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分:靜態(tài)查找表,其在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù);有限域的子域中的動(dòng)態(tài)查找表,其中使用置換來(lái)實(shí)施所有替換操作以獲得經(jīng)替換數(shù)據(jù);或有限域的子域中的替代靜態(tài)查找表,其靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換;以及通過(guò)一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。

附圖說(shuō)明

圖1說(shuō)明采用掩蔽subbytes和invsubbytes操作的示范性掩蔽aes加解密系統(tǒng)和方法。

圖2說(shuō)明適用于圖1的aes系統(tǒng)和方法的示范性掩蔽subbytes處理器。

圖3說(shuō)明供aes密碼編譯裝置用以利用靜態(tài)查找表的示范性程序,所述靜態(tài)查找表為其自身逆元素且有助于例如subbytes或invsubbytes的掩蔽替換操作。

圖4說(shuō)明移動(dòng)裝置的示范性芯片上系統(tǒng)(soc),其中所述soc包含具有靜態(tài)查找表的aes處理器,所述靜態(tài)查找表為其自身逆元素且有助于加密/解密的掩蔽替換操作的。

圖5說(shuō)明采用掩蔽subbytes和invsubbytes操作的示范性掩蔽aes加解密系統(tǒng)和方法,所述掩蔽subbytes和invsubbytes操作利用gf(22)靜態(tài)和動(dòng)態(tài)查找表。

圖6說(shuō)明適用于圖5的aes系統(tǒng)和方法的示范性掩蔽subbytes處理器,其中subbytes處理器利用gf(22)靜態(tài)和動(dòng)態(tài)查找表。

圖7說(shuō)明用于采用靜態(tài)和動(dòng)態(tài)查找表的aessubbyte處理的gf(22)中的示范性掩蔽逆元素處理。

圖8說(shuō)明利用gf(22)中的靜態(tài)和動(dòng)態(tài)查找表的掩蔽subbytes處理器的示范性組件。

圖9是說(shuō)明用于設(shè)備的硬件實(shí)施方案的實(shí)例的框圖,所述設(shè)備采用可以利用圖3至8的系統(tǒng)、方法和設(shè)備的處理系統(tǒng)。

圖10是說(shuō)明適用于混合實(shí)施方案的圖9的處理電路的示范性組件的框圖,在所述實(shí)施方案中,在替換階段中采用靜態(tài)表以及動(dòng)態(tài)表。

圖11是說(shuō)明圖9的機(jī)器可讀媒體的示范性指令組件的框圖。

圖12概述供密碼編譯裝置使用的示范性程序。

圖13概述供密碼編譯裝置使用,尤其供aes分組加密算法使用的額外示范性程序。

圖14是說(shuō)明適用于一實(shí)施方案的圖9的處理電路的示范性組件的框圖,在所述實(shí)施方案中,在替換階段中采用動(dòng)態(tài)表的而不采用對(duì)應(yīng)的靜態(tài)表。

圖15是說(shuō)明圖14的機(jī)器可讀媒體的示范性指令組件的框圖。

圖16是說(shuō)明適用于一實(shí)施方案的圖9的處理電路的示范性組件的框圖,在所述實(shí)施方案中,在替換階段中采用靜態(tài)表而不采用對(duì)應(yīng)動(dòng)態(tài)表。

圖17是說(shuō)明圖14的機(jī)器可讀媒體的示范性指令組件的框圖。

具體實(shí)施方式

在以下描述中,給出具體細(xì)節(jié)以提供對(duì)本發(fā)明的各種方面的透徹理解。然而,所屬領(lǐng)域的技術(shù)人員將理解,可在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)踐所述方面。舉例來(lái)說(shuō),可以框圖展示電路以便避免以不必要的細(xì)節(jié)混淆所述方面。在其它情況下,可不詳細(xì)展示眾所周知的電路、結(jié)構(gòu)和技術(shù)以免混淆本發(fā)明的所述方面。

詞語(yǔ)“示范性”在本文中用以意指“充當(dāng)實(shí)例、例子或說(shuō)明”。本文中描述為“示范性”的任何實(shí)施方案或方面未必應(yīng)解釋為比本發(fā)明的其它方面優(yōu)選或有利。同樣,術(shù)語(yǔ)“方面”不要求本發(fā)明的所有方面包含所討論的特征、優(yōu)點(diǎn)或操作模式。

概述

幾個(gè)新穎特征涉及適用于密碼編譯系統(tǒng)(例如根據(jù)aes配置的系統(tǒng))的裝置和方法。

圖1說(shuō)明用于加密100和解密101的示范性aes系統(tǒng)的階段,其中在為字節(jié)替換階段的subbytes和invsubbytes階段采用掩蔽。對(duì)于加密,在102處開(kāi)始,對(duì)輸入明文執(zhí)行初始addroundkey操作,其中使當(dāng)前狀態(tài)的各字節(jié)與輪密鑰塊組合。如上文所提到,“狀態(tài)”是4×4字節(jié)矩陣。也就是說(shuō),在addroundkey期間,子密鑰使用(例如)各子密鑰與狀態(tài)大小相同的rijndael的密鑰次序表而自主密鑰推導(dǎo)。隨后,通過(guò)使用按位xor使?fàn)顟B(tài)的各字節(jié)與子密鑰的對(duì)應(yīng)字節(jié)組合來(lái)加入子密鑰。在初始addroundkey操作之后,執(zhí)行加密輪103,其中每一輪包含僅掩蔽subbytes階段104、shiftrows階段106、mixcolumns階段108和另一addroundkey階段110。掩蔽subbytes階段104是標(biāo)準(zhǔn)aessubbytes階段的一種掩蔽版本。在掩蔽subbytes階段中,使用提供掩蔽的替換裝置或處理器來(lái)用對(duì)應(yīng)subbyte代替狀態(tài)矩陣中的各字節(jié)。掩蔽替換在加密算法中提供非線性,同時(shí)還充當(dāng)?shù)挚箓?cè)信道攻擊的對(duì)策。在aes的一些習(xí)知實(shí)例中,subbytes裝置經(jīng)由gf(28)計(jì)算乘法逆元素,其中g(shù)f(28)為伽羅華域(即,有限域)。如下文將描述,經(jīng)修改版本實(shí)際上能夠使用gf(22)子域執(zhí)行乘法逆元素。在完成加密輪103之后,執(zhí)行最終加密輪114,其包含最終掩蔽subbytes階段116、最終shiftrows階段118和最終addroundkey階段120。輸出為經(jīng)加密密文。

逆向操作解密101以將密文轉(zhuǎn)換成明文。簡(jiǎn)而言之,在124處開(kāi)始,對(duì)輸入密文執(zhí)行初始addroundkey操作,其中使當(dāng)前狀態(tài)的各字節(jié)與輪密鑰塊組合。在初始addroundkey操作之后,執(zhí)行解密輪134,其中每一輪包含invshiftrows階段126、掩蔽invsubbytes替換階段128、invmixcolumns階段130和另一addroundkey階段132。掩蔽invsubbytes階段104是標(biāo)準(zhǔn)aesinvsubbytes階段的修改版本。在解密輪134之后,執(zhí)行最終解密輪136,其包含最終invshiftrows階段138、最終掩蔽invsubbytes替換階段140和最終addroundkey階段136,其輸出為經(jīng)解密明文。

圖2說(shuō)明掩蔽subbyte替換裝置或處理器200,其接收兩種輸入:am=(a+m)和m,即掩蔽值am和輸入掩碼m,其中a表示待加密數(shù)據(jù)的當(dāng)前狀態(tài)的一個(gè)字節(jié)。輸出為掩蔽逆元素am-1和輸出掩碼m',其中掩蔽逆元素可以由am-1=(a-1+m')表示。實(shí)施掩蔽subbyte處理器200通常需要subbyte電路來(lái)執(zhí)行乘法逆元素和仿射變換。對(duì)于gf(28),subbyte操作采用兩個(gè)主要子步驟:(1)計(jì)算域的元素或字節(jié)的逆元素和(2)將所得逆元素(表示為gf(28)中的位的向量)乘以位矩陣并加上常數(shù)向量,從而執(zhí)行仿射變換。這些操作可利用圖2中未展示的且通過(guò)處理器200內(nèi)部地產(chǎn)生的各種隨機(jī)位。就時(shí)間和/或電路面積而言,計(jì)算逆元素在計(jì)算上代價(jià)巨大。對(duì)于aes的gf實(shí)施方案,字節(jié)可以被看作位是多項(xiàng)式的對(duì)應(yīng)冪的系數(shù)且乘法以不可約多項(xiàng)式為模。然而,替代使用gf(2)上的八維向量,可實(shí)際上限定字節(jié)來(lái)表示gf(24)上的二維向量,其中每一4位元素是gf(22)上的二維向量且每一2位元素是gf(2)上的二維向量。這可被稱為合成域或塔域表示。因而,8位逆元素操作被轉(zhuǎn)換成各采用2位計(jì)算的幾個(gè)4位操作。參見(jiàn)canright等人:極簡(jiǎn)明的用于aes的“完美掩蔽”s盒(averycompact"perfectlymasked"s-boxforaes)(經(jīng)校正)。iacr密碼術(shù)預(yù)印本文庫(kù)2009:11(2009)(iacrcryptologyeprintarchive2009:11(2009))。合成域或塔域技術(shù)可應(yīng)用到掩蔽subbyte操作以及未掩蔽subbytes。

除用于計(jì)算乘法逆元素的前述組件之外,習(xí)知掩蔽subbyte處理器還包含8位隨機(jī)數(shù)產(chǎn)生器和額外電路,這可能取決于特定實(shí)施方案。舉例來(lái)說(shuō),盡管可提供查找表來(lái)促進(jìn)某些操作,但這通常需要額外存儲(chǔ)器并因此消耗更多電路空間。如所提到,對(duì)于合成域運(yùn)算,使用執(zhí)行aes操作的域的子域來(lái)執(zhí)行操作。就這一點(diǎn)而言,適用于合成域運(yùn)算的乘法逆元素的計(jì)算通常需要:產(chǎn)生新的隨機(jī)位(例如就gf(22)中的canright式實(shí)施方案而言,多出六個(gè))以及用以計(jì)算gf(22)和gf(24)的校正項(xiàng)與關(guān)鍵路徑并行的額外操作。還通常對(duì)關(guān)鍵路徑提供額外操作來(lái)改進(jìn)安全性和應(yīng)用校正項(xiàng)。對(duì)于各種canright式實(shí)施方案,還參見(jiàn):canright,用于aes的極簡(jiǎn)明s盒(averycompacts-boxforaes)。ches2005;canright,極簡(jiǎn)明rijndaels盒(averycompactrijndaels-box),海軍研究生院技術(shù)報(bào)告:nps-ma-05-001(navalpostgraduateschooltechnicalreport:nps-ma-05-001);canright:避免掩蔽伽羅華乘法器中的掩碼再用(avoidmaskre-useinmaskedgaloismultipliers)。iacr密碼術(shù)預(yù)印本文庫(kù)2009:11(2009)(iacrcryptologyeprintarchive2009:12(2009))。

對(duì)于gf(22)中的示范性非掩蔽逆元素處理,在aes裝置內(nèi)提供電路,以基于輸入b=[b1,b0](其中b1和b0為兩個(gè)二位對(duì),即,b1=(b11,b10)且b0=(b01,b00))來(lái)計(jì)算下式:

中間計(jì)算:c=n×(b1+b0)2+(b1×b0)。

(1)

中間計(jì)算:c-1=c2。

(2)

最終結(jié)果:

在這些方程式中,n為常數(shù)且c為合并值。應(yīng)注意,這些方程式中的“×”和“+”運(yùn)算分別表示伽羅華域中的乘法和加法運(yùn)算,且因此不是普通算術(shù)運(yùn)算。具體地說(shuō),運(yùn)算(1)、(2)和p和q的計(jì)算是gf(22)中的相乘,其中p和q是b-1的上部部分和下部部分,且b-1是gf(22)的元素。

對(duì)于gf(22)中的示范性掩蔽逆元素處理,實(shí)際上提供電路以在輸入bm=[b1m,b0m],[q1m,q0m]的情況下執(zhí)行以下操作:

中間計(jì)算:cm=r+n×(b1m+b0m)2+(b1m×b0m)+

+n×(q1+q0)2+(q1+q0)+

+(b1m×q0)+(b0m×q1)

(4)

中間計(jì)算:

最終結(jié)果:

在這些方程式中,q1m、q0m表示兩個(gè)二位輸入掩碼值;b1m、b0m表示兩個(gè)二位掩蔽輸入值(即,其為如圖2中所展示的掩蔽輸入字節(jié)am的gf(22)組件);n同樣是常數(shù);r是兩個(gè)二位新掩碼且ti也是二位新掩碼。中間值cm是合并值且借助執(zhí)行安全掩蔽逆元素處理來(lái)計(jì)算。使用隨機(jī)數(shù)產(chǎn)生器由處理器200內(nèi)部產(chǎn)生r和ti新掩碼,并在合并階段將其加入,從而改進(jìn)安全性,因?yàn)槿绻麤](méi)有它們,在計(jì)算期間可能存在信息泄露。在最終結(jié)果中,以b0m+r2+...開(kāi)始的項(xiàng)是校正項(xiàng)。同樣,在最終結(jié)果中,以b1mxr2+...開(kāi)始的項(xiàng)也是校正項(xiàng)。同樣應(yīng)注意,這些方程式中的“×”和“+”運(yùn)算分別表示伽羅華域中的乘法和加法運(yùn)算。類似于的計(jì)算pm和pm的計(jì)算(的上部部分和下部部分)使用gf(22)中的安全相乘來(lái)計(jì)算。通過(guò)在gf(22)中(而非在gf(28)中)執(zhí)行這些操作,掩碼從輸入到輸出的擴(kuò)展得以簡(jiǎn)化,同時(shí)保持安全性,因?yàn)闊o(wú)中間可觀測(cè)值與正計(jì)算的實(shí)際值相關(guān)。然而,計(jì)算極其復(fù)雜并因此費(fèi)時(shí),且如所提到,需要隨機(jī)數(shù)產(chǎn)生器來(lái)產(chǎn)生內(nèi)部新位。

因此,盡管使用合成域運(yùn)算(例如gf(22))可相對(duì)于標(biāo)準(zhǔn)gf(28)實(shí)施方案降低subbytes的乘法逆元素處理的復(fù)雜度,但掩蔽subbytes處理器200可能仍需要相對(duì)大量的電路空間并消耗相對(duì)大量的時(shí)間,從而對(duì)整體性能造成負(fù)荷。在處理器內(nèi)使用隨機(jī)數(shù)產(chǎn)生器可限制其處理速度。類似的問(wèn)題適用于aes的解密部分的對(duì)應(yīng)掩蔽invsubbytes裝置或處理器,其用作加密部分的掩蔽subbytes裝置的逆元素。

圖3概述一種經(jīng)修改替換程序300,其可至少在一些實(shí)施方案中使用,以減少aes加密算法的subbytes或invsubbytes階段期間的替換操作數(shù)量或利用有限域中的合成域操作的密碼編譯裝置的對(duì)應(yīng)替換操作內(nèi)的替換操作數(shù)量。不需要隨機(jī)數(shù)產(chǎn)生器來(lái)使用此程序產(chǎn)生內(nèi)部新位,又維持了安全性。通過(guò)避免在subbytes裝置中使用隨機(jī)數(shù)產(chǎn)生器,處理速度可相對(duì)于計(jì)算上文方程式(4)、(5)和(6)的結(jié)果的裝置有所改進(jìn)。然而,在此混合實(shí)施方案中,可能需要一些額外的位以及靜態(tài)查找表和動(dòng)態(tài)查找表。就這一點(diǎn)而言,圖3的經(jīng)修改subbytes程序使用在gf(22)中為自身的逆元素的靜態(tài)查找表來(lái)促進(jìn)乘法逆元素的計(jì)算。

在302處開(kāi)始,作為有限域(例如gf(28))中的加密或解密aes密碼編譯操作的一部分,aes裝置將輸入文本(本文中通常稱作“數(shù)據(jù)”)與輪密鑰組合,從而獲得組合數(shù)據(jù)(例如,通過(guò)將明文與輪密鑰組合以供加密或?qū)⒚芪呐c輪密鑰組合以供解密)。這可(例如)對(duì)應(yīng)于圖1的用于加密的初始addroundkey操作102,或?qū)?yīng)于用于解密的初始addroundkey操作124。應(yīng)注意,在本文中,“數(shù)據(jù)”可通常指的是由計(jì)算裝置(例如aes裝置或其組件)對(duì)其執(zhí)行操作的各種數(shù)量、字符或符號(hào)中的任何一個(gè)。對(duì)于在gf(22)中操作的計(jì)算組件,數(shù)據(jù)隨狀態(tài)的一部分改變。

在圖3的304處,aes裝置通過(guò)采用在有限域的子域(例如gf(22))中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表的掩蔽aes替換階段(例如,用于加密的掩蔽subbytes階段或用于解密的掩蔽invsubbytes階段)來(lái)路由組合數(shù)據(jù)的至少一部分。這可(例如)對(duì)應(yīng)于用于加密的圖1的掩蔽subbytes操作104的經(jīng)修改版本,或?qū)?yīng)于用于解密的圖1的掩蔽invsubbytes操作128的經(jīng)修改版本。在圖3的306處,aes裝置通過(guò)一或多個(gè)額外密碼編譯aes階段來(lái)路由經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)(例如,輸出用于加密的密文或輸出用于解密的經(jīng)解密明文)。這可對(duì)應(yīng)于圖1的剩余加密或解密階段。

在有限域?yàn)間f(28)且子域?yàn)間f(22)的一個(gè)實(shí)例中,可以使用gf(22)中的一個(gè)字節(jié)將靜態(tài)查找表表示為:

t[·]={00,10,01,11}≡(·)-1

(7)

或其置換。對(duì)于合并,除了靜態(tài)查找表之外,aes裝置還可利用一個(gè)字節(jié)大小的動(dòng)態(tài)表tm[·],以供在前述校正項(xiàng)(即,輸入掩碼)變得可用時(shí)即刻再計(jì)算掩蔽項(xiàng)。在這個(gè)實(shí)例中,t[·]和tm[·]是相異的表。因此,在一個(gè)實(shí)例中,輸入是校正項(xiàng)(輸入掩碼)t[(·)]和輸出掩碼的當(dāng)前值;且輸出是tm[·],其中tm[·]由輸出掩碼的當(dāng)前值掩蔽的t[·]且其索引由輸入掩碼校正:

tm[i+校正項(xiàng)]=t[i]+輸出掩碼,i=0,1,2,3。

(8)

方程式(8)代替上文方程式(4)和(5)用以合并。因此,在合并階段的這個(gè)示范性實(shí)施方案中,輸入掩碼起到校正項(xiàng)作用且輸出掩碼僅僅是輸入掩碼的置換。當(dāng)校正項(xiàng)變?yōu)榭捎脮r(shí),與subbytes階段的其它操作同時(shí)或同步執(zhí)行動(dòng)態(tài)查找表中的元素的計(jì)算。使用靜態(tài)和動(dòng)態(tài)查找的混合實(shí)施方案可用于各種中間計(jì)算且可用于執(zhí)行乘法逆元素處理,以得到掩蔽subbytes階段的最終結(jié)果。

應(yīng)注意,在gf(22)子域的層面,置換數(shù)量較小,即,對(duì)于gf(22)子域僅存在四個(gè)元素。在gf(22)子域中計(jì)算乘法運(yùn)算對(duì)應(yīng)于執(zhí)行子域的一些元素的置換(因?yàn)樽佑蚴怯邢抻?,且因此子域中的所有乘法運(yùn)算必定得到所述子域的元素)。因此,前述靜態(tài)表可用于有效地促進(jìn)乘法運(yùn)算,因?yàn)槠浯鎯?chǔ)有各種置換。此外,子域中的逆元素處理是一種位調(diào)換。更具體地說(shuō),在gf(22)中:0的逆元素是0;1的逆元素是2;2的逆元素是1;且3的逆元素是3(其中值0、1、2和3意在表示gf(22)子域的容許值而非其一般運(yùn)算等效物)。因此,僅僅通過(guò)使用靜態(tài)表來(lái)查找反轉(zhuǎn)值可輕易地執(zhí)行逆元素處理。再者,應(yīng)注意,輸入值加上校正項(xiàng)(即輸入掩碼)將得到靜態(tài)表的置換。在gf(22)中僅存在四種置換:輸入掩碼為0時(shí)的同一性表,和輸入掩碼不為0時(shí)的三個(gè)其它字節(jié)。借此,置換由輸入掩碼選擇。通過(guò)使用索引向量除以gf(22)中的掩蔽輸入值來(lái)選擇輸出。因而,在不需要隨機(jī)數(shù)產(chǎn)生器或任何復(fù)雜計(jì)算的情況下便利地執(zhí)行合并。安全性級(jí)別大體上與上文所描述的先前技術(shù)相同,因?yàn)橥瑫r(shí)置換和計(jì)算各項(xiàng)。此外,憑借這種技術(shù),在字節(jié)中被設(shè)置成一的位的數(shù)目在任何給定時(shí)間始終相同。這通過(guò)使得難以進(jìn)行側(cè)信道攻擊(其可以其它方式利用被設(shè)置成零的位的數(shù)目的改變以獲得機(jī)密信息)來(lái)保持安全性。

作為具體實(shí)例,下文描述使用為其自身逆元素的表t(且為清晰起見(jiàn)數(shù)值以十進(jìn)制而非gf(22)表示)的未掩蔽逆運(yùn)算。對(duì)于輸入值a=2,通過(guò)查找表t[a]的第a個(gè)元素來(lái)從所述表獲得其逆元素,所述逆元素在這個(gè)實(shí)例中為1:

類似地,t[0]=0,t[1]=2等等。因此,以上運(yùn)算表示常規(guī)(即,未掩蔽)逆元素,因?yàn)槠淇山柚鷗[·]予以實(shí)施。

對(duì)于掩蔽,存在三個(gè)主要步驟:

(a)由輸入掩碼同時(shí)對(duì)t[·]的所有元素求和,并產(chǎn)生動(dòng)態(tài)矩陣:tm[·]。

(b)將tm的元素向左循環(huán)地置換輸出掩碼的量(其中輸入和輸出掩碼彼此一致)。

(c)通過(guò)用輸入掩蔽值給tm加索引來(lái)獲得對(duì)應(yīng)輸出掩碼。

上文討論了gf(22)中的逆元素處理的中間運(yùn)算。對(duì)于相乘,運(yùn)算是類似的,其主要差別在于必須允許向左和向右置換。此外,置換的元素僅為非零的那些元素(因?yàn)榕c零相乘必定為零)。舉例來(lái)說(shuō),未掩蔽相乘可與以下運(yùn)算結(jié)合(其中,同樣為清晰起見(jiàn)以十進(jìn)制表示數(shù)值):

應(yīng)注意,可通過(guò)含有所有域元素{0,1,2,3}的數(shù)組的后續(xù)置換獲得m[]的各行/列。舉例來(lái)說(shuō),可通過(guò)t[]的置換來(lái)獲得m[]的各行/列。設(shè)單個(gè)向量mt[]={0,1,2,3}。如果操作數(shù)中的一個(gè)為零,那么得零,否則將非零元素向左移位b并以a給所得向量加索引。舉例來(lái)說(shuō),如果a=1且b=2,那么mt'[]={0,3,1,2}且mt'[1]=3,這等于gf(22)中的”a×b”。

可憑借以下運(yùn)算獲得掩蔽相乘”(a+m)×(b+m)”的結(jié)果:

(a)如果掩蔽元素中的一個(gè)為零,那么得0。

(b)否則mt'[]的所有非零元素用掩碼m求和。

(c)mt'[]的所有元素(除了在位0處的元素)向左移位掩蔽b的量。

(d)通過(guò)以a的掩蔽值給所得數(shù)組mt'加索引來(lái)獲得結(jié)果-a×b+m-。

可憑借能夠向左和向右移位的單一額外字節(jié)或以完整大小的表等實(shí)現(xiàn)這些運(yùn)算。就相乘而言,如果兩個(gè)操作數(shù)中的一個(gè)為零,那么相乘結(jié)果必定為零。還應(yīng)注意,一般來(lái)說(shuō),裝置對(duì)輸出掩碼求和,輸出掩碼在這種狀況下可作為輸入掩碼,因?yàn)檠诖a的加法運(yùn)算會(huì)同時(shí)進(jìn)行。這也是允許減少新隨機(jī)位和再使用gf(22)中的掩碼的機(jī)制。否則,例如在傳統(tǒng)canright式實(shí)施方案中,這種情況將是不大可能的。還應(yīng)注意,mt不同于t。此外,僅通過(guò)循環(huán)移位t的元素?zé)o法從t獲得mt。同樣地,通過(guò)循環(huán)移位mt中的元素?zé)o法獲得t。然而,通過(guò)置換mt的位置1和3處的元素可獲得t,且反之亦然。

因此,方程式(4)和(5)的中間計(jì)算可被前述表查找代替,且乘法運(yùn)算使用剛才所描述的運(yùn)算。實(shí)際上,用于相乘的值的置換數(shù)目略微小于用于逆元素處理的值的數(shù)目。就考慮到方程式(6)來(lái)說(shuō),應(yīng)注意,的最終結(jié)果由兩個(gè)二位向量pm和qm構(gòu)成,一個(gè)向量以t0開(kāi)始且另一向量以t1開(kāi)始,這兩個(gè)向量是內(nèi)部產(chǎn)生的新位。為避免使用這些新位,如剛才所描述,最終相乘結(jié)果基于其它置換。

因此,前述實(shí)例描述對(duì)字節(jié)am的兩個(gè)二位bm執(zhí)行的計(jì)算,所述字節(jié)由采用使用動(dòng)態(tài)和靜態(tài)表的混合實(shí)施方案的掩蔽subbytes裝置處理。可使用類似組件來(lái)依序或并行處理來(lái)自am的其它位對(duì),從而共同計(jì)算特定字節(jié)的掩蔽逆元素處理。如可了解,在aes加密的各種階段期間處理許多這類字節(jié)。在各subbytes階段期間,各個(gè)位對(duì)的處理速度的相對(duì)少的提高可最終獲得完成加密的整體處理速度的顯著提高。類似考慮因素適用于解密的invsubbytes階段。本文中還描述采用動(dòng)態(tài)查找表而非靜態(tài)表的實(shí)施方案,以及本文中還描述采用靜態(tài)查找表而非動(dòng)態(tài)表的實(shí)施方案。

現(xiàn)將參考示范性實(shí)施方案來(lái)描述這些或其它特征,在所述示范性實(shí)施方案中,aes處理裝置是智能手機(jī)或類似用戶存取終端裝置內(nèi)的芯片上系統(tǒng)soc處理器的組件。在這些裝置內(nèi),電路面積可能受限,且因此在高處理速度下消耗極小電路面積同時(shí)仍實(shí)現(xiàn)足夠安全性的aes處理器可能至關(guān)重要。然而,可在廣泛多種系統(tǒng)和裝置中利用并且通常可在采用aes或類似密碼編譯處理時(shí)實(shí)施密碼編譯系統(tǒng)的方面。舉例來(lái)說(shuō),其中可實(shí)施密碼編譯系統(tǒng)的其它硬件環(huán)境包含智能卡或各種其它存儲(chǔ)裝置或通信裝置以及用于與其共同使用的組件或外圍裝置。在智能卡內(nèi),電路空間尤其受到限制且時(shí)鐘速度可能相對(duì)緩慢,因此受益于并不消耗大量電路空間而仍快速且高效地操作的aes裝置。

示范性soc硬件環(huán)境

圖4說(shuō)明根據(jù)其中可利用各種新穎特征的一個(gè)實(shí)例的移動(dòng)通信裝置的soc處理電路400。soc處理電路可以是高通公司的snapdragontm處理電路。soc處理電路400包含應(yīng)用程序處理電路410,其包含經(jīng)裝備以與aes處理器413結(jié)合操作的多核cpu412,所述aes處理器413采用用于掩蔽的靜態(tài)和動(dòng)態(tài)查找表(包含為其自身逆元素的靜態(tài)表)且包含aes加密裝置415和aes解密裝置417(其可能均包含所述靜態(tài)表中的一或多個(gè)以及一或多個(gè)動(dòng)態(tài)查找表)。

應(yīng)用程序處理電路410通??刂埔苿?dòng)通信裝置的全部組件的操作。在一個(gè)方面,應(yīng)用程序處理電路410耦合到用于控制數(shù)據(jù)的存儲(chǔ)的主機(jī)存儲(chǔ)控制器450,所述數(shù)據(jù)的存儲(chǔ)包含內(nèi)部共享存儲(chǔ)裝置432的密鑰存儲(chǔ)元件433中萬(wàn)能密鑰的存儲(chǔ),所述內(nèi)部共享存儲(chǔ)裝置432形成內(nèi)部共享硬件(hw)資源430的部分。應(yīng)用程序處理電路410還可包含啟動(dòng)只讀存儲(chǔ)器(rom)和/或隨機(jī)存取存儲(chǔ)器(ram)418,其存儲(chǔ)有用于soc處理電路400的各種組件的啟動(dòng)順序指令。soc處理電路400進(jìn)一步包含受應(yīng)用程序處理電路410控制的一或多個(gè)外圍子系統(tǒng)420。外圍子系統(tǒng)420可包含(但不限于):存儲(chǔ)子系統(tǒng)(例如,rom、ram)、視頻/圖形子系統(tǒng)(例如,數(shù)字信號(hào)處理電路(dsp)、圖形處理電路單元(gpu))、音頻子系統(tǒng)(例如,dsp、模/數(shù)轉(zhuǎn)換器(adc)、數(shù)/模轉(zhuǎn)換器(dac))、功率管理子系統(tǒng)、安全子系統(tǒng)(例如,其它加密組件和數(shù)字權(quán)限管理(drm)組件)、輸入/輸出(i/o)子系統(tǒng)(例如,鍵盤(pán)、觸摸屏)以及有線和無(wú)線連接子系統(tǒng)(例如,通用串行總線(usb)、全球定位系統(tǒng)(gps)、wi-fi、全球移動(dòng)通信系統(tǒng)(gsm)、分碼多重存取(cdma)、4g長(zhǎng)期演進(jìn)(lte)調(diào)制解調(diào)器)。示范性外圍設(shè)備子系統(tǒng)420為調(diào)制解調(diào)器子系統(tǒng),其包含dsp422、各種其它硬件(hw)和軟件(sw)組件424以及各種射頻(rf)組件426。在一個(gè)方面中,各外圍子系統(tǒng)420還包含存儲(chǔ)有相關(guān)外圍子系統(tǒng)420的主要啟動(dòng)映像的啟動(dòng)ram或rom428。

如所提到,soc處理電路400進(jìn)一步包含各種內(nèi)部共享hw資源430,例如內(nèi)部共享存儲(chǔ)裝置432(例如,靜態(tài)ram(sram)、快閃存儲(chǔ)器等),其由應(yīng)用程序處理電路410和各種外圍子系統(tǒng)420共享,以存儲(chǔ)各種運(yùn)行時(shí)間數(shù)據(jù)或其它參數(shù)以及提供主機(jī)存儲(chǔ)器。在圖4的實(shí)例中,內(nèi)部共享存儲(chǔ)裝置432包含可用于存儲(chǔ)密碼編譯密鑰或口令的前述密鑰存儲(chǔ)元件、部分或組件433。在其它實(shí)例中,密鑰存儲(chǔ)在移動(dòng)裝置內(nèi)的其它地方。

在一個(gè)方面中,soc400的組件410、418、420、428和430集成在單芯片襯底上。soc處理電路400進(jìn)一步包含各種外部共享hw資源440,其可位于不同的芯片襯底上并且可經(jīng)由一或多個(gè)總線而與soc處理電路400通信。外部共享hw資源440可包含(例如)外部共享存儲(chǔ)器442(例如雙倍數(shù)據(jù)速率(ddr)動(dòng)態(tài)ram)和/或永久性或半永久性數(shù)據(jù)存儲(chǔ)器444(例如安全數(shù)字(sd))卡、硬盤(pán)驅(qū)動(dòng)器(hdd)、嵌入式多媒體卡、通用閃存裝置(ufs)等),其可由應(yīng)用程序處理電路410和各種外圍子系統(tǒng)420共享以存儲(chǔ)各種類型的數(shù)據(jù),例如操作系統(tǒng)(os)信息、系統(tǒng)文件、程序、應(yīng)用程序、用戶數(shù)據(jù)、音頻/視頻文件等。當(dāng)啟動(dòng)并入有soc處理電路400的移動(dòng)通信裝置時(shí),soc處理電路開(kāi)始系統(tǒng)啟動(dòng)過(guò)程,其中應(yīng)用程序處理電路410可存取啟動(dòng)ram或rom418以檢索用于soc處理電路400的啟動(dòng)指令,包含用于各種外圍子系統(tǒng)420的啟動(dòng)順序指令。外圍子系統(tǒng)420還可具有額外外圍啟動(dòng)ram或rom428。

示范性aes加密/解密程序

圖5說(shuō)明用于在加密500和解密501中使用的圖4的aes處理器413的示范性階段。示范性aes處理器413采用使用用于subbytes操作和invsubbytes操作的gf(22)靜態(tài)查找表的掩蔽aes加密/解密。對(duì)于加密,在502處開(kāi)始,對(duì)輸入明文執(zhí)行初始addroundkey操作,其中使當(dāng)前狀態(tài)的各字節(jié)與輪密鑰塊組合。在初始addroundkey操作之后,執(zhí)行一組加密輪503,其中每一輪包含利用一或多個(gè)gf(22)靜態(tài)和動(dòng)態(tài)查找表來(lái)促進(jìn)subbytes操作的掩蔽subbytes階段504。為簡(jiǎn)潔起見(jiàn),盡管在圖式中掩蔽subbytes階段504與掩蔽subbytesw/gf(22)靜態(tài)表有關(guān),但應(yīng)了解,裝置可包含例如一或多個(gè)動(dòng)態(tài)查找表的額外組件。各加密輪503還包含shiftrows階段506、mixcolumns508階段和另一addroundkey階段510。在一組加密輪503之后,執(zhí)行最終加密輪514,其包含最終掩蔽subbytes階段516、最終shiftrows階段518和最終addroundkey階段520。如同掩蔽subbytes階段504,最終掩蔽subbytes階段516利用一或多個(gè)gf(22)靜態(tài)和動(dòng)態(tài)查找表來(lái)促進(jìn)subbytes操作。輸出為經(jīng)加密密文。

逆向操作解密501以將密文轉(zhuǎn)換成明文。簡(jiǎn)而言之,在524處開(kāi)始,對(duì)輸入密文執(zhí)行初始addroundkey操作,其中使當(dāng)前狀態(tài)的各字節(jié)與輪密鑰塊組合。在初始addroundkey操作之后,執(zhí)行一組解密輪534,其中每一輪包含invshiftrows階段526、掩蔽invsubbytes替換階段528、invmixcolumns階段530和另一addroundkey階段532。掩蔽invsubbytes階段528是利用一或多個(gè)gf(22)靜態(tài)和動(dòng)態(tài)查找表來(lái)促進(jìn)invsubbytes操作的標(biāo)準(zhǔn)掩蔽aesinvsubbytes階段的經(jīng)修改版本。盡管在圖式中掩蔽invsubbytes階段528與subbytesw/gf(22)靜態(tài)表有關(guān),但同樣應(yīng)了解,裝置可包含例如一或多個(gè)動(dòng)態(tài)查找表的額外組件。在一組解密輪534之后,執(zhí)行最終解密輪536,其包含最終invshiftrows階段538、最終掩蔽invsubbytes替換階段540和最終addroundkey階段536。如同掩蔽invsubbytes階段528,最終掩蔽invsubbytes階段538利用一或多個(gè)gf(22)靜態(tài)和動(dòng)態(tài)查找表來(lái)促進(jìn)inversesubbytes操作。輸出為經(jīng)解密明文。

圖6說(shuō)明使用gf(22)靜態(tài)和動(dòng)態(tài)查找表的示范性掩蔽subbyte替換處理器600,其用作圖5的subbytes裝置504和516的組件或供其它經(jīng)合適裝備組件、裝置、系統(tǒng)或處理電路使用。如同圖2的掩蔽subbyte替換處理器200,圖6的處理器600接收兩種輸入:am=(a+m)和m,即,subbyte值am和輸入掩碼m,其中a表示待加密數(shù)據(jù)的一部分(例如其當(dāng)前狀態(tài)的一個(gè)字節(jié))。輸出為subbyte逆元素am-1和輸出掩碼m',其中subbyte逆元素可以由am-1=(a-1+m')表示。因此,經(jīng)修改替換處理器600的輸入和輸出與圖2的替換處理器200的輸入和輸出相同,且每當(dāng)以其它方式采用替換處理器200時(shí),可采用圖6的經(jīng)修改替換處理器。然而,圖6的替換處理器600的內(nèi)部組件不同于圖2的內(nèi)部組件,因?yàn)樘鎿Q處理器600包含gf(22)中的為其本身逆元素以有助于計(jì)算乘法逆元素的至少一個(gè)靜態(tài)查找表以及例如動(dòng)態(tài)查找表的其它組件。也就是說(shuō),圖6的替換處理器600利用合成域或塔域計(jì)算,所述計(jì)算使用靜態(tài)和動(dòng)態(tài)查找表有助于gf(22)計(jì)算的那些gf(22)。

圖7說(shuō)明供圖6的掩蔽subbyte替換裝置或處理器600使用或供其它合適裝備組件、裝置、系統(tǒng)或處理電路使用的示范性程序。這可被稱為“混合(hybrid)”程序,因?yàn)槠洳捎渺o態(tài)和動(dòng)態(tài)表。在702處,替換處理器輸入加密算法的當(dāng)前狀態(tài)的字節(jié)a和用作校正項(xiàng)的輸入掩碼m,并計(jì)算am=a+m。在704處,處理器從am獲得位對(duì)bm,以供在gf(22)中處理。作為所述過(guò)程的一部分,裝置采用將gf(24)的元素變?yōu)間f(22)×gf(22)中的元素對(duì)的程序。舉例來(lái)說(shuō),設(shè)想gf(24)中的4位串b=(b11,b10,b01,b00)。在一般依據(jù)(例如,上文所引用canright論文中討論的依據(jù))下,位拆分用于從gf(24)轉(zhuǎn)換到gf(22)。因此,映射使得b=[b1,b0]對(duì)應(yīng)于以下位對(duì)的級(jí)聯(lián):b1=(b11,b10)-b的左側(cè)部分或上部部分,和b0=(b01,b00)-b的右側(cè)部分或下部部分。應(yīng)注意,b1和b0是gf(22)中的元素。同樣在704處,替換處理器輸入或存取gf(22)靜態(tài)查找表t[·]和輸出掩碼m'的當(dāng)前值,其中靜態(tài)查找表t[·]可表示為:

t[·]={00,10,01,11}≡(·)-1

(9)

(或其置換),且輸出掩碼m'的初始當(dāng)前值可被設(shè)置成輸入掩碼的值或其它合適默認(rèn)值。在706處,替換處理器計(jì)算gf(22)動(dòng)態(tài)查找tm[·]的當(dāng)前值,其中tm[·]由輸出掩碼m'的當(dāng)前值掩蔽且其索引i由校正項(xiàng)(例如由輸入掩碼)校正:

tm[i+校正項(xiàng)]=t[i]+輸出掩碼。

(10)

在708處,替換處理器使用tm[·]、mt[]和mt'[](至少原則上)以及輸出掩碼m'的當(dāng)前值來(lái)計(jì)算其中bm-1=(b-1+m')的b的掩蔽值(即,bm)的乘法逆元素。所述操作的細(xì)節(jié)參見(jiàn)上文。在710處,如果需要從掩蔽輸入字節(jié)am來(lái)處理額外位對(duì)bm,那么處理返回到704。一旦最后一個(gè)位對(duì)bm經(jīng)處理,那么聚集位對(duì)以得到am-1,隨后將其輸出到aes裝置的下一階段。就這一點(diǎn)而言,計(jì)算gf(22)值以產(chǎn)生結(jié)果的左側(cè)和右側(cè)部分,例如并將其聚集在一起以提供gf(24)中的元素,其為:同樣,所述操作的細(xì)節(jié)參見(jiàn)上文。

應(yīng)注意,就gf(24)中的逆元素處理而言,將為輸入bm的逆元素。就不同于canright表示的表示而言,例如當(dāng)以傳統(tǒng)多項(xiàng)式基礎(chǔ)表示伽羅華域的元素時(shí),存在從gf(24)到gf(22)的線性映射且反之亦然,這比位拆分和聚集更復(fù)雜。因此,本文中所描述的技術(shù)的方面獨(dú)立于伽羅華域中的元素的特定表示。也就是說(shuō),代替執(zhí)行上文方程式(4)、(5)和(6)的所有復(fù)雜計(jì)算,裝置可實(shí)際上計(jì)算(圖7的操作706和708內(nèi)):

cm-1=tm[cm;m]

(11)

bm-1=(pm,qm)=(mt'[cm-1;b0,q1],mt'[cm-1;b1,q0])。

(12)

在(11)中,cm是索引,tm和m用以計(jì)算循環(huán)置換。在(12)中,cm-1給mt'加索引,而bi及qi用來(lái)計(jì)算循環(huán)置換。gf(24)的結(jié)果是二位對(duì)bm-1和其對(duì)應(yīng)掩碼(用于gf(22)中逆元素處理的輸入掩碼),所述掩碼為q=[q1,q0],最后組合位對(duì)和掩碼從而得到輸出am-1。如已解釋,基于從am獲得的bm的組件來(lái)在gf(22)中執(zhí)行使用靜態(tài)和動(dòng)態(tài)表的計(jì)算。

圖8說(shuō)明圖6的掩蔽subbyte替換處理器600的示范性組件800,所述處理器采用使用靜態(tài)和動(dòng)態(tài)查找表的混合配置。掩碼額外組件802將由掩碼產(chǎn)生器804所產(chǎn)生的掩碼m與加密算法的當(dāng)前狀態(tài)的輸入字節(jié)a相加,從而得到am=a+m和m。這些值是去往位選擇組件806的輸入,所述組件用以從字節(jié)am獲得呈bm的二位對(duì),以用于gf(22)中的逆元素處理。通過(guò)利用經(jīng)由gf(22)中的靜態(tài)查找表812(即,t[·])所獲得的gf(22)中的動(dòng)態(tài)查找表810(即,tm[·])中的信息,gf(22)乘法逆元素組件808用以使用已描述技術(shù)來(lái)執(zhí)行呈bm的所述二位對(duì)的乘法逆元素。當(dāng)可從掩碼產(chǎn)生器804獲得掩碼值(即,校正值)時(shí),動(dòng)態(tài)查找表810具有“正在”計(jì)算的值。在這個(gè)實(shí)例中,乘法逆元素組件808還使用一或多個(gè)向量813,以存儲(chǔ)結(jié)果值的左側(cè)和右側(cè)部分。(例如,上文所討論的

乘法逆元素組件808的輸出包含bm-1中反轉(zhuǎn)的兩個(gè)二位和對(duì)應(yīng)輸出掩碼m'。隨后,使用裝置814將反轉(zhuǎn)位對(duì)bm-1與其它位對(duì)聚集在一起,所述裝置聚集(或以其它方式合并或組合)反轉(zhuǎn)位對(duì)bm-1與從am推導(dǎo)的其它反轉(zhuǎn)位對(duì),從而得到反轉(zhuǎn)掩蔽字節(jié)am-1=(a-1+m')。所述操作的描述參見(jiàn)上文。在一個(gè)實(shí)施方案中,如由箭頭816所展示,在循環(huán)中執(zhí)行組件806、808和814的操作,以處理掩蔽字節(jié)am的所有位對(duì)。然而,在其它實(shí)施方案中,提供一組gf(22)乘法逆元素組件808以并行操作,使得可同時(shí)使掩蔽字節(jié)am的所有位對(duì)逆向以便減少處理時(shí)間。應(yīng)注意,盡管未展示,但圖8的處理器800還可包含用于從am-1移除掩碼以得到供aes加密裝置的下一階段處理的最終輸出a-1的組件。

對(duì)于解密,提供類似組件以執(zhí)行掩蔽invsubbytes操作(而非掩蔽subbytes)。此外,盡管關(guān)于子域?yàn)間f(22)的aes實(shí)例進(jìn)行了描述,但本文中所描述的系統(tǒng)和方法的方面適用于除aes以外的加密算法并適用于除gf(22)以外的有限子域。

根據(jù)本文中所呈現(xiàn)的發(fā)明的方面,可提供利用以下中的一或多個(gè)的實(shí)施方案:

a.實(shí)施方案可完全采用靜態(tài)表,例如通過(guò)靜態(tài)地存儲(chǔ)所有所需置換。

b.實(shí)施方案可采用動(dòng)態(tài)表,其中以置換的形式進(jìn)行校正項(xiàng)和運(yùn)算。在這種情況下,tm可以是t的置換。

c.實(shí)施方案可采用靜態(tài)表和動(dòng)態(tài)表(即,上文主要描述的混合配置),其中靜態(tài)地存儲(chǔ)一些表(例如,{0,1,2,3}和未掩蔽逆元素{0,2,1,3}),以按位xor運(yùn)算來(lái)推導(dǎo)表的掩蔽版本且通過(guò)首先置換和給表的掩蔽版本加索引來(lái)進(jìn)行掩蔽操作。如所解釋,盡管對(duì)于gf(22)中的掩蔽逆元素和掩蔽相乘的計(jì)算來(lái)說(shuō),這個(gè)過(guò)程可以是類似的,但具體置換不同。

上文詳細(xì)地描述了混合版本(即,實(shí)施方案“c”)??梢源篌w類似的方式來(lái)實(shí)施全靜態(tài)版本(即,實(shí)施方案“a”),同時(shí)在逆元素處理期間考慮以下條件:

輸入:cm=c+m;輸出:

就這一點(diǎn)而言,因?yàn)閙∈{0,1,2,3},所以裝置可靜態(tài)地存儲(chǔ)t[]+m的可能結(jié)果的預(yù)先計(jì)算值,其中t[]={0,2,1,3}。如下文所說(shuō)明,這對(duì)應(yīng)于存儲(chǔ)用于掩蔽逆元素處理的后續(xù)4字節(jié)矩陣。當(dāng)m=0時(shí),第一行為t[]+m;當(dāng)m=1時(shí),第二行為t[]+m;當(dāng)m=2時(shí),第三行為t[]+m;且當(dāng)m=3時(shí),第四行為t[]+m。

{0,2,1,3,

2,1,3,0,

3,1,2,0,

1,2,0,3}

為計(jì)算掩蔽逆元素(即,輸出),校正項(xiàng)給上文矩陣的一行加索引(例如,如果m=0,那么校正項(xiàng)給行零加索引),并使用掩蔽輸入(即,輸入cm=c+m)來(lái)給所述列加索引。盡管待存儲(chǔ)的置換數(shù)目較大,但相同原理適用于掩蔽相乘。

可以大體類似的方式來(lái)實(shí)施全動(dòng)態(tài)版本(即,實(shí)施方案“b”),同時(shí),在逆元素處理期間考慮以下條件(其中,輸入和輸出與剛才所展示相同):

輸入:cm=c+m;輸出:

全動(dòng)態(tài)逆元素處理從包含域元素(例如{0,1,2,3})的單一字節(jié)和臨時(shí)存儲(chǔ)開(kāi)始,從而允許所述域中的置換和元素并執(zhí)行所需掩蔽操作。舉例來(lái)說(shuō),就掩蔽逆元素處理而言,首先調(diào)換元素1和2,隨后用校正項(xiàng)的值來(lái)置換??捎幂斎隿m=c+m來(lái)給這個(gè)置換順序的結(jié)果加索引,從而產(chǎn)生所需輸出

舉例來(lái)說(shuō),假設(shè)cm=2+1=3,那么裝置可經(jīng)配置以計(jì)算域運(yùn)算中的掩蔽逆元素:執(zhí)行對(duì)應(yīng)于如先前案例中所說(shuō)明的選擇和移位置換的置換。這些置換的結(jié)果是域(即,{0,1,2,3})的元素的以下實(shí)例:{3,2,1,0}。更具體地說(shuō),{0,1,2,3}的置換起到調(diào)換靠?jī)?nèi)的兩個(gè)值(例如,1和2)并隨后調(diào)換第一個(gè)和最后一個(gè)值(例如,0和3)從而產(chǎn)生{3,2,1,0}的作用。正如所料,用掩蔽輸入cm=3來(lái)給上表加索引的結(jié)果是當(dāng)完成逆元素處理時(shí),將動(dòng)態(tài)表復(fù)原到其初始值(即,{0,1,2,3}),以適應(yīng)接下來(lái)的加密/解密請(qǐng)求。類似地,對(duì)于相乘,可實(shí)施其它類型的置換。

示范性系統(tǒng)和方法

圖9說(shuō)明其中可實(shí)施圖3至8的系統(tǒng)、方法和設(shè)備的整體系統(tǒng)或設(shè)備900。根據(jù)本發(fā)明的各種方面,元件、或元件的任何部分、或元件的任何組合可用包含一或多個(gè)處理電路904(例如圖2的soc處理電路)的處理系統(tǒng)914來(lái)實(shí)施。舉例來(lái)說(shuō),設(shè)備900可以是移動(dòng)通信系統(tǒng)的用戶設(shè)備(ue)。設(shè)備900可與無(wú)線電網(wǎng)絡(luò)控制器(rnc)一起使用。除了soc之外,處理電路904的實(shí)例還包含:微處理電路、微控制器、數(shù)字信號(hào)處理電路(dsp)、現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)、可編程邏輯裝置(pld)、狀態(tài)機(jī)、門(mén)控邏輯、離散硬件電路以及經(jīng)配置以執(zhí)行貫穿本發(fā)明所描述的各種功能性的其它合適的硬件。再者,處理系統(tǒng)914可以是服務(wù)器(例如,圖1所展示的服務(wù)器)的組件。也就是說(shuō),如設(shè)備900中所利用的處理電路904可用于實(shí)施如上文所描述的或圖3、4、7和8中所說(shuō)明的過(guò)程(以及下文討論的在圖12和13中所說(shuō)明的過(guò)程)中的任何一或多者(例如用于加密和解密的過(guò)程)。

在圖9的實(shí)例中,可使用通常由總線902表示的總線架構(gòu)來(lái)實(shí)施處理系統(tǒng)914??偩€902可取決于處理系統(tǒng)914的具體應(yīng)用和整體設(shè)計(jì)約束而包含任何數(shù)目個(gè)互連總線和橋接器??偩€902鏈接各種電路,所述電路包含一或多個(gè)處理電路(通常由處理電路904表示)、存儲(chǔ)裝置905以及機(jī)器可讀媒體、處理器可讀媒體、處理電路可讀媒體或計(jì)算機(jī)可讀媒體(通常由非暫時(shí)性機(jī)器可讀媒體906表示)。總線902還可將此項(xiàng)技術(shù)中眾所周知的且因此將不再進(jìn)一步描述的各種其它電路(例如定時(shí)源、外圍裝置、電壓調(diào)節(jié)器和功率管理電路)鏈接在一起??偩€接口908在總線902與收發(fā)器910之間提供接口。收發(fā)器910提供用于經(jīng)由傳輸媒體與各種其它設(shè)備通信的裝置。取決于設(shè)備的性質(zhì),還可提供用戶接口912(例如,小鍵盤(pán)、顯示器、揚(yáng)聲器、麥克風(fēng)、操縱桿)。

處理電路904負(fù)責(zé)管理總線902和一般處理,包含執(zhí)行存儲(chǔ)在機(jī)器可讀媒體906上的軟件。軟件在由處理電路904執(zhí)行時(shí)使得處理系統(tǒng)914執(zhí)行在本文中針對(duì)任何特定設(shè)備所描述的各種功能。機(jī)器可讀媒體906還可用于存儲(chǔ)由處理電路904在執(zhí)行軟件時(shí)操控的數(shù)據(jù)。

處理系統(tǒng)中的一或多個(gè)處理電路904可執(zhí)行軟件或軟件組件。軟件應(yīng)被廣義上解釋為意指指令、指令集、代碼、代碼段、程序代碼、程序、子程序、軟件模塊、應(yīng)用程序、軟件應(yīng)用程序、軟件包、例程、子例程、對(duì)象、可執(zhí)行文件、執(zhí)行線程、步驟、函數(shù)等,而不管其是被稱作軟件、固件、中間件、微碼、硬件描述語(yǔ)言還是其它。處理電路可執(zhí)行任務(wù)。代碼段可以表示步驟、函數(shù)、子程序、程序、例程、子例程、模塊、軟件包、類,或指令、數(shù)據(jù)結(jié)構(gòu)或程序語(yǔ)句的任意組合。一個(gè)代碼段可以通過(guò)傳遞和/或接收信息、數(shù)據(jù)、自變量、參數(shù)或存儲(chǔ)內(nèi)容耦合到另一代碼段或硬件電路。信息、自變量、參數(shù)、數(shù)據(jù)等可經(jīng)由包含存儲(chǔ)器共享、消息傳遞、令牌傳遞、網(wǎng)絡(luò)傳輸?shù)热魏魏线m的手段傳遞、轉(zhuǎn)發(fā)或傳輸。

軟件可駐留在機(jī)器可讀媒體906上。機(jī)器可讀媒體906可為非暫時(shí)性機(jī)器可讀媒體。舉例來(lái)說(shuō),非暫時(shí)性處理電路可讀媒體、機(jī)器可讀媒體或計(jì)算機(jī)可讀媒體包含:磁性存儲(chǔ)裝置(例如,硬盤(pán)、軟盤(pán)、磁條)、光盤(pán)(例如,壓縮光盤(pán)(cd)或數(shù)字多功能光盤(pán)(dvd))、智能卡、閃存存儲(chǔ)器裝置(例如,卡、棒或鑰匙形驅(qū)動(dòng)器)、ram、rom、可編程rom(prom)、可擦除prom(eprom)、電可擦除prom(eeprom)、寄存器、可裝卸磁盤(pán)、硬盤(pán)、cd-rom以及用于存儲(chǔ)可以通過(guò)機(jī)器或計(jì)算機(jī)存取和讀取的軟件和/或指令的任何其它合適的媒體。術(shù)語(yǔ)“機(jī)器可讀媒體”、“計(jì)算機(jī)可讀媒體”、“處理電路可讀媒體”和/或“處理器可讀媒體”可包含(但不限于)非暫時(shí)性媒體,例如便攜式或固定式存儲(chǔ)裝置、光學(xué)存儲(chǔ)裝置以及能夠存儲(chǔ)、包含或攜載指令和/或數(shù)據(jù)的各種其它媒體。因此,本文中所描述的各種方法可以完全或部分通過(guò)可存儲(chǔ)在“機(jī)器可讀媒體”、“計(jì)算機(jī)可讀媒體”、“處理電路可讀媒體”和/或“處理器可讀媒體”中且通過(guò)一或多個(gè)處理電路、機(jī)器和/或裝置執(zhí)行的指令和/或數(shù)據(jù)來(lái)實(shí)施。舉例來(lái)說(shuō),機(jī)器可讀媒體還可包含載波、傳輸線,以及用于傳輸可由計(jì)算機(jī)存取及讀取的軟件和/或指令的任何其它合適的媒體。

機(jī)器可讀媒體906可駐留在處理系統(tǒng)914中、在處理系統(tǒng)914外部,或跨越包含處理系統(tǒng)914的多個(gè)實(shí)體而分布。機(jī)器可讀媒體906可體現(xiàn)在計(jì)算機(jī)程序產(chǎn)品中。舉例來(lái)說(shuō),計(jì)算機(jī)程序產(chǎn)品可包含封裝材料中的機(jī)器可讀媒體。所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,如何最好地實(shí)施貫穿本發(fā)明呈現(xiàn)的所描述功能性取決于特定應(yīng)用及強(qiáng)加于整個(gè)系統(tǒng)上的總設(shè)計(jì)約束。舉例來(lái)說(shuō),機(jī)器可讀存儲(chǔ)媒體906可具有一或多個(gè)指令,所述指令在由處理電路904執(zhí)行時(shí)使得處理電路執(zhí)行以下操作:作為密碼編譯操作的一部分,將輸入數(shù)據(jù)與輪密鑰組合以獲得組合數(shù)據(jù);通過(guò)采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分;以及通過(guò)一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。

圖式中所說(shuō)明的組件、步驟、特征和/或功能中的一或多個(gè)可重新布置和/或組合成單個(gè)組件、塊、特征或功能或體現(xiàn)于若干組件、步驟或功能中。在不脫離本發(fā)明的情況下,還可添加額外元件、組件、步驟和/或功能。圖式中所說(shuō)明的設(shè)備、裝置和/或組件可經(jīng)配置以執(zhí)行圖式中描述的方法、特征或步驟中的一或多個(gè)。本文中所描述的算法也可高效地實(shí)施于軟件中和/或嵌入于硬件中。

可使用通用處理電路、數(shù)字信號(hào)處理電路(dsp)、專用集成電路(asic)、現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)或其它可編程邏輯組件、離散門(mén)或晶體管邏輯、離散硬件組件或其經(jīng)設(shè)計(jì)以執(zhí)行本文中描述的功能的任何組合來(lái)實(shí)施或執(zhí)行結(jié)合本文中公開(kāi)的實(shí)例而描述的各種說(shuō)明性邏輯塊、模塊、電路、元件和/或組件。通用處理電路可以是微處理電路,但在替代方案中,處理電路可以是任何習(xí)知處理電路、控制器、微控制器或狀態(tài)機(jī)。處理電路還可被實(shí)施為計(jì)算組件的組合,例如,dsp和微處理電路的組合、多個(gè)微處理電路的組合、結(jié)合dsp核心的一或多個(gè)微處理電路的組合或任何其它此類配置。

因此,在本發(fā)明的一個(gè)方面中,圖4中所說(shuō)明的處理電路413可以是經(jīng)專門(mén)設(shè)計(jì)和/或硬連線以執(zhí)行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說(shuō)明的那些)算法、方法和/或塊(例如關(guān)于加密和解密消息的那些算法、方法和/或塊)的專用處理電路(例如,asic)。因此,這種專用處理電路(例如,asic)可以是用于執(zhí)行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說(shuō)明的那些)算法、方法和/或塊的裝置的一個(gè)實(shí)例。機(jī)器可讀存儲(chǔ)媒體可存儲(chǔ)指令,所述指令在由專用處理電路(例如,asic)執(zhí)行時(shí)使得專用處理電路執(zhí)行本文中所描述的算法、方法和/或塊。在本發(fā)明的另一方面中,圖1的遠(yuǎn)程服務(wù)器系統(tǒng)108還可包含經(jīng)專門(mén)設(shè)計(jì)和/或硬連線以執(zhí)行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說(shuō)明的那些)算法、方法和/或塊(例如關(guān)于加密和解密消息的那些算法、方法和/或塊)的專用處理電路。因此,這種專用處理電路可以是用于執(zhí)行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說(shuō)明的那些)算法、方法和/或塊的裝置的一個(gè)實(shí)例。機(jī)器可讀存儲(chǔ)媒體可存儲(chǔ)指令,所述指令在由專用處理電路(例如,asic)執(zhí)行時(shí)使得專用處理電路執(zhí)行本文中所描述的算法、方法和/或塊。

在至少一些實(shí)例中,提供一種密碼編譯裝置,其包含:用于作為密碼編譯操作的一部分將輸入數(shù)據(jù)與輪密鑰組合以獲得組合數(shù)據(jù)的裝置;用于通過(guò)采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分的裝置;以及用于通過(guò)一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù)從而產(chǎn)生輸出數(shù)據(jù)的裝置。

圖10說(shuō)明(例如)移動(dòng)裝置或智能卡的處理電路904的所選和示范性組件,所述移動(dòng)裝置或智能卡包含適用于采用靜態(tài)和動(dòng)態(tài)表的混合實(shí)施方案的aes或其它密碼編譯裝置1000。密碼編譯裝置1000包含輸入數(shù)據(jù)/輪密鑰組合模塊/電路1002(例如addroundkey模塊/電路),其用來(lái)作為密碼編譯操作的一部分將輸入數(shù)據(jù)(例如用于加密的明文或用于解密的密文)與輪密鑰組合以獲得組合數(shù)據(jù)。密碼編譯裝置1000還包含:替換階段模塊/電路1004(例如,掩蔽subbytes和/或掩蔽invsubbytes模塊/電路),其采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表;以及一或多個(gè)額外密碼編譯階段模塊/電路1006(例如,shiftrows、mixcolumns等),其用來(lái)通過(guò)一或多個(gè)額外密碼編譯階段來(lái)處理經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。加密輸入/輸出控制器1008用來(lái)控制用于加密的數(shù)據(jù)的輸入和輸入,并包含用來(lái)輸入待加密明文的明文輸入模塊/電路1010和用來(lái)輸出密文的密文輸出模塊/電路1012。解密輸入/輸出控制器1014用來(lái)控制用于解密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待解密密文的密文輸入模塊/電路1016和用來(lái)輸出明文的明文輸出模塊/電路1018。在這個(gè)實(shí)例中,替換階段模塊/電路1004包含在有限域的子域(例如[·]={00,01,10,11}和其在gf(22)中的置換,其中有限域?yàn)間f(28))中為其自身逆元素的靜態(tài)查找表1020。替換階段模塊/電路1022還包含有限域的子域中的動(dòng)態(tài)查找表1022(例如有限域?yàn)間f(28)的gf(22)動(dòng)態(tài)表)。如已解釋,這些表有助于掩蔽乘法逆元素處理操作,所述操作可在掩碼產(chǎn)生器1024、位對(duì)反轉(zhuǎn)器1026和乘法器1028的控制下執(zhí)行,所述操作中的每一個(gè)在有限域的gf(22)或某一其它合適子域中操作。

圖11說(shuō)明供在加密和解密中使用的適用于采用靜態(tài)和動(dòng)態(tài)表的混合實(shí)施方案的機(jī)器可讀媒體或計(jì)算機(jī)可讀媒體906的所選和示范性指令。提供一組aes或其它密碼編譯裝置處理指令1100,所述指令在由圖9的處理電路904執(zhí)行時(shí)使得處理電路控制或執(zhí)行加密和解密操作。密碼編譯裝置處理指令1100包含輸入數(shù)據(jù)/輪密鑰組合指令1102(例如addroundkey指令),其用來(lái)作為密碼編譯操作的一部分將輸入數(shù)據(jù)(例如用于加密的明文或用于解密的密文)與輪密鑰組合,以獲得組合數(shù)據(jù)。密碼編譯指令1100還包含:替換階段指令1104(例如,掩蔽subbytes和/或掩蔽invsubbytes指令),其采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表;以及一或多個(gè)額外密碼編譯階段指令1106(例如,shiftrows指令、mixcolumns指令等),其用來(lái)通過(guò)一或多個(gè)額外密碼編譯階段來(lái)處理經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。加密輸入/輸出控制器指令1108用來(lái)控制用于加密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待加密明文的明文輸入指令1110和用來(lái)輸出密文的密文輸出指令1112。解密輸入/輸出控制器指令1114用來(lái)控制用于解密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待解密密文的密文輸入指令1116和用來(lái)輸出明文的明文輸出指令1118。在這個(gè)實(shí)例中,替換階段指令1104還可包含適用于在有限域的子域(例如[·]={00,01,10,11}和其在gf(22)中的置換,其中有限域?yàn)間f(28))中為其自身逆元素的靜態(tài)查找表1120的指令。替換階段指令1122還可包含適用于有限域的子域中的動(dòng)態(tài)查找表1122(例如有限域?yàn)間f(28)的gf(22)動(dòng)態(tài)表)的指令。如已解釋,這些表有助于掩蔽乘法逆元素處理操作,所述操作可在掩碼產(chǎn)生器指令1124、位對(duì)反轉(zhuǎn)器指令1126和乘法器指令1128的控制下執(zhí)行,所述操作中的每一個(gè)在有限域的gf(22)或某一其它合適子域中操作。

圖12概括地說(shuō)明并概述可由圖9的處理電路904的密碼編譯裝置或其它合適裝備的密碼編譯裝置執(zhí)行的用于加密和/解密的方法或程序1200。在1202處,作為密碼編譯操作的一部分,密碼編譯裝置將輸入數(shù)據(jù)與輪密鑰組合,以獲得組合數(shù)據(jù)。組合數(shù)據(jù)可以是(例如)明文的一部分、掩蔽明文的一部分、隨明文改變的值、隨掩蔽明文改變的值、密文的一部分、掩蔽密文的一部分、隨密文改變的值和/或隨掩蔽密文改變的值。在1204處,密碼編譯裝置通過(guò)采用以下中的至少一個(gè)的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分:(a)靜態(tài)查找表,其在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù);(b)有限域的子域中的動(dòng)態(tài)查找表,其中使用置換來(lái)實(shí)施所有替換操作以獲得經(jīng)替換數(shù)據(jù);或(c)有限域的子域中的替代靜態(tài)查找表,其靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換。在1206處,密碼編譯裝置通過(guò)一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù),以產(chǎn)生輸出數(shù)據(jù)。

圖13說(shuō)明并概述可由圖9的處理電路904的密碼編譯裝置或其它合適裝備的密碼編譯裝置執(zhí)行的用于加密和/解密的其它方法或程序1300。在1302處,作為aes加密算法的密碼編譯操作的一部分,密碼編譯裝置將輸入數(shù)據(jù)與輪密鑰組合,以獲得組合數(shù)據(jù),其中密碼編譯操作是加密操作,輸入數(shù)據(jù)是明文,且輸出數(shù)據(jù)是密文,和/或密碼編譯操作是解密操作,輸入數(shù)據(jù)是密文,且輸出數(shù)據(jù)是明文,且其中將輸入數(shù)據(jù)與輪密鑰組合包含通過(guò)aes加密算法的addroundkey階段來(lái)路由輸入數(shù)據(jù),其中將輸入數(shù)據(jù)的初始狀態(tài)的各字節(jié)與輪密鑰塊組合。在1304處,密碼編譯裝置通過(guò)采用在有限域(例如gf(28))的子域(例如gf(22))中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表的替換階段來(lái)路由組合數(shù)據(jù)的至少一部分,其中密碼編譯操作是加密操作且替換階段是用來(lái)經(jīng)由使用用于加密的靜態(tài)查找表的字節(jié)的非線性替換而執(zhí)行掩蔽乘法逆元素的掩蔽subbytes階段,和/或密碼編譯操作是解密操作且替換階段是用來(lái)經(jīng)由使用用于解密的靜態(tài)查找表的字節(jié)的非線性替換而執(zhí)行掩蔽乘法逆元素的掩蔽invsubbytes階段,并且其中g(shù)f(22)中的掩蔽乘法逆元素操作利用從gf(28)分解的塔域(gf(22)2)2并且還利用接收輸入掩碼和輸出掩碼并產(chǎn)生掩蔽表的動(dòng)態(tài)查找表,從而確定gf(24)中的掩蔽逆元素的低部部分和高部部分,所述掩蔽表對(duì)應(yīng)于具有經(jīng)輸入掩碼校正的索引的由輸出掩碼掩蔽的靜態(tài)表。在1306處,密碼編譯裝置通過(guò)例如shiftrows和mixcolumns的一或多個(gè)額外密碼編譯階段來(lái)路由經(jīng)替換數(shù)據(jù),以產(chǎn)生輸出數(shù)據(jù)(例如,用于加密的密文和或用于解密的明文)。

圖14說(shuō)明例如移動(dòng)裝置或智能卡的處理電路904的所選和示范性組件,所述移動(dòng)裝置或智能卡包含適用于動(dòng)態(tài)表實(shí)施方案的aes或其它密碼編譯裝置1400,在所述實(shí)施方案中,使用置換來(lái)實(shí)施替換操作以獲得經(jīng)替換數(shù)據(jù)。密碼編譯裝置1400包含輸入數(shù)據(jù)/輪密鑰組合模塊/電路1402(例如addroundkey模塊/電路),其用來(lái)作為密碼編譯操作的一部分將輸入數(shù)據(jù)(例如用于加密的明文或用于解密的密文)與輪密鑰組合,以獲得組合數(shù)據(jù)。密碼編譯裝置1400還包含:替換階段模塊/電路1404(例如,掩蔽subbytes和/或掩蔽invsubbytes模塊/電路),其采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表;以及一或多個(gè)額外密碼編譯階段模塊/電路1406(例如,shiftrows、mixcolumns等),其用來(lái)通過(guò)一或多個(gè)額外密碼編譯階段來(lái)處理經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。加密輸入/輸出控制器1408用來(lái)控制用于加密的數(shù)據(jù)的輸入和輸入,并包含用來(lái)輸入待加密明文的明文輸入模塊/電路1410和用來(lái)輸出密文的密文輸出模塊/電路1412。解密輸入/輸出控制器1414用來(lái)控制用于解密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待解密密文的密文輸入模塊/電路1416和用來(lái)輸出明文的明文輸出模塊/電路1418。在這個(gè)實(shí)例中,替換階段模塊/電路1404不包含靜態(tài)查找表。相反,替換階段模塊/電路1404包含在有限域的子域中的動(dòng)態(tài)查找表1422,其中使用置換來(lái)實(shí)施所有替換操作以獲得經(jīng)替換數(shù)據(jù)。如已解釋,動(dòng)態(tài)表有助于掩蔽乘法逆元素處理操作,所述操作可在掩碼產(chǎn)生器1424、位對(duì)反轉(zhuǎn)器1426和乘法器1428的控制下執(zhí)行,所述操作中的每一個(gè)在有限域的gf(22)或某一其它合適子域中操作。

圖15說(shuō)明供在加密和解密中使用的適用于動(dòng)態(tài)表實(shí)施方案的機(jī)器可讀媒體或計(jì)算機(jī)可讀媒體906的所選和示范性指令,在所述實(shí)施方案中,使用置換來(lái)實(shí)施替換操作以獲得經(jīng)替換數(shù)據(jù)。提供一組aes或其它密碼編譯裝置處理指令1500,所述指令在由圖9的處理電路904執(zhí)行時(shí)使得處理電路控制或執(zhí)行加密和解密操作。密碼編譯裝置處理指令1500包含輸入數(shù)據(jù)/輪密鑰組合指令1502(例如addroundkey指令),其用來(lái)作為密碼編譯操作的一部分將輸入數(shù)據(jù)(例如用于加密的明文或用于解密的密文)與輪密鑰組合,以獲得組合數(shù)據(jù)。密碼編譯指令1500還包含:替換階段指令1504(例如,掩蔽subbytes和/或掩蔽invsubbytes指令),其采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表;以及一或多個(gè)額外密碼編譯階段指令1506(例如,shiftrows指令、mixcolumns指令等),其用來(lái)通過(guò)一或多個(gè)額外密碼編譯階段來(lái)處理經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。加密輸入/輸出控制器指令1508用來(lái)控制用于加密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待加密明文的明文輸入指令1510和用來(lái)輸出密文的密文輸出指令1512。解密輸入/輸出控制器指令1514用來(lái)控制用于解密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待解密密文的密文輸入指令1516和用來(lái)輸出明文的明文輸出指令1518。如同圖14,替換操作模塊/電路1504不包含靜態(tài)查找表。相反,替換階段指令1522包含適用于在有限域的子域中的動(dòng)態(tài)查找表1522的指令,其中使用置換來(lái)實(shí)施所有替換操作以獲得經(jīng)替換數(shù)據(jù)。如已解釋,動(dòng)態(tài)表有助于掩蔽乘法逆元素處理操作,所述操作可在掩碼產(chǎn)生器指令1524、位對(duì)反轉(zhuǎn)器指令1526和乘法器指令1528的控制下執(zhí)行,所述操作中的每一個(gè)在有限域的gf(22)或某一其它合適子域中操作。

圖16說(shuō)明例如移動(dòng)裝置或智能卡的處理電路904的所選和示范性組件,所述移動(dòng)裝置或智能卡包含適用于靜態(tài)表實(shí)施方案的aes或其它密碼編譯裝置1600,在所述實(shí)施方案中,使用靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換的靜態(tài)表來(lái)實(shí)施所有替換操作。密碼編譯裝置1600包含輸入數(shù)據(jù)/輪密鑰組合模塊/電路1602(例如addroundkey模塊/電路),其用來(lái)作為密碼編譯操作的一部分將輸入數(shù)據(jù)(例如用于加密的明文或用于解密的密文)與輪密鑰組合,以獲得組合數(shù)據(jù)。密碼編譯裝置1600還包含:替換階段模塊/電路1604(例如,掩蔽subbytes和/或掩蔽invsubbytes模塊/電路),其采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表;以及一或多個(gè)額外密碼編譯階段模塊/電路1606(例如,shiftrows、mixcolumns等),其用來(lái)通過(guò)一或多個(gè)額外密碼編譯階段來(lái)處理經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。加密輸入/輸出控制器1608用來(lái)控制用于加密的數(shù)據(jù)的輸入和輸入,并包含用來(lái)輸入待加密明文的明文輸入模塊/電路1610和用來(lái)輸出密文的密文輸出模塊/電路1612。解密輸入/輸出控制器1614用來(lái)控制用于解密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待解密密文的密文輸入模塊/電路1616和用來(lái)輸出明文的明文輸出模塊/電路1618。在這個(gè)實(shí)例中,替換階段模塊/電路1604不包含動(dòng)態(tài)查找表。相反,替換階段模塊/電路1604包含在有限域的子域中的靜態(tài)查找表1622,其中使用靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換的靜態(tài)表來(lái)實(shí)施所有替換操作。如已解釋,靜態(tài)表有助于掩蔽乘法逆元素處理操作,所述操作可在掩碼產(chǎn)生器1624、位對(duì)反轉(zhuǎn)器1626和乘法器1628的控制下執(zhí)行,所述操作中的每一個(gè)在有限域的gf(22)或某一其它合適子域中操作。

圖17說(shuō)明供在加密和解密中使用的適用于靜態(tài)表實(shí)施方案的機(jī)器可讀媒體或計(jì)算機(jī)可讀媒體906的所選和示范性指令,在所述實(shí)施方案中,使用靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換的靜態(tài)表來(lái)實(shí)施所有替換操作。提供一組aes或其它密碼編譯裝置處理指令1700,所述指令在由圖9的處理電路904執(zhí)行時(shí)使得處理電路控制或執(zhí)行加密和解密操作。密碼編譯裝置處理指令1700包含輸入數(shù)據(jù)/輪密鑰組合指令1702(例如addroundkey指令),其用來(lái)作為密碼編譯操作的一部分將輸入數(shù)據(jù)(例如用于加密的明文或用于解密的密文)與輪密鑰組合,以獲得組合數(shù)據(jù)。密碼編譯指令1700還包含:替換階段指令1704(例如,掩蔽subbytes和/或掩蔽invsubbytes指令),其采用在有限域的子域中為其自身逆元素以獲得經(jīng)替換數(shù)據(jù)的靜態(tài)查找表;以及一或多個(gè)額外密碼編譯階段指令1706(例如,shiftrows指令、mixcolumns指令等),其用來(lái)通過(guò)一或多個(gè)額外密碼編譯階段來(lái)處理經(jīng)替換數(shù)據(jù),從而產(chǎn)生輸出數(shù)據(jù)。加密輸入/輸出控制器指令1708用來(lái)控制用于加密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待加密明文的明文輸入指令1710和用來(lái)輸出密文的密文輸出指令1712。解密輸入/輸出控制器指令1714用來(lái)控制用于解密的數(shù)據(jù)的輸入和輸出,并包含用來(lái)輸入待解密密文的密文輸入指令1716和用來(lái)輸出明文的明文輸出指令1718。在這個(gè)實(shí)例中,替換階段模塊/電路1704不包含動(dòng)態(tài)查找表。相反,替換階段指令1704包含適用于有限域的子域中的靜態(tài)查找表1720的指令,其中使用靜態(tài)地存儲(chǔ)獲得經(jīng)替換數(shù)據(jù)所需的所有置換的靜態(tài)表來(lái)實(shí)施所有替換操作。如已解釋,所述靜態(tài)表有助于掩蔽乘法逆元素處理操作,所述操作可在掩碼產(chǎn)生器指令1724、位對(duì)反轉(zhuǎn)器指令1726和乘法器指令1728的控制下執(zhí)行,所述操作中的每一個(gè)在有限域的gf(22)或某一其它合適子域中操作。

應(yīng)注意,本發(fā)明的各方面可在本文中描述為過(guò)程,所述過(guò)程描繪為流程圖表、流程圖、結(jié)構(gòu)圖或框圖。盡管流程圖表可將操作描述為依序過(guò)程,但許多操作可并行或同時(shí)執(zhí)行。另外,可以重新布置操作的順序。過(guò)程在其操作完成時(shí)終止。過(guò)程可以對(duì)應(yīng)于方法、函數(shù)、程序、子例程、子程序等。當(dāng)過(guò)程對(duì)應(yīng)于函數(shù)時(shí),其終止對(duì)應(yīng)于函數(shù)返回到調(diào)用函數(shù)或主函數(shù)。

所屬領(lǐng)域的技術(shù)人員將進(jìn)一步了解,結(jié)合本文所公開(kāi)的方面描述的各種說(shuō)明性邏輯塊、模塊、電路及算法步驟可以實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩種的組合。為清晰地說(shuō)明硬件與軟件的這種可互換性,以上已大體就其功能性來(lái)描述了各種說(shuō)明性組件、塊、模塊、電路和步驟。此功能性是實(shí)施為硬件還是軟件取決于特定應(yīng)用及施加于整個(gè)系統(tǒng)的設(shè)計(jì)約束。

結(jié)合本文中公開(kāi)的實(shí)例而描述的方法或算法可以處理單元、編程指令或其它方向的形式直接體現(xiàn)在硬件、可由處理器執(zhí)行的軟件模塊或兩種的組合中,且可含于單個(gè)裝置中或跨越多個(gè)裝置而分布。軟件模塊可駐留在ram存儲(chǔ)器、快閃存儲(chǔ)器、rom存儲(chǔ)器、eprom存儲(chǔ)器、eeprom存儲(chǔ)器、寄存器、硬盤(pán)、可裝卸磁盤(pán)、cd-rom,或此項(xiàng)技術(shù)中已知的任何其它形式的存儲(chǔ)媒體中。存儲(chǔ)媒體可耦合到處理器,使得處理器可從存儲(chǔ)媒體讀取信息和將信息寫(xiě)入到存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒體可集成到處理器。

本文中所描述的本發(fā)明的各種特征可在不脫離本發(fā)明的情況下實(shí)施于不同系統(tǒng)中。應(yīng)注意,前述實(shí)施例僅為實(shí)例,且不應(yīng)解釋為限制本發(fā)明。實(shí)施例的描述既定為說(shuō)明性的,而不限制權(quán)利要求書(shū)的范圍。因此,本發(fā)明的教示可容易應(yīng)用于其它類型的設(shè)備,且所屬領(lǐng)域的技術(shù)人員將明白許多替代方案、修改及變化。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1