蓝牙配对协议分析二

蓝牙配对协议分析二

本篇接着《蓝牙配对协议分析一》来继续分析下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
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44260005/article/details/106255368
今日推荐