Indice de coïncidence
L'indice de Coïncidence (IC) est la probabilité que deux lettres choisies aléatoirement dans un texte soient identiques. Il fut inventé par William Friedman et publié en 1920, dans l'article "The Index of Coincidence and its Applications in Cryptography", Riverbank Publications Number 22.
Pour calculer cet indice, soient:
n |
= |
nombre de lettres du texte |

William Friedman (1891-1969) |
n1 |
= |
nombre de A dans le texte |
n2 |
= |
nombre de B dans le texte |
n3 |
= |
nombre de C dans le texte |
|
... |
|
n26 |
= |
nombre de Z dans le texte |
La probabilité de tirer deux "A" parmi les n lettres d'un texte (clair ou crypté) est:
|
Pour calculer la probabilité de tirer deux lettres identiques, il faut faire la somme des 26 possibilités:
Voici quelques exemples d'indices calculés sur des textes contemporains dans différentes langues:
Langue |
allemand |
anglais |
espagnol |
esperanto |
français |
italien |
norvégien |
suédois |
IC |
0.072 |
0.065 |
0.074 |
0.069 |
0.074 |
0.075 |
0.073 |
0.071 |
Remarques importantes
- Pour un langage de 26 lettres où chaque lettre a la même fréquence (1/26), IC = 0.038 (vérifiez ce résultat avec la formule ci-dessus).
- Pour tout chiffre monoalphabétique, la distribution des fréquences est invariante, donc l'IC sera le même que pour le texte clair. Idem pour les chiffres de transposition.
- Donc, si on calcule l'IC d'un texte chiffré avec un chiffre monoalphabétique,
on devrait trouver un IC "proche" de 0.074 (en français). Si l'IC
est beaucoup plus petit (p. ex. 0.050), le chiffre est probablement polyalphabétique.
Calculateur de l'indice de coïncidence
L'indice de coïncidence peut servir à déterminer approximativement le nombre
d'alphabets utilisés dans un chiffre polyalphabétique (par exemple le chiffre
de Vigenère). En effet, l'IC théorique en fonction du nombre d'alphabets
est:
où N est le nombre de lettres du message, IClangue est l'indice pour la langue du cryptogramme (voir tableau) et m le nombre d'alphabets.
Exercices
- Calculez à la main l'indice de coïncidence du texte ci-dessous, puis vérifiez-le
avec la programme javascript ci-dessus:
- Parmi les trois textes ci-dessous, lesquels sont des substitutions polyalphabétiques
?
- USGVM VBHOX MGJBK JMKSS MVTYJ SPOWP FBNKD IOHNK UTFHO KCBQZ
ULWRE BOGOI VLNXM WCOMJ MGPZF GOIES MGDMP BMOUT PGMOJ PFRYS IRECH YQRTH
LAKXJ CHY
- DOLJG YHHFN USOZI IMKIY UPQZF UWIQH UPFIH PHLMS TLGIC YRRDR
KSSZW UVPHX BPWLP TPIEL JYFYU INHLW BBVWJ KLTMV PEUL
- MTPYB FPWPN STQQC POPNP DLCDZ TEOFY PDTXA WTNTE POPDL CXLYE
PTWPD ELWZC TRTYP OPMPL FNZFA OPDJD EPXPD AWFDN ZXAWT BFPD
- Vérifiez l'IC concernant l'espagnol (0.074) en utilisant le tableau
des fréquences d'apparition de lettres en espagnol.
Programmation
Ecrivez
un programme Python qui calcule l'indice de coïncidence d'un texte. Solution
Références
- Lewand Robert Edward, Cryptological
Mathematics, published by The Mathematical Association of America,
2000, pp. 86-101
- Sinkov Abraham, Elementary cryptanalysis, The American Association
of America, 1966, pp. 58-112
- Vidéo
à l'arrache: Indice de Coïncidence et Cryptologie, Professeur
Culture Précieuse, 2019