实现白盒密码的方法和装置与流程

文档序号:28483882发布日期:2022-01-14 23:30阅读:2371来源:国知局
实现白盒密码的方法和装置与流程

1.本公开涉及白盒安全实现和可以应用于sm4编码方案的相关白盒密码。


背景技术:

2.术语“密码学”指代在第三方存在的情况下用于安全通信的技术,第三方有时被称为“对手”或“攻击者”。可以构建防止第三方或公众读取私人消息的各种协议。密码学的应用包括电子商务、基于芯片的支付卡、数字货币、计算机密码和内容流。现代密码算法是围绕计算难度假设设计的,这使得这样的算法在实践中难以被任何对手破解。从理论上讲,打破这样的系统是可能的,但是为了阻止潜在的攻击者,这样做优选是不切实际的。
3.密码学的“黑盒”攻击模型基于如下前提:对手无法访问密码的内部操作及其使用的密钥,对手只能访问其输入和输出。该模型是大多数现代密码算法的开发和设计的基础,包括数据加密标准(des)、高级加密标准(aes)和许多其他算法。然而,黑盒攻击模型的该前提,即攻击者无法访问设备的内部操作,不适用于许多现实世界的安全问题。
[0004]“白盒”攻击模型假设对手具有更高的可见性和控制水平。白盒攻击模型可以应用在许多更现代的实现中,在这些实现中,攻击者诸如在可能具有调试工具或安装了恶意软件的移动电话或个人计算机中可以具有对操作的完整可见性和控制。这提出了一个挑战,即开发对策以防止对手提取信息(诸如密码密钥)或影响操作从而在白盒模型中产生不期望的结果。因此,研究对白盒模型中的颠覆的对策变得越来越重要。
[0005]“white-box cryptography and an aes implementation”(chow, s., eisen, p., johnson, h.和van oorschot, p.c.)密码学中所选领域国际研讨会,第250-270页(springer,柏林,海德堡,2002年8月)描述了对白盒攻击的对策,并且从而使学术界普遍认识到白盒场景中的对策可能是可行的思想。白盒aes实现的一般思想是将秘密密钥隐藏在aes的s-box中,将aes分解成几个步骤,并插入秘密随机双射来混淆每个步骤。为了保持实现在功能上等同于aes,插入的部分最终将被取消。然而,aes白盒实现已经被成功攻击。2004年,billet、gilbert和ech-chatbi提出了一种对aes白盒实现的高效攻击(称为bge攻击)。bge攻击提取了工作因子为2
30
的嵌入式aes密钥,并且所述攻击因此是一种实用的攻击。
[0006]
许多专用的白盒实现是已知的。一些在白盒攻击环境中实现标准密码,并且一些人专注于各种非标准密码的设计,所述非标准密码预期在白盒攻击下是安全的。这样的密码被称为“白盒密码”。然而,针对白盒实现的密码分析研究已经取得了重大进展。一些攻击是白盒模型独有的,因为它们需要详细的结构来进行分析。这包括代数攻击,诸如bge攻击。附加地,在某些场景下,“提升攻击”是可能的,因为确实需要确定密钥,因为提升的算法可以用作预言机,并且随机性的源可以被覆盖。
[0007]
诸如dpa(差分功率分析)之类的“灰盒”攻击已经以dca(差分计算分析)的名义被重新利用,并且可以重新评估在白盒场景中的有效性。例如,简单共享方案的优势是,当没有噪声时,共享因子(share)数量的功率丢失,从而增加了必须收集用于分析的轨迹数量,
白盒场景中就是这样的情况。保留了这些对策的一些益处。任何设计良好的共享方案、包括用于对抗由于硬件电子脉冲(glitch)引起的泄漏的阈值方案都提供了一些优势,因为通过隐藏直接相关性使得标识信息泄漏变得更复杂。
[0008]
由于其流行性,aes一直是分析和对策的焦点,并且文献中已经公布和分析了aes的几种白盒实现。sm4是较新的标准化密码,并且在白盒环境中没有得到太多分析。sm4是无线lan wapi的中国国家标准中使用的块密码(block cipher)。sm4算法由lu shuwang发明,并于2016年8月成为中国国家标准(gb/t 32907-2016)。sm4密码具有大小为128位的块(block)。它使用8位s-box,并且密钥大小为128位。唯一使用的操作是32位按位异或、32位循环移位和s-box应用。一个数据的块的加密或解密由32轮组成。每一轮更新内部状态的四分之一(即32位)。非线性密钥调度用于产生轮密钥。解密使用与加密相同的轮密钥,只是它们的顺序相反。sm4的圆形结构与aes具有几个相似之处,包括由有限域中的取逆确定的8位s-box,然后是在四个s-box的输出之间进行的线性扩散。
[0009]
第一个白盒sm4实现由xiao, y.、lai, x.的“white-box cryptography and a white-box implementation of the sms4 algorithm”(上海交通大学:中国上海,2009年,第24-34页)提出。xiao等人的密码在类似bge攻击的攻击中被证明是不安全的。另一个白盒sm4实现方案是在shi, y.、wei, w.和he, z.的“lightweight white-box symmetric encryption algorithm against node capture for wsns”(sensors, 15(5), pp.11928-11952, 2015)中提出的。该实现使用对偶密码的概念和随机选择的非奇异矩阵来构造sm4的功能等同的白盒加密算法。lin, tingting等人的“security evaluation and improvement of a white-box sms4 implementation based on affine equivalence algorithm”(the computer journal 61.12: 1783-1790, 2018)对该实现进行了分析,并描述了可以如何使用仿射等价算法来提取密钥。


