Ars Cryptographica pour les nuls

Le projet de loi sur le renseignement, dans sa version actuelle, est une folie. L'examen de ce texte aurait pu être l'opportunité d'un débat démocratique, visant à déterminer le pouvoir qu'il est acceptable de confier aux nécessaires services de renseignement et, accessoirement, aux gouvernements présents et futurs. Tout cela a malheureusement tourné à la farce cruelle, à un concours public d'apprentis sorciers marchandant nos libertés individuelles et collectives. Dans un laps de temps pourtant court, nous avons été les témoins d'un déluge de déclarations à l'emporte-pièce, de contre-vérités, voire de mensonges purs et simples. La stupidité des propositions de certains de nos "représentants", leur manque de connaissance des réalités techniques, ont confiné au Sublime. Je m'excuse auprès des rares députés vertébrés ayant pris part au "débat", en tête desquels Isabelle Attard et Laure de la Raudière, dont je salue ici l'opiniâtreté.

Néanmoins, cette période (malheureusement trop courte, procédure accélérée oblige) est aussi l'occasion pour ceux qui ont des connaissances sur des sujets techniques (programmeurs, ingénieur(e)s systèmes ou réseau, chercheurs et autres geeks de tous poils) de faire oeuvre de pédagogie. Ces sujets, parfois complexes, n'intéressent habituellement pas grand monde en dehors d'une (grosse) poignée d'initiés ; certains d'entre eux ont donc sauté sur l'occasion et essayé d'expliquer le fonctionnement d'Internet, de ses "protocoles", d'Intelligence Artificielle ou d'autres sujets relatifs à ce projet de loi. Par contre, j'ai le sentiment que le sujet particulier de la cryptographie n'a pas été suffisamment vulgarisé (ou alors, j'ai manqué quelque chose). Et c'est bien dommage, car il est très important.

Alors, "même pas peur", je vous invite à un court voyage dans un univers passionnant : la cryptologie.

Un peu de vocabulaire

La cryptologie - "la science du secret", nous dit Wikipedia - regroupe en réalité deux disciplines :

  • la cryptographie s'intéresse au chiffrement, c'est à dire au fait de rendre incompréhensibles des messages sauf à ceux possédant une "clé" de déchiffrement ;
  • la cryptanalyse, qui consiste au contraire à extraire le message original du texte chiffré, et ce sans posséder la "clé" ayant servi au chiffrement.

Si vous entendez dans votre entourage un "technicien" évoquer la "cryptographie" (ou la "crypto"), il est très probable qu'il pense simultanément aux deux notions - l'une servant à se protéger de l'autre - donc à la cryptologie.

Deux doigts d'Histoire (et un d'histoire)

Si la cryptographie en tant que science est relativement récente, la cryptographie en tant "qu'Art" nous fait faire un bond dans le passé, au XVIè siècle avant J-C pour être précis, où les historiens datent le premier document chiffré connu. Du chiffre de César aux machines Enigma de la Seconde Guerre Mondiale, en passant par le Chiffre de Vigenère ou le Carré de Polybe, de tous temps femmes et hommes ont souhaité protéger leurs correspondances avec l'aide des cryptographes. D'autres - les cryptanalystes, suivez un peu - ont sué sang et eau pour craquer les codes et aller lire les secrets des petits copains, en général pour leur pourrir la vie dans la foulée.

Tout au long de l'histoire, cryptographes et cryptanalystes se sont livrés une bataille dont l'issue a varié, selon les époques, en faveur des premiers ou des seconds. Lorsqu'elle a basculé en faveur des cryptanalystes, les conséquences ont souvent été inouïes : exécutions, guerres et batailles perdues ou gagnées, etc. Dans l'Histoire récente, on pense en particulier aux bombes électromécaniques mises au point par les cryptographes polonais puis anglais pendant la Seconde Guerre Mondiale. Elles permirent aux Alliés de décrypter, par des attaques dites de force brute, une quantité incroyable de messages et furent un facteur déterminant dans la victoire contre l'Allemagne nazie et ses alliés.

