MATHEMATIQUES - Chiffrement RSA -



Documents pareils
0x700. Cryptologie Pearson France Techniques de hacking, 2e éd. Jon Erickson

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Représentation des Nombres

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Calculateur quantique: factorisation des entiers

108y= 1 où x et y sont des entiers

Cryptographie et fonctions à sens unique

Introduction à l étude des Corps Finis

Exercices - Polynômes : corrigé. Opérations sur les polynômes

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Projet Matlab : un logiciel de cryptage

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

6. Les différents types de démonstrations

III- Raisonnement par récurrence

Le produit semi-direct

Travail d intérêt personnel encadré : La cryptographie

IV- Comment fonctionne un ordinateur?

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Leçon N 4 : Statistiques à deux variables

Des codes secrets dans la carte bleue. François Dubois 1

INF 4420: Sécurité Informatique Cryptographie II

Conversion d un entier. Méthode par soustraction

Une version javascript sera disponible directement dans le cours prochainement.

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Cours d arithmétique Première partie

Quelques tests de primalité

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Etude de fonctions: procédure et exemple

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Chapitre 10 Arithmétique réelle

1 Introduction au codage

Date : Tangram en carré page

Enfin une messagerie dont l utilisateur n est pas le «produit»!

ANNUITES. Les annuités définissent une suite de versements identiques ou non effectués à intervalles de temps égaux. -annuités non constantes

chapitre 4 Nombres de Catalan

1 Définition et premières propriétés des congruences

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Royal Military Academy Brussels, BELGIUM Secure Information Storage in the Cloud

Glossaire des nombres

Sommaire Introduction Les bases de la cryptographie Introduction aux concepts d infrastructure à clés publiques Conclusions Références

Chapitre VI - Méthodes de factorisation

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Cours 14. Crypto. 2004, Marc-André Léger

ALGORITHMIQUE ET PROGRAMMATION En C

Mathématiques Algèbre et géométrie

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

CH.6 Propriétés des langages non contextuels

avec des nombres entiers

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

MATHÉMATIQUES DISCRÈTES (4) CRYPTOGRAPHIE CLASSIQUE

Chapitre 7. Sécurité des réseaux. Services, attaques et mécanismes cryptographiques. Hdhili M.H. Cours Administration et sécurité des réseaux

Informatique Générale

Les mathématiques financières

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

Valeur cible et solveur. Les calculs effectués habituellement avec Excel utilisent des valeurs numériques qui constituent les données d'un problème.

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Le protocole sécurisé SSL

FONDEMENTS DES MATHÉMATIQUES

Continuité en un point

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

La persistance des nombres

Université Paris-Dauphine DUMI2E 1ère année, Applications

Cours Informatique 1. Monsieur SADOUNI Salheddine

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Solutions du chapitre 4

Techniques d interaction dans la visualisation de l information Séminaire DIVA

- un jeu de K cartes représentées par des nombres C 1, C 2 à C K avec K entier strictement

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cryptographie. Cours 3/8 - Chiffrement asymétrique

ÉPREUVE COMMUNE DE TIPE Partie D

Représentation d un entier en base b

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Les différents types de données et leurs opérations de base

NOTIONS DE PROBABILITÉS

Fonctions de plusieurs variables

Le format OpenPGP. Traduit par : Sébastien Person. personseb@yahoo.fr. Matthieu Hautreux. matthieu.hautreux@insa-rouen.fr.

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

THEME : CLES DE CONTROLE. Division euclidienne

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Cryptographie. Master de cryptographie Architectures PKI. 23 mars Université Rennes 1

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Module 16 : Les fonctions de recherche et de référence

Introduction a l'algorithmique des objets partages. Robert Cori. Antoine Petit. Lifac, ENS Cachan, Cachan Cedex. Resume

Carl-Louis-Ferdinand von Lindemann ( )

Cours Informatique Master STEP

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Feuille TD n 1 Exercices d algorithmique éléments de correction

Sécurité de l'information

Cryptologie à clé publique

Utilité et nécessité de disposer d une bonne politique de mot de passe.

IFT1215 Introduction aux systèmes informatiques

Navigation dans Windows

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

Raisonnement par récurrence Suites numériques

LE PROBLEME DU PLUS COURT CHEMIN

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Licence Sciences et Technologies Examen janvier 2010

Transcription:

ENSEIGNEMENT DE PROMOTION SOCIALE Cours de MATHEMATIQUES - Chiffrement RSA - H. Schyns Mai 2008

Sommaire Sommaire 1. INTRODUCTION 2. DÉFINITIONS 2.1. Nombres premiers 2.2. Nombres premiers entre eux 2.3. Fonction modulo 2.4. Décomposition binaire. 3. LE CRYPTAGE RSA 3.1. Principe 3.2. Les clés 3.3. Le cryptage 3.4. Le décryptage 3.5. RSA dans un tableur 4. SOURCES H. Schyns S.1

