Cryptographie vs. cryptanalyse

Depuis Hérodote jusqu'à Hitler, depuis l'Antiquité jusqu'aux temps modernes, qui n'a jamais eu affaire un jour ou l'autre à des informations dont la lecture restait imperméable au communs des mortels ?


Et qui n'a jamais voulu, une fois ou l'autre, coder le message destiné à sa bien-aimée afin qu'elle seule puisse le lire ?

Voici le bilan d'une guerre fratricide et secrète qui fait rage depuis la nuit des temps...

Depuis l'invention de l'écriture (voire avant, qui sait), les cryptographes et les cryptanalystes se livrent une guerre sans merci. Petite définition rapide :

  • Cryptographie : Science consistant à coder les messages.
  • Cryptanalyse : Science consistant à décoder les messages.

A partir d'Hérodote et de sa stéganographie (procédé consistant non pas à coder, mais à dissimuler le message. Exemple : l'encre invisbible au citron) jusqu'au CICR (les inventeurs d'Internet), l'humain n'a eu de cesse de vouloir coder puis décoder puis recoder ses transmissions. Cela donna lieu à de formidables inventions telles que le télégraphe, le téléphone, la radio et bien sûr, l'informatique.

Si chacun connaît le javanais, le chiffre de César ou le code binaire, en revanche peu de gens savent où en est restée cette lutte fratricide. Car ces deux sciences, par la force des choses, sont entrées dans la confidentialité la plus totale. Nul n'ignore l'existence de la NSA (sinon, Dan Brown sera là pour vous la rappeler) ou de la CIA. Il s'agit en fait de vastes viviers de surdoués ayant réuni les meilleurs têtes pensantes de la cryptanalyse au monde. Mais que sait-on de plus ? Pas grand chose.

