针对蓝牙协议的基带层加密方案在密钥方面易受穷尽攻击、中间人攻击和EO算法容易受到代数攻击的问题,根据蓝牙设备的特点,我们提出了一种基于HCI层的加密传输方案,该方案具有足够高的安全强度,并且能在重传模式下保证较高的数据速率。

一、基于HCI层的蓝牙传输加密方案设计

主机控制器接口层(HCD处在L2CAP层与基带层之间,是主机与设备通信的通道。通常在L2CAP层会将长的服务数据包(SDU)拆分成短的协议数据包(PDU),然后通过HCI层传到基带层。流量控制和重传机制都在L2CAP进行设定,通过HCI进行管理和数据缓存。如果设置了流量控制和重传机制并出现了传输错误的问题,在基带层传输敏感数据时必须重新进行加密和解密,在信道干扰严重的情况下,就会影响传输速度。为了解决这个问题,本文将传输加密方案设计在HCI层,对要传输的已加密数据进行缓存。

1、加密密钥的安全获取

为了抵抗在加密密钥的生成过程中存在的穷尽攻击和中间人攻击,本文采用ECDH密钥交换方案抵抗穷尽攻击,同时利用预共享秘密信息的方法防止中间人攻击,HMAC-SHA-256算法保护数据的完整性和新鲜性,协议中用Hx表示。

协议双方经过图l所示的认证过程后,就可以生成此次的会话密钥LK,然后按照蓝牙协议中规定的方法将鉴权密码偏移(Authentication Cipher Offset,ACO)、当前的会话密钥和在加密协商过程中交换的随机数送入E3算法,从而获得安全的加密密钥。本协议的安全性主要取决于认证过程的安全性。

2、HCI层的加密流程

2000年10月美国国家标准和技术研究所正式宣布选择Rijndael作为AES算法,成为一种正式的商业加密标准。业界认为AES算法是足够安全的,因此,本文采用AES作为敏感数据的加密传输算法,对数据流进行机密性保护。

可以看到,敏感数据通过HCI进入蓝牙设备,根据蓝牙的分组类型将不同的蓝牙数据分类。把ACL分组数据和SCO分组数据送入AES加密模块,然后通过蓝牙射频发送到接收设备。接收方将收到的蓝牙分组后,首先判断蓝牙分组类型,如果为ACL分组或SCO分组,则利用AES算法模块进行解密,如果为其他分组,则直接交给主机。

3、加密方案实现方式

传输加密方案有2种实现方式:

(1)在蓝牙设备外实现;

(2)在蓝牙设备上实现。

方式(1)的优点是数据处理速度快,缺点是需要添加其他应用程序或硬件加密设备的支持。方式(2)的优点是不需要添加其他硬件设备支持,缺点是对蓝牙设备内部处理器的要求较高,可能影响数据传输速率。

本文采用方式(2),它能使设备本身具有安全性,是其他方式不可替代的。考虑到数据的传输速率问题,需要根据蓝牙设备内部微控制器特点对AES的实现方式进行优化,以获得更好的效果。

二、关键模块AES的固件实现

由于蓝牙设备资源的限制,在蓝牙设备上实现AES加密算法,需要对它的实现方式进行改进,尽量提高算法的加密和解密速度。主要考虑以下2个方面:

(1)蓝牙主机控制器主要分为2类:ARM7TDMI 32位RISC和XAP2 16位RISC处理器。

(2)蓝牙设备的存储空间为4 MB-8 MB,RAM大小为32 KB-64 KB,必须考虑代码的大小。

因此,将AES加密算法进行数学变换,把操作定义为字节或字上的操作,就能执行非常有效的操作。

1、基于16位RISC处理器的实现改进

对于16位RISC处理器,只能将其操作定义在8位的字节上。

(1)字节代换与行移位

用查表操作代替了基于矩阵乘法的复杂仿射变换。其中,字节代替变换为si,j= SBox[si,j],逆字节代替变换为si,j=iSBox[si,j]。

(2)列混淆变换与逆列混淆变换

列混淆变换是AES算法中最复杂的过程,它涉及字节乘和异或,由于蓝牙设备本身的计算能力有限,因此建议对列混淆进行重写,并使用查表的方式取代乘法操作。

综上可知,实现AES算法需要3张表以及存储这些表所需的756 Byte的存储空间。

2、基于32位RISC处理器的实现改进

对于32位RISC处理器,可以将操作定义在32位的字上。首先利用代数形式定义一轮的4个变换:

上述方程用向量的线性组合表示矩阵的乘法。定义4个256字的表,每个表接受一个字节的输入,同时输出一个列向量。因此,基于上述等式的实现仅需4张表、每轮每列的4次异或以及存储这些表所需的4 KB的存储空间。同理,对于解密操作,也可以将一轮的4个运算变换为上面方程的形式。

综上可知,实现AES算法需要8张表及存储这些表所需的8KB存储空间。

三、基于HCI层的蓝牙传输加密方案实验及结果分析

本文通过在CSR公司的BC04芯片和RF Micro Devices公司的SiW4000芯片上编写了固件程序,并利用它们传输了长度为1MB的文件,然后对密钥生成速度和安全性、数据加密和解密速度等测试结果进行了分析。

1、密钥生成分析

新的密钥生成方案采用改进的ECDH协议,安全强度明显优于蓝牙规范中简易的DH协议方案,而密钥生成速度则比原来略慢。

2、加密和解密处理速度分析

加密和解密处理速度测试结果如图4所示。可以发现,本方案的加密速度在非重传模式下低于蓝牙规范的基带层传输加密方案,而在重传模式下接近甚至等于协议的传输加密方案。另外,AES加密算法的安全强度远远高于EO算法。

3、整体性能分析

通过以上2项分析可以得出如下结论:

(l)与蓝牙规范提出的基带层加密方案相比,本方案的优点是加密密钥更加安全,能够抵抗以前的攻击。

(2)加密算法采用了AES分组密码算法,相对于EO算法或DES算法,其安全性更高。

(3)加密的位置处于HCI层,在流量控制和重传机制下,可以避免多次加密无用的数据。

(4)针对性更强,对不需要加密的数据进行了过滤,如命令分组、事件分组。

小知识之HCI

是一门交叉学科,主要研究关于设计、实现和评价供人们使用的交互计算系统以及有关这些现象进行研究的科学。