Rolling Code Erklärung

13

Könnte jemand erklären, wie fortlaufende Code-Protokolle wie KeeLoq funktionieren? Ich verstehe die Grundvoraussetzung, dass sie jedes Mal einen anderen Code verwenden, so dass Sie nicht einfach einen Wiederholungsangriff verwenden können, aber ich verstehe nicht, wie eine Seite den richtigen Code überprüft usw.

Wie führen sie außerdem eine anfängliche Synchronisierung durch, wenn der Index in den fortlaufenden Codes vorher nicht bekannt ist / nicht freigegeben wurde?

Wenn Sie Keeloq als Beispiel verwenden müssen, um das zu erklären, ist das in Ordnung, aber ich würde eher eine allgemeine Erklärung für Rolling Codes geben.

NickHalden
quelle

Antworten:

10

Rollende Codes erfordern mehrere Teile, um korrekt zu funktionieren. Hier beschreibe ich eine generische Implementierung, die alle Teile auf eine bestimmte Weise verwendet. Andere Systeme sind Variationen dieses Themas, verwenden jedoch im Allgemeinen viele der gleichen Techniken auf ähnliche Weise. Anstatt zu versuchen, die vollständige Implementierung und ihre Funktionsweise auf einmal zu beschreiben, beschreibe ich ein einfaches System und füge Komplexität hinzu, bis wir ein kryptografisch sicheres System erreichen.

Ein nicht kryptografischer Rolling Code ist einfach ein Sender und ein Empfänger, die denselben Pseudozufallszahlengenerator (PRNG) verwenden. Dieser Generator enthält zwei wichtige Informationen: eine Berechnung und die zuvor generierte Zahl. Die Berechnung ist im Allgemeinen eine lineare Rückkopplungsgleichung, die durch eine einzelne Zahl dargestellt werden kann. Indem der PRNG mit der vorherigen Nummer gespeist wird und die Rückmeldungsnummer gleich bleibt, wird eine bestimmte Folge von Nummern erzeugt. Die Sequenz hat keine wiederholten Sequenzen, bis alle von ihr generierten Zahlen durchlaufen wurden, und beginnt dann erneut mit derselben Sequenz.

Wenn sowohl die Fernbedienung als auch der Sender die Rückmeldungsnummer und die aktuelle Nummer kennen, kann der Empfänger diese beim Senden der nächsten Nummer an seinem eigenen Generator testen. Wenn es übereinstimmt, wird es aktiviert. Wenn dies nicht der Fall ist, wird die Sequenz durchlaufen, bis die von der Fernbedienung gesendete Nummer gefunden wurde. Wenn Sie die Fernbedienung erneut drücken, sollte sie übereinstimmen, und sie wird aktiviert, da die vorherigen Übertragungen die Nummerngeneratoren bereits synchronisiert haben. Aus diesem Grund müssen Sie die Entriegelungstaste manchmal zweimal drücken - Ihr Empfänger oder Ihr Sender sind nicht synchron.

Das ist der rollende Teil des Codes. Wenn der PRNG lang genug ist, ist es sehr schwierig, die Rückmeldungsnummer ohne viele Zahlen in der Sequenz in einer Reihe zu ermitteln, was bei normaler Verwendung schwierig ist. Aber es ist nicht kryptografisch sicher.

Darüber hinaus fügen Sie eine typische Verschlüsselung hinzu. Der Fahrzeughersteller verwendet einen bestimmten geheimen Schlüssel für Sender und Empfänger. Abhängig vom Hersteller kann es sein, dass jedes Modell und jedes Jahr einen anderen Code hat oder dass der Code für mehrere Fahrzeugmodelle und über mehrere Jahre hinweg gilt. Der Nachteil ist, dass für jede Fernbedienung ein anderer Vorrat benötigt wird. Das Problem beim Teilen eines Codes über viele Modelle besteht jedoch darin, dass bei einem Defekt mehr Autos anfällig sind.

Hinter der Verschlüsselung stehen Button-Informationen, die vom PRNG generierte Nummer und ein paar Informationen zur Rückmeldungsnummer. Nicht genug, um das PRNG von Grund auf neu zu erstellen, aber genug, um nach einer bestimmten Anzahl von Tastendrücken und mit einigen Insiderinformationen über den begrenzten Platz eine Rückmeldungsnummer zu erhalten (wiederum herstellerspezifisch, leitungsspezifisch), dann kann der Empfänger nach mehreren Schulungen Senden, ermitteln Sie die Rückmeldungsnummer und beginnen Sie mit der Verfolgung des PRNG für diese Fernbedienung.

Der fortlaufende Code soll nur Wiederholungsangriffe stoppen. Die Verschlüsselung soll den laufenden Code sichern, um zu verhindern, dass er beschädigt wird. Mit nur dem einen oder anderen wäre das System zu leicht zu brechen. Da der Hersteller sowohl den Sender als auch den Empfänger steuert, umfasst die Schulung keine Kryptografie mit öffentlichen Schlüsseln oder etwas Besonderes. Es verhindert auch, dass Aftermarket-Anhänger in Autos mit dieser Art von System arbeiten.