Ce qu'il est important de comprendre, c'est que le "codage" est partout. Mahomet lui-même, par l'intermédiaire de ses scribes, a eu affaire à la cryptographie lorsqu'il reçut la visite de l'ange Gabriel sur le mont Hira. Retracer l'histoire de la plus ancienne lutte d'esprit du monde, c'est retracer l'histoire tout entière de l'humanité. Hitler utilisa la première machine à chiffrer au monde - nommée "Enigma"- qui tint en échec les meilleurs cryptanalystes français lors de la Seconde Guerre Mondiale (et la France était leader dans ce domaine, à l'époque). Enigma fut percée par la Pologne juste avant que celle-ci se fasse envahir, il fallut donc découvrir un nouveau système de chiffrement. Et ainsi de suite jusqu'à l'avènement de l'informatique. Si vous n'avez jamais vu les anagrammes "PGP" (Pretty Good Privacy) sur votre PC, cherchez mieux ! Il s'agit du dernier code en vogue sur les ordinateurs privés. Si on suppose que tous les PC du monde travaillent au déycrpytage de PGP (comptez environ 300 mio. de PC), alors il leur faudrait 12 millions de fois l'âge de l'univers pour décrypter un seul message. Vous aviez peur qu'on lise vos messages ? Ceci devrait vous rassurer.

Avec Enigma, la cryptographie/cryptanalyse est passée des mains des linguistes à celles des mathématiciens. Avant le XXIème siècle, ces deux sciences servaient surtout les intérêts politiques, belliqueux et commerciaux. Avec le XXIème siècle et l'avènement de la communication est apparu le temps où tout le monde y va de sa petite intimité. Jamais les gens n'ont autant communiqué entre eux et, par conséquent, jamais la capacité de crypter ces communications n'a eu autant d'importance.

Certains d'entre vous se posent sans doute la question suivante : en ce moment qui gagne la lutte ? Est-ce les cryptographes ou les cryptanalystes ? Voici ce qui devrait offrir un semblant de réponse : l'histoire du dernier code. Notez que l'évolution des codes est si rapide que ces informations ne sont peut-être plus à jour.

En ce moment, des chercheurs mettent au point ce qu'ils appellent la cryptographie quantique. Pour tout physicien, le principe est compréhensible. Pour les autres, tâchons de faire simple. La cryptographie quantique consiste à coder une information à l'intérieur de photons polarisés. Un photon, c'est une particule de lumière. Un photon polarisé, c'est une particule de lumière qui tourne dans le sens qu'on veut. Pour cela, on utilise des filtres à photons. Imaginez qu'un photon est un petit disque tournant sur lui-même. Il peut tourner dans l'un de ces trois sens : verticalement, horizontalement ou de biais. Je vous passe les détails du codage, mais retenez qu'il s'agit d'un code se servant de la lumière. Le message est ainsi crypté avec une règle de physique, ce qui rend le code inviolable. Le jour où une personne réussira à violer la cryptographie quantique, il réussira à violer les règles les plus élémentaires de la physique en tant que science.

Il reste cependant un problème à résoudre. Disons qu'Alice veut envoyer un message à Bernard à l'aide de la crpytographie quantique. Si le message est inviolable, comment Bernard va-t-il le lire ? La réponse est simple, ce n'est pas le message que va coder Alice. Alice va utiliser un code normal, un code quelconque pour chiffrer son message. Mais c'est la clé de ce code quelconque qu'elle va coder avec la cryptographie quantique. Elle pourra ainsi l'envoyer paisiblement à Bernard et envoyer séparément le message. Ce dernier pourra ainsi le lire, sans que personne n'en décode la clé. En résumé, Alice aura codé par-dessus un autre code. Un surcode...

La cryptographie quantique est inviolable, car, comme expliqué plus haut, on ne peut pas violer les lois de la physique. En outre, il n'empêche pas le déchiffrement par la personne qui possède la clé. En plus de ça, il suffirait d'utiliser PGP comme code de départ pour assurer l'inviolabilité totale du message. C'est la combinaison de codes parfaite. Pour casser ce chiffre, il faudra mettre au point l'ordinateur quantique et le programmer afin qu'il essaie toutes les combinaisons possible en un temps record. Rappelez-vous des 300 mios d'ordinateurs cités plus haut et du temps qu'il mettraient sur un seul message en PGP : une telle machine relèguerait le plus puissant des processeurs actuels au rang de joujou préhistorique ! Un tel ordinateur n'est encore qu'un lointain fantasme. En ce début de deuxième millénaire, ce sont les cryptographes gagnent la bataille...

Le jour où quelqu'un cassera la cryptographie quantique, la fratricide guerre entre cryptographes et cryptanalystes cessera en même temps, sans doute, que l'évolution scientifique de l'Homme.

Source : "L'histoire des codes secrets", Simon Singh, édtion JC Lattès

 
 
~Bendilius~ Publié le : 31/07/2007

 

En cas de conflit avec cet article (problème de droits d'auteur, etc.) vous pouvez en demander la suppression auprès d'un administrateur du site.

Je ne comprends pas quand tu dis que 300M de PC équipés en PGP pourraient déchiffrer un simple message en 12M de fois l'âge de l'univers...
Pourtant, je ne suis pas rassuré pour autant. Car on sait tous que d'autres personnes peuvent lire nos messages, assez simplement même. Que ce soit avec des spywares, des gens qui analysent les e-mails (Les fédéraux connaissent bien ce système). Ou alors avec un programme directement implanté dan l'ordinateur (Microsoft connaît bien ça aussi).

Sinon il y a des logiciels qui servent à crypter un fichier; plus la clé comporte de bytes, plus c'est sécurisé et difficile à décrypter.
Mais pour l'instant en informatique, rien n'est vraiment sécurisé, car les clés de cryptage que les logiciels crypteurs utilisent sont très souvent obligatoirement fournies aux agences fédérales... Donc eux pourront toujours décrypter s'ils le veulent...

Sinon très bon article! J'ai bien aimé le mécanisme de cryptographie quantique.


~Thanatos~

 

Je comprends ton commentaire. Il est vrai qu'entre la théorie et la pratique, il y a un monde ! J'essayais juste d'être un peu léger dans l'écriture, surtout avec un thème aussi complexe que le cryptage.

Il y a plusieurs voies pour tenter de comprendre cette insécurité informatique.
Je pense que PGP n'est pas encore utilisé partout (peut-être par tout le monde, mais pas partout), donc utilise encore des logiciels dont le système de cryptage est décodable donc piratable.
Ou alors, le plus simple, c'est d'envoyer des programmes façon 'cheval de Troie' et d'opérer depuis l'intérieur.
Ou, dernière possibilité, ce sont les concepteurs qui sont tenus de mettre des brèches dans leur programmation.

Bien sûr, ce ne sont que des suppositions. Il y a sûrement des instances supérieures qui en savent plus que nous (surtout dans mon cas, moi qui ne suis ni crypteur, ni même fort en maths :-p).

~Eléazar~

 

Oui je comprend ce que tu veux dire, Éléazar.
Mais c'est vrai que rien n'est inviolable pour le moment en informatique, on peut toujours contrer quelque chose... C'est juste la difficulté que l'on change. ^^
Car même la Maison Blanche (qui doit employer des bons programmeurs, je pense ^^) s'est déjà fait pirater pas moins de 860 fois son réseau.

Enfin bon, le risque zéro n'existe pas en informatique, mais plus la tâche sera difficile pour pirater des données, mieux ça sera.


~Thanatos~

 

Comme tu le dis, Thanatos, rien n'est inviolable. Mais je pense aussi que les codes potentiellement inviolables ne sont pas encore au point. Le principe y est, pas la mise en application (c'est toujours là que ça coince ).

Tu ne développes pas assez, BigBrother, tes arguments. J'ai déjà cité Enigma dans mon article et j'ai expliqué en partie pourquoi la cryptographie quantique était inviolable. En outre, j'ai bien précisé qu'il y avait de grandes chances pour que ces informations soient désuètes à l'heure qu'il est.

Remarque : et au fait, pardonnez-moi. Le commentaire ci-dessus n'est pas d'Eléazar, mais bien de moi. Eléazar est un ami qui a utilisé le même poste que moi.


~Bendilius~

 

Bonjour,
je ne comprends pas l'exemple que Bendilius/Eleazar a utilisé, celui impliquant Alice et Bernard : Si Alice crypte son message normalement et code la clé de son message en quantique, alors on ne peut pas décrypter la clé mais rien ne nous empêche de tenter de décrypter le message directement sans passer par la clé ; on fait un détour inutile en passant par la clé. On reviendrait donc à un problème classique ou le quantique n'intervient pas.

Pour moi le double cryptage serait cela : Alice crypte son message pour Bernard (exemple "bonjour" devient "azertyui" ;) ). En le recevant, Bernard, qui ne connaît pas la clé d'Alice, crypte ce message avec son propre code ("azertyui" devient "qsdfghjk") et le renvoie à Alice qui décrypte le code avec sa clé à elle ("qsdfghjk" décrypté par le code d'Alice devient "wxcvbn,;") et comme par magie en décryptant le message redevient "bonjour".
Ça paraît dur à comprendre mais je pense que c'est démontrable mathématiquement.

