对RIJNDAEL算法的DPA保护的制作方法

文档序号:12182251阅读:275来源:国知局
对RIJNDAEL算法的DPA保护的制作方法与工艺

本公开内容总体上涉及电子电路,并且更具体地涉及执行被称为Rijndael算法的加密算法的电路,其对要被加密的数据的不同部分实施相同转换。本公开内容更具体地涉及保护由这样的算法执行的计算免受差分功耗分析(DPA)攻击。



背景技术:

在许多应用中,电子电路实施加密、验证、签名的算法,并且更一般地操纵对其的访问期望被保留给特定用户或电路的数据(被称为秘密数据)的算法。在Rijndael算法之中,AES算法(常常被称为AES(高级加密标准,FIPS PUB 197))处理具有设置为128比特大小的数据块,并且是特别常用的加密算法。AES基于源自于相同密钥的不同子密钥来对被划分成块的字或消息多次连续地应用相同的变换。

存在用于尝试发现或盗取这样的秘密数据的许多方法(被称为攻击)。在这样的攻击之中,所谓的旁道攻击包括分析由电子电路对参数(例如,其功耗、其电磁辐射等)执行的计算的影响。特别常用的旁道攻击是被称为DPA(差分功耗分析)的攻击。这样的攻击包括将执行算法的集成电路的功耗与在加密或解密期间使用的秘密密钥涉及的计算结果相关联。实际上,基于要被加密的消息并且基于与秘密密钥有关的功耗,绘制在针对加密消息的电路功耗与由电路计算的中间值之间的随时间的统计相关性的曲线。这样的功耗分析攻击被广泛描述在文献(参见例如Paul Kocher、Joshua Jaffe和Benjamin Jun于1999年公开的由Springer-Verlag LNCS 1666出版的文章“Differential Power Analysis”,CRYPTO 99会议,第388页到第397页)中。



技术实现要素:

实施例可以促进克服保护免受旁道攻击的常用方法和电路的缺点中的全部或部分。

实施例提供一种计算AES算法的方法,其可以促进克服常用方法的缺点中的全部或部分。

实施例提供一种验证执行对旁道攻击的AES算法的电子电路的敏感度的方法。

在实施例中,一种方法保护由电子电路执行的Rijndael型算法免受旁道攻击,其中:

在应用基于替换盒(substitution box)的非线性块替换操作之前,利用第一掩码对要被加密或要被解密的数据的每个块进行掩码,并且然后在替换之后利用第二掩码进行去掩码;以及

在应用非线性操作之前逐块地重新计算替换盒,对替换盒的块的处理的顺序受制于随机置换(permutation),置换与非线性替换操作可交换。

根据实施例:

连续地针对替换盒中的每个块:

在第一步骤中,将块(block)的排列(rank)提交给置换并且与第一掩码进行组合;

在第二步骤中,将块提交给置换并且将结果与第二掩码进行组合;以及

利用第二步骤的结果来替换由第一步骤的结果标识的块。

根据实施例,方法包括以下步骤:

连续地针对替换盒中的每个块:

在第一步骤中,将置换应用到当前块的排列,将结果与第一掩码进行组合并将结果存储在第一变量中;

在第二步骤中,将置换应用到当前块,将结果与第二掩码进行组合并将结果存储在第二变量中;并且

利用第二步骤的结果来替代具有第一步骤的结果作为的排列的替换盒的块。

根据实施例,掩码是随机数。

根据实施例,掩码都具有与块相同的大小。

根据实施例,组合是XOR类型的。

根据实施例,该方法被应用到AES。

在实施例中,一种电子电路,其在操作时实施本文中公开的方法。

实施例提供一种验证执行对旁道攻击的AES算法的电子电路的敏感度的方法。

在实施例中,一种保护由电子电路执行的Rijndael型算法免受旁道攻击的方法,包括:

在应用基于第一替换盒的非线性块替换操作之前,利用第一掩码对要被加密或解密的数据的每个块进行掩码,并且然后在替换之后,利用第二掩码进行去掩码;其中,

在应用非线性操作之前逐块被重新计算替换盒,对替换盒的块的处理的顺序受制于随机置换;并且

对替换盒的重新计算使用第二掩码以及第三掩码和第四掩码,第三掩码和第四掩码之和等于第一掩码。

根据实施例:

连续地针对第一盒中的每个块:

将当前块的排列提交给置换并且将结果与第三掩码进行组合;

利用第二掩码与由置换的结果标识的第一盒的块的组合来替代第二盒的当前块;并且

