Chiffrement affine

Chiffrer :

Le chiffre affine est un chiffrement par substitution monoalphabétique.
L’idée est d’utiliser comme fonction de chiffrement une fonction affine du type :

  • C(x) = ax + b

a et b (nombres entiers) sont des constantes,  où x est le rang de la lettre de base et C(x) le nombre de la lettre chiffrée, selon le tableau ci-dessous :

Lettre 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
Nombre 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

Évidemment, pour que la lettre chiffrée C(x) soit encore un nombre compris entre 0 et 25 conformément au tableau ci-dessus, on travaillera modulo nn = 26. a et b sont deux nombres entiers inférieurs à n.
La vraie formule est donc C(x) ≡ (ax + b) (mod 26).

≡ signifie « est congru à ». On dit que a ≡ b modulo m si m divise a – b.

Lorsque a = 1, nous retrouvons le chiffre de César et b en représente le décalage.
Nous remarquerons également que si b = 0, alors « A » est toujours chiffré « A ».
Toutes les valeurs de a  ne sont pas autorisées pour le chiffrement affine. Imaginons en effet que a = 2  et b = 3  :

  • la lettre « A » est remplacée par 0, chiffrée en 2 × 0 + 3 = 3, c’est-à-dire que « A » est chiffrée par « D ».
  • la lettre « N » est remplacée par 13, chiffrée en 2 × 13 + 3 = 29, dont le reste dans la division euclidienne par 26 est 3. Donc « N » est également chiffré par « D ».

Ainsi, deux lettres sont chiffrées de la même façon. Par conséquent si on obtient un « D » dans le message chiffré, on ne pourra pas savoir s’il correspond à un « A » ou à un « N ». Donc la valeur a = 2 ne convient pas. Il faut donc que le plus grand commun diviseur de a et n soit 1. Donc il n’existe que 12 entiers compris entre 0 et 26 et premiers avec 26 (1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 et 25) que nous pouvons attribuer à a.

 

Déchiffrer :

Le déchiffrement nécessite de connaître les 2 coefficients a et b. Il faut tout d’abord vérifier que le pgcd(a,n) est égal à 1. S’il n’est pas égal à 1, le message est indéchiffrable, comme expliqué ci-dessus.

Pour déchiffrer le message il faut trouver la fonction inverse de C(x) ≡ (ax + b) ≡ y (mod n).

Donc ax ≡ y – b (mod n)

Nous cherchons maintenant à isoler x. Pour cela, nous devons chercher une valeur a’ qui soit l’inverse de a(mod n). Donc aa’ ≡ 1 (mod n)

Donc  a’ax ≡ a’ × (y – b)(mod n).

Nous avons donc notre fonction inverse permettant le déchiffrement qui est x ≡ a’ × (y – b) (mod n).

 

Décrypter :

Si l’on sait qu’un code affine a été utilisé, on peut casser le code par force brute en essayant toutes les clés. En effet, si l’alphabet fait 26 caractères, alors il n’existe que 12 entiers compris entre 0 et 26 et premiers avec 26. Il n’existe donc que 12 × 26 = 312 clés de chiffrement possible, ce qui à l’ère de l’informatique est presque négligeable.

À l’aide de l’analyse de fréquence, nous pouvons  également déchiffrer ce type de chiffrement.

Quiz - Chiffrement affine

Quiz sur le chiffrement affine

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.