蓝牙低功耗加密和数据安全

时间:2013-07-31 07:16:37

标签: android security bluetooth core-bluetooth bluetooth-lowenergy

我需要通过智能手机(iOS和Android)和嵌入式设备(CC2540芯片)之间的蓝牙低功耗(BLE)数据连接发送一些敏感数据。

由于我不认为手机上的应用程序代码是免受黑客攻击的,因此我需要依靠BLE安全性将我的加密包从服务器传送到设备只需一次(我必须假设任何第二次交付包裹的尝试都必须来自攻击者。)

我几天来一直在网上浏览,看看我的数据是否安全,以及在哪些情况下。不幸的是,我无法对我的问题提出简单的答案。

  1. 如果我将手机与设备配对,我的数据是否安全? - 我想是的,虽然我理解配对过程本身是有缺陷的,所以理论上一些中间人(MITM)在配对过程中可以嗅探加密密钥,从而危及连接。

  2. 我需要将每个设备与多部手机配对(但一次只能与一部手机通信)。什么是配对的最大数量pr。设备? - 不幸的是,我需要将相当多的手机配对我的设备。

  3. 我是否可以从设备获取配对数据(长期密钥等)并将其存储在某些外部存储器中,以增加此限制。

  4. 我是否可以在没有配对的情况下与设备建立安全的数据连接,或者在需要时重新配对? - 这个程序对MITM攻击有多安全?

  5. 我似乎找不到任何明确回答这些问题的文件。任何想法或指示都将受到欢迎。

3 个答案:

答案 0 :(得分:10)

这是我的两分钱:

  1. AFAIK,BLE配对/加密过程没有缺陷。然而,加密有三种级别的MITM保护:

    • 无,这使用已知密钥== 0,因此如果窃听者在配对过程中捕获了所有数据包,他可以关注您的加密连接。
    • 低MITM保护,这是当您使用用户输入密钥进行配对时,密钥< 1.000.000。在这里,窃听者只需要尝试一百万个密钥。
    • 使用带外密钥进行高MITM保护。这将为您的加密提供完整的128位强度,即使捕获整个配对过程,窃听者也需要知道跟踪对话的密钥。由于BLE中没有密钥交换方法(至少,),这里最薄弱的部分是密钥分发,但这与在应用程序级别有额外的加密层时会出现同样的问题。
  2. 这是依赖于实现的。您的设备无需绑定,即与主机建立永久关系。如果设备没有绑定,则没有告知早期连接的状态(交换数据除外,但这是应用程序域,而不是BLE堆栈)。如果设备未绑定,则下次连接时必须再次配对以交换受保护的数据。如果设备已绑定,则可以在没有应用/用户交互的情况下继续加密连接,具有与先前相同的安全级别。对于一次性连接设备,绑定没有意义,因此您可以实现无状态实现,而不限制连接设备的数量。对于多次连接,您还可以拥有无​​状态实现,具体取决于您分发/存储密钥的方式,然后该密钥独立于BLE。这里不同选项的可用性取决于您正在使用的设备/ BLE堆栈实现,但规范允许所有这些。

  3. 如果您绑定并因此交换长期密钥等,这些可以依赖于您正在构建的BLE实现,然后根据您的喜好进行存储。

  4. 正如我在2.中所说,你可以建立一个没有绑定的安全(加密)连接。然后,设备需要在下次要建立安全连接时再次配对。如果您由于某种原因不想/不能配对,那么您只能进行明文通信。

答案 1 :(得分:2)

我会捅这个。

1)我对配对过程的理解是一样的。如果数据足够敏感,我会在我的应用程序中添加一个独立的加密层......

2)对于连接,即使连接未绑定/配对,BLE协议也同时限制为每个设备一个主机。单个设备同时与多个主机建立连接的唯一方法是设备以某种方式“假装”为多个设备。是否可以完成此操作将取决于硬件,并且绝对不是使用设备的标准方法之一。即使您可以欺骗硬件这样做,您也可能会遇到不可避免的问题,例如(几乎)重叠连接间隔的出现,这可能会导致您丢失数据并最终导致建立连接。

设备与多个主机通信的另一种方法是定期断开连接并让另一个主机建立连接。 AFAIK,这种技术没有特殊的协议支持,因此除了可能使用定向广告之外,您可能无法控制下一个主机连接的时间和时间。

另见“Core_V4.0”蓝牙规范第1卷第1部分第4.1.2节(例如来自https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=229737

3)很可能是的,细节因供应商而异,但有上述限制。

4)您可以在不绑定/配对的情况下建立连接。这种连接将允许通信,但它将是明文,没有任何安全性。 AFAICS,正确执行此操作的唯一方法是在应用程序级别使用您自己的数据保护。

答案 2 :(得分:0)

我假设CC2450设备使用TI堆栈。关于CC2540堆栈行为的详细文档在CC2540 Development Kit User Guide中。它可能是bluetooth.org

4.0规范之后的最佳文档
  1. 配对过程中使用的6位数针脚与MITM相对应 - PIN输入窗口为30秒。

  2. TI堆栈将配对设备的数量限制为8个左右。这是由于重新建立连接所需的CPU和加密性能/资源。

  3. 将加密密钥移出BT设备是一种安全风险。总的来说,密钥管理是所有加密的致命弱点。

  4. 没有绑定,您将无法进行加密的特性读/写操作。请参阅TI用户指南的4.6.1 - 它符合蓝牙4.0规范。