蓝牙配对协议分析二

蓝牙配对协议分析二

本篇接着《蓝牙配对协议分析一》来继续分析下SSP安全简单配对的完整流程。

在这里插入图片描述

SSP流程总体上的消息序列图如下:
在这里插入图片描述

从上图可以明显看出整个过程大概分为11个步骤,有些步骤存在不同的可选项,接下来依次讲解下每个步骤的流程。

Step 1: Optional OOB Information Collection
可选步骤,OOB信息收集。如果蓝牙设备支持OOB信息交换,则协议栈Host应该从蓝牙控制器Controller获取到OOB信息的C和R值,并将此信息传输到OOB系统。

获取信息的流程图如下:
在这里插入图片描述

如果协议栈Host和Controller都支持安全连接(安全连接见 Step 2分析),则流程图如下:
在这里插入图片描述

Step 2: Enable Simple Pairing and Secure Connections
必选步骤,根据本端Controller的能力来决定是否使能简单配对及安全连接。这两个使能动作应该在使用简单配对或创建连接之前完成。

使能简单配对流程图如下:
在这里插入图片描述

使能安全连接流程图如下:
在这里插入图片描述

这两条使能指令的HCI信息如下:
在这里插入图片描述

Step 3: Connection Establishment
可选步骤,简单配对一旦启用,那在之后的蓝牙交互过程中有两个可能的操作会触发SSP流程

  1. l2cap链路连接请求触发到需要安全鉴定的服务
  2. OOB信息传输

由于OOB在现有的蓝牙设备上使用比较少,所以大部分安全简单配对流程都是由安全服务的l2cap连接请求触发的,其流程图如下:
在这里插入图片描述

Step 4: Start Simple Pairing
必选步骤,协议栈主机Host确定启动简单配对,它就会向控制器Controller发出请求的身份鉴权验证命令。Controller接收到鉴权指令后会请求Host提供链路密钥(Link Key),如果Host有此连接的链接密钥,则不需要配对流程,直接身份验证通过后就可以立即使用该链接密钥;如果Host没有此链路密钥,则开启简单配对流程生成新的链路密钥。

其流程图如下:
在这里插入图片描述

HCI上的信息交互如图所示:
在这里插入图片描述

Step 5: IO Capability Exchange
必选步骤,为了确定使用SSP中的哪种身份验证模型,需要配对连接的两个设备相互交换输入/输出能力

流程图为:
在这里插入图片描述

HCI交互信息如下图:
在这里插入图片描述

Step 6: Public Key Exchange
必选步骤,两个配对的设备间交换公钥,一旦接受到对端发送过来的公钥,本端就可以用此公钥来计算出DHKey,该流程协议栈Host不参与交互,完全是两个设备Controller间的信息交互。

Step 7: Authentication
必选步骤,蓝牙设备可以通过使用 Numeric ComparisonPasskey EntryOOB 这三种鉴权模型之一进行身份验证,鉴权模型的选择取决于两个设备的IO能力的组合。

Numeric Comparison:当两个设备都具有输出功能时,或者其中一个设备没有输入或输出功能,则将执行数字比较步骤。如果两个设备都有输出功能,则此步骤需要向用户显示确认值这个值应该显示到步骤8结束为止;如果一个或两个设备没有输出功能,则使用相同的协议,但是协议栈Host将跳过要求用户确认的环节,这就是Just Works模型。

其流程图如下,该图省略了用户确认数字的计算过程:
在这里插入图片描述
HCI信息交互为:
在这里插入图片描述

Passkey Entry:在如下两种情况下使用Passkey Entry模型执行省份验证

  1. 当一个设备仅有数字输入,而另一个设备具有显示或数字输入能力
  2. 当两个设备都仅具有数字输入能力

流程图如下:
在这里插入图片描述

Out of Band:只有当两个设备都有一些OOB信息要使用时,OOB身份验证才会完成。 此身份验证方式不需要用户参与。由于市面上使用该方法验证省份进行配对的蓝牙设备比较少,这里就不做深入分析了。

Step 8: DHKey Checks
必选步骤,一旦设备经过身份验证,并且DHKey计算已经完成(通过步骤6交换的公钥计算得到的),就会检查生成的DHKey值。如果成功,那么这两个设备都将完成向用户显示信息的操作,因此从Controller向Host发送消息通知双方停止显示此信息。

流程图如下:
在这里插入图片描述

Step 9: Calculate Link Key
必选步骤,简单的配对完成,链接密钥(Link Key)就可以从DHKey中计算出来,这应该用作标准相互身份验证的输入,并通过HCI事件上报Host保存。

流程图为:
在这里插入图片描述

HCI上报信息如下图:
在这里插入图片描述

Step 10: Enable Encryption
必选步骤,鉴权随着Link Key的上报就完成了,那接下来Host就可以使用标准方法对数据交互进行加密。

流程图为:
在这里插入图片描述

HCI信息交互如下图所示:
在这里插入图片描述

鉴权加密流程成功完成也即是SSP简单配对流程结束,接下来蓝牙l2cap链路就可以安全地建立连接了。

通过两篇文章简单介绍完了蓝牙协议中定义的两种标准的配对流程,协议的学习总是枯燥的,接下来将以安卓源码为基础继续分析下配对流程的具体是怎么实现的,让我们相约下期,不见不散。

感兴趣的小伙伴欢迎私信留言一起讨论。

更多互联互通技术,欢迎关注微信公众号:Connectivity
在这里插入图片描述

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
抓取Android BTSnoop蓝牙HCI协议分析工具是一种用于捕获并分析Android设备上的蓝牙数据包的工具。蓝牙HCI协议蓝牙设备之间进行通信所使用的一种协议,通过抓取并分析这些数据包,可以帮助开发人员或研究人员了解蓝牙设备之间的通信过程,诊断问题,甚至进行逆向工程。 要实现这一目的,可以按照以下步骤进行: 1. 安装抓包工具:首先,在Android设备上安装一个支持抓取蓝牙数据包的抓包工具。常用的工具有Wireshark和Bluetooth HCI Logger。 2. 启用抓包功能:在Android设备上,需要启用开发者选项,并开启蓝牙HCI日志记录功能。具体操作方式可能有所不同,可以通过打开设备的设置菜单,找到开发者选项,并开启蓝牙HCI日志记录选项。 3. 连接设备:将要抓取数据包的Android设备与目标蓝牙设备进行配对和连接。 4. 抓取数据包:通过打开抓包工具,选择蓝牙设备的接口,开始捕获蓝牙数据包。数据包将会被存储到本地设备的存储中。 5. 分析数据包:将抓取到的数据包导入到分析工具中进行分析分析工具可以对数据包进行解析,并显示出数据包的内容、属性和相关信息。 通过以上步骤,我们可以获取到Android设备上的蓝牙数据包,并利用分析工具对其进行解析。这将有助于了解蓝牙通信过程中的协议细节、错误和异常情况,从而进行问题排查和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值