在白盒实现方案中拆分s盒以防止攻击的制作方法_4

文档序号:9330524阅读:来源:国知局
。AddRoundKey 110步骤还可以嵌入在查找表中,使得找出所述密钥变得不显而易见。 实际上,能够用查找表网络替换全部回合的AES。例如,可以使用查找表来实现SubBytes 120、ShiftRows 130和MixColumns 150步骤。下文详细地讨论了 AES的可能白盒实现方 案,以便在下文描述本发明的实施例,此外在Chowl中可以找到对这种实现方案的更详细 描述。此外,可以在查找表实现方案中使用其它变型,变型仍在本发明的范围内。
[0076] 图2示出了对回合的输入(即,对S盒的输入)进行固定编码的白盒AES实现方 案。如图所示,通过匕对16个输入字节中的每个进行编码,通过g 3寸输出字节中的每个进 行编码。应注意,在AES的标准实现方案中,不对输入进行编码,不对输出进行编码。
[0077] 如上所示,可以使用频率签名攻击来破坏图2所示的白盒实现方法,所述频率签 名攻击确定在被混乱的S盒的行和列中的半字节的频率。通过以攻击者未知的形式将S盒 拆分为两个或更多个S盒,使得拆分S盒的总和是原始S盒,来解决该问题。
[0078] 为了描述本发明的实施例,对基于表格的白盒AES实现方法进行基本描述。对用 于实现基于表格的白盒AES的方法的更详细描述参阅Chow 1。Chow 1描述了使用特定尺 寸的表格来破坏一些函数的具体实现方案。应认识到:可以对表格进行多种其它拆分,得到 查找表的不同函数和不同尺寸。此外,当下文所述的本发明实施例使用基于表格的AES白 盒实现方案时,可以根据所述实施例执行其它暗号和密码函数。此外,可以使用其它类型的 白盒实现方案(例如,有限状态机实现方案),代替基于表格的实现方案。
[0079] 将对基于表格的白盒AES的描述分为两个步骤。在第一步骤中,将AES的回合描 述为查找表网络。在第二步骤中,通过对它们的输入和输出进行编码来混乱所述表格。
[0080] 步骤1 :将AES实现为查找表的网络
[0081] AES对16字节的数据块进行运算。通常将这些数据块描述为4x4字节矩阵,称 作包括字节X1,i,X 1,2, X1,3, ...x4,4的状态。参考图1的上述AES的回合包括以下运算: AddRoundKey 110, SubBytes 120、ShiftRows 130 和 MixColumns 140。可以将前两个运算 (AddRoundKey和SubBytes)合并为单个T盒运算。也就是说,可以针对输入字节X i, 将字 节与字节函数Ti, 定义,
其中Iii, 是基于AES密钥的16字节回 合密钥。令yu是Ti,^的输出。ShiftRows运算仅是对输出字节又^的索引进行重新编号。 为了便于解释,该运算在本描述中可以省略,但是可以合并到实现T1, ,的查找表,或实现为 状态矩阵的独立运算。在MixColumns步骤中,对于一些常数MC1,^经过GF (28)中的代数式
M,来根据4个输出字节yi, r y2、j、y3、j和y 4、j,计算回合的输出字节zi、j。
[0082] 现在针对每个字节到字节函数Qi^1 (Xi、j) = MChi ·ΤΜ (XiU),定义查找表,其中i, j,1 = 1,2, ...,16。然后,可以通过将这些查找表的结果进行异或,来计算任何输出字节 zh j,即
应注意,可以将Q 盒的序数i,j,1理解为"回合的输入字节i,j对回合的输出字节1,j的贡献"。可以实现 异或以便对两个半字节(即,4比特值)中的每个进行运算,作为查找表,从而减小异或表 格的大小。因此,可以实现Q盒以便产生输出半字节,使得减小对Q盒的输出进行运算的异 或表格的大小。因此,已将对AES回合的每个输出字节z h ]的计算描述为查找表网络。图 3示出了用于计算字节Z2,3的单个输出半字节的查找表网络。
[0083] 图3示出了通过查找表的网络来计算一个输出半字节。Q盒中的上标指数(1)表 示表格仅提供Q盒的输出的第一半字节。输入字节集合X 1,3, X2,Xm和X 4,3被输入到Q盒 320、322、324、326。查找表320和322的输出被馈送到XOR 330,查找表324和326的输出 被馈送到XOR 332。XOR 330和332的输出被馈送到XOR 334。XOR 334的输出是输出状态 340的输出Z2,3的第一半字节。可以使用附加 Q盒以及类似XOR网络,以相同方式计算输出 状态340的输出Z2,3的第二半字节。此外,可以通过接收来自输入状态的一列字节,并将其 转换为输出状态的对应列的输出,来实现其它集合的表格,以便将输入状态310完全转换 为输出状态340。
[0084] 步骤2 :混乱表格和中间值
[0085] 在图3所述的实现方案中,可以从Q盒中方便地提取密钥。仅向所述输出应用反 向MixColumns乘法和反向S盒,以揭示出明AddRoundKey运算。为了防止这样,用任意双 射函数对所有查找表的输入和输出进行编码。Chow 1描述了此方法。这意味着:将查找表 与对输出进行编码的编码函数以及与对输入进行解码的解码函数合并。选择进行编码,使 得对一个表格的输出编码与在下一表格中假定的输入编码相匹配。图4针对第一回合描述 了图3的实现方案的一部分。在该示例中,不对该回合的输入进行编码,以便符合AES。在 下一回合中处理输出编码。也就是说,与第一回合不同,第二回合(以及后续回合)假定对 输入进行编码。备选地,第一回合可以接收编码输入。然后,必须将该输入编码应用于所述 包含白盒实现方案的软件程序中的某处。类似地,如果所述输出符合AES,则最后回合可以 不包括输出编码。应注意,在所获得的白盒实现方案中,查找表和中间值都是混乱的。
[0086] 如上所述,将S盒与密钥添加运算合并,通过对它的输入和输出进行编码来使该 结果变得混乱。对于基于表格的白盒AES实现方案,这意味着针对每个回合创建查找表
对于第一回合,F是当该接口应与标准AES可兼容时的单位函数。 类似地,在最后回合中,G是当该接口应与标准AES可兼容时的单位函数。
[0087] 为了克服攻击者可以使用频率签名攻击的这种问题,S盒可以被拆分为r个S盒 S1, S2, . . .,S1^,其中r彡2,创建r个隐藏拆分S盒S1, S2, . . .,S1^的表格。任意选择拆分S 盒函数S1 (不必是双射性的),使得:
[0088]
[0089] 然后,这些拆分S盒函数S1, S2, . . .,Sd皮隐藏在r个查找表T ρ Τ2, . . .,?;中,其 中:
[0090]
[0091] 拆分S盒函数对于回合1特别有用,其中F1是单位函数。此外,该拆分S盒函数 可以在最后回合中提供一些优点,其中G 1是单位函数。应注意,所有表格T1具有相同的输 入字节。然后,可以通过如上所述的合并MixColumn常数MC,来根据T 1表格计算Q i表格。
[0092] 图3示出了根据值X1,3, X2,3, X3,3, X4,3计算值z 2,3的第一个半字节的表格网络。现 在针对r = 2,描述了根据本发明实施例的用于根据值Xhl^x2,3, X3,3, X4,3计算值z 2,3的第一 个半字节的表格网络。应注意,还可以使用r多2的其他值。可以通过如图4所示的使该 网络变得混乱并通过对第一回合的所有输出半字节重复该操作,来获得根据本实施例的白 盒实现方案。可以以与如图3所示相同的方式对除了最后回合的其它回合进行操作,其中 除了输出编码之外,Q表格现在还具有输入编码。根据类似方式,可以以与第一回合相似的 方式将拆分S盒用于最后回合。在其它实施例中,可以将拆分S盒用于密码函数的所有回 合中。
[0093] 将图3的表格Q1, U定义为:
[0094]
[0095] 其中?x表示在GF(2S)中与X相乘。在该实施例中,将S盒S拆分为两个任意函数 SjP S2,其1
通过随机选择S1并定J
来创建这种拆分S盒SjP S 2 (对于该情况,存在256256个可能性)。针对上述表格Q L u,将
[0097] 这些函数SjP S 2与密钥添加和MixColumns合并获得以下表格:[0096]
[0098]
[0099]
[0100]
[0101] 图5示出了根据具有两个拆分S盒的实施例,通过查找表网络计算一个输出半字 节。根据上述Qu,i的等式,得到:图5的表格网络与图3所示的表格网络计算相同值。0盒 和P盒中的上标(1)表示该表格仅提供〇盒和P盒的输出的第一半字节。输入状态510下 的输入字节集合X 1,3, x2,3, x3,3和X 4,3被输入到〇盒520、522、524、526中。输入状态510下 的输入字节集合X 1,3, x2,3, x3,3和X 4,3还被输入到P盒530、532、534、536中。
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1