新四季網

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

2023-06-20 14:40:36


相關申請案的交叉參考

本申請案主張於2015年3月9日向美國專利商標局申請的非臨時申請案第14/642,591號的優先權和權益,所述申請案的全部內容以引用的方式併入本文中。

各種特徵涉及用於加密和解密的密碼編譯加密,尤其涉及高級加密標準(aes)加密或其它對稱加密。



背景技術:

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

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

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



技術實現要素:

一種在密碼編譯裝置中可操作的方法包含:作為密碼編譯操作的一部分,將輸入數據與輪密鑰組合,以獲得組合數據;通過採用以下中的至少一個的替換階段來路由組合數據的至少一部分:靜態查找表,其在有限域的子域中為其自身逆元素以獲得經替換數據;有限域的子域中的動態查找表,其中使用置換來實施所有替換操作以獲得經替換數據;或有限域的子域中的替代靜態查找表,其靜態地存儲獲得經替換數據所需的所有置換;以及通過一或多個額外密碼編譯階段來路由經替換數據,從而產生輸出數據。

在另一方面中,一種密碼編譯裝置包含:處理電路,其經配置以作為密碼編譯操作的一部分而將輸入數據與輪密鑰組合,以獲得組合數據;通過採用以下中的至少一個的替換階段來路由組合數據的至少一部分:靜態查找表,其在有限域的子域中為其自身逆元素以獲得經替換數據;有限域的子域中的動態查找表,其中使用置換來實施所有替換操作以獲得經替換數據;或有限域的子域中的替代靜態查找表,其靜態地存儲獲得經替換數據所需的所有置換;及通過一或多個額外密碼編譯階段來路由經替換數據從而產生輸出數據;以及存儲裝置,其經配置以存儲輸出數據。

在又一方面中,一種密碼編譯裝置包含:用於作為密碼編譯操作的一部分,將輸入數據與輪密鑰組合以獲得組合數據的裝置;用於通過採用以下中的至少一個的替換階段來路由組合數據的至少一部分的裝置:靜態查找表,其在有限域的子域中為其自身逆元素以獲得經替換數據;有限域的子域中的動態查找表,其中使用置換來實施所有替換操作以獲得經替換數據;或有限域的子域中的替代靜態查找表,其靜態地存儲獲得經替換數據所需的所有置換;以及用於通過一或多個額外密碼編譯階段來路由經替換數據從而產生輸出數據的裝置。

在再一方面中,一種適用於密碼術的機器可讀存儲媒體包含一或多個指令,所述指令在由至少一個處理電路執行時使得至少一個處理電路執行以下操作:作為密碼編譯操作的一部分,將輸入數據與輪密鑰組合,以獲得組合數據;通過採用以下中的至少一個的替換階段來路由組合數據的至少一部分:靜態查找表,其在有限域的子域中為其自身逆元素以獲得經替換數據;有限域的子域中的動態查找表,其中使用置換來實施所有替換操作以獲得經替換數據;或有限域的子域中的替代靜態查找表,其靜態地存儲獲得經替換數據所需的所有置換;以及通過一或多個額外密碼編譯階段來路由經替換數據,從而產生輸出數據。

附圖說明

圖1說明採用掩蔽subbytes和invsubbytes操作的示範性掩蔽aes加解密系統和方法。

圖2說明適用於圖1的aes系統和方法的示範性掩蔽subbytes處理器。

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

圖4說明移動裝置的示範性晶片上系統(soc),其中所述soc包含具有靜態查找表的aes處理器,所述靜態查找表為其自身逆元素且有助於加密/解密的掩蔽替換操作的。

圖5說明採用掩蔽subbytes和invsubbytes操作的示範性掩蔽aes加解密系統和方法,所述掩蔽subbytes和invsubbytes操作利用gf(22)靜態和動態查找表。

圖6說明適用於圖5的aes系統和方法的示範性掩蔽subbytes處理器,其中subbytes處理器利用gf(22)靜態和動態查找表。

圖7說明用於採用靜態和動態查找表的aessubbyte處理的gf(22)中的示範性掩蔽逆元素處理。

圖8說明利用gf(22)中的靜態和動態查找表的掩蔽subbytes處理器的示範性組件。

圖9是說明用於設備的硬體實施方案的實例的框圖,所述設備採用可以利用圖3至8的系統、方法和設備的處理系統。

圖10是說明適用於混合實施方案的圖9的處理電路的示範性組件的框圖,在所述實施方案中,在替換階段中採用靜態表以及動態表。

圖11是說明圖9的機器可讀媒體的示範性指令組件的框圖。

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

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

圖14是說明適用於一實施方案的圖9的處理電路的示範性組件的框圖,在所述實施方案中,在替換階段中採用動態表的而不採用對應的靜態表。

圖15是說明圖14的機器可讀媒體的示範性指令組件的框圖。

圖16是說明適用於一實施方案的圖9的處理電路的示範性組件的框圖,在所述實施方案中,在替換階段中採用靜態表而不採用對應動態表。

