基于AES和ECC的遥测数据加密技术研究与实现*

2015-03-15 00:50马擎宇
舰船电子工程 2015年4期
关键词:公钥加密算法遥测

马擎宇 张 东

(92941部队 葫芦岛 125000)



基于AES和ECC的遥测数据加密技术研究与实现*

马擎宇 张 东

(92941部队 葫芦岛 125000)

在实际工程中,遥测数据经常需要通过无线电波或者有线网络进行远距离传输,具有数据传输量大、保密性要求高等特点。如何确保安全地传输遥测数据已经成为日益重要的问题。为了解决遥测数据传输的安全问题,论文采用了AES和ECC相结合的混合加密算法,使用AES对要传输的遥测数据进行加密,同时使用ECC加密AES密钥,这样既能快速地对遥测数据进行加密,又能很好地解决密钥分配的问题。结果分析表明,该混合加密算法充分利用了AES和ECC各自的优点,具有很强的抗攻击能力,提高了遥测数据传输过程中的安全性和高效性。

遥测数据; AES; ECC

Class Number V217

1 引言

在导弹飞行试验中,弹上传感器、变换器对反映导弹各分系统工作情况以及工作环境的多个参数进行实时监测,并通过弹上遥测系统将各种电量、非电量信号都转换成按规定范围内变化的电信号,经过采集、编码、调制后,通过无线电波发往地面各个遥测测量站[1]。每个测量站将接收到的遥测数据通过内部网络实时传输到指控中心进行相应的遥测参数挑点处理,或者在试验结束后传输到数据处理中心进行事后数据处理。

在这一过程中,攻击方可以通过截获导弹发射的遥测无线电波,或者切入我方内部网络的方式,进行如下的攻击:

1) 截取传输中的遥测数据,通过截取的遥测数据分析出导弹的某些性能,进而掌握导弹的一些重要数据;

2) 冒充测量站向指控中心或数据处理中心发送伪造或者篡改的遥测数据,干扰导弹飞行试验的正常进行。

为了保证试验的安全,很有必要在遥测数据传输过程中对数据进行加密处理,防止遥测数据被窃取、伪造或篡改。

在常用的对称加密算法中,AES具有速度快、强度高、安全性好、便于实现等优点,尤其适合加密数据量比较大的情形,但密钥分配与管理比较困难。相比较而言,公钥加密算法(如ECC)具有密钥分发与管理简单、加解密速度慢等特点,一般用于加密少量数据。所以本文采用了AES和ECC的混合密码体制:使用AES加密遥测数据,以保证数据的安全性;使用ECC加密AES密钥,进行密钥管理,可以避免通信双方事先交换密钥。通过这种方式可以有效地提高遥测数据传输的安全性和高效性。

2 AES基本原理

AES使用的是一种名为Rijndael的分组迭代加密算法。根据AES的要求,分组长度指定为128比特,密钥长度可以为128、192、256比特,相应的迭代轮数分别为10、12和14。在AES中,数据块要经过多次数据转换操作,每一次转换操作产生一个中间结果,这个中间结果叫做状态(state)。状态可表示为二维字节数组即状态矩阵,矩阵的大小是4×4。同样,密钥也用字节的矩阵来表示,矩阵的行数定为4,列数等于密钥长度除以32。

AES的每一轮由四个阶段组成,分别是:

1) 字节替换:用一个S盒完成分组的按字节替换。

2) 行移位:一个简单的行移位置换。

3) 列混淆:利用域GF(28)上的算术特性的一个代替。

4) 轮密钥加:轮密钥与当前的中间状态进行按位异或运算。

图1是以密钥长度为128比特为例的AES加解密过程,对于密钥长度为192和256比特的AES与此相类似,只是迭代轮数分别变为12轮和14轮[2]。

3 使用ECC进行加解密

椭圆曲线密码算法(ECC)最早是由Neal Koblitz和Victor Miller在1985年分别独立提出的,它是基于椭圆曲线群上的离散对数难题。ECC算法具有很高的加密强度,密钥长度为160位的椭圆曲线密码系统可以具有与密钥长度为1024位的ElGamal或RSA密码系统相当的安全性。它是目前已知的所有公钥密码体制中,能够提供最高比特强度的一种公钥密码体制。

图1 AES加解密过程

3.1 有限域上的椭圆曲线的定义

设p是大于3的素数,有限域GF(p)上的椭圆曲线Ep(a,b)是指由方程y2=x3+ax+bmodp在GF(p)上的所有解及无穷点O构成的集合,其中4a3+27b2≠0modp。

