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).