1 - Introduction 1. Introduction De nombreux documents exposent la théorie du systeme de chiffrementr à clé publique / clé privée encore appelé système RSA. Ces exposés utilisent un formalisme mathématique qui est souvent obscur pour le non initié. Si les quelques exemples fournis illustrent la suite des opérations, ils ne donnent que rarement le détail du calcul et ses limites. Le présent document a pour objectif d'illustrer la méthode aussi simplement que possible à l'aide de nombreux exemples détaillés. H. Schyns S.1.1

2 - Définitions 2. Définitions Le système RSA repose sur quatre concepts arithmétiques : - les nombres premiers, - les nombres premiers entre eux, - la fonction modulo, - la décomposition binaire. Nous allons illustrer ces principes ci-après. Le lecteur déjà familiarisé avec ces concepts peut passer directement au chapitre suivant. 2.1. Nombres premiers Definition Exemple Recherche si un nombre est premier ou non Premier voisin de 6 Suite des premiers est infinie 2.2. Nombres premiers entre eux PGCD Euclide Euclide étendu 2.3. Fonction modulo Division Euclidienne Modulo d'un carré à partir du modulo de la base Modulo d'une somme ou d'une différence 2.4. Décomposition binaire. H. Schyns 2.1

3. Le cryptage RSA 3.1. Principe Le cryptage RSA repose sur le choix d'un couple de deux nombres premiers généralement appelés [ p ] et [ q ] que l'on doit absolument garder secrets. Les nombres premiers choisis doivent être les plus grands possible afin de compliquer au maximum la tâche de celui qui veut craquer le système. Ce couple élu va engendrer d'autres nombres qui vont constituer la clé du procédé. 3.2. Les clés Le principe du système RSA est beaucoup plus facile à comprendre à partir d'un exemple. Commençons avec deux nombres premiers simples à garder secrets : p = 11 q = 23 Le nombre [ n ] qui résulte de leur produit constitue la clé publique du système. Elle peut être connue de tout le monde : n = p q [3.1] n = 11 23 = 253 Certes, le choix de notre exemple n'est pas vraiment génial car il ne faudra pas longtemps à quelqu'un connaissant ses tables de multiplications pour factoriser ce nombre et retrouver [ p ] et [ q ]. Dans la réalité, [ p ] et [ q ] sont des nombres de plus de cent chiffres, ce qui donne plus de deux cents chiffres pour [ n ] ce qui demande des outils informatiques particuliers. Mais continuons... A partir des nombres [ p ] et [ q ], nous allons générer un autre nombre [ ϕ(n) ] appelé fonction indicatrice d'euler tel que ( n) = ( p 1) ( q 1) ϕ [3.2] ϕ( 253) = ( 11 1) ( 23 1) ϕ( 253 ) = 10 22 = 220 C'est ce nombre [ ϕ(n) ] et non [ n ] qui consitute le secret du cryptage. L'astuce est que [ n ] est tellement grand qu'il est pratiquement impossible de le factoriser pour retrouver [ p ] et [ q ] et, à partir de ces valeurs, de reconstituer [ ϕ(n) ]. La fonction indicatrice d'euler nous dit qu'il y a 220 nombres inférieurs à 253 et qui sont premiers avec 253. Autrement dit, dans l'ensemble des nombres compris entre 1 et 253, on peut en trouver 220 qui n'ont aucun facteur premier commun avec 253 ( 1 ). 1 Ce nombre de 220 peut sembler très élevé mais il ne faut pas oublier que le nombre choisi 253 est le produit des deux nombres premiers 11 et 23. Donc, dans la liste de tous les nombres allant de 1 à 253, il suffit de supprimer tous les multiples de 11 (il y en a 22) et tous les multiples de 23 (il y en a 10). H. Schyns 3.1

