Le message de Vincent van Gogh

Ce bon vieux Vincent !

Ce défi est tiré de c0d1ngUP 2023

Au début des années 2000, U.N.I.T. a eu pour politique de numériser et chiffrer toutes ses archives, au cas où elles tomberaient en de mauvaises mains.

Voici la technique qu'ils utilisaient à l'époque :

  • le document est numérisé au format PNG (sans canal de transparence) ;
  • une clef de chiffrement est générée aléatoirement (on ne sait pas quelle est sa taille, ni où U.N.I.T. la stocke) ;
  • chaque composante de couleur (rouge, vert puis bleu) des pixels est chiffrée par XOR avec un octet de la clef ;
  • une fois tous les octets de la clef utilisés, ils sont tous recalculés par la formule (91*octet + 10) modulo 256. Pourquoi 91 et 10 ? L'histoire ne le dit pas.
  • et on continue l'opération jusqu'à la fin de l'image.

Voici un petit exemple pour expliciter. Prenons l'image suivante, de 3 pixels de large et de 2 pixels de haut (on l'a agrandie pour que ce soit lisible) :

Ok, les couleurs ne sont pas terribles, on n'a pas le talent de Van Gogh, justement !

Chiffrons cette image avec la clef (253, 233, 63, 34, 17).

  • la composante rouge du premier pixel (243) est XORée avec le premier octet de la clef (253), ce qui donne 14.
  • la composante verte du premier pixel (72) est XORée avec le deuxième octet de la clef (233), ce qui donne 161.
  • la composante bleue du premier pixel (155) est XORée avec le troisième octet de la clef (63), ce qui donne 164.
  • la composante rouge du deuxième pixel (2) est XORée avec le quatrième octet de la clef (34), ce qui donne 32.
  • la composante verte du deuxième pixel (49) est XORée avec le cinquième octet de la clef (17), ce qui donne 32.
  • À ce stade, tous les octets de la clef ont été utilisés. On applique alors le calcul (91*octet + 10) modulo 256 à tous ses octets, ce qui donne : (249, 221, 111, 32, 21).
  • la composante bleue du deuxième pixel (93) est XORée avec le premier octet de la clef (249), ce qui donne 164.
  • la composante rouge du troisième pixel (138) est XORée avec le deuxième octet de la clef (221), ce qui donne 87.
  • et ainsi de suite...

Voyons un exemple plus complexe ; prenons le logo de cette édition de c0d1ngup :

En le chiffrant à l'aide de la clef (25, 225, 34, 208, 113, 121, 164, 87), on obtient alors :

Pourquoi on vous parle de tout ça ? Le Docteur a mis la main sur un document archivé par U.N.I.T. Celui-ci a été chiffré avec la méthode décrite ci-dessus, à l'aide d'une clef dont on ne sait rien (pas même la taille).

Ce message provient de Vincent van Gogh, ce qui a deux implications. La première est que c'est probablement un message très important, comme lorsque Vincent a averti le Docteur de la menace de la Pandorica (no spoil 😉). La deuxième, c'est que le message comporte très certainement la signature habituelle du peintre :

À partir de cette signature, déchiffrez le message de Van Gogh, et validez en indiquant le lieu où Vincent situe la menace.

Type de retour
Une chaîne de 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.