- Masque jetable
-
Le masque jetable, également appelé chiffre de Vernam est un algorithme de cryptographie en décalage circulaire inventé par Gilbert Vernam (en) en 1917 et perfectionné par Joseph Mauborgne (en), qui rajouta la notion de clé aléatoire. Cependant, le magazine Sciences et Avenir de septembre 2011, p.27, indique que «dès 1882, le banquier américain Frank Miller en avait posé les bases». Bien que simple, facile et rapide, tant pour le codage que pour le décodage, ce chiffrement est le seul qui soit théoriquement impossible à casser, même s'il présente d'importantes difficultés de mise en œuvre pratique.
Sommaire
Principe
Le chiffrement par la méthode du masque jetable consiste à combiner le message en clair avec une clé présentant les caractéristiques très particulières suivantes :
- La clé doit être une suite de caractères au moins aussi longue que le message à chiffrer.
- Les caractères composant la clé doivent être choisis de façon totalement aléatoire.
- Chaque clé, ou « masque », ne doit être utilisée qu'une seule fois (d'où le nom de masque jetable).
La méthode de combinaison entre le clair et la clé est simple et sera décrite ci-dessous.
L'intérêt considérable de cette méthode de chiffrement, c'est que si les trois règles ci-dessus sont respectées strictement, le système offre une sécurité théorique absolue, comme l'a prouvé Claude Shannon en 1949[1].
L'argument théorique est le suivant, dans son principe : si on ne connaît que le texte chiffré, et que toutes les clés sont équiprobables alors tous les textes clairs sont possibles et avec la même probabilité puisqu'il y a bijection, une fois le chiffré fixé, entre clés et textes clairs. Même une attaque par force brute aidée par la connaissance des caractéristiques statistiques du langage utilisé[2] ne donnera aucune information.
Ce type d'impossibilité, appelé sécurité sémantique, ne repose pas sur la difficulté du calcul, comme c'est le cas avec les autres systèmes de chiffrement en usage. Autrement dit, le système du masque jetable est inconditionnellement sûr.
En pratique, la méthode de chiffrement n'est pas compliquée, comme le montre l'exemple suivant traitant « à la main » un court message. Elle devient extrêmement simple quand, avec l'informatique, on traite les données sous forme binaire (voir la section qui suit).
Chiffrement et déchiffrement à la main
Le chiffrement à la main par la méthode du masque jetable fut notamment utilisée par Che Guevara pour communiquer avec Fidel Castro (voir lien externe ci-dessous). Décrivons-le dans le cas d'un message long de 5 caractères.
Supposons que la clé aléatoire retenue, ou « masque », soit :
WMCKL
Cette clé est choisie à l'avance entre les deux personnes souhaitant communiquer. Elle n'est connue que d'eux.
On veut chiffrer le message « HELLO ». Pour cela, on attribue un nombre à chaque lettre, par exemple le rang dans l'alphabet, de 0 à 25. Ensuite on additionne la valeur de chaque lettre avec la valeur correspondante dans le masque ; enfin si le résultat est supérieur à 25 on soustrait 26 (calcul dit « modulo 26 ») :
7 (H) 4 (E) 11 (L) 11 (L) 14 (O) message + 22 (W) 12 (M) 2 (C) 10 (K) 11 (L) masque = 29 16 13 21 25 masque + message = 3 (D) 16 (Q) 13 (N) 21 (V) 25 (Z) masque + message modulo 26
Le texte reçu par le destinataire est « DQNVZ ».
Le déchiffrement s'effectue de manière similaire, sauf que l'on soustrait le masque au texte chiffré au lieu de l'additionner. Ici encore on ajoute éventuellement 26 au résultat pour obtenir des nombres compris entre 0 et 25 :
3 (D) 16 (Q) 13 (N) 21 (V) 25 (Z) message chiffré - 22 (W) 12 (M) 2 (C) 10 (K) 11 (L) masque = -19 4 11 11 14 message chiffré - masque = 7 (H) 4 (E) 11 (L) 11 (L) 14 (O) message chiffré - masque modulo 26
On retrouve bien le message initial « HELLO ».
L'exemple donné ici avec un alphabet de 26 caractères doit être adapté à la réalité. L'alphabet comporte généralement en plus des caractères de ponctuation, de contrôle, d'espacement, des accents, etc. Tous doivent être mis en correspondance avec un nombre pour pouvoir réaliser l'opération, c'est ce qu'on appelle une table de caractères. Une des plus simples est ASCII et comporte 128 caractères ; Unicode quant à elle est beaucoup plus complète et permet plus d'un million de points de code.
Méthode informatisée de chiffrement et déchiffrement
Lorsque les données sont informatisées, donc mises sous forme binaire, la méthode se réduit à un calcul particulièrement simple, donc très rapide en pratique.
Le message en clair, à chiffrer, se présente comme une suite de bits. La clé est une autre suite de bits, de même longueur.
On traite un à un les bits du clair, en combinant chacun avec le bit de même rang dans la clé.
Appelons A un bit du clair et B le bit de même rang de la clé.
Le chiffrement consiste à calculer un bit C en effectuant sur A et B l'opération appelée « XOR ». Celle-ci est définie par le tableau suivant, qui indique pour toutes les valeurs possibles de A et B la valeur du résultat, que l'on note A ⊕ B :
Opération XOR A B A ⊕ B 0 0 0 0 1 1 1 0 1 1 1 0 Pour chiffrer on calcule donc C = A ⊕ B. Le résultat C est le chiffré de A. L'opération est effectuée pour chaque bit du clair avec le bit correspondant de la clé.
Le déchiffrement s'effectue en combinant le chiffré C avec le bit de clé B par la simple opération : C ⊕ B. Il se trouve qu'elle fait retrouver le clair A, comme nous allons le montrer.
Remarquons que l'opération XOR possède les deux propriétés suivantes :
-
- A ⊕ A = 0
-
- A ⊕ 0 = A
ce qu'on vérifie facilement avec le tableau ci-dessus, en considérant les deux valeurs possibles de A, qui sont 0 ou 1.
Le calcul de déchiffrement peut donc s'écrire :
-
- C ⊕ B = (A ⊕ B) ⊕ B = A ⊕ (B ⊕ B) = A ⊕ 0 = A
Il fait bien retrouver le bit de clair A.
L'application de l'opération XOR étant simple en informatique, ces traitements peuvent s'effectuer à très grande vitesse.
On veillera juste à la conformité des clés et des messages en les accompagnant de signature numérique ou par bit de parité.
Interception et tentative de décryptage.
Si un ennemi découvre le message codé, sans la clé, il verra une suite aléatoire, dont chaque caractère est décalé d'un rang inconnu, qui est celui du message. Or le hasard décalé avec le modulo reste aléatoire. Cela revient à tenter de lire un texte dont l'analyse statistique ne donnera qu'un charabia aléatoire incompréhensible.
Difficultés de mise en œuvre
La première difficulté que présente ce système est la longueur et le nombre des clés nécessaires, avec le problème de leur transmission au correspondant, de leur stockage, de leur identification. On travaille en effet souvent avec plusieurs correspondants, ayant chacun plusieurs jeux de clés en commun.
Ensuite générer des clés réellement aléatoires nécessite des moyens complexes.
Enfin garantir l'utilisation unique de chaque clé, même à des années d'intervalle, pose des problèmes d'organisation importants : à défaut, la sécurité du système peut être compromise.
Problème de la transmission des clés
La seule méthode sûre pour transmettre les clés au correspondant est le transport physique, typiquement dans une valise diplomatique. Aucune transmission sur un réseau n'est acceptable, une interception ne pouvant jamais être totalement exclue. Et ce problème ne serait pas résolu en chiffrant préalablement la clé avec un système comme RSA, car ce dernier n'offre pas une sécurité théorique absolue, et le risque d'une cryptanalyse existe toujours.
Une solution très prometteuse au problème de la transmission de la clé a été apportée par les systèmes de cryptographie quantique. Celle-ci, quoique théoriquement parfaitement sûre, comporte encore des limites pratiques contraignantes, concernant la distance maximale (de l'ordre de la centaine de km) et le débit (de l'ordre de quelques bits à quelques kilobits par seconde).
Difficulté de produire une clé parfaitement aléatoire
Article détaillé : Générateur de nombres aléatoires.Le fait que la clé soit constituée d'une suite de caractères (ou de bits) totalement aléatoires est une condition essentielle de la sécurité du chiffre de Vernam. Un défaut du masque sur ce point peut suffire pour que le cryptanalyste retrouve le clair.
Des clés parfaitement aléatoires ne peuvent pas être produites par un ordinateur : en effet ce dernier est une machine fondamentalement déterministe, dont le résultat est totalement prévisible quand on connaît les calculs programmés et leurs données initiales. Pourtant de nombreux algorithmes ont été proposés dans ce but : on les appelle des générateurs de nombres pseudo-aléatoires. Leur résultat est utile dans beaucoup de situations, mais il ne répond pas à la condition du parfait aléa, qui seul garantit la sécurité absolue démontrée par Claude Shannon.
Le moyen le plus sûr de respecter cette contrainte consiste donc à créer les clés en exploitant un phénomène physique dont la nature est strictement aléatoire. C'est le cas par exemple de la radioactivité, où l'instant de désintégration d'un atome est purement aléatoire. De tels générateurs existent, mais ils doivent comporter un traitement statistique complexe des données physiques brutes observées pour obtenir une suite de bits présentant les qualités requises, ne serait-ce que de produire en moyenne un nombre égal de 1 et de 0. Ils sont coûteux.
Problème de l'utilisation unique de chaque clé
Le risque que fait courir la réutilisation d'une clé est facile à montrer.
Soit un message M1 masqué grâce à la clé K, nous obtenons le chiffré C1. Supposons qu'un autre message M2 soit chiffré avec le même masque K, fournissant le chiffré C2. Convenons que le symbole représente ici l'application de l'opération XOR à chacun des bits. Nous avons les relations suivantes :
Supposons qu'un adversaire applique l'opération XOR aux deux chiffrés C1 et C2, et réutilisons les propriétés vues ci-dessus :
On obtient le XOR des deux messages en clair. C'est très dangereux, car tout effet de masque de la clé K a disparu.
Si par exemple un adversaire connaît les deux messages chiffrés et l'un des messages en clair, il peut trouver instantanément le deuxième message en clair par le calcul :
En fait, même sans connaître l'un des clairs, des méthodes plus complexes permettent souvent de retrouver M1 et M2.
Pour garantir l'utilisation unique des clés, les agents du KGB utilisaient souvent des masques qui étaient imprimés sur un papier spécial, celui-ci brûlait presque instantanément et sans laisser de cendres.
En pratique l'utilisation sûre du masque jetable demande une organisation rigoureuse : chaque clé doit être précisément identifiée et soigneusement tracée, d'autant qu'elle est toujours fournie en deux exemplaires, à deux correspondants géographiquement distants. Imaginons qu'une chancellerie communique par cette méthode avec ses dizaines d'ambassades réparties dans des pays du monde, chacune d'elle envoyant et recevant plusieurs messages par jour, pouvant comporter un grand nombre de pages, et ceci pendant des années : il faut une logistique lourde pour garantir la sécurité absolue. Mais cette méthode a été et est encore largement utilisée par les États.
Voir aussi
Notes et références
- Communication Theory of Secrecy Systems, Bell System Technical Journal, Vol 28, pp. 656-715, Oct 1949. Claude E.Shannon,
- Par exemple le E est très utilisé en français.
Autres codages par clef
Articles connexes
Liens externes
Catégories :- Algorithme de cryptographie
- Protocole de communication chiffrée
Wikimedia Foundation. 2010.