RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.

Commentaires sur :

Steven Levy "Crypto" Viking 2001

10 juin 2001

Steven Levy est l'auteur de "Hackers", qui retraçait la vie, les idées et les travaux des pionniers de l'informatique des années 60 et 70. Dans "Crypto", il décrit l'aventure de ceux qui ont conçu les systèmes de cryptographie. Il aime les personnages qui, s'intéressant à une question dont ils ne sont pas les spécialistes les plus "pointus",  l'abordent avec un regard neuf et trouvent la solution "hérétique" à laquelle personne d'autre n'aurait pu penser. 

La cryptographie, c'est cet art que nous avons tous pratiqués au lycée lorsque nous adressions à nos copains des lettres écrites selon un alphabet secret. C'est aussi la branche des mathématiques qui sert à chiffrer (ou déchiffrer) les messages des militaires et des espions. L'un des sommets de son histoire est le déchiffrage de la machine allemande Enigma par Alan Turing, pionnier de l'informatique, héros de la victoire contre le nazisme conduit après la guerre au suicide par les persécutions qu'exerçait la "justice" de la prude Angleterre envers les homosexuels. 

Levy décrit un procédé que j'utilise depuis des années, puisqu'il équipe Lotus Notes, mais auquel je n'avais rien jamais compris : la "clé publique" découverte par James Ellis en 1969 et par Whitfield Diffie en 1975.C'est un procédé hérétique (ce sont les meilleurs), puisqu'il suppose de publier la clé de codage alors que la tradition voulait que la clé fût gardée secrète.

Voici l'affaire en quelques mots et selon mes notations. Il faut, pour que cela marche, disposer d'une fonction mathématique unidirectionnelle ("one-way function") munie d'une porte arrière ("trapdoor"). Une fonction unidirectionnelle, c'est une fonction y = f(x) telle que, si l'on connaît la valeur y, il est pratiquement impossible de calculer la valeur x (c'est-à-dire d'inverser la fonction f). On dit que cette fonction est munie d'une porte arrière s'il existe une fonction x = g(y, z) telle que, si l'on connaît z, il soit au contraire facile de calculer x à partir de y. 

Vous suivez ? Sinon, relisez le paragraphe qui précède avant de continuer : dès que les notations mathématiques apparaissent, il faut diviser la vitesse de lecture par trois. Conservez cette vitesse lente pour lire les paragraphes suivants. 

Supposons que Bob veuille recevoir des messages codés d'Alice, et qu'il souhaite que ces messages soient indéchiffrables pour Ève qui a pourtant accès à leurs échanges. Bob et Alice connaissent la fonction unidirectionnelle f ; Bob fournit à Alice sa "clé publique" c. f et c, pouvant être connus de tout le monde, sont bien sûr connus d'Ève. Alice va coder le message M en utilisant l'algorithme f et la clé c ; ceci fournit un texte T chiffré ayant les apparences d'une suite de caractères au hasard :

T = f(M, c). 

Comme f est une fonction unidirectionnelle, Ève sera incapable de reconstituer le message même si elle connaît l'algorithme f, la clé publique c et le texte T. 

Par contre Bob, lui, possède la "clé privée" z qui est, elle, absolument secrète. z ouvre la porte arrière de la fonction f et permet de déchiffrer le message en appliquant la fonction g au triplet (T, c, z) :

M = g(T, c, z).

Pour que le procédé soit utilisable, il faut bien sûr avoir défini le couple des fonctions f et g ; cela demande une maîtrise des mathématiques que ni Ellis, ni Diffie ne possédaient. Le système à clé publique n'a donc d'abord été qu'une idée dont la faisabilité restait à démontrer. Puis des mathématiciens ont mis au point les algorithmes : certains utilisent le fait que la factorisation du produit de deux grands nombres entiers demanderait un temps de calcul de plusieurs millions d'années. Le problème était ainsi résolu (supposez que la clé publique c soit le produit de deux grands nombres entiers, que la clé privée z soit l'un de ces deux nombres entiers, et que g comporte la factorisation de c : seul Bob, qui connaît z, pourra factoriser c et donc déchiffrer T).

Le système de chiffrement à clé publique devient universel si chacun publie sa clé publique dans un annuaire : pour envoyer un message chiffré à Bob, il suffit de trouver sa clé publique dans l'annuaire et de s'en servir pour chiffrer le message avant de le lui envoyer ; seul Bob pourra déchiffrer le message. Il faut bien sûr que l'annuaire soit fidèle : il se pourrait que la perfide Ève ait substitué sa propre clé publique à celle de Bob afin de pouvoir lire les messages destinés à Bob : des procédés ont été inventés pour traiter ce risque.

Si j'ai publié ma clé publique dans l'annuaire, et que je reçois un message signé "Bob", qui me garantit que ce n'est pas Ève qui a imité la signature de Bob ? ici l'on rencontre une astuce d'une grande beauté : le système peut servir non seulement à chiffrer les messages, mais aussi à authentifier la signature de l'expéditeur. Voici comment : 

1) Bob chiffre sa signature avec sa propre clé privée ; puis il chiffre avec ma clé publique l'ensemble formé par son message M et sa signature déjà chiffrée. Cela donne le texte chiffré T.

2) Lorsque je reçois T, je trouve en utilisant ma clé privée le message M et la signature chiffrée de Bob ; je peux ensuite déchiffrer la signature en utilisant la clé publique de Bob. Cela me garantit que c'est Bob qui a envoyé ce message, puisque seul Bob peut chiffrer un texte en utilisant sa propre clé privée. 

Le chiffrement à clé publique apporte ce dont on a besoin pour communiquer en toute sécurité sur l'Internet, faire du commerce, protéger des travaux confidentiels etc. Ce système a beaucoup contrarié la National Security Agency (NSA),  qui est chargée d'une part d'espionner tout le monde pour le compte des États-Unis (comme nous l'a bien montré le système Echelon installé en Grande-Bretagne pour espionner l'Europe), et d'autre part de protéger les secrets des États-Unis contre tout le monde. Il y a eu des disputes, dans le style juridique typique des américains, entre tenants de la sécurité nationale et tenants de la confidentialité privée. Pendant un temps, les industriels du logiciel n'ont pas eu le droit d'exporter hors des États-Unis la version la plus efficace des algorithmes mais seulement une version qui, utilisant une clé plus courte, pouvait être déchiffrée dans un temps de calcul plus court (le temps de calcul double chaque fois que l'on ajoute un bit à la clé).

Pourquoi le système à clé publique a-t-il été découvert deux fois ? parce que les travaux réalisés par la NSA ou ses homologues étrangers étaient secrets. Les recherches sur la cryptographie étaient donc menées dans deux mondes : les chercheurs des services secrets, et les chercheurs de l'université ou de l'industrie. Ellis travaillait chez l'homologue britannique de la NSA, et sa découverte est restée longtemps secrète. Lorsque Diffie découvrit le procédé, il n'avait jamais entendu parler des travaux d'Ellis. 

Les algorithmes f et g étaient de gros consommateurs de puissance informatique. Pour qu'ils puissent être utilisés sur l'Internet, il restait à les adapter au PC : ce fut le travail de Philippe Zimmermann qui publia "Pretty Good Privacy" (PGP) en  1991, non sans encourir les foudres de la NSA. Le travail de Zimmermann a demandé plusieurs années, et sa description constitue l'un des passages les plus intéressants du livre : elle montre les difficultés que doit surmonter celui qui produit un logiciel pour traiter de délicats problèmes d'optimisation.