vignette|Schéma du chiffrement asymétrique: une clé sert à chiffrer et une seconde à déchiffrer.

La cryptographie asymétrique, ou cryptographie à clé publique est un domaine relativement récent de la cryptographie. Elle permet d'assurer la confidentialité d'une communication, ou d'authentifier les participants, sans que cela repose sur une donnée secrète partagée entre ceux-ci, contrairement à la cryptographie symétrique qui nécessite ce secret partagé préalable.

La cryptographie asymétrique peut être illustrée avec l'exemple du chiffrement à clé publique et privée, dont le but, comme tout chiffrement, est de garantir la confidentialité d'une donnée lors d'une transmission de celle-ci. Le terme asymétrique s'explique par le fait qu'il utilise deux clés différentes, l'une, la clé publique, pour chiffrer, l'autre, la clé privée, pour déchiffrer. L'utilisateur qui souhaite recevoir des messages engendre un tel couple de clés. Il ne transmet à personne la clé privée alors que la clé publique est transmissible sans restriction. Quiconque souhaite lui envoyer un message confidentiel utilise la clé publique pour chiffrer celui-ci. Le message chiffré obtenu ne peut être déchiffré que connaissant la clé privée. Il peut donc être communiqué publiquement : la confidentialité du message original est garantie. Le destinataire, qui n'a communiqué à personne sa clé privée, est le seul à pouvoir, à l'aide de celle-ci, déchiffrer le message transmis pour reconstituer le message original.

Un problème crucial pour l'émetteur est de s'assurer que la clé publique qu'il utilise est bien celle du destinataire souhaité.

Ce système a deux utilisations majeures : la confidentialité des messages reçus et l'authentification de l'expéditeur d'un message (pas nécessairement confidentiel). L'expéditeur utilise la clé publique du destinataire pour chiffrer son message. Le destinataire utilise sa clé privée pour déchiffrer le message reçu, garantissant la confidentialité du contenu. Pour l'authentification de l'expéditeur d'un message, si l'expéditeur utilise sa clé privée pour chiffrer un message que n'importe qui peut déchiffrer avec la clé publique de l'expéditeur,garantit que le message est chiffré par l'expéditeur, seul à posséder la clé privée ; c'est le mécanisme utilisé par la signature numérique pour authentifier l'auteur d'un message.

Histoire Concept Le concept de cryptographie à clé publique — autre nom de la cryptographie asymétrique — est généralement attribué à Whitfield Diffie et à Martin Hellman qui l'ont présenté au public à la en 1976, puis publié quelques mois plus tard dans . Le concept aurait cependant été découvert indépendamment par d'autres chercheurs à la même époque.

Ralph Merkle aurait fait la même découverte à la même époque, même si ses articles ne furent publiés qu'en 1978.

Mise en œuvre Dans leur article de 1976, W. Diffie et M. Hellman n'avaient pas pu donner l'exemple d'un système à clé publique, n'en ayant pas trouvé. Il fallut attendre 1978 pour avoir un exemple donné par Ronald Rivest, Adi Shamir et Leonard Adleman, le RSA, abréviation tirée des trois noms de ses auteurs. Les trois hommes fondèrent par la suite la société . Le système Merkle-Hellman est généralement considéré comme la première réalisation pratique d'un système de chiffrement à clé publique, il a cependant été prouvé non sûr par Shamir en 1982.

Recherches secrètes du GCHQ Parallèlement aux recherches publiques, les services du chiffre britannique (GCHQ, ) auraient mené des recherches secrètes aboutissant à des concepts et outils de chiffrement asymétrique dès la première moitié des années 1970 : James Ellis, du GCHQ aurait proposé le concept avant Hellman et Diffie; Clifford Cocks aurait décrit dès 1973 ce qu'on appelle l'algorithme RSA ; Malcolm J. Williamson aurait inventé un protocole d'échange de clé très proche de celui de Diffie et de Hellman dès 1974. Ces découvertes n'auraient été rendues publiques par le GCHQ qu'en 1997.

