Outil pour déchiffrer/chiffrer avec Solitaire par Schneier. Solitaire est une méthode de chiffrement réalisable avec un jeu de cartes, inventé par Bruce Schneier dans le roman Cryptonomicon.
Chiffre Solitaire (Schneier) - dCode
Catégorie(s) : Chiffre Poly-Alphabétique
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
Le chiffrement Solitaire de Bruce Schneier est un chiffre poly-alphabétique dont la clé de chiffrement est générée avec un jeu de cartes.
Pour coder un message avec Solitaire, le jeu de cartes est utilisé pour générer une séquence de nombres qui va être utilisé comme clé produire un message chiffré.
Exemple : Chiffrer le message CRYPTONOMICON avec le jeu de carte non mélangé 1,2,3,4…,52,A,B
Etape 1 : Associer à chaque caractère du message un nombre comme A=1,B=2,…Z=26 (code A1Z26)
Exemple : C a pour valeur 3, R devient 18, Y devient 25, etc.
Etape 2 : Générer un code en mélangeant le jeu de carte d'après l'algorithme de solitaire (voir ci après)
Exemple : Le premier code obtenu est 4 (puis 49, puis 10, etc.)
Etape 3 : Ajouter deux à deux les nombres des étapes 1 et 2. Si le total obtenu est supérieur à $ 26 $, lui soustraire $ 26 $.
Exemple : $ 3+4=7 $, puis $ 18+49=67 $, comme $ 67 > 26 $ calculer $ 67-26=41 $ et encore $ 41-26=15 $ etc.
Etape 4 : Remplacer chaque nombre par la lettre lui correspondant (opération inverse de l'étape 1), 1=A,2=B,…26=Z. Les lettres obtenues correspondent au message chiffré.
Exemple :
Message clair | C | R | Y | P | T | O | N | O | M | I | C | O | N |
Lettres codées | 3 | 18 | 25 | 16 | 20 | 15 | 14 | 15 | 13 | 9 | 3 | 15 | 14 |
Codes des cartes | 4 | 49 | 10 | 24 | 8 | 51 | 44 | 6 | 4 | 33 | 20 | 39 | 19 |
Calcul Etape 3 | 7 | 15 | 9 | 14 | 2 | 14 | 6 | 21 | 17 | 16 | 23 | 2 | 7 |
Message chiffré | G | O | I | N | B | N | F | U | Q | P | W | B | G |
Le déchiffrement nécessite de connaitre l'ordre exact du jeu de cartes utilisé lors du chiffrement.
Le déchiffrement est identique au chiffrement, sauf pour l'étape 3 où il ne faut pas ajouter mais soustraire à chaque nombre celui généré par le jeu de cartes. Si le nombre obtenu est inférieur à $ 1 $, lui rajouter $ 26 $.
Exemple : Déchiffrer VQMLVBLTF avec les codes générés (factices) 3,2,1,3,2,1,… :
Message chiffré | V | Q | M | L | V | B | L | T | F |
Lettres codées | 22 | 17 | 13 | 12 | 22 | 2 | 12 | 20 | 6 |
Codes des cartes | 3 | 2 | 1 | 3 | 2 | 1 | 3 | 2 | 1 |
Calcul Etape 3 inversé | 19 | 15 | 12 | 9 | 20 | 1 | 9 | 18 | 5 |
Message clair | S | O | L | I | T | A | I | R | E |
Bruce Schneier décrit un paquet de carte non mélangé avec les nombres suivants :
(Trèfle) As,2,3,…,10,V,D,R valant 1,2,3,…10,11,12,13
(Carreau) As,2,3,…,10,V,D,R valant 14,15,16,…23,24,25,26
(Coeur) As,2,3,…,10,V,D,R valant 27,28,29,…36,37,38,39
(Pique) As,2,3,…,10,V,D,R valant 40,41,42,…49,50,51,52
Joker A, Joker B valant respectivement A ou 53, B ou 53 (oui, pas 54)
Trèfle > Carreau > Coeur > Pique correspond à l'ordre du jeu utilisé dans les règles du Bridge
La génération des codes est la partie la plus compliquée du code Solitaire, elle implique un mélange précis.
Exemple : 2,6,A,3,4,5,1,7,8,…,B,9 est un jeu de 54 cartes (avec jokers distincts A et B) en position initiale modifiée
Etape 1 : Déplacer le joker A d'une carte en dessous dans la pile (ce qui revient à échanger le joker A avec la carte immédiatement en dessous). Si ce n'est pas possible, ie. si le joker A est au fond de la pile (il n'a donc pas de carte en dessous), alors le déplacer préalablement au dessus de la pile et appliquer l'étape 1 (il deviendra donc la seconde carte de la pile).
Exemple : 2,6,3,A,4,5,1,7,8…,B,9
Etape 2 : Déplacer le joker B de 2 cartes en dessous dans la pile. Là encore si ce n'est pas possible, si le joker B est au fond de la pile, alors de déplacer en position 3 (il aura 2 cartes au dessus de lui) ou si le joker B est en avant dernière position, alors le déplacer en position 2 (une carte au dessus de lui). Celà revient à considérer que le jeu de carte fait une boucle sur lui-même.
Exemple : 2,B,6,3,A,4,5,1,7,8,…,9
Etape 3 : Faire une triple coupe au niveau des jokers (les jokers et toutes les cartes entre eux ne bougent pas mais les groupes de cartes avant et après s'échangent, même si un groupe est vide)
Exemple : 4,5,1,7,8,…,9,B,6,3,A,2
Etape 4 : Couper après la Nième carte où N est le numéro correspondant à la carte du dessous de la pile, tout en laissant la dernière carte à sa place. Si la dernière carte est un joker, ne rien changer à cette étape.
Exemple : 1,7,8,…9,B,6,3,A,4,5,2
Etape 5 : Noter le numéro X de la carte en position N+1 où N est est le numéro correspondant à la carte du dessus de la pile (qui est en position 1). X est le code généré (le jeu n'est pas mélangé à cette étape).
Exemple : 1,7,8,…9,B,6,3,A,4,5,2 Le premier code est 7
Répéter les étapes 1 à 5 pour obtenir le code suivant.
Un message codé par Solitaire possède un indice de coincidence proche de l'aléatoire.
Toutes références à des jeux de cartes, au bridge, au jeu du Solitaire, ou Freecell ou encore au livre Cryptonomicon et son auteur Bruce Schneier sont des indices.
Le mot pontifex est utilisé comme nom de code dans le roman.
Le jeu de carte pourrait être codé en nombres de n'importe quelle autre manière à condition que l'émetteur et le récepteur s'entendent sur la méthode.
La position originale du jeu de carte est meilleure si elle est parfaitement aléatoire, mais il est possible d'en générer une à partir d'un mot clé. Bruce Schneier décrit une méthode de mélange du jeu de carte basée sur un mot clé en le codant comme à l'étape 1 du chiffrement. Ensuite, il recommande de pratiquer un mélange du jeu de carte identique à l'algorithme du solitaire mais en remplaçant l'étape 5 par une nouvelle étape 4 où la coupe est en position M avec M le code d'une lettre du mot clé. Répéter ainsi toutes les étapes pour chaque lettre.
Optionnellement, les 2 dernières lettres du mot clé (leurs codes $ c1 $ et $ c2 $) peuvent être utilisées pour déplacer les jokers respectivement après la carte en position $ c1 $ pour le joker A et après la carte en position $ c2 $ pour le joker B.
Neal Stephenson décrit l'algorithme du Solitaire dans Cryptonomicon ici (lien affilié) un roman de science-fiction paru en 1999. L'algorithme a été créé par Bruce Schneier, consultant en cryptographie pour ce livre.
dCode se réserve la propriété du code source pour "Chiffre Solitaire (Schneier)". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Chiffre Solitaire (Schneier)", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les fonctions liées à "Chiffre Solitaire (Schneier)" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou les données, en téléchargement, script, ou les accès API à "Chiffre Solitaire (Schneier)" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Chiffre Solitaire (Schneier)" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Chiffre Solitaire (Schneier) sur dCode.fr [site web en ligne], consulté le 21/11/2024,