Un peu de maths (et d’info) IFT6271--Hiver e cours Louis Salvail.

Slides:



Advertisements
Présentations similaires
IFT Complexité et NP-complétude
Advertisements

Un peu de maths (et d’info)
Algorithme Calcul du PGCD Euclide.
Mathématiques Discrètes Chapitre 2 (section 3)
Réalisation d’un logiciel de Chiffrement RSA.
Chap.V RSA. I. Rappels Mathématiques La congruence Définition 1 a et b sont congrus modulo n s’ils ont même reste par la division par n. On note a≡b[n]
Chap.IV La cryptographie asymétrique (à clé publique)
I. Les différentes bases utilisées en numérique. La base d écimale, base de 10 ( ou codage de 10) qui utilise 10 symboles: 0 ; 1 ;2 ; 3 ; 4 ; 5 ; 6; 7.
1 Chapitre 2 La numération binaire. 2 Chapitre 2 : La numération binaire Introduction 1 - Le système binaire 2 - La conversion des nombres entiers 2.1.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Enseigner l’arithmétique en série L Réflexions sur les contenus et les exigences.
A1 : SYSTEMES DE NUMÉRATION ET CODES. PLAN A- Systèmes de numération 1- Système décimal 2- Système binaire 3- Système hexadécimal 4- Conversion des nombres.
CRYPTOGRAPHIE GENERALE CRYPTOGRAPHIE
Les tables de multiplication au ce1 « Une construction réfléchie des tables favorise-t-elle leur mémorisation et leurs transferts ? » DOUARCHE Vaéa.
Par Sacha (11 ans - 6ème) - Le 9 mai 2017
Multiplier, diviser des nombres relatifs
Pierre Joli Cours de Mathématique Pierre Joli
L’opération de multiplication
FARAH.Z "Cours sécurité1" /2016
Représentation des nombres réels
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
CHAPITRE 3 Calcul numérique et puissances
Algorithmiques Abdelbasset KABOU
Logique Combinatoire.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours 2 : Représentation des nombres réels
Opérateurs Toute donnée informatique est stockée en mémoire sous la forme d'une combinaison de bits (mot machine). Les opérateurs bits permettent de modifier.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Additionner des nombres entiers
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Représentation de l’information en binaire:
Proportions.
7.1 Transformation linéaire
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Progressions calcul CM
Algorithmiques Abdelbasset KABOU
Précision d'une mesure et chiffres significatifs
Programmation Numération Compétences visées Période
Un Algorithme , c'est Quoi ?
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Chapitre 2: Les équations et les inéquations polynômes
Langages de programmation TP3
Exercice 6 : Soit la pyramide suivante : 1000 Ligne 1
Exploitation de mesures scientifiques.
Codage et Représentation de l’Information
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Les tableaux.
Le système binaire Table des matières : -Présentation du binaire
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Module: Logique Mathématique. SOMMAIRE 1- Notions d’ensembles 2- Constructions d’ensembles 3- Cardinal d’ensembles 4- Relations d’ensembles ordonnées.
Free Powerpoint Templates Page 1 Free Powerpoint Templates L’indicateur technique: Relative Strength Index (RSI)
Calcul Scientifique Initiation à SCILB
 1____Probabilité  2______variables aléatoires discrètes et continues  3______loi de probabilités d’une v a  4_______les moyens et les moyens centraux.
CHAPITRE 3 Calcul numérique et puissances
SIMPLIFICATION D’UNE RACINE CARREE.
Connaître les multiples et diviseurs d’un nombre.
2.4 La loi de vitesse d’une réaction chimique
Sylvie DELAËT 2002 Architecture des machines Bienvenus en Amphi d’Architecture des Machines.
Preuves interactives: IP, AM, MA et isomorphisme de graphe
Cryptographie introduction 1. introduction. Quelques problèmes… L’assaillant peut espionner depuis une machine du réseau local L’assaillant peut espionner.
Systèmes d ’Information : 5b
Résolutions et réponses
Flowchart Itération Cours 04.
Passage primaire-secondaire
Chapitre 2 : Représentation de l’information dans la machine Introduction Représentation des nombres négatifs –Signe / valeur absolue –Complément à 1 –Complément.
GEOMETRIE VECTORIELLE
Système de Numération : Décimal, Binaire, Octal et Hexadécimal
Codification et représentation de l’information Enseignant: Mahseur mohammed Groupe FB: mi2016ua1 Chaine YT: Cours informatique.
Problèmes multiplicatifs
Problèmes multiplicatifs
Transcription de la présentation:

