Articles

Universeel unieke identificatiecode

voor beide varianten 1 en 2 worden in de normen vijf “versies” gedefinieerd, en elke versie kan in specifieke gebruiksgevallen geschikter zijn dan de andere. Versie wordt aangegeven door de M in de tekenreeksweergave.

Versie-1 UUID ’s worden gegenereerd op basis van een tijd en een knooppunt-ID (meestal het MAC-adres); versie-2 UUID’ s worden gegenereerd op basis van een identifier( meestal een groep-of gebruikers-ID), tijd en een knooppunt-ID; versies 3 en 5 produceren deterministische UUID ‘ s gegenereerd door hashing van een naamruimteidentifier en naam; en versie-4 UUID ‘ s worden gegenereerd met behulp van een willekeurig of pseudo-willekeurig getal.

Nil Uuidedit

De” nil “UUID, een speciaal geval, is de UUID 00000000-0000-0000-0000-000000000000; dat wil zeggen, alle bits op nul gezet.

Versie 1 (Datum-tijd en MAC-adres)bewerken

Versie 1 verbindt het 48-bit MAC-adres van de “node” (dat wil zeggen de computer die de UUID genereert), met een 60-bit tijdstempel, zijnde het aantal intervallen van 100 nanoseconden sinds middernacht 15 oktober 1582 Coordinated Universal Time (UTC), de datum waarop de Gregoriaanse kalender voor het eerst werd aangenomen. RFC 4122 stelt dat de tijdwaarde rond 3400 AD,:3 rolt, afhankelijk van het gebruikte algoritme, wat impliceert dat de 60-bit tijdstempel een ondertekende hoeveelheid is. Echter sommige software, zoals de libuuid bibliotheek, behandelt de tijdstempel als niet ondertekend, waardoor de rollover tijd in 5236 AD. De doorroltijd zoals gedefinieerd door ITU-T Rec. X. 667 is 3603 AD.: v

een 13-of 14-bit “uniquificerende” kloksequentie breidt de tijdstempel uit om gevallen af te handelen waarin de processorklok niet snel genoeg vooruitgaat, of waar er meerdere processors en uuid-generatoren per node zijn. Wanneer UUID ‘ s sneller worden gegenereerd dan de systeemklok kan vooruitgaan, kunnen de lagere bits van de tijdstempel velden worden gegenereerd door het te verhogen elke keer dat een UUID wordt gegenereerd, om een hoge-resolutie tijdstempel te simuleren. Met elke versie 1 uuid die overeenkomt met een enkel punt in de ruimte (het knooppunt) en tijd (intervallen en klokvolgorde), is de kans dat twee correct gegenereerde versie-1 UUID ‘ s onbedoeld hetzelfde zijn praktisch nul. Sinds de tijd-en klokvolgorde in totaal 74 bits, 274 (1.8×1022, of 18 sextillion) versie-1 UUID ‘ s kunnen worden gegenereerd per knooppunt-ID, met een maximale gemiddelde snelheid van 163 miljard per seconde per knooppunt-ID.

in tegenstelling tot andere UUID-versies, vertrouwen versie-1 en -2 UUID ‘ s op basis van MAC-adressen van netwerkkaarten voor hun uniciteit gedeeltelijk op een identificatiecode die is afgegeven door een centrale registratieautoriteit, namelijk het gedeelte van de Organizationally Unique Identifier (Oui) van het MAC-adres, dat door de IEEE wordt afgegeven aan fabrikanten van netwerkapparatuur. De uniciteit van versie-1 en versie-2 UUID ‘ s op basis van netwerkkaart MAC-adressen hangt ook af van de fabrikanten van netwerkkaarten correct toewijzen unieke MAC-adressen aan hun kaarten, die net als andere productieprocessen is onderhevig aan fouten.

het gebruik van het MAC-adres van de netwerkkaart van het knooppunt voor het knooppunt-ID betekent dat een versie-1 UUID kan worden getraceerd naar de computer die het heeft gemaakt. Documenten kunnen soms worden getraceerd naar de computers waar ze zijn gemaakt of bewerkt door middel van UUID ‘ s ingebed in hen door tekstverwerkingssoftware. Dit privacygat werd gebruikt bij het lokaliseren van de maker van het Melissa virus.

RFC 4122 staat wel toe dat het MAC-adres in een versie-1 (of 2) UUID wordt vervangen door een willekeurige 48-bit knooppunt-ID, omdat het knooppunt geen MAC-adres heeft, of omdat het niet wenselijk is om het te tonen. In dat geval vereist de RFC dat het minst significante bit van het eerste octet van het knooppunt-ID wordt ingesteld op 1. Dit komt overeen met de multicast-bit in MAC-adressen, en de instelling die wordt gebruikt om UUID ’s te onderscheiden waar de knooppunt-ID willekeurig wordt gegenereerd uit UUID’ s op basis van MAC-adressen van netwerkkaarten, die meestal unicast MAC-adressen hebben.

versie 2 (datum-tijd en MAC-adres, DCE security version)Bewerk