圖17是說明圖14的機器可讀媒體的示範性指令組件的框圖。

具體實施方式

在以下描述中,給出具體細節以提供對本發明的各種方面的透徹理解。然而,所屬領域的技術人員將理解,可在沒有這些特定細節的情況下實踐所述方面。舉例來說,可以框圖展示電路以便避免以不必要的細節混淆所述方面。在其它情況下,可不詳細展示眾所周知的電路、結構和技術以免混淆本發明的所述方面。

詞語「示範性」在本文中用以意指「充當實例、例子或說明」。本文中描述為「示範性」的任何實施方案或方面未必應解釋為比本發明的其它方面優選或有利。同樣,術語「方面」不要求本發明的所有方面包含所討論的特徵、優點或操作模式。

概述

幾個新穎特徵涉及適用於密碼編譯系統(例如根據aes配置的系統)的裝置和方法。

圖1說明用於加密100和解密101的示範性aes系統的階段,其中在為字節替換階段的subbytes和invsubbytes階段採用掩蔽。對於加密,在102處開始,對輸入明文執行初始addroundkey操作,其中使當前狀態的各字節與輪密鑰塊組合。如上文所提到,「狀態」是4×4位元組矩陣。也就是說,在addroundkey期間,子密鑰使用(例如)各子密鑰與狀態大小相同的rijndael的密鑰次序表而自主密鑰推導。隨後,通過使用按位xor使狀態的各字節與子密鑰的對應字節組合來加入子密鑰。在初始addroundkey操作之後,執行加密輪103,其中每一輪包含僅掩蔽subbytes階段104、shiftrows階段106、mixcolumns階段108和另一addroundkey階段110。掩蔽subbytes階段104是標準aessubbytes階段的一種掩蔽版本。在掩蔽subbytes階段中,使用提供掩蔽的替換裝置或處理器來用對應subbyte代替狀態矩陣中的各字節。掩蔽替換在加密算法中提供非線性,同時還充當抵抗側信道攻擊的對策。在aes的一些習知實例中,subbytes裝置經由gf(28)計算乘法逆元素,其中gf(28)為伽羅華域(即,有限域)。如下文將描述,經修改版本實際上能夠使用gf(22)子域執行乘法逆元素。在完成加密輪103之後,執行最終加密輪114,其包含最終掩蔽subbytes階段116、最終shiftrows階段118和最終addroundkey階段120。輸出為經加密密文。

逆向操作解密101以將密文轉換成明文。簡而言之,在124處開始,對輸入密文執行初始addroundkey操作,其中使當前狀態的各字節與輪密鑰塊組合。在初始addroundkey操作之後,執行解密輪134,其中每一輪包含invshiftrows階段126、掩蔽invsubbytes替換階段128、invmixcolumns階段130和另一addroundkey階段132。掩蔽invsubbytes階段104是標準aesinvsubbytes階段的修改版本。在解密輪134之後,執行最終解密輪136,其包含最終invshiftrows階段138、最終掩蔽invsubbytes替換階段140和最終addroundkey階段136,其輸出為經解密明文。

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

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

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

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

(1)

中間計算:c-1=c2。

(2)

最終結果:

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

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

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

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

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

(4)

中間計算:

最終結果:

在這些方程式中,q1m、q0m表示兩個二位輸入掩碼值;b1m、b0m表示兩個二位掩蔽輸入值(即,其為如圖2中所展示的掩蔽輸入字節am的gf(22)組件);n同樣是常數;r是兩個二位新掩碼且ti也是二位新掩碼。中間值cm是合併值且藉助執行安全掩蔽逆元素處理來計算。使用隨機數產生器由處理器200內部產生r和ti新掩碼,並在合併階段將其加入,從而改進安全性,因為如果沒有它們,在計算期間可能存在信息洩露。在最終結果中,以b0m+r2+...開始的項是校正項。同樣,在最終結果中,以b1mxr2+...開始的項也是校正項。同樣應注意,這些方程式中的「×」和「+」運算分別表示伽羅華域中的乘法和加法運算。類似於的計算pm和pm的計算(的上部部分和下部部分)使用gf(22)中的安全相乘來計算。通過在gf(22)中(而非在gf(28)中)執行這些操作,掩碼從輸入到輸出的擴展得以簡化,同時保持安全性,因為無中間可觀測值與正計算的實際值相關。然而,計算極其複雜並因此費時,且如所提到,需要隨機數產生器來產生內部新位。

因此,儘管使用合成域運算(例如gf(22))可相對於標準gf(28)實施方案降低subbytes的乘法逆元素處理的複雜度,但掩蔽subbytes處理器200可能仍需要相對大量的電路空間並消耗相對大量的時間,從而對整體性能造成負荷。在處理器內使用隨機數產生器可限制其處理速度。類似的問題適用於aes的解密部分的對應掩蔽invsubbytes裝置或處理器,其用作加密部分的掩蔽subbytes裝置的逆元素。

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

