李仁杰
(武汉邮电科学研究院 湖北 武汉 430074)
基于BLE芯片CC2541的AES CCM加密解密算法的实现
李仁杰
(武汉邮电科学研究院 湖北 武汉430074)
蓝牙SIG工作组于2014年12月02日发布了最新的蓝牙4.2协议,该协议保留了之前发布的4.0版本中的Bluetooth Low Energy的相关内容,其中包括AES CCM加密解密算法。针对TI官方只提供CCM加密解密库文件但未同时提供详细参考文档的实际情况,本文结合CCM算法和蓝牙协议以及CC2541芯片文档,具体讨论了如何设置相关寄存器,以在CC2541芯片上实现AES CCM加密解密算法。
蓝牙;无线通信;信息安全;加密解密;CCM
Bluetooth 4.0规范提出了Bluetooth Low Energy(以下简称BLE)协议。BLE协议指出,链路层(Link Layer)的数据加密认证方式采用AES CCM算法。TI CC2541是一款基于BLE开发的芯片,该芯片自带的AES协处理器(AES Coprocessor)可以实现 CBC、CFB、OFB、CTR、ECB、CBC MAC等多种加密解密算法[1,7]。TI官方提供的CC2541芯片文档并没有针对AES协处理器的操作使用给出详细的说明,只是大概的指出了加密解密的一些流程。本文详细讨论了如何在CC2541芯片上通过AES协处理器来实现BLE的AES CCM加密解密算法。
BLE链路层采用CCM算法实现认证和加密。CCM实际上分为CBC-MAC认证算法和CTR加密算法两部分[1]。CBCMAC认证算法的输出是长度为M的认证字段T,CTR加密算法针对两种数据进行加密:其一是针对认证字段T进行CFB/OFB加密,得到的输出是加密后的认证字段U,如图1所示;其二是针对消息字段m(可以划分为一个或多个blocks,不足一个block的部分补0)进行CTR加密,得到的输出是加密后的消息字段,如图2所示。

图1 认证字段的生成和加密Fig.1 Generation and encryption of authentication field

图2 消息字段的加密Fig.2 Encryption of message field
CCM算法有2个重要的参数:认证字段字节长度M和长度字段字节长度L。……