Généralité sur la Cryptographie
La cryptographie
La cryptographie[W3] permet la transformation, au moyen d’un algorithme de chiffrement, d’un message dit clair en un message chiffré. Grâce à ce procédé, deux interlocuteurs peuvent échanger de manière confidentielle et sécurisée, pourvu qu’ils possèdent la clé leur permettant de chiffrer ou de déchiffrer leurs messages. La cryptographie sert aussi d’autres applications telles que l’authentification et la signature (numérique) des messages.Le chiffrement comprend le traitement,le stockage et la transmission sécurisée des donnéés Depuis longtemps, la transmission des données sensibles a nécessité l’utilisation d’un système de sécurisation performant.Les services secrets des grandes puissances économiques et Politiques ont développé tout d’abord des codages alpha numériques simples, puis des techniques cryptographiques plus poussées, grâce à des l’outils mathématique pour rendre leurs données sensibles inviolables et inexploitables. La cryptologie, véritable science régissant le codage de l’information, a connu une réelle explosion avec le développement des systèmes informatiques, passant d’une ère artisanale et confidentielle à des systèmes de très hautes technologies nécessitant une importante puissance de calcul. Elle a connu un plus large essor encore avec l’arrivée des systèmes de communications modernes (internet, etc…) où il y a une nécessité absolue de protéger les données échangées pour respecter les individus.
Qu’entend-on par clé ?
On appelle clé une valeur utilisée dans un algorithme de cryptographie afin de chiffrer une donnée. Il s’agit en fait d’un nombre complexe dont la taille se mesure en bits. On peut imaginer que la valeur correspondante à 1024 bits est absolument gigantesque. Plus la clé est grande, plus elle contribue à élever la sécurité de la solution. Toutefois, c’est la combinaison d’algorithme complexe et de clés importantes qui seront la garantie d’une solution bien sécurisée. Les clés doivent être stockées de manière sécurisée de sort que seul leur propriétaire soit en mesure de les reçevoire et de les utiliser.
Principes et Objectifs de la Cryptographie
Principe de la Cryptographie
Le cryptage[W3] ou chiffrement des données est généralement décrit par une communication secrète d’information entre deux interlocuteurs. Dans un système informatique, cette confidentialité intervient en fait sous plusieurs formes, notamment dans la protection du stockage de l’information (copie de fichier), des accès (interrogation d’une base de données) et de sa transmission (écoute). Quelque soit son support physique, l’information est toujours représentée par un codage binaire. Ce codage est conforme a un standard qui permet de communiquer avec les dispositifs de la machine (clavier, écrans, imprimantes, traceurs. . . .). Lorsque les ensembles de données à stocker ou à transmettre sont très volumineux (en particulier les images), on fait appel a des technique de compression pour optimiser le volume et la vitesse de transmission. Le cryptage repose sur une transformation du code vers une forme non standard, de façon à limiter l’utilisation. La technique est très ancienne, mais elle a était largement développée et transformée avec l’utilisation intensive de l’informatique et des codages numériques. Ce domaine reste, pour des raisons évidentes, très secret, et les progrès les plus récents ne sont pas divulgués. Cette présentation se limite évidement au technique et outils du domaine public, qui sont ceux effectivement utilisés dans les grandes applications informatiques. Pour limiter les risques de divulgation, on doit pouvoir changer périodiquement de technique de cryptage.
L’objectif[W3] fondamental de la cryptographie est de Permettre à deux entités de communiquer sur un canal public peu sûr de telle sorte qu’une personne LAMDA ne puisse pas comprendre les données échangées. Un canal public est un canal de communication auquel tout le monde a accès et dont les communications sont susceptibles d’être écoutées par n’importe qui, sans trop de difficultés. Par exemple, le réseau téléphonique, le réseau Internet, mais aussi l’atmosphère (pour les fumées utilisées par les amérindiens pour communiquer à distance). La sécurité des systèmes d’information toute entière et la cryptographiepoursuivent quatre objectifs essentiels qui, lorsqu’ils sont tous atteints, garantissent une sécurité optimale à l’utilisateur :
• Confidentialité : l’information ne peut être lue par une personne non autorisée.
• Authenticité : l’information est attribuée à son auteur légitime.
• Intégrité : l’information ne peut être modifiée par une personne non autorisée.
• Non-répudiation : l’information ne peut faire l’objet d’un déni de la part de son auteur.
Exemple : Alice[3] envoie un message confidentiel à Bob, Alice chiffre son message avec la clef publique de Bob C = E(kpubB, P) (cette clé est librement accessible).
• Elle transmet le message chiffré à Bob (l’interception de ce message est inexploitable).
• Bob utilise sa propre clé privée pour déchiffrer le message reçu D(kprivB,
C) = P (c’est le seul à pouvoir le faire).
Pour répondre : démarche réciproque
Systèmes de la cryptographie
Le chiffrement[W3] d’un message permet justement de garantir que seul l’émetteur et le(s) destinataire(s) légitime(s) d’un message en connaissent le contenu. C’est une sorte d’enveloppe scellée numérique. Une fois chiffré, faute d’avoir la clé spécifique, un message est inaccessible et illisible, que ce soit par les humains ou les machines. Il existe deux grandes familles de chiffrement : le chiffrement symétrique et le chiffrement asymétrique. Chiffrement Symétrique Le chiffrement[W3] symétrique permet de chiffrer et de déchiffrer un contenu avec la même clé, appelée alors la « clé secrète ». Le chiffrement symétrique est particulièrement rapide mais nécessite que l’émetteur et le destinataire se mettent d’accord sur une clé secrète commune ou cela transmet par un autre canal. Celui-ci doit être choisi avec précautions, sans quoi la clé pourrait être récupérée par les mauvaises personnes, ce qui n’assurerait plus la confidentialité du message.
Dans le chiffrement par bloc le texte en clair se décompose en blocs de longueur fixe et les blocs seront chiffrés les uns après les autres en utilisant une clé (de taille fixe). Ainsi, pour n’importe quelle clé fixée, le chiffrement par bloc est une bijection : C = Ek(M), M = Dk(C) = Dk(Ek(m)) = m. L’algorithme de chiffrement symétrique le plus connu et le plus robuste est l’AES (Advanced Encryption Standard). Il utilise une longueur de bloc de 128 bits et une taille (minimale) de clé de : 128, 192, et 256 bits. Les algorithmes de chiffrement par flux, traitent des données bit par bit ou mot par mot (un mot correspond à un octet ou un ensemble d’octets) par une technique simple, appelée one-time pad. A cet effet, un PRNG produit un masque binaire de taille égale au texte en clair pour effecteur le chiffrement. En outre, pour éviter la production du même masque (par l’utilisation d’une clé fixe), un compteur sera utilisé comme une entrée supplémentaire au générateur. Les algorithmes de chiffrement par flux sont considérés moins robustes, mais plus rapides que les algorithmes de chiffrement par bloc. Dans le cas du chiffrement symétrique, nous savons que les deux entités, Alice et Bob, avant d’échanger des messages en toute sécurité, doivent se mettre d’accord sur une clé secrète k. Ceci peut se faire suite à une rencontre physique entre Alice et Bob, mais cela n’est pas toujours possible. Donc, il se pose le problème important d’échange de clé en toute sécurité sans être interceptée.
Chiffrement Asymétrique L’idée[6] de chiffrement à clé publique est simple : nous utilisons des clés différentes pour le chiffrement et le déchiffrement, une publique et l’autre privée. Seule la clé publique e doit être disponible à tout le monde, tandis que la clé privée d doit être gardée secrète par son propriétaire. Ces deux clés sont reliées mathématiquement, et il est pratiquement impossible de calculer la clé d à partir de la clé e. Dans la figure ci-dessous.
• Alice veut envoyer à Bob un message sécurisé avec un algorithme de chiffrement asymétrique.
• Au début, Bob choisi une paire de clés (eB, dB) et envoie sa clé publique eB à Alice.
• Alice chiffre le message M avec la clé eB et l’envoie à Bob.
• Lorsque Bob reçoit le message chiffré, il utilise sa clé privée, dB, pour le déchiffrer.
Il est important de noter qu’il ne suffit pas que la clé de chiffrement eB soit disponible au public, il faut en plus qu’elle soit authentifiée (garantie) par un organisme reconnu. Ceci est assuré par l’utilisation des certificats.
Plus besoin de partager une même clé secrète, le chiffrement asymétrique permet de s’en dispenser. Mais il est malheureusement plus lent.
Par exemple, Alice produit un document électronique et souhaite-le signer numériquement pour le protéger d’être modifié et prouver son authenticité.
Pour cela, Alice calcule le condensé du document et le chiffre par sa clé privée dA. Ensuite toute personne ayant accès à la clé publique d’Alice eA peut ainsi vérifier la signature en déchiffrant avec eA, en calculant, le condensé du document reçu et en comparant les deux valeurs obtenues. Si les valeurs sont identiques, la signature est validée, c’est à dire il est prouvé que le document n’a pas été modifié depuis qu’il a été signé, et c’est Alice qui l’a signé. Le chiffrement asymétrique est au moins 100 fois plus lent que le chiffrement symétrique et il nécessite des clés plus longues (taille courante de l’ordre de 1024 bits). Il est principalement utilisé pour chiffrer des messages courts, comme par exemple la clé secrète d’un algorithme de chiffrement symétrique.
Le principe de ce genre d’algorithme est qu’il s’agit d’une fonction unidirectionnelle à trappe. Une telle fonction a la particularité d’être facile à calculer dans un sens, mais difficile voire impossible dans le sens inverse. La seule manière de pouvoir réaliser le calcul inverse est de connaître une trappe.
Une trappe peut par exemple être une faille dans le générateur de clés. Cette faille peut être soit accidentelle ou intentionnelle de la part du concepteur.
Cette fois, une clé secrète est déterminée par une des deux parties souhaitant communiquer et celle-ci est envoyée chiffrée par un chiffrement asymétrique. Une fois connue des deux parties, celles-ci communiquent en chiffrant symétriquement leurs échanges. Cette technique est notamment appliquée lorsque vous visitez un site dont l’adresse débute par « https ».
Nous allons[7] voir ici un processus de cryptographie à clé publique appelé RSA (d’après le nom de ses inventeurs Ronald Rivest, Adi Shamir et Leonard Adleman en 1977). Il est très utilisé dans le commerce électronique et pour échanger des données confidentielles sur Internet. Le chiffrement RSA est asymétrique. Il utilise deux clés (des nombres entiers) : une clé publique pour chiffrer et une clé privée pour déchiffrer les données. Une personne
A (souvent nommée Alice) souhaite que B (souvent appelé Bob) lui envoie des données confidentielles. La personne A crée les deux clés, rend la clé publique accessible et conserve la clé privée. La clé publique est utilisée par son correspondant B pour chiffrer les données qui seront envoyées. La clé privée permettra à A de déchiffrer ces données. Ce procédé est souvent utilisé pour transmettre le mot-clé qui permettra alors de poursuivre l’échange de message par chiffrement cyclique comme vu ci-dessus :
• Bob envoie à Alice une clé de chiffrement symétrique (le mot-clé) qui peut ensuite être utilisée par Alice et Bob pour échanger des informations. Voyons ce processus plus en détails : supposons que B souhaite envoyer le mot-clé à A.
• A construit une clé privée et une clé publique. Elle envoie la clé publique 15 à B sans plus de précaution.
• B se sert de cette clé pour crypter le mot-clé. Il envoie le mot-clé crypté à A.
• Grâce à la clé privée, A parvient à décoder le mot-clé.
Certificats numériques
Pour qu’Alice[W5] puisse vérifier que la clé publique eB, qu’elle a obtenue, appartient vraiment à Bob, on doit utiliser une infrastructure à clé publique PKI (Public Key Infrastructure) et plus précisément le certificat numérique. Ce dernier permet d’associer une clé publique à une entité (une personne, une machine, …) afin d’en assurer la validité. Le certificat est en quelque sorte la carte d’identité de la clé publique et est délivré par un organisme appelé autorité de certification (souvent noté CA pour Certification Authority). Le certificat est un document signé par une autorité de confiance et contenant des informations d’identification de l’entité (comme son non, son adresse e-mail, l’employeur, etc.) groupées avec la clé publique de cette entité. Ce certificat est délivré et signé numériquement par un tiers de confiance (TTP) indépendant appelé l’autorité de certification (CA). Mais ceci suppose que le CA a déjà vérifié (souvent physiquement) l’identité de l’entité en question. Rappelons que l’entité peut être une personne ou une organisation. Un certificat est essentiellement un véhicule pour le transportde clés publiques d’une façon vérifiable comme les certificats standard X.509 qui contiennent aussi le nom de l’émetteur du certificat (comme Verisign ou Thawte), des conditions de validité et d’autres attributs additionnels. Donc les certificats sont utilisés pour éviter les problèmes d’usurpation d’identité.
Il y a des certificats personnels délivrés à des personnes et souvent appelés identifiants numériques, et d’autres délivrés à des organisations implémentés dans le serveur de l’organisation. Le certificat doit être installé dans l’ordinateur ou dans un équipement de communication. Parfois, la clé privée d’un utilisateur est compromise (par exemple volée), dans ce cas, le certificat doit être révoqué. Cela se fait souvent en incluant les certificats révoqués dans une liste des certificats révoqués (CRL(Certificate Revocation List)) qui est gérée et signée par le CA.
Efficacité des algorithmes de chiffrement
Un procédé[W2] est décrit par des algorithmes de cryptage et de décryptage, réalisés par des programmes. Pour être utilisable, un procédé de cryptage ne doit pas être trop élaborer : les algorithmes de codage et de décodage doivent être suffisamment rapide dont peu complexes, pour ne pas ralentir excessivement leur exploitation. Inversement, pour garantir le secret du cryptage, il faut que celui-ci soit difficile. Cela suppose d’une autre part que le secret des clés soit bien gardé, d’autre part que les algorithmes de découverte des clés soit suffisamment complexe, donc suffisamment lents, pour décourager les recherches. La qualité d’un cryptage est donc essentiellement liée au temps d’utilisation (qui doit être court), et au temps de découverte, qui doit être long. Le choix du cryptage doit tenir compte des intentions et des moyens de l’adversaire, et des risques encourus. Le déchiffrage d’une donnée secrète donne accès à des informations confidentielles, la connaissance des clés de cryptage permet d’altérer des informations protégées ou d’en émettre de fausses (brouillage). La découverte d’un cryptage sera liée au temps disponible et à la puissance des ordinateurs utilisés par l’espion. La fréquence de chargement des clés doit évidement tenir compte de ces donnés. Les agressions ne sont pas toujours malveillantes, les donnés détruites ou divulguées sont le plus souvent le résultat d’erreur ou de négligence contre lesquelles il faut aussi se protéger. Les deux principaux procédés de cryptage connus sont les cryptages symétriques et asymétriques.