在302處開始,作為有限域(例如gf(28))中的加密或解密aes密碼編譯操作的一部分,aes裝置將輸入文本(本文中通常稱作「數據」)與輪密鑰組合,從而獲得組合數據(例如,通過將明文與輪密鑰組合以供加密或將密文與輪密鑰組合以供解密)。這可(例如)對應於圖1的用於加密的初始addroundkey操作102,或對應於用於解密的初始addroundkey操作124。應注意,在本文中,「數據」可通常指的是由計算裝置(例如aes裝置或其組件)對其執行操作的各種數量、字符或符號中的任何一個。對於在gf(22)中操作的計算組件,數據隨狀態的一部分改變。

在圖3的304處,aes裝置通過採用在有限域的子域(例如gf(22))中為其自身逆元素以獲得經替換數據的靜態查找表的掩蔽aes替換階段(例如,用於加密的掩蔽subbytes階段或用於解密的掩蔽invsubbytes階段)來路由組合數據的至少一部分。這可(例如)對應於用於加密的圖1的掩蔽subbytes操作104的經修改版本,或對應於用於解密的圖1的掩蔽invsubbytes操作128的經修改版本。在圖3的306處,aes裝置通過一或多個額外密碼編譯aes階段來路由經替換數據,從而產生輸出數據(例如,輸出用於加密的密文或輸出用於解密的經解密明文)。這可對應於圖1的剩餘加密或解密階段。

在有限域為gf(28)且子域為gf(22)的一個實例中,可以使用gf(22)中的一個字節將靜態查找表表示為:

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

(7)

或其置換。對於合併,除了靜態查找表之外,aes裝置還可利用一個字節大小的動態表tm[·],以供在前述校正項(即,輸入掩碼)變得可用時即刻再計算掩蔽項。在這個實例中,t[·]和tm[·]是相異的表。因此,在一個實例中,輸入是校正項(輸入掩碼)t[(·)]和輸出掩碼的當前值;且輸出是tm[·],其中tm[·]由輸出掩碼的當前值掩蔽的t[·]且其索引由輸入掩碼校正:

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

(8)

方程式(8)代替上文方程式(4)和(5)用以合併。因此,在合併階段的這個示範性實施方案中,輸入掩碼起到校正項作用且輸出掩碼僅僅是輸入掩碼的置換。當校正項變為可用時,與subbytes階段的其它操作同時或同步執行動態查找表中的元素的計算。使用靜態和動態查找的混合實施方案可用於各種中間計算且可用於執行乘法逆元素處理,以得到掩蔽subbytes階段的最終結果。

應注意,在gf(22)子域的層面,置換數量較小,即,對於gf(22)子域僅存在四個元素。在gf(22)子域中計算乘法運算對應於執行子域的一些元素的置換(因為子域是有限域,且因此子域中的所有乘法運算必定得到所述子域的元素)。因此,前述靜態表可用於有效地促進乘法運算,因為其存儲有各種置換。此外,子域中的逆元素處理是一種位調換。更具體地說,在gf(22)中:0的逆元素是0;1的逆元素是2;2的逆元素是1;且3的逆元素是3(其中值0、1、2和3意在表示gf(22)子域的容許值而非其一般運算等效物)。因此,僅僅通過使用靜態表來查找反轉值可輕易地執行逆元素處理。再者,應注意,輸入值加上校正項(即輸入掩碼)將得到靜態表的置換。在gf(22)中僅存在四種置換:輸入掩碼為0時的同一性表,和輸入掩碼不為0時的三個其它字節。藉此,置換由輸入掩碼選擇。通過使用索引向量除以gf(22)中的掩蔽輸入值來選擇輸出。因而,在不需要隨機數產生器或任何複雜計算的情況下便利地執行合併。安全性級別大體上與上文所描述的先前技術相同,因為同時置換和計算各項。此外,憑藉這種技術,在字節中被設置成一的位的數目在任何給定時間始終相同。這通過使得難以進行側信道攻擊(其可以其它方式利用被設置成零的位的數目的改變以獲得機密信息)來保持安全性。

作為具體實例,下文描述使用為其自身逆元素的表t(且為清晰起見數值以十進位而非gf(22)表示)的未掩蔽逆運算。對於輸入值a=2,通過查找表t[a]的第a個元素來從所述表獲得其逆元素,所述逆元素在這個實例中為1:

類似地,t[0]=0,t[1]=2等等。因此,以上運算表示常規(即,未掩蔽)逆元素,因為其可藉助t[·]予以實施。

對於掩蔽,存在三個主要步驟:

(a)由輸入掩碼同時對t[·]的所有元素求和,並產生動態矩陣:tm[·]。

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

(c)通過用輸入掩蔽值給tm加索引來獲得對應輸出掩碼。

上文討論了gf(22)中的逆元素處理的中間運算。對於相乘,運算是類似的,其主要差別在於必須允許向左和向右置換。此外,置換的元素僅為非零的那些元素(因為與零相乘必定為零)。舉例來說,未掩蔽相乘可與以下運算結合(其中,同樣為清晰起見以十進位表示數值):

