Cryptographie
Valeur qui ne doit servir qu'une seule fois dans un contexte cryptographique donné, une clé, une session, un échange. Elle empêche qu'un message, un chiffré ou une réponse d'authentification soit rejoué ou reproduit deux fois à l'identique. L'anglais disait « for the nonce », pour cette fois seulement ; « number used once » est une relecture arrivée plus tard, pour faire sérieux.
Unique avant tout : Un nonce n'a qu'une obligation : ne jamais se répéter pour une même clé. On l'obtient par tirage aléatoire, par compteur, ou par un mélange des deux, et il voyage en clair avec le message.
Public en chiffrement, secret en signature : En chiffrement, le nonce est public et cela ne gêne personne. En signature ECDSA ou DSA, le même mot désigne un nombre qui doit en plus rester secret et imprévisible : le divulguer, ou le réutiliser pour deux messages, livre la clé privée par un calcul élémentaire. Un seul terme, deux contrats, et c'est le second qui a coûté le plus de clés.
Contre le rejeu : En défi-réponse, le serveur envoie un nonce frais que le client doit intégrer à sa réponse signée : une réponse interceptée devient inutilisable, puisque le nonce qu'elle contient est déjà consommé. Même rôle pour le paramètre nonce d'OpenID Connect, posé par l'application dans sa demande d'autorisation et retrouvé dans le jeton d'identité, et pour le nonce qu'un vérifieur envoie à un TPM avant de lui demander une attestation : sans lui, une vieille mesure signée ferait encore illusion.
Chiffrement authentifié : AES-GCM et ChaCha20-Poly1305 exigent un nonce distinct par message sous une même clé. En GCM, un nonce réutilisé ne fait échouer aucun test : le chiffrement reste parfaitement fonctionnel, il cesse seulement de protéger quoi que ce soit, puisqu'il laisse fuiter le XOR des clairs et permet de forger des tags. Avec 96 bits tirés au hasard, le paradoxe des anniversaires impose de changer de clé bien avant 2^32 messages ; XChaCha20 passe à 192 bits pour rendre ce tirage sans risque pratique.
Jusque dans les pages web : Une politique de sécurité de contenu (CSP) autorise un script inline en lui donnant le nonce de la réponse, tiré à neuf à chaque envoi de la page : un script injecté ne peut pas le deviner. Un nonce figé, ou servi depuis un cache, ne vaut rien, c'est le seul nonce dont la sécurité dépende d'une consigne de cache.
Ce qui arrive si on s'en passe
Sans nonce unique, rien ne distingue une réponse d'authentification légitime d'une copie capturée plus tôt : un attaquant qui a intercepté un échange peut le rejouer et se faire accepter. Avec un chiffrement par flot ou en mode compteur (CTR, GCM), réutiliser un nonce sous la même clé produit le même flux de clé ; le XOR de deux chiffrés donne alors le XOR des deux clairs, et un fragment connu de l'un révèle l'autre. En GCM, cette répétition permet en plus de retrouver la clé d'authentification et de forger des messages acceptés comme intègres. Pour une signature ECDSA, deux signatures produites avec le même nonce suffisent à calculer la clé privée. Côté navigateur, une politique de sécurité de contenu sans nonce qui autorise les scripts inline les autorise tous, injectés compris. Enfin, des messages identiques donnent des chiffrés identiques, ce qui révèle à un observateur quand le même contenu circule.
Explication de la marmotte
Imagine un videur à l'entrée d'une soirée. Au lieu d'un mot de passe fixe, que n'importe qui pourrait entendre et répéter, il te lance à chaque fois un mot inventé sur le moment, par exemple « girafe-42 ». Tu dois le lui renvoyer accompagné de ta signature secrète. Comme ce mot ne sert qu'une seule fois, quelqu'un qui t'aurait espionné la veille ne peut pas répéter ta réponse : elle correspondait à un autre mot, déjà jeté. Les ordinateurs font pareil pour vérifier qu'un message est neuf et pas une vieille copie renvoyée par un tricheur.
Où ce terme est utilisé
- Chiffrer et authentifier en une seule construction (24 occurrences)
- Chiffrement par flot : état, compteurs et réutilisation interdite (23 occurrences)
- Parler le langage des clés, des messages et des attaquants (13 occurrences)
- Produire de l’aléa utilisable en cryptographie (12 occurrences)
- Transformer un bloc en chiffrement de message (12 occurrences)
- Établir une clé : Diffie-Hellman, KEM et HPKE (10 occurrences)
- RNG matériel ou PRNG dans un HSM (9 occurrences)
- Choisir, combiner et migrer les algorithmes symétriques (8 occurrences)
- Cross-site scripting (XSS) : mécanisme, variantes et défenses (8 occurrences)
- Attestation distante TPM et démarrage mesuré (7 occurrences)
