Alors que les guerres se font de plus en plus violentes, le chiffrement devient une arme à part entière, les armées comptent des cryptographes, des mathématiciens, des agents du renseignement dont la spécialité consiste à chiffrer les messages et à casser les codes ennemis. Autant dire que les 150 dernières années ont été une période faste pour la cryptographie.
Moins connue qu’Enigma, la machine de Lorenz servait pourtant aux échanges entre les quartiers généraux allemands.
Le XIXème siècle, époque de l’industrialisation et de la modernisation de la guerre, avec son lot d’atrocités, de massacres, prélude aux boucheries du siècle suivant… mais aussi une ère au cours de laquelle les techniques de chiffrement évoluent et se perfectionnent.
Playfair, le chiffrement deux par deux
Le Chiffre de Playfair porte mal son nom. Ce procédé fut inventé par Charles Wheatstone, vers 1850. C’est toutefois Lord Playfair qui lui donne son nom : le baron a en effet popularisé son utilisation, notamment au sein de l’armée britannique. Ce système est assez similaire au Chiffre de Vigenère, mais au lieu de chiffrer les lettres une à une, on s’intéresse aux paires de lettres. On parle de chiffrement polygrammique (ou plus exactement digrammique dans le cas qui nous intéresse ici). Contrairement aux substitutions poly-alphabétiques vues dans le numéro précédent, ce chiffrement est plus dur à casser par des analyses fréquentielles : 625 digrammes possibles contre 26 lettres.
On retrouve là encore notre bon vieux tableau de 5 x 5 lettres, contenant un mot clé placé verticalement, horizontalement ou en diagonale. On traite les lettres de notre message en clair deux par deux, en suivant les quatre règles suivantes :
- Si les deux lettres sont identiques ou s’il n’en reste qu’une, mettre X (ou Q) après la première lettre.
-
Si les lettres se trouvent sur la même ligne du tableau, les remplacer par les lettres immédiatement sur leur droite (en revenant au bord gauche du tableau, sur la même ligne, si le bord est atteint).
- Si les lettres se trouvent sur la même colonne, les remplacer par les lettres se trouvant immédiatement en dessous (en bouclant par le haut si le bord est atteint).
-
Si les deux lettres sont sur des lignes et des colonnes différentes, remplacer chaque lettre par la lettre située sur la même ligne qu'elle, mais sur la colonne de l'autre lettre.
Prenons un exemple… Nous voulons chiffrer le message « une nouvelle menace », en utilisant la clé MAGSECURITE. En éliminant les redondances, on obtient MAGSECURIT Nous obtenons le Tableau ci-dessous (sans la lettre W, mais on peut aussi combiner I et J).
Notre message se découpera comme suivant : UN EN OU VE LQ EM EN AC EQ. En respectant les quatre règles et en s’aidant du tableau, nous obtenons le message chiffré suivant : LRPGILAZVKMAPGUMZM. Ce qui, il faut bien l’avouer, ne veut pas dire grand chose. A moins d’avoir la clé…
On retrouve la première référence au Chiffre de Playfair dans un document du British Foreign Office. Le système pour des échanges peu sensibles par les Australiens, les Néozélandais et les Allemands. Ces derniers améliorent le Chiffre de Playfair en juxtaposant deux tableaux, la première lettre étant recherchée dans l’un, la seconde dans l’autre. Ce qui règle le problème des doublons et permet un chiffrement symétrique optimisé.
Vernam, le code jetable
L’ingénieur Gilbert Vernam pousse le vice encore plus loin, avec une clé (ou masque) jetable, conçue en 1917. Chaque clé ne doit être utilisée qu’une seule fois et doit avoir un nombre de caractères égal ou supérieur au nombre de caractères du message à chiffrer. Joseph Mauborgne (encore lui) passera par là deux ans plus tard et y ajoutera sa petite règle en plus : les caractères de la clé doivent être choisis de manière totalement aléatoire. Ce qui rend ce code théoriquement incassable. Un hacker ne connaît que le texte chiffré et toutes les clés sont également probables. Une analyse fréquentielle est vaine (puisque la clé est unique), la connaissance d’une partie de la clé inutile, puisque le reste n’en dépend pas (chaque caractère est aléatoire). Pour des soucis de temps de chiffrement, nous choisissons volontairement un texte court, mais vous, chez vous, n’hésitez pas à vous amuser à chiffrer des messages bien plus longs... Nous prendrons donc un mot de quatre lettres, HACK. Puis, fouillant dans notre chapeau des clés aléatoires (on pioche quatre lettres aléatoires), nous obtenons la clé UTLU. On attribue une valeur pour chaque lettre, comme pour Polybe. H = 7, A = 0, C = 2, K = 10, U = 20, T = 19 et L = 11. Après quoi on prend un papier, un crayon et un modulo de 26 et à l’attaque...
H + U = 7 + 20 = 27 ; 27 - 26 = 1 = B
A + T = 0 + 19 = 19 = T
C + L = 2 + 11 = 13 = N
K + U = 10 + 20 = 30 ; 30 - 26 = 4 = E
Notre texte chiffré est donc BTNE.
Voilà donc un procédé parfait, dont la sécurité sémantique est assurée. Pourtant, il est quasi impossible de le mettre en oeuvre pour plusieurs raisons. La première, et non des moindres, est la nécessité de transmettre les clés via un canal ultra sécurisé. Or ce canal n’a de sens qu’au moment de transmission des clés… S’il est sûr au point de l’utiliser pour transmettre la clé, autant transmettre directement le message par ce biais... Autre difficulté, choisir une clé parfaitement aléatoire. Si, aujourd’hui, l’outil informatique nous facilite la tâche, ce n’était pas le cas en 1917. Puisqu’une clé ne peut être utilisée qu’une seule fois, il est nécessaire de consigner chaque clé utilisée pour ne pas les répéter. La perte ou le vol de ce document compromet donc l’ensemble des messages et le procédé est d’autant plus complexe qu’on a plusieurs correspondants (autant de clés que de messages et de correspondants, avec, pour chacun, un canal ultra-sécurisé permettant de communiquer la clé). Autant dire que les cas d’utilisation du masque jetable de Vernam, malgré leur « poids historique » (échange entre Fidel Castro et le Che, téléphone rouge), sont rares.
Tommy Flowers, inventeur du premier calculateur électronique basé sur un système binaire.
Lorenz, l’autre Enigma
Si Enigma est sans doute la « machine » de chiffrement la plus connue de la Seconde Guerre Mondiale, on entend beaucoup moins parler des Machines de Lorenz. Pourtant, son histoire mérite d’être contée. Alors que Enigma était destinée aux communications de la Luftwaffe et de la Marine allemande, Lorenz servait pour sa part aux échanges entre les quartiers généraux, y compris celui du Führer. En outre, Enigma n’a été « craquée » que par des attaques de force brute. Le code de Lorenz a lui été cassé. Enfin, si vous vous intéressez à l’histoire d’Enigma, nous ne pouvons que conseiller de visionner l’excellent film The Imitation Game, qui a par ailleurs déjà fait l’objet d’un Cultur’Hack (Cf. Mag-Secursn°45).
Les Machines de Lorenz SZ 40 et SZ 42 servaient à chiffrer les communications par téléscripteur. Le SZ signifie Schlüsselzusatz, littéralement clé additive.
Tout d’abord, l’opérateur traitait chaque lettre du message en clair, les remplaçant par leur équivalent binaire du code international (ou système Baudot-Murray). Une lettre devient donc 5 bits, 0 ou 1. On active ensuite la machine. Là où Enigma comptait 3 à 6 rotors, Lorentz en avait 12. Chacune de ses roues possédait entre 23 et 61 crans. À chaque lettre tapée, les cinq premiers rotors (chi) se déplaçaient d’un cran, à l’instar du premier rotor moteur. Le deuxième rotor moteur ne tourne que si le premier moteur est à la position témoin 1, activant par là même les cinq autres rotors (psi). La machine produit donc des grappes de 5 bits pseudo-aléatoires. Ces bits sont ensuite combinés au texte en clair par une fonction ou_exclusif.
Ce système permet d’obtenir une clé additive pseudo-aléatoire en combinant les groupes de bits au texte en clair par une fonction ou_exclusif. 0 étant « faux », 1 étant « vrai », le résultat n’est vrai que si un seul des deux facteurs est vrai. Plus concrètement, on tape par exemple la lettre A, code 11000, la machine lui ajoute le code du B, 10011, on obtient le code 00011, soit la lettre O. Et on réalisera la manoeuvre inverse pour déchiffrer le message. Sachant que la machine peut donner un ou_exclusif 00000, une lettre peut être chiffrée par elle-même… ce qui complique considérablement la tâche des hackers, en plus de l’aléatoire de la définition de la clé additive.
Joseph Mauborgne, officier de l’armée américaine, sera également à l’origine de la première transmission radio sans fil air/sol en 1912.
Pourtant, Lorenz a été cassé dès 1942 à Bentchley Park, sans même que les ingénieurs aient jamais eu en main une des machines. A l’été 1941, un opérateur allemand transmit, via Lorenz, un long message. Problème de réception ou incompréhension du destinataire, le même message fut renvoyé peu après, avec la même clé… mais pas à l’identique, puisque l’opérateur y remplaça certains mots ou expressions par des abréviations. À partir des deux textes, John Tiltman, officier du renseignement britannique et cryptanalyste, obtint à la fois le texte en clair et la méthode de chiffrement.
Puis vint Colossus, premier calculateur électronique basé sur un système binaire, imaginé par Max Newman, un des professeurs de Turing, et fabriqué par l’ingénieur anglais Tommy Flowers. La logique du premier cassage du code Lorenz veut qu’une clef correcte contienne plus de 0 que de 1 (puisqu’un seul des facteurs doit être vrai). Cet ordinateur calculait donc des clés produisant plus de 0 que d’autres, et répétait l’opération avec des clés différentes jusqu’à obtenir un texte lisible. C’est le début du chiffrement électronique et informatique, qui nous fait entrer dans l’ère que nous connaissons. ■
Lire le début du dossier :
- Le chiffrement à travers les âges (1)