TD 3 - RSA Exercice 1. La clé publique de Bob est N = 247 et E = 11, et sa clé privée est D = 59. 1. Aidez Alice à chiffrer le message clair M = 100 pour l envoyer à Bob. 2. Le cryptogramme C = 52 est reçu par Bob. Aidez-le à le déchiffrer. Exercice 2. 1. Pour fabriquer son chiffre RSA, Bob a choisi les deux nombres premiers p = 13 et q = 23. Calculer le module N et le nombre ϕ. 2. Bob doit maintenant choisir son compliqueur E. Le nombre 41 constitue-t-il un compliqueur acceptable? Pourquoi? Le nombre 72 constitue-t-il un compliqueur acceptable? Pourquoi? 3. Réflexion faite, Bob a choisi le compliqueur E = 83 (on ne vous demande pas de vérifier qu il est acceptable). Calculer le faciliteur correspondant D. 4. Bob va maintenant publier la partie publique de son chiffre RSA. Indiquez de quoi est constituée cette partie publique. Exercice 3. Alice a publié la partie publique de son chiffre RSA : E A = 179 et N A = 629. La partie privée de son chiffre est D A = 251. Bob a publié la partie publique de son chiffre RSA : E B = 601 et N B = 851. La partie privée de son chiffre est D B = 481. Alice veut envoyer un message (codé numériquement par un seul nombre M = 342) à Bob. 1. Quel est le calcul que doit effectuer Alice pour chiffrer son message? Vous noterez C le message chiffré. 2. Quel est le calcul que doit effectuer Bob pour déchiffrer C? Vous noterez M le message déchiffré. Exercice 4. Alice a publié la clef publique de son chiffre RSA : N = 391 et E = 151, et elle a conservé en lieu sûr sa clef privée D = 7. 1. Bob lui transmet un message sous la forme du nombre : C = 17. Quelle opération Alice va-t-elle effectuer pour déchiffrer ce message? Quel nombre va-t-elle obtenir? 2. Retrouvez les deux nombres premiers p et q (le nombre N étant petit, c est faisable). En déduire ϕ(n). 3. Quelle relation existe-t-il entre E et D? Vérifiez cette relation sur les nombres donnés. Exercice 5. 1. On considère un chiffre RSA constitué du module N = 221, du compliqueur E = 11 et du faciliteur D = 35. On ne demande pas de vérifier que ces valeurs sont acceptables. (a) Chiffrer le message M = 112. (b) Déchiffrer le cryptogramme C = 78. 2. Pour fabriquer un chiffre RSA, on a choisi p = 53 et q = 71. (a) Calculer le module N et le nombre ϕ(n). (b) On choisit le compliqueur E = 307. Vérifier qu il est acceptable et calculer le faciliteur correspondant D. (c) Indiquer quels sont les éléments qui constituent la clé publique et quels sont les éléments qui constituent la clé privée de ce chiffre RSA. (d) Que faut-il faire des éléments restants? Pourquoi?
TD3 - Attaques par canaux cachés 1 La cryptanalyse en quelques mots Attaque par force brute On énumère toutes les clés secrètes possibles. Chiffrements par décalage : 26 Chiffrements affines : 12 26 Permutation quelconque lettre à lettre : 26! 4. 10 26 Pour Enigma (allemand, WW2) : environ 10 16 Pour DES (Data Encryption Standard, protocole symétrique) : 2 56 7.10 16 Des attaques plus subtiles Celles-ci exploitent des faiblesses des protocoles. Chiffrement par décalage : correspondance entre 2 lettres. Chiffrement affine : (parfois) correspondance entre 2 paires. Chiffrement par permutation : fréquences et dictionnaire. Pour Enigma, l attaque repose sur des faiblesses dans la mise en oeuvre. Pour DES, cryptanalyse différentielle (observation de l effet de petites perturbations d un message sur le chiffré). Remarque. Ces attaques se font dans des cadres différents. Par exemple l attaque différentielle nécessite de pouvoir faire chiffrer de nombreux messages. C est raisonnable si l on se place dans le cadre de cryptographie embarquée, c est-à-dire sur des puces (exemple d utilisation : télé crypté). Attaques par canaux cachés Il ne suffit pas de fixer une grosse clé pour être tranquille. On peut déduire des informations importantes, voir la clé secrète en «observant» l activité du processeur temps de calcul consommation énergétique température rayonnement D autres attaques plus sophistiquées (attaque au flash, attaque au laser) perturbent physiquement un composant de la puce à un instant donné (inversion de bits pendant le calcul). 2 Attaque par canaux cachés de RSA Retour sur le déchiffrement RSA Bob calcule C à partir du message M Alice déchiffre C en calculant C D mod N qui vaut M. Ici D est secret. Si Charlie découvre D, il pourra déchiffrer le prochain message envoyé par n importe qui à Alice! Retour sur l exponentielle modulaire rapide Exemple. 174 37 mod 187 =? On utilise 37 = 32 + 4 + 1 = 2 5 + 2 2 + 2 0 = bin 100101 donc x 37 mod 187 = ( (x 2 mod 187) 2) 2 (x 2 mod 187) x donc Soit x 37 mod 187 = ( (x 2 mod 187) 2) 2 (x 2 mod 187) x i 0 1 2 3 4 5 (174) 2i mod 187 174 169 137 69 86 103 174 37 = 174 137 103 = 4 mod 187 Attaque temporelle? nombre de bits de la clé + nombre de 1!
Attaque par analyse simple de la consommation les bits de la clé! Remarque. L attaque repose sur le fait que le circuit calculant un produit est différent de celui qui calcule un carré (le second est plus efficace). Exemple. On analyse les pics de consommations et on retrouve des motifs pour chaque étape : soit un carré seulement (bit de la clé correspondant 0) ; soit un carré puis une multiplication (bit égal à 1). On peut lire les bits de la clés (de droite à gauche). sens de lecture de l attaque 1 0 1 0 0 1 sens de lecture des bits Récapitulatif de l attaque par analyse simple de la consommation Charlie branche son oscilloscope sur l ordinateur d Alice (ou bien il prend des jumelles thermales) Charlie attend que Bob envoie un message C à Alice et intercepte ce message Charlie observe le calcul d Alice par le biais du canal caché Il retrouve la clé secrète d Alice D en binaire Il lui reste à faire lui-même le calcul C D mod N (le modulo N est public) pour retrouver le message M! 3 Une contre-mesure Puisque l attaque repose sur le fait qu à chaque étape on ne fait pas forcément de multiplication, on change un petit peu le code en faisant une multiplication à chaque étape, même si elle ne sert à rien! Square and multiply always Exponentiation rapide classique b=1 else: b=b*x2%n b=b*x2%n Remarque. La consommation est indépendante du bit de la clé dans le second cas. A chaque étape il y a une élévation au carré et un produit. Attaque au flash Il y a Encore une faiblesse. On peut physiquement changer une variable en cours d exécution et contre Square and multiply always on peut retrouver les branches bidons. La technique de l échelle de Montgomery permet d éviter à la fois l attaque par analyse simple de la consommation et l attaque au flash.
4 Exercices Exercice 1. Bob a publié la partie publique de sa clé RSA sur sa page web : N = 143, E = 73. Alice code un message M et envoie C = 8 à Bob. Bob décode le message C et retrouve M = M. Flashback : Charlie a branché son oscilloscope sur l ordinateur d Alice et il observe le tracé ci-dessous. Que peut-il (Charlie) déduire de ce tracé? Exercice 2. Comme précédemment, Bob a publié la partie publique de sa clé RSA sur sa page web : N = 143, E = 73. Alice code un message M et envoie C = 8 à Bob. Bob décode le message C et retrouve M = M. Flashback : Charlie a branché son oscilloscope sur l ordinateur de Bob et il observe le tracé ci-dessous. Que peut-il (Charlie) déduire de ce tracé? Exercice 3. Bob s aperçoit que son code actuel pour faire une exponentielle rapide est un peu idiot. Il change donc son code comme ci-dessous. Code après changement Code avant changement x1=x % N else: Comme Bob est content de cette amélioration et qu il porte un t-shirt Tux, il publie sur sa page web un patch de ce code. Bob ne change pas sa clé RSA publique qui est toujours N = 143, E = 73. Le lendemain, Alice code un message M et envoie C = 69 à Bob. Bob décode le message C et retrouve M = M. Charlie a branché son oscilloscope sur l ordinateur de Bob et il observe le tracé ci-dessous. Est-ce-que Charlie peut retrouver la clé D qu il connaît déjà en observant ce tracé?
5 Pour aller plus loin La technique de l échelle de Montgomery Il s agit d une méthode permettant de calculer l exponentielle rapide, dont le pseudo-code est ci-dessous (la notation est la même que pour la méthode classique). x1=x ^2 for i=k-2 to 0 do x2 = x1*x2 % N x1 = x1^2 % N Remarque. Attention, ici on procède dans un ordre différent que précédemment (poids forts vers les poids faibles : on lit les bits de la clé dans l ordre habituel de lecture). Exercice 4. Faite tournez les deux programmes (classique et Montgomery) sur l exemple du cours (C = 174 et D = 37) pour comprendre ce qui se passe. Pour éviter de se mélanger avec des chiffres, on notera par c 0, c 1,..., c 5 les valeurs des carrés successifs (174,169, etc). Vous pouvez présenter les étapes de calcul dans deux tableaux : Montgomery Classique i di x1 x2 5 1 c 0 c 1 4 0 3 0 2 1 1 0 0 1 i di x1 x2 0 1 c 0 c 0 1 0 2 1 3 0 4 0 5 1 Exercice 5. Démontrez que Montgomery calcule bien ce qu il faut, à savoir la même chose que l exponentielle rapide (on suppose que l exposant n est jamais 0). (indication. faire une preuve par récurrence sur le nombre de bits de l exposant en démontrant une propriété un peu plus forte à savoir que à la fin du programme x 1 a pour valeur x D mod N et que x 2 a pour valeur x D+1 mod N).