ULP蓝牙技术的安全设计

时间:2010-12-09

     摘 要:介绍了ULP蓝牙技术及系统结构,重点描述了ULP蓝牙的安全机制,详细分析了其地址生成、过程、匹配和密钥交换等关键技术。比较了ULP蓝牙与传统蓝牙在安全方面的不同。

  2007年6月,Wibree技术被纳人蓝牙技术联盟(SIC),并更名为超低功耗蓝牙(ULP)。它继承了传统蓝牙优化运用、耗能更少、成本更低的优点,适用于小型设各件简单的数据传输。

  Wibree作为一项耗电量极低的蓝牙技术成为蓝牙规格的一部分,是一种新的低功率无线技术,为业界开拓了新的市场机会及创新空问。由于采用无线方式进行通信,因此,ULP蓝牙与传统蓝牙一样面临传输数据被截获的危险。所以如何保证tJLP蓝牙运用的安全,是ULP蓝牙技术设计的—个核庀问题。

  本文基于Bluetooth SIC,的技术草案,讨论了ULP蓝牙技术的安全结构,介绍了ULP蓝牙的地址生成及密钥生成和匹配原理的相关过程。

  1 ULP蓝牙的安全构架

  安全性是ULP蓝牙协议中必不可少的一部分,它提供使用保护和信息保密。 如图1所示,ULP蓝牙系统有三个逻辑组成部分:ULP控制器、ULP主机和HCI(主机控制器接口,介于ULP控制器与ULP主机之间,提供通信服务)。ULP控制器由物理层和链路层组成;ULP主机中主要是ULP的LZCAP协议;高层主要是应用层协议,多种剖面在高层中应用。而安全模块位于ULP控制器中的链路层和ULP主机的LZCAP协议中,由主机控制器提供控制和数据。

ULP蓝牙系统结构

