2016-07-13 7 views
0

Während des Verschlüsselungsverfahrens einer BLE-Verbindung führen der Master und der Slave einen 3-Wege-Handshake durch, um die Verschlüsselung zu validieren. Ich bin ein Fall gegenüber dem der Slave, dh die Nachricht LL_START_ENC_RSP die im folgenden Schema dieser Händedruck in Rot ist nicht das letzte Teil dieses Handshake senden:Was könnte dazu führen, dass der Slave LL_START_ENC_RSP während der BLE-Verschlüsselung nicht sendet?

für diese

enter image description here

Gibt es einen bestimmten Grund, passieren ? Mit spezifiziert, meine ich einen Grund, der nicht umsetzungsspezifisch ist.

Die BLE Core-Spec 4.2 sagt dieses:

Wenn der Link Layer des Slave eine LL_START_ENC_RSP PDU empfängt es wird eine LL_START_ENC_RSP PDU übertragen. Dieses Paket soll verschlüsselt gesendet werden.

Aber das gibt keine Bedingung für den Slave, dieses Paket nicht zu senden.

Wäre es zu diesem Zeitpunkt möglich, dass der Slave denkt, dass er den Langzeitschlüssel mit dem aktuellen Master verknüpft hat (denn wenn das nicht der Fall wäre, hätte der Slave den 3-Wege-Handshake nicht gestartet, richtig?), aber seine LTK ist falsch und die Entschlüsselung schlägt fehl? Wenn es passiert wäre, würde es keine Trennungsnachricht geben, statt nichts?

Da ich zu BLE ziemlich neu bin, habe ich keine Idee, wie man dieses Problem analysiert oder interpretiert, also würde jede Hilfe sehr geschätzt werden. Die Anwesenheit und Abwesenheit der Nachrichten wurde mit Hilfe eines BLE-Sniffers beobachtet.

Hinweis: Abbildung 1 ist eine Reproduktion von Abbildung 7-26 des Buches: Bluetooth Low Energy Das Entwicklerhandbuch von Robin Heydon.

+0

Was ist der Bluetooth-Stack/Hardware, die Sie haben? – Emil

+0

Dies ist eine Information, die ich nicht teilen kann (Firmenrichtlinie), deshalb habe ich nach einem Implementierungs-agnostischen Grund gefragt. Ich habe den Anfang einer Antwort, es scheint, dass der erste LL_START_ENC_RSP vom Master nicht vom Slave entschlüsselt werden kann, aber der Grund bleibt vage. – Tim

Antwort

1

Je nach Spezifikation wird immer die dritte Nachricht gesendet. Wenn es nicht gesendet wird, liegt ein Fehler in der Implementierung vor.

Wenn der Slave den falschen LTK hat, akzeptiert der Slave nicht den LL_START_ENC_RSP vom Master. Wenn dies geschieht, wird die Verbindung nach dem Überwachungszeitlimit gelöscht, da der Slave dieses Paket niemals bestätigt.

Hinweis: Damit ein Sniffer ein Paket erfolgreich entschlüsseln kann, muss er den LTK kennen. Das Sniffer-Programm von Nordic fängt den LTK ab, wenn der Sniffer während des Pairing-Prozesses läuft.