连续地针对第二盒中的每个块:

将当前块的排列提交给置换并且将结果与第四掩码进行组合;

利用由置换的结果标识的第二盒的块来替代第一盒的当前块。

根据实施例,方法包括以下步骤:

连续地针对第一盒中的每个块:

在第一步骤中,将置换应用到当前块的排列,将结果与第一掩码进行组合并将结果存储在第一变量中;

在第二步骤中,将第二掩码与具有应用到当前块的排列的置换的结果作为的排列的第一盒的块的组合的结果存储在第二变量中;并且

将第二步骤的结果存储在第二盒的由第一步骤的结果标识的块中。

连续地针对第二盒中的每个块:

在第三步骤中,将置换应用到当前块的排列,将结果与第二掩码进行组合并将结果存储在第一变量中;

在第四步骤中,将具有应用到当前排列的置换的结果作为的排列的第二盒的块存储在第二变量中;并且

将第四步骤的结果存储在第一盒中由第三步骤的结果由的块中。

根据实施例,第一盒形成经重新计算的替换盒。

根据实施例:

第一盒的块被复制在第二盒中;

连续地针对第二盒中的每个块:

将当前块的排列提交给置换并且将结果与第三掩码进行组合;

利用第二掩码与由置换的结果标识的第二盒的组合来替代第一盒的当前块;并且

连续地针对第一盒中的每个块:

将当前块的排列提交给置换并且将结果与第四掩码进行组合;

利用由置换的结果标识的第一盒的块来替代第二盒的当前块。

根据实施例,方法包括以下步骤:

将第一盒的块拷贝在第二盒中;

连续地针对第二盒中的每个块:

在第一步骤中,将置换应用到当前块的排列,将结果与第一掩码进行组合并将结果存储在第一变量中;

在第二步骤中,将第二掩码与具有应用到当前块的排列的置换的结果作为的排列的第二盒的块的组合的结果存储在第二变量中;以及

将第二步骤的结果存储在由第一步骤的结果标识的第一盒的块中。

连续地针对第一盒中的每个块:

在第三步骤中,将置换应用到当前块的排列,将结果与第二掩码进行组合,并将结果存储在第一变量中;

在第四步骤中,将具有应用到当前排列的置换的结果作为的排列的第一盒的块存储在第二变量中;以及

将第四步骤的结果存储在由第三步骤的结果标识的第二盒的块中。

根据实施例,第二盒形成经重新计算的替换盒。

在实施例中,一种方法,包括:在由电子电路对数据的处理期间,通过以下步骤保护电子电路免受旁道攻击:利用第一掩码对要被处理的数据的每个块进行掩码;将基于替换盒的非线性块替换操作应用到经掩码的数据;并且利用第二掩码对非线性块替换的应用的结果进行去掩码,其中,所在应用非线性替换操作之前,逐块地重新计算述替换盒,处理替换盒的块的顺序受制于置换,置换与非线性替换操作可交换。在实施例中,该方法包括:连续地针对替换盒中的每个块:将块的排列提交给置换,并且将经置换的排列与第一掩码进行组合;将块提供给置换,并且将经置换的块与第二掩码进行组合;以及利用经置换的块与第二掩码的组合来替代具有等于经置换的排列与第一掩码的组合的排列的块。在实施例中,该方法包括:连续地针对替换盒中的每个块:将置换应用到当前块的排列;将经置换的排列与第一掩码进行组合;将经置换的排列与第一掩码的组合的值存储在第一变量中;将置换应用到替换盒的当前块;将经置换的块与第二掩码进行组合;将经置换的块与第二掩码的组合的值存储在第二变量中;并且利用第二变量的所存储的值来替代具有第一变量的所存储的值作为的排列的替换盒的块。在实施例中,掩码是随机数。在实施例中,掩码具有与块相同的大小。在实施例中,组合是XOR类型的。在实施例中,处理包括应用高级加密标准(AES)算法。在实施例中,处理包括应用Rijndael算法。在实施例中,置换是与非线性替换操作可交换的随机置换。

