蓝牙用于加密数据的协议是什么?

what are the protocols that bluetooth use to encrypt the data?

我一直在寻找蓝牙(EDR 和 LE)用于加密数据的协议。我看过官方文档,但我不清楚它是 Diffie Hellman 还是 E0。

PD:如果我没记错的话,在不同的情况下协议实现一个或另一个,我需要当两个设备共享 6 位简单密码时,例如,当我们将智能手机与耳机配对时或演讲者。

错位的问题

首先,这个问题不适合在SO上问,因为它根本不涉及任何编码问题,而是参考规范。不过,我会给你一个答案。


不要将加密误认为是密钥交换/生成

Diffie–Hellman key exchange(或 Elliptic-Curve Diffie–Hellman (ECDH),如果在椭圆曲线上操作)是 - 正如其名称所述 - 用于交换/生成加密密钥的协议 material。它与实际数据加密无关,也与实际数据完整性无关。

另一方面,

E0 是一种用于实际加密数据的加密算法 - 但也不用于加密数据的身份验证(完整性)。

BR/EDR

关于 BR/EDR 密钥交换、身份验证和加密,您可以在 Table 1.1:安全算法 中找到很好的概述 [BR/EDR 控制器] 安全规范(蓝牙核心规范版本 5.2 [第 2 卷] H 部分 [第 1 节]).

总结一下,安全机制 LegacySecure Simple Pairing 都使用 E0 进行加密,而 Secure Connections 使用 AES-CCM.

请注意,Secure Simple PairingSecure Connections 都使用 ECDH 生成密钥,而 Legacy 使用 SAFER+.

LE Link 层上的加密使用 AES-CCM 执行,如 [低能量控制器] 低能量 Link 层安全性(蓝牙核心规范)中所述版本 5.2 [第 6 卷] E 部分).

Link层上的实际加密需要一些密钥,这些密钥是在配对过程中使用[Host]安全管理器规范(蓝牙核心规范版本)中描述的方法导出/计算的5.2 [第 3 卷] H).

总结一下,有LE legacy pairing(短期密钥(STK)生成)和LE Secure Connections(长期密钥(LTK)生成)。

请注意,两者都是关于密钥生成/交换的,而 LE legacy pairing 使用(以某种方式) AESLE Secure Connections 使用 ECDH.