实现BLE PIN码配对原理

目录

一、基本概念

1、配对

1.1 阶段一:配对特性交换

1)IO Capability:IO能力,决定了双方设备根据相应的配对特性找到合适的连接方法(例:手表显示PIN码,手机输入PIN码  手表IO=DispayOnly )

2)OOB:带外设备,使用外部通信手段来交换配对过程中使用的一些信息。

3)Auth Req

①Bonding Flags:是否需要配对之后储存一个长期的LTK,这样之后的每次连接就不需要重新配对了(legacy和SC都有效)

②MITM:决定阶段二是否使用IO Capabilitites(参考章节:2.3.5.1)

③SC:决定阶段二的配对方法。置1是支持LE Secure Connections的配对方式,双方都支持则使用SC,否则使用legacy

④kerpress:仅在Passkey输入协议中使用,在其他协议中被忽略。

⑤CT2:在传输时应设置为1,以指示对h7功能的支持。根据core 2.4.2.4 章节,好像是决定了 LE/BR 之间互相通过LTK派生秘钥的过程。

⑥RFU:Reserved,没有使用

4)Maximum Encryption Key Size:7~16byte,一般都是16byte啦。

5)Initiator Key Distribution:发起者秘钥分发

6)Responder Key Distribution:响应者秘钥分发

1.2 阶段二:密钥的生成

1.3 阶段三:密钥的分发

二、手表实际应用

1)配置手表配对特性

2)触发配对


一、基本概念

1、配对

在蓝牙核心规范中,有三个主要的架构层:Controller、Host和Application。

在Host层,有一个名为Security Manager (SM)的模块,它定义了配对和密钥分发的方法和协议、相应的安全toolbox,以及定义了配对命令帧格式、帧结构和超时限制的Security Manager协议(SMP)

ble的配对其实就是一个加密的过程,目的是提高蓝牙链路传输的安全性,不配对也能连接进行通信。

在ble的配对中根据蓝牙版本又分为 legacy pairing 和 secure Connections 。

ble是蓝牙4.0及之后版本才有的功能,而在4.2蓝牙规范中,升级了LE的配对;

所以区分如下:

v4.0/4.1:    LE legacy pairing

v4.2及以上:LE Secure Connections

note:高版本也是可以支持 legacy pairing

一般来说,配对有三

个阶段。

阶段1: Pairing Feature Exchange
阶段2:(LE legacy pairing):短期密钥(STK)生成
阶段2:(LE Secure Connections):长期密钥(LTK)生成
阶段3:传输指定密钥分发

1.1 阶段一:配对特性交换

配对请求包格式如下:

1)IO Capability:IO能力,决定了双方设备根据相应的配对特性找到合适的连接方法(例:手表显示PIN码,手机输入PIN码  手表IO=DispayOnly )

note:没有一种配对算法可以使用 IO(Yes/No + No),

所以规定此项也是 NoInputNoOutput

2)OOB:带外设备,使用外部通信手段来交换配对过程中使用的一些信息。

3)Auth Req

①Bonding Flags:是否需要配对之后储存一个长期的LTK,这样之后的每次连接就不需要重新配对了(legacy和SC都有效)

②MITM:决定阶段二是否使用IO Capabilitites(参考章节:2.3.5.1)

③SC:决定阶段二的配对方法。置1是支持LE Secure Connections的配对方式,双方都支持则使用SC,否则使用legacy
④kerpress:仅在Passkey输入协议中使用,在其他协议中被忽略。

双方设备都设为1时有效,Keypress Notification。

⑤CT2:在传输时应设置为1,以指示对h7功能的支持。根据core 2.4.2.4 章节,好像是决定了 LE/BR 之间互相通过LTK派生秘钥的过程。
⑥RFU:Reserved,没有使用
4)Maximum Encryption Key Size:7~16byte,一般都是16byte啦。

该值定义了设备的最大加密密钥大小(以字节为单位)可以支持。最大的密钥大小应该在7到16字节的范围内。

5)Initiator Key Distribution:发起者秘钥分发
6)Responder Key Distribution:响应者秘钥分发

1.2 阶段二:密钥的生成

阶段一的特性交换(sdk参数配置)决定了阶段二的配对方式,也就是使用哪个密钥生成方式;

密钥生成方式如下:

  • Just Works
  • Passkey
  • OOB
  • Numeric Comparison(SC配对特有的新方法)

涉及特性:OOB,MITM,IO Capability,SC

先看双方OOB, 再看MITM, 再核对 IO Capability,SC配置参数;就知道使用哪种密钥生成方式了

1.3 阶段三:密钥的分发

配对和绑定区别:
1)连接:通讯的基础,通讯数据为明文;
2)配对:配对仅仅是为了在连接的基础上加密(通讯数据经过加密为密文),提高蓝牙链路传输的安全性。不配对也能连接进行通信。
3)绑定:绑定是配对发起时的一个可选配置。把配对信息记录下来, 下次不用配对自动进入加密的连接;所以没在bonding列表里的设备不影响连接,照连不误

二、手表实际应用

1、nordic平台实现手表显示PIN码,手机输入PIN码方式

1)配置手表配对特性

参数配置函数:

ret_code_t pm_sec_params_set(ble_gap_sec_params_t * p_sec_params);

2)触发配对

方法一:

方法二:

添加HID服务,大部分手机都会触发加密;可能会有兼容性问题

方法三:

APP主动发起加密(理论可行,未验证)

方法四:

手表主动发起,但是会因为这个request命令,手机会先弹一次配对,再弹一次输入PIN码(附视频)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值