應注意,可通過含有所有域元素{0,1,2,3}的數組的後續置換獲得m[]的各行/列。舉例來說,可通過t[]的置換來獲得m[]的各行/列。設單個向量mt[]={0,1,2,3}。如果操作數中的一個為零,那麼得零,否則將非零元素向左移位b並以a給所得向量加索引。舉例來說,如果a=1且b=2,那麼mt'[]={0,3,1,2}且mt'[1]=3,這等於gf(22)中的」a×b」。

可憑藉以下運算獲得掩蔽相乘」(a+m)×(b+m)」的結果:

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

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

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

(d)通過以a的掩蔽值給所得數組mt'加索引來獲得結果-a×b+m-。

可憑藉能夠向左和向右移位的單一額外字節或以完整大小的表等實現這些運算。就相乘而言,如果兩個操作數中的一個為零,那麼相乘結果必定為零。還應注意,一般來說,裝置對輸出掩碼求和,輸出掩碼在這種狀況下可作為輸入掩碼,因為掩碼的加法運算會同時進行。這也是允許減少新隨機位和再使用gf(22)中的掩碼的機制。否則,例如在傳統canright式實施方案中,這種情況將是不大可能的。還應注意,mt不同於t。此外,僅通過循環移位t的元素無法從t獲得mt。同樣地,通過循環移位mt中的元素無法獲得t。然而,通過置換mt的位置1和3處的元素可獲得t,且反之亦然。

因此,方程式(4)和(5)的中間計算可被前述表查找代替,且乘法運算使用剛才所描述的運算。實際上,用於相乘的值的置換數目略微小於用於逆元素處理的值的數目。就考慮到方程式(6)來說,應注意,的最終結果由兩個二位向量pm和qm構成,一個向量以t0開始且另一向量以t1開始,這兩個向量是內部產生的新位。為避免使用這些新位,如剛才所描述,最終相乘結果基於其它置換。

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

現將參考示範性實施方案來描述這些或其它特徵,在所述示範性實施方案中,aes處理裝置是智慧型手機或類似用戶存取終端裝置內的晶片上系統soc處理器的組件。在這些裝置內,電路面積可能受限,且因此在高處理速度下消耗極小電路面積同時仍實現足夠安全性的aes處理器可能至關重要。然而,可在廣泛多種系統和裝置中利用並且通常可在採用aes或類似密碼編譯處理時實施密碼編譯系統的方面。舉例來說,其中可實施密碼編譯系統的其它硬體環境包含智慧卡或各種其它存儲裝置或通信裝置以及用於與其共同使用的組件或外圍裝置。在智慧卡內,電路空間尤其受到限制且時鐘速度可能相對緩慢,因此受益於並不消耗大量電路空間而仍快速且高效地操作的aes裝置。

示範性soc硬體環境

圖4說明根據其中可利用各種新穎特徵的一個實例的移動通信裝置的soc處理電路400。soc處理電路可以是高通公司的snapdragontm處理電路。soc處理電路400包含應用程式處理電路410,其包含經裝備以與aes處理器413結合操作的多核cpu412,所述aes處理器413採用用於掩蔽的靜態和動態查找表(包含為其自身逆元素的靜態表)且包含aes加密裝置415和aes解密裝置417(其可能均包含所述靜態表中的一或多個以及一或多個動態查找表)。

應用程式處理電路410通常控制移動通信裝置的全部組件的操作。在一個方面,應用程式處理電路410耦合到用於控制數據的存儲的主機存儲控制器450,所述數據的存儲包含內部共享存儲裝置432的密鑰存儲元件433中萬能密鑰的存儲,所述內部共享存儲裝置432形成內部共享硬體(hw)資源430的部分。應用程式處理電路410還可包含啟動只讀存儲器(rom)和/或隨機存取存儲器(ram)418,其存儲有用於soc處理電路400的各種組件的啟動順序指令。soc處理電路400進一步包含受應用程式處理電路410控制的一或多個外圍子系統420。外圍子系統420可包含(但不限於):存儲子系統(例如,rom、ram)、視頻/圖形子系統(例如,數位訊號處理電路(dsp)、圖形處理電路單元(gpu))、音頻子系統(例如,dsp、模/數轉換器(adc)、數/模轉換器(dac))、功率管理子系統、安全子系統(例如,其它加密組件和數字權限管理(drm)組件)、輸入/輸出(i/o)子系統(例如,鍵盤、觸控螢幕)以及有線和無線連接子系統(例如,通用串行總線(usb)、全球定位系統(gps)、wi-fi、全球移動通信系統(gsm)、分碼多重存取(cdma)、4g長期演進(lte)數據機)。示範性外圍設備子系統420為數據機子系統,其包含dsp422、各種其它硬體(hw)和軟體(sw)組件424以及各種射頻(rf)組件426。在一個方面中,各外圍子系統420還包含存儲有相關外圍子系統420的主要啟動映像的啟動ram或rom428。

