www.wikidata.de-de.nina.az
Ein Universally Unique Identifier UUID ist eine 128 Bit Zahl welche zur Identifikation von Informationen in Computersystemen verwendet wird Der Ausdruck Globally Unique Identifier GUID wird ebenfalls benutzt typischerweise im Zusammenhang mit Microsoft z B Software Registry Bei der Generierung nach den Standardmethoden konnen UUIDs fur praktische Zwecke als global eindeutig angenommen werden Obwohl die Wahrscheinlichkeit dass ein UUID dupliziert wird nicht null ist ist sie so gering dass die Wahrscheinlichkeit fur eine Kollision zumeist vernachlassigbar ist Ein Vorteil von UUIDs ist die im Gegensatz zu den meisten anderen Nummerierungsschemata Unabhangigkeit von einer zentralen Registrierungsstelle oder Koordinierung zwischen den Parteien Daher kann jeder einen UUID erstellen und ihn zur Identifizierung eines Objekts verwenden und dabei mit grosstmoglicher Sicherheit davon ausgehen dass die Kennung keine andere Kennung dupliziert die bereits erstellt wurde oder in Zukunft zur Identifizierung eines anderen Objekts erstellt wird Die Verwendung von UUIDs und GUIDs ist weit verbreitet Viele Computerplattformen bieten Unterstutzung beim Generieren und Parsen ihrer Textdarstellung Er wurde von der Open Software Foundation OSF als Teil des Distributed Computing Environment DCE standardisiert und ist jetzt in RFC 4122 1 geregelt Ein UUID besteht aus einer 16 Byte Zahl die hexadezimal notiert und in funf Gruppen unterteilt wird In seiner Normalform sieht ein UUID beispielsweise so aus 550e8400 e29b 11d4 a716 446655440000 Inhaltsverzeichnis 1 Geschichte und Standardisierung 2 Aufbau 2 1 Zeitstempelbasierte UUIDs 2 2 Pseudo zufallig generierte UUIDs Version 4 2 3 Namensbasierte UUIDs Version 3 und 5 3 Globally Unique Identifier 4 Kollisionen 5 Weblinks 6 EinzelnachweiseGeschichte und Standardisierung BearbeitenUUID sind als Teil des Standards ISO IEC 11578 1996 Information technology Open Systems Interconnection Remote Procedure Call RPC und als separater Standard ISO IEC 9834 8 2005 dokumentiert Die IETF hat das auf UUID basierende RFC 4122 1 veroffentlicht Das originale Version 1 Generierungsschema fur UUID war die UUID Version mit der MAC Adresse des Computers der den UUID generiert und der Anzahl der 100 Nanosekunden Intervalle seit Beginn des Gregorianischen Kalenders aneinanderzuhangen In der Praxis ist der eigentliche Algorithmus komplizierter Dieses Schema wurde kritisiert weil es sowohl die Identitat des generierenden Computers als auch den Zeitpunkt der Generierung preisgibt Mehrere andere Algorithmen zur Generierung wurden entwickelt und flossen in den Standard ein so ein Schema welches nur auf Zufallszahlen basiert Version 4 UUID und Schemata in denen der UUID aus einem beliebigen String z B DNS Eintrag URL ISO OID X 500 Distinguished Names aber auch jeder beliebigen anderen Semantik sofern ein Basis UUID dafur definiert wird uber MD5 Version 3 UUID oder SHA 1 Version 5 UUID Hashwerte hergeleitet wird Das Release 5 0 von Java stellt eine Klasse zur Verfugung die 128 Bit breite UUID generiert Die API Dokumentation fur die Klasse java util UUID 2 verweist auf RFC 4122 1 Auch viele andere Sprachen stellen fertige Routinen zur Generierung von UUID bereit Aufbau BearbeitenRFC 4122 1 beschreibt den Aufbau eines UUID Die Namen der einzelnen Felder orientieren sich an der ursprunglichen UUID Version 1 und sind bei den heute vorwiegend verwendeten zufallig generierten UUIDs nur noch von historischem Interesse Aufbau einer UUID nach RFC 4122 1 Offset Feldname Datentyp Beschreibung0 time low uint32 t Zeitstempel niederstwertige 32 Bits4 time mid uint16 t Zeitstempel mittlere 16 Bits6 time hi and version uint16 t Oberste Bits des Zeitstempels in den unteren 12 Bits des Feldes die oberen 4 Bits dienen als Versionsbezeichner8 clock seq high and reserved uint8 t Oberste 6 Bits der Clocksequenz die obersten 2 Bits des Feldes sind in der hier beschriebenen UUID Variante stets 1 0 9 clock seq low uint8 t Untere 8 Bits der Clocksequenz10 node uint48 t Eindeutige Node IdentifikationsnummerDie obersten vier Bits im Feld time hi and version geben dabei die sogenannte Version des UUID an Strenggenommen ist dies keine Version sondern eine Art UUID Subtyp Folgende 5 Versionen sind bisher definiert worden UUID Versionen nach RFC 4122 1 Version Beschreibung1 ursprunglicher zeitstempelbasierter UUID2 DCE Security version3 namensbasiert MD5 gehasht4 zufalliger oder pseudozufalliger UUID5 namensbasiert SHA1 gehashtDaruber hinaus wird die Einfuhrung von weiteren Versionsnummern diskutiert wie in folgender Tabelle mit Stand im Jahr 2022 dargestellt 3 Vorschlage zu neuen UUID Versionen 3 Version Beschreibung6 zeitstempelbasierend wie Version 1 aber mit anderer Anordnung der Datenfelder7 zeitstempelbasierend auf der Unixzeit mit zufalliger oder pseudozufalliger Komponente 4 8 fur experimentelle oder herstellerspezifische AnwendungenZeitstempelbasierte UUIDs Bearbeiten Der Zeitstempel ist ein 60 Bit Wert der die seit dem 15 Oktober 1582 Einfuhrung des heutigen Gregorianischen Kalenders vergangenen 100 ns Intervalle zahlt Um die Zeitstempel eindeutig zu halten falls die Systemzeit einmal zuruckgestellt werden muss gibt es ein Feld Clock sequence welches in diesem Fall entweder um 1 erhoht wird oder auf einen neuen pseudo zufalligen Wert gesetzt werden soll Die Node ID soll die MAC Adresse einer der im System verbauten Netzwerkkarten sein oder ein pseudozufalliger Wert falls das System keine MAC Adresse besitzt 5 Pseudo zufallig generierte UUIDs Version 4 Bearbeiten Hierbei werden samtliche Bits die nicht vom UUID Format auf feste Werte gesetzt werden durch pseudo zufallige Werte besetzt Obwohl die Eindeutigkeit fur einen so generierten UUID nicht garantiert ist ist die Gesamtzahl der zufallig generierbaren UUIDs mit 2 122 5 316 9 10 36 displaystyle 2 122 approx 5 3169 cdot 10 36 nbsp so gross dass die Wahrscheinlichkeit der Erzeugung zweier gleicher UUIDs sehr klein ist sofern die verwendeten Zufallszahlenalgorithmen gleichverteilte Zufallszahlen liefern Daher konnen UUIDs beliebig ohne zentrales Kontrollorgan erzeugt und zur Kennzeichnung eingesetzt werden ohne relevante Gefahr zu laufen dass derselbe UUID fur etwas anderes verwendet wird Mit UUID markierte Informationen konnen somit spater in einer einzigen Datenbank zusammengefuhrt werden ohne Bezeichnerkonflikte auflosen zu mussen Beispiele fur Implementierung des UUID Standards sind Microsofts Globally Unique Identifier Die Java Klasse java util UUID Die Qt Klasse QUuid Die Linux Datei proc sys kernel random uuid 6 Unter FreeBSD implementiert als uuid 3 Namensbasierte UUIDs Version 3 und 5 Bearbeiten Hierbei wird ausgehend von einem nicht naher bestimmten Namen ein UUID generiert Namen sind innerhalb eines zugewiesenen Namensraums eindeutige Bezeichner fur ein Objekt eine Ressource oder Ahnliches Ausgehend von einem UUID fur den Namensraum wird aus dem Namen ein UUID generiert indem eine Bytesequenz aus der Namensraum UUID und dem Namen selbst gebildet wird und diese Bytesequenz dann mit MD5 oder SHA1 gehasht wird Der Hash wird dann auf definierte Weise auf die verfugbaren UUID Bits verteilt RFC 4122 1 enthalt beispielhafte Namensraum UUIDs fur die Namensraume DNS URL ISO OID und X 500 Distinguished Names Soll beispielsweise aus dem DNS Namen www example org ein UUID Version 5 generiert werden so ist wie folgt vorzugehen Namespace UUID fur DNS Namen ist 6ba7b810 9dad 11d1 80b4 00c04fd430c8 An diese Bytefolge wird die Bytefolge fur den Namen www example org angehangt Bytes vom Namespace UUID in fett 0x6b 0xa7 0xb8 0x10 0x9d 0xad 0x11 0xd1 0x80 0xb4 0x00 0xc0 0x4f 0xd4 0x30 0xc8 0x77 0x77 0x77 0x2e 0x65 0x78 0x61 0x6d 0x70 0x6c 0x65 0x2e 0x6f 0x72 0x67 Diese Bytesequenz ist mit SHA1 zu hashen Das Ergebnis ist folgender SHA1 Hash 74738ff55367e9589aee98fffdcd187694028007 Die Bits des SHA1 Hashes sind auf die verfugbaren Bits der UUID Version 5 aufzuteilen Generierter UUID 74738ff5 5367 5958 9aee 98fffdcd1876 Die fett markierten Stellen enthalten feste Bits aus UUID Variante und Version Globally Unique Identifier BearbeitenEin Globally Unique Identifier ist eine Zahl mit 128 Bit 16 Bytes die in verteilten Computersystemen zum Einsatz kommt GUID stellt eine Implementierung des Universally Unique Identifier Standards UUID dar GUIDs werden ublicherweise im 8 4 4 4 12 Format XXXXXXXX XXXX XXXX XXXX XXXXXXXXXXXX dargestellt wobei jedes X fur ein Zeichen aus dem Hexadezimalsystem steht und damit eine Ziffer 0 9 oder ein Buchstabe A F sein kann z B 936DA01F 9ABD 4D9D 80C7 02AF85C822A8 32 Buchstaben Ziffern mit Bindestrichen 36 Zeichen Die vier hochstwertigen Bits des dritten Blocks von links aus gezahlt geben die Version der GUID an aus der man auf die Art des verwendeten Algorithmus zur Erzeugung der GUID schliessen kann Die bis zu drei hochstwertigen Bits des vierten Blocks identifizieren die verwendete Variante Im Beispiel ist die Version an der 4 erkennbar und die Variante an der 8 in 936DA01F 9ABD 4D9D 80C7 02AF85C822A8 Dieselbe Variante wie im Beispiel konnte statt durch eine 8 auch durch eine 9 ein A oder B gekennzeichnet sein da fur diese Variante nur die ersten beiden Bit zahlen 1 Eine denkbare Moglichkeit einen eindeutigen Bezeichner zu erhalten ware die Zuteilung durch eine zentrale Registraturstelle Fur Computer Netzwerkkarten gibt es bereits eine solche zentrale Registraturstelle fur die zugrunde liegenden MAC Adressen Geht man davon aus dass ein Computer zu einem Zeitpunkt nur einen Datensatz neu anlegen kann so lasst sich aus der MAC Adresse des anlegenden Computers und dem Zeitstempel eine global eindeutige Kennung des Datensatzes ermitteln GUIDs der Version 1 basieren auf der MAC Adresse und der aktuellen Uhrzeit des berechnenden Systems Die Verwendung der MAC Adresse ist umstritten da hierdurch sichtbar wird ob ein bestimmter Host der Urheber einer GUID ist Dies kann die Privatsphare der GUID Erzeuger beeintrachtigen 7 In der aktuellen Version 4 wird die MAC Adresse nicht mehr zur Erzeugung von GUIDs herangezogen Schlusse auf den Urheber sind somit kaum noch moglich Der uberwiegende Teil einer GUID ist nun eine pseudozufallige Zahl die jedoch nicht kryptographisch sicher ist Microsoft verwendet in seinem Component Object Model ebenfalls UUIDs dort auch GUID genannt Allerdings entsprechen diese IDs zum Teil einer eigenen Spezifikation Die hier beschriebenen UUIDs sind an den obersten beiden Bits des Feldes clock seq high and reserved erkennbar Sie haben stets den Wert 10 In der Hexadezimaldarstellung ist daher die erste Hexadezimalziffer der vierten Zahl stets zwischen 8hex und Bhex z B 5945c961 e74d 478f 8afe da53cf4189e3 Die von Microsoft verwendeten historischen UUIDs haben in den obersten drei Bits dieses Feldes den Wert 110 in der Hexadezimaldarstellung ist daher die erste Hexziffer der vierten Zahl entweder Chex oder Dhex Beispiel Der GUID des IUnknown Interfaces im COM besitzt den UUID 00000000 0000 0000 C000 000000000046 In den Windows Betriebssystemen von Microsoft werden GUIDs an vielen Stellen verwendet um beispielsweise Office Dokumente COM Schnittstellen oder Active X Steuerelemente eindeutig zu identifizieren Eine andere Anwendung ist die Identifikation von Datentragern und Partitionstypen in der GUID Partition Table Kollisionen BearbeitenKollisionen entstehen wenn derselbe UUID mehr als einmal generiert und verschiedenen Referenzobjekten zugewiesen wird Bei Version 1 und 2 kann eine Kollision nur entstehen wenn von der Standardimplementation abgewichen wird entweder absichtlich oder unabsichtlich Bei den Hash basierten Versionen 3 und 5 sowie der pseudo zufalligen Version 4 konnen Kollisionen auch ohne Abweichungen in der Implementierung entstehen Jedoch ist die Wahrscheinlichkeit dafur so gering dass sie normalerweise ignoriert werden kann Die Wahrscheinlichkeit hierfur kann analog zum Geburtstagsproblem genau berechnet werden 8 Zum Beispiel betragt die Anzahl von Version 4 UUIDs die berechnet werden mussen um eine 50 Wahrscheinlichkeit von mindestens einer Kollision zu haben 2 71 Trillionen Dies berechnet sich wie folgt n 1 2 1 4 2 ln 2 2 122 2 71 10 18 displaystyle n approx frac 1 2 sqrt frac 1 4 2 times ln 2 times 2 122 approx 2 71 times 10 18 nbsp Die kleinste Anzahl von Version 4 UUIDs die fur die Wahrscheinlichkeit eine Kollision zu finden erzeugt werden mussen wird durch diese Formel approximiert n 2 2 122 ln 1 1 p displaystyle n approx sqrt 2 times 2 122 times ln frac 1 1 p nbsp Daher betragt die Wahrscheinlichkeit fur ein Duplikat eins aus einer Milliarde bei 103 Billionen Version 4 UUIDs Weblinks BearbeitenSyntax and semantics of the DCE variant of Universal Unique Identifiers UUIDs englisch Paul J Leach Michael Mealling Rich Salz RFC 4122 A Universally Unique IDentifier UUID URN Namespace Juli 2015 englisch ITU T Recommendation X 667 08 2008 englisch UUID Decoder uuidtools com UUID Generator generateuuid onlineEinzelnachweise Bearbeiten a b c d e f g h Paul J Leach Michael Mealling Rich Salz RFC 4122 A Universally Unique IDentifier UUID URN Namespace Juli 2015 englisch Class UUID Java API Specification bei Oracle For more information including algorithms used to create UUIDs see RFC 4122 A Universally Unique IDentifier UUID URN Namespace section 4 2 Algorithms for Creating a Time Based UUID a b New UUID Formats draft peabody dispatch new uuid format 04 23 Juni 2022 abgerufen am 30 Juni 2022 https www ietf org archive id draft ietf uuidrev rfc4122bis 07 html name uuid version 7 Time based UUID GUID Abgerufen am 23 Juni 2023 englisch Linux Programmer s Manual RANDOM 4 In The Linux Programming Interface Michael Kerrisk 22 Marz 2021 abgerufen am 19 Oktober 2021 englisch Peter Siering Christian Persson Big Brother Bill Microsofts heimliche ID Nummern angeblich eine Panne In c t Juni 1999 heise de Paulo Jesus Carlos Baquero Paula Almaeida ID Generation in Mobile Environments PDF In Repositorium Sdum Uminho pt Abgerufen am 9 Mai 2023 englisch Abgerufen von https de wikipedia org w index php title Universally Unique Identifier amp oldid 238747465