Was ist eine UUID? Aufbau, Versionen und Einsatz
UUIDs sind 128-Bit-Kennungen, die ohne zentrale Vergabe weltweit eindeutig bleiben. So sind sie aufgebaut, welche Versionen es gibt und wo sie im Alltag stecken.
Eine UUID ist eine Zahl mit 128 Bit. Das klingt unscheinbar, löst aber ein altes Problem verteilter Systeme: Wie vergibt man Kennungen, die überall eindeutig sind, ohne dass sich alle Beteiligten vorher absprechen müssen? Die Antwort lautet, man macht den Wertebereich so groß, dass Zufall genügt.
Aufbau der Textform
In Textform besteht eine UUID aus 32 Hexadezimalzeichen, aufgeteilt in fünf Gruppen mit 8, 4, 4, 4 und 12 Zeichen:
019214d3-5b1e-7c8a-9f2b-3a4c5d6e7f80
Zwei Stellen sind nicht zufällig. Das erste Zeichen der dritten Gruppe ist die Versionsziffer, im Beispiel eine 7. Das erste Zeichen der vierten Gruppe trägt die Variante und ist bei allen gängigen UUIDs eine 8, 9, a oder b. Wer eine UUID auf Plausibilität prüfen will, schaut genau auf diese beiden Zeichen. Das Prüffeld auf der Startseite macht nichts anderes.
Der Standard schreibt Kleinbuchstaben vor, verlangt aber von jedem Programm, auch Großbuchstaben zu akzeptieren. Bindestriche sind Teil der kanonischen Form, werden aber in Datenbanken oft weggelassen, um Platz zu sparen.
Die Versionen im Überblick
| Version | Inhalt | Typischer Einsatz |
|---|---|---|
| 1 | Zeitstempel seit 1582 plus MAC-Adresse | Ältere Systeme, verrät Zeit und Rechner |
| 3 | MD5-Hash aus Namensraum und Name | Reproduzierbare IDs aus Zeichenketten |
| 4 | 122 Bit Zufall | Der Standardfall, überall |
| 5 | SHA-1-Hash aus Namensraum und Name | Wie 3, mit besserem Hash |
| 6 | Wie 1, aber sortierbar angeordnet | Migration alter v1-Systeme |
| 7 | Unix-Zeit in Millisekunden plus Zufall | Datenbankschlüssel, Logs, Ereignisse |
| 8 | Frei definierbar | Eigene Formate |
Dazu kommen zwei Sonderwerte: die NIL-UUID aus lauter Nullen und die MAX-UUID aus lauter f. Beide sind keine Kennungen für Objekte, sondern Platzhalter, etwa für einen leeren Verweis oder als obere Grenze bei Bereichsabfragen.
Wie eindeutig ist eindeutig?
Bei Version 4 stehen 122 Zufallsbits zur Verfügung, also rund 5,3 mal 10 hoch 36 mögliche Werte. Das Geburtstagsparadoxon sagt, dass man ungefähr 2,7 mal 10 hoch 18 UUIDs erzeugen muss, bevor die Wahrscheinlichkeit für eine einzige Kollision 50 Prozent erreicht. Bei einer Milliarde UUIDs pro Sekunde dauert das etwa 85 Jahre. In der Praxis ist ein Fehler im Zufallsgenerator das größere Risiko als der Zufall selbst. Deshalb nutzt dieser Generator die Web Crypto API des Browsers und nicht Math.random().
Wo UUIDs im Alltag stecken
- Datenbanken verwenden sie als Primärschlüssel, wenn Datensätze auf mehreren Servern gleichzeitig entstehen.
- Betriebssysteme kennzeichnen Partitionen (GPT), Geräte und Schnittstellen damit.
- Web-APIs liefern UUIDs als Objekt-IDs, weil sie sich nicht erraten lassen und keine Rückschlüsse auf die Anzahl der Datensätze zulassen.
- Bluetooth nutzt 128-Bit-UUIDs für Dienste und Merkmale.
- Dateiformate und Protokolle wie Matroska, OpenType oder MSI-Installer tragen UUIDs im Kopf.
Was eine UUID nicht ist
Eine UUID ist kein Geheimnis. Wer sie kennt, kennt nur die Kennung. Sie ersetzt keine Zugriffsprüfung. Und sie ist kein Passwort, auch wenn sie zufällig aussieht: Bei Version 1 lassen sich Zeit und Rechner ablesen, bei Version 7 die Erzeugungszeit. Wer eine Kennung braucht, die absolut nichts verrät, nimmt Version 4.
Kurz gesagt: Version 4, wenn nur Eindeutigkeit zählt. Version 7, wenn die Reihenfolge eine Rolle spielt. Alles andere sind Sonderfälle.
Häufige Fragen
Wie lang ist eine UUID?
128 Bit, also 16 Byte. In der üblichen Textform sind das 36 Zeichen: 32 Hexadezimalzeichen plus vier Bindestriche.
Ist UUID dasselbe wie GUID?
Ja. GUID ist die Bezeichnung von Microsoft für denselben Aufbau. Die Texte unterscheiden sich nur in der Konvention, GUIDs werden häufig in geschweiften Klammern und in Großbuchstaben geschrieben.
Warum gibt es keine Version 2 im Generator?
Version 2 (DCE Security) ist nur für ein bestimmtes Betriebssystemumfeld definiert und in der Praxis nicht in Gebrauch. RFC 9562 erwähnt sie nur noch der Vollständigkeit halber.
Genug gelesen? Erzeuge deine UUIDs.
Zum Generator