~Echtros~

 

Je souhaiterais apporter quelques précisions sur le fonctionnement intrinsèque de l'encryptage et du décryptage d'informations ou de messages.

Pour crypter un message (par exemple "Bonjour") il nous faut trois choses : le message, un algorithme et une clé.

Prenons l'exemple le plus simple, le cryptage par décalage :
on choisit un nombre entre 1 et 26 qui sera la clé, et on décale d'autant l'ordre des lettres de l'alphabet. Ainsi si notre clé est 12, le message "Bonjour" deviendra "Nazvagd".

Le décryptage se fait alors par la méthode inverse, grâce à la clé, on lit le message facilement.

Cet exemple est très simple, il illustre parfaitement le principe de ce qu'on appelle un "cryptage symétrique", et en effet le point faible d'un cryptage "symétrique", en dehors de son algorithme qui peut être plus ou moins complexe pour ne pas dire tarabiscoté, c'est sa clé. La clé est le point faible de ce type d'algorithme pour deux raisons : déjà parce que si quelqu'un intercepte la clé et le message il est à même de le décrypter, mais le pire dans l'utilisation de ce type d'algorithme est que la personne qui intercepte deux des trois éléments (message codé, clé, algorithme) peut très souvent deviner ou calculer le 3ème car la méthode de cryptage est la stricte opération inverse de la méthode utilisée pour le décryptage.
Une personne qui a donc suffisamment de messages cryptés, et l'algorithme ou parfois simplement le message codé et la clé peut donc facilement deviner et reproduire l'algorithme, et souvent exploiter ses faiblesses et être en mesure à partir d'un simple message crypté d'en deviner automatiquement la clé.
C'est d'ailleurs comme cela qu'a été cassé Enigma ou plus récemment le protocole WEP (protocole de cryptage pour le WiFi encore aujourd'hui largement utilisé).


Il existe toutefois des méthodes plus fiables pour crypter des données, et notamment les méthodes de hachage (type md5) ; la méthode est complètement différente puisque l'on n'a pas besoin de clé, l'algorithme suffit au cryptage du message. On prend un message (toujours "Bonjour") et on produit à partir d'un algorithme défini au préalable une chaîne de caractères d'une longueur fixe.

