Aller au contenu
Quaestio

UUID

Générez des identifiants aléatoires de version 4 dans l’écriture dont vous avez besoin.

Identifiants

    Le hasard vient de la source cryptographique du navigateur, et rien n’est envoyé ailleurs.

    Intégrer

    Intégrer cet outil à votre site

    Copiez le code et collez-le là où l’outil doit apparaître, par exemple dans un article de blog ou sur une page d’école. C’est gratuit, le cadre ne contient pas de publicité et l’outil calcule dans le navigateur du visiteur.

    Comment ça marche

    Un UUID est un identifiant de 128 bits, écrit en 32 caractères hexadécimaux répartis en cinq groupes séparés par des traits d’union.

    La version 4 est faite de bits aléatoires, sauf six bits qui indiquent la version et la variante. Cela fait 122 bits de hasard, soit un peu plus de cinq sextillions de valeurs possibles, soit 5,3 × 10³⁶.

    Avec autant de possibilités, aucun organisme central n’a besoin de distribuer les identifiants. Deux systèmes peuvent en générer chacun un sans se concerter, et le risque de collision est négligeable.

    Le hasard vient de la source cryptographique du navigateur, qui existe précisément pour les valeurs qui ne doivent pas être devinables.

    L’écriture avec majuscules ou avec accolades vient du monde Windows. C’est le même identifiant, écrit autrement.

    Comment les identifiants sont créés

    L’outil appelle la fonction crypto.randomUUID du navigateur, qui selon la Web Cryptography API du W3C crée un UUID de version 4 à partir d’octets aléatoires sûrs sur le plan cryptographique. Dans les navigateurs plus anciens qui n’ont pas cette fonction, l’outil remplit lui-même 16 octets avec crypto.getRandomValues, puis écrase six bits : la moitié haute du septième octet devient 0100, ce qui signifie version 4, et les deux bits de poids fort du neuvième octet deviennent 10, ce qui marque la variante. Chaque série compte jusqu’à 100 identifiants. Les options majuscules, accolades et traits d’union ne changent que l’écriture des valeurs, pas les valeurs elles-mêmes.

    Reconnaître la version 4

    Les bits fixes se voient dans le texte. Le premier caractère du troisième groupe est toujours 4. Le premier caractère du quatrième groupe est 8, 9, a ou b, parce que seuls deux de ses quatre bits sont fixés. Dans 60c2d751-1e0c-4aec-be2a-9e30acede22d, créé avec le code de l’outil, ces caractères sont 4 et b. Si un autre caractère occupe ces places, l’identifiant n’est pas de version 4. La RFC 9562 permet d’écrire les lettres en majuscules, en minuscules ou en mélangeant les deux.

    Cas limites

    Un UUID est un identifiant, pas un secret. La RFC 9562 dit que les implémentations ne devraient pas supposer les UUID difficiles à deviner, et qu’ils ne doivent pas servir de capacités de sécurité, c’est-à-dire d’identifiants dont la seule possession donne accès à quelque chose. Un lien de réinitialisation de mot de passe demande un jeton conçu pour cet usage.

    Comme clé de base de données, la version 4 a un défaut que la norme signale elle-même : des valeurs créées l’une après l’autre se retrouvent loin les unes des autres dans l’index, et chaque nouvelle ligne s’insère à un endroit aléatoire. La version 7 commence par un horodatage et se trie donc dans l’ordre de création. L’outil ne crée que des versions 4.

    Deux valeurs portent un nom dans la norme : l’UUID nul, fait de zéros, et l’UUID max, fait de f. Aucune ne peut sortir de l’outil, puisque les bits de version et de variante sont toujours posés.

    Sources

    Comment les outils sont vérifiés