Outil pour calculer l'indice de coincidence (IC) en cryptanalyse afin d'évaluer la probabilité de répétition des lettres du message chiffré.
Indice de Coïncidence - dCode
Catégorie(s) : Cryptanalyse
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
L'indice de coïncidence (IC ou IoC) est un indicateur utilisé en cryptanalyse qui permet d'évaluer la répartition globale des lettres dans un message chiffré pour un alphabet donné.
Un texte écrit en français a un indice de coïncidence de 0.0778. L'utilisation de certains chiffrements sur un message en français aura tendance à modifier cette valeur ce qui peut permettre de les reconnaitre. Voir l'outil de reconnaissance de chiffrement.
L'indice de coïncidence utilise la formule :
$$ IC = \sum_{i=A}^{i=Z} \frac{n_{i}(n_{i}-1)}{N(N-1)} $$
avec $ n_i $ le nombre de fois ou la lettre $ i $ apparait dans le message et $ N $ le nombre total de lettres.
Cet indice a probablement été inventé par William F. Friedman.
Pour un message chiffré donné, la valeur de l'IC permet de filtrer la liste de méthodes de chiffrement utilisées. C'est une technique de base en cryptanalyse.
Si l'indice de coincidence est grand (proche de $ 0.070 $), c'est à dire similaire à celui d'un message non chiffré, alors le message a probablement subi une transposition (lettres déplacées) ou substitution monoalphabetique (une même lettre ne peut être remplacée que par une seule autre).
Si l'indice de coincidence est faible (proche de $ 0.0385 $), c'est à dire similaire à une répartition aléatoire, alors le message a probablement subi un chiffrement polyalphabétique (une même lettre peut être remplacée par plusieurs autres).
Plus l'indice est faible, plus le nombre d'alphabets utilisés est grand.
Exemple : Le chiffre de Vigenère avec une clé entre 4 et 8 lettres aura un IC d'environ $ 0.045 \pm 0.005 $
Pour un texte non chiffré les index de coincidence sont
Français | 0.0778 | Anglais | 0.0667 |
---|---|---|---|
Allemand | 0.0762 | Espagnol | 0.0770 |
Italien | 0.0738 | Russe | 0.0529 |
Un texte ou chaque lettre a autant de probabilité d'apparaitre qu'une autre, l'IC est alors de $ 1/N $ (avec $ N $ le nombre de lettres de l'alphabet)
Exemple : $ IC = 0.0385 $ pour $ N=26 $
Dans le cas où plusieurs alphabets sont utilisés et que la taille de la clé détermine le nombre d'alphabets (comme pour le chiffre de Vigenere), en notant $ n $ le nombre total de lettres dans le message et $ m $ la taille de la clé, un nouvel indice de coincidence peut être calculé par la formule :
$$ IC = \frac{n-m}{m(n-1)}} \cdot IC_{\text{lang}}} + \frac{n(m-1)}{(n-1)m} \cdot 0.0385 $$
Exemples de codes dans les langages de programmations : // Python
def ic(self):
num = 0.0
den = 0.0
for val in self.count.values():
i = val
num += i * (i - 1)
den += i
if (den == 0.0):
return 0.0
else:
return num / ( den * (den - 1))
dCode se réserve la propriété du code source pour "Indice de Coïncidence". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Indice de Coïncidence", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les fonctions liées à "Indice de Coïncidence" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou les données, en téléchargement, script, ou les accès API à "Indice de Coïncidence" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Indice de Coïncidence" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Indice de Coïncidence sur dCode.fr [site web en ligne], consulté le 04/12/2024,