3.1. Requirements on Nonce Generation (Exigences sur la génération de nonces)
3.1. Requirements on Nonce Generation (Exigences sur la génération de nonces)
Il est essentiel pour la sécurité que les nonces soient construits de manière à respecter l'exigence selon laquelle chaque valeur de nonce doit être distincte pour chaque invocation de l'opération de chiffrement authentifié, pour toute valeur fixe de la clé. Dans cette section, nous attirons l'attention sur certaines conséquences de cette exigence dans différents scénarios.
Lorsque plusieurs dispositifs effectuent le chiffrement avec une seule clé, ces dispositifs doivent se coordonner pour garantir l'unicité des nonces. Un moyen simple consiste à utiliser un format de nonce contenant un champ distinct pour chaque dispositif, comme décrit à la section 3.2. Il n'est pas nécessaire de coordonner les détails du format de nonce entre l'entité qui chiffre et celle qui déchiffre, tant que le nonce entier est envoyé ou stocké avec le texte chiffré et est donc disponible au déchiffreur. Si le nonce complet n'est pas disponible au déchiffreur, celui-ci devra savoir comment le nonce est structuré pour pouvoir le reconstituer. Les applications DEVRAIENT laisser aux moteurs de chiffrement une certaine liberté dans le choix de leurs nonces; par exemple, un nonce peut contenir à la fois un compteur et un champ défini par l'entité qui chiffre mais non traité par le récepteur. Cette liberté permet à un ensemble de dispositifs de chiffrement de se coordonner plus facilement pour assurer la distinction de leurs nonces.
Si une clé secrète est utilisée sur une longue période, par exemple à travers plusieurs redémarrages, le nonce devra être stocké en mémoire non volatile. Dans de tels cas, il est essentiel d'utiliser des points de reprise (checkpointing) pour le nonce; c'est-à-dire que la valeur courante du nonce doit être enregistrée pour fournir l'état nécessaire afin de reprendre le chiffrement en cas de défaillance imprévue. Un moyen simple d'obtenir une forte assurance qu'une valeur de nonce ne sera pas réutilisée est d'attendre que le processus de chiffrement reçoive du processus de stockage une confirmation indiquant que la valeur de nonce suivante a déjà été enregistrée. Comme cette méthode peut ajouter une latence notable, il peut être souhaitable d'enregistrer une valeur de nonce plusieurs crans en avance dans la séquence. Par exemple, le nonce 100 pourrait être stocké, après quoi les nonces 1 à 99 pourraient servir au chiffrement. La valeur de nonce 200 pourrait être stockée en même temps que l'utilisation des nonces 1 à 99, et ainsi de suite.
De nombreux problèmes liés à la réutilisation des nonces peuvent être évités en changeant de clé lorsque la coordination des nonces est difficile.
Chaque algorithme AEAD DEVRAIT décrire quelle dégradation de sécurité résulterait d'une réutilisation involontaire d'une valeur de nonce.