0 引 言
在各种通信设备和终端电子产品设计方法中,为使产品具有更强大的功能,越来越多地采用了嵌入式系统,WiMAX无线通信设备亦是如此。因此设计和开发现代网络和通信技术中的安全技术时,必须和嵌入式技术结合在一起。本文提出和实现了一种基于AES-CCM加密算法和ARM+VxWorks嵌入式系统的WiMAX无线接入设备加密技术解决方案,并给出了算法模块在设备中的应用方法。
1 算法实现原理
AES对称密码已经广泛应用于数据的保密和数据完整性认证。在具体运用时,都会选择一种具体的工作模式。目前AES算法已有多种工作模式,例如:ECB,CBC,CFB,OFB,CRT,CCM,GCM和AESKW。其中CCM(Counter with Cipher Block Chaining-Message Authentication Code)模式是一种同时提供加密和鉴别服务的全新操作模式。
1.1 CCM模式原理
使用CCM模式的基本条件包括,发送方和接收方定义相同的分组密码算法Ek()(这里为AES加密算法)、密钥K、记数器发生函数、格式化函数F()和鉴别标记长度Tlen、有效载荷长度Plen、随机值N。加密算法过程如下:
Step 1:计算格式化函数F(N,A,P),产生数据块序列B0,B1,…,Br(每块为128 b);
格式化函数F将N,A,P整合在一起,并分组为r个数据块。对数据块加密,得到MAC值T,加密计数器发生函数产生的计数块,加密所得sj和P与T异或得到密文C。解密过程则相反。
1.2 AES算法原理
AES算法加密过程由4个不同的处理阶段组成,称为:字节代换、行移位、列混淆、轮密钥加。输入数据数组state进行10轮上述处理后,得到加密密文。结构如图1所示。
2 WiMAX中CCM应用规则改进
在802.16协议中规定PDU数据包加密后结构如图2所示。
6个字节的包头和4个字节的PN不需要经过加密处理。PN(Packet Number)在协议中规定用于防止重放攻击,如当前收到的数据包的PN小于前一个数据包的PN时,当前收到的数据包将被丢弃。PN在发第一个包时值为1,以后每发一个包则加1。由于PN和包头都未经加密处理,当窃听者得到一个PDU时,将得到当前PN,并推导出以后各个数据包的PN值。因此引进CCM模式虽然能提高攻击者进行重放攻击的难度和成本,但并不能在技术上彻底防止重放攻击。这里采用对PN进行加密处理来防止由于PN值泄露而遭受可能的重放攻击。加密算法选择AES算法,密钥为802.16协议中的密钥加密密钥(KEK)。AES,KEK在系统中是用于对传输加密密钥(TEK)进行加密处理的,本身已经存在于系统中,而且被良好地设计,在控制信息交互过程中,KEK定时更新。因此采用该方法不会给系统带来额外的开销,不需要引入新的加密算法,不需要维护密钥。采用该方法PDU加密后结构如图3所示。
由于对PN进行AES加密处理,因此加密后的PN长度将为16个字节。这降低了传输数据中有效载荷DATA的百分比,不过在实际应用中DATA往往达到上千或上万个字节。因此为提高安全性和抗攻击性,牺牲如此少的传输效率是值得的。
3 AES-CCM算法实现及结果分析
算法模块基于富士通3400 wiMAx开发板ARM+VxWorks平台开发,采用通用C库函数,可以方便地移植到各种需要安全加密处理的嵌入式产品中。程序提供两个接口,AES算法接口和AES-CCM算法接口。前者可以用于对传输加密密钥TEK的加密处理,后者可以用于对传输数据的加密处理,使用者只需简单的调用函数即可。程序框图如图4所示。