技术实现要素:

[0010]
本文描述的实现是可以应用于sm4的白盒实现。以一种新颖的方式应用技术来创建抵抗白盒攻击的固定密钥sm4的实际实现。所述技术包括使用通过s-box结构使其可能的复合域,用4位中间变量重新表述整个密码以减小总表大小,专用查找表,以及应用阈值方案,其中在生成共享因子时使用处理状态的其他部分来生成共享因子。本文描述的白盒sm4实现抵抗已知的白盒攻击,诸如仿射等价攻击、类bge攻击和类dca攻击。
[0011]
一种实现包括一种用于在软件应用中实现白盒块密码以创建与软件应用具有相同功能的安全软件应用的方法、装置或计算机可读介质,该方法包括通过以下各项创建块密码的实现:在原始有限域表示和复合域表示之间应用同构,并使用该同构将密码重构为仅使用复合域元素的操作,包括异或、线性变换和s-box;将原始s-box分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分中;在s-box的非线性步骤中,利用复合域表示中的算法实现原始有限域表示中的取逆;应用m个输入共享因子和n个输出共享因子的初始阈值实现来为s-box的非线性步骤生成查找表;将进一步的阈值实现应用于密码的不同步骤以生成查找表;和将块密码应用于软件应用的至少一部分,以创建安全软件应用,并且由此增加执
行安全软件应用的计算平台的安全性。
附图说明
[0012]
下面将结合附图描述本发明的实现,其中:图1是根据公开的实现的关于一轮sm4块密码的框图;图2是根据所公开的实现的sm4中的逐字节操作示例的框图;图3是根据所公开的实现的由阈值实现生成的查找表的框图;图4是根据所公开的实现的第一轮的一个分支的处理的框图;图5是根据所公开的实现的用于掩码生成的查找表的框图;图6是基于图5的查找表的掩码生成的框图;图7是根据所公开的实现的计算步骤的框图;图8是根据所公开的实现的计算步骤的框图;图9是根据所公开的实现的计算步骤的框图;图10是根据所公开的实现的计算步骤的框图;图11是根据所公开的实现的用于创建t-box的过程的框图;图12是根据所公开的实现的查找表的框图;图13是根据所公开的实现的第二轮的第一分支的计算的框图;图14是根据所公开的实现的掩码消除数据流的框图;图15是根据所公开的实现的第三轮的第一分支的计算的框图;图16是根据所公开的实现的第三轮的第一分支的加法操作的计算的框图;图17是根据所公开的实现的第四轮的第一分支的计算的框图;图18是根据所公开的实现的第四轮的第一分支的加法操作的计算的框图;图19是根据所公开的实现的改变的查找表的框图;图20是根据所公开的实现的密文恢复计算的框图;图21是根据所公开的实现的“类型ii表”的框图;图22是根据所公开的实现的“类型iii 表”的框图;图23是根据所公开的实现的“类型iv表”的框图;图24是根据所公开的实现的针对单个列的组合查找表的框图;图25是根据所公开的实现的简化的t-box的框图;图26是根据所公开的实现与8
×
16表组合的4个t-box的框图;图27是根据所公开的实现用于执行功能的架构的示意图;图28是根据所公开的实现的高级方法的流程图。
具体实施方式
[0013]
在描述公开的实现的新颖方面之前,将更详细地描述sm4。sm4被选择用在有线认证和隐私基础设施(wapi)标准中,在中国获得官方授权,并且在为wlan产品提供数据机密性方面发挥重要作用。sm4具有128位密钥大小、128位块大小和32轮不平衡feistel网络结构。令构。令是明文,是轮密钥。然
11),2011年第7届国际会议,第1-6页,ieee)。诸如乘法和乘法逆的用于表示操作的已知方法的细节可以在canright, d.的2005年8月的“a very compact s-box for aes”(密码硬件和嵌入式系统国际研讨会,第441-455页,springer,柏林,海德堡,2011年7月)中找到。
[0018]
阈值实现是众所周知的侧信道攻击对策,如由nikova, s., rechberger, c. and rijmen, v. december的“threshold implementations against side-channel attacks and glitches”(国际信息和通信安全会议,第529-545页,springer,柏林,海德堡。2006年12月)教导的。这样的攻击基于秘密共享和多方计算。在公开的实现中,使用了阈值系统,该系统需要n个函数fi的集合来计算函数f的输出。n个函数fi的输出的集合被称为输出共享因子。
[0019]
令标示一个函数。当当时,变量a被拆分成n个共享因子ai。安全阈值实现可以满足三个特性:
○ꢀ
特性1(不完整性)。每个函数都独立于输入变量中的每个的至少一个共享因子享因子享因子
○ꢀ
特性2(正确性)。共享因子的总和给出了期望的输出。。
○ꢀ
特性3(一致性)。如果与a一致的输入共享因子是均匀分布的,并且对于b,c,

