我需要与自定义蓝牙LE设备通信。沟通需要
基于此,信任蓝牙LE的原生加密似乎是一个糟糕的选择:
https://github.com/mikeryan/crackle/
然后我们来实现自己的加密。在没有消息大小限制的正常客户端/服务器通信(例如TCP)中,具有预共享私钥的CBC模式下的AES-128可能是一个不错的选择。
但是使用蓝牙LE
我是否错过了使蓝牙LE安全的其他方法?
答案 0 :(得分:0)
...将数据分段为20个字节,并对存储在GATT中的BLE特性进行多次写入。您需要提出一个协议来重新组合碎片数据。
为了对抗重播攻击,您可以在每次新连接之前生成新的质询请求并通过广告进行广播。它将由中央接收并加密返回到外围设备。确保为每个新连接生成新的挑战。
无法从安全点信任蓝牙LE配对(不包括OOB)。需要在配对之上在固件应用程序级别加密数据(使用Just Work或更好)。采用挑战请求实现对称加密(AES128或256)是一种很好的开始方式。
最后,我建议深入研究BLE OOB(Out-Of-Band)配对,它允许在中心和外围设备之间交换对称配对密钥。这也是确保沟通安全的一个不错的选择。有几种可用的NFC实现。