I. Présentation : La méthode RSA est un système cryptographique asymétrique [*]. Il a été inventé en 1977 par Ron Rivest, Adi Shamir et Len Adleman, 3 chercheurs en informatique, nommant alors ce chiffre RSA d’après leurs initiales. La grande innovation de ce système est le principe de cryptage avec une clé publique, et de décryptage via une clé privée : ▪ La clé publique est divulguée librement et a pour but de chiffrer un message en sens unique, sans permettre de le déchiffrer. ▪ La clé privée est en revanche unique et à usage personnelle, elle à pour rôle d’inverser l’effet de la clé publique. D’un point de vue mathématique, la clé publique est en partie constituée de 2 nombres appelés littéralement p et q, premiers, et dont le produit est égal à n. Ne connaissant que le nombre n, il est extrêmement difficile de retrouver les nombres p et q d’autant plus que ces nombres soient grands. En effet, si p et q sont de l’ordre de 1065, n est de l’ordre de 10130, et il faudrait alors plus de 5 ans pour factoriser ce nombre à la fréquence de 1000MHz (puissance moyenne d’un ordinateur en l’an 2000). Aujourd’hui, l’ordre de grandeur de n pour les transactions bancaires est de 10308. La sécurité est donc assurée, jusqu’à ce qu’un nouveau procédé de factorisation rapide soit inventé (comme l’ordinateur quantique), ou que de nouveaux moyens mathématiques soient découverts, ce qui réduirai immédiatement l’efficacité d’un tel système. II. Principe et fonctionnement : Imaginons qu’une personne veuille envoyer un message d’une manière sécurisé à un destinataire, de façon à ce que même si ce message soit intercepté par un tiers, il ne serait pas déchiffrable. Comment procéder ? D’abord, le destinataire du message va préparer 2 clés : ▪ Une clé publique (qui sera divulgué librement) ▪ Une clé privée (qui sera conservé précieusement) Ensuite, l’émetteur va préparer son message puis le crypté grâce à la clé publique du destinataire. Il peut alors lui envoyer le message. Enfin, le récepteur de ce message va pouvoir le déchiffrer à l’aide de sa clé privée, qui est le seul à détenir. 1) Préparations des clés : a) Clé publique 1. Trouver deux nombres premiers p et q distincts (p et q doivent restés confidentielles) 2. Calculer n = p × q 3. Calculer φ (n) = (p-1) × (q-1) 4. Choisir un nombre e quelconque premier avec f (le PGCD de e avec f doit être égal à 1) ► Notre clé publique est (n ; e) b) Clé privée 1. Trouver d tel que e × d 1 [φ (n)] 2. La relation précédente peut aussi s’écrire : e × d = φ (n) × k + 1 3. Les conditions suivantes doivent alors êtres respectés : 1 ≤ d < φ (n) et k est un nombre entier. ► Notre clé privée est (p ; q ; d) 2) Préparations du message : a) Numérisation 1. Transcrire le message d’un langage alpha-numérique en un langage numérique (remplacement des lettres, symboles et caractères en langage décimal). 2. Pour cela, il est possible d’utiliser le code ASCII. b) Découpage 1. Il faut à présent découper le message numérique en tranche t, comportant un chiffre de moins que le nombre de chiffres de n. 3) Cryptage : L’émetteur crypte le message pour l’envoyer au destinataire. 1. Il chiffre chacune des tranches T en tranche T’ grâce à la relation : Te T’ [n]. Cette étape équivaut à verrouiller le cadenas du "coffre" contenant le message. 2. Il envoie ensuite le message crypté contenant les différentes tranches T’. 4) Décryptage : Le destinataire reçoit le message crypté et le déchiffre. 1. Il déchiffre chacune des tranches T’ en tranche T grâce à la relation : T’d T [n]. Cette étape équivaut à déverrouiller le cadenas avec la clé privée. 2. Il retrouve alors les tranches t d’origines. 3. À présent, il ne reste plus qu’à rassembler les tranches t puis à les retranscrire en langage d’origine. 4. Le message a bien été transmis et reçu d’une façon confidentielle ! III. Exemple : 1) Préparations des clés : a) Clé publique ▪ Choisissons : p = 19 ; q = 23. ▪ Ainsi, n = p × q = 19 × 23 = 437, Donc n = 437. ▪ φ (n) = (p-1) × (q-1) = 18 × 22 = 396 Donc (n) = 396. ▪ Plusieurs valeurs sont possibles pour e. PGCD (e ; (n)) = 1 Prenons e = 43 ► Notre clé publique est (n ; e), donc égal à (437 ; 43) b) Clé privée ▪ e × d 1 [ (n)] 43d 1 [396] On a donc d = 175 (d = (396k + 1) / 43 avec k IN ici k = 19) ► Pour determiner le nombre k, Nous entrons la fonction (396x + 1) / 43 sur le tableur de sa calculatrice, et nous regardons pour quelle valeur de x, le résultat est un entier. ► La clé privée est (p ; q ; d), donc égal à (19 ; 23 ; 175) 2) Préparations du message : a) Numérisation 1. Il s’agit de convertir le message en nombres, en utilisant le code ASCII de façon à transcrire numériquement le message... 2. Le message « MATHS » devient alors 7765847283 en langage décimal. b) Découpage 1. À présent, nous découpons le message numérique en tranche T, d’un chiffre de moins que le nombre de chiffres de n. n = 437, il y a 3 chiffres, donc chaque tranches T comportera 3 - 1 = 2 chiffres. Ainsi, on a : 77 65 84 72 83. 3) Cryptage : Il s’agit maintenant de crypter le message. 1. Pour ce faire, nous utilisons la clé publique pour chaque bloc : 7743 210 [437] 6543 293 [437] 8443 388 [437] 7243 146 [437] 8343 235 [437] Le message codé est donc M’ = 210 293 388 146 235. 4) Décryptage : Décryptons le message crypté : M’ = 210 293 388 146 235. 1. On utilise donc la clé privée pour décrypter ce message, et récupérer le véritable contenu. Chacun des blocs de 3 chiffres est élevé à l’exposant d de la clé privée, ici égale à 175, et congru au message d’origine modulo 437 : 210175 77 [437] 293175 65 [437] 388175 84 [437] 146175 72 [437] 235175 83 [437] 2. Ainsi M = 77 65 84 72 83. 3. À présent, il ne reste plus qu’à retranscrire le message en langage d’origine : 77 65 84 72 83 = « MATHS » 4. Le message a été correctement transféré ! *. Cryptographie asymétrique : La cryptographie asymétrique, ou cryptographie à clé publique est fondée sur l’existence de fonctions à sens unique, c’est-à-dire qu’il est simple d’appliquer cette fonction à un message, mais extrêmement difficile de retrouver ce message à partir du moment où on l’a transformé. IV. Explication mathématique : 1) Théorèmes : a) Petit théorème de Fermat (admis) Soit p un entier naturel et p premier. Alors : ap a [p] D’où : ap-1 1 [p] b) Théorème de Fermat-Euler Soit a un entier naturel. On a d’après le théorème précédent : a p-1 1 [p] (a p-1) q-1 1 [p] D’où : a (p-1) (q-1) = k × p + 1 a q-1 1 [q] (a q-1) p-1 1 [q] D’où : a (p-1) (q-1) = k’ × q + 1 On a donc : a (p-1) (q-1) – 1 = k × p = k’ × q Ainsi, k × p = k’ × q Comme p et q sont premiers entre eux et p | k’ × q alors : p | k’ d’où : k’ = s × p (avec s entier naturel) Ainsi, a (p-1) (q-1) – 1 = s × (p × q) a (p-1) (q-1) 1 [p × q] Ainsi la généralisation du petit théorème de Fermat nous donne : ► a (n) 1 [n] 2) Raisonnement mathématique : Soient M une tranche du message clair et M’ le message crypté correspondant à M. Nous rappelons que : e × d 1 [ (n)] Soit un nombre Z tel que : Z M’ d [n] et 0 Z < n Donc on a : Z (M e) d [n] Z M e×d [n] Z M × M (e×d)-1 [n] Z M × M k× (n) [n] (car M’ M e [n] ) Z M × 1 [n] (car d’après le théorème de Fermat-Euler on a a (n) 1 [n] ) (car e × d 1 [ (n)] e × d – 1 0 [ (n)] e × d – 1 = k × (n) ) Donc, Z M [n] Or l’écriture décimale de M à un chiffre de moins que n et on a M 0 Donc 0 M < n Donc Z = M Ainsi, suite au cryptage RSA (M e M’ [n]), le message crypté élevé à la puissance d est congru au message claire modulo n : M’ d M [n] V. Points forts et faiblesses : 1) Avantages : La méthode de cryptographie RSA est un procédé actuellement très fiable et très utilisé qui regroupe tous les avantages d'un système cryptographique idéal. Il est d'ailleurs considéré comme le plus efficace des systèmes cryptographiques à clé publique. Sa grande force repose sur la difficulté de décomposer de très grands nombres en produit de facteurs premiers et établi ainsi un lien mathématique pratiquement incassable entre clé privée et clé publique. Si la taille du nombre n dépasse 1024 bits, alors il est impossible avec les moyens actuelles, d'en déterminer les facteurs premiers le composant, et donc, l'information transmise par ce système reste dans une confidentialité absolue. Si la taille de ce nombre atteint 4096 bits, alors il est inespéré qu'il soit factorisé dans un avenir prévisible. 2) Inconvénients : La principale faiblesse de ce système est qu'il n'est théoriquement pas impossible de décomposer de grands nombres en produit de facteurs premiers. D'ailleurs, l'évolution des technologies et des puissances de calculs, repousses toujours plus loin les limites de factorisation. En effet, une clé de 256 bits peut être factorisé en quelques heures par un ordinateur individuel, et une clé de 512 bits peut être cassé par l'associativité de nombreux ordinateurs, en un temps raisonnable. L'actuel record de factorisation, réalisé en 2005, à permis de décomposer entièrement un nombre de 663 bits en produit de facteur premiers par calcul distribué. Donc, si la taille des clés reste inférieure à 1024 bits pour l'échange d'un message, sa sécurité ne sera pas totalement assurée. De plus, si l'on admet que la puissance des ordinateurs double tous les 18 mois (loi de Moore), alors il faudra constamment repousser la taille des clés. Une clé de 2048 bits par exemple, devrait tenir jusqu'en 2079. Mais il faut également prendre en compte la possibilité que de nouveaux procédés de factorisations soient découverts dans l'avenir et permettent ainsi de réduire, si ce n'est d'anéantir, le temps de factorisation nécessaire sur grands nombres. Enfin, les progrès de la physique vont peut-être sonner le glas de la cryptographie mathématique. Il a été défini, du moins en théorie, un modèle d'ordinateur quantique qui permettrait de factoriser très rapidement des entiers. Les ordinateurs quantiques n'en sont encore qu'à leurs prémices mais finiront un jour où l'autre par rendre le système RSA obsolète. VI. Annexe Définition : ASCII (code de norme américaine pour l’échange de l’information), généralement prononcée [’æski], est un codage de caractère basé sur l’alphabet anglais. Les codes d’ASCII représentent le texte dans les ordinateurs, le matériel de transmissions, et d’autres dispositifs qui fonctionnent avec le texte. La plupart des codages modernes de caractère, qui soutiennent beaucoup plus de caractères, ont une base historique dans l’ASCII. Echantillon de la table du code ASCII qui fait correspondre des nombres à des caractères. A 65 B 66 C 67 D 68 E 69 F 70 G 71 H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79 P 80 Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90