UID – NFC-Tags eindeutig identifizieren (und klonen?)
Einer der großen Vorteile von NFC-Tags, neben der robusten Speicherung und dem kontaktlosen, konfigurationsfreien Auslesen, ist die enthaltene Seriennummer, welche zur eindeutigen Identifikation nutzbar ist. In diesem Artikel wird zunächst auf Grundlagen der NFC-UID eingegangen und im Anschluss aufgezeigt, wie die UID in der Praxis genutzt werden kann. Abschließend wird das Thema UID-klonen aufgegriffen, um die Sicherheit UID basierter Identifikationsmechanismen einzuschätzen.
UID - Unique Identification Number
Jeder NFC-Tag enthält eine Seriennummer, die ihn eindeutig identifizierbar macht. Die technische Begründung dieser Seriennummer ist in der ISO/IEC 14443-3 Spezifikation zu finden und lässt sich mit einem praktischen Problem anschaulich darstellen: Wenn ein NFC-Lesegerät auf mehrere NFC-Tags gleichzeitig trifft, dann muss es in der Lage sein die einzelnen NFC-Tags voneinander zu unterscheiden, um die Datenströme voneinander trennen zu können. Enthält jeder Tag eine eindeutige Nummer gelingt diese Unterscheidung (Kollisionserkennung). Aufgrund der geringen Reichweite von NFC scheint dieses Problem praktisch wenig relevant zu sein, wenn man jedoch USB-Lesegeräte nutzt und mehrere kleine Objekte z.B. mit 5mm NFC-Tags ausstattet, kann die Abgrenzung eines Tags schwierig werden. Darüber hinaus bietet die Seriennummer weitere Vorteile, wie im weiteren Verlauf ausgeführt wird.
UID Aufbau
Vereinfacht gesagt ist die UID eine einfache Nummer, die fest im NFC-Tag gespeichert wird. Die aktuell gebräuchlichsten NFC-Tags verwenden 7 Byte zur Speicherung der Seriennummer, die Platz für eine 14-stellige Hexadezimalzahl bieten. Das Hexadezimalsystem ist in ein in der Informatik übliches Zahlensystem zu Basis 16 bei dem von 0-F gezählt wird (anstelle von 0-9 wie im allgemein bekannten Dezimalsystem). Dadurch lässt sich die Seriennummer platzsparend speichern. Durch die 7 Byte stehen dementsprechend FF:FF:FF:FF:FF:FF:FF viele Nummern zur Verfügung, was umgerechnet in das 10er-System der Zahl 72.057.594.037.927.935 entspricht. Also genug Platz, um für eine weltweit eindeutige Vergabe von Nummern zu sorgen.
In der Realität ist der tatsächliche Bereich freier Nummern etwas kleiner, da z.B. Blöcke für Hersteller oder Produktlinien reserviert sein können. Daher sieht die Spezifikation die dynamische Erweiterung der Nummernbereichs vor. Die Vergangenheit hat z.B. gezeigt, dass die bei den Mifare Classic verwendeten 4 Byte UIDs schon vor einigen Jahren ausgegangen sind und größere Zahlenräume notwendig sind. Die aktuellen 7 Byte UIDs bieten jedoch auf absehbare Zeit hinreichend Platz. Derzeit spezifiziert sind folgende UID-Varianten:
Name | Größe | Hexadezimal | Dezimal | Chipsatz Beispiel |
Single Size UID | 4 Byte | FF:FF:FF:FF | 4.294.967.295 | MIFARE Classic |
Double Size UID | 7 Byte | FF:FF:FF:FF:FF:FF:FF | 72.057.594.037.927.935 | NXP NTAG Serie |
Triple Size UID | 10 Byte | FF:FF:FF:FF:FF:FF:FF:FF:FF:FF | 1.2089258196146E+24 (d.h. 24 Stellen!) |
Nicht im Einsatz |
UID Anwendungsfälle
Dank der Eindeutigkeit der UID ergeben sich zahlreiche Anwendungsfälle, die mit alternativen Produktkennzeichnungen (Barcodes, QR-Codes) nicht realisierbar sind. Speichert man z.B. alle verwenden UIDs der ausgelieferten NFC-Tags ab (was als Service bei uns buchbar ist), dann kann der NFC-Tag beim Scan identifiziert werden. Beim Labeln von Produkten oder Kleidung lässt sich so beispielsweise erkennen, ob es sich um ein Originalprodukt handelt. Auch das Nutzen der UID für intelligente Inventarisierungslösungen ist ein typischer Anwendungsfall. Das Auslesen der UID ist mit Android, iOS oder Windows und der geeigneten Software möglich. In unseren How2s beschreiben wir das Auslesen der UID im Detail für jede einzelne Plattform. Mit einer nachgelagerten Software zum Abgleich der UID lassen sich so die oben beschriebenen Anwendungsfälle lösen.
UID klonen
Die UID eines NFC-Tags ist eine weltweit eindeutige Seriennummer. Dass die UID also ausgelesen und auf andere NFC-Tags programmiert (UID-klonen) werden kann, sollte also eigentlich unmöglich sein. Tatsächlich existieren jedoch einige (nicht original NXP) Chipsätze, welche die freie Konfiguration der UID ermöglichen. Auch per Hardware-Reader ist die Simulation eines NFC-Tags mit beliebiger UID machbar. Es existieren also Möglichkeiten die UID zu klonen. Auf diese soll an dieser Stelle jedoch nicht eingegangen werden. Vielmehr stellt sich nun die Frage, ob die UID als sicher angenommen werden kann. Tatsache ist, dass das Sicherheitsniveau der gewünschten zu betrachten ist, um eine Antwort geben zu können. Dabei sind unter anderem folgende Fragestellungen zu klären:
- Wer ist der Benutzerkreis (offen / geschlossen)?
- Ist die zu klonende UID bekannt?
- Wer kontrolliert die Infrastruktur?
- Werden zusätzliche Merkmale zur UID verwendet?
- Welcher Schaden kann bei Missbrauch entstehen?
Allgemein lässt sich feststellen, dass die UID überall dort gut einsetzbar ist, wo das Bekanntwerden der UID keine gravierenden, sicherheitstechnischen Konsequenzen hat. Für die Identifikation von Produkten oder der Inventarisierung kann die UID bedenkenlos eingesetzt werden, da zusätzlich zum NFC-Tag das Produkt selbst dem Prüfenden vorliegt. Dagegen sollte die UID als alleiniges Sicherheitsmerkmal für Schließsysteme kritisch hinterfragt werden und ist strenggenommen ungeeignet. In professionellen Lösungen kommen hier Chipsätze mit erweiterten Sicherheitsfunktionen (MIFARE DESFire) zum Einsatz. Doch auch für die Echtheitsüberprüfung bietet NXP mittlerweile Abhilfe durch Chipsätze wie dem NTAG DNA, der zusätzlich zur Seriennummer eine einmalige Nachricht beim Scannen generieren kann, die durch den Aufrufer überprüfbar ist.
Fazit
Die UID ist einer der wichtigsten Vorteile von NFC-Tags und bildet die Möglichkeit NFC-Tags und damit verbundene Objekte eindeutig zu identifizieren. Das Klonen von NFC-Tags ist zwar mit gewissen Mitteln möglich jedoch nur bei sicherheitskritischen Anwendungsfällen zu berücksichtigen. Gerne beraten wir Sie beim Einsatz der UID und bieten hier technische Unterstützung z.B. durch das Vorab-Auslesen von Bestellungen an, um den Einsatz zu unterstützen.