图1 ULP蓝牙系统结构

  ULP蓝牙工作在2.4 GHz的ISM(Industrial ScientificMedical)频段,其工作的中心频率为2402+K×2 MHz(K=0~39),即工作频带宽度为2 MHz~3.5 MHz。划分为40个物理信道,其中包括3个广播信道和37个数据信道。

  结构中的链路层有两种工作状态:空河状态和连接状态,其链路层只能工作在一种工作状态下。同时,ULP蓝牙设备还有五种工作模式:广播模式、扫描模式、申请模式、主设各及从设各。

  ULP L2CAP(Logic Link Control and Adaptatibn Protocol)处于链路控制协议之上,属于数据链路层。L2CAP对上层协议可以提供面向连接和无连接数据服务。L2CAP允许高层协议、应用发送和接收长64 KB数据包。

  链路层中的连接加密过程由ULP主机负责,其中包含一个由链路层独立负责的加密子进程。加密过程由HCI Setup Encryption命令初始化。使用这个命令后,主设备的ULP主机就表明了链路层连接了新的加密模式。只要有这样一个来自于ULP主机的命令,一个SEC_EMPTY_REQ数据包就会在链路层的连接上被传送。

  在Hal_Setup Encryption命令之后,HCl_Comman_Compleged命令所表示的过程完成之前,不允许有来自于ULP主机的任何数据包。

  2 ULP蓝牙及密钥生成过程

  2.1 ULP蓝牙地址

  ULP蓝牙使用两种类型的地址:设各地址和存取地址,设备地址细分为公有和私有设备地址。每个ULP设备应该分配一个固定48 bit的ULP蓝牙公共设备地址,而私有设各设置的地址是可选的。ULP设备只有在证明设各可靠性后,才显示其私有地址;每个链路层的连接有一个伪随机-1Z bit的存取地址,由连接中的申请者产生,每个链路层连接不同的存取地址。ULP蓝牙系统中,只能有一个数据  解包格式能在广播通道数据包和数据通道数据包 分标识衤中同时使用。如图2所示,每个数据包含4个实 (per·fief体:标头、同步字、PDU和CRC。广播数据包中的同步字是固定的,数据通道中的数据包同步字是链路层连接的存取地址。

ULP蓝牙数据包格式

图2 ULP蓝牙数据包格式

  2.2广播工作模式中认诅

  ULP系统中,每一台设备会产生并保持两个随机生成的密钥:鉴权(identity root)和加密(en-cryption root)。鉴权用于连接中生成私有地址和区分标识符密钥连接中的标识符;加密用于确立密钥标识符的安全。在任何加密连接中,广播创建密钥作为会话密钥的基础。集合密钥是在某些配对选择中创建,这些密钥只是用作保护(未来)广播中密钥的传递。

  加密模式中,通过广播方式把创建的密钥分派给需要连接的所有设备或实体,鉴权可用来建立私有地址。因为鉴权每次只支持一个身份,所以许多申请者将获得同样的鉴权。广播向设备提供标识符的加密(伴随16 bit标识符),在加密模式中该设各支持连接的设备。规范的基本概念有的标识符密钥,被称为“长期密钥”(longterm key),这个密钥分配给每个申请者。此外,加密规则仅仅是推荐使用并且在广播之外。长期密钥是不可见的,原则上能使用任何映射在16 bit~128 bit之间的密钥。加密标识符密钥有以下几种:IRK(Identity ResolvingKey)、PIR (Pairing Identity Root)、DHK (Diversifier HidingKey)、 PIRK(Pairing Identity Resolving Key)、PDHK(Pair-lng Diversifier Hiding Key)。

  在广播模式条件下,广播设各产生一个初始随机向量(IRV),该向量由10B的新随机数组成,也是链路层(LL)传输给申请者的个可能的数据包。广播设备初始化时,到达连接请求。

  连接请求包括SEC字段(表明是否是加密请求)和PI字段(表明申请者连接一个匹配)。SEC=1,表示有2B的加密区分标识符(EDIY)和申请者6B的随机地址。

  如图3所示,在SEC=1的条件下,ULP蓝牙广播模式下的步骤如下:

ULP蓝牙广播

图3 ULP蓝牙广播

  (1)解密区分标识符隐藏密钥。发送HCI_Set_key(0x00,DKH)命令到链路层,返回HCl_Command_C omplete(),并再发送加密请求命令HCl_encrypt(add master),PAL返回请求完成命令HCI_Command Complete()。


  (2)创建长期密钥。发送设置加密命令到链路层Hal_Set_key(0x00,ER),返回完成命令HCI_Command Complete(),再发送请求加密长期密钥命令HCI_encrypt(DIV),返回完成创建长期密钥命令HCI_Command Complete(LTK)。

  按以下公式重新创建长期密钥LTK:


  (3)创建会话密钥命令。HCI Set_key(0x00,LTK),返回完成命令HCl_Command_Complete(),再发送请求加密长期密钥命令HCl_Encrypt(add master/IRV),返回完成创建长期密钥命令HCI_Command_Complete(SK)。

  SK=ELTK(add master/IRV)

  (4)链路层设置会话密钥和初始值。初始值为


  分别发送命令HCl_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到链路层进行设置,返回完成设置命令Hal_Command_Complete()。生成会话密钥SK和IV,并在链路层设置(广播地址AA={A0,Al,…,A5})。

  2.3申请模式中加密会话设置

  申请者浏览广播,找到相匹配的广播地址AA={A0,Al,…,A5},初始使用6B完全随机地址(IRA)。

  (1)创建随机地址:发送Hal_Rand()命令到链路层(LL),返回HCl_Command_Complete(rand),addmaster=rand[0…47]。

  (2)加密区分标识符(perfier)密钥。发送设置加密命令到链路层Hal_Set_key(0x00,DHR),返回请求完成命令HCI_Command_Complete(),再发送加密请求命令Hal_Encrypt(addmaster),返回请求完成命令HCI_Command Complete()。


  由DIV计算出EDIV。

  由Y=EDHK,

  (IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)得出EDIV={YO,Y1}X0R(DIY0,DIV1)

  或者在PI=1的条件下,即匹配中由Y=Epdhk

  (IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

  得出EDIV={YO,Y1)X0R{DIY0,DIV1}

  申请者请求一个连接。

  ①如果请求加密连接,则SEC字段一直等于1;如果在申请者和广播设各间,扩展匹配继续进行,即PI字段设置为1。

  ②2B的加密区分标识符密钥(EDIV),6B的申请者随机地址(IRA)。

  ③当连接已经建立时,申请者从广播中得到一个lOB的随机向量(TRV)作为层协议数据单元PDU(类型0xFD),然后从长期密钥中,申请者创建会话密钥SK和设置初始值(IV)。

  创建会话密钥SK:发送设置长期密钥命令HCI_Set_key(0x00,LTK)到链路层,返回完成命令HCl_Command_Complete(),再发送加密请求命令HCI_encrypt(addmaster/lRV),返回完成创建会话密钥命令Hal_Command_Complete(SK),SK=Eltk(addmaster/lRV),IV=addmaster/addslave[0…23],即可表示为:

  SK=Eltk(IRA,IRV),IV={IRA,A0,Al,A2}。

  ④SK和Ⅳ被分配给链路层(LL)作为的步骤。LL操作中,申请者将初始化“连接模式变化”。

  链路层设置会话密钥和初始值:分别发送命令Hal Set_key(0x01,SK)和HCI-Set_IV(addr|addr[0…23])到链路层设置,返回完成设置命令HCl_Command_Complete()。

  2.4密钥更新

  安全连接建立之后,不支持密钥更新或者重建安全参数。的例外就是匹配程序,在匹配的阶段后,匹配程序中的会话加密密钥和状态发生改变。

  3、匹配和密钥交换

  本文的匹配算法有两个扩展模式,在前屁个连接中密钥改变(如果攻击者错过一个更新,安全性提高)。个扩展模式尤其适合于移动设各;第二扩展模式是假定两个设备有相同的地址,通过干扰硬件攻击者,提高密钥的安全性,该模式适用于家庭等固定环境。

  ULP蓝牙的匹配分三个阶段进行,其流程如图4所示。

ULP蓝牙匹配流程图

图4 ULP蓝牙匹配流程图

  阶段,成功匹配功能交换后,开始执行阶段操作。这一阶段不受加密保护,连接中直接进人扩展的状态(伴随着PI字段设置为连接请求和SEC字段关闭)。

  第二阶段,在加密通道中执行匹配,受临时密钥或者阶段的结果或是早期扩展阶段的保护。该阶段的匹配可以直接输入(Pl字段设置为连接请求),在此保护通道中,下面之一被执行:(1)传送长期密钥和(从未来的广播到未来的申请者)。(2)传送扩展(临时)密钥和(从未来的广播到未来的申请者),在扩展模式中,进行有限的密钥交换。

  第三阶段,第三阶段与匹配无关,是正常的会话,并且使用了在第二阶段同样的密钥保护。注:广泛的与这个密钥通信可能会导致(取决于匹配机制)攻击。攻击长期密钥可能导致在第二阶段中提供的长期密钥长度少于128 bit。第三阶段提供方便和实用性的扩展模式,以及可能简单的设各。

  总体层次规范定义了第三阶段的用处,如果没有定义任何第三阶段的用途,匹配的设各将终止匹配会话,用长期密钥建立新会话。

  ULP蓝牙系统本身提供的安全系统具有相当的安全特性。在ULP蓝牙用于商业或军事等方面时,现有的点对点的密钥分配和机制将无法满足安全要求,因而采用AES加密算法是必需的。与传统蓝牙相比,ULP蓝牙在安全上有以下特点:

  (1)现有的蓝牙,主要是通过质询一响应的方法进行。ULP蓝牙的基本相同,但是在ULP蓝牙的机制中,通过设置SEC和PI的值进行不同的。安全措施更明确、简单,易于实现。

  (2)蓝牙加密使用BO加密算法,缺点在于若一个伪随机序列发生错误,便会使整个密文发生错误,致使在解密过程中无法还原回明文。蓝牙BO流加密中用到的LFSR易受到相关攻击和分割解决攻击,且用软件实现效率非常低。

  ULP蓝牙中使用ABS加密模块。虽然传输速度有所降低,但安全性更高。适合小器件设各,如手表、运动传感器、医疗设备等;传统蓝牙适用于传输大量数据的设各。ULP蓝牙的加密的位置处于HCI层,在流量控制和重传机制下,可以避免多次加密无用的数据。针对性更强,对不需要加密的数据进行了过滤(如命令分组、事件分组),所以它的日常连接次数可达到50次;而传统蓝牙连接次数在5次以内。ULP蓝牙加密方案采用低成本的可编程逻辑器件和现成可用的加密处理的智力产权产品实现,降低了系统的成本。


  
上一篇:研祥工控产品在校园网系统中的应用
下一篇:VC在高速高分辨率采集软件中的应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料