要使远程测控系统的的现场测控数据和远程操作信息在网络上安全地传输,就要保证数据在传输过程中的保密性,可鉴别性和完整性。其中保密性是保证加密信息即使被非法摄取后也无法被破译;可鉴别性防止发送方或者接收方的身份被他人冒充或伪造;完整性防止数据在传输过程中被篡改、删除或丢失。

根据上述要求,使用目前流行且具安全强度大的RSA,AES和MD5三种加密算法,组合成为一种混合算法:利用对称密码算法AES的加解密速度的优势加密数据完成数据的保密性,利用RSA加密AES的密钥解决密钥分配问题和用户的鉴别问题,通过MD5检测数据的完整性。最后将算法应用于远程测控智能终端RTU2600上,达到对产品安全性能方面的改进。

一、加密算法描述

1、加密明文

使用AES加密算法加解密大量的明文数据。AES是对称加密体制中的一种迭代式的分组密码,加解密密钥相同,具有速度快,安全性高,对内存需求低,便于软件实现的优点。加密算法如下:

首先生成128位密钥(也可以是192位或256位,现使用128位),然后将明文进行分组,分组长度也为128位,不足的用0补齐。分组后每组以字节为单位按每4个字节一行排成4行,组成一个4*4字节的矩阵,称为一个状态,然后进行轮变换。 AES的轮变换由四种不同的变换组成,分别为:

(1)字节替换:一个基于S盒的非线性置换,将状态的每一个字节通过一个查表操作,将其映射为另一个字节;

(2)行移位变换:以字节为单位,将状态的后三行以不同的移位量循环左移;

(3)列混合变换:将状态的每列视为在GF(2的8次方)上的多项式s(x),与一个固定的多项式c(x)={03}X3+{02}X2+{01}x+{02}模X4 +1相乘;

(4)加密钥:将状态与单轮子密钥按位异或,每轮的子密钥由初始的128位密钥扩展生成。

加密过程:初始轮变换仅由加密钥组成,接下来的9轮每轮都经过上述的4种变换,最后一轮进行3种变换,没有列混合变换。经过总共10轮的变换,得到128位的密文。

2、密钥分配及数字签名

AES加密明文后需要将AES密钥传送给接收方,为了保证密钥在非安全通道下的传输过程中不被他人所截获并解密密文,就要使用非对称密码算法加密AES密钥来进行密钥分配。同时为了保证发送数据来自发送方,而不是他人伪造,可用非对称密码算法对发送数据进行数字签名。

RSA是一种非对称密码算法,使用两个密钥,一个公钥(公开),一个私钥(自己保留)。用其中一个密钥加密时必须使用另一个密钥才能解密。算法如下:

生成密钥:

(1)选择两个大素数p和q,一般在10的1oo次方左右;

(2)计算n=pq和φ(n)=(p-1)(q-1);

(3)选择e作为加密的公开密钥,并满足1<e<φ(n),e和φ(n)互素;

(4)由e计算出解密密钥d=e-1mod φ(n);

(5)最后得到公钥Ku={e,n},私钥kr={d,n}。

加密方法:

用肘表示明文,C表示密文,(M和C均小于n)加密时计算C = Memodn得到密文,解密时计算M=Cdmod n恢复明文。

公钥可以通过公共渠道获得,可以是一个公钥数据库,可也以将所有通信方的公钥记录在一个电话本上。如果A想要把AES的密钥Ks传递给B,便用B的公钥Kub加密Ks得到EKUb[ Ks],将加密后的密钥EKub[ Ks]通过非安全的通道发送给B,B收到密文后用自己的私钥Krb解密得到AES密钥EKrb[ EKub[Ks]]=Kso用对方公钥加密数据的方式也称作“数字信封’’,只有拥有私钥的人才能打开“信封’’,数字信封一般应用于密钥分配。此外,为了保证数据来源于发送方而不是其他人,可用发送方的私钥加密数据,这种方式也称作“数字签名’’,接收方使用发送方的公钥解密则能验证签名,可保证数据的可鉴别性。

RSA以数论中的欧拉函数为基础,依赖于大整数因数分解的困难性。其优点是多人通信时可减少密钥数量(n人之间使用非对称密码体制通信需要2n个密钥,使用对称密码体制需要n×(n -1)/2个密钥)密钥便于管理,且分配简单,不需要秘密的通道和复杂的协议来传送密钥,但就是加解密速度很慢,不适合直接加密明文,所以RSA一般应用于密钥分配和数字签名。

3、数据完整性

保证数据的完整性就是防止数据在传输过程中被人为地篡改或者因客观原因造成数据丢失、误码等。现使用MD5加密算法验证数据的完整性。

MD5是一种摘要算法,将输入消息(小于264位)经过不可逆变换的散列函数运算后得到唯一的128位输出。算法如下。

