Cryptographie et Architecture : Introduction L. TORRES Plan - Généralités & Définitions - Algorithmes & Architecture : chiffrement symétrique Exemples : - DES - AES - Algorithmes & Architecture : chiffrement asymétrique - Multiplication de grands nombres - RSA Généralités & Définitions La cryptologie, étymologiquement la science du secret, Cette science englobe la cryptographie — l'écriture secrète la cryptanalyse — l'analyse de cette dernière. La cryptologie a permis de mettre en place les concepts suivants, et de les implémenter au travers de différents algorithmes Confidentialité Intégrité Authentification Non répudiation : Informations lisibles que par les personnes autorisées : le message n'a pas été manipulé sans autorisation ou par erreur : identification du correspondant et/ou données : fiabilité des données/documents, non réfutable par l’auteur Généralités & Définitions Mais aussi ….. Terminologie et Définitions Terminologie et Définitions Terminologie et Définitions Terminologie et Définitions Terminologie et Définitions Les Enjeux serveurs portables ordinateurs de bureau PC distributeurs cartes à puce Réseau d’entreprise lecteur mémoire Terminal WLAN Téléphone PDA véhicule Les Enjeux - on estime aujourd’hui à moins de 4 mn le temps moyen pour qu’un PC non protégé connecté à Internet subisse une tentative d’intrusion ou soit contaminé par un programme malicieux - Cout du piratage informatique/électronique ~ PIB de la France (2 000 Milliards/an = 20-30 millions d’emplois/an !) Les Enjeux § Militaires – Diplomates – Grandes entreprises (Intelligence économique) § Stratégique § Défense § Politique §… § Grand Public § Liberté individuelle (c’est un moyen de se protéger !) § Economique § Internet § Téléphone § jeux etc …. Les Enjeux § Quelques Chiffres § En 2008 – 100 Millions de carte à puce seulement en France § > 5 Milliards dans le monde § 50% des paiements par carte bleue § Mais, le marché est essentiellement pour les cartes SIM des Tel portable (70%) § Progression du marché de 5 à 10% par an § Une demande forte dans les domaines suivants § Transport § Finance § Service Administratif (ex : carte Vitale) §…… Les Enjeux § Des Enjeux pour la cryptographie § Votre santé sur le réseau ! Cryptage Transfert réseau avec BRUIT Binaire Image originale Clef secrète Image cryptée Décryptage Clef secrète Les Enjeux § Des Enjeux plus « lointains », pour la cryptographie § La santé « l’homme numérique » Les Enjeux § Des Enjeux plus « lointains », pour la cryptographie § La santé « l’homme numérique » Controller Functional Electrical Stimulation FES Integrated Neuro-Stimulator Artificial & natural sensors Les Enjeux § Biométrie et authentification § Débat éthique sur l’utilisation de la biométrie Un peu d’électronique …. • • • • • • • • 1800 La pile (Volta) 1946 ENIAC premier Calculateur élecrtronique 1947 Le Transistor inventé en 1947 1971 Premier processeur (Intel 4004) 1974 Premières calculettes 1980 Premier processeur 8 bits 1990 Premier processeur 32 bits 2000-2010 Plusieurs processeurs sur une puce • 80-90 démocratisation des PC • 90-2010 L’ère du nomadisme Un peu d’électronique …. Un circuit = • ~2 à 3 Milliards de Transistors sur qque cm2 • F= 4Ghz (un calcul chaque 250ps = 250 10-12 seconde) • Consommation 100 W • L’élément de base = Transistor = 30 nm (30 10-9 m) 2009 2004 592M Transistors 2002 2000 1999 9.5M+ Transistors 1995 1993 1989 1985 1982 134,000 Transistors 286 275,000 Transistors 386 1,290,000 Transistors 486 3.1M+ Transistors Pentium 5.5M+ Transistors Pentium Pro 1997 7.5m+ Transistors Pentium II Pentium III 42M Transistors Pentium 4 220M Transistors Itanium 2 Itanium 2 (9MB cache) 1.72B Transistors Dual Core Itanium Un peu d’électronique …. 0 0 0 1 1 0 1 0 0 1 1 0 § Transistor = relais miniature § Agencement de transistors = réalisations de fonctions logiques = réalisations de mémoires Un peu d’électronique …. § Ecran 17 pouce = 860 cm2 § 786 432 pixels § Surface d’ un pixel = 0,00109 cm2 1 MillionTr Un peu d’électronique …. Voila un transistor Assemblage F= A + B + C * D processeur 624 624 W W module module 85 85 x85 x85 mm mm Copper Hat Die x4 Glass Ceramic LGA spring connector Board 2009 1.72 Milliards Tr Transistors Un peu d’électronique …. Digital Cores I/O Pad I/O Interface CPU Core 1 Core n Internal bus Analog Cores Clocks Memory Access Control Sensors 1001110 1001110 1001110101010 FLASH or 101010 ROM 101010 RAM 010100100100 EEPROM 01011 01111 10010001000 Regulators Memories Méthodes historiques de cryptographie § L’essentiel des méthodes de chiffrement reposent sur deux principes : – la substitution – la transposition § Substituer signifie que l'on remplace certaines lettres par d'autres, ou par des symboles § Transposition signifie qu'on permute les lettres du message afin de le rendre inintelligible § Au cours des siècles, de nombreux systèmes cryptographiques ont été mis au point, de plus en plus perfectionnés, de plus en plus astucieux! Méthodes historiques de cryptographie Généralités & Définitions Un peu d’histoire …..(souvent à des fins militaires !) - Tablette en argile, XVI avant JC - Grecque (X a VII av JC) – Transposition des lettres - Hébreux (V av JC) - substitution alphabétique inversée - Code César (I ac JC) - Carré de polybe 1 2 3 4 5 1 A B C D E 2 F G H I,J K 3 L M N O P 4 Q R S T U 5 V W X Y Z Chiffrement Dupont = 14 45 35 34 33 44 La cryptographie par substitution monoalphabétique § Le codage par substitution monoalphabétique (on dit aussi les alphabets désordonnés) est le plus simple à imaginer § Le texte à coder est le suivant : – UN PETIT ROSEAU M'A SUFFI POUR FAIRE FREMIR L'HERBE HAUTE ET TOUT LE PRE ET LES DOUX SAULES ET LE RUISSEAU QUI CHANTE AUSSI. § Le texte codé est alors : – MT JCGLG UZVCNM S'N VMWWL JZMU WNLUC WUCSLU Q'DCUYC DNMGC CG GZMG QC JUC CG QCV OZMB VNMQCV CG QC UMLVVCNM RML IDNTGC NMVVL. La cryptographie par substitution monoalphabétique § Pour la première lettre, il y a 26 choix possibles, pour la seconde, 25 choix, etc.... Il existe donc 26! façons de coder distinctes. C'est un nombre en soi assez impressionnant ... 403291461126605635584000000 combinaisons § Un des problèmes avec le code par substitution est de se souvenir de la clé (c'est-à-dire la permutation) employée. Il n'est en effet pas facile de se souvenir de 26 lettres dans un ordre quelconque § Autre problème : les statistiques, exemple la probabilité d’apparition des lettes (E = 18%, Y=0.12%, etc .., probabilité 2 lettres successives etc …) – Robustesse faible La cryptographie par substitution polyalphabétique Le chiffre de Vigenere § Même si l'on connaissait depuis fort longtemps les faiblesses de la cryptographie par substitution, il n'y eut pas entre César et le XVIème siècle de véritable nouveau procédé cryptographique, à la fois sûr (pour les moyens de l'époque) et facile à utiliser! § Blaise de Vigenère, né en 1523, fut l'initiateur d'une nouvelle façon de chiffrer les messages qui domina 3 siècles durant § C'est en 1586 qu'il publie son Traité des chiffres ou Secrètes manières d'écrire, qui explique son nouveau chiffre Le chiffre de Vigenere • L'idée de Vigenère est d'utiliser un chiffre de César, mais où le décalage utilisé change de lettres en lettres. Pour cela, on utilise une table composée de 26 alphabets, écrits dans l'ordre, mais décalés de ligne en ligne d'un caractère. On écrit encore en haut un alphabet complet, pour la clé, et à gauche, verticalement, un dernier alphabet, pour le texte à coder : Le chiffre de Vigenere § Pour coder un message, on choisit une clé qui sera un mot de longueur arbitraire § On écrit ensuite cette clé sous le message à coder, en la répétant aussi souvent que nécessaire pour que sous chaque lettre du message à coder, on trouve une lettre de la clé § Pour coder, on regarde dans le tableau l'intersection de la ligne de la lettre à coder avec la colonne de la lettre de la clé § Exemple : On veut coder le texte "CRYPTOGRAPHIE DE VIGENERE" avec la clé "MATHWEB". On commence par écrire la clef sous le texte à coder : Le chiffre de Vigenere • • Pour coder la lettre C, la clé est donnée par la lettre M. On regarde dans le tableau l'intersection de la ligne donnée par le C, et de la colonne donnée par le M On trouve O. Puis on continue. On trouve : ORRWPSHDAIOEI EQ VBNARFDE Le tournant des deux guerres La Première Guerre Mondiale § Jusqu'au début du XXème siècle, la cryptographie a gardé une importance mineure, et les méthodes utilisées sont bien souvent rudimentaires § Avec la Première Guerre mondiale a lieu une révolution technologique – Les communications entre l'état-major et les troupes se fait désormais essentiellement par radio, et sont donc facilement interceptables par l'ennemi – Il faut impérativement les chiffrer! Pour la première fois, la cryptographie aura une importance sur le conflit. § La Seconde Guerre mondiale est elle aussi le théâtre d'une révolution technologique – celle-ci concerne cette fois les méthodes cryptographiques elle-même – Pour la première fois, les armées disposent de moyens mécaniques qui permettent de concevoir des systèmes cryptographiques autrement plus compliqués que ceux que l'on pratique "à la main" § Mais les analyses vont aussi s'automatiser, jusqu'à la naissance du premier ordinateur... Le chiffre ADFGVX, et l'offensive allemande de 1918 § Depuis mars 1918, l'armée allemande utilise un nouveau code pour communiquer, le chiffre ADFGVX, ou GEDEFU 18 (GEheimschrift DEr FUnker 18, chiffre des télégraphistes 18) § Ce chiffre est constitué d'une substitution de type carré de Polybe, suivie d'une transposition § Pour réaliser la substitution, les 26 lettres de l'alphabet et les 10 chiffres sont rangés dans un tableau 6×6, aux extrémités desquelles on a ajouté les lettres ADFGVX § Chaque lettre est codé par le couple de lettres qui correspond à sa ligne et à sa colonne. Ainsi, R est codé DF, et le message RENFORT COMPIEGNE 16H10 devient : DFAXV VFAFD DFGFD DFDFG VAGDA XGGVV AXXAV FDVXA DX Le chiffre ADFGVX, et l'offensive allemande de 1918 § On choisit ensuite, pour faire la transposition, une clé qui est un mot courant, par exemple DEMAIN. On écrit le texte intermédiaire sous ce mot, puis on permute les colonnes par ordre alphabétique croissant de la clé. § Il ne reste plus qu'à relire le tableau de gauche à droite, et de haut en bas : XDFVA VDFAD FFDGF FDGDV AAGXV GGAVX FXADV VXXAD § Les lettres ADFGVX ont été choisies pour ce code car l'essentiel des télécommunications est transmis par radio, et les lettres ADFGVX ont des codes morses très différents. Les utiliser évite les confusions pendant la transmission. Le tournant des deux guerres La Seconde Guerre Mondiale § La machine Enigma § L'Enigma se présente sous la forme d'une caisse en bois de 34×28×15 cm, et pèse une douzaine de kilos. § Elle est composée : – d'un clavier alphabétique – d'un tableau de connexion – de 3 rotors mobiles à 26 positions – d'un rotor renvoi à 26 positions (le réflecteur) – d'un tableau de 26 ampoules correspondant aux 26 lettres de l'alphabet. Généralités & Définitions Un peu d’histoire …..(souvent à des fins militaires !) - Chiffrement par substitution polyalphabétique (XVéme) Consiste à remplacer chaque lettre du texte en clair par une lettre d'un autre alphabet et à changer plusieurs fois d'alphabet de substitution au cours du chiffrement, rendant la cryptanalyse par analyse de fréquence inefficace. - Machine Enigma (1940) Chaque lettre est remplacée par une autre, l'astuce est que la substitution change d'une lettre à l'autre. Il y a trois éléments à connaître pour pouvoir coder un message avec la machine Enigma : - la position des 6 fiches du tableau de connexion: d'abord, il faut choisir 12 lettres parmi 26. C'est donc le nombre de combinaisons de 12 parmi 26, soit 26! /(12!14!) = 9 657 700. Maintenant, il faut choisir 6 paires de lettres parmi 12, soit 12!/6!, et comme la paire (A,D) donne la même connexion que la paire (B,A), il faut encore diviser par 26. On trouve finalement 100 391 791 500. - l'ordre des rotors: il y a autant d'ordres que de façons d'ordonner 3 éléments : 3!=6. la position initiale des rotors: chaque rotor ayant 26 éléments, il y a 26*26*26=17 576 choix. On multiplie tout cela, et on obtient plus de 1016 possibilités, ce qui est énorme pour l'époque ! Généralités & Définitions Un peu d’histoire …..(souvent à des fins militaires !) - 1970-1977 adoption du protocole DES (Data Encryption Standard) du à Feitel - 1976 Diffie-Hellman : échange de clés secrètes et notion de clef publique - 1978 RSA premier protocole à clefs publiques - 1985 El-Gamal nouveau concept. - 1985 Koblitz cryptographie sur les courbes elliptiques - 1997 AES – Advanced Encryption Standard - 2000 Avancés importants sur les courbes elliptiques - et ca va très vite actuellement …… Généralités & Définitions Principe de Kerchoffs (XIXème) : • Une information codée ne doit en aucun cas pouvoir être déchiffrée sans la connaissance de sa clé. • Les interlocuteurs ne doivent pas subir de dégâts au cas où le système de codage serait dévoilé. • La clé doit être simple et modifiable à souhait. • Les cryptogrammes doivent être transportables, c'est-àdire télégraphiables. • L'appareil de codage et les documents doivent être transportables. • Le système doit être simple d'utilisation. • Le système de chiffrage doit être au préalable examiné par des experts. Généralités & Définitions Cryptographie Moderne (Confidentialité) Symétrique Asymétrique Les clés symétriques: clés utilisées pour le chiffrement et pour le déchiffrement. On parle alors de chiffrement symétrique ou de chiffrement à clé secrète. Les clés asymétriques: clés utilisées dans le cas du chiffrement asymétrique (aussi appelé chiffrement à clé publique). Une clé différente est utilisée pour le chiffrement et pour le déchiffrement Généralités & Définitions • Clé secrète (privée, symétrique) – La clé de déchiffrement est calculée à partir de la clé de cryptage et vice-versa, donc la securité réside dans le secret de la clé. Je t’aime, Alice Chiffrement çà_168534sd&é ETç-@\dfyhSDG Déchiffrement Canal sécurisé Action de Bob Je t’aime, Alice Moi aussi je t’aime, Bob… Action d’Alice Clé secrète partagée Bob Alice Généralités & Définitions • Clé publique (asymétrique) – Il y a une clé pour chiffrer et une autre pour déchiffrer. La clé pour la cryptage doit être rendue publique, et il n’est pas possible découvrir la clé secrète à partir de la clé publique. Exemples: RSA, ElGammal, ECC Clé publique d’Alice Je veux garder mes secrètes.. F(x) Généralités & Définitions • Clé publique (asymétrique) Clé publique d’Alice Moi, j’ai la clé publique et le message chiffré, je peux donc découvrir la message!!! Qmlskjfd qskdnf klh_& »’(*4326 54367354754367 46578,fgH!kdjh Cryptographie Salut Alice, veux-tu bien dîner avec moi ce soir? Qmlskjfd qskdnf klh_& »’(*43265 43673547543674 6578,fgH!kdjh Internet Salut Alice, Qmlskjfd qskdnf veux-tu»’(*4326 bien klh_& dîner avec moi 54367354754367 Je veux ce soir? 46578,fgH!kdjh0 garder mes secrètes.. Algorithmes & Architecture : chiffrement symétrique § Par bloc ou par flux mais très rapide (plusieurs Mégabits par secondes) donc adapté aux applications télécoms actuelles § Le chiffrement repose sur l’utilisation d’une seule et même clé secrète (principe de Kerckhoffs) § Problème nécessite de partager cette clé pour communiquer Distinction à faire : - les algorithmes en blocs, qui prennent n bits en entrée et en ressortent n, - les algorithmes à flots (ou par flux), qui chiffrent bit par bit Algorithmes & Architecture : chiffrement symétrique • Chiffrement symétrique par bloc (et aussi flux ??) Repose sur un principe de Diffusion/Confusion (c’est antique !) Idée de confusion La relation entre, d.une part le texte clair et la clef de chiffrement, et d.autre part le texte chiffré doit être aussi difficile que possible à établir. Le calcul de l.inverse est de complexité élevée. Principe présenté souvent comme réalisé par les substitutions. Idée de diffusion Une modification même mineure du texte en clair doit se traduire par une modification très importante du texte chiffré. Chaque symbole en clair doit être .diffusé. dans tout le texte chiffré (chaque symbole chiffré doit dépendre de beaucoup de symboles en clair). Principe présenté souvent comme réalisée par les permutations. * Claude Shannon ‘Communication Theory Of Secrecy Systems’ Bell Systems journal 1949 Algorithmes & Architecture : chiffrement symétrique • Substitutions (contribue à la confusion) un symbole du texte en clair est remplacé par un autre symbole dans le texte chiffré. ABCDEFà %$)#_P • A B C D E F % $ ) # _ P Permutations (contribue à la diffusion) les symboles en clair sont réordonnés ABCDEFàDFABCE A B C D E F A B C D E F Algorithmes & Architecture : chiffrement symétrique § Chiffrement symétrique par bloc (schéma de Feistel) - Soit M le message de N bits a chiffrer, - Soit une fonction F et K la clef - La fonction F est itérée plusieurs fois (nombre de tour ou round) - À chaque tour, la clé k utilisée est changée et le message que l'on chiffre est le résultat de l'itération précédente. C1 = F(k1,M) ; maître K C2 = F(k2,C1) ; ... Cr = F(kr,Cr − 1) ; avec ki utilisées sont déduites d'une clé La fonction F utilisée doit être une permutation, c'est-à-dire qu'il faut pour toute clé K et message M pouvoir recalculer M a partir de F(k,M). Formellement, cela signifie qu'il existe une fonction G vérifiant G(k,F(k,M)) = M. Algorithmes & Architecture : chiffrement symétrique § Chiffrement symétrique par bloc (schéma de Feistel) - Soit M le message de N bits a chiffrer, - Soit une fonction F et K la clef - La fonction F est itérée plusieurs fois (nombre de tour ou round) - À chaque tour, la clé k utilisée est changée et le message que l'on chiffre est le résultat de l'itération précédente. C1 = F(k1,M) ; maître K C2 = F(k2,C1) ; ... Cr = F(kr,Cr − 1) ; avec ki utilisées sont déduites d'une clé La fonction F utilisée doit être une permutation, c'est-à-dire qu'il faut pour toute clé K et message M pouvoir recalculer M a partir de F(k,M). Formellement, cela signifie qu'il existe une fonction G vérifiant G(k,F(k,M)) = M. Algorithmes & Architecture : chiffrement symétrique • Chiffrement symétrique par bloc (schéma de Feistel) - Robustesse Deux points importants : - l'algorithme de cadencement de clé la robustesse de la fonction F - Dire de la fonction F qu'elle est robuste signifie qu'on la suppose difficile à inverser sans connaître la clé k ayant servi dans le calcul de C = F(k,M). En d'autres termes, connaissant seulement C, F et G, on ne doit pas pouvoir retrouver le message M, si ce n'est en effectuant une recherche exhaustive de la clé k, c'est-à-dire en calculant 1) X = G(k,C); 2) Y = F(k,X); et cela pour toutes les clés k jusqu'à ce que l'on en trouve une pour laquelle Y est égal à C. On est alors assuré d'avoir le message M qui n'est autre que X. Le problème étant que si k est constitué de l bits, il faut en moyenne 2l / 2 = 2l − 1 essais. En prenant l assez grand, on peut être sur que cela n'est pas réalisable en pratique: supposons que l'on puisse essayer 10^9 (un milliard) clés par seconde, soit environ 2^30, il y a 31557600 secondes par an, soit 2^25, en conséquence on peut tester 255 clés par an. Si on prend pour l une valeur de 80 bits, il faudrait 224 ans, plus de 1 million d'années. Algorithmes & Architecture : chiffrement symétrique § Chiffrement symétrique par bloc (schéma de Feistel) - Robustesse Une technique très répandue pour fabriquer des fonctions F est celle du schéma de Feistel. Dans ce schéma, le message à chiffrer est découpé en 2 blocs de n/2 bits, M = (L,R) et le message chiffré est C = (R,L + f(k,R)) où le '+' est le XOR et f est une fonction quelconque, on n'a plus à supposer que c'est une permutation. En effet, on peut retrouver M à partir de la clé k 1) connaissant C, on connaît R qui est sa partie gauche, 2) on calcule f(k,R), 3) on ajoute le résultat du calcul précédent à la partie droite de C, et on retrouve L, cela sans restriction sur f. Clairement, dans ce schéma, la robustesse de F repose sur la fonction f. Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard • Mise au point par IBM en 1968 • Standard de chiffrement utilisé depuis 1979 – (normalisé en 1976) • Schéma de Feistel permettant le construire un chiffrement en itérant une fonction de chiffrement relativement faible • Utilise le principe de Diffusion/Confusion • Beaucoup implémenté dans les composants de sécurité comme les cartes à puce • Taille de bloc 64 bits • Taille de clé 56 bits (sous clés sur 48 bits) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard M K0 C1=F(k0,M) C1 K1 K C2=F(k1,C1) C2 K2 C2=F(k2,C2) . . . Kn C2=F(k2,C2) Cn - Répétions n fois avec des sous clés - Sous clés dérivées de la clé principale - Le nombre de tour (round) définit la sécurité mais aussi la rapidité - 16 tours dans le cas du DES Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard - Entrée Bloc 64 bits - L(i-1) 32 bits poids forts - R(i-1) 32 bits poids faibles - Chiffrement sur la partie droite - ki sur 48 bits Permutation finale et initiale est historique Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard Permutation finale et initiale est historique - Le bit 1 devient le 58, le bit 2 devient 50 … etc …. - Permutation sur les 64 bits - Permutation finale est l’inverse - Implantation facile = « câblage » - Intérêt ? N’amène rien en terme de sécurité ! Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard 8 Substitution (Sbox) – Confusion - Permutation - Diffusion Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard Phase d’expansion 32bits à 48 bits R(i-1) E( R(i-1) ) - Bit 1 devient 32, bit 2 devient 1 - Certains bits recopiés pour passer de 32 à 48 bits - L’expansion est inversible (bijection entre les configuration 32bits & 48 bits) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard Phase de substitution (Exemple S1) E (R(i-1)) + ki B=S(E (R(i-1)) + ki) - Contribue à la confusion par une fonction non linéaire - La table de substitution est différente pour chaque Round - Substitution d’une valeur de 6 bits par une valeur de 4 bits - Les 2 bits poids faible & fort sélectionnent la ligne, les 4 bits intermédiaires la colonne Exemple : 100011 à Ligne : 11 Colonne : 0001 Donc 35 devient, ligne 4 colonne 1, correspond à 12 Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard Phase de Permutation B=S(E (R(i-1)) + ki) P(B) - A Chaque étage une permutation, toujours la même - Remplacer le bit 1 par le bit 16, le bit 2 par le bit 7 etc …. - Contribue à la diffusion Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard Résumé : - Réseau de Feistel, c’est involutif, bijection qui est sa propre inverse - Même algorithme pour le chiffrement que le déchiffrement - Attention, le dernier étage prépare le chiffrement en inversant L & R En effet lors du chiffrement en entrée [a,b] avec L(i-1)=a et R(i-1)=b en sortie [b,a+F(b)] Lors du déchiffrement en entrée [a+F(b), b], en sortie [b, a+F(b)+F(b)]=[b,a] Donc en déchiffrement on inverse la droite et la gauche, sur tous les étages mais à la fin On inverse une fois de plus (comme au chiffrement) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard Gestion de la clé (voir annexe pour le détail de la génération des clefs) - Clé en fait de 64 bits mais 8 bits de parité à 56 bits - Pour chaque round, une sous clé différenteà 16 sous clés différentes - Sous clés de 48 bits, Clé initiale (64 bits) Permutation (64 -> 56 bits) Partie gauche (28 bits) Partie droite (28 bits) Décalage à gauche d’un bit Décalage à gauche d’un bit Partie droite décalée (28 bits) Partie gauche décalée (28 bits) Permutation (56 -> 64 bits) Clé de 48 bits Itération suivante Vers cryptage principal Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : L’algorithme D.E.S, Date Encryption Standard Robustesse du DES - Secret reposant sur une clef de 56 bits (faible actuellement) - Attaques pour casser la clef (< 24h00) … oui mais … - Extension du DES vers le 3-DES (clé de 168 bits, mais 3 fois plus en temps !) Applications actuelles du DES ou 3DES - Internet (implantation logicielle) - Smart Card (ex CB, implantation matérielle) - Paiement électronique - etc … Algorithme le plus implanté actuellement, malgré Sa faible robustesse Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Sol 1 : Solution combinatoire - Purement combinatoire -16 Rondes - Génération des clés en parallèle - Solution « gourmande » Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Plusieurs solutions architecturales Sol 2 : - Une seul round, algorithme séquentiel - Contrôle à réaliser (Machine d’état) - Tround = Tmux+TCL+Treg - Pour 16 Round TDES = 16* Tround Combinatorial Logic = Chiffrement + Génération de sous clé Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Déroulage boucle (Loop Unrolling) Sol 3 : - Mutualisation ressources - Exemple deux rounds - Contrôle à réaliser (Machine d’état) - TDES = 8*Tmux+16*TCL+8*Treg - Si 4 Combinatorial Logic - TDES = 4*Tmux+16*TCL+4*Treg à On arrive à mutualiser Treg et Tmux, mais Pas TCL Architecture : Le pipeline • Exemple • Cyril, Arnaud, David, Laurent (tâche ménagère) • Lavage 30 minutes • Séchage 40 minutes • Pliage 20 minutes A B C D Architecture : Le pipeline 6 7 8 9 10 11 12 Time 30 40 20 30 40 20 30 40 20 30 40 20 T a s k O r d e r A B C D • Séquentiellement 6H00 • Avec pipeline ? Architecture : Le pipeline 6 7 8 9 Time 30 40 T a s k O r d e r 40 40 40 20 A B C D • Avec pipeline : 3,5 h00 10 11 12 Architecture : Le pipeline 6 PM 7 8 9 Time 30 40 T a s k O r d e r A B C D 40 40 40 20 • Pipeline utile pour améliorer le débit, mais latence … • Débit du pipeline limité par la tâche la plus longue • Opération Multi - tâche • Accélération = Nombre étage de pipeline • Temps pour “remplir” pipeline et temps pour “sortir” reduit la vitesse • Attention aux dépendances de données (aléas) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Data1,K1 Res(Data1,K1) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Déroulage boucle (Loop Unrolling) Data2,K1 Sol 4 : - 2 données en parallèle - Augmentation du débit (si flot) - Par contre latence pour remplir le pipeline Res(Data1,K1), K2 Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Déroulage boucle (Loop Unrolling) Data2,K1 Sol 4 : - 2 données en parallèle - Augmentation du débit (si flot) - Par contre latence pour remplir le pipeline Res(Data1,K1), K2 Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Implantation des fonctions de permutation et d’expansion R(i-1) C’est uniquement du câblage ! bit1 bit2 bit3 bit4 bit5 bit1 bit2 bit3 bit4 bit5 bit32 bit48 E( R(i-1) ) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Implantation des fonctions de permutation et d’expansion R(i-1) C’est uniquement du câblage ! bit1 bit2 bit3 bit4 bit5 bit1 bit2 bit3 bit4 bit5 bit32 bit48 E( R(i-1) ) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Phase de substitution (un peu plus complexe & crucial) Rappel : Les 2 bits poids faible & fort sélectionnent la ligne, les 4 bits intermédiaires la colonne Exemple : 100011 à Ligne : 11 Colonne : 0001 et 35 à 12 E (R(i-1)) + ki B=S(E (R(i-1)) + ki) Solution 1 : fonction combinatoire E5….. .E0 B3…B0 000000 000001 000010 000011 000100 1110 (14) 0000 (0) 0100 (4) 1111 (15) 1101 (13) 111111 1101 (13) Table de vérité à minimisation logique Fonction booléenne ! Plusieurs centaines de portes logiques ! Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Phase de substitution (un peu plus complexe & crucial) Solution 2 : Utilisation d’une Look Up Table (ROM ou RAM) E5….. .E0 B3…B0 000000 000001 000010 000011 000100 1110 (14) 0000 (0) 0100 (4) 1111 (15) 1101 (13) Ex: A l’adresse 000011 on sort la valeur 1111 Donc 6 bits d’adressage et stockage de 26 valeurs de 4 bits, soit 256 bits à stocker par SBOX Simple et efficace ! 111111 1101 (13) Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Implantation VHDL (voir document en annexe) Lien : http://www.opencores.org Algorithmes & Architecture : chiffrement symétrique q Exemple 1 : Quelques éléments d’architecture d’implantation du D.E.S Exemple de performances du DES Cible ASIC : ~ 15-20 Kgates, Techno 130nm 90nm, F ~ 200 - 500 Mhz, 1-5Gbits/s de débit Cible FPGA : ~ 400 slices, F~ 100 Mhz, 300-500 Mbits/s de débit Cible logicielle Processeurs embarqués, DSP, ARM etc .. Débit ~ 100-300 Mbits (bien optimisé) Algorithmes & Architecture : chiffrement symétrique q Modes de fonctionnement Mode ECB – Electronic Code Book DES DES-1 - Utilisation sur des blocs de 64 bits - Pour des blocs < 64 bits faire du padding (ajout de zéro) - Pb : Si message identique, message chiffré aussi, peut faciliter les attaques (sécurité faible en fait) Algorithmes & Architecture : chiffrement symétrique q Modes de fonctionnement Mode CBC – Cipher Block Chaining DES DES-1 - Utilisation d’un vecteur d’initialisation (IV) - Chaque bloc chiffré dépend du précédent - Premier bloc « Xor » avec le IV. Yo=DES(X0+ IV), Yi = DES (Xi+Yi-1) - Avantage : Si message identique, message chiffré chaque fois différent Algorithmes & Architecture : chiffrement symétrique q Modes de fonctionnement Mode CFB – Cipher Feedback Block DES DES-1 - Utilisation, chiffrer des messages inférieurs à 64 bits (sans faire du padding) … - …. Ou pour avoir un chiffrement à flux - SR (Shift Register) pré-chargé avec un IV - Premier bloc « Xor » avec le IV. Yo=DES(X0+ IV), Yi = DES (Xi+Yi-1) - Avantage : latence faible, chiffrement par flux et non par bloc Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard - Appel à candidature en 1997 pour un nouveau chiffrement symétrique - Candidat retenu Rinjdael (Joan Daemen, Vincent Rijmen) – Belge - Adopté par le NIST en 2001 - Caractéristiques générales - Chiffrement symétrique - Supporte les modes ECB, CBC, CFB - Bloc qu moins de 128 bits - Clé de 128, 192 ou 256 bits - 10 à 14 rondes - Le déchiffrement utilise une méthode du chiffrement Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard - En entrée 16 Octets - Permutation selon une table pré-définie - Octets placés dans une matrice 4x4, rotation des lignes vers la droite - Application d’une transformation linéaire, consiste en la multiplication binaire avec des polynômes (Multiplication dans le groupe de Galois GF(28) - Cette transformation = diffusion - XOR entre cette matrice et une matrice intermédiaire - Ces différentes opérations sont répétées plusieurs fois (10 à 14 fois) Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Mise en forme des entrées Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Etape 1 : AddRoundKey State Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Etape 2 : Rounds 1-9 – SubBytes - Substitution Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Etape 2 : Rounds 1-9 – ShiftRows Rq: Cette opération consiste à décaler des lignes dans la matrice State. En ce sens, elle garantit le principe de diffusion de Shannon. De faibles changements dans le texte clair impliquent de grands changements dans le texte chiffré. Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Etape 2 : Rounds 1-9 – MixColumns Multiplication dans le corps de galois GF(28) Algorithmes & Architecture : chiffrement symétrique q Quelques rappels sur l’arithmétique dans le corps de Galois (GF(28)) 1) Représentation polynomiale Soit B : b7,b6,b5,b4,b3,b2,b1,b0 polynôme correspondant b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0x0 Exemple : 01010111 à x6+x4+x2+x+1 2) Addition dans le corps de Galois C’est une somme modulo 2 à c’est un XOR ! 3) Pour la Multiplication c’est un peu plus compliqué (exemple sur GF(28)) Algorithmes & Architecture : chiffrement symétrique q Quelques rappels sur l’arithmétique dans le corps de Galois (GF(28)) 3) Pour la Multiplication c’est un peu plus compliqué Dans cette exemple c(x) ne peut représenter par un polynôme supérieur à 4 Pour réduire c(x) à un polynôme d’ordre 4 à réduction modulaire Soit M(x) = x4+1, il faut calculer c(x) mod M(x) Rappel : xj mod x4+1 = xjmod4 Algorithmes & Architecture : chiffrement symétrique q Quelques rappels sur l’arithmétique dans le corps de Galois (GF(28)) 3) Pour la Multiplication c’est un peu plus compliqué Soit d(x) = a(x)b(x) mod m(x) Peut se mettre sous la forme matricielle Algorithmes & Architecture : chiffrement symétrique q Quelques rappels sur l’arithmétique dans le corps de Galois (GF(28)) Dans le cas de l’AES, m(x) = x8+x4+x3+x+1 (polynôme irréductible) Algorithmes & Architecture : chiffrement symétrique q Quelques rappels sur l’arithmétique dans le corps de Galois (GF(28)) Quelques astuces Multiplication par 01 : nombre reste inchangé Multiplication par 02 : MSB = 0 MSB = 1 à 2N + 1B Multiplication par 03 : multiplication par deux suivie d’une addition modulo 2 Algorithmes & Architecture : chiffrement symétrique q Quelques rappels sur l’arithmétique dans le corps de Galois (GF(28)) Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Extensions de la clé Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Extensions de la clé Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Extensions de la clé Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Pour le premier vecteur = Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Pour les autres vecteurs : Wi=Wi-4 XOR Wi-1 Algorithmes & Architecture : chiffrement symétrique 128-bit plaintext KeyExpansion 128-bit key q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Quelques éléments d’implantation matérielle Round Transformation ShiftRows MixColumns AddRoundKey SubBytes round++ No round = 10? Yes 128-bit ciphertext Algorithmes & Architecture : chiffrement symétrique 128-bit plaintext KeyExpansion 128-bit key q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Quelques éléments d’implantation matérielle Round Transformation ShiftRows MixColumns AddRoundKey SubBytes round++ Simple XOR No round = 10? Yes 128-bit ciphertext Algorithmes & Architecture : chiffrement symétrique 128-bit plaintext KeyExpansion 128-bit key q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Quelques éléments d’implantation matérielle Round Transformation ShiftRows MixColumns AddRoundKey SubBytes round++ Décalage de registre No round = 10? Yes 128-bit ciphertext Algorithmes & Architecture : chiffrement symétrique 128-bit plaintext KeyExpansion 128-bit key q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Quelques éléments d’implantation matérielle Round Transformation ShiftRows MixColumns AddRoundKey SubBytes round++ 1) Utilisation d’une LUT ou ROM Taille (16x16) (le + efficace) No round = 10? Yes 128-bit ciphertext 2) Utiliser la transformation algébrique Qui est plus complexe (non utilisée) Algorithmes & Architecture : chiffrement symétrique 128-bit plaintext KeyExpansion 128-bit key q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Quelques éléments d’implantation matérielle Round Transformation ShiftRows MixColumns AddRoundKey SubBytes round++ Utilisation de la multiplication par 01, 02, 03 dans GF(28) No round = 10? Yes 128-bit ciphertext Multiplication par 02 Multiplication par 03 Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Possibilité de pipeliner l’AES SubBytes ShiftRows MixColumns KeyExpansionA KeyExpansionB KeyExpansion KeyExpansionC AddRoundKey Algorithmes & Architecture : chiffrement symétrique q Exemple 2 : L’algorithme A.E.S, Advanced Encryption Standard Quelques résultats de performance Cible ASIC : ~ 20 Kgates, Techno 130nm 90nm, F ~ 200 - 500 Mhz, 1-5Gbits/s de débit Cible FPGA : ~ 1600 slices, F~ 100 Mhz, 300-500 Mbits/s de débit Cible logicielle Processeurs embarqués, DSP, ARM etc .. Débit ~ 100-300 Mbits (bien optimisé) Algorithmes & Architecture : chiffrement asymétrique • Clé publique (asymétrique) – Il y a une clé pour chiffrer et une autre pour déchiffrer. La clé pour la cryptage doit être rendue publique, et il n’est pas possible découvrir la clé secrète à partir de la clé publique. Exemples: RSA, ElGammal, ECC Clé publique d’Alice Je veux garder mes secrètes.. F(x) Algorithmes & Architecture : chiffrement asymétrique • Clé publique (asymétrique) Clé publique d’Alice Moi, j’ai la clé publique et le message chiffré, je peux donc découvrir la message!!! Qmlskjfd qskdnf klh_& »’(*4326 54367354754367 46578,fgH!kdjh Cryptographie Salut Alice, veux-tu bien dîner avec moi ce soir? Qmlskjfd qskdnf klh_& »’(*43265 43673547543674 6578,fgH!kdjh Internet Salut Alice, Qmlskjfd qskdnf veux-tu»’(*4326 bien klh_& dîner avec moi 54367354754367 Je veux ce soir? 46578,fgH!kdjh0 garder mes secrètes.. Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman - Inventé en 1977 - Repose sur la difficulté de la factorisation de grand nombre - Les clefs entre 512 bits et 2048 bits (voir 4096 bits) - C’est une arithmétique modulaire • Considérons p et q deux nombres premiers • Soit d un entier tel que d soit premier avec (p-1)(q-1) • Soit n tel que n=pq • Le couple (n,d) constitue la clé privée • Soit X le message à chiffrer, X < n • Soit j(n) = (p-1)(q-1), indicateur d’euler Rappel : l'indicateur d’euler d'un entier positif n est défini comme le nombre d'entiers positifs inférieurs ou égaux à n et premiers avec n. Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman • La clé publique est donnée par le couple (e,n), tel que ed=k(n-1)(p-1) + 1 C’est aussi noté ed º1 mod ((p-1)(q-1)) Rappel sur la Congruence : On dit que x est congru à y modulo n, on note xº y mod n lorsque x-y est un multiple de n, c’est à dire que x=y + kn. (cela revient aussi à avoir x mod n = y).x,y et k sont entiers. • Pour Chiffrer C= Xe mod n (exponentiation modulaire) • Pour Déchiffrer Y= Cd mod n =Xed mod n = X Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Calcul de la clé • Le calcul de la clé revient à calculer ed º 1 mod ((p-1)(q-1)) • On fixe d, et il reste donc à calculer e =(d)-1 mod ((p-1)(q-1)) • Utilisation de l’algorithme d’euclide étendu pour le calcul de e • Rappel sur l’algo. Euclide étendu (http://www.grc.nasa.gov/WWW/price000/pfc/htc/zz_xeuclidalg.html) a et b entiers positifs. Si pgcd (a,b) = d, il existe deux entier u et v tel que au+bv=d (égalité de bezout) L’algorithme d’euclide étendu permet de trouver le couple u,v. dans notre cas pgcd(a,b)=1, cad a et b premier R0=a, R1=b, U0=1, U1=0,V0=0, V1=1 ; Tant que R1 > 0 faire Q= Quotient_division (R0,R1) R= Reste_division (R0,R1) U=U0 – Q * U1 V=V0 – Q V1 R0=R1 R1=R U0=U1 U1=U V0=V1 V1=V Fin ; En sortie U0=u et V0=v. Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Exemple Etape 1 : Soit deux nombres premiers p= 11 et q=23, donc n= 253 et φ(n)=220. Etape 2 : On choisi d, tel que pgcd (d, φ(n)) = 1 et d < φ(n), prenons d=27. Etape 3 : calcul de e, pour cela on utilise le théorème d’euclide étendu, tel que ed - k φ(n) = 1, cad 27e– 220k=1. Le résultat donne e=163. Etape 4 : Supposons que l’on désire coder « boby », le code ASCII équivalent est 98 111 98 121 Chiffrement : C(b) = 98163 mod 253 = 131 C(o) = 111163 mod 253 = 56 C(b) = 98163 mod 253 = 131 C(y) = 121163 mod 253 = 154 Message chiffré est donc : 131 56 131 154 Pour déchiffrer : 13127 mod 253 = 98, 5627 mod 253 = 111, 13127 mod 253 = 98, 15427 mod 253 = 121. On retrouve bien le message « boby ». Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Problèmes architecturaux liés au RSA • Arithmétique modulaire sur des grands nombres • En fait on doit calculer Xe mod n , avec e et n sur 512 à 4096 bits • Revient à faire une multiplication modulaire • Pour cela, en matériel • Décomposition simple • Méthode de Karatsuba • Algorithme de Montgomory • Residue Number System Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Décomposition simple - Se ramener à plusieurs multiplications sur 16 ou 32 bits - Principe : 4 multiplications sur n/2 bits est moins coûteuse qu’une multiplication sur n bits Soit le produit de U par V deux nombres codés sur 2n bits avec U=2n.U1+U0 et V=2n.V1+V0 Le produit UV : UV= 22n.U1V1+2n(U1V0+V1U0)+U0V0 Mais les produits U1V1, U1V0, V1U0, et U0V0 sont aussi décomposables de la même manière Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Décomposition simple Soit le produit 103*165 avec une décomposition en un seul niveau. U1 U0 1 U= 0110 0111 1 U1 1 U0 V1 0 U1 0 U0 1 0 1 1 V1 U0 x 1 V0 1 U1 x x 0 V1 V0 V1 V0 1 1 V0 U0 + V0 V= 1010 0101 1 1 U1 V1 x + + S=U1*V1 Produit de U1 x V1 Opérateur Delta D Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Décomposition simple 1 1 1 1 0 U1 U0 V1 V0 0 0 0 1 1 0 0 U1 U0 V1 V0 U1 U0 V1 V0 D D D 0 0 1 1 U1 U0 V1 V0 1 1 0 V0 V1 V0 R1 R2 R3 R4 R5 R6 R7 R8 . 1 1 0 0 V= 1010 0101 1 1 0 0 V1 V0 V1 V0 . . . . D U1 U0 U1 U0 V1 V0 0 V1 . U= 0110 0111 0 U0 . U0 1 U1 + + 1 U0 D + U1 0 U1 111100 dec 11110000000000 . D D D 100011 1000110 11110 dec 1100100 11110000100011 11001000000 100001001100011=16995 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Décomposition simple • Décomposition par paquets de 32 bits • U et V sur n bits • Coût unitaire (16 pour un mult 32, 1.6 pour add 32) Décomposition en 32 bits 7000 6000 coût 5000 Coût Delta Coût additionneur Somme des Coûts Registre 4000 3000 2000 1000 0 0 100 200 300 n 400 500 600 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Méthode de Karatsuba Mais le produit de U par V peut s’écrire d’une autre façon (la méthode de Karatsuba). UV=(22n+2n)U1V1+2n(U1-U0)(V0-V1)+(2n+1)U1V0 - Se ramener à plusieurs multiplications sur 16 ou 32 bits - Principe : 3 multiplications sur n/2 bits (au lieu de 4) Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Méthode de Karatsuba Soit le produit 103*165 avec une décomposition en un seul niveau. U1 U0 1 U= 0110 0111 1 U1 1 U0 V1 0 U1 0 U0 1 0 1 1 V1 U0 x 1 V0 1 U1 - x 0 V1 V0 V1 V0 1 1 V0 U0 + V0 V= 1010 0101 1 1 U1 V1 x + S=U1*V1 Produit de U1 x V1 D Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Méthode de Karatsuba •Décomposition par paquets de 32 bits •U et V sur n bits •Coût unitaire (16 pour un mult 32, 1.6 pour add 32) Décomposition en 32 bits 2500 2000 Coût Delta Coût additionneur Somme des Coûts Registre coût 1500 1000 500 0 0 100 200 300 n 400 500 600 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Comparaison décomposition simple & Méthode de Karatsuba Comparaison des deux méthodes pour une décomposition en 32 bits 7000 6000 5000 4000 coût Somme des Coûts (Karatsuba) Somme des Coûts(Méthode simple) 3000 2000 1000 0 0 100 200 300 n 400 500 600 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Oui mais … que faire du modulo ! Rappel : C= Xe mod n • Faire une division pour calculer le reste ! (Bon courage !) • Utilisation de l’algorithme de Montgomery Theorem : U + (U .N ' modR) M º UR - 1 modM R R, N: entiers tel que GCD(R,M)=1 Si R est choisi tel que R=2n N’= -M -1 mod R Diviser par R est équivalent à décaler à droite de N bits Réduire R ( mod R) est équivalent à prendre les n premiers bits Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery Soit U=A.B U-1 = 0 for i=0 to n-1 U = Ui-1 + Ai.B q = u0.N0’mod 2 U = (U +q.M) >> 1 Endfor If Un > M then U = Un – M else U = Un U + (U .N ' modR) M º UR - 1 modM R Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery Soit U=A.B U-1 = 0 for i=0 to n-1 U = Ui-1 + Ai.B q = u0.N0’mod 2 U = (U +q.M) >> 1 Endfor If Un > M then U = Un – M else U = Un U + (U .N ' modR) M º UR - 1 modM R Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery Soit U=A.B U-1 = 0 for i=0 to n-1 U = Ui-1 + Ai.B q = u0.N0’mod 2 U = (U +q.M) >> 1 Endfor If Un > M then U = Un – M else U = Un U + (U .N ' modR) M º UR - 1 modM R Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery Soit U=A.B U-1 = 0 for i=0 to n-1 U = Ui-1 + Ai.B q = u0.N0’mod 2 U = (U +q.M) >> 1 Endfor If Un > M then U = Un – M else U = Un U + (U .N ' modR) M º UR - 1 modM R Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery Soit U=A.B U-1 = 0 for i=0 to n-1 U = Ui-1 + Ai.B q = u0.N0’mod 2 U = (U +q.M) >> 1 Endfor If Un > M then U = Un – M else U = Un U + (U .N ' modR) M º UR - 1 modM R Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery Soit U=A.B U-1 = 0 for i=0 to n-1 U = Ui-1 + Ai.B q = u0.N0’mod 2 U = (U +q.M) >> 1 Endfor If Un > M then U = Un – M else U = Un Algorithm Montgomery(A , B , M) int U 0; 1: for i = 0 to n-1 2: qi (u0 + ai*b0) mod 2; 3: U (U+ ai*B + qi*M) div 2; end. 4 : end for ; 5: if (U > M) then 6: U ß U – M; 7 : return U; Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre A=510=01012 B=1210=11002 M=1710=100012 Algorithm Montgomery(A , B , M) int U 0; 1: for i = 0 to n-1 2: qi (u0 + ai*b0) mod 2; 3: U (U+ ai*B + qi*M) div 2; end. 4 : end for ; 5: if (U > M) then 6: U ß U – M; 7 : return U; i=0 ai=‘1’ q=‘0’ U=6 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre A=510=01012 B=1210=11002 M=1710=100012 Algorithm Montgomery(A , B , M) int U 0; 1: for i = 0 to n-1 2: qi (u0 + ai*b0) mod 2; 3: U (U+ ai*B + qi*M) div 2; end. 4 : end for ; 5: if (U > M) then 6: U ß U – M; 7 : return U; i=1 ai=‘0’ q=‘0’ U=3 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre A=510=01012 B=1210=11002 M=1710=100012 Algorithm Montgomery(A , B , M) int U 0; 1: for i = 0 to n-1 2: qi (u0 + ai*b0) mod 2; 3: U (U+ ai*B + qi*M) div 2; end. 4 : end for ; 5: if (U > M) then 6: U ß U – M; 7 : return U; i=2 ai=‘1’ q=‘1’ U=16 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre A=510=01012 B=1210=11002 M=1710=100012 Algorithm Montgomery(A , B , M) int U 0; 1: for i = 0 to n-1 2: qi (u0 + ai*b0) mod 2; 3: U (U+ ai*B + qi*M) div 2; end. 4 : end for ; 5: if (U > M) then 6: U ß U – M; 7 : return U; i=3 ai=‘0’ q=‘0’ U=8 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre A=510=01012 B=1210=11002 M=1710=100012 Algorithm Montgomery(A , B , M) int U 0; 1: for i = 0 to n-1 2: qi (u0 + ai*b0) mod 2; 3: U (U+ ai*B + qi*M) div 2; end. 4 : end for ; 5: if (U > M) then 6: U ß U – M; 7 : return U; AxBxR-1mod M = 4 i=4 ai=‘0’ q=‘0’ U=4 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery, optimisation • Soit U=A.B à si B=A à U=A2 • Même raisonnement U=An Exemple pour supprimer la valeur R-1 Méthode 1 : multiplacation au préalable par R mod M, puis 2ème passage 1er Passage 0 : Mont (A´(R mod M),B´(R mod M),M) … (a) 8 :end. 2ème Passage 0 : Mont (U, 1,M) … 8 :end. Méthode 2 : lors du 2ème passage, opérande = R2 mod M 1er Passage 0 : Mont (A,B,M) … 8 :end. (b) 2 Passage 0 : Mont (U, R2 mod M, M) … 8 :end. ème Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman • Exemple d’implantation (implantation « systolique ») int U ß 0; 1: for i = 0 to n-1 2: qi ß (u0 + ai*b0) mod 2; 3: U ß (U+ ai*B + qi*M) div 2; ai qi U+ ai*B + qi*M 1 1 0 0 U+M+B U+B U+M U 1 0 1 0 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Exemple d’implantation (implantation « systolique ») Cellule de base 0 Cell0,i bi mi q0 a0 mbi 0 q0 a0 0 bi mi mbi ri Cell0,0 b 0 m0 mb0 q0 a0 a0 0 b 0 m0 mb0 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Exemple d’implantation (implantation « systolique ») Cellule de base ri-1 0 Celli,i bi mi qi ai mbi 0 qi ai carryout Add 0 bi mi carryin mbi ui Celli,0 mb0 ui-1 m0 b0 ai qi ai carryout Add 0 b 0 m0 mb0 ui Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Exemple d’implantation (implantation « systolique ») mbn bn mn 0 Archi globale Cell0,n mbn bn mn 0 mbi bi mi 0 mb1 b1 m1 0 mb0 b0 m0 0 a0 a0 a0 q0 u0,n u0,n-1 mbi Cell0,i bi mi 0 q0 ur0,i u0,2 a1 carry mbn Cell1,n bn mn 0 carry q1 u1,n Cell1,i bi mi 0 mbn Celli,n bn mn 0 carry qi ui,n Celli,i bi mi 0 an Celln,n U(n+1) U(n) carry qn b1 m1 0 mb0 Cell1,1 mb1 b1 m1 carry q1 0 U(i) 0 u0,1 Cell1,0 mb0 qi b0 m0 a1 0 ui-1,1 ai Celli,1 carry qi Celli,0 ai ui,1 ri,2 mb1 b1 m1 0 an Celln,i a0 u1,1 u1,2 carry ui,i b0 m0 a1 ai ui,i+1 mbi mb1 q1 ur1,i Cell0,0 u0,1 carry ai carry q0 a1 u1,i+1 mbi Cell0,1 carry qn mb0 b0 m0 0 un-1,1 an Celln,1 U(1) carry qn Celln,0 U(0) an Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Exemple d’implantation (implantation « systolique ») Performances Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Algorithme de Montgomery, optimisation • S’applique aussi bien au niveau bit qu’au niveau mot (paquet de 16 ou 32 bits) • Niveau bit (voir exemple précédent) • Niveau mot : cad ai, bi, représentés sur k bits (pour 1024 bits k=32 si sur 32 bits) 0 : Mont (A,B,M) 1 : int U ß 0 ; 2 : for i ß 0 to k do 3 : q ß (ai ´ b0 + r0) ´(- m0)-1 mod 2 ; 4 : c ß 0; 5 : for j ß 1 to k do 6: uj-1 ß (uj + ai ´ bj + q ´ mj + c) mod 2 ; 7: c ß (uj + ai ´ bj + q ´ mj + c) / 2 ; 8: end for; 9: uj ß c; 10 : end for; 11: return U; 12 :end. Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Représentation RNS (Residue Number Systems) Représentation RNS Conversion RNS à décimal: Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théoréme des « Résidues chinois » • RNS à Opérations en parallèle – ZßX+Y – X=335 – Y=28 – β = 3,4,5,7 Pas de propagation de retenue Z (10)= 363 = 335 + 28 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théoréme des « Résidues chinois » et Montgomery [Bajard 2004] 1. Choix aléatoire des bases initiales 2. Changement aléatoire des bases pendant le calcul. 3. Problème extension des bases Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théoréme des « Résidues chinois » et Montgomery [Bajard 2004] Changement de base en cours de traitement Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théoréme des « Résidues chinois » et Montgomery • Extension de base (k=4) Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théoréme des « Résidues chinois » et Montgomery • Vue d’ensemble de L’architecture – – But: implanter de manière efficace la LRA Composants du système • • • • Contrôleur Éléments de calcul (PEs) à gros grain Réseau d’interconnexion Ressources de mémoire Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théoréme des « Résidues chinois » et Montgomery RNS MRS RNS MRS RNS MRS RNS MRS Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théoréme des « Résidues chinois » et Montgomery Temps de calcul pour une Exponentiantion Modulaire 1024 bits 0,084 0,09 0,08 0,07 0,05 0,043 0,037 0,04 0,033 0,020 0,015 0,03 0,015 0,02 Auteurs Mesquita 33] Deschamps [32] Daly [31] Nedjah [30] Örs [29] 0,00 McIvor [28] 0,01 Badrignans [27] Temps (s) 0,06 Algorithmes & Architecture : chiffrement asymétrique q Exemple : L’algorithme R.S.A, Rivest Shamir Adleman Multiplication de grand nombre • Utilisation du théorème des « Résidues chinois » et Montgomery Taille des clés 1024 2048 4096 Représentation classique 5ms 420ms 3,350ms Représentation RNS 35ms 139ms 560ms Algorithmes & Architecture : chiffrement asymétrique q Exemple : Protocole de Diffie-Hellman • Existe depuis 1976 • Permet l’échange de clefs sur un canal non sécurisé • Basé sur RSA • Soit p,g deux nombres premiers Alice Bob p,g p,g Secret a Secret b A=ga mod p B=gb mod p K1=Ba mod p p,g sont publics a,b sont secrets K c’est la clef K2=Ab mod p K1=Ba mod p = (gb mod p)a mod p =gab mod p K2=Ab mod p = (ga mod p)b mod p = gab mod p Donc K1=K2=K Algorithmes & Architecture : chiffrement asymétrique q Exemple : Protocole de Diffie-Hellman • Exemple, p=23, g=5, a=6, b=15 Alice Bob p,g p,g Secret a Secret b A=56 mod 23 K1=196 mod 23 = 2 p,g sont publics a,b sont secrets K c’est la clef A=8 B=19 B=515 mod 23 K2=815 mod 23 = 2 Algorithmes & Architecture : Fonction de Hachage q Fonction de Hachage (Hash) • Fonction qui associe à un grand ensemble de données un ensemble beaucoup plus petit (de l'ordre de quelques centaines de bits) qui est caractéristique de l'ensemble de départ • résumé de message, condensé, condensat ou encore empreinte cryptographique (digest) lorsque l'on utilise une fonction de hachage cryptographique. • Permet d’assurer l’authenticité des données, signature électronique • H(x) ≠ H(y) implique x ≠ y et H(x) = H(y) implique x = y Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Taille maximum du message 264 • Découpé en blocs de 512 bits (si pas un multiple à padding) • Digest sur 160 bits (signature à la sortie) • Algorithme sur 80 rondes • Quatre fonctions booléennes sont définies (Chaque fonction ft travaille sur 32 bits et génère 32 bits en sortie) • Utilisation de 4 constantes Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Le message complété est découpé en N blocs de 512 bits, notés Chaque bloc de 512 bits est ensuite découpé en 16 mots de 32 bits, notés • Définition de 5 valeurs initiales • Utilisation de 4 constantes Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Fonction ROTL Pour i= 1 to N { • Création du Tableau de 80 mots (Wt) – Etape 1 Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Fonction ROTL Pour i= 1 to N { • Création du Tableau de 80 mots (Wt) – Etape 2 Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Initialisation des 5 variables a,b,c,d,e – Etape 2 • Calcul de a,b,c,d,e – Etape 3 Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Calcul des Hi – Etape 4 • } Fin de la boucle • A la fin de la boucle le digest est donné par Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Architecture simple en fait, mais 80 Cycles …. Algorithmes & Architecture : Fonction de Hachage q Exemple : SHA-1, Secure Hash Algorithm • Algo SHA, résumé Conclusions & perspectives q Cours introductif manque q Courbes Elliptiques q Authentification q Chiffrement de Bus q Protocoles sécurisés qEtc ……… q Myriades d’algorithmes de cryptographie q Compétences multiples : Math, Info, Microélectronique q Environnement de plus en plus sécurisé q Adéquation Algorithme – Architecture q Pour en savoir plus : - Site Wikipédia - Sur les attaques : http://soc.eurecom.fr/crypto/ - Handbook of Applied cryptography http://www.cacr.math.uwaterloo.ca/hac/ - Association de Cryptographie : http://zenon.hd.free.fr/ - Divers liens http://perso.orange.fr/jean-paul.davalan/liens/liens_crypt.html