Parmi les systèmes cryptographiques célèbres, on trouve le Chiffre de César. Bien que les informaticiens y pensent avec émotion (ils en ont même créé une version simplifiée, baptisée rot13), c'est un chiffre extrêmement inefficace car très facile à casser. Il a pourtant été utilisé jusqu'à "récemment". Sa simplicité en faisait un choix parfait pour les quasi-analphabètes qui composaient l'essentiel de l'armée Sudiste pendant la Guerre de Sécession américaine. Quoiqu'il en soit, il est facile d'abord et nous permettra de mettre en valeur la différence entre algorithme et clé secrète de chiffrement, deux des composantes fondamentales d'un système cryptographique.

Notre protagoniste, Bernard (il a souhaité garder l'anonymat, le lien pointe donc vers ses métadonnées) a écrit un message qu'il souhaite chiffrer. Le destinataire a souhaité, lui aussi, conserver l'anonymat. Nous l'appelerons donc JiJi.

DIS DONC JIJI, LES SANS-DENTS DEMANDENT DES COMPTES AUX DÉPUTÉS, TU AURAIS UNE RÉPONSE TYPE À FOURNIR AUX DÉPUTÉS STP ?

Pour chiffrer le message, Bernard s'est entendu au préalable avec JiJi sur une clé, un nombre compris entre 1 et 26. Au bol, ils ont convenu d'utiliser le nombre 12. Ils sont également d'accord pour utiliser comme algorithme de chiffrement ( la suite d'opérations à effectuer sur le texte clair) le Chiffre de César, qui fonctionne comme suit :

  • supprimer les caractères de ponctuation, les espaces, les accents
  • pour chaque lettre du message :
    • utiliser la lettre située 12 positions plus tard dans l'alphabet (12 étant la clé)
    • si la position obtenue a dépassé la dernière lettre ("Z"), reprendre le décalage de position au début de l'alphabet (c'est ce que l'on appelle un modulo)

A la première étape, on obtient donc :

DISDONCJIJILESSANSDENTSDEMANDENTDESCOMPTESAUXDEPUTESTAURAISUNEREPONSETYPEAFOURNIRAUXDEPUTESSTP

A la fin de la seconde (qu'en programmation on appelle une boucle, on l'effectue ici "pour chaque lettre"), le message est chiffré :

PUEPAZOVUVUXQEEMZEPQZFEPQYMZPQZFPQEOAYBFQEMGJPQBGFQEFMGDMUEGZQDQBAZEQFKBQMRAGDZUDMGJPQBGFQEEFB

A réception du message, le valeureux JiJi appliquera un algorithme analogue mais différent, car décalant les positions vers l'arrière pour déchiffrer le message. Si Bernard avait fait un peu plus confiance à la presse il se serait aperçu que la réponse type existait déjà. En fait, elle était même librement accessible, métadonnées comprises. Facétieuse Histoire, n'est-ce pas ?

Revenons à notre cryptosystème, le Chiffre de César, et à notre message secret.

L'Homme du Milieu

Bernard et JiJi l'ignorent, mais quelqu'un s'est dissimulé au fond de la boîte aux lettres de JiJi (la fente de la boîte ne laissant passer qu'un faible rai de lumière, l'Histoire la retiendra d'ailleurs sous le nom de boîte noire). TouitTouit, c'est le nom de code de l'agent spécial planqué dans la boîte. Il est l'envoyé d'un groupe occulte, le PROGRAM, qui regroupe les PROgrammeurs Gauchistes Radicaux Anarchistes Mythomanes, exégètes amateurs parmi les plus virulents.

Quand Bernard dépose le message, TouitTouit en fait rapidement une copie. Il attend quelques instants puis, à pas feutrés, disparaît dans la nuit. La cryptanalyse peut enfin commencer.

Notre cryptanalyste, qui soupçonne l'utilisation d'un système de chiffrement alphabétique, aurait pu choisir une méthode plus subtile, comme l'analyse fréquentielle. Ici, le message étant très court, il se décide au contraire pour une méthode d'attaque beaucoup plus rustique : la force brute. Il décide d'essayer le Chiffre de César et, comme ce dernier ne prévoit que 26 clés possibles, il va exécuter l'algorithme pour chacune de ces clés. Pour ce faire, il écrit un court programme de déchiffrement qu'il exécute. 2,6 microsecondes plus tard, l'ensemble des versions possibles du texte apparaissent. La douzième version correspond au message d'origine, en clair :

