Cos'è UUID v5?
UUID versione 5 è un identificatore a 128 bit basato su namespace (stringa di 36 caratteri) definito in RFC 4122. Combina:
- Namespace UUID: UUID predefinito o personalizzato per delimitare la generazione
- Name: Valore stringa definito dall'utente all'interno del namespace
- SHA-1 hash: Algoritmo crittografico usato per generare il risultato
Esempio di formato: 2ed6657d-e927-5eb1-9a03-0242ac130003
Come funziona UUID v5
- Seleziona un namespace UUID (predefinito o personalizzato)
- Concatena il namespace UUID e la stringa nome
- Calcola l'hash SHA-1 del valore concatenato
- Imposta i bit di versione (0101) e i bit di variante (10)
- Assemblare come 32 cifre esadecimali con trattini: formato 8-4-4-4-12
Vantaggi e considerazioni
Advantages | Considerations |
---|---|
|
|
Struttura UUID v5
Bits | Content |
---|---|
0-47 | Primi 48 bit dell'hash SHA-1 |
48-51 | Versione (0101 per v5) |
52-63 | Successivi 12 bit dell'hash SHA-1 |
64-65 | Variante (10 per RFC4122) |
66-127 | Restanti 62 bit dell'hash SHA-1 |
UUID v5 vs. altre versioni
Version | Basato su | Caso d'uso | Privacy |
---|---|---|---|
UUID v1 | Tempo + MAC | ID ordinati per tempo | ⚠️ Rivela MAC |
UUID v3 | Namespace + MD5 | ID deterministici | ✅ Privato |
UUID v4 | Random | ID casuali sicuri | ✅ Privato |
UUID v5 | Namespace + SHA-1 | ID deterministici | ✅ Privato |
UUID v6 | Tempo (riordinato) | ID ordinabili | ⚠️ Rivela MAC |
UUID v7 | Tempo + casuale | ID ordinabili | ✅ Privato |
Namespace predefiniti
Namespace | UUID | Purpose |
---|---|---|
DNS | 6ba7b810-9dad-11d1-80b4-00c04fd430c8 | Per nomi di dominio |
URL | 6ba7b811-9dad-11d1-80b4-00c04fd430c8 | Per URL |
OID | 6ba7b812-9dad-11d1-80b4-00c04fd430c8 | Per ISO OID |
X.500 DN | 6ba7b814-9dad-11d1-80b4-00c04fd430c8 | Per nomi distinti X.500 |
Casi d'uso comuni
- Indirizzamento del contenuto: ID coerenti per contenuti identici
- Sistemi distribuiti: Risorse denominate tra sistemi
- Mappatura URL: Conversione di URL in identificatori stabili
- Gestione della configurazione: Tracciamento degli elementi di configurazione nominati
- Deduplicazione dati: Identificazione di record identici
- Federation: Identificatori coerenti tra sistemi
Domande frequenti
UUID v5 è migliore di UUID v3?
Sì, per la maggior parte dei casi d'uso. UUID v5 utilizza SHA-1 che è crittograficamente più forte dell'algoritmo MD5 usato in UUID v3. Tuttavia, entrambi forniscono generazione deterministica.
I valori UUID v5 possono collidere?
Le collisioni sono teoricamente possibili ma estremamente improbabili in pratica a causa delle proprietà di SHA-1. L'uso di namespace o stringhe nome differenti elimina praticamente il rischio di collisione.
SHA-1 è abbastanza sicuro per UUID v5?
Per scopi UUID, SHA-1 rimane adatto nonostante le sue debolezze crittografiche. UUID v5 non è destinato a scopi di sicurezza ma a generare identificatori coerenti.
Posso creare un namespace personalizzato per UUID v5?
Sì. Mentre RFC 4122 definisce namespace standard (DNS, URL, OID, X.500), puoi creare namespace personalizzati usando qualsiasi UUID valido, tipicamente un UUID casuale v4.
Lo stesso nome genera sempre lo stesso UUID v5?
Sì, ma solo all'interno dello stesso namespace. Lo stesso nome in namespace diversi genererà UUID differenti, caratteristica chiave per organizzare gli identificatori.