Cryptographie et nombres premiers Lycée Jules Verne Cryptographie et nombres premiers Limours, 19 Novembre 2003 Michel Waldschmidt
La sécurité des cartes bancaires
Applications de la cryptographie Les cartes bancaires Sécurisation du Web Images numériques La télévision cryptée Les télécommunications …
Historique chiffrement par transpositions et substitutions alphabétiques (Jules César). 1586, Blaise de Vigenère (clef: «table de Vigenère») 1850, Charles Babbage (fréquence de répétition des lettres)
Toute méthode de chiffrement est connue de l'ennemi La sécurité du système ne dépend que du choix des clés. Auguste Kerckhoffs «La cryptographie militaire», Journal des sciences militaires, vol. IX, pp. 5–38, Janvier 1883, pp. 161–191, Février 1883 .
1917, Gilbert Vernam (masque jetable ) Exemple: le téléphone rouge 1940, Claude Shannon démontre que pour être totalement sûrs, les systèmes à clefs privées doivent utiliser des clefs d'une longueur au moins égale à celle du message à chiffrer.
Enigma
Alan Turing Déchiffrage des messages codés par Enigma Informatique théorique
Interprétation des hiéroglyphes Jean-François Champollion (1790-1832) La Pierre de Rosette (1799)
Colossus Max Newman, le premier ordinateur électronique programmable créé a Bletchley Park avant 1945
Théorie de l’Information Claude Shannon A mathematical theory of communication Bell System Technical Journal, 1948.
Claude E. Shannon, " Communication Theory of Secrecy Systems ", Bell System Technical Journal , vol.28-4, page 656--715, 1949. .
DES: Data Encryption Standard 1970, le NBS (National Bureau of Standards) lance un appel dans le Federal Register pour la création d'un algorithme de cryptage ayant un haut niveau de sécurité lié à une clé secrète compréhensible ne devant pas dépendre de la confidentialité de l'algorithme adaptable et économique efficace et exportable Le DES a été approuvé en 1978 par le NBS
Algorithme DES: combinaisons, substitutions et permutations entre le texte à chiffrer et la clé fractionnement du texte en blocs de 64 bits permutation des blocs découpage des blocs en deux parties: gauche et droite étapes de permutations et de substitutions répétées 16 fois recollement des parties gauche et droite puis permutation initiale inverse
Diffie-Hellman: cryptographie à clef publique W. Diffie and M.E. Hellman, New directions in cryptography, IEEE Transactions on Information Theory, 22 (1976), 644-654
RSA (Rivest, Shamir, Adleman - 1978)
R.L. Rivest, A. Shamir, and L.M. Adleman, A method for obtaining digital signatures and public-key cryptosystems, Communications of the ACM (2) 21 (1978), 120-126
Mathématiques de la cryptographie Algèbre Arithmétique = théorie des nombres Géométrie
Transmission de données Source But
Théorie du langage Alphabet - par exemple {0,1} Lettres (ou bits): 0 et 1 Mots (octets - exemple 0 1 0 1 0 1 0 0)
American Standard Code for Information Interchange ASCII American Standard Code for Information Interchange Lettre octet A: 01000001 B: 01000010 … …
Transmission d’un message codé Source Texte codé But
Clef publique Multiplier deux grands nombres est facile. Décomposer un grand nombre en produit de deux facteurs est plus difficile.
Exemple p=1113954325148827987925490175477024844070922844843 q=1917481702524504439375786268230862180696934189293 pq=2135987035920910082395022704999628797051095341826417406442524165008583957746445088405009430865999
pour devenir chef du Gang Quizz du malfaiteur Apprenez les maths pour devenir chef du Gang http://www.parodie.com/monetique/hacking.htm http://news.voila.fr/news/fr.misc.cryptologie
Limite actuelle : plus de 1000 chiffres Test de primalité Étant donné un entier, donner un algorithme permettant de décider s’il est premier ou composé. 8051 est composé 8051=83 97, 83 et 97 sont premiers. Limite actuelle : plus de 1000 chiffres
Nombres premiers industriels Tests probabilistes. Ce ne sont pas des tests de primalité au sens strict: ils ne permettent pas de s'assurer de façon certaine qu'un nombre est premier. Ils sont pourtant très utilisés dans les cas où un faible taux d'erreur est acceptable: on les appelle des nombres premiers industriels .
Agrawal-Kayal-Saxena Manindra Agrawal, Neeraj Kayal and Nitin Saxena, PRIMES is in P (Juillet 2002) http://www.cse.iitk.ac.in/news/primality.html
Le plus grand nombre premier connu 2 13 466 917 -1 4 053 946 chiffres 14 novembre 2001 http://primes.utm.edu/largest.html
Les quatre plus grands nombres premiers connus sont des nombres premiers de la forme 2a-1 On connaît 9 nombres premiers ayant plus de 500 000 chiffres et 76 ayant plus de 200 000 chiffres
Nombres de Mersenne (1588-1648) Les nombres de Mersenne sont les nombres de la forme Mp=2p -1 avec p premier. 22 944 999 -1 est divisible par 314584703073057080643101377
Nombres parfaits Un nombre entier n est parfait s’il est égal à la somme de ses diviseurs autres que lui-même. Les diviseurs de 28 autres que 28 sont 1,2,4,7,14 et 28=1+2+4+7+14. Noter que 28=4 7 et 7=M3.
Nombres parfaits Les entiers pairs parfaits sont ceux de la forme 2 p -1 Mp avec Mp =2p -1 nombre premier de Mersenne (donc p premier). On ne sait pas s’il existe des nombres parfait impairs!
Algorithmes de factorisation Étant donné un entier, le décomposer en facteurs premiers Limite actuelle: nombres de 150 chiffres. http://www.rsasecurity.com/rsalabs/challenges/
Challenge Number Prize $US RSA-576 $10,000 Not Factored RSA-640 $20,000 Not Factored RSA-704 $30,000 Not Factored RSA-768 $50,000 Not Factored RSA-896 $75,000 Not Factored RSA-1024 $100,000 Not Factored RSA-1536 $150,000 Not Factored RSA-2048 $200,000 Not Factored
RSA-576 Prize: $10,000 Status: Not Factored Decimal Digits: 174 188198812920607963838697239461650439807163563379417382700763356422988859715234665485319060606504743045317388011303396716199692321205734031879550656996221305168759307650257059 Digit Sum: 785
21024 + 1 = 45592577 6487031809 4659775785220018543264560743076778192897 p252 http://discus.anu.edu.au/~rpb/F10.html
Nombres de Fermat (1601-1665) Les nombres de Fermat sont les nombres Fn=2 2 n+1. F1=5, F2=17, F3=257, F4=65537 sont premiers. Constructions à la règle et au compas.
Euler (1707-1783) F5 = 232+1 est divisible par 641 4 294 967 297= 641 6 700 417
John Cosgrave (1946- ) Février 2003: Le nombre de Fermat 222 145 352 + 1 est divisible par 322 145 353 + 1 qui est un nombre premier ayant 645 817 chiffres 12 octobre 2003 Le nombre de Fermat 2 22 478 782 + 1 est divisible par 3 22 478 785 + 1 qui est un nombre premier ayant 746 190 chiffres www.spd.dcu.ie/johnbcos
Calculs modulo n On fixe un entier n : c’est la taille des messages que l’on va envoyer. On effectue tous les calculs modulo n : on remplace chaque entier par le reste de la division par n. Exemple: n=1000 on garde seulement les 3 derniers chiffres.
Division par n Soit n un entier positif. Tout entier positif x s’écrit x=q n+r, avec q et r entiers positifs et r<n. Le nombre q est le quotient tandis que r est le reste dans la division de x par n. Exemple: 123456789=1234561000+789 Si x est inférieur à n, le reste est x lui même.
Division par 2 Le reste de la division d’un entier x par 2 est 0 si x est pair 1 si x est impair.
Somme et produit modulo n Quand x et y sont deux entiers qui ont le même reste dans la division par n, on écrit x y mod n. En particulier si le reste de x modulo n est a alors x a mod n. Si xa mod n et yb mod n alors x+y a +b mod n et xy ab mod n.
Calculs modulo 2 Prenons n=2. Si x est pair on a x 0 mod 2 tandis que si x est impair on a x 1 mod 2. Quand x et y sont deux entiers on a x y mod 2 si et seulement si x et y sont de même parité (tous deux pairs ou tous deux impairs).
Somme modulo 2 Les règles pour l’addition sont les suivantes pair + pair = pair 0+0=0 pair + impair = impair 0+1=1 impair + pair = impair 1+0=1 impair + impair = pair 1+1=0
Produit modulo 2 Les règles pour la multiplication sont les suivantes pair pair = pair 0 0=0 pair impair = pair 0 1=0 impair pair = pair 1 0=0 impair impair = impair 1 1=1
Calculs modulo n pour le codage Pour coder des messages on utilise pour n le produit de deux nombres premiers ayant environ 150 chiffres chacun.
Cryptographie à clef publique Clef publique: (e,n) e et n entiers n donne la taille des messages e sert à crypter. Clef privée: r entier, sert à décrypter, connue du destinataire.
Choix de e, r et n On choisit d’abord deux nombres premiers p et q assez grand, puis on choisit e et r tels que er-1 soit divisible par le produit (p-1)(q-1): er 1 mod (p-1)(q-1) On prend n=pq. On fait tous les calculs modulo n.
Exemple Prenons p=3 et q=11, on a donc n=p.q=33 et (p-1).(q-1)=2.10=20 On choisit e=3, qui n'a pas de facteur commun avec 20. On cherche r tel que er1 mod 20, on trouve r=7. On publie e et n, on garde r secret.
Cryptage avec la clef publique Message à envoyer: entier x avec x <n L’expéditeur envoie y xe mod n Le destinataire calcule z yr mod n Comme er 1 mod (p-1)(q-1), on a z x mod n.
Exemple: x=14 Dans l’exemple avec n=33, e=3, r=7, si x=14 on a xe =143 = 2744 5 mod 33 y=5 yr = 57 = 78125 14 mod 33 z=14=x
Explication de z x mod n Si p est un nombre premier, alors pour tout entier positif x on a (petit théorème de Fermat) xp x mod p Exemples: 25=32=65+2 2 mod 5 35=243=485+3 3 mod 5 On en déduit que pour a 1 mod p-1 xa x mod p (exemple: a=p)
Public: n, e, y Secret: x, r Tout le monde connaît y et e et sait que y xe mod n Pour retrouver x, si on connaît r, il suffit de calculer x yr mod n.
Sécurité de la transmission Pour décoder le message y, c’est-à-dire pour trouver x, il suffit de connaître r. Connaissant e et n, peut-on trouver r tel que er 1 mod (p-1)(q-1) ? C’est facile si on connaît p et q. Tout le monde connaît le produit n=pq, mais les facteurs p et q ne sont pas publics!
Fonction trappe Connaissant n, x et e, il est facile de calculer y=xe mod n Connaissant n, y et e, il n’est pas facile de calculer x tel que y=xe mod n … sauf si on connaît r: x=yr mod n
Questions subsidiaires Transmettre la clef Identification de l’expéditeur : authentification des signatures Signature électronique, certification,…
Signature RSA Alice envoie un message m à Bob et veut le signer pour s’identifier Elle dispose d’une clef publique e et d’une clef secrète r avec er 1 mod (p-1)(q-1) Elle calcule s mr mod n et envoie m et s. Bob vérifie m se mod n.
Exemple: x=14 Dans l’exemple avec n=33, e=3, r=7, si m=14 on a mr =147 = 105 413 504 20 mod 33 s=20 se = 203 = 8000 14 m mod 33
La sécurité des cartes bancaires La carte à puce a été créée par deux ingénieurs français, Roland Moreno et Michel Ugon, à la fin des années 1970
Cryptographie moderne Courbes elliptiques (logarithme discret) Jacobiennes de courbes algébriques Cryptographie quantique (Peter Shor) - utilisation de la résonance magnétique nucléaire.
Le dernier théorème de Fermat Énoncé de Pierre de Fermat: si n est un entier supérieur ou égal à 3, il n’existe pas d’entiers positifs x, y, z satisfaisant: xn + yn = zn Démontré par Andrew Wiles en 1994
Andrew Wiles
« Monsieur Fourier avait l’opinion que le but principal des mathématiques était l’utilité publique et l’explication des phénomènes naturels. »
Gustav Jacobi « Un philosophe tel que lui aurait dû savoir que le but unique de la Science, c’est l’honneur de l’esprit humain et que, sous ce titre, une question de nombres vaut bien une question du système du monde »
G.H. Hardy «Je n’ai jamais rien accompli d’ «utile». Aucune de mes découvertes n’a rien ajouté, ni vraisemblablement n’ajoutera, directement ou non, en bien ou en mal, aux agréments de ce bas monde»
Henri Poincaré « Les mathématiques méritent d’être cultivées pour elles-mêmes, les théories qui ne peuvent être appliquées à la physique doivent l’être comme les autres. »
« La science a eu de merveilleuses applications, mais la science qui n’aurait en vue que des applications ne serait plus de la science, elle ne serait que de la cuisine. » Henri Poincaré La science a eu de merveilleuses applications, mais la science qui n’aurait en vue que des applications ne serait plus de la science, elle ne serait que de la cuisine
http://smf.emath.fr/Publication/ ExplosionDesMathematiques/ Presentation.html
F5=232 +1 = 4 294 967 297 est divisible par 641 641= 625 + 16 = 54 + 24 641=5128 + 1= 5 27 + 1 641 divise 54 228 + 232 641 divise 54 228 - 1 x4-1=(x+1)(x3-x2+x-1) Donc 641 divise 232 + 1. Le quotient 6 700 417 est un nombre premier.