在实施例中,一种设备,包括:一个或多个存储器;以及数字信号处理电路装置,其在操作时在对数据的处理期间通过以下步骤保护设备免受旁道攻击:利用第一掩码对要被处理的数据的每个块进行掩码;将基于替换盒的非线性块替换操作应用到经掩码的数据;并且利用第二掩码对非线性块替换的应用的结果进行去掩码,其中数字处理电路装置在操作时在应用非线性替换操作之前逐块地重新计算替换盒,处理替换盒的块的顺序受制于置换,并且置换与非线性替换操作可交换。在实施例中,重新计算替换盒包括:连续地针对替换盒中的每个块:将块的排列提交给置换并且将经置换的排列与第一掩码进行组合;将块提供给置换并且将经置换的块与第二掩码进行组合;并且利用经置换的块与第二掩码的组合来替代具有等于经置换的排列与第一掩码的组合的排列的块。在实施例中,一个或多个存储器包括一个或多个寄存器,并且重新计算替换盒包括:连续地针对替换盒中的每个块:将置换应用到当前块的排列;将经置换的排列与第一掩码进行组合;将经置换的排列与第一掩码的组合的值存储在一个或多个寄存器中;将置换应用到替换盒的当前块;将经置换的块与第二掩码进行组合;将经置换的块与第二掩码的组合的值存储在一个或多个寄存器中;并且利用经置换的块与第二掩码的组合的所存储的值来替代具有等于经置换的排列与第一掩码的组合的所存储的值的排列的替换盒的块。在实施例中,掩码是具有与块相同的大小的随机数。在实施例中,组合是XOR类型的。在实施例中,处理包括将高级加密标准(AES)算法应用到数据。在实施例中,处理包括将Rijndael算法应用到数据。在实施例中,置换是与非线性替换操作可交换的随机置换。

在实施例中,一种系统,包括:总线系统;以及数字信号处理电路装置,其在操作时在对数据的处理期间通过以下步骤保护设备免受旁道攻击:利用第一掩码对要被处理的数据的每个块进行掩码;将基于替换盒的非线性块替换操作应用到经掩码的数据;并且利用第二掩码对非线性块替换的应用的结果进行去掩码,其中数字处理电路在操作时在应用非线性替换操作之前逐块地重新计算替换盒,处理替换盒的块的顺序受制于置换,并且置换是与非线性替换操作可交换。在实施例中,该系统包括:集成电路,集成电路包括数字信号处理电路装置和一个或多个寄存器。在实施例中,该系统包括:蜂窝电话电路装置,其耦合到数字信号处理电路装置。

在结合附图对具体实施例的以下非限制性描述中详细讨论上文。

附图说明

图1以简化图图示了AES型算法。

图2以方框的形式示意性地示出了对块加密的这样的替换盒的掩码的示例;

图3以方框的形式示意性地示出了对利用随机顺序重新计算的替换盒的掩码的示例;

图4以方框的形式示意性地示出了保护执行AES算法的方法的实施例;

图5以方框的形式示意性地示出了保护执行AES算法的方法的另一实施例;

图6以方框的形式示意性地示出了保护执行AES算法的方法的另一实施例;以及

图7示出了用于实施所描述的方法的电子电路的示例。

具体实施方式

除非上下文另行指出,否则在不同附图中已经利用相同的参考标记来指代相同的元件。具体地,不同实施例共同的结构元件和/或功能元件可以利用相同的附图标记来指代并且可以具有相同的结构、尺寸和材料属性。为清楚起见,已经示出了并将详细描述仅仅对理解所描述的实施例有用的那些步骤和元件。具体地,还没有详细描述对执行的加密/解密的应用或对执行其的电子电路的应用,所描述的实施例与常用应用兼容。

在后文中将关于对AES的应用的示例描述实施例。然而,在后文中描述的全部通常适用于涉及非线性替换操作的任何块算法,例如Rijndael型算法。

通常由集成电路通过连线的逻辑状态机或借助于执行存储器(通常为ROM)中的程序的微处理器执行AES。算法使用对集成电路或对用户特定的秘密密钥,其被处理以对数据进行加密。例如,AES基于源自于不同的加密子密钥(形成密钥的二进制字的部分)对被划分成块的字或数据代码多次连续应用相同的变换。

AES常常被使用在微电路卡、解码器、蜂窝电话或其他类型的电子设备中。

图1以简化图图示了AES型算法。将仅仅描述加密,解密涉及反向变换。为了更多细节,能够对Joan Daemen和Vincent Rijmen的Springer-Verlag Eds的工作“The Design of Rijndael”(ISBN 3-540-42580-2)并对AES标准(FIPS PUB 197)进行引用。

该算法对具有所确定比特数的字或代码T0加密成具有相同大小的另一字或代码Tn。要被处理的数据(消息)被划分成都具有相同大小(针对AES的128比特)的多个字或代码。加密和解密依赖于具有以加密安全性为条件的其长度(针对AES的128比特、192比特或256比特)的秘密密钥。

