Я пытался подключить два устройства Bluetooth в режиме безопасных подключений BLE, но он не взаимодействует.Во время сопряжения, после того, как устройства Bluetooth просят пользователя подтвердить их 6-значные числа (я использую Числовое Сравнение для этого теста), процесс аутентификации всегда терпит неудачу.У меня не было убедительного объяснения, почему, но сегодня я откопал следующее из btmon в bluez ... кажется, что два устройства вычисляют разные ключи Диффи-Хеллмана?
< 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?!
Я читаю здесь , что DHKey должен быть общим секретом;они говорят об этом, используя единственные местоимения.Это говорит мне о том, что DHKey является частью симметричной криптографии, которая должна шифровать трафик в будущем, а не асимметричной криптографии, которую мы использовали для сопряжения до этого момента.
Если этот анализ верен, то тот факт, что два ключа не совпадают, имеет значение и должен быть исследован.Но если я ошибаюсь, и эти записи относятся к торговым ключам при подготовке к асимметричной криптографии, то, что эти два ключа DHK отличаются, меня не удивит.Учитывая имя и контекст, чего бы все ожидали?