蓝牙配对过程分析

1.概念

配对是指“Master和Slave通过协商确立用于加(解)密的key的过程。指的是下图中的第7部分。
蓝牙配对过程分析

2.配对方法

Master和Slave有两种可选的配对方法:legacy pairing和Secure Connections。从命名上看,前者是过去的方法,后者是新方法。选择的依据是:当Master和Slave都支持Secure Connections(新方法)的时候,则使用Secure Connections。否则,使用legacy pairing。

3.配对过程

配对过程如图所示,主要由下面四部分完成:
蓝牙配对过程分析

3.1.Pairing Feature Exchange

用于交换双方有关鉴权的需求(authentication requirements),以及双方具有怎么的人机交互能力(IO capabilities)。其中最重要的是IO capabilities exchange。
蓝牙配对过程分析
IO的能力可以归纳为如下的六种:
NoInputNoOutput
DisplayOnly
NoInputNoOutput1
DisplayYesNo
KeyboardOnly
KeyboardDisplay
上述的IO能力决定了后续的鉴权方式。

3.2.Public key exchange

两个设备之间交换Public key。 一旦设备收到对端设备的公钥,它就可以开始计算Diffie Hellman密钥(DHKey)。耗时较多,应该尽早开始,以便用户交互可以隐藏计算时间。 在步骤8之前不需要DHKey。
当 Public key的长度大于DM1包的长度时,要使用专门的PDU来进行数据发送。
蓝牙配对过程分析

3.3.Authentication

通过SMP协议进行实际的配对操作,根据阶段1 “Feature Exchange”的结果,有三种鉴权方法可选:

3.3.1.OOB鉴权:

如果双方都支持OOB鉴权,则选择该方式(优先级最高)。由配对的双方,在配对过程之外,额外的交互一些信息,并以这些信息为输入,进行后续的配对操作。这些额外信息也称作OOB(out of band),OOB的交互过程称为OOB protocol。
蓝牙配对过程分析

3.3.2.MITM鉴权:

(man-in-the-middle)authentication,由两者方法:
Numeric Comparision方式鉴权:两个设备自行协商生成6个数字,并显示出来(要求两个设备具有显示能力),用户比较后进行确认(一致,或者不一致,要求设备有简单的yes or no的确认能力)。
蓝牙配对过程分析
Passkey Entry,通过输入配对码的方式鉴权。
蓝牙配对过程分析

3.3.3.Just Work:

Just Work,不需要用户参与,两个设备自行协商。

3.4.DHKey Checks

一旦设备完成鉴权过程,并且DHKey计算已完成,则检查生成的DHKey值。 如果成功,则两个设备都将完成向用户显示关于该过程的信息,否则控制器向主机发送消息以通知其停止显示该信息。
蓝牙配对过程分析

当配对过程完成后,link key就可以从DHKey中计算得到,并用做后续交互过程的输入(KEY + 明文 => 加密数据),通过HCI_Link_Key_Notification来通知host。
蓝牙配对过程分析

经过上述过程后,双方已经产生了加密key,因而可以建立加密的连接。加密连接建立后,可以互相传送一些私密的信息,例如Encryption Information、Identity Information、Identity Address Information等。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝牙配对流程源码分析在CSDN上可以找到相关的技术博文和开源项目,以下是大致的分析过程: 首先,在CSDN中搜索蓝牙配对流程的关键词,可以找到一些作者分享的源码分析文章。这些文章通常包括了蓝牙配对流程的基本知识介绍、配对过程的技术原理以及相关代码的解析。 其次,阅读这些源码分析文章,可以了解蓝牙配对流程在底层的实现细节。这些文章通常会讲解配对流程的各个步骤,例如配对方式的选择、密钥生成的过程配对请求和回应的交互等。 同时,可以跟踪并分析开源项目中的相关代码。在CSDN上,一些开发者可能会分享他们自己实现的或者对开源项目进行的蓝牙配对流程源码分析。通过分析这些代码,可以更深入地了解蓝牙配对流程的实现细节和相关的算法。 最后,结合文献和博客中的技术理论与代码分析,我们可以对蓝牙配对流程的源码有一个整体的认识,了解不同实现中的差异和特点。需要注意的是,虽然CSDN上的文章和博客可以提供一些指导,但最好通过多个来源的阅读和对比,以获得更全面和准确的理解。 需要注意的是,由于CSDN是一个开发者分享技术经验的平台,文章和博客的质量、深度和准确性可能有所不同。因此,在阅读这些内容时,应当保持批判性思维,结合官方文档和其他权威来源进行综合分析和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值