This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640R2F:关于将 SNP 安全功能用于器件配置的建议

Guru**** 2587345 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/694708/cc2640r2f-advice-on-utilizing-snp-security-features-for-device-provisioning

器件型号:CC2640R2F

您好!

我对在使用 CC2640R2作为 SNP 的 BLE 应用上实现安全性有疑问。

我的用例要求单个 BLE 器件由多个器件(移动应用)控制。 这是通过在应用层(在 GATT 值之上)上实现安全性来实现的、该应用层使用256位对称密钥。
以下是我之前的主题问题以及与此用例相关的其他参考:
https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/613046/2257490#2257490
https://devzone.nordicsemi.com/b/blog/posts/intro-to-application-level-security-using-the-ecb-

在我开发应用时、我发现的问题是在设置 BLE 器件后配置密钥、然后才能使用它。 我决定让 SNP 使用其 RNG 生成密钥。 此密钥应由移动应用程序检索并同步到云、因为此密钥将分发到其他经过云身份验证并有权控制 BLE 器件的移动应用。

要检索密钥、这意味着移动应用程序应与 BLE 器件配对、我仍在寻找保护此连接的方法。 我的问题是:

  1. 如果我只使用"只工作"机制、就足够了吗?
  2. 如何在 SNP API 上启用 BLE 提供的加密配对方法(Just Works)? 请原谅我、因为我没有看到 Simplelink BLE SDK 插件中演示如何使用 SNP 设置安全或 SNP 发送安全请求的示例。
  3. 假设我使用的是 Just Works、我计划实施测试命令等命令、使 BLE 器件上的 LED 闪烁。 此命令由移动应用程序上的用户同意(通过按钮)触发。
    由于对手需要实际在场并观察配置设备的用户、它是否提供了更好的安全性?
  4. 我可以想到的另一件事是在器件生产过程中生成设置密钥(256位)、并将其编码到贴纸或卡片上的 QR 代码中。 每个器件都具有唯一的设置密钥、移动应用程序应首先扫描 QR 代码、然后才能安全通信。 此设置密钥与生成的密钥不同、因为它是固定的、永远不会更改、因此我仅限制设置的使用、并允许用户在出厂复位器件并需要再次设置时保留 QR 代码。 但我觉得这在生产线上比较复杂、所以我不把它作为优先事项。

感谢您的关注

此致、
Pranata

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Pranata、

    如果您使用的是 BLE 4.2安全连接、则"JustWorks"应该是安全的。 否则、使用传统配对完全不安全。 由于 BLE 配对不包含身份验证、您仍然不知道连接到了谁。

    如果您看 一下 dev.ti.com/.../ 、您将看到9.3.8 SNP Set Security Parameter 一章。 如果将 IO 能力设置为无输入/无输出、则只能正常工作。 不过、我认为 SNP 不支持 LE4.2安全连接。

    使 LED 闪烁、或者更好地闪烁、需要按下按钮来启用配对、这会提高安全性。 但如前所述、如果有人嗅探初始交换、LE Legacy 配对就不安全。 由于您不在此处绑定、因此所有配对都是初始交换。 但在初始连接之后、它是安全的、因为 BLE 安全使用交换的对称密钥。

    我认为在此处涉及链路层安全性根本不值得。 尤其是在任何情况下、并非所有电话都支持安全连接。

    我建议使用其中一个

    1) 1)正如您所说、在生产过程中向十六进制文件附加一个完全随机的特定于器件的密钥、并将其存储在某个位置、也可能存储在 QR 代码中。

    1b)与上述相同、但各个密钥存储在"云"中、云服务会对电话命令进行身份验证并为该设备加密这些命令、并为电话提供通过 BLE 发送的加密数据。 手机永远不知道钥匙。

    1C)与上述相同、但通过云服务、可生成会话密钥、可直接在电话和设备之间使用。

    2) 2)实施您自己的非对称密钥交换协议。 本质上、使用对称密钥、交换是安全进行的棘手部分。

    这里的免责声明是、我无法为您提供正确操作方法的完整方法、但这或许可以让您入门。 此外,如果我们就安全问题提供愚蠢的建议,可能还会出现责任问题:)

    此致、
    Aslak
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Aslak、

    感谢您的建议!
    我还想对 SNP API 文档进行澄清。 如果 SNP 不像您想象的那样支持4.2 LE 安全连接、那么在 SNP API 指南5.3中有一条规定:
    蓝牙4.2主机和控制器选项仅限于安全连接。

    这是否意味着 SNP 支持 LE Secure Connection?

    我同意您的观点、因为并非所有电话都支持安全连接、因此最好在应用层进行保护

    谢谢 Aslak

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我必须承认,我对国家发展计划有一些无知。 我通知一位同事、他知道事情、但他正在旅行、因此可能无法立即回答。

    此致、
    Aslak
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Aslak,希望它能清楚地说明文档和 SNP 固件:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Pranata、

    正确的做法是 SNP 确实支持 LE Secure Connections。 如果您的对等设备不支持 LESC、它还可以支持/回退到 LE 传统配对。

    Aslak 曾提到过设置上述 IO 功能、这些功能可通过 SNP Set Security 参数命令进行设置。
    如果选择经过身份验证的配对方法、则还需要发出 SNP 设置身份验证数据命令。