Generatore di UUID (v4)

Genera uno o più UUID casuali di versione 4 nel tuo browser con una fonte di casualità crittografica — nulla viene inviato a un server.

1.051 visualizzazioni

Cosa rende unico uno UUID v4

Uno UUID (Identificatore Univoco Universale) è un numero a 128 bit, scritto convenzionalmente come 36 caratteri suddivisi 8-4-4-4-12 in esadecimale, come f47ac10b-58cc-4372-a567-0e02b2c3d479. Di questi 128 bit, la versione 4 — la variante prodotta da questo generatore — ne riempie 122 con l'output di un generatore di numeri casuali crittograficamente sicuro. I restanti 6 bit non sono affatto casuali: sono marcatori fissi che identificano lo UUID come versione 4 e ne indicano la "variante", motivo per cui il carattere subito dopo il secondo trattino è sempre 4, e il primo carattere del gruppo successivo è sempre 8, 9, a o b.

122 bit casuali sono uno spazio enorme: 2^122 valori possibili, circa 5,3×10³⁶. Per renderlo concreto, se ogni dispositivo sulla Terra generasse un miliardo di UUID al secondo ininterrottamente, servirebbero comunque nell'ordine di decine di miliardi di anni di generazione combinata prima che le probabilità di un singolo duplicato accidentale raggiungano anche solo il 50%. Ecco perché i sistemi distribuiti — servizi che girano su centinaia di server indipendenti senza alcun coordinamento tra loro — possono generare ciascuno i propri UUID localmente e confidare, senza consultare un registro centrale, che non ne collideranno mai due. Questo è l'intero scopo del formato: identificazione univoca senza una consultazione al database.

La generazione avviene qui interamente all'interno del tuo browser usando la funzione crypto.randomUUID() della Web Crypto API — la stessa fonte di casualità crittografica che i browser usano per le operazioni sensibili alla sicurezza. Nulla viene inviato a un server, nessun seme viene registrato, e ogni UUID che generi è indipendente da tutti gli altri.

Cosa sapere prima di usare gli UUID

v4 non è l'unica versione. v1 e v6 incorporano un timestamp e l'indirizzo di rete della macchina generatrice, il che li rende ordinabili ma rivela anche informazioni su quando e dove sono stati creati. v5 esegue l'hash di un nome che fornisci, producendo lo stesso UUID ogni volta per lo stesso input — utile quando serve un identificatore deterministico anziché casuale. v7, uno standard più recente, combina un prefisso di timestamp con bit casuali, offrendo sia univocità sia un ordinamento cronologico naturale. v4 resta la scelta predefinita corretta ogni volta che serve semplicemente un identificatore casuale, non indovinabile e privo di collisioni, e non è necessario che codifichi un orario o un nome.

Un'avvertenza pratica: poiché i valori v4 sono completamente casuali, usarli come chiave primaria di database può danneggiare le prestazioni di inserimento su tabelle indicizzate con B-tree, poiché le nuove righe finiscono in posizioni imprevedibili nell'indice invece di aggiungersi ordinatamente a un'estremità. Se il throughput di inserimento conta su larga scala, un'alternativa ordinata nel tempo come UUIDv7 o ULID mantiene la stessa garanzia di univocità a 128 bit restando comunque adatta agli indici.

Domande Frequenti

Due UUID generati possono entrare in collisione?

Teoricamente sì, praticamente mai: con 2^122 possibilità, generare un miliardo di UUID al secondo per 85 anni dà circa il 50% di probabilità di un'unica collisione. Sistemi in tutto il mondo si affidano a questo.

Dovrei usare gli UUID come chiavi primarie di database?

Eccellono nella generazione distribuita e negli ID non indovinabili, ma i v4 casuali frammentano gli indici B-tree. Se le prestazioni di inserimento contano, guarda UUIDv7 (ordinato nel tempo) o ULID — stessa dimensione, adatto agli indici.

v4 è l'unica versione?

No — v1/v6 incorporano un timestamp e un indirizzo MAC, v5 esegue l'hash di un nome e produce sempre lo stesso risultato, v7 è un formato più recente che combina un timestamp con la casualità. v4 resta la scelta predefinita quando serve solo un ID univoco casuale.

A cosa servono i bit fissi in uno UUID v4?

Dei 128 bit, solo 122 sono casuali. I restanti 6 sono riservati per contrassegnare il formato stesso — un nibble è fissato per segnalare la "versione 4", un altro è vincolato a un piccolo insieme di valori (8, 9, a o b) per indicare la "variante". Ecco perché ogni UUID v4 ha un 4 subito dopo il secondo trattino, indipendentemente da quanti ne generi.

Posso usare uno UUID come token di sicurezza, ad esempio per un link di reset della password?

Uno UUID v4 viene generato da una fonte di casualità crittograficamente sicura, quindi indovinarlo non è praticabile — ma è stato progettato per l'univocità, non per la segretezza. Per qualsiasi cosa sensibile alla sicurezza, abbinalo a una scadenza adeguata, all'applicazione dell'uso singolo e alla convalida lato server, invece di affidarti solo allo UUID.

Commenti

Ancora nessun commento — scrivi il primo!

Strumenti Simili