RFC 4122 reserveert versie 2 voor “DCE security” UUID ‘ s; maar het geeft geen details. Om deze reden laten veel uuid-implementaties versie 2 weg. De specificatie van versie-2 UUID ‘ s wordt echter geleverd door de DCE 1.1 Authentication and Security Services specificatie.

versie-2 UUID ‘ s zijn vergelijkbaar met Versie 1, behalve dat de minst significante 8 bits van de klokreeks worden vervangen door een “lokaal domein” nummer, en de minst significante 32 bits van de tijdstempel worden vervangen door een integer identifier die zinvol is binnen het opgegeven lokale domein. Op POSIX-systemen zijn lokale domeinnummers 0 en 1 respectievelijk voor gebruikers-ID ’s (UID’ s) en Groepsid ’s (GIDs’ s), en andere lokale domeinnummers zijn site-gedefinieerd. Op niet-POSIX-systemen zijn alle lokale domeinnummers site-gedefinieerd.

de mogelijkheid om een 40-bit domein/identifier in de UUID op te nemen wordt geleverd met een afweging. Aan de ene kant staan 40 bits ongeveer 1 biljoen domein/identifier waarden per knooppunt-ID toe. Aan de andere kant, met de klokwaarde afgekapt tot de 28 belangrijkste bits, vergeleken met 60 bits in versie 1, de klok in een versie 2 UUID zal “tick” slechts eenmaal elke 429,49 seconden, iets meer dan 7 minuten, in tegenstelling tot elke 100 nanoseconden voor versie 1. En met een klokvolgorde van slechts 6 bits, vergeleken met 14 bits in versie 1, kunnen slechts 64 unieke UUID ‘ s per knooppunt/domein/identifier worden gegenereerd per 7-minuten klokvink, vergeleken met 16.384 klokvolgorde waarden voor versie 1. Dus, Versie 2 is mogelijk niet geschikt voor gevallen waarin UUID ‘ s nodig zijn, per knooppunt/domein/identifier, met een snelheid van meer dan ongeveer één om de zeven seconden.

Versies 3 en 5 (namespace name-based)bewerken

versie-3 en versie-5 UUID ‘ s worden gegenereerd door hashing een naamruimteidentificatie en naam. Versie 3 gebruikt MD5 als hash-algoritme, en versie 5 gebruikt SHA-1.

de naamruimte identifier is zelf een UUID. De specificatie biedt UUID ’s om de naamruimten voor url’ s, volledig gekwalificeerde domeinnamen, object-ID ‘ s en X. 500 distinguished names te vertegenwoordigen; maar elke gewenste UUID kan worden gebruikt als naamruimte-aanduiding.

om de versie-3 uuid te bepalen die overeenkomt met een bepaalde naamruimte en naam, wordt de UUID van de naamruimte getransformeerd naar een reeks bytes, verbonden met de invoernaam, vervolgens gehasht met MD5, wat 128 bits oplevert. Dan worden 6 of 7 bits vervangen door vaste waarden, de 4-bits versie (bijv. 00112 voor versie 3), en de 2-of 3-bit UUID “variant” (bijvoorbeeld 102 die een RFC 4122 UUID ‘ s aangeeft, of 1102 die een oudere Microsoft GUID aangeeft). Aangezien 6 of 7 bits dus vooraf bepaald zijn, dragen slechts 121 of 122 bits bij aan de uniciteit van de UUID.

versie-5 UUID ‘ s zijn vergelijkbaar, maar SHA-1 wordt gebruikt in plaats van MD5. Aangezien SHA-1 160-bits vertaalafdrukken genereert, wordt de vertaalafgave ingekort tot 128 bits voordat de versie en variant bits worden vervangen.

versie-3 en versie-5 UUID ‘ s hebben de eigenschap dat dezelfde naamruimte en naam aan dezelfde UUID worden toegewezen. Echter, noch de naamruimte noch de naam kan worden bepaald van de UUID, zelfs als een van hen is opgegeven, behalve door brute-force zoeken. RFC 4122 adviseert versie 5 (SHA-1) boven versie 3 (MD5), en waarschuwt voor het gebruik van UUID ‘ s van beide versies als beveiligingsreferenties.

versie 4 (willekeurig)bewerken

een UUID van versie 4 wordt willekeurig gegenereerd. Zoals in andere UUID ‘ s worden 4 bits gebruikt om versie 4 aan te geven, en 2 of 3 bits om de variant aan te geven (102 of 1102 voor varianten 1 en 2 respectievelijk). Dus, voor variant 1 (dat wil zeggen, de meeste UUID ‘s) een willekeurige versie-4 UUID zal 6 vooraf bepaalde variant en versie bits, waardoor 122 bits voor het willekeurig gegenereerde deel, voor een totaal van 2122, of 5.3×1036 (5.3 undecillion) mogelijke versie-4 variant-1 UUID’ s. Er zijn half zo veel mogelijke versie-4 variant-2 UUID ‘ s (legacy GUIDs) omdat er één willekeurige bit minder beschikbaar is, 3 bits worden verbruikt voor de variant.