OTDOZYNUTUTWPDDLYDOPYEDOPXLYOPYEOPDNZXAEPDLFIOPAFEPDELFCLTDFYPCPAZYDPEJAPLQZFCYTCLFIOPAFEPDDEA NSCNYXMTSTSVOCCKXCNOXDCNOWKXNOXDNOCMYWZDOCKEHNOZEDOCDKEBKSCEXOBOZYXCODIZOKPYEBXSBKEHNOZEDOCCDZ MRBMXWLSRSRUNBBJWBMNWCBMNVJWMNWCMNBLXVYCNBJDGMNYDCNBCJDAJRBDWNANYXWBNCHYNJOXDAWRAJDGMNYDCNBBCY LQALWVKRQRQTMAAIVALMVBALMUIVLMVBLMAKWUXBMAICFLMXCBMABICZIQACVMZMXWVAMBGXMINWCZVQZICFLMXCBMAABX KPZKVUJQPQPSLZZHUZKLUAZKLTHUKLUAKLZJVTWALZHBEKLWBALZAHBYHPZBULYLWVUZLAFWLHMVBYUPYHBEKLWBALZZAW JOYJUTIPOPORKYYGTYJKTZYJKSGTJKTZJKYIUSVZKYGADJKVAZKYZGAXGOYATKXKVUTYKZEVKGLUAXTOXGADJKVAZKYYZV INXITSHONONQJXXFSXIJSYXIJRFSIJSYIJXHTRUYJXFZCIJUZYJXYFZWFNXZSJWJUTSXJYDUJFKTZWSNWFZCIJUZYJXXYU HMWHSRGNMNMPIWWERWHIRXWHIQERHIRXHIWGSQTXIWEYBHITYXIWXEYVEMWYRIVITSRWIXCTIEJSYVRMVEYBHITYXIWWXT GLVGRQFMLMLOHVVDQVGHQWVGHPDQGHQWGHVFRPSWHVDXAGHSXWHVWDXUDLVXQHUHSRQVHWBSHDIRXUQLUDXAGHSXWHVVWS FKUFQPELKLKNGUUCPUFGPVUFGOCPFGPVFGUEQORVGUCWZFGRWVGUVCWTCKUWPGTGRQPUGVARGCHQWTPKTCWZFGRWVGUUVR EJTEPODKJKJMFTTBOTEFOUTEFNBOEFOUEFTDPNQUFTBVYEFQVUFTUBVSBJTVOFSFQPOTFUZQFBGPVSOJSBVYEFQVUFTTUQ DISDONCJIJILESSANSDENTSDEMANDENTDESCOMPTESAUXDEPUTESTAURAISUNEREPONSETYPEAFOURNIRAUXDEPUTESSTP

Notre Homme du Milieu a non seulement décrypté le message, mais il a aussi déterminé la clé que Bernard et JiJi ont utilisé pour leurs communications passées et, surtout, dont ils se serviront pour leurs communications futures : le nombre 12. Etant en possession de cette clé, il pourra accéder librement au contenu des correspondances, mais aussi se faire passer pour Bernard ou pour JiJi et modifier la nature des messages que, naïfs, ils pensent échanger en toute sécurité.

Ce récit est fantaisiste sur certains aspects, en particulier il paraît peu vraisemblable que j'ai pu dissimuler mon mètre quatre-vingt cinq tout mouillé dans une boîte aux lettres. Pourtant, il décrit dans les principes le fonctionnement de tous les systèmes de cryptographie. Il nous permet aussi de tirer quelques enseignements.

Cryptographie moderne

D'abord, un cryptosystème ne peut reposer sur le secret de l'algorithme utilisé, uniquement sur celui de la clé. En d'autres termes, le cryptographe doit considérer qu'en dehors de la clé, tous les paramètres sont connus du cryptanalyste. C'est le Principe de Kerckhoffs : la méthode utilisée doit être suffisamment robuste pour qu'en l'absence de la clé, le décryptage soit très difficile même si l'algorithme est connu. Aujourd'hui, c'est le cas. Les algorithmes de chiffrement sont en effet des standards connus et scrutés par tout ce qui compte de mathématiciens et chercheurs en informatique.