Rolling Code ist jedoch nicht undurchlässig. Das alte Keeloq-System wurde erst vor einigen Jahren (nach einem Jahrzehnt der Nutzung) erfolgreich angegriffen, sodass der Verschlüsselungscode des Herstellers und die fortlaufenden Codes leichter gefunden werden können. Früher wurde es auf eine Weise angegriffen, die es Menschen ermöglichte, Fahrzeuge zu nehmen, ohne den Code zu verletzen. Als Antwort lautet der neue Verschlüsselungsschlüssel 60 Bit. Nicht so sicher wie viele moderne Verschlüsselungssysteme, aber sicher genug, dass es wahrscheinlich noch viele Jahre dauern wird, bis es kaputt geht.

Adam Davis
quelle
Ah, ich muss den Teil "keine Sequenz wiederholt" des PRNG vergessen haben, das ist sehr wichtig. Was ist der Vorteil der Informationsübertragung, mit der der Empfänger den Rückmeldungscode ermitteln kann? Das scheint weniger sicher zu sein, als einfach einen Rückmeldungscode zu wählen und sowohl den Sender als auch den Empfänger damit
herzustellen
@NickHalden Der Feedback-Code ist für jede Fernbedienung unterschiedlich. Kunden möchten später weitere Fernbedienungen hinzufügen oder fehlende Fernbedienungen ersetzen. Es wird nur für das Training benötigt. Einige etwas sicherere Versionen erfordern eine bestimmte Folge von Tastendrücken auf der Fernbedienung, bevor die zusätzlichen Feedback-Informationen ausgegeben werden. Im Allgemeinen ist das Gesamtsystem jedoch so sicher, dass Sie auch dann noch viel mehr Informationen benötigen, wenn Sie die Verschlüsselung aufheben Ein bisschen Information reicht aus, um den gesamten Feedback-Code zu erhalten.
Adam Davis
8

Ich bin KeeLoq zum ersten Mal begegnet, als ich den Chip in einem Garagentoröffner untersucht habe. Das Datenblatt von Microchip liefert gute Erklärungen zu seiner Funktionsweise.

In einer Nussschale:

  • Der Empfänger verwaltet eine Datenbank aller Sender, die mit ihrer Seriennummer versehen sind.
  • Jedem Sender ist ein symmetrischer Verschlüsselungsschlüssel (64 Bit) zugeordnet, der sich auf dem Chip sowie in der Datenbank des Empfängers befindet.
  • Jedem Sender ist eine zyklische 16-Bit-Sequenznummer zugeordnet, die ebenfalls auf dem Chip und in der Datenbank gespeichert ist.
  • Wenn der Sender aktiviert ist, erhöht er seine Sequenznummer modulo 65536 (umlaufende 16 Bits) und sendet ein Paket, das aus einer Bitmaske besteht, die angibt, welche Tasten gedrückt werden, seiner Seriennummer und einer verschlüsselten Version der Seriennummer.
  • Der Empfänger stimmt mit der Seriennummer in der Datenbank überein, zieht den Schlüssel heraus und entschlüsselt die Seriennummer.
  • die Seriennummer muss neu sein; Es kann keine kürzlich verwendete Seriennummer sein, die vor Wiederholungsangriffen schützt. (Siehe Abb. 7.3 im Datenblatt).
  • Wenn die Seriennummer überprüft wird, kann der Empfänger die Funktionalität basierend auf der Bitmaske der gedrückten Tasten aktivieren.
  • Wenn die neue Seriennummer um mehr als 16 Werte vor Ihnen liegt (der Benutzer hat die Tasten mehrmals versehentlich gedrückt, während er sich nicht am Empfänger befand), muss zum erneuten Synchronisieren ein zusätzlicher Handschlag ausgeführt werden, für den ein zusätzlicher Tastendruck erforderlich ist. (Der Benutzer führt den zusätzlichen Tastendruck aus, da er glaubt, dass der Empfang schlecht ist.)

Das Hinzufügen eines neuen Senders zur Empfängerdatenbank entspricht weitgehend der Konfigurationsmethode per Tastendruck zum Hinzufügen von Clients zu einem Wi-Fi-Zugriffspunkt. Der Empfänger wird irgendwie in einen Modus versetzt, in dem er einen neuen Sender akzeptiert.

Ein neuer Sender kann aus Informationen, die in normalen Aktivierungsnachrichten übermittelt werden, akzeptiert werden, wenn der Empfänger und der Sender dieselbe geheime Herstellerkennung haben. Dies liegt daran, dass der 64-Bit-Verschlüsselungsschlüssel aus der Hersteller-ID und den Serieninformationen des Empfängers abgeleitet wird. (Siehe Abschnitt 7.1).

Es gibt eine sicherere Alternative dazu: das "Sichere Lernen". Dies wird in besonderer Weise am Sender ausgelöst (drei Tasten gleichzeitig gedrückt). Der Sender sendet ein spezielles Paket: einen 60-Bit-Startwert, von dem der Verschlüsselungsschlüssel abgeleitet wird, vermutlich unabhängig von der Hersteller-ID oder der Seriennummer.

Wenn sich der Empfänger nicht im Lernmodus befindet, lehnt er natürlich Übertragungen von Sendern ab, von denen er nichts weiß.

Kaz
quelle