Rolling-Code-Erklärung

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

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

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

Antworten (2)

Rolling Codes benötigen 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 aber 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 die Komplexität hinzu, bis wir ein kryptografisch sicheres System erreichen.

Ein nicht kryptografischer Rolling Code ist einfach ein Sender und ein Empfänger, die beide 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 gefüttert wird und die Rückmeldenummer gleich bleibt, wird eine bestimmte Zahlenfolge generiert. Die Sequenz hat keine wiederholten Sequenzen, bis sie alle Zahlen durchlaufen hat, die sie erzeugen kann, 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, wenn die Fernbedienung die nächste Nummer sendet, diese mit 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 wird. Wenn Sie die Fernbedienung erneut drücken, sollte sie übereinstimmen und aktiviert werden, da die vorherige Übertragung die Nummerngeneratoren bereits synchronisiert hat. Aus diesem Grund müssen Sie manchmal zweimal auf die Entsperrtaste drücken - Ihr Empfänger oder Sender ist nicht synchron.

Das ist der rollende Teil des Codes. Wenn der PRNG lang genug ist, ist es sehr schwierig, die Rückmeldezahl ohne viele Zahlen in der Folge hintereinander herauszufinden, was im normalen Gebrauch schwer zu erreichen 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. Je nach Hersteller können Sie feststellen, dass jedes Modell und Jahr einen anderen Code hat, oder sie können den Code zwischen mehreren Fahrzeugmodellen und über mehrere Jahre hinweg teilen. Der Kompromiss besteht darin, dass dann für jede eine andere Fernbedienung auf Lager sein muss, aber das Problem beim Teilen eines Codes für viele Modelle besteht darin, dass mehr Autos anfällig sind, wenn er kaputt ist.

Hinter der Verschlüsselung verbergen sich Schaltflächeninformationen, die von PRNG generierte Nummer und ein paar Informationen zur Feedback-Nummer. Nicht genug, um das PRNG von Grund auf neu zu machen, aber genug, dass der Empfänger nach einer bestimmten Anzahl von Tastendrücken und mit einigen Insiderinformationen über den begrenzten Platz eine Feedback-Nummer einbeziehen kann (wieder Hersteller, leitungsspezifisch), dann kann der Empfänger nach mehreren Schulungen Übertragungen, bestimmen Sie die Feedback-Nummer und beginnen Sie mit der Verfolgung des PRNG für diese Fernbedienung.

Der Rolling Code soll nur Replay-Angriffe stoppen. Die Verschlüsselung soll den Rolling Code sichern, um zu verhindern, dass er gebrochen wird. Mit nur dem einen oder anderen wäre das System zu leicht zu knacken. Da der Hersteller sowohl den Sender als auch den Empfänger kontrolliert, beinhaltet das Training keine Public-Key-Kryptographie oder irgendetwas Besonderes. Es verhindert auch, dass Aftermarket-Fobs in Autos mit dieser Art von System funktionieren.

Rolling Code ist jedoch nicht undurchlässig. Das alte keeloq-System wurde erst vor wenigen Jahren (nach einem Jahrzehnt der Nutzung) erfolgreich angegriffen, damit der Verschlüsselungscode des Herstellers gefunden werden kann und die Rolling Codes leichter gefunden werden können. Zuvor wurde es auf eine Weise angegriffen, die es Menschen ermöglichte, Fahrzeuge zu nehmen, ohne den Code tatsächlich zu brechen. Als Antwort ist der neue Verschlüsselungsschlüssel 60 Bit. Nicht so sicher wie viele moderne Verschlüsselungssysteme, aber sicher genug, dass es wahrscheinlich noch viele Jahre hält, bevor es kaputt geht.

