Qu’est-ce qu’un nonce en cryptographie ? Définition et signification

Nombre aléatoire ou pseudo-aléatoire utilisé dans les protocoles de communication, un nonce permet de garantir la confidentialité des communications. Il s’agit d’un nombre arbitraire et généré de façon aléatoire qui ne peut être utilisé qu’une seule fois et inclut souvent aussi un horodatage. 

En cryptographie, un nonce contribue à éviter les attaques par relecture et empêcher que les anciennes communications soient réutilisées par les cybercriminels. Il est utilisé dans les protocoles d’authentification, les fonctions de hachage cryptographique et les vecteurs d’initialisation.

Qu’est-ce qu’un nonce cryptographique ?

Utilisé dans les services de transmission des données en direct, un nonce cryptographique est un nombre généré de manière aléatoire et conçu pour garantir la confidentialité des communications et se protéger contre les attaques par relecture. Ce terme vient de l’anglais « number once » et désigne, en cryptographie, un nombre arbitraire employé une seule fois dans une communication cryptographique. 

Il inclut souvent un horodatage, ce qui signifie qu’il n’est valide qu’au cours d’une période précise afin d’éviter sa réutilisation. S’il ne possède pas de variante horaire, le nonce doit être généré avec suffisamment de bits aléatoires pour garantir une probabilité quasi nulle de répétition d’une valeur préalablement générée.

Exemples de nonce

Un nonce peut être utilisé dans un protocole d’authentification comme mesure de protection contre les attaques par relecture, en empêchant la réutilisation d’anciennes communications. Le nonce permet de prouver que le message reçu a été envoyé par l’expéditeur prévu et n’a pas été intercepté et renvoyé par un cybercriminel. Idéalement, un nonce doit comporter une partie séquentielle et une partie aléatoire.

Voici quelques exemples d’utilisation d’un nonce :

  • Protocoles d’authentification – Un nonce peut être utilisé pour calculer le hachage MD5 du mot de passe dans l’authentification d’accès par digest HTTP. Chaque fois qu’un code de réponse 401 est généré pour répondre à une demande d’authentification, le nonce sera différent. C’est tout particulièrement utile pour les transactions commerciales en ligne, afin de confirmer leur légitimité.

L’utilisation d’un nonce à des fins d’authentification garantit que les anciennes communications ne sont pas réutilisées. Par exemple, un site d’e-commerce peut ajouter un nonce à chaque achat effectué par un client pour empêcher qu’un cybercriminel n’utilise la commande initiale pour passer d’autres commandes avec les informations du client.

  • Cryptographie asymétrique – Les valeurs nonce peuvent être utilisées dans la cryptographie à clé publique, par exemple lors de l’établissement d’une liaison, ou handshake, SSL/TLS (Secure Socket Layer/Transport Layer Security), au cours duquel deux valeurs nonce uniques sont générées et échangées. Le client comme le serveur généreront une valeur nonce unique qui sera validée avec la paire de clés publique/privée.
  • Signatures numériques – Un nonce peut servir à créer, comparer et vérifier des signatures numériques à l’aide d’outils de signature électronique.
  • Gestion des identités – Plusieurs fonctions de gestion des identités, dont le SSO (authentification unique), l’authentification à deux facteurs et la récupération de comptes, peuvent utiliser des nonces.
  • Hachage – Dans les systèmes de validation par preuve de travail, un nonce peut être utilisé pour varier les valeurs d’entrée d’une fonction de hachage cryptographique afin de satisfaire des conditions arbitraires avec le degré de difficulté requis.
  • Initialisation – Utilisé pour le chiffrement des données, un vecteur d’initialisation est un nonce puisqu’il est souvent aléatoire ou pseudo-aléatoire et utilisé une seule fois par session.
  • Cryptomonnaies – Un nonce peut servir à créer un hachage cryptographique qui se connecte à une blockchain du bitcoin. Lors du minage de bitcoins, un nonce peut être ajouté aux valeurs hachées afin de modifier le résultat de l’algorithme de hachage.

Avantage d’un nonce cryptographique

L’utilisation d’un nonce garantit l’unicité de la communication. Il permet d’éviter la réutilisation d’anciennes communications, ce qui est le cas lors des attaques par relecture. 

Dans le cas d’une attaque par relecture, un cybercriminel intercepte une communication entre deux parties et utilise le message intercepté pour obtenir un accès non autorisé. Par exemple, lorsque vous envoyez une demande à un serveur, un cyberpirate peut l’intercepter et la renvoyer au serveur en se faisant passer pour vous. Les données semblent provenir de votre navigateur. 

Par contre, si vous utilisez un nonce, la communication ne peut pas être réutilisée même si elle est interceptée puisque le serveur n’accepte pas le message non autorisé. Le nonce n’étant utilisé qu’une seule fois, toute tentative de réutilisation d’anciennes communications est invalidée et bloquée. Le caractère aléatoire du nonce, parfois associé à un horodatage, permet à une application de vérifier l’identité d’un utilisateur et empêche les cybercriminels d’usurper l’identité de clients légitimes.

Ressources supplémentaires

Le NIST (National Institute of Standards and Technology) a publié plusieurs ressources à propos des nonces, des bonnes pratiques et de leurs usages. Lors du minage de bitcoins, un « golden nonce » désigne une valeur de hachage inférieure à la valeur cible. Le Blockchain Council publie d’autres informations concerne les blockchains et l’application des nonces à celles-ci.

Références

Replay Attack. National Institute of Standards and Technology (NIST).

Nonce. National Institute of Standards and Technology (NIST).

What Is a Golden Nonce and What Is Its Usage in Blockchain? 2022. Blockchain Council.