基于改进AES 和SM2/3 的隐私数据保护技术研究*

2022-06-16 12:45李永忠
计算机与数字工程 2022年5期
关键词:密文哈希加密算法

吕 炜 李永忠

(江苏科技大学计算机学院 镇江 212003)

1 引言

随着互联网技术的不断发展,网络中的数据在传输时面临了诸多安全威胁。若未对信道中传输的隐私数据未进行任何加密保护,则数据很可能面临被篡改的风险或导致数据泄露等问题[1~2]。在实际应用时,采用单一密码体制存在密钥管理困难或加解密效果不理想等问题,因此混合加密方案兼顾了安全性与效率而受到业内广泛关注[3~4]。刘见龙[5]采用SM2 结合SM4 的混合加密方案,实现了一个WIFI 热点管理系统,提高了WIFI 热点的安全性。王红珍[6]采用ECC 结合AES的混合加密方案,设计了一个加密系统。肖振久[7]改进了AES 和RSA算法,将两者结合设计了一个基于混合加密的数字签名系统。

本文提一种改进的AES 算法结合国密SM2 算法对网络中的数据进行加密传输。利用改进AES算法加密速率快和国密SM2 算法便于管理密钥的优势,对需要传输的数据进行安全高效的加密。同时加入SM3算法,用于数据完整性检验。

2 算法概述

2.1 AES算法

美国于2001 年提出了AES 对称加密加法,该算法的密钥有128 位、192 位和256 位可选,其具有加密灵活、适应能力强和加解密效率高等特点[8~9]。

AES算法的加密流程如图1所示。

图1 AES加密流程

2.2 国密SM2算法

我国国密SM系列算法中的SM2算法是基于国外的ECC 椭圆曲线密码体制研发的,但是SM2 算法的各方面性能要优于ECC算法,其加解密步骤如下[10~11]。

1)接收方选择一条椭圆曲线Ep(a,b),并在曲线上选择一个基点G,生成密钥对(dB,PB),将公钥发送给消息发送方;

2)发送方根据接收到的公钥PB将明文M 编码到Ep(a,b)上,将密文传输给接收方;

3)接收方收到密文数据包后使用私钥dB解密得明文M'。

2.3 国密SM3哈希算法

SM3算法是国密系列算法中唯一的杂凑算法,要求输入的明文信息长度l<264bit,然后将消息经过信息填充、迭代过程、消息扩展和压缩函数等处理,最终输出一个固定长度为256bit的杂凑值[12]。

3 基于改进AES 与SM2 的混合加密算法

3.1 改进的AES算法

1)AES密钥扩展改进

传统AES 加密算法10 轮密钥扩展过程为,将输入的初始128bit 放到一个4*4 的状态矩阵中,然后判断,若i 的值不为整除4,则W[i]=W[i-4]⊕W[i-1];若i 的值能整除4,则W[i]=W[i-4]⊕T(W[i-1]),最后扩展成44列的扩展密钥数组。由此可知W[i]的结果都由W[i-1]和W[i-4]运算得到,虽然这种密钥扩展方式高效但是存在一个缺陷,若是攻击者获取到其中一轮的密钥,就能根据逆变换倒推出前面的密钥以及推导出后面的密钥,从而获取到剩余的所有密钥[13]。

文献[7]中提供了一种密钥扩展的改进方法,原理如图2所示。

图2 改进的AES密钥扩展

初始密钥不变,依旧按照原来的密钥扩展算法进行轮密钥扩展。但在接下来的十轮密钥扩展中,第一轮密钥扩展时使用一个与初始密钥无关的新密钥填入其中,后面的密钥扩展过程依据AES固有的扩展算法在新密钥的基础上进行扩展,这样能大大提高密钥的安全性。

2)AES列混合操作改进

在传统AES算法中,列混合变换是通过固定矩阵M 相乘来实现的,分为解密时的正向列混合变换,如式(1)所示,以及解密时的逆向列混合变换,如式(2)所示。

文献[7]中提供了一种列混合操作的改进方法,使固定矩阵M的逆矩阵与原矩阵相等,如式(3)所示,则解密时的列混合变换就跟加密一样只需要进行2 次乘法运算和4 次异或运算,能大大提高解密速度。

3.2 SM2算法加解密

1)加密过程[14]

输入:长度为klen的明文M,公钥PB;

(1)产生随机整数k,k∈[1,n-1] ;

(2)求C1=[k]G=(x1,y1),将C1转化为比特串;

(3)求S=[h]PB,判断若S 为无穷远点,则报错;

(4)求(x2,y2)=[k]PB;

(5)求t=KDF(x2||y2,klen),若t 全为0,则返回(1);

(6)求C2=M⊕t;

(7)求C3=Hash(x2||M||y2);

输出密文C=C1||C2||C3。