Ah, ich muss den Teil "keine Sequenz wiederholt" des PRNG vergessen haben, das ist sehr wichtig. Was ist der Vorteil der Übermittlung von Informationen, die es dem Empfänger ermöglichen, den Rückmeldecode zu bestimmen? Das scheint weniger sicher zu sein, als einfach einen Feedback-Code zu wählen und sowohl den Sender als auch den Empfänger mit diesem bekannten herzustellen ...
@NickHalden Der Feedback-Code ist für jede Fernbedienung unterschiedlich, und 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 Abfolge von Tastendrücken auf der Fernbedienung, bevor die zusätzlichen Feedback-Informationen ausgegeben werden, aber im Allgemeinen ist das Gesamtsystem sicher genug, dass Sie selbst dann noch viel mehr Informationen benötigen, wenn Sie die Verschlüsselung aufheben wenig Ein paar Informationen reichen aus, um den gesamten Feedback-Code zu erhalten.

Ich bin KeeLoq zum ersten Mal begegnet, als ich nach dem Chip in einem Garagentoröffner recherchiert habe. Das Microchip-Datenblatt erklärt sehr gut, wie es funktioniert.

Kurzgesagt:

  • der empfänger verwaltet eine datenbank aller sender, die auf ihre seriennummer kodiert sind.
  • Jeder Sender ist einem symmetrischen Verschlüsselungsschlüssel (64 Bit) zugeordnet, der sich auf dem Chip und auch in der Datenbank des Empfängers befindet.
  • Jedem Sender ist eine zyklische 16-Bit-Folgenummer zugeordnet, die ebenfalls auf dem Chip und in der Datenbank gespeichert ist.
  • Wenn der Sender aktiviert wird, erhöht er seine Sequenznummer Modulo 65536 (Umbruch 16 Bits) und sendet ein Paket, das aus einer Bitmaske besteht, die darstellt, welche Tasten gedrückt werden, seiner Seriennummer und einer verschlüsselten Version der Seriennummer.
  • Der Empfänger gleicht die Seriennummer in der Datenbank ab, zieht den Schlüssel heraus und entschlüsselt die Seriennummer.
  • die Seriennummer muss neu sein; es kann sich nicht um eine kürzlich verwendete Seriennummer handeln, die vor Replay-Angriffen schützt. (Siehe Abb. 7.3 im Datenblatt).
  • Wenn die Seriennummer verifiziert 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 voraus ist (der Benutzer hat die Tasten versehentlich viele Male gedrückt, während er sich vom Empfänger entfernt hat), muss ein zusätzlicher Handshake zur Neusynchronisierung stattfinden, was einen zusätzlichen Tastendruck erfordert. (Der Benutzer wird den zusätzlichen Tastendruck ausführen, weil er glaubt, dass es einen schlechten Empfang gibt).

Das Hinzufügen eines neuen Senders zur Empfängerdatenbank ist auf hoher Ebene vage analog zu der Konfigurationsmethode auf Knopfdruck zum Hinzufügen von Clients zu einem Wi-Fi-Zugangspunkt. Dem Empfänger wird irgendwie mitgeteilt, dass er in einen Modus versetzt wird, in dem er einen neuen Sender akzeptiert.

Ein neuer Sender kann aus Informationen akzeptiert werden, die in gewöhnlichen Aktivierungsnachrichten weitergegeben werden, wenn der Empfänger und der Sender dieselbe geheime Hersteller-ID teilen. Dies liegt daran, dass der 64-Bit-Verschlüsselungsschlüssel von der Hersteller-ID und den Seriennummern des Empfängers abgeleitet wird. (Siehe Abschnitt 7.1).

Dazu gibt es eine sicherere Alternative: das „Secure Learn“. Dies wird auf besondere Weise am Sender ausgelöst (drei Tasten gleichzeitig gedrückt). Der Sender sendet ein spezielles Paket: einen 60-Bit-Seed-Wert, aus dem der Verschlüsselungsschlüssel abgeleitet wird, vermutlich unabhängig von Hersteller-ID oder Seriennummer.

Wenn sich der Empfänger nicht im Lernmodus befindet, lehnt er natürlich Übertragungen von Sendern ab, die er nicht kennt.