Nous choisissons ensuite un nombre [ e ], "presque" quelconque, qui sera l'exposant de chiffement. Il y a deux conditions sur ce nombre : - il doit être supérieur à 3, - il ne doit pas nécessairement être premier mais il doit être premier avec [ ϕ(n) ] en d'autres mots leur PGCD doit être égal à 1. Prenons par exemple : e = 17 Comme 17 est un nombre premier, il est fatalement premier avec 220. Le couple (253, 17) constitue la clé publique proprement dite. Que nous ayons choisi un nombre premier est purement fortuit; nous aurions tout aussi bien pu prendre 21, 39 ou 49 qui ne sont pas premiers. Ceci a une première conséquence importante : Pour une clé publique [ n ] donnée, plusieurs exposants de chiffrements [ e ] sont possibles. Plus [ n ] est grand, plus il existe de possibilités pour [ e ]. Chaque couple (n,e) donne une clé publique de cryptage différente et unique. A ce stade, nous avons publié deux nombres connus de tous : - n = 253 comme clé publique - e = 17 comme exposant de chiffrement Maintenant, n'importe qui peut nous envoyer un message chiffré et, ce qui est plus surprenant, l'auteur lui-même ne pourra pas décrypter son propre message à l'aide de la clé publique. Une personne qui aurait choisi un exposant différent pourrait crypter ses propres messages sans être pourtant capable de déchiffrer les nôtres et réciproquement. L'étape suivante consiste à créer un exposant de décryptage. La procédure est plus délicate. Il nous faut trouver un nombre [ d ] tel que : ( d e) mod ( n) = 1 ϕ [3.3] Ceci signifie qu'il doit rester 1 quand on divise le produit des exposants de cryptage [ e ] et de décryptage [ d ] par [ ϕ(n) ]. Dans le cas qui nous intéresse, l'expression devient ( d 17) mod 220 = 1 [3.4] Nous pouvons écrire cette expression sous une autre forme en disant que le produit [ d.17 ] doit être un multiple de 220 auquel on a ajouté 1. où k est un entier positif à déterminer. d 17 = k 220 + 1 [3.5] H. Schyns 3.2

Ca a l'air un peu compliqué comme ça mais dans le cas de cet exemple, c'est relativement simple. - d'une part, le produit recherché doit être très proche d'un multiple 220 puisque le reste de la division est petit et vaut 1 : k 220 d k 13 [3.6] 17 [ d ] doit être un multiple de 13 ou proche d'un multiple de 13. d = 13, 26, 39, 42... - d'autre part, le membre de droite de l'expression [3.5] se termine par 1, or les seuls multiples de 17 qui se terminent par 1 sont ceux pour lesquels [ d ] se termine par 3 : d = 3, 13, 23, 33... En comparant les deux séries, nous trouvons d = 13 e d = 13 17 = 221 221 mod 220 = 1 Le couple (253, 13) constitue la clé privée proprement dite. A partir de maintenant, tout le monde peut oublier [ p ], [ q ] et [ ϕ(n) ]. En réalité, ce n'est pas le cas et des organismes tels que VeriSign et Thawte vendent des couples de clés privées et clés publiques à tout ceux qui le désirent. Vu la taille des nombres, il y a des milliards de milliards de combinaisons possibles. Remarquons que les exposants de cryptage [ e ] et de décryptage [ d ] sont interchangeables : un texte codé avec [ e ] peut être décodé avec [ d ] et réciproquement. Notons que le choix e = 21 comme exposant de cryptage aurait été particulièrement malheureux car il conduit à prendre d = 21 comme exposant de décryptage. En effet, ( 21 21) mod 220 = 1 or, pour assurer la confidentialité il est évident que l'exposant de cryptage qui est public doit être différent de l'exposant de décryptage, qui est secret. Dans la réalité, les nombres sont plus grands, la recherche de [ d ] à partir de [ e ] n'est pas aussi simple mais elle est néanmoins très rapide grâce à une technique connue sous le nom d'algorithme d'euclide étendu. H. Schyns 3.3

3.3. Le cryptage Le cryptage permet de transformer un nombre [ x ] strictement plus petit que [ n ] en un autre nombre [ y ], lui aussi strictement plus petit que [ n ]. Pour imposer la règle strictement plus petit que [ n ] l'algorithme utilise la fonction "modulo n" ou "mod n" c'-est-à-dire le reste de la division par [ n ]. En effet, le reste de la division par [ n ] est forcément un nombre compris entre 0 et [ n-1 ]. Dans le cas de notre exemple, nous pouvons coder 253 valeurs différentes soit pratiquement tous les codes ASCII. Supposons que nous voulions envoyer la chaîne Ascii contenant le mot "RSA" : Lettre R S A Ascii 82 83 65 Chaque nombre [ x ] (code Ascii) subit l'opération soit, dans le cas de la lettre R ( x e ) mod n [3.7] ( 82 ) 17 mod 253 Pas de panique! Il n'est pas nécessaire de calculer 82 17 Il suffit de savoir que tout nombre [ x ] peut s'écrire sous la forme d'où x = k 253 + r [3.8] x mod 253 = r [3.9] Considérons à présent 2 2 2 2 2 ( k 253 + r) = k 253 + 2 k 253 r r x = + [3.10] Les deux premiers termes sont des multiples de 253; il n'interviennent donc pas dans le calcul du modulo. On en déduit que : x 2 2 mod 253 = r mod 253 [3.11] Autrement dit, nous pouvons calculer facilement le modulo du carré d'un nombre à partir du carré de son modulo. En appliquant plusieurs fois le processus, nous calculons facilement les modulos de [ x ] élevé aux puissances 2, 4, 8, 16, etc. Pour calculer le modulo d'une puissance quelconque de [ x ], nous appliquerons une décomposition binaire à l'exposant. Dans le cas de notre exemple : 17 = 16 + 1 e 17 16 1 x = x = x x H. Schyns 3.4