Un peu de maths (et d’info) IFT6271--Hiver e cours Louis Salvail

Pourquoi? Nous commençons par étudier les outils cryptographiques nécessaires (mais pas suffisants) pour la mise au point de mécanismes de sécurité performants. Ces outils sont des constructions mathématiques qui sont facilement représentables sur les ordinateurs. La sécurité de la plupart des méthodes cryptographiques intéressantes repose sur la difficulté de résoudre certains problèmes mathématiques. L’informatique théorique permet d’analyser la difficulté algorithmique pour la résolution de ces problèmes mathématiques.

Nombres entiers et premiers Les nombres que nous allons utiliser par la suite sont des nombres entiers (positifs). Le nombre entier a est divisible par le nombre entier b si a=kb pour k un autre nombre entier: a/b=k. Les nombres premiers sont au centre de la plupart des protocoles cryptographiques. Un nombre entier n est premier s’il n’admet que deux diviseurs distincts : 1 et lui-même. Tout nombre entier n peut s’écrire de façon unique par un produit de puissances de nombres premiers : n=p 1 a1 p 2 a2... p t at

PGCD Le PGCD entre les entiers a et b est le plus grand commun diviseur de a et b. k=PGCD(a,b) -> k ⋅ i=a et k ⋅ j=b pour i,j des entiers. De plus, il n’existe pas d’entier k’>k, i’ et j’ tels que k’ ⋅ i’=a et k’ ⋅ j’=b. Exemples: PGCD(5,25)=5: 5 ⋅ 5=25 PGCD(14,35) = 7: 14=2 ⋅ 7 et 35=5 ⋅ 7, PGCD(21,55) = 1. Lorsque les entiers n et m sont tels que PGCD(n,m)=1 on dit alors qu’ils sont relativement premiers.

Arithmétique modulaire Quelle heure sera-t-il dans 12 heures? Quelle heure sera-t-il dans 25 heures? Quelle heure sera-t-il dans 23 heures? Quelle heure sera-t-il dans 34 heures? Quelle heure sera-t-il dans n heures, sachant qu’il est t heures? Rép: n+t mod 12 Un registre d’ordinateur est une horloge avec 2 k valeurs possibles pour k=8,16,32,64,

Arithmétique modulaire (II) L’expression n mod m désigne le reste de la division entière de n par m : 39 mod 5 = 4 -> 39=7*5 + 4, 7 mod 124 = 7 -> 7=0* Si on ajoute le nombre entier v à un registre d’ordinateur de k bits contenant la valeur initiale n, le registre contiendra alors la valeur : n+v mod 2 k k=8k=8 Les valeurs 0,1,2,...,2 k -1 peuvent être représentées.

On peut voir les valeurs possibles mod m comme l’ensemble des valeurs Z m = {0,1,2,...,m-1}. L’addition mod m de deux éléments a et b dans Z m est toujours dans Z m puisque a+b mod m est par définition dans Z m. De plus, comme l’addition de nombres naturels, chaque élément a ∈ Z m admet un autre élément b ∈ Z m tel que : a+b = 0 mod m. On peut appeler -a cet élément b. Exemple : 3+4=0 mod 7 et donc 4=-3 mod 7. Groupe additif Z m

