encryption - 蓝牙用于加密数据的协议是什么?
问题描述
我一直在寻找蓝牙(EDR 和 LE)用来加密数据的协议。我已经看过官方文档,但我不清楚它是 Diffie Hellman 还是 E0。
PD:如果我没记错的话,协议在不同的情况下实现一个或另一个,我需要两个设备共享 6 位数的简单密钥,例如,当我们将智能手机与耳机或扬声器配对时。
解决方案
错位的问题
首先,这个问题不适合在 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] ) .
为您总结一下,安全机制 Legacy
和Secure Simple Pairing
两者都E0
用于加密,而Secure Connections
使用AES-CCM
.
请注意,这Secure Simple Pairing
两者Secure Connections
都ECDH
用于密钥生成,而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
使用(不知何故)AES
和LE Secure Connections
使用ECDH
。
推荐阅读
- git - 将 git 分支构建发布到工件的本地存储库
- postgresql - 如何使用 Airflow Postgres 挂钩将 CSV 加载到 AWS RDS?
- swift - swift 协议关联类型
- powerbi - 是否可以在 Power BI 中从 OData 源获取一定百分比的数据?
- python - 在另一列 Python 中将列与其自己的正则表达式匹配
- r - 如何增加使用“num_to_schoice”创建的单选题的选项数量
- javascript - 如何在另一个组件中使用反应类属性
- c - 如何递归查找目录和子目录中的文件
- excel - excel中公式的一部分是否有替换功能?
- xcode - 如何停止 Xcode 模拟器耗尽网络数据