Qu’est-ce que UUID v1 ?
UUID version 1 est un identifiant de 128 bits basé sur le temps (chaîne de 36 caractères) défini par la RFC 4122. Il combine :
- Horodatage : valeur sur 60 bits (précision à 100 ns depuis le 15/10/1582)
- Séquence d’horloge : compteur sur 14 bits pour gérer les retours en arrière
- ID de nœud : valeur sur 48 bits (généralement l’adresse MAC)
Exemple de format : 2ed6657d-e927-11eb-9a03-0242ac130003
Fonctionnement de UUID v1
- Calculer l’horodatage courant (intervalles de 100 ns depuis le 15/10/1582)
- Récupérer/incrémenter la séquence d’horloge sur 14 bits (pour l’unicité si l’horloge recule)
- Obtenir l’ID de nœud sur 48 bits (souvent à partir de l’adresse MAC)
- Définir les bits de version (0001) et de variante (10)
- Assembler sous forme de 32 chiffres hexadécimaux avec tirets : format 8-4-4-4-12
Avantages et considérations
| Avantages | Considérations |
|---|---|
|
|
Structure de UUID v1
| Bits | Contenu |
|---|---|
| 0-31 | 32 bits bas de l’horodatage |
| 32-47 | 16 bits moyens de l’horodatage |
| 48-59 | 12 bits hauts de l’horodatage |
| 60-63 | Version (0001 pour v1) |
| 64-65 | Variante (10 pour RFC4122) |
| 66-79 | Sequence d’horloge (14 bits) |
| 80-127 | ID de nœud (48 bits) |
UUID v1 vs autres versions
| Version | Basé sur | Cas d’usage | Confidentialité |
|---|---|---|---|
| UUID v1 | Temps + MAC | ID triables | ⚠️ Révèle la MAC |
| UUID v3 | Namespace + MD5 | ID déterministes | ✅ Privé |
| UUID v4 | Aléatoire | ID aléatoires sécurisés | ✅ Privé |
| UUID v5 | Namespace + SHA-1 | ID déterministes | ✅ Privé |
| UUID v6 | Temps (réordonné) | ID triables | ⚠️ Révèle la MAC |
| UUID v7 | Temps + aléatoire | ID triables | ✅ Privé |
Cas d’usage courants
- Clés de base de données : bases de données distribuées
- Journaux d’audit : suivi ordonné par date
- ID de transaction : processus métier
- Suivi de session : applications web
- Adressage de contenu : systèmes CMS
- Messages IoT : communication d’appareils
Foire aux questions
UUID v1 est-il sécurisé cryptographiquement ?
Non. UUID v1 est prévisible si l’horodatage et l’adresse MAC sont connus. Pour la sécurité, utilisez plutôt UUID v4 aléatoire.
Les valeurs UUID v1 peuvent-elles entrer en collision ?
Les collisions sont extrêmement improbables en pratique grâce à la précision de l’horodatage, aux compteurs de séquence d’horloge et aux identifiants de nœud.
Puis-je extraire la date de création d’un UUID v1 ?
Oui. Le composant horodatage peut être extrait avec des algorithmes disponibles dans la plupart des bibliothèques UUID.
Les UUID v1 sont-ils triables par date de création ?
Oui, mais il faut des fonctions de tri spéciales. La comparaison directe de chaînes ne fonctionne pas car les bits de temps ne sont pas séquentiels.
UUID v1 expose-t-il mon adresse MAC ?
Par défaut, oui. La plupart des implémentations utilisent l’adresse MAC pour l’ID de nœud. Les implémentations axées sur la confidentialité peuvent utiliser des ID de nœud aléatoires.