Etape de hachage en md5 :

  • on ajoute un '1' à la fin du message (Bonjour1) ;
  • on ajoute une séquence de '0' ainsi que la taille du message afin d'atteindre un multiple de 512 bits ou 32 caractères ;
  • on le passe dans une sorte de "moulinette" qui n'est pas vraiment différente de ce qu'on a vu précédemment et on obtient une chaîne de 32 caractères qui est presque unique (ebc58ab2cb4848d04ec23d83f7ddf985 pour "Bonjour").

Je dis presque unique car mathématiquement il y a une chance sur quelques milliards que deux chaînes complètement différentes obtiennent le même cryptage md5. D'ailleurs cet algorithme en tant que hachage n'est plus considéré comme sûr depuis 2004, mais ce qui nous intéresse ici est son principe de fonctionnement : on se débarrasse de la clé car on a vu dans l'exemple précédent que c'était surtout là qu'était le problème. Le prix à payer est toutefois élevé puisque l'on ne peut absolument pas décrypter le message.

L'opération inverse est impossible et même si on arrivait par force brute (essai de toutes les possibilités une à une) par trouver une chaîne de caractères qui aboutirait au même hachage md5, on ne serait pas sûr à 100% que ce soit la bonne chaîne, puisqu'on l'a vu plus haut, deux chaînes complètement différentes peuvent aboutir au même hachage md5 à l'arrivée.


Vous devez donc vous faire une réflexion simple mais pourtant si humaine : pourquoi crypter un message si on ne peut le décrypter...

Oui, c'est sûr que cela peut poser un problème, mais comme tout problème posé, il peut en résoudre d'autres...

Admettons 3 éléments : une carte magnétique, un lecteur de carte, et une porte fermée...

Si on demande à la carte d'envoyer le mot "Bonjour" au lecteur de carte pour que la porte s'ouvre, il est alors très facile pour n'importe qui de fabriquer une "fausse carte". La md5 peut aider grâce à l'authentification par challenge.

On insère dans le lecteur de carte un code (mettons 8802a) pour créer une carte, on lui fait transmettre son numéro de carte (mettons 1 pour la carte 1, 2 pour la carte 2, 3 pour la carte 3, etc.) concaténé avec la chaîne correspondant au cryptage md5 de la clé 8802a + le numéro de la carte soit :
16423a379205a9d49f8e92a4bd8fe3c61 pour la carte 1
et
9c124fd19a63e183a72cb0b7450abff510201 pour la carte 10201.

Le lecteur de carte, pour savoir s'il doit ouvrir la porte ou non, va procéder au même cryptage qui a été effectué lors de la création de la carte : il va enlever les 32 premiers caractères pour obtenir le numéro de la carte. Puis il va encoder en md5 son mot de passe suivi du numéro de la carte, soit "8802a" et 10201 pour la carte numéro "10201". Il doit se retrouver avec la même chaîne de caractère, c'est-à-dire : 9c124fd19a63e183a72cb0b7450abff510201.

Si la chaîne est la bonne, la porte s'ouvre et sinon elle restera fermée. Bien sûr, ceci n'empêchera pas de fabriquer une fausse carte mais au moins, si une carte est compromise, il suffit alors de l'annuler sans avoir à changer toutes les cartes, ce qui est un niveau acceptable de sécurité pour beaucoup d'applications, puisque la vérification s'effectue sans que la clé n'ait jamais voyagé ou ait été transmise, et sans que la clé ne soit incluse dans la carte.


C'est sur le même genre de principe que sont vérifiées chaque jour nos codes de carte bleue. Le code n'est jamais transmis par le terminal de paiement ou par le DAB, il est seulement vérifié par lui, et sur le même principe de hachage, on peut vérifier un code avec un numéro de carte mais pas deviner un code à partir d'un numéro de carte.

Hélas, l'algorithme utilisé pour les cartes bleues a montré certaines faiblesses dans le code, et certaines personnes ont réussi à fabriquer des cartes qui fonctionnaient avec n'importe quel code sur n'importe quel DAB (les yescard) ; ceci ne vient pas d'un problème dans le mode de fonctionnement utilisé (hachage) mais uniquement de la manière dont il a été codé au départ. Normalement un système de hachage bien codé est vraiment fiable.

