From 0bb367c9b4ab966f1606eda59632c498d1f2e5a2 Mon Sep 17 00:00:00 2001 From: glenux Date: Thu, 30 Apr 2009 08:34:14 +0000 Subject: [PATCH] cryptaffinity: Improved documentation. git-svn-id: https://websvn.glenux.net/svn/Upoc/cryptaffinity/trunk@1333 eaee96b3-f302-0410-b096-c6cfd47f7835 --- doc/cryptafinity.css | 3 ++ doc/index.html | 76 +++++++++++++++++++++++++++++--------------- 2 files changed, 54 insertions(+), 25 deletions(-) diff --git a/doc/cryptafinity.css b/doc/cryptafinity.css index 62bfb2f..1094a2e 100644 --- a/doc/cryptafinity.css +++ b/doc/cryptafinity.css @@ -1,3 +1,4 @@ + /* Generated by CaScadeS, a stylesheet editor for Mozilla Composer */ p.code { border: 2px dashed rgb(153, 153, 153); @@ -9,6 +10,7 @@ font-family: monospace; } +@media screen { div.page { border: 2px dashed rgb(153, 153, 153); padding: 10px; top: 10px; @@ -25,6 +27,7 @@ body { background-color: rgb(51, 51, 51); } +} span.code { border: 1px dashed rgb(153, 153, 153); background-color: rgb(204, 204, 204); diff --git a/doc/index.html b/doc/index.html index 6bc99e6..c2c5071 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,6 +1,5 @@ - - + @@ -12,9 +11,8 @@ - MiniFTPc - - + + CryptAfinity @@ -60,6 +58,12 @@ CryptAfinity
  • Documentation
  • +
      +
    1. Code
    2. +
    3. Décodeur "Afine"
    4. +
    5. Décodeur "Vigenère"
    6. +
    + @@ -96,7 +100,7 @@ Auteurs

    CryptAfinity a été entièrement -réalisé par Glenn ROLLAND <glenux@fr.st> +réalisé par Glenn ROLLAND <glenux@fr.st> et Roland LAURÈS <shamox@mac.com> à l'occasion de travaux pratiques du cours de système du Master 2 Ingénierie Informatique - Systèmes, Réseaux et Internet.

    @@ -308,13 +312,13 @@ texte chiffré.

    5. Documentation

    -

    5.1. Code

    +

    5.1. Code

    Vous pouvez trouver la documentation du code de CryptAfinity dans le dossier doc/html de l'application, ou en suivant ce lien.

    -

    5.2. Principe du "décodeur Afine"

    +

    5.2. Principe du "décodeur Afine"

    On génère l'espace des clefs possibles pour l'alphabet donné en entrée:

    @@ -400,31 +404,53 @@ for (kLIt = keyList.begin(); kLIt != keyList.end(); kLIt++){
    }

    -

    5.3. Principe du "décodeur Vigenère"

    +

    5.3. Principe du "décodeur Vigenère"

    +
    On commence par faire récupérer les groupes de caratères qui se répètent dans le texte.
    +
    -Une fois obtenue plusieurs groupes de lettres, on regarde la distance -séparrant les deux premiers groupes (note d1) puis la distance -entre les deux suivant (d2). Le PGCD de d1 et d2, doit donner un +Une fois les groupes répétés de lettres de plus +grande longueur obtenus (dans l'ordre décroissant en fonction de +la longueur), on calcule la distance +séparant les deux premiers groupes (note d1) puis la distance +entre les deux suivant (d2).
    +On pose K = PGCD(d1, d2). Il est fortement probable que K soit un multiple de la longueur de la clef. L'hypothèse sous-jacente est que ces groupes de lettres sont issue du chiffrement des mêmes -bouts de mots avec les mêmes bouts de la clef. Si le PGCD = 1 on -peut raisonnablement supposer que ce n'est pas le cas.
    +bouts de mots avec les mêmes bouts de la clef. Si le K = 1 on +peut raisonnablement supposer que ce n'est pas le cas, et qu'il n'y a pas de répétitions.
    +
    L'étape suivante consiste à faire une analyse de -fréquence en découpant le texte en un nombre de colonne -correspondant au pgcd précédemment calculé. On -tire de cette analyse de fréquence, un ordre de lettre par -importance. Puis en fonction de données statistiques -préalables correspondant au contexte connu à prioris du -texte clair que l'on veut décrypter, on essaie de faire -correspondre les lettres les plus souvent vu dans le texte avec le -modèle de fréquence.
    +fréquence en découpant le texte en K colonnes. On +classe ensuite les lettres apparaissant dans les colonnes en fonction +de leur nombre d'apparitions.
    +Dans un monde utopique, il suffirait de calculer la distance entre la +lettre apparaissant le plus souvent dans la colonne, et celle +apparaissant le plus souvent dans le langage attendu pour le texte +clair (l'anglais en l'occurrence).
    +Cependant il arrive fréquemment que l'ordre de lettre soit +légèrement changé par rapport au résultat +attendu. Dans le programme, on calcule donc pour chaque colonne les +distances entre les X lettres les plus fréquentes dans la +colonne et la lettre la plus fréquente dans le langage.
    +On génère ensuite un espace de X ^ K clefs a partir des +combinaisons de ces différents décalages obtenus sur +chaque colonne.

    -Ceci nous donne un ensemble de clef (réduit à un ou pas), dans lequel se trouve normalement la bonne clef.
    +Enfin, on décode ensuite le texte avec chacune des clef +générées, et en fonction de données +statistiques +relative à notre connaissance préalable du texte et d'une +petite marge d'erreur, on filtre les texte déchiffrés.
    +(Exemple: les 9 lettres les plus fréquentes représentent 70% du texte, et on une marge de +/- 4%).
    +En jouant sur la marge d'erreur, on laisse passer plus ou moins de +textes déchiffrés, parmi lesquels devrait se trouver le +texte clair attendu.
    + +
    - - +