蓝牙配对认证浅析

来源:互联网 发布:凯盈线上娱乐源码 编辑:程序博客网 时间:2024/04/29 08:38


1 何为配对?

是指两个蓝牙设备首次通讯时,相互确认的过程,两个蓝牙设备一经配对之后,随后的通讯就不必每次配对,只需要认证就可以了。

2 安全模式

蓝牙支持三种安全模式:

(1)    设备没有任何安全措施的“无安全操作”。

(2)    信道建立之前不需要启动安全协议的“业务级安全模式”。

(3)    终端在建立链路之前必须启动安全模式的“链路安全模式”,安全级别最高。目前蓝牙设备通常采用该安全模式。

3 配对和认证

蓝牙通信初始化过程需要三个步骤:

(1)    生成初级密钥 kinit。

(2)    生成链路密钥。

(3)    双方认证。

然后蓝牙设备会将链路密钥保存在非易失的存储介质中,以备以后每次连接时使用。在配对之前首先要将PIN码输入到蓝牙设备中,像某些设备(蓝牙耳机),PIN码是固定不变的。

注意,两边的PIN必须相同,否则配对会失败。

PIN(Personal Identification Number):个人识别码,蓝牙使用的PIN码长度为1-8个十进制位(8-128比特)。

 

 

现在简单解析一下蓝牙配对认证的过程

1、配对和认证

 

  蓝牙通讯初始化过程需要三个步骤:生成初始密钥(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

.生成链路密钥Kab

 见图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_ADDRB加密,并将结果进行异或得到Kab。

 

图2

如图2所示,master和slave会生成相同的链路密钥。

双向认证

 

双向认证采用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设备做为应答方,采用同样的方式进行认证。

 

 

 

 

图3

 

 

配对,认证发生在LMP层,在查询与呼叫建立后。

 

0 0
原创粉丝点击