实际上,AES过程的每个步骤处理表示字的四行和四列的阵列,其每个元素为处理过的128比特代码的字节或块。为了简化以下描述,针对每个步骤对被称为阵列的状态进行引用。应用到与最频繁的情况相对应的被划分成字节的32比特字的AES算法被当作示例。

通过分别基于在128比特、192比特或256比特上的秘密密钥来生成其每个也包括128比特的11、13、15子密钥来开始。这些子密钥旨在要由关于图1描述的算法使用。

从要被加密的代码或数据字的初始状态T0(框10,状态初始化)开始。

AES的第一阶段是包括执行初始状态T0与第一子密钥K0的XOR类型组合(在附图中记为+)的操作(框11,ADDROUNDKEY)。获得了第一中间状态T1。实际上,操作是逐字节地被执行。

第二阶段包括执行涉及针对每个回合i在先前回合获得的状态Ti-1与当前子密钥Ki的相同变换M的多个回合或循环。变换M的回合的号对应于n-1,也就是说,对应于导出的子密钥的号n+1减2。每个回合变换M由四个连续应用的操作构成。

第一操作(框12,SHIFTROWS)包括执行对阵列的最后三行的旋转。通常,阵列的第一行保持不变,第二行旋转一个字节,第三行旋转两个字节,并且第四行旋转三个字节。

回合变换M的第二操作(框13,SUBBYTES)是其中形成当前状态的阵列的每个字节利用其从一般被称为SBOX的替换盒获取的图像来替代的非线性变换。该通过两个组合的变换来获得替换盒。第一变换包括对(与字节相对应的)阶数28的有限体中的考虑的字节(阵列的元素)进行取反,字节00形成其自身的图像。该取反跟随有仿射变换。

回合变换M的第三操作(框14,MIXCOLUMNS)包括将从先前步骤得到的阵列的每列认为是阶数28的有限体上的多项式,并且将这些多项式中的每个多项式乘以组合的多项式以另一多项式为模。

排列i的回合变换M的第四操作且最后的操作(框15,ADDROUNDKEY)包括将子密钥Ki应用到从先前状态得到的阵列,以获得其中从先前状态得到的阵列的每个字节已经通过XOR逐位地与字节k或子密钥Ki的Ki(j,l)组合的阵列,j表示阵列中的行的0与3之间的排列,并且l表示阵列中的列的0与3之间的排列。操作15与加密的第一阶段的操作11相同,然而却是利用不同的子密钥执行的。

在操作15的最后,针对排列i的回合,获得了状态Ti=M(Ki,Ti-1)。回合变换的第四操作被重复n-1次,也就是说,在操作15之后,返回到操作12以利用下一子密钥来执行新回合。

AES的第三阶段包括最后的回合,其包括回合变换M的操作12、13和15,除了具有最后的子密钥Kn-1作为针对操作15的密钥的第三个(MIXCOLUMNS)。

然后获得了状态Tn=M’(Kn,Tn-1)。该结果可以被成形(框16,结果形式)以供后续使用。

回合变换M中的操作12、13、14和15的顺序可以改变。例如,可以在替换操作13之前可以进行对子密钥的引入(步骤15)。

已经提供不同的对策以减小AES型算法处理对旁道攻击并且特别是对通过执行算法的电路的当前消耗的分析的攻击的敏感性。

通常,这样的对策通过在被称为敏感的特定步骤处引入随机数来对计算进行掩码。具体地,替换盒由于其执行的操作的非线性特性被称为对攻击敏感的步骤。替换盒一般对应于已经被预计算并且然后针对AES算法的每个回合从存储内存被读取16次的256个阵列中的阵列。在某些情况下,盒被存储有替换盒(也被称为SBOX)和列变换MIXCOLUMNS的结果,所存储的盒和两个变换的结果被应用到每个状态的字节。

为了对替换盒进行掩码,在回合变换中使用的经掩码的替换盒被重新计算。对替换盒进行掩码施加针对其计算考虑将被用于对经加密的结果进行去掩码的掩码。

图2以方框的形式示意性地示出了对块进行加密的替换盒的掩码的示例。

在图2的示例中,假设在使用回合密钥的情况下,在步骤15之后执行替换(图1的步骤13)。另外,步骤14(MIXCOLUMNS)被认为是被集成在替换操作中,也就是说,替换盒执行两个操作13和14。为简单起见,未考虑操作12(SHIFTROWS)。

通过定义两个相应的掩码和去掩码的掩码(随机数)m和m’来开始(框20,m=随机数),(框21,m’=随机数)。数m和m’对应于字节。

