Chiffre de Hill

De testwiki
Aller à la navigation Aller à la recherche

En cryptographie symétrique, le chiffre de Hill est un modèle simple d'extension du chiffrement affine à un bloc. Ce système étudié par Lester S. Hill[1], utilise les propriétés de l'arithmétique modulaire et des matrices.

Lester Sanders Hill (1891-1961)

Il consiste à chiffrer le message en substituant les lettres du message, non plus lettre à lettre, mais par groupe de lettres. Il permet ainsi de rendre plus difficile le cassage du code par observation des fréquences.

Lester S. Hill a aussi conçu une machine capable de réaliser mécaniquement un tel codage[2].

Machine de Hill (1929)

Principe

Chaque caractère est d'abord codé par un nombre compris entre 0 et n – 1 (son rang dans l'alphabet diminué de 1 ou son code ASCII diminué de 32). Les caractères sont alors regroupés par blocs de p caractères formant un certain nombre de vecteurs X=(x1,x2,,xp). Les nombres xi étant compris entre 0 et n – 1, on peut les considérer comme des éléments de /n et X est alors un élément de (/n)p.

On a construit au préalable une matrice p × p d'entiers : A. Le bloc X est alors chiffré par le bloc Y = AX, le produit s'effectuant modulo n.

Pour déchiffrer le message, il s'agit d'inverser la matrice A modulo n. Cela peut se faire si le déterminant de cette matrice possède un inverse modulo n (c'est-à-dire, d'après le théorème de Bachet-Bézout, si det(A) est premier avec n).

En effet, le produit de A et de la transposée de sa comatrice donne Modèle:Retrait (où Ip désigne la matrice identité de taille p) donc s'il existe un entier k tel que

k×det(A)1(modn)

alors, en notant B n'importe quelle matrice congrue modulo n à k Modèle:Expcom(A), on aura

ABBAIp(modn),

soit encore

Y=AXX=BY.

Illustration sur un exemple simple

On imagine dans cette section que chaque lettre est codée par son rang dans l'alphabet diminué de 1 et que le chiffrement s'effectue par blocs de 2 lettres. Ici n = 26 et p = 2.

Et l'on cherche à chiffrer le message suivant : TEXTEACRYPTER en utilisant une matrice A dont le déterminant est premier avec 26.

Pour construire une telle matrice, il suffit de choisir trois entiers a, b, c au hasard mais tels que a soit premier avec 26, ce qui permet de choisir le dernier terme d tel que ad – bc soit inversible modulo 26[3]. Pour la suite on prendra

A=(35617)

dont le déterminant est 21. Comme 5 × 21 = 105 ≡ 1 (mod 26), 5 est un inverse de det(A) modulo 26.

Chiffrement

On remplace chaque lettre par son rang à l'aide du tableau suivant :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Puis on code le message

TEXTEACRYPTER→ 19 ; 4 ; 23 ; 19 ; 4 ; 0 ; 2 ; 17 ; 24 ; 15 ; 19 ; 4 ; 17

On regroupe les lettres par paires créant ainsi 7 vecteurs de dimension deux, la dernière paire étant complétée arbitrairement :

X1=(19;4);X2=(23;19);X3=(4;0);X4=(2;17);X5=(24;15);X6=(19;4);X7=(17;6).

On multiplie ensuite ces vecteurs par la matrice A en travaillant sur des congruences modulo 26 :

Y1=(35617)(194)=(250) etc.

On obtient alors 7 vecteurs, soit 14 lettres :

(25 ; 0) ; (8;19) ; (12 ; 24) ; (13 ; 15) ; (17 ; 9) ; (25 ; 0) ; (3 ; 22)
ZAITMYNPRJZADW.

Déchiffrement

Il faut inverser la matrice A. Il suffit de prendre la transposée de sa comatrice, c'est-à-dire

tcomA=(17563)

et la multiplier (modulo 26) par un inverse modulaire du déterminant de A c'est-à-dire par 5 (cf. ci-dessus) :

B=(712215).

Connaissant les couples Y, il suffit de les multiplier (modulo 26) par la matrice B pour retrouver les couples X et réussir à déchiffrer le message.

Cryptanalyse

Le cassage par force brute nécessiterait de tester toutes les matrices carrées inversibles soit (221)(222)(1321)(13213)=157248 matrices[4] dans les cas de matrices d'ordre 2 modulo 26. Ce nombre augmente considérablement si l'on décide de travailler avec des matrices 3 × 3 ou 4 × 4.

L'autre système consiste à travailler sur les fréquences d'apparition de blocs de lettres.

Dans l'exemple précédent, la paire ZA apparait 2 fois ce qui la classe parmi les paires les plus fréquentes qui sont ES, DE, LE, EN, RE, NT, ON, TE. Si l'on arrive à déterminer le chiffrement de 2 paires de lettres, on peut sous certaines conditions retrouver la matrice de codage A.

En effet, si l'on suppose connu le fait que (x1;x2) est codé par (y1;y2) et (x3;x4) est codé par (y3;y4) alors on peut écrire l'égalité matricielle suivante :

(y1y3y2y4)=A(x1x3x2x4).

Si la seconde matrice est inversible, c'est-à-dire si x1x4x2x3 est premier avec 26, alors on peut déterminer A par

A=(y1y3y2y4)(x1x3x2x4)1.

Si l'on travaille avec des blocs de taille p, il faut connaitre le chiffrement de p blocs pour arriver à déterminer la matrice. Encore faut-il que ces blocs constituent une matrice inversible.

Sources

Notes et références

Modèle:Références

Modèle:Palette Modèle:Portail

  1. Modèle:En Lester S. Hill, « Concerning certain linear transformation apparatus of cryptography », American Mathematical Monthly, vol. 38, 1931, Modèle:P..
  2. Modèle:En Copie du dépôt de brevet.
  3. Ou plus généralement : de choisir a et b tels que PGCD(a, b, 26) = 1, puis u, v tels que au – bv ≡ 1 (mod 26), et de poser d = mu, c = mv pour un entier m premier avec 26.
  4. Selon cet exposé d'introduction à la cryptographie, université Lyon 1.