,是相似的,则与z一致的输出共享因子必须是均匀分布的。
[0020]
输入共享因子和输出共享因子的数量影响阈值实现的特性。例如,如果在针对每个输入x、y和z有三个共享因子的情况下应用阈值实现,并且对于函数有三个输出共享因子,则不保证一致性。如何为此类函数创建阈值实现的细节是众所周知的,并且本文不进一步讨论。例如,更多的细节和构造可以在以下各项中找到:bilgin b、nikova s、nikov v、rijmen v、st
ü
tz g的“threshold implementations of all 3
×
3 and 4
×
4 s-boxes”(加密硬件和嵌入式系统国际研讨会,9,第76-91页,springer,柏林,海德堡,2012年9月);nikova, s.、rechberger, c. 和rijmen, v.的12月“threshold implementations against side-channel attacks and glitches”(信息和通信安全国际会议,第529-545页,springer,柏林,海德堡,2006年12月);nikova, s.、rijmen, v.和schl
ä
ffer, m.的“secure hardware implementation of non-linear functions in the presence of glitches”(信息安全和密码学国际会议,第218-234页,springer,柏林,海德堡,2008年12月)。所公开的实现使用ti来指示阈值实现。
[0021]
在详细描述所公开的实现之前,下面讨论几种技术。chow, s.、eisen, p.、johnson, h. 和van oorschot, p.c.的“white-box cryptography and an aes implementation”(密码学中所选领域国际研讨会,第250-270页,springer,柏林,海德堡,
2002年8月)教导了s-box的代数结构可以表示为:其中并且,上的的基础不可约多项式是:。
[0022]
然而,申请人发现这与sm4的s-box表不匹配。因此,矩阵a2和不可约多项式以一种新颖的方式被修改。验证示出,以下参数和不可约多项式将正确生成sm4 s-box的查找表:box的查找表:并且,对于的的基础不可约多项式是:。
[0023]
可以注意到,多项式仅仅是互反多项式(相反的系数),并且c1、a2和c2是相同的,但是矩阵a2实质上是不同的。
[0024]
在每轮中,并行应用四个8位s-box,并且线性变换l可以表述为8
×
8矩阵组成的块
矩阵。这允许整个sm4操作以用字节范围的操作来表述。32
×
32线性变换l表述为8
×
8矩阵的4
×
4块矩阵:。
[0025]
每轮中的32位输入/输出和轮密钥表示为四个字节的级联,各自为:。
[0026]
轮密钥可以嵌入s-box中:。每轮中的输出的一个字节可以计算如下:其中,。
[0027]
例如,如果密钥字节固定在s-box中,则可以利用图2中200所示的过程来计算x4的第一个字节。在图2中最终异或之前的并行四个逐字节操作序列(分别为201、202、203和204)在本文被称为四个“分支”。
[0028]
中的乘法可以利用上的4次不可约多项式来定义。仅三个不可约的4次多项式存在,其中任何一个都可以用于定义:。
[0029]
域乘法
“”
被定义为:。
[0030]
阈值实现的输入共享因子和输出共享因子的数量可能不同。当m个输入共享因子和n个输出共享因子的阈值实现应用于函数(标示为)时,以下步骤生成查找表:1.当生成表时,将输入x的每个可能值随机拆分成m个共享因子。输入x的共享因子的集合是,其中它们中的m-1个是从伪随机数生成器(prng)生成的随机值(例如),并且最后一个共享因子由并且最后一个共享因子由计算。与
y、z等相同。注意,输入共享因子仅在表的生成中使用,但是查找表的输入是x、y、z

