CRYPTOGRAPHIE SYMETRIQUE INTRODUCTION ET PRINCIPE Les systèmes de cryptage à clé privée, appelés aussi systèmes de cryptage symétrique ou cryptage conventionnel, sont utilisés depuis plusieurs siècles déjà. Cette partie de la cryptologie regroupe tous les moyens mis en œuvre pour crypter ou coder des données afin des les protéger du public et de les maintenir privées. Ce principe s’est largement démocratisé et n’importe qui aujourd’hui peut crypter ses données, ses e-mails pour s’assurer ou au moins se donner l’illusion de maintenir sa vie privée. Un des concepts fondamentaux de la cryptographie symétrique est la clé, qui est une information devant permettre de chiffrer et de déchiffrer un message et sur laquelle peut reposer toute la sécurité de la communication Un expéditeur et un destinataire souhaitant communiquer de manière sécurisée à l'aide du cryptage conventionnel doivent convenir d'une clé et ne pas la divulguer. Dans la majorité des systèmes de cryptage symétrique la clé de chiffrement et la clé de déchiffrement sont identiques. La cryptographie à clé symétrique peut se modéliser à l'aide des deux équations suivantes: C=E(k,M) M=D(k,C) M : MESSAGE K : La clé secrète E ET D : fonction de chiffrement et de déchiffrement du message A travers ce schéma , on comprend mieux le principe : On utilise souvent l’analogie du coffre-fort pour caractériser les systèmes cryptographiques à clé secrète, seul celui qui possède la clé peut ouvrir le coffre. Ce type de cryptage fonctionne suivant deux procédés différents : le cryptage par blocs et le cryptage par « Stream » (en continu). En pratique, on utilise principalement des chiffrements en continu lorsque la vitesse de traitement est essentielle (téléphonie, liaison entre unité centrale et périphériques) ; lorsque la sécurité domine, on emploie plutôt des systèmes par blocs. De manière plus détaillée, voici comment se déroule le processus : CHIFFREMENT 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 (souvent une puissance de deux comprise entre 32 et 512 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 ECB (chaque bloc chiffré indépendamment des autres) ou CFB (on chaîne le chiffrement en effectuant un xor (appelé aussi « ou exclusif ») entre les résultats successifs). Le mode ECB est le mode le plus simple ; le message M est découpé en blocs m(i) de taille fixe et chaque bloc est crypté séparément par : c(i)= Ek [ m(i) ] ainsi chaque bloc de message donné sera toujours codé de la même manière .Ce mode de chiffrement ne présente donc aucune sécurité et n ' est jamais utilisé . Le mode CBF utilise la fonction XOR pour le décalage des bits après le cryptage: c.i) = m(i) XOR Ek[ c(i-1) ] Ce mode est utilisé dans le cryptage des réseaux en général. L ' intérêt est que le déchiffrement ne nécessite pas les fonctions inverses. Concernant le chiffrement par blocs, chaque message M de n bits est découpé en s blocs de r= n/s bits (on ajuste la taille du message en ajoutant des caractères sans signification afin que sa taille soit un multiple de r ).Un algorithme de chiffrement par blocs opère sur des blocs de r bits pour produire en général un bloc de r bits afin d' assure la bijectivité du code. Une liste non-exhaustive de chiffrements par bloc : DES, l'ancêtre conçu dans les années 70, a été passablement étudié AES, le remplaçant de DES (voir ci-dessous) Blowfish et Twofish, des alternatives à AES (voir cidessous) 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. Un chiffrement peut être dit inconditionnellement sûr ou parfait dans le cas ou la connaissance du message chiffré n’apporte aucune information sur le message clair. Ainsi, la seule attaque possible sera la recherche de la clé secrète K. A l’heure actuelle, le seul chiffrement prouvé inconditionnellement sûr est celui de VERNAM qui utilise une clé K aussi longue que le texte clair, sous réserve que la clé secrète soit totalement aléatoire et utilisée qu' une seule fois . AUTHENTIFICATION Les protagonistes d’une communication doivent pouvoir détecter une usurpation d’identité. Par exemple Alice peut s’identifier à Bob en prouvant qu’elle connaît un secret S qu’elle est la seule à pouvoir connaître. SIGNATURE ELECTRONIQUE SYMETRIQUE Les signatures manuscrites ont longtemps été utilisées pour prouver l’identité de leur auteur ou du moins l’accord du signataire avec le contenu du document. Avec des documents numériques, il faut inventer des protocoles qui remplacent l’empreinte manuelle par un équivalent. Dans le cadre de signatures électroniques symétriques, on dispose d’un arbitre ou d’une clé secrète qui sera utilisée en mode CBC ou CFB. Ainsi une signature électronique devrait être : -authentique : elle convainc le destinataire que le signataire a délibérément signé un document ; -infalsifiable -non réutilisable : elle est attachée a un document donné et ne pourra pas être utilisé pour un autre document -inaltérable : toute modification du document doit être détectable -non reniable : le signataire ne peut répudier le document signé AVANTAGES ET INCONVENIENTS Le cryptage conventionnel (symétrique) comporte un avantage majeur : sa rapidité de calcul tant pour le chiffrement que pour le déchiffrement. Il est particulièrement adapté à la transmission de grandes quantités de données. Ce qui explique en partie la forte implémentation de ces derniers dans des puces électroniques pour les besoins des entreprises. Pourtant, le principe de l'échange préalable de la clé a amené à repenser la cryptographie et c'est ainsi que sont apparues les clés asymétriques. Ce système nécessite la connaissance de la clé par l'émetteur et par le destinataire. C'est la transmission de cette clé entre les intervenants qui représente la faiblesse inhérente au système. S'ils se trouvent à des emplacements géographiques différents, ils devront faire confiance à une tierce personne ou un moyen de communication sécurisé. Toute personne interceptant la clé lors d'un transfert peut ensuite lire, modifier et falsifier toutes les informations cryptées ou authentifiées avec cette clé. De la norme de cryptage de données DES (voir cidessous) au code secret de Jules César (voir historique), la distribution des clés reste le problème majeur du cryptage conventionnel. (Autrement dit, comment faire parvenir la clé à son destinataire sans qu'aucune personne ne l'intercepte ?) Les moyens à déployer pour garantir la distribution sécurisée des clés entre les correspondants sont très onéreux, ce qui constitue un inconvénient supplémentaire. EXEMPLE 1 D’ALGORITHME A CLE SYMETRIQUE : DES Le D.E.S. (Data Encryptions Standard, c’est-à-dire Standard de Chiffrement de Données) est un standard mondial depuis plus de 15 ans. Bien qu’il soit un peu vieillissant, il résiste toujours très bien à la cryptanalyse et reste un algorithme très sûr. Au début des années 70, le développement des communications entre ordinateurs a nécessité la mise en place d’un standard de chiffrement de données pour limiter la prolifération d’algorithmes différents ne pouvant pas communiquer entre eux. Pour résoudre ce problème, L’Agence Nationale de Sécurité américaine (N.S.A.) a lancé des appels d’offres. La société I.B.M. a développé alors un algorithme nommé Lucifer, relativement complexe et sophistiqué. Après quelques années de discussions et de modifications, cet algorithme, devenu alors D.E.S., fut adopté au niveau fédéral le 23 novembre 1976. Le D.E.S. est un système de chiffrement par blocs. Cela signifie que D.E.S. ne chiffre pas les données à la volée quand les caractères arrivent, mais il découpe virtuellement le texte clair en blocs de 64 bits qu’il code séparément, puis qu'il concatène. Un bloc de 64 bits du texte clair entre par un coté de l'algorithme et un bloc de 64 bits de texte chiffré sort de l'autre coté. L’algorithme est assez simple puisqu’il ne combine en fait que des permutations et des substitutions. On parle en cryptologie de techniques de confusion et de diffusion. Il s’agit d’un algorithme de cryptage à clef secrète. La clé du DES est une chaîne de 64 bits (succession de 0 et de 1), mais en fait seuls 56 bits servent réellement à définir la clé. Les bits 8, 16,24, 32, 40, 48, 56,64 sont des bits de parité (=bits de détection d'erreur). Le 8ème bit est fait en sorte que sur les 8 premiers bits, il y ait un nombre impair de 1. Par exemple, si les 7 premiers bits sont 1010001, le 8ème bit est 0. Ceci permet d'éviter les erreurs de transmission. Il y a donc pour le DES 256 clés possibles, soit environ ... 72 millions de milliards possibilités. Les grandes lignes de l'algorithme sont : Phase 1 : Préparation - Diversification de la clé. Le texte est découpé en blocs de 64 bits. On diversifie aussi la clé K, c'est-à-dire qu'on fabrique à partir de K 16 sous-clés K1,..., K16 à 48 bits. Les Ki sont composés de 48 bits de K, pris dans un certain ordre. Phase 2 : Permutation initiale. Pour chaque bloc de 64 bits x du texte, on calcule une permutation finie y=P(x). y est représenté sous la forme y=G0D0, G0 étant les 32 bits à gauche de y, D0 les 32 bits à droite. Phase 3 : Itération On applique 16 rondes d'une même fonction. A partir de Gi-1Di-1 (pour i de 1 à 16), on calcule GiDi en posant : o Gi=Di-1. o Di-1=Gi-1 XOR f(Di-1,Ki). XOR est le ou exclusif bit à bit, et f est une fonction de confusion, suite de substitutions et de permutations. Phase 4 : Permutation finale. On applique à G16D16 l'inverse de la permutation initiale. Z=P-1(G16D16) est le bloc de 64 bits chiffré à partir de x. Régulièrement, le DES a fait l'objet de polémiques. Toute sa sécurité repose sur la fonction de confusion f, et en particulier à l'intérieur de celle-ci sur des boîtes S, tableau 4x16 d'entiers compris entre 0 et 15, aux valeurs mystérieuses. Certains ont affirmé que la NSA, qui a finalisé l'algorithme, a placé dans ces boîtes S des trappes qui lui permettaient de tout décrypter, tout en affirmant que l'algorithme est sûr. Toutefois, rien n'a objectivement étayé cela. En particulier, le DES a toujours résisté aux travaux des cryptanalyses non basés sur la force brute. En revanche, ce qui a signé l'arrêt de mort du DES est l'extraordinaire progression de la puissance des ordinateurs. Le 17 juin 1997, le DES est cassé en 3 semaines par une fédération de petites machines sur Internet. Et on estime très officiellement (dans un rapport présenté au Sénat Américain) à cette date à quelques secondes le temps nécessaire à un Etat pour percer les secrets d'un message chiffré avec le DES. La solution a été dans un premier temps l'adoption du triple DES, trois applications de DES à la suite avec 2 clés différentes (d'où une clé de 112 bits) : Si le TDES (autre algorithme de cryptographie symétrique) est largement suffisant à l'heure actuelle, il est malheureusement trois fois plus lent que le DES. C'est pourquoi, en janvier 1997, le NIST (National Institute of Standards and Technologies) lance un nouvel appel pour créer un successeur au DES. Une nouvelle saga commence pour l'AES (Advanced Encryptions Standard). Le Gros avantage du DES est qu’ il repose tant pour le chiffrement que pour le déchiffrement sur des opérations facilement implantables au niveau matériel, il est donc possible d' obtenir des vitesses de chiffrement très élevées de l' ordre de 40Mo/s . Applications Le système DES est actuellement utilisé pour chiffrer les paiements par cartes de crédit, les protocoles d’authentification dans les réseaux et la messagerie électronique. EXEMPLE 2 D’ALGORITHME A CLE SYMETRIQUE : AES Avec le temps, et les progrès de l'informatique, les 256 clés possibles du DES n'ont plus représenté une barrière infranchissable. Il est désormais possible, même avec des moyens modestes, de percer les messages chiffrés par DES en un temps raisonnable. En janvier 1997, le NIST (National Institute of Standards and Technologies) des Etats-Unis lance un appel d'offres pour élaborer l'AES, Advanced Encryptions System. Le cahier des charges comportait les points suivants : évidemment, une grande sécurité. une large portabilité : l'algorithme devant remplacer le DES, il est destiné à servir aussi bien dans les cartes à puces, aux processeurs 8 bits peu puissants, que dans des processeurs spécialisés pour chiffrer des milliers de télécommunications à la volée. la rapidité. une lecture facile de l'algorithme, puisqu'il est destiné à être rendu public. techniquement, le chiffrement doit se faire par blocs de 128 bits, les clés comportant 128,192 ou 256 bits. Au 15 juin 1998, date de la fin des candidatures, 21 projets ont été déposés. Certains sont l'œuvre d'entreprises (IBM), d'autres regroupent des universitaires (CNRS), les derniers sont écrits par à peine quelques personnes. Pendant deux ans, les algorithmes ont été évalués par des experts, avec forum de discussion sur Internet, et organisation de conférences. Le 2 octobre 2000, le NIST donne sa réponse : c'est le Rijndael qui est choisi, un algorithme mis au point par 2 belges, Joan Daemen et Vincent Rijmen. Nous sommes donc, à la naissance de l’AES, qui n’est rien d’autre que l’algorithme de Rijndael. Le Rijndael (AES) procède par blocs de 128 bits, avec une clé de 128 bit également. Chaque bloc subit une séquence de 5 transformations répétées 10 fois : 1. Addition de la clé secrète (par un ou exclusif). 2. Transformation non linéaire d'octets : les 128 bits sont répartis en 16 blocs de 8 bits (8 bits=un octet), eux-mêmes dispatchés dans un tableau 4×4. Chaque octet est transformé par une fonction non linéaire S. 3. Décalage de lignes : les 3 dernières lignes sont décalées cycliquement vers la gauche : la 2ème ligne est décalée d'une colonne, la 3ème ligne de 2 colonnes, et la 4ème ligne de 3 colonnes. 4. Brouillage des colonnes : Chaque colonne est transformée par combinaisons linéaires des différents éléments de la colonne (ce qui revient à multiplier la matrice 4×4 par une autre matrice 4×4). Les calculs sur les octets de 8 bits sont réalisés dans le corps à 28 éléments. 5. Addition de la clé de tour : A chaque tour, une clé de tour est générée à partir de la clé secrète par un sous-algorithme (dit de cadencement). Cette clé de tour est ajoutée par un ou exclusif au dernier bloc obtenu. Dans AES les octets correspondent à des séquences de huit bits interprétées comme des éléments du corps fini a 256 éléments. Ensuite tout flux d' octets est organisé sous forme matricielle. La matrice aura nécessairement 4 lignes et un nombre de colonnes fonction de la taille du flux. Avantages Le choix de cet algorithme répond à de nombreux critères plus généraux dont nous pouvons citer les suivants : sécurité ou l'effort requis pour une éventuelle cryptanalyse. facilité de calcul : cela entraîne une grande rapidité de traitement besoins en ressources et mémoire très faibles flexibilité d'implémentation: cela inclut une grande variété de plates-formes et d'applications ainsi que des tailles de clés et de blocs supplémentaires (cf. ci-dessus). hardware et software : il est possible d'implémenter l'AES aussi bien sous forme logicielle que matérielle (câblé) simplicité : le design de l'AES est relativement simple Si l'on se réfère à ces critères, on voit que l'AES est également un candidat particulièrement approprié pour les implémentations embarquées qui suivent des règles beaucoup plus strictes en matière de ressources, puissance de calcul, taille mémoire... C'est sans doute cela qui a poussé le monde de la 3G (3ème génération de mobiles) à adopter l'algorithme pour son schéma d'authentification « Millenage ». Pour conclure sur cet aspect, on voit que le standard AES répond aux mêmes exigences que le DES mais il est également beaucoup plus sûr et flexible que son prédécesseur. Notons qu’il existe d’autres algorithmes de cryptographie symétrique tels que Blowfish, RC2, RC5, RC6, 3DES, IDEA. QUELQUES LOGICIELS DE CRYPTOGRAPHIE SYMETRIQUE Enigma GNU Privacy Guard