Bonjour,

Je vous propose un nouvel élément à utiliser : Un algo de crypto qui peut s'exécuter de tête, même par des enfants !

Un algo de crypto qui peut s'exécuter de tête, même par des enfants ?

Je propose une suite chiffrante avec chaînage et lettre initiale.

Et c'est plus dur à craquer que la machine Enigma !

(Évidemment, il ne fait pas le poids face à un AES ou tout autre algo de pro)

Comment ça marche ?



On commence par se donner un alphabet, dans cet exemple : A,B,C,D,E

-> les messages ne devront comporter que ces lettres.

Puis on définit une addition et une soustraction sur cet alphabet.

On remplace simplement les lettres par leur indice, en commençant à 0.

A vaut 0, B vaut 1, ... E vaut 4.

Ensuite on fait de l'arithmétique "modulaire", c'est à dire que quand ça dépasse

on "reboucle" :

- on soustrait 5 tant que le résultat est plus grand que 4

- on additionne 5 tant que le résultat est plus petit que 0

Ex : 3+4 = 7 et 7 (qui "dépasse" 4) donne 7-5 = 2.

1-3 = -2 et -2 (qui est plus petit que 0) donne -2 + 5 = 3

Remarque : une arithmétique modulaire à laquelle on est déjà habitué :

les minutes sur une horloge : quand ça dépasse 60, on soustrait 60.

Pour aller plus vite, on peut se créer une table qui résume cette arithmétique.



- + A B C D E

A A A B C D E

E B B C D E A

D C C D E A B

C D D E A B C

B E E A B C D



On peut même l'imprimer, elle n'est pas secrète !

Comment ça se lit une table comme ça ?

On veut calculer x + y (où x et y sont des lettres de notre alphabet)

On prend la colonne de x, puis la ligne de y, où y est choisi dans la colonne "+"

Ex : D+B : 4ème colonne (celle du D) et 2ème ligne (celle du B dans la colonne "+")

on trouve E

Ex : E-D : 5ème colonne (celle du E) et 3ème ligne (celle du D dans la colonne "-")

on trouve B (comme on pouvait s'y attendre : D+B = E E-D = B )



Ariane veut envoyer un message à Béatrice :

son message : BAAACDBB (comme "Béa a assez des bébés")

elle choisit une clef qui ne doit être connue que de Ariane et Béatrice : CADE

elle choisit une lettre initiale au hasard : E

(elle n'est pas secrète, mais doit être changée à chaque chiffrement)

le chiffrement :

il s'effectue lettre après lettre : à chaque étape on additionne

- la lettre à chiffrer

- la lettre de la clef

- la lettre résultant de l'étape qui précède (sauf à la première étape où c'est la lettre initiale)



message

v-------------v

B A A A C D B B

C A D E C A D E

lettre initiale --> E ^-------------^

clef répétée autant de fois que nécessaire



étape 1 : on calcule ( B + C ) + E

^ ^ ^--- lettre initiale (car il s'agit de la première étape)

| +--------- lettre de la clef qui correspond

+------------- lettre qui va être chiffrée à cette étape

à l'aide de la table (en utilisant la colonne "+"), on trouve : B+C = D et D+E = C

donc la première lettre du message chiffré est "C"

étape 2 : ( A + A ) + C

^ ^ ^----- résultat de l'étape qui précède

| +----------- lettre de la clef qui correspond

+--------------- lettre qui va être chiffrée à cette étape

on trouve A+A = A et A+C = C, donc la deuxième lettre du message chiffré est "C"

étape 3 : (A+D)+C = A

étape 4 : (A+E)+A = E

étape 5 : (C+C)+E = D

étape 6 : (D+A)+D = B

étape 7 : (B+D)+B = A

étape 8 : (B+E)+A = A



Ariane va envoyer à Béatrice (qui connaît déjà la clef)

le message chiffré (cryptogramme) plus la lettre initiale : "ECCAEDBAA"

(par convention, on ajoute la lettre initiale en tête de message)



Pour le décodage, on effectue les opérations inverses (en utilisant la colonne "-" de la table) :

Chaque lettre déchiffrée = ( lettre chiffrée - lettre précédente ) - lettre de la clef

étape 1 : ( C - C ) - E

^ ^ ^--- la lettre initiale (car il s'agit de la première étape)

| +--------- la lettre de la clef

+------------- la lettre à déchiffrer

à l'aide de la table (en utilisant la colonne "-"), on trouve C-E = D et D-C = B

donc la première lettre du message déchiffré est "B"

étape 2 : ( C - A ) - C

^ ^ ^--- la lettre qui précède dans le message chiffré

| +--------- la lettre de la clef

+------------- la lettre à déchiffrer

on trouve C-A = C et C-C = A

donc la deuxième lettre du message déchiffré est "A"

étape 3 : (A-D)-C = A

étape 4 : (E-E)-A = A

étape 5 : (D-C)-E = C

étape 6 : (B-A)-D = D

étape 7 : (A-D)-B = B

étape 8 : (A-E)-A = B

Elle obtient "BAAACDBB" : Béatrice a bien déchiffré le message.



De tête, c'est peut-être un peu difficile, mais avec la table en anti-sèche, ça se fait !

Qu'en pensez-vous ?