Ensuite, combiné à un algorithme efficace, la taille de la clé utilisée est un facteur prépondérant pour contrer les vélléités des cryptanalystes. Les cryptographes utilisent donc comme clés de très grands nombres. Quand je dis "grands", je pense vraiment très grand. Le but, c'est que si la cryptanalyse reste théoriquement possible, elle prenne tellement de temps au cryptanalyste que le jeu n'en vaille pas la chandelle.

Prenons l'exemple de RSA, l'un des algorithmes de cryptographie les plus utilisés, notamment par nos navigateurs lorsqu'ils se connectent à des sites Web sécurisés par TLS (le petit cadenas dans la barre d'adresse, c'est TLS). En décembre 2009, des chercheurs (Lenstra et al) ont mis au point une méthode mathématique qui leur a permis de casser une clé RSA longue de 768 bits (un nombre composé de 232 chiffres) en un temps record. Cela leur a tout de même pris 4 ans. Ils ont pour cela utilisé une sorte de gigantesque ordinateur, la même méthode appliquée sur un ordinateur "grand public" aurait pris 1,5 millions d'années ! Faites l'acquisition d'un ordinateur 100 fois plus rapide que ceux de l'époque, il vous faudra quand même patienter 15 000 ans. De plus, le temps nécessaire pour casser une clé RSA est exponentielle. Pour une clé deux à trois fois plus longue, comme les clés 2048 bits en usage aujourd'hui, il aurait fallu poireauter pendant 6,4 quadrillions d'années. Vous prenez 1,5 millions d'années que vous multipliez par 4,3 milliards, et vous y êtes.

Même à l'aide des supercalculateurs, casser une seule clé est long et coûteux, voire tout simplement impossible dans un temps acceptable. A l'époque à laquelle nous vivons, et pour peu que l'on utilise des clés suffisamment longues, les cryptographes ont, temporairement au moins, gagné la partie et fait de l'existence des indiscrets un relatif cauchemar. Et ça visiblement, le Legislator Rex, ça le démange.

Quand l'Homme du Milieu s'en prend à l'Homme Nu

Ce projet de loi permet une surveillance de masse, une aspiration massive de contenus, sous le contrôle exclusif de l'exécutif (non, pitié, laissez la CNTCR en dehors de tout ça, elle me fait déjà de la peine). Le problème, c'est qu'en écoutant des contenus chiffrés, les services de renseignement écoutent du bruit blanc. Le législateur, on le sait, aime les solutions simples. Il avait donc au préalable proposé que les "prestataires de cryptologie" fournissent aux services de renseignement sur leur demande, les conventions permettant le déchiffrement des données transformées au moyen des prestations qu'ils ont fournies. Maintenant, il souhaiterait que le prestataire de cryptologie s'exécute sans délai. En clair, il accentue la pression sur les prestataires de cryptologie, d'autant que plus que les finalités autorisant ces réquisitions ont été considérablement élargies (intérêts économiques, scientifiques, etc.). Quand on a des capacités de cryptanalyse limitées, autant se doter de facilités pour récupérer les clés.

La question qui suit, c'est de comprendre qui sont les utilisateurs de ces "prestations de cryptologie". Et bien, mauvaise nouvelle : vous l'ignoriez peut-être mais il s'agit de vous et de moi. La cryptographie est présente partout, vous l'utilisez à votre insu quand vous consultez des services Web, que vous envoyez un un SMS, que vous faites un virement bancaire ou que vous appelez votre voisine. La cryptographie contribue à vous protéger des indiscrets, des criminels, et de la surveillance des services gouvernementaux.Si ce projet de loi est voté, la confiance que nous pouvions avoir dans tout un pan de la cryptographie (celui que l'on "délègue" aux prestataires de cryptologie) s'érode dans un contexte ou la collecte massive d'informations devient légale.

Il est donc indispensable que chacun prenne individuellement le contrôle sur la cryptographie personnelle, par exemple en utilisant des outils comme GnuPG - principalement utilisé pour chiffrer les emails - ou Signal, TextSecure ou encore SMSSecure pour les SMS.