crypto
“UNPLUGGED”
Un atelier pour (grands) enfants
de 12 à 112 ans
@ Pas Sage en Seine
27 juin 2014
pourquoI ?
Parce que c'est rigolo.
Parce qu'on comprend bien mieux la crypto
quand on la pratique un peu “à la main”.
Parce que ça nous sera bien utile après l'Apocalypse.
(Quand on n'aura plus d'Internet.)
Parce que ton threat model, c'est ton prof de maths,
tes collègues en réunion, ta mère, ton mec
(et pas forcément un cryptanalyste de la NSA).
Parce que tu vas pouvoir frimer devant tes potes.
PARCE QUE.
le chiffre de vigenère
Le principe : du chiffre de César puissance 26.
On chiffre chaque lettre du message avec un alphabet
différent, défini à chaque fois par une lettre d'un mot-clé.
Le matériel : papier, crayon
+ un carré de Vigenère
+ un mot-clé qui ne sort pas de
ta tête et de celle du destinataire
(sinon, ça sert à rien).
comment ça marche ?
Le process : on chiffre chaque lettre du message
en lui substituant la lettre à l'intersection de sa colonne
et de la ligne définie par la lettre du mot-clé.
Exemple : je chiffre le message
“la crypto c'est rigolo” (mais oui !) avec le mot-clé “crypto”.
CRYPTOCRYPTOCRYPTOlacryptocestrigolo
NRAGRDVFATLHTZEDEC
trucs & astuces
1/ Pour déchiffrer : on repère la lettre chiffrée sur la ligne correspondant à la lettre du mot-clé, et on remonte la colonne.
2/ Plus le mot-clé est long, plus le chiffrement est solide :
on évite de réutiliser trop souvent les mêmes alphabets
de substitution, pour décourager l'analyse de fréquence.
On peut chiffrer avec une phrase entière, un poème.
trucs & astuces (2)
3/ Quand le mot ou la phrase-clé est au moins aussi long
que le message lui-même, on parle de masque. Quand
le masque ne sert qu'une fois, on parle de
masque jetable.
Si ce masque jetable est totalement aléatoire,
le décryptage est impossible.
4/ Pratique : on remplacera avantageusement le carré
de Vigenère par une réglette de Saint-Cyr et son coulisseau,
plus chic, mais surtout plus maniable.
le chiffre de playfair
Le principe : on chiffre non pas des lettres seules,
mais des paires de lettres, ou digrammes.
On utilise pour ça une table de conversion de 5x5 lettres
(oui, il en manque une, donc on confond le V et le W).
Le matériel : papier, crayon
+ un carré de 5x5 cases
+ les lettres d'un mot-clé
(à garder pour soi, sinon... bref)
+ le reste des lettres de l'alphabet.
COMMENT ÇA MARCHE ?
1/ On découpe notre message en paires de lettres.
Exemple : LA - CR - YP - TO - CE - ST - RI - GO - LO.
2/ Si les 2 lettres sont sur la même ligne,
on les remplace par les lettres immédiatement à leur droite.
Si les 2 lettres sont sur la même colonne,
on les remplace par les lettres immédiatement en dessous.
Si elles ne sont ni sur la même ligne ni sur la même colonne,
on remplace chaque lettre par celle qui se situe
sur la même ligne et sur la colonne de l'autre lettre.
(C'est bon, vous suivez toujours ?)
démonstration !
Reprenons notre message
LA - CR - YP - TO - CE - ST - RI - GO - LO.
L et A sont sur la même colonne,
on les remplace par U et G.
C et R sont sur la même ligne,
on les remplace par R et Y.
T et O ne sont ni sur la même ligne,
ni sur la même colonne.
T devient C et O devient E.
Message final :
UGRYPTCETOZCPGFAKA.
TRUCS & AstUCES
1/ Pour déchiffrer, on fait l'opération à l'envers (facile).
2/ Le carré de Playfair est très simple à utiliser.
(Anecdote : pour convaincre l'armée britannique
de s'en servir, Charles Wheatstone a prouvé qu'il pouvait l'apprendre à des enfants de 12 ans en quelques heures.)
Changer de clé souvent n'est pas un problème.
3/ Attention, bien s'entendre sur l'orthographe de la clé :
une seule faute, et ça fiche tout en l'air
(à la différence du carré de Vigenère par exemple).
le chiffre adfgvx
Le principe : ADFGVX est un chiffrement assez tordu
qui combine substitution et transposition.
Dans un premier temps, on chiffre
chaque lettre du message
par un digramme, grâce à un carré
de 6x6 qui comprend tout
l'alphabet + les chiffres de 0 à 9.
Ensuite, on utilise un mot-clé
pour brouiller le message
intermédiaire. (Du coup,
c'est un peu long à opérer.)
DÉMONSTRATION !
Reprenons notre message : “lacryptocestrigolo”.
1/ D'abord, on établit le carré ADFGVX, en disposant
les lettres de l'alphabet et les chiffres au hasard
(le carré fait partie de la clé).
2/ On commence par convertir
chaque lettre avec un digramme
composé de la lettre en tête de ligne
et de la lettre en tête de colonne :
l devient DA, a devient DV, etc.
“lacryptocestrigolo” devient : DADVFGVVXFADDDDGFGXDVDDDVVVGGVDGDADG.
démonstration ! (2)
(Parce que non, c'est pas fini.)
On construit ensuite une seconde grille à l'aide du mot-clé,
en disposant les lettres ligne par ligne (et en complétant
si besoin avec des X). Puis on déplace les colonnes
en mettant les lettres du mot-clé dans l'ordre alphabétique.
DÉMONSTRATION ! (3)
(Quand y en a plus, y en a encore.)
Une fois qu'on a fait tout ça, on prend, dans la dernière grille,
les lettres de haut en bas, une colonne après l'autre.
C'est le message chiffré final.
“lacryptocestrigolo” est donc devenu :
DVDXVDGDGDVGVFGDGAAVDDVGFAFDGDDXDVVD.
TRUCS & ASTUCES
1/ Pour retrouver le texte en clair à partir du texte chiffré,
on commence par diviser le nombre de lettres du message
par le nombre de lettres du mot-clé.
(Ça nous donne le nombre de lettres par colonne.)
2/ On compose les colonnes avec l'ordre alphabétique
des lettres du mot-clé, puis on les remet dans l'ordre de départ pour reconstituer le texte intermédiaire.
3 / On utilise le carré ADFGVX
pour retrouver le texte en clair.
4/ On va prendre une aspirine.
pour 8 euros, t'as de la crypto
Le principe : utiliser ce qu'on appelle un “masque”
pour chiffrer les lettres d'un message
en utilisant leur code binaire (une suite de 0 et de 1).
Le matériel : 8 pièces de 1 euro (ou de 1 centime)
+ une clé commune et secrète (sous forme de suite binaire)
+ connaître le code binaire des 26 lettres de l'alphabet (LOL).
(Astuce : on peut aussi l'avoir sur un bout de papier.)
COMMENT ÇA MARCHE ?
1/ On crée un masque de 8 chiffres entre 0 et 1.
Par exemple : 10010110.
0 veut dire : on laisse la pièce comme elle est.
1 veut dire : on retourne la pièce.
2/ On prend la première lettre à chiffrer,
par exemple C comme “Crypto”.
Son code binaire est : 01000011.
On considère que 0 est le verso, que 1 est le recto.
Transmis “en clair”, C donnerait ça :
COMMENT ÇA MARCHE ? (2)
3/ On applique le “masque” au code binaire de C :
le premier chiffre de C est 0, le premier chiffre du masque est 1,
donc on change le 0 en 1. Le 2e chiffre de C est 1,
le 2e chiffre du masque est 0, donc on ne change pas le 1. Etc.
01000011
10010110
11010101
4/ Chiffré avec le masque, C donne ça :
TRUCS & ASTUCES
1/ Avec un peu de pratique, c'est moins compliqué
que ça en a l'air, mais ça n'est pas très maniable.
On peut aussi établir un code avec son correspondant
à base de 3 ou 5 pièces (et avec un masque de 3 ou 5 chiffres).
2/ Un masque n'est vraiment efficace que si on le change
très souvent (voir “Le chiffre de Vigenère”).
3/ Mieux vaut avoir une bonne excuse si on se fait pincer.
(“Je fais respirer mes sous” risque de ne pas marcher.)
Ceci n'est *pas* une incitation à tricher en examen ;)
chiffrement asymétrique
EN CONSTELLATION
Le principe : utiliser une “carte” composée de lignes
et de points, dont il existera une version privée
et une version publique, pour faire du calcul mental
à la portée d'un élève de collège. (Mais oui !)
Le matériel : du papier
+ un crayon
+ savoir dessiner
des lignes et des points.
COMMeNT ÇA MARCHE ?
1/ On commence par fabriquer sa “clé” privée
en dessinant des “nœuds”, des lignes et des points.
COMMENT ÇA MARCHE ?
2/ On relie les points entre eux pour obtenir un genre
de “carte”. ATTENTION, ne pas rajouter de ligne
partant d'un nœud, sinon ça ne marche plus.
Ça, c'est la clé privée.
COMMENT ÇA MARCHE ?
3/ On dessine une autre version de la carte
où les nœuds sont remplacés par des points.
Ça, c'est la clé publique.
COMMENT ÇA MARCHE ?
4/ Bob donne sa clé publique à Alice. Alice veut envoyer à Bob un bisou, autrement dit la lettre X (88 en code ASCII).
Alice va décomposer 88 en nombres disposés sur
tous les points de la carte qui, additionnés, donnent 88.
COMMENT ÇA MARCHE ?
5/ Alice associe à chaque point un second nombre :
l'addition du nombre du point considéré
et des nombres des points qui lui sont reliés.
COMMENT ÇA MARCHE ?
6/ Elle envoie à Bob sa carte / clé publique
uniquement avec les additions
(les nombres en rouge) :
ET HOP, MAGIE !
7/ Bob n'a plus qu'à additionner les nombres correspondant
aux
nœuds pour retrouver le message caché :
18 + 19 + 19 + 18 + 2 + 12 = 88 = X = bisou.
comment c'est possible ?!
Bob a conçu sa “carte” de telle manière que les
nœuds
et les points qui leur sont reliés permettent
de la décomposer en parties qui ne se recoupent pas.
Chaque partie de la carte correspond précisément
aux nombres additionnés par Alice à chaque
nœud.
un peu de culture...
Cet exercice s'inspire des fonctions mathématiques
à sens unique, très utilisées en cryptographie.
L'idée, c'est que l'opération est facile à faire dans un sens,
mais plus compliquée (et plus longue) dans l'autre.
Bob connaît les nœuds de sa carte et peut la décomposer.
Les retrouver à partir de la clé publique, c'est une autre histoire.
trucs & astuces
1/ Plus il y a de nœuds et de points, plus retrouver
les nœuds sera difficile pour un adversaire. La force
du chiffrement dépend de la complexité de la carte...
2/ ... mais plus la carte est complexe,
plus le chiffrement (et le déchiffrement) sera long.
On ne peut pas tout avoir ;)
3/ Moralité : la “crypto-constellation” peut éventuellement permettre de transmettre des messages courts.
Mais c'est surtout un très joli exercice d'initiation
aux principes du chiffrement à clé publique :)
mais en vrai, tout ça,
ça sert à quelque chose ?
1/ Ça sert à comprendre des principes
cryptographiques élémentaires :
substitution, transposition,
chiffrement symétrique ou asymétrique,
clé publique vs. clé privée.
2/ Ça peut servir à communiquer quand on n'a pas de réseau,
quand il faut éviter d'utiliser le réseau, ou quand personne
ne s'attend à ce qu'on communique de cette manière.
Le low-tech et le très local ont leur utilité, aussi.
mais en vrai, tout ça,
ça sert à quelque chose ?
3/ Ça sert à réfléchir au fait qu'on ne communique jamais
dans l'absolu, mais en fonction d'un contexte :
Qu'est-ce que je cherche à protéger ?
De qui, et quels sont les moyens de mon adversaire ?
Pour combien de temps je dois protéger cette information ?
Quels sont les risques si cette info n'est plus confidentielle ?
En termes savants, on appelle ça un modèle de menace
(threat model) : ta mère, ton boss, la police kazakh, la NSA.
La réponse n'est pas forcément le système le plus complexe.
keep calm,
have fun
& encrypt the world.
pour aller plus loin...
• Le chiffre de Vigenère sur Wikipédia
+ l'outil en ligne sur dCode.
• Le chiffre de Playfair sur Wikipédia
+ l'outil en ligne sur dCode.
• Le chiffre ADFGVX sur Wikipédia
+ l'outil en ligne sur Ars Cryptographica.
• L'exercice de chiffrement avec des pièces de monnaie
est inspiré du chapitre “The One-Tim Pad Algorithm”
de l'ouvrage Algorithms Unplugged.
• L'exercice de chiffrement asymétrique est tiré de l'ouvrage Computer Science Unplugged (partie 2).
CRÉDITS
“Crypto Unplugged”, un atelier 100% digital,
préparé avec les doigts par Amaelle & Aeris.
Cette partie des slides de présentation
est sous licence CC BY-NC-SA.
À utiliser sans modération !