如所提到,soc處理電路400進一步包含各種內部共享hw資源430,例如內部共享存儲裝置432(例如,靜態ram(sram)、快閃記憶體等),其由應用程式處理電路410和各種外圍子系統420共享,以存儲各種運行時間數據或其它參數以及提供主機存儲器。在圖4的實例中,內部共享存儲裝置432包含可用於存儲密碼編譯密鑰或口令的前述密鑰存儲元件、部分或組件433。在其它實例中,密鑰存儲在移動裝置內的其它地方。

在一個方面中,soc400的組件410、418、420、428和430集成在單晶片襯底上。soc處理電路400進一步包含各種外部共享hw資源440,其可位於不同的晶片襯底上並且可經由一或多個總線而與soc處理電路400通信。外部共享hw資源440可包含(例如)外部共享存儲器442(例如雙倍數據速率(ddr)動態ram)和/或永久性或半永久性數據存儲器444(例如安全數字(sd))卡、硬碟驅動器(hdd)、嵌入式多媒體卡、通用快閃記憶體裝置(ufs)等),其可由應用程式處理電路410和各種外圍子系統420共享以存儲各種類型的數據,例如作業系統(os)信息、系統文件、程序、應用程式、用戶數據、音頻/視頻文件等。當啟動併入有soc處理電路400的移動通信裝置時,soc處理電路開始系統啟動過程,其中應用程式處理電路410可存取啟動ram或rom418以檢索用於soc處理電路400的啟動指令,包含用於各種外圍子系統420的啟動順序指令。外圍子系統420還可具有額外外圍啟動ram或rom428。

示範性aes加密/解密程序

圖5說明用於在加密500和解密501中使用的圖4的aes處理器413的示範性階段。示範性aes處理器413採用使用用於subbytes操作和invsubbytes操作的gf(22)靜態查找表的掩蔽aes加密/解密。對於加密,在502處開始,對輸入明文執行初始addroundkey操作,其中使當前狀態的各字節與輪密鑰塊組合。在初始addroundkey操作之後,執行一組加密輪503,其中每一輪包含利用一或多個gf(22)靜態和動態查找表來促進subbytes操作的掩蔽subbytes階段504。為簡潔起見,儘管在圖式中掩蔽subbytes階段504與掩蔽subbytesw/gf(22)靜態表有關,但應了解,裝置可包含例如一或多個動態查找表的額外組件。各加密輪503還包含shiftrows階段506、mixcolumns508階段和另一addroundkey階段510。在一組加密輪503之後,執行最終加密輪514,其包含最終掩蔽subbytes階段516、最終shiftrows階段518和最終addroundkey階段520。如同掩蔽subbytes階段504,最終掩蔽subbytes階段516利用一或多個gf(22)靜態和動態查找表來促進subbytes操作。輸出為經加密密文。

逆向操作解密501以將密文轉換成明文。簡而言之,在524處開始,對輸入密文執行初始addroundkey操作,其中使當前狀態的各字節與輪密鑰塊組合。在初始addroundkey操作之後,執行一組解密輪534,其中每一輪包含invshiftrows階段526、掩蔽invsubbytes替換階段528、invmixcolumns階段530和另一addroundkey階段532。掩蔽invsubbytes階段528是利用一或多個gf(22)靜態和動態查找表來促進invsubbytes操作的標準掩蔽aesinvsubbytes階段的經修改版本。儘管在圖式中掩蔽invsubbytes階段528與subbytesw/gf(22)靜態表有關,但同樣應了解,裝置可包含例如一或多個動態查找表的額外組件。在一組解密輪534之後,執行最終解密輪536,其包含最終invshiftrows階段538、最終掩蔽invsubbytes替換階段540和最終addroundkey階段536。如同掩蔽invsubbytes階段528,最終掩蔽invsubbytes階段538利用一或多個gf(22)靜態和動態查找表來促進inversesubbytes操作。輸出為經解密明文。

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

圖7說明供圖6的掩蔽subbyte替換裝置或處理器600使用或供其它合適裝備組件、裝置、系統或處理電路使用的示範性程序。這可被稱為「混合(hybrid)」程序,因為其採用靜態和動態表。在702處,替換處理器輸入加密算法的當前狀態的字節a和用作校正項的輸入掩碼m,並計算am=a+m。在704處,處理器從am獲得位對bm,以供在gf(22)中處理。作為所述過程的一部分,裝置採用將gf(24)的元素變為gf(22)×gf(22)中的元素對的程序。舉例來說,設想gf(24)中的4位串b=(b11,b10,b01,b00)。在一般依據(例如,上文所引用canright論文中討論的依據)下,位拆分用於從gf(24)轉換到gf(22)。因此,映射使得b=[b1,b0]對應於以下位對的級聯:b1=(b11,b10)-b的左側部分或上部部分,和b0=(b01,b00)-b的右側部分或下部部分。應注意,b1和b0是gf(22)中的元素。同樣在704處,替換處理器輸入或存取gf(22)靜態查找表t[·]和輸出掩碼m'的當前值,其中靜態查找表t[·]可表示為:

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

(9)

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

tm[i+校正項]=t[i]+輸出掩碼。

