相關(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)算。類似于
因此,盡管使用合成域運(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)注意,
因此,前述實(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è)部分,例如
應(yīng)注意,就gf(24)中的逆元素處理而言,
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ì)算掩蔽逆元素(即,輸出
可以大體類似的方式來(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)算中的掩蔽逆元素:
示范性系統(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ù)人員將明白許多替代方案、修改及變化。