Qu'est-ce que Nonce ?
Un nonce (Number Used Once) est une valeur unique, généralement aléatoire ou séquentielle, utilisée exactement une fois dans une opération cryptographique afin de garantir que des entrées identiques produisent des sorties différentes. Cela empêche les attaques par rejeu et l’analyse de motifs.
Aussi connu sous le nom de : number used once, cryptographic nonce
Si tu chiffres le même texte en clair avec la même clé et sans nonce, tu obtiens à chaque fois un texte chiffré identique. Un attaquant qui observe plusieurs messages pourrait repérer des motifs : des textes chiffrés identiques révèlent que le même message a été envoyé, même sans le déchiffrer. Un nonce élimine ce problème en introduisant une valeur unique dans chaque opération de chiffrement, garantissant que le même texte en clair avec la même clé produit toujours un texte chiffré différent.
Les exigences de sécurité des nonces varient selon l’algorithme. Certains algorithmes (comme AES-GCM) imposent qu’un nonce ne soit jamais réutilisé avec la même clé : sa réutilisation peut compromettre de façon catastrophique la confidentialité et l’authentification. Pour ces algorithmes, les nonces aléatoires doivent être assez grands pour que les collisions aléatoires soient négligeables. Un nonce aléatoire de 96 bits (comme utilisé dans AES-GCM) offre une résistance aux collisions suffisante pour jusqu’à environ 2^32 chiffrements sous une même clé.
Les nonces apparaissent dans les protocoles cryptographiques sous différents noms. Dans AES-GCM, on les appelle vecteurs d’initialisation ; dans l’authentification défi-réponse, ce sont des défis ; et dans la blockchain, des nonces de minage. Le dénominateur commun est l’unicité : la valeur ne doit pas se répéter dans le contexte d’utilisation.
Comment Vaulted utilise Nonce
Chaque secret chiffré avec Vaulted utilise un nonce aléatoire unique de 12 octets (96 bits), produit par le générateur de nombres aléatoires cryptographiquement sûr de la Web Crypto API. Ce nonce sert de vecteur d’initialisation pour le chiffrement AES-256-GCM. Il est stocké avec le texte chiffré sur le serveur et transmis au destinataire pour le déchiffrement. Comme chaque secret utilise une paire clé-nonce fraîchement générée, la réutilisation des nonces n’est pas un problème pratique, même à grande échelle.