Chiffre XOR

Le chiffrement XOR est une technique de chiffrement très basique mais efficace et facile à implémenter. Il est aujourd’hui utilisé dans plusieurs protocoles et algorithmes de chiffrement.

Table de vérité

A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0

Chiffrement

Pour l’ordinateur, chaque caractère d’un message ou d’une clé est représenté par un nombre entier sous forme binaire, c’est à dire une suite de 0 et de 1.

caractère code ASCII (décimale) binaire
A 65 01000001
B 66 01000010
C 67 01000011

Le chiffrement consiste à appliquer l’opération logique XOR (OU exclusif) bit à bit entre le message clair (plaintext) et la clé secrète (secret key) :

10101001 (plaintext)
10000010 (secret key)
------
00101011 (cyphertext)

Le déchiffrement consiste à appliquer l’opération logique XOR (OU exclusif) bit à bit entre le message chiffré clair (cyphertext) et la clé secrète (secret key) :

10101001 (cyphertext)
10000010 (secret key)
------
00101011 (plaintext)

Propriétés

En cryptographie, certaines propriétés du XOR sont intéressantes car elles peuvent nous permettre de retrouver la clé de chiffrement qui a servi à chiffrer un message.

a XOR b = c 
c XOR b = a 
c XOR a = b
message XOR key = cyphertext 
cyphertext XOR key  = message  
cyphertext XOR message  = key

Il suffit donc d’avoir 2 éléments pour trouver le 3ème

Remarques

Dans cette explication la clé (key) la même taille que le message à chiffrer. En revanche, que se passe t’il si la clé est plus petite que le message à chiffrer ?

10101011 (message)
101     (key)
-------
??????? (cyphertext)

Pour cela, on peut créer une pseudo-clé qui fera la longueur du texte à partir de la clé d’origine. La logique de la création de cette pseudo-clé peut varier en fonction des algorithmes.

L’une des logiques est de joindre par concaténation, plusieurs fois, la clé d’origine jusqu’à atteindre la taille du message :

101.......  (key)
101|101|10  (pseudo-key)

On peut ensuite chiffrer le message :

10101011 (message)
10110110 (pseudo-key)
-------
00011101 (cyphertext)