WiMAX数据传输加密方案设计与实现
来源:电子工程世界 作者:—— 时间:2010-06-17 10:56
3 AES-CCM算法实现及结果分析
算法模块基于富士通3400 wiMAx开发板ARM+VxWorks平台开发,采用通用C库函数,可以方便地移植到各种需要安全加密处理的嵌入式产品中。程序提供两个接口,AES算法接口和AES-CCM算法接口。前者可以用于对传输加密密钥TEK的加密处理,后者可以用于对传输数据的加密处理,使用者只需简单的调用函数即可。程序框图如图4所示。
程序中实现了802.16 MAC PDU的构建、8 bCRC报头校验、32 bC2RC PDU校验、CCM加密模块、CCM解密模块、AES加密模块。
3.1 算法关键模块实现
3.1.1 CCM加密模块
AES-CCM算法中,加密函数使用128 b密钥长度的AES算法。加密前后WiMAX MAC PDU结构变化如图5所示。
CCM加密模块流程如图6。该模块输入为密钥K和明文P。在计算MAC T和计数块S时,调用AES加密程序。
3.1.2 密钥K
在密钥生成方法中,采用了随即函数rand()和系统时钟函数tickGet(),可以保证密钥的惟一性和更高的不可推测性。程序如下:
3.1.3 计数器发生函数
计数器发生函数产生的计数块,由PDU报头,PN,递增的整数i构造,长16个字节即128 b。函数如下:ctr preload为数组名,该数组用于存放生成的计数块;modu为指向PDU数据的指针;pn vector为PN;i为递增的整数,每计算一次计数块后加1。
3.2 算法模块应用方法设计和实现
算法模块的应用方法主要根据TEK(传输加密密钥)和CID(连接标志)的对应关系设计。在802.16协议中每一个CID都对应惟一的密钥资源,因此可以根据CID找到对应的密钥。在系统中创建两个表,一个是TEK表:用于存放加密密钥;另一个是CID表:用于存放CID值和对应密钥索引。CID表中记录结构如图7所示。Type字段表示使用的加密方法,O表示DES-CBC,1表示AES-CCM;Key index字段值表示该CID标志对应的密钥信息,在TEK表中的索引位置;CID字段表示CID标志值。
发送端算法模块调用流程:在数据发送前,系统检测报头中加密控制位的值,如为1则表示该PDU需要加密处理,再根据报头中密钥索引号及加密模式选择位,选择特定的加密算法和密钥,对数据进行加密处理,如加密方法为AES-CCM,则调用CC2M加密模块对数据进行加密。
接收端算法模块调用流程:当接收到一个PDU数据时,系统先检测报头中的CID标志值是否存在于本地CID表中,如不存在则丢弃该PDU;如存在则找到对应的CID记录,从中读取Type和Key index的值,根据Key index值,从TEK表中读取解密密钥,然后调用CCM解密模块对PDU进行解密处理。