椭圆曲线Ep(a,b)上的加法运算[3]:设P=(x1,y1),Q=(x2,y2),若x2=x1,y2=-y1,令P+Q=0(此时记-P=Q),否则P+Q=(x3,y3),其中

对于上述定义的加法,(Ep(a,b),+)构成Abel群。设m是正整数,P是椭圆曲线Ep(a,b)上一点,定义乘法mP=P+P+…+P(m个P相加),-mP=-(mP)。

3.2 椭圆曲线群上的离散对数难题

ECC是基于椭圆曲线离散对数难题(ECDLP)的密码体制。对于定义在有限域GF(P)上的椭圆曲线,P是一个阶为素数n的点,令Q=kP,其中Q,P属于E(a,b),0

3.3 基于ECDLP的加解密

基于ECDLP的加解密方法有多种,本文采用了一种较简单的基于ECDLP的加解密方法。首先选择一椭圆曲线,其次,选择元素G,使得G的阶n是一个大素数,G的阶是指满足nG=0的最小n值。用户A和B之间的加解密过程如下[4]:

1) 密钥计算:用户A秘密选择整数nA,计算KUA=nAG,然后公开(p,a,b,G,KUA),KUA为公钥,nA为私钥。

2) 加密:用户B要把消息M发给A,先把消息M变换成为中的一个点Pm,然后选择随机数r,计算密文Cm={rG,Pm+rKUA},如果r使得rG或者rKUA为O,则要重新选择r。

3) 解密:用户A对密文Cm解密,(Pm+rKUA)-nA(rG)=Pm+rnAG-nArG=Pm。

4 AES和ECC混合密码体制

AES和ECC相结合的混合密码体制,具备更安全、更高效、更灵活应用的优点。具体的实现流程如下[5~7]:

遥测数据发送方A(如图2所示):

1) 生成AES密钥KA;

2) 用AES算法对遥测数据TD进行加密,得到密文C1;

3) 获取数据接收方B的ECC公钥Kpub;

4) 使用Kpub对KA进行加密,得到AES密钥块C2;

5) 将密文C1、AES密钥块C2一同传送给遥测数据接收方B。

图2 遥测数据发送过程

遥测数据接收方B(如图3所示):

1) 生成ECC公钥Kpub和私钥Kpri;

2) 将ECC公钥Kpub发送给数据发送方A;

3) 接收数据发送方A发送的数据C1+C2;

4) 用ECC私钥Kpri解密AES密钥块C2,得到KA;

5) 用KA对密文C1进行解密,得到相应的明文遥测数据TD;

6) 进行后续的遥测数据处理工作。

图3 遥测数据接收过程

5 安全性分析

AES算法每次以16字节(128比特)数据块为对象,通过将数据与密钥进行异或运算、使用非线性良好的S盒进行字节替换,以及行移位、列混淆等变换操作,最大限度地模糊输出对输入的依赖,并通过大量轮数来增加加密数据的复杂性,从而有效地抵抗了差分密码分析和线性密码分析。AES所采用的Rijndael算法中最短的密钥长度是128比特,如果用穷举法进行强力攻击,则需要处理2128种可能密钥,计算量是非常大的,因此使用目前技术的穷举法对AES是无效的[8]。

ECC比RSA、DSA等其他公钥密码体制吸引人的最主要原因是解决其数学问题(即ECDLP)的已知最好算法也要用完全指数时间。RSA和DSA所基于的数学问题(即因数分解IFP和离散对数DLP问题)都有亚指数时间算法。这意味着随着长度的增加,求解ECDLP的难度比求解IFP和DLP的难度增加得快得多。因此ECC仅需要更小的密钥长度就可以提供跟RSA和DSA相当的安全性[9~10]。目前,ECC已经成为最流行的公钥密码算法之一[11]。

6 算法的Java实现

Java安全技术包含了大量的API、工具,以及各种广泛使用的安全算法、机制和协议的实现。随着加解密算法的发展,Java的加解密技术也在不断演进,不断提高着用户数据的安全性。Java在java.security和javax.crypto两个包中包含了Java加密和解密的核心部分。Java API支持多种加解密算法。如java.security包中的MessageDigest类可以构建MD5、SHA等加密算法;javax.crypto包中的Cipher类可以构建多种加密算法,如DES、AES对称加密算法,以及RSA、DSA等非对称加密算法。目前Java虽然提供了多种加密算法支持,但并不完善,许多加密强度较高的算法,Java未能提供。可以在继续沿用Java API前提下,通过配置开源组件包Bouncy Castle,加入对应的提供者Provider,从而获得相应的算法支持[12]。

6.1 AES算法实现简述

1) 实例化密钥生成器并初始化(密钥长度为256比特):KeyGenerator kg=KeyGenerator .getInstance("AES"),kg.init(256);

