Mathématiques Pour l Informatique I : Arithmétique et Cryptographie. Serge Iovleff

Documents pareils
Cryptographie. Cours 3/8 - Chiffrement asymétrique

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

Cryptographie et fonctions à sens unique

Cryptologie. Algorithmes à clé publique. Jean-Marc Robert. Génie logiciel et des TI

Quelques tests de primalité

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

INF 4420: Sécurité Informatique Cryptographie II

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

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)

SSH, le shell sécurisé

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

Calculateur quantique: factorisation des entiers

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

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


FONDEMENTS DES MATHÉMATIQUES

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

Cryptographie Quantique

Fonction de hachage et signatures électroniques

Petite introduction aux protocoles cryptographiques. Master d informatique M2

ÉPREUVE COMMUNE DE TIPE Partie D

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

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

Tests de primalité et cryptographie

Sécurité de l'information

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

Chapitre VI - Méthodes de factorisation

Cours Informatique Master STEP

La sécurité avec SSH. Atelier cctld Dakar, Sénégal. Hervey Allen

MATHÉMATIQUES DISCRÈTES (4) CRYPTOGRAPHIE CLASSIQUE

Corrigé des TD 1 à 5

Installation et mise en œuvre de OpenSSH sous AIX 5L

Anas Abou El Kalam Sécurité SSH SSH

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

Panorama de la cryptographie des courbes elliptiques

Objets Combinatoires élementaires

Exercices Corrigés Premières notions sur les espaces vectoriels

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

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

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

L ordinateur quantique

Devoir Surveillé de Sécurité des Réseaux

Algorithmique et programmation : les bases (VBA) Corrigé

Introduction à l étude des Corps Finis

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Factorisation d entiers (première partie)

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Cours d arithmétique Première partie

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

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

1 Recherche en table par balayage

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Le protocole sécurisé SSL

TECHNIQUES DE CRYPTOGRAPHIE

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

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

Gestion des Clés. Pr Belkhir Abdelkader. 10/04/2013 Pr BELKHIR Abdelkader

Résolution de systèmes linéaires par des méthodes directes

Enseignement secondaire technique

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Recherche dans un tableau

Licence Sciences et Technologies Examen janvier 2010

La cryptographie du futur

Projet Matlab : un logiciel de cryptage

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Aristote Groupe PIN. Utilisations pratiques de la cryptographie. Frédéric Pailler (CNES) 13 janvier 2009

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Cours d algorithmique pour la classe de 2nde

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Java Licence Professionnelle CISII,

Simulation de variables aléatoires

Programmer en JAVA. par Tama

Compression Compression par dictionnaires

Manuel des logiciels de transferts de fichiers File Delivery Services

CERTIFICATS ÉLECTRONIQUES

Algorithmique & programmation

Résolution d équations non linéaires

Solutions du chapitre 4

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Compter à Babylone. L écriture des nombres

Certificats X509 & Infrastructure de Gestion de Clés. Claude Gross CNRS/UREC

Programmation Réseau SSH et TLS (aka SSL)

1. Utilisation PuTTY openssh WinSCP

Chapitre 6. Fonction réelle d une variable réelle

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Cryptologie à clé publique

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

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

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

L informatique comme discipline au gymnase. Renato Renner Institut für Theoretische Physik ETH Zürich

Gestion des clés. Génération des clés. Espaces de clés réduits. Mauvais choix de clés. Clefs aléatoires. Phrases mots de passe

Gestion des Clés Publiques (PKI)

Le calcul formel dans l enseignement des mathématiques

Cours 1 : Qu est-ce que la programmation?

Transcription:

Mathématiques Pour l Informatique I : Arithmétique et Cryptographie Serge Iovleff 15 novembre 2004

