recevoir les
news ::
signaler une
erreur ::
statistiques
visiteurs ::
imprimer
ALGORITHMES
| FRACTALS | ALGEBRE
DE BOOLE | CRYPTOGRAPHIE |
INFORMATIQUE QUANTIQUE
Avec la prolifération des ordinateurs et des moyens électroniques
de communication, il devient de plus en plus important d'utiliser
des codes secrets pour la transmission des données entre les organismes
à caractère militaire ou
1. Les premières (celles de 128 bits
aujourd'hui) concernent les systèmes de chiffrement à clé secrète
ou symétrique. Rigoureusement parlant, les mathématiques de ces
clés sont plus complexes que celles des systèmes à clés publiques
et font souvent référence au protocole DES: Data Encryption System
(en 1998, les Etats-Unis ont décidé de changer de protocole et de
passer au AES Advanced Encryption Standard qui reste un
algorithme de chiffrement par bloc).
2. Les secondes (celles de 320 bits
aujourd'hui) sont la partie publique d'une clé d'un système de chiffrement
à clé publique ou asymétrique. Ce
type de clé fait souvent référence au protocole RSA, du nom des
personnes à qui on en a attribué le développement: Rivest, Shamir
et Adi. Elles sont beaucoup utilisées de par la rapidité du temps
de cryptage et de décryptage ainsi que de leur grande entropie.
Commes elles sont utilisées en masse sur des serveurs uniques, il
était important de trouver un système simple et sûre.
Par nature, ces deux types de clés
sont très différentes. Essayons d'en comprendre les raisons:
Un système de chiffrement est dit symétrique
si la clé utilisée dans l'opération de chiffrement est aussi celle
utilisée dans l'opération de déchiffrement; dans ce cas, lors d'un
échange sécurisé (supposé), les deux parties de la correspondance
doivent partager un secret: la clé utilisée ou "clé de session".
De tels systèmes sont aussi nommés "systèmes de chiffrement
à clés secrètes ".
Les protocoles asymétriques, ou à clé
publique, désignent les systèmes de chiffrement où la clé utilisée
pour le chiffrement (clé privée de l'expéditeur) diffère de celle
utilisée pour le déchiffrement (clé privée du destinataire). Le
seul échange qu'il y a entre les membres du groupe, est une clé
nommée "clé publique", qui permet à chacun des membres
d'adapter son chiffrement (ou cryptage) en fonction de la clé privée
des autres membres. Parmi les nombreux systèmes asymétrique qui
ont été proposés, l'un des plus répandu est le RSA.
Si l'on considère que la loi de Moore
s'applique indéfiniment, une "clé secrète" de 218 bits
(39 chiffres) serait cassable en ~2100 et une "clé publique"
de 2048 bits en ~2080. Mais rappelons que la première bien que plus
sécurisée n'est pas adéquate du tout à une utilisation de masse.
Quant à la publique, le dernier record de factorisation d'un entier
a été établi durant l'été 1999 par une équipe de mathématiciens
qui a factorisé un entier de 512 bits (155 chiffres)
après plusieurs mois de calculs distribués sur des centaines
d'ordinateurs du réseau Internet et terminée sur un supercalculateur:
des moyens hors de portée du particulier moyen. Pour obtenir une
sécurité satisfaisante aujourd'hui, il est estimé que les clés RSA
doivent avoir une taille de 1024 bits (Internet Explorer fonctionne
avec un système asynchrone de 1024 bits certifié par un système
synchrone)
Au
cours de l'histoire, on s'est servi de différents codes pour transmettre
des messages secrets (surtout de nature militaire). Les messages
qui étaient codés avec des méthodes relativement simples pouvaient,
avec peu d'effort, être finalement déchiffrés. De leur côté, les
messages qui recouraient à des codes très sophistiqués, et donc
presque indéchiffrables souffraient du désavantage d'être très compliqués
à transmettre ou très longs à décoder. D'ailleurs, la plupart des
codes employés au cours de l'histoire pourraient facilement être
décodés par un intercepteur muni d'un ordinateur moyen contemporain.
De tout manière, ces codes demeurent toujours déchiffrables, à condition
que l'intercepteur possède "assez de temps et de papier"
(sauf exception si l'on aborde le cryptage quantique).
Pour aborder les fondements de la théorie de la cryptographie, j'avais
le choix:
1.
De renvoyer fréquemment
le lecteur à des théories qui ont été vues dans d'autres sections
de ce site comme on le fait dans de trop nombreux ouvrages (qui
font toujours référence à d'autres ouvrages ou à d'autres pages
ou encore qui supposent que le lecteur sait déjà beaucoup de choses)
2.
De reporter toutes les
théories dans un même cadre.
Par
expérience, j'ai choisi la seconde option.
PRINCIPE
DE KERCHOFFS
La première fonction de la cryptographie
consiste à assurer la confidentialité d'un échange d'information.
Deux parties d'un échange confidentiel s'accordent d'abord sur une
convention secrète pour rédiger leurs messages, et si elles l'ont
soigneusement choisie, personne d'autre ne peut saisir leur échange.
Si le caractère secret de telles conventions
est envisageable entre quelques personnes isolées pour une période
limitée, il est inconcevable à grande échelle et pour une durée
assez longue. C'est ce qu'avait compris Auguste Kerchoffs lorsqu'il
établit les principes de base de la cryptographie pratique dont
un principe fondamental exige un système de chiffrement: "qui
n'exige pas le secret, et qui puisse sans inconvénient tomber entre
les mains de l'ennemi".
Un autre principe précise que: "la clé doit pouvoir
être changée ou modifiée au gré des correspondants". Le premier
de ces deux principes, connu aujourd'hui sous le nom de "Principe
de Kerchoffs", stipule donc que la sécurité d'un système de
chiffrement n'est pas fondée sur le secret de la procédure qu'il
suit, mais uniquement sur un paramètre utilisé lors de sa mise en
oeuvre, la clé. Cette clé est le seul secret de la convention d'échange.
SYSTEMES
SYMETRIQUES ET ASYMETRIQUES
Il existe deux types fondamentales
de clés:chrone de 128 bits).
TRAPPES
Il existe parfois ce que l'on nomme
des "trappes" dans le clés publiques et secrètes. Ceci
est du au fait que lors de la génération de la clé, qui doit se
faire aléatoirement en respectant certaines contraintes théoriques
prédéfinies, le générateur aléatoire a un défaut (parfois le défaut
est volontaire de la part du fournisseur
espionnage oblige).
Dans les clés secrètes, les trappes
se situent au niveau de l'entropie de la clé, directement liée à
l'entropie du générateur aléatoire. On définit l'entropie d'un générateur
de clés par le nombre moyen optimal de questions binaires (c'est-à-dire
donnant lieu à des réponses du type oui/non) qu'il faut poser à
quelqu'un connaissant une clé produite par ce générateur, pour la
déterminer. Plus l'entropie d'un générateur de clé est élevée, plus
il faut de questions pour déterminer cette clé. A l'inverse, plus
l'entropie est faible, moins il faut de questions, de sorte que
la recherche d'une clé est facilitée. L'entropie d'un générateur
de clés de n bits n'excédera donc jamais n mais pourra
cependant y être inférieure.
L'introduction de trappes dans les
clés de systèmes asymétriques est beaucoup plus difficile, puisque
ce type de clé possède déjà une structure mathématique intrinsèque:
leur constructions n'est pas due au hasard, mais résulte de règles
mathématiques. Le hasard est ici dans le choix des grands nombres
premiers utilisés. Si le générateur aléatoire qui engendre ces nombres
est biaisé (voir la définition de ce terme dans la section probabilités
du site), ce biais facilitera la recherche des nombres premiers
ayant servi à l'élaboration de la clé qu'un attaquent tente de casser.
RAPPELS
SUR LA LOI DE GROUPE
Remarque : pour les détails,
voir le chapitre traitant de la théorie des ensembles dans
la section d'arithmétique.
Soit pour simplifier les écritures,
une
loi de composition (comme l'addition, la multiplication, la division
par exemples) interne dans E (un ensemble quelconque comme
).
On écrit que:
est
une loi de composition interne dans E
vers E implique (bijection)
est
une loi de composition interne dans E
implique que est
une application de
Définitions:
Soit et
des
symboles de lois de composition internes dans un ensemble E
:
- est
commutative: 
- est
associative: 
- n est élément neutre pour
:

- est
le symétrique de pour
:

-
est
distributive par rapport à :

On définit un ensemble par le terme
"Groupe", noté G, si les composants le constituant
satisfont aux 3 conditions de ce que l'on nomme la "Loi de
Groupe", définie ci-dessous:
est
un groupe si 
Il y a des groupes particuliers tels
que si:
- est
également commutative on dit alors que le groupe est "abélien"
(ou commutatif)
On
ne verra pas les autres groupes particuliers qui sortent du contexte
de la base mathématique de la cryptographie. Tant pis donc pour
l'étude de l'AES (Advanced Encryption System).
RAPPELS
SUR LA DIVISIBILITE
Soit
avec
.
On dit que A divise
B s'il existe un entier q tel que , auquel cas on écrit .
Dans le cas contraire, on écrit et
on lit "A ne divise pas B".
Exemple:
3 divise 15 et l'entier q vaut donc 5
RAPPELS
SUR LA DIVISION EUCLIDIENNE
Soit
avec
;
alors, il existe des entiers q et r tels que
,
où .
De plus, si ,
alors .
Démonstrations:
Considérons l'ensemble:
Il
est facile de voir et
donc que ,
d'où, d'après le principe du bon ordre, on conclut que S
contient un plus petit élément .
Soit q l'entier satisfaisant à .
Il reste à montrer que .
Supposons le contraire à nouveau (démonstration par l'absurde),
c'est-à-dire que .
Alors, dans ce cas, on a ,
ce qui est équivalent à ;
mais et
,
ce qui contredit le fait que est
le plus petit élément de S. Donc, .
Enfin, il est clair que si ,
on a ,
d'où la seconde affirmation du théorème.
RAPPELS
SUR LE P.G.C.D.
Soit tels
que .
Le "plus grand commun diviseur" (noté p.g.c.d par la suite)
de ,
noté ,
est l'entier positif d qui satisfait aux deux conditions
suivantes:
1. et
2. si et
alors
(par
définition)
Exemple: Le p.g.c.d de 9 et 15 est
3
Remarque: notons que 1 est un diviseur commun de deux
entiers arbitraires. Cependant, il n'est pas évident que le p.g.c.d
de deux entiers existe
toujours; ce fait est démontré dans le théorème suivant (cependant,
si le p.g.c.d existe, il est de par sa définition unique):
Soit tels
que .
Alors, il existe des entiers tels
que:
Exemple: pour
Démonstration:
Considérons l'ensemble .
Comme et
,
on peut utiliser le principe du bon ordre et conclure que S
possède un plus petit élément d. On peut alors écrire pour
un certain choix .
Il suffit de montrer que .
Pour cela, il faut montrer que d satisfait aux conditions
1. et 2. de la définition du p.g.c.d.
Commençons par la première:
Supposons que .
Alors, d'après la division euclidienne, il existe tels
que ,
où .
Mais alors:
et
donc et
,
ce qui contredit le fait que d est le plus petit élément
possible de S. Donc, et,
de la même façon, on démontre que .
FONCTION
PHI D'EULER
Soit
la fonction d'Euler
définie par:
Il
faut lire: la fonction du
nombre m a pour résultat un nombre n inférieur ou
égal à m et tel que le plus grand commun diviseur de n
et m soit 1.
On
remarque la propriété remarquable de cette fonction lorsque si l'on
note un nombre premier quelconque par la lettre p alors:

Cette
fonction à également la propriété remarquable de compter le nombre
d'entiers positifs plus petits que m et "relativement
premiers" (attention, nous reviendrons sur cette terminologie)
à m, c'est-à-dire:

C'est pourquoi on trouve
parfois dans la littérature le terme "indicateur d'Euler"
au lieu de "fonction phi d'Euler".
RAPPELS
SUR LA CONGRUENCE
Définition:
Soit .
On dit que "
est congru à b modulo m", et on écrit:

si
;
dans le cas contraire, on dit que "
est non congru à b modulo m".
D'autre
part, on peut tendre la signification du mot "reste" en
disant que: "deux nombres congrus pour le module M
sont résidus l'un de l'autre pour ce module".
On
a les propriétés principales suivantes pour la congruence:
-
On peut multiplier les deux membres d'une congruence par un même
nombre entier et il restera congru modulo m et multiplié
par ce nombre entier.
-
On peut élever à une même puissance les deux membres d'une congruence.
-
Si
Exemple:
car
et
et
idem pour les autres propriétés de la congruence.
Revenons
à notre théorème d'Euler (qui soit dit en passant, est une généralisation
du "petit théorème de Fermat" que nous verrons plus loin):
Soit
(le
plus grand diviseur commun de et
),
alors:
Démonstration:
Définition
préalable: Un système de résidus modulo m est un ensemble
d'entiers tel
que:
1.
2.
n'est
pas congru modulo
m lorsque
3.
chaque entier relativement
premier avec m est congru à un certain modulo
m.
Exemple:
L'ensemble est
un système réduit de résidus modulo 6 ou autre exemple, est
un système réduit de résidus modulo 7. On vérifie également pour
le premier exemple, que 1 n'est pas congru 5 modulo 6 (effectivement,
6 ne divise pas (5-1)) et que 5 qui est relativement premier à 6
est congru à lui-même.
Soit
un
système réduit de résidus modulo m. Nous avons besoin pour
la démonstration du théorème d'Euler, de démontrer que est
aussi un système réduit de résidus modulo m.
Remarque:
Vous pouvez observer que le nombre de résidus correspondent, pour
un modulo m premier donné, au résultat défini par la fonction
d'Euler.
On parle alors de "conjecture", c'est-à-dire une supposition
fondée sur des probabilités.
Démonstration
sous-jacente:
Puisque
et
,
alors nous voulons démontrer que est
aussi satisfait:
Posons
.
On a donc puisque que
et
et
identiquement pour puisque
et
que .
Maintenant si divise
bien ou
dans
ce cas on a que ou
autrement .
Donc et
ce
qui nous permet d'écrire:
Revenons
à notre théorème d'Euler. Nous venons de démontrer qu'il y a bijection
entre les deux ensembles de résidus. C'est-à-dire que pour chaque
résidu du
système réduit modulo m, on aura un résidu du
système réduit modulo m selon
la propriété fondamentale de la congruence qui rappelons-le dit
que:
"On
peut multiplier les deux membres d'une congruence par un même nombre
entier et il restera congru modulo m et modulo m multiplié
par ce nombre entier."
Exemple:
Prenons effectivement
car
le reste de la division de 30 par 6 est bien nul. Si l'on prend
par exemple alors
également et
le reste est aussi nul
Petit
rappel sur la bijection: On dit que l'on a une bijection, si à chaque
élément d'un ensemble de départ correspond au moins un élément dans
l'ensemble d'arrivée (s'il y avait pour chaque homme sur Terre un
femme à proportions égales donc il y aurait bijection entre
l'ensemble des Hommes et des Femmes).
Bref,
comme il y a bijection, on peut écrire:

Exemple:
L'ensemble est
un système réduit de résidus modulo 6 comme nous l'avons déjà vu.
On a donc .
Si l'on prend un tel
que ,
par exemple car
effectivement .
Alors car
.
Effectivement 6 divise bien 30 avec un reste nul.
Donc
revenons à notre bijection qui peut s'écrire par les règles
élémentaires de l'algèbre:
Puisque (vous
pouvez vérifier!), on est bien obligé de conclure que:
et
de toute façon, même si cela ne vous semble pas évident, vous n'avez
qu'à multiplier chacun des membres de l'égalité de la congruence
par:
comme
nous l'autorise une des propriétés intrinséque de la congruence.
SYSTEME DE CHIFFREMENT A CLE SECRETE D.E.S
Le "chiffre à usage
unique" est un algorithme de chiffrement à clé secrète prouvé
"inconditionnellement sûr". Correctement utilisé (et c'est
un point important), il fournit un chiffrement incassable. On l'emploie
pour cette raison dans des cas sensibles, par exemple, pour sécuriser
le "téléphone rouge" entre Moscou et Washington.
Les bases
théoriques de ce système de cryptage sont les suivantes:
Soit un
message M sous forme binaire à transmettre entre des personnes
A (créateur et expéditeur du message M) et B
(le destinataire). On engendre une grande quantité de bits "réellement
aléatoires" qui forment une clé secrète K (les programmes
informatiques, déterministes par essence, ne peuvent engendrer des
bits vraiment aléatoires).
Cette clé
sera transmise à B par un canal sûr (à nouveau la physique
quantique intervient au moment inopportun). Un laps de temps donnée
après la transmission de cette clé, A va encoder son message
en C en effectuant l'opération:

où est
un opérateur qui doit satisfaire à une "loi de groupe"
sur un ensemble fini (qui contient un nombre fini d'éléments). L'intérêt
en informatique est d'utiliser la loi de groupe XOR (aussi nommée
OU EXCLUSIF) notée par
la suite.
Finalement, l'expéditeur A transmet
la version cryptée C de son message par une voie pas nécessairement
sécurisée. B retrouve le message original M en utilisant
l'opération inverse de
(l'opérateur
XOR est son propre inverse). Ainsi B va effectuer l'opération
suivante:
Sous réserve que la clé K ait
bien été engendrée de façon totalement aléatoire et que chaque bit
la composant n'ait été utilisé qu'une seule fois pour crypter le
message, un intercepteur n'obtient aucune information sur le message
clair M si il intercepte C (hormis la taille de M).
En effet, dans ces conditions, on ne peut établir aucune corrélation
entre M et C sans la connaissance de K.
Même avec de futures ordinateurs quantiques
ultra-puissants, le problème est insoluble, car rien ne relie les
informations dont on dispose et le problème à résoudre. En conséquence,
le "chiffre à usage unique" est un algorithme de chiffrement
"inconditionnellement sûr"; la preuve de sa sécurité ne
fait pas appel à des conjectures mathématiques non démontrées et
les tentatives de déchiffrement d'un intercepteur muni d'une puissance
de calcul infinie sont vaines.
Cependant, chaque étape du chiffrement
est possible source d'erreur. En effet, la clé K peut avoir
été mal élaborée. La moindre déviation statistique sur K
par rapport à du "vrai" aléatoire fourni des informations
sur les message clair M à partir de sa version cryptée. C'est
la raison pour laquelle les bits de K ne doivent servir qu'une
seule fois. Effectivement:
Supposons qu'une même clé ait servit
à chiffrer les messages de langue française et
et
qu'une personne malveillante arrive à intercepter les deux message
correspondants cryptés et
.
A partir de et
l'intercepteur peut facilement obtenir des informations sur et
du
fait des particularités des langues. En effet, puisque et
,
alors l'intercepteur connaît un résultat simple qui fait intervenir
et
,
sans la clé K:

car (qui
est élément neutre du OU EXCLUSIF). Or, si et
sont
dans la même langue, on saura en général, grâce aux redondances
des langues, retrouver à partir de ,
chacun des deux messages (le travail est quand même laborieux).
Le problème principal de cette technique
est donc la création d'une clé aussi aléatoire que possible. Pour
palier à cela, les mathématiciens font passer la clé par une série
de fonctions imbriquées, dont le résultat, après un grand nombre
d'itérations, devient "pseudo aléatoire".
Construire une itération pseudo aléatoire
est une chose, construire une bijection pseudo aléatoire en cependant
une autre. En effet,il faut pouvoir décrypter le message par la
suite, c'est pourquoi l'on a absolument besoin d'un système bijectif
(qui a tout élément d'arrivée fait correspondre un élément de départ
et inversement).
SCHEMA
DE FEISTEL
Dans les années 1950, un mathématicien
(Feistel) a montré qu'une fonction pseudo aléatoire se transforme,
par une méthode simple, en bijection. Aujourd'hui, la méthode de
Feistel est la plus utilisée dans les chiffrements à clé secrète
et est aussi à la base du DES (Data Encryption System). Comment
fonctionne-t-elle ?
En voici le principe:
Le message initial à chiffrer à une
taille de 2n bits. On sépare le message M en deux
blocs, G et D, de longueurs égales (G regroupe
les n premiers bits et D les suivants) et on construit
la transformation qui
associe à G et D les nombres S et T
tel que:
et
où le signe représente
désigne l'opération XOR bit à bit et une
fonction quelconque, pas nécessairement bijective, de n bits
vers n bits qui utilise la clé secrète K.
La transformation est
bien bijective, car on remonte de façon univoque (unique) à partir
de S et de T à G et D par les opérations:
et

On ne doit évidemment pas s'arrêter
là puisque la partie droite du message, D, n'a pas été chiffrée,
elle est simplement passée à gauche. Cependant, comme est
bijective, on peut réitérer le processus. Un schéma de Feistel où
l'on applique n fois la fonction est
nommée schéma à n étapes. Dont voici un exemple pratique
tiré du mensuel "Dossiers pour la Science":
Des résultat théoriques complexes garantissent
la sécurité cryptographique des schémas de Feistel à partir de quatre
étapes lorsque n est assez grand et lorsque les fonctions
sont
indiscernables de fonctions réellement aléatoires. En pratique,
plutôt que d'utiliser quatre étapes et des fonctions qui
ont l'air aléatoires, on préfère passer en général utiliser plus
d'étapes et des fonctions plus
simples. Au bout de quelques étapes, la bijection obtenue devient
souvent très difficile à distinguer des bijections aléatoires. Et
pour des paramètres bien choisis, on ne sait plus du tout comment
les distinguer de bijections réellement aléatoires !!!
La plupart des algorithmes à chiffrement
à clé secrète utilisés actuellement dans le monde civil sont des
schémas de Feistel. En particulier, l'algorithme DES (Data Encryption
System) qui est un schéma de Feistel à 16 étapes comme représenté
dans la figure ci-dessous, l'algorithme Triple DES (TDES) qui est
un schéma de Feistal à 48
étapes et l'algorithme Blowfish.
Il y a, par exemple, dans chaque carte
bancaire, une clé DES (ou TDES depuis octobre 2001).
Principe du schéma: Un message à chiffrer
est découpé en blocs de 64 bits, chacun d'eux étant séparé en deux
sous-blocs de 32 bits, le bloc de gauche (G) et le bloc de droit
(D). A chaque itération, l'ancien bloc droit devient le nouveau
bloc gauche et le nouveau bloc droit résulte de la combinaison par
l'opération XOR de l'ancien bloc droit, dont les bits sont mélangés
par une fonction de confusion, et de l'ancien bloc gauche. On répète
l'itération 16 fois. La fonction de confusion, qui agit sur les
blocs de 32 bits, mélange les bits selon les processus suivant (à
droite sur la figure). D'abord, elle transforme le bloc de 32 bits
en un bloc de 48 bits par duplication de certains bits (expansion).
Ensuite, elle ajoute à ce bloc, une sous-clé de 48 bits (clé de
tour) extraite de la clé secrète de 56 bits puis elle transforme
chaque ensemble de 6 bits en 4
bits par des transformations locales (transformation S).
On aboutit à un bloc de 32 bits que l'on mélange enfin suivant une
permutation fixe.
PRATIQUE
DU SYSTEME DE CHIFFREMENT A CLE PUBLIQUE R.S.A
En
1975, W. Diffie et
M.E. Hellman, deux professeurs du département de Standford University
(une des deux meilleure école au monde), révolutionnaient la science
de la cryptographie en démontrant l'existence d'un code (voir "New
Directions in Cryptrography", IEEE Transactions on Information
Theory, novembre 1976) qui ne pouvait être déchiffré par un
intercepteur à moins que ce dernier ne disposât de millions d'années
de temps d'ordinateur. Le
plus fascinant dans leur méthode dont le principe est encore en
usage aujourd'hui c'est que le code utilisé ne nécessite pas le
camouflage de la méthode employée et qu'il peut servir à maintes
reprises sans aucune modification (principe de Kerchoff que l'on
verra plus tard). Toutefois, ce sont trois mathématiciens du M.I.T,
R.L. Rivest, A. Shamir et L. Adleman (RSA) qui eurent d'appliquer
les nombres premiers au schéma de principe du système de Diffie-Hellman.
Posons
à plat les mathématiques de ce système de cryptage:
Soit
étant donné un nombre N, décider si N est premier
ou non.
On
sait d'après le théorème d'Euler, que si N est un nombre
premier et si ,
où ,
alors (c'est l'expression du "petit théoèrme de Fermat"):
Effectivement
si vous vous rappelez du théorème d'Euler et
de la propriété de la fonction pour
un nombre m premier.
Le
petit théorème de Fermat est cependant également valable pour quelques
nombres N qui ne sont pas premiers. Mais
les nombres qui vérifient ça sans être premiers sont "rares",
et du coup ça vaut la peine de déclencher un algorithme plus "sophistiqué"
pour savoir si N est réellement premier ou non (disons que
dans ce cas, N est un bon candidat à la primalité et est
alors appelé "nombre pseudo-premier"). Pour tester si
le nombre N non-premier est "suffisamment premier",
on essaie avec un algorithme de tester le petit théorème de Fermat
pour un nombre maximal de
avec .
D'après
la propriété de la congruence, on a également:

On
peut appliquer ce dernier théorème sur un nombre N à propos
duquel on aimerait savoir au mieux s'il est premier ou non.
Il
existe une grande quantité d'autres méthodes non-optimales pour
déterminer si N est premier; dont les essais préliminaires
de division par 2, 3, 5, 7, 11 et des nombres premiers petits jusqu'à
selon
la méthode du crible d'Eratosthène qui est la plus connue dans les
écoles.
En fait, avec l'aide d'un ordinateur
assez puissant, on peut décider si un nombre naturel de l'ordre
de (10
suivi 300 zéros) est premier ou non en l'espace de quelques minutes
voir secondes. Ce qu'il est important de savoir, c'est que, étant
donné un nombre naturel N, on peut décider en relativement
peu de temps s'il est premier ou non, sans pour autant connaître
ses facteurs premiers.
Cependant, selon le théorème fondamental
de l'arithmétique on a que:
Tout
nombre naturel peut
s'écrire comme un produit de nombres premiers, et cette représentation
est unique, à part l'ordre dans lequel les facteurs premiers sont
disposés.
Démonstration: Si n est premier,
alors la preuve est terminée. Supposons que n n'est pas premier
et considérons l'ensemble:
Alors,
et
, puisque n est composé, on a que ,
D'après le principe du bon ordre
(tout ensemble non vide contient un plus petit élément) , D
possède un plus petit élément qui
est premier, sans quoi le choix minimal de serait
contredit. On peut donc écrire .
Si est
premier, alors la preuve est terminée. Si est
composé, alors on répète le même argument que précédemment et on
en déduit l'existence d'un nombre premier et
d'un entier tels
que .
En poursuivant ainsi on arrive forcément à la conclusion que sera
premier.
Donc finalement nous avons bien démontré
qu'un nombre quelconque est décomposable en facteurs de nombres
premiers à l'aide du "principe du bon ordre". Il existe
dans l'ensemble des des nombres naturels, certains qui peuvent s'exprimer,
ou qui s'expriment tout court, uniquement par 2 facteurs premiers
notés traditionnellement p et q. Ce sont ces nombres
que l'on utilise en cryptographie.
On ne connaît pas à ce jour de loi
qui permette de calculer facilement et rapidement le n-ième
facteur premier
d'un nombre. En fait, même avec les ordinateurs les plus puissants
d'aujourd'hui il faudrait plusieurs années pour arriver à trouver
les deux facteurs premiers p et q d'un nombre
où p et q sont de l'ordre de chacun.
Et il semble peu probable que l'on découvre dans un avenir proche
un algorithme assez efficace pour améliorer de façon appréciable
ce temps de calcul. Notons qu'il est possible de déterminer en moins
de 5 minutes (en 2002) si un nombre de 200 chiffres est premier
ou non. Cependant, pour factoriser un nombre de 200 chiffres en
deux nombres premiers, il faudrait au moins 100 ans. Chose merveilleuse:
les théories qui permettent ces exploits sont très profondes et
ont été élaborées en partie il y a longtemps dans un cadre très
différent.
Le fait qu'il soit beaucoup plus difficile
de trouver les facteurs premiers d'un nombre N que de découvrir
si N est premier ou composé, est précisément ce qui a permis
d'élaborer cette méthode très ingénieuse de codage et décodage de
messages.
On cherche donc un système simple,
où le codage et le décodage seront presque instantanés, avec "clé
publique" presque "incassable".
Soit donc un groupe d'individus qui
se transmettent régulièrement des messages par courrier électronique
et pour lequel il est important que les messages ne soient connus
que de l'expéditeur et du destinataire. Alors, le membre du groupe
qui souhaite recevoir des information cryptées, se trouve deux nombres
premier p et q très grands de l'ordre de .
Pour trouver de si grands nombres
premiers on choisit au hasard un nombre de 100 chiffres et on vérifie
par un des algorithmes connus s'il est premier ou non et on répète
l'expérience jusqu'à ce que l'on obtienne ainsi un nombre premier.
Une fois ceci fait avec deux nombres, on calcule l'expression appelée
"modulus".
Ensuite, le membre qui souhaite recevoir
les information cryptées (qui est le seul en possession du nombre
n pour l'instant) choisit un entier positif tel
que .
Notons que:
par conséquent, par essais répétés,
il est facile de trouver un tel nombre .
Le membre principal, trouve donc un n et un pour
son contact, qu'il lui envoie sans aucune protection. Car,
même dans le cas où il y aurait d'éventuels intercepteurs à l'affût
sur la ligne, il leur sera extrêment difficile de retrouver les
facteurs premiers de n.
Exemple:
Supposons qu'une
agence secrète souhaite recevoir un message d'un de ses agents.
L'agence choisit
un p et un q et détermine ainsi les nombres n
et .
Ces deux nombres nous l'avons déjà vu, doivent satisfaires aux conditions
suivantes:
1.- où
p et q sont premiers
2.- p et q
sont connus que par le destinataire
3.- 
L'agence enovoie
la clé publique, définit par le couple:
à
l'agent.
L'agent reçoit la
clé publique et souhaite envoyer le message "déclencher l'opération
rouge". Pour ce faire, l'agent transforme d'aborde le message
en chiffres en utilisant la convention que chaque lettre est remplacée
par sa position correspondant dans l'alphabet en commencent à compter
à partir de 01 (le caractère "espace" sera chiffré "27").
Ainsi le message
clair noté M par la suite devient:

Point technique:
il faut que M et n n'aient pas de diviseur commun
autre que 1 (sinon quoi, un éventuel espion pourrait réduire le
problème de deux très grand nombres difficilement manipulables à
celui de plus petits nombres, plus facilement manipulables). Sinon
quoi, on ajoute à la fin de M des chiffres sans valeur, comme
01 (par exemple), pour finalement avoir M et n sans
diviseur commun. On peut aussi briser M en morceaux dont
le nombre de chiffres n'excède pas 99 (rappelez-vous que nous avions
fixé une limite inférieure d'une puissance de 100 pour p
et q et qu'il suffirait donc qu'un des deux nombres premiers
soit 1 et l'autre exactement un nombre avec un exposant 100 pour
être à limite du nombre n comportant alors au pire 100 chiffres),
auquel cas on aura toujours:
.
On défait M
en morceaux, chacun étant plus petit que n:

et on travaille successivement
avec chaque morceau du
message.
On considère la puissance de
:
.
On remplace par
le nombre ,
qui est le reste de la division par n du nombre .
On procède de même pour tous les autres morceaux .

L'agent envoie alors le message codé
à l'agence:
Un intercepteur (non-mathématicien)
du message codé et de la clé publique, connaissant l'algorithme
de chiffrement, aurait donc à résoudre le problème d'une équation
à deux inconnues (équation obtenue simplement à partir de l'expression
mathématique du chiffrement):

Problème évidemment indéterminé
!
Pour voir comment l'agence décrypte
le message, on a besoin d'un outil mathématique supplémentaire.
Rappelons que l'agence choisi
de
telle que sorte que ,
ce qui implique, d'après une des propriétés du p.g.c.d, qu'il
existe des entiers x et y tels que (on peut supposer
que ,
auquel cas ):
ou
encore
Effectivement car et
d'après la définition de la congruence ()
on a effectivement puisque
divise
le membre de droite de et
donc de par l'égalité, le membre de gauche.
Seul l'agence, qui reçoit le message,
peut facilement calculer le nombre utilisé
ci-dessus. Car pour cela, il faut pouvoir calculer la valeur de
la fonction
d'Euler et donc connaître p et q.
Si est
le message d'origine et est
le message reçu, alors nous avons la propriété suivante:
Ce qui est complètement logique puisque
la différence où
rappelons-le, est
le reste de la division de par
n, ne peut donc que être divisible par n.
L'agence reçoit donc le message et
élève à la puissance x les nombres et
obtient ainsi le message initial.
En effet, elle va appliquer pour chaque
la propriété mathématique suivante:
La
clé privée (permettant de décrypter le message et qui peut être
connue facilement uniquement par l'agence) est donc définie par
le couple:
Explications:
1. Nous avions déjà montré que et
selon la troisième principale propriété de la congruence, nous pouvons
écrire
2. Effectivement, selon
la deuxième principale propriété de la congruence qui dit que l'on peut élever à une même puissance les deux membres d'une congruence.
3.
Effectivement, puisque
nous avons démontré précédemment que donc
que .
4. Reste à démontrer que où
l'on peut écrire sous
la forme:

Or, rappelez-vous que nous avons démontré
le théorème d'Euler: et
que la deuxième principale propriété de la congruence nous donne
le droite d'élever à une puissance quelconque les deux membres de
la congruence tel que:

Mais comme 1 élevé à n'importe quelle
puissance fait 1, on a: .
Cette dernière relation nous permet donc de vérifier que l'on peut
s'autoriser à écrire:

Puisque les deux membres de gauche
sont bien modulos n.
Donc si on reprend tout ça, l'agencde
reçoit un morceau et
l'élève par automatisme à la puissance x pour obtenir un
nombre qui selon lui devrait être le véritable.
Pour en être sûr, il applique la vérification imparable:
Pour trouver ,
la relation précédente revient à calculer:
Il est facile de voir que tout intercepteur
ne peut décoder et en plus vérifier si le décodage est bien le bon,
car pour cela il devrait connaître la valeur de x, laquelle
à son tour dépend de ,
qu'il ne connaît pas non plus, parce qu'il ne connaît pas les facteurs
premiers de n.
Signalons en terminant cette brève
présentation du codage des messages, que le gouvernement américain
surveille de très près les activités des mathématiciens qui travaillent
sur la factorisation des grands nombres. En effet, si un de ceux-ci
arrivait à trouver un algorithme permettant de factoriser en peu
de temps un nombre de deux cents chiffres (supérieur à 524 bits
non signé), cela mettrait en péril le caractère secret de plusieurs
communication d'ordre militaire. Cette surveillance a d'ailleurs
soulevé aux Etats-Unis un mouvement de protestation de la part des
hommes de sciences (qui visiblement ont dans ce pays des problèmes
à se concentrer sur leurs feuilles), qui voient ainsi brimer leur
liberté professionnelle (cf. Notices of Amercian Mathematical Society,
janvier 1983).
Pour information technique, le logiciel
PGP (Pretty Good Privacy) du MIT, utilise un système de chiffrement
RSA.
FONCTION
DE CONDENSATION MESSAGE DIGEST MD5
Une fonction de condensation (ou de
hachage) calcule le résumé d'un texte, et ce résumé est très sensible
au texte initial (une petite modification du texte provoque une
grande modification du résumé). Les 2 algorithmes de condensation
les plus utilisés sont le SHA (Secure Hash Algorithm) qui calcule
un résumé de 160 bits, et le MD5 (Message Digest 5 - Run Rivest
1992), qui calcule un résumé de 128 bits nommé "Message Digest".
Cet algorithme est utilisé pour les signatures numériques (notion
utilisée, lors de la validation de certificats d'authenticité).
Voici les différentes étapes de cet
algorithme:
Etape 1 : Complétion
Le message est constitué de b
bits. On complète le message par un 1, et suffisamment de 0 pour
que le message étendu ait une longueur multiple de 512 bits. Après
ce traitement initial, on manipule le texte d'entrée par blocs de
512 bits divisés en 16 sous-blocs M[i] de 32 bits.
Etape
2 : Initialisation
On
définit les variables de chaînage de 32 bits A, B, C et D initialisées
ainsi (les chiffres sont hexadécimaux):
A=01234567,
B=89ABCDEF, C=FEDCBA98, D=76543210
On définit aussi 4 fonctions non linéaires
F, G, H et I, qui prennent des arguments codés sur 32 bits, et renvoie
une valeur sur 32 bits, les opérations se faisant bit à bit.
F(X,Y,Z)
= (X AND Y) OR (NOT(X) AND Z)
G(X,Y,Z) = (X AND Z) OR (Y AND NOT(Z))
H(X,Y,Z) = X XOR Y XOR Z
I(X,Y,Z) = Y XOR (X OR NOT(Z))
Ce qu'il y a d'important avec ces 4
fonctions est que si les bits de leurs arguments X,Y et Z sont indépendants,
les bits du résultat le sont aussi.
Etape
3 : Calcul itératif
La boucle principale a 4 rondes qui
utilise chaque fois une fonction non linéaire différente (d'où le
fait qu'il y en ait 4
). Chaque ronde consiste donc en 16 exécutions
d'une opération.
Chaque opération calcule une fonction
non linéaire de trois des variables A, B, C et D, y ajoute un sous
bloc M[i] du texte à chiffrer, une constante s prédéfinie
(codée sur 32 bits) et effectue un décalage circulaire vers la gauche,
d'un nombre variable n de bits. Voici l'exemple pour A:
- A = B + A + F(B,C,D) + M[i] + s |
décalé circulairement de n vers la gauche
- A = B + A + G(B,C,D) + M[i] + s |
décalé circulairement de n vers la gauche
- A = B + A + H(B,C,D) + M[i] + s |
décalé circulairement de n vers la gauche
- A = B + A + I(B,C,D) + M[i] + s |
décalé circulairement de n vers la gauche
Cette nouvelle valeur de A est ensuite
sommée avec l'ancienne.
Etape 4 : Ecriture du résumé
Le résumé sur 128 bits est obtenu en
mettant bout à bout les 4 variables de chaînage A, B, C, D de 32
bits obtenues à la fin de l'itération.
FONCTION
DE CONDENSATION SECURE HASH ALGORITHM SHA-1
Le SHA-1 est utilize en concurrence
du MD5 pour les signatures numériques (Digital Signature Algorithm)
comme spécifié par le Digital Signature Standard (DSS). Pour un
message de longueur inférieure à 264, le SHA-1 génère
un condensé de 160 bits du message appelé. A nouveau, à l'identique
du MD5, une modification infime du message d'origine doit avoir
une grosse répercussion sur le message condensé et il ne doit pas
exister de Message Digest identiques pour deux message d'origine
différents.
Comme pour le MD5, on travaille sur
des message dont la longueur est un multiple de 512 bits.
Etape 1 : Complétion
Si le message n'a pas une longueur
de 512 bits, on rajoute autant de 1 que nécessaire à la fin de ce
dernier. Les derniers 64 bits du bloc de 512 bits sont utilisés
pour définir la longueur d'origine du message. On transforme ensuite
le bloc de 512 bits en sous-blocs M[ i ]
de 32 bits chacun exprimés en hexadecimal ( ).
Etape
2 : Initialisation
Comme pour le MD5, on définit cette
fois 80 variables de chaînage de 32 bits K[i] initialisées ainsi
(les chiffres sont hexadécimaux):
K[t]
=01234567 |
K[t]
=89ABCDEF | 
K[t]
=FEDCBA98 |
K[t] =76543210 |
On définit aussi 80 fonctions non linéaires
F[1] , F[2],
, F[79] qui
prennent des arguments codés sur 32 bits, et renvoie une valeur
sur 32 bits, les opérations se faisant bit à bit.
F[t](X,Y,Z) = (X AND Y) OR (NOT(X)
AND Z) |
F[t] (X,Y,Z) = (X XOR Y) XOR D |
F[t] (X,Y,Z) = (X AND Y) OR (X AND Z) OR (Y AND Z) |
F[t] (X,Y,Z) = X XOR Y XOR Z |
Ce qu'il y a d'important avec ces 80
fonctions est que si les bits de leurs arguments X,Y et Z sont indépendants,
les bits du résultat le sont aussi.
Etape
3 : Calcul Itératif
L'itération, utilise deux buffers,
chacun consistant en l'utilisation de 5 variable de chaînage. Les
variables de chaînage du premier buffer sont notées A, B, C, D,
E. Le second paquet de 5 contient les variable de chaînage notées
H[0], H[1], H[2], H[3], H[4].
Par ailleurs, notons Sn
le décalage circulaire de n bits vers la gauche
Voici l'algorithme SHA-1:
Pour t = 16 à 79 faire
M[t] = S1(M[t-16]
XOR M[t-15] XOR M [t-14] XOR M [t-13])
Fin Pour
A = H[0]; B = H[1]; C = H[2]; D = H[3];
E = H[4]
Pour t = 0 à 79 faire
TEMP = S5(A) + F[t](B,C,D) + E + M[t] + K[t]
E = D; D = C; C = S30(B); B = A; A = TEMP
Fin
Pour
H[0]
= H[0] + A; H[1] = H[1] + B; H[2] = H[2] +
C, H[3] = H[3] + D,
H[4] = H[4] + E
Après l'exécution de cet algorithme, on obtient un message 160 bits
(5x32) représentés par les 5 variables de chaînage H[0], H[1], H[2],
H[3], H[4].
CERTIFICATS D'AUTHENTIFICATION
Nous avons vu lors de la cryptographie
à clé publique et à clé secrète, qu'il subsistait une faille dans
le système de transmission des clés au début de la communication.
Ainsi dans les deux systèmes, la faille
réside dans le fait que quelqu'un de malveillant puisse se substituer
à l'interlocuteur réel et envoyer ainsi soit une fausse clé secrète,
soit une fausse clé publique (en fonction des cas).
Ainsi, un certificat d'authenticité
permet d'associer une clé à une entité (une personne, une machine,
...) afin d'en assurer la validité. Le certificat est en quelque
sorte la carte d'identité de la clé ou la "signature numérique",
délivré par un organisme appelé "autorité de certification".
La technologie faisant usage des signatures
numériques fait partie d'un ensemble
plus vaste connu sous l'acronyme "PKI" (Public Key Infrastructure).
L'ensemble se déroule moyennant des certificats que vous pouvez
obtenir auprès d'une Autorité de certification (voir exemple plus
bas). Lorsque vous demandez votre certificat, votre ordinateur crée
la paire de clefs composées d'une clé privée (la jaune sur le schéma)
et une clé publique (la noire). Votre clé privée est secrète et
c'est seulement vous qui y avez accès alors que la clé publique
est librement disponible pour tout le monde. Votre clef publique
sera attachée à votre certificat que vous obtiendrez de la part
de l'autorité de certification à qui vous avez remis votre demande
de certificat.
Le PKI vise essentiellement 4 points
importants:
1. l'authentification (le destinataire
de votre e-mail doit pouvoir vérifier que c'est bien vous qui avez
envoyé l'objet et pas un autre). Une personne peut intercepter votre
mail, extraire votre mot de passe etc..).
2. l'intégrité (s'assurer que le contenu
n'a pas été changé en chemin.
3. la confidentialité (s'assurer que
le contenu n'est lisible que par le destinataire).
4.
la non-répudiation (découlant
des 3 premiers points)
L'autorité de certification est chargée
de délivrer les certificats, de leur assigner une date de validité
(1 jour), ainsi que de révoquer éventuellement des certificats avant
cette date en cas de compromission de la clé.
Les certificats sont des petits fichiers
divisés en deux parties :
- La partie contenant les informations
- La partie contenant la signature
de l'autorité de certification (voir Internet Explorer)
La structure des certificats est normalisée
par le standard X.509 de l'UIT, qui définit les informations
contenues dans le certificat :
- Le nom de l'autorité de certification
(VeriSign)
- Le nom du propriétaire du certificat
(UBS)
- La date de validité du certificat
(1 jour à partir de la date courante)
- L'algorithme de chiffrement utilisé
(MD5RSA)
- La clé publique du propriétaire
Voici un très bon exemple venant d'un
confrère (T. Taglicht - www.taglicht.com):
Pour signer le message que vous expédiez
(point (5) sur le schéma), il suffit en effet de lui appliquer une
fonction de hachage (point (1) sur le schéma) qui produit un résumé
(code haché) du message (les algorithmes de hachage les plus connus
sont MD5 (128 bits (Message Digest 5)) et SHA-1 (160 bits (Secure
Hash Algorithm 1)). Le résumé obtenu est propre à chaque message,
à l'image d'une empreinte digitale. Cet algorithme assure que si
un seul bit du texte original est modifié et si l'on refaisait un
nouveau hachage (empreinte), ce dernier serait radicalement différent
du premier. Le code haché peut ensuite être chiffré à l'aide de
votre clé privée et annexé à votre message (points (2) et (3) sur
le schéma). C'est ce code qui constitue la signature numérique.
Le destinataire du message peut ensuite vérifier que vous en êtes
bien l'expéditeur en déchiffrant la signature numérique, au moyen
de votre clé publique (que vous lui avez transmis automatiquement
avec le mail (point (4) sur le schéma), pour obtenir le code haché
(point (9) sur le schéma). Le destinataire applique ensuite la même
fonction de hachage au message reçu (point (10) sur le schéma);
si les deux codes (points 11 et 12 sur le schéma) sont identiques,
vous êtes bien l'expéditeur du message (authentification) et le
message n'a pas été altéré (intégrité).
Tout cela a l'air bien compliqué, mais
en pratique, vous n'avez qu'à cliquer sur une icône à l'écran pour
lancer tout le processus.
CRYPTOGRAPHIE
ALTERNATIVE
Les mathématiciens s'aventurent parfois
hors de sentiers battus de la théorie des nombres: ils inventent
des cryptosystèmes fondés sur des tresses ou des réseaux (théorie
des nuds et des graphes). Les physiciens ne sont pas en reste et
proposent des méthodes de
chiffrement qui utilisent la théorie du chaos ou la physique quantique.
Cette dernière apporterait une solution définitive au délicat problème
de l'échange de clés et mettrait en péril les cryptosystèmes
fondés sur la factorisation.
La plupart de ces méthodes sortent
pour l'instant du contexte du contenu de ce site mais on peut citer
cependant:
- l'algorithme LLL basé sur la structure
en maille d'ensembles de nombres et ce basant sur le théorème de
Minkowski assurant que le contenu d'un disque de rayon donné en
un point contient au moins un autre point du réseau
- la cryptographie ultravariable dans
laquelle les données passent par des systèmes d'équations quadratiques
superposées.
- l'hyperchaos optique, obtenu par
le passage d'un LASER dans un anneau d'IKEDA dans lequel se présente
un matériau non linéaire en longueur d'onde
- la cryptographie quantique, basée
sur le principe d'incertitude de Heisenberg et l'impliquation de
l''annulation des transferts de données. Les scientifiques cherchent
aujourd'hui des moyens de communication moins onéreux des clés quantiques
en utilisant entre autres, les propriétés du condensat de Bose-Einstein
qui permettrait de contrôler l'émission de photons ains que la transmission
instantanée d'un message sans liaison physique
L'avenir nous dira le reste!
|