方 轶,丛林虎,邓建球
(海军航空大学,山东 烟台 264001)
在信息化作战以及大数据、机器学习等信息技术的背景下,可以通过武器装备的数据进行分析、处理,在武器装备的全寿命周期中会产生大量的数据,经过加工、整理和分析后,这些数据可以用来判断武器装备的状态、性能,反映武器装备的履历,通过多组同一类装备的数据可以对该型武器装备的性能进行较为全面的评估。在部队信息化建设中,数据加密是一个至关重要的建设环节。如何保证数据在存储、传输时的安全性与可靠性是信息化建设中的一项基本内容,也是保证信息化战争中数据安全的重要方法。
密码学与数据加密技术发展至今,已经发展出分组密码[1]、Hash函数[2]、公钥密码[3]、数字签名[4]、PKI[5]等数据加密技术,以及高级加密标准AES[6]、SHA-256算法[7]、RSA密码体制[8]、ElGamal算法[9]等安全性高且实用的加密技术,能够较好地保证数据存储与传输的安全性、数据的完整性与可验证性。然而各种加密算法有着自身的特点,而且算法的安全性与算法的复杂度是互相制约的,因此对于应用的实际情况,可以选择安全性优先或效率优先,由此便产生了混合加密技术。
混合加密技术是结合了多种加密体制、加密算法的一种新型加密技术[10-11],可以根据需要选择主要的加密体制,并在安全性或复杂性中采用另一种加密体制或加密算法进行改进。
针对信息化建设中对信息安全提出的较高标准与要求,以及部队武器装备数据的涉密性质,提出了一种基于国密SM2与SM4算法的混合加密方案,相比单一加密方式提高了数据加密的安全性。
SM2椭圆曲线公钥密码算法是我国自主研发的具有自主知识产权的公钥密码算法标准,主要包括3部分:数字签名算法、密钥交换协议和公钥加密算法[12]。已有学者对SM2算法的安全性进行了分析,证明了其安全性和复杂度相当于或略优于国际上同类的椭圆曲线公钥密码算法[13]。
1) 系统参数
SM2算法的系统参数是有限域上的椭圆曲线,包括:有限域Fq的规模q;定义椭圆曲线E(Fq)方程的两个元素a,b∈Fq;E(Fq)上的基点G=(xG,yG)(G≠0),其中xG和yG是Fq上的2个元素;G的阶n及其他可选项。
2) 密钥派生函数
密钥派生函数设为KDF(Z,klen),其中Z为需要加密的数据,klen表示需要获得密钥的长度。
第一步ct=0x00000001
Hai=Hv(Z‖ct)
ct++
end for
3) 加密与解密算法
SM2加密过程如图1所示,解密过程如图2所示。
图1 SM2加密算法流程图Fig.1 SM2 encryption algorithm flow
图2 SM2解密算法流程图Fig.2 SM2 decryption algorithm flow
分组密码是现代密码学的一个重要分支,其设计理念来源于Shannon在1949年发表的论文[14]。2000年美国国家标准技术研究院将Rijindael算法推选为高级加密标准,欧洲也于2003年将Camellia算法、MISTY算法、SHACAL-2算法以及AES共同作为欧洲分组密码标准。
SM4分组密码算法是由我国自主研发的分组密码,于2016年成为国家标准[15]。已有研究证明,SM4算法相比于AES、MISTY等算法具有更高的安全冗余度[16]。SM4算法由加解密算法和密钥扩展算法组成,均采用32轮非线性迭代结构。
1) 密钥及密钥参量
SM4算法的密钥长度为128 b,表示为MK=(MK0,MK1,MK2,MK3),其中每一组MKi的长度为32 b。
轮密钥用于加解密过程,表示为(rk0,rk1,…,rk31),其中每一组rki的长度为32 b。轮密钥由加密密钥根据密钥扩展算法组成。
系统参数FK=(FK0,FK1,FK2,FK3)和固定参数CK=(CK0,CK1,CK2,CK3)用于密钥扩展算法,其中每一组FKi和CKi的长度都为32 b。
2) 加解密算法
3) 密钥扩展算法
图3 轮函数示意图Fig.3 Schematic diagram of wheel function
图4 SM4加密算法流程图Fig.4 SM4 decryption algorithm flow
轮密钥根据以下规则生成:
rki=Ki+4=Ki⊕T′(Ki+1⊕Ki+2⊕Ki+3⊕CKi)
(1)
式(1)中,K0=MK0⊕FK0,K1=MK1⊕FK1,K2=MK2⊕FK2,K3=MK3⊕FK3。
系统参数FK和固定参数CK的取值在具体标准中已经给出了推荐值或规定值。
对武器装备数据而言,安全性是首要的考虑因素。若发生武器装备在战场上由于未能正常工作而被敌军回收,为防止敌军对我军武器装备数据进行处理以及分析,对数据进行高安全强度格外重要。在以安全性为首的原则下,设计混合加密方案时,会较少地考虑效率因素。
在加密技术中,一般密钥长度更长、加密重数越多,安全性就越高,同时加密方案的时间复杂度也会大大增加。因此在设计混合加密方案时,虽然主要原则是提高安全性,但同时也需要兼顾方案的时间复杂度。
在进行加密时,通常都会涉及到密钥传输的过程,而在传输时一般认为环境是不安全的。因此尽可能地减少密钥传输,并且采用密钥数据完整性验证机制,能够进一步提高加密方案的安全性。
最理想混合加密方案的时间复杂度应该与这两种加密算法各自的时间复杂度相差不多,应在一个合理的区间,同时安全性必须比单一加密算法高。
SM2算法是公钥加密算法,加密时使用公开的公钥加密,解密时解密者使用计算得到的私钥解密,还原得到密文;SM4算法是分组加密算法,其加解密速度比SM2算法快,但其加解密使用的密钥是同一个,而且解密过程仅仅是加密过程的逆序,但SM4算法的好处是不需要进行密钥传输。
根据SM2算法与SM4算法各自的特点,SM2算法更安全,因此对数据的加密采用SM2算法,同时SM2算法在密钥传输过程中存在着密钥被截获的可能性,因此在密钥传输时,对密钥使用SM4算法进行加密。假设数据发送方为A,接收方为B,进行加密的消息是M,具体过程如下:
方案做出如下假设:发送方A与接收方B之间的数据传输是不安全的,A和B在进行加密前已经约定好采用何种Hash函数(建议采用国密SM3密码杂凑算法),已经约定好SM4算法的加密密钥MK。
1) 首先接收方B使用SM2算法生成公钥和私钥,双方再使用SM4算法根据MK生成轮密钥。
2) 接收方B使用约定好的一种Hash函数计算公钥和轮密钥的Hash值,然后将公钥、轮密钥和各自计算出的Hash值一同发送给发送方A。
3) 发送方A接收到数据后,使用约定好的Hash函数计算公钥和轮密钥的Hash值,然后与接收到的Hash值进行比对,若结果一致,说明公钥正确,可以进行下一步操作,否则结束此次加密。
4) 发送方A验证公钥成功之后,首先使用SM4算法对消息进行加密,然后对SM4算法得到的密文使用SM2算法进行加密,最后进行Hash值计算,将Hash值和密文一起发送给B。
5) 接收方B接收到数据后,先对密文Hash值进行验证,验证成功后,使用计算得到的私钥进行第一层解密,然后使用轮密钥进行第二层解密,得到明文。
在本文提出的混合加密方案中,主要采用了以下方法提高加密方案的安全性。
采用Hash函数验证公钥和轮密钥的数据完整性,保证如果解密失败时能够排除密钥错误的问题;且方案首先进行密钥验证,如果密钥错误直接中止加密,提高了密钥传输的安全性,减少了无用的操作。
使用SM4算法和SM2算法双重加密,先用SM4算法对明文消息进行加密,再使用SM2算法对加密消息进行二次加密。因为SM2算法生成的密文长度比SM4算法生成的密文长度要长,因此最终传输的数据是由SM2算法得到的。
采用Hash函数验证发送密文数据的完整性,如果密文在传输过程中被篡改,其Hash值会发生改变。因此接收方接收到数据后先进行Hash值验证,如果相同再继续进行解密,减少了密钥使用的次数,提高了安全性,也减少了不必要的无用操作。
实验的加密对象是一串128 b的无规则数据。实验内容共有两项:一项是对消息进行加密;另一项是对方案的扩散性进行测试,扩散性即明文改变一位时,密文改变位数占总密文位数的占比。
首先对同一明文进行5次实验,采用本文设计的混合加密方案的实验过程中各个阶段采集的数据如表1所示。
表1 实验过程数据Tab.1 Data of experimental process
最终将SM2算法、SM4算法和本文提出的方案进行5次测试的结果汇总,如表2所示。
表2 加密耗时测试结果Tab.2 Encryption time consuming test results
然后随机改变1位明文,共进行5次实验,每次改变的位置都不同,采用本文方案在第一次试验过程中采集的数据如表3所示。
表3 改变一位明文实验过程数据Tab.3 The experimental process data when changing a plaintext
最后将SM2算法、SM4算法和本文提出的方案进行的5次实验结果如表4所示。
表4 扩散性测试结果Tab.4 Diffusivity test results
3.2.1安全性实验结果对比与分析
安全性主要从本文方案与单一加密方案以及本文方案与不同混合加密方案两方面进行比较,各种算法或方案的安全性相关数据对比如表5所示。
表5 安全性相关数据对比Tab.5 Data comparisons related to security
在混合加密方案算法选择方面,文献[10]和文献[11]都提出了基于分组密码与椭圆曲线公钥密码的混合加密方案。文献[10]提出的方案是SM4算法与ECC算法的混合加密方案,ECC与SM2算法都是一种基于椭圆曲线的公钥密码算法,而ECC算法是美国的公钥加密标准,因此从国家安全角度来讲,使用SM2算法更为安全。文献[11]提出的方案与本方案一样,都是基于SM4与SM2算法的混合加密方案。由于本方案更注重安全性,所以在方案中使用多次Hash函数,用来提高加密时的扩散性以及密钥传输时的安全性,因此本文方案的安全性于其他两种方案相比更高。
在加密效果方面,最后生成的密文长度比文献[10]的方案减少了27%,比文献[11]方案减少了6%,这两种方案都是采用了对SM4密钥进行加密的方法,本文未对SM4密钥进行加密,而是采用了Hash值计算验证数据完整性的方法来保证密钥的正确性,一旦验证完整性失败,表明密钥被篡改,同样能达到保证加密过程正确进行,说明本文方案在缩短了密文长度的同时能达到以上两种方案的加密安全性能。同时由于本文方案采用了Hash函数验证数据完整性机制,因此发生验证错误时,可以通过Hash值比对,将发生Hash验证错误的部分进行定位,进行进一步数据安全的相关工作。
3.2.2时间复杂度实验结果对比与分析
根据表2的结果可知,相比于一次加密,混合加密方案时间复杂度较高,由于加密方案的安全性和复杂度是相互制约的关系,提高加密方案的安全性势必会增加时间复杂度,使加密过程耗时更长。而对于武器装备数据这类机密性较高的数据,安全性需求大于时间复杂度的需求,因此本文方案更适合高机密性数据的加密。
在不同混合加密方案时间复杂度横向对比上,本文方案耗时最多,然而相比耗时最短的文献[10]方案,本方案所用的平均时长324.4 ms比文献[10]方案耗时增加19%。耗时增加的原因是本文方案进行了多次的Hash运算。通过安全性分析证明,使用Hash运算能够在保证安全性的同时减少生成密文的长度,可以提高传输速度,而且还能实现文献[10]和文献[11]中未实现的加密错误源定位功能。同时,大部分数据可以通过预加密的方式,在武器装备使用前进行大部分的数据加密,从而减少时间复杂度对武器装备使用过程中的影响。
通过上述分析,可以证明本文提出的方案虽然在时间复杂度上不具优势,但对于机密数据而言,安全性是首要考虑因素,高时间复杂度问题可以通过预处理以及下一步开展的加密算法效率优化等方面来解决。
本文提出了一种基于国密SM2与SM4算法的武器装备数据混合加密方案,与传统单一加密方式对比,混合加密方案具有更高的安全性。通过实验以及分析证明,本文提出的混合加密方案在安全性和时间复杂度上均取得了不错的效果,尤其是本文方案的扩散性最高达到了87.2%,平均扩散性也达到82.3%。本文方案的时间复杂度最高,可以通过数据预处理减小时间复杂度对加密方案的影响。下一步将从算法的优化改进方面进行研究,并采用FPGA方式实现,进一步降低方案的时间复杂度,使方案更适用于武器装备的嵌入式芯片或系统中。