蓝牙安全吗关于蓝牙安全机制的研究
随着计算机网络和移动电话技术的迅猛发展,人们感到越来越迫切需要发展小范围的无线数据与语音通信技术。于是爱立信、IBM、英特尔、诺基亚和东芝等公司在1998年联合推出一项新的无线网络技术,即蓝牙技术。蓝牙技术可以解决小型移动设备间的无线互连问题,它的硬件市场非常广阔,涵盖了局域网中的各类数据及语音设备,如计算机、移动电话、小型个人数字助理(PDA)等。蓝牙技术面向的是移动设备间的小范围连接,从本质上说它是一种代替电缆的技术。为了保证移动设备间数据传输的安全性,该技术持应用层和链路层的鉴权和加密,这也正是本文要讨论的内容。
一、蓝牙应用协议栈
1999年12月1日,Bluetooth SIG(Special Interest Group)发布了蓝牙标准的最新版:1.0B版。蓝牙标准包括两大部分:Core和Profiles。Core是蓝牙的核心,它主要定义了蓝牙的技术细节,而Profiles部分则定义了在蓝牙的各种应用中协议栈的组成。
蓝牙标准主要定义的是底层协议,同时为保证和其它协议的兼容性,也定义了一些高层协议和相关接口。从ISO的OSI七层协议标准来看,蓝牙标准主要定义的是物理层、链路层和网络层的结构。
1)射频协议(RF/Radio Protocol):定义了蓝牙发送器和接收器的各个参数,包括发送器的调制特性,接收器的灵敏度、抗干扰性能、互调特性和接收信号强度指示等。
2)基带/链路控制协议(Baseband/LC Protocol):定义了基带部分协议和其它低层链路功能,是蓝牙技术的核心。
3)链路治理协议(LMP):用于链路的建立、安全和控制,为此LMP定义了许多过程来完成不同的功能。
4)主机控制器接口(HCI:Host Controller Interface)协议:描述了主机控制接口功能上的标准,提供了一个基带控制器和链路治理器(LM)得知硬件状态和控制寄存器命令的接口,在蓝牙中起着中间层的作用:向下给链路控制器协议和链路治理协议提供接口,提供一个访问蓝牙基带的统一方法。HCI是在硬件和软件都包含的部分。
5)逻辑莲路控制和适配协议(L2CAP:Logical Link Control and Adaptation Protocol):支持高层协议复用、帧的组装和拆分、传送QoS信息。L2CAP提供面各连接和非连接两种业务,答应高层最多达64kbit/s的数据,以一种有限状态机(FSM)的方式来进行控制,目前只支持异步无连接链路(ACL)。
6)服务发现协议(SDP:Service Discover Protocol):如何发现蓝牙设备所提供服务的协议,使高层应用能够得知可提供的服务。在两个蓝牙设备第一次通信时,需要通过SDP来了解对方能够提供何种服务,并将自己可提供的服务通知对方。
7)高层协议:包括串口通信协议(RFCOMM)、电话控制协议(TCS)、对象交换协议(OBEX)、控制命令(AT-Command)、电子商务标准协议(vCard和vCalender)和PPP,IP,TCP,UDP等相关的Internet协议以及WAP协议。其中,串口通信协议是ETSI TS07.10标准的子集,并且加入了蓝牙特有的部分;电话控制协议使用了一个以比特为基础的协议,定义了在蓝牙设备之间建立语音和数据呼叫的控制信令,对象交换协议提供了与IrDA协议系列相同的特性,并且使各种应用可以在IrDA协议栈和蓝牙协议栈上使用。两个蓝牙设备必须具有相同的协议组成才能够相互通信。例如要在蓝牙实现WAP应用,则双方都必须经过基带协议--L2CAP--RFCOMM--PPP---IP--UDP--WAP的路径来实现。
二、蓝牙系统安全性要求
由于蓝牙系统简单可靠,从而产生了各种不同的应用,例如电脑、鼠标、打印机、接入点、移动电话和话筒等都可以使用蓝牙协议无线地连接在一起,进行语音和数据的交换。同时,还可以通过无线或有线的接入点(如PSTN、ISDN、LAN、XDSL)与外界相连。不同应用对各自的系统必然提出不同的要求,并且不是所有的系统都对安全性有很高的要求。
先介绍几个概念:
1)蓝牙设备地址(BD_ADDR):是一个对每个蓝牙单元唯一的48位IEEE地址。
2)个人确认码(PIN:Personal Identification Number):是由蓝牙单元提供的1-16位(八进制)数字,可以固定或者由用户选择。一般来讲,这个PIN码是随单元一起提供的一个固定数字。但当该单元有人机接口时,用户可以任意选择PIN的值,从而进入通信单元。蓝牙基带标准中要求PIN的值是可以改变的。
3)鉴权字:是长度为128位的数字,用于系统的鉴权。
4)加密字:长度8-128位,可以改变。这是因为不同的国家有许多不同的对加密算法的要求,同时也是各种不同应用的需要,还有利于算法和加密硬件系统的升级。
区分鉴权字和加密字的目的是在不降低鉴权过程作用的前提下使用更短的加密字。
虽然蓝牙系统的跳频机制对于来自系统内部其它设备的偶然传输干扰起到了一定的保护作用,但是很显然仅有这种保护是不够的。它不能防止有人在两个传输单元之间对数据的窃听和偷取,尤其在无线传输数据时,窃取数据者可以轻松地屏蔽自己而不让用户发现,因此蓝牙系统需要加入相应的安全机制。在一般的系统中,通常对所传输的数据包进行加密,但仅有这种做法是不够的。更重要的是在通信连接建立以前,确保通信单元的安全性。例如用户相同时跟几个用户通信,就需要对这些用户进行确认。因此,在蓝牙系统中间时运用了鉴权和加密技术。
三、蓝牙安全机制
1、字治理机制
蓝牙链字是长度为128位的随机数,它是蓝牙系统鉴权和加密的基础。为了支持不同阶段、模式的要求,蓝牙系统在链路层上用了4种不同的字来保证系统的安全性。包括单元字KA组合字是KAB,临时字Kmaster及初始化字Kinit。
单元字KA与组合字KAB仅产生方式不同,执行的功能是完全相同的。也就是说,KAB是由两个单元A,B共同产生的,而KA仅由一个单元A产生,因此KA在初始化阶段产生后就基本不变了。系统的内存比较小时通常选择KA,而系统对稳定性要求比较高时选择KAB。
临时字Kmaster只是临时取代原始字。例如,当主机想与多个子机通信时主机将用同一个加密字,因此把它存放在临时字中,以便于使用。
初始化字Kinit仅仅在初始化阶段有效,也主是单元字KA,KAB产生的阶段,它不仅仅是初始化阶段的一个临时字,其产生需要一个PIN。
半永久性的链接字在特定的时间内被称作当前链接字。当前链接字和其它链接字一样,用于鉴权和加密过程。此外,还用到了加密字KC,加密字被LM的命令激活后将自动被改变。
另外,鉴权字和加密字在不同的阶段执行不同的功能。例如:在两个单元没有建立连接的阶段和已经建立连接的阶段有很大的不同,前者必须首先产生加密字,而后者可以继续使用上次通信的加密字。相应地不同的阶段对字的治理是不一样的。此外当主机想广播消息,而不是一个一个地传送消息时,需要非凡的字治理方法。正是蓝牙系统有力的字治理机制,才使得系统具有很好的安全性,而且支持不同的应用模式。
2.链接字的产生
初始化字Kunit的值以申请者的蓝牙设备地址、一个PIN码、PIN码的长度和一个随机数作为参数,通过E22算法产生。而申请者相对校验者而言是需要通过验证的一方。因此,申请者需要正确的PIN码和PIN码的长度。一般来讲,由HCI决定谁是申请者,谁是校验者。
当PIN的长度少于16个八进制数时,可以通过填充蓝牙设备地址的数据使其增大,因此假如循环使用E22可以使链接字的长度增长为128位。
初始化链接字Kint产生后,该单元将产生一个半永久字KA或KAB。假如产生的是一人KAB,则该单元将用一个随机数LK_RAND周期性地加密蓝牙设备地址,加密后的结果为LK_KA,而各自产生的LK_RAND与当前的链接字进行异或运算后,分别产生新值,永为CA和CA,然后互相交换,从而得到了对方的LK_RAND,并以对方的LK_RAND和蓝牙设备地址作为参数,用E21函数产生新值LK_KB的异或运算得到组合字KAB。当KAB产生后,首先单向鉴权一次,看KAB变为当前链接字,而丢弃原先的链接字K。E22的工作原理与E21类似。
3.蓝牙单元鉴权
在鉴权过程中,LM决定谁是校验者,谁是申请者。申请者和校验者必须同时拥有一个共同的当前链接字。而这种口令-应答方式的鉴权实际上是申请者发送一个随机数RAND,随后校验者用当前密钥字、申请者的蓝牙设备地址和RAND作为加密算法的参数得到新值,记为SRES’。申请者以同样的参数、算法得到的新值记为SRES。然后,申请者将SRES传送给校验者,比较SRES’和SRES是否相等。假如相等,则鉴权通过;否则鉴权失败。在间隔一定时间后系统重新鉴权。鉴权机制的安全性是相当高的。更保险的做法是采用双向鉴权,即一次鉴权成功后,调整申请者和校验者的角色,再次鉴权。鉴权成功以后,产生了鉴权编码补偿(ACO),以用于加密字的产生。
4.加密
为了保证蓝牙系统的安全性,必须采用加密技术。但蓝牙系统对数据包头和控制字段并不加密。蓝牙系统通过一个再同步的流加密算法对每一个负载加密,由LM最终决定是否加密。
最后需要注重的是,不仅要对数据包加密,而且要对加密过程的中间数据进行加密,例如对鉴权编码补偿进行加密,这样才能防止系统被攻击和数据被窃取。
四、简单的使用例子
通过蓝牙技术可以在无线耳机和移动电话之间建立通信。由于耳机没有人机接口,因上耳机在生产的时候载入了一个固定的PIN,它是一个随机的数字。在初始化阶段,用户从手机菜单中选取初始化耳机的命令,随后耳机将自动发现手机并建立连接。此时用户必须输入耳机的PIN。假如输入的PIN正确,则建