一种国家密码标准算法sm4的安全白盒实现方法和装置的制造方法

文档序号:9914246阅读:2390来源:国知局
一种国家密码标准算法sm4的安全白盒实现方法和装置的制造方法
【技术领域】
[0001] 本发明属于信息安全技术领域,具体涉及计算终端密码系统的保护,尤其涉及数 字产权系统中密码组件的防护。可用于防止恶意用户非法获取其控制的计算终端中运行的 密码算法的密钥,防止恶意用户非法传播其非法获取的密钥并从中获利。
【背景技术】
[0002] 随着软件、硬件、网络等技术的发展,越来越多的软件发布到个人计算机、平板电 脑、手机等计算终端运行,各种应用层出不穷,如电子邮件、数字媒体播放器、数字内容阅读 器等等。然而,这些应用软件往往运行在不可信的计算终端,恶意用户可以通过合法购买或 攻击破解等方式控制这个终端,并利用各种逆向工程技术、工具来控制终端上软件执行的 整个过程,包括获取所有的中间计算结果、设置程序断点等。在这种不可信的计算终端中, 恶意用户可以很容易地非法获取软件中密码模块的密钥,并通过非法传播这些密钥而获 利。
[0003] 目前,很多服务提供商采用白盒密码技术来保护密码算法的密钥,防止密钥在恶 意用户控制的不安全终端中被非法窃取。主流白盒密码技术着眼于设计密码算法的安全实 现,通过将密钥嵌入到查找表中,并使用随机选取的编码对查找表进行保护,从而实现保护 密钥的目的。目前,Irdeto公司提出了AES和DES的白盒实现方案,上海交通大学的来学嘉等 人也提出了AES的白盒防护方案。然而,这些实现方案都有共同的弱点:虽然局部地破解单 个查找表是非常困难的,但将一轮的查找表组合起来会大大地降低破解难度。这是因为,将 查找表组合起来会抵消掉嵌入在查找表中的大的线性编码,从而降低了破解线性编码的难 度。
[0004] SM4是我国国家密码管理局公布的商用分组密码标准,在国内市场上得到广泛的 应用,且不可避免地应用于各种恶意环境。因此,针对这些恶意环境对SM4密码算法的密钥 进行保护是十分必要的。上海交通大学的来学嘉等人曾提出了 SM4的白盒实现方案,但他们 的方案仍不能避免上面分析的弱点。
[0005] 总之,目前多数白盒密码方案由于上面分析的弱点已被攻破,并且目前还没有SM4 的安全白盒实现。这对SM4这种国家商用密码标准在国内市场的应用带来了不利的影响。

【发明内容】