(10)

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

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

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用以計算循環置換。在(12)中,cm-1給mt'加索引,而bi及qi用來計算循環置換。gf(24)的結果是二位對bm-1和其對應掩碼(用於gf(22)中逆元素處理的輸入掩碼),所述掩碼為q=[q1,q0],最後組合位對和掩碼從而得到輸出am-1。如已解釋,基於從am獲得的bm的組件來在gf(22)中執行使用靜態和動態表的計算。

圖8說明圖6的掩蔽subbyte替換處理器600的示範性組件800,所述處理器採用使用靜態和動態查找表的混合配置。掩碼額外組件802將由掩碼產生器804所產生的掩碼m與加密算法的當前狀態的輸入字節a相加,從而得到am=a+m和m。這些值是去往位選擇組件806的輸入,所述組件用以從字節am獲得呈bm的二位對,以用於gf(22)中的逆元素處理。通過利用經由gf(22)中的靜態查找表812(即,t[·])所獲得的gf(22)中的動態查找表810(即,tm[·])中的信息,gf(22)乘法逆元素組件808用以使用已描述技術來執行呈bm的所述二位對的乘法逆元素。當可從掩碼產生器804獲得掩碼值(即,校正值)時,動態查找表810具有「正在」計算的值。在這個實例中,乘法逆元素組件808還使用一或多個向量813,以存儲結果值的左側和右側部分。(例如,上文所討論的和

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

對於解密,提供類似組件以執行掩蔽invsubbytes操作(而非掩蔽subbytes)。此外,儘管關於子域為gf(22)的aes實例進行了描述,但本文中所描述的系統和方法的方面適用於除aes以外的加密算法並適用於除gf(22)以外的有限子域。

根據本文中所呈現的發明的方面,可提供利用以下中的一或多個的實施方案:

a.實施方案可完全採用靜態表,例如通過靜態地存儲所有所需置換。

b.實施方案可採用動態表,其中以置換的形式進行校正項和運算。在這種情況下,tm可以是t的置換。

c.實施方案可採用靜態表和動態表(即,上文主要描述的混合配置),其中靜態地存儲一些表(例如,{0,1,2,3}和未掩蔽逆元素{0,2,1,3}),以按位xor運算來推導表的掩蔽版本且通過首先置換和給表的掩蔽版本加索引來進行掩蔽操作。如所解釋,儘管對於gf(22)中的掩蔽逆元素和掩蔽相乘的計算來說,這個過程可以是類似的,但具體置換不同。

上文詳細地描述了混合版本(即,實施方案「c」)。可以大體類似的方式來實施全靜態版本(即,實施方案「a」),同時在逆元素處理期間考慮以下條件:

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

就這一點而言,因為m∈{0,1,2,3},所以裝置可靜態地存儲t[]+m的可能結果的預先計算值,其中t[]={0,2,1,3}。如下文所說明,這對應於存儲用於掩蔽逆元素處理的後續4位元組矩陣。當m=0時,第一行為t[]+m;當m=1時,第二行為t[]+m;當m=2時,第三行為t[]+m;且當m=3時,第四行為t[]+m。

{0,2,1,3,

2,1,3,0,

3,1,2,0,

1,2,0,3}

為計算掩蔽逆元素(即,輸出),校正項給上文矩陣的一行加索引(例如,如果m=0,那麼校正項給行零加索引),並使用掩蔽輸入(即,輸入cm=c+m)來給所述列加索引。儘管待存儲的置換數目較大,但相同原理適用於掩蔽相乘。

可以大體類似的方式來實施全動態版本(即,實施方案「b」),同時,在逆元素處理期間考慮以下條件(其中,輸入和輸出與剛才所展示相同):

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

全動態逆元素處理從包含域元素(例如{0,1,2,3})的單一字節和臨時存儲開始,從而允許所述域中的置換和元素並執行所需掩蔽操作。舉例來說,就掩蔽逆元素處理而言,首先調換元素1和2,隨後用校正項的值來置換。可用輸入cm=c+m來給這個置換順序的結果加索引,從而產生所需輸出

舉例來說,假設cm=2+1=3,那麼裝置可經配置以計算域運算中的掩蔽逆元素:執行對應於如先前案例中所說明的選擇和移位置換的置換。這些置換的結果是域(即,{0,1,2,3})的元素的以下實例:{3,2,1,0}。更具體地說,{0,1,2,3}的置換起到調換靠內的兩個值(例如,1和2)並隨後調換第一個和最後一個值(例如,0和3)從而產生{3,2,1,0}的作用。正如所料,用掩蔽輸入cm=3來給上表加索引的結果是當完成逆元素處理時,將動態表復原到其初始值(即,{0,1,2,3}),以適應接下來的加密/解密請求。類似地,對於相乘,可實施其它類型的置換。

示範性系統和方法

圖9說明其中可實施圖3至8的系統、方法和設備的整體系統或設備900。根據本發明的各種方面,元件、或元件的任何部分、或元件的任何組合可用包含一或多個處理電路904(例如圖2的soc處理電路)的處理系統914來實施。舉例來說,設備900可以是移動通信系統的用戶設備(ue)。設備900可與無線電網絡控制器(rnc)一起使用。除了soc之外,處理電路904的實例還包含:微處理電路、微控制器、數位訊號處理電路(dsp)、現場可編程門陣列(fpga)、可編程邏輯裝置(pld)、狀態機、門控邏輯、離散硬體電路以及經配置以執行貫穿本發明所描述的各種功能性的其它合適的硬體。再者,處理系統914可以是伺服器(例如,圖1所展示的伺服器)的組件。也就是說,如設備900中所利用的處理電路904可用於實施如上文所描述的或圖3、4、7和8中所說明的過程(以及下文討論的在圖12和13中所說明的過程)中的任何一或多者(例如用於加密和解密的過程)。

在圖9的實例中,可使用通常由總線902表示的總線架構來實施處理系統914。總線902可取決於處理系統914的具體應用和整體設計約束而包含任何數目個互連總線和橋接器。總線902連結各種電路,所述電路包含一或多個處理電路(通常由處理電路904表示)、存儲裝置905以及機器可讀媒體、處理器可讀媒體、處理電路可讀媒體或計算機可讀媒體(通常由非暫時性機器可讀媒體906表示)。總線902還可將此項技術中眾所周知的且因此將不再進一步描述的各種其它電路(例如定時源、外圍裝置、電壓調節器和功率管理電路)連結在一起。總線接口908在總線902與收發器910之間提供接口。收發器910提供用於經由傳輸媒體與各種其它設備通信的裝置。取決於設備的性質,還可提供用戶接口912(例如,小鍵盤、顯示器、揚聲器、麥克風、操縱杆)。

處理電路904負責管理總線902和一般處理,包含執行存儲在機器可讀媒體906上的軟體。軟體在由處理電路904執行時使得處理系統914執行在本文中針對任何特定設備所描述的各種功能。機器可讀媒體906還可用於存儲由處理電路904在執行軟體時操控的數據。

處理系統中的一或多個處理電路904可執行軟體或軟體組件。軟體應被廣義上解釋為意指指令、指令集、代碼、代碼段、程序代碼、程序、子程序、軟體模塊、應用程式、軟體應用程式、軟體包、例程、子例程、對象、可執行文件、執行線程、步驟、函數等,而不管其是被稱作軟體、固件、中間件、微碼、硬體描述語言還是其它。處理電路可執行任務。代碼段可以表示步驟、函數、子程序、程序、例程、子例程、模塊、軟體包、類,或指令、數據結構或程序語句的任意組合。一個代碼段可以通過傳遞和/或接收信息、數據、自變量、參數或存儲內容耦合到另一代碼段或硬體電路。信息、自變量、參數、數據等可經由包含存儲器共享、消息傳遞、令牌傳遞、網絡傳輸等任何合適的手段傳遞、轉發或傳輸。

軟體可駐留在機器可讀媒體906上。機器可讀媒體906可為非暫時性機器可讀媒體。舉例來說,非暫時性處理電路可讀媒體、機器可讀媒體或計算機可讀媒體包含:磁性存儲裝置(例如,硬碟、軟盤、磁條)、光碟(例如,壓縮光碟(cd)或數字多功能光碟(dvd))、智慧卡、快閃記憶體存儲器裝置(例如,卡、棒或鑰匙形驅動器)、ram、rom、可編程rom(prom)、可擦除prom(eprom)、電可擦除prom(eeprom)、寄存器、可裝卸磁碟、硬碟、cd-rom以及用於存儲可以通過機器或計算機存取和讀取的軟體和/或指令的任何其它合適的媒體。術語「機器可讀媒體」、「計算機可讀媒體」、「處理電路可讀媒體」和/或「處理器可讀媒體」可包含(但不限於)非暫時性媒體,例如可攜式或固定式存儲裝置、光學存儲裝置以及能夠存儲、包含或攜載指令和/或數據的各種其它媒體。因此,本文中所描述的各種方法可以完全或部分通過可存儲在「機器可讀媒體」、「計算機可讀媒體」、「處理電路可讀媒體」和/或「處理器可讀媒體」中且通過一或多個處理電路、機器和/或裝置執行的指令和/或數據來實施。舉例來說,機器可讀媒體還可包含載波、傳輸線,以及用於傳輸可由計算機存取及讀取的軟體和/或指令的任何其它合適的媒體。

機器可讀媒體906可駐留在處理系統914中、在處理系統914外部,或跨越包含處理系統914的多個實體而分布。機器可讀媒體906可體現在電腦程式產品中。舉例來說,電腦程式產品可包含封裝材料中的機器可讀媒體。所屬領域的技術人員將認識到,如何最好地實施貫穿本發明呈現的所描述功能性取決於特定應用及強加於整個系統上的總設計約束。舉例來說,機器可讀存儲媒體906可具有一或多個指令,所述指令在由處理電路904執行時使得處理電路執行以下操作:作為密碼編譯操作的一部分,將輸入數據與輪密鑰組合以獲得組合數據;通過採用在有限域的子域中為其自身逆元素以獲得經替換數據的靜態查找表的替換階段來路由組合數據的至少一部分;以及通過一或多個額外密碼編譯階段來路由經替換數據,從而產生輸出數據。

圖式中所說明的組件、步驟、特徵和/或功能中的一或多個可重新布置和/或組合成單個組件、塊、特徵或功能或體現於若干組件、步驟或功能中。在不脫離本發明的情況下,還可添加額外元件、組件、步驟和/或功能。圖式中所說明的設備、裝置和/或組件可經配置以執行圖式中描述的方法、特徵或步驟中的一或多個。本文中所描述的算法也可高效地實施於軟體中和/或嵌入於硬體中。

可使用通用處理電路、數位訊號處理電路(dsp)、專用集成電路(asic)、現場可編程門陣列(fpga)或其它可編程邏輯組件、離散門或電晶體邏輯、離散硬體組件或其經設計以執行本文中描述的功能的任何組合來實施或執行結合本文中公開的實例而描述的各種說明性邏輯塊、模塊、電路、元件和/或組件。通用處理電路可以是微處理電路,但在替代方案中,處理電路可以是任何習知處理電路、控制器、微控制器或狀態機。處理電路還可被實施為計算組件的組合,例如,dsp和微處理電路的組合、多個微處理電路的組合、結合dsp核心的一或多個微處理電路的組合或任何其它此類配置。

因此,在本發明的一個方面中,圖4中所說明的處理電路413可以是經專門設計和/或硬連線以執行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說明的那些)算法、方法和/或塊(例如關於加密和解密消息的那些算法、方法和/或塊)的專用處理電路(例如,asic)。因此,這種專用處理電路(例如,asic)可以是用於執行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說明的那些)算法、方法和/或塊的裝置的一個實例。機器可讀存儲媒體可存儲指令,所述指令在由專用處理電路(例如,asic)執行時使得專用處理電路執行本文中所描述的算法、方法和/或塊。在本發明的另一方面中,圖1的遠程伺服器系統108還可包含經專門設計和/或硬連線以執行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說明的那些)算法、方法和/或塊(例如關於加密和解密消息的那些算法、方法和/或塊)的專用處理電路。因此,這種專用處理電路可以是用於執行圖3、4、7和8中所描述的(以及下文討論的在圖12和13中所說明的那些)算法、方法和/或塊的裝置的一個實例。機器可讀存儲媒體可存儲指令,所述指令在由專用處理電路(例如,asic)執行時使得專用處理電路執行本文中所描述的算法、方法和/或塊。