Table des matières 1 Arithmétique 2 1.1 Arithmétique dans Z....................... 2 1.2 Arithmétique modulaire..................... 2 1.2.1 Définition du modulo dans Z.............. 2 1.2.2 Définition de Z/mZ................... 2 1.2.3 Opérations dans Z/mZ................. 2 1.2.4 Le petit théorème de Fermat et le théorème RSA... 2 1.2.5 Résolution des équations de congruence........ 2 1.2.5.1 Une équation à une inconnue......... 2 1.2.5.2 Deux équations à une inconnue........ 2 1.2.5.3 Le théorème chinois des restes........ 3 1.3 Algorithmes d arithmétique utilisés en Cryptographie..... 3 1.3.1 Algorithme d Euclide................... 3 1.3.2 Génération de Nombres Premiers............ 4 1.3.3 Elévation à la puissance modulo............ 5 1.3.4 Logarithme Discret.................... 6 2 La Cryptographie 7 2.1 Définitions............................. 7 2.2 Buts de la cryptographie..................... 7 2.3 Principes de la cryptographie.................. 8 2.3.1 Cryptographie symétrique................ 8 2.3.1.1 Le système à clef jetable........... 9 2.3.1.2 Le système DES (Data Encryption Standard) 9 2.3.2 Cryptographie assymétrique............... 9 2.3.3 Les fonctions à sens unique............... 10 2.4 La méthode RSA......................... 12 1