Découverte publique En 1976, un cryptosystème à clé asymétrique a été publié par Whitfield Diffie et Martin Hellman qui, influencés par les travaux de Ralph Merkle sur la distribution de clé publique, ont divulgué une méthode d'accord de clé publique. Cette méthode d'échange de clés, qui utilise l'exponentiation dans un corps fini, est devenue connue sous le nom d'échange de clés Diffie-Hellman. Il s'agissait de la première méthode pratique publiée pour établir une clé secrète partagée sur un canal de communication authentifié (mais non confidentiel) sans utiliser de secret partagé préalable. La « technique d'accord de clé publique » de Merkle, devenue connue sous le nom de Merkle's Puzzles, a été inventée en 1974 et publiée seulement en 1978. Cela fait du chiffrement asymétrique un domaine plutôt nouveau de la cryptographie, bien que la cryptographie en elle-même remonte à plus de .

En 1977, une généralisation du schéma de Cocks a été inventée indépendamment par Ronald Rivest, Adi Shamir et Leonard Adleman, tous alors au MIT. Ces derniers auteurs ont publié leurs travaux en 1978 dans la colonne Scientific American de Martin Gardner, et l'algorithme est devenu connu sous le nom de RSA, leurs initiales. RSA utilise l'exponentiation modulo un produit de deux très grands nombres premiers, pour chiffrer et déchiffrer, effectuant à la fois le chiffrement à clé publique et les signatures numériques à clé publique. Sa sécurité est liée à l'extrême difficulté de factoriser de grands entiers, un problème pour lequel il n'y a pas de technique générale efficace connue (bien que la factorisation première puisse être obtenue par des attaques par force brute ; cela devient d'autant plus difficile que les facteurs premiers sont très grands). Une description de l'algorithme a été publiée dans la colonne Mathematical Games du numéro d' de Scientific American.

Depuis les années 1970, un grand nombre et une grande variété de techniques de chiffrement, de signature numérique, d'accord de clé et d'autres techniques ont été développées, notamment le cryptosystème Rabin, le chiffrement ElGamal, le DSA et la cryptographie à courbe elliptique.

Fonctionnement Principe général La cryptographie asymétrique, ou cryptographie à clé publique est fondée sur l'existence de fonctions à sens unique et à trappe secrète.

Les fonctions à sens unique sont des fonctions mathématiques telles qu'une fois appliquées à un message, il est extrêmement difficile de retrouver le message original.

L'existence d'une trappe secrète permet cependant à la personne qui a conçu la fonction à sens unique de déchiffrer facilement le message grâce à un élément d'information qu'elle possède, appelé clé privée.

Supposons qu'Alice souhaite recevoir un message secret de Bob sur un canal susceptible d'être écouté par un attaquant passif Eve : Alice transmet à Bob une fonction à sens unique pour laquelle elle seule connait la trappe secrète ; Bob utilise la fonction transmise par Alice pour chiffrer son message secret ; Alice réceptionne le message chiffré puis le déchiffre grâce à la trappe secrète ; Si Eve réceptionne également le message alors qu'il circule sur le canal public, elle ne peut le déchiffrer, même si elle a également intercepté l'envoi de la fonction à sens unique, car elle n'a pas connaissance de la trappe secrète.

La terminologie classiquement retenue est : pour la fonction à sens unique : « clé publique » ; pour la trappe secrète : « clé privée ». En pratique, sont utilisées des fonctions de chiffrement classiques, les termes « clé publique » et « clé privée » correspondant alors à des paramètres employés pour ces fonctions.

Fonctionnement pratique Alice souhaite pouvoir recevoir des messages chiffrés de n'importe qui.

Diffusion des clés publiques Elle génère alors une valeur à partir d'une fonction à sens unique et à trappe secrète à l'aide d'un algorithme de chiffrement asymétrique (liste ici), par exemple RSA.

Alice diffuse à tout le monde la fonction pour chiffrer les messages (notée clé publique) mais garde secrète la fonction de décodage (notée clé privée).

vignette|400px|centré| : Alice génère deux clés: Sa clé publique (verte) qu'elle envoie à Bob et sa clé privée (rouge) qu'elle conserve précieusement sans la divulguer à quiconque.

vignette|400px|centré| et : Bob chiffre le message avec la clé publique d'Alice et envoie le texte chiffré. Alice déchiffre le message grâce à sa clé privée.

Chiffrement L'un des rôles de la clé publique est de permettre le chiffrement ; c'est donc cette clé qu'utilisera Bob pour envoyer des messages chiffrés à Alice. L'autre clé — l'information secrète — sert à déchiffrer. Ainsi, Alice, et elle seule, peut prendre connaissance des messages de Bob. La connaissance d'une clé ne permet pas de déduire l'autre.

Authentification de l'origine D'autre part, l'utilisation par Alice de sa clé privée sur le condensat d'un message, permettra à Bob de vérifier que le message provient bien de Alice : il appliquera la clé publique au condensat fourni (condensat chiffré avec la clé privée de Alice) et retrouvera donc le condensat original du message. Il lui suffira de comparer le condensat ainsi obtenu et le condensat réel du message pour savoir si Alice est bien l'expéditeur. C'est donc ainsi que Bob sera rassuré sur l'origine du message reçu : il appartient bien à Alice. C'est sur ce mécanisme notamment que fonctionne la signature numérique.

Analyse fonctionnelle Analogies Coffre-fort Le chiffrement : Alice a choisi un coffre-fort. Elle l'envoie ouvert à Bob, et en garde la clé. Lorsque Bob veut écrire à Alice, il y dépose son message, ferme le coffre, il n'a pas besoin de la clé pour cela, et le renvoie à Alice. À sa réception, seule Alice peut ouvrir le coffre, puisqu'elle seule en possède la clé, à supposer le coffre inviolable, et que personne ne puisse refaire la clé.

L'authentification ou la signature : Alice place un message dans le coffre-fort qu'elle ferme avec sa clé privée avant de l'envoyer à Bob. Si Bob parvient à ouvrir le coffre à l'aide de la clé publique d'Alice (dont il dispose), c'est que c'est bien le coffre fermé par Alice puisque la clé de Bob ne permet d'ouvrir que les coffres fermés par Alice. Bob est donc certain que c'est bien Alice qui y a placé le message.

Boîte à deux serrures Une autre analogie envisageable serait d'imaginer une boîte avec deux serrures différentes. Lorsque l'on ferme la boîte d'un côté, seule la clé correspondant à l'autre serrure permet l'ouverture de la boîte et vice-versa. Une des clés est privée et conservée secrète, l'autre est dite publique et un exemplaire peut-être obtenu par quiconque souhaite utiliser la boîte.

Pour chiffrer un message Bob prend la boîte, y place son message, et la ferme à l'aide de la clé publique. Seul le détenteur de la clé privée permettant d'accéder à l'autre serrure, Alice en l'occurrence, sera en mesure de rouvrir la boîte.

Pour signer un message, Alice le place dans la boîte et ferme celle-ci à l'aide de sa clé privée. Ainsi n'importe qui ayant récupéré la clé publique pourra ouvrir la boîte. Mais comme la boîte a été fermée par la clé privée, cette personne sera assurée que c'est bien Alice, seule détentrice de cette clé, qui aura placé le message dans la boîte et fermé ladite boîte.

Inconvénients et limites Comme pour tous les systèmes liés à la sécurité, il est important d'identifier les faiblesses potentielles. Outre le mauvais choix d'un algorithme à clé asymétrique (il y en a peu qui sont largement considérés comme satisfaisants) ou une longueur de clé trop courte, le principal risque de sécurité est que la clé privée d'une paire soit connue. En contrepartie de leurs propriétés spécifiques, les chiffrements asymétriques sont globalement moins performants que leurs équivalents symétriques : les temps de traitement sont plus longs et, pour un niveau de sécurité équivalent, les clés doivent être beaucoup plus longues.

Algorithmes