====== Position du problème ====== ===== Rendre un message incompréhensible par le non initié ===== 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é. {{ :crypt:algo_sec.gif |}} 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. {{ :crypt:algo_pub.gif |}} Ce principe, qui peut éventuellement adopter des combinaisons de clés, comme nous le verrons plus loin, reste à l'heure actuelle le procédé le plus sûr. Ici, pour déchiffrer le message, il « suffira » de trouver la bonne clé, l'algorithme étant public. La difficulté avec laquelle une clé non connue pourra être retrouvée sera seule garante du secret. En ce qui concerne l'algorithme, comme chacun peut l'utiliser et l'analyser, s'il possède une faille, elle sera facilement et rapidement découverte et corrigée. ===== 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.