保护蓝牙LE消息

时间:2014-09-23 15:03:44

标签: security encryption bluetooth aes bluetooth-lowenergy

我需要与自定义蓝牙LE设备通信。沟通需要

  • 安全(无法读取纯文本)
  • 不易受重播攻击
  • 每条消息包含20或22个字节到蓝牙LE限制(或电话API实施限制)

基于此,信任蓝牙LE的原生加密似乎是一个糟糕的选择:

https://github.com/mikeryan/crackle/

然后我们来实现自己的加密。在没有消息大小限制的正常客户端/服务器通信(例如TCP)中,具有预共享私钥的CBC模式下的AES-128可能是一个不错的选择。

但是使用蓝牙LE

  • 没有足够的空间来传输每个特性读/写的初始化向量
  • 考虑到广播等多个特征等,基于最后一个接收/发送的消息的最后一个块,跟踪改变IV似乎很容易出错。

我是否错过了使蓝牙LE安全的其他方法?

1 个答案:

答案 0 :(得分:0)

...将数据分段为20个字节,并对存储在GATT中的BLE特性进行多次写入。您需要提出一个协议来重新组合碎片数据。

为了对抗重播攻击,您可以在每次新连接之前生成新的质询请求并通过广告进行广播。它将由中央接收并加密返回到外围设备。确保为每个新连接生成新的挑战。

无法从安全点信任蓝牙LE配对(不包括OOB)。需要在配对之上在固件应用程序级别加密数据(使用Just Work或更好)。采用挑战请求实现对称加密(AES128或256)是一种很好的开始方式。

最后,我建议深入研究BLE OOB(Out-Of-Band)配对,它允许在中心和外围设备之间交换对称配对密钥。这也是确保沟通安全的一个不错的选择。有几种可用的NFC实现。