Arithmétique et cryptographie
Ce que ce chapitre apporte
- Maîtriser divisibilité, division euclidienne, pgcd et ppcm.
- Appliquer l'algorithme d'Euclide et sa version étendue, et énoncer le théorème de Bézout.
- Calculer dans les congruences et déterminer un inverse modulaire.
- Reconnaître les nombres premiers, appliquer le crible d'Ératosthène, citer les familles remarquables.
- Utiliser l'indicatrice d'Euler et le petit théorème de Fermat.
- Distinguer coder, chiffrer et hacher ; symétrique et asymétrique.
- Casser un chiffrement mono-alphabétique par analyse de fréquence.
- Dérouler RSA de bout en bout et expliquer pourquoi il fonctionne.
Pourquoi de l'arithmétique au XXIe siècle
L'objection est naturelle : on dispose des réels, des complexes, des vecteurs, pourquoi revenir aux entiers ?
0,1 + 0,2 ne vaut pas 0,3 en flottant, et 1/3 n'a pas d'écriture exacte.2. L'arithmétique est plus difficile que le calcul réel, pas plus simple. Dans ℝ, toute équation
ax = b avec a ≠ 0 a une solution ; dans ℤ, 3x = 5 n'en a aucune. Cette contrainte supplémentaire rend l'existence des solutions imprévisible.3. Cette imprévisibilité est exactement ce qu'on cherche. Elle permet de construire des opérations faciles dans un sens et hors d'atteinte dans l'autre, même quand l'adversaire connaît la méthode, et même quand il possède une partie de la clé.
Divisibilité et division euclidienne
divise , noté a | b, s'il existe un entier tel que .
Division euclidienne : pour entier et entier non nul, il existe un unique couple tel que avec .
L'unicité du couple est ce qui rend tout le reste possible. En Python, donne et a % b donne .
-17 // 5 vaut -4 et -17 % 5 vaut 3, ce qui respecte -17 = 5×(-4) + 3 avec 0 ≤ 3 < 5. En C ou en Java, -17 % 5 vaut -2 : le langage tronque vers zéro au lieu d'arrondir vers le bas.En cryptographie, où tout est modulaire, cette différence transforme un chiffrement correct en chiffrement faux. C'est un piège classique du portage d'un algorithme d'un langage à l'autre.
PGCD et algorithme d'Euclide
Le pgcd est le plus grand entier divisant et ; le ppcm le plus petit multiple commun positif. Ils sont liés par .
Deux entiers sont premiers entre eux si leur pgcd vaut 1. Ce n'est pas la même chose qu'être premiers : 8 et 9 sont premiers entre eux, et aucun des deux n'est premier.
Il repose sur une seule observation : . On remplace le couple par un couple plus petit jusqu'à obtenir un reste nul ; le dernier reste non nul est le pgcd.
C'est un des plus vieux algorithmes connus, et il reste remarquablement rapide : sa complexité est en . Sur des nombres de 600 chiffres, il termine en quelques microsecondes.
Euclide étendu et Bézout
Pour tous entiers et non nuls, il existe des entiers et tels que :
En particulier, et sont premiers entre eux si et seulement si il existe u, v avec .
L'algorithme d'Euclide étendu calcule ce couple en même temps que le pgcd. Ce n'est pas une curiosité théorique : c'est exactement ce qui permettra de calculer une clé privée RSA.
Congruences : calculer modulo n
(« congru à modulo ») signifie que divise , autrement dit que et ont le même reste dans la division par .
La congruence est compatible avec l'addition et la multiplication : si et , alors et . On peut donc réduire à chaque étape d'un calcul, ce qui évite de manipuler des nombres gigantesques.
2 × 3 = 6 ≡ 0. Ni 2 ni 3 n'est nul, et pourtant leur produit l'est. On ne peut donc pas « simplifier par 2 » comme on le ferait dans ℝ.Ce phénomène disparaît quand
n est premier : modulo un nombre premier, tout élément non nul est inversible et le produit de deux non-nuls n'est jamais nul. C'est la raison profonde pour laquelle la cryptographie travaille modulo des nombres premiers, ou modulo un produit de deux premiers dont elle contrôle la structure.
L'inverse modulaire
L'inverse de modulo est l'entier tel que . Il existe si et seulement si , et on l'obtient par Euclide étendu : de on tire , donc .
Nombres premiers
Un entier est premier s'il admet exactement deux diviseurs positifs distincts : 1 et lui-même.
≥ 2 se décompose de façon unique en produit de facteurs premiers. Si 1 était premier, 6 = 2×3 = 1×2×3 = 1×1×2×3 donnerait une infinité de décompositions. C'est l'unicité qui compte, et c'est elle qu'on protège.
Le crible d'Ératosthène
Pour lister tous les premiers jusqu'à : on écrit les entiers de 2 à , on garde le plus petit non barré, on barre tous ses multiples, on recommence. On peut s'arrêter dès que le carré du candidat dépasse .
Familles remarquables
Mersenne : Mₚ = 2ᵖ − 1. Pour que soit premier, il faut que le soit, mais cela ne suffit pas : . Les plus grands premiers connus sont des nombres de Mersenne, parce qu'il existe un test de primalité spécifique et très rapide pour cette forme.
Fermat : . Fermat conjecturait qu'ils étaient tous premiers ; c'est vrai pour à (3, 5, 17, 257, 65537), et Euler a réfuté la conjecture en factorisant F₅ = 4 294 967 297 = 641 × 6 700 417.
Sophie Germain : est un premier de Sophie Germain si est aussi premier. Les premiers sont 2, 3, 5, 11, 23, 29, 41… Ils sont recherchés en cryptographie parce qu'ils produisent des groupes à la structure bien maîtrisée.
2ᵐ + 1 est premier, alors m est nécessairement une puissance de 2, c'est-à-dire qu'on est dans la famille de Fermat. Et même là, on ne connaît que cinq nombres de Fermat premiers, tous découverts avant 1640.La raison est algébrique : si
m a un facteur impair k, alors 2^(m/k) + 1 divise 2ᵐ + 1. Exemple : 2⁶ + 1 = 65 = 5 × 13, avec 5 = 2² + 1.
Factoriser est difficile, et tout repose là-dessus
Multiplier deux nombres premiers de 300 chiffres prend une fraction de microseconde. Retrouver ces deux facteurs à partir du produit est, à ce jour, hors de portée de toute machine existante.
C'est l'asymétrie fondamentale sur laquelle RSA est bâti : une opération immédiate dans un sens, sans méthode praticable dans l'autre.
On sait en revanche que l'algorithme de Shor factorise en temps polynomial sur un ordinateur quantique. La menace n'est pas théorique, elle est technologique, et elle motive la cryptographie post-quantique, qui repose sur d'autres problèmes difficiles, pas sur la factorisation.
Euler et Fermat
est le nombre d'entiers de 1 à premiers avec .
- si est premier ;
- si et sont deux premiers distincts.
Petit théorème de Fermat : si est premier et ne divise pas , alors .
Théorème d'Euler, qui le généralise : si , alors .
C'est ce second théorème, et lui seul, qui fait fonctionner RSA.
N était premier, φ(N) = N − 1 serait calculable par tout le monde, la clé privée s'en déduirait immédiatement, et le chiffrement n'aurait aucun intérêt.Toute la sécurité de RSA tient à ce que
φ(N) = (P−1)(Q−1) exige de connaître P et Q, donc de savoir factoriser N.
L'exponentiation modulaire rapide
Calculer avec de 600 chiffres semble impossible. Ça ne l'est pas, grâce à une idée simple : élever au carré plutôt que multiplier une fois de plus.
, trois multiplications au lieu de douze, en suivant l'écriture binaire de l'exposant .
Coder, chiffrer, hacher
Trois mots qu'on confond, trois opérations différentes.
Coder (ou encoder) : représenter une information dans un autre alphabet. ASCII, UTF-8, base64. Réversible, sans secret, ce n'est pas de la sécurité.
Chiffrer : rendre une information incompréhensible sans la clé. Réversible avec la clé. (« Crypter » n'existe pas en français ; « décrypter » si, c'est lire sans la clé, donc casser.)
Hacher : produire une empreinte de taille fixe. Irréversible, et sans clé. Sert à l'intégrité et au stockage des mots de passe.
Chiffrement mono-alphabétique
Chaque symbole est remplacé par un autre, toujours le même. Le chiffre de César est le cas le plus simple : un décalage constant.
Le message chiffré est 9153787770964, décalé de . On applique le décalage inverse, chiffre par chiffre :
chiffre clair = (chiffre chiffré − 4) mod 10
, (car ), , , , …
On obtient 5719343336520, treize chiffres qu'on regroupe au format de coordonnées : 57°19'34.3"N, 3°36'52.0"W, quelque part dans les Highlands.
2+2+2+1 chiffres pour la latitude et 1+2+2+1 pour la longitude, soit treize exactement. Si ton message chiffré n'en a que douze, c'est qu'un chiffre s'est perdu à la recopie, et aucun découpage ne tombera juste. Vérifier la longueur attendue avant de déchiffrer évite de chercher l'erreur dans le mauvais endroit.
26! clés soit plus de 4 × 10²⁶, tombe en quelques secondes : il préserve les fréquences.
L'analyse de fréquence
En français, le représente environ 15 % des lettres, loin devant tous les autres. Un chiffrement mono-alphabétique déplace cette signature sans la détruire : la lettre la plus fréquente du texte chiffré est presque sûrement un chiffré.
Le chiffre de Vigenère répond à cette attaque en utilisant plusieurs alphabets, pilotés par un mot-clé : une même lettre claire devient des lettres chiffrées différentes selon sa position. Les fréquences sont lissées, mais l'attaque de Kasiski retrouve la longueur de la clé en repérant les motifs répétés, et ramène le problème à autant de chiffres de César.
Symétrique et asymétrique
Symétrique : la même clé chiffre et déchiffre. Rapide, adapté aux gros volumes. Standard actuel : AES. Problème : il faut avoir transmis la clé au préalable, par un canal sûr.
Asymétrique : deux clés liées mathématiquement. La clé publique chiffre et se diffuse à tous ; la clé privée déchiffre et ne quitte jamais son propriétaire. Standard historique : RSA. Lent, mais résout le problème de l'échange de clé.
RSA, pas à pas
Génération des clés
- Choisir deux grands premiers et , et poser .
- Calculer .
- Choisir premier avec .
- Calculer par Euclide étendu.
Clé publique : . Clé privée : . On détruit , et .
Chiffrement : Déchiffrement :
Pourquoi ça marche
Par construction , donc pour un entier . Alors :
Et le théorème d'Euler donne , d'où . ∎
N et E. Pour trouver D, il faut φ(N) ; pour φ(N), il faut P et Q ; pour P et Q, il faut factoriser N. Toute la sécurité de RSA tient à ce dernier maillon, et à rien d'autre.
Le second parchemin
Prenons une clé publique jouet : , , et une liste de blocs chiffrés. Déroulons.
1992 apparaît sept fois : c'est l'espace, et le message clair compte exactement sept espaces. On vient donc de reconstruire, sans le vouloir, un chiffrement mono-alphabétique, cassable par analyse de fréquence sans jamais factoriser N.Le vrai RSA chiffre des blocs de la taille de
N (2048 bits) et ajoute un remplissage aléatoire (OAEP) : deux chiffrements du même message donnent alors deux résultats différents. Sans remplissage, RSA est déterministe, donc faible, un algorithme correct mal employé ne protège rien.
1.Sur quoi repose la sécurité de RSA ?
2.Chiffrer avec la clé publique du destinataire assure…
3.Pourquoi calcule-t-on les puissances par exponentiation rapide ?
Confidentialité, authentification, intégrité
Chiffrer ne répond qu'à une question sur trois.
Confidentialité : personne d'autre ne peut lire. Chiffrer avec la clé publique du destinataire : lui seul possède la privée qui déchiffre.
Authentification, le destinataire sait qui a écrit. C'est la signature : l'expéditeur applique sa clé privée à l'empreinte du message ; n'importe qui vérifie avec sa clé publique. Les deux usages sont symétriques, et c'est la même mécanique employée dans l'autre sens.
Intégrité, le message n'a pas été modifié. C'est le rôle du hachage : on transmet l'empreinte, le destinataire la recalcule et compare.
Les deux premières se confondent tant qu'on n'a pas vu quelle clé sert à quoi, et dans quel sens. Les deux schémas ci-dessous se lisent en trois secondes et règlent la question.
Pour la confidentialité, Alice chiffre avec la clé publique de Bob. Elle est publique : n'importe qui peut donc écrire à Bob, ce qui est voulu. Seul Bob possède la privée correspondante, donc lui seul peut lire.
Pour l'authentification, tout s'inverse. Alice signe avec sa propre clé privée, que personne d'autre ne possède. N'importe qui vérifie avec sa clé publique, et cette vérification prouve que le message vient bien d'elle.
Clé privée de l'expéditeur : authentification. Un seul peut écrire, beaucoup peuvent vérifier.
En pratique on fait les deux à la fois, en signant puis en chiffrant. Et l'on ne signe jamais le message entier, seulement son empreinte : c'est plus court, et cela apporte l'intégrité par la même opération.
k bits offre 2ᵏ possibilités, et chaque bit ajouté double le travail de l'attaquant. Une clé de 56 bits (l'ancien DES) se casse aujourd'hui en quelques heures ; AES-256 est hors d'atteinte de toute attaque exhaustive concevable.Pour RSA, ce n'est pas l'attaque exhaustive qui compte mais la factorisation : les progrès des algorithmes et du matériel ont fait passer la recommandation de 1024 à 2048, puis 3072 bits. C'est la même raison qui a fait grandir les clés Wi-Fi.
Exercices type
Calculer $\operatorname{pgcd}(1071, 462)$ par l'algorithme d'Euclide, puis en déduire une relation de Bézout
Le dernier reste non nul est 21, donc .
En remontant : et , d'où
Vérification : ✓
Résoudre $7x \equiv 1 [26]$
On cherche l'inverse de 7 modulo 26. Comme , il existe.
Euclide : , , .
En remontant : .
Donc , soit .
Contrôle : ✓
Une clé secrète est-elle plus sûre qu'une clé publique ?
La question repose sur une confusion : ce ne sont pas deux options concurrentes, mais deux rôles différents dans le même système.
En asymétrique, la clé publique est faite pour être diffusée : la connaître ne permet pas de déchiffrer. La clé privée est l'unique secret. Il n'y a donc pas de comparaison de sûreté à établir.
La vraie différence est ailleurs : le chiffrement symétrique exige d'avoir transmis la clé au préalable par un canal sûr, problème insoluble à l'échelle d'internet. L'asymétrique le résout, au prix d'une lenteur qui le rend impraticable sur de gros volumes. D'où l'emploi conjoint des deux.
Avec $P = 11$, $Q = 13$, $E = 7$ : calculer $D$, puis chiffrer et déchiffrer $M = 9$
et .
. Euclide : , donc , d'où .
Chiffrement : . Par carrés successifs, , , donc . Puis . On réduit : , puis .
Déchiffrement : ✓ (à vérifier par pow(3, 103, 143)).
Est-ce que coder, c'est chiffrer ?
Non, et la confusion est dangereuse.
Coder change la représentation : ASCII, UTF-8, base64. L'opération est publique et sans clé, n'importe qui décode. Une chaîne en base64 n'est pas protégée, elle est simplement illisible à l'œil nu.
Chiffrer rend l'information inaccessible sans la clé. C'est le secret de la clé qui protège, pas l'obscurité du format.
Le message du parchemin illustre les deux étapes : les caractères sont d'abord codés en ASCII (opération publique), puis les codes sont chiffrés par RSA (opération à clé). Seule la seconde apporte de la sécurité.
Un nouveau théorème mathématique pourrait-il ruiner l'économie mondiale du jour au lendemain ?
En théorie, oui. Un algorithme de factorisation en temps polynomial rendrait RSA lisible instantanément : signatures, certificats, transactions bancaires, mises à jour logicielles authentifiées.
Trois nuances, qui comptent. La difficulté de la factorisation n'est pas démontrée : personne n'a prouvé qu'un tel algorithme n'existe pas. Le déploiement ne serait pas instantané : la cryptographie symétrique (AES) n'est pas concernée, et la migration serait rapide mais pas immédiate. Et la menace la plus concrète n'est pas mathématique mais technologique, l'algorithme de Shor existe déjà, il attend un ordinateur quantique de taille suffisante.
C'est pourquoi la cryptographie post-quantique, fondée sur d'autres problèmes difficiles, est en cours de normalisation. Se préparer avant l'événement, plutôt qu'après.
La méthode
- Écris la division euclidienne sous la forme avec . Toutes les erreurs de signe viennent de son oubli.
- Pose Euclide en colonnes, une division par ligne. Le dernier reste non nul est le pgcd.
- Pour Bézout, remonte les égalités une à une sans jamais calculer les produits : c'est ce qui rend le calcul faisable à la main.
- Réduis à chaque étape dans un calcul modulaire. Ne développe jamais une grande puissance.
- Pour une puissance modulaire, procède par carrés successifs en suivant l'écriture binaire de l'exposant.
- Pour RSA, déroule les quatre étapes dans l'ordre : , puis , puis , puis le déchiffrement. Contrôle avant de continuer.
- Vérifie par l'aller-retour : rechiffre le message obtenu et compare au chiffré de départ.
- Nomme la propriété visée : confidentialité, authentification ou intégrité. Chacune appelle un outil différent.
En résumé
- Division euclidienne : , , couple unique. Attention au signe du reste selon le langage.
- Euclide : , en . Euclide étendu donne
u, vtels que . - Bézout : et premiers entre eux ⟺ il existe
u, vavec . - Congruences : compatibles avec et , donc on réduit à chaque étape.
- Modulo un composé, un produit de non-nuls peut être nul. Modulo un premier, jamais.
- Inverse modulaire : existe ⟺ , se calcule par Euclide étendu.
- 1 n'est pas premier : l'unicité de la décomposition en dépend.
- Crible d'Ératosthène : barrer les multiples à partir de , s'arrêter à .
- Mersenne
2ᵖ − 1, Fermat , Sophie Germain et . - Factoriser est difficile : constaté, pas démontré. Shor le fait en quantique.
- , . Jamais pour un composé.
- Euler : si . C'est ce qui fait fonctionner RSA.
- Exponentiation rapide : carrés successifs, multiplications.
- Coder ≠ chiffrer ≠ hacher. Sans clé, sans clé et réversible, sans clé et irréversible.
- Mono-alphabétique : cassé par les fréquences, quelle que soit la taille de l'espace des clés.
- Kerckhoffs : la sécurité repose sur la clé, jamais sur le secret de l'algorithme.
- RSA : , , avec . Déterministe sans remplissage, donc à ne jamais employer nu.
- Confidentialité (clé publique du destinataire), authentification (clé privée de l'expéditeur), intégrité (hachage).
Et ensuite ? Il reste un dernier objet mathématique dans le bloc, et c'est celui qui modélise les relations plutôt que les nombres : la théorie des graphes, appliquée à la planification de tâches sur des serveurs.