(1)添加填充位,填充消息使其长度恰好为一个比512的倍数小64位的数。填充方法是附一个1在消息后面,后接多个0已达到要求长度。

(2)添加长度,添加一个64 bit表示原始消息的长度值。

(3)初始化消息摘要的缓冲区,共四个初始化变量,每个32 bit。

(4)以512 bit数据块为单位处理消息,算法核心包括四个循环模块,每个循环由16个处理步骤组成。

(5)循环结束后得到128 bit摘要。

MD5在验证数据的完整性的同时可以和RSA共同使用更好地完成数字签名。因为RSA算法加解密速度很慢,加密整个明文是不现实的,而摘要是明文的一个不可逆的唯一映射,相对整个明文来说要小很多,所以加密128 bit摘要就相当于对整个明文“签名”。

4、混合加密算法

结合上述三种算法的优点,提出一种混合加密算法,见图1 。

远程智能终端RTU2600中的数据加密算法
发送的数据由三部分组成:AES加密后的明文,RSA加密后的AES密钥,RSA加密后的摘要。AES加密速度快,用于加密明文。用接收方B的RSA公钥加密AES的密钥,完成AES密钥分配。用发送方A的RSA私钥加密摘要,即保证了数据的可鉴别性又保证了数据的完整性。接收数据后,用B的RSA私钥恢复出AES密钥,并用其解密出明文。用恢复出的明文计算MD5摘要,并与RSA解密后的摘要相比较,如果一致则说明签名得到验证且数据在传输过程中没有改变,否则就丢弃解密后的明文并请求重发。如果接收方成功解密AES密钥,即密钥分配完成,则在后继的数据传输过程中就使用该密钥加密明文,无需再次传输AES密钥(无需每次加密时使用不同的AES密钥),其他过程不变。

二、在远程智能终端RTU2600的加密实现

1、RTU2600工作原理

RTU2600是威控公司生产的一种远程智能终端( Remote Terminal Unit),它将采集、控制、通讯三种功能合为一体,能独立地完成预定的控制程序、执行上位机指令,并将执行结果和现场数据回传上位机。

RTU2600内置Rabbit3000处理器,运行的语言是Dynarnic C,具有GSM/GPRS/CDMAlx等无线通信方式。利用GPRS网络通过无线的方式接入Internet,利用GPRS和Intemet网络进行数据传输。在RTU和上位机之间实现端到端的加密方式,加密对象为RTU向上位机发送的现场采集数据,上位机收到密文后用同样的算法解密。上位机发送给RTU的命令仍为明文形式。下面给出RTU工作时的状态机流程图(图2)。

远程智能终端RTU2600中的数据加密算法

2、加密功能实现

加密通过软件的方式实现,RTU所使用的开发语言是Dynamic C,Dynamic C是用于编写嵌入式应用软件的一套集成的开发系统,专为Z-World控制器和基于Rabbit微处理器的控制器而设计。 Dynamic C的库中包含AES和MD5算法的函数,所以直接调用即可,而RSA函数则需要自己编译。

首先,生成128bitAES密钥(每次通信时AES密钥可不一样),用AESexpandKey4()将128bit密钥扩展为1408bit以满足算法中的10次轮变换,最后使用AESencrypt4x4()通过扩展后的密钥加密明文。

用md5_init()初始化MD5函数,并用md5_ap-pend()和md5_finish()完成对明文的hash变换,得到128位输出。

在通信前预计算出通信时所需要的RSA参数:

p,q,n,e,d。其中p和q推荐使用强素数。这样,如果用Pollard的p-l质因数分解算法来分解n=pq就会变得不可行oe选择3,17或65537以提高加密速度。

图3为Dynamic C Version 8.61界面,数据文件加密后正在发送。

远程智能终端RTU2600中的数据加密算法

本文提出了一种混合数据加密算法,算法结合AES,RSA,MD5的优点,解决了数据传输过程中的保密性,可鉴别性,和完整性的问题。并将算法应用在RTU2600中,提高了数据在工业网络中传输的安全
性。有一点需要注意的是:在双方第一次通信时(都不知道对方公钢的情况下)。不要在非安全桀道下将自己盼公饲传递给对方,一定饕通过安全渠道获得对方公钥(打电话或者发邮件)。这样可确保公钥和使用者之间的绑定关系,否则如果遭到中间人攻击,整个加密算法就会失去作用。RSA密钥尽量不要经常更换,必须要更换时就用安全渠道告知对方自己的公钥,或者使用证书的方式建立一个公钥数据库,通过证书确定公钥和使用者之间的绑定关系。

小知识之智能终端

智能终端设备是指那些具有多媒体功能的智能设备这些设备支持音频、视频、数据等方面的功能.如:可视电话、会议终端、内置多媒体功能的PC、PDA……