Un chiffrement par blocs utilise des blocs comme transformation invariable. Même un chiffrement par blocs sécurisé ne convient qu'au chiffrement d'un seul bloc de données à la fois, à l'aide d'une clé fixe. De nombreux modes de fonctionnement ont été conçus pour permettre leur utilisation répétée et sécurisée, afin d'atteindre les autres objectifs de sécurité que sont la confidentialité et l'authenticité . Cependant, les chiffrements par blocs peuvent également servir de composants de base dans d'autres protocoles cryptographiques, tels que les fonctions de hachage universelles et les générateurs de nombres pseudo-aléatoires .
Un chiffrement par blocs est composé de deux algorithmes appariés : un de chiffrement, E , et un algorithme de déchiffrement, D. [ Ces deux algorithmes acceptent deux entrées : un bloc d’entrée de taille n bits et une clé de taille k bits ; ils produisent tous deux un bloc de sortie de n bits. L’algorithme de déchiffrement D est défini comme la fonction inverse de l’algorithme de chiffrement, soit
Histoire
La conception moderne des chiffrements par blocs repose sur le concept de chiffrement par produit itéré . Dans son ouvrage fondateur de 1949, *Communication Theory of Secrecy Systems* , Claude Shannon a analysé les chiffrements par produit et les a proposés comme un moyen d'améliorer efficacement la sécurité en combinant des opérations simples telles que les substitutions et les permutations . Les chiffrements par produit itéré effectuent le chiffrement en plusieurs tours , chacun utilisant une sous-clé différente dérivée de la clé originale. Une implémentation répandue de ces chiffrements, appelée réseau de Feistel en hommage à Horst Feistel, est notamment utilisée dans le chiffrement DES . De nombreuses autres implémentations de chiffrements par blocs, comme l' AES , sont classées comme des réseaux de substitution-permutation .
L'origine de tous les formats de blocs cryptographiques utilisés dans la norme de sécurité des données de l'industrie des cartes de paiement (PCI DSS) et les normes de l'American National Standards Institute (ANSI) réside dans le bloc de clés Atalla (AKB), une innovation majeure de l' Atalla Box , le premier module de sécurité matériel (HSM). Développé en 1972 par Mohamed M. Atalla , fondateur d' Atalla Corporation (aujourd'hui Utimaco Atalla ), l'AKB a été commercialisé en 1973. Ce bloc de clés est indispensable à l'échange sécurisé de clés symétriques ou de codes PIN avec d'autres acteurs du secteur bancaire . Cet échange sécurisé s'effectue grâce au format AKB. En 1998, l'Atalla Box protégeait plus de 90 % des réseaux de distributeurs automatiques de billets (DAB ) en service, et, en 2014, les produits Atalla sécurissaient encore la majorité des transactions effectuées par DAB dans le monde.
La publication du chiffrement DES par le Bureau national des normes des États-Unis (devenu par la suite l' Institut national des normes et de la technologie des États-Unis , NIST) en 1977 a été fondamentale pour la compréhension publique de la conception des chiffrements par blocs modernes. Elle a également influencé le développement académique des attaques cryptanalytiques . La cryptanalyse différentielle et la cryptanalyse linéaire sont toutes deux issues des études sur la conception du DES. aux attaques par force brute .
Conception
Chiffrements par blocs itérés
La plupart des algorithmes de chiffrement par blocs sont classés comme des chiffrements par blocs itérés, ce qui signifie qu'ils transforment des blocs de texte clair de taille fixe en blocs de texte chiffré de taille identique , via l'application répétée d'une transformation inversible connue sous le nom de fonction de tour , chaque itération étant appelée tour .
Habituellement, la fonction de tour R prend différentes clés de tour K i comme deuxième entrée, qui est dérivée de la clé d'origine :
où se trouve le texte clair et le texte chiffré, r étant le nombre de tours.
Le blanchiment de clés est souvent utilisé en complément. Au début et à la fin, les données sont modifiées à l'aide de matériel clé (souvent par XOR ).
Étant donné l'un des schémas de chiffrement par blocs itératifs standard, il est relativement aisé de construire un chiffrement cryptographiquement sûr en utilisant simplement un grand nombre de tours. Cependant, cela rendra le chiffrement inefficace. L'efficacité est donc le critère de conception supplémentaire le plus important pour les chiffrements professionnels. De plus, un bon chiffrement par blocs est conçu pour éviter les attaques par canaux auxiliaires, telles que la prédiction de branchement et les accès mémoire dépendants des entrées, qui pourraient divulguer des données secrètes via l'état du cache ou le temps d'exécution. Enfin, le chiffrement doit être concis, pour des implémentations matérielles et logicielles de petite taille.
Réseaux de substitution-permutation

Une boîte de substitution (S-box) remplace un petit bloc de bits d'entrée par un autre bloc de bits de sortie. Cette substitution doit être biunivoque pour garantir l'inversibilité (et donc le déchiffrement). Une S-box sécurisée possède la propriété suivante : modifier un seul bit d'entrée modifie en moyenne environ la moitié des bits de sortie, ce qui illustre l' effet d'avalanche — autrement dit, chaque bit de sortie dépend de chaque bit d'entrée.
Une boîte de permutation (P-box) est une permutation de tous les bits : elle prend les sorties de toutes les S-boxes d’un tour, permute les bits et les injecte dans les S-boxes du tour suivant. Une bonne P-box a la propriété que les bits de sortie de chaque S-box sont distribués au plus grand nombre possible d’entrées de S-boxes.
À chaque tour, la clé du tour (obtenue à partir de la clé avec quelques opérations simples, par exemple en utilisant des boîtes S et des boîtes P) est combinée à l'aide d'une opération de groupe, généralement XOR .Le décryptage s'effectue simplement en inversant le processus (en utilisant les inverses des boîtes S et des boîtes P et en appliquant les clés de tour dans l'ordre inverse).
Chiffres de Feistel

