Introduction à la cryptographie

Introduction à la cryptographie 

Sans le savoir ou sans y penser, nous l’utilisons à chaque fois que nous naviguons sur un site en https, la cryptographie fait partie de la vie de tous les jours. La curiosité devrait naturellement arriver mais il y a (volontairement) tellement d’abstraction autour de la cryptologie que cela ne donne pas très envie de s’y confronter. Je vais essayer d’avoir une approche suffisamment claire et concrète pour tenter d’exciter votre curiosité sur le sujet et vous amener à consulter de vous-même des références pour aller plus loin.
La cryptographie est une branche particulière de la cryptologie qui consiste à protéger les données en utilisant des clés secrètes et des algorithmes de chiffrement. Cette discipline qui est au cœur des échanges sécurisés sur internet est parfois considérée comme une arme : il peut arriver que les cryptanalystes reconnus et spécialistes en algorithmes de chiffrement subissent des entretiens poussés dans les aéroports de certains pays.

Principe de base

L’objectif de la cryptographie et en particulier des protocoles sécurisés sur internet, est de garantir aux utilisateurs les 3 points suivants :

  • La confidentialité : le message ne doit pas pouvoir être lu par quelqu’un d’autre que son véritable destinataire
  • L’authenticité : l’identité de celui qui a envoyé le message doit être vérifiée et vérifiable (on parle aussi parfois de non-répudiation)
  • L’intégrité : le message ne doit pas pouvoir être altéré ou remplacé de quelque manière que ce soit.

Ces 3 points sont souvent appuyés par l’intervention d’un tiers de confiance ou autorité de confiance représenté par les certificats (nous y reviendrons).

Un exemple simple

Les méthodes de cryptographie les plus anciennes remontent à l’antiquité, comme avec des algorithmes de chiffrement par décalage de l’alphabet, dit de « cesar »  A=F, B=G, C=H … Z=E.

Exemple de chiffrement : Xvwruxp nbc uj vnruunda nwcanyarbn mn oajwln

Malheureusement ces types de chiffrements sont très faibles puisqu’ils sont sensibles à toutes les attaques basiques de la Cryptanalyse. Il est en effet facile de retrouver le message par itération ou même par analyse fréquentielle : il peut suffire de trouver la lettre la plus utilisée dans la langue pour retrouver la clé utilisée (on peut remercier le cerveau humain qui a la "fâcheuse" tendance à repérer des structures et régularités).

Vous pouvez essayer de retrouver le texte en clair ici: http://www.dcode.fr/chiffre-cesar

De nos jours, les techniques utilisées sont évidemment bien plus sophistiquées et nécessitent des méthodes d'attaque bien plus complexes et coûteuses en temps de calcul qu’auparavant. Aucune méthode de chiffrement n'est parfaite en théorie ni même en pratique. Historiquement tous les algorithmes ont été cassés puis améliorés au fur et à mesure que la technologie (puissance des ordinateurs) et que les mathématiques progressaient.

Techniques modernes

Nous attaquons maintenant la partie la plus pointue, celle qui va s’intéresser aux techniques de chiffrement les plus avancées comme DES, AES ou RSA. Nous allons classer ces techniques en deux types : symétrique et asymétrique

  • Cryptographie Symétrique (DES, AES…)

Les interlocuteurs possèdent une clé secrète commune (échangée préalablement) qui sert à chiffrer et à déchiffrer les messages.

L’inconvénient en termes de sécurité est que l’échange des clés peut être très hasardeux et qu’il suffit de trouver ladite clé pour retrouver tous les messages des deux utilisateurs.

  • Cryptographie Asymétrique (RSA)

Chaque utilisateur dispose d’une clé secrète (privée) qui reste locale et d’une clé public diffusée à quiconque souhaiterait dialoguer avec lui.

En pratique, les systèmes à clé publique sont lents et utilisent une clé de session envoyée lors du premier échange pour faciliter le dialogue. On en revient donc ensuite à un système symétrique classique, vulnérable à de nombreuses attaques comme « Man in the middle ». Comme le nom le laisse suggérer, c’est une personne malintentionnée (Eve) située entre Bob et Alice et qui va intercepter tous les messages :

  1. Alice veut dialoguer avec bob et attend sa clé publique, Eve intercepte le message et envoie sa propre clé publique à Alice.
  2. Alice croit envoyer la clé de session à Bob mais c’est en fait Eve qui la réceptionne et la déchiffre avec sa clé privée.
  3. Eve demande ensuite la clé publique de Bob et peut renvoyer la clé de session.
  4. Le dialogue se met en place entre Bob et Alice sans laisser de traces. Les messages sont espionnés par Eve et peuvent être altérés.

Comment se prémunir de ce genre d’attaques ? Avec des signatures et des certificats !

Une signature est une empreinte du message, générée par les fameuses fonctions de hachage (md5, SHA-1, SHA-256…), d’où l’importance d’avoir des fonctions donnant un résultat avec suffisamment de bits et assez uniforme pour éviter les attaques par collision (entre autres). Mais finalement, plus on met de couches de sécurité, plus il y a des failles dans lesquelles s’engouffrer.

Petite remarque en passant :

Mintenant, une chose applicable dans la vie de tous les jours. Si vous effectuez un paiement sur un site préfixé de la façon suivante :

Les données échangées sont peut-être chiffrées mais légalement vous n’avez aucune garantie quant à l’identité du destinataire. L’entité doit acheter un certificat pour être identifiée formellement et offrir une garantie d’un point de vue juridique, comme suit :

Conclusion

J’espère que je n’ai pas été trop théorique, la nature complexe du sujet m’oblige à passer parfois un peu vite sur certaines parties. Néanmoins vous pouvez toujours consulter l’article complet si vous êtes motivés et que vous voulez rentrer plus en détail dans les Mathématiques. Si vous avez des questions ou que vous souhaitez éclaircir/discuter certains points c’est avec plaisir que j’essayerai de vous répondre en commentaire ;).

 

Sinon pour aller plus loin :

Les bases : http://www-igm.univ-mlv.fr/~dr/XPOSE2007/vma_PKI/concepts_de_base.html

Explication poussée des PKI : http://www.hsc.fr/ressources/cours/pki/fonct-pki.pdf

Historique : https://openclassrooms.com/courses/les-premiers-algorithmes-de-chiffrement

Autorité de certification libre : https://letsencrypt.org/

Relative faiblesse du md5 : http://crypto.stackexchange.com/questions/15873/what-is-the-md5-collision-with-the-smallest-input-values

Slides du Summit OVH : http://fr.slideshare.net/ovhcom

Et enfin Wikipedia : https://fr.wikipedia.org/

Film : Le nombre 23

 

Merci à Xavier C. , Julien M. et Pierre.L  pour la relecture.

Maxime G

Commentaires

Maxime
L'article complet est sur One Drive si vous souhaitez aller plus loin : https://omnilog365-my.sharepoint.com/personal/mgillet_omnilog_fr/_layouts/15/guestaccess.aspx?guestaccesstoken=s%2f6V91YGrsRX7%2bHG771ByyUh8WLBzZsPVUiztGr1GBc%3d&docid=2_010b7d032c8f84b33ae6fe349ac7e28bb&rev=1
Vincent
Le livre "Forteresse digitale" de DAN BROWN est une vulgarisation également intéressante.

Ajouter un commentaire