4. Requirements on AEAD Algorithm Specifications (Exigences sur les spécifications d'algorithmes AEAD)
4. Requirements on AEAD Algorithm Specifications (Exigences sur les spécifications d'algorithmes AEAD)
Chaque algorithme AEAD DOIT n'accepter que des clés d'une longueur fixe K_LEN, et NE DOIT PAS exiger de format de données particulier pour les clés fournies en entrée. Un algorithme qui exige une telle structure (par exemple avec des sous-clés dans un format de parité particulier) devra la fournir en interne.
Chaque algorithme AEAD DOIT accepter tout texte en clair d'une longueur comprise entre zéro et P_MAX octets inclusivement, où la valeur P_MAX est propre à cet algorithme. La valeur de P_MAX DOIT être strictement supérieure à zéro, et DEVRAIT être d'au moins 65 536 (2^16) octets. Cette taille est une limite supérieure typique pour les paquets de données réseau. D'autres applications peuvent utiliser des valeurs de P_MAX encore plus grandes; il est donc souhaitable que les algorithmes à usage général prennent en charge des valeurs plus élevées.
Chaque algorithme AEAD DOIT accepter toutes données associées d'une longueur comprise entre zéro et A_MAX octets inclusivement, où la valeur A_MAX est propre à cet algorithme. La valeur de A_MAX DOIT être strictement supérieure à zéro, et DEVRAIT être d'au moins 65 536 (2^16) octets. D'autres applications peuvent utiliser des valeurs de A_MAX encore plus grandes; il est donc souhaitable que les algorithmes à usage général prennent en charge des valeurs plus élevées.
Chaque algorithme AEAD DOIT accepter tout nonce d'une longueur comprise entre N_MIN et N_MAX octets inclusivement, où les valeurs N_MIN et N_MAX sont propres à cet algorithme. Les valeurs N_MAX et N_MIN PEUVENT être égales. Chaque algorithme DEVRAIT accepter un nonce d'une longueur de douze (12) octets. Les algorithmes randomisés ou avec état, décrits ci-dessous, PEUVENT avoir une valeur N_MAX égale à zéro.
Un algorithme AEAD PEUT structurer sa sortie de texte chiffré de quelque façon que ce soit; par exemple, le texte chiffré peut incorporer une étiquette d'authentification (authentication tag). Chaque algorithme DEVRAIT choisir une structure favorable à un traitement efficace.
Un algorithme de chiffrement authentifié PEUT incorporer ou utiliser une source d'aléa, par exemple pour la génération d'un vecteur d'initialisation interne incorporé dans la sortie de texte chiffré. Un algorithme AEAD de ce type est dit randomisé (randomized); noter que seul le chiffrement est aléatoire, le déchiffrement restant toujours déterministe. Un algorithme randomisé PEUT avoir une valeur N_MAX égale à zéro.
Un algorithme de chiffrement authentifié PEUT incorporer un état interne conservé entre des invocations de l'opération de chiffrement, par exemple pour permettre la construction de valeurs distinctes utilisées comme nonces internes par l'algorithme. Un algorithme AEAD de ce type est dit avec état (stateful). Cette méthode peut permettre à un algorithme d'offrir une bonne sécurité même lorsque l'application fournit des nonces de longueur nulle. Un algorithme avec état PEUT avoir une valeur N_MAX égale à zéro.
La spécification d'un algorithme AEAD DOIT inclure les valeurs K_LEN, P_MAX, A_MAX, N_MIN et N_MAX définies ci-dessus. Elle DOIT en outre préciser le nombre d'octets du plus grand texte chiffré possible, noté C_MAX.
Chaque algorithme AEAD DOIT fournir une description reliant la longueur du texte en clair à celle du texte chiffré. Cette relation NE DOIT PAS dépendre de paramètres externes, tels qu'un paramètre de force d'authentification (par exemple la longueur de l'étiquette d'authentification). Une telle dépendance compliquerait l'usage de l'algorithme en créant une situation où les informations du registre AEAD ne suffiraient pas à garantir l'interopérabilité.
Chaque spécification d'algorithme AEAD DEVRAIT décrire quelle dégradation de sécurité résulterait d'une réutilisation involontaire d'une valeur de nonce.
Chaque spécification d'algorithme AEAD DEVRAIT fournir une référence à une analyse de sécurité détaillée. Ce document ne spécifie pas de modèle de sécurité particulier, car plusieurs modèles différents ont été utilisés dans la littérature. L'analyse de sécurité DEVRAIT définir ou citer un modèle de sécurité.
Un algorithme randomisé ou avec état, au sens défini ci-dessus, DEVRAIT se décrire en utilisant ces termes.