Ce système d'authentification ou de vérification par "challenge" est encore très efficace et largement utilisé aujourd'hui car justement il n'y a pas de transfert de la clé, mais il reste toutefois falsifiable ou outre-passable dans certains cas.


Vient enfin mon dernier exemple : PGP ou le cryptage asymétrique, qui est l'aboutissement des deux exemples vus précédemment.

Le fonctionnement du cryptage asymétrique est simple mais son algorithme très complexe, et c'est pour cela que je ne détaillerai que son fonctionnement, ce qui est pour moi le plus intéressant.

On va prendre l'exemple de Bernard qui souhaite envoyer un message à Sophie. Pour ce faire, Sophie crée au préalable une clé privée qu'elle protège et qu'elle ne donne à personne. Elle crée aussi une clé publique qui est générée grâce à l'algorithme de PGP et à partir de sa clé privée ; cette clé est en gros un Hachage (pas md5 mais fonctionnant à peu près de la même manière) de sa clé privée et on a vu précédemment que l'opération inverse est impossible, donc personne ne peut obtenir sa clé privée à partir de sa clé publique. Sophie peut donc donner sa clé publique à tout le monde sans aucun risque.

Dans un deuxième temps, Sophie envoie sa clé publique à Bernard qui va l'utiliser pour encrypter le message qu'il veut lui transmettre. Une fois crypté, Bernard ne peut pas décrypter le message et seule Sophie peut le décrypter en utilisant sa clé privée. Bernard peut alors envoyer le message en toute sécurité à Sophie qui pourra le décrypter à partir de sa clé privée. Si Sophie veut répondre à Bernard, il devra lui envoyer au préalable sa propre clé publique.

Le fonctionnement de cet algorithme est très intéressant car ce n'est pas la même clé qui permet le cryptage et le décryptage d'un même message, mais le hachage de la clé qui permet le cryptage, et la clé elle permet le décryptage. Ce fonctionnement qui est celui de PGP est pour le moment le plus sécurisé.

Donc tout ça pour dire que recrypter un message déjà crypté de manière asymétrique avec un système symétrique, qu'il soit quantique ou non, n'apporterait rien de plus en terme de sécurité, puisque le problème dans le cryptage d'information n'a jamais été le message codé, ni même la manière de le transmettre, mais bien la clé qui est le point faible de tout système de cryptage.
PGP a réussi à en limiter les risques puisque la clé privée n'est jamais transmise et ce à aucun moment de l'opération, mais cela ne donne pas une sécurité à 100% : la clé peut être volée ou compromise, surtout sur un ordinateur mal protégé ou connecté à Internet. PGP peut protéger l'utilisation d'une clé privée par mot de passe ou par vérification biométrique, mais même ces systèmes d'authentification ont déjà été falsifiés ou trompés.


On peut toutefois considéré qu'un couple PGP + authentification par certificat RSA (clé USB+pin code -ou- empreinte biométrique+pin code) est sûr à 100%, personne ne pouvant prétendre aujourd'hui être en mesure d'outrepasser ces protections, mais l'on peut raisonnablement penser que les petits génies de la NSA et de la CIA ou d'autres gouvernements, s'ils sont motivés, pourraient accomplir cette prouesse en déployant tous les moyens nécessaires.


Je voudrais aussi apporter une précision annexe, il existe deux moyens distincts de casser un message encrypté :
  • la cryptanalyse
  • la cryptologie.

La cryptanalyse est le procédé qui consiste à analyser le code crypté afin d'en deviner le message contenu.

La cryptologie, elle, a un point de vue légèrement différent, le procédé consiste à analyser d'un point de vue souvent mathématique soit le message, soit la clé, soit le code source ou à défaut le fonctionnement supposé d'un algorithme afin d'en percer les secrets.

Même si la démarche peut être la même au départ (décrypter un message codé) le résultat peut être très différent puisque dans la cryptanalyse, il faut recommencer le même travail d'analyse du message à chaque fois que l'on veux décrypter un message codé, alors qu'avec la cryptologie, une fois le code percé, on est généralement en mesure de percer n'importe quel message encrypté en un temps record.

Avec le déploiement de plus en plus important pour ne pas dire systématique de l'informatique dans ce domaine, la cryptanalyse tend à disparaître, ou du moins à n'être utilisée qu'en complément souvent préalable au travail de cryptologie qui doit être effectué.

~Lucas Kane~

 

Il faut être membre du site afin de pouvoir rajouter un complément d'information sur un article.