保护白盒实现方案不受攻击转让专利
申请号 : CN201510111665.4
文献号 : CN105187364B
文献日 : 2018-10-02
发明人 : W·P·A·J·米歇尔斯
申请人 : 恩智浦有限公司
摘要 :
权利要求 :
1.一种通过将输入消息映射到输出消息的密码系统执行加密钥的密码运算的方法,其中所述密码运算包括至少一个回合,所述至少一个回合包括配置为将输入数据映射到输出数据的非线性映射函数,所述方法包括:由所述密码系统将所述输入数据拆分为n个拆分输入数据,其中对输入数据的拆分基于输入消息的值而改变;
将每个拆分输入数据输入到所述非线性映射函数中,以便获得n个拆分输出数据,其中n个拆分输出数据的组合表示输出数据,其中当将所述输入数据输入到非线性映射函数中时,得到所述输出数据,其中所述将每个拆分输入数据输入到所述非线性映射函数中还包括:输入其中函数f对输入数据x执行密钥添加函数,αi是第i个拆分函数。
2.根据权利要求1所述的方法,其中将每个拆分输入数据输入到所述非线性映射函数中包括:将每个拆分输入数据输入到多个拆分映射函数中,其中对所述多个拆分映射函数进行异或得到所述非线性映射函数。
3.根据权利要求1所述的方法,其中拆分和输入步骤与所述加密钥的密码运算的当前回合有关,所述当前回合产生当前回合的输出,作为所述加密钥的密码运算的下一回合的输入,其中所述加密钥的密码运算对所述加密钥的密码运算的下一回合的输入重复所述拆分和输入步骤,所述输入数据被拆分为m个输入数据。
4.根据权利要求3所述的方法,其中下一回合中的m值大于当前回合中的n值,所述下一回合是加密钥的密码运算的第二到最后回合。
5.根据权利要求3所述的方法,其中当前回合中的n值大于下一回合中的m值,其中所述当前回合是加密钥的密码运算的第二回合。
6.根据权利要求1所述的方法,其中所述将输入数据拆分为n个拆分输入数据是前一回合的一部分,其中前一回合的输出成为当前回合的输入。
7.根据权利要求1所述的方法,其中对输入数据的拆分依赖于输入数据的多个不同部分。
8.根据权利要求1所述的方法,其中查找表实现所述加密钥的密码运算。
9.根据权利要求1所述的方法,其中有限状态机实现所述加密钥的密码运算。
10.一种通过将输入消息映射到输出消息的密码系统执行加密钥的密码运算的方法,其中所述密码运算包括至少一个回合,所述至少一个回合包括配置为将输入数据映射到输出数据的非线性映射函数,所述方法包括:由所述密码系统基于所述输入数据选择n对映射,其中所述n对映射包括第一映射和第二映射,第一和第二映射是所述非线性函数的自等价集合,其中当将输入数据输入到所述非线性函数中时,所述非线性函数的输出的第二映射的组合得到所述非线性函数的输出的已知函数;
通过针对n个第一输入映射的每个,计算输入数据的第一映射,来将输入数据拆分为n个拆分输入数据;
将n个拆分输入数据中的每个输入到所述非线性映射函数中以便获得n个拆分输出数据,其中将每个拆分输入数据输入到所述非线性映射函数中还包括:输入
其中函数f对输入数据x执行密钥添加函数,αi是第i个第一映射。
11.根据权利要求10所述的方法,其中将n个拆分输入数据中的每个输入到所述非线性映射函数中包括:将n个拆分输入数据中的每个输入到多个拆分映射函数中,其中对所述多个拆分映射函数进行异或得到所述非线性映射函数。
12.根据权利要求10所述的方法,其中选择、拆分和输入步骤与所述加密钥的密码运算的当前回合有关,所述当前回合产生当前回合的输出,作为所述加密钥的密码运算的下一回合的输入,其中所述加密钥的密码运算对所述加密钥的密码运算的下一回合的输入重复所述选择、拆分和输入步骤,其中,将输入数据拆分为m个输入数据。
13.根据权利要求12所述的方法,其中下一回合中的m值大于当前回合中的n值,其中所述下一回合是加密钥的密码运算的第二到最后回合。
14.根据权利要求12所述的方法,其中当前回合中的n值大于下一回合中的m值,其中所述当前回合是加密钥的密码运算的第二回合。
15.根据权利要求10所述的方法,其中所述将输入数据拆分为n个拆分输入数据是前一回合的一部分,其中前一回合的输出成为当前回合的输入。
16.根据权利要求10所述的方法,其中n个第一映射是仿射的。
17.根据权利要求16所述的方法,其中n个第二映射是仿射的。
18.根据权利要求10所述的方法,其中对输入数据的拆分依赖于输入数据的一个部分。
19.根据权利要求10所述的方法,其中对输入数据的拆分依赖于输入数据的多个不同部分。
20.根据权利要求10所述的方法,其中查找表实现所述加密钥的密码运算。
21.根据权利要求10所述的方法,其中有限状态机实现所述加密钥的密码运算。
22.根据权利要求10所述的方法,其中所述已知函数基于输入数据。
说明书 :
保护白盒实现方案不受攻击
技术领域
背景技术
包括个人计算机、膝上型计算机、机顶盒、支持互联网的媒体播放器、移动电话、智能电话、
平板、移动热点或能够访问互联网的任何其它设备。将互联网用作正版内容的分发媒介产
生了关于保护内容提供者利益的紧迫问题。越来越多的用户设备使用加载有适合软件的处
理器来运行,以便呈现(回放)诸如音频和/或视频等数字内容。对回放软件进行控制是强加
内容所有者利益的一种方式,包括可以使用内容的条款和条件。以前的许多用户设备是封
闭式系统。现今,越来越多的平台是部分开放的。可以假定一部分用户具有对硬件和软件的
完全控制并接入硬件和软件,其中硬件和软件提供对内容的访问,并且具有大量时间和资
源来攻击和避开任何内容保护机制。因此,内容提供者必须在恶意网络社区上向合法用户
传递内容,在所述恶意网络社区中,并非所有用户或用户设备是可以信任的。
向工程和修改,或禁止获得特定用户安全信息。因此,可以通过由实现安全软件的处理器的
指令集限定的多种功能,执行安全软件应用功能。例如,模糊这些功能的一种方式是通过使
用查找表。
定用户完全控制对内容提供访问的硬件和软件,并具有无限量的时间和资源来攻击和避开
任何内容保护机制。强加可以使用内容的条款和条件的安全软件代码应是防篡改的。数字
版权管理是安全软件应用的普通应用。对分布于用户设备上的受保护内容进行数字版权管
理的一般方法是使用例如DES(数据加密标准)、AES(高级加密标准)或使用其它已知加密原
理来对数字内容进行加密,并使用解密密钥来恢复数字内容。必须保护这些解密密钥以便
防止对受保护的内容进行未授权访问。
条件。为了避开这些条款和条件的攻击者可以试图通过篡改软件模块的程序代码来实现该
目标。
样给攻击者留下了对所述密钥进行攻击的两个机会。首先,攻击者可以对许可数据库访问
功能进行反向工程,允许攻击者从所有许可数据库检索有用的密钥。在这种情况下,攻击者
不需要理解密码学功能的内部工作。其次,攻击者可以观察在内容解密期间对存储器的访
问,因此,攻击者可以检索所述解密密钥。在这两种情况下,所述密钥都被认为是缺乏抵抗
力的。
术。大部分的这种技术是基于通过在所述软件应用的控制路径和数据路径二者中添加随机
性和复杂性的面纱,来隐藏所包含的应用知识。这种技术的构思在于仅通过代码检查(code
inspection)来使得提取信息变得更加困难。因此,更难以寻找例如处理对所述安全应用的
访问和准许控制的代码,并对其进行改变。
算,在任何时刻采样并监控所述软件使用的存储器,甚至修改软件。因此,需要以防止公开
在所述安全功能中使用的安全信息的方式来执行安全功能。可以以多种方式来执行白盒密
码功能。这种方法包括:模糊(obscuring)软件代码;使用模糊对秘密信息的使用的复杂数
学函数;使用查找表;使用有限状态机;或执行密码功能并隐藏安全函数所需的秘密信息的
任意其它方法。白盒实现方案还可以包含包括抗调试和防篡改特性的组件。
本较低,或由于应用开发者对实现白盒系统的硬件没有影响。
发明内容
发明的范围。下文是对示例实施例的详细描述,足以允许本领域技术人员利用本发明构思。
least one round),所述至少一个回合包括配置为将输入数据映射到输出数据的非线性映
射函数,所述方法包括:将输入数据拆分为n个拆分输入数据,其中所述对输入数据的拆分
基于输入消息的值而改变;将每个拆分输入数据输入到非线性映射函数中,以便获得n个拆
分输出数据,其中n个拆分输出数据的组合表示输出数据,其中当将所述输入数据输入到非
线性映射函数中时,得到所述输出数据。
异或得到所述非线性映射函数。
述加密钥的密码运算对加密钥的密码运算的下一回合的输入重复所述拆分和输入步骤。
function),αi是第i个拆分输入数据。
回合包括配置为将输入数据映射到输出数据的非线性映射函数,所述方法包括:基于输入
数据选择n对映射,其中所述n对映射包括第一映射和第二映射,其中所述第一和第二映射
是非线性函数的自等价(self-equivalences)集合,其中当将输入数据输入到非线性函数
中时,非线性函数的输出的第二映射的组合得到非线性函数的输出的已知函数;通过针对n
个第一输入映射的每个计算输入数据的第一映射,将输入数据拆分为n个拆分输入数据;将
n个拆分输入数据中的每个输入到非线性映射函数中以便获得n个拆分输出数据。
函数进行异或得到非线性映射函数。
其中所述加密钥的密码运算对加密钥的密码运算的下一回合的输入重复所述选择、拆分和
输入步骤。
数据非线性映射函数,所述方法包括:针对每个小于或等于n的i值计算αi(x),其中αi(x)被
定义为基于输入消息的n对映射(α,β)之一,所述n对映射(α,β)是非线性函数的自等价的集
合,其中n>1,且对于 h(y)是仿射的;将每个αi(x)输入到非线性映射函
数中以便获得βi(y),其中当x是非线性映射函数的输入数据时,y是输出数据。
其中合并多个映射函数的输出以获得βi(y)。
述加密钥的密码运算对加密钥的密码运算的下一回合的输入重复所述计算和输入步骤。
输入数据映射到输出数据的AES替换函数,所述方法包括:基于输入数据x选择n对映射(α,
β),其中所述n对映射(α,β)是AES替换函数的自等价的集合,n>1,且其中对于
h(y)是仿射的;针对每个i值计算 将每个αi(x)输入到AES替
换函数中以便获得 其中当x是AES替换函数的输入数据时,y是输
出数据。
数,其中合并多个映射函数的输出以获得βi(y)。
密码运算对AES密码运算的下一回合的输入重复所述选择、计算和输入步骤。
值,选择cn的值。
(y)。
附图说明
具体实施方式
范围内。此外,本文记载的所有示例主要显式地用于教学目的以帮助读者理解本发明的原
理和发明人所提供的构思,以促进现有技术,应将本发明理解为不限于这种具体记载的示
例和条件。此外,除非指出(例如,“否则”或“或替代地”),否则文中使用的术语“或”是指非排除性的或(即,和/或)。此外,本文所述的多种实施例不必是互相排除性的,这是由于可以
将一些实施例合并为一个或更多个其它实施例,以形成新的实施例。
Oorschot的“White-Box Cryptography and an AES Implementation”,in Selected
Areas in Cryptography:9th Annual International Workshop,SAC 2002,St.John’s,
Newfoundland,Canada,2002年8月15-16日,下文中称作“Chow 1”;以及Stanley Chow,Phil Eisen,Harold Johnson和Paul C.van Oorschot的“A White-Box DES Implementation
for DRM Applications”,in Digital Rights Management:ACM CCS-9Workshop,DRM
2002,Washington,D.C.,USA,2002年11月18日,下文中称作“Chow 2”。Chow 1和Chow 2公开了如下方法:通过对具有随机双射表格进行编码的组合,使用基于表格的方法来隐藏密码
密钥;并通过将密码边界推动到包含应用,来扩展密码边界。
M.Anwar Hasan,editors,Selected Areas in Cryptography,volume 3357 of Lecture
Notes in Computer Science,pages 227-240,Springer,2005的文章(下文中称作
“Billet”)中指出了Chow的方法的弱点。该弱点可以被攻击者可以利用,并在最坏情况下可
能导致暴露白盒实现方案中隐藏的秘密密钥。
参考除了各个单独输入值之外的其它输入值来表现这种关系。尽管这种关系是依赖于密钥
的并且对于攻击者是未知的,然而这种特征提供足够的结构来大大简化对白盒的击破,如
Bilet进一步所述。
的本发明的实施例中,介绍了使用一系列函数αn将输入字节x拆分为n个字节α1(x),α2
(x),...,αn(x)。选择函数αn,使得当n个字节中的每个通过S盒时,可以组合结果以便实现将原始的x通过S盒的期望结果。用于拆分输入字节的具体αn函数是基于输入的,所以可以随
着输入而改变。该特征破坏了Billet攻击所采用的固定关系。拆分输入不再与密码运算的
非白盒实现方案中的一些单独输入值存在固定关系。这种复杂性足以击败Billet中阐述的
攻击。
作进行比较。
号、消息认证方案、签名方案等。应注意,还可将本发明应用于散列函数(hash functions)。
如果将散列函数用作处理秘密信息(例如,秘密密钥、秘密数据等)的基本构建块(building
block),则后者是特别有用的。例如,可以将本发明应用于在加密钥的散列消息认证码
(HMAC或KHMAC)中使用的散列函数。公知的块暗号包括:高级加密标准(AES)、安全快速加密
例程(SAFER和变型SAFER+与SAFER++)、Blowfish、数据加密标准(DES)等。公知的流暗号是
RC4。此外,可以使用适合的运算模式(例如,暗号反馈(CFB)、计数器模式(CTR)等)将任何块
暗号用作流暗号。
算机游戏)或办公室应用的经加密的计算机码。输入消息还可以表示在其它密码运算中使
用的密钥。例如,可以将后者用于密钥交换协议,其中根据本发明的白盒实现方案对表示新
密钥的数据进行加密和/或解密。输入数据还可以是明文数据(plain data),例如,明文用
户数据。在消息认证方案中后者是尤其有利的。根据本发明的白盒实现方案可以具有如下
特性:该实现方案可以仅用于进行加密,仅用于进行解密,但是不能既用于加密也用于解
密。例如,如果实现方案使用不是双射型的查找表(例如,输入比特比输出比特更多的查找
表),则可以实现该特性。因此,如果用户仅具有白盒解密器,则用户可以验证MAC码,但不能
创建新的MAC。这样增强了这种消息认证方案的不可否认特性。
本块可以使用开关板、状态机或任何其它适合结构,以便在计算机硬件中实现功能。基本块
还可以以运行在通用计算机芯片(例如,微处理器)上的软件来实现。例如,基本块可以使用
包括算术指令的多个计算机指令,多个计算机指令共同实现基本块的功能。可以在软件和
硬件二者中使用的基本块的广泛使用的实现方案是查找表。例如,Chow 1和Chow 2采用该
方法来实现AES和DES块暗号。查找表实现方案包括列出可能输入值、输出值的列表。所述输
入值在查找表中可以是明确的。在这种情况下,查找表实现方案能够通过在输入值的列表
中搜索特定输入,来将特定输入映射到特定输出。当发现了特定输入时,同样就发现特定输
出。例如,可以将特定输出存储在特定输入的旁边。优选地,仅隐含式地存储输入值,而非显
式地存储。例如,如果可能输入是连续范围的数字或字符串,则可以将查找表限制为存储输
出值的列表。例如,可以将特定输入数字映射到由数字表示的位置处存储的特定输出。
储所述输出。查找表特别适合于实现以不规则的方式将输入映射到输出的非线性函数。如
下所示,可以通过向白盒实现方案的查找表中的一个或更多个查找表应用固定混乱输入编
码和固定输出编码,来进一步混乱白盒实现方案。接着,完全预估应用固定混乱输入编码和
输出编码的结果。使用这种技术,可以用相同维数的(具有相同数目的输入比特,并产生相
同数目的输出比特)混乱的查找表来替换查找表。以这种混乱方式使用的输入编码和输出
编码在最终白盒实现方案中并非是明确的。在下文所述的本发明实施例中实现更好的混
乱,该实施例以依赖于输入的方式而非固定方式引入拆分输入字节。应注意,可以有利地将
本文所述的输入拆分与传统的混乱技术相结合,这是由于它们还进一步模糊密码运算的内
部工作。
和/或输入的输入。另外的其它基本块可以采用所述输入消息、所述基本输入块的输出以及
所述其它基本块的输出的任何组合形式的输入。最终,一些基本退出块集合(即,至少一个)
产生输出消息的全部或一部分作为输出。在这种情况下,出现了共同计算从输入消息到输
出消息的映射的基本块网络。
观察实现方案而找到密钥的风险。通常,密钥仅隐含式地存在。已知多种方式来将密钥隐藏
在密码系统中。通常,至少使用部分评估的方法,在该方法中,评估需要密钥输入的基本块,
只要基本块不依赖于输入消息。例如,可以通过预先将密钥值与掩膜值进行异或(XOR),来
部分评估基本运算,在所述基本运算中,需要将输入值、不依赖于输入消息的掩膜值(例如,
来自S盒的值)与上述密钥值进行异或。在这种情况下,尽管密钥值并非明确存在于实现方
案中,然而该运算仍依赖于密钥值。相反,只有密钥值和掩膜值之间的异或存在于实现方案
中。应注意,更复杂的方式和/或隐藏密钥的其它方式与本发明是兼容的。
数,则当等价的α函数被用于拆分输入时,易于从S盒获得期望输出,与此同时,破坏由
Billet攻击使用的固定编码。
Cryptanalysis:Linear and Affine Equivalence Algorithms,”Proceedings of
Eurocrypt,2003,页码33-50(下文中称作Biryukov)所述。在Biryukov中,描述了多种方法
以便确定针对多种加密方法的仿射性自等价函数。
述16字节形成加密算法的初始状态,加密算法的最终状态是密文。在加密算法的任何给定
点处,这些16字节是加密算法的状态。为了概念上解释AES,将状态字节组织为4x4字节的矩
阵。AES包括多个回合,回合的数目依赖于密钥大小。每个回合包括类似的处理步骤,这些类
似的步骤对状态矩阵的字节、行或列进行运算,每个回合在这些处理步骤中使用不同回合
密钥。在将AES用作示例的讨论中,应注意,AES以特定方式定义回合。在以下实施例中,回合
是包括至少一个非线性映射函数(例如,AES中的S盒)的任何步骤组。因此,下文所述的回合
包括一个非线性映射函数以及密码函数的其它步骤的任何组合。此外,回合边界可以以非
线性映射函数开始,例如,S盒,可以与非线性映射函数相合并的任何其它运算(例如,密钥
添加)开始。
矩阵的每列执行处理步骤,而不需要知道其他列。因此,可以将它们认为是32比特运算,由
于每列由四个8比特的值构成。虚线150表示重复处理,直到执行了所需数目的回合为止。
见的。AddRoundKey 110步骤还可以嵌入在查找表中,使得找出所述密钥变得不显而易见。
实际上,能够用查找表网络替换AES的全部回合。例如,可以使用查找表来实现SubBytes
120、ShiftRows 130和MixColumns 150步骤。下文详细地讨论了AES的可能白盒实现方案,
以便在下文描述本发明的实施例,此外在Chow1中可以找到对这种实现方案的更详细描述。
此外,可以在查找表实现方案中使用其它变型,变型仍在本发明的范围内。
的基于表格的方法,而且还应用于有限状态机方法和应用通用码转换技术来安全地实现密
码暗号的方法。此外,对于这种方法,可以使用下文所述的本发明实施例的技术。
专利公开2007/0014394以及由Wulf Harder和Atis Straujums在Re-trust Sixth
Quarterly Meeting作出的记载于2008年3月11日的题为为“Synchrosoft MCFACTTM
Secure Data Processing Technology”的报告公开了使用有限状态机的白盒实现方案的
示例,其通过全文引用合并于此。然而,Billet示出了如果通过固定编码对S盒的输入进行
编码,则可以破坏该实现方案(即,可以提取密码密钥)。图2示出了对回合的输入(即,对S盒
的输入)进行固定编码的白盒AES实现方案。如图所示,通过fi对16个输入字节中的每个进
行编码,通过gi对输出字节中的每个进行编码。
定方式实现这种拆分。此外,在本发明的一些实施例中,在白盒实现方案的2个单独回合中,
如果回合的输入字节xi是相同的,则可以将输入字节xi拆分为不同的n字节元组(tuples)。
这意味着,对于观察该元组中的各个单独字节的攻击者,应用拆分功能不是对xi进行固定
编码。这样防止所有已知攻击。
对于i<n,ci依赖于输入状态。备选地,在另一实施例中, 其中通过
函数β(可能多达常数加法)给定函数h,(α,β)∈V,函数β与乘法系数 ci相关联。这
得到了h依赖于基于输入状态的计算的示例。
函数合并,这是由于S盒通常与其它函数合并。下文将参考多种实施例来对此进行详细描
述。
表格来破坏一些函数的具体实现方案。应认识到:可以对表格进行多种其它拆分,得到查找
表的不同函数和不同尺寸。此外,当下文所述的本发明实施例使用基于表格的AES白盒实现
方案时,可以根据所述实施例执行其它暗号和密码函数。此外,可以使用其它类型的白盒实
现方案(例如,有限状态机实现方案),代替基于表格的实现方案。
110,SubBytes 120、ShiftRows 130和MixColumns 140。可以将前两个运算(AddRoundKey和
SubBytes)合并为单个T盒运算。也就是说,可以针对输入字节xi,j将字节与字节函数Ti,j定
义为 其中ki,j是基于AES密钥的16字节回合密钥。令yi,j是Ti,j的输
出。ShiftRows运算仅是对输出字节yi,j的索引进行重新编号。为了便于解释,该运算在本描
述中可以省略,但是可以合并到实现Ti,j的查找表,或实现为状态矩阵的独立运算。在
MixColumns步骤中 ,对于一些常数MCl,r经过GF(28) 中的 代数式
来根据4个输出字节
y1,j、y2,j、y3,j和y4,j,计算回合的输出字节zi,j。
盒的序数i,j,l理解为“回合的输入字节i,j对回合的输出字节l,j的贡献”。可以实现异或
以便对两个半字节(即,4比特值)中的每个进行运算,作为查找表,从而减小异或表格的大
小。因此,可以实现Q盒以便产生输出半字节,使得减小表格的大小。因此,已将对AES回合的
每个输出字节zl,j的计算描述为查找表网络。图3示出了用于计算字节z2,3的单个输出半字
节的查找表网络。
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。
对所有查找表的输入和输出进行编码。Chow 1描述了此方法。这意味着:将查找表与对输出
进行编码的编码函数以及与对输入进行解码的解码函数合并。选择进行编码,使得对一个
表格的输出编码与在下一表格中假定的输入编码相匹配。图4针对第一回合描述了图3的实
现方案的一部分。在该示例中,不对该回合的输入进行编码,以便符合AES,但是对该回合的
输出进行编码。在下一回合中处理输出编码。也就是说,与第一回合不同,第二回合(以及后
续回合)假定对输入进行编码。备选地,第一回合可以接收编码输入。然后,必须将该输入编
码应用于所述包含白盒实现方案的软件程序中的某处。类似地,根据所述输出是否符合
AES,最后回合可以包括或可以不包括输出编码。应注意,在所获得的白盒实现方案中,查找
表和中间值都是混乱的。
422、424、426的输出进行编码。XOR 430与XOR 330相对应。XOR 430的输入使用f1-1和f2-1对
输入进行解码。然后,通过函数f5对XOR 430的输出进行编码。按照类似方式,XOR 432、434
具有所示的输入解码和输出编码。使用f7对输出z2,3进行编码。尽管对查找表的输入和输出
进行编码提供抵抗简单攻击的一部分保护,然而攻击者可能使用Billet所述的技术来在
AES实现方案的回合之间的边界处攻击这种白盒AES实现方案。
变为混乱表格网络。此外,本描述关注于如何实现第一回合以便提供对第二回合的拆分输
入。本领域技术人员应认识到:可以通过将这些想法扩展到所有回合来完成白盒实现方案。
αi(x)和βi(y)与其它函数合并,这是由于S盒通常与其它函数合并。
其他字节的计算。这样指定没有混乱步骤的第一回合的白盒实现方案。第一回合的输入是
要被加密或解密的输入状态x。将x的半字节输入到Q盒中,以便产生y值的半字节。然后可以
将由Q盒输出的多种y值组合为输出字节z,所述输出字节z是针对该回合的输出状态的一部
分。由于第一回合的输出字节z变为第二回合的输入字节,因此y值可以用于选择将α应用于
输出字节z的输入拆分函数α。如下所述,可以在计算字节z的最终值的同时,合并这些拆分
函数。然后,在第二回合中,使用以和第一回合相似方式选择的另一拆分函数集合α来拆分
所述输出,以便产生第三回合的拆分输入。这样重复直到最后回合的前一回合。由拆分函数
α的集合对输入进行的这种拆分保护AES处理的多个回合之间的接合处不受Billet攻击。
一些ck∈GF(28)\{0}意味着 其中
从yi,3,2的第一半字节获得ci,其中。对于i=4,令
因此,
这样导致α’s依赖于输入状态,因此α’s随着输入状态改变而改变。在图3的网络中,在Q盒之
后插入对值 的计算。图5示出了如何针对i=j≠4计算
所述输入x1,3是查找表520和522的输入。查找表520和522对半字节(即,字节的上
4比特和下4比特)进行运算,以便产生输出y1,3,2的半字节。将y1,3,2的半字节输入到通过将半字节组成并乘以c1来计算 的表格530中,其中
查找表524中。y1,3,2的半字节输入到表格630、632以及随后的XOR 640,以便计算 的
第一半字节。类似地运行对第二半字节的计算。
馈送到所示的XOR 730、732,以便通过 来计算与c4一一对应的 然
后,以与图6计算 相似的方式将该 值用于计算
地,可以计算输出字节 此外,可以类似地产生所有输出字节
的四个拆分版本。这些被拆分的输出字节变为第二回合的拆分输入。此外,还可
以如图4所示混乱查找表和网络。
根据本发明的实施例,S盒应具有例如α2,3,k(x)作为输入。由于S盒在函数f的前面,输入变为x=f(z2,3)。为了确保将α2,3,kоf(z2,3)输入到S盒中,在回合1中(或在前一回合中)计算f-1οα2,3,kοf(z2,3),而非α2,3,k(z2,3),其中在这种情况下,函数f执行密钥添加函数。
结果进行异或,来获得原始的S盒输出。因此,第二回合与第一回合的区别之处仅在于将输
入字节的数目增加了n倍,即,接收到16n个输入字节。这意味着为了计算第二字节的单个输
出字节,不将四个Q盒输出字节相加,而是将4n个Q盒输出字节相加。文中,可以将这4n个输
出字节划分为四个n元组,其中每个n元组经由关系 表示原始S盒的输出。如
上所述,出于以下原因,通常不对总和为h(y)的n个值β1(y),β2(y),...,βn(y)进行明确异
或。
果以不同顺序对4n个值进行异或和/或在对这些值进行异或的同时对下一回合应用拆分函
数αi,则上述不再可能出现,在这种情况下,不再显式地对β1(y),β2(y),...,βn(y)进行异或。
MC,计算值MC·βj(y),而不是βj(y)。
行计算以便进一步强化对Billet攻击的对抗性。这在下文进一步对此进行描述,其中n=2,
Γ∈W的选择依赖于四个输入字节。
8
α2,3,2(z2,3),其中仿射函数α2,3,k选择来自W并且不是固定的。对于一些ck∈GF(2)\{0}作为来自W的要素意味着 其中
以将这种实施例扩展为其它n值。此外,还可以使用用于确定ci值的其它计算,以便令将xi拆
分为n个值会根据输入而改变。将这种计算合并在由查找表实现的多个函数中,以便混乱正
在执行的函数。
式,来组合所拆分S盒的输出。此外,可以在同时待审的题为“SPLITTING S-BOXES IN A
WHITE-BOX IMPLEMENTATION TO RESIST ATTACKS”的美国专利申请No.TBD,Attorney
Docket Number81629146US01中找到对使用拆分S盒的描述,其通过全文引用合并与此。此
外,可以将密码函数使用的任何非线性映射函数实现为单个函数或可以组成以产生与所述
非线性函数具有相同最终输出的函数组。
计算机程序介质的示例包括存储器设备、光学存储设备、集成电路、服务器、线上软件等。
时计算机可读介质上。
序介质上。在这种方法中,计算机程序可以包括计算机程序代码,用于当在计算机上运行所
述计算机程序时执行所述方法的所有步骤。计算机程序包括在非暂时性计算机可读介质
上。
全面执行白盒实现方案。
件时,所述组合成为单个具体机器。
而易见的是可以在本发明的精神和范围内进行多种变形和修改。因此,上述公开、描述和附
图仅是说明目的,而不是以任何方式限制本发明,本发明仅由权利要求来限定。