Multiplication modulaire Voyons le comportement de a ⋅ b mod m pour a,b ∈ Z m : Z 6 -> 1*3=3 mod 6, 2 ⋅ 3=0 mod 6, 3 ⋅ 3=3 mod 6, 4*3=0 mod 6, 5 ⋅ 3=3 mod 6. Z 5 -> 1 ⋅ 3=3 mod 5, 2 ⋅ 3=1 mod 5, 3 ⋅ 3= 4 mod 5, 3 ⋅ 4=2 mod 5. Z 5 a la propriété que pour tout a,b ∈ Z 5 il existe un et un seul k ∈ Z 5 tel que a ⋅ k=b mod 5. Cette propriété est vérifiée dans Z p pour n’importe quel nombre premier p. Dit autrement, pour tout a ∈ Z p, il existe k ∈ Z p tel que a ⋅ k=1 mod p. Cet élément k, dénoté a -1, est appelé son inverse. a ⋅ k mod p induit une permutation de Z p -{0} lorsque k visite ces éléments.

Un peu de pratique mod 1581 = ? = 0 mod > 1579 = -2 mod 1581, =0 mod > 1580 = -1 mod 1581, mod 1581=-2-1 mod 1581 = -3 mod 1581 = 1578 mod ⋅ 1580 mod 1581 = -2 ⋅ -1 = 2 mod Voyons un chiffrement dans Z 26 (les lettres de l’alphabet) : La clé secrète est k ∈ Z 26 : Chiffrement 1 : a ∈ Z 26 -> a+k mod 26, Déchiffrement? Chiffrement 2 : a ∈ Z 26 -> a ⋅ k mod 26, Déchiffrement? Supposons que les messages n’ont que 23 lettres différentes et supposons que k ∈ Z 23. Pouvons-nous déchiffrer le chiffrement 2?

Évaluation des formes modulaires Lorsque nous additionnons ou multiplions mod m, nous pouvons réduire mod m avant ou après l’opération sans changer le résultat : (a+b) mod m = [a (mod m) + b (mod m)] (mod m) (a ⋅ b) mod m = [ a (mod m) ⋅ b (mod m)] (mod m) Exemple: Est-ce que le nombre est divisible par 3? La méthode magique dit que = 30 et puisque 3+0 = 3 est divisible par 3 alors est divisible par 3. Pourquoi? x 1 x 2...x t mod 3 = x 1 ⋅ 10 t-1 +x 2 ⋅ 10 t x t ⋅ 10 0 (mod 3) = x 1 ⋅ 10 t-1 mod x t ⋅ 10 0 mod 3 (mod 3) = x 1 ⋅ 10 t-1 mod x t ⋅ 10 0 mod 3 (mod 3) = x 1 mod 3+x 2 mod x t mod 3 (mod 3) = x 1 mod 3+x 2 mod x t mod 3 (mod 3) Pourquoi? x 1 x 2...x t mod 3 = x 1 ⋅ 10 t-1 +x 2 ⋅ 10 t x t ⋅ 10 0 (mod 3) = x 1 ⋅ 10 t-1 mod x t ⋅ 10 0 mod 3 (mod 3) = x 1 ⋅ 10 t-1 mod x t ⋅ 10 0 mod 3 (mod 3) = x 1 mod 3+x 2 mod x t mod 3 (mod 3) = x 1 mod 3+x 2 mod x t mod 3 (mod 3) 10 r mod 3 = 1 pour toute valeur r.

Le groupe multiplicatif Z n * Z n *={a: PGCD(a,n)=1}, autrement dit Z n * contient tous les nombres inférieurs à n qui sont relativement premiers à n. Le groupe Z n * est un groupe dans lequel il fait bon multiplier : a,b ∈ Z n * -> a ⋅ b mod n ∈ Z n *, pour chaque a ∈ Z n *, il existe a -1 ∈ Z n * tel que a ⋅ a -1 =1 mod n. On nomme inverse de a cette valeur a -1. Le chiffrement du message a ∈ Z n * avec clé k ∈ Z n *: a ⋅ k mod n est maintenant déchiffrable.

Étant donné deux nombres a et n, comment trouver leur PGCD(a,n)? Un des plus vieux algorithmes connus en théorie des nombres permet de le faire rapidement. Il s’agit de l’algorithme d’Euclide... Une extension de cet algorithme permet aussi, étant donnés a et m, de calculer a -1 t.q. a ⋅ a -1 = 1 mod m. Euclide Naissance : Grèce, env Calculer le PGCD L’algorithme d’Euclide calcule PGCD(a,n), a<n en temps correspondant au nombre de chiffres dans le représentation décimale de a.

