随着无线局域网(WLAN)技术的迅速发展,无线网络安全越来越受到人们的关注。但IEEE802.11协议中包含的有线等效保密(WEP)子协议存在着各种各样的安全缺陷,无法保证数据的机密性、完整性和对接入用户实现身份认证。
为了修补WEP协议,IEEE802.11工作组制定了TKIP(Temporal Key Integrity Protocol)安全协议。TKIP继续使用RC4算法,但实现了动态密钥更新,还增加了一个IV的杂凑函数和一个新的消息完整性校验算法,极大地提高了加密安全强度。但作为一个临时加密协议,由于WEP本身的缺陷,TKIP也很容易受到攻击。
为了彻底改善其协议的安全性能,IEEE802.11工作组在IEEE 802.11i中定义了一种基于高级加密标准(AES)的全新加密算法,以实施更强大的加密和消息完整性检查。
1 AES算法
AES (Advanced Encryption Standard)是1997年1月美国国家标准和技术研究所(NIST)发布征集的新加密算法。2000年10月2日,由比利时设计者Joan Daemen和Vincent Rijmen设计的Rijndael算法以其优秀的性能和抗攻击能力,最终赢得了胜利,成为新一代的加密标准AES。
1.1 Rijndael加密
Rijndael是一个密钥迭代分组密码,包含了轮变换对状态的重复作用。轮数Nr 的值取决于分组和密钥的长度。对于AES,当密钥长度为128比特时,Nr =10;当密钥长度为192比特时,Nr =12;当密钥长度为256比特时,Nr =14。
Rijndael算法的加密过程如图1所示。它包括一个初始密钥加法,记作AddRoundKey,接着进行Nr-1次轮变换(Round),最后再使用一个轮变换(FinalRound)。
轮变换由4个步骤组成:SubBytes,ShiftRows,MixColumns和AddRoundKey。最后一轮与前Nr -1次轮变换稍有不同,省掉了其中的MixColumns步骤。
步骤SubBytes是Rijndael算法中唯一的非线性变换——砖匠置换。
步骤ShiftRows是一个字节换位,它将状态中的行按照不同的偏移量进行循环移位。使第i 行第j 位的字节移动到位置(j -Ci)mod Nb,移动偏移量Ci 的值依赖于Nb 的取值。其中Nb =分组长度/32,对于AES,Nb 取固定长度4。
步骤MixColumns是作用在状态各列的砖匠置换。
密钥加法AddRoundKey将状态与一个轮密钥进行异或。轮密钥是由密码密钥通过密钥编排方案[1]导出。轮密钥的长度等于分组的长度。
1.2 Rijndael解密
Rijndael解密算法有2种形式。一种是直接解密算法,即直接利用步骤InsubBytes,InvShiftRows,InvMixColumns和AddRoundKey的逆并倒置其次序对数据进行解密。
另一种是等价解密算法,其实现原理如图2所示。等价解密算法有利于有效实现良好的运算次序。
2 基于分支编码本模式的AES保密机制
2.1 AES-OCB加密原理
OCB (Offset Codebook)是802.11健壮安全网络(RSN)AES算法所采用的操作模式。OCB算法使用AES块加密,利用一个临时密钥K和一个随机数(Nonce)完成对数据的保密和完整性检验。
AES-OCB数据加密原理如图3所示。OCB加密算法首先把明文分成m个128比特的数据块,然后分别对m个数据块进行异或、AES加密等运算,生成m个加密数据块,再将m个加密数据块拼接,与重放计数器(Replay Counter)、消息完整性检验码(MIC)一起作为加密数据负载,完成对明文数据的加密。
如图3所示,分支编码本的值L 0可以由密钥K通过对128比特的0字符串进行AES加密运算而获得,其数学表达形式为:
L0=AES_EncryptK (0128) (1)
其它分支编码本的值可以由L 0通过有限域乘法算出。
在使用OCB模式对数据进行加密的过程中,设备要为每一个加密帧产生一个新的Nonce,用于计算偏移量(Offset)的值:
Offset0=AES_EncryptK (Nonce ?茌L0) (2)
其它偏移量的值可以由Offset0通过递推而得到,其数学表达形式为:
Offseti =Offseti -1?茌Lntz (i ) (3)
加密数据块Ci =AES_EncryptK (Mi ?茌Offseti )?茌Offseti
i =1,2,…,m -1(4)
其中,Mi 用来表示第i 个明文数据块。
当i =m 时,
Zm =AES_EncryptK (|Mm |?茌L-1?茌Offsetm ) (5)
Cm =Mm ?茌 (the first |Mm | bit of Zm ) (6)
其中|Mm |表示第m个明文数据块的比特长度。
消息完整性检验码
MIC =AES_EncryptK
(M1?茌M2…?茌Mm-1?茌Zm?茌Cm 0*?茌Offsetm+1)(7)
其中Cm 0*表示将加密数据块Cm 补0生成一个128比特的数据块。
最后将128比特的消息完整性检验码数据块截断,取前64比特作为输出负载MIC。
2.2 AES-OCB解密原理
AES-OCB数据解密原理如图4所示。其初始化过程与加密时相同。
明文数据块Mi 为:
Mi =AES_DecryptK (Ci ?茌Offseti)?茌Offseti i =1,2,...m-1 (8)
当i =m 时,
Zm =AES_DecryptK (|Cm |?茌L -1?茌Offsetm ) (9)
Mm =Cm ?茌(the first |Cm | bit of Zm ) (10)
其中|Cm |表示第m个密文数据块的比特长度。
消息解密结束后,MIC 的值可以由解密明文计算出来。将计算出来的MIC 与接收来的MIC 进行比较,确定OCB密文是否为真[3]。
3 AES在WLAN中的实现
无线健壮安全认证协议(WRAP)位于802.11重传功能体系结构之上,是一种基于128 比特AES OCB模式的加密算法。WRAP的加密过程主要包括三个部分:密钥产生进程、数据封装进程以及数据解封进程。
3.1 WRAP的数据封装过程
WRAP的数据封装过程主要由下面几个步骤构成:
(1)根据所要发送的MSDU数据选择合适的封装方式
在数据加密之前,传输端首先要检验所要发送的数据是单播MSDU还是多播/广播MSDU,从而决定相应设备使用何种方式保护要发送的MSDU。
(2)递增传输数据分组计数,选择合适的重放计数器
在选择好封装方式之后,传输端首先要对所要传输的MSDU数据分组个数进行检验。分组个数为:
式中, 表示将向上取整,AES分组长度为128比特。
如果将要发送数据分组的个数m与已经发送了的数据分组的个数之和大于 248,那么密钥就会被认为已经耗尽,丢弃所有要传输的数据包,直到原先的密钥被一个新的密钥所取代。
另外,传输端还要选择一个合适的重放计数器。如果所选重放计数器的值为228-2=268435454(或者更大),那么一个新的有效的Nonce将无法构建,从而使安全保障失效。在新的密钥到来之前,发送端不能在该链路或广播/多播通信信道上发送任何MSDU,数据封装算法也会丢弃所有的数据包。
如果将要发送数据分组的个数m与已经发送了的数据分组的个数之和小于 248,而且所选重放计数器的值小于268435454,那么传输端可以很容易构建出另一个有效的Nonce,同时将已发送数据分组变量的值加m,重复计数器的值加2,进行下一步操作。
(3)构造重放计数器字段:重放计数器占有4个字节的字段长度,用来传输MSDU序列号。重放计数器的主要作用是构造Nonce和检测接收到的MSDU是否被重放。
(4)构造OCB Nonce:
OCB模式为了保障消息的安全性,要求用来加密每一条消息的Nonce都是独一无二的。重放计数器、QoS通信类别、MSDU源MAC地址和MSDU目的MAC地址共同作用构成OCB Nonce,来保证Nonce的唯一性。
(5)由目的MAC地址构造一个相关的数据分组。
(6)使用AES-OCB加密算法对MSDU和相关数据进行加密:
设备使用WRAP临时加密密钥TK和Nonce对明文MSDU数据进行加密,产生两个输出结果:
(7)构造MSDU负载。
3.2 WRAP的数据解封过程
WRAP的数据解封过程主要由下面几个步骤构成:
(1)根据接收来的MSDU数据选择合适的解封方式
接收端根据发送和接收MAC地址以及KeyID比特值,为接收来的MSDU选择合适的解封方式。接收地址是广播/多播,用广播的方式进行解封;否则,就用单播的方式进行解封。
(2)对接收来的MSDU数据进行基本的完整性检验
选择好解封方式后,对接收来的MSDU负载进行完整性检验,主要分为两个步骤:
首先检验MSDU负载是否满足15个字节以上的字节长度。如果MSDU负载的长度不够15个字节,那么接收端就会丢弃该MSDU。MSDU至少包含有3个字节的逻辑链路控制(LLC)头和12个字节的基于协议头字段。
然后检验接收来数据分组的个数:
式中, 表示向上取整。减去12是考虑到MSDU重放计数器字段和OCB标识符共占有12个字节长度。如果数据分组的个数m与WRAP已经接收到的数据分组个数之和大于248,那么接收端将丢弃MSDU。
(3)从接收来的MSDU数据中提取重放计数器,QoS传输级别,以及源MAC地址和目的MAC地址的值,构建OCB Nonce。
(4)利用构建好了的Nonce和临时密钥对MSDU数据进行解密
MSDU数据的解密是通过对Nonce和AES解密密钥的使用来实现的。利用OCB解密算法对MSDU数据进行解密会产生下面两种可能的输出结果:
(5)单播重放检验
如果接收到的数据帧是单播MSDU,那么接收端就要判断它是一个新帧还是一个重放。如果接收到的数据是多播/广播MSDU,那么接收端就跳过这一步。
重放保护的功能通过对MSDU序列号的检验来实现。若<QoS-Service-Class, SeqNum>对在有效的MSDU中没有作为上下文密钥出现过的话,接收该MSDU;否则,将该MSDU丢弃。
(6)完成接收
如果接收来的MSDU没有因为上述原因被丢弃,那么接收端将已经接收数据分组(RecvdBlocks)计数器的值加m,整个解密过程完成。
4 AES算法的攻击分析
不管是从学术和理论的角度,还是从实际角度来看,目前尚未存在对Rijndael算法完整版的成功攻击,但提出了几种对Rijndael简化算法的攻击方法。其中最主要的攻击算法是L. Knudsen提出的Square攻击[4],在混合步骤MixColumn中的列具有最大分支数,而且字节换位ShiftRows提供最佳扩散性的前提条件下,它对4到6轮的Rijndael简化版本有效。其思想是利用第4轮字节替换前后平衡性的改变来猜测密钥字节。文献[5]中作者在667 MHz奔腾Ⅲ上对4轮Rijndael简化算法实现Square攻击,耗时仅为100 ms。通过对4轮Rijndael简化算法进行初始和末尾扩展可以将攻击扩展到6轮。
N. Ferguson等在文献[6]中提出的Herds攻击将Square攻击更进一步扩展到了8轮,它需要2128-2119个选择明文和2104比特的存储空间。它不适用于128比特密钥的情况;对于192比特密钥的情况,工作因子相当于2188次密码运算;对于256比特密钥的情况,其工作因子相当于2204次密码
运算。
H. Gilbert和M. Minier开发的四轮区分器,也将对Rijndael简化算法的攻击提高到了7轮。它只适用于128比特的密钥情形,攻击复杂度大约相当于2192次密码轮变换。
通过发掘密码设计的其它弱点,采用新的攻击技术,还发展出了一些其它的针对Rijndael简化算法的攻击方法。如密钥相关攻击、部分和攻击、冲突攻击等。表1列出了一些攻击方法及其相应的时间和空间复杂度。
5 结束语
作为一种全新的高级加密标准,AES加密算法采用对称的块加密技术,提供比WEP/TKIP中RC4算法更高的加密性能,它将在IEEE 802.11i最终确认后,成为取代WEP的新一代的加密技术,为无线网络带来更强大的安全防护。
6 参考文献
[1] Joan Daemen, Vicent Rijmen. 高级加密标准(AES)算法——Rijndael的设计[M]. 谷大武, 徐胜波译. 北京: 清华大学出版社, 2003.
[2] IEEE 802 Committee of the IEEE Computer Society. 802.11i Draft[S].
[3] Phillip Rogaway. Proposal to NIST for a Block-cipher Mode of Operation which Simultaneously Provides Privacy and authenticity[DB/OL]. http://www.cs.ucdavis.edu/~rogaway/ocb/ocb.pdf, 2001-04.
[4] Daemen J, Knudsen L R, Rijmen V. The Block Cipher Square . In: Biham E, eds. Fast Software Encryption ´97, LNCS 1267[C], Springer-Verlag, 1997:68—87.
[5] Wei Baodian, Liu Dongsu, Wang Xinmei. The Principle, Implementation and Cryptanalysis of AES Algorithm Rijndael[J]. Communications Technology. 2002(12).
[6] Ferguson N, Kelsey J, Schneier B, et al. Improved Cryptanalysis of Rijndael. In: Schneier B, eds. Fast Software Encryption 2000, LNCS 1978[C], Springer-Verlag, 2001:213—231.
收稿日期:2004-03-08
[摘要] 高级加密标准(AES)加密算法Rijndael采用对称的块加密技术,提供比WEP/TKIP中RC4算法更高的加密性能,它将成为取代WEP的新一代的加密技术,为无线网络带来更强大的安全防护。文章主要讲述了AES加密算法,在分支编码本(OCB)模式下的AES加密机制原理,AES算法在WLAN中的应用,以及现有的一些针对AES算法的攻击方法。
[关键词] 高级加密标准;分支编码本模式;无线局域网;性能分析;无线健壮安全认证协议
[Abstract] Advanced Encryption Standard (AES) is a symmetric block ciper that is based upon the Rijndael algorithm. It performs better encryption than WEP/TKIP, and is expecting to replace WEP, strengthening wireless information security. This paper describes AES and Rijndael algorithm, a ciper suite based on the AES and Offset Codebook (OCB) mode, the implementation of AES in WLAN, and some attacks on the ciper AES.
[Keywords] Advanced Encryption Standard; Offset Codebook mode; Wireless LAN; performance analysis; Wireless Robust Authenticated Protocol