Pour ce chapitre consacré à la cryptographie Alexandre Anzala-Yamajako a entièrement refondu et réécrit le texte précédent de Laurent Bloch, auquel il a ajouté des éléments relatifs aux avancées récentes du domaine telles que la cryptographie post-quantique et le chiffrement homomorphe.
La cryptographie est la science qui produit les idées qui servent à sécuriser un système de la même manière que les mathématiques fournissent à la physique les idées qui permettent d’analyser le mouvement des planètes. La sécurité du système analysé repose alors sur des hypothèses mathématiques éprouvées par la communauté cryptographique1. Idéalement, le système dispose en plus d’une preuve de sécurité qui garantit que le seul moyen de violer ses objectifs de sécurité est de contredire l’hypothèse sous-jacente.
Parallèlement à la cryptographie, la cryptanalyse est, quant à elle, la discipline adverse : le cryptanalyste se fixe comme objectif de contredire les hypothèses cryptographiques de la manière la plus efficace possible. Par exemple en tentant d’améliorer les algorithmes de factorisation existants ce que lui permettrait en cas de succès significatif de remettre en question la sécurité de certaines instances de l’algorithme RSA.
Le rôle de la cryptanalyse est fondamental car c’est grâce aux résultats publiés par les meilleurs cryptanalystes qu’il est possible d’évaluer la sécurité des algorithmes cryptographiques. Ainsi, si le meilleur algorithme connu pour attaquer un cryptosystème donné requiert au moins 100 ans pour s’exécuter, il est alors raisonnable de l’utiliser pour protéger de l’information qui n’aura plus de valeur dans quelques jours (comme peuvent l’être le jour et l’heure d’une réunion secrète).
Nous sommes dans le vif du sujet de cet ouvrage : les principes que l’on présentera dans ce chapitre sont ceux sur lesquels reposent une grande partie des systèmes de sécurité informatique. Une liste non exhaustive comporte le standard EMV qui permet de sécuriser les paiements effectués avec des cartes de crédit, les protocoles réseau SSL/TLS, IPSEC, SSH, le système de chiffrement PGP, les Infrastructures de gestion de clés et d’autres encore. La lecture de ce chapitre donnera au lecteur consciencieux toute la connaissance nécessaire pour comprendre l’utilisation de la cryptographie dans ces contextes variés.
Nous ne saurions tracer ici une histoire complète de la cryptographie et de son usage à travers les âges, pour cela le lecteur pourra par exemple se reporter au livre de Simon Singh [258]. Il convient cependant d’isoler deux périodes cruciales dans le développement de la cryptographie. D’abord, l’avènement de l’informatique a donné un essor considérable à la cryptographie et à la cryptanalyse. Ce n’est d’ailleurs pas un hasard si le créateur du modèle théorique de la programmation informatique, Alan Turing, a été aussi pendant la Seconde Guerre mondiale un formidable concepteur de machines à cryptanalyser les messages allemands chiffrés par les automates Enigma. Les machines conçues par Turing, appelées Bombes2, étaient fondées sur une réalisation originale du logicien polonais Marian Rejewski. La courbe qui trace le succès des attaques de sous-marins allemands contre les convois transatlantiques qui acheminaient les fournitures américaines à la Grande-Bretagne et à l’URSS subit des fluctuations importantes, qui correspondent au délai à l’issue duquel l’équipe d’Alan Turing à Bletchley Park en Angleterre parvenait à cryptanalyser plus ou moins parfaitement le chiffre allemand après un changement de combinaison des Enigma. Lorsqu’on sait l’importance militaire qu’ont eue ces fournitures, on ne saurait sous-estimer la contribution de Turing à la victoire alliée. Plus tard, les années 1970 et l’invention des techniques asymétriques a complètement transformé l’usage de la cryptographie et en a libéralisé l’usage.
Aujourd’hui, que ce soit via un navigateur internet, un smartphone, une carte de crédit, ou même une voiture, nous sommes quotidiennement confrontés à la cryptographie sans en avoir conscience.
Le lecteur qui jugerait le contenu de ce chapitre trop technique pourra en première lecture passer outre les démonstrations mathématiques, voire passer directement au chapitre suivant sans que cela obère sa compréhension générale de l’ouvrage. Qu’il sache néanmoins que ces passages pourront lui donner les meilleures clés de compréhension de la cryptographie, qui reste la pierre angulaire de la sécurité.
Tout d’abord il convient d’introduire le vocabulaire consacré lorsqu’il s’agit de cryptographie moderne : dans la suite de ce chapitre Alice et Bob vont tenter de communiquer via un canal contrôlé par Ève, l’attaquant. En effet, Ève peut non seulement lire tous les messages échangés sur le canal, mais aussi modifier, supprimer et insérer des messages de son choix. De plus, on considère que toute information non explicitement désignée comme secrète (qui est alors connue uniquement d’Alice et de Bob) est connue d’Ève.
En pratique cela signifie qu’Ève connaît les moyens utilisés par eux pour communiquer comme par exemple les algorithmes cryptographiques, les sources et destinations des messages envoyés, ou encore leur encodage, et ignore uniquement les clés utilisées. Cette distinction entre ce que l’attaquant connaît (tout au plus) et ce qu’il ignore est connue sous le nom de principe de Kerckhoffs du nom d’Auguste Kerckhoffs, un cryptologue du XIXe siècle. Selon ce principe, pour le dire autrement, un système cryptographique doit résister à un attaquant qui en connaîtrait tous les détails de réalisation, hormis les clés de chiffrement. Ce scénario peut sembler extrême mais reflète la réalité à laquelle nous sommes confrontés quotidiennement. En effet, lorsque nous cherchons à atteindre un site Web via notre navigateur tous les équipements réseau entre nous et ce site Web se trouvent exactement dans cette situation.
Pour aider Alice et Bob à communiquer de manière sécurisée malgré la quasiomniscience d’Ève, la cryptographie fournit des moyens que nous détaillerons dans le suite de ce chapitre et qui permettent de garantir les propriétés suivantes :
•la confidentialité : les messages échangés ne sont lisibles que par Alice ou Bob ;
•l’intégrité : les messages échangés n’ont pas été modifiés de manière non autorisée ;
•l’authentification des données : la source des messages est identifiée et vérifiable ;
•l’authentification des personnes : l’interlocuteur (Bob ou Alice) est identifié et son identité est vérifiable ;
•la non-répudiation : l’impossibilité pour Bob ou Alice de nier être la source d’un message qu’il/elle a émis.
Lorsque sont mis en place des algorithmes cryptographiques destinés à permettre à Alice et Bob d’atteindre les objectifs de sécurité qu’ils se sont fixés, par exemple communiquer de manière confidentielle sur le réseau Internet, il est intéressant de s’interroger sur le niveau de sécurité offert. En effet, bien qu’il soit courant de considérer la sécurité comme une notion binaire, le niveau de sécurité est une notion plus précise qui traduit l’effort que doit fournir Ève pour attaquer les objectifs de sécurité, dans l’exemple choisi, lire les messages que s’échangent Alice et Bob malgré leurs efforts pour les protéger. Dans le meilleur des cas il n’existe pas pour l’attaquant de méthode plus rapide que l’énumération de toutes les possibilités de secrets, ce que l’on appelle la recherche exhaustive ou méthode de force brute (brute force). Cependant il existe des cryptosystèmes couramment utilisés pour lesquels il existe des méthodes beaucoup plus efficaces que la recherche exhaustive. Le niveau de sécurité dépend donc directement du choix des algorithmes et de la façon dont ils sont utilisés. Afin de fixer les idées sur les ressources nécessaires pour effectuer un certain effort on fournit les ordres de grandeur suivants3 :
•effectuer 240 ≈ 1012 opérations est faisable sur un ordinateur personnel ;
•effectuer 256 ≈ 6 · 1016 opérations est possible pour une entreprise ou un laboratoire de recherche ;
•effectuer 264 ≈ 1019 opérations est probablement possible pour les agences d’un état-nation comme la NSA, le GCHQ ou la DGSI ;
•effectuer 280 ≈ 1024 opérations est considéré comme assez peu pro...