Méthodes de chiffrement Moderne
Chiffre XOR
Chiffrement symétrique par OU exclusif bit-à-bit entre le plaintext et une clé. Brique élémentaire de toute la cryptographie moderne — involutif, rapide, parfait avec une clé aléatoire (One-Time Pad) mais fragile avec une clé réutilisée.
- Famille :
- Moderne
- Difficulté :
- Intermédiaire
- Époque :
- Années 1950-70, informatique naissante
Aussi appelé : OU exclusif · XOR cipher · bitwise XOR
Le chiffre XOR est la forme la plus élémentaire de chiffrement symétrique par flux. Il applique l’opération OU exclusif (souvent notée ⊕) bit à bit entre le plaintext et une clé. Malgré sa simplicité apparente, il constitue la brique fondamentale de toute la cryptographie symétrique moderne : AES, ChaCha20 et l’essentiel des chiffres de flux actuels reposent, à leur dernière étape, sur un XOR entre une clé pseudo-aléatoire et le message.
Principe
L’opération XOR
L’OU exclusif entre deux bits est défini par :
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0
Autrement dit, il vaut 1 si et seulement si les deux bits diffèrent. Cette opération a deux propriétés décisives en cryptographie :
- Involutive :
a ⊕ b ⊕ b = a. Chiffrer et déchiffrer sont donc la même opération. - Équitable : si la clé est uniformément aléatoire, chaque bit du ciphertext est aléatoirement 0 ou 1 avec probabilité 1/2 — indépendamment du plaintext.
Application au texte
Pour un plaintext de n octets et une clé de m octets, le ciphertext est :
cipher[i] = plain[i] ⊕ key[i mod m] pour i = 0, 1, …, n-1
Si la clé est plus courte que le plaintext, elle est cycliquement répétée.
Exemple
Plaintext : CIPHE (5 octets ASCII = 5 × 8 = 40 bits)
Clé : LOCK (4 octets, répétée)
Plaintext : C I P H E
ASCII : 0x43 0x49 0x50 0x48 0x45
Binaire : 01000011 01001001 01010000 01001000 01000101
Clé : L O C K L
ASCII : 0x4C 0x4F 0x43 0x4B 0x4C
Binaire : 01001100 01001111 01000011 01001011 01001100
XOR : 00001111 00000110 00010011 00000011 00001001
Hexa : 0x0F 0x06 0x13 0x03 0x09
Ciphertext (hexa) : 0F 06 13 03 09 — complètement illisible à l’œil, alors qu’une seule opération suffit à le reconstruire.
Forces et faiblesses
Forces
- Rapidité maximale — une instruction processeur unique (
XOR reg1, reg2) par octet. - Aucune perte : involutive et réversible à l’identique.
- Théoriquement parfait avec une clé aléatoire de même taille que le message (One-Time Pad) : sécurité absolue prouvée par Shannon en 1949.
Faiblesses
- Avec une clé courte et répétée, le chiffre est trivialement cassable :
- On devine la longueur
mde la clé (coïncidences, tests de Kasiski, indice d’Friedman). - On sépare le ciphertext en
msous-séquences prises toutes lesmpositions. - Chaque sous-séquence est alors chiffrée avec un seul octet de clé, réductible à un Vigenère-binaire ou à une analyse de fréquence octet par octet.
- On devine la longueur
- Réutilisation de clé : deux plaintexts
P1etP2chiffrés avec la même cléKproduisentC1 ⊕ C2 = P1 ⊕ P2— la clé s’annule, et on retrouve le XOR des deux plaintexts, exploitable par cribs. - Sans authentification, un attaquant peut modifier prévisiblement le plaintext : flip un bit du ciphertext → flip le même bit du plaintext, sans détection.
XOR dans la cryptographie moderne
- One-Time Pad (Vernam, 1917) — XOR avec une clé vraiment aléatoire, utilisée une seule fois, de longueur ≥ message. Prouvé incassable par Shannon.
- Chiffres de flux modernes (RC4, ChaCha20, Salsa20) — génèrent pseudo-aléatoirement un flux de bits à partir d’une clé courte, puis XOR avec le plaintext.
- AES en mode CTR — génère un flux par chiffrement compteur, XOR final avec plaintext.
- Masquage de canaux cachés — XOR entre données sensibles et bruit pour empêcher les attaques par canaux auxiliaires.
Outils d’attaque classiques
- Index de coïncidence — détecte la longueur de la clé dans un XOR cyclique.
- Cribs connus — si on connaît une portion de plaintext (
HTTP/1.1,<html>…), on peut extraire directement les octets de clé correspondants. - Analyse de fréquence octet par octet — après avoir séparé le ciphertext en colonnes de même position de clé, chaque colonne est un Vigenère mono-alphabétique.
Dans CipherChronicle
Le chiffre XOR sert de pont conceptuel entre la cryptographie classique et la cryptographie moderne. Les grilles associées peuvent introduire les manipulations bit à bit (en hexadécimal), puis glisser vers le One-Time Pad — qui est exactement la même chose, à ceci près que la clé est aléatoire et jetable.
Grille
- 1
Suite d'octets hexadécimaux
Vingt chiffres hexa, lus par paires — chaque paire représente un octet (8 bits).
- 2
Reconnaissance du motif
Des octets apparemment arbitraires, avec des répétitions (0x00, 0x03) signalant un XOR à clé courte.
- 3
Hypothèse : XOR répété avec une clé courte (4 octets)
Les octets nuls indiquent que le plaintext contient des caractères égaux à la clé à ces positions.
- 4
Application du XOR inverse
XOR est involutif : ciphertext ⊕ clé = plaintext. On recalcule chaque octet avec la clé supposée.
- 5
Message révélé
Les dix premiers octets se lisent CIPHERCHRO, ancrage du plaintext.