之后,连续地针对替换盒S的排列ω的每个字节S[ω],执行通过字节与掩码m的排列ω的XOR(其被记为逐位相加操作+)的组合(框22,z=ω+m),将其结果放置在临时变量z中。之后(框23,z’=S[ω]+m’),将字节S[ω]与掩码m’进行组合,将其结果放置在临时变量z’中。然后(方框24,S’[z]=z’),将变量z’中包含的值赋给替换盒S’的排列z的字节S’[z]。

例如,将计数器ω初始化为0(框27,ω=0),并且只要还没有处理完所有字节(框29的输出否,ω=n-1?),针对盒S的字节的每次处理就增加1(框28,ω=ω+1)。

一旦已经处理完替换盒S的n个字节S[ω](框29的输出是),经掩码的替换盒S’就被用于逐字节地(逐框地)处理消息。

因此,消息的每个字节t通过XOR与掩码m进行组合(框31,t=t+m),将其结果(通过重写字节t)放置在变量t中,并且然后通过重写变量t中的字节t通过XOR与子密钥的字节k来进行组合(框32,t=t+k),通过其经掩码的替换盒S’中的图像S’[t]来替换(框33,S’[t])。包含图像S’[t]的变量t然后通过经由XOR与掩码m’的组合被去掩码(框34,t=t+m’)。之后返回变量t的内容。

针对消息的所有字节t重复步骤31到35。

图2中图示的计算还被编程如下:

m<-随机数(框20)

m’<-随机数(框21)

针对ω=0到n-1(框27,框29的输出否,框28):

z<-ω+m(框22)

z’<-S[ω]+m’(框23)

S’[z]=z’(框24)

结束循环(框29的输出是)

t<-t+m(框31)

t<-t+k(框32)

t<-S’[t](框33)

t<-t+m’(框34)

返回t(框35)。

假如说为二阶或更高阶的DPA攻击已经使AES算法仍然更易受攻击,包括当它们使用随机掩码时。二阶的DPA攻击包括在相同的当前追踪中将掩码的签名与经掩码的数据(在AES的情况下为盒)的签名隔离。通过对签名进行组合,并且在AES的情况下,通过多次重复攻击,掩码(随机数)能够被直接或间接发现。

为了改进保护替换盒免受这些类型的攻击,其中替换盒S被重新计算的顺序可以被混合以获得经掩码的盒S’。

例如,使用被用于限定其中替换盒的字节S[ω]由数m和m’掩码的顺序的随机置换φ。

图3以方框的形式示意性地示出了对利用随机顺序重新计算的替换盒的掩码的示例。

如与关于图2描述的方法进行比较,这相当于选择(框25,φ=随机置换)可适用于所有n行ω的随机置换φ,并且通过对置换函数φ到排列ω的应用的结果φ(ω)的考虑(框22’,z=φ(ω)+m和框23’,z’=S[φ(ω)]+m’)来替代在步骤22和23中对替换盒的字节的排列ω的考虑。这相当于修改替换盒的字节被重新计算并且因此被掩码的顺序。如图示的,关于图2描述的其他步骤未被修改。

图3中图示的计算还可以被编写如下:

m<-随机数(框20)

m’<-随机数(框21)

φ<-随机置换(框25)

针对ω=0到n-1(框27,框29的输出否,框28):

z<-φ(ω)+m(框22’)

z’<-S[φ(ω)]+m’(框23’)

S’[z]=z’(框24)

结束循环(框29的输出是)

t<-t+m(框31)

t<-t+k(框32)

t<-S’[t](框33)

t<-t+m’(框34)

返回t(框35)。

然而,发明人已经注意到使该对策对具有更高阶数的DPA攻击易受攻击的弱点。

这样的弱点源自于对替换盒的实际掩码。实际上,随机置换φ要为未知的事实具有循环(框22’、23’、24)中的排列ω的值保持从可能的攻击者未知的优点。然而,在每个循环(步骤22’和23’)中两次地操纵排列ω。因此,攻击者能够利用被链接到针对当前排列ω的每次循环的两个操纵的安全性“漏洞”。具体地,步骤23’的结果在于函数φ总是存在于替换盒上,也就是说,实际上,256次,其表示为许多漏洞。通过将步骤22’和23’的结果进行组合,函数φ的贡献被消除。对步骤32的攻击,尽管比图2中更复杂,再次变得有效。