Exponentiation modulaire Comme nous allons le voir lorsque nous parlerons des systèmes à clefs publiques, l’exponentiation modulaire est une opération très importante. Tandis qu’il est facile et efficace de calculer y=a x mod n, il est difficile de calculer son inverse (c.-à-d. calculer x étant donnés y, a et n). Souvenons-nous que a x mod n = a ⋅ a ⋅... ⋅ a mod n. x fois!

Exponentiation rapide Rappelons-nous l’évaluation des formes modulaires: 3 12 mod 7 = (3 2 mod 7) 6 = (2 mod 7) 6 mod 7= (2 3 mod 7) 2 mod 7= 1 2 mod 7 = 1 mod 7. Attention: a x mod m ≠ a x mod m mod m, par exemple nous avons 2 5 mod 3 mod 3 = 1, mais 2 5 mod 3 = 2! Pour l’exponentiation rapide, nous utilisons la méthode suivante : a 29 = a ⋅ a 28 = a ⋅ (a 14 ) 2 =a ⋅ ((a 7 ) 2 ) 2 =...=a ⋅ ((a ⋅ (a ⋅ a 2 ) 2 ) 2 ) 2 comparé à a 29 =a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a Pour l’exponentiation rapide, nous utilisons la méthode suivante : a 29 = a ⋅ a 28 = a ⋅ (a 14 ) 2 =a ⋅ ((a 7 ) 2 ) 2 =...=a ⋅ ((a ⋅ (a ⋅ a 2 ) 2 ) 2 ) 2 comparé à a 29 =a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a ⋅ a 7 multiplications 28 multiplications

Il s’agit du groupe multiplicatif Z N * = { a | PGCD(a,N)=1 } où N=pq pour p et q premiers. La fonction φ(N) = |Z N * | = (p-1)(q-1) est le nombre d’éléments dans Z N *. Z 15 * ={1,2,4,7,8,11,13,14}. Euler a montré que (sa généralisation du théorème de Fermat), pour tout a et N tels que PGCD(a,N)=1, a φ(N) mod N = 1. Chaque élément a ∈ Z N * admet un inverse a -1 ∈ Z N * : a ⋅ a -1 mod N = 1. (une conséquence d’Euler) Le groupe RSA a -1 = a φ(N)-1 mod N

Logarithmes discrets Le logarithme discret est en quelque sorte l’inverse de l’exponentiation modulaire : Étant donné (y,a,n), trouver x tel que a x = y (mod n). La valeur a est souvent appelée la base du logarithme. Exemples : logarithme en base 2 de 3 (mod 13): 2 1 =2,2 2 =4,2 3 =8,2 4 =3... Réponse : 4. logarithme en base 3 de 4 (mod 13): 3 1 =3,3 2 =9,3 3 =1,3 4 =3 ⋅ 3 3 =3,3 5 =3 2 ⋅ 3 3 =9,...! Réponse : aucun. En général il est (supposé) difficile de calculer les logarithmes discrets... ça demande beaucoup, beaucoup de multiplications!

Arithmétique sur des bits Les ordinateurs fonctionnant avec une représentation des nombres en binaire, les opérations sur des registres de bits sont très efficaces. C’est pourquoi la plupart des systèmes de chiffrement efficaces sont définis par des opérations sur des registres de bits dont la taille est constante. L’arithmétique des ordinateurs est basée sur Z 2 ={0,1} : l’addition : a,b ∈ Z 2, a ⊕ b = a+b mod 2, la multiplication : a,b ∈ Z 2, a ⋅ b=a ∧ b = a ⋅ b mod 2.

Arithmétique sur des registres de bits Soient a=a 1,a 2,...,a k et b=b 1,b 2,...,b k des registres de k bits (c.-à-d. a i,b j ∈ Z 2 pour tout 1≤i,j≤k). Nous définissons : a ⊕ b := a 1 ⊕ b 1, a 2 ⊕ b 2,..., a k ⊕ b k Nous définissons B k comme étant l’ensemble des chaînes de k bits. L’addition dans B k est semblable à celle dans Z 2 k mais est plus facile (efficace) à réaliser, car nous n’avons pas à nous préoccuper des retenues.

