我一直在尝试让两个蓝牙设备在BLE安全连接模式下配对,但没有配合。配对期间,蓝牙设备要求用户确认其6位数字(我正在使用数字比较进行此测试)后,身份验证过程始终会失败。我没有令人信服的原因解释,但是今天我从bluez的 btmon 中挖出了以下内容……这两个设备似乎在计算不同的Diffie Hellman密钥?
< ACL Data TX: Handle 5 flags 0x00 dlen 21 //I interpret this as transmitting a Diffie Hellman key to the respondant
SMP: Pairing DHKey Check (0x0d) len 16
E: 9b6628f5e7a44dc1ce482b7d5d162dfc
@ MGMT Event: Command Complete (0x0001) plen 10 //irrelevant
User Confirmation Reply (0x001c) plen 7
Status: Success (0x00)
LE Address: 00:16:A4:4A:3A:60 (Ezurio Ltd)
> HCI Event: Number of Completed Packets (0x13) plen 5
Num handles: 1
Handle: 5
Count: 1
> ACL Data RX: Handle 5 flags 0x02 dlen 21 //this is the respondant replying with it's own Diffie Hellman
SMP: Pairing DHKey Check (0x0d) len 16
E: ad2d6f48721273b576958623d7b008b2 //different than the previous DHKey?!
我正在读here,认为DHKey应该是共享机密;他们用单数代词来谈论它。这对我来说,DHKey是对称加密的一部分,该对称加密应该用于加密未来的流量,而不是到目前为止我们一直用于配对的非对称加密。
如果该分析是正确的,则两个密钥不一致的事实是相关的,应进行调查。但是,如果我错了,并且这些条目引用交易密钥以准备非对称密码,那么这两个DHKey的不同就不会令我感到惊讶。有了名称和上下文,每个人都会期望什么?