如何解决蓝牙用于加密数据的协议是什么?
我一直在寻找蓝牙(EDR 和 LE)用来加密数据的协议。我看过官方文档,但不清楚是 Diffie Hellman 还是 E0。
PD:如果我没记错的话,协议实现的情况不同,我需要当两个设备共享 6 位简单密码时,例如,当我们将智能手机与耳机配对或一个演讲者。
解决方法
错位的问题
首先,这个问题不适合在SO上问,因为它根本不涉及任何编码问题,而是指规范。尽管如此,我还是会给你一个答案。
不要误将加密用于密钥交换/生成
Diffie–Hellman key exchange
(或 Elliptic-Curve Diffie–Hellman (ECDH)
,如果在椭圆曲线上运行) - 正如其名称所述 - 一种用于交换/生成加密密钥材料的协议。这与实际的数据加密无关,也与实际的数据完整性无关。
E0
另一方面是一种用于实际加密数据的加密算法 - 但也不是用于加密数据的身份验证(完整性)。
BR/EDR
关于 BR/EDR 密钥交换、身份验证和加密,您可以在 [BR/EDR 控制器] 安全规范(蓝牙核心)中的表 1.1:安全算法中找到一个很好的概述规范版本 5.2 [Vol 2] Part H [Section 1])。
为您总结一下,安全机制 Legacy
和 Secure Simple Pairing
都使用 E0
进行加密,而 Secure Connections
使用 {{1 }}。
请注意,AES-CCM
和 Secure Simple Pairing
都使用 Secure Connections
来生成密钥,而 ECDH
使用 Legacy
。
LE
LE 链路层上的加密使用 SAFER+
执行,如[低能耗控制器] 低能耗链路层安全性(蓝牙核心规范版本 5.2 [Vol 6] Part E)中所述.
链路层上的实际加密需要一些加密密钥,这些密钥在配对期间使用[主机]安全管理器规范(蓝牙核心规范版本 5.2 [Vol 3] Part H)中描述的方法派生/计算。
总结一下,有AES-CCM
(Short Term Key (STK) Generation)和LE legacy pairing
(Long Term Key (LTK) Generation)。
请注意,两者都与密钥生成/交换有关,而 LE Secure Connections
使用(以某种方式)LE legacy pairing
和 AES
使用 LE Secure Connections
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。