在至少一些實例中,提供一種密碼編譯裝置,其包含:用於作為密碼編譯操作的一部分將輸入數據與輪密鑰組合以獲得組合數據的裝置;用於通過採用在有限域的子域中為其自身逆元素以獲得經替換數據的靜態查找表的替換階段來路由組合數據的至少一部分的裝置;以及用於通過一或多個額外密碼編譯階段來路由經替換數據從而產生輸出數據的裝置。

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

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

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

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

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

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

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

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

應注意,本發明的各方面可在本文中描述為過程,所述過程描繪為流程圖表、流程圖、結構圖或框圖。儘管流程圖表可將操作描述為依序過程,但許多操作可並行或同時執行。另外,可以重新布置操作的順序。過程在其操作完成時終止。過程可以對應於方法、函數、程序、子例程、子程序等。當過程對應於函數時,其終止對應於函數返回到調用函數或主函數。

所屬領域的技術人員將進一步了解,結合本文所公開的方面描述的各種說明性邏輯塊、模塊、電路及算法步驟可以實施為電子硬體、計算機軟體或兩種的組合。為清晰地說明硬體與軟體的這種可互換性,以上已大體就其功能性來描述了各種說明性組件、塊、模塊、電路和步驟。此功能性是實施為硬體還是軟體取決於特定應用及施加於整個系統的設計約束。

結合本文中公開的實例而描述的方法或算法可以處理單元、編程指令或其它方向的形式直接體現在硬體、可由處理器執行的軟體模塊或兩種的組合中,且可含於單個裝置中或跨越多個裝置而分布。軟體模塊可駐留在ram存儲器、快閃記憶體、rom存儲器、eprom存儲器、eeprom存儲器、寄存器、硬碟、可裝卸磁碟、cd-rom,或此項技術中已知的任何其它形式的存儲媒體中。存儲媒體可耦合到處理器,使得處理器可從存儲媒體讀取信息和將信息寫入到存儲媒體。在替代方案中,存儲媒體可集成到處理器。

本文中所描述的本發明的各種特徵可在不脫離本發明的情況下實施於不同系統中。應注意,前述實施例僅為實例,且不應解釋為限制本發明。實施例的描述既定為說明性的,而不限制權利要求書的範圍。因此,本發明的教示可容易應用於其它類型的設備,且所屬領域的技術人員將明白許多替代方案、修改及變化。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