2.1. Authenticated Encryption (Chiffrement authentifié)
2.1. Authenticated Encryption (Chiffrement authentifié)
L'opération de chiffrement authentifié a quatre entrées, chacune étant une chaîne d'octets:
Une clé secrète K, qui DOIT être générée de manière uniformément aléatoire ou pseudo-aléatoire.
Un nonce N. Chaque nonce fourni à des invocations distinctes de l'opération de chiffrement authentifié DOIT être distinct, pour toute valeur particulière de la clé, sauf si chaque nonce est de longueur nulle. Les applications capables de générer des nonces distincts DEVRAIENT utiliser la méthode de formation de nonce définie à la section 3.2, et PEUVENT utiliser toute autre méthode satisfaisant l'exigence d'unicité. Les autres applications DEVRAIENT utiliser des nonces de longueur nulle.
Un texte en clair P (plaintext), qui contient les données à chiffrer et à authentifier.
Les données associées A (associated data), qui contiennent les données à authentifier, mais non à chiffrer.
Il y a une seule sortie:
Un texte chiffré C (ciphertext), d'une longueur au moins égale à celle du texte en clair, ou
une indication que l'opération de chiffrement demandée n'a pas pu être effectuée.
Toutes les entrées et sorties sont des chaînes d'octets de longueur variable, dont les longueurs respectent les contraintes suivantes:
Le nombre d'octets de la clé K est compris entre 1 et 255. Pour chaque algorithme AEAD, la longueur de K DOIT être fixe.
Pour toute valeur particulière de la clé, soit 1) chaque nonce fourni à des invocations distinctes de l'opération de chiffrement authentifié DOIT être distinct, soit 2) chaque nonce DOIT être de longueur nulle. Si des nonces de longueur nulle sont utilisés avec une clé donnée, alors chaque nonce utilisé avec cette clé DOIT avoir une longueur nulle. Sinon, le nombre d'octets du nonce DEVRAIT être douze (12). Des nonces de longueurs différentes PEUVENT être utilisés avec une clé donnée. Certains algorithmes ne peuvent pas être utilisés avec des nonces de longueur nulle, d'autres le peuvent; voir la section 4. Les applications qui respectent la longueur de nonce recommandée éviteront d'avoir à construire des nonces de longueurs différentes selon l'algorithme en service. Ces indications aident à tenir la logique spécifique à l'algorithme hors des applications.
Le nombre d'octets du texte en clair P PEUT être zéro.
Le nombre d'octets des données associées A PEUT être zéro.
Le nombre d'octets du texte chiffré C PEUT être zéro.
La présente spécification ne fixe pas de longueur maximale pour le nonce, le texte en clair, le texte chiffré ni les données authentifiées supplémentaires. Toutefois, un algorithme AEAD particulier PEUT restreindre davantage les longueurs de ces entrées et sorties. Une implémentation AEAD particulière PEUT restreindre davantage les longueurs de ses entrées et sorties. Si une implémentation donnée d'un algorithme AEAD se voit demander de traiter une entrée hors de la plage de longueurs admissibles, ou hors de la plage supportée par cette implémentation, elle DOIT renvoyer un code d'erreur et NE DOIT PAS produire d'autre information. En particulier, des données partiellement chiffrées ou partiellement déchiffrées NE DOIVENT PAS être renvoyées.
La confidentialité et l'authentification des messages s'appliquent au texte en clair P. Lorsque la longueur de P est nulle, l'algorithme AEAD se comporte comme un code d'authentification de message (MAC) sur l'entrée A.
Les données associées A servent à protéger des informations à authentifier mais qu'il n'est pas nécessaire de garder confidentielles. Lorsqu'on utilise un AEAD pour sécuriser un protocole réseau, par exemple, cette entrée peut inclure des adresses, des ports, des numéros de séquence, des numéros de version de protocole et d'autres champs indiquant comment le texte en clair ou le texte chiffré doit être traité, relayé ou pris en charge. Il est souvent souhaitable d'authentifier ces champs, bien qu'ils doivent rester en clair pour le bon fonctionnement du réseau ou du système. Lorsque ces données sont incluses dans l'entrée A, l'authentification est assurée sans les recopier dans le texte en clair.
La clé secrète K NE DOIT PAS figurer dans les autres entrées (N, P et A). (Cette restriction ne signifie pas que les valeurs de ces entrées doivent être vérifiées pour s'assurer qu'elles ne contiennent pas de sous-chaînes égales à la clé; elle signifie que la clé ne doit pas être copiée explicitement dans ces entrées.)
Le nonce est authentifié en interne par l'algorithme, et il n'est pas nécessaire de l'inclure dans l'entrée AD. Le nonce PEUT être inclus dans P ou A s'il est commode pour l'application.
Le nonce PEUT être stocké ou transporté avec le texte chiffré, ou PEUT être reconstitué immédiatement avant l'opération de déchiffrement authentifié. Il suffit de fournir au module de déchiffrement assez d'informations pour qu'il puisse construire le nonce. (Par exemple, un système peut utiliser un nonce formé d'un numéro de séquence dans un format particulier, auquel cas il peut être déduit de l'ordre des textes chiffrés.) Comme le processus de déchiffrement authentifié détecte les valeurs de nonce incorrectes, aucune défaillance de sécurité ne résultera si un nonce est incorrectement reconstitué et fourni à une opération de déchiffrement authentifié. Toute méthode de reconstitution du nonce devra tenir compte de la possibilité de perte ou de réordonnancement des textes chiffrés entre les processus de chiffrement et de déchiffrement.
Les applications NE DOIVENT PAS supposer une structure ou un format particulier du texte chiffré.