Nahfeldsondierung

Seitenkanalangriff auf OpenThread

15. Mai 2018, 18:59 Uhr | Daniel Dinu und Ilya Kizhvatov
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 4

MLE-Parent-Anfrage

Die allererste Anmeldenachricht eines Kindes an den Elternknoten ist somit ein offensichtlicher Angriffspunkt. Nach Empfang dieser MLE-Parent-Request-Nachricht extrahiert der Router die Sequenzzahl aus dem Key-Source-Feld. Dieser Wert wird mit der internen Sequenz abgeglichen:

  • Bei Übereinstimmung verarbeitet der Router die Authentifizierung der empfangenen MLE-Nachricht mit dem aktuellen MLE-Schlüssel
  • Bei Abweichung leitet der Router einen temporären MLE-Schlüssel aus der empfangenen Sequenz ab, um die Nachricht zu verarbeiten. Bei übereinstimmenden Authentifizierungsschlüsseln wird die Anfrage beantwortet.

In jedem Fall wird wenigstens eine AES-CCM-Operation durchgeführt.
Deshalb kann ein Angreifer mit einer Verbindungsanfrage sehr einfach den HMAC-SHA256 oder AES-CCM auslösen. Bei HMAC-SHA256-Ausführung sind Anfragen mit unterschiedlicher Sequenzzahl als in der MLE-Einladung notwendig, bei AES-CCM ist die selbe Sequenzzahl erforderlich.

Die Kryptografie wird durch Standard-Netzwerkmechanismen extern ausgelöst.

Bild 2: Schlüsselerzeugung mit HMAC
Bild 2: Schlüsselerzeugung mit HMAC
© Daniel Dinu

Angriff auf die Schlüsselerzeugung

Unter Auslösung der HMAC-Funktion genügt die Anzahl der Eingangsbytes jedoch nicht, um dem MasterKey direkt zu extrahieren (Bild 2). In der HMAC-Nachricht ist nur die Sequenzierung veränderlich, der Angreifer kontrolliert exakt diese vier bytes. Aus k1 und k2 können MLE- und MAC-Schlüssel, jedoch nicht der MasterKey extrahiert werden. Dieser kann aber indirekt aus dem ThreadKnoten gewonnen werden. Zur Extraktion von k1 und k2 wird die Kompressionsfunktion F(k1,m) betrachtet.
Das vier byte-Eingangswort wird in erster Iteration mit konstanten aber unbekannten Bytes des internen Zustandes gemischt. Damit kann aus einer modularen Addition die Beziehung zwischen den vier unbekannten aber konstanten 32-bit-Worten gelernt werden. Ohne hinreichende Kenntnis der Daten oder einer entsprechend großen Zufallsbasis endet der Angriff an dieser Stelle.

Ein aufwendiger Vorlageangriff ist dennoch denkbar.


Angriff auf das AES im CCM-Modus

Der AES CCM-Modus wird auf Routern oder REEDs mit der richtigen Sequenzierung in einer MLE-Parent-Request ausgelöst. Bild 3 zeigt den typischen Eingangsblock für die zwei AES-CCM-Phasen AES-CBC und AES-CTR. Die konstanten Eingangsbytes sind in Hexadezimaldarstellung repräsentiert, variable bytes sind grau markiert.

Bild 3: Formatierung des ersten Blocks in AES-CBC (a) und AES-CTR (b).
Bild 3: Formatierung des ersten Blocks in AES-CBC (oben) und AES-CTR (unten).
© Daniel Dinu

Die ersten Eingangsblöcke im CBC- und CTR-Modus ähneln einander stark. Das erste Eingangsbyte ist für Flags reserviert und deshalb fixiert. Die letzten drei Eingangsbytes sind ebenso fest. Ein vorangestelltes byte spezifiert das Sicherheitslevel (0x05). Analog zur IEEE 802.15.4 MAC-Ebene zeigt dieser Wert Kodierung und Authentifizierung mit 4-byte-Code (MIC). Bei AES-CBC zeigen die letzten beide bytes die Eingangstextlänge, bei AES-CTR den Zählerstand (Startwert 1). 8-byte-Sender-MAC-Adresse und 4-byte-Zähler sind dabei variabel. Mit variabler Länge der MLE-Parent-Request wird auch das letzte byte veränderlich. Allerdings kann dessen Manipulation einen Alarm für unerwartet hohen Netzwerkverkehr auslösen.

Zur Erlangung des 16-byte-Schlüssels sind drei Angriffsrunden nötig, da nicht alle AES-bytes kontrolliert werden. Der temporäre Schlüssel wird nach Jaffe [4] auf Basis der konstanten Eingangsbytes berechnet.
 


  1. Seitenkanalangriff auf OpenThread
  2. Seitenkanalangriffe
  3. Sicherheitsschlüssel
  4. Thread-Bedrohungen
  5. MLE-Parent-Anfrage
  6. Angriffsimplementierung
  7. Angriffsergebnis
  8. Literatur

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Teledyne-LeCroy GmbH

Weitere Artikel zu Cyber-Security