Masque jetable
algorithme de cryptographie
Ne doit pas être confondu avec masque chirurgical ou OTP.
Le masque jetable, également appelé chiffre de Vernam (du nom de son inventeur en 1917 :
Gilbert Vernam) ou OTP (pour one-time pad en anglais), est un algorithme de cryptographie. Il
s'agit essentiellement d'un chiffrement par substitution basique, comme le chiffre de Vigenère
ou le code de César, avec une clé aléatoire au moins aussi grande que le message à transmettre
et qui n'est utilisée qu'une fois. Le banquier américain Frank Miller en avait posé les bases dès
1882 tandis que Joseph Mauborgne le perfectionna en rajoutant la notion de clé aléatoire1.
Exemple de codage à masque jetable.
Assez simple, facile et rapide pour être utilisé à la main tant pour le codage que pour le
décodage, il est prouvé que ce chiffrement est impossible à casser, mais il suppose que
l'émetteur et le destinataire du message disposent de la même clé, qu'il faut avoir transmis au
préalable par un autre moyen sûr. Il est donc adapté à un agent qui part de sa base avec une
collection de clés (il faudra une clé par message) dont une copie reste sur place, mais il est
difficile de l'utiliser pour la sécurisation des échanges téléphoniques ou sur Internet. Il suppose
en outre une logistique rigoureuse et compliquée pour un centre qui souhaite communiquer avec
un grand nombre d'agents (voir infra).
Joseph Mauborgne.
Principe
Le chiffrement par la méthode du masque jetable consiste à combiner le message en clair avec
une clé présentant les caractéristiques 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 suffisamment simple pour être employée
« à la main » sans dispositif informatique, mécanique ou autre. Elle sera décrite ci-dessous.
L'intérêt considérable de cette méthode de chiffrement 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 19492.
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 de cette longueur sont
possibles et avec la même probabilité puisqu'il y a bijection, une fois le chiffré fixé, entre clés et
textes clairs. Connaissant le texte chiffré, il n'y a aucun moyen de distinguer parmi ceux-ci le
texte clair original qui correspond. Une analyse statistique est vaine. Chaque lettre est codée par
une clé indépendante. La connaissance d'une partie du texte clair et du chiffré correspondant
donnent la partie de la clé utilisée, mais ne donnent aucune information supplémentaire : le reste
de la clé est indépendant de la partie connue, la clé n'est pas réutilisée.
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.
Chiffrement et déchiffrement à la main
Un chiffrement à la main par la méthode du masque jetable fut notamment utilisé par Che
Guevara pour communiquer avec Fidel Castro3. Une méthode analogue mais distincte de celle
qu'ils utilisaient est décrite sur un exemple ci-dessous, dans le cas d'un message long de 5
caractères. On peut la voir alors comme un chiffre de Vigenère, mais avec les conditions sur la
clé (aléatoire, de même longueur que le message à chiffrer, jamais réutilisée) qui font la
spécificité du chiffre de Vernam.
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'elles.
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 utilise un alphabet de 26 caractères et des décalages modulo 26. Mais
d'autres décalages peuvent être utilisés. Che Guevara utilisait, en plus des 26 caractères de
l'alphabet, quelques signes de ponctuation, et les codait préalablement par des nombres de un
ou deux chiffres en base 10 ; il utilisait alors un décalage modulo 10 chiffre par chiffre à partir de
la clé jetable, qui était elle-même une suite de chiffres4.
Vernam, l'inventeur du codage, utilisait lui des décalages modulo 2, ce qui revient, en termes
informatiques modernes, à pratiquer un XOR entre le message et la clé (voir plus bas pour plus
d'informations). Les algorithmes de chiffrement et de déchiffrement sont dans ce cas
identiques.
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 C=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.
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 leurs transmissions au correspondant, de leur stockage durable, accessible
et secret, 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
L'échange de clés entre correspondants nécessite un canal parfaitement sûr, or les clés sont de
même taille que les messages à échanger. Le masque jetable n'a donc d'intérêt que si ce canal
existe au moment de l'échange des clés et plus au moment de l'échange des messages (sinon
autant utiliser directement le canal en question). Ceci en limite drastiquement l'utilisation. Le
masque jetable est par exemple tout à fait incompatible avec les méthodes modernes utilisées
sur les réseaux informatiques : utilisation d'une infrastructure à clés publiques et de
cryptographie asymétrique pour constituer un secret partagé incomparablement plus court que
les données échangées.
La solution courante pour l'échange de clés entre correspondants est donc l'échange physique
préalable. Ensuite les correspondants pourront échanger jusqu'à épuisement de la clé.
Une autre solution a été apportée par les systèmes de cryptographie quantique. Essentiellement
les clés sont échangées jusqu'à ce que les correspondants soient certains que la clé n'a pas été
observée. L'échange des messages peut alors commencer. Celle-ci, quoique théoriquement
parfaitement sûre, est très onéreuse, et comporte encore des limites pratiques contraignantes,
concernant la distance maximale (de l'ordre de la centaine de kilomètres) et le débit (de l'ordre
de quelques bits à quelques kilobits par seconde). Il existe également des attaques liées à la
mise en œuvre de la méthode.
Une fausse clé peut changer tout le message
Si l'ennemi change la clé de décodage secrète à notre insu, en connaissant le message codé
public, il peut décider de la manière dont les données sont interprétées. Exemple sur 26 lettres :
Vrai message secret à transmettre : "OUI".
Vraie clé aléatoire secrète : "HRJ".
Vrai message codé public = (Vraie clé aléatoire secrète + Vrai message secret à transmettre),
modulo 26 : "WMS".
Fausse clé, fabriquée par l'ennemi et inversée discrètement par l'ennemi = (Faux message
décodé - Vrai message codé public), modulo 26 : "QBU".
Faux message décodé lu = (Vrai message codé public - Fausse clé), modulo 26 : "NON".
C'est pour cela qu'une attaque par force brute (tenter toutes les clés possibles) est inutile : on
aurait tous les messages possibles.
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 par un simple
calcul : en effet ce calcul est déterministe, donc le résultat est totalement prévisible quand on
connaît l'algorithme et les données initiales. Des algorithmes appelés générateurs de nombres
pseudo-aléatoires sont utiles dans beaucoup de situations, y compris cryptographiques pour
certains d'entre eux, mais ne peuvent répondre à la condition du parfait aléa, qui seule garantit la
sécurité absolue démontrée par Claude Shannon, même si la donnée initiale est réellement
aléatoire.
Les chiffrements par flot (ou les chiffrements par bloc dans certains modes d'utilisation) ont un
fonctionnement à première vue analogue au chiffre de Vernam : combinaison par XOR d'une clé
de flot et du texte clair pour obtenir le chiffré, mais la clé de flot est engendré à partir d'une clé de
taille fixe. Ces chiffres ne sont en rien inconditionnellement sûrs au sens de Shannon. Leur
cryptanalyse relève de la sécurité calculatoire.
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. On peut aussi
traiter des sources de bruit très entropiques.
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 [réf. nécessaire].
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'elles 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.
Dans la culture
Dans le roman Cryptonomicon de Neal Stephenson, certains personnages échangent des
messages codés au moyen de masques jetables.
Notes et références
1. Sciences et Avenir, septembre 2011, p. 27.
2. (en) Claude Shannon, « Communication Theory of Secrecy Systems », Bell System Technical
Journal, vol. 28,octobre 1949, p. 656–715 (lire en ligne ([Link]
8amerrich/page/656/mode/2up) [archive]).
3. « Le chiffre du Che ([Link]
ne/che) [archive] », sur bibm@[Link].
4. Kahn 1969.
Bibliographie
Cryptographie
(en) Douglas Robert Stinson, Cryptography : Theory and Practice, Boca Raton, Londres et New
York, Chapman & Hall / CRC, 2006, 3e éd., 616 p. (ISBN 1-58488-508-4, lire en ligne ([Link]
[Link]/books?id=uhl_kYfpgo4C&pg=PA45) [archive]), chap. 2 (« Shannon's Theory »).
(en) Alfred Menezes, Paul van Oorschot (en) et Scott Vanstone, Handbook of Applied
Cryptography, Boca Raton, Londres et New York, CRC Press, coll. « CRC Press Series on
Discrete Mathematics and Its Applications », octobre 1996, XXVIII-780 p. (ISBN 0-8493-8523-7, lire
en ligne ([Link] [archive]), chap. 1 (« Overview of
Cryptography »).
Aspects historiques
(en) David Kahn, The Codebreakers : The Story of Secret Writing, New York, Macmillan, 1967,
1164 p. (OCLC 717303 ([Link]
(en) David Kahn, « The Ché Guevara Cipher », dans Daniel James, Ché Guevara: A Biography,
New York, Stein and Day, 1969, 380 p. (ISBN 0-8128-1209-3), p. 365–368 [lire en ligne ([Link]
[Link]/books?id=0p0AEAdjvoIC&pg=PA365) [archive]].
(en) Steven M. Bellovin, « Frank Miller: Inventor of the One-Time Pad », Cryptologia, vol. 35, no 3,
2011, p. 203–222
(DOI 10.1080/01611194.2011.583711 ([Link] lire en ligne (https://
[Link]/doi/abs/10.1080/01611194.2011.583711) [archive]).
Liens externes
Didier Müller, « Masque jetable ([Link]
tml) [archive] », sur [Link].
(en) Dirk Rijmenants, « The One-time pad ([Link]
[Link]) [archive] », sur Cipher Machines and Cryptology, 2004.
Portail de la cryptologie Portail de la sécurité informatique