ULP蓝牙技术的安全设计
2007年6月,Wibree技术被纳入蓝牙技术联盟(SIG),并更名为ULP(超低功耗)蓝牙【1】。它继承了传统蓝牙规范的优点,优化运用,且耗能更少,成本更低,用于小型设备件的简单的数据传输。
Wibree作为一项极低耗电量蓝牙技术成为蓝牙规格的一部分,是一种新的低功率无线技术, 为业界开拓了新的市场机会及创新空间。由于采用无线方式进行通信,因此,ULP蓝牙跟传统蓝牙一样面临传输数据被截获的危险。所以如何保证ULP蓝牙运用的安全,是ULP蓝牙技术设计的一个核心问题。
本文基于Bluetooth SIG的技术草案【2】,讨论了ULP蓝牙技术安全结构,介绍ULP蓝牙的地址生成,具体研究了ULP蓝牙的认证、密钥生成和匹配原理及相关过程。
2.ULP蓝牙的安全构架【3】
安全性是ULP蓝牙协议中必不可少的一部分,它提供使用的保护和信息保密。如图1所示,ULP蓝牙系统有三个逻辑组成部分:UIP控制器、ULP主机、HCI(主机控制器接口:介于UIP控制器与ULP主机之间,提供通信服务)。ULP控制器由物理层和链路层组成;ULP主机中主要是ULP的L2CAP协议;高层主要是应用层协议,多种剖面在高层中应用。而安全模块位于ULP控制器中的链路层和ULP主机的L2CAP协议中,由主机控制器提供控制和数据。
ULP蓝牙工作在2.4GHz的ISM(Industrial ScienTIfic Medical)频段,其工作的中心频率为2402+K*2MHz(K=0~39),即,工作频带宽度为2~3.5MHz。划分为40个物理信道,其中包括3个广播信道和37个数据信道。
结构中的链路层有两种工作状态:空闲状态和连接状态,并且,其链路层只能工作在一种工作状态下。同时,ULP蓝牙设备还有5种工作模式:广播模式,扫描模式,申请模式,主设备,从设备。
ULP L2CAP(Logic link control and adaptaTIon protocol)处于链路控制协议之上,属于数据链路层。L2CAP对上层协议可以提供面向连接和无连接数据服务。L2CAP允许高层协议和应用发送和接收最长64K字节数据包(L2CAP服务数据单元,SDU)。
链路层中的连接加密过程由ULP主机负责,而且它还包含一个由链路层独立负责的加密子进程。加密过程由HCI_Setup_EncrypTIon命令来初始化。使用这个命令后,主设备的ULP主机就表明了链路层连接了新的加密模式。只要有这样一个来自于ULP主机的命令,一个SEC_EMPTY_REQ数据包就会在链路层的连接上被传送.
在被用HCI_Command_Completed命令所表示的过程完成之前的时间当中,在HCI_Setup_EncrypTIon命令之后,不允许有来自于ULP主机的任何数据包。
3.ULP蓝牙认证及密钥生成过程
3.1 ULP蓝牙地址【4】
ULP蓝牙使用两种类型的地址:设备地址和存取地址,设备地址细分为公有和私有设备地址。每个ULP设备应该分配一个固定48bit的ULP蓝牙公共设备地址,而私有设备设置的地址是可选的。一个ULP设备只有在证明设备可靠性后,才显示其私有地址。每个链路层的连接有一个伪随机32bit的存取地址,由连接中的申请者产生,每个链路层连接有不同的存取地址。ULP蓝牙系统中,只能有一个数据包格式能在广播通道数据包和数据通道数据包中同时使用。如图2所示,每个数据包含4个实体:标头,同步字,PDU,和CRC。广播数据包中的同步字是固定的,数据通道中的数据包同步字是链路层连接的存取地址。
3.2广播工作模式中认证
ULP系统中,每一台设备会产生和保持两个随机生成的密钥:鉴权(identity root)和加密(encryption root)。鉴权用于连接中生成私有地址和区分标识符密钥连接中的标识符。加密用来确立密钥标识符的安全。在任何加密连接中,广播创建密钥作为会话密钥的基础。集合密钥是在某些配对选择中创建,这些密钥只是用作保护(未来)广播中密钥的传递。
加密模式中,通过广播方式把创建的密钥分派给需要连接的所有设备或实体,鉴权的一个应用建立私有地址。因为鉴权每次只支持一个身份,所以许多申请者将获得同样的鉴权。广播向设备提供标识符的加密(伴随16bit 标识符),在加密模式中该设备是支持连接的设备。规范的基本概念有唯一的标识符密钥,被称为"长期密钥"(Long Term Key),这个密钥分配给每个申请者。此外,加密规则仅仅是推荐使用并且在广播之外。长期密钥是不可见的,在原则上能使用任何映射在 16位和128位之间密钥。加密标识符密钥有以下几种:IRK(Identity Resolving Key)、PIR(Pairing Identity Root)、DHK(Diversifier Hiding Key)、 PIRK(Pairing Identity Resolving Key)、PDHK (Pairing Diversifier Hiding Key)。
在广播模式条件下,广播设备产生一个初始随机向量(IRV),该向量由10个字节的新随机数组成,也是链路层(LL)传输给申请者的第一个可能的数据包。广播设备初始化时,到达一个连接请求。
连接请求包括:SEC字段(表明是否是加密请求)、PI字段(表明申请者连接一个匹配认证)。SEC=1,表示有2字节的加密区分标识符(Ediv)和申请者6字节的随机地址。
如图3所示,在SEC=1的条件下,ULP蓝牙广播模式下的认证步骤如下:
1.解密区分标识符隐藏密钥:发送HCI_Set_key(0x00,DKH)命令到链路层,返回HCI_Command_Complete(),并再发送加密请求命令HCI_encrypt(addmaster),PAL返回请求完成命令HCI_Command_Complete()。
由EDHK计算div,
此具体过程是:
由Y = EDHK
(IRA(初始化随机地址),
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00)
div = {Y0, Y1} XOR {Ediv0, Ediv1}得出。
或者在PI=1的条件下,即匹配连接中有
Y = EPDHK (IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出div = {Y0, Y1} XOR {Ediv0, Ediv1}
2.创建长期密钥:发送设置加密命令到链路层HCI_Set_key(0x00,ER),返回完成命令HCI_Command_Complete(),再发送请求加密长期密钥命令HCI_encrypt(div),返回完成创建长期密钥命令HCI_Command_Complete(LTK)。
按以下公式重新创建长期密钥LTK,
LTK=EER (div,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
3.创建会话密钥命令HCI_Set_key(0x00,LTK),返回完成命令HCI_Command_Complete(),再发送请求加密长期密钥命令HCI_Encrypt(addmaster/IRV),返回完成创建长期密钥命令HCI_Command_Complete(SK)。。
4.链路层设置会话密钥和初始值:初始值为
别发送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到链路层进行设置,返回完成设置命令HCI_Command_Complete()。生成会话密钥SK和IV,并在链路层设置(广播地址AA = {A0,A1, …,A5})。
- 英飞凌MD8710:多样化应用程序医疗平台(11-20)
- ORIGOsafe智能电子产品强制汽车安全驾驶(02-19)
- 体验蓝牙4.0灯控LED趣味:智能手机“掌”控一屋子照明(07-16)
- Bluetooth 4.1:智能启用物联网(03-08)
- 可穿戴设备市场起飞,蓝牙Smart引爆设计热潮!(02-17)
- 智能戒烟,蓝牙4.0(BLE)智能电子烟方案(06-16)