如何在bluez 5.x外设中对BLE配对密码进行硬编码?

时间:2019-12-11 07:09:28

标签: key bluez pairing hardcode

我需要在我的外围设备中使用硬编码的密码钥匙(例​​如“ 123456”),以便android mobile在配对时必须输入此密码。

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

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

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

我尝试过修改简单代理代码以返回固定密钥。.我也尝试过调整bt代理代码以传递密钥文件。但是由于堆栈正在创建随机密钥,因此无法使用所有这些方法而不要使用我的静态硬编码密钥:(

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

我听说较早的堆栈具有从文件中读取图钉的功能,但是如何在新堆栈中实现相同功能?

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

请让我知道外面是否有人用bluez达到了同样的效果...

谢谢!

1 个答案:

答案 0 :(得分:0)

蓝牙标准规定,每次尝试都应随机输入密码。这样做有一个很好的理由:如果重新使用密码(至少对于LE Secure Connections),则协议的安全属性将被破坏。因此,您可能应该坚持“ Just Works”方法。如果需要身份验证,请在应用程序层中使用PAKE算法。

有关详细说明,请参见https://devzone.nordicsemi.com/f/nordic-q-a/35856/questions-about-lesc-mitm-and-passkey/138216#138216