Soit la fonction de tour et soient les sous-clés des tours respectivement.
L'opération de base est alors la suivante :
Divisez le bloc de texte brut en deux parties égales, ( , )
Pour chaque tour , calculer
Le texte chiffré est alors :
Le déchiffrement d'un texte chiffré s'effectue en calculant pour
Voici à nouveau le texte brut.
L'un des avantages du modèle de Feistel par rapport à un réseau de substitution-permutation est que la fonction de tour n'a pas besoin d'être inversible.
Chiffres de Lai-Massey

Opérations
ARX (addition–rotation–XOR)
De nombreux algorithmes de chiffrement par blocs et de hachage modernes sont des algorithmes ARX ; leur fonction de tour ne comporte que trois opérations : (A) l’addition modulaire, (R) la rotation avec des valeurs de rotation fixes et (X) l’opération XOR . On peut citer comme exemples ChaCha20 , Speck , XXTEA et BLAKE . De nombreux auteurs utilisent un réseau ARX, une sorte de diagramme de flux de données , pour illustrer une telle fonction de tour.
Ces opérations ARX sont populaires car elles sont relativement rapides et peu coûteuses en termes de matériel et de logiciel, leur implémentation peut être extrêmement simple, et elles s'exécutent en temps constant, ce qui les rend insensibles aux attaques temporelles . La technique de cryptanalyse rotationnelle vise à attaquer ces fonctions de tour.
Autres opérations
D'autres opérations souvent utilisées dans les chiffrements par blocs incluent les rotations dépendantes des données comme dans RC5 et RC6 , une boîte de substitution implémentée sous forme de table de consultation comme dans Data Encryption Standard et Advanced Encryption Standard , une boîte de permutation et la multiplication comme dans IDEA .
Modes de fonctionnement
Un chiffrement par blocs ne permet, à lui seul, que le chiffrement d'un seul bloc de données de la longueur de bloc du chiffrement. Pour un message de longueur variable, les données doivent d'abord être partitionnées en blocs de chiffrement distincts. Dans le cas le plus simple, appelé mode ECB ( Electronic Codebook ), un message est d'abord divisé en blocs distincts de la taille de bloc du chiffrement (le dernier bloc pouvant être complété par des bits de remplissage ), puis chaque bloc est chiffré et déchiffré indépendamment. Cependant, cette méthode naïve est généralement vulnérable car des blocs de texte clair égaux généreront toujours des blocs de texte chiffré égaux (pour une même clé), ce qui rend les motifs présents dans le message clair évidents dans le texte chiffré.
Pour pallier cette limitation, plusieurs modes de fonctionnement dits de chiffrement par blocs ont été conçus et spécifiés dans des recommandations nationales telles que NIST 800-38A et BSI TR-02102 , ainsi que dans des normes internationales comme ISO/IEC 10116 . Le principe général consiste à randomiser les données en clair à l'aide d'une valeur d'entrée supplémentaire, souvent appelée vecteur d'initialisation , afin de créer un chiffrement probabiliste . Dans le mode CBC ( Cipher Block Chaining ), très répandu, pour que le chiffrement soit sûr , le vecteur d'initialisation transmis avec le message en clair doit être une valeur aléatoire ou pseudo-aléatoire . Cette valeur est ajoutée par un OU exclusif au premier bloc de texte clair avant son chiffrement. Le bloc chiffré résultant sert ensuite de nouveau vecteur d'initialisation pour le bloc de texte clair suivant. En mode de retour de chiffrement (CFB), qui émule un chiffrement de flux auto-synchronisé , le vecteur d'initialisation est d'abord chiffré puis ajouté au bloc de texte clair. Le mode de retour de sortie (OFB) chiffre de manière itérative le vecteur d'initialisation afin de créer un flux de clés pour l'émulation d'un chiffrement de flux synchrone . Le mode de compteur (CTR), plus récent, crée également un flux de clés, mais présente l'avantage de n'exiger que des valeurs uniques et non (pseudo-)aléatoires comme vecteurs d'initialisation ; l'aléatoire nécessaire est généré en interne en utilisant le vecteur d'initialisation comme compteur de blocs et en chiffrant ce compteur pour chaque bloc.
Du point de vue de la théorie de la sécurité , les modes de fonctionnement doivent garantir la sécurité sémantique . En termes simples, cela signifie que, étant donné un texte chiffré avec une clé inconnue, il est pratiquement impossible d'en déduire des informations supplémentaires (hormis la longueur du message) par rapport à ce que l'on saurait sans avoir vu le texte chiffré. Il a été démontré que tous les modes mentionnés précédemment, à l'exception du mode ECB, garantissent cette propriété face aux attaques à texte clair choisi .
Rembourrage
Cryptanalyse
- Accès uniquement aux textes chiffrés : le cryptanalyste n’a accès qu’à une collection de textes chiffrés ou de codes .
- Texte clair connu : l’attaquant dispose d’un ensemble de textes chiffrés dont il connaît le texte clair correspondant .
- Texte clair choisi ( texte chiffré choisi ) : l'attaquant peut obtenir les textes chiffrés (textes clairs) correspondant à un ensemble arbitraire de textes clairs (textes chiffrés) de son choix.
- Attaque à texte clair choisi adaptative : semblable à une attaque à texte clair choisi, sauf que l'attaquant peut choisir les textes clairs suivants en fonction des informations apprises à partir des chiffrements précédents, de la même manière que l' attaque à texte chiffré choisi adaptative .
- Attaque par clés apparentées : Similaire à une attaque à texte clair choisi, à la différence que l’attaquant peut obtenir des textes chiffrés avec deux clés différentes. Les clés sont inconnues, mais leur relation est connue ; par exemple, deux clés qui diffèrent par un seul bit.
Attaques par force brute
Cryptanalyse différentielle
La découverte est attribuée à Mitsuru Matsui , qui a appliqué pour la première fois la technique au chiffrement FEAL (Matsui et Yamagishi, 1992).
Cryptanalyse intégrale
Outre la cryptanalyse linéaire et différentielle, un catalogue croissant d'attaques existe : la cryptanalyse différentielle tronquée , la cryptanalyse différentielle partielle, la cryptanalyse intégrale (qui englobe les attaques carrées et intégrales), les attaques par glissement , les attaques boomerang , l' attaque XSL , la cryptanalyse différentielle impossible et les attaques algébriques. Pour qu'un nouveau chiffrement par blocs soit crédible, il doit démontrer sa sécurité face aux attaques connues.
Sécurité prouvable
Lorsqu'un chiffrement par blocs est utilisé dans un mode de fonctionnement donné , l'algorithme résultant devrait idéalement être aussi sûr que le chiffrement par blocs lui-même. Le mode ECB (décrit précédemment) est clairement dépourvu de cette propriété : quelle que soit la sécurité du chiffrement par blocs sous-jacent, le mode ECB est facilement vulnérable aux attaques. En revanche, le mode CBC peut être considéré comme sûr si le chiffrement par blocs sous-jacent l'est également. Il convient toutefois de noter que de telles affirmations nécessitent des définitions mathématiques formelles de ce que signifie la « sécurité » pour un algorithme de chiffrement ou un chiffrement par blocs. Cette section décrit deux notions courantes relatives aux propriétés que devrait posséder un chiffrement par blocs. Chacune correspond à un modèle mathématique permettant de démontrer les propriétés d'algorithmes de plus haut niveau, tels que le CBC.
Cette approche générale de la cryptographie – qui consiste à prouver que les algorithmes de niveau supérieur (tels que CBC) sont sûrs sous des hypothèses explicitement énoncées concernant leurs composants (tels qu'un chiffrement par bloc) – est connue sous le nom de sécurité prouvable .
Modèle standard
Il est à noter qu'un adversaire peut facilement s'assurer 50 % de chances de gagner en choisissant au hasard (ou même, par exemple, en choisissant systématiquement « pile »). Soit donc P <sub>E</sub> ( A ) la probabilité que l'adversaire A gagne contre E , et définissons son avantage comme 2( P <sub>E </sub> ( A ) − 1/2). Il s'ensuit que si A choisit au hasard, son avantage est nul ; en revanche, si A gagne systématiquement, son avantage est de 1. Le chiffrement par blocs E est une permutation pseudo-aléatoire (PRP) si aucun adversaire ne dispose d'un avantage significativement supérieur à 0, compte tenu des restrictions spécifiées sur q et le temps d'exécution de l'adversaire. Si, à l'étape 2 ci-dessus, les adversaires ont la possibilité d'apprendre f <sup>−1</sup> ( X ) au lieu de f ( X ) (tout en conservant un faible avantage), alors E est une PRP forte (SPRP). Un adversaire est non adaptatif s'il choisit toutes les valeurs q pour X avant le début de la partie (c'est-à-dire qu'il n'utilise aucune information recueillie lors des requêtes précédentes pour choisir chaque X au fur et à mesure).
Ces définitions se sont avérées utiles pour analyser différents modes de fonctionnement. Par exemple, on peut définir un jeu similaire pour mesurer la sécurité d'un algorithme de chiffrement par blocs, puis tenter de démontrer (par un raisonnement par réduction ) que la probabilité qu'un adversaire gagne ce nouveau jeu n'est guère supérieure à P <sub>E</sub> ( A ) pour certaines valeurs de A. (La réduction fournit généralement des limites sur q et le temps d'exécution de A. ) De manière équivalente, si P <sub>E</sub> ( A ) est faible pour toutes les valeurs pertinentes de A , alors aucun attaquant n'a une probabilité significative de gagner ce nouveau jeu. Ceci formalise l'idée que l'algorithme de niveau supérieur hérite de la sécurité du chiffrement par blocs.
Modèle de chiffrement idéal
Chiffrements par blocs notables
Lucifer / DES
IDÉE
L' algorithme de chiffrement international des données ( IDEA ) est un chiffrement par blocs conçu par James Massey de l'ETH Zurich et Xuejia Lai ; il a été décrit pour la première fois en 1991, comme un remplaçant prévu pour le DES.
IDEA fonctionne par blocs de 64 bits avec une clé de 128 bits et consiste en une série de huit transformations identiques (un tour ) et une transformation de sortie (le demi-tour ). Les processus de chiffrement et de déchiffrement sont similaires. La sécurité d'IDEA repose en grande partie sur l'entrelacement d'opérations appartenant à différents groupes – addition et multiplication modulaires , et OU exclusif (XOR) bit à bit – qui sont algébriquement « incompatibles » d'une certaine manière.
Les concepteurs ont analysé IDEA afin d'évaluer sa robustesse face à la cryptanalyse différentielle et ont conclu à son immunité sous certaines hypothèses. Aucune vulnérabilité linéaire ou algébrique avérée n'a été signalée.
Une caractéristique essentielle de RC5 est l'utilisation de rotations dépendantes des données ; l'un des objectifs de RC5 était d'encourager l'étude et l'évaluation de telles opérations en tant que primitive cryptographique. RC5 comprend également plusieurs additions modulaires et des XOR. La structure générale de l'algorithme est un réseau de type Feistel . Les routines de chiffrement et de déchiffrement peuvent être spécifiées en quelques lignes de code. Le processus de génération de clés, en revanche, est plus complexe, la clé étant développée à l'aide d'une fonction à sens unique , les développements binaires de e et du nombre d'or servant de sources de nombres non identifiables . La simplicité séduisante de l'algorithme, combinée à la nouveauté des rotations dépendantes des données, a fait de RC5 un objet d'étude privilégié pour les cryptanalystes.
Le RC5 à 12 tours (avec des blocs de 64 bits) est vulnérable à une attaque différentielle utilisant 2⁴⁴ textes clairs choisis. 18 à 20 tours sont suggérés comme protection suffisante.
Rijndael / AES
Adopté par le NIST en 2001, l'AES utilise une taille de bloc fixe de 128 bits et une taille de clé de 128, 192 ou 256 bits, tandis que le Rijndael peut être spécifié avec des tailles de bloc et de clé multiples de 32 bits, avec un minimum de 128 bits. La taille de bloc est limitée à 256 bits, mais la taille de clé n'a pas de limite maximale théorique. L'AES opère sur une matrice d'octets 4×4 en ordre colonne-major , appelée état (les versions du Rijndael avec une taille de bloc plus importante possèdent des colonnes supplémentaires dans l'état).
Poisson-globe
Conçu comme un algorithme à usage général, Blowfish se voulait une alternative au DES, désormais obsolète, et s'affranchissait des problèmes et contraintes associés à d'autres algorithmes. À l'époque de sa sortie, de nombreuses autres conceptions étaient propriétaires, protégées par des brevets ou relevaient du secret commercial ou gouvernemental. Schneier a déclaré : « Blowfish n'est pas breveté et le restera dans tous les pays. L'algorithme est donc placé dans le domaine public et peut être librement utilisé par tous. » Il en va de même pour Twofish , un algorithme qui lui a succédé.
Chiffrements par blocs nationaux supplémentaires
Il existe plusieurs chiffrements par blocs qui ne sont généralement utilisés que dans certaines localités ou juridictions ; parmi les plus connus, on peut citer :
- SM4 — Chine
- Kuznyechik (GOST R 34.12-2015) — Russie
- GOST 28147-89 — Union soviétique / Russie (obsolète)
- ARIA — Corée du Sud
- SEED — Corée du Sud
- Camélia — Japon, également utilisé dans une certaine mesure à l'international.
- Kalyna — Ukraine
Généralisations
Chiffrements par blocs ajustables
Chiffrement préservant le format
Relation avec d'autres primitives cryptographiques
Les chiffrements par blocs peuvent servir à construire d'autres primitives cryptographiques, comme celles présentées ci-dessous. Pour que ces primitives soient cryptographiquement sûres, il est essentiel de les construire correctement.
- Les chiffrements de flux peuvent être construits à partir de chiffrements par blocs. Les modes OFB et CTR sont des modes de chiffrement par blocs qui transforment un chiffrement par blocs en un chiffrement de flux.
- Les fonctions de hachage cryptographiques peuvent être construites à l'aide de chiffrements par blocs. Voir la fonction de compression unidirectionnelle pour la description de plusieurs de ces méthodes. Ces méthodes ressemblent aux modes de fonctionnement des chiffrements par blocs généralement utilisés pour le chiffrement.
- Des générateurs de nombres pseudo-aléatoires cryptographiquement sûrs (CSPRNG) peuvent être construits à l'aide de chiffrements par blocs.
- Des permutations pseudo-aléatoires sécurisées d'ensembles finis de taille arbitraire peuvent être construites avec des chiffrements par blocs ; voir Chiffrement préservant le format .
- Une permutation imprévisible connue publiquement , combinée à un blanchiment de clé, suffit à construire un chiffrement par blocs – tel que le chiffrement Even-Mansour à clé unique , peut-être le chiffrement par blocs prouvablement sûr le plus simple possible.
- Les codes d'authentification de message (MAC) sont souvent construits à partir de chiffrements par blocs. CBC-MAC , OMAC et PMAC sont des exemples de MAC.
- Le chiffrement authentifié repose également sur des chiffrements par blocs. Il consiste à chiffrer et à authentifier simultanément les données, assurant ainsi confidentialité et authentification . CCM , EAX , GCM et OCB sont des exemples de modes de chiffrement authentifié.
De même que les chiffrements par blocs peuvent servir à construire des fonctions de hachage (par exemple, SHA-1 et SHA-2 sont basés sur des chiffrements par blocs et peuvent également être utilisés indépendamment sous le nom de SHACAL) , les fonctions de hachage peuvent servir à construire des chiffrements par blocs. BEAR et LION sont des exemples de tels chiffrements par blocs .