用共享随机比特进行掩码的制作方法_2

文档序号:9332644阅读:来源:国知局
转换,和AddRoundKey转换。状态可接着被转化成明文。
[0024] InvShiftRows转换是InvShiftRows转换的逆。状态的行2 - 4被分别右移1 一 3字节。InvMixRows转换将状态的每个列看成GF(2s)上的多项式,并将那个多项式与固定 多项式{OB} X3+{OD} X2+{09} X+{0E}(以x4+l为模)相乘。InvSubBytes转换被应用于状态 的每个字节,并且包括逆仿射转换,接着在GF (2s)采用相乘的逆。这可通过使用逆S-Box来 应用。AddRoundKey包括XOR加,并因此是其自身的逆转换。
[0025] 为了安全和效率的考虑,AES算法不需要直接在GF(2S)上实现。相反,每个输入, 包括明文和密文,可被转换成合成字段GF((2 4)2),进一步转换成GF((22)2)2),并最终转换 成6?(((2) 2)2)2)。在6?((24)2)中,数字(1)可被表示为1 = 11計1。,其中叉2+計€1=〇,并 且 i。,GF(24)。在 GF((22)2)中,数字(j)可被表示为 j = jlX+j。,其中 χ2+χ+β = 0,并 且j。,j\e GF(22)。在GF(22)中,数字(k)可被表示为k = klX+k。,其中χ2+χ+1 = 0,并且 k。,Ic1 e GF (2)。
[0026] 数据路径可用三步来描述。首先,输入可被转换成合成字段GF((24)2);其次,AES 算法的转换可在合成字段上计算,其可被转换成GF(2)中的操作;最后,输出可被转换回 GF(2s)。该转换可用矩阵乘以向量来表示。例如,在GF(2s)中给定数字(η),从GF(2 s)到 GF((24)2)的转换矩阵是V。逆转换的矩阵是V1。在GF((2 4)2)中对应的η的数量是Vn。
[0027] 包括AES算法的转换可在合成字段上实现。对于ShiftRows,旋转在不同字段 中可相同。对于AddRoundKey,状态和子密钥两者可在GF((2 4)2)中。对于MixColumns, GF((24)2)中的状态的每个列与固定多项式{03}X3+{01}x 2+{01}X+{02}相乘,其系数也转换 到GF ((24)2)。对于子字节,输入和输出两者可都在合成字段中。对于每个字节替代,Byte ciut =VAV 1 (Bytein)+Vw,其中A是GF(2s)中的仿射转换矩阵,w是GF(2s)中的仿射转换常数, 而V是从GF (2s)到GF ((24)2)的转换矩阵。
[0028] 在合成字段中,数字可被分成多于一片。因此,在合成字段中执行的操作(例如, 乘法和乘法的逆)可比它们在多项式二进制字段中对应的更高效。例如,在GF((2 4)2)相乘 可以使用Karatsuba算法以在GF(24)上的3次乘法来计算。在另一个示例中,GF((2 4)2)上 的逆可以以在GF(24)上的3次乘法1次逆来计算。在GF(24)上的乘法更小,并且因此比它 们在GF ((24)2)对应的更高效。因此,在GF (24)上的操作可被执行为GF (22)上更小的操作, 其可被执行为GF (2)上更小的操作。
[0029] 在200,图2示意地示出了用于执行在合成字段GF((24)2)中实现的示例乘法逆操 作的逻辑。GF((2 4)2)上的乘法的逆可以以在GF(24)上的3次乘法(即,X1, X2, X3U次逆 (X 3来计算。如在220所示,每个GF (24)乘法器包括三个GF (22)乘法器(即,X2. i,X2.2, X2.3)。 如在240的示例的方法所示,GF (22)乘法器包括在GF (2)上的操作,包括AND, XOR,MUX等。 (即,AND2.u,AND2.u,AND2^ 3)。在每个GF(22)乘法器中找到的AND操作以下参考图5进行 讨论。
[0030] 掩码可被用作侧信道攻击(SCA)的对策。掩码可以在AES算法内随机化与密码密 钥相关的中间值。这可通过选择若干随机比特来实现,接着使用随机比特来将初始的未被 掩码的中间值分成几个共享。例如,未被掩码的值(a)可被随机值m分成两片{a。,%},其 中,a。= a XOR 111,而S1= m。该过程需要攻击者观察全部共享以上演成功的攻击。针对每 个未被掩码的值的随机值的数是掩码的阶次。阶次越高,就变得越难上演成功的攻击。
[0031] -种这样的掩码方案被称为Boolean掩码。在Boolean掩码中,通过XOR操作,经 掩码的变量的不同共享可被分组在一起,以获得未经掩码的值。这一类型的掩码方案被称 为加性掩码。加性掩码可允许经掩码的共享通过线性功能同时保持它们的关系。在一个实 施例中,未被掩码的值(a)可被分成三个共享{a。,S 1, a2},其中,f是线性函数,且b = f (a)。 在该不例中,b = f(aQ)X0R f (aJXOR f(a2)。ShiftRows、MixColumns 和 AddRoundKey 都是 线性函数,且因此可被用于该掩码方案无需任何改变。
[0032] 然而,子字节是一个非线性乘法的逆。为实现Boolean掩码,子字节可被以另一方 式实现,使得SBox内的每个中间值在二阶被掩码。如上面讨论的,GF((2 4)2)上的乘法的逆 可最终被转化为GF(2)上的操作,诸如X0R、AND和MUX。XOR和AND与密码密钥相关。XOR 是线性的且因此可支持Boolean掩码而无需改变。AND是一个非线性函数。因此,为了向 SubBytes例程应用t阶的Boolean掩码,经掩码的AND操作的每个内部变量被掩码到t阶 或更高阶。
[0033] 如图2所示,合成字段GF((24)2)上的乘法的逆包括GF⑵中的36个AND操作。 例如,在200示出的X 2GF(24)乘法器包括在220示出的三个GF(22)乘法(X2.u X2.2,X2.3)。 XilGF(22)乘法器包括GF⑵上的三个AND操作(ANDmANDil^AND 2I3K以此方式,每 个GF (24)乘法器包括9个AND操作。类似地,X 1GF (24)逆变器也包括9个AND操作(未示 出)。每个AND操作可利用c随机比特以被t阶掩码(其中C = t*(t+l)/2)。在一个示例 中,不同随机比特可针对每个不同AND操作来生成,导致总的36*c个随机比特。因此,每个 SBox将需要36*c个随机比特,每个轮回将需要576*c个随机比特,而每个AES-128加密或 解密将需要5760*c个随机比特。例如,本发明的2阶经掩码的AND操作使用3个随机比特, 因此17280个随机比特可被用于AES-128加密。这呈现了对于随机数生成器的显著的。该 需求可通过消除一些冗余随机性来减少。
[0034] 在一个示例中,如果另外两个随机比特不一起用作针对第三独立信号的仅有的两 个随机比特,或如果没有更多的线性操作在信号上进行,那么两个不同2阶的经掩码的信 号可共享一个随机比特。如在此使用的,如果第二信号可以与可预测的未经掩码的值一起 使用来生成第一信号,第一信号是相对于第二信号的依赖信号,而如果第二信号不可以与 可预测的未经掩码的值一起使用来生成第一信号,第一信号是相对于第二信号的独立信 号。
[0035] 更一般地,如果未共享的随机比特不一起用作掩码另一独立信号的仅有的随机比 特,或如果没有更多的线性操作在d信号上进行,其中d〈 = t,那么d个不同的t阶的经掩 码的信号可共享fl〇〇r(((d-l)*t)/2)随机比特。例如,以下表格列出了可针对第2、3、4次 序的掩码共享的最大数量的比特:
[0036]
[0037] 给定上述条件,每个SBox的随机比特的数量可被减少到2阶掩码的16个随机比 特和3阶掩码的28个随机比特。
[0038] 图3示出了排序16个随机比特的示例300,使得GF((24)2)上的乘法的逆(包括 GF(24)上的3个乘法和1个乘法的逆)可以是使用仅此16个随机比
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1