2) 生成密钥:SecretKey secretKey=kg.generateKey();

3) 实例化Cipher类:Cipher cipher=Cipher. getInstance ("AES/CBC/PKCS5Padding"),其中AES表示AES加密,CBC表示工作模式为密码分组链接模式,PKCS5Padding是填充方式;

4) 初始Cipher类,并设置为加密模式:cipher.init(Cipher.ENCRYPT_MODE,secretKey);

5) 执行加密操作:cipher.doFinal(data),其中data表示要被加密的数据。

6.2 ECC算法实现简述

1) 初始化密钥:ECPublicKey publicKey = new ECPublicKeyImpl(ecPoint, ecParameterSpec),ECPrivateKey privateKey = new ECPrivateKeyImpl(bigInteger, ecParameterSpec),其中publicKey为ECC的公钥,privateKey为ECC的私钥;

2) 实例化Cipher类,并进行初始化:Cipher cipher = new NullCipher(),cipher.init(Cipher.ENCRYPT_MODE, pubKey, ecPublicKeySpec.getParams());

3) 执行加密操作:cipher.doFinal(data),其中data表示要被加密的数据。

7 结语

本文针对遥测数据传输的现状,提出了AES和ECC混合加密算法,将两种加密技术有效地结合,充分发挥了AES和ECC各自的优点。对AES和ECC各自的安全性进行了分析。最后使用Java实现了该混合加密算法,解决了遥测数据传输的安全问题,从而保障了试验信息的安全。

[1] 陈以恩.遥测数据处理[M].北京:国防工业出版社,2002:1-13.

[2] STALLINGS W.密码编码学与网络安全—原理与实践[M].王张宜,杨敏,杜瑞颖,等译.第五版.北京:电子工业出版社,2012:105-127.

[3] 郑东,李翔学,黄征.密码学—密码算法与协议[M].北京:电子工业出版社,2009:73-105.

[4] 王昭,袁春.信息安全原理与应用[M].北京:电子工业出版社,2010:91-113.

[5] 张丞.基于AES和ECC的混合密码体制研究及应用[D].成都:成都理工大学,2007:32-33.

[6] 张勇.AES与ECC相结合的混合密码体制的研究及应用[D].阜新:辽宁工程技术大学,2008:31-38.

[7] 王常林,吴斌.基于AES算法和改进ECC算法的混合加密方案[J].科学技术与工程,2009,9(18):5379-5382.

[8] 王红珍,张根耀,李竹林.AES算法及安全性研究[J].信息技术,2011(9):20-26.

[9] 王张宜,杨寒涛,张焕国.椭圆曲线密码的安全性分析[J].计算机工程,2002,28(5):161-163.

[10] 李殿伟,王正义,赵俊阁.椭圆曲线密码体制安全性分析[J].计算机技术与发展,2012,22(4):227-230.

[11] 王红珍,李竹林.ECC算法在软件保护中的应用及安全性分析[J].计算机技术与发展,2012,22(8):155-158.

[12] 梁栋.Java加密与解密的艺术[M].第二版.北京:机械工业出版社,2014:238-242.

Research and Realization of Telemetry Data Encryption Based on AES and ECC

MA Qingyu ZHANG Dong

(No. 92941 Troops of PLA, Huludao 125000)

In the real engineering, the telemetry data usually is transmitted by radio wave or wired network over great distances, which has the feature of large amount of data transmission and high confidentiality requirements. How to transmit the telemetry data securely has become an important problem. To solve the secure transmission problem of telemetry data, a hybrid encryption algorithm of AES and ECC is adopted, which encrypts the telemetry data by AES and encrypts the key of AES by ECC. So the hybrid encryption algorithm can encrypt the telemetry data quickly and solve the problem of key distribution. The results show that the algorithm utilizes the respective advantages of AES and ECC, and has a strong anti-attack capability. So it greatly improves the security and efficiency of telemetry data transmission.

telemetry data, AES, ECC

2014年10月20日,

2014年11月30日

马擎宇,男,硕士研究生,工程师,研究方向:遥测数据处理及相关软件开发。张东,男,硕士研究生,高级工程师,研究方向:遥测数据处理总体。

V217

10.3969/j.issn1672-9730.2015.04.021

猜你喜欢
公钥加密算法遥测
前馈复合控制在提高遥测跟踪性能中的应用
远程控制式遥测地面站关键技术研究
基于WPF的遥测CAS信息实时监控系统设计开发
DES加密算法的实现
自适应模糊PID控制的遥测方舱温度调节方法
基于整数矩阵乘法的图像加密算法
神奇的公钥密码
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
基于小波变换和混沌映射的图像加密算法