。2.给定函数fi,利用以下各项计算n个输出共享因子:。
[0031]
如上所述,假设存在这样的阈值实现,并且ti用于指示应用了阈值实现。
[0032]
可以对所有可能的输入x、y、z

重复步骤1和2,以获得对应的输出共享因子。图3中所示的查找表是基于输入及其对应的输出共享因子生成的。本文用虚线框标示查找表。
[0033]
为了提供对诸如仿射等价攻击、bge攻击和类dca攻击之类的现有白盒攻击的抵抗,所公开的实现可以基于以下规则来创建:1.应用掩码的方式(至少在s-box上)不应该是仿射的。2.掩码可以是数据相关的。3.算法的结构应该尽可能模糊。4.白盒sm4实现中和标准sm4中每个步骤的输出之间的相关性不能用于应用分析。5.每个掩码可以取决于倒置树结构中较早的掩码。
[0034]
在所公开的实现中,每个中间变量被拆分成四位半字节。在将sm4中的操作(诸如异或、移位和s-box)划分成几个步骤的情况下,将处理4位数据以及掩码,并且将生成对应的查找表。阈值实现用于扩展一些查找表的输出空间,并且同时产生掩码。对s-box中的4位数据应用同构映射来模糊内部操作。整个加密仅由查找表组成,不需要其他计算。
[0035]
在第一轮中,描述了实现图2的第一分支的示例。其他分支可以以类似的方式实现。如图4中所示,选择每个输入的4个共享因子和3个输出共享因子的阈值实现,并将其应用于生成图5中所示的查找表500的函数。每个输入划分成两个四位半字节:。使用查找表,掩码从和生成,并且掩码从和生成,其中其中。数据流在图6中的600处描绘,在这两种情况下使用相同的表。
[0036]
为了计算和,加法是通过几个步骤完成的。在每个步骤中,取消一些掩码并添加新的掩码。首先,函数用于生成查找表。使用查找表,我们得到和,其中r和i与之前相同。该数据流在图7中的700处描述,其中相同的表被使用两次。注意,表的生成不特定于变量,但是数据流是利用该示例中使用的特定变量示出的。
[0037]
然后,选择每个输入的2个共享因子和2个输出共享因子()的阈值实现,并将其应用于函数,以生成的查找表。使用查找表,我们从得到,并且从得到,其中r和i与之前相
同。该数据流在图8中的800处示出。接下来,选择每个输入的4个共享因子和3个输出共享因子()的阈值实现,并将其应用于函数,以生成的查找表。使用查找表,我们从得到,并且从得到,其中r和i与之前相同。该数据流在图9中的900处示出。因此,我们从左侧数据流得到出。因此,我们从左侧数据流得到并且从右侧数据流得到并且从右侧数据流得到。
[0038]
如以上指出的,固定密钥s-box的代数结构可以表示为:。
[0039]
我们首先计算
“”