[0006] 针对SM4密码算法的上述需求,本发明提供了一种安全的白盒SM4实现方法和装 置。本方法能够防止通过组合查找表来抵消大的线性编码,从而防止查找表编码破解难度 的降低,达到防护目的。
[0007] 本发明的SM4密码算法的安全白盒实现方法中,白盒SM4加密算法与白盒SM4解密 算法的结构完全相同,使用的查找表结构也是相同的,唯一的不同是使用密钥的顺序。下面 介绍通用于白盒SM4加密和白盒SM4解密的查找表构造过程和对应的白盒密码算法。
[0008] 在本发明的SM4密码算法的安全白盒实现方法中,共使用两种查找表:TTC和TRT。 其中,TTC查找表用于将本轮输入数据的32比特仿射编码转为4个8比特仿射编码(或一个新 的32比特仿射编码),TRT查找表用于实现SM4算法的轮变换。
[0009] TTC查找表的结构定义为
[0011] 其中:
[0012] l.l<r<32是当前的轮数,0幻_<3。
[0013] 2.0是函数复合符号,| |是连接符号,= β
[0014] 3.Lr+3是随机选取的32比特仿射变换Ar+3的线性部分。b r+3Aj和br+^j是随机选取
[0015] 4.同理,随机选取的32比特仿射变换式w_i: 是I;丨,的第j个 32 X 8子块,br+i-1; j是32比特数值,& +,-丨=4?部 ? …-μ,
[0016] 5. 是随机选取的8比特仿射变换Ar,k, m的线性部分。 (^1^8 比特数值,l = (i-l) X2+( jmod2),c, =cr姐…?cr/f5",是 Ar,k,m 的常数部分。
[0017] TRT查找表的结构定义为
[0019] 其中:
[0020] 1 .kr是SM4密码算法第r轮的32比特轮密钥,kr,j是kr的第j个字节。
[0021] 2. S是SM4密码算法轮函数中的8比特S盒。
[0022] 3.Μ是SM4密码算法轮函数中的32比特线性变换,Mj是Μ的第j个32X8子块。
[0023] 本发明的白盒SM4密码算法共有32轮,每轮需要16个TTC查找表和4个TRT查找表。 第r轮以4个32比特数值Xr-l,Xr,Xr+l,Xr+2作为输入,输出一个32比特数值Xr+3,其计算步骤如 下:
[0027] 其中:
[0028] 1.^〇和%1都是32比特数值,%〇,」和&,1,」分别是&,()和&, 1的第」个字节。
[0029] 2.xr+i-1;j 是 xr+i-!的第 j 个字节。
[0030] 本发明的白盒SM4密码算法以(χο,Χ1,χ2, X3)为输入,经过32轮变换后,以(χ35,X34, X33,X32)为输出。
[0031] 本发明还提供采用上述方法的安全通信装置,包括服务器设备和终端设备,所述 服务器设备包括查找表生成器、密钥生成器和仿射变换生成器,所述终端设备包括安全功 能模块和白盒SM4算法模块;所述仿射变换生成器用于随机生成可逆仿射变换,所述密钥生 成器用于根据终端设备的唯一性标识为其生成SM4算法的密钥;所述查找表生成器用于为 终端设备生成白盒SM4解密查找表和白盒SM4加密查找表,并将该两个查找表发布到终端设 备的白盒SM4算法模块,所述白盒SM4算法模块用于使用白盒SM4解密查找表和白盒SM4加密 查找表对数据进行加密或解密。
[0032] 进一步地,所述服务器设备还包括随机数发生器、标准SM4算法模块、编码单元、解 码单元,所述终端设备还包括编码单元、解码单元。
[0033] 和现有技术相比,本发明具有如下优势:
[0034] 1.安全性:在本发明设计的白盒SM4密码算法中,在每一轮的变换中,Sr,o和 Sr,J9 最终异或是嵌入在TRT查找表中进行的,异或之后输入数据的32比特才彻底抵消掉,而TRT 查找表输出时又有新的32比特仿射编码保护。因此,通过查找表组合的方式是不能将32比 特仿射编码彻底抵消掉的,编码破解难度也就无法降低,从而保证了算法的安全性。相比已 有的已经被破解的白盒SM4密码算法,本发明在安全性上无疑是具有优势的。
[0035] 2.效率:由于现有的白盒SM4密码算法有大量的矩阵乘法操作,而本算法是完全的 查表+异或操作,因此,在执行速度上,本发明更具优势。即使是和其他的白盒实现方法相 比,本发明也具有明显的执行速度优势。
【附图说明】
[0036]图1是本发明白盒SM4密码算法的查找表发布流程图;
[0037]图2是本发明白盒SM4密码算法所用的服务器设备和终端设备必需的安全组件。
【具体实施方式】
[0038]下面将详细描述本发明的【具体实施方式】和特征,但不以任何方式限制本发明的范 围。
[0039]如图1所示,在安全的服务器端,有三个部件:查找表生成器(TG)、密钥生成器 (KG)、仿射变换生成器(AG)。
[0040]针对每个设备(不安全终端),服务器的AG随机生成8对32比特可逆仿射变换A32, A3:2 , A33 , ^33* * ^34 > ^34 5 ^35 , ^35* ? ' s Bl ) A ' ? B2 , ' 7 ^ ^ s ^33 > ^34 ? > B〇 ) Bl ) B2 , B3 与该设备的安全功能模块(如视频播放器、音乐播放器、电子书阅读器等等)捆绑在一起。该 设备还应该安装白盒SM4密码算法模块。然后,该设备可交付用户使用。在这里,32比特随机 可逆仿射变换可根据设备MAC地址、用户身份标识等设备相关的唯一性标识来生成。
[0041 ] A32,A33,A34, A35,尽Λ尽1,41,1留在服务器使用,用于生成白盒SM4密码算法的查 找表。这8对可逆仿射变换应减少更新频率或根本不更新。
[0042]在服务器与设备进行数据通信之前,服务器需要为每个设备生成白盒SM4解密查 找表和白盒SM4加密查找表(这些查找表也可以事先预置在设备中)。这些白盒SM4查找表也 是可以更新的。
[0043]首先,服务器的AG根据每个设备的唯一性标识为其随机生成8对32比特可逆仿射 变换 A〇,41, Α!,4-1,如,4 'A3,41,Β32,纪,B33,g,B34,%*,B 35,这 8 对可逆仿射变换是可 更新的。其中六^六:力^^二以义丄以留在服务器使用洲于实现数据的编码/解码功 能。
[0044] 服务器的KG根据每个设备的唯一性标识为其生成SM4算法的密钥k。然后,服务器 的TG利用k和4Λ為' 木1,木\ ,A33,A34,A35为该设备生成白盒SM4解密查找表(包括前文所 述的TTC查找表和TRT查找表),并将白盒SM4解密查找表发布到该设备的白盒SM4密码算法 模块。
[0045] 服务器的KG根据每个设备的唯一性标识为其生成SM4算法的密钥V。然后,服务器 的TG使用V和氏1, S,1,41,沒Λ B32,B33,B34,B35为该设备生成白盒SM4加密查找表(包括前文 所述的TTC查找表和TRT查找表),并将白盒SM4加密查找表发布到该设备的白盒SM4密码算 法模块。k和V可以是相同的密钥。
[0046] 服务器与设备之间进行数据通信,分为服务器向设备发送数据和设备向服务器发 送数据两种情况。
[0047] 服务器向设备发送数据的过程如下:
[0048] 1.服务器将数据划分为若干128比特的分组。
[0049] 2.服务器使用标准SM4算法和密钥k对每个分组进行加密。
[0050] 3.服务器使用Αο,Αι,A2,A3对密文进行编码,得到(xq,XI,X2,X3)。
[0051] 4.服务器将若干经过编码的分组(xo,X1,X2,X3)发送给设备。
[0052] 5.设备收到数据后,白盒SM4密码算法模块使用白盒SM4解密查找表对其进行解 密,得至丨J ( X35,X34,X33,X32 )。
[0053 ] 6 .设备将(X35,X34,X33,X32 )发送给该设备的安全功能模块。
[0
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1