Globally Unique Identifier
Un GUID (abréviation de l'anglais Globally Unique IDentifier, en français : « identificateur global unique »[1]) sert habituellement d'identifiant unique pour un composant logiciel, par exemple un plugin. Sa taille est de 16 octets, soit 128 bits (exemple : {3F2504E0-4F89-11D3-9A0C-0305E82C3301}), décomposés en :
- 4 octets,
- 3 groupes de 2 octets,
- 6 octets.
Ce terme est utilisé à la fois dans le monde Microsoft et dans le monde Unix (voir RFC 4122). Microsoft utilise le terme de CLSID (de l'anglais CLasS IDentifier) pour désigner le GUID de la classe d'un objet OLE, et le terme IID (de l'anglais Interface IDentifier) pour les interfaces mises en œuvre par ces classes.
Sous Unix, on utilise le UUID.
Concernant les disques durs, on utilise maintenant les tables de partitionnement GUID, en anglais GUID Partition Table (GPT)
Sommaire |
Versions [modifier]
Quatre versions ont été spécifiées par Microsoft :
- version 1 : basée sur l’horloge de l'ordinateur et l’adresse MAC (avant Windows 2000),
- version 2 : réservée (non utilisée en pratique),
- version 3 : basée sur un nom, les différents champs sont produits à partir de ce nom,
- version 4 : basée sur des nombres issus d’un générateur de nombres pseudo-aléatoires cryptographique (Windows 2000 et ultérieur).
Sur les 128 bits (dont 4 bits pour la version et 2 pour la variante), seuls 122 sont réellement aléatoires, ce qui fait quand même environ 5 × 1036 combinaisons possibles.
GUID et CLSID de Microsoft [modifier]
Des GUID sont aussi insérés dans des documents Microsoft Office. Même les flux audio et vidéo dans le codec ASF sont identifiés par un GUID.
Dans le modèle COM (utilisé par ActiveX), les CLSID sont utilisés uniquement pour différencier les classes des objets. Cela veut dire que deux versions d'un composant peuvent avoir exactement le même nom, mais être discernables par leur CLSID. Chacune de ces classes supporte différentes interfaces identifiées chacune par un IID.
Base de registre de Microsoft [modifier]
La base de registre de Windows contient de nombreux GUID, CLSID et IID.
En particulier, la clé HKEY_CLASSES_ROOT\CLSID (équivalent à HKEY LOCAL MACHINE\SOFTWARE\Classes\CLSID\) contient de très nombreux CLSID.
Certains logiciels espions ajoutent des CLSID. N'étant pas très lisibles, l'opération peut passer inaperçue même pour un utilisateur averti qui connaît le maniement de regedit. Pour donner un exemple de logiciel espion modifiant les CLSID, on peut mentionner : Parent Tools, en juillet 2005 et PC Watch en juin 2005 (exemples indiqués par Symantec) [citation nécessaire].
Dans certaines versions de Windows, les clés de registre HWID (Hardware ID) et MSID (Microsoft ID) servent pour générer un GUID identifiant un ordinateur de façon unique (dans l'arborescence CurrentControlSet de HKEY_LOCAL_MACHINE). Certains logiciels anti-spyware les éliminent.
Active Directory [modifier]
Dans l'annuaire Active Directory, l'attribut ObjectGUID est le GUID qui sert d'identifiant pour un objet : il ne change jamais, même si l'objet change de nom ou s'il est déplacé.
Programmation sous Windows [modifier]
Dans l'API Win32, UUIDCreate() est la fonction de base pour créer un GUID. La fonction CoCreateGuid est une fonction qui enrobe UUIDCreate et qui permet de créer un CLSID.
Dans Visual Basic, Guid est un attribut d'un objet Active Directory.
Interface en ligne de commande [modifier]
UUIDGEN.EXE est un utilitaire de Microsoft permettant de générer un GUID. Dans le monde Microsoft, il fait partie de Microsoft Exchange Server 2003. Il ne faut pas le confondre avec la commande uuidgen du monde Unix.
GUIDGEN.EXE est un utilitaire de Microsoft permettant lui aussi de générer un GUID. Il est livré avec Visual Studio.
Anecdote [modifier]
En 1999, l'auteur du ver Melissa a été identifié en partie grâce au champ GUID de documents Microsoft Office qui, à l'époque, contenaient l'adresse MAC. Ce ver exploitait une faiblesse de Word 97. Dans les versions suivantes des logiciels Microsoft, l'algorithme qui génère le GUID a été modifié pour respecter la vie privée des utilisateurs : l'adresse MAC a été retirée.
Autres significations [modifier]
GUID est aussi le nom d'une balise XML pour RSS (standard de syndication du contenu). Cette balise utilisé par le RSS ne se réfère pas à la norme RFC 4122. La structure est totalement différente : il contient un texte. En pratique, ce texte correspond à l'URL.
Il existe une balise équivalente dans Atom, un autre standard de syndication du contenu. Cette balise s'appelle ID et contient un URI.
Liens externes [modifier]
- (en) MSDN : La clé de registre CLSID[EN]
- (en) Conception d'interface COM/OLE
- (en) Exemple de programme Visual Basic sur le GUID dans Active Directory
- (en) La balise GUID dans le format XML de RSS
- (fr) Le mouchard de Microsoft Office 97
- (en) Site permettant de générer des GUID sans installer de programme
- (en) UUID - generate UUIDs (or GUIDs) in Java
- (hu)(en) Generate GUIDs in .Net