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, imaginé par Bruce Schneier, est un algorithme de chiffrement poly-alphabétique qui utilise un jeu de cartes comme générateur de clé.
Ce système a été conçu pour pouvoir être utilisé sans équipement électronique, tout en offrant un niveau de sécurité raisonnable.
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.
Les messages chiffrés avec cette méthode présentent un indice de coïncidence proche de celui d'un texte aléatoire, ce qui les rend difficiles à analyser par cryptanalyse classique.
Des indices permettent de faire le lien entre ce chiffrement et le monde des cartes : références au bridge, au jeu du Solitaire, à Freecell, ou encore au roman Cryptonomicon dans lequel il apparaît.
Dans ce livre, le mot pontifex désigne ce chiffrement comme nom de code.
Le jeu de cartes utilisé peut être représenté par des nombres de différentes manières, à condition que l'émetteur et le destinataire utilisent le même système de correspondance.
L'idéal est de commencer avec un jeu de cartes dans un ordre parfaitement aléatoire. Toutefois, un ordre initial peut être généré à partir d'un mot-clé. Bruce Schneier propose une méthode pour cela : le mot-clé est converti en une série d'étapes de chiffrement, comme dans la première phase de l'algorithme. Ensuite, un mélange du jeu est effectué, en suivant les étapes classiques du chiffrement Solitaire, mais avec une modification : l'étape 5 est remplacée par une nouvelle version de l'étape 4, dans laquelle la coupe s'effectue à la position correspondant au code de la lettre du mot-clé. Ce processus est répété pour chaque lettre du mot-clé.
En option, les deux dernières lettres peuvent servir à déplacer les jokers : le code de l'avant-dernière lettre détermine la position où insérer le joker A, et celui de la dernière lettre indique la position 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)". Tout algorithme pour "Chiffre Solitaire (Schneier)", applet ou snippet ou script (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toutes 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 toute base de données, ou accès API à "Chiffre Solitaire (Schneier)" ou tout autre élément ne sont pas publics (sauf licence open source explicite type Creative Commons). Idem avec le téléchargement pour un usage hors ligne sur PC, mobile, tablette, appli iPhone ou Android.
Rappel : dCode est une ressource éducative et pédagogique, accessible en ligne gratuitement et pour tous.
Le contenu de la page "Chiffre Solitaire (Schneier)" ainsi que ses résultats peuvent être copiés et réutilisés librement, y compris à des fins commerciales, à condition de mentionner dCode.fr comme source.
L'export des résultats est gratuit et se fait simplement en cliquant sur les icônes d'export ⤓ (format .csv ou .txt) ou ⧉ copier-coller.
Pour citer dCode.fr sur un autre site Internet, utiliser le lien :
Dans un article scientifique ou un livre, la citation bibliographique recommandée est : Chiffre Solitaire (Schneier) sur dCode.fr [site web en ligne], consulté le 25/05/2025,