随着计算机系统的网络化,网络作为管理信息系统的支撑,其传递信息的安全性已经成为各种计算机系统能否稳定运行的关键因素。防范客户信息在网络传输过程中被截获并篡改其中的信息,确保信息安全,则是设计计算机系统的一个重要课题。数据安全需要多种方法保障,数据加密技术是保护数据安全的重要环节,也是实现网络信息安全的核心技术。它是将要传输的信息先进行加密处理,将信息编码成不易被侵入者阅读或理解的形式来保护数据的信息,再进行网络传输,即使该信息被截获,截获者也很难从加密后的乱码中得到有用信息,但是被授权的信息获取者却可以将所得到的内容还原并得到其中的信息。
数据加密的基本过程如图1所示。
一、AES加密算法分析
在密码(学)技术中,数据加密技术是核心。所谓加密,是通过编码的方式将简单明了的数据进行转换,转换成晦涩难懂、难以阅读的其它格式,只有拥有解密密钥才能将这些转换后的数据还原成可读数据。译码是编码的逆过程。根据数据加密所使用的密钥特点可将数据加密技术分成两种体制,一种是基于单密钥的对称加密体制(传统加密体制),包括分组密码与序列密码,另一类是基于双密钥的非对称加密体制。
高级加密标准(AdvancedEncryptionStandard,AES)作为对传统对称加密算法标准DES的替代者,由美国国家标准与技术研究所(NIST)于1997年提出征集算法的公告。经过几年的筛选,最终确定了由VincentRijmen和JoanDaemen发明的Rijndael加密算法,美国国家标准与技术研究所(NIST)在2002-05-26建立了新的高级数据加密标准(AES)规范。
大多数分组寂寞算法都是采用Feistel结构。Feistel结构是对所加密的内容分组后,每一组再分为左右两半然后进行替换及迭代运算。而AES加密算法没有涉及到Feistel结构,而是采用了Square结构。Square结构是一种迭代分组密码,其轮变换有4个不同的变换组成,这4个不同的变换表现为一套查表和异或操作。
AES加密通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES使用了几种不同的技术来实现置换和替换,AES加密算法是一个分组长度和密钥长度均可变的迭代分组密码,分组和密钥长度都可分别为128、192或256位。
1、状态、种子密钥和轮数
数据块要经过多次变换操作,每次变换操作所产生的中间结果称为“状态”(State)。状态可由一个4行、Nb列的二维字节数组表示,Nb等于分组长度除以32,如表1所示。
密钥也可类似地由一个4行、Nk列的二维字节数组表示,Nk等于密钥长度除以32,如表2所示。
有时,可将这些分组看成是4字节向量的一维数组,数组长度与相应的二维数组表中的列数相等。
加密算法的输入和输出被看成是由8比特字节构成的一维数组,其元素下标的范围是0~(4Nb-1),因此输入和输出以字节为单位的分组长度分别是16、24和32,其元素下标分别是0~15、0~23和0~31。输入的种子密钥也看成是由8比特字节构成的一维数组,其元素下标的范围是0~(4Nk-1),因此种子密钥以字节为单位的分组长度也分别是16、24和32,其元素下标的范围分别是0~15、0~23和0~31。
迭代的轮数记为Nr,Nr与Nb和Nk有关,对应128、192、256三种密钥长度的迭代轮数分别为10、12、14。
2、加密过程
(1)给定一个明文文件X,将State初始化为X,并进行Ad2dRoundKey操作,将轮密钥与State异或。
(2)对前Nr-1轮中的每一轮,用S盒进行一次Sub2Bytes代换操作;对State做一次ShiftRows行移位操作;再对State做一次MixColumns列混淆操作;然后进行AddRoundK2ey操作。
(3)依次进行SubBytes、ShiftRows、AddRoundKey操作。
(4)将最后State中的内容定义为密文Y。
Rijndael加密算法取名为Cipher,它操作State[ ],其过程描述的伪代码如下:
CipherAlgorithmPseudocode
Cipher(byte[ ]input,byte[ ]output)
{
byte[4,4]State;copyinput[ ]intoState[ ]
AddRoundKey
for(round=1;round<Nr-1;++round)
{
SubBytesShiftRowsMixColumnsAddRoundKey
}
SubBytesShiftRowsAddRoundKey
copyState[ ]tooutput[ ]
}
3、四种变换
(1)S盒变换(SubBytes):SubBytes变换是作用在状态中每个字节的非线性字节置换,这个置换表或称(S盒)是可逆的,并由以下两个变换组成:在域GF(28)中取字节的乘法逆,‘00’的乘法逆是它自己;在域GF(2)中进行如下定义的仿射变换:
(2)列混合变换(MixColumns):MixColumns实现逐列混合,其方法如下:
其中,c(x)={03}_x3+{01}_x2+{01}_x+{02},用矩阵表示如下:
(3)行移位变换(ShiftRows):ShiftRows变换是将状态行循环移位,0行不移,第1行循环左移1个字节,第2行循环左移2字节,第3行循环左移3字节。
(4)轮密钥加变换(AddRoundKey):AddRoundKey是将轮密钥简单的与状态进行逐比特异或。轮密钥由种子密钥通过密钥编排算法得到,轮密钥长度等于分组长度Nb。
4、密钥扩展
通过生成器产生Nr+1轮轮密钥,每个轮密钥由Nb个字组成,共有Nb(Nr+1)个字W(i),i=0,1...,Nb(Nr+1)-1。
在加密过程中,需要Nr+1个子密钥,需要构造4(Nr+1)个32位字。
5、Rijndael加密算法的解密
Rijndael的解密运算中除轮密钥加AddRoundKey不变外,其余字节代替(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)都进行求逆变换即可。
6、破译分析
目前尚未存在对Rijndael加密算法完整版的成功攻击,但已经提出对简化算法(即减少圈数的Rijndael)的几种攻击方法。最著名的当数密码设计者自己提出的Square攻击。它对4到6圈的简化算法有效。其思想是利用第4圈字节替换前后平衡性的改变来猜测密钥字节。对Square攻击进行改进,可降低攻击的时间和空间复杂度,可扩展到圈数更多的简化算法的攻击上。对Rijndael算法进行攻击另一种思路是发掘Rijndael密码设计的其他弱点,如利用密钥调度方案的弱点对9圈简化算法进行了密钥相关攻击;利用算法中某些函数之间的冲突攻击4圈以上多达7圈的简化算法。但是,大多数攻击的复杂性使得当前的计算能力还远远无法实现,因此目前尚未危及到Rijn2dael加密算法的安全。
二、AES加密算法在不停车收费系统中的应用
高速公路不停车电子自动收费系统(NoStopElectronicTollCollectionSystem简称NSETCS)是一种能实现高速公路不停车收费的全天候智能型分布式计算机控制、处理系统。不停车收费系统主要由自动收费模块、自动摄像模块和车型识别模块三部分构成,自动收费是整个系统的核心部分。各收费站(以下简记为F)和费用结算管理中心(以下简记为C)通过光纤相连,构成局域网。
当车辆以一定速度驶入收费站自动收费车道时,车型识别和自动收费单元自动启动,读取射频IC卡内的信息并与车型识别判定结果进行比对。若一致,则自动从射频IC卡上进行费用结算,车辆顺利通过收费站;若不一至,或射频卡内余额不足,则自动摄像模块启动,对该车辆进行拍摄,提取车辆牌照,并将该车相关信息(如车型、车牌照等)存入系统,并启动前方栏杆机进行车辆拦截。
各收费站F对费用收取情况和违规车辆的信息采集后,需要定时传送给费用结算管理中心C,由费用结算管理中心进行协调管理,对收费站未能进行处理的违规车辆作出相应处理决定,并将相关信息或通知及时传送至各收费站。
各F和C通过网络传送的信息有很大一部分属于敏感信息,敏感信息传送必然要考虑安全性,信息加密则是敏感信息安全传送的关键环节。因此,选择一种合适的加密算法对需要传输的信息进行加密后传输就显得尤其重要。
对目前比较成熟的加密算法进行比较,可以看出,AES即Rijndael加密算法作为新一代的高级加密标准,将安全、效率、性能、方便使用及灵活性集于一体,在不同硬件和软件运行环境下表现出始终如一的良好性能。AES加密算法对于内存要求可以很低,这使得它可以应用在需要大量使用内存空间的环境,同时,AES加密算法的操作可以很容易的抵御来自时间和空间上的攻击。所以我们选择了AES加密算法用于高速公路不停车收费系统。高速公路不停车收费系统信息加密结构如图2所示。
当F和C之间需要进行信息传输时,首先调用AES加密程序对所要传输的文件加密处理。由于AES加密属于对称密钥加密,加解密使用同一个密钥,因此,我们在采用Ri2jndael加密算法加密时要考虑一个重要的问题,就是密钥的管理。密钥是Rijndael加密系统中的可变部分,是加密系统的关键。为了保证通信内容的安全性,本系统中采用动态密钥,即Ri2jndael加密算法每次所采取的加密密钥都不同。所以为使信息接收方知道密钥,密钥也要进行通信传输,这就又产生了安全隐患。为解决此问题本系统中又选择了非对称密钥密码RSA算法对AES加密密钥进行加密,然后和原有加密信息同时传输给信息接收方。接收方收到信息后,利用RSA中自己的私钥将AES的密钥进行解密,再解密原有加密信息即可得到原有明文信息。由于RSA加密算法加密速度受到限制,所以不能用来加密大量信息。
本系统中采用Delphi710编程语言实现了AES加密算法,经过微机调试运行,程序稳定,可以加密各种信息。密钥密码加密算法有很多种,而且还在不断发展中,要保证所设计的计算机工程系统稳定安全的运行,必须选择当前阶段下被认为是比较稳定、安全,并且运算速度和内存占用量满足自己工程需要的加密算法才是最佳选择。有时为了满足工程需要,还要结合两种甚至几种加密算法来实现信息的安全加密,如本系统中就采用了AES和RSA两种加密算法。当然,随着计算机运算速度的提上,现阶段被认为是安全的加密算法很可能几年后就会被淘汰。因此,为确保系统安全,对长期运行的系统中使用的加密算法也要随加密算法的发展作出更新,替换掉被淘汰的加密算法。
小知识之不停车收费系统
不停车收费系统(又称电子收费系统Electronic Toll Collection System,简称ETC系统)利用车辆自动识别(Automatic Vehicle Identification 简称 AVI)技术完成车辆与收费站之间的无线数据通讯,进行车辆自动识别和有关收费数据的交换,通过计算机网路进行收费数据的处理,实现不停车自动收费的全电子收费系统。