Slides
Transcription
Slides
Protocoles Cryptographiques et Applications Jean-Michel Fourneau PRiSM Université de Versailles 45, Av. des Etats-Unis F-78000 Versailles email:[email protected] 1 Terminologie • Message et Chiffrement : le texte clair M est encrypté (chiffré) grâce à une clé K pour obtenir un cryptogramme C C = EK (M ) Celui ci est décrypté, grâce à la même clé, pour retrouver le texte initial M = DK (C) 2 • Cryptographie : étude des algorithmes de chiffrement E et D • Cryptanalyse : étude des moyens de casser un chiffrage (retrouver M sans connaı̂tre K) • Stéganographie : cacher un message dans le support d’un autre message (encre invisible, grille, accentuation, etc). • Code ou Chiffre : un code remplace des groupes de caractères ayant une sémantique (mot) par un symbole. Un chiffre remplace un symbole par un autre symbole 3 Motivation • Usage premier : Confidentialité (Militaire et Diplomatique) • Authentification : être certain de l’emetteur • Intégrité : non altération du message • Non répudiation : preuve de l’existence du message Application plus récente : commerce électronique, signature numérique, droit de propriété. 4 Algorithme ou Clé : qui est secret ? • Algorithme secret : difficile à conserver, cher, peu validé ex: RC4 (pour GSM) développé et gardé secret en 87, publié illégalement sur Internet en 94). • Clé secrète : la solution usuelle (une ou deux clés K1 , K2 pour chiffrement et déchifrement) C = EK1 (M ) et M = DK2 (C) 5 • La gestion de clés secrètes est un problème difficile • Consommation importante de ressources, • Risques d’espionnage classique, • Nombre élevé de clés pour des communications entre interlocuteurs multiples (N 2 clés pour N utilisateurs) • La gestion des clés fait partie des protocoles cryptographiques 6 • Algorithmes symétriques : lorsque la clé de décryptage est la même (ou se déduit) de la clé de cryptage Rapide, sûr, n’intègre pas la gestion des clés ex : DES, IDEA, AES • Algorithme à clé publique : lorsque la clé de décryptage ne peut être déduite facilement de la clé de cryptage (qui peut donc être publique) Moins sûr, mais peut règler la gestion des clés ex : RSA 7 Cryptanalyse Trouver K ou M à partir de C: Seule la clé est inconnue. 5 types d’attaque : 1. Avec des cryptogrammes uniquement 2. Avec les cryptogrammes et les textes en clair 3. Avec les cryptogrammes et les textes en clair choisis par l’analyste 4. Avec uniquement des cryptogrammes choisis par l’analyste 5. Vol de clé par protocole (ou autrement...) 8 Sécurité Pour un algorithme : le temps de casser le chiffre est beaucoup plus grand que la validité des données Gravité par ordre croissant 1. Déduction partielle : trouver une partie de la clé ou du message 2. Déduction : déchiffer un message particulier 3. Déduction globale : trouver un algorithme de déchiffrement sans pour autant connaitre la clé 4. Trouver la clé 9 Complexité Complexité : le minimum de la complexité en temps CPU, en mémoire vive et en stockage Attention à ne pas sous-estimer l’augmentation des vitesses et capacité dans l’avenir.... 10 • Méthode Cryptographique • Protocole • Implémentation de la méthode et du protocole Les trois doivent être sûrs. La sûreté d’une méthode n’implique pas la sûreté d’un protocole qui l’emploie. 11 Protocole • Echange de messages chiffrés en partie ou en totalité • Réseau transparent • Assurer un service: – confidentialité – signature numérique – authentification – intégrité – preuve 12 Les Personnages des protocoles Alice, Bob participants à tous les protocoles Christine, David participants supplémentaires Estelle Espionne (opposant passif) Martin Attaquant (opposant actif) Ivan Arbitre (Intègre) Gatien Gardien Patricia Plaideuse Victor Vérificateur 13 Cryptographie à clé privée • Les clés sont partagées par Alice et Bob mais ne doivent pas être divulguées • Comment échanger les clés ? • Comment assurer la sécurité des clés à long terme ? 14 Principes de base • Historiquement, caractère par caractère, • Puis sur la représentation binaire (prise en compte de la taille du mot machine pour efficacité) • 2 opérations de base : substitution et transposition 15 Substitution Permutation de l’alphabet Avec ajout éventuel de symboles... • monoalphabétique : la même permutation pour tout le texte • homophonique : plusieurs possibilités pour remplacer la lettre • polygram : une permutation pour groupe de lettres • polyalphabétique : plusieurs permutations possibles. On choisit en fonction de la position. 16 Exemples • Monoalphabétique : code de Cesar, on remplace une lettre par la lettre + 3 mod 26 dans l’alphabet • Homophonique : Duché de Mantua (1401) • Polygram : Playfair cypher GB (WWI), groupe de 2 lettres • Polyalphabétique : Battista (1568), Vigénère (1586), Armée de l’Union (Guerre civile US), WordPerfect. 17 Cryptanalyse Problèmes : les caractéristiques statistiques d’une langue (Al Kindi, XIème siècle) • la distribution des lettres (et des groupes de lettres) est caractéristique d’une langue • elle ne change pas par substitution Facile à casser en connaissant une partie du texte en clair ou simplement la langue du texte... 18 Anglais Statistiques de Beker et Piper, 5 groupes de lettres 1. E : proba de 0.12 2. T,A,O,I,N,S,H,R : proba entre 0.06 et 0.09 3. D et L : proba de 0.04 4. C,U,M,W,F,G,Y,P, B : proba entre 0.015 et 0.023 5. V,K,J,X,Q,Z : proba inférieure à 0.01 19 groupes de lettres • les 30 digrammes les plus fréquents (par ordre décroissant) sont TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA, ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE, HI, OF. • les 12 trigrammes les plus fréquents (par ordre décroissant) sont THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS, ETH, FOR, DTH. 20 Cryptanalyse du texte les lettres codées sont en majuscule, les autres en minuscule YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZIJ XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR Exemple tiré du livre de D. Stinson 21 Table empirique Les lettres absentes du texte sont omises dans le tableau. B 1 C 15 D 13 E 7 F 11 G 1 H 4 I 5 J 11 K 1 M 16 N 9 P 1 Q 4 R 10 S 3 T 2 U 5 V 5 W 8 X 6 Y 10 Z 30 22 • La lettre la plus fréquente est Z. • On suppose donc que c’est un e • Les lettres C,D, F,J, M, R, Y apparaı̂ssent plus de 10 fois. Elles doivent coder t,a,o,i,n,s,h,r. • Mais on ne sait pas comment. • On a 7! permutations au lieu de 26!. • Les digrammes/trigrammes peuvent encore simplifier l’analyse. 23 Analyse par les digrammes Les digrammes de la forme -Z ou Z• DZ et ZW apparaissent 4 fois • WZ n’apparaı̂t pas • W apparaı̂t peu W code la lettre d 24 • RW apparaı̂t souvent • il y a deux digrammes fréquents se terminant par d: ed et nd • R code la lettre n • NZ est un digramme fréquent alors que ZN ne l’est pas • N code la lettre h 25 Voyelles • le texte ne-ndhe suggère que la lettre manquante est un a • C code la lettre a • Après un h, il y a souvent une voyelle, donc M doit être une voyelle. • M est la seconde lettre la plus fréquente. Donc M code i ou o • Comme ai est plus fréquent que ao, M code i 26 Etat actuel du texte —–iend—–a-i-e-a-inedhi-e——a—ih—–i-ea-i-e-a—a-i-nhad-a-en–a-e-hi-e he-a-n—–in-i—-ed—e—e-ineandhe-e– -ed-a–inhi–hai–a-e-i–ed—–a-d–he–n 27 • o est une lettre fréquente • elle correspond à D, F, J ou Y. • il y a des trigrammes aFi ou aJi (mais aoi est un trigramme rare) • Y code o 28 • Les trois lettres fréquentes restantes sont D,F,J • Elles doivent coder r, s, t • Commencer à faire des hypothèses sur le texte 29 Etat actuel du texte Avec les lettres identifiées (?) et les lettres fréquentes non identifiées o-F-Fiend-Fo–aFiDe-a-inedhiDe–J—aDD-iJ hD-F-FiDeaDi-e-a-oFaJionhadJa-en–a-e-hi-e he-aDnJ-oo-in-i-o-FedDo-e-oFe-ineandheDeJJ -ed-a–inhiD-haiF-a-eJi-Jed–Jo-aFdDJheD-n A vous de finir... 30 Eliminer les fréquences • Homophonique : plusieurs symboles pour coder la même lettre de manière à ce que bcp de symboles soient équiprobables • Ce qui ne règle pas le probleme des digrammes 1. digrammes fréquents 2. digrammes rares 3. digrammes obligatoires : une lettre est toujours suivie par la même (en Français, q est toujours suivi par u) 31 Changer la substitution Les lettres de la clé permettent de changer la subsitution • Périodiquement (code de Vigénère) • sans période si la clé est plus longue que le message (clé très longue : livre) 32 Vigénère • Soit K la clé et k sa longueur • Considérons le caractère d’indice i du message • Il est codé par un code de substitution à décalage dont la première lettre est celle de K(i mod k) • Version arithmétique plus simple : ajouter la valeur du caractère du message à celle du caractère de la clé 33 Exemple • K=cle, k=3, version numerique (2,11,4) • texte = cryptography • version numérique en clair (2,17,24,15,19,14,6,17,0,15,7,24) • version numérique chiffrée (4, 2, 2, 17, 4,18,8,2,4,17,18,2) • cryptogramme = ECCRESICERSC 34 Avantage et inconvénients • Attaque force brute : 26k (pour générer toutes les clés de longueur k) • Une meilleure répartition des fréquences de lettres. • Difficile à applique à l’époque (16ème siècle) • A fini par s’imposer mais a été rapidement cassé (Babbage, Kasiski) même si c’est resté secret.. • Faiblesse : longueur faible des clés. 35 Cryptanalyse du code de Vigénère En devinant la longueur de la clé k. Les caractères à distance k sont codés par la même substitution. On commence avec une clé de longueur l = 2 1. Pour chaque valeur i de 1 à l : (a) on calcule la table de fréquence (fj ) des caractères d’indice congru à i modulo l !25 (b) on calcule l’indice de coincidende Ii = j=0 fj2 2. d’après des mesures statistiques, en Anglais, I vaut 0.065 3. si les caractères sont uniformes, I vaut 0.038 4. si toutes valeurs de Ii sont proches de 0.065 on a deviné la longueur de la clé, sinon on recommence avec l + 1 36 Autre Attaque • Deux fragments identiques du texte sont codés de la même façon si leur distance est congrue à 0 modulo k. • Inversement, si on trouve des paires de segments identiques de longueur au moins 3, il est probable (mais pas sûr) qu’ils viennent de segments identiques. • On cherche les distances entre ces segments. • On cherche les diviseurs communs de ces distances. • La longueur de la clé est presque surement un de ces diviseurs. • On vérifie avec l’indice de coincidende. 37 Exemple • Clé de longueur 8 : (1, 2, 3, 7, 10, 11, 20, 4) • Texte : Crypto, (2, 17, 24, 15, 19, 14) • Il est en position 3, 37, 75 et 107 • En position 3, il est codé par (5, 24, 8, 0, 13, 18). • En position 37, il est codé par (12, 2, 18, 19, 20, 16) . On ne retrouve pas le segment. • En position 75, il est codé par (5, 24, 8, 0, 13, 18). On retrouve le segment. Distance=72. • En position 107, il est codé par (5, 24, 8, 0, 13, 18). On retrouve le segment. Distance=104. • Pgcd(72,104)=8=longueur de la clé. 38 Et ensuite • Travailler sur les populations codées avec la même substitution et se souvenir qu’un s’agit d’un décalage (il suffit de trouver la lettre la plus fréquente pour trouver toute la permutation) • Trouver la clé en analysant les index mutuels de coincidence 39 Permutation • Modifier la position des lettres • Exemple simple : écrire le texte horizontalement et le lire verticalement. • En prenant 4 colonnes, le mot : c r y p t o g r est codé a p h y CTAROPYGHPRY • Ca ne change pas la statistique des lettres 40 Cryptographie conventionnelle • Idées de base • DES • IDEA • Blowfish • AES 41 Principes de base • Historiquement : produit de permutations et de substitutions • Actuellement : produit d’un principe de diffusion et d’un principe de confusion (Shannon) 42 Diffusion • La structure statistique du message doit être moindre dans le cryptogramme • Comment : chaque bit du cryptogramme est affecté par bcp de bits du message et chaque bit du message affecte bcp de bits du cryptogramme !k • Exemple : yn = i=1 mn+i mod 26 la caractéristique statistique du message composé des mi est atténuée par la moyenne (principe du théorème central limite) 43 Comment faire • Répéter itérativement une permutation des bits et une transformation • Bien choisir la permutation pour avoir une diffusion totale • Bien choisir le nombre d’itérations pour avoir une diffusion totale 44 Confusion • Par construction, le cryptogramme est un mélange complexe de la clé et du message • Comment résister à une attaque où le texte en clair est en partie connu ? • Confusion : faire en sorte que le texte en clair et le cryptogramme ne livre pas d’information sur la clé. 45 Data Encryption Standard • DES • A partir d’un produit IBM, LUCIFER (73) • Modifié par la National Security Agency (NSA) • Modifications non commentées... • Standard pour les applications non classifiées depuis 77 46 Description simple • DES chiffre un bloc de texte de 64 bits pour produire un cryptogramme de 64 bits • K la clé est de 56 bits. • 3 étapes : 1. permutation sur les bits 2. 16 itérations (ou tours ou rondes) d’une fonction 3. permutation inverse de la permutation d’entrée 47 Itération Le mot de 64 bits est divisé en deux parties L et R. i est l’indice d’itération • Li = Ri1 • Ri = Li−1 ⊕ f (Ri−1 , Ki ) où f est une fonction et Ki est une chaı̂ne de 48 bits extraite de K. 48 fonction f (A, J) • Le premier argument de f a 32 bits • Le second, 48 bits • Le résultat a 32 bits • La première étape étend le premier argument pour l’amener à 48 bits. (16 bits sont dupliqués) Soit E l’argument étendu. 49 • On calcule E ⊕ J et on le découpe en 8 groupes de 6 bits b1 b2 b3 b4 b5 b6 . • On utilise 8 boites Si distinctes. Une boite Si a toujours 6 entrées et 4 sorties (Ci : 4 bits) • L’ensemble des Ci forme une mot de 32 bits • On permute ce mot pour obtenir f (A, J). 50 Boite Si • Une boite 4 × 16 d’entiers • b1 b2 b3 b4 b5 b6 est décomposé : – b1 b6 est un entier entre 0 et 3 qui représente l’indice r de la ligne de Si – b2 b3 b4 b5 est un entier entre 0 et 15 qui représente l’indice c de la colonne de Si • On rend Si (r, c) 51 Boite S1 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 52 La controverse • Validation et modification par la NSA • Espace des clés trop petit : attaque Brute-Force possible • Conception des boites Si : les boites S laissent-elle fuir une information statistique ? ie : de la même façon qu’un chiffre monoalphabétique laisse passer la fréquence des lettres dans une langue 53 Analyse d’une boite • Cryptanalyse différentielle • Attaque à texte clair choisi • Comparaison entre le XOR de deux textes clairs et le XOR des cryptogrammes • Attaque efficace pour des variantes à moins de 16 tours. 54 Pourquoi le XOR • Entrée de la boite : E ⊕ J • (E1 ⊕ J) ⊕ (E2 ⊕ J) = E1 ⊕ E2 • Le XOR des entrées de la boite de dépend pas de la clé J • Par contre la sortie doı̂t en dépendre 55 Exemple avec S1 • Considérons tous les couples dont le XOR vaut 110100 (valeur quelconque) • Il y en a 64 • Pour chaque couple on calcule les deux sorties, • On en fait le XOR • On calcule la table d’occurence 56 valeur fréqence valeur fréquence 0000 0001 0010 0011 0100 0101 0110 0111 0 8 16 6 2 0 0 12 1000 1001 1010 1011 1100 1101 1110 1111 6 0 0 0 0 8 0 6 Conclusion : la table est loin d’être uniforme.... 57 Cryptanalyse différentielle 1 ronde Sur un exemple • Supposons deux textes E1 et E1∗ dont le XOR est 110100 • Supposons que le XOR des deux sorties soit 1101 • D’après la table, il y a 8 possibilités pour les couples (E1 ⊕ J, E1∗ ⊕ J). • On trouve donc un ensemble de 8 valeurs possibles pour J (fragment de la clé). 58 • En combinant avec une autre paire de textes E2 et E2∗ vérifiant les mêmes hypothèses, on trouve un autre ensemble pour J • J est dans l’intersection des deux ensembles. J est assez vite trouvé... • On procède ainsi pour toutes les boites. Ce qui donne tous les fragments de la clé • La redondance entre les différents Ji permet d’aller plus vite 59 Modes Opératoire de DES • Electonic Code Book (ECB) • Cipher Block Chaining (CBC) • Cipher Feedback (CFB) • Output Feedback (OFB) 60 Mode ECB • Chaque bloc de 64 bits est chiffré indépendement des autres blocs • Le même bloc de texte produit toujours le même cryptogramme • Usage : envoi de messages courts • Faiblesse en cas de messages longs en présence de répétition 61 P2 P1 K K DES!E C1 K DES!E C2 C1 DES!D C2 K P2 P1 Decodage Encodage Figure 1: Mode ECB 62 DES!D Mode CBC • L’input de l’algorithme est le XOR (sur 64 bits) du message actuel et du cryptogramme précédent (chainage) • Mode usuel de transmission de messages longs • Le même bloc de texte ne produit pas le même cryptogramme (ça dépent de tout le passé) • Il faut une initialisation pour l’opération sur le premier bloc de texte. Cette initialisation doit être protégée (avec le même niveau que la clé) 63 P1 C1 P2 C2 XOR DES DES K K DES DES P1 XOR C2 C1 P2 Decodage Encodage Figure 2: Mode CBC 64 Mode CFB • Pour opérer en mode Stream pluto qu’en Block • Les messages ont j bits (en général 8) • Ils sont cryptés par un XOR avec une chaine construite par DES en chainage 65 Init K Shift K DES DES garder j bits garder j bits en rejeter 64-j en rejeter 64-j XOR XOR P1 C1 P2 Figure 3: Mode CFB 66 C2 Mode OFB • Comme CFB mais l’input pour l’algorithme de chiffrement est le bloc sorti précédemment. • Usage : transmission au dessus d’un canal bruité, par exemple des satellites • Une erreur de transmission sur un bloc transmis ne se propage pas dans le déchiffrement aux blocs suivants (à l’inverse du mode CFB) 67 P1 P2 XOR XOR DES DES K K C2 C1 Figure 4: Mode OFB 68 Triple DES • 3 passages : EK1 DK2 EK3 • Compatible avec simple DES si K3 = K2 • Clé de 168 bits 69 IDEA International Data Encryption Algorithm Principes: • Clé longue pour éviter attaque Brute-Force : 128 bits. • Confusion : rendre le mélange entre clé et texte plus complexe que dans DES • Diffusion : chaque bit du texte ou de la clé doit influencer tous les bits du cryptograme • Blocs de 64 bits 70 Confusion Opérations sur des mots de 16 bits : entiers non signés • XOR • Addition d’entiers modulo 216 • Multiplication d’entiers modulo 216 + 1 71 • Pas de distributivité entre opérations différentes a ∗ (b $ c) = a ∗ b $ a ∗ c • Pas d’associativité entre opérations différentes a ∗ (b $ c) = (a ∗ b) $ c Beaucoup plus difficile à analyser que simplement des XOR 72 Diffusion • A cause des opérations de multiplication/addition (pour produire G1 et G2 à partir des sous clés Z et des entrées F1 et F2 . G1 = (F1 × Zi ) + (Zj × (F2 + (F1 × Zi ))) G2 = (Zj × (F2 + (F1 × Zi ))) • Equations testées exhaustivement pour vérifier la diffusion. 73 Bloc multiplicatif additif F1 F2 Zi Zj G2 G1 Figure 5: Ronde d’IDEA 74 Chiffrement • 8 rondes de même structure mais avec des sous clés différentes • Le bloc de 64 bits est divisé en 4 mots de 16 bits • Une transformation finale pour rendre le déchiffrage identique au chiffrage 75 X1 X2 X3 X4 Z3 Z1 Z2 Z4 Z5 Z6 Figure 6: Ronde d’IDEA 76 Blowfish Caractéristiques • Rapide : 18 cycles par octet sur un processeur 32 bits apreès initialisation • Compact : moins de 5K de mémoire • Simple à implémenter et à étudier • Clé de taille variable (jusqu’à 448) pour plusieurs types de sécurité • Aucune faiblesse connue 77 Clé et sous clé • Clé : de 32 bits à 448 bits divisés en mots de 32 bits • Utilisés pour générer 18 sous clés de 32 bits et 4 boites S 8 × 32 • Chaque boite S contient 1024 mots de 32 bits • Les mots de la clé sont stockées dans le tableau K(j), les sous clés dans P (i) 78 Boite S • Elles dépendent de la clé... • Elles sont vues comme des vecteurs à 256 entrées. • Si,j : indice j de la boite i (j=0..255) • Phase d’initialisation importante • Cette étape rend la méthode peu utilisable si on change fréquement les clés (latence importante) 79 Génération des boites S 1 Initialiser P (i) et les boites avec π. 2 Pour mettre à jour P, faire un XOR du tableau P avec le tableau K en réutilisant K de manière circulaire si les tailles ne sont pas les mêmes. 3 Chiffrer un bloc de 64 bits à 0 en utilisant P et les boites S 4 Remplacer P (1) et P (2) par le résultat 80 5 Chiffrér ce bloc résultat en utilisant P et les boites S (attention, P a été modifié) 6 Remplacer P (3) et P (4) par le résultat 7 Continuer ainsi pour remplacer les éléments du tableau P puis les éléments des quatre boites S Il faut donc 521 itérations pour initialiser P et les quatre boites S. 81 Opérations utilisées • Addition modulo 232 • XOR : ou exclusif (⊕) • Ces deux opérations ne commutent pas, ce qui rend la cryptanalyse difficile 82 Algorithme LE et RE sont les deux mots de 32 bits. LE0 RE0 est le message LE17 RE17 est le cryptogramme 1. for I=1 to 16 do begin (a) REi = LEi−1 ⊕ Pi (b) LEi = F (REi ) ⊕ REi−1 2. end 3. LE17 = RE16 ⊕ P18 4. RE17 = LE16 ⊕ P17 83 fonction F • L’argument de F est un mot de 32 bits • On le divise en 4 octets abcd. • F (a, b, c, d) = ((S1,a + S2,b ) ⊕ S3,c ) + S4,d 84 Déchiffrer LD0 RD0 est le cryptogramme LD17 RD17 est le message 1. for I=1 to 16 do begin (a) RDi = LDi−1 ⊕ P19−i (b) LDi = F (RDi ) ⊕ RDi−1 2. end 3. LD17 = RD16 ⊕ P1 4. RD17 = LD16 ⊕ P2 Même algorithme que pour le chiffrement mais sous-clés dans l’ordre inverse 85 Comparaison de Vitesse Pentium, en C Algorithme Tic/Ronde Rondes Cycle/octet Blowfish 9 16 18 DES 18 16 45 IDEA 50 8 50 Triple DES 18 48 108 86 AES • Advanced Encryption Standard • Appel International (vainqueur équipe Pays-Bas) • Approche différente (pas Feistel) • A voir en projet 87 Arithmétique • Pour Crypto... • On emploie des fonctions faciles à calculer et difficiles à inverser. • Elles reposent souvent sur la théorie des nombres. • Problème typique : partant de deux nombres premiers il est facile de les multiplier mais il est difficile de décomposer le produit obtenu en nombres premiers. • Manipulation de grands nombres. • Approche alternative (peu employée) : problème combinatoire. 88 Concepts de base On travaille sur les entiers... • p est premier si ses seuls diviseurs sont 1 et lui même. • p1 , p2 ,..., pn nombres premiers. • Ils sont infinis. • Factorisation unique d’un entier sur ses diviseurs premiers : a= " pai i i 89 • c = pgcd(n, q) plus grand commun diviseur de n et q • En utilisant les factorisations en nombres premiers : ck = min(nk , qk ) • q et n sont premiers entre eux ssi pgcd(n, q) = 1 (ou encore si les factorisations n’ont que 1 comme facteur commun). 90 Arithmétique modulaire • Division Euclidienne de a par b: • On obtient un quotient q et un reste r (0 ≤ r ≤ b − 1). a=q×b+r • a mod b est défini par le reste r de la division Euclidienne. 91 3 Propriétés • ((a mod n) + (b mod n)) mod n = (a + b) mod • ((a mod n) − (b mod n)) mod n = (a − b) mod • ((a mod n) × (b mod n)) mod n = (a × b) mod L’exponentiation est obtenue par des produits successifs. 92 Addition mod 6 + 0 1 2 3 4 5 0 0 1 2 3 4 5 1 1 2 3 4 5 6 2 2 3 4 5 0 1 3 3 4 5 0 1 2 4 4 5 0 1 2 3 5 5 0 1 2 3 4 (1) Permet de définir un élément neutre 0 et un inverse pour l’addition 93 Multiplication mod 6 × 0 1 2 3 4 5 0 0 0 0 0 0 0 1 0 1 2 3 4 5 2 0 2 4 0 2 4 3 0 3 0 3 0 3 4 0 4 2 0 4 2 5 0 5 4 3 2 1 (2) Il y a un élément absorbant 0, un élément neutre 1 mais il n’y a pas un inverse unique pour chaque nombre. 94 Si p est premier, alors (Zp , +, ×) est un corps. Ou plus simplement, dans l’arithmétique modulo p (avec p premier), il y a exactement un inverse (pour la multiplication) pour chaque entier. 95 Multiplication mod 7 × 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 2 0 2 4 6 1 3 5 3 0 3 6 2 5 1 4 4 0 4 1 5 2 6 3 5 0 5 3 1 6 4 2 6 0 6 5 4 3 2 1 96 (3) Quelques Théorèmes Théorème 1 (Petit Théorème de Fermat) Si p est un nombre premier et si a est un nombre non divisible par p, alors ap−1 = 1 mod p Théorème 2 (Euler) Pour tout a et n qui sont premiers entre eux, on a : aφ(n) = 1 mod n où φ(n) est la fonction totient d’Euler, cad le nombre d’entiers plus petits que n et premiers avec n. Les deux théorèmes permettent de définir les logarithmes discrets 97 Logarithmes discrets • p : nombre premier. • a : Racine primitive de p : les puissances successives de a modulo p donnent les nombres entre 1 et p − 1. • Donc pour tout b entre 1 et p − 1, il y a un unique i inférieur à p tel que ai = b. • i est le logarithme discret de b dans la base a. 98 Propriétés de la fonction totient d’Euler • Si n est premier, alors φ(n) = n − 1. • Si n = pq avec p et q premiers alors φ(n) = (q − 1)(p − 1) (Base du protocole RSA). 99 Calcul d’un inverse Pour la multiplication... • Repose sur l’algorithme d’Euclide étendu • Algorithme d’Euclide de base : calcul récursif de pgcd(r0 , r1 ) pgcd(r0 , r1 ) = pgcd(r1 , r0 mod r1 ) On suppose que r0 ≥ r1 . • soit qi la suite des quotients de la division Euclidienne r0 = q 1 r1 + r2 r1 = q 2 r2 + r3 Arrèt lorsque le reste est nul. Soit m cette étape. Le pgcd est l’avant dernier reste. 100 Exemple Euclide • pgcd(1200,126)=pgcd(126,66) • pgcd(126,66)=pgcd(66,60) • pgcd(66,60)=pgcd(60,6) • pgcd(60,6) = pgcd(6,0) • Donc le pgcd est 6. 101 Algorithme Etendu d’Euclide • Construisons la suite ti t0 = 0, t1 = 1 tj = tj−2 + qj−1 ∗ tj1 • Théorème 3 Pour tout j on a rj = tj r1 mod r0 • Corollaire 1 Si le pgcd de r0 et rm−1 est 1 alors tm−1 est l’inverse de r1 modulo r0 (m est l’indice où stoppe l’algo d’Euclide). 102 Euclide(b,n) retourne le quotient et le reste de la division Euclidienne de b par n. 1. n0:=n; b0:=b;t0:=0;t:=1; (q,r):=Euclide(b0,n0); 2. tant que r > 0 faire : (a) te:=t0-q*t; (b) si te > 0 alors te:=te mod n sinon te:=n-((-te) mod n); (c) t0:=t; t:=te; n0:=b0;b0:=r; (d) (q,r):=Euclide(b0,n0); 3. si b0 (= 1 alors b n’a pas d’inverse modulo n 4. sinon l’inverse de b est t dans l’arithmétique modulo n 103 Exemple On recherche l’inverse de 13 dans l’arithmétique modulo 97. n0 b0 q r t0 t 97 13 7 6 1 90 13 6 2 1 90 15 6 1 6 0 L’inverse de 13 est 15. (13*15=195=2*97+1) 104 Théorème Chinois des residus Chinese Remainder Theorem • Décomposer un nombre en fonction de ses résidus selon une série de nombres deux à deux premiers entre eux • Et construction inverse (bijection) • Compatible avec les opérations arithmétiques (+, −, ×) • Utile pour faire des opérations arithmétiques rapides sur des grands nombres (100 à 150 chiffres) 105 Formulation Mathématique • Soit (m1 , ..., mk ) une séquence de nombre deux à deux premiers entre eux. #k • Soit M = i= mi Théorème 4 (Chinese RT) Tout nombre A inférieur à M peut être représenté de façon unique par le vecteur (ai , .., ak ) où ai = A mod mi A= $ ∀i ai (Mi (Mi−1 mod mi )) mod M i Notation : A *→ (a1 , .., ak ) 106 avec Mi = M mi Exemple • Représenter 973 en fonction de 37 et 49 • 37 et 49 sont premiers entre eux • 973 mod 37 = 11 et 973 mod 49 = 42 • 973 *→ (11, 42) • M1 = 49 et M2 = 37, • L’inverse de M1 en aritmétique mod 37 est : M1−1 = 34 • L’inverse de M2 en aritmétique mod 49 est : M2−1 = 4 • 11 ∗ 49 ∗ 34 + 42 ∗ 37 ∗ 4 = 18326 + 6216 = 24542 et 24542 mod (37 × 49) = 973. 107 Compatibilité • (A + B) mod M *→ ((a1 + b1 ) mod m1 , ..., (ak + bk ) mod mk ) • (A − B) mod M *→ ((a1 − b1 ) mod m1 , ..., (ak − bk ) mod mk ) • (A × B) mod M *→ ((a1 × b1 ) mod m1 , ..., (ak × bk ) mod mk ) 108 Exemple de Multiplication Avec la décomposition sur 37 et 49 (1813 = 37 × 49) • Calculer c = 451 × 973 mod 1813 • 973 *→ (11, 42), 451 *→ (7, 31) • C *→ (11 × 7 mod 37, 42 × 31 mod 49) = (3, 28) • C = 3 ∗ 49 ∗ 34 + 28 ∗ 37 ∗ 4 mod 1813 = 77 109 Cryptographie à clé Publique 2 clés : • une clé de cryptage : publique • une de déchiffrement : privée Motivation : • Pour répondre au problème de gestion des clés • Pour des applications nouvelles (signature numérique, droit d’auteur, marquage de propriété) 110 Propriété Fondamentale Il est difficile de calculer la clé de déchiffrement connaissant la clé de cryptage et l’algorithme de cryptage. Propriété de Symétrie (pas toujours) : N’importe laquelle des deux clés peut être employés pour le chiffrement, la seconde sert pour le déchiffreemnt (voir par exemple RSA) 111 Fonctionnement • Chaque utilisateur génère une paire de clés pour le cryptage et le déchiffrement. • La clé de cryptage est rendue publique, l’autre est gardée privée. • Alice chiffre le message pour Bob avec la clé publique de Bob et lui envoie. • Bob reçoit le message et le déchiffre avec sa clé privée. 112 RSA Rivest, Shamir, Adelman • Codage de blocs considérés comme des entiers. • La valeur d’un bloc est inférieure à n. • Chiffrement de M, clé publique (e, n) C = M e mod n • Déchiffrement, clé privée (d, n) M = C d mod n = M ed mod n 113 Contraintes 1. Il est possible de trouver (e, d, n) tel que M ed = M mod n pour tout M < n 2. Il est simple de calculer X e et X d pour tout X < n 3. Il est très difficile de calculer d connaissant n et e. 114 Algorithme RSA • p et q deux nombres premiers (privés, choisis) • n = pq (public) • e premier avec (p − 1)(q − 1) (e est public) • d calculé par de = 1 mod (p − 1)(q − 1) (d est privé) 115 Base mathématique Théorème 5 (Euler) Soit p et q deux nombres premiers, posons n = pq, alors pour tout m < n et tout k positif on a mk(p−1)(q−1)+1 = m mod n Propriété 1 (inversibilité dans l’arithmétique modulaire) ed = 1 mod z a une solution si e est premier avec z (d est également premier avec z). 116 Exemple Simple - Parametres • p = 3, q = 11 (choisis) • n = 33 (calculé) • e = 3, (choisi parmi les nombres premiers avec 20 (i.e. (3 − 1)(11 − 1) ) Les choix possibles sont dans {3, 7, 9, 11, 13, 17, 19}. • d = 7 (calculé) (3 ∗ 7 = 21 = 1 mod 20) Les autres choix pour (e, d) sont (19, 19), (11, 11), (9, 9), (13, 17). 117 Exemple d’application • M = 30 • C = 303 mod 33 = 27000 mod 33 = 6 • C 7 mod 33 = 67 mod 33 = 279936 mod 33 = 30 118 Aspects Calculatoires • Propagation du modulo pour éviter de calculer des nombres très grands ((a mod n)(b mod n)) mod n = ab mod n • Pour calculer ae , inutile de faire e produits (e est grand) • On décompose e selon les puissances de 2 e= k $ bi 2i i=0 et algorithme adapté (page suivante) 119 Elevation à la puissance de !k bi 2 i = d = #k d bi 2 = #k d2 i=0 i=0 i=0 bi =1 120 i i Algorithme 1. if b0 =1 then r:=d else r:=1; 2. for i:=1 to k do begin (a) d:=d*d mod n; (b) if bi =1 then r:=r*d mod n; 3. end; 4. return r; 121 Génération de clés • n est public. Donc p et q doivent être grands pour que la factorisation soit difficile. • Déterminer un grand nombre premier de façon sure est difficile. • Méthode probabiliste : 1. Choisir aléatoirement un grand nombre impair n, pos =0; 2. Choisir a entier aléatoire inférieur à n 3. Faire le test probabiliste de primalité (Rabin et Miller) On va voir cela plus tard. 4. si le test rate, aller en 1; 5. sinon pos+=1; 6. si pos ≥ Seuil accepter n sinon aller en 2. si le nombre de tests positifs est suffisant accepter n 122 Sécurité 3 problèmes : • Factorisation de n en nombre premiers. • Déterminer directement (p − 1)(q − 1) • Déterminer directement d La première solution semble la plus rapide. 123 Factorisation en nombres premiers Le problème ne semble pas si dur.... • première clé cassée en 91 (332 bits, 7Mips-Year, Algorithme de crible quadratique) • amélioration en puissance de calcul et en algorithmique • 1994 : clé de 428 bits, 5000 Mips Year, Crible Quadratique • 1996 : clé de 431 bits, 500 Mips-Year, Crible général sur corps numérique • en 99, une clé de 512 bits a été cassée (voir INRIA) 124 Dangers Le partage de n entre plusiers utilisateurs est dangereux même si chaque utilisateur a un couple (ei , di ) distinct. • Supposons qu’Alice et Bob chiffre le même message et qu’Estelle écoute. • Estelle a noté CA = M eA mod n et CB = M eB mod n et elle connaı̂t eA et eB . • Supposons que eA et eB soient premiers entre eux (vrai en général). • Il existe r et s entiers tel que reA + seB = 1. r s • Estelle calcule CA CB = M reA +seB = M Le message est décrypté. 125 Autres Algorithmes • Se ramener à un probleme difficile d’optimisation combinatoire • Courbes Elliptiques (Projet) • Logarithmes discrets 126 Construction d’une clé partagée • Algorithme de Diffie et Hellman • Alice et Bob veulent construire une clé partagée qui reste secrete. • Repose sur les logarithmes discrets • Relativement facile à calculer et difficile à inverser. 127 Logarithmes discrets • p : nombre premier. • a : Racine primitive de p : les puissances successives de a modulo p donnent les nombres entre 1 et p − 1. • Donc pour tout b entre 1 et p − 1, il y a un unique i inférieur à p tel que ai = b. • i est le logarithme discret de b dans la base a. 128 Algorithme 1 Alice et Bob se mettent d’accord de façon visible sur deux grands nombres n premier et g racine primitive de n 2 Alice choisit aléatoirement un grand nombre x (512 bits par exemple) qui reste privé 3 Bob faı̂t de même en choisissant y 4 Alice envoie à Bob (n, g, g x mod n) 5 Bob répond g y mod n 129 suite de Diffie et Hullman... 6 Alice calcule (g y mod n)x modn = g xy mod n 7 Bob calcule (g x mod n)y modn = g xy mod n 8 Alice et Bob partagent la connaissance de g xy mod n 9 Estelle a pu écouter (n, g, g x mod n, g y mod n) mais ne peut en déduire facilement g xy mod n 130 Preuve de 6 et 7 Pour Alice: • 3ème propriété de l’arithmétique modulaire ((a mod n) × (b mod n)) mod n = (a × b) mod n • Par récurence sur x on obtient (g y mod n)x mod n = g xy mod n La preuve est identique pour Bob. 131 Exemple Diffie Hellman • On choisit n = 97 • On recherche une racine primitive de 97. 5 est solution. • Alice génère le nombre 36, et Bob 58. • Alice calcule 536 mod 97 = 50. Bob calcule 558 mod 97 = 44. • La clé partagée est 75 132 Attaque du passeur de seau Martin intercepte et modifie les messages entre Alice et Bob Alice message n,g,g x Martin message Bob mod n −→ n,g,g z mod n −→ g y mod n g z ←− mod n ←− Alice utilise g xz mod n pour discuter avec Martin en croyant que c’est Bob. Bob utilise g zy mod n pour discuter avec Martin en croyant que c’est Alice. 133 Authentification • Alice et Bob communique en étant sûr de l’identité de leur interlocuteur. • Le contenu du message peut ne pas être secret. 134 Liens avec la Cryptographie • La gestion de Clés est une activité relevant de la Cryptographie. • Posséder une clé ou Monter que l’on a une clé permet de s’identifier. • Protocole... • Il faut de la Crypto sure mais ce n’est pas suffisant. • Stockage sécurisé des clés. 135 Contenu • Cryptographie Symétrique • Cryptographie Non Symétrique • Attaque du Protocole (attention ce n’est pas une attaque de la fonction cryptographique support) – Rejeu – Attaque par reflexion • Défense 136 Avec clé secrete partagée KAB Alice et Bob savent calculer de grands nombres aléatoires R Alice message Bob Alice calcul R2 −→ calcul R1 Bob,R1 ←− KAB (Bob,R1) −→ Bob est sûr R2 −→ KAB (R2) Alice est sûre ←− 137 Simplification ? 3 messages au lieu de 5 Alice message Bob calcul RA Alice,RA −→ calcul RB RB,KAB (RA) Alice est sûre ←− KAB (RB) ←− 138 Bob est sûr Faille de Sécurité • Si Bob peut recevoir plusieurs demandes en parallèle, • Attaque par reflexion, • Bob fournit lui même la réponse. • Le chiffrage n’est pas cassé mais l’authentification est fausse. 139 Attaque par reflexion Martin 1 message Bob message Alice,R1 −→ RB,KAB (R1) ←− RB est aussi connu de Martin 2 Alice,RB ←− RB2,KAB (RB) −→ KAB (RB) −→ Bob croı̂t que Martin 1 est Alice. 140 Martin 2 Pour contrer • L’initiateur doit prouver qui il est avant qu’on lui donne une donnée sensible. • Une valeur chiffrée est une donnée sensible puisqu’elle prouve que l’on connait la clé. • L’initiateur et l’interlocuteur doivent avoir des clés différentes pour prouver leur identité. • Les nombres aléatoires ne doivent pas être sur le même ensemble (par exemple pair, impair). • Les nombres aléatoires ne doivent pas être prédits. 141 Centre de Distribution de Clés Pour éviter l’augmentation quadratique du nombre de clés • Avoir confiance dans le CDC. • Une clé secrete partagée avec le CDC pour chaque site. • Croissance linéaire du nombre de clés. • Sécurisation des clés sur le CDC : casser un CDC permet de gagner toutes les clés... 142 Grenouille à bouche géante KA clé d’Alice connue seulement d’elle et du CDC KB clé de Bob connue seulement de lui et du CDC • Alice envoie au CDC le nom de son interlocuteur Bob et une clé nouvelle de session Ks . Le message est chiffré par KA . • Le CDC décode, reconnaı̂t Alice, grâce à l’emploi de KA , • Le CDC envoie un message à Bob chiffré par KB . Ce message contient le nom Alice et la clé de sessions Ks • Bob reçoit, et croit le CDC Alice et Bob partage la clé de sesions Ks . 143 Attaque en Rejouant Alice : Entreprise Bob : Banque d’Alice Martin : Fournisseur d’Alice Martin exécute un travail pour Alice. Alice donne l’ordre à Bob de payer Martin. Martin observe les messages et les enregistre. Alice et Bob partagent une clé secrete Ks . Martin va provoquer une erreur sans pour autant connaı̂tre la clé. 144 Alice message Bob message Martin Ks (M artin,1000000F r) −→ Ce message est enregistré par Martin Ks (M artin,1000000F r) ←− Ks (M artin,1000000F r) ←− Ks (M artin,1000000F r) ←− Ks (M artin,1000000F r) ←− A chaque envoi par Martin du message, Bob crédite son compte. 145 Sécurité et Rejeu Marquer les messages par une horloge ou une étiquette. Problèmes : • Comment faire une horloge commune sur un réseau ? • Voir chapitre sur Horodatage Sécurisé. • Bob doit tout garder en mémoire. • En cas de perte, Bob devient vulnérable. 146 Echanger des Etiquettes • L’étiquette est envoyée cryptée • POur confirmer la reception et monter l’authentification, il faut prouver qu’on l’a déchifrée sans l’envoyer en clair. • Appliquer une fonction f sur la version en clair puis rechiffrer le résultat. • On calcule EK (f (DK (EK (Label)))). • EK (f (DK )) ne doit pas être prédictible. 147 Needham-Schroeder KA et KB sont les clés respectives de Alice et Bob avec le CDC. Ks est une clé de session généré par le CDC. Ri : nombre aléatoire. 148 CDC message Alice message Bob R1 ,A,B ←− KA (R1 ,B,Ks ,KB (A,Ks )) −→ Alice garde Ks et KB (A, Ks ) KB (A,Ks ),Ks (R2 ) −→ Bob garde Ks et déchiffre R2 Ks (R2 −1),R3 ←− Ks (R3 −1) −→ 149 Otway et Rees Mêmes notations que pour Needham et Schroeder 1. Alice envoie à Bob le message : Alice, Bob, R, KA (Alice, Bob, R, RA ) 2. B envoie au CDC Alice, KA (Alice, Bob, R, RA ), Bob, KB (Alice, Bob, R, RB ) 3. le CDC envoie à Alice KA (RA , Ks ) 4. le CDC envoie à Bob KB (RB , Ks ) 150 Remarques • R reçu deux fois par le CDC, chiffrés par les deux clés privées KA et KB prouvent au CDC que c’est bien Alice et Bob. • Le CDC répond avec RA et RB pour prouver qu’il a KA et KB (il est donc le CDC). 151 Authentification à clé publique • Un secret permet de vous identifier. • Donc la clé publique ne vous identifie pas • La clé privée sert pour identifier (on montre que l’on connait le secret pour résoudre un déchiffrement). • La clé publique sert à construire les chiffrés qui vont être résolus. 152 Authentification à clé publique Alice message Bob EB (Alice,RA ) −→ déchiffrage de RA EA (RA ,RB ,Ks ) Alice est sûre ←− Ks (RB ) −→ Bob est sûr Point Faible : le passeur de seau 153 Hachage à sens unique • Création de résumé de messages • Pour améliorer la taille des cryptogrammes et le temps de chiffrement • Authentification sans confidentialité 154 Propriétés fonction H • H peut être appliquée à un bloc de taille quelconque • H produit un résultat de taille fixe • H est relativement simple à calculer 155 Autres Propriétés • Il n’est pas faisable d’inverser H en un temps raisonnable • Soit x un bloc, il n’est pas faisable de trouver y tel que H(x) = H(y) en un temps raisonnable (weak collision resistance) • Il n’est pas faisable de trouver en un temps raisonnable une paire de blocs (x, y) tel que H(x) = H(y) (strong collision resistance) 156 • Les trois premières propriétés définissent une fonction de hachage • la quatrième signifie ”sens unique” • la cinquième signifie que la fonction interdira de forger de faux messages • la sixième que la fonction résiste à l’attaque des anniversaires. 157 Attaque des anniversaires Du nom du problème classique de probabilité de collision dans une table de hachage Problème 1 Supposons que tous les jours de l’année sont des jours de naissances equiprobables, combien doit on regrouper de personnes pour que la probabilité que deux personnes quelconques du groupe aient le même jour de naissance soit supérieure à 0.5. Deux personnes avec le même jour : collision de clés. 158 • réponse : 23. • A comparer à 183 le nombre pour qu’il y ait une probabilité supérieure à 0.5 d’avoir une seconde personne qui a le même jour de naissance qu’une personne identifiée. • Résultats très différents en ordre de grandeur • Asymptotique lorque la taille de l’espace des clés augmente 159 Asymptotique Théorème 6 Lorsque la taille de l’espace des clés est K, la taille de la population pour que la probabilité de collision soit supérieure √ à 0.5 est en 1.18 K La taille à tester est donc beaucoup plus petite : 160 √ K au lieu de K. Attaque des Anniversaires Martin veut duper Bob en lui faisant signer un contrat défavorable. Martin et Bob utilisent un protocole de signature numérique sur les résumés. L’espace des résumés est de taille 22k 1 Martin prépare 2 versions du contrat : une favorable à Bob et une qui lui est favorable. 2 Martin prépare 2k messages qui sont des variantes du contrat 1 en ajoutant des blancs ou en modifiant quelques mots (2k messages : k modifications à faire ou non) 161 3 Martin prépare de la même façon 2k messages qui sont des variantes du contrat 2. 4 D’après le théorème sur les collisions, il y a une probabilité forte pour que deux documents (issus des versions différentes) aient le même résumé. 5 Martin trouve ces deux documents si ils existent, sinon il retourne en [2] pour générer d’autres messages. 162 6 Martin envoie la version du message favorable à Bob 7 Bob signe le résumé pour l’authentifier et le retourne à Martin 8 Martin ajoute le résumé signé par Bob au second message et dispose maintenant d’un document signé par Bob sur un résumé cohérent du texte défavorable à Bob. 163 Comment éviter l’attaque • Avoir un espace de clés trop grand • On est passé de 2128 (MD5) à 2160 (SHA, RIPEMD). 164 Protocoles • MD4 • MD5 • SHA (Secure Hash) • RIPEMD • HMAC 165 MD4 : Rivest • Sûr, à l’époque (90), pour une attaque force brute • Rapide, utilisation de primitives sur des mots de 32 bits • Simple et compact : pas de tables de substitution • Beaucoup de points communs avec MD5 166 MD5 : Rivest • Crée un résumé de 128 bits à partir d’un texte de longueur quelconque (pas de limite sup) • Le texte est divisé en blocs de 512 bits • Peu de mémoire initialisée : le buffer MD de 128 bits et un tableau T de 64 mots de 32 bits • T (i) contient la partie entière de 232 abs(sin(i)) 167 Fonctionnement MD5 Etape 1 Padding pour arriver à une longueur congrue à 448 modulo 512 Etape 2 Un bloc de 64 bits codant la longueur mod 264 (avant le pading) est ajouté au message Etape 3 Initialisation du buffer MD (de 128 bits) Le buffer est représenté par 4 mots de 32 bits (A,B,C,D). En Hexadécimal : A = 67452301, B = EF CDAB89, C = 98BADCF E, D = 10325476 stockés en Little Endian. (M D0 ) 168 Etape 4 4 rondes de compression pour chaque bloc de 512 bits (Yi ). Chaque ronde utilise une fonction de compression différente (nommées F, G, H, et I. (RFx est la ronde avec la fonction x)) Chaque ronde prend en entrée le bloc courant de 512 bits, le buffer ABCD et un élément du tableau T Chaque ronde met à jour le buffer ABCD (qui contiendra le résumé) La sortie sur ABCD après les quatre rondes est la sortie de la quatrième ronde ajoutée à l’entrée de la première ronde. On a réalisé les opérations suivantes : M Di+1 = M Di + RFI (Yi , RFH (Yi , RFG (Yi , RFF (Yi , M Di )))) Etape 5 Sortie du buffer MD 169 Décomposition d’une ronde Divisées en 16 étapes (16*32 = 512) de la forme a ← b + ((a + g(b, c, d) + Yi (ρ(k)) + T (i)) rot s) Avec • a,b,c,d : les quatres mots de MD mais dans un ordre qui dépend de l’étape • g : la fonction de la ronde • rot s : rotation à gauche de s bits • + : addition modulo 232 • k : indice d’étape • ρ une permutation qui dépend de la ronde 170 Fonctions F,G,H,et I Entrée 3 x 32 bits, Sortie 32 bits, Fonctions logiques : F (b, c, d) G(b, c, d) = (b AN D c) OR ((not b) AN D d) = (b AN D d) OR (c AN D (not d)) H(b, c, d) = b XOR c XOR d I(b, c, d) = c XOR (b OR (not d)) F et G sont des fonctions IF. F vaut ”if b then c else d”. H est un bit de parité 171 Permutation • Chaque mot de X est utilisée exactement 1 fois par ronde • ρ1 (i) = Id, ρ2 (i) = (1 + 5i) mod 16, ρ3 (i) = (5 + 3i) mod 16, ρ4 (i) = 7i mod 16 • Chaque mot de T est utilisé exactement 1 fois (4x16=64) 172 Comparaison MD4-MD5 • MD4 a 3 rondes de 16 étapes alors que MD5 a 4 rondes • MD5 utilise le tableau T pour des additions. MD4 emploie des constantes plus simples. • MD5 utilise 4 primitives logiques (une à chaque ronde) alors que MD4 n’en utilise que 3 (une à chaque ronde) • MD5 a un plus grand effet d’avalanche grâce aux opérations finales de chaı̂nage 173 Analyse de MD5 • Chaque bit de sortie est fonction de tous les bits d’entrée. • 128 bits : le résumé est trop court • il existe un algorithme générant un bloc en collision sur un bloc quelconque de 512 bits (mais pas sur une suite de blocs) Conclusion : MD5 ne peut pas être considéré comme sûr. 174 Secure Hash Algorithm • Entrée : un texte de moins de 264 bits • Sortie : un bloc de 160 bits • Travail sur des blocs de 512 bits • Très inspiré par MD4 et MD5 175 Fonctionnement SHA Etape 1 Padding pour arriver à une longueur congrue à 448 modulo 512 Etape 2 Un bloc de 64 bits codant la longueur (avant le pading) est ajouté au message Etape 3 Initialisation du buffer MD (de 160 bits) Le buffer est représenté par 5 mots de 32 bits (A,B,C,D,E). En Hexadécimal : A = 67452301, B = EF CDAB89, C = 98BADCF E, D = 10325476, E = C3D2E1F 0 (les mêmes que pour MD5, mais stocké en Big Endian Etape 4 4 rondes de 20 étapes Chaque ronde utilise une fonction de compression différente (nommées f1 , f2 , f3 , f4 ). Chaque ronde prend en entrée le bloc courant de 512 bits, le 176 buffer ABCDE et une constante dépendant de la ronde Kt et met à jour le buffer ABCDE sur ABCDE, la sortie de la quatrième ronde est ajoutée à l’entrée de la première ronde pour obtenir la sortie Etape 5 Sortie du résultat dans le buffer MD 177 Ronde Calcul effectué au cours d’une étape t A, B, C, D, E ← (E+f (t, B, C, D)+S 5 (A)+Wt +Kt ), A, S 30 (B), C, D Où : • f () fonction logique de l’étape • S k : rotatation à gauche de k bits • Wt : mot de 32 bits construit à partir du bloc de 512 bits à résumer 178 Fonctions fi Entrée 3 x 32 bits; Sortie 32 bits; selon t, f(t,B,C,D) est une des 4 fonctions logiques : f1 (B, C, D) = (B AN D C) OR ((N OT B) AN D D) f2 (B, C, D) = B XOR C XOR D f3 (B, C, D) = (B AN D C) OR (D AN D D) OR (C AN D D) f4 (B, C, D) = B XOR C XOR D 179 Calcul des W • les 16 premières valeurs des Wt sont prises directement dans le bloc (16x32=512) • les valeurs suivantes sont calculées : Wt = S 1 (Wt−16 XOR Wt−14 XOR Wt−8 XOR Wt−3 ) 180 Comparaison SHA-MD5 • Plus sûr pour des attaques de type brute force (160 bits de résumé au lieu de 128) • MD5 est plus rapide car il travaille sur des résumés plus courts et a moins d’étapes • Simplicité et compacité : même type d’algorithme 181 RIPEMD-160 • Dévéloppé par le projet ESPRIT RIPE. • Comme pour SHA (résumé de 160 bits, blocs de 512) • Les trois premières étapes sont celles de SHA (pading, ajout de la longueur) 182 Etape 4 de RIPEMD • 10 (2x5) rondes de 16 étapes • 2 rondes en parallèle : ronde gauche et droite, inversion de l’ordre des fonctions (5 fonctions seulement) • 9 constantes Ki ou Ki# • rotation des 5 mots du buffer MD après chaque étape • les résulats des cinquièmes rondes (gauche et droite) sont ajoutées à l’entrée de la première ronde pour mettre à jour le buffer MD 183 Fonctions de Compresion Entrée 3 x 32 bits, Sortie 32 bits, Fonctions logiques : f1 (B, C, D) f2 (B, C, D) f3 (B, C, D) f4 (B, C, D) f4 (B, C, D) = B XOR C XOR D = (B AN D C) OR ((N OT B) AN D D) = (B OR (N OT C)) XOR D = (B AN D C) OR (C AN D (N OT D)) = B XOR (C OR D) 184 Figure 7: Organisation d’une étape 185 Permutation • Chaque mot du bloc est utilisé deux fois par ronde (une à gauche et une à droite) • l’ordre d’utilisation des mots dépends de la ronde (numero et gauche/droite) • obtenu à partir de deux permutations élémentaires π et ρ. Ronde 1 2 3 4 5 Gauche Id ρ ρ2 ρ3 ρ4 Droite π ρπ ρ2 π ρ3 π ρ4 π 186 HMAC • MAC : message authentification code ou cheksum cryptographique, un algortihme de calcul d’un petit bloc ajouté au message et qui utilise une clé secrète • Hmac : MAC créé à partir d’une fonction de hachage • Pourquoi : 1. SHA et MD5 sont plus rapides que DES (en logiciel) 2. des bibliotheques de fonctions de hachage existent 3. les fonctions de hachage ne sont pas soumises aux mêmes restrictions d’exportation que DES • Proposé pour sécuriser IP, utilisé dans SSL 187 Concepts de HMAC • Utiliser sans modification une fonction de hachage déjà connue • Ne pas dégrader les performances de la fonction • Utiliser les clés de façon simple • Changer de façon simple de fontion de hachage pour améliorer la sureté ou les performances 188 Structure de HMAC • H : fonction de hachage, K : clé secrète, M : Message, Yi : bloc i de M, • b : nombre de bits dans un bloc, n : taille du résumé • K + : K avec un padding de 0 pour avoir une longueur de b • ipad : 00110110 répété jusqu’à taille b , opad : 01011010 répété jusqu’à taille b 189 1 Padding de K avec des 0 pour créer K + de taille b 2 Faire un XOR de ipad et de K + pour obtenir Si 3 Concaténer Si et M 4 Appliquer H au bloc de l’étape 3 5 Faire un XOR de opad et de K + pour obtenir So 6 Concaténer So et le résultat de l’étape 4 7 Appliquer H au résultat de l’étape 6, c’est le résultat final 190 sécurité de HMAC • la sécurité de HMAC est celle de la fonction H utilisée pour résister aux collisions • Attaque force brute pour forger un texte ayant le bon résumé • ou attaque des anniversaires pour forger deux messages ayant le même résumé mais l’attaque est impossible sans connaı̂tre K... • même MD5 (a fortiori les autres) résiste à l’attaque en force brute 191 Signature Numérique 192 Signature Idéale • Une signature est authentique. Elle doit convaincre le destinataire que le signataire a délibérément signé le document. • Une signature ne peut être imitée. C’est une preuve. • Une signature n’est pas réutilisable. Elle fait partie du document et ne peut être déplacée ou copiée 193 Signature Idéale - suite • Une signature est inaltérable. Le document ne peut plus être modifié. • Une signature ne peut pas être reniée. Le signataire ne peut pas nier avoir signé le document. 194 Signature Numérique • Le récepteur vérifie l’identité de l’emetteur • L’emetteur ne peut pas renier le contenu • Le récepteur ne peut pas avoir construit le message 195 Avec clés secretes et arbitre • Serveur de confiance : Ivan. • Ivan possède une clé privée KI . • t est une horodate pour éviter le rejeu. • P est le message • KA est la clé partagée entre Alice et Ivan, KB est la clé partagée entre Bob et Ivan 196 Alice message Ivan message Alice,KA (Bob,RA ,t,P ) → Chiffrage KI (Alice, t, P ) KB (Alice,RA ,t,P,KI (Alice,t,P )) → 197 Analyse • signature authentique : tous font confiance à Ivan. Ivan sait que le message vient d’Alice grâce à la clé KA . Et Ivan le dit. Donc Bob le croit. • signature infalsifiable : seule Alice et Ivan connaissent KA . La seule entité capable de forger des messages est Ivan. 198 Bob • signature non réutilisable : Si Bob essaie d’utiliser la signature en collant KI (Alice, t, P ) sur un autre message M , un arbitre pourra vérifier que la signature ne correspond pas à M . • document inaltérable : si Bob modifie P en P # , un arbitre peut montrer que c’est faux. • signature non reniable : si Alice prétend ne pas avoir envoyé le message P, le certicat d’Ivan prouve le contraire. Bob conserve KI (Alice, t, P ) comme preuve. Car seul Ivan peut crypter avec KI . 199 Problème • Ivan sait tout... • Ivan doit être infaillible... • Ivan est surchargé... • Attention aux attaques en Deni de Service et à la fiabilité. 200 Avec Clés Publiques • A condition que E(D(M )) = M pour tout message M • vrai pour RSA • Alice envoie le message EB (DA (M )) • Bob applique DB puis EA pour obtenir M • Bob conserve DA (M ) comme preuve car il est incapable de le créer 201 Analyse • authentique : Bob vérifie le message avec la clé publique d’Alice. Il établit que le message a été chiffré avec la clé privée d’Alice. • Infalsifiable : seule Alice connait sa clé privée. • Non réutilisable : la signature est fonction du document. • Document immuable : la signature est fonction du document. • Non reniable : un arbitre peut vérifier que seule Alice a pu chiffrer le message. 202 Problème de la duplication • Bob peut garder n copies signées du message. • Pas grave si c’est un contrat... • Par contre pour un chèque..... Ajouter une estampille (date ou numéro). 203 Danger de la signature RSA Par exemple avec RSA • ne pas employer RSA pour signer un message fourni par un inconnu • l’utilisation de sa clé privée par Alice pour livrer un message permet d’employer des attaques liées au propriétés arithmétiques de RSA • Attaque par texte en clair choisi 204 cryptanalyse d’un message Estelle espionne Alice et note un message crypté c par la clé publique d’Alice. Pour cryptanalyser c, Estelle procède comme suit : 1 Estelle choisit un message aléatoire r et obtient la clé publique (e, n) d’Alice 2 Estelle calcule : x = re mod n y = xc mod n t = r−1 mod n Donc, t = x−d mod n 205 3 Estelle fait signer le message y par Alice en utilisant sa clé privée. Elle note : u = y d mod n 4 Estelle calcule tu mod n. tu mod n = x−d y d mod n = x−d xd cd mod n = cd mod n = m Le message est décrypté. 206 (4) Fausse Signature Estelle veut obtenir une signature d’Alice sur le message m3. • Estelle génère deux messages m1 et m2 tel que m3 = m1 m2 mod n • Alice signe les messages m1 et m2 . • Estelle note md1 mod n et md2 mod n. • Estelle calcule (md1 mod n)(md2 mod n) = md3 mod n et possède donc un message m3 signé par Alice. 207 Chiffrement et Signature Combiner signature numérique et chiffrement à clé publique • Alice signe le message M avec sa clé privée et obtient SA (M ) • Alice chiffre le message avec la clé privée de Bob et envoie EB (SA (M )) • Bob déchiffre avec sa clé privée DB (EB (SA (M ))) = SA (M ) • Bob vérifie la signature à l’aide de la clé publique d’Alice 208 • Il faut signer avant de chiffrer (et non l’inverse) car le texte chiffré ne peut être lu et cela peut générer des problèmes légaux. • Alice peut avoir deux paires de clés (une pour signature et une pour chiffrement) 209 Accusé de reception On envoie la copie du message à l’expéditeur comme accusé de reception. • Alice signe le message M avec sa clé privée puis chiffre le message avec la clé privée de Bob et envoie EB (SA (M )) • Bob déchiffre avec sa clé privée DB (EB (SA (M ))) et vérifie la signature à l’aide de la clé publique d’Alice • Bob signe le message avec sa clé privée, le chiffre avec la clé privée d’Alice et envoie à Alice EA (SB (M )) • Alice déchiffre avec sa clé privée DA (EA (SB (M ))) , vérifie la signature à l’aide de la clé publique de Bob et retrouve le message. 210 Attaque • Si on emploie le même algorithme et la même clé pour signature et chiffrement. • Martin peut lire le courrier de Bob • Martin est un utilisateur identifié : il a une clé publique et une clié privée • Martin enregistre le message d’Alice EB (SA (M )) 211 1 Martin envoie EB (SA (M )) en prétendant en être l’auteur 2 Bob décode le message avec sa clé privée DB et essaie de vérifier la signature de Martin. Il obtient EM (SA (M )) et considère ceci comme un message valide. 3 Il fait un accusé de réception à Martin EM (SB (EM (SA (M )))) 4 Martin déchiffre avec sa clé privé : DM (EM (SB (EM (SA (M ))))) = SB (EM (SA (M ))) 212 5 Martin vérifie avec la clé publique de Bob : VB (SB (EM (SA (M )))) = EM (SA (M )) 6 Martin déchiffre avec sa clé privé : DM (EM (SA (M ))) = SA (M ) 7 Martin vérifie avec la clé publique d’Alice : VA (SA (M )) = M Résultat : Martin a cryptanalysé M . 213 Efficacité • Les protocoles à clé secrètes sont assez rapides, • Les protocoles à clé publiques sont très lents, • les messages sont de taille variable, donc la signature est de taille variable. 214 • On utilise une fonction à sens unique. • Alice applique la fonction au message et obtient un résumé • Alice signe le résumé • Bob peut conserver une signature de taille fixe et très réduite 215 Autres Avantages du résumé • On signe un document sans le rendre public au cours de la vérification puisque c’est le résumé qui établit la signature (utile pour les brevets). • Possibilité de signatures multiples : chacun signe un résumé distinct. • Limite les problèmes de sécurité : une faille permet de découvrir un résumé mais pas le message. 216 Autres Possibilités des Signatures Numériques • Canal Subliminal : cacher une information dans la signature • Vérificateur dédié : seules quelques individus peuvent vérifier les signatures même sans la coopération des signataires. • Procuration (sans prèt de clé) • Signature en aveugle (pour vote électronique) 217 Autres Solutions de signature numérique • DSA-DSS (Etats-Unis) • GOST (Russie) • ESIGN (Japon) 218 DSA-DSS • Digital Signature Standard • Digital Signature Algorithm • Tentative de standardisation, arrivé trop tard • Proposé par le NIST et la NSA • Utilise une fonction de hachage à sens unique H (SHA) 219 DSA Paramètres • p un nombre premier de L bits (entre 512 et 1024, multiple de 64). • q : un facteur premier de p-1 • g = h(p−1)/q mod p : avec h un nombre qcq inférieur à p-1 et tel que g soit plus grand que 1. • x un nombre inférieur à q • y = g x mod p p, q et g sont publics et peuvent être partagés. La clé privée est x, la clé publique y. 220 signature de M • Alice engendre un nombre aléatoire k inférieur à q • Alice calcule r = (g k mod p) mod q et s = (k −1 (H(M ) + xr)) mod q. r et s forment la signature • Bob vérifie en calculant w = s−1 mod q u = H(M )w mod q 1 u2 = rw mod q v = ((g u1 y u2 ) mod p) mod q si v = r la signature est vérifiée Amélioration : x , r et k −1 peuvent être precalculés 221 Non modification de message • Ajoindre à chaque message M, son résumé R(M) • La cohérence entre M et R(M) interdit de pouvoir forger un nouveau message P cohérent avec R(M) • Le résumé doit éviter les collisions fortes et faibles (au moins 160 bits) 222 Vote et Election • Seuls les électeurs peuvent voter • Un électeur ne peut voter qu’une seule fois • Personne ne peut savoir pour qui quelqu’un a voté • Personne ne peut dupliquer le vote d’un électeur • Personne ne peut modifier le vote d’un électeur • Un électeur peut vérifier que son vote a bien été pris en compte • Option 1: Tout le monde sait qui vote et qui ne vote pas • Option 2: procuration • On suppose possible : une signature digitale, des cléfs publiques/privées ou secrètes. 223 Protocole trop simple 1. Un Arbitre (Ivan) ayant une clé publique et qui vérifie les élections 2. Chaque électeur chiffre son vote avec la clé publique d’Ivan, l’arbitre des élections) 3. Chaque électeur envoie son vote chiffré à Ivan 4. Ivan déchiffre les votes, dépouille les élections et donne le résultat 224 Problèmes • Aucune vérification du corps électoral • Possibilité de voter plusieurs fois • Impossible de vérifier les résultats Avantages • Vote Secret, Anonyme, Non Modifiable 225 Est ce vraiment secret ??? • Il est tres facile de chiffrer tous les bulletins avec la clé d’Ivan et de vérifier que le message transmis est l’un d’entre eux • Pas de déchiffrement, de l’identification... • Ajouter une suite aléatoire R qui peut être enlevée par Ivan. 226 Un peu mieux... 1. Un Arbitre (Ivan) ayant une clé publique et qui vérifie les élections 2. Chaque électeur a une clé privée connue par Ivan 3. Chaque électeur signe le vote avec sa clé privée 4. Puis il chiffre son vote avec la clé publique d’Ivan 5. Chaque électeur envoie son vote chiffré à Ivan 6. Ivan déchiffre les votes, vérifie la signature pour garantir l’autorisation du vote et son unicité, dépouille les élections, et donne le résultat. 227 Avantages • Vérification du corps électoral • Aucune possibilité de voter plusieurs fois • Non Modifiable (signature digitale) Problèmes • Vote Non Secret pour Ivan • Impossible de vérifier les résultats (vérifier la signature permet de savoir pour qui on vote) 228 Voter avec des signatures aveugles • En général, on demande à lire avant de signer • Faux dans une signature aveugle: • Le signataire ne doit pas savoir ce qu’il signe. • Usage : enregistrement d’actes 229 Signatures Complètement Aveugles • On considère que le message est converti en nombre • Alice emploie une opération arithmétique avec deux arguments (le message et un nombre aléatoire nommé le facteur d’aveuglement) qui est inversible et qui commute avec la signature. • Alice envoie le résultat à Bob • Bob signe le document modifié et le retourne à Alice • Alice divise le nombre par le facteur d’aveuglement 230 Mathématiques • Message: M • Alice: f (M, R) • Bob : SB (f (M, R)) • Alice : f −1 SB (f (M, R)) • f −1 (SB (f (M, R))) = f −1 (f (SB (M ), R)) = SB (M ), R# • Alice a un message signé de Bob que Bob ne connait pas... • Si R et f sont bien choisis, Bob peut vérifier sa signature mais il ne peut jamais identifier le document correctement. 231 Signatures aveugles • Pour permettre à Bob de vérifier partiellement.. • Alice génère 10 messages qu’elle aveugle avec 10 facteurs différents et les envoie a Bob • Bob choisit 9 parmi ces 10 messages et demande à Alice les facteurs pour ces 9 messages • Alice envoie les 9 facteurs • Bob lit les messages et signe le dernier message (celui qui n’est pas lu) et le retourne à Alice 232 • Alice ne peut pas tricher car Bob choisit au hasard les messages qui seront lus. • Une possibilité : avoir deux types de messages (1 bon et 1 mauvais) pour Bob et qu’il soit possible de passer d’un bon a un mauvais par l’application de la fonction f avec des facteurs R particuliers (faisable en théorie, pas en pratique). • Le reste du protocole opère sous les mêmes hypothèses que les signatures completement aveugles. 233 Retour à l’élection 1. Chaque électeur génère 10 ensembles de votes. Chaque ensemble contient tous les votes possibles. Chaque message contient aussi un nombre aléatoire pour éviter les duplications avec les autres électeurs. 2. Chaque votant aveugle tous les ensembles de votes et les envoie à Ivan avec leurs facteurs d’aveuglement 3. Ivan vérifie que l’électeur n’a pas déjà voté, il ouvre 9 des messages et vérifie que les votes sont corrects 4. Puis il signe tous les votes du dernier ensemble, les renvoie à l’électeur et l’inscrit comme votant 5. L’électeur effectue l’opération inverse d’aveuglement, et a donc tous les votes possibles signés par Ivan 234 6. L’électeur choisit et envoie son vote signé et chiffré par la clé publique d’Ivan 7. Ivan déchiffre le message, vérifie la signature et compte les suffrages. Il garde le nombre aléatoire comme preuve. 235 Propriété • Pas de duplication de vote : le bulletin de vote contient un numéro. • Ivan ne peut savoir qui vote pour qui (les bulletins sont anonymes et il ne peut connaitre le numéro puisqu’il n’a pas lu le dernier bulletin). • Attention au moment du transfert du bulletin (étape 6) qui doit être anonyme. • Ivan peut générer des faux votes... • Solution : séparer les deux fonctions d’Ivan 236 Vote avec deux arbitres 2 arbitres : Vérificateur et Comptable 1. Chaque électeur demande au vérificateur un numéro de validation 2. Le vérificateur renvoie à chaque électeur un numéro aléatoire distinct. Il maintient une liste de numéro et une liste des électeurs ayant déja un numéro. Le message est crypté avec la clé publique de l’utilisateur. 3. Le vérificateur envoie la liste cryptée des numéros au comptable et publie la liste des électeur officiels (chacun peut vérifier...) 4. Chaque électeur choisit un identificateur aléatoire et construit un message avec l’identificateur aléatoire, le numéro de validation du vérificateur, et son vote. Ce message est crypté avec la clé publique du comptable. 237 5. Le comptable vérifie le numéro de validation, le marque comme ayant voté, enregistre le vote et l’identificateur aléatoire. 6. A la fin du vote, le comptable publie le résultat et la liste des identificateurs aléatoires qui ont voté pour chaque candidat (attention les numéros de validation ne sont pas publiés). 238 Analyse • Le comptable connait l’identificateur aléatoire, le numéro de validation et le nom. Il ne peut pas, seul, identifier l’électeur. • Le vérificateur ne connait pas l’identificateur aléatoire, donc il ne peut pas identifier les votes • Le comptable ne peut pas dupliquer les votes : il indique les identificateurs qui ont vote et le nombre total doit correspondre au total des validations. • Chaque électeur peut vérifier que son vote a bien été pris en compte • Un électeur ne peut pas voter deux fois. • Les listes d’électeurs sont publiées pour éviter que le vérificateur ne puisse forger de faux électeurs. 239 • Ca ne résiste pas à une entente Vérificateur-Comptable. 240 ANDOS • Alice vend des secrets • Bob veut acheter un secret mais ne veut pas qu’Alice sache quel secret il a acheté. • Sinon Alice ajoutera un secret ”Quel est le secret acheté par Bob” • Alice ne veut pas que Bob puisse obtenir tous les secrets en en achetant un seul. 241 Protocole à base de RSA 1. Alice crypte tous ses secrets (Si ) avec sa cle publique et les envoie à Bob sans changer leur numéro (Ci ) Ci = Sie mod n 2. Bob identifie le secret qu’il veut acheter Cb , il crèe un nombre aléatoire r et envoie à Alice Y = re Cb mod n 3. Alice décryte Y et renvoie le résultat P à Bob P = (re Cb )d mod n 4. Bob calcule r−1 P r−1 P = r−1 (re Cb )d mod n = r−1 red Sbed mod n = Sb 5. Bob connait Sb mais Alice ne sait pas quel secret il a acheté. 242 Vote avec ANDOS et un arbitre Ivan 1. L’arbitre publie la liste des électeurs 2. Chaque électeur reçoit un identificateur secret par un protocole ANDOS 3. Chaque électeur génère une clé publique/clé privée (k,d). Soit v le vote, il envoie anonymement à Ivan I, Ek (I, v) 4. Ivan accuse réception en publiant Ek (I, v) 5. Chaque électeur envoie (I, d) à Ivan 6. Ivan décrypte le vote, il compte les résultats, et publie les messages Ek (I, v) pour chaque vote. 7. Chaque électeur peut vérifier que son vote a bien été pris en compte. 243 Calculer sans Montrer • Faire participer N personnes à un calcul qui utilise leurs propres données sans que chacun ne les dévoile. • Exemple : je veux calculer le salaire moyen des anciens élèves du M2 mais vous ne voulez pas dire votre salaire (ni à un arbitre ni à un autre ancien élève). • Hypothèse 1 : réseau sûr (Martin est absent) • Hypothèse 2 : Les participants ne mentent pas. • Hypothèse 3 : Pas de coalition entre participant. • Hypothèse 4 : Au moins 3 participants et tout le monde connait le nombre de participants. 244 Etape 1 • On construit par un algorithme distribué un anneau. • On choisit un leader sur cet anneau. • Les communications vont se faire sur l’anneau virtuel. • Chaque communication sur l’anneau est protégée pour que seuls l’emetteur et le destinataire puissent la déchiffer (par exemple ils ont commencé par un DH pour créer une clé de session). • Les hypothèses excluent la problématique des processus byzantins (menteurs ou fautifs selon les modèles). 245 Etape 2 • Le leader génère un nombre aléatoire (graine) et le garde en mémoire. • Le leader ajoute son salaire au nombre qu’il a généré et l’envoie à son succeseur sur l’anneau. • Un processus après réception d’une somme ajoute son salaire à la somme et le transmet à son successeur sur l’anneau. • Lorsque le leader récupère le résultat final, il retranche le nombre aléatoire qu’il avait généré. Il obtient ainsi la somme des salaires sans que personne ne connaisse le salaire de son voisin (ni d’un autre à cause de DH et de l’absence de coalition). 246 Généralisation • Loi commutative ) pour faire l’opération finale. ) • La graine doit être inversible pour la loi . • L’ensemble des graines doit être assez grand. • On doit avoir un algorithme de génération aléatoire d’une graine à peu près uniforme. • On garde la structure d’anneau et le leader. 247 Algorithme Général • Générer une graine aléatoire g inversible pour la loi ) . • Le leader (que l’on num”rote x1 ) calcule l’inverse de g (noté g −1 et le conserve. ) • Le leader effectue g xi et transmet le résultat r au processus 2. • Le processus i récupère r du processeur i − 1, effectue ) r ← r xi et envoie le résultat au processeur i + 1. • Lorsque le leader récupère de nouveau r il effectue r ← r et publie r. 248 ) g −1 Le diner des cryptographes Trois cryptographes Alice, Bob et David se réunnissent au restaurant et on leur annonce que le dinner est déjà payé soit par l’un d’entre eux, soit par la NSA. Ils veulent savoir si c’est l’un deux qui paie mais aucun ne veut l’annoncer clairement. Comment savoir si la NSA paie ou ne paie pas ? 249 Solution • Alice et Bob se réunisse et jettent une pièce non biaisée (Pile/Face) sans que David ne connaisse le résultat. Alice et Bob gardent le résultat et ne l’annoncent pas. • Puis Alice et David se réunissent et jettent une pièce non biaisée (Pile/Face) sans que Bob ne connaisse le résultat. Alice et Bob gardent le résultat et ne l’annoncent pas. • Puis Bob et David se réunissent et jettent une pièce non biaisée (Pile/Face) sans qu’Alice ne connaisse le résultat. David et Bob gardent le résultat et ne l’annoncent pas. • Chacun a vu deux pièces parmi trois. 250 Solution-Suite • Puis chacun des trois annonce l’information suivante : – Si il n’a pas payé, il annonce ”identique” si les deux pièces sont indentiques et ”différente” si elles sont différentes. – Si il a payé, il dit l’inverse de ce qu’il voit (ie il ment). • Chacun compte le nombre d’annonce ”identique” et ”différente”. • La NSA a payé si il y a un nombre pair d’annonce ”différente”. 251 Preuve • Vérifions que si tout le monde dit la vérité, le nombre d’annonce ”différente” est pair. • Si Alice annonce ”égale” et Bob ”égale”, David doit annoncer ”égale” (transitivité de l’égalité) et le nombre de ”différente” est nul. • Si Alice annonce ”égale” et Bob ”différente”, David doit annoncer ”différente” (déduction) et le nombre de ”différente” est 2. • Idem si Alice annonce ”différente” et Bob ”égale”. • Si Alice annonce ”différente” et Bob ”différente”, David doit annoncer ”égale” (déduction car il n’y a que deux valeurs) et le nombre de ”différente” est 2. 252 Suite • Si il y a un menteur le nombre d’annonce ”différente” est impair • par les mêmes techniques 253 Généralisation • généralisable à un anneau de taille quelconque. • On construit l’anneau virtuel de communication sécurisée. • Un sommet et son voisin génère en commun et en le cachant un bit aléatoire. 254 Constuire un bit aléatoire • Les générateurs Linear Congruentiel (LCG) ne sont pas aléatoires. • xn = a xn−1 + b mod p. Et x0 . • La séquence est finie, périodique et déterministe • Ils sont très faciles à prédire. • Structure de treillis pour les couples (xn , xn+1 . 255 Paradoxe : construction déterministe de l’aléatoire Von Neumann (1951) : Any one who considers arithmetical methods of reproducing random digits is, of course in a state of sin. As been pointed out several times, there is no such thing as a random number- there are only methods of producing random numbers, and a strict arithmetic procedure is not such a method. 256 Par application successive de DES • x0 est une clé secrète partagée entre les deux processus • xi = DES(xi−1 ) • et on utilise un bit de xi . • Autre chiffrement possible. 257 Envoi d’un bit anonyme • Les utilisateurs s’organisent comme un anneau logique. • A intervalle régulier les paires d’utilisateurs adjacents cree un bit aléatoire partagé et secret. • A intervalle régulier chaque utilisateur annonce ”identique” ou ”différent” selon les deux pièces générées et si il veut enovyer 1 bit. • Pour savoir si Alice ment il faut connaitre ses deux jets : coalition des deux voisins. • Analyse de trafic impossible : ils ont tous parlé. 258 Collision ? • Collision possible • Detection de collision en écoutant le nombre de ”différent” • Si détection, attente aléatoire et retransmission. • Certaines configurations de collisions ne sont pas détectables (3 emetteurs au lieu de 1) 259 Anonymat • Alice veut écrire anonymement à Bob. . . • Elle crèe un message pour Bob qui est mis dans une enveloppe pour Charlie et cette enveloppe est mise dans une enveloppe pour David. • Le message est expédié à David. • David ouvre son enveloppe, trouve une enveloppe pour Charlie et lui envoie. • Charlie ouvre son enveloppe, trouve une enveloppe pour Bob et lui envoie. • Bob a donc un message envoyé par Charlie et il ne sait pas que c’est Alice l’expéditeur. 260 Reconstruire le chemin • Au moins deux intermédiaires pour que personne ne connaisse emetteur et destinataire. • C’est possible théoriquement puisque chaque recepteur peut retrouver l’expéditeur. • Chemin inverse. • Mais dans la pratique si un des intermédiaires se situe dans un pays refusant la demande juridique, le chemin est cassé. • Analyse de trafic possible. 261 Minimiser le risque • Alice envoie n parties du message. • Chacun de sert à rien. • Il en faut n (ou k < n) pour reconstituer le message chez Bob. • Chacun passe par un chemin différent. 262 Prouver sans Dévoiler la Preuve • Zero Knoledge Proof. • En mathématique, la preuve est validée par sa présentation et son acceptaton par un jury d’experts (pour une publication dans une revue par exemple). • Donc il faut dévoiler la preuver. • Peut on prouver que l’on sait démontrer sans dévoiler la preuve. • Ce concept permet des applications multiples : par exemple en authentification, l’identité est la preuve que vous pouvez faire. 263 Idée de Base • Protocoles Interactifs. • Plus difficiles avec une mise en gage. • Victor pose à Patricia une série de questions que le secret permet de résoudre. • Si Patricia connait le secret, elle peut répondre correctement à toutes les questions. • Sinon Patricia répond au hasard et a une chance sur deux de répondre correctement. • Après n questions, Patricia a une chance sur 2n de repondre correctement aux n questions sans se tromper. • On prend n aussi grand que l’on veut. 264 Divulagation nulle • Si Patricia connait le secret, Victor en est persuadé mais il ne peut rien prouver à Alice. • Car Alice peut ne pas croire Victor. • Et Victor ne connait que les réponses de Patricia. • Pour prouver également le secret à Alice, Patricia doit de nouveau montrer des réponses aux questions. • Les questions doivent être différentes. . . 265 Version Simple (Quisquater) • Grotte avec un secret : une formule permettant de passer de C à D. • Victor est à l’entrée au point A • Patricia entre et se dirige en C ou en D. Depuis le point A Victor ne sais pas la destination choisie. • Victor entre et rejoint l’intersection B. • Victor choisit un chemin de sortie (C ou D) et demande à Patricia de l’utiliser. • Si Patricia a pris le bon chemin à l’aller, elle peut sortir sans utiliser le secret. • Par contre si elle a pris le mauvais chemin elle doit faire usage du secre pour se ramener au bon chemin. 266 • A chaque tour, on recommence toute la procédure. • Patricia doit utiliser son secret avec la proba 1/2 sauf si elle devine à l’avance ce que va demander Victor. • Donc le générateur doit être non prédictible. • Après n tours, la proba que Patricia ait réussi sans connaitre le secret est 1/2n . 267 Divulgation Nulle • Victor peut raconter à Alice que Patricia est sorti n fois par le bon chemin. • Mais Alice peut croire que Victor ment ou que Patricia a cassé le générateur aléatoire de Victor. • Alice doit redemander à Patricia n nouveaux défis pour être elle aussi convaincue. 268 Isomorphisme de Graphe • Deux graphes (V1,E1) et (V2,E2) sont isomorphes si et seulement si : • Il y a une bijection σ des sommets de V 1 vers ceux de V 2. • (x, y) ∈ E1 si et seulement si (σ(x), σ(y)) ∈ E2. • Tester si deux graphes sont isomorphes est un problème difficile. • Surtout quand ils ont les mêmes séquences de degré. 269 Divulgation nulle et Isomorphisme • Patricia connait un isomorphisme entre les graphes G1 et G2. • Patricia veut prouver à Victor qu’elle connait la bijection mais sans la montrer. 270 Algorithme • Patricia permutte aléatoirement les sommets de G1 pour obtenir un nouveau graphe H. H est donc aussi isomorphe à G2 et Patricia connait cet isomorphisme (c’est la composition de celui entre G1 et G2 et de l’isomorphisme aléatoire entre G1 et H. • Patricia envoie H à Victor. • Victor demande à Patricia de lui prouver que H et G1 sont isomorphes ou il lui demande de prouver que H et G2 sont isomorphes. • Patricia répond en donnant l’isomorphisme entre les deux graphes demandés. • On recommance les 4 étapes précédentes n fois. 271 Preuves • Si Patricia ne connait ps l’isomorphisme, elle ne peut pas créer un graphe isomorphe à G1 et à G2. • Elle pourrait en trichant en créer un isomorphe à l’un ou à l’autre et espérer que Victor demande celui là. • Elle a donc 1 chance sur deux de gagner en trichant. • Après n tours, la proba tombe à 1/2n . 272 Preuve-Suite • Patricia génère un graphe différent à chaque tour. • Donc Victor ne peut pas faire de la composition de bijections. • Même si Victor enregistre les réponses de Patricia, Alice peut penser que seuls les enregistrementss positifs ont été conservés ou que Victor et Patricia sont complices pour choisir le graphe cible, ou que Patricia a cassé le générateur employé par Victor pour choisir entre G1 et G2. 273 Circuit Hamiltonien • Un circuit Hamiltonien est un circuit qui passe une fois et une seule par tous les sommets d’un graphe. • Trouver un circuit Hamiltonien est un problème difficile lorsque le graphe est grand. • Attention, le problème du circuit Eulerien (qui passe par tous les arcs du graphe) est un problème facile. • Trouver le plus petit circuit d’un graphe est facile, trouver le plus grand est difficile. 274 Circuit Hamiltonien et Divulgation Nulle • Patricia connait un circuit Hamiltonien sur un graphe • Facile si on construit le graphe après le circuit. • On génère un anneau (le circuit Hamiltonien). • On rajoute des arcs aléatoirement sur le graphe • On permutte aléatoirement les sommets pour que la structure de l’anneau ne soit plus visible. 275 Algorithme • Patricia génère H : un graphe isomorphe à G par une permutation aléatoire. • Donc Patricia connait aussi un circuit Hamiltonien de H. • Patricie envoie H à Victor. • Victor demance à Patricia de lui donner un circuit Hamiltonien en H ou il lui demande un isomorphisme entre G et H. • Patricia envoie l’information demandée. • Ils recommencent n fois. 276 Preuves • Si Patricia triche, elle va générer un graphe isomorphe à G ou un graphe construit autour d’un anneau. • Donc elle pourra répondre correctement à une question. • Donc elle a une chance sur 2 de se tromper sur 1 tour. • Elle répond correctement en trichant aux n tours avec la probabilité 1/2n . 277 Preuves • Patricia ne dévoile pas le circuit de G. • Victor ne peut reconstituer le circuit de G à partir du circuit de H ou de l’isomorphisme de G vers H car H change à chaque tour. • Patricia génère elle même H. 278 Mise en Gage • Mettre en gage une décision qui doit rester cachée pendant une certaine période. • Qui pourra être révélée à la fin de la période. • Mais qui ne doit pas être changée pendant la période. • exemple : pari, enchère non intéractive (mieux disant dans un appel de marché) 279 Construction d’une suite aléatoire partagée • Alice et Bob ne se font pas confiance. • Ils veulent construire un bit aléatoire partagé pour que l’un d’entre eux effectue une opération. • Ils décident de construire chacun un bit et de faire le XOR. • Mais si l’un décide avant l’autre et montre son résultat, le second peut tricher pour obtenir le résultat voulu. 280 Suite aléatoire partagée avec gage • Alice met en gage son bit auprès de Victor pour une durée de 1 • Bob génère son bit et le révèle. • Victor révèle le bit de Alice. • Alice et Bob calculent le XOR. 281 Autorité pour mise en gage • Doit avoir une horloge certifiée utilisée par Alice et Bob. • Et une signature pour prouver la mise en gage. • Et une clé publique/clé privée pour que Alice puisse envoyer son bit crypté sans que Bob ne puisse le comprendre. • Ajouter aussi des infos aléatoires pour qu’il y ait plus de deux messages possibles. 282 Version symétrique • Alice met en gage son bit auprès de Victor • Bob met en gage son bit auprès de Victor • Victor révèle les bits de Alice et Bob. • Alice et Bob calculent le XOR. 283 Mise en gage avec une clé secrète • Bob envoie une chaine aléatoire R à Alice. • Alice cré un message consitué du bit b qu’elle veut mettr en gage et de la chaine R. • Elle chiffre ce message avec une clé aléatoire K et envoie EK (R, b) à Bob. • b est maintenant gagé et Bob ne peut pas le déchiffrer. 284 Révéler le gage • Alice envoie la clé K à Bob. • Bob déchiffre. • Comme il retouve la chaine aléatoire R, il sait que c’est la bonne clé et que le bit b est donc valide. 285 R • Si Bob ne fournissait ps une chaine R, Alice pourrait générer deux messages ayant le même cryptogramme mais avec des clés différentes et des bits différents. EK1 (b1) = EK2 (b2) • En effet il n’y a que deux messages E (b) si b est un bit. • Et Alice peut donc décider comment déchiffrer pour trouver deux résultats différents. Il n’y alors pas de mise en gage. • En ajoutant R un chaine longue, on réduit les possibilités de cette collision. 286 Mise en gage avec une fonction à sens unique • Alice engendre deux chaines aléatoire R1 et R2 • Alice crée un message avec les deux chaines et le bit b à mettre en gage : (R1,R2,b). • Alice applique une fonction à sens unique H au messaget envoie à Bob le résultat et une des deux chaines aléatoires : H(R1,R2,b), R1. • Ceci est la mise en gage de b 287 Divulgation de b • Alice envoie le message initial (R1,R2,b) • Bob applique H à (R1,R2,b), vérifie que le résumé est bon et que la chaine R1 est bien dans le message. • Si OK, il accepte b comme gage. 288 H • Comme la fonction H est à sens unique, Alice ne peut trouver une valeur R3 telle que H(R1,R2,b) = H(R1,R3,b’) • Si Alice ne divulge pas R1 elle pourrait trouver une changer R1 et trouver une collision sur H 289 Preuve à Divulgation Nulle non Interactive • Avec mise en gage. • Augmenter n pour un même niveau de confiance. • Une fonction à sens unique remplace Victor 290 Protocole • Patricia utilise son secret et n nombres aléatoires différents pour transformer son problème difficile en n problèmes isomorphes différents. • Elle résoud les n problémes grace à son secret et aux isomorphismes. • Elle met en gage les solutions aux n problemes • Elle utilise les mises en gage comme entrée d’une fonction de hachage à sens unique. Elle sauve les n premiers bits du résultat de la fonction de hachage. 291 Protocole-Suite • Elle examine les n bits un par un. • Le bit i est associé au problème i. • Si le bit i vaut 0, elle prouve que l’ancien et le nouveau problème sont isomorphes en dévoilant l’isomorphisme. • Si le bit i vaut 1, elle dévoile la solution du problème i mise en gage précédemment. • Patricia oublie toutes les mises en gage et les réponses. • Tout le monde peut vérifier. 292 • Alice ne peut pas tricher car elle ne peut pas connaitre à l’avance les bits du résumé construit par la fonction de hachage à sens unique. • Cette fonction se comporte comme un générateur aléatoire non biaisé de bits. • Il faut que n soit grand pour éviter que Patricia calcule à l’avance des exemples et des résumés. 293 Identification par preuve à divulgation nulle • La clé privée d’Alice devient son identité. • Grâce à une preuve à divulgation nulle, elle prouve qu’elle connait sa clé privée sans la dévoiler. • Quelques fraudes possibles du type passeur de seau. 294 Quelques protocoles pour jouer • Pile ou Face • Poker à 2 joueurs • Poker à 3 joueurs 295 Pile ou Face avec Cle publique • A condition que l’algorithme soit commutatif au sens suivant : DK1 (EK2 (EK1 (M )))) = EK2 (M ) pour tout message M . • Vrai pour RSA. • Commutativité des chiffrements. 296 Protocole • Alice et Bob engendrent chacun une paire clé publique- clé privée. • Alice engendre deux messages Pile et Face et une chaine aléatoire unique. M1=(Pile,R), M2=(Face,R) • Alice les chiffre avec sa clé publique EA (M 1) et EA (M 2). • Bob choisit parmi les deux messages au hasard car il est incapable de les déchiffrer. Il chiffre avec sa clé privée : EB (EA (M )) et l’envoie à Alice. • Alice applique le déchifrement avec sa clé privée et envoie le résultat à Bob : DA (EB (EA (M ))) 297 Protocole Suite • A cause de la propriété, le message vaut EB (M ). • Bob déchiffre le message avec sa clé et trouve M (cad M1 ou M2) et l’envoie à Alice. • Alice verifie que la chaine aléatoire est correcte. • Alice et Bob révèlent leurs clés pour vérifier qu’ils n’ont pas triché. 298 Poker à 2 joueurs • Alice génère 52 messages, les chiffre, et les expédie à Bob. • Celui ci en choisit 5. • Idem pour les cartes supplémentaires. • C’est pratiquement le même algo que précédemment. 299 Poker à l’aveugle à 3 joueurs • Ou Plus • Toujours avec un algorithme de chiffrement commutatif. • Alice, Bob et David génèrent chacun un couple clé publique-cle privée qui sera jeté à la fin du protocole. • Anneau Virtuel. 300 Protocole • Alice engendre 523 messages (un pour chaque carte). Ces messages contiennent aussi une clé aléatoire unique. Alice chiffre avec sa clé publique et envoie les messages à Bob. EA (M ). • Bob choisit 5 messages au hasard (il ne sait pas les déchiffrer). • Bob envoie à Alice les 5 messages qu’il a surchiffré : EB (EA (M ). • Bob envoie à David les 47 messages restants 301 Protocole - Suite • David prend 5 des 47 messages au hasard (il ne sait pas lui non plus les déchiffrer). • David surchiffre les 5 messages avec sa clé et les envoie à Alice. • Alice applique sa clé de chiffrement et à cause de la commutativité trouve les messages EB (Mi ) et ED (Mj . • Elle envoie ces messages à Bob et à David qui peuvent finir le déchiffrement pour obtenir leurs cartes. 302 Protocole - Suite • David choisit 5 autres messages au hasard parmi les 42 restant et les envoie à Alice sans surchiffrement (c’est les cartes d’Alice). • Alice déchiffre à l’aide de sa clé privée. • A la fin, Alice, Bob et David montrent leurs clés pour que tous puissent vérifier que personne n’a triché. 303 Accumulateur à sens unique • Une fonction h de hachage à sens unique commutative quand on l’emploie en accumulation. • h(M 1, h(M 2)) = h(M 2, h(M 1)) • Initialisation. • Pour déterminer si deux processus font partie du même groupe. • Tous les noms du groupe sont connus mais ne doivent pas être dévoilés. 304 Protocole • L’identité d’Alice est composé de son nom Alice et de h appliquée à tous les noms du groupe sauf Alice, hA • L’identité de Bob est composé de son nom Bob et de h appliquée à tous les noms du groupe sauf Bob. • Alice applique h à Bob et hA • Bob applique h à Alice et hB • Ils comparent leur résultat (par exemple avec une mise en gage) • si ils sont dans le même groupe, le résultat est le même (à cause de la propriété de commutativité). 305 Stéganographie et extensions • Stéganographie (cacher une information dans une autre) : l’approche historique • Digital WaterMark (cacher un copyright dans une info) : ce qui devient important • Stéganalyse (analyser et casser les mécanismes précédents) • Associé à des dispositifs logiciels de vérification de droit de propriété 306 Stéganographie Définition : techniques qui consistent à dissimuler un message, que l’on souhaite transmettre confidentiellement, dans un ensemble de donnees visibles, d’apparence anodine, de façon que sa presence soit imperceptible. Remarque : l’information peut être chiffrée ou non.. 307 Appreçu Historique • Première mention historique : Herodote • Encre invisible • Null Cyphers (texte en clair où l’accentuation, les majuscules, une règle algorithmique simple permet d’extraire les lettres du vrai message) • Plus récemment : micro-dots • la digitialisation complète de l’information offre de multiples nouvelles possibilités : texte, son image, etc... 308 Null Cypher : un exemple Message envoyé par un espion Allemand (WWII) [Kahn67]: ”Apparently neutral’s protest is thoroughly discounted and ignored. Isman hard hit. Blockade issue affects pretext for embargo on by products, ejecting suets and vegetable oils.” En prenant la seconde lettre de chaque mot on obtient : ”Pershing sails from NY June 1.” Dans le même genre, essayez la correspondance entre Georges Sand et Alfred de Musset.... 309 Micro-dots • Créé par l’Allemagne (WWII) • ”the ennemy’s masterpiece of espionage”, J. Edgar Hoover, Directeur FBI • Photographie de la taille d’un point et mélangé à un texte • Malgré la taille réduite, permet de transmettre une grande quantité de données, y compris dessins et photos • Très difficile à détecter 310 Information Digitale Tout est Signal... (le fonds et la forme) • Ne pas changer la taille du signal • Remplacer des bits du signal par une partie du message • Perturbation minimale • Bits de poids faible du signal pour minimiser l’effet de la perturbation • Adaptée à la nature du signal et donc du codage 311 Tout est signal.. • La forme : utiliser le Layout d’un document pour en cacher un autre, utiliser le format ou les bad-blocks du disque (ou d’une disquette), • Le fonds : adapté à la nature du signal et du codage : audio, vidéo, image, texte, etc... Il nous faut un ”Traitement du signal adéquat” 312 Null Cypher revisité Une approche lié à la typographie • On prend un texte formatté par un traitement de texte qui sait faire de la justification forcée. • Chaque mot du texte réel est encadré par un espace et demi • Les autres mots sont encadrés par un ou deux espaces. 313 Texte simple • On ajoute en fin de ligne de 0 à 3 espaces • Chaque ligne comporte donc 2 bits d’information • Le texte n’est pas modifié 314 Exemple : Image en Niveau de Gris • Supposons que l’on utilise une image en 256 niveaux de gris comme signal (8 bits par pixel) • Et une image à cacher en 2 niveaux de gris et de même taille (1 bit par pixel) • On suppose que l’oeil humain ne fait pas la différence entre deux niveaux de gris consécutifs • la difference de codage entre deux niveaux de gris voisins porte sur le dernier bit du codage (bit de poids faible) • on dissimule chaque pixel de l’image à cacher dans le bit de poids faible du pixel de l’image signal 315 Limitations • L’oeil est plus sensible... • La sensibilité n’est pas constante • Le codage ne résiste pas aux méthodes de compression JPEG • Certaines images sont plus compactes qu’une généralisation à beaucoup de niveaux de gris ou des couleur (exemple : les palettes de GIF). Par contre le True Color est une généralisation de ce codage sur 3 octets. 316 Image Gif • On commence par définir une palette de 256 couleurs parmi 224 possibilités (28 pour le rouge, 28 pour le vert, 28 pour le bleu) • On trie la palette pour que la différence entre deux couleurs consécutives soit quasi imperceptible (pas facile) 317 Image Gif- suite • Pour chaque pixel : – on cherche l’index du pixel dans la palette triée – on met le bit de l’image à cacher sur le bit de moindre importance de l’index de la palette triée. – Ce qui provoque un decalage de 1 ou de 0 pour l’index dans la palette triée (la différence entre les deux couleurs va être imperceptible...) – La valeur modifiée de l’index dans la palette triée correspond à un index dans la palette non triée. On remplace alors le pixel en cours par l’index de la palette non triée. 318 Inversion Pour chaque pixel, • on cherche l’index du pixel dans la palette triee • le bit de poids faible de cet index vient du masque appliqué sur l’image. Cette méthode est une généralisation du marquage sur le bit de poids faible aux images qui ont une palette contrairement aux images ”true color” ou chaque pixel a ses propres composantes RGB. 319 Bibliographie Histoire • D. Kahn, ”The Codebreakers: the story of secret writing”, Macmillan, 1967 (remis à jour...) • D. Kahn, ”Seizing the Enigma”, Houghton Mifflin, Boston, 1991. • S. Singh, ”Histoire des Codes Secrets”, JC Lattes, 1999. • 320 Bibliographie Algorithmique, Protocole, Sécurité • B. Schneier, ”Cryptographie Appliquée : Algorithmes, Protocoles et codes source en C”, Wiley-Thomson, 1997. En anglais, chez le même éditeur, ”Applied Cryptography”. • W. Stallings, ”Cryptography and Network security”, Prentice Hall • R. Nichols, ”ICSA Guide to Cryptography”, Mc Graw Hill, 1999 • 321 Bibliographie Mathématique • D. Stinson, ”Cryptographie, théorie et pratique”, Wiley-Thomson,1996. • M. Schroeder, ”Number Theory in Science and Communication, with applications in cryptography, physics, digital information, computing and self similarity”, Springer Verlag, 1986. D.E.S • Electronic Frontier Foundation, ”Cracking DES, secrets of Encryption Research, Wiretap Politics and Chip Design”, O’Reilly, 1999. • 322