Identificator universal unic
pentru ambele variante 1 și 2, cinci „versiuni” sunt definite în standarde și fiecare versiune poate fi mai potrivită decât celelalte în cazuri de utilizare specifice. Versiunea este indicată deM
în reprezentarea șirului.
UUID-urile Version-1 sunt generate dintr-un timp și un ID de nod (de obicei adresa MAC); UUID-urile version-2 sunt generate dintr-un identificator( de obicei un ID de grup sau Utilizator), timp și un ID de nod; versiunile 3 și 5 produc UUID-uri deterministe generate prin hashing-ul unui identificator de spațiu de nume și; și versiunea-4 UUIDs sunt generate folosind un număr aleatoriu sau pseudo-aleatoare.
zero UUIDEdit
UUIDUL „zero”, un caz special, este UUIDUL00000000-0000-0000-0000-000000000000
; adică toți biții setați la zero.
Versiunea 1 (Data-ora și adresa MAC)editare
Versiunea 1 concatenează adresa MAC pe 48 de biți a „nodului” (adică computerul care generează UUID), cu un marcaj de timp pe 60 de biți, fiind numărul de intervale de 100 de nanosecunde de la miezul nopții 15 octombrie 1582 Ora universală coordonată (UTC), data la care calendarul Gregorian a fost adoptat pentru prima dată. RFC 4122 afirmă că valoarea timpului se rostogolește în jurul valorii de 3400 D.HR.,: 3 în funcție de algoritmul utilizat, ceea ce implică faptul că marcajul de timp pe 60 de biți este o cantitate semnată. Cu toate acestea, unele programe, cum ar fi biblioteca libuuid, tratează marca de timp ca nesemnată, punând timpul de răsturnare în 5236 D.hr. Timpul de răsturnare astfel cum este definit de ITU-T Rec. X. 667 este 3603 AD.: v
o secvență de ceas de 13 sau 14 biți „uniquifying” extinde marcajul de timp pentru a gestiona cazurile în care ceasul procesorului nu avansează suficient de repede sau unde există mai multe procesoare și generatoare UUID pe nod. Când UUID – urile sunt generate mai repede decât ceasul sistemului ar putea avansa, biții inferiori ai câmpurilor timestamp pot fi generați prin incrementarea acestuia de fiecare dată când este generat un UUID, pentru a simula un marcaj de timp de înaltă rezoluție. Cu fiecare versiune 1 UUID care corespunde unui singur punct din spațiu (nodul) și timp (intervale și secvență de ceas), șansa ca două UUID-uri de versiune 1 generate corespunzător să fie neintenționate la fel este practic nulă. Deoarece timpul și secvența de ceas totală 74 biți, 274 (1.8 1022, sau 18 sextillion) Versiune-1 UUID-uri pot fi generate pe ID nod, la o rată medie maximă de 163 miliarde pe secundă pe ID nod.
spre deosebire de alte versiuni UUID, versiunea-1 și -2 UUID bazate pe adrese MAC de pe cardurile de rețea se bazează parțial pe un identificator emis de o autoritate centrală de înregistrare, și anume partea Organizationally Unique Identifier (OUI) a adresei MAC, care este emisă de IEEE producătorilor de echipamente de rețea. Unicitatea UUID-urilor version-1 și version-2 bazate pe adresele MAC ale cardului de rețea depinde, de asemenea, de producătorii de carduri de rețea care atribuie corect adrese MAC unice cardurilor lor, care, ca și alte procese de fabricație, sunt supuse erorilor.
utilizarea adresei MAC a cardului de rețea al nodului pentru ID-ul nodului înseamnă că un UUID version-1 poate fi urmărit înapoi la computerul care l-a creat. Documentele pot fi uneori urmărite la computerele în care au fost create sau editate prin UUID-uri încorporate în ele prin software-ul de procesare a textului. Această gaură de Confidențialitate a fost utilizată la localizarea creatorului virusului Melissa.
RFC 4122 permite ca adresa MAC într-o versiune-1 (sau 2) UUID să fie înlocuită cu un ID de nod aleatoriu pe 48 de biți, fie pentru că nodul nu are o adresă MAC, fie pentru că nu este de dorit să o expuneți. În acest caz, RFC necesită ca bitul cel mai puțin semnificativ al primului octet al ID-ului nodului să fie setat la 1. Aceasta corespunde bitului multicast din adresele MAC și setarea acestuia servește la diferențierea UUID-urilor în care ID-ul nodului este generat aleatoriu din UUID-uri pe baza adreselor MAC de pe plăcile de rețea, care au de obicei adrese MAC unicast.
versiunea 2 (Data-ora și adresa MAC, Versiunea de securitate DCE)Editați
RFC 4122 rezervă versiunea 2 Pentru UUID-urile „DCE security”; dar nu oferă detalii. Din acest motiv, multe implementări UUID omit versiunea 2. Cu toate acestea, specificația UUID-urilor version-2 este furnizată de specificația DCE 1.1 Authentication and Security Services.
Versiunea 2 UUID sunt similare cu versiunea 1, cu excepția faptului că cei mai puțin semnificativi 8 biți ai secvenței de ceas sunt înlocuiți cu un număr de „domeniu local”, iar cei mai puțin semnificativi 32 de biți ai marcajului de timp sunt înlocuiți cu un identificator întreg semnificativ în domeniul local specificat. Pe sistemele POSIX, numerele de domeniu local 0 și 1 sunt pentru ID-uri de utilizator (uID) și, respectiv, ID-uri de grup (GIDs), iar alte numere de domeniu local sunt definite de site. Pe sistemele non-POSIX, toate numerele de domeniu locale sunt definite de site.
capacitatea de a include un domeniu / identificator de 40 de biți în UUID vine cu un compromis. Pe de o parte, 40 de biți permit aproximativ 1 trilion de valori de domeniu/identificator pe ID de nod. Pe de altă parte, cu valoarea ceasului trunchiată la cei mai importanți 28 de biți, comparativ cu 60 de biți din versiunea 1, ceasul dintr-un UUID de versiunea 2 va „bifa” doar o dată la 429,49 secunde, puțin mai mult de 7 minute, spre deosebire de fiecare 100 de nanosecunde pentru versiunea 1. Și cu o secvență de ceas de numai 6 biți, comparativ cu 14 biți în versiunea 1, doar 64 UUID-uri unice pe nod/domeniu/identificator pot fi generate pe ceas de 7 minute, comparativ cu 16.384 valori de secvență de ceas pentru versiunea 1. Astfel, Versiunea 2 poate să nu fie potrivită pentru cazurile în care sunt necesare UUID-uri, pe nod/domeniu/identificator, la o rată care depășește aproximativ una la fiecare șapte secunde.
versiunile 3 și 5 (namespace name-based)editare
Versiunea-3 și versiunea-5 UUID-uri sunt generate de hashing un identificator namespace și nume. Versiunea 3 folosește MD5 ca algoritm de hashing, iar versiunea 5 folosește SHA-1.
identificatorul spațiului de nume este el însuși un UUID. Specificația oferă UUID-uri pentru a reprezenta spațiile de nume pentru URL-uri, nume de domenii complet calificate, identificatori de obiecte și nume distinse X. 500; dar orice UUID dorit poate fi utilizat ca desemnator de spațiu de nume.
pentru a determina UUID-ul version-3 corespunzător unui spațiu de nume și unui nume dat, UUID-ul spațiului de nume este transformat într-un șir de octeți, concatenat cu numele de intrare, apoi hash cu MD5, producând 128 de biți. Apoi, 6 sau 7 biți sunt înlocuiți cu valori fixe, versiunea pe 4 biți (de ex. 00112 pentru versiunea 3) și „varianta” UUID pe 2 sau 3 biți (de exemplu, 102 indicând un UUID RFC 4122 sau 1102 indicând un GUID Microsoft vechi). Deoarece 6 sau 7 biți sunt astfel predeterminați, doar 121 sau 122 biți contribuie la unicitatea UUID.
Versiunea-5 UUIDs sunt similare, dar SHA-1 este folosit în loc de MD5. Deoarece SHA-1 generează digerări pe 160 de biți, digerarea este trunchiată la 128 de biți înainte ca biții versiunii și variantei să fie înlocuiți.
UUID-urile Version-3 și version-5 au proprietatea că același spațiu de nume și același nume vor fi mapate la același UUID. Cu toate acestea, nici spațiul de nume, nici numele nu pot fi determinate din UUID, chiar dacă unul dintre ele este specificat, cu excepția căutării forței brute. RFC 4122 recomandă versiunea 5 (SHA-1) peste versiunea 3 (MD5) și avertizează împotriva utilizării UUID-urilor oricărei versiuni ca acreditări de securitate.
Versiunea 4 (aleatoare)editare
o versiune 4 UUID este generat aleator. Ca și în alte UUID – uri, 4 biți sunt utilizați pentru a indica versiunea 4 și 2 sau 3 biți pentru a indica varianta (102 sau 1102 Pentru variantele 1 și respectiv 2). Astfel, pentru varianta 1 (adică majoritatea UUID-urilor) o versiune aleatorie-4 UUID va avea 6 variante predeterminate și biți de versiune, lăsând 122 biți pentru partea generată aleatoriu, pentru un total de 2122, sau 5,3 1036 (5,3 undecillion) versiune posibilă-4 variantă-1 UUID-uri. Există jumătate din numărul de versiuni posibile-4 variante-2 UUID-uri (GUID-uri moștenite), deoarece există un bit aleatoriu Mai puțin disponibil, 3 biți fiind consumați pentru variantă.
Leave a Reply