Et c’est après avoir intercepté le messager du roi que les PJ tombent enfin sur l’importante missive qui est malheureusement pour eux, un message codé. Nous avons parlé il y a quelques temps des moyens de communications à travers les âges. Lorsqu’il s’agit de transmettre une information de la plus haute importance, il faut veiller à ce que le message ne tombe pas entre de mauvaises mains et que seul son destinataire puisse l’avoir. Très vite, il a fallu trouver des ruses et des stratégies pour mettre au point une transmission codée de l’information.
Petit jeu : un message codé est caché dans cette page… qui sera le premier à le trouver ? Si vous pensez avoir la réponse, envoyez-la par l’intermédiaire du formulaire de contact du site… vous devez indiquer, où est caché le message, comment il a été chiffré et bien entendu, le texte du message. Le gagnant aura son nom gravé ici même !
Briser le code
Bien entendu, décoder un message codé à l’aide de son code est chose aisée. Plus généralement, lors d’une partie de jeu de rôle, ce genre de message est intercepté par les joueurs qui auront pour tâche d’en percer le secret. Il sera alors nécessaire de briser le code du message codé.
Les techniques n’ont fait que s’améliorer pour résister au mieux… je vous propose un petit panorama des techniques les plus utilisées, mais avant quelques notions de cryptanalyse :
- Les chiffrements par substitutions monoalphabétiques sont assez simples à briser, puisqu’une lettre est toujours représentée par un seul et unique symbole.
- Les chiffrements par substitution polyalphabétique sont un peu plus difficile puisqu’un caractère sera représenté par plusieurs caractères différents.
- Les chiffrements par transposition sont rigolos aussi… plutôt que de substituer les lettres, on les présente dans le désordre, le destinataire disposant des techniques de classement.
- Les chiffrements modernes quant à eux utilisent des formules mathématiques permettant de masquer les lettres dans un charabia de chiffres totalement absconds pour l’être humain !
Le code César (monoalphabétique)
L’une des techniques les plus basiques de codage hérite du code César, qui porte ce nom car Jules César utilisait celui-ci pour communiquer secrètement.
Il y employait, pour les choses tout à fait secrètes, une espèce de chiffre qui en rendait le sens inintelligible, et qui consistait, je le dis pour ceux qui voudront les déchiffrer, à ranger des lettres dans l’alphabet, en écrivant la quatrième pour la première, c’est-à-dire le d pour le a, et ainsi de suite. – Suétone, Vie des douze Césars, Livre I, paragraphe 56
Le principe est simple, il suffit de décaler l’alphabet d’un certain nombre de lettres pour obtenir le code… le code original décale l’alphabet de 3 lettres, voici la table de correspondance :
Original : ABCDEFGHIJKLMNOPQRSTUVWXYZ Chiffré : DEFGHIJKLMNOPQRSTUVWXYZABC
Des variantes du code permettent de changer la valeur du décalage… ainsi, une fois qu’une correspondance est trouvée, il ne reste plus qu’à faire correspondre le reste de l’alphabet… Le code avec une valeur de décalage de 13 est particulier :
Original : ABCDEFGHIJKLMNOPQRSTUVWXYZ Chiffré : NOPQRSTUVWXYZABCDEFGHIJKLM
Ce code s’appelle code ROT-13, et la lettre l’originale d’une lettre chiffrée (par exemple O pour B), correspond toujours à la version chiffrée de l’originale (soit B pour O).
Un outil automatisé pour décoder/coder : http://www.dcode.fr/chiffre-cesar
Les alphabets codés (monoalphabétique)
Les alphabets codés forment une technique de chiffrement très simple par l’intermédiaire d’un alphabet connu que d’un petit nombre de personnes. Souvent lié à une organisation, ces alphabets disposent souvent d’une écriture logique.
Dans l’aventure de Nephilim : Initiation, les personnages-joueurs découvrent le journal d’un templier célèbre, celui-ci est codé dans le chiffre des Templiers, décodable à partir de la croix des huit béatitudes, le symbole de l’ordre des Templiers.
Le principe est simple, chaque symbole correspond à une branche stylisée de la croix et à une lettre, voici l’aide de jeu que les personnages trouvent (une croix avec les lettres disposées dessus). Notez que ce code a réellement existé.
Au passage, une astuce… le J n’existait pas !
Un outil automatisé pour décoder/coder : http://www.dcode.fr/chiffre-templiers
Il existe aussi le code Pig Pen des Francs-Maçons qui utilise la même logique… cette fois avec un dièse (#) et une croix (×). Chaque lettre est disposée dans le symbole, un point ajouté permet de gérer la répétition.
Un outil automatisé pour décoder/coder : http://www.dcode.fr/chiffre-pig-pen-francs-macons
Rien ne vous interdit d’imaginer d’autres alphabets codés…
Le chiffre de Vigenère (polyalphabétique)
Les codes monoalphabétiques se brisent très facilement… le chiffre de Vigenère (16ème siècle) utilise une clé pour briser la monotonie du chiffre, sans la clé, il va être très difficile de décoder le message. La clé peut avoir n’importe quelle taille, et là, ça devient vraiment rigolo !
Le chiffrement commence simultanément à la première lettre du message et de la clé. Pour chaque lettre à chiffrer, nous allons additionner la lettre du message et la lettre de la clé correspondante, une fois la clé terminée, il suffit de boucler au début…
L’addition se fait en ajoutant les positions des deux lettres et en les passant par un modulo 26, le résultat donnant la position de la lettre chiffrée… tout le monde a suivi ? non ? En clair, si je chiffre R avec la lettre E, j’obtiens : 18 + 5 = 23, soit le … V
Le modulo permet de soustraire 26 lorsque le nombre est supérieur ou égal à 26, donc on reboucle sur les premières lettres de l’alphabet… si je chiffre R avec M, j’obtiens 18 + 13 = 31 outch, ça dépasse 26, donc, 31 – 26 = 5, donc la lettre E, ça va ? En vrai, le modulo, c’est la partie « restante » de la division euclidienne, vous savez, la division posée comme en primaire… bon, et si vous n’avez pas compris, je ne vous veux pas à une de mes tables de Rolemaster !
Si je veux chiffrer la phrase « AUX PORTES DE L IMAGINAIRE UN SITE QUI EST TROP GENIAL » avec la clé « GARTHH », j’obtiens :
Original : AUXPORTESDELIMAGINAIREUNSITEQUIESTTROPGENIAL Clé : GARTHHGARTHHGARTHHGARTHHGARTHHGARTHHGARTHHGA Chiffré : GUOIVYZEJWLSOMRZPUGIIXBUYIKXXBOEJMAYUPXXUPGL
Comme vous pouvez le remarquer le A va être codé en G, puis en R, en G, puis pour finir en G… avec ce code, on piège la technique de l’analyse de fréquence. D’ailleurs, cette dernière nous désigne le X et le U comme étant les lettres les plus présentes… le X correspond effectivement au E (3 fois… 1er rang en français), mais aussi au Q et au G… le U au U, au N (3 fois, 5ème rang en français) et au 0… cette analyse n’est pas totalement fausse, mais elle est belle est bien faussée… plus la clé est complexe (éviter les A, les répétitions de caractères et d’une taille importante), plus l’analyse sera faussée !
Un outil automatisé pour décoder/coder : http://www.dcode.fr/chiffre-vigenere
Code Enigma (polyalphabétique)
Avec le code Enigma, on commence à atteindre les limites du déchiffrement par l’homme. Le processus de chiffrement étant assuré par une machine pouvant utiliser un grand nombre de paramètres, le temps nécessaire à son décodage demande bien plus de travail qu’avec un chiffre Vigenère… voir, il est impossible dans un temps imparti de trouver la clé de chiffrement.
Je ne renterai pas dans les détails du fonctionnement de cette machine, mais il aura fallu plusieurs années, plusieurs grands mathématiciens (dont Alan Turing) pour venir à bout du chiffrement de la version M4 de la machine Enigma… Le problème n’était pas tant l’algorithme de chiffrement, mais la vitesse à laquelle les clés changeaient qui empêchait de briser le code avant changement.
Original : AUXPORTESDELIMAGINAIREUNSITEGENIAL Chiffré : IDBVSYGGOHYEUDESRHYUJVERWZUMXOTVRH
Un outil automatisé pour décoder/coder : http://www.dcode.fr/chiffre-machine-enigma
Une technique plus littéraire…
Une technique de codage assez amusante est d’utiliser une œuvre commune aux deux correspondants et de coder les messages en utilisant les mots du livre : chaque correspondant reçoit une liste de nombres qui correspondent, à la page, à la ligne et au numéro du mot dans la ligne… pour détecter ce genre de code, c’est assez simple, les nombres sont toujours par trois et le couple deuxième/troisième est souvent dans une fourchette identique… Le plus dur consiste à trouver le livre utilisé pour le codage… ha, oui, c’est peut-être un détail… mais il faut que les deux correspondants disposent exactement de la même édition ! Il faut aussi trouver une convention de comptage pour les apostrophes… généralement, deux mots séparés d’une apostrophe comptent pour un seul.
Si vous avez Le Malade Imaginaire en édition Classiques Illustrés Hachette, vous devriez trouver sans mal :
52/20/5/93/7/4/27/22/3/69/13/2/30/5/4/60/34/8/113/13/5/45/7/8
Les techniques chiffrement moderne
Une grosse partie d’Internet et de l’économie numérique repose sur le chiffrement des connexions (vous savez, les fameux « HTTPS »). Aujourd’hui, il est quasi impossible de briser un chiffrement sans un indice important, la meilleure solution consiste donc à se tourner vers le social engineering pour obtenir les informations souhaitées de la part de l’utilisateur lui-même.
Le code ASCII, du texte vers le numérique
Si nous parlons de numérique, c’est parce qu’un système informatique ne peut comprendre que des nombres, mais il les comprend très vite, et bien plus vite que n’importe quel être humain. Pour stocker du texte, un ordinateur doit donc le convertir en nombres, le code ASCII est le code de base permettant de représenter des caractères au format numérique, chacun d’entre eux étant représenté par un nombre, un texte devient donc une suite organisée de nombres.
Le code ASCII est un code 8 bits, il faut donc 1 octet pour stocker un seul caractère dans un fichier texte, voici un exemple de fichier texte vu avec un éditeur Hexadécimal d’un côté la version hexadécimale, de l’autre, la version ASCII du même texte… si vous comparez avec plus haut, ça doit correspondre.
Le chiffrement moderne
Et puisque mon ordinateur est capable d’effectuer quasi 3 millions de calculs à la seconde (au moins !), il va être capable d’appliquer tout un tas de transformées mathématiques sur cette suite de nombre pour le rendre totalement illisible par un être humain ! Donc, je le répète, le chiffrement moderne est quasi inviolable sans une faille humaine… généralement, on trouve toujours le mot de passe pour accéder aux fichiers chiffrés dans un fichier texte appelé « mot_de_passe_des_fichiers_privés.txt » !
Voici une vue du même fichier texte que précédemment, mais cette fois après être passé dans un outil de chiffrement simple (le logiciel gratuit Axcrypt chiffré avec la phrase « je ne donnerais pas cette passphrase »).
Ce n’est pas que moi qui le dis, mais de nombreux experts de la question… si vous avez une petite heure et demie à perdre, voici une petite conférence enregistrée en 2013 avec Benjamin Bayard et Jérémy Zimmermann sur le chiffrement, la sécurité et Internet.
Autre solution amusante pour cacher un message avec des techniques modernes, la stéganographie… elle consiste à masquer des données, en l’occurrence du texte brut (donc, une sorte de « code ASCII » très léger) dans une photo, une musique… ces « gros » fichiers de données (3Mo, ça veut donc dire qu’ils contienne 3 millions de caractères ASCII !) peuvent très facilement cacher à la fin du fichier, dans une zone que ni un afficheur de photo, ni un lecteur MP3 ne peut accéder, des données textes… quelle différence fait-on sur une photographie de 5Mo qui contient quelques 16 octets de textes à la fin ?
Décoder un message codé
Il n’existe que deux solutions pour parvenir à décoder un message codé quand on ne dispose pas du code :
- Soit vous essayez de trouver la logique du code, pas si simple avec les systèmes plus avancés utilisant des clés… ça fonctionne bien sur les codes César et assimilés et les alphabets codés qui disposent toujours d’une logique pour déterminer la succession des symboles.
- Soit vous le brute-forcez, en clair, vous essayez de trouver les combinaisons les plus appropriées pour que le texte veuille dire quelque chose…
Dans tous les cas, vous devez trouver un point de départ… il existe une technique : l’analyse de fréquence. Selon la langue du message, certains caractères sont plus représentés que d’autres : en français, les lettres les plus présentes sont, dans l’ordre, le E, le A, le S et le I. Notez qu’il est possible d’utiliser l’analyse de fréquence sur le message codé et de comparer la fréquence des lettres codées avec la fréquence des lettres d’une langue… statistiquement, un code César n’y résiste pas trop, surtout si il est long !
Une fois le « E » repéré, il faut s’attaquer soit, au A et au S, soit trouver les doublons de lettres (communs aussi sur le E, mais aussi sur le S, le N, le T…). Attention, sans doublon, soit le hasard a fait en sorte qu’il n’y en ait pas dans le texte… soit nous ne sommes pas en présence d’un chiffrement par substitution monoalphabétique… et là, ça va être plus dur !
Pour terminer, soit vous continuez à y aller en force brute en cherchant des mots « évidents » comme ELLE, ET, EST, … soit, vous cherchez à trouver la logique dans le code : trouver la valeur de décalage, la logique des symboles utilisé dans cet alphabet…
Utiliser un message codé dans une aventure
Bon, maintenant, que j’ai donné toutes les clés aux joueurs pour briser un code, à vous MJ de voir ce que vous pouvez en faire…
Où, quand, comment ?
Déjà, il faut savoir une chose, c’est que lors d’une partie, faites bien attention à la diffusion à vos joueurs d’une aide de jeu codée… il y a de grande chance qu’ils se jettent tout de suite sur le décodage de celle-ci et qu’ils perdent alors le fil de l’aventure…
A mon sens, un bon message codé dans une aventure doit :
- Arriver à un moment où les PJ « rament », une petite séance de décodage peut réveiller des joueurs endormis…
- Ne pas être indispensable à la suite de l’aventure, et peut être décodé en parallèle de l’action si nécessaire. Il ne faut pas que l’information contenue dans le message soit bloquante.
- Apporter des informations complémentaires importantes. Si les joueurs se prennent la tête pendant une heure pour avoir le message, ce n’est pas pour constater que le grand méchant envoie son lieutenant faire ses courses avec un liste de marchandises codées !
Création de l’aide de jeu
Là, c’est l’étape la plus décisive… et je m’adresse aussi aux auteurs professionnels, traducteurs, éditeurs… l’aide de jeu doit être lisible, très lisible… les torchons faits vite fait à la main avec pas deux symboles identiques alors qu’ils devraient l’être sont à proscrire.
Par pitié, les oublis de mots, les fautes d’orthographe, les erreurs de ponctuation, … tout ça, non ! Relisez, testez, décodez… Comment pouvez-vous faire décoder un message s’il y a une faute par ligne ? Même dans des scénarios officiels, édités et vendus, ça arrive !
Si je déchiffre le bout de message codé ci-dessus, j’obtiens sur la première ligne : EN/CE/JOUR/DE/GRCE/DU/25/JUIN/1218… Ben le A de GRACE, il est où ?
Ensuite, histoire de ne pas pourrir un peu plus les joueurs, pensez à avoir la belle aide de jeu mise en forme, toute belle, et tout… et à côté une version plus « utilisable » avec les caractères espacés, et peut être, un petit tableau qui regroupe les différents symboles utilisés… cette version de travail est indispensable, et surtout, prévoyez au moins un exemplaire par joueur et quelques-uns de plus !
Utilisation d’accessoires
Je suis l’heureux possesseur d’un cryptex… finalement, l’édition collector de Da Vinci Code a au moins eu un intérêt ! Après, il existe tout un tas d’objets, de casse-têtes qui peuvent permettre de symboliser une boîte contenant un message… ne serait-ce qu’un Rubix Cube. L’intérêt de mettre un objet entre les mains des joueurs c’est qu’ils pourront essayer à des temps perdus de manipuler la chose et d’y revenir à l’occasion… c’est assez cocasse quand en plein combat, un joueur s’exclame, « j’y suis arrivé » parce qu’il vient de parvenir à ouvrir le cryptex et à trouver le message !
Et si mes joueurs sortent un smartphone pour décoder ?
Haha, si vous êtes dans un jeu moderne et qu’il trouve un outil pour décoder le message, je crois qu’il mérite un paquet de PIX en plus celui-là ! Après, la question à se poser, est-ce possible d’avoir une assistance externe ou pas ? Que se passera-t-il, dans le jeu, si le message secret vient qu’à se promener sur Internet ?
Sources
- Pleins d’outils : http://www.dcode.fr
- L’analyse de fréquence : http://www.dcode.fr/analyse-frequences
- L’indice de coïncidence : http://www.dcode.fr/indice-coincidence
- Le chiffrement par transposition : https://fr.wikipedia.org/wiki/Chiffrement_par_transposition
- Plus d’information sur Pig Pen et le chiffre des Templiers : http://www.apprendre-en-ligne.net/crypto/subst/pigpen.html
- Principe de fonctionnement et historique de la machine Enigma : https://fr.wikipedia.org/wiki/Enigma_%28machine%29
- Le fonctionnement de la machine de Bletchley Park : https://fr.wikipedia.org/wiki/Cryptanalyse_d’Enigma
- La croix des huit béatitudes des Templiers permettant de décoder leur alphabet : http://templier.weebly.com/chiffre-des-templiers.html
- La stéganographie ? https://www.securiteinfo.com/attaques/divers/steganographie.shtml
- Et un logiciel de stégano pour jouer à l’espion : http://embeddedsw.net/OpenPuff_Steganography_Home.html
- La série Enquêtes codées (disponible sur Netflix)
- Le film Imitation Game (2014) sur la vie d’Alan Turing (interprété par Benedict Cumberbatch)
- Une présentation assez complète sur le sujet : http://www.nymphomath.ch/crypto/bibliotheque/PDF/transpcrypto.pdf
Crédits photographiques : Alan Turing (Benedict Cumberbatch) devant sa machine © 2014 Ampersand Pictures