Cryptanalyse des chiffres monoalphabétiques

  • Analyse statistique
  • Cryptanalyse statistique

    Un chiffre est dit monoalphabétique si toutes les occurences d'une même lettre sont codées de la même façon. Ces chiffres ont en commun une faiblesse majeure: la vulnérabilité aux attaques par analyse statistique. Une idée récurrente en cryptographie est de repérer des biais: par exemple si un texte est écrit en français, on sait qu'il contient plus de lettres e que de z, on peut alors retrouver la clef de chiffrement en analysant la statistique d'occurence des lettres dans le texte chiffré.

    Voici les tables de fréquence du français

    E 15,87% N 7,15% D 3,39% Q 1,06% H 0,77%
    A 9,42% R 6,46% M 3,24% G 1,04% Z 0,32%
    I 8,41% U 6,24% P 2,86% B 1,02% X 0,30%
    S 7,90% L 5,34% C 2,64% F 0,95% Y 0,24%
    T 7,26% O 5,14% V 2,15% J 0,89% K,W 0%

    et de l’anglais.

    E 12,56% I 7,24% D 3,99% P 1,91% V 1,00%
    T 9,15% S 6,59% C 3,18% W 1,89% K 0,63%
    A 8,08% R 6,42% U 2,79% G 1,80% X 0,21%
    O 7,47% H 5,27% M 2,60% B 1,67% J 0,14%
    N 7,38% L 4,04% F 2,17% Y 1,65% Q 0,09%
    Z 0,07%

    Télécharger le programme Cryptogram analyser le, améliorer. Ce programme travaille sur le fichier texte.txt qui est le texte en clair, le fichier de sortie texte-crypt.txt est le fichier crypté.

    Télécharger le programme stats.java . Que fait-il? Faites le interagir avec Cryptogram puis trouver la clef de chiffrement du texte suivant.

    mywjbhibjgyvgyiatirdbnrijgniomgntifgoybwvbgwyijywjyi oybjbmfymidgxywdgoaghigagnjhigmgntifgoybwvmgitimgnti fgoybwoyktijmgntifgoybwxyoaqgmgntifgoybwmboggjaygjgo yaqyaiwxgjntwvbgwtibmrgijgjgwyyijywjhibmrgijynyzyatw

    Télécharger le programme decrypt.java ; faites le interagir avec les programmes précédents. Essayer de décrypter le fichier francais-crypt.txt , en utilisant le programme mono.java

    Chiffrement polyalphabétique

    Les chiffrements polyalphabétiques sont une généralisation des systèms monoalphabétiques. Comme pour les monoalphabétiques, chaque symbole du texte clair est remplacé par un nouveau symbole dans le texte chiffré, mais cette fois-ci la table de substitution pour chaque caractère va dépendre de la position de celui-ci dans le texte.

    L’exemple le plus connu de système polyalphabétique est le système de Vigenère. Longtemps considéré incassable, il est extrêmement vulnérable aux attaques par analyse statistique: on trouve d’abord la longueur de la clef à l’aide de la méthode de Kasinski-Friedman, ensuite on considère les parties du texte clair qui correspondent à chacun des symboles de la clef et on les attaque par analyse statistique.

    Utiliser le programmme Vigenere.java pour décrypter le fichier vigenere.txt

    Codage de VIC

    L'exemple est tiré du site licensed under CC-BY-SA 4.0.

    Le chiffre VIC, utilisé par les espions russes pendant la guerre froide, est probablement le cryptosystème classique le plus avancé qui ait jamais été conçu. Avant la défection en 1957 de l’agent russe d’origine finnoise Reino Häyhänen, tous les efforts de la NSA pour le cryptanalyser avaient été infructueux.

    Échiquier à diffusion

    L’échiquier à diffusion est un raffinement du carré de Polybe qui sert à encoder un message en une suite de chiffres décimaux tout en réduisant les biais statistiques dus à l’usage des lettres les plus fréquentes.

    Un échiquier à diffusion est un tableau de 3 lignes et 10 colonnes. La première ligne contient les 8 lettres les plus fréquentes (RUSTINEA en français) et deux cases blanches dans un ordre arbitraire (éventuellement secret). Les deux autres lignes contiennent le reste de l’alphabet, plus deux caractères à usage spécial (par exemple le point et l’apostrophe).

    Voici un exemple d’échiquier à diffusion

    0 1 2 3 4 5 6 7 8 9
    T A R U I N E S
    2 B C D F G H J K L M
    8 O . P Q V W X Y Z

    Les deux lignes du bas portent le numéro des colonnes qui correspondent aux cases vides en première ligne.

    Pour coder (ou devrait-on dire chiffrer, lorsque l’échiquier est gardé secret) le message on élimine tous les espaces et les caractères qui n’apparaissent pas dans le tableau; ensuite chaque lettre du texte clair est transformée en:

    Pour faire un exemple concret, le texte “ATTAQUER TOUR EIFFEL A L’AUBE” est codé par le tableau ci-dessus comme suit:

    A T T A Q U E R T O U R E I F F E L A L A U B E
    1 0 0 1 83 4 7 3 0 80 4 3 7 5 23 23 7 28 1 28 85 1 4 20 7

    Ce qui donne le texte encodé: 100183473080437523237281288514207.

    Le décodage peut se faire de façon unique car on sait que chaque 2 introduit une lettre sur la deuxième ligne et chaque 8 introduit une lettre sur la troisième ligne.

    Masquage

    Après la phase d’encodage par l’échiquier à diffusion, le chiffre VIC applique un chiffrement par substitution ou par transposition au texte encodé.

    Dans notre version simplifiée, nous allons appliquer un chiffrement par substitution similaire au chiffre de Vigenère, la seule différence étant que l’alphabet contient 10 symboles plutôt que 26. Par exemple, en supposant que la clef secrète soit 836964, le texte chiffré est obtenu en additionnant cette clef au texte encodé modulo 10:

    encodé 1 0 0 1 8 4 4 7 3 0 8 1 4 3 7 5 2 3 2 3 7 2 8 1 2 8 8 6 1 4 2 0 7
    clef 8 3 6 9 6 4 8 3 6 9 6 4 8 3 6 9 6 4 8 3 6 9 6 4 8 3 6 9 6 4 8 3 6
    chiffré 9 3 6 0 4 8 2 0 9 9 4 5 2 6 3 4 8 7 0 6 3 1 4 5 0 1 4 5 7 8 0 3 3

    Le décodage se fait de façon analogue. Vous remarquerez que la cryptanalyse de ce texte est beaucoup plus dure que pour un simple Vigenère.

    Java

    Utiliser les programmes Vic.java et ChiffreVic.java pour crypter le fichier texte-min.txt; on pourra utiliser les clef clef-echiquier.txt et clef-vic.txt. Utiliser alors le programme freq10.java pour analyser les fréquences: que notez-vous et pouvez-vous l'expliquer?