实际上,图3的实施例促进解决第二阶对掩码m的值的攻击的问题。然而,第三阶的攻击使得能够从攻击者能够在当前轨迹中标识步骤22’和23’的时刻发现秘密,并且因此为漏洞点。

在实施例中,如上文描述的电子电路对攻击的抵抗力期望被访问。为了该目的,攻击被执行并检测到其是否有效。

实施例促进改进Rijndael型块加密算法针对旁道攻击的抵抗力。

在实施例中,步骤22’的操作(图3)没有出现在对盒的重新计算中。

在实施例中,随机数m被划分成两个并且对替换盒的掩码被执行在两个步骤中。图4以方框的形式示意性地示出了示例实施例。

通过定义两个掩码(随机数)m1和m2使得它们的XOR组合对应于随机数m(将在步骤31处使用的数)来开始(框41,m1=随机数),(框42,m2=随机数,m=m1+m2)。如前面,随机去掩码值m’(框21,m’=随机数)和可适用于所有n个排列ω的随机置换(框25,φ=随机置换)然后被定义。掩码m1、m2、m和m’对应于字节。也利用经去掩码的替换盒S的值来初始化经掩码的替换盒S’(框43,S’=S)。步骤21和43(或43和21)相对应步骤41和42的顺序是不重要的。

然后,对替换盒的重新计算被划分在两个循环中,第一次使用盒S’上的随机数m1,第二次使用源自于第一循环的盒S上的随机数m2。

因此,连续地针对替换盒S’的排列ω的每个字节S’[ω],将置换函数φ应用到排列ω并执行结果φ(ω)与掩码m1的XOR组合(框44,z=φ(ω)+m1),将其结果放置在临时变量z中。然后(框45,z’=S’[φ(ω)]+m’),字节S’[φ(ω)]与掩码m’进行组合,将其结果放置在临时变量z’中。然后(框46,S[z]=z’),将变量z’中包含的值赋给经去掩码的替换盒S的排列z的字节S[z]。

例如,将计数器ω初始化为0(框27,ω=0),并且只要还没有处理完所有字节(框29的输出否,ω=n-1?),针对盒S’的字节的每次处理就增加1(框28,ω=ω+1)。

一旦已经利用数m的部分m1处理完在43初始化的替换盒S’的n个字节S’[ω](框29的输出是),从第一循环得到的替换盒S的字节就被恢复为利用部分m2进行掩码。

因此,连续地针对替换盒S的排列ω的每个字节S[ω],将置换函数φ应用到排列ω并执行结果φ(ω)与掩码m2的XOR组合(框47,z=φ(ω)+m2),将其结果放置在临时变量z中。然后(框48,z’=S[φ(ω)]),将从第一循环得到的替换盒S的字节S[φ(ω)]被放置在临时变量z’中。之后(框24,S’[z]=z’),将变量z’中包含的值赋给经掩码的替换盒S’的排列z的字节S’[z]。

例如,针对循环计算,将计数器ω再次初始化为0(框27’,ω=0),并且只要还没有处理完所有字节(框29’的输出否,ω=n-1?)针对源自于第一循环的盒S的字节的每次处理就增加1(框28,ω=ω+1)。

一旦已经利用数m的部分m2处理完源自于第一循环的替换盒S的n个字节S[φ(ω)](框29的输出是’),得到的经掩码的替换盒S’被用于逐字节地(逐块地)处理消息并执行如图2和3中描述的步骤31到35。

图4中图示的计算还可以被编写如下:

m1<-随机数(框41)

m2<-随机数(框42)

m’<-随机数(框21)

S’<-S(框43)

φ<-随机置换(框25)

针对ω=0到n-1(框27,框29的输出否,框28):

z<-φ(ω)+m1(框44)

z’<-S’[φ(ω)]+m’(框45)

S[z]=z’(框46)

结束循环(框29的输出是)

针对ω=0到n-1(框27’,框29’的输出否,框28’):

z<-φ(ω)+m2(框47)

z’<-S[φ(ω)](框48)

S’[z]=z’(框24)

结束循环(框29的输出是’)

t<-t+m(图3的框31)

t<-t+k(图3的框32)

t<-S’[t](图3的框33)

t<-t+m’(图3的框34)

返回t(图3的框35)。

图5以方框的形式示意性地示出了电子系统的实施例。

通过定义两个掩码(随机数)m1和m2使得它们的XOR组合对应于随机数m(将在步骤31处使用的数)来开始(框41,m1=随机数),(框42,m2=随机数,m=m1+m2)。如前面,随机去掩码值m’(框21,m’=随机数)和可适用于所有n个排列ω的随机置换(框25,φ=随机置换)被定义。掩码m1、m2、m和m’对应于字节。步骤21和43(或43和21)相对应步骤41和42的顺序是不重要的。

