Cos'è UUID v1?
Versione UUID 1 è un identificatore a 128 bit basato sul tempo (stringa di 36 caratteri) secondo RFC 4122. Combina:
- Timestamp: valore a 60 bit (precisione di 100 nanosecondi dal 15-10-1582)
- Sequenza dell'orologio: contatore a 14 bit per le regolazioni dell'orologio
- ID nodo: valore a 48 bit (tipicamente indirizzo MAC)
Esempio di formato: 2ed6657d-e927-11eb-9a03-0242ac130003
Come funziona UUID v1
- Calcolare il timestamp corrente (intervalli di 100ns dal 15-10-1582)
- Ottenere/incrementare la sequenza dell'orologio a 14 bit (per unicità se l'orologio torna indietro)
- Ottenere l'ID nodo a 48 bit (di solito dall'indirizzo MAC)
- Impostare i bit di versione (0001) 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 v1
Bits | Content |
---|---|
0-31 | 32 bit bassi del timestamp |
32-47 | 16 bit medi del timestamp |
48-59 | 12 bit alti del timestamp |
60-63 | Versione (0001 per v1) |
64-65 | Variante (10 per RFC4122) |
66-79 | Sequenza dell'orologio (14 bit) |
80-127 | ID nodo (48 bit) |
UUID v1 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 |
Casi d'uso comuni
- Chiavi di database: database distribuiti
- Log di audit: tracciamento ordinato per tempo
- ID transazione: processi aziendali
- Tracciamento sessione: applicazioni web
- Indirizzamento contenuti: sistemi CMS
- Messaggi IoT: comunicazione del dispositivo
Domande frequenti
UUID v1 è sicuro crittograficamente?
No. UUID v1 è prevedibile se timestamp e indirizzo MAC sono noti. Per la sicurezza, usa UUID v4 casuale.
I valori UUID v1 possono collidere?
Le collisioni sono estremamente improbabili in pratica grazie alla precisione del timestamp, ai contatori della sequenza dell'orologio e agli identificatori nodo.
Posso estrarre il tempo di creazione da un UUID v1?
Sì. La componente timestamp può essere estratta con algoritmi appropriati disponibili nella maggior parte delle librerie UUID.
Gli UUID v1 sono ordinabili per tempo di creazione?
Sì, ma sono necessarie funzioni di ordinamento speciali. Il confronto diretto di stringhe non funziona perché i bit temporali non sono sequenziali.
UUID v1 espone il mio indirizzo MAC?
Di default, sì. La maggior parte delle implementazioni usa l'indirizzo MAC per l'ID nodo. Le implementazioni orientate alla privacy possono usare ID nodo casuali.