基于gpu的改进sm4并行加解密通信方法
【技术领域】
[0001] 本发明信息安全技术领域,具体设及一种基于GPU的改进SM4并行加解密通信方 法。
【背景技术】
[0002] 随着物联网的发展,越来越多的企业需要将生产及运营的设备接入网络并对其进 行远程实时监控,大量的设备监控数据往往需要通过互联网传输到远处的监控中屯、。但是, 由于互联网的开放性,一旦监控数据被截获并被加 W用进行破坏活动,其带来的损失是非 常严重的。因而,对传输的监控信息进行加密,同时又保证监控数据传输的实时性是非常重 要的。
[0003] SM4(原SMS4)是国家密码局公布的分组密码算法,其分组长度和密钥长度均为 128bit。加解密算法都采用32轮非线性迭代结构。算法的加密变换主要包含异或运算和合 成变换Τ(.)运算。其中,Τ(.)是由非线性变换τ和线性变换L复合而成,即Τ( . )=L(T (·))。非线性变换τ由4个并行的S盒变换构成,S盒是固定8比特输入8比特输出的变换;线 性变换L主要包含异或运算和左移运算。解密算法与加密算法的结构相同,只是轮密钥的使 用顺序相反,即解密算法使用的轮密钥是加密算法使用的轮密钥的逆序。加密算法中用到 的轮密钥是由加密密钥MK通过轮密钥扩展算法生成。该扩展算法基本结构与加解密算法相 同,同样包含异或运算和合成置换运算。只是其中的线性变换的形式略有不同。由于SM4算 法在计算过程中增加非线性变换,理论上具有较高的安全性。
[0004] GPU(Gra地ics Processing Unit,图形处理单元)可W理解为可编程的显卡,最早 在计算机中用于图形图像的处理,最近几年GPU还应用到大规模的并行计算领域。由于单块 GPU通常具有上百的核屯、运算单元,相比同价位的CPU而言,GPU所拥有的数百倍于CPU的核 屯、运算单元的数量。GPU非常适合于执行可高度并行化的密集型计算任务,使用GPU执行运 些任务,往往能提升数倍的性能。
[0005] 虽然利用SM4加密算法可W增加数据传输的安全性。但是,由于SM4加密算法的公 开性,轮密钥生成算法与加密算法结构类似,都导致其安全性降低。因此,如何提高数据在 用SM4加密时的安全性成为一个亟待解决的问题。另外,在数据量较大的情况下,使用SM4串 行加密的耗时成为了实时传输的瓶颈。如何利用GPU编程提高SM4算法的加密速度也远程监 控数据传输过程中是需要解决的问题。
【发明内容】
[0006] 本发明针对SM4串行加密算法在面向监控数据动态采集传输过程中所存在的安全 性和实时性的问题,提供一种基于GPU的改进SM4并行加解密通信方法。
[0007] -种基于GPU的改进SM4并行加解密通信方法,包括发送方的加密过程和接收方的 解密过程,其中
[000引所述发送方的加密过程为:
[0009] 步骤1、利用AES-128密钥扩展法生成SM4加密法所需的32个扩展密钥;
[0010] 步骤2、随机生成1个32位的随机数G;
[0011] 步骤3、利用GPU进行并行SM4加密,即将明文数据分成每块12化k特的数据分组,一 个数据分组的加密任务分配给一个的GPU线程;每个GPU线程再进行32轮循环迭代加密处 理,在每轮循环迭代加密处理时,根据迭代的轮数确定随机数G的对应位置,并根据该位置 上的随机数G的数值选取加密轮函数;
[0012] 步骤4、将各个GPU线程加密输出的数据按分块的前后顺序进行组合后形成密文数 据;
[OOU]步骤5、密文数据从GPU的全局设备存储器内传到内存中,整个力幡过程完成;
[0014]所述接收方的解密过程为:
[001引步骤6、利用GPU进行并行SM4解密,即将密文数据分成每块128比特的数据分组,每 个GPU线程解密一个数据分组;每个GPU线程再进行32轮循环迭代解密处理,在进行32轮循 环迭代解密处理时,根据随机数G对应位置上的取值,动态选择解密的轮函数;
[0016] 步骤7、将各个GPU线程解密输出的数据按分块的前后顺序进行组合后获得明文数 据;
[0017] 步骤8、明文数据从GPU的全局设备存储器内传到内存中,整个解密过程完成。
[0018] 步骤1中,扩展密钥只需要产生一次,该扩展密钥在各个GPU线程加密过程中循环 使用。
[0019] 步骤1中所述密钥扩展的具体过程为:
[0020] 步骤1. 1、将128bit的初始密钥按照列顺序组成4个32bit的字,分别记为W0-W3;
[0021] 步骤1.2、在初始密钥的基础上依次新增31个字wj,每一个新增的字wj的值依赖于 Wj-l和Wj-4,即:
[0022] 当j除W4的余数不为0时,Wj=Wj-4? wj-i;
[0023] 当 j除 W4的余数为0时,Wj=Wj-4? g(wj-i);
[0024] 步骤1.3、利用上述产生的字生成SM4加密算法中用到的扩展密钥,即扩展密钥rki = Wj+4。
[00巧]上述j = 4,5,6......35;i = 0,l,...,31 ;g〇是一个复杂函数。
[0026] 步骤1.2中,复杂函数g()的计算过程如下:
[0027] 步骤1.2.1、将字*"从字节为单位,排列表示成曲,81瓜,83]的形式,并将化〇,81, B2,B3]循环左移一个字节,变换成化,B2,B3,B0];
[0028] 步骤1.2.2、利用465的5盒对输入字的每个字节进行字节替换,变为[8'1,8'2,8'3, B'o];
[0029] 步骤1.2.3、将产生的结果[8'1,8'2,8'3,8'0]与轮常数进行异或输出;
[0030] 上述j = 4,5,6……35。
[0031 ]步骤3中,根据迭代的轮数确定随机数G对应位置,该随机数G的每一位作为每一轮 迭代时动态选择的依据,即:
[0032] 当随机数G的对应的位置的数值为加寸,选择使用:Xi+4 = F(Xi,Xi+i,Xi+2,Xi+3,rki) = Xi ? T(Xi+i ? Xi+2 ? Xi+3 ? rki)作为轮函数;
[0033] 当随机数G的对应的位置的数值为1时,选择使用:Xi+4 = F(Xi,Xi+i,Xi+2,Xi+3,rki) = Xi ? T(Xi+i巧i+2巧i+日? rki)作为轮函数;
[0034] 其中,Xi-Xi+3表示第i轮输入的明文数据,F〇表示轮函数,TO表示合成变换函数, rk康示第i轮使用的扩展密钥,i = 0,1,…,31。
[0035] 步骤3中,每个GPU线程进行加密处理的过程为:
[0036] 步骤3.1、根据本次迭代次数,确定随机数G的对应位置,并根据该位置上的明文数 据的数值选取轮函数;即当随机数G的对应的位置的明文数据的值为0时,计算Xi + l ? Xi+2 ? Xi+3 ?地;当随机数G的对应的位置的明文数据的值为1时,计算Xi+i+Xi却Xi+3 ? rki;并将计 算结果按照字节顺序排列保存为数据块A=(ao,ai,a2,a3);
[0037] 步骤3.2、利用AES的S盒对上一步的数据块A=(曰日,ai,曰2,曰3)进行字节替换,输出 按字节顺序保存为数据块B = (bo,bi,b2,b3),即(bo,bi,b2,b3) = τ(Α) = (Sbox(ao),Sbox (ai),訊ox(a2),Sbox(a3));
[003引步骤3.3、将上一步的B进行线性变换,输出保存为数据块C,则:C = L(B) = (B<?0) ? (B?<2) ? (B?<10) ? (B?<18) ? (B?<24)
[0039] 步骤3.4、将上一步生成的数据块C和本次的输入明文数据进行异或运算,计算Xi+4 =Xi Θ C ; Xi+l,Xi+2,Xi+3,Xi+4作为下一次轮循环的输入;
[0040] 步骤3.5、重复上述3.3.1~3.3.4的操作,将上一轮移位后数据作为新一轮输入, 重复32次;经过32循环迭代加密后,输出密文数据为(Yq,Yl,Y2,Y3 ) = (X35,X34,X33,X32 );
[0041] 式中,Xi-Xi+3表示第i轮输入的明文数据,rki表示第i轮使用的扩展密钥,τ()表示 置换变换函数,SboxO为S盒变换函数,L0表示线性变换函数。
[0042] 步骤6中,进行并行SM4解密时,根据迭代的轮数确定随机数G对应位置,该随机数G 的每一位作为每一轮迭代时动态选择的依据,即:
[00创当随机数G的对应的位置的数值为加寸,选择使用:Xi+4 = F(Xi,Xi+i,Xi+2,Xi+3,rk3i-i) =Xi ? T(Xi+i ? Xi+2 ? Xi+3 ? rk3i-i)作为轮函数;
[0044] 当随机数G的对应的位置的数值为1时,选择使用:Xi+4 = F(Xi,Xi+i,Xi+2,Xi+3,rk3i-i) =Xi ? T(Xi+i巧i+2巧i+3 ? rk3i-i)作为轮函数;
[0045] 其中,Xi-Xi+3表示第i轮输入的密文数据,F〇表示轮函数,TO表示合成变换函数, 地1-康示第i轮使用的扩展密钥,i = 0,1,…,31。
[0046] 与现有技术相比,本发明的改进SM4算法比原算法主要改进之处有W下几点:
[0047] (1)利用AES-128密钥扩展算法生成SM4加密算法需要的32个轮密钥;新的密钥扩 展算法,具有透明、简洁、实现速度快等优势。
[0048] (2)替换SM4加密算法中的S盒,使用高强度的AES-128的S盒;有助于抵抗传统的线 性密码分析、差分密码分析、代数攻击及最新的中间相遇攻击等,提高了加密算法的安全 性。
[0049] (3)将加解密函数中32迭代所用轮函数由"固定函数"改为"动态选择",随机数G的 每一位作为每一轮迭代时动态选择的依据;
[0050] (4)在SM4加密时采用电码本模式巧CB),具有简单实用、便于并行计算和误差不会 被传递等优点;
[0051] (5)结合AES-128密钥扩展算法与SM4加密算法的新算法,其实现速度更快、安全性 得到提高。
[0052] (6)利用GPU的并行计算能力,将串行SM4加密算法改进成并行加密的形式,对实时 数据进行并行加密;采用GPU并行加密方案实现对大数据环境下动态数据流的加解密,提高 了加密速度,从而保证数据流正常的传输,降低处理延迟。
【附图说明】
[0053] 图1为基于GPU的改进SM4并行加密通信系统加解密示意图;
[0054] 图2为基于GPU的改进SM4并行加密方法流程图;
[0055] 图3为AES密钥扩展算法示意图;
[0056] 图4为g()函数示意图;
[0057] 图5为基于动态选择的SM4轮函数流程图。
【具体实施方式】
[0058] -种基于GPU的改进SM4并行加密通信系统,如图1所示,系统包括位于发送方的并 行加密模块与位于接收方的并行解密模块。其中加密模块负责将发送方提交的动态明文数 据流,利用基于GPU的改进SM4并行加密算法进行加密;解密模块负责将接收方接收的密文 数据,利用基于GPU的改进SM4并行解密算法进行解密。
[0059] 基于GPU的改进SM4并行加解密通信方法,包括发送方的加密过程和接收方的解密 过程。
[0060] 所述发送方的加密过程,如图2所示,包括如下步骤:
[0061] 步骤1、利用基于AES-128密钥扩展算法进行SM4轮密钥扩展,如图3