LA Cryptographie
LA Cryptographie
LA Cryptographie
1.1. Introduction
Dès que les hommes apprirent à communiquer, ils durent trouver des moyens assurant la
confidentialité d’une partie de leurs communications, ce qui nous amène à savoir que la
fonction première de la cryptographie est de cacher le sens d’un message à tous ceux qui ne
sont pas autorisés à le connaitre. Donc, on peut dire que l’origine de la cryptographie remonte
sans doute aux origines de l’homme.
En effet, le mot cryptographie est un terme générique désignant l’ensemble des techniques
permettant de chiffrer des messages, c’est-à-dire de les rendre inintelligibles sans une action
spécifique. En dépit de l’´evolution des moyens de communication depuis l’antiquité, il a
toujours été difficile de garantir la sécurité du canal par lequel transite un message. Un
cavalier transportant un rapport sur la position d’une armée peut être intercepté par des
éclaireurs ennemis ; un employé du télégraphe transmettant des consignes d’investissements
boursiers peut être à la solde d’un actionnaire concurrent ; un ordre militaire transmis par les
ondes radios peut être capté par n’importe quel récepteur réglé sur la bonne fréquence ; un
courriel qui transite sur Internet peut être lu par n’importe quel ordinateur sur la chaîne reliant
l’expéditeur au destinataire. Aussi, la problématique d’établir des communications sécurisées
en utilisant un médium non sécurisé a toujours été d’importance en vue d’applications
militaires, financières, ou simplement du respect de la vie privée.
Un cryptosystème fonctionne de la façon suivante :
La cryptologie est la science des messages secrets. Longtemps restreinte aux usages
diplomatiques et militaires, elle est maintenant une discipline scientifique à part entière, dont
l’objet est l’´etude des méthodes permettant d’assurer les services d’intégrité, d’authenticité et
de confidentialité dans les systèmes d’information et de communication.
La cryptographie traditionnelle est l’étude des méthodes consistant à transmettre des données
de manière confidentielle. Afin de protéger un message, on lui applique une transformation
qui le rend incompréhensible ; c’est ce qu’on appelle le chiffrement, qui, à partir d’un texte
en clair, donne un texte chiffré ou cryptogramme. Inversement, le déchiffrement est
l’action qui permet de reconstruire le texte en clair à partir du texte chiffré. Dans la
cryptographie moderne, les transformations en question sont des fonctions mathématiques,
appelés algorithmes cryptographiques, qui dépendent d’un paramètre appelé clef.
On appelle texte en clair, les données lisibles et compréhensibles sans intervention
spécifique. Le cryptage ou chiffrement est la méthode permettant de dissimuler du texte en
clair en masquant son contenu. Cela consiste à transformer un texte normal en un charabia
inintelligible appelé texte chiffré. Cette opération permet de s’assurer que seules les personnes
auxquelles les informations sont destinées pourront y accéder. Le processus inverse de
transformation du texte chiffré vers le texte d’origine est appelé le décryptage.
Coder : transformer un texte, une information en remplaçant les mots dans une écriture faite
de signes prédéfinis.
Un cryptosystème est un système matériel ou logiciel effectuant de la cryptographie, il peut
contenir un ou plusieurs algorithmes de chiffrement.
Clef : on appelle clé une valeur utilisée dans un algorithme de cryptographie, afin de chiffrer
un texte. Les clés doivent être stockées de manière sécurisée et de manière à ce que seul leur
propriétaire soit en mesure de les atteindre et de les utiliser.
La cryptographie est donc traditionnellement utilisée pour dissimuler des messages aux yeux
de certaines personnes. Cet intérêt est aujourd’hui d’autant plus grand que les ordinateurs et le
réseau Internet se sont considérablement développés. Elle est désormais indispensable pour
préserver la sécurité et la confidentialité des données, mais aussi leur intégrité et leur
authenticité.
Un service d’intégrité garantit que le contenu d’une communication ou d’un fichier n’a pas
été modifié. Par exemple, on peut souhaiter à vérifier qu’aucun changement du contenu d’un
disque dur n’a eu lieu ; des produits commerciaux, mettant en jeu des méthodes
cryptologiques sont disponibles (voir notamment) à cet effet.
Un service d’authenticité garantit l’identité d’une entité donnée ou l’origine d’une
communication ou d’un fichier. Lorsqu’il s’agit d’un fichier et que l’entité qui l’a créé est la
seule à avoir pu apporter la garantie d’authenticité, en évidence on parle de non-répudiation.
Le service de non-répudiation est réalisé par une signature numérique. Une définition précise
sera donner plus loin ; on s’intéressera ici sur la loi du 20 mars 2000 qui a fait passer ce
concept dans la vie sociale.
Un service de confidentialité garantit que le contenu d’une communication ou d’un fichier
n’est pas accessible aux tiers. Ainsi, la cryptologie se partage en deux sous-disciplines
également importantes : la cryptographie qui fait l’objet de proposer des méthodes pour
assurer les services définis plus haut et la cryptanalyse qui recherche des failles dans les
mécanismes ainsi proposés.
Recherche exhaustive de la clef, cette technique consiste tout simplement à essayer toutes
les clefs possibles jusqu'à ce qu'on trouve la bonne. Pour les chiffres à alphabet décalé,
comme le chiffre de César, cette recherche est envisageable puisqu'il y a peu de possibilités.
1.3. Quelques repères historiques [2] [4] [10]
La cryptographie moderne est principalement liée aux services de confidentialité. Elle réalise
sur les données m une transformation constituée par une formule C = Ek(m), par
l’intermédiaire d’un algorithme de chiffrement E. Cet algorithme prend en entrée le message
clair m et un paramètre secret k, qu’on appelle la clé. Le message m varie dans un ensemble
M et la clé k dans un ensemble K. La restauration du texte clair à partir du chiffré ou
cryptogramme C se fait par un algorithme de déchiffrement Dk, prenant en entrée le chiffré et
la même clé.
On doit avoir la formule suivante : Dk(Ek(m)) = m. En général, le chiffré prend sa valeur dans
le même espace M et l’on a aussi Ek(Dk(c)) = c, c’est `a dire que les algorithmes Ek et Dk
réalisent une permutation de M.
La distinction entre l’algorithme et la clé s’est établie il y a fort longtemps, notamment dans
les travaux du cryptologue Auguste Kerckhoffs. Ce dernier a en effet su reconnaitre que
l’algorithme de chiffrement n’exigeait pas le secret, dans la mesure auquelle il risquait de
toute façon de passer aux mains de l’ennemi. La cryptologie moderne recommande même des
méthodes de chiffrement totalement explicites de manière à ce qu’elles soient évaluées et
validées par un débat ouvert entre experts. Du coup, une convention secrète entre entités qui
souhaitent communiquer de façon chiffrée se limite à l’échange d’une clé k.
1.4.2. Décryptement [2] [10]
L’opération qui consiste à calculer le clair m à partir du chiffré C = Ek(m), mais sans la
connaissance de la clé k est appelée décryptement. La confidentialité est assurée si cette
opération est impossible. On distingue des divers scénarios possibles d’attaque
– les attaques à chiffré seul, où l’adversaire dispose d’un certain nombre de chiffrés
Ek(mi) ;
– les attaques à clair connu, où l’adversaire dispose d’un certain nombre de chiffrés
Ek(mi) et des clairs correspondants mi ;
– les attaques à clair choisi, où l’adversaire dispose d’un certain nombre de chiffrés
Ek(mi) correspondant à des clairs de son choix mi ; si de plus chaque message mi est défini en
fonction des chiffrés obtenus antérieurement, on parle d’attaque à clair choisi adaptative.
Le lecteur pourra définir d’autres variantes, comme l’attaque à chiffré choisi. Le but de
l’attaque est la découverte de la clé ou le décryptement d’un chiffré C, correspondant à un
clair dont on ne dispose pas. Les attaques à chiffré seul sont les plus difficiles, néanmoins
l’adversaire dispose en général d’informations statistiques sur le clair.
1.4.3. Type de cryptosystème actuel [14] [15]
La cryptographie à clefs privées, appelée aussi cryptographie symétrique est utilisée depuis
déjà plusieurs siècles. C’est l’approche la plus authentique du chiffrement de données et
mathématiquement la moins problématique. La clé de chiffrement peut être calculée à partir
de la clé de déchiffrement, et le destinataire doivent se mettre d’accord préalablement sur une
clé qui doit être gardée secrète car la sécurité d’un tel algorithme repose sur cette clé.
Le chiffrement à clé publique et le chiffrement symétrique présentent chacun des avantages et
des inconvénients. Par exemple, le temps de chiffrement et déchiffrement de la cryptographie
à clé publique est supérieur à celui de la cryptographie symétrique. Un des problèmes
principaux du chiffrement symétrique est l’échange préalable de la clé secrète : c’est la
transmission de cette clé entre les intervenants qui représente la faiblesse inhérente au
système. S’ils se trouvent à des emplacements géographiques différents, ils devront faire
confiance à une tierce personne ou un moyen de communication sécurisé. Toute personne
interceptant la clé lors d’un transfert peut ensuite lire, modifier et falsifier toutes les
informations cryptées ou authentifiées avec cette clé.
Le chiffrement à clé publique peut être préféré pour générer de petites séquences comme des
signatures ou des clés secrètes pour le chiffrement symétrique. Le chiffrement symétrique
peut être préférer pour chiffrer des grandes quantités de données.
La taille des clés utilisées varient selon le besoin et font en standard 64 ou 128 bits.
De son côté, Bob reçoit le texte chiffré c k et calcule mk= d (Kk, ck) où d est une fonction de
déchiffrement. Ainsi, Bob récupère le message initial m k. Ce principe est illustré sur la figure
4 suivante :
Un exemple de chiffrement par flot, proposé par Vernam en 1917, est le masque jetable
(« one-time pad »), aussi appelé chiffre de Vernam. Dans ce schéma, le texte chiffré c k est le
résultat d’une combinaison du texte clair mk avec la clé Kk, de même taille, par un OU
exclusif (XOR) :
ck= mk Kk
A partir du texte chiffré, le texte clair peut être retrouvé par l’opération inverse :
mk= ck Kk
– La clé Kk ne doit être utilisée qu’une fois pour chiffrer les informations
claires mk, d’où le nom de masque jetable. De plus, le flot de clés K k est
générer aléatoire et indépendant des flots passés.
Ces trois conditions font du chiffrement de Vernam une méthode difficile à utiliser en
pratique.
Dans le chiffrement par flot, il existe deux manières différentes de synchroniser les
générateurs de clé afin de récupérer le message original. La première est appelée chiffrement
par flot synchrone et la seconde est appelée chiffrement par flot autosynchrone.
Dans un schéma de chiffrement par flot synchrone, l’émetteur est donné par :
Où est une fonction, la clé statique, Kk la clé dynamique, mk le texte clair et Ck le texte
chiffré. La clé dynamique Kk est générée par une dynamique interne qui ne dépend ni du
texte clair mk, ni du texte chiffré Ck. Le récepteur est donné par :
Figure 3.5 : Chiffrement par flot synchrone
La récupération du texte clair nécessite une synchronisation des séquences des clés
si = Kk. Le flot de clés étant issus de récurrences autonomes, les générateurs de clés doivent
être initialisés de part et d’autre de façon identique. La clé statique représente la condition
initiale K0. Si, pour une raison quelconque la synchronisation est perdu durant la transmission,
l’émetteur et le récepteur doivent être réinitialisés à la même valeur pour resynchroniser leur
transmission.
Dans un schéma déchiffrement par flot autosynchrone, l’émetteur est donné par :
Où f est une fonction paramétrée par la clé statique, qui génère le flot de clés K k. A l’inverse
du chiffrement par flot synchrone, Kk dépend seulement des valeurs passées du texte chiffré
Ck. En revanche Kk et le texte clair mk. Le récepteur est donné par :
Figure 3.6 : Chiffrement par flot autosynchrone
Si un symbole du texte chiffré est perdu ou est erroné, les j clés K k suivantes seront calculés
de façon erronée par le récepteur, après quoi les clés suivantes seront à nouveau correctes.
Comme pour le chiffrement par flot synchrone, la récupération du texte clair nécessite la
synchronisation des séquences des clés dynamiques à l’émission et à la réception, et la
– A5/1, A5/2, A5/3 (utilisé dans les téléphones mobiles de type GSM pour
chiffrer la communication par radio entre le mobile et l'antenne-relais la
plus proche)
Tous les algorithmes évoqués jusqu’à présent sont symétriques en ce sens que la même clef
est utilisée pour le chiffrement et le déchiffrement. Le problème essentiel de la cryptographie
symétrique est la distribution des clefs : pour que n personnes puissent communiquer de
manière confidentielle il faut n (n-1)/2 clefs. Donc, pour faire face à ces problèmes liés à la
distribution des clés que ce nouveau cryptosystème à clé publique aussi appelée cryptographie
asymétrique a été mis au point.
L’idée de base des cryptosystèmes à clefs publiques a été proposée dans un article
fondamental de Diffie et Hellman en 1976. Le principe fondamental est d’utiliser des clefs de
chiffrement et déchiffrement différentes, non reconstructibles l’une à partir de l’autre :
Une clef publique pour le chiffrement
Une clef secrète pour le déchiffrement
Ce système est basé sur une fonction à sens unique, soit une fonction facile à calculer dans un
sens mais très difficile à inverser sans la clef privée.
Pour faire une explication imagée, la clef publique joue le rôle d’un cadenas. Imaginons que
seul Bob possède la clef (clef secrète), Alice enferme son message dans une boîte à l’aide du
cadenas et l’envoie à Bob. Personne n’est en mesure de lire le message puisque seul Bob
possède la clef du cadenas.
Lorsqu’Alice, l’Emetteur, et Bob le destinataire, veulent communiquer de façon sécurisée,
Bob choisit une paire de clés de chiffrement et de déchiffrement (K e, Kd). Il envoie la clé
publique Ke à Alice, par l’intermédiaire d’un canal qui n’est pas forcement sécurisé. Alice
transforme le message m en texte chiffré C= e (K e, m) où e représente une fonction de
chiffrement, et envoie ce texte chiffré c à Bob. De son côté, Bob reçoit le texte chiffré c et
calcule m= d(Kd, c) où d est une fonction de déchiffrement et K d est la clé privée connue
uniquement de Bob.
Ainsi, Bob récupère le message initiale m. Ce schéma est illustré sur la figure 3.7 ci-dessous :
Il existe plusieurs exemples de cette cryptographie à clé publique, par exemple l’algorithme
de Diffie-Hellman, RSA, Elgamal 6. Pourtant les deux algorithmes les plus connus et les plus
sûrs restent : RSA et Elgamal 6.
Il existe aussi des systèmes de protection mélangeant les deux techniques pour en garder leurs
avantages, l'idée est d'utiliser la rapidité de l'algorithme symétrique, et la sécurité de
l'asymétrique. On les appelle les systèmes hybrides. L’exemple le plus probant est PGP mais
on peut aussi citer GnuPG et SSL.
1.5. Cryptanalyse [2] [10]
Lorsqu’un cryptosystème est synthétisé, il faut s’assurer qu’il est effectivement robuste face à
des attaques pirates. Cette étape de validation ou de vérification est appelée la cryptanalyse.
Elle consiste à tester les cryptosystèmes afin de déceler leurs éventuelles faiblesses. La
cryptanalyse des algorithmes est ainsi essentielle pour trouver les failles des algorithmes.
Faire la cryptanalyse d'un algorithme de chiffrement, c'est étudier sa sécurité en tentant de
casser les fonctions cryptographiques qui le composent à l'aide d'attaques. Le processus par
lequel on tente de comprendre un message en particulier est appelé une attaque.
Il est donc avantageux pour un algorithme d'être complètement publié (code source) dans le
but que des cryptographes étudient sa sécurité.
Il existe plusieurs familles d’attaques cryptanalytiques, les plus connues étant l’analyse
fréquentielle, la cryptanalyse différentielle et la cryptanalyse linéaire.
1.6. Conclusion
Dans ce chapitre, nous avons pu voir une terminologie et un ensemble de points sur lesquels il
est intéressant d’envisager la neuro-cryptographie, notamment dans l’étude d’algorithmes de
chiffrement et de leurs cryptanalyses, dans les moyens de mise en œuvre d’un logiciel de la
cryptographie. L’étude de l’AES réalisée avec une architecture à réseaux de neurones devrait
prouver leur efficacité pour de chiffrement incassable. On trouve dans les prochains chapitres
des théories sur le réseau de neurone.