Chiffrement authentifié
From Wikipedia, the free encyclopedia
Le chiffrement authentifié (AE, pour "authenticated encryption") est une construction de chiffrement qui assure simultanément la confidentialité des données (le message est inintelligible sans posséder la clé[1] ) et leur authenticité (il est impossible de modifier un message existant ou d'en créer un nouveau sans posséder la clé). Cette dernière propriété est obtenue en ajoutant au message un code de contrôle, dépendant du contenu du message, et calculable uniquement avec la clé[2] .
Des exemples de modes de chiffrement offrant un chiffrement authentifié sont GCM et CCM . [1]
De nombreuses construction de chiffrement authentifié (mais pas toutes) permettent au message de contenir des « données associées » (AD) qui ne seront pas couvertes par le chiffrement, mais uniquement par l'authentification (c'est-à-dire qu'elles seront intelligibles sans la clé, mais que leur modification invalidera le message entier). Une utilisation typique est la protection d'un paquet réseau dont la destination est contenue dans l'en-tête. Pour acheminer correctement le paquet, tous les nœuds intermédiaires sur le chemin du message doivent pouvoir lire l'adresse du destinataire, mais il n'est pas souhaitable que cette adresse puisse être modifiée.[3]
On nomme de telles constructions chiffrement authentifié avec données associées, ou AEAD . [3]
L'interface de programmation d'un chiffrement authentifé offrira typiquement les fonctions suivantes:
- Chiffrement
- Entrée : texte clair, clé et éventuellement un en-tête (également appelé données authentifiées supplémentaires, AAD, ou données associées, AD ). Le texte clair sera chiffré et authentifié; les données associées ne seront pas chiffrées, mais seront authentifiées.
- Sortie : texte chiffré et code d'authentification du message (aussi appelé MAC).
- Déchiffrement
- Entrée : texte chiffré, clé, code d'authentification et éventuellement un en-tête (si utilisé pendant le chiffrement).
- Sortie : texte en clair, avec une garantie que le texte en clair ainsi que l'en-tête sont authentiques, ou une erreur si le code d'authentification n'est pas valable.
Histoire
L'idée d'un chiffrement authentifié est née de l'observation selon laquelle il est en apparence aisé d'assembler un algorithme de chiffrement et un algorithme d'authentification, et de produire une construction vulnérable même quand les algorithmes sous-jacents ne le sont pas individuellement[4],[5]. Cela a été confirmé par l'existence d'un certain nombre d’attaques pratiques sur des protocoles ou des applications déployées en production[6].
Autour des années 2000, un certain nombre d’efforts ont été fournis en direction d'une standardisation de modes garantissant une mise en œuvre correcte. En particulier, un vif intérêt pour les modes sécurisés a été suscité par la publication des variantes CBC authentifiables et parallélisables (IAPM)[7] de Charanjit Jutla (voir OCB et chronologie[8] ).
Six modes de chiffrement authentifié différents ont été définis par la norme ISO/IEC 19772:2009, à savoir les mode OCB (Offset Code Book), Key Wrap, CCM (Counter with CBC-MAC), EAX, EtM (Encrypt-then-MAC), et GCM (Galois/Counter Mode) ont été normalisés dans la norme ISO/IEC 19772:2009[9]. Des méthodes de chiffrement authentifié supplémentaires ont été développées en réponse à la demande du NIST[10]. Les fonctions éponges peuvent être utilisées en mode duplex pour fournir un chiffrement authentifié[11].
Bellare et Namprempre (2000) ont analysé trois méthodes d'assemblage de chiffrement et de MAC, et ont démontré que le chiffrement d'un message suivi de l'application d'un MAC au texte chiffré (l'approche Encrypt-then-MAC) fournit la résistance à une attaque interactive à texte chiffré choisi, à condition que les deux fonctions sous-jacentes répondent à certains de prérequis. Katz et Yung ont étudié cette notion sous le nom de « chiffrement infalsifiable » et ont prouvé qu'elle impliquait une sécurité contre les attaques à texte chiffré choisi[12].
En 2013, le concours CAESAR a été ouvert pour encourager la conception de nouveaux modes de chiffrement authentifié[13].
En 2015, ChaCha20-Poly1305 est ajouté, comme alternative au mode GCM, dans la liste des constructions recommandées l'IETF.
Variantes
Chiffrement authentifié avec données associées
Le chiffrement authentifié avec données associées (Authenticated Encryption with Associated Data, ou AEAD) est une variante de chiffrement authentifié qui permet d'ajouter au message confidentiel des « données associées » non confidentielles mais dont l'authenticité est importante. Le destinataire peut simultanément vérifier l’intégrité du message confidentiel et de ses données associées. l'AEAD est utile, par exemple, dans les paquets réseau, dont l'en-tête doit être en accessible en clair pour le routage, mais le contenu doit être confidentiel, les deux nécessitant intégrité et authenticité . La notion d'AEAD a été formalisée par Rogaway (2002). [3]
AEAD avec engagement sur clé
Le mode AE a été conçu à l'origine principalement pour assurer l'intégrité du texte chiffré : la validation réussie d'un code d'authentification par Alice à l'aide de sa clé symétrique K A indique que le message n'a pas été falsifié par un adversaire Mallory qui ne possède pas la K A. Les schémas AE ne fournissent généralement pas l' engagement envers une clé, une garantie que le déchiffrement échouerait pour toute autre clé. [14] En 2021, la plupart des schémas AE existants (y compris le très populaire GCM) permettent l'authentification sans erreur d'un message généré avec une clé K A (correcte) lorsqu'il est déchiffré avec une deuxième clé K M (erronée), c'est-à-dire que le contenu du texte clair déchiffré sera incorrect, mais le code d'authentification sera considéré valable[15]. Étant donné que l’élaboration d’un message avec une telle propriété nécessite que Mallory possède déjà les clés K A et K M, la question pourrait sembler être d’un intérêt purement académique. [16] Toutefois, dans des circonstances particulières, cette propriété débouche sur des attaques pratiques. Par exemple, si un protocole d'authentification d'identité utilise comme preuve d'identité la génération d'un message chiffré avec une clé dérivée d'un mot de passe, la capacité de créer un message passant la vérification d'authenticité pour un grand nombre de clés différentes permet d'accélérer considérablement une attaque en ligne, dans le cas ou le système d'authentification est utilisable comme un oracle . Naturellement, cette attaque est irréalisable en pratique si les clés sont générées aléatoirement (au lieu d'être dérivées d'un mot de passe)[17].
L'engagement sur clé a été initialement étudié dans les années 2010 par Abdalla et al. [18] et Farshim et al. [19], sous le nom de « chiffrement robuste ». [16],[20]
Pour neutraliser l'attaque décrite ci-dessus lorsqu'il n'est pas possible d'éliminer l'oracle, il est possible d'utiliser un chiffrement AEAD à engagement sur clé qui interdit l'existence de tels messages (passant la vérification d'intégrité avec succès pour plusieurs clés différentes). AEGIS est un exemple de construction AEAD rapide (si le jeu d'instructions AES est présent) et offrant l'engagement envers une clé[21]. Il est possible d'ajouter l'engagement sur clé à un schéma AEAD existant[22].