Problèmes difficiles Certains problèmes mathématiques sont réputés difficiles à résoudre sur un ordinateur. C’est-à-dire qu’aucun algorithme efficace n’est connu à ce jour pour les résoudre. Ceci n’exclut pas qu’un algorithme efficace puisse être trouvé. On dit d’un algorithme qu’il est efficace si le nombre d’étapes de calcul t(n) nécessaires pour traiter une entrée de n bits de long, est tel que t(n)<poly(n) pour un polynôme poly(n), pourvu que n soit suffisamment grand.

Retour sur l’exponentiation Exp_iterative(a,x,n)y=a; pour i=1 a (x-1) faire y=a*y mod n fin_pour retourne y Exp_rapide(a,x,n)r=1 Tant que x <> 0 faire Si (x mod 2)=1 alors r = r*a mod n x=x-1 a=a*a mod n x=x/2 retourne r Si x est long de t chiffres, alors la boucle Pour sera exécutée jusqu’à 10 t fois. De plus, multiplier a ⋅ y n’est pas gratuit! calcul de a x (mod n) Si x est long de t chiffres, alors la boucle Tant que sera exécutée jusqu’à lg(10) ⋅ t fois avec 2 multiplications à chaque fois.

Des problèmes de calcul modulaire faciles Addition a+b mod m. Multiplication a*b mod m. Exponentiation a b mod m. Trouver le PGCD(a,b) de deux nombres entiers a et b. Par l’algorithme d’Euclide. Étant donné a et m, trouver a -1 tel que a ⋅ a -1 =1 mod m lorsque a ∈ Z* m (Euclide modifié).

Des problèmes de calcul modulaire faciles (II) Vérifier qu’un nombre N est premier, Test probabiliste très performant (Rabin-Miller) Tirer un nombre premier p aléatoire de k>0 bits. Tirer un nombre Q aléatoire de k bits, Vérifier si Q est premier (Rabin-Miller), Si c’est le cas, alors retourner Q, Sinon, recommencer... Il y a environ x/ln(x) nombres premiers entre 0..x

Des problèmes de calcul modulaire supposés difficiles Le problème de factorisation : Étant donné un entier N, donner ses facteurs premiers. Étant donné N=pq, trouver φ(N)=(p-1)(q-1). Le problème RSA: Étant donnés e et N=pq pour p et q premiers inconnus, trouver d tel que e ⋅ d=1 mod φ(N). Le problème de Diffie-Hellman : Étant donnés g et p premiers, g x mod p, g y mod p trouver g xy mod p. supposé difficile si p=2q+1, q premier, et si g=h2 mod p pour h un générateur.

Principes qui régissent la sécurité des systèmes modernes Les cryptosystèmes modernes ont leur sécurité exprimée en ces termes : « À moins que l’adversaire ne passe un temps déraisonnable à calculer, le système X est sûr. » En fait, la sécurité de ces systèmes est habituellement exprimée en des termes plus faibles : « En supposant que le problème Y ne peut être résolu en temps raisonnable, le système X est sûr. » Les chiffres modernes pratiques à clé secrète ont une sécurité ad hoc. Le problème Y sous-jacent n’est pas bien défini. Ceci serait sûr en pratique! Ceci est sûr en pratique que si Y était difficile

RSA RSA est un problème proche du problème de factorisation. Le problème de factorisation est à l’étude depuis longtemps. Il y a près de 90 ans (1919), les Français Pierre et Eugène Carissan construisaient une machine à factoriser appelée machine à congruences. Elle pouvait factoriser des nombres de moins de 13 chiffres décimaux en 18 minutes. En 2005, la factorisation du problème RSA de 200 chiffres a été réussie ( $): Question ouverte pour 212 chiffres ($30 000) L’Américain Lehmer en inventa une aussi en 1926!

La machine de Lehmer!

Nous allons maintenant voir comment fonctionne les chiffres à clé secrète modernes. Nous verrons les principes de construction importants. Nous en verrons deux qui sont utilisés aujourd’hui : DES et AES.