蓝牙技术安全性解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

蓝牙技术安全性解析

摘要:简要介绍蓝牙技术( IEEE 802. 15) 的基本概念和原理,在此基础上重点分析蓝牙技术的两种安全模式,从抗网络攻击角度出发,提出完善蓝牙安全的一些策略和方法。

关键词:蓝牙;协议栈;鉴别与加密;授权;自组网

1 蓝牙概述

蓝牙(Bluetooth) 是一项先进的短距离无线网络技术,遵循蓝牙协议的各类数据及语音设备能够用无须许可证的2. 4GHz ISM频段的微波取代电缆进行通信,从而解决小型移动设备间的无线互连问题。蓝牙( IEEE 802. 15) 是一项最新标准, 它是微微网(Piconet) 形成和通信的基础,与802. 11 相互补充。在安全性方面,W AP 和蓝牙一直被认为是互补的技术,蓝牙保证了物理层和无线链接层的安全性,而W AP 则提供应用和传输层的安全性[1 ] 。

1. 1 微微网的拓扑结构

蓝牙网络通信是一种基于邻近组网原则的对等通信,但链路级存在主从关系。一个微微网由一个单独的主控设备(Master) 和邻近的从属设备(Slave) 构成。多个微微网在时空上部分重叠,形成散列网(Scatternet) 。典型散列网的拓扑结构如图1 所示。

图1 散列网拓扑结构

当微微网中的设备处于链接状态时,根据功率消耗和响应灵敏度使用四种基带模式。无链接状态时,基带处于待机(Standby) 状态[2 ] 。通过休眠成员地址(8 位) ,微微网中主控设备可连接休眠的不超过255 个的从属设备,但最多只能有7个处于激活状态;通过基带模式的转换,休眠设备可以获得活动成员地址(AM—ADDR ,3 位) 重新进入活动状态。基带的具体模式由链路管理器控制。

1. 2 蓝牙协议栈

蓝牙技术规范的核心是协议栈,该协议栈允许多个设备进行相互定位、连接和交换数据,并实现互操作和交互式的应用。蓝牙协议栈及安全体系结构如图2 所示。

图2 蓝牙协议栈及安全体系结构图

传输协议组所包含的协议主要用于蓝牙设备的相互定位,并能创建、配置和管理物理和逻辑链路,方便高层协议传输数据。中间协议组包括SIG为蓝牙制定的协议和第三方及业内一些标准协议,如串行短口仿真协议(RFCOMM) 和服务发现协议(SDP) 等。应用组包含使用蓝牙的实际应用。

1. 3 蓝牙模块

蓝牙通信技术的特征主要通过蓝牙模块体现(如图3) 。

蓝牙无线收发系统是一个用GFSK技术实现跳频扩频(FHSS) 的无线系统。收发双方只有知道频率同步的算法才能进行数据交换。蓝牙设备地址(BD—ADDR) 和蓝牙设备时钟(内时钟) 是蓝牙所有操作的两个最基本要素。前者决定跳频序列的相位(Phase) ;后者是蓝牙设备最稳定的实体,确定跳频序列。

设备发送的基带分组数据单元(BB—PDU) 包含三个部分: 接入码(Access Code) 、头部和净荷(Payload) ,所含的接入码主要用来识别和同步微微网;通过链路管理器协议(LMP) ,链路管理器之间非实时交换报文LMP—PDU 来控制链路,进行传输调度和链路管理,如安全管理(设备鉴别和链路加密) 、功率管理和QoS 管理等。

2 蓝牙安全模式分析

如图2 所示,蓝牙协议的一般接入应用中定义了三种安

全模式:

模式1 无安全机制;

模式2 服务级;

模式3 链路级。

安全模式2 与安全模式3 的本质区别在于:安全模式2下的蓝牙设备在信道建立以后启动安全性过程,即其安全性过程在较高层协议进行;安全模式 3 下的蓝牙设备在信道建立以前启动安全性过程,即其安全性过程在低层协议进行。

模式2 中的安全性管理器主要包括储存安全性信息、应答请求、强制鉴别和(或) 加密等关键任务。设备的三个信任等级和三种服务级别[3 ] ,分存在设备数据表和服务数据表中且由安全管理器维护。

下面先分析针对模式 3 的鉴别(Authentication) 和加密;再说明模式 2 机制的授权(Authorization) 。

2. 1 密钥管理

设备之间的所有安全事务都由链路密钥来处理,它用于鉴别和作为一个参数来产生加密密钥。链路密钥分临时密钥和半永久性密钥,后者在一个共享该密钥的设备通过鉴别后仍能用;前者仅在一对多的连接上传播相同信息(广播) 时使用,用完后即被丢弃。链路密钥(Klink)

可以是合成密钥、设备密钥、主控设备密钥和初始密钥(Kinit ) ,具体要依赖于当前应用的类型。PIN 的长度一般是4~16 字节,用于产生Ki nit ;在产生Klink的过程中,该Kinit用来进行密钥交换,Klink一旦产生,Kinit即被丢弃。数据加密密钥由Klink决定。

2. 2 鉴别与加密

假设两台设备进行通信,图 4 表示蓝牙鉴别与加密的模型,该模型主要步骤可用下列过程简要描述(顺序略有不同) :(1) 匹配(Pairing) 创建链路密钥(Klink)系统根据询问/ 应答(Challenge/ Response) 创建Klink ,基本步骤如下:

a) 初始化密钥的创建

A →

B :Rand ;

表示设备A 产生一个随机数RAND ,并发向设备B ,下同。

A:Klink = E22 (Rand ,BD—ADDRb ,PIN) ;

表示设备A 用流密码E22 算法根据系数计算Klink ,下同。

B : Klink = E22 (Rand , BD—ADDRb , PIN) ;

b) 设备密钥作为链路密钥(用于网内广播)

IF 设备A 没有设备密钥

THEN A:KA = E21 (Rand , BD—ADDRA)

A →

B :KA XOR Kinit

c) 合成密钥作为链路密钥(点对点)

A: HA = E21 (BD—ADDRA ,RANDA) ;

B : HB = E21 (BD—ADDRB ,RANDB) ;

A →

B : RANDA XOR Kinit ;

A ←

B : RANDB XOR Kinit ;

A: HB = E21 (BD—ADDRB ,RANDB) ;

B : HA = E21 (BD—ADDRA ,RANDA) ;

A: KAB = HA XOR HB ;

B : KAB = HA XOR HB ;

(2) 用当前链路密钥(Klink) 来鉴别

A →

B :RAND;

A:MAC1 = Hash(Klink ,RAND ,BD—ADDRB ,6) ;

B :MAC2 = Hash(Klink ,RAND ,BD—ADDRB ,6) ;

A ←

B :MAC2[0 , *,3 ] ;

A:Check IF MAC1[0 , *,3 ] =MAC2[0 , *,3 ]

THEN ACO =MAC1[4 , *,15] ;

(3) 鉴别后加密密钥的产生

A: IF 当前链路密钥是主控设备密钥

THEN 加密偏移数COF = 串联两个主控设备BD—ADDR;

ELSE COF = 鉴别加密偏移数ACO;

A →

B :RAND;

A:Kencrypt = Hash(Klink ,RAND ,COF ,12) ;

B :Kencrypt = Hash(Klink ,RAND ,COF ,12) 。

相关文档
最新文档