Le masque de Voldemort jetable

Méfiance envers les aléas

Ce défi est tiré de c0d1ngUP 2021

Les partisans de vous-savez-qui se sont inspirés de méthodes moldues pour leurs échanges de messages. Sachant que la méthode du masque jetable est particulièrement sûre si on l'utilise dans les bonnes conditions, ils ont décidé de l'adopter comme méthode cryptographique.

Le principe est simple. Si on a en entrée une chaîne de caractères, on commence par la transformer en message numérique (en utilisant un encodage de caractères, comme ASCII, ou UTF8 s'il y a des lettres accentuées). Avec la chaîne de caractères TUSAISQUI (pas d'accent), on obtient donc un message de 9 octets (84, 85, 83...) qu'il va falloir chiffrer.

Puis on génère une clé de 9 octets aléatoires et on réalise un ou exclusif octet par octet entre le message et la clé pour obtenir le message chiffré.

Les 9 octets obtenus (ils ne correspondent pas forcément à des caractères imprimables) sont ensuite encodés en base 64 pour que le cryptogramme soit imprimable.

Voici un exemple :

texte   :  T   U   S   A   I   S   Q   U   I 
message : 84  85  83  65  73  83  81  85  73
clé     : 79 192 191 248 217 183  26 134 110 
chiffré : 27 149 236 185 144 228  75 211  39
base64  : G5XsuZDkS9Mn

Pour déchiffrer, si on connaît la clé, on procède dans l'ordre inverse : décodage du base 64 pour obtenir le message chiffré, ou exclusif entre la clé et le message chiffré pour réobtenir le message en clair, puis conversion en caractères.

La clé doit être complètement aléatoire, et il faut donc la transmettre d'une manière ou d'une autre à son correspondant, ce qui ne pose aucun problème si on dispose de magie (ne demandez pas pourquoi ils n'utilisent pas la magie pour transmettre directement le message... c'est trop technique).

Sachant que la sécurité du système repose en grande partie sur le générateur de nombres aléatoires, Thorfinn, qui était en charge de créer le système, y a apporté beaucoup de soin :

Ayant choisi a et b, deux entiers entre 0 et 255, puis une « graine » x entre 0 et 255, le schéma suivant est itéré :

répéter : 
   produire(x)
   x =  ( a x + b )  % 256

La boucle précédente produit une série d'octets. Pour chaque octet produit, on ne conserve que les 5 premiers chiffres binaires (que l'on appelle aussi des bits). Tous ces bits sont remis bout à bout et redécoupés en octets. Cette nouvelle série d'octets forme la clé.

Par exemple, si a = 17, b = 37 et x = 73, on commence par produire ceci :

73, 254 ( (17 x 73 + 37) % 256), 3 ( (17 x 254 + 37) % 256), 88, 253, 242, 55, 204...

Chacun de ces octets est écrit en binaire, et on ne conserve que les 5 bits de poids fort (les 5 premiers) :

 73       254       3       88        253     242       55      204
01001... 11111... 00000... 01011... 11111... 11110... 00110... 11001...

Puis on colle tous les bits (0 et 1) obtenus et on reforme des paquets de 8 bits :

01001111 11000000 10111111 11111000 11011001
   79        192     191       248     217

La suite d'octets obtenue, qui peut être aussi longue que l'on veut, est utilisée comme clé (c'est d'ailleurs la clé utilisée dans l'exemple de chiffrement donné plus haut).

Nymphadora Tonks a intercepté un message chiffré de la sorte, et l'a communiqué au bureau des Aurors :

dQ6CkomuiT6Is/K25loITU7P7H6/pZNGxlaw7tN6UI+2O9+9QECx
R99FEBcJfNag97qhlnxpUxt5Bo57dgTKIdTS0ii5ZQqlJ0mXbkaN
jO3CK5FwRDXhgQ2kZ5/4Vg+mb4i6ZjMiQBWFmtSsmSXJ+7ZonCxq
Qvi60jgTREv+uKCvuodqfTAXLYRLn23lNpZvxEvlIFby64Z86F77
ZsDL6lFenTRTvtsvg6+mEDVaWhxVw61zuQNAA/EV/OveNVXU/wLY
qFZZHCwEKn4GRmrK7vKhtZE5YlMYaRfcd2YA2zKTnO1e

De son côté, Mondingus Fletcher a réussi à dérober le début de la clé qui a été utilisée pour chiffrer ce message :

52, 126, 240, 81, 33

Mais le bureau des Aurors ne connaît aucune des valeurs a, b et x employées pour chiffrer. Saurez-vous les aider ? Déchiffrez le message intercepté par Nymphadora, et pour valider le défi, donnez le lieu, le jour et l'heure à laquelle les Mangemorts sont convoqués (et rien de plus).

Type de retour
une chaîne de caractères de moins de 50 caractères
Entrées du problème
Pas de données d'entrée
Vous devez être connecté.e pour proposer une réponse au défi
Vous devez être connecté.e pour accéder aux forums.