Aller au contenu principal
CipherChronicle

Méthodes de chiffrement Moderne

Chiffre 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.

Comment fonctionne Chiffre XOR ?

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 :

  1. Involutive : a ⊕ b ⊕ b = a. Chiffrer et déchiffrer sont donc la même opération.
  2. É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.

Quelles sont les faiblesses de Chiffre XOR ?

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 :
    1. On devine la longueur m de la clé (coïncidences, tests de Kasiski, indice d’Friedman).
    2. On sépare le ciphertext en m sous-séquences prises toutes les m positions.
    3. 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.
  • Réutilisation de clé : deux plaintexts P1 et P2 chiffrés avec la même clé K produisent C1 ⊕ 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

0
F
0
6
1
3
0
3
0
9
1
D
0
0
0
3
1
E
0
0
Q
R
S
T
U
CléK = CIPHER (clé répétée XOR, sortie hexadécimale)
  1. 1

    Suite d'octets hexadécimaux

    Vingt chiffres hexa, lus par paires — chaque paire représente un octet (8 bits).

  2. 2

    Reconnaissance du motif

    Des octets apparemment arbitraires, avec des répétitions (0x00, 0x03) signalant un XOR à clé courte.

  3. 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. 4

    Application du XOR inverse

    XOR est involutif : ciphertext ⊕ clé = plaintext. On recalcule chaque octet avec la clé supposée.

  5. 5

    Message révélé

    Les dix premiers octets se lisent CIPHERCHRO, ancrage du plaintext.