La première étape consiste à remplir un tableau des modulos de [ x ] exposant une puissance de 2 : x = 82 e=17 rang e x r 2 mod 253 1 82 82 2 82 2 = 6 724 146 4 146 2 = 21 316 64 8 64 2 = 4 096 48 16 48 2 = 2 304 27 17=1+16 82.27 = 2 214 190 - la première ligne contient la valeur x et son modulo n. - les lignes suivantes reprennent le carré du modulo de la ligne prédécente et calculent le modulo de ce carré Nous établissons la dernière ligne en sachant que : et que 82 17 17 16 1 82 = 82 82 16 1 ( 82 mod 253) ( 82 mod 253) mod 253 mod 253 = [3.12] ( 27 82) mod 253 190 82 17 mod 253 = = Dans notre exemple, la lettre R de code Ascii 82 est codée sous le nombre 190, ce qui est le code Ascii du caractère ¾. Nous procédons de la même manière pour les lettres suivantes [ S ] et [ A ]. Nous voyons dans le tableau ci-dessus, nous pouvons faire l'économie d'une colonne en inscrivant directement la valeur initiale dans la colonne [ r 2 ] : x = 83 e=17 x = 65 e=17 rang e r 2 mod 253 rang e r 2 mod 253 1 83 83 1 65 65 2 83 2 = 6 889 58 2 65 2 = 4 225 177 4 58 2 = 3 364 75 4 177 2 = 31 329 210 8 75 2 = 5 625 59 8 210 2 = 44 100 78 16 59 2 = 3 481 192 16 78 2 = 6 084 12 17=1+16 83.192 = 15 936 250 17=1+16 65.12 = 780 21 Ainsi, la lettre S de code Ascii 83 est codée sous le nombre 250, tandis que la lettre A de code Ascii 65 est codée sous le nombre 21 : Lettre R S A Ascii 82 83 65 Code 190 250 21 H. Schyns 3.5

3.4. Le décryptage Le décryptage utilise exactement le même processus pour transformer un nombre [ y ] strictement plus petit que [ n ] dans le nombre [ x ] initial, lui aussi strictement plus petit que [ n ]. Chaque nombre y subit l'opération soit, dans le cas de la valeur codée 190 ( y d ) mod n [3.13] ( 190 13 ) mod 253 A nouveau, il n'est pas nécessaire de calculer 190 13 nous utilisons un tableau comme à l'étape précédente y = 82 d=13 rang e y r 2 mod 253 1 190 190 2 190 2 = 36 100 174 4 174 2 = 30 276 169 8 169 2 = 28 561 225 16 225 2 = 60 625 25 13 225.169.190 = 7 224 750 Nous retrouvons bien la valeur initiale 82. Nous procédons de la même manière pour les codes suivants [ 250 ] et [ 21 ] : y = 250 d=13 y = 21 d=13 rang e r 2 mod 253 rang e r 2 mod 253 1 250 250 1 21 21 2 250 2 = 62 500 9 2 21 2 = 441 188 4 9 2 = 81 81 4 188 2 = 35 344 177 8 81 2 = 6 561 236 8 177 2 = 31 329 210 16 236 2 = 55 696 36 16 210 2 = 44 100 78 13=1+4+8 250.81.236 = 4 779 000 83 13=1+4+8 82 21.177.210 = 780 570 Nous retombons donc sur la séquence initiale de codes Ascii : Code 190 250 21 Decryp 82 83 65 Ascii R S A 65 H. Schyns 3.6

3.5. RSA dans un tableur Le cryptage et le décryptage RSA, avec [ n ] et [ e ] ou [ d ] connus, reposent sur des calculs qui ne sont pas difficiles mais seulement fastidieux. Il est très facile de les implémenter dans une feuille de tableur de type Excel. Les cellules encadrées contiennent une donnée ou une formule originale Les pointillés indiquent que la formule de la cellule est simplement recopiée en la tirant vers le haut ou vers le bas. fig. 3.1 Décomposition binaire de l'exposant fig. 3.2 Calcul des modulos H. Schyns 3.7

fig. 3.3 Calcul du produit cumulé et son modulo C'est le même tableau qui sert aussi bien au codage qu'au décodage, ce qui rend l'algorithme RSA particulièrement simple à programmer. H. Schyns 3.8

4. Sources - Mathématiques et cryptographie Michel Rigo Département de Mathématiques, Université de Liège http://www.discmath.ulg.ac.be - Mathématiques discrètes - Notes de cours 2007-2008 Michel Rigo Département de Mathématiques, Université de Liège - Le chiffrement par clé publique - Notes provisoires, chapitre 6 R. Dumont H. Schyns 4.1