[tech] cryptographie #1 les concepts

[mis à jour le 20 décembre 2016] Pour celles et ceux qui ne sont ni mathématicien de formation, ni ingénieur, ni « codeur », certains sujets sont difficiles. Vraiment difficiles. La cryptographie en est un.

Une science indissociable des communications électroniques

Il est aujourd’hui impossible de faire l’impasse sur la science du chiffrement si l’on veut comprendre comment transférer de manière sécurisée des informations sur les réseaux de communication électronique. Vous voulez comprendre comment fonctionne un VPN ? les certificats du https ? Le protocole blockchain ? Et bien (mauvaise nouvelle) il faut d’abord intégrer les 3 fonctions de la cryptographie, puis s’intéresser au hachage et au chiffrement symétrique et asymétrique. C’est l’objet de cette première présentation. A suivre dans un second temps, des exemples de mise en oeuvre de protocole de chiffrement (TLS/SSL, les certificats, etc.) et dans une troisième partie, la législation française correspondante. Je sens que vous frémissez déjà… Petite synthèse avant les images.

Les 3 fonctions de la « crypto »

Pour faire rapide, le chiffrement sert d’abord à s’assurer que votre message ne peut être lu que par son destinataire. C’est la fonction de confidentialité de la cryptographie, la plus connue.

Deuxième fonction de la cryptographie : l’authentification. Cette fonction doit vous permettre de vérifier que le destinataire est bien la personne à laquelle vous destinez votre message. Ecrit comme ça, ça a l’air facile…

Mais vous pouvez aussi souhaiter vous assurer que la personne qui reçoit votre message soit certaine que votre message n’a pas été modifié (volontairement ou non) lors de son transfert. C’est la troisième fonction de la cryptographie : la vérification du respect de l’intégrité. Pour vous assurer que votre message « original » est bien le même, strictement le même, que celui que reçoit le destinataire, vous pouvez réaliser une « empreinte » de votre message par une fonction mathématique à sens unique. Si votre message passé dans une moulinette logicielle donne une empreinte unique (on dit aussi un « hash »), il faut que le destinataire puisse passer le message reçu dans une même moulinette et que l’empreinte qu’il génère soit identique. Si les deux empreintes sont strictement identiques, c’est que le message envoyé est absolument identique au message reçu. C’est à cela que sert le hachage cryptographique.

Le chiffrement symétrique

Là aussi, le principe est facile à comprendre.

Dans le chiffrement symétrique, l’émetteur et le destinataire utilisent la même clé secrète qui permet de chiffrer un message et de le déchiffrer. Comme une clé permet de fermer et d’ouvrir la serrure d’une porte. C’est la méthode apparemment la plus rapide et la plus efficace pour rendre confidentiel le contenu d’un message. Mais… comment transférer la clé de chiffrement en s’assurant que personne ne l’intercepte ?

Pour le dire autrement, quel est l’intérêt d’envoyer des messages chiffrés sur un réseau de communication électronique si vous adressez la clé de déchiffrement au destinataire par le même canal ? Il suffira à un malveillant de récupérer le message contenant la clé secrète pour que les messages chiffrés puissent par la suite être déchiffrés. Sans que vous le sachiez, ce qui est facile dans un univers numérique ou chaque copie d’un fichier est un véritable clone de l’original.

Le transfert de la clé secrète commune représente le point de vulnérabilité majeur du tout protocole de chiffrement symétrique, d’où l’apparition en 1978 du chiffrement asymétrique avec le fameux algorithme RSA (Rivest Shamir Adleman).

Le chiffrement asymétrique

[mise à jour du 20 décembre 2016] Dans le chiffrement asymétrique, une clé dite « privée » permet de générer une seconde clé, indissociable, dite « clé publique » (merci @Duckmole pour sa correction). Pour recevoir un message chiffré, une partie adresse à l’autre sa clé publique, en conservant secrète sa clé privée unique associée à la clé publique transmise.

