Chiffrement par bloc
Le chiffrement par bloc (en anglais block cipher) est une des deux grandes catégories de chiffrements modernes en cryptographie symétrique, l'autre étant le chiffrement par flot. La principale différence vient du découpage des données en blocs de taille généralement fixe. La taille de bloc est comprise entre 32 et 512 bits. Dans le milieu des années 1990, le standard était de 64 bits. Depuis 2000 et le concours AES, le standard est de 128 bits. Les blocs sont ensuite chiffrés les uns aprÚs les autres. Il est possible de transformer un chiffrement de bloc en un chiffrement par flot en utilisant un mode d'opération comme CTR (des blocs formant un compteur sont chiffrés pour former une séquence pseudo-aléatoire) ou CFB (on chaßne le chiffrement en effectuant un XOR entre les résultats successifs).
Une liste non exhaustive de chiffrement par bloc :
- Data Encryption Standard (DES), l'ancĂȘtre conçu dans les annĂ©es 1970
- Advanced Encryption Standard (AES), ou algorithme Rijndael (terme construit à partir d'une partie du nom de chacun de ses créateurs belges, Vincent Rijmen et Joan Daemen)
- Blowfish, Serpent et Twofish, sont des alternatives Ă AES
En 1997, la sécurité du DES n'était plus garantie face à une recherche exhaustive de la clé désormais envisageable et le chiffrement Triple DES était jugé trop lent. C'est alors que le National Institute of Standard and Technology (NIST) américain - une agence du département du commerce des Etats-Unis - lanca un processus de standardisatin appelé Advanced Encryption Standard process pour concevoir un nouvel algorithme de chiffrement par bloc. Pas moins de 16 équipes de cryptologues du monde entier y participÚrent. En 2000, c'est l'équipe belge qui l'emporta et vit son algorithme remplacer le DES[1]. La version de Rijndael standardisée par le NIST, appelé chiffrement AES, est un chiffrement par bloc de 128 bits de type réseau de substitutions-permutations utilisant des clés de 128, 192 ou 256 bits.[2]
Il y en a encore bien d'autres qui sont adaptĂ©s Ă des besoins particuliers. Certains consomment plus de mĂ©moire ou sont plus gourmands en puissance de calcul. Un chiffrement par bloc peut Ă©galement ĂȘtre utilisĂ© comme une fonction de hachage, c'est-Ă -dire une fonction Ă sens unique. Une variante de DES est employĂ©e pour le systĂšme de mots de passe dans Unix. Une chaĂźne contenant uniquement des zĂ©ros est chiffrĂ©e avec une clĂ© correspondant au mot de passe (une composante alĂ©atoire appelĂ©e "sel" est encore intĂ©grĂ©e Ă l'algorithme). Ce chiffrement est itĂ©ratif et se fait 25 fois avant d'obtenir le rĂ©sultat final.
DĂ©finition
Un chiffrement par blocs se compose de deux algorithmes appariés, l'un pour le chiffrement, , et l'autre pour le déchiffrement, [3]. Les deux algorithmes acceptent deux entrées : un bloc d'entrée de taille bits et une clé de taille bits ; et tous deux donnent un bloc de sortie de bits. L'algorithme de décryptage est défini comme étant la fonction inverse du cryptage, c'est-à -dire = -1. Plus formellement, un chiffrement par bloc est spécifié par une fonction de chiffrement
qui prend en entrĂ©e une clĂ© de longueur binaire Ăchec de lâanalyse (SVG (MathML peut ĂȘtre activĂ© via une extension du navigateur)âŻ: rĂ©ponse non valide(«âŻMath extension cannot connect to Restbase.âŻÂ») du serveur «âŻhttp://localhost:6011/fr.wikipedia.org/v1/âŻÂ»âŻ:): k , appelĂ©e taille de la clĂ©, et une chaĂźne de bits de longueur , appelĂ©e "taille du bloc", et renvoie une chaĂźne de bits . est appelĂ©e texte en clair, et est appelĂ©e texte chiffrĂ©. Pour chaque , la fonction () doit ĂȘtre une cartographie inversible sur {0,1}. L'inverse pour est dĂ©fini comme une fonction
en prenant une clé et un texte chiffré pour renvoyer une valeur en clair , de sorte que
Par exemple, un algorithme de chiffrement par bloc peut prendre un bloc de 128 bits de texte en clair comme entrée, et produire un bloc de 128 bits de texte chiffré correspondant. La transformation exacte est contrÎlée à l'aide d'une deuxiÚme entrée - la clé secrÚte. Le décryptage est similaire : l'algorithme de décryptage prend, dans cet exemple, un bloc de 128 bits de texte chiffré avec la clé secrÚte, et donne le bloc de 128 bits de texte en clair d'origine[4].
Pour chaque clé K, EK est une permutation bijective sur l'ensemble des blocs d'entrée. Chaque touche sélectionne une permutation dans l'ensemble des permutations possibles.[5]
Histoire
La conception moderne des chiffrements par blocs est basée sur le concept d'un chiffrement de produit itéré. Dans sa publication phare de 1949, Communication Theory of Secrecy Systems, Claude Shannon a analysé les chiffrements de produits et les a suggérés comme moyen d'améliorer efficacement la sécurité en combinant des opérations simples telles que les substitutions et les permutations. [6] Les chiffrements de produits itérés effectuent un chiffrement en plusieurs cycles, chacun utilisant une sous-clé différente dérivée de la clé d'origine. Une implémentation généralisée de tels chiffrements, nommée réseau Feistel d'aprÚs Horst Feistel, est notamment implémentée dans le chiffrement DES. De nombreuses autres réalisations de chiffrements par blocs, telles que l'AES, sont classées comme réseaux de substitution-permutation[7]. Beaucoup d'autres réalisations de chiffrements par blocs telles que l'AES, sont classées comme réseau de substitution-permutation.[8]
La racine de tous les formats de blocs cryptographiques utilisés dans les normes PCI DSS (Norme de sécurité de l'industrie des cartes de paiement) et ANSI (American National Standards Institute) réside dans le bloc de clé Atalla (AKB), qui était une innovation clé de l'Atalla Box, le premier HSM (Hardware Security Module en anglais, ou, module de sécurité matériel). Il a été développé en 1972 par Mohamed M. Atalla, fondateur d'Atalla Corporation (maintenant Utimaco Atalla), et publié en 1973. L'AKB était un bloc de clés, qui est nécessaire pour échanger en toute sécurité des clés symétriques ou des codes PIN avec d'autres acteurs du secteur bancaire. Cet échange sécurisé est effectué au format AKB[9] .L'Atalla Box protégeait plus de 90 % de tous les réseaux de distributeurs automatiques de billets en service en 1998[10],et les produits Atalla sécurisaient toujours la majorité des transactions de guichets automatiques dans le monde en 2014[11].
La publication du chiffrement DES par le United States National Bureau of Standards (devenu par la suite le National Institute of Standards and Technology, NIST) en 1977 a Ă©tĂ© fondamentale dans la comprĂ©hension publique de la conception moderne du chiffrement par blocs. Il a Ă©galement influencĂ© le dĂ©veloppement acadĂ©mique des attaques cryptanalytiques. La cryptanalyse diffĂ©rentielle et linĂ©aire est nĂ©e d'Ă©tudes sur la conception du DES. Depuis 2016, il existe une palette de techniques d'attaque contre lesquelles un chiffrement par bloc doit ĂȘtre sĂ©curisĂ©, en plus d'ĂȘtre robuste contre l'attaque par force brute.
Mode d'opération
Un chiffrement par bloc par lui-mĂȘme ne permet le chiffrement que 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, l' Electronic Code Book (ECB), ou chiffrement Ă dictionnaire de codes, un message est d'abord divisĂ© en blocs distincts de la taille du bloc du chiffrement (Ă©ventuellement en Ă©tendant le dernier bloc avec des bits de remplissage ou padding en anglais), puis chaque bloc est chiffrĂ© et dĂ©chiffrĂ© indĂ©pendamment. Cependant, une mĂ©thode aussi naĂŻve n'est gĂ©nĂ©ralement pas sĂ»re car des blocs de texte en clair Ă©gaux gĂ©nĂ©reront toujours des blocs de texte chiffrĂ© Ă©gaux (pour la mĂȘme clĂ©), de sorte que les modĂšles dans le message en texte clair deviennent Ă©vidents dans la sortie de texte chiffrĂ©.[12]
Pour surmonter cette limitation, plusieurs modes de fonctionnement dits de chiffrement par blocs ont été conçus[13][14] et spécifiés dans des recommandations nationales telles que NIST 800-38A[15] et BSI TR-02102[16] et des normes internationales telles que ISO/IEC 10116[17]. Le concept général est d'utiliser la randomisation des données en texte clair basée sur une valeur d'entrée supplémentaire, souvent appelée vecteur d'initialisation, pour créer ce que l'on appelle un chiffrement probabiliste.[18]
Dans le mode populaire de Cipher Block Chaining (CBC), ou chiffrement Ă enchaĂźnement des blocs, pour que le chiffrement soit sĂ©curisĂ©, le vecteur d'initialisation transmis avec le message en texte clair doit ĂȘtre une valeur alĂ©atoire ou pseudo-alĂ©atoire, qui est ajoutĂ©e Ă l'aide d'un OU exclusif au premier bloc de texte clair avant d'ĂȘtre chiffrĂ©. Le bloc de texte chiffrĂ© rĂ©sultant est ensuite utilisĂ© comme nouveau vecteur d'initialisation pour le bloc de texte clair suivant.
Dans le mode Cipher Feedback Block (CFB), ou chiffrement à rétroaction, le vecteur d'initialisation est d'abord chiffré, puis ajouté au bloc de texte clair.
Dans le mode Output Feedback Block (OFB), ou chiffrement à rétroaction de sortie, on chiffre à plusieurs reprises le vecteur d'initialisation pour créer un flux de clés pour l'émulation d'un chiffrement de flux synchrone.
Dans le mode CounTeR (CTR), ou chiffrement basĂ© sur un compteur, on crĂ©e de la mĂȘme maniĂšre un flux de clĂ©s, qui a l'avantage de n'avoir besoin que de valeurs uniques et non (pseudo-)alĂ©atoires comme vecteurs d'initialisation. Le caractĂšre alĂ©atoire nĂ©cessaire est dĂ©rivĂ© en interne en utilisant le vecteur d'initialisation comme compteur de blocs et en chiffrant ce compteur pour chaque bloc[15].
Du point de vue de la thĂ©orie de la sĂ©curitĂ©, les modes d'opĂ©ration doivent fournir ce que l'on appelle la sĂ©curitĂ© sĂ©mantique.[19] De maniĂšre informelle, cela signifie qu'Ă©tant donnĂ© un texte chiffrĂ© sous une clĂ© inconnue, on ne peut pratiquement pas dĂ©river d'informations du texte chiffrĂ© (autre que la longueur du message) sur ce que l'on aurait su sans voir le texte chiffrĂ©. Il a Ă©tĂ© dĂ©montrĂ© que tous les modes discutĂ©s ci-dessus, Ă l'exception du mode Electronic Code Book (ECB), fournissent cette propriĂ©tĂ© dans le cadre d'attaques dites Ă textes clairs choisis : l'attaquant peut obtenir le chiffrement de textes clairs de son choix [20] ; autrement dit il peut toujours choisir un texte de son choix et le chiffrer lui-mĂȘme.
Notes et références
- « Cryptologie Art ou Science du secret », sur ANSSI - Agence nationale de la sécurité des systÚmes d'information, ANSSI, (consulté le )
- Vergnaud 2012, Exercices et problĂšmes de cryptographie - 3iĂšme Ă©dition, Chapitre 2, p. 41,67-68.
- Thomas W. Cusick et Pantelimon Stanica, Cryptographic Boolean functions and applications, Academic Press, , 158-159 p. (ISBN 9780123748904, lire en ligne)
- D. Chakraborty et F. Rodriguez-Henriquez, Cryptographic Engineering, Springer, (ISBN 9780387718163), « Block Cipher Modes of Operation from a Hardware Implementation Perspective », p. 321
- Menezes, van Oorschot et Vanstone 1996, section 7.2.
- Claude Shannon, « Communication Theory of Secrecy Systems », Bell System Technical Journal, vol. 28, no 4,â , p. 656â715 (DOI 10.1002/j.1538-7305.1949.tb00928.x, lire en ligne [archive du ], consultĂ© le )
- Encyclopedia of Cryptography and Security, Springer, (ISBN 978-1-4419-5905-8, lire en ligne), p. 455.
- van Tilborg et Jajodia 2011, p. 1268.
- Martin Rupp, « The Benefits of the Atalla Key Block » [archive du ], sur Utimaco, (consulté le )
- Walter Hamscher, « Electronic Business without Fear: The Tristrata Security Architecture » [archive du ], (CiteSeerx 10.1.1.123.2371)ModÚle:Self-published inline
- Richard Stiennon, « Key Management a Fast Growing Space », sur SecurityCurrent, IT-Harvest, (consulté le )
- Menezes, van Oorschot et Vanstone 1996, Chapter 7, p. 228â230.
- « Block Cipher Modes », NIST Computer Security Resource Center,
- Menezes, van Oorschot et Vanstone 1996, p. 228â233.
- Morris Dworkin, Recommendation for Block Cipher Modes of Operation â Methods and Techniques, National Institute of Standards and Technology (NIST), (DOI 10.6028/NIST.SP.800-38A, lire en ligne [archive du ])
- Kryptographische Verfahren: Empfehlungen und SchlĂŒssellĂ€ngen (Technische Richtlinie), , chap. Version 1.0
- « ISO/IEC 10116:2006 Information technology â Security techniques â Modes of operation for an n-bit block cipher »
- Bellare et Rogaway 2005, section 5.3, p. 101.
- Bellare et Rogaway 2005, section 5.6.
- Vergnaud 2012, Exercices et problĂšmes de cryptographie - 3iĂšme Ă©dition, Chapitre 2, p. 44.
Annexes
Articles connexes
Liens externes
(en) Bruce Schneier, « Self-Study Course in Block Cipher Cryptanalysis », traduction en français : Cours individuel de cryptanalyse