- Universal Unique Identifier
-
UUID est l'abréviation du terme anglais Universally Unique Identifier (identifiant universellement unique) utilisé en informatique. Il s'agit d'une spécification DCE définie initialement par l'OSF (Open Software Foundation). Cette spécification est enrichie par la RFC 4122, en 2005, qui standardise les algorithmes de génération n'utilisant pas l'adresse MAC. L'UUID est normalisé par l'ISO/IEC 9834-8:2008 qui prend en compte les algorithmes OSF, RFC 4122, mais aussi certains nommages "propriétaires".
Ces identifiants uniques sont codés sur 128 bits et sont produits en utilisant des composantes pseudo-aléatoires ainsi que les caractéristiques d'un ordinateur (numéro de disque dur, adresse MAC, etc.). Un UUID se présente habituellement sous cette forme : 110E8400-E29B-11D4-A716-446655440000
Un UUID est initialement conçu de manière à être unique dans le monde ; cependant, les algorithmes de hachage et les générateurs pseudo-aléatoires introduisent un risque non-nul que deux ordinateurs produisent un même identifiant. La norme ISO définit d'ailleurs des « identificateurs de 128 bits qui sont soit garantis mondialement uniques ou sont mondialement uniques avec une haute probabilité ». Quant à la RFC 4122, si elle parle d'identificateur unique, elle précise que les identificateurs issus d'espaces de noms différents sont seulement « différents avec une haute probabilité ». (RFC 4122 §4.3)
Les UUID sont destinés à l'identification de composants logiciels (plugins), des différents membres dans un système distribué ou d'autres applications nécessitant une identification sans ambiguïté. Les UUID peuvent être générés sur les systèmes Unix via la commande uuidgen. Sous debian, le paquet e2fsprogs contient une commande /sbin/blkid qui permet d'afficher un UUID correspondant à certains périphériques.
Algorithmes de génération
La première version du standard prévoyait de générer l'identifiant avec l'adresse MAC de l'ordinateur et le nombre de 1/10 de microsecondes depuis la première date dans le calendrier grégorien. Cet algorithme est le plus robuste car l'adresse MAC apporte une garantie d'unicité. (Deux machines ne peuvent avoir la même adresse, et une machine ne peut générer deux UUID pendant le même dixième de microseconde.)
Cependant, l'utilisation de l'adresse MAC a un effet pervers : donner des informations sur l'ordinateur qui a généré l'identifiant. Des améliorations ont été entreprises et standardisées par la RFC 4122 (puis normalisées ISO). On peut maintenant faire appel à des nombres pseudo-aléatoires (version 4) et à des fonctions de hachage cryptographiques comme MD5 (version 3) ou SHA-1 (version 5) qui permettent de "casser" toute information relative à l'ordinateur qui a produit l'UUID. Le langage Java 5.0 utilise une variante de la génération de type Leach-Salz dont la spécification a expiré. Toutes ces techniques introduisent cependant une incertitude sur l'unicité de l'identifiant. (Une séquence pseudo-aléatoire peut sortir deux fois le même résultat, et les algorithmes de hachages ne sont pas bijectifs.) Enfin la multiplication de techniques concurrentes non-standardisées a fragilisé la robustesse de l'UUID dans ses différentes utilisations. (C'est ce qui a motivé la rédaction de la RFC en plus du standard OSF.)
Mais au vu du nombre de combinaisons possibles (4.10³⁷ par version), l'unicité garde « une haute probabilité ».
Voir aussi
Liens externes
Catégories :- Nombre aléatoire
- Identifiant
Wikimedia Foundation. 2010.