无线网络安全中AES加密算法的研究
2014-07-14陈小明
陈小明
【摘 要】 随着智能手机,平板的大力推广,对无线网络的应用也越来越广泛,无线网络安全中的加密算法也变得愈发重要,本文从AES算法的加密原理出发,阐述了该算法在无线网络安全中的应用、研究以及从子密钥生成算法的角度,优化AES算法加密解密的过程,从而提升了AES加密算法的性能。
【关键词】 AES 加密算法 无线网络
【Abstract】 With the intelligent mobile phone,flat vigorously promotion,for the application of wireless network is becoming more and more widely,the wireless network security of encryption algorithm is also becoming increasingly important,this article from the AES algorithm encryption principle,this paper discusses the algorithm in wireless network security and the application research and key generation algorithm from the point of view of the son,optimizing the AES algorithm encryption decryption process,so as to enhance the performance of the AES encryption algorithm.
【Key words】 AES encryption algorithm wireless network
随着智能手机的普及以及无线网络的不断发展,无线网络使用越来越广泛,信息安全正在变的越来越重要,无线网络的安全问题正在不断受到广泛的关注,而加密技术在信息安全、网络传输中属于最基础的技术,而密码算法则自然而然变的更加重要。AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它是目前所公认的加密金融、电信和政府数字信息等各个领域的方法。AES加密算法是标准对称加密算法,所以该算法使用的是相同的密钥,去加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。其中加密时使用的是迭代加密的方法,即使用循环的方法,在此循环中,重复置换和替换原始输入数据[1]。AES加密算法是DES加密算法的改进和升级,密钥长度支持128位、192位以及256位共三种,使用对称分组密码体制,故本算法非常方便用各种硬件及软件实现。
1 AES算法的工作原理
1.1 AES算法描述
AES是以轮为基础的对称加密算法,是一个密钥迭代型分组密码,它包含了轮变换对状态的重复作用,密钥长度为128bits,192bits,256bits。对应的加密轮数为10,12,14,用Nr表示轮数[4]。明文经过AddRoundKey以及Nr轮组合函数变换,生成密文。其中Round1,Round2到Round(Nr-1)都是由字节代替变换、行位移变换、列混合变换、密钥加法变换4种函数组成。RoundNr由字节代替变换、行位移变换、密钥加法变换3种函数组成。
1.2 加密变换函数解析
(1)字节替换(SubBytes):是一种非线性的字节置换变换。将S-盒SRD构造为函数g和一个可逆仿射变换f的序列。首先对字节求有限域GF(28)上的乘法逆,用函数表示为g(b)。然后对g(b)进行可逆仿射变换f,用函数表示为。仿射变换是一个矩阵乘法和加法的混合,表示如下:
(1)
其中:表示异或;Ci=。
(2)行位移(ShiftRows):是加密算法中的线性运算。它将状态第0行移动C0字节数,第1行移动C1字节数,第2行移动C2字节数,第3行移动C3字节数。
(3)列混合(MixColumns):采用GF(28)下的多项式与固定多项式相乘,使得到的结果取模。
(4)密钥加法(AddRoundKey):在这个变换中,状态的调整通过与轮密钥进行逐位异或而得到。轮密钥的长度和分组长度相等。
第i轮的上述四种变换可以表示为如下的数学表达式:
(2)
其中:a是轮变换开始输入;j是状态矩阵的列数;k是第i轮的密钥;移位变换偏移量C0、C1、C2、C3分别为0,1,2,3;表示异或操作。
2 AES算法在无线网络中的应用
2.1 无线网络协议
随着人们对无线网络安全性的深入研究,终于在2006年3月13日,国际标准组织(ISO/IEC)批准IEEE802.11i为更安全无线协议的基础。802.11i在数据加密方面定义了TKIP、CCMP和WRAP 三种加密机制。CCMP是基于AES加密算法和CCM认证机制的加密机制,可以大大提高无线网络的安全程度。WPA(Wi-Fi Protected Access)保护无线电脑网络安全系统是一种基于标准的可互操作的WLAN安全性增强解决方案,可大大增强现有以及未来无线局域网系统的数据保护和访问控制水平。WPA源于正在制定中的IEEE 802.11i标准并将与之保持前向兼容。如果我们合理安排,WPA可以使无线网络用户的数据得到保护,并且只有被授权的一些网络用户才可以访问该无线网络。由于WEP业已证明的不安全性,在802.11i协议完善前,采用WPA为用户提供一个临时性的解决方案。该标准的数据加密采用TKIP协议(Temporary Key Integrity Protocol),认证有两种模式可供选择,一种是使用802.1x协议进行认证;一种是称为预先共享密钥PSK(Pre-Shared Key)模式。它是IEEE802.11i的一个子集,核心是IEEE802.1x和TKIP,可用以下公式表示几者之间的关系:WPA=802.1x+EPA+TKIP+MIC其中MIC(信息完整性检查码)是CCMP(Counter mode/CBC-MAC Protocol)加密技术中的一个重要组成部分:CCMP首先用CBC-MAC数据源认证模式对消息中的明文头、明文头长度和负载计算出一个MIC,然后使用计数模式对负载(Payload)和MIC进行加密,产生128比特的密匙,其中计数模式的核心算法就是AES(高级加密标准)。endprint
2.2 无线健壮安全认证协议中的AES算法
无线健壮安全认证协议(WRAP),是基于128位的AES-OCB模式的加密算法[1]。AES算法所采用的操作模式OCB(Offset Codebook)是使用AES算法进行块加密,该方法首先将要加密的明文分成x个数据块,每个数据块的长度是128bit,将这x个数据块使用AES加密运算,这时可以生成x个加密数据块, 拼接起这x个加密数据块,与MIC、重放计数器(Replay Counter)三者一起作为加密数据负载,从而完成对明文数据的加密过程。在WRAP中,AES的主要是在WRAP的数据封装过程的数据处理的各个阶段中,其中产生密钥的过程是先通过802.1X协议建立链接,从而构建临时密钥,媒体访问控制(MAC)是通过连接请求应答以及临时密钥这三者一起通过密钥产生算法生成加密密钥[3]。此后媒体访问控使用WRAP数据封装算法,利用加密密钥对所有即将发送的单MAC服务数据单元(MSDU,MAC Service Data Unit)进行保护,而在数据加密之前,传输端根据所要发送的MSDU来选择合适的封装方式。再之后传输端对MSDU分组个数(其中AES分组长度为128bit)进行检验,如此即可选择适合的重放计数器[4]。之后设备使用WRAP临时加密密钥和Nonce对明文MSDU数据进行加密[5]。
3 AES算法密钥扩展及优化改进
3.1 AES算法优化方法
从以上AES算法的加密和解密工作原理中,我们可以发现,在这些过程中存在着非常多的移位,而这些操作指令都非常耗时,并且也无法和其余指令结合组成流水线,这种情况非常严重地影响了算法的执行效率。再者,轮加密采用循环变换的方法,循环变换有一定机率会造成指令流水线的阻断和指令预取的作废[4]。
3.2 轮函数的优化
在AES算法的实现过程中中,轮函数有4种变换方式,我们可以通过改进和优化每个变换从而提高加密速度。如在实现ByteSub变换、MixColumn 02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。如在实现ByteSub变换、MixColumn02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。这样可以部分提高算法性能。如果在AES轮函数的操作中,将这4个操作统一采用一次查表的方法实现,如此即可大大提高算法的速度。首先设X是密钥数组,用xi,j表示X中第i行第j列的元素,xj表示X的j列 。
3.3 优化字节与字之间的相互转换
在AES算法中,密钥扩展以及加密和解密时主要是以字为单位进行处理的。所以通过优化这一部分可以得到性能上的提高。
字节到字的转换代码:
uint32 get_word(pt)
//pt 指向待转换字节的最高位字节
{ m=((uint32)(pt)[0]<<24)
((uint32)(pt)[1]<<16)
((uint32)(pt)[2]<<8)
((uint32)(pt)[3])
return m;
}
改进后的的字节转换代码为:
void get_word(uint8*b,uint32*m)
//b指向四个字节的最低位
{ *m=*((uint32*)b)//m指向转换后的字
}
同理,改进后的字到字节的转换代码:
void put_word(uint32*m,uint8*b)
//将1个字转换成4个字节
{ uint8*b=(uint8*)(m);
//b指向转换后的字节的最低位字节
*(b+1)=*(p+1);
*(b+2)=*(p+2);
*(b+3)=*(p+3);
}
3.4 AES算法解密密钥生成
字节移位和S盒变换实现了加密密钥的优化和改变,与此相对,解密密钥亦可用同等方法进行研究与改进。设a0,a1,a2,a3为一个字的4个字节,b0,b1,b2,b3为a0,a1,a2,a3经过InvMixColumn变换的结果。该变换可表示为InvMixColumn(x)=T-1(S[x])综合上述式子可得如下结论:
InvRoundKey[i]=InvMixColumn(RoundKey[N-i])=T-1(S[RoundKey[N-i]])(i=0,i=N除外)即解密密钥可以利用加密密钥、T-1表和S表实现。
4 测试与性能比较
AES算法支128位、192位、256位的密钥长度,这里使用FIP(Sfederal Information Processing Standards)出版的FIPS-PUB 197所给出的例子来进行测试。在当前测试环境下,因为每一个分组用AES算法加密的时间是10-6秒数量级,所以采用重复加密N次的方法来测试加密时间。以下是测试结果比较。
从以上两表对比可以看出,本文所做的改进和优化在一定程序上实现了对现在AES算法的基本功能,而且速度也提高了1.3522-1.6521倍左右。
5 结语
文章对深入的分析了AES算法在无线网络中使用的方法和过程,并且优化和改进了算法的性能和效率。对AES算法的改进策略主要包括用一次查表的方法改进AES轮函数;通过指针类型转换来优化字节与字之间的转换以及加密解密函数中的移位操作,通过查表的方法进一步改进解密密钥生成函数。通过测试证明,本例所优化改进的AES算法既实现了AES算法的基本功能,又使得加密速度比原来提高了大约1.3522-1.6521倍左右。
AES加密算法作为国际通用的数据安全加密标准,有着高效率、高安全性、高性能、方便和优雅一系列优点,在应用到无线网络的过程中,为无线网络的安全直到了很好防护作用。随着智能手机和平板的不断发展,无线网络普及程度越来越高,AES加密算法在加密领域应用会不断优化,无线网络的应用会更加安全。
参考文献:
[1]杨改贞.AES加密算法在无线网络安全中的应用[J].长沙通信职业技术学院学报,2006(3):62-64.
[2]王莹,何大军.AES加密算法的改进与实现[J].电脑编程技巧与维护,2010(17):84-86.
[3]吴小博.AES加密算法分析与C++编程实现[J].计算机安全,2007(12):45-46.
[4]韩笑峰.AES加密算法在无线网络安全中的应用[J].科技信息(科学教研),2007(22):339,348.
[5]贾旭.AES算法的安全性分析及其优化改进[D].吉林大学,2010.endprint
2.2 无线健壮安全认证协议中的AES算法
无线健壮安全认证协议(WRAP),是基于128位的AES-OCB模式的加密算法[1]。AES算法所采用的操作模式OCB(Offset Codebook)是使用AES算法进行块加密,该方法首先将要加密的明文分成x个数据块,每个数据块的长度是128bit,将这x个数据块使用AES加密运算,这时可以生成x个加密数据块, 拼接起这x个加密数据块,与MIC、重放计数器(Replay Counter)三者一起作为加密数据负载,从而完成对明文数据的加密过程。在WRAP中,AES的主要是在WRAP的数据封装过程的数据处理的各个阶段中,其中产生密钥的过程是先通过802.1X协议建立链接,从而构建临时密钥,媒体访问控制(MAC)是通过连接请求应答以及临时密钥这三者一起通过密钥产生算法生成加密密钥[3]。此后媒体访问控使用WRAP数据封装算法,利用加密密钥对所有即将发送的单MAC服务数据单元(MSDU,MAC Service Data Unit)进行保护,而在数据加密之前,传输端根据所要发送的MSDU来选择合适的封装方式。再之后传输端对MSDU分组个数(其中AES分组长度为128bit)进行检验,如此即可选择适合的重放计数器[4]。之后设备使用WRAP临时加密密钥和Nonce对明文MSDU数据进行加密[5]。
3 AES算法密钥扩展及优化改进
3.1 AES算法优化方法
从以上AES算法的加密和解密工作原理中,我们可以发现,在这些过程中存在着非常多的移位,而这些操作指令都非常耗时,并且也无法和其余指令结合组成流水线,这种情况非常严重地影响了算法的执行效率。再者,轮加密采用循环变换的方法,循环变换有一定机率会造成指令流水线的阻断和指令预取的作废[4]。
3.2 轮函数的优化
在AES算法的实现过程中中,轮函数有4种变换方式,我们可以通过改进和优化每个变换从而提高加密速度。如在实现ByteSub变换、MixColumn 02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。如在实现ByteSub变换、MixColumn02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。这样可以部分提高算法性能。如果在AES轮函数的操作中,将这4个操作统一采用一次查表的方法实现,如此即可大大提高算法的速度。首先设X是密钥数组,用xi,j表示X中第i行第j列的元素,xj表示X的j列 。
3.3 优化字节与字之间的相互转换
在AES算法中,密钥扩展以及加密和解密时主要是以字为单位进行处理的。所以通过优化这一部分可以得到性能上的提高。
字节到字的转换代码:
uint32 get_word(pt)
//pt 指向待转换字节的最高位字节
{ m=((uint32)(pt)[0]<<24)
((uint32)(pt)[1]<<16)
((uint32)(pt)[2]<<8)
((uint32)(pt)[3])
return m;
}
改进后的的字节转换代码为:
void get_word(uint8*b,uint32*m)
//b指向四个字节的最低位
{ *m=*((uint32*)b)//m指向转换后的字
}
同理,改进后的字到字节的转换代码:
void put_word(uint32*m,uint8*b)
//将1个字转换成4个字节
{ uint8*b=(uint8*)(m);
//b指向转换后的字节的最低位字节
*(b+1)=*(p+1);
*(b+2)=*(p+2);
*(b+3)=*(p+3);
}
3.4 AES算法解密密钥生成
字节移位和S盒变换实现了加密密钥的优化和改变,与此相对,解密密钥亦可用同等方法进行研究与改进。设a0,a1,a2,a3为一个字的4个字节,b0,b1,b2,b3为a0,a1,a2,a3经过InvMixColumn变换的结果。该变换可表示为InvMixColumn(x)=T-1(S[x])综合上述式子可得如下结论:
InvRoundKey[i]=InvMixColumn(RoundKey[N-i])=T-1(S[RoundKey[N-i]])(i=0,i=N除外)即解密密钥可以利用加密密钥、T-1表和S表实现。
4 测试与性能比较
AES算法支128位、192位、256位的密钥长度,这里使用FIP(Sfederal Information Processing Standards)出版的FIPS-PUB 197所给出的例子来进行测试。在当前测试环境下,因为每一个分组用AES算法加密的时间是10-6秒数量级,所以采用重复加密N次的方法来测试加密时间。以下是测试结果比较。
从以上两表对比可以看出,本文所做的改进和优化在一定程序上实现了对现在AES算法的基本功能,而且速度也提高了1.3522-1.6521倍左右。
5 结语
文章对深入的分析了AES算法在无线网络中使用的方法和过程,并且优化和改进了算法的性能和效率。对AES算法的改进策略主要包括用一次查表的方法改进AES轮函数;通过指针类型转换来优化字节与字之间的转换以及加密解密函数中的移位操作,通过查表的方法进一步改进解密密钥生成函数。通过测试证明,本例所优化改进的AES算法既实现了AES算法的基本功能,又使得加密速度比原来提高了大约1.3522-1.6521倍左右。
AES加密算法作为国际通用的数据安全加密标准,有着高效率、高安全性、高性能、方便和优雅一系列优点,在应用到无线网络的过程中,为无线网络的安全直到了很好防护作用。随着智能手机和平板的不断发展,无线网络普及程度越来越高,AES加密算法在加密领域应用会不断优化,无线网络的应用会更加安全。
参考文献:
[1]杨改贞.AES加密算法在无线网络安全中的应用[J].长沙通信职业技术学院学报,2006(3):62-64.
[2]王莹,何大军.AES加密算法的改进与实现[J].电脑编程技巧与维护,2010(17):84-86.
[3]吴小博.AES加密算法分析与C++编程实现[J].计算机安全,2007(12):45-46.
[4]韩笑峰.AES加密算法在无线网络安全中的应用[J].科技信息(科学教研),2007(22):339,348.
[5]贾旭.AES算法的安全性分析及其优化改进[D].吉林大学,2010.endprint
2.2 无线健壮安全认证协议中的AES算法
无线健壮安全认证协议(WRAP),是基于128位的AES-OCB模式的加密算法[1]。AES算法所采用的操作模式OCB(Offset Codebook)是使用AES算法进行块加密,该方法首先将要加密的明文分成x个数据块,每个数据块的长度是128bit,将这x个数据块使用AES加密运算,这时可以生成x个加密数据块, 拼接起这x个加密数据块,与MIC、重放计数器(Replay Counter)三者一起作为加密数据负载,从而完成对明文数据的加密过程。在WRAP中,AES的主要是在WRAP的数据封装过程的数据处理的各个阶段中,其中产生密钥的过程是先通过802.1X协议建立链接,从而构建临时密钥,媒体访问控制(MAC)是通过连接请求应答以及临时密钥这三者一起通过密钥产生算法生成加密密钥[3]。此后媒体访问控使用WRAP数据封装算法,利用加密密钥对所有即将发送的单MAC服务数据单元(MSDU,MAC Service Data Unit)进行保护,而在数据加密之前,传输端根据所要发送的MSDU来选择合适的封装方式。再之后传输端对MSDU分组个数(其中AES分组长度为128bit)进行检验,如此即可选择适合的重放计数器[4]。之后设备使用WRAP临时加密密钥和Nonce对明文MSDU数据进行加密[5]。
3 AES算法密钥扩展及优化改进
3.1 AES算法优化方法
从以上AES算法的加密和解密工作原理中,我们可以发现,在这些过程中存在着非常多的移位,而这些操作指令都非常耗时,并且也无法和其余指令结合组成流水线,这种情况非常严重地影响了算法的执行效率。再者,轮加密采用循环变换的方法,循环变换有一定机率会造成指令流水线的阻断和指令预取的作废[4]。
3.2 轮函数的优化
在AES算法的实现过程中中,轮函数有4种变换方式,我们可以通过改进和优化每个变换从而提高加密速度。如在实现ByteSub变换、MixColumn 02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。如在实现ByteSub变换、MixColumn02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。这样可以部分提高算法性能。如果在AES轮函数的操作中,将这4个操作统一采用一次查表的方法实现,如此即可大大提高算法的速度。首先设X是密钥数组,用xi,j表示X中第i行第j列的元素,xj表示X的j列 。
3.3 优化字节与字之间的相互转换
在AES算法中,密钥扩展以及加密和解密时主要是以字为单位进行处理的。所以通过优化这一部分可以得到性能上的提高。
字节到字的转换代码:
uint32 get_word(pt)
//pt 指向待转换字节的最高位字节
{ m=((uint32)(pt)[0]<<24)
((uint32)(pt)[1]<<16)
((uint32)(pt)[2]<<8)
((uint32)(pt)[3])
return m;
}
改进后的的字节转换代码为:
void get_word(uint8*b,uint32*m)
//b指向四个字节的最低位
{ *m=*((uint32*)b)//m指向转换后的字
}
同理,改进后的字到字节的转换代码:
void put_word(uint32*m,uint8*b)
//将1个字转换成4个字节
{ uint8*b=(uint8*)(m);
//b指向转换后的字节的最低位字节
*(b+1)=*(p+1);
*(b+2)=*(p+2);
*(b+3)=*(p+3);
}
3.4 AES算法解密密钥生成
字节移位和S盒变换实现了加密密钥的优化和改变,与此相对,解密密钥亦可用同等方法进行研究与改进。设a0,a1,a2,a3为一个字的4个字节,b0,b1,b2,b3为a0,a1,a2,a3经过InvMixColumn变换的结果。该变换可表示为InvMixColumn(x)=T-1(S[x])综合上述式子可得如下结论:
InvRoundKey[i]=InvMixColumn(RoundKey[N-i])=T-1(S[RoundKey[N-i]])(i=0,i=N除外)即解密密钥可以利用加密密钥、T-1表和S表实现。
4 测试与性能比较
AES算法支128位、192位、256位的密钥长度,这里使用FIP(Sfederal Information Processing Standards)出版的FIPS-PUB 197所给出的例子来进行测试。在当前测试环境下,因为每一个分组用AES算法加密的时间是10-6秒数量级,所以采用重复加密N次的方法来测试加密时间。以下是测试结果比较。
从以上两表对比可以看出,本文所做的改进和优化在一定程序上实现了对现在AES算法的基本功能,而且速度也提高了1.3522-1.6521倍左右。
5 结语
文章对深入的分析了AES算法在无线网络中使用的方法和过程,并且优化和改进了算法的性能和效率。对AES算法的改进策略主要包括用一次查表的方法改进AES轮函数;通过指针类型转换来优化字节与字之间的转换以及加密解密函数中的移位操作,通过查表的方法进一步改进解密密钥生成函数。通过测试证明,本例所优化改进的AES算法既实现了AES算法的基本功能,又使得加密速度比原来提高了大约1.3522-1.6521倍左右。
AES加密算法作为国际通用的数据安全加密标准,有着高效率、高安全性、高性能、方便和优雅一系列优点,在应用到无线网络的过程中,为无线网络的安全直到了很好防护作用。随着智能手机和平板的不断发展,无线网络普及程度越来越高,AES加密算法在加密领域应用会不断优化,无线网络的应用会更加安全。
参考文献:
[1]杨改贞.AES加密算法在无线网络安全中的应用[J].长沙通信职业技术学院学报,2006(3):62-64.
[2]王莹,何大军.AES加密算法的改进与实现[J].电脑编程技巧与维护,2010(17):84-86.
[3]吴小博.AES加密算法分析与C++编程实现[J].计算机安全,2007(12):45-46.
[4]韩笑峰.AES加密算法在无线网络安全中的应用[J].科技信息(科学教研),2007(22):339,348.
[5]贾旭.AES算法的安全性分析及其优化改进[D].吉林大学,2010.endprint