Digitale Schlüssel (iButtons / SmartButtons) klonen

Herkömmliche (“Analoge”) Schlüssel sind inzwischen ein gut erforschtes Thema: Die Lockpicker beschäftigen sich ausgiebig damit, Schlösser ganz ohne Schlüssel zu öffnen, und vorhandene Schlüssel können je nach Bauart anhand von Fotos rekonstruiert werden — teilweise kann das Duplikat sogar direkt ausgedruckt werden.

Ein iButton
Ein iButton (mit gesperrter ID)

Auch für unsere Vereinsräume haben wir Schlüssel und ein zugehöriges Schließsystem. Da es bei über 80 Mitgliedern aber nicht sinnvoll ist, einen einzigen Schlüssel für jedes Mitglied nachmachen zu lassen, verwenden wir digitale Schlüssel: Sogenannte iButtons bzw. SmartButtons. Jedes Mitglied erhält einen iButton, der eine eindeutige ID aus 48 bit Daten und 8 bit Prüfsumme enthält. Ist eine an der Tür eingelesene ID in der Liste der erlaubten IDs enthalten, wird die Tür aufgeschlossen. Da diese ID nicht verschlüsselt und in unserem Fall sogar auf dem Gehäuse aufgedruckt ist, besteht auch hier die theoretische Möglichkeit, iButtons zu klonen. Die Frage ist nur, wie viel Aufwand es ist.

Knapp drei Jahre nach Installation dieses Schließsystems wissen wir: Gar nicht so viel. Zum Klonen muss nur die ID vom Gehäuse ab- oder aus dem iButton ausgelesen und anschließend ein “Blanko-iButton” damit bespielt werden.

ID auslesen

USB zu OneWire-Adapter
USB zu OneWire-Adapter

Auch wenn die ID nicht aufgedruckt ist, kann sie einfach ausgelesen werden. Dazu werden lediglich ein an einen PC angeschlossener Onewire-Master und ein offen herumliegender iButton benötigt: Auf den READ ROM-Befehl vom Master antwortet der iButton (als einziges am Bus angeschlossenes Gerät) mit seiner ID.

Onewire in Software

Ein normaler iButton enthält keine Intelligenz: Seine ID ist in einem ROM fest eingestellt, die Buskommunikation läuft über eine minimale State Machine ab — Also komplett in Hardware. Zur Stromversorgung enthält er einen kleinen Kondensator, der während des High-Pegels der Datenleitung aufgeladen wird.

Geklonter iButton
Geklonter iButton

Um beliebige Schlüssel emulieren zu können, muss das von iButtons verwendete Onewire-Protokoll allerdings in Software implementiert werden. Als Hardware kann fast alles verwendet werden, in diesem Fall ist es ein mit 8MHz getakteter AVR-Chip (Atmel ATTiny 2313A). Die Herausforderung liegt dabei im Protokoll: Auf eine Aktion vom Bus-Master muss innerhalb weniger Mikrosekunden reagiert werden, was bei 8MHz Takt nur 20 bis 30 Instruktionen erlaubt, um die korrekte Reaktion herauszufinden. Ein erster Versuch in C scheiterte daran, eine Assembler-Implementierung funktioniert dafür einwandfrei.

Dieser Code tut nichts anderes, als auf den READ ROM-Befehl zu warten und darauf in acht Paketen á 1 Byte mit der einkompilierten ID zu antworten. Um eine andere ID zu verwenden, muss nur die Assemblerdatei neu erzeugt und auf den AVR übertragen werden. Wir haben sogar ein Beweisvideo, in dem unsere Tür von einem so geklonten iButton geöffnet wird. Dazu ist an den Klon-Button nur ein USB-Akku zur Stromversorgung angeschlossen.

Der Code enthält ebenfalls experimentelle Unterstützung für den SEARCH ROM-Befehl, der auch bei mehreren gleichzeitig angeschlossenen iButtons IDs auslesen kann. Dieser scheint in der Praxis aber nicht verwendet zu werden.

Und die Sicherheit?

Mit diesem Code können beliebige iButton-IDs mit einem Hardwareaufwand von ca. 5€ geklont werden. Verwendet werden sie zum Beispiel in Türen oder Kassensystemen.

Dennoch sind die Sicherheitsauswirkungen zumindest für uns erfreulich gering: Letztendlich ist eine iButton-ID als Authentifizierungsmerkmal genau so sicher wie ein klassischer Schlüssel. Beide können nur dann geklont werden, wenn sie offen herumliegen oder abfotografiert werden. Solange iButtons mit der einem Schlüssel gebürenden Vorsicht behandelt werden, besteht also keine signifikante Gefahr. Auch hat das Protokoll keine Möglichkeit, nach dem Vorhandensein einer spezifischen ID zu fragen, so dass “Ja-Sager”, die sich als beliebige Schlüssel-ID ausgeben, nicht möglich sind. Es bleibt nur das Ausprobieren aller 2⁴⁸ IDs, was viel zu lange dauert, um praktikabel zu sein.

Wir werden unsere Tür daher weiterhin mit iButtons öffnen, da die Vorteile (eine ID pro Mitglied und leichtes Sperren bei Verlust) den Nachteilen überwiegen. Ob wir auch längerfristig dabei bleiben, oder auf ein intelligenteres System nach Art von Public/Private Key Auth umstellen, wird sich zeigen.

5 Antworten auf „Digitale Schlüssel (iButtons / SmartButtons) klonen“

  1. Habt ihr da zufaellig Beispiele fuer ein “intelligenteres System” Denke auch darueber nach ob ich bei mir zuhause darauf umrueste.

  2. Hi, eine sehr gute Analyse des Problems. Ziemlich genau die gleiche Analyse habe ich auch gefahren, als ein mir bekanntes Unternehmen die iButtons eingeführt hat. Es gibt aber ein weiteres gravierendes Problem:
    Die IDs werden leider nicht zufällig vergeben, sondern sind vom Hersteller von Eins an linear hochgezählt. Damit kann man schon einmal den größten Bereich der 2^48 IDs ausschließen, da noch nicht ansatzweise so viele Schlüssel verkauft wurden. Wenn man, wie bei euch, weiß wann das System (und damit auch die Schlüssel) eingebaut wurde, kann man den Bereich noch weiter abschätzen (Kaufdatum). Dazu kommt, dass noch nicht einmal die Schlüssel beim Verkauf gemixt werden. Das heißt bei dem Unternehmen waren die Schlüssel fortlaufend, ich nehme an, dass da bei Euch auch so ist. Das heißt je mehr Schlüssel Ihr habt, desto mehr der hinteren Bits könnte ich bei einem Bruteforce statisch lassen.
    Unter den Bedingungen wäre ein Bruteforce meiner Meinung nach mit “Heimhackermitteln” sehr gut durchzuführen, auch ohne einem eurer Schlüssel je nahe gekommen zu sein.

    Klar, es ist die Frage, wer sowas schon macht, obwohl ich denke, dass ja grade im Chaosumfeld Leuten sowas Spass machen wurde. ;)
    Aber auf jeden Fall wäre schon cool gewesen, wenn grade Ihr als Vorbild sowas offensichtlich unsicheres nicht eingesetzt hättet. Da fand ich eure Authentifizierung per SSH viel imponierender. :)

    P.S.: Bei diesem Unternehmen war übrigens das allerschlimmste, dass das System vom Vermieter war, und auch in allen Privatwohnungen in den Objekten in der Straße eingesetzt wurde. Da ich meine ID ausgelesen habe, könnte ich bis heute locker in alle diese Wohnungen ohne Probleme rein. Beängstigend.

Kommentare sind geschlossen.