lundi 2 juillet 2012

NDH 2k12 - Human rights hide some secrets

Cette fois-ci il s'agit d'une épreuve de crypto.

Description

On nous fournit 3 fichiers :
  • orig.txt qui contient un extrait de la déclaration des droits
  • crypted.txt qui contient la même chose mais chiffrée
  • flag qui contient un texte court (avec le flag) chiffré avec la même méthode de chiffrement
Il va donc falloir analyser les textes clair et chiffré pour déterminer le chiffrement utilisé et ensuite déchiffré le contenu du fichier flag.

Analyse des deux textes

Texte clair :

The General Assembly,
Proclaims this Universal Declaration of Human Rights as a common standard of achievement for all peoples and all nations, to the end that every individual and every organ of society, keeping this Declaration constantly in mind, shall strive by teaching and education to promote respect for these rights and freedoms and by progressive measures, national and international, to secure their universal and effective recognition and observance, both among the peoples of Member States themselves and among the peoples of territories under their jurisdiction.


Texte chiffré :

Tbd Gd4dftu A55dhiuq,
Pflaut9h5 jb95 U49xg5jih Dg3hi5imncl ck H74il Rnb9mj ij i dellec m7acgajg eb adnzk1klkc7 bej a44 fbf5lb7 3ek 3ll e3xufe7, xf xzb bek xz3x 9y972 hfbhyhbqdc dfb 9y972 57zdf 5n x5khnq6, cnnm45u qh41 Dnbegxgq4j5 bj51qg5qe6 lj 5ljn, q4kff qy1loz bs yzk94ljh kjn zzonbvc7m v7 xq7j7vu quyxunv h7q vluyu qclcov 97u 4yhhuxmv 97u nw 1yxlyhvve6h mh9o6v4o, xn2f1xnm nxh fx24vxn2f1xnm, 21 o4hsol 6fl5o s158lo2z7 z14 lcclh658l olhqeqjsjyq uql yh6c2wuq4c, hys5 u1yqf s5c vcvo1es vf Meq4e6 S8h8es 8jeqse1pes hyc hqovj wmf 2fo2qf8 o5 wfss7wos7f8 pvefs wmfx8 108xwfxepx2o.


On pense d'emblée à un alphabet de substitution contenant des chiffres et des lettres.
Néanmoins, lorsqu'on regarde les correspondances lettre à lettre dans le clair et le chiffré, on se rend compte qu'elles évoluent tout au long du texte. Par exemple, la lettre E dans le texte clair correspond à la lettre D au début du  texte chiffré et va correspondre successivement aux lettres ou chiffres suivants : G, K, B, 9, N, Z, U, H, 4, L, C, E et F.
Il doit probablement s'agir d'une méthode de chiffrement où l'alphabet de substitution change régulièrement (comme avec Enigma par exemple) : il faut donc trouver le critère de changement d'alphabet.


Après quelques essais, on remarque que le changement s'opère tous les 40 caractères (il faut bien tous les prendre en compte même le saut de ligne au début). On peut alors s'intéresser aux autres lettres pour comprendre comment les lettres sont redistribuées.


Si on observe l'évolution des lettres et chiffres correspondant aux différentes lettres du texte clair, on constate que l'alphabet de substitution est décalé d'une lettre tous les 40 caractères. Par exemple, lorsque E est chiffré en G (voir séquence mentionnée plus haut), D sera chiffré en D et F sera chiffré en K. Ensuite 40 caractères plus loin on aura E chiffré en K, D chiffré en G et F chiffré en B.


En fait, tout se passe comme si nos deux alphabets étaient sur des rouleaux mis côte à côte et que tous les 40 caractères, on tournait l'un des rouleau  d'un cran.


Du coup, il suffit de suivre les évolutions dans les correspondances entre les deux alphabets en prenant des lettres courantes vers le début, le milieu et la fin pour pouvoir reconstituer complètement l'alphabet de substitution initial (qui sera notre point de départ pour déchiffrer le flag).

Les chiffres ne sont pas utilisés dans le texte clair mais on peut légitimement supposé qu'ils sont mis juste après la lettre Z dans l'ordre 0123456789. De plus, il est à noter que les lettres majuscules ne faisaient pas parties du chiffrement, elles restent les mêmes d'un texte à l'autre.
Voici la correspondance de départ entre les 2 alphabets :

ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
TIA3DGKB9NZUH4LCEF5JM7X1QYVO26S8WP0R

Déchiffrement du flag

Voici le contenu du fichier flag :

Tbd gutk 95: 86ggop03pwrpp068g3oo6srotd8ddp3p 

En comptant les caractères, on remarque que le 40ème est le 8 situé à la fin dans 8ddp3p.
Cela signifie qu'il faudra déchiffrer la partie  ddp3p en utilisant la correspondance suivante :

 ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 IA3DGKB9NZUH4LCEF5JM7X1QYVO26S8WP0RT

 Au final, on obtient le texte suivant :

The flag is:  53ff178d76977835fd113491ae5dd6c6

Voilà on peut valider l'épreuve avec ce flag !

Liens
http://fr.wikipedia.org/wiki/Enigma_(machine)

Aucun commentaire:

Enregistrer un commentaire