科普 | 低功耗蓝牙配对
如果设备支持 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 加密一系列数据而得到的。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |