Cryptographie!

Le chiffre de Vernam, parfaitement sûr

Qu'est-ce qu'un chiffre parfaitement sûr?
  Un chiffre parfaitement sûr est un chiffre tel que, l'adversaire interceptant le message, même ayant à sa disposition une puissance de calcul infinie, ne peut pas retrouver la moindre information concernant le message clair à partir du message chiffré.

  Ceci peut se traduire très bien avec des probabilités. Si on intercepte le message crypté DSJMSZERT, on souhaite qu'avec un chiffre parfaitement sûr, il n'y ait pas plus de chances que le message clair soit ORDINATEUR, CAISSIERES ou DKIRJSMOTS. Tous les messages clairs possibles sont équiprobables!
Le chiffre de Vernam
  Un tel chiffre parfait existe : c'est Gilbert Vernam, ingénieur au laboratoire de recherche de la compagnie "American Telephone & Telegraph" qui l'a inventé et publié en 1926. Il peut être décrit simplement comme un chiffre de Vigenère, mais où la clé répond aux trois impératifs suivants :
  • elle est aussi longue que le texte à chiffrer;
  • elle est parfaitement aléatoire;
  • elle n'est utilisée que pour chiffrer un seul message, puis est immédiatement détruite.
C'est Claude Shannon, lui aussi chercheur dans les laboratoires de AT&T, qui prouva en 1949 le fait que ce chiffre est parfaitement sûr. La seule information dont on dispose si on intercepte le message chiffré est la longueur du message clair. De plus, tout chiffre parfaitement sûr est nécessairement une variante du chiffre de Vernam.

  De façon moderne, le chiffre de Vernam (on parle aussi de masque jetable, pour souligner le fait que la clé doit être à usage unique), est implémenté de la façon suivante. Le message est d'abord converti informatiquement en suites de bits, c'est-à-dire de 0 et de 1. On prend une clé (complètement aléatoire) composée elle aussi d'une suite de 0 et de 1, aussi longue que le message à chiffrer.

  On prend ensuite chaque bit du message clair et de la clé, et on en fait le ou exclusif. Rappelons que cette opération, que nous noterons $\oplus$, est définie par $$\begin{array}{rcl} 0\oplus 0&=&0\\ 0\oplus 1&=&1\\ 1\oplus 0&=&1\\ 1\oplus 1&=&0. \end{array}$$ Cette opération (qu'on peut voir comme l'addition en base 2, mais en oubliant la retenue), vérifie notamment les propriétés suivantes : $x\oplus x=0$ et $x\oplus 0=x$.

  Par exemple, si le message clair est 101110011, si la clé est 011101000, alors le message chiffré et 110011011, comme le montre le tableau suivant :

Message clair  1  0  1  1  1  0  0  1  1 
Clé  0  1  1  1  0  1  0  0  0 
Message chiffré  1  1  0  0  1  1  0  1  1 

  À la réception, celui qui reçoit le message fait la même opération à partir du message chiffré : il prend donc chaque bit du message chiffré et fait le ou exclusif avec le bit correspondant de la clé. Il retrouve le message initial, à cause des deux propriétés précédentes.
Oui, mais…
  Hélas, le chiffre de Vernam n'est pas la panacée. D'abord, il exige qu'une clé serve une seule fois. Si vous utilisez la même clé deux fois, alors on peut extraire beaucoup d'informations des messages chiffrés. En effet, si on envoie les deux messages $m_1$ et $m_2$ avec la même clé $k$, on obtient les cryptogrammes $c_1=m_1\oplus k$ et $c_2=m_2\oplus k$. Mais si on effectue $c_1\oplus c_2$, alors on obtient $$c_1\oplus c_2=m_1\oplus k\oplus k\oplus m_2=m_1\oplus m_2,$$ c'est-à-dire la somme des deux messages clairs. On peut alors obtenir beaucoup d'informations sur $m_1$ et $m_2$.

  Ensuite, le chiffre de Vernam exige des clés extrêmement longues, et une parfaite synchronisation des clés. L'échange des clés, qui doit être sécurisé, est donc difficile à réaliser. Enfin, les clés utilisées doivent être parfaitement aléatoires, ce qui n'est pas facile à garantir.

  C'est pourquoi ce chiffre n'est mis en oeuvre que dans des cas très particuliers. Il fut ainsi utilisé pour sécuriser le téléphone rouge, ligne directe entre la Maison Blanche et le Kremlin du temps de la guerre froide. Les clés circulaient dans les valises diplomatiques, transportées dans des avions bourrés d'agents secrets. Et on raconte que pour produire des clés aléatoires, les Soviétiques employaient des "lanceurs de dés" : leur travail consistait à lancer des dés toute la journée et à noter le résultat.

  Les systèmes de chiffrement symétriques utilisés dans la pratique cherchent à imiter le chiffrement de Vernam, en donnant le sentiment (l'illusion?) que le message chiffré est aléatoire. Bien sûr, il est impossible de fabriquer avec un logiciel quelque chose de complètement aléatoire, et ces systèmes sont tous moins performants que le chiffre de Vernam. Cependant ils sont bien plus pratiques à mettre en oeuvre et offrent souvent une sécurité suffisante pour les besoins.
Consulter aussi