蓝牙配对协议分析一

蓝牙配对协议分析一

在这里插入图片描述

蓝牙配对是整个蓝牙连接过程中必不可少的环节,配对的目的是通过各种方法创建共享的 链路密钥(Link Key),该密钥用于设备间连接时认证鉴权并加密相互交互的数据,使得蓝牙技术更具有安全行。密钥不但可以用于当前的连接中,还可以用于两个设备后续的重连过程中,但是鉴权过程中如果比较双方的Link Key不一致,则必须重新开始配对流程,从而创建新的链路密钥(Link Key)用于新的连接交互流程。

链路密钥(Link Key)通过HCI命令HCI_Link_Key_Notification上报协议栈Host并保存,存储路径:/data/misc/bluedroid/bt_config.conf

存储内容如下图:
在这里插入图片描述
Bluetooth Core Specification定义了两种标准配对流程:

  1. PIN码配对:蓝牙核心协议2.0及之前版本使用的配对流程。
  2. SSP安全简单配对:Secure Simple Pairing,蓝牙核心协议2.1及之后版本新增的一种配对流程,由于相较于PIN码配对具有更高的安全性、更方便的操作,从而现在市面上的蓝牙设备基本上都使用这种配对流程。

两种配对流程的触发时机都是在鉴权过程中(Authentication Requested),向协议栈Host请求Link Key,Host回复没有该链路密钥,从而芯片开始配对流程。接下来简单介绍PIN码配对的流程,然后重点分析SSP安全简单配对。

PIN码配对
该种方式配对时需要输入4位十进制组成的数,配对双方输入的数字相同,则配对流程才能成功创建共享的链路密钥(Link Key)。

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

SSP安全简单配对
新增SSP安全简单配对的主要目的是简化用户的配对过程,次要目的是维护或提高蓝牙无线技术的安全性。由于在许多技术和产品中,高安全和易于使用的程度往往是相反的,因此从最终用户的角度来看,最终就是为了最大限度地提高安全性,同时尽量减少复杂性。

安全简单配对流程有如下两个安全目标:

  1. 防止被动窃听
  2. 防止中间人(MITM)攻击

SSP流程根据两个配对连接的蓝牙设备双方的I/O能力来确定采用如下哪种模型:
1、Numeric Comparison:数字比较模型,配对连接的两个蓝牙设备都有屏幕显示一个六位数字,并且有提供用户输入“Yes”或者“No”的选项。

显示的这6位数字的范围是:000000~999999,用户比较两个设备上显示的数字是否一致。连个设备上都确定Yes,配对才能成功,这样可以有效防止中间人(MITM)攻击。

使用场景:手机、车机、个人电脑等带有屏幕可以显示六位数字且提供Yes/No选项的设备间进行配对。

2、Passkey Entry:密码输入模型,配对连接的设备中其中一个设备具有输入能力,但不具有显示六位数字的能力,另一个设备具有输出显示六位数字的能力。只具有输入能力的设备正确输入另一个设备上显示的六位数字,配对才能成功,有效防止中间人(MITM)攻击。

使用场景:手机和蓝牙键盘这样的组合,一个设备只具有输入能力,另一个设备具备输出显示能力。

3、Just Works:工作模型,配对连接的设备中至少有一台设备没有能够显示六位数字的显示器,也没有能够输入六位数字的键盘。该模型使用类似Numeric Comparison数字比较,但不会向用户显示那六位数字,应用程序可以简单地要求用户接受连接即可。由于看不到配对过程,总是同意配对,所以无法防止中间人(MITM)攻击。

使用场景:蓝牙耳机和其他设备配对,因为大部分蓝牙耳机没有显示也没有数字输入功能。

4、Out Of Band:简称OOB,两个配对设备通过其他途径交换配对信息,比如带有NFC功能的蓝牙音箱等,但此种模型很少使用到,本篇不做过多讲解。

以上四种模型就是安全简单配对SSP的模型了,每种模型都有自己的使用场景,根据配对连接设备的具体条件来决定采用哪种模型来让用户确定是否配对。详细了解可以参考蓝牙核心协议《Core_v5.2.pdf》的Vol 1 -> Part A -> 5.2.4 Association models部分。

本篇蓝牙配对协议的分析就先到这儿,下篇继续分析SSP的完整流程。感兴趣的小伙伴欢迎私信留言一起讨论。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值