[0040]
令其中是的4
×
4块矩阵,是4
×
1向量。
[0041]
乘法
“”
可以表示为:。
[0042]
可以为函数生成六个查找表:。
[0043]
图10的数据流1000示出了该计算。从左手边的数据流中,我们得到:,和
,其中的子表达式为,并且可以视为掩码;的子表达式的子表达式是,并且可以看作是掩码。
[0044]
标准s-box的剩余部分可以计算为:。
[0045]
现在可以使用图11中所示的数据流1100创建t-box。掩码数据和是t-box的输入。为了混淆t-box的输入和输出之间的关系,利用阈值实现创建了查找表。然而,为具有8位输入的逆函数构造均匀的阈值共享因子是不切实际的,因此使用同构将8位操作映射到所选复合域的4位操作。当取逆完成时,将用于将值映射回到域。利用以下步骤,为所有可能的输入和对应的输出生成查找表t-box。在图11的步骤1中,通过计算和来抵消来自和的掩码。我们得到的y。在图11的步骤2中,计算。在图11的步骤3中,在复合域中计算。然后同构映射t被用于将标准8位值变换成复合域中的两个4位值。申请人已经实现了寻找t的程序,并且实验示出存在120个2次不可约多项式,并且对于每个,存在128个从到的映射。因此,对于t存在15360个候选。每个t都是8
×
8可逆矩阵。选取一个,并在图11的步骤4中计算。在图11的步骤5中,和被计算为的逆。由于选取了多项式基和,的逆由下式给出:,其中y是的一个根。我们将每个输入的4个共享因子和3个输出共享因子的阈值实现()应用于函数和,它们的输出共享因子分别为和。在图11的步骤6中,令,其中是的4
×
4块矩阵,是的前4位半字节的三个共享因子,是的后4位半字节的三个共享因子。计算和,其中。该矩阵用于将复合域的两个4位值变换回标准的8位值;和分别是
sm4的仿射变换的线性和常数部分。结果是我们从第一分支获得了六个掩码值。利用上面小节中使用的相同方法,针对剩余三个分支我们得到()。为了计算,我们将与每个分支的输出相乘并将它们相加到一起:与每个分支的输出相乘并将它们相加到一起:其中,,是4
×
4块矩阵。
[0046]
通过将每个矩阵的上半部分相加,我们得到的掩码值。我们可以构建16个查找表来实现该步骤。该数据流在图12中的1200处描绘,其中。
[0047]
可以验证的是。通过将每个矩阵的下半部分相加,结果是的掩码值。我们构建另外16个查找表来计算。该数据流也在图12中描绘,除了j=1。人们可以验证。
[0048]
令和其中是4
×
4块矩阵,。
[0049]
的其他三个掩码字节以类似的方式生成。此时,将构建16个查找表来分别计算
和。数据流与图12中描绘的相同,除了对于的。
[0050]
人们可以验证、、、、、和。
[0051]
对于第二轮,也使用该轮的第一分支,如图13中的1300所示,作为示例。在该分支中,除了加法操作之外,所有的步骤都与第一轮的第一个分支相同。由于中,除了加法操作之外,所有的步骤都与第一轮的第一个分支相同。由于是掩码数据,因此在加法操作中应该取消掩码。查找表仅在步骤3中改变,即使用4个输入共享因子和3个输出共享因子的阈值实现()来计算和。该数据流在图14中的1400处描绘。该轮的结果是:。
[0052]
图15在1500图示了第三轮的第一分支的数据流。该轮的第一个分支如下,并且如图16中的1600所示。与第二轮类似,除了加法操作外,所有步骤与第一轮的第一个分支相同。由于和是掩码数据,因此可以在该部分中取消掩码。我们仅在步骤2中改变查找表,即使用2个输入共享因子和2个输出共享因子的阈值实现()来计算和。
[0053]
该轮的结果是:。
[0054]
第五轮的第一分支的处理如图17的1700所示。与第二轮和第三轮类似,除了加法操作之外,所有步骤都与第一轮的第一个分支相同。如在图18的1800处所示,在此重复使用在前几轮中生成的查找表。该轮的结果是:

