En cryptographie, un nonce est un nombre arbitraire destiné à être utilisé une seule fois. Il s'agit souvent d'un nombre aléatoire ou pseudo-aléatoire émis dans un protocole d'authentification pour garantir que les anciennes communications ne peuvent pas être réutilisées dans des attaques par rejeu. Le mot nonce peut également désigner un vecteur d'initialisation. Les nonces peuvent aussi être utilisés dans des fonctions de hachage cryptographiques, en particulier en relation avec des preuves de travail. Un nonce est un nombre arbitraire utilisé une seule fois dans une communication cryptographique. C'est souvent un nombre aléatoire ou pseudo-aléatoire. Beaucoup de nonces incluent un horodatage (timestamp) pour assurer leur unicité et empêcher leur réutilisation. L'horodatage implique évidemment la synchronisation des horloges entre les utilisateurs, ce qui peut parfois poser des problèmes. Dans un protocole de vérification de mot de passe avec nonce, le nonce est envoyé du serveur vers le client. l'ajout d'un nonce de client (envoyé du client vers le serveur ; parfois appelé cnonce) améliore la sécurité, comme dans l'authentification d'accès par digest HTTP. Pour s'assurer qu'un nonce est utilisé une seule fois, il doit contenir une composante de temps (comme un horodatage suffisamment précis) ou il doit contenir suffisamment de bits aléatoires pour que la probabilité de génération de deux nonces identiques soit très faible. Certains auteurs incluent le caractère aléatoire (ou l'imprévisibilité) dans la définition du nonce. Le mot nonce est un mot emprunté à l'anglais qui, contrairement à l'idée reçue, n'est pas issu de la contraction de « number used once » (« nombre utilisé une seule fois ») mais de la déformation d'une expression du : þe nanes signifiant "pour un but particulier". Les protocoles d'authentification peuvent utiliser des nonces pour garantir que les anciennes communications ne peuvent pas être réutilisées dans des attaques par rejeu.
Carmela González Troncoso, Bogdan Kulynych, Wouter Lueks