加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

科普 | 低功耗蓝牙配对

发布时间:2020-06-04 09:14:36 所属栏目:评论 来源:站长网
导读:Paring(配对)和 bonding(绑定)是实现蓝牙射频通信安全的一种机制,有两点需要注意: 一是 paring/bonding 实现的是蓝牙链路层的安全,对应用来说完全透明,也就是说,不管有没有 paring/bonding,你发送或接收应用数据的方式是一样的,不会因为加了 pa

如果设备支持 privacy,即使用 private resolvable 蓝牙设备地址,在这种情况下,虽然其地址每隔一段时间会变化一次,但是 identity address 仍然保持不变,其取值还是等于内在的 public 或者 random static 设备地址。

Identity Address 和 IRK 都可以用来唯一标识一个蓝牙设备。

°IO capabilities(输入输出能力)

是指蓝牙设备的输入输出能力,比如是否有键盘,是否有显示器,是否可以输入 Yes/No 两个确认值。

°Key size(密钥长度)

一般来说,密钥默认长度为 16 字节,为了适应一些低端的蓝牙设备处理能力,你也可以把密钥长度调低,比如变为 10 个字节。

2、Paring 流程及命令

°Paring 包含三个阶段:1、阶段 1:配对特性交换,即交换各自都支持哪些配对特性,比如支不支持 SC,支不支持 MITM,支不支持 OOB,以及它的输入输出能力等。2、阶段 2:密钥生成阶段,legacy paring 和 LESC paring 两者的区别就在这里,因此后续我们会分开阐述 legacy paring 和 SC paring 的阶段 2。

Legacy paring:STK 生成(注:legacy paring 的 LTK 生成跟配对流程无关,如前所述,其是由从机自己生成的)

SC paring:LTK 生成

3、阶段 3:通过蓝牙空中包分发一些秘密信息。Legacy paring 需要分发 LTK,IRK 等,而 SC paring 只需分发 IRK。秘密信息分发之前,必须保证连接已加密。  °Paring 流程如下所示:

科普 | 低功耗蓝牙配对

2.1 阶段 1:配对特性交换 Paring 流程及命令

°配对特性交换涉及三条 PDU 命令:1、Paring_Request:

科普 | 低功耗蓝牙配对

2、Paring_Response:

科普 | 低功耗蓝牙配对

3、Security_Request:

科普 | 低功耗蓝牙配对

°IO Capability 占一个字节,其定义如下所示:

科普 | 低功耗蓝牙配对

°AuthReq 也是占用一个字节,其定义如下所示:

科普 | 低功耗蓝牙配对

2.2 阶段 2:密钥生成

°根据阶段 1 的 IO 输入输出能力以及是否存在 OOB,阶段 2 存在如下几种配对方式(或者说认证方式):

Just works

Numeric comparison(LESC 才有)

Passkey

OOB

对于 legacy paring,如果 A 和 B 都支持 OOB,那么两者就会采用 OOB 方式进行配对,否则根据 IO 能力选择配对方式。对于 SC paring,如果 A 或者 B 有一方支持 OOB,那么两者就会采用 OOB 方式进行配对,否则根据 IO 能力选择配对方式。不同的 IO 能力对应的配对方式如下所示。

科普 | 低功耗蓝牙配对

科普 | 低功耗蓝牙配对

粗略来说,有认证的配对方式就具备 MITM 保护功能,从 IO 角度看,有三种配对方式:just works,passkey 和 Numeric Comparison,其中 just works 没有 MITM 保护功能,而 passkey 和 Numeric comparison 具备 MITM 保护功能。换句话说,如果你要求你的设备具备 MITM 保护功能,那么它必须有一定 IO 能力,而不能是“NoInputNoOutput”。至于 OOB 方式有没有 MITM 保护,取决于 OOB 通信的安全性,如果 OOB 通信具备 MITM 保护,那么蓝牙也具备 MITM 保护,否则就不具备。

下面分 legacy paring 和 sc paring 对配对流程进行讲解。

2.2.1 legacy paring

°Legacy paring 整个配对流程是围绕 STK 生成来做的:  设备的认证是通过设备 A 和 B 经由 TK 生成一个确认数,如果这个确认数相同,则认证通过。  如前所述,legacy paring 需要先生成 TK,TK 的生成方式取决于配对方式:

Just works。TK 默认为全 0

Passkey。TK 由 6 位 passkey 扩展而来

OOB。TK 直接由 OOB 数据提供

°然后生成确认数,算法如下所示:

科普 | 低功耗蓝牙配对

科普 | 低功耗蓝牙配对

°生成 STK 的算法如下所示:

科普 | 低功耗蓝牙配对

°以 passkey legacy paring 为例,其第 2 阶段全工作流程如下所示:

科普 | 低功耗蓝牙配对

Just works 和 OOB 配对流程就不再赘述了,大家自己去看一下蓝牙核心规范的说明。

这里强调一下,配对完成之后,连接就会加密,而且加密的密钥是 STK,而不是 LTK。

对于 legacy paring,如果 A 和 B 都支持 OOB,那么两者就会采用 OOB 方式进行配对,否则根据 IO 能力选择配对方式。对于 SC paring,如果 A 或者 B 有一方支持 OOB,那么两者就会采用 OOB 方式进行配对,否则根据 IO 能力选择配对方式。不同的 IO 能力对应的配对方式如下所示。

2.2.2 LESC paring

°跟 legacy paring 不一样的地方:  LESC paring 是通过 Diffie-Hellman 算法直接生成 LTK,因此它不需要生成 TK 和 STK。为了生成 LTK,双方需要先交换公钥,流程如下所示:

科普 | 低功耗蓝牙配对

公钥交换后,设备 A 和 B 就开始独自计算各自的 DHKey,按照 D-H 算法,他们俩算出的 DHKey 会是同一个。而 LTK 和 MacKey 就是通过这个 DHKey 加密一系列数据而得到的。

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读