Le chiffrement infaillible existe

Vive le masque jetable
Internet 6 min
Le chiffrement infaillible existe
Crédits : D3Damon/iStock

Quand on parle de chiffrement la question de le « casser » arrive généralement sur le tapis. Saviez-vous qu'il existe un (et un seul) système infaillible : le chiffre de Vernam. Il n'a rien de nouveau puisqu'il existe depuis des années et était notamment utilisé pour le fameux téléphone rouge entre Russie et Etats-Unis.

Comme tout le monde, vous vous êtes toujours demandé comment lancer un missile nucléaire en toute sécurité ou insulter le dirigeant d’en face sans que les Russes, les Chinois ou les Américains ne viennent perturber vos communications en changeant les cibles à l’insu de votre plein gré ou modifiant la teneur de l’insulte.

Plus sérieusement, vous vous êtes plus probablement demandé s’il existait un moyen de chiffrement infaillible et infalsifiable permettant la transmission d’un message de façon vraiment confidentielle ? La réponse est oui : le masque jetable est la meilleure des solutions, et c’est même la seule. Nous ne parlons pas ici de la covid mais du chiffre de Vernam. 

Face à la révolution promise des machines quantiques...

Malgré de lourds inconvénients de mise en œuvre, cette solution a été utilisée de nombreuses années pour les échanges les plus confidentiels car, contrairement aux affirmations de mes amis du marketing (que j’adore évidemment), il s’agit bel et bien de la seule solution dont on peut garantir la sécurité.

En effet, on a prouvé mathématiquement que le chiffrement asymétrique à base d’entiers premiers serait cassé par des machines quantiques (si elles sont un jour capables d’implémenter l’algorithme de Schor et de factoriser rapidement des nombres entiers de grande taille).

Le chiffrement symétrique à base de clé secrète semble pour l’instant plus résistant aux petits atomes (quoique) mais il reste théoriquement attaquable par brute-force et même un peu plus facilement avec quelques méthodes d’amélioration dont les cryptanalystes ont le secret.

... le chiffre de Vernam reste inattaquable

Il est donc conceptuellement attaquable, même si pratiquement on ne disposera probablement jamais de la puissance de calcul nécessaire pour l’AES avec une clé de 256 bits, mais cela reste donc théoriquement possible. 

Le chiffre de Vernam, lui, présente cette caractéristique unique d’être inattaquable. Nous en avions d'ailleurs parlé dans notre premier magazine (le #4 est en cours de financement sur Ulule). Même la force brute (tester toutes les combinaisons possibles) ne sert à rien, nous allons vous montrer pourquoi.

Les principes du masque

Un chiffre de Vernam (ou masque jetable, one-time pad en anglais) est constitué d’une très grande suite de lettres choisies totalement au hasard. Le hasard est un élément essentiel en cryptographie : il doit être le plus parfait possible car le moindre biais ou élément de prévisibilité peut affaiblir considérablement la force du chiffrement (voire l’annuler).  

En pratique, il faut que cette suite de lettres soit au moins aussi longue que le message à chiffrer (rappel : on ne dit pas crypter). Chaque caractère est utilisé une fois et une seule : c’est pour cela que cette suite de lettres doit être au moins aussi longue que le message à chiffrer.

La plus complexe et la plus délicate des tâches sera de faire parvenir à son correspondant cette suite, qui doit donc être créée en deux exemplaires, un pour chaque correspondant, et là on rentre dans le domaine de la sécurité physique (ou sûreté).

Pour éviter de continuels échanges de masques jetables, qui doivent donc se faire physiquement et qui sont donc sources de risques, il est fréquent d’envoyer un masque assez long, qui sera utilisé jusqu’à épuisement.

Ainsi, s’il comporte 5 000 caractères, il pourra chiffrer 5 000 caractères de messages. Un premier message de 100 caractères utilisera les 100 premiers caractères du masque, un deuxième message de 80 caractères les 80 suivants, etc.  

En pratique, pour chiffrer une lettre, on fait la somme avec la lettre correspondante dans le masque, modulo 26, et c’est tout ! Pour déchiffrer, on fait l’opération inverse : on soustrait. 

Un exemple 

On part d’un message de 4 caractères, "VRAI". Le caractère A correspond à 0, B à 1, etc. Pour le masque, on prend "YNPQ".  

chiffrement vernam

Le mot "VRAI" sera donc chiffré par "TEPY". Imaginons que je fasse maintenant de la force brute et que je teste (au hasard) le masque "OEVB". 

chiffrement vernam

Si je prends le vrai message chiffré "TEPY" mais que j’utilise une mauvaise clé "OEVB", alors je déchiffre le message comme étant "FAUX" !

En conclusion, si vous testez toutes les combinaisons de 4 lettres pour le masque, vous lirez… toutes les combinaisons de 4 lettres possibles en sortie, avec parfois l’inverse du message initial, sans aucune possibilité de savoir s’il s’agit du message initial ou pas : seule la connaissance du masque utilisé vous donnera le bon message en sortie.  

Pour vérifier tout ça, en Python très basique : 

chiffrement vernam

Remarquez au passage l’énorme complexité du programme de chiffrement / déchiffrement. Pas besoin d’un ordinateur quantique pour cela.

En pratique, sur des fichiers informatiques, on ferait plutôt du XOR sur le message codé en binaire (tout comme la clé), mais le principe restera le même.

Donc le masque est parfait, mais avec de fortes contraintes : 

  • la clé doit être plus grande que le message (pas très pratique) ; 
  • les lettres doivent être choisies avec un générateur d’aléas « parfait »  ; 
  • on ne doit jamais réutiliser le masque (ou une partie du masque)  ;
  • la transmission du masque et son traçage (qui le détient, qui y a accès) sont des points sensibles mais relevant de la sécurité physique. 

Pourquoi je ne peux pas réutiliser la clé ? 

Vu la difficulté de transmission de la clé, on est vite tenté de réutiliser des parties de celle-ci. Or cette pratique est désastreuse : toute la sécurité du procédé vient du fait qu’il n’existe aucun lien entre le message et la clé.

Or réutiliser la clé revient à la relier aux messages, donnant ainsi des indications (au moins) sur une partie de la clé.  

Téléphone rouge 

On l’a compris, ce chiffrement est le seul qui permette des conversations réellement secrètes. Fort logiquement, on l’a utilisé pour le fameux téléphone rouge entre Washington et Moscou, en sachant que ce téléphone était en réalité un telex (terminal de transmission de texte) chiffré par ce procédé. Quant aux clés, elles voyageaient par voie physique, probablement par avion ou par valise diplomatique, loin de tous les regards.  

La confidentialité est donc parfaite, mais avec des contraintes telles qu’en pratique le chiffre de Vernam est difficile à utiliser, particulièrement en informatique où la transmission de la clé ne peut pas passer par un canal numérique.  

Vous n'avez pas encore de notification

Page d'accueil
Options d'affichage
Abonné
Actualités
Abonné
Des thèmes sont disponibles :
Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !