【问题标题】:How to hard code BLE pairing passkey in bluez 5.x peripheral?如何在 bluez 5.x 外围设备中硬编码 BLE 配对密码?
【发布时间】:2019-12-11 17:15:59
【问题描述】:

我需要在我的外围设备中有一个硬编码的密码密码(例如“123456”),以便安卓手机在配对时必须输入此密码。

我正在使用 ubuntu 18.04、bluez 5.48 和板载 TI BLE4.0 + wifi 芯片。

目前,我可以使用堆栈提供的所有其他方法(noinputoutput、Keyboardonly、displayonly 和 keyboarddisplay)建立配对。

我的外围设备在生产时没有显示器和键盘,因此计划使用存储在文件中的唯一键。

我尝试修改 simple-agent 代码以返回固定密钥。我还尝试调整 bt-agent 代码以传递密码文件。但是所有这些方法都不能使用,因为堆栈正在创建一个随机密钥并且不使用我的静态硬编码密钥 :(

我可以在网上看到几十个类似的问题,但没有一个是正确答案。我之前曾研究过少数其他 BLE 芯片并达到了相同的要求(cc2650 等带有控制器芯片和堆栈),但使用的是 bluez 堆栈我做不到。

我听说旧堆栈具有从文件中读取 pin 的功能,但如何在新堆栈中实现相同功能?

我希望以下几点是强制性的?: 1) 我必须禁用 hci0 sspmode 2) 我需要蓝牙守护程序服务才能运行 3) 我需要一个代理来配对

如果有人用 bluez 达到同样的效果,请告诉我...

谢谢!

【问题讨论】:

    标签: key bluez pairing hardcode


    【解决方案1】:

    蓝牙标准规定,每次尝试的密钥都应该是随机的。有一个很好的理由:如果重复使用密钥(至少对于 LE 安全连接),协议的安全属性就会被破坏。所以你可能应该坚持“Just Works”的方法。如果您需要身份验证,请在应用层中使用 PAKE 算法。

    请参阅https://devzone.nordicsemi.com/f/nordic-q-a/35856/questions-about-lesc-mitm-and-passkey/138216#138216 了解详细说明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-02
      • 2021-02-08
      • 2020-03-31
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      相关资源
      最近更新 更多