Table des matières
Un message incompréhensible
Transmettre de l'information de telle manière que seuls les initiés puissent l'utiliser n'est pas un concept nouveau, il est même la base de la communication.
Un internaute qui ne connaît pas le français sera bien incapable de comprendre quoi que ce soit à la lecture de ces pages. Dans l'exemple, cependant, rien n'interdit à cet internaute d'apprendre le français pour en déchiffrer le contenu. Tout le monde peut apprendre le français, il n'y a aucun secret dans cette langue (juste pas mal de difficultés, mais pas de secret).
Dans de nombreux cas, cette « protection » ne sera donc pas satisfaisante.
Pour qu'un langage devienne un moyen de transfert de données confidentielles, il faut que l'apprentissage de ce langage soit impossible. Impossible n'étant pas français, il faudra donc se contenter d'en rendre l'apprentissage le plus difficile possible.
Juste un algorithme secret
Il peut s'avérer nécessaire de créer un langage spécifique, confidentiel, dont l'apprentissage reste difficile, idéalement impossible, pour le non initié. Dans un tel cas, nous disposons d'un algorithme de chiffrement qui assure à lui seul la confidentialité du message. Aussi longtemps que cet algorithme ne sera partagé que par les seules personnes autorisées, le secret restera inviolé.
Un tel procédé, cependant, n'est pas considéré comme sûr. Que quelqu'un réussisse à reconstituer l'algorithme et il n'y aura plus de secret.
La réussite du procédé repose sur le fait qu'un nombre minimal de personnes sont dans le secret. Il se trouve que pour qu'un système soit réellement efficace, il faut qu'un maximum de personnes puisse en étudier le mécanisme, pour découvrir toutes les failles qu'il peut contenir. Il y a donc ici une incohérence fondamentale.
Un algorithme et une clé
Il est largement préférable d'utiliser un algorithme public, que tout le monde peut analyser et utiliser, mais qui exploitera un paramètre de chiffrement qui, lui, ne sera pas partagé. Si l'on ne connaît pas la valeur de ce paramètre, même en disposant de l'algorithme, il sera impossible de déchiffrer le message. Le paramètre secret s'appelle une clé de chiffrement.
Ce système offre l'avantage qu'avec un algorithme public dont les éventuelles failles seront vitre identifiées et corrigées, il suffit de s'assurer que la clé reste confidentielle entre les deux parties. L'inconvénient étant qu'il faut partager une clé secrète.
Les algorithmes de cryptographie symétrique
- DES (Data Encryption Standard) créé par IBM dans la décennie 1970, aujourd’hui considéré comme trop peu solide.
- 3DES, triple DES améliore la sécurité, mais au détriment de la vitesse de traitement.
- AES (Advanced Encryption Standard) permet de créer des clés de 128, 192 ou 256 bits, ce qui permet de moduler le niveau de sécurité en fonction du besoin et des ressources matérielles.
- Blowfish surtout utilisé pour chiffrer des données stockées.
Un algorithme et une paire de clés
Une paire de clés est créée. L'une sert à déchiffrer ce que l'autre a chiffré. L'une reste secrète dans le coffre de son propriétaire. L'autre est publique et peut donc être facilement partagée… Curieux ? Certes, mais ingénieux.
Clé privée / clé publique
Chiffrer un message avec sa clé privée n'a aucun sens en matière de confidentialité, puisque tout le monde peut disposer de la clé de déchiffrement. En revanche:
- Je réalise un hachage1) de mon message, obtenant ainsi une empreinte qui lui est propre.
- Je chiffre cette empreinte avec ma clé privée et l'envoie ainsi que le document associé en clair.
- Le destinataire recalcule l'empreinte du document, déchiffre avec ma clé publique l'empreinte initiale.
Et alors ?
Si le destinataire réussit à déchiffrer l'empreinte initiale du document avec ma clé publique, c'est que c'est bien moi qui l'ai créée (aussi longtemps que ma clé privée n'a pas été compromise). Donc je suis bien l'auteur du message (Signature).
Si l'empreinte déchiffrée est identique à celle que le destinataire a calculé en local, c'est que le document n'a pas été falsifié (propriété fondamentale du hachage). Ceci assurant l'intégrité du document, donc son authenticité.
Corollaire direct de l'authentification: La non-répudiation. Celui qui a rédigé une lettre manuscrite, non raturée et signée de sa main, ne pourra en aucun cas prétendre par la suite qu'il n'en est pas l'auteur. Il en va de même pour l'authentification numérique.
Les algorithmes de hachage
- MD5 (Message Digest Algorithm 5), le plus ancien, produit une valeur de hachage de 128 bits. Aujourd'hui considéré comme peu sûr, abandonné au profit du suivant:
- SHA (Secure Hash Algorithm) existe en quatre versions de 0 à 3, les trois premières étant actuellement considérées comme peu fiables. SHA-3 permet des hachés de 225,256, 384 ou 512 bits.
Clé publique / clé privée
Si je souhaite envoyer un message confidentiel à son destinataire:
- Je récupère la clé publique du destinataire,
- je chiffre mon message avec cette clé publique.
- le destinataire sera le seul à pouvoir le déchiffrer, étant l'unique propriétairede sa clé privée correspondante (aussi longtemps qu'elle n'aura pas été compromise).
Le message est donc bien confidentiel. Bien entendu, en utilisant les deux méthodes en cascade, il devient possible d'envoyer un message confidentiel signé, donc authentifié, à un destinataire.
Tous types de clés
Chiffrer et déchiffrer des messages avec le couple de clés publique/privé est plus lourd qu'avec une clé symétrique. Nous avons compris que la faiblesse de la clé symétrique, c'est sa distribution aux partenaires.
Cependant, avec ce que nous avons vu plus haut, il devient envisageable pour un partenaire de composer une clé symétrique et de l'envoyer au destinataire de façon authentifiée et confidentielle. Une fois la clé partagée de cette manière, le dialogue confidentiel peut se poursuivre en chiffrant et déchiffrant des deux côtés avec cette même clé symétrique.
Cette méthode est souvent employée dans la construction de VPNs sécurisés.
Se pose alors un autre problème. Un malveillant disposant d'une puissance de calcul significative, pourra éventuellement finir par découvrir cette clé en espionnant le dialogue et en l'analysant pendant «un certain temps». Il sera donc nécessaire de remplacer cette clé symétrique de façon périodique, avec une période inférieure au «certain temps» nécessaire à l'espion pour la découvrir, tout le problème étant d'évaluer ce «certain temps».
Les algorithmes de chiffrement à clé publique
Plusieurs algorithmes existent, ne sont pas compatibles entre eux, ont des avantages et des inconvénients qui leur sont propre. Laissons les détails hautement mathématiques aux spécialistes, pour présenter le minimum nécessaire à savoir:
- RSA du nom de ses auteurs «Rivest-Shamir-Adleman», décrit en 1977 et breveté par le MIT. Le brevet a expiré en 2000, mettant l'algorithme dans le domaine public. Permet le chiffrement et/ou la signature d'un document.
- DSA (Digital Signature Algorithm). Contrairement à RSA, DSA ne permet que la signature de documents.
- ECC (Elliptic Curve Cryptography) de plus en plus souvent utilisée, offre une sécurité équivalente à RSA, avec une clé plus courte et donc une charge CPU moindre lors de son utilisation.
- ECDSA (Elliptic curve digital signature algorithm) qui, comme son nom l'indique, est utilisé pour les signatures.
- Diffie-Hellman est particulier dans la mesure où il est utilisé pour echanger une clé symétrique de façon sécurisée, très courant dans les VPNs.
Aucun de ces systèmes n'offre une totale sécurité. Des attaques sont toujours possibles, nécessitant des puissances de calcul plus ou moins (plutôt plus) considérables, mais il faut rester conscient qu’aucune solution n'est parfaite.
Cacher un message dans un autre message
Il peut être amusant, utile, nécessaire, voire les trois à la fois, de cacher un message dans un autre. Un message chiffré, on voit qu'il est chiffré et on essaye de le déchiffrer. Un message caché, on ne le voit pas et donc on ne cherche pas à le retrouver si l'on ne sait pas qu'il existe.
La science de la dissimulation d'un message dans un autre s'appelle la stéganographie.
Bien que cette approche n'entre pas dans le cadre de cet exposé, il est intéressant de savoir que ça existe.
Un exemple classique s'il en est (sous réserve d'authenticité…) : une correspondance écrite entre George Sand à Alfred de Musset.
George écrit ceci à Alfred:
Je suis très émue de vous dire que j'ai bien compris, l'autre jour, que vous avez toujours une envie folle de me faire danser. Je garde un souvenir de votre baiser et je voudrais que ce soit là une preuve que je puisse être aimée par vous. Je suis prête à vous montrer mon Affection toute désintéressée et sans cal- cul. Si vous voulez me voir ainsi dévoiler, sans aucun artifice mon âme toute nue, daignez donc me faire une visite Et nous causerons en amis et en chemin. Je vous prouverai que je suis la femme sincère capable de vous offrir l'affection la plus profonde et la plus étroite Amitié, en un mot, la meilleure amie que vous puissiez rêver. Puisque votre âme est libre, alors que l'abandon où je vis est bien long, bien dur et bien souvent pénible, ami très cher, j'ai le coeur gros, accourez vite et venez me le fait oublier. À l'amour, je veux me sou- mettre. |
Comme c'est beau, comme c'est joliment dit, comme c'est poétique (normal, c'est George Sand, quand même) !
Bon, maintenant, lisez le texte, mais seulement une ligne sur deux, en sautant les lignes paires. Vous constaterez que le message devient tout de suite nettement plus direct…
Et, pour continuer la démonstration, lisez donc la réponse que fait Alfred de Musset :
Quand je vous jure, hélas, un éternel hommage Voulez-vous qu'un instant je change de langage Que ne puis-je, avec vous, goûter le vrai bonheur Je vous aime, ô ma belle, et ma plume en délire Couche sur le papier ce que je n'ose dire Avec soin, de mes vers, lisez le premier mot Vous saurez quel remède apporter à mes maux. |
Lisez bien, l'astuce stéganographique est fournie avec.
Georges Sand, qui n'est pas de celles qui abandonnent en chemin, conclut de la sorte :
Cette grande faveur que votre ardeur réclame Nuit peut-être à l'honneur mais répond à ma flamme. |
A quoi bon perdre son temps en attentes inutiles. Plus vite c'est fait, plus vite on pourra le refaire…
Il est possible d'inventer une foule de façons de dissimuler un message dans un autre
Avec l'information numérique, il devient possible de cacher à peu près n'importe quoi dans n'importe quoi. Souvent dans des images.
Il est aussi possible, au cas où, d'utiliser une méthode de chiffrement sur le message caché.
Un peu de vocabulaire
Ce qui suit est directement inspiré de l'ouvrage :
Cryptographie Appliquée
De Bruce Schneier
Traduit en français par Laurent Viennot
Publié chez Vuibert.
Une sorte de bible pour qui veut approfondir sérieusement le sujet.
- Un message en texte clair est un message que tout le monde peut interpréter, soit directement, soit avec un outil de traduction (un dictionnaire et une grammaire par exemple),
- la transformation d'un message pour le rendre incompréhensible, même avec un outil de traduction est appelée chiffrement (encryption, éventuellement),
- le résultat du chiffrement donne un texte chiffré (ou cryptogramme ),
- l'action inverse s'appelle le déchiffrement, elle permet de restituer le texte en clair,
- l'art de chiffrer et de déchiffrer s'appelle la cryptographie, les spécialistes en la matière sont des cryptographes,
- ceux qui s'amusent à essayer (et parfois même à arriver) à déchiffrer un message sans en connaître la ou les clés sont les cryptanalystes, ils font de la cryptanalyse,
- la branche mathématique sur laquelle s'appuient la cryptographie et la cryptanalyse s'appelle la cryptologie et les spécialistes de cette chose sont les cryptologues.
Un peu de philosophie
Comme il est illusoire de penser que l'on pourra mettre un jour au point un procédé de chiffrement qui ne sera jamais « cassable » par un cryptanalyste, il faut se résoudre à considérer qu'un système de chiffrement est forcément vulnérable et donc l'utiliser dans un domaine où il conservera son maximum d'efficacité.
Ce domaine d'efficacité peut s'évaluer en considérant quelques critères :
- les efforts déployés pour casser un chiffrement seront proportionnels à l'intérêt qu'il y a à obtenir les données déchiffrées (obtenir le moyen de déchiffrer des transactions bancaires peut être plus motivant que de percer le secret d'un e-mail que M. X envoie à Mlle. Y),
- pour casser un chiffrement, il faut de la puissance de calcul (puissance=effort/temps). Il faut donc utiliser un chiffrement pas plus longtemps que le temps nécessaire à le casser, avec les moyens de calculs supposés pouvoir être mis en œuvre par les attaquants (les moyens incluent non seulement le potentiel de calcul, mais également les algorithmes de recherche),
- plus le volume de données chiffrées avec la même méthode est important, plus il fournit aux attaquants du matériel de travail, il faut donc ne pas dépasser un volume critique avec le même chiffrement.
- une information n'a généralement pas besoin de rester indéfiniment secrète. « Demain, on débarque sur les plages de l'Atlantique ». Après demain, cette information n'aura plus besoin de rester secrète. Il suffit donc de trouver un procédé de chiffrement qui puisse résister 24h.
Il faut comprendre de tout ceci que la sécurité introduite par un procédé de chiffrement reste relative. Elle n'est fonction que de l'efficacité du procédé en rapport à l'intérêt qu'il y a à le casser.