1、 概述算法
蓝牙(bluetooth)是一种实现多种设备之间短距离无线链接的协议,通信速度快,普遍应用于无线设备、图像处理、安全产品、消费娱乐、汽车产品和家用电器等领域。作为一种无线技术,蓝牙技术提供了诸如密钥管理、认证和保密等安全机制。然而,过去几年,一些针对蓝牙技术的***方法被提出,包括信息漏泄、数据窃取、假冒***等,蓝牙技术的安全问题主要有如下几点:安全
一、整个蓝牙系统的安全性依耐于PIN码的保密性。因为安全意识不高,用户所选择的PIN码长度一般较短,致使PIN码被破解的可能性大大增长。ide
二、 蓝牙协议所使用的密码算法是蓝牙设计者自行发明的,这些密码算法比较简单。从密码分析的角度看,一个成熟的密码算法必须通过长期的实践才会被人们所承认,因为缺少测试,新的密码算法有可能隐含着某种缺陷。测试
3 、蓝牙适用于10米之内的短距离通信,***者要想接近***目标确实比较困难。但设想在一个步行街上或者在一个堵车的环境中,***者经过启动了蓝牙功能的设备,是有可能搜索到周围10米内的蓝牙通信。并且,最新的IEEE 802.11标准已经能够比较便宜的扩展蓝牙通信的距离。网站
四、因为蓝牙技术愈来愈普及,特别是蓝牙软件能够安装在PDA和便携式电脑上,存放在PDA和便携式电脑上的信息也愈来愈引发***的兴趣。this
2、 术语介绍加密
配对:配对是指两个蓝牙设备首次通信时,相互确认的过程。两个蓝牙设备之间一经配对以后,随后的通信链接就没必要每次都要作确认,很是的方便。设计
PIN(Personal Identification Number):我的识别码,蓝牙使用的PIN码长度为1-8个十进制位(8-128比特)。3d
DB_ADDR: 蓝牙设备地址。每一个蓝牙收发器被分配了惟一的一个48位的设备地址,相似于PC机网卡的MAC地址。两个蓝牙设备在通信开始时经过询问的方式获取对方的DB_ADDR地址。blog
蓝牙支持三种安全模式,第一种是设备没有任何安全措施的"无安全操做"模式。第二种是信道创建以前不需启动安全协议的"业务级安全模式"。第三种是要求终端在链路创建前就需启动安全协议的"链路级安全模式"。其中,最后“链路级安全模式”安全级别最高,本文所讨论的就是针对这种级别的***技术。
一、配对和认证
蓝牙通信初始化过程须要三个步骤:生成初始密钥(Kinit)、生成链路密钥(Kab)和双方认证。接着,用加密密钥来保护日后的通信。在配对以前,须要事先将PIN码输入到蓝牙设备中,在某些设备(像无线耳机),PIN是固定不可改变的。必须注意的是,两边的PIN必须匹配,不然不能通信。下面咱们将讨论配对和双方认证的细节。
.生成初始密钥(Kinit)
初始密钥Kinit t长度为128位,由E22算法产生,图1描述了生成Kinit密钥的过程。首先提出通讯要求的设备称为主设备(Master),用A表示;被动进行通讯的设备称为从设备(Slave),用B表示。从图中能够看到,E22算法的输入(明文)由如下三部分组成:
1)从设备的物理地址:BD_ADDR,在生成Kinit前,主设备经过询问方式得到从设备的地址BD_ADDR。
2)PIN码及其长度,PIN码是双方设备预先设定的。
3)一个128位的随机数(IN_RAND)。由主设备产生,并以明文方式传送给从设备。
因为主、从设备使用了相同的E22算法,若是双方设备以上三部分的值都相等,那么各自算出来的Kinit也应该相同。
图1
见图2,首先主设备A产生128位的随机数LK_RANDA,从设备B也产生128位的随机数LK_RANDB。在主设备A中,Kinit与LK_RANDA进行位比特逻辑异或运算,异或结果发送给B设备;一样的,在B设备中,Kinit和LK_RANDB进行位比特逻辑异或运算,结果发送给A设备。经过这些交换后,A和B设备都具备相同的Kinit、LK_RANDA和LK_RANDB。按照图2,设备A和B分别用E21算法将LK_RANDA和BD_ADDRA、LK_RANDB和BD_RANDRB加密,并将结果进行异或获得Kab。
图2
.双向认证
双向认证采用challenge-response(挑战-应答)方式。如图3所示,主设备A为应答方,从设备B为请求方。作为应答方的A设备产生一个128位的随机数AU_RANDA,并以明文方式传送至B设备。A、B设备都用E1算法将各自获得的AU_RANDA、Kab和BD_ANDRB加密运算分别生成32位的SRESA和SRESB。B设备将结果SRESB传送给A设备,A设备比较SRESA和SRESB,若是相等,这次认证经过,不然认证不经过。执行完这次认证后,A设备和B设备的角色对换,即A设备作为请求方,B设备作为应答方,采用一样的方式进行认证。
以上就是配对和双方认证过程,在这一过程当中,咱们提到了三个密码算法E2二、E21和E1,这三个算法都是根据SAFER+算法进行少许的修改而成的。SAFER+算法属于分组算法,明文块为128位,提供了12八、 192和256三种不一样的密钥长度,蓝牙标准采用128位的密钥。SAFER+包括:
一、KSA 一个密钥调度算法,它产生17个不一样的128位的密钥
二、8轮运算
三、输出变换 由最后一轮运算的输出和最后一个密钥异或而成。
有兴趣的朋友能够参看有关介绍,这里不详细介绍。
图3
从第三部分对蓝牙技术配对和双方认证过程的分析,咱们能够看出,蓝牙技术所用的认证方
式属于简单的弱认证方式,其安全性彻底依赖于PIN码的保密性。
这一部分咱们讨论***者经过收集必要的消息是怎么样用暴力破解方式猜想PIN的。
表中列出了在配对和认证过程当中,两个蓝牙设备A和B之间交换的通信消息。