2)解密过程[15]

输入:密文比特串C,私钥dB;

(1)提取出C1,将C1转化成椭圆曲线上一点;

(2)求S=[h]C1,判断若S为无穷远点,则报错;

(3)求(x2,y2)=[dB]C1;

(4)求t=KDF(x2||y2,klen),若t 全为0,则返回(1);

(5)提取C2,求M'=C2⊕t;

(6)求u=Hash(x2||M'||y2),若u=C3进入下一步,否则报错;

输出明文M'。

3.3 SM3哈希值计算

对消息M计算其哈希值过程如下:

其中V(0)表示长度为256bit 的初始值IV。CF表示压缩函数。B(i)表示消息M填充后的分组。V(n)表示最后计算出的哈希值。

3.4 改进AES与SM2混合加密算法

本文提出的基于改进的AES 与SM2 混合加密算法整体流程如图3所示。

图3 算法整体流程

使用改进的AES算法对隐私数据进行加密,对于加解密过程中使用的对称密钥,使用国密SM2算法进行加密保护。此外,利用国密SM3哈希算法对需要传输数据进行哈希值的计算,在接收端对数据进行完整性验证,验证通过则接受此消息,否则拒绝接收。本文的混合加密算法步骤如下:

1)消息接收端产生非对称密钥对,将公钥publicKey发送给消息发送端;

2)发送端产生对称密钥Key,对明文M 进行哈希值计算得Z,用Key 对拼合的消息M//Z 加密,用公钥publicKey 对密钥Key 加密,将密文数据包发送给接收端;

3)接收端用私钥praviteKey 解密密钥密文得Key,使用密钥解密得M'//Z,对M'进行哈希值计算得Z'。

4)判断Z是否等于Z',若Z=Z',则输出明文M',否则拒接接受此消息。

4 加密解密实现及测试

实现环境为Windows7 系统,处理器CPU 为Interl Core i5-2450m,2.50HG,运行内存6G,编程语言为Java语言,工具为ecplice。

4.1 实验结果

图4 是数据集,利用程序生成的模拟身份隐私信息其中包含姓名、电话、地址和身份证号等。

图4 隐私数据

图5 是对文本隐私数据进行对称加密后输出的密文,由图可知加密成功。

图5 密文

图6是导出的双对称密钥明文。

图6 双对称密钥

图7 是经过SM2 加密的对称密钥密文,由图可知加密成功。

图7 密钥密文

4.2 算法性能测试

测试运行环境为Windows7 系统,处理器CPU为Interl Core i5-2450m,2.50HG,编程语言为JAVA语言,工具为ecplice。

本文混合加密算法使用两个128bit 长度的对称密钥对60MB 以内的文本隐私数据进行加解密时间测试,另外对SM2+AES 和RSA+AES 两种混合加密算法也进行了测试,测试结果如表1所示。

表1 加解密耗时对比

图8和图9分别是三种混合加密算法加密和解密耗时的折线对比图。

图8 加密耗时对比

图9 解密耗时对比

由图可知三种混合加密算法中,加密时,RSA+AES算法加密速度相对快一点,考虑到RSA密钥对生成时间慢,所以优势不明显。SM2+AES 和SM2+改进的AES算法加密速度几乎相等,且SM2密钥对生成时间快。解密时,SM2+改进的AES 算法的解密速度最快,其次是RSA+AES 算法,最后是SM2+AES 算法,因此本文提出的混合加密算法性能较好。

此外改进的AES算法,使用的两个不相关的对称密钥,攻击者需要平均进行2255次尝试才能破解密钥,以当前的计算能力想破解密钥起码需要数亿年的时间。且使用SM2 非对称密码算法对AES 算法的密钥进行加密传输,能够很好地保证对称密钥的分配安全。

综上,本文的混合加密算法在提高密钥安全性的同时提升了解密速度。

5 结语

本文提出了一个基于改进的AES 算法和SM2算法的混合加密算法,用以保障数据的传输安全。通过实验分析对比了三种混合加密算法的加解密性能,得出本文提出的混合加密算法性能更好,安全性更高。但在网络中的隐私数据安全所要面对的挑战远不止于此,形势依然很严峻。而该混合加密算法从研究到应用还有很长的一段路要走,因此今后会继续深入的研究,确保改进的混合加密算法能更好地保证隐私数据的传输安全。

猜你喜欢
密文哈希加密算法
哈希值处理 功能全面更易用
Windows哈希值处理不犯难
文件哈希值处理一条龙
一种新的密文策略的属性基加密方案研究
密码分类和攻击类型
一种抗攻击的网络加密算法研究
教育云平台的敏感信息保护技术研究
条件型非对称跨加密系统的代理重加密方案
一种改进的加密算法在空调群控系统中的研究与实现
基于Jave的AES加密算法的实现