【ESP32】使用 AT 固件如何设置动态加密配对密码大于 6 位?

Moderator: ESP_XCGuang

Rainbow
Posts: 26
Joined: Fri May 21, 2021 3:21 am

【ESP32】使用 AT 固件如何设置动态加密配对密码大于 6 位?

Postby Rainbow » Thu Aug 19, 2021 9:29 am

AT+BLESECPARAM=1,0,16,3,3,0 命令,其中的1代表认证请求 BOND,0 代表输入输出能力 DisplayOnly,16 代表密匙长度16字节,3 代表 3个比特位组成的初始密匙,3 代表 3 个比特位组成的响应密匙,0 代表自动选择安全等级。上边参数具体怎么配置可以将密码长度设置为 6 位数字(6字节)这个命令中哪个/哪些参数需要修改?

目前测试不管 AT+BLESECPARAM 指令密匙长度设置成多少都回复的是 6 位数字的配对密码。

使用的指令如下:

蓝牙 AT 加密指令参考:
AT+RESTORE // 恢复出厂设置
AT+GMR //查询模组版本信息
AT+BLEINIT=2 // 将模组初始化为 server
AT+BLEGATTSSRVCRE // GATTS 创建服务
AT+BLEGATTSSRVSTART //GATTS 开启服务
AT+BLEADDR? // 查询 BLE 设备的 public address。
AT+BLESECPARAM=1,0,16,3,3,0 //设置加密参数
AT+BLEADVSTART //开始 BLE 广播,每次建立 BLE 连接前都需要执行一次此命令
AT+BLEENC=0,3 //无秘钥连接后,进行这一步,即可产生加密连接请求,并产生加密密钥。

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: 【ESP32】使用 AT 固件如何设置动态加密配对密码大于 6 位?

Postby ESP_Alson » Thu Aug 19, 2021 1:23 pm

您好,对于您提出的问题回答如下:
BLE 协议规定动态密钥的范围为 000000 - 999999,这个您可以参考 BLE Core_v4.2 中的 Vol3, Part C 部分。BLE Core_v4.2 下载地址为: https://www.bluetooth.com/specification ... cation-4-2

至于你关注的参数 key_size, 在 BLE 协议中的全称是 Encryption Key Size, 作用是用来生成最终的 6 位动态 PIN。

Rainbow
Posts: 26
Joined: Fri May 21, 2021 3:21 am

Re: 【ESP32】使用 AT 固件如何设置动态加密配对密码大于 6 位?

Postby Rainbow » Fri Aug 20, 2021 2:27 am

AT+BLESECPARAM 指令的第三个参数是设置 Key 的长度,范围 7~16 字节,那这个参数是如何有效使用的呢?

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: 【ESP32】使用 AT 固件如何设置动态加密配对密码大于 6 位?

Postby ESP_Alson » Fri Aug 20, 2021 10:00 am

最终生成的 PIN 会用到配对过程中的临时 KEY,这个 KEY 是 7 ~ 16 bytes 之间的,这个参数建议您使用我们 AT+BLESECPARAM 中的 example 即可。

Rainbow
Posts: 26
Joined: Fri May 21, 2021 3:21 am

Re: 【ESP32】使用 AT 固件如何设置动态加密配对密码大于 6 位?

Postby Rainbow » Fri Aug 20, 2021 10:05 am

您好,您说的临时 Key ,这个没太理解,我当前使用的是 AT+BLESECPARAM=1,0,16,3,3,0 //设置加密参数 ,Key 长度设置的是 16 字节,但是产生的配对码还是 6 字节的。您这边可进行同步测试一下吗?

ESP_Alson
Posts: 106
Joined: Mon Mar 22, 2021 3:37 am

Re: 【ESP32】使用 AT 固件如何设置动态加密配对密码大于 6 位?

Postby ESP_Alson » Fri Aug 20, 2021 1:07 pm

您好,这些都在 BLE 协议里面定义好的。

对于 6个数字的 PIN 码,BLE 协议规定范围为 000000 - 999999

至于你关注的参数 key_size, 在 BLE 协议中的全称是 Encryption Key Size, 可能之前说的不是太正确。不知道您将我们的 ESP32 和什么设备进行配对,假设和手机进行配对,则走的是 LE Secure Connections. LE Secure Connections 可以分为 3 个阶段,在阶段 2 会用到 6 位数字的 PIN 码,之后配对的两台设备会校验 PIN 码是否正确,正确了之后会继续产生一个 128bit 的 Long Term Key (LTK), 这个产生的 Long Term Key 会根据 Encryption Key Size 进行截取。

简单来说 6 位 PIN 码确认之后会产生 LTK,LTK 会根据 Encryption Key Size 进行截取。

建议您可以仔细阅读 BLE 的 Specification

Who is online

Users browsing this forum: Google [Bot] and 80 guests