Un masque jetable douteux

(pensez à profiter des blagues sur les cartes)

Ce défi est tiré de c0d1ngUP 2022

Pour transmettre des cartes à ses acolytes des légions du M.A.L, Dr Boum utilise une technique cryptographique que vous espérez douteuse.

Il semble s'agir de la méthode du masque jetable, réputée inviolable si on l'utilise correctement. Mais Dr. Boum l'a-t-il utilisée correctement ?

Les cartes sont représentées sous formes d'images, dans des fichiers au format PNG, comme dans l'illustration de ce défi.

Pour chiffrer cette carte, une clé aléatoire est choisie, puis on applique l'opération XOR entre chaque octet de la clef et du fichier PNG pour donner le fichier chiffré.

Par exemple, si le fichier contient les octets (ici notés en décimal)

81, 210, 41, 7, 170, 49, 42, 53, 2, 122

et que la clé est constituée de la série d'octets :

51, 56, 111, 127, 139, 1, 207, 211, 245, 107

alors le chiffrement donnera :

98, 234, 70, 120, 33, 48, 229, 230, 247, 17

Pour déchiffrer, il suffit de procéder en sens inverse (appliquer la clé sur le chiffré redonne le clair).

La méthode du masque jetable impose, entre autres, que la clé soit aléatoire, aussi longue que le message au moins, et jamais réutilisée, ce qui est difficile en pratique.

Dr. Boum est toutefois très fier de la technique qu'il vient de mettre au point : il se base sur la date et l'horaire actuels, calcule des condensés sha512 et les utilise pour dériver une clé. Cette clé n'est pas toujours assez longue, mais elle est quand même très longue, et il la répète un assez petit nombre de fois pour qu'à son avis, la sécurité du système ne soit pas mise en péril.

Pour générer cette clé, il lui suffit de faire les opérations suivantes :

  • écrire sur 2 chiffres le numéro du jour du mois entre 01 et 31
  • écrire sur 2 chiffres l'heure entre 00 et 23
  • écrire sur 2 chiffres le nombre de minutes entre 00 et 59
  • écrire sur 2 chiffres le nombre de secondes entre 00 et 59
  • calculer les condensés sha512 de chacune des 4 séries de 2 caractères
  • entrelacer ces condensés, en prenant un octet du condensé du jour, puis un octet du condensé des heures, puis un octet du condensé des minutes puis un octet du condensé des secondes, etc.

Par exemple, si la clé est générée le 19 mars 2022 à 12:03:56, alors :

  • on utilise les quatre chaines 19, 12, 03 et 56
  • leur condensés (ici notés en hexadécimal) sont :
    • 8d89aa701de5a35b24cfadbd2088986ae13...ca1f7023e89bee683c1dbb2134a984d0
    • 5aadb45520dcd8726b2822a7a78bb53d794...66163ed1327e82e8b6757d1932113cb8
    • 081353b00607b812ca63641b911da8f4a5d...2e66d6460641b62c1301d4e80f166f82
    • 704e306889b432078eba650de3c8931f865...81372596d03bb21d72aedbbd14a747d7
  • on les entrelace pour obtenir : 8d5a087089ad134eaab453307055b0681d200689e5dc07b4a3d8b8325b721207246b...
  • ce qui correspond aux octets : 141, 90, 8, 112, 137, 173, 19, 78, 170, 180, 83, ...

On obtient ainsi une séquence pseudo-aléatoire qui constitue la clé, et qui est répétée le nombre de fois nécessaires pour être au moins aussi longue que le fichier à chiffrer.

Un ensemble de cartes a été chiffré de cette manière à des jours et horaires différents (donc avec des clés différentes), Vous avez pu récupérer une archive contenant tous ces fichiers chiffrés, mais les horodatages des fichiers semblent avoir été falsifiés, et vous ne pouvez pas utiliser cette information.

Décryptez néanmoins les images des cartes de Dr. Boum, et relevez les lettres présentes en haut à gauche de chaque carte pour former le mot qui vous permettra de valider ce défi.

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.