对替换盒的重新计算被分开在两个循环中,第一次使用盒S上的随机数m1,第二次使用源自于第一循环的盒S’上的随机数m2。

因此,连续地针对替换盒S’的排列ω的每个字节S[ω],将置换函数φ应用到排列ω并执行结果φ(ω)与掩码m1的XOR组合(框44,z=φ(ω)+m1),将其结果放置在临时变量z中。然后(框23’,z’=S[φ(ω)]+m’),字节S’[φ(ω)]与掩码m’进行组合,将其结果放置在临时变量z’中。然后(框24,S’[z]=z’),将变量z’中包含的值赋给经掩码的替换盒S’的排列z的字节S’[z]。

例如,将计数器ω初始化为0(框27,ω=0),并且只要还没有处理完所有字节(框29的输出否,ω=n-1?),针对盒S的字节的每次处理就增加1(框28,ω=ω+1)。

一旦已经利用数m的部分m1处理完替换盒S的n个字节S[ω](框29的输出是),从第一循环得到的替换盒S’的字节就被恢复为利用部分m2进行掩码。

因此,连续地针对替换盒S’的排列ω的每个字节S’[ω],将置换函数φ应用到排列ω并执行结果φ(ω)与掩码m2的XOR组合(框47,z=φ(ω)+m2),将其结果放置在临时变量z中。然后(框48,z’=S’[φ(ω)]),将从第一循环得到的替换盒S’的字节S’[φ(ω)]放置在临时变量z’中。然后(框49,S[z]=z’),将变量z’中包含的值赋给替换盒S的排列z的字节S[z]。

例如,针对循环计算,将计数器ω再次初始化为0(框27’,ω=0),并且只要还没有处理完所有字节(框29’的输出否,ω=n-1?)针对源自于第一循环的盒S’的字节的每次处理就增加1(框28’,ω=ω+1)。

一旦已经利用数m的部分m2处理完源自于第一循环的替换盒S’的n个字节S[φ(ω)](框29的输出是’),此处形成经掩码的替换盒的得到的替换盒S被用于逐字节地(逐块地)处理消息。因此,关于图2和3描述的步骤33取出了盒S的字节而非盒S’的字节(框33’,t=S[t])。如图示的,关于图2和3的实施例不修改步骤31、32、34和35。

如与图4的实施例进行比较的,对盒S’的初始化被免去(图4的框43)。

图5中图示的计算还可以被编写如下:

m1<-随机数(框41)

m2<-随机数(框42)

m’<-随机数(框21)

φ<-随机置换(框25)

针对ω=0到n-1(框27,框29的输出否,框28):

z<-φ(ω)+m1(框44)

z’<-S[φ(ω)]+m’(框23’)

S’[z]=z’(框24)

结束循环(框29的输出是)

针对ω=0到n-1(框27’,框29’的输出否,框28’):

z<-(ω)+m2(框47)

z’<-S’[φ(ω)](框48’)

S[z]=z’(框49)

结束循环(框29的输出是’)

t<-t+m(图3的框31)

t<-t+k(图3的框32)

t<-S[t](框33’)

t<-t+m’(图3的框34)

返回t(图3的框35)。

将掩码m划分成两个部分m1和m2并执行对替换盒的计算两次的事实使攻击更困难。

在实施例中,在对替换盒的重新计算期间,采用具有与替换操作的可交换的置换的函数。图6以方框的形式示意性地示出了实施例。

如图2中,通过定义两个相应的掩码和去掩码的掩码(随机数)m和m’来开始(框20,m=随机数),(框21,m’=随机数)。

然后(框25’,γ=随机置换,γoS=Soγ),选择与替换盒可交换的随机置换。