Chapitre 1 Arithmétique 1.1 Arithmétique dans Z 1.2 Arithmétique modulaire 1.2.1 Définition du modulo dans Z 1.2.2 Définition de Z/mZ 1.2.3 Opérations dans Z/mZ 1.2.4 Le petit théorème de Fermat et le théorème RSA 1.2.5 Résolution des équations de congruence 1.2.5.1 Une équation à une inconnue On cherche à résoudre l équation suivante : ax c[m] (1.1) où a, c, m sont des constantes et x un nombre inconnu. Théorème 1.2.1 Il existe une solution de l équation (1.1) si et seulement si a m c. Si une solution existe, alors il existe un unique nombre vérifiant l équation (1.1) et tel que 0 x < m. 1.2.5.2 Deux équations à une inconnue On cherche à résoudre le système d équations suivant : { x a1 [m 1 ] x a 2 [m 2 ] (1.2) 2

Théorème 1.2.2 Le système (1.2) possède une solution si et seulement si m 1 m 2 a 2 a 1. Si une solution existe alors il existe un unique x solution de (1.2), vérifiant 0 x < m 1 m 2 1.2.5.3 Le théorème chinois des restes On cherche à résoudre un système avec plusieurs équations de congruence. Théorème 1.2.3 Soient m 1, m 2,...,m n des entiers 2 à 2 premiers entre eux m i m j = 1, i j alors le système x a 1 [m 1 ] x a 2 [m 2 ]... x a n [m n ] possède une unique solution x qui vérifie 0 x < n i=1 m i. (1.3) 1.3 Algorithmes d arithmétique utilisés en Cryptographie 1.3.1 Algorithme d Euclide Version récursive (la procédure EE s appelle elle-même). Le type Integer est une classe permettant de calculer en précision infinie. La procédure prend en entrée deux entiers a et b et renvoie d = a b et au + bv = d. void EE(const Integer a, const Integer b, Integer& d, Integer& u, Integer& v) { if (b==0) { d =a; u =1; v =1;} else { EE(b, a % b, d, u, v); Integer tmp = u; u = v; v = tmp - (a/b) * v; } } 3

1.3.2 Génération de Nombres Premiers En pratique, il n existe pas d algorithme permettant de trouver la décomposition en nombres premiers d un nombre x en un temps de calcul raisonnable. Pour générer un nombre premier, on utilise le test Miller-Rabin. Le test de Miller-Rabin : Le test de Miller-Rabin permet de déterminer si un nombre est composé (n est pas premier) avec une probabilité inférieure à 1/2. Proposition 1.3.1 Soit n un nombre positif impair, et soient s et t les deux nombres qui vérifient n 1 = t2 s avec t impair. Alors si a > 1 est un nombre, on a a n 1 1 = a t2s 1 = (a t 1)(a t + 1)(a t2 + 1)... (a t2s 1 + 1) Par exemple 23 1 = 11 2 1, et 29 1 = 7 2 2. On sait que si n est un nombre premier, alors d après le théorème de Fermat a n 1 1[n] Donc si n est premier l un des termes, (a t 1), où a 2tj + 1 doit être congru à 0 modulo n. Définition 1.3.2 Soit n un nombre impair, on dit que n = t2 s réussit le test de composition de Miller-Rabin avec le nombre a si on montre que l une des propriétés suivantes est vérifiée : a t 1 0[n] a t2j + 1 0[n], 0 j < s Proposition 1.3.3 Si n est composé, la probabilité qu un nombre a pris au hasard dans {2, 3,..., n 1} ne réussisse pas le test de Miller-Rabin est inférieure à 1/2. On admettra que si n est impair et composé, moins de (n 1)/2 nombres ne passent pas le test de Miller-Rabin. 4

Algorithm 1 Algorithme pour déterminer un nombre premier avec une probabilité plus petite que 2 m : la procédure Test effectue un test de composition de Miller-Rabin Require: m > 0 Tirer au hasard un nombre entier n flag = true while flag do for j = 1 to m do Tirer au hasard un nombre a {2,..., n 1} flag = Test(a,n) if flag then n = n+2 break end if end for end while Afficher n 1.3.3 Elévation à la puissance modulo Soient a et b deux entier, on veut calculer rapidement a b [n] : on peut effectuer ce calcul en effectuant 2 log 2 (b) multiplications modulo n. Par exemple : a 11 = a a 10 = a (a 5 ) 2 = a (a a 4 ) 2 = a (a (a 2 ) 4 ) 2 soit 3 élévations au carré et 2 multiplication (5 opérations). La procédure récursive suivante réalise l élévation d un nombre a à la puissance k modulo n : Integer PM(const Integer a, const Integer k, const Integer n) { if (k==0) { return 1;} else { Integer m = PM(a, k/2, n); m = (m*m) % n; if (k % 2 == 1) m = (m*a) % n; return m; } } 5

1.3.4 Logarithme Discret On se place dans Z/mZ et on rappelle que Z m représente le sous ensemble des éléments inversibles de Z/mZ, ce sous-ensemble est de cardinal φ(m). Définition 1.3.4 On dit qu un élément g de Z/mZ est un generateur de Z/mZ si la séquence (g 1, g 2,... g φ(n) ) contient tous les éléments de Z/mZ. Les valeurs de m pour lesquels il existe des générateurs sont les suivantes : 2, 4, p n, 2p n pour p 3 premier Par exemple dans Z/7Z, 3 est générateur. Définition 1.3.5 Pour a dans Z m et g un générateur de Z m, le plus petit entier positif z tel que g z = a[n] est appelé le logarithme discret en base g de a modulo n. On écrit z = log g (a)[n] Théorème 1.3.6 Si g est un générateur de Z m, alors g x g y [n] x y[φ(n)] Dans l état actuel des connaissances : 1. Il est très facile de calculer g z 2. Etant donné y, il n existe pas d algorithme pour calculer z tel que g z = y. La seule méthode consiste à essayer toutes les possibilités. Par exemple si p = 10 100, if faut effecteur à peu près 10 8 opérations pour calculer g z, soit environs une seconde sur un PC actuel. Par contre tester toutes les possibilités demande environ 10 100 opérations, soit environ 10 92 secondes!!! 6

Chapitre 2 La Cryptographie 2.1 Définitions Définition 2.1.1 La cryptographie consiste à chiffrer puis à déchiffrer un texte. Chiffrer un texte consiste à le transformer en une séquence de nombres, calculés à partir du texte. Déchiffrer un texte est l opération réciproque qui permet de retrouver le texte source à partir de la séquence chiffrée. On note E et D respectivement les opérations de chiffrement et déchiffrement (E comme Encode et D comme Decode ). Si ces opérations sont paramétrées par une clef, on les note D K et E K (K comme Key ). Soit M un message quelconque. On doit avoir D(E(M)) = M ce qui implique que D et E sont injectives. D est gardée secrète (ou est paramétrée par une clef K secrète), c est à dire qu il est très difficile de trouver D si on ne la connait pas. Par contre E peut être secrète ou public. 2.2 Buts de la cryptographie La cryptographie a trois motivations principales 1. La Confidentialité : qui consiste à empècher l accès aux informations qui transitent pour ceux qui ne sont pas autorisés. Ils peuvent éventuellement lire ce qui passe sur le canal, mais ne peuvent pas le déchiffrer. 2. L authentification : Elle consiste à signer électroniquement un document afin de prouver en être l auteur et qu il ne s agit pas d un faux. 7

3. L intégrité : Elle permet de vérifier que le message n a pas subi d altérations lors de son parcours. Le chiffrement classique ne s interessait auparavant qu au premier aspect et, jusqu à ces dernières années, ne s intéressait qu aux clefs secrètes. Avec le développement d internet : L authentification devient aussi, voire même plus, importante que le secret. Une partie de la clef ne doit pas être privée afin de ne pas provoquer une explosion du nombre de clefs lorsque l on doit communiquer avec un grand nombre de personnes. 1. Confidentialité Bob Alice 2. Intégrité du Message Bob Eve Eve Alice 3. Authentification du Message Bob Eve Alice 2.3 Principes de la cryptographie 2.3.1 Cryptographie symétrique Pour la première fois utilisée au 1er siècle avant J.C. par Jules César. Sur la base d une seule clef secrète, réaliser une transformation capable de respectivement de rencre illisible et de restituer une pièce d information. 8

Il existe principalement deux types de chiffrement : le système à clefs jetables ( One time pad ) et le sytème DES utilisé par les cartes de crédit. 2.3.1.1 Le système à clef jetable Ce système repose sur un sytème de clef privée K où la clef n est utilisée qu une fois. On utilise la relation (M K) K = M Pour envoyer un message de n bits, il faut avoir une clef K secrète de n bits. 2.3.1.2 Le système DES (Data Encryption Standard) Ce système fonctionne par blocs, il travaille sur des blocs de 64 bits en utilisant une clef de 56 bits. Le même algorithme est utilisé pour chiffrer et déchiffrer. La transformation employée peut s écrire sous la forme P 1 (F (P (M))), où P est une permutation et F une fonction combinant permutation et substitution. 2.3.2 Cryptographie assymétrique On utilise deux clés différents - une secrète et une publique - respectivement pour les opérations de cryptage et de décryptage. Chaque utilisateur dispose d un porte-clés contenant, au moins, sa clef publique et sa clef privée. 9

Plusieurs cas de figure peuvent se présenter. 2.3.3 Les fonctions à sens unique Ce sont des fonctions faciles à calculer dans un sens mais impossibles à calculer dans le sens contraire. Exemple : md5sum /etc/passwd 379f62d7c431e2b9a204bd339bddfec0 /etc/passwd 10

Si on veut assurer le secret : L expéditeur crypte l information avec la clef publique du destinataire. Le destinataire décrypte l information avec sa clef privée. Si on veut assurer l authenticité : L expéditeur signe l information avec sa clef privée. Le destinataire vérifie la signature avec la clef public. On applique la signature au digest résultat d une fonction à sens unique. 11

2.4 La méthode RSA Dans le système RSA, un utilisateur crée son couple (clef publique, clef privée) en utilisant la procédure suivante : 1. Choisir au hasard deux grands nombres premiers p et q (plus de 100 chiffres). 2. Calculer n = pq 3. Choisir un entier e qui est premier avec φ(n) 4. Calculer d, l inverse de e modulo φ(n) 5. Publier la paire P = (e, n) comme la clef publique RSA 6. Garder secrète la paire S = (d, n) qui est la clef privée RSA. Le chiffrement RSA consiste à effectuer m = E P (m) = m e [n] Le déchiffrement RSA consiste à effectuer E S ( m) = m d [n] On a D S (E P (m)) = m ed [n] = m 1+kφ(n) [n] = m d après le théorème RSA. Les caractères sont souvent codés dans un codage standard comme la table ASCII. Voici un extrait des lettres de l alphabet latin. A 01000001 J 01001010 S 01010011 B 01000010 K 01001011 T 01010100 C 01000011 L 01001100 U 01010101 D 01000100 M 01001101 V 01010110 E 01000101 N 01001110 W 01010111 F 01000110 O 01001111 X 01011000 G 01000111 P 01010001 Y 01011001 H 01001000 Q 01010001 Z 01011010 I 01001001 R 01010010 espace 00100000 12

Par exemple le message ASCII du message «UNE CLE» est la chaîne : 01010101010011100100010100100000010000110100110001000101 On applique l algorithme RSA par bloc de 512 bits ou 1024 bits. Exemple de génération d une clef avec ssh-keygen : ssh-keygen -b512 -f exemple -trsa1 Generating public/private rsa1 key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in exemple. Your public key has been saved in exemple.pub. The key fingerprint is: 2a:03:3b:ee:24:2d:6a:1f:70:31:53:f5:ff:43:3f:ba iovleff@mickey clef public : 512 35 87599705148632455510290734140096553337466234 487123934588176004944628245369960452106223222100731 833928080810059796242072659537979744846212520681277 21002321 iovleff@mickey 13