使用用于掩蔽操作中的有限子域查找表的密码编译加密算法的制作方法

文档序号:11335288阅读:329来源:国知局
使用用于掩蔽操作中的有限子域查找表的密码编译加密算法的制造方法与工艺

相关申请案的交叉参考

本申请案主张于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,或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器,使得处理器可从存储媒体读取信息和将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。

本文中所描述的本发明的各种特征可在不脱离本发明的情况下实施于不同系统中。应注意,前述实施例仅为实例,且不应解释为限制本发明。实施例的描述既定为说明性的,而不限制权利要求书的范围。因此,本发明的教示可容易应用于其它类型的设备,且所属领域的技术人员将明白许多替代方案、修改及变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1