L’émetteur utilise la clé publique du destinataire pour chiffrer le message qu’il lui envoie. Seul le destinataire possédant le couple « clé publique + clé privée » pourra effectivement déchiffrer le message.

Ce mode de chiffrement est très résistant au décryptage : il est (apparemment) extrêmement difficile de reconstituer une clé privée à partir d’une clé publique. Décrypter une clé publique demande des efforts de calcul considérables, et ceux nécessaires au décryptage d’une clé privée plus encore. Ce type de chiffrement est donc réputé extrêmement sûr. Enfin… jusqu’à l’apparition du chiffrement quantique… (je vous en parle dès que j’ai compris comment ça marche…).

S’il vous reste des forces, retenez également que le caractère indivisible du couple « clé privée + clé publique » permet à une partie de chiffrer un message avec sa clé privée et de l’adresser à toute personne détenant la clé publique correspondante. Mais comme la clé publique semble plus heuuuuu… fragile ? (ou moins sûre ?) facile à « casser » ?  que la clé privée (sans commentaire), cette utilisation du chiffrement d’un message avec une clé privée n’est utilisé qu’à des fins d’authentification de l’émetteur du message par son destinataire, détenteur de la clé publique

Le chiffrement asymétrique est donc utilisable de manière symétrique (moi aussi, j’ai relu ce début de phrase plusieurs fois) : chacune des clés permet de chiffrer un message et l’autre clé de déchiffrer le même message. Mais dans un sens, la clé privée sert surtout au déchiffrement du contenu d’un message (chiffré par la clé publique), tandis que dans l’autre, le chiffrement d’un message (par la seule clé privée) permet surtout au détenteur de la clé publique d’authentifier l’émetteur du message.

Et les deux méthodes peuvent – bien évidemment – se combiner pour assurer, simultanément, des fonction de confidentialité et d’authentification.

C’est compliqué ? Moi aussi, par moment, je me demande pourquoi je m’acharne à essayer de comprendre… C’est pourquoi j’ai divisé cette étude en 3 étapes successives. Car sachez-le bien : sans une bonne compréhension de ces concepts, impossible d’aborder le protocole blockchain.

2 méthodes pour comprendre la cryptographie

Si, comme moi, vous ne comprenez rien aux mathématiques et que votre connaissance de l’informatique va à peine au delà du paramétrage des boites emails de votre smartphone, vous avez deux méthodes pour (tenter de) comprendre la « crypto ».

La première consiste à acheter des ouvrages spécialisés. Ce que j’ai fait. Il faut ensuite (i) les lire, (ii) les comprendre et (iii) tenter de restituer ce que vous avez compris.

Reste la seconde méthode que j’ai adoptée après mon échec total (et humiliant) face à la première. Et je me suis fait expliquer (longuement…) par des pro comment ça marche. C’est pourquoi je tiens tout particulièrement à remercier Frans Imbert-Vier, Matthieu Hug et surtout Jef Mathiot du temps qu’ils m’ont consacré, sans s’énerver devant mon manque flagrant de capacité à digérer les bases de cette science ardue (vous avez dit occulte ?). Si vous comprenez ce qui suit, c’est à eux qu’il faudra dire merci !

Place aux images et aux schémas compliqués ?


Merci encore une fois à l’équipe des éditions Delcourt, j’ai nommé Sébastien Le Foll et Lucie Massena, et aux auteurs de la remarquable série « Masqué », Serge Lehman (encore lui !) et Stéphane Créty. Si vous suivez ce blog, vous aurez compris que je suis un inconditionnel des univers futuristes de Serge Lehman (La Brigade Chimérique, L’homme truqué, L’Oeil de la nuit, etc.). Ce que je pense de Stéphane Créty ? Regardez ses dessins : MA GNI FI QUES ! ça, c’est de la BD de caractère ! Ne vous retenez plus, foncez chez votre libraire pour vos cadeaux de Noël ! 


047-cryptographie-1-ledieu-avocat-contrat-droit-nouvelles-technologies-logiciel-saas-web-dmp-donnees-personnelles-metadata-cybersecurite-vfr1-12-12-12-2016-010