[0055]
对于剩余的轮次,除了在计算和的剩余三个字节中之外,数据流与第四轮相同。因为在第五轮中,所有输入都是掩码数据。第五部分中的二输入查找表:计算可以改变为三输入查找表,以取消附加的掩码,并且其他查找表保持相同。第一个半字节用作示例,并且图19指示了1900处改变的表和数据流。对于其他半字节,可以用类似的方式改变查找表。
[0056]
在最后一轮之后,得到了掩码密文,其中可以划分为八个4位半字节:半字节:,其中、、、、、、、、。
[0057]
现在可以为八个函数构建八个查找表,如图20的2000所示:。
[0058]
结果是以下密文:。
[0059]
任何白盒实现的一个重要准则是性能。下面评估上述实现的性能。作为第一步骤,通过以下算法评估查找表的存储成本。
[0060]
对于:在部分i中:生成掩码,所有分支和轮次仅存在一个查找表。存储成本为位。在部分ii中:加法操作,第一轮中存在三个查找表。在第二轮和第三轮中,分别生成一个附加的查找表。所有轮次和分支共享五个查找表。存储成本为位。在部分iii计算中,存在六个查找表用于所有轮次和所有分支。存储成本为位。在部分iv创建t-box,因为每一轮的轮密钥不同,所以必须在每一轮和每一个分支中生成t-box。存储成本为位。在部分v:计算x
40
和部分vi:x4的剩余三个字节中,对于一个分支存在32个查找表。四轮之后,必须添加八个查找表。
[0061]
存储成本为。如上面指出的,该实现具有276个查找表。后两部分具有最高的存储要求。在部分iv中:创建t-box,为每个密钥字节生成t-box,以将密钥保存在算法的唯一非线性组件中。为了降低存储要求,可以将密钥字节从t-box中移除,并嵌入到小的查找表中。影响是针对所有回合和所有分支将仅存在一个t-box。降低存储需求的另一种方法是使用矩阵操作,而不是部分v:计算x
40
和部分vi:x4的剩余三个字节中的查找表。这两种方法都以安全性换取性能。上述存储成本分析是在pc(cpu e3-1240 v5 @ 3.50ghz,内存:16gb)上进行的。实验示出,该实现的吞吐量为119kb/s。
[0062]
不言而喻,块密码的首要标准是安全性。感兴趣的三种主要密码系统攻击模型包括黑盒攻击、灰盒攻击和白盒攻击。黑盒是常规的攻击模型,其中对手仅具有对密码系统的输入和输出的访问权。作为官方的加密标准,sm4在抵抗诸如差分和线性攻击之类的经典块密码攻击方面具有良好的性能。
[0063]“灰盒”是一种攻击模型,其中对手可以使用泄露的信息来部署侧信道密码分析。不同的泄露信息可以导致不同的灰盒攻击。dca(差分计算分析)是针对密码系统白盒实现的强有力的侧信道攻击。dca成功的主要原因是期望值(来自标准密码规范)和掩码中间值(来自白盒实现)之间不可忽略的相关性,这是由白盒实现中使用的编码中的线性不平衡引起的。所公开的实现是抗dca的,因为当输入均匀分布时,来自阈值实现的输出均匀分布,因此sm4和其白盒实现之间的数据相关性被削弱。
[0064]
在白盒攻击模型中,实际的对称加密实现通常无法找到严格的安全证明。代替将白盒安全性降低到解决计算上不可行的数学问题,白盒实现的安全性是通过检查它对已知攻击是否安全来评估的。下面评估所公开的实现对抗两种众所周知的白盒攻击(bge攻击和仿射等价攻击)的安全性。
[0065]
除了灰盒攻击之外,针对白盒实现的最早的攻击是bge攻击。该攻击最初是为了恢复chow等人的白盒aes实现的轮密钥而构建的。白盒aes实现包括几个表述(外部输入和输出编码除外):1.通过利用t-box替换每个s-box,将轮密钥嵌入s-box中:
。2.表示混合列的32
×
32矩阵mc被拆分成四个32
×
8矩阵。3.为了保护,在之前插入8
×
8仿射“混合”双射,并且在之后插入32
ꢀ×ꢀ
32仿射双射mb。同时,级联非线性置换被用于解码/编码4位输入/输出,并被称为输入解码/输出编码。结果得到的查找表被命名为类型ii表,并在图21中的2100处示出。为了消除mb的影响,查找表负责取逆。mb的逆被预先乘以适当的四个混合双射的逆,并被拆分成四个子映射。该查找表被命名为类型iii表,并在图22中的2200处示出。5.来自一列的四个字节与前面的步骤并行处理,并与异或操作相组合,并且称为类型iv表,如图23中2300所示。
[0066]
bge攻击过程总结如下。
[0067]
阶段1。将四个字节的查找表组合成一列一轮。mb和相邻内部编码的影响被抵消。其他编码被保留并标示为和(图24中的2400):阶段2。移除编码的非线性部分(与相同)。阶段3。通过函数和之间的仿射关系检索编码的仿射部分(与相同)。阶段4。在仿射恢复过程期间,通过使用s-box的逆来抵消s-box在函数中的影响,从而获得依赖于密钥的仿射映射。这通过使能实现密钥恢复。阶段5。使用相同的方法恢复轮的轮密钥字节。
[0068]
bge攻击的两个基石是阶段2和阶段3。阶段3的关键点是和之间仿射关系的存在。为了对所公开的实现应用类似bge的攻击,检查两个阶段。由于在实现中不使用非线性编码,因此可以跳过阶段2。对于阶段3,应该考虑构造函数集。函数是依赖于密钥的,因此必须包括t-box。
[0069]
考虑到t-box本身。和都不能表示为输入的函数。t-box 2500的输入和输出如图25中所示。在不失一般性的情况下,通过删除一些下标来简化图25的t-box 2500。和是用和计算的,它们是来自阈值实现的输出。基于阈值实现的特性1,每个输出都独立于输入变量中的每个的至少一个共享因子。换句话说,输入与和中的每一个之间不存在函数关系。用于计算和的函数使用作为输入,这意味着或中的每一个不具有与输入的函数关系。因此,以t-box结尾的查找表的任何组合都不能用于构造具有仿射关系的函数集。
[0070]
t-box后面的查找表是上面的部分v中生成的两组16个表。为了抵消阈值实现的影响,我们可以将四个t-box与来自四个分支的个表相组合,如图26中的2600所示。可以获得函数集,并且容易证明该集的函数具有仿射关系。然而,注意到,是12位输入,这与的输入大小不匹配。因此,s-box在函数上的影响不能被抵消,并且在阶段4中攻击失败。
[0071]
现在看仿射等价攻击抗性。对于两个s-box 和,仿射等价算法的目的是测试是否存在两个可逆的矩阵和,以及两个n维向量和,使得。在biryukov, a.、de canniere, c.、braeken, a.等人的“a toolbox for cryptanalysis: linear and affine equivalence algorithms”(密码学进展-欧洲密码2003,第33-50页,spring,柏林海德堡,2003年5月)中,提出了解决仿射等价问题的几种算法。通常,非线性变换或仿射映射被用来模糊s-box。由于bge攻击中的阶段2可以用于移除变换的非线性部分并保留仿射部分,因此模糊的s-box(在本文称为t-box)可以近似等同于原始s-box。因此,仿射等价算法是对大多数常规白盒实现的高效攻击。然而,这样的仿射等价攻击不适用于所公开的实现,因为t-box的输入和输出的大小分别是12位和24位,这与标准s-box的大小不同,并且矩阵和将是非正方形的。
[0072]
常规的白盒实现将sm4拆分成几个步骤,并使用仿射变换来保护每个步骤。然而,上述公开的实现采用了不同的方法。s-box拆分为两个步骤,从而模糊了s-box的边界,并有助于在密钥嵌入s-box中时保护密钥。其次,中的元素和操作被映射到复合域,这增加了标识原始操作的难度。第三,使用了阈值实现技术,削弱了白盒实现和标准sm4之间的相关性。这些技术共同保护sm4免受类bge攻击、仿射等价攻击和dca攻击。下面的表1比较了公开的实现和常规的实现。虽然所公开的实现具有较大的存储需求,但是它在抵抗流行的白盒攻击方面具有良好的性能。
[0073]
表1.wb-sm4实现之间的比较* xiao, y.; lai, x.的“white-box cryptography and a white-box implementation of the sms4 algorithm”;上海交通大学:中国上海,2009年,第24-34页。** shi, y.、wei, w.和he, z.的“lightweight white-box symmetric encryption algorithm against node capture for wsns”,传感器,15(5),第11928-11952页,2015年。
[0074]
所公开的实现基于复合域和阈值实现。该实现在4位半字节上工作,而不是在字节上工作。阈值实现使得掩码值的分布均匀,并且独立于对应的未掩码值。较小的复合域中的操作减小了查找表的大小。所公开的实现抵抗常规的白盒攻击,诸如仿射等价攻击、类bge攻击和类dca攻击。
[0075]
如图27中所示,上述实现可以由计算机或计算系统2700完成。计算系统27可以包括计算设备2712,计算设备2712具有一个或多个处理器2714和存储指令的一个或多个存储器,当指令被处理器2714执行时,完成所公开的计算和存储。计算机系统可以包括服务器、客户端计算平台和/或外部资源2720,它们可以经由一个或多个电子通信链路可操作地链接。例如,这样的电子通信链路可以至少部分地经由诸如互联网和/或其他网络的网络来建立。作为非限制性示例,计算系统可以包括一个或多个远程计算设备2718,包括台式计算机、膝上型计算机、手持计算机、平板计算平台、上网本、智能手机、游戏控制台、服务器和/或其他计算平台。计算设备2712可以包括通信线路或端口,以使能实现与网络和/或其他计算平台的信息交换。存储器可以包括电子存储设备,该电子存储设备可以包括以电子方式存储信息的非暂时性存储介质。电子存储的电子存储介质可以包括与计算设备2712集成(即,基本上不可移动)提供的系统存储装置和/或经由例如端口(例如,usb端口、火线端口等)或驱动器(例如,磁盘驱动器等)可移除地连接到计算设备2712的可移除存储中的一个或这两者。电子存储装置可以包括一个或多个光学可读存储介质(例如,光盘等)、磁可读存储介质(例如磁带、磁硬盘驱动器、软盘驱动器等)、基于电荷的存储介质(例如,eeprom、ram等)、固态存储介质(例如闪存驱动器等)和/或其他电子可读存储介质。电子存储装置可以包括一个或多个虚拟存储资源(例如,云存储、虚拟专用网络和/或其他虚拟存储资源)。电子存储装置可以存储软件算法、由(一个或多个)处理器确定的信息、从计算设备2712接收的信息、所描述的数据结构和/或处理器2714用来执行如本文描述的功能的其他信息和机器可读指令2716。
[0076]
(一个或多个)处理器可以包括数字处理器、模拟处理器、设计用于处理信息的数字电路、设计用于处理信息的模拟电路、状态机和/或用于以电子方式处理信息的其他机制中的一个或多个。(一个或多个)处理器可以被配置成通过软件;硬件;固件;软件、硬件和/或固件的某种组合;和/或用于配置(一个或多个)处理器上的处理能力的其他机制执行模块。如本文使用的,术语“模块”可以指代执行归因于该模块的特定功能的任何组件或组件集。这可以包括在执行处理器可读指令期间的一个或多个物理处理器2714、处理器可读指令、电路、硬件、存储介质或任何其他组件。
[0077]
图28图示了根据所公开的实现的用于在软件应用中实现白盒块密码以创建具有与软件应用相同功能的安全软件应用的高级方法。该过程可以由诸如图27中所示的系统的任何计算平台完成。在2802,在原始有限域表示和复合域表示之间应用同构,并且该同构用于将密码重构为仅使用复合域元素的操作,包括异或、线性变换和s-box。在2804,原始的s-box被分解成几个代数步骤,并将这些步骤中的一些合并到密码的其他部分。在2806,在s-box的非线性步骤中,用复合域表示中的算法实现原始有限域表示中的取逆。在2808,应用m个输入共享因子和n个输出共享因子的阈值实现来为s-box的非线性步骤生成查找表。在2810,进一步的阈值实现被应用于所得到的密码的不同步骤,以生成查找表。在2812,将所得到的块密码应用于软件应用的至少一部分,以创建安全软件应用,并且从而增加执行安
全软件应用的计算平台的安全性。
[0078]
尽管已经基于当前被认为是最实用和优选的实现方式,出于说明的目的详细描述了本技术,但是应当理解,这样的细节仅仅是为了该目的,并且该技术不限于所公开的实现,而是相反,旨在覆盖在所附权利要求的精神和范围内的修改和等同布置。例如,应当理解,本技术考虑到,在可能的程度上,任何实现的一个或多个特征可以与任何其他实现的一个或多个特征相组合。此外,可以从实现中添加或移除特征以对应于特定应用。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1