Yves Coudert ENONCE : La méthode de codage RSA (Niveau : Terminale S enseignement de spécialité) La méthode de cryptographie RSA a été inventée en 1977 par Ron Rivest, Adi Shamir et Len Adleman ,au Massachusetts Institute of Technology, à la suite de la découverte de la cryptographie à clé publique (chiffrement asymétrique) par Diffie et Hellman. Le RSA est encore le système cryptographique à clé publique le plus utilisé de nos jours. Le RSA est basé sur la théorie des nombres premiers, et sa robustesse tient du fait qu’il n’existe aucun algorithme de décomposition d’un nombre en facteurs premiers. Alors qu’il est facile de multiplier deux nombres premiers, il est très difficile de retrouver ces deux entiers si l’on en connaît le produit. Les clés publiques de codage sont deux entiers n et e, où n est le produit de deux nombres premiers p et q très grands et e est un entier premier avec (p-1)(q-1). La clé privée de décodage est d qui vérifie d x e ≡ 1 ( (p-1)(q-1) ). Nous allons illustrer la méthode sur un exemple simplifié pour avoir des calculs abordables avec une calculatrice en choisissant n = 26 = 2 x 13 et e =5. On va affecter à chaque lettre de l’alphabet un nombre entier naturel compris entre 0 et 25. Par exemple, on peut utiliser le tableau suivant : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 A- Principe de codage RSA On fait associe a chaque entier x représentant un symbole le reste y dans la division euclidienne de x5 par 26. 1) Coder le mot codage. 2) a) Montrer que 5 et (2-1)(13-1)=12 sont premiers entre eux et écrire l’identité de Bézout associée. b) Soit x un entier. Montrer que x25 ≡ x (2) et x x25 ≡ x (13) et conclure : x25 ≡ x (26) c) Vérifier que la clé de décodage est d= 5 soit : si y ≡ x5 (26) alors yd ≡ x (26) 3) Décoder le mot BON B – Programmation du codage et décodage RSA 1) Ecrire un programme, à l’aide d’une calculatrice, qui permet de coder ou coder une « phrase » constituée de nombres compris entre 0 et 26 avec soit les clés publiques n = 26 et e =5 ou la clé privée d = 5. On pourra utiliser une liste pour entrer la phrase à coder ou décoder. 2) Appliquer le programme pour décoder : 5 10 7 8 6 8 15 0 15 8 14 13 18 1 Yves Coudert Correction avec la Graph 35 + USB Nous proposons ici une correction avec la calculatrice Graph 35 + USB qui est également applicable pour les modèles graphiques Graph 75, Graph 95 et fx CG-20. A- Le principe de codage RSA 1) Nous allons coder chaque lettre contenue dans le mot codage, en commençant par transformer chaque lettre par un nombre : 2 14 3 0 6 4 pour coder 2 : 25 ≡ 6 (26) Sélectionner MENU puis se déplacer à l’aide du bouton directionnel sur l’icône RUN MAT puis faire EXE ou alors taper 1 . Pour calculer le reste de la division de 23 par 33 on va sélectionner la fonction modulo (MOD) OPTN F6 (>) F4 (NUM) F6 (>) F4 (MOD) Puis 2 ^ 5 , 2 6 EXE On fait la même chose avec les autres nombres Pour obtenir le message : 6 14 9 0 2 10 Soit : G O J A C K 2) a) 5 est un nombre premier, il est donc premier avec 12 qui n’est pas un multiple de 5 et on a : 5 × 5 − 2 × 12 = 1 qui est l’identité de Bézout qui traduit également que 5 et 12 sont premiers entre eux. b) Soit x un entier on utilise le corollaire du petit théorème de Fermat xp ≡ x (p) si p est premier comme 2 et 13 sont premiers on a : x25 ≡ x(x12 ) 2 ≡ x x12 ≡ x(x6)2 ≡ x (x3 )2 ≡( x2)² ≡ x²≡ x (2) x25 ≡ x 13x12 ≡ x x12 ≡ x 13 ≡ x (13) Donc x25 – x est un multiple de 2 et de 13 comme 2 et 13 sont premiers entre eux d’après le théorème de Gauss x25- x est multiple de 2 × 13 . (En effet, ils existent m et m’ des entiers tels que : x25 – x = 2 m = 13 m’ donc 2 divise m’ d’après le lemme de Gauss soit il existe m’’ tel que m’ = 2 m’’ donc x25 – x = 13 (2 m’’)= 26 m’’, d’où le résultat). Conclusion : x25 ≡ x (26) c) si y ≡ x5 (26) alors yd ≡ y5 ≡ x25≡ x (26) donc d = 5 constitue la clé privée de décodage. 3) Pour décoder le mot BON , on va transformer chaque lettre en nombre : 1 14 13 Pour décoder 14 : 145 ≡ 14 (26) 2