然后,连续地针对替换盒S的排列ω的每个字节S’[ω],将置换函数γ应用到排列ω并执行结果γ(ω)与掩码m的XOR组合(框51,z=γ(ω)+m),将其结果放置在临时变量z中。然后(框52,z’=γ(S[ω]+m’),将对函数γ到字节S[(ω)]的应用的结果与掩码m’进行组合,将其结果放置在临时变量z’中。然后(框24,S’[z]=z’),将变量z’中包含的值赋给经掩码的替换盒S’的排列z的字节S’[z]。如在前面的实施例中描述的,例如将计数器ω初始化为0(框27,ω=0),并且只要还没有处理完所有字节(框29的输出否,ω=n-1?),针对盒S的字节S[ω]的每次处理就增加1(框28,ω=ω+1)。

一旦已经处理完替换盒S的n个字节S[ω](框29的输出是),得到的经掩码的替换盒S’被用于逐字节地(逐块地)处理消息并执行如图2和3中描述的步骤31到35。

如与图3进行比较的,值γ(ω)仅仅在每个循环中出现一次。因此不能够将其组合在循环内以利用当前轨迹。然而,由于函数γ与替换操作S可交换,所以步骤52的结果与图2的步骤23’的结果相同,其允许进行去掩码。

图6中图示的计算还可以被编写如下:

m<-随机数(框20)

m’<-随机数(框21)

γ<-与替换操作S可交换的随机置换(框25’)

针对ω=0到n-1(框27,框29的输出否,框28):

z<-γ(ω)+m(框51)

z’<-γ(S[ω])+m’(框52)

S’[z]=z’(框24)

结束循环(框29的输出是)

t<-t+m(框31)

t<-t+k(框32)

t<-S’[t](框33)

t<-t+m’(框34)

返回t(框35)。

在实施例中,替换盒的可以为随机的任何功耗的提高可以被用作与替换操作可交换的函数γ。

对验证敏感性的实施例的实施促进对关于图4到6描述的对策中的一个的实施例是否由电子电路实施进行验证。

实际上,不同值、字节、变量、等等被物理存储在一个或多个电子电路的寄存器中,并且可以取决于方法步骤根据控制信号来读取和/或写入这些寄存器的内容。电子电路例如为用于执行具有输入寄存器、输出寄存器的所描述的算法的并且被配置为操纵不同值的处理器的示例。例如由集成到处理器的连线逻辑中的元件来执行计算和替换步骤。

图7正是示意性地示出了对被描述的实施例应用的类型的电子电路6的示例。

电路6包括:

计算单元61(UC),例如,状态机、微处理器、可编程逻辑电路等,包括或使用包含用于计算的不同变量并且任意地示出在图7中的在单元61的外部的寄存器62;

一个或多个易失性存储区和/或非易失性存储区63(MEM),其用于存储数据和密钥中的全部或部分;

一个或多个数据总线、地址总线和/或控制总线65,其在电路6内部的不同元件与输入输出接口67(I/O)之间以用于与电路6的外部进行通信。

电路6可以包括根据应用的各种其他电路,在图7中由框69(FCT)表示。例如,框69可以包括被配置为使计算电路61经受旁道攻击的电路装置(例如,控制器等)。框69可以在电路6外部。

一些实施例可以采取计算机程序产品的形式或者包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,其包括适于执行以上描述的方法或功能中的一个或多个的计算机程序。介质可以为物理存储介质,诸如只读存储器(ROM)芯片、或磁盘,诸如数字多用盘(DVD-ROM)、紧凑盘(CD-ROM)、硬盘、存储器、网络、或要由适当的驱动器或经由适当的连接读取的便携式介质产品,包括如被编码在存储在一个或多个这样的计算机可读介质上并且可由适当的阅读器设备读取的一个或多个条形码或其他相关联的代码中的便携式介质产品。

另外,在一些实施例中,可以以其他方式来实施或提供方法和/或功能中的一些或全部,例如至少部分地被实施或被提供在固件和/或硬件中,固件和/或硬件包括但不限于一个或多个专用集成电路(ASIC)、数字信号处理器、分立电路、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等以及采用RFID技术的设备、以及它们的各种组合。

已经描述了各种实施例。本领域技术人员将进行各种更改和修改。具体地,对上述步骤在对AES算法的回合处理中的集成基于以上描述处在本领域技术人员的能力内。最后,已经描述的实施例的实际实施方式基于上文给出的功能指示处在本领域技术人员的能力内。

这样的更改、修改和改进旨在为本公开内容的一部分,并且旨在处于本公开内容的精神和范围内。因此,前面的描述仅仅是通过举例的方式并且不旨在为限制性的。

可以组合以上描述的各种实施例以提供进一步的实施例。在必要时可以修改实施例的各方面以采用各种专利、申请和公开的构思来提供更进一步的实施例。

鉴于以上详细描述的说明书能够进行对实施例的这些和其他改变。总体上,在所附的权利要求书中,使用的术语不应当被解释为将权利要求限于在说明书中公开的具体实施例,而是应当被解释为包括所有可能的实施例,只要在这样的权利要求有权要求的等效方案的全部范围内。因此,权利要求不受本公开内容限制。

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