首页 > 解决方案 > 蓝牙用于加密数据的协议是什么?

问题描述

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

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

标签: encryptionbluetoothbluetooth-lowenergydiffie-hellman

解决方案


错位的问题

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


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

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

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

BR/EDR

关于 BR/EDR 密钥交换、身份验证和加密,您可以在表 1.1 中找到一个很好的概述: [BR/EDR Controller] 安全规范中的安全算法(蓝牙核心规范版本 5.2 [Vol 2] Part H [Section 1] ) .

为您总结一下,安全机制 LegacySecure Simple Pairing两者都E0用于加密,而Secure Connections使用AES-CCM.

请注意,这Secure Simple Pairing两者Secure ConnectionsECDH用于密钥生成,而Legacy使用SAFER+.

LE 链路层上的加密是使用 执行的AES-CCM,如[Low Energy Controller] Low Energy Link Layer Security (Bluetooth Core Specification Version 5.2 [Vol 6] Part E)中所述。

链路层上的实际加密需要一些加密密钥,这些密钥是在配对期间使用[Host] Security Manager Specification(蓝牙核心规范版本 5.2 [Vol 3] Part H)中描述的方法派生/计算的。

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

请注意,两者都是关于密钥生成/交换,而LE legacy pairing使用(不知何故)AESLE Secure Connections使用ECDH


推荐阅读