Aller au contenu

« Cryptographie asymétrique » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Annulation de la modification de 160.53.247.168 (d) Vandalisme
Balise : Révocation manuelle
Mécanismes d'authentification : (Mineur) Élimination d'une faute de frappe en fin de paragraphe.
 
(44 versions intermédiaires par 26 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Fichier:Chiffrement asymétrique.png|vignette|320x320px|Schéma du chiffrement asymétrique: une clé sert à chiffrer et une seconde à déchiffrer]]
{{à sourcer|date=mars 2011}}
La '''cryptographie asymétrique''', ou '''cryptographie à clef 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{{sfn|Katz|Lindell|2014|p=375}}.
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{{sfn|Katz|Lindell|2014|p=375}}.


La cryptographie asymétrique peut être illustrée avec l'exemple du ''[[chiffrement]] à clef 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é de chiffrement|clefs]] différentes, l'une, la '''clef publique''', pour chiffrer, l'autre, la '''clef privée''', pour déchiffrer. L'utilisateur qui souhaite recevoir des messages engendre un tel couple de clefs. Il ne transmet à personne la clef privée alors que la clef publique est transmissible sans restriction{{note|texte=GPG Handbook|id=gpg-handbook}}. Quiconque souhaite lui envoyer un message confidentiel utilise la clef publique pour chiffrer celui-ci. Le message chiffré obtenu ne peut être déchiffré que connaissant la clef privée. Il peut donc être communiqué publiquement : la confidentialité du message original est garantie. Le destinataire, qui n'a communiqué à personne sa clef privée, est le seul à pouvoir, à l'aide de celle-ci, déchiffrer le message transmis pour reconstituer le message original{{sfn|Katz|Lindell|2014|p=375}}.
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é de chiffrement|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{{note|texte=GPG Handbook|id=gpg-handbook}}. 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{{sfn|Katz|Lindell|2014|p=375}}.


Un problème crucial pour l'émetteur est de s'assurer que la clef publique qu'il utilise est bien celle du destinataire souhaité{{sfn|Katz|Lindell|2014|p=375}}.
Un problème crucial pour l'émetteur est de s'assurer que la clé publique qu'il utilise est bien celle du destinataire souhaité{{sfn|Katz|Lindell|2014|p=375}}.


Ce système a deux utilisations majeures :
Ce système a deux utilisations majeures :
* la '''[[confidentialité]]''' des messages reçus : c'est celle qu'on vient de décrire, l'expéditeur utilise la clef publique du destinataire pour chiffrer son message. Le destinataire utilise sa clef privée pour déchiffrer le message de l'expéditeur, garantissant la [[confidentialité]] du contenu ;
* la '''[[confidentialité]]''' des messages reçus : c'est celle qu'on vient de décrire, 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 de l'expéditeur, garantissant la [[confidentialité]] du contenu ;
* l''''[[authentification]]''' de l'expéditeur d'un message (pas nécessairement confidentiel) : l'expéditeur utilise sa clef privée pour chiffrer un message que n'importe qui peut déchiffrer avec la clef publique de l'expéditeur, ce qui garantit que le message a été chiffré par l'expéditeur, seul à posséder la clef privée ; c'est le mécanisme utilisé par la [[signature numérique]] pour authentifier l'auteur d'un message{{sfn|Katz|Lindell|2014|p=439}}.
* l''''[[authentification]]''' de l'expéditeur d'un message (pas nécessairement confidentiel) : 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, ce qui garantit que le message a été 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{{sfn|Katz|Lindell|2014|p=439}}.


== Historique ==
== Historique ==
=== Concept ===
=== Concept ===
Le concept de [[cryptographie]] à clef 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 {{lang|en|''National Computer Conference''}} en [[1976 en informatique|1976]]{{sfn|texte=Diffie et Hellman juin 1976|id=DiffieHellmanjuin1976}}, puis publié quelques mois plus tard dans {{lang|en|''New Directions in Cryptography''}}{{sfn|texte=Diffie et Hellman novembre 1976|id=DiffieHellmannovembre1976}}. Le concept aurait cependant été découvert indépendamment par d'autres chercheurs à la même époque.
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 {{lang|en|''National Computer Conference''}} en [[1976 en informatique|1976]]{{sfn|texte=Diffie et Hellman juin 1976|id=DiffieHellmanjuin1976}}, puis publié quelques mois plus tard dans {{lang|en|''New Directions in Cryptography''}}{{sfn|texte=Diffie et Hellman novembre 1976|id=DiffieHellmannovembre1976}}. 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{{sfn|Menezes|Van Oorschot|Vanstone|1997|p=47}}, même si ses articles{{sfn|Merkle|1978}} ne furent publiés qu'en 1978.
[[Ralph Merkle]] aurait fait la même découverte à la même époque{{sfn|Menezes|Van Oorschot|Vanstone|1997|p=47}}, même si ses articles{{sfn|Merkle|1978}} ne furent publiés qu'en 1978.


=== Mise en œuvre ===
=== Mise en œuvre ===
Dans leur article de 1976, W. Diffie et M. Hellman n'avaient pas pu donner l'exemple d'un système à clef publique, n'en ayant pas trouvé. Il fallut attendre 1978 pour avoir un exemple{{sfn|Rivest|Shamir|Adleman|1978}} donné par [[Ronald Rivest]], [[Adi Shamir]] et [[Leonard Adleman]], le [[Rivest Shamir Adleman|RSA]], abréviation tirée des trois noms de ses auteurs. Les trois hommes fondèrent par la suite la société {{lang|en|[[RSA Security]]}}. Le système [[Cryptosystème de Merkle-Hellman|Merkle-Hellman]]{{sfn|Merkle|Hellman|1978}} est généralement considéré comme la première réalisation pratique d'un système de chiffrement à clef publique{{sfn|Menezes|Van Oorschot|Vanstone|1997|p=300}}, il a cependant été prouvé non sûr par Shamir en 1982{{sfn|Shamir|1983}}.
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{{sfn|Rivest|Shamir|Adleman|1978}} donné par [[Ronald Rivest]], [[Adi Shamir]] et [[Leonard Adleman]], le [[Rivest Shamir Adleman|RSA]], abréviation tirée des trois noms de ses auteurs. Les trois hommes fondèrent par la suite la société {{lang|en|[[RSA Security]]}}. Le système [[Cryptosystème de Merkle-Hellman|Merkle-Hellman]]{{sfn|Merkle|Hellman|1978}} est généralement considéré comme la première réalisation pratique d'un système de chiffrement à clé publique{{sfn|Menezes|Van Oorschot|Vanstone|1997|p=300}}, il a cependant été prouvé non sûr par Shamir en 1982{{sfn|Shamir|1983}}.


=== Recherches secrètes du GCHQ ===
=== Recherches secrètes du GCHQ ===
Ligne 23 : Ligne 23 :
* [[James Ellis]], du GCHQ aurait proposé le concept avant Hellman et Diffie;
* [[James Ellis]], du GCHQ aurait proposé le concept avant Hellman et Diffie;
* [[Clifford Cocks]] aurait décrit dès [[1973 en informatique|1973]] ce qu'on appelle l'algorithme [[Rivest Shamir Adleman|RSA]] ;
* [[Clifford Cocks]] aurait décrit dès [[1973 en informatique|1973]] ce qu'on appelle l'algorithme [[Rivest Shamir Adleman|RSA]] ;
* [[Malcolm J. Williamson]] aurait inventé un protocole d'échange de clef très proche de celui de [[Échange de clés Diffie-Hellman|Diffie et de Hellman]] dès [[1974]].
* [[Malcolm J. Williamson]] aurait inventé un protocole d'échange de clé très proche de celui de [[Échange de clés Diffie-Hellman|Diffie et de Hellman]] dès [[1974]].
Ces découvertes n'auraient été rendues publiques par le GCHQ qu'en [[1997 en informatique|1997]]{{sfn|Singh|1999}}.
Ces découvertes n'auraient été rendues publiques par le GCHQ qu'en [[1997 en informatique|1997]]{{sfn|Singh|1999}}.

=== 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'[[Corps_fini#Applications pratiques|exponentiation dans un corps fini]], est devenue connue sous le nom d'[[échange de clés Diffie-Hellman]]<ref>{{Article|langue=en|prénom1=W.|nom1=Diffie|prénom2=M.|nom2=Hellman|titre=New directions in cryptography|périodique=IEEE Transactions on Information Theory|volume=22|numéro=6|date=1976-11|issn=0018-9448|doi=10.1109/TIT.1976.1055638|lire en ligne=http://ieeexplore.ieee.org/document/1055638/|consulté le=2022-12-14|pages=644–654}}</ref>. 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 {{unité|2000|ans}}<ref>[https://www.ionos.com/digitalguide/server/security/public-key-encryption/]</ref>.

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 [[Massachusetts Institute of Technology|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 modulaire|exponentiation modulo]] un produit de deux très grands [[Nombre premier|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'août 1977 de ''[[Scientific American]]''<ref>{{article|url=http://www.msri.org/people/members/sara/articles/rsa.pdf |journal=SIAM News |volume=36 |numéro=5 |date=June 2003 |titre=Still Guarding Secrets after Years of Attacks, RSA Earns Accolades for its Founders |prénom=Sara |nom=Robinson }}</ref>.

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 ==
== Fonctionnement ==
=== Principe général ===
=== Principe général ===
La '''cryptographie asymétrique''', ou ''cryptographie à clef publique'' est fondée sur l'existence des [[fonction à sens unique|fonctions à sens unique]] et à [[Fonction à brèche secrète|brèche secrète]].
La '''cryptographie asymétrique''', ou ''cryptographie à clé publique'' est fondée sur l'existence de [[fonction à sens unique|fonctions à sens unique]] et à [[Fonction à brèche secrète|trappe secrète]].


Les [[fonction à sens unique|fonctions à sens unique]] sont des [[fonction (mathématiques)|fonctions]] mathématiques telles qu'une fois appliquées à un message, il est extrêmement [[Théorie de la complexité (informatique théorique)|difficile]] de retrouver le message original.
Les [[fonction à sens unique|fonctions à sens unique]] sont des [[fonction (mathématiques)|fonctions]] mathématiques telles qu'une fois appliquées à un message, il est extrêmement [[Théorie de la complexité (informatique théorique)|difficile]] de retrouver le message original.


L'existence d'une [[Fonction à brèche secrète|brèche secrète]] permet cependant à la personne qui a conçu la fonction à sens unique de décoder facilement le message grâce à un élément d'information qu'elle possède, appelé clef privée.
L'existence d'une [[Fonction à brèche secrète|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 et Bob|Alice]] souhaite recevoir un message secret de [[Alice et Bob|Bob]] sur un canal susceptible d'être écouté par un attaquant passif [[Alice et Bob|Eve]] :
Supposons qu'[[Alice et Bob|Alice]] souhaite recevoir un message secret de [[Alice et Bob|Bob]] sur un canal susceptible d'être écouté par un attaquant passif [[Alice et Bob|Eve]] :
* Alice transmet à Bob une fonction à sens unique pour laquelle elle seule connait la brèche secrète ;
* 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 ;
* Bob utilise la fonction transmise par Alice pour chiffrer son message secret ;
* Alice réceptionne le message chiffré puis le décode grâce à la brèche secrète ;
* 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écoder, même si elle a également intercepté l'envoi de la fonction à sens unique, car elle n'a pas connaissance de la brèche 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 :
La terminologie classiquement retenue est :
* pour la fonction à sens unique : « clef publique » ;
* pour la fonction à sens unique : « clé publique » ;
* pour la brèche secrète : « clef privée ».
* pour la trappe secrète : « clé privée ».
En pratique, sont utilisées des fonctions de chiffrement [[:Catégorie:Algorithme de cryptographie asymétrique|classiques]], les termes « clef publique » et « clef privée » correspondant alors à des paramètres employés pour ces fonctions.
En pratique, sont utilisées des fonctions de chiffrement [[:Catégorie:Algorithme de cryptographie asymétrique|classiques]], les termes « clé publique » et « clé privée » correspondant alors à des paramètres employés pour ces fonctions.


=== Fonctionnement pratique ===
=== Fonctionnement pratique ===
Alice souhaite pouvoir recevoir des messages [[chiffrement|chiffrés]] de n'importe qui.
Alice souhaite pouvoir recevoir des messages [[chiffrement|chiffrés]] de n'importe qui.


==== Diffusion des clefs publiques ====
==== Diffusion des clés publiques ====
Elle génère alors une valeur à partir d'une fonction à sens unique et à brèche secrète à l'aide d'un algorithme de chiffrement asymétrique ([[:Catégorie:Algorithme de cryptographie asymétrique|liste ici]]), par exemple [[Rivest Shamir Adleman|RSA]]{{sfn|Rivest|Shamir|Adleman|1983}}.
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 ([[:Catégorie:Algorithme de cryptographie asymétrique|liste ici]]), par exemple [[Rivest Shamir Adleman|RSA]]{{sfn|Rivest|Shamir|Adleman|1983}}.


Alice diffuse à tout le monde la fonction pour coder les messages (notée clef publique) mais garde secrète la fonction de décodage (notée clef privée).
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).


[[Image:Asymmetric cryptography - step 1.svg|vignette|400px|centré|{{1re|étape}} : Alice génère deux clefs: Sa clef publique (verte) qu'elle envoie à Bob et sa clef privée (rouge) qu'elle conserve précieusement sans la divulguer à quiconque.]]
[[Image:Asymmetric cryptography - step 1.svg|vignette|400px|centré|{{1re|étape}} : 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.]]


[[Image:Asymmetric cryptography - step 2.svg|vignette|400px|centré|{{2e}} et {{3e|étapes}} : Bob chiffre le message avec la clef publique d'Alice et envoie le texte chiffré. Alice déchiffre le message grâce à sa clef privée.]]
[[Image:Asymmetric cryptography - step 2.svg|vignette|400px|centré|{{2e}} et {{3e|étapes}} : 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 ====
==== Chiffrement ====
L'un des rôles de la clef publique est de permettre le [[chiffrement]] ; c'est donc cette clef qu'utilisera Bob pour envoyer des messages chiffrés à Alice. L'autre clef — l'information secrète — sert à ''dé''chiffrer. Ainsi, Alice, et elle seule, peut prendre connaissance des messages de Bob. La connaissance d'une clef ne permet pas de déduire l'autre.
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 ====
==== Authentification de l'origine ====
D'autre part, l'utilisation par Alice de sa clef privée sur le [[Fonction de hachage|condensat]] d'un message, permettra à Bob de vérifier que le message provient bien d'Alice : il appliquera la clef publique d'Alice au condensat fourni (condensat chiffré avec la clef privée d'Alice) et retrouve 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.
D'autre part, l'utilisation par Bob de sa clé privée sur le [[Fonction de hachage|condensat]] d'un message, permettra à Alice de vérifier que le message provient bien de Bob : elle appliquera la clé publique de Bob au condensat fourni (condensat chiffré avec la clé privée de Bob) 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 Bob est bien l'expéditeur. C'est donc ainsi que Alice sera rassurée sur l'origine du message reçu : il appartient bien à Bob.
C'est sur ce mécanisme notamment que fonctionne la [[signature numérique]].
C'est sur ce mécanisme notamment que fonctionne la [[signature numérique]].


Ligne 67 : Ligne 74 :
=== Analogies ===
=== Analogies ===
==== Le coffre-fort ====
==== Le coffre-fort ====
Le chiffrement : Alice a choisi un coffre-fort. Elle l'envoie ouvert à Bob, et en garde la clef. Lorsque Bob veut écrire à Alice, il y dépose son message, ferme le coffre, il n'a pas besoin de la clef pour cela, et le renvoie à Alice. À sa réception, seule Alice peut ouvrir le coffre, puisqu'elle seule en possède la clef, à supposer le coffre inviolable, et que personne ne puisse refaire la clef.
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 clef privée avant de l'envoyer à Bob. Si Bob parvient à ouvrir le coffre à l'aide de la clef publique d'Alice (dont il dispose), c'est que c'est bien le coffre fermé par Alice puisque la clef 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.
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.


==== La boîte à deux serrures ====
==== La 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 clef correspondant à l'autre serrure permet l'ouverture de la boîte et vice-versa. Une des clefs 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.
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 clef publique. Seul le détenteur de la clef privée permettant d'accéder à l'autre serrure, Alice en l'occurrence, sera en mesure de rouvrir 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 clef privée. Ainsi n'importe qui ayant récupéré la clef publique pourra ouvrir la boîte. Mais comme la boîte a été fermée par la clef privée, cette personne sera assurée que c'est bien Alice, seule détentrice de cette clef, qui aura placé le message dans la boîte et fermé ladite 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 ===
=== Inconvénients et limites ===
En contrepartie de leurs propriétés spécifiques, les chiffrements asymétriques sont globalement moins performants que leurs équivalents [[chiffrement symétrique|symétriques]] : les temps de traitement sont plus longs et, pour un niveau de sécurité équivalent, les clefs doivent être beaucoup plus longues.
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 [[chiffrement symétrique|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===
Tous les schémas à clé publique sont en théorie sensibles à une "[[attaque par force brute]]"<ref>{{ouvrage|nom1=Paar|prénom1=Christof|prénom2=Jan|nom2=Pelzl|prénom3=Bart|nom3=Preneel|url=http://www.cryptotextbook.com|titre=Understanding Cryptography: A Textbook for Students and Practitioners|éditeur=Springer|année=2010|isbn=978-3-642-04100-6}}</ref>. Cependant, une telle attaque n'est pas pratique si la quantité de calcul nécessaire pour réussir - appelé le "facteur de travail" par [[Claude Shannon]] - est hors de portée de tous les attaquants potentiels. Dans de nombreux cas, le facteur de travail peut être augmenté en choisissant simplement une clé plus longue. Mais d'autres algorithmes peuvent intrinsèquement avoir des facteurs de travail beaucoup plus faibles, ce qui rend la résistance à une attaque par force brute (par exemple, à partir de touches plus longues) non pertinente. Certains algorithmes spéciaux et spécifiques ont été développés pour aider à attaquer certains algorithmes de chiffrement à clé publique ; le [[Chiffrement RSA|RSA]] et [[Cryptosystème de ElGamal|système de chiffrement ElGamal]] ont des attaques connues qui sont beaucoup plus rapides que l'approche de la force brute<ref>Mavroeidis, Vasileios, and Kamer Vishi, [https://arxiv.org/abs/1804.00200 "The Impact of Quantum Computing on Present Cryptography"], ''International Journal of Advanced Computer Science and Applications'', 31 March 2018</ref>. Cependant, aucun d'entre eux n'est suffisamment amélioré pour être réellement pratique.

Des faiblesses majeures ont été trouvées pour plusieurs algorithmes de clés asymétriques autrefois prometteurs. Le [[Cryptosystème de Merkle-Hellman|cryptosystème Merkle – Hellman]] a été jugé peu sûr après le développement d'une nouvelle attaque<ref>{{article|nom1=Shamir|prénom1=Adi|date=November 1982|titre=A polynomial time algorithm for breaking the basic Merkle-Hellman cryptosystem|url=https://ieeexplore.ieee.org/document/4568386|journal=23rd Annual Symposium on Foundations of Computer Science (SFCS 1982)|pages=145–152|doi=10.1109/SFCS.1982.5}}</ref>. Comme pour toutes les fonctions cryptographiques, les implémentations à clé publique peuvent être vulnérables aux [[Attaque par canal auxiliaire|attaques par canal auxiliaire]] qui exploitent les fuites d'informations pour simplifier la recherche d'une clé secrète<ref>{{Article|langue=en|prénom1=Linus|nom1=Backlund|prénom2=Kalle|nom2=Ngo|prénom3=Joel|nom3=Gärtner|prénom4=Elena|nom4=Dubrova|titre=Secret Key Recovery Attack on Masked and Shuffled Implementations of CRYSTALS-Kyber and Saber|périodique=Applied Cryptography and Network Security Workshops|pages=159–177|éditeur=Springer Nature Switzerland|date=2023|isbn=978-3-031-41181-6|doi=10.1007/978-3-031-41181-6_9|lire en ligne=https://link.springer.com/chapter/10.1007/978-3-031-41181-6_9|consulté le=2024-08-02}}</ref>{{,}}<ref>{{Chapitre|prénom1=Paul C.|nom1=Kocher|titre chapitre=Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems|titre ouvrage=Advances in Cryptology — CRYPTO ’96|volume=1109|éditeur=Springer Berlin Heidelberg|date=1996|pages totales=104–113|isbn=978-3-540-61512-5|doi=10.1007/3-540-68697-5_9|lire en ligne=http://link.springer.com/10.1007/3-540-68697-5_9|consulté le=2024-08-02}}</ref>. Ceux-ci sont souvent indépendants de l'algorithme utilisé. Des recherches sont en cours pour à la fois découvrir et se protéger contre de nouvelles attaques.

=== Altération des clés publiques ===
Une autre vulnérabilité de sécurité potentielle dans l'utilisation de clés asymétriques est la possibilité d'une attaque "[[Attaque de l'homme du milieu|man-in-the-middle]]", dans laquelle la communication des clés publiques est interceptée par un tiers (le "man in the middle") puis modifiée pour fournir des clés publiques différentes à la place. Les messages et les réponses chiffrés doivent, dans tous les cas, être interceptés, déchiffrés et rechiffrés par l'attaquant à l'aide des clés publiques correctes pour les différents segments de communication afin d'éviter tout soupçon.

Une communication est dite non sécurisée lorsque les données sont transmises d'une manière qui permet l'interception (également appelée "[[reniflage]]"). Ces termes font référence à la lecture des données privées de l'expéditeur dans leur intégralité. Une communication est particulièrement dangereuse lorsque les interceptions ne peuvent être empêchées ou surveillées par l'expéditeur<ref>{{lien web
|url=https://www.upguard.com/blog/man-in-the-middle-attack#mitm-sniffing
|titre=What Is a Man-in-the-Middle Attack and How Can It Be Prevented - What is the difference between a man-in-the-middle attack and sniffing?
|nom=Tunggal
|prénom=Abi
|date=February 20, 2020
|website=UpGuard
|consulté le=22 novembre 2022}}</ref>.

Une attaque de l'homme du milieu peut être difficile à mettre en œuvre en raison de la complexité des protocoles de sécurité modernes. Cependant, la tâche devient plus simple lorsqu'un expéditeur utilise des médias non sécurisés tels que des réseaux publics, Internet ou une communication sans fil. Dans ces cas, un attaquant peut compromettre l'infrastructure de communication plutôt que les données elles-mêmes. Un membre du personnel malveillant hypothétique d'un [[Fournisseur d'accès à Internet|fournisseur d'accès Internet]] (FAI) pourrait trouver une attaque de l'homme du milieu relativement simple. La capture de la clé publique nécessiterait uniquement de rechercher la clé lorsqu'elle est envoyée via le matériel de communication du FAI ; dans les schémas de clés asymétriques correctement mis en œuvre, ce n'est pas un risque significatif.

Dans certaines attaques avancées de l'homme du milieu, un côté de la communication verra les données d'origine tandis que l'autre recevra une variante malveillante. Les attaques asymétriques de l'homme du milieu peuvent empêcher les utilisateurs de réaliser que leur connexion est compromise. Cela reste le cas même lorsque les données d'un utilisateur sont connues pour être compromises parce que les données semblent correctes pour l'autre utilisateur. Cela peut conduire à des désaccords déroutants entre les utilisateurs tels que "ce doit être de votre côté !" lorsqu'aucun des utilisateurs n'est en faute. Par conséquent, les attaques de l'homme du milieu ne peuvent être entièrement évitées que lorsque l'infrastructure de communication est physiquement contrôlée par l'une ou les deux parties ; par exemple via une route câblée à l'intérieur du propre bâtiment de l'expéditeur. En résumé, les clés publiques sont plus faciles à modifier lorsque le matériel de communication utilisé par un expéditeur est contrôlé par un attaquant<ref>{{lien web
|url=https://www.upguard.com/blog/man-in-the-middle-attack#where
|titre=What Is a Man-in-the-Middle Attack and How Can It Be Prevented - Where do man-in-the-middle attacks happen?
|nom=Tunggal
|prénom=Abi
|date=February 20, 2020
|website=UpGuard
|consulté le=18 novembre 2022}}</ref>{{,}}<ref name="karl-GF">{{lien web|auteur=martin|titre=China, GitHub and the man-in-the-middle|url=https://en.greatfire.org/blog/2013/jan/china-github-and-man-middle|website=GreatFire|date=January 30, 2013|consulté le=27 novembre 2022|archive-url=https://web.archive.org/web/20160819165216/https://en.greatfire.org/blog/2013/jan/china-github-and-man-middle|archive-date=19 August 2016}}</ref>{{,}}<ref name="karll-GF">{{lien web
|url=https://en.greatfire.org/blog/2014/sep/authorities-launch-man-middle-attack-google
|titre=Authorities launch man-in-the-middle attack on Google
|auteur=percy
|date=September 4, 2014
|website=GreatFire
|consulté le=18 novembre 2022}}</ref>.

=== Infrastructure à clés publiques ===
Une approche pour prévenir de telles attaques implique l'utilisation d'une [[Infrastructure à clés publiques|infrastructure à clé publique]] (PKI) ; un ensemble de rôles, de politiques et de procédures nécessaires pour créer, gérer, distribuer, utiliser, stocker et révoquer des certificats numériques et gérer le chiffrement à clé publique.

Cependant, cela a des faiblesses potentielles. Par exemple, l'autorité de certification émettant le certificat doit être reconnue par toutes les parties participantes pour avoir correctement vérifié l'identité du détenteur de la clé, pour s'être assurée de l'exactitude de la clé publique lorsqu'elle émet un certificat, pour être à l'abri du piratage informatique, et avoir pris des dispositions avec tous les participants pour vérifier tous leurs certificats avant que les communications protégées puissent commencer.

Malgré ses problèmes théoriques et potentiels, cette approche est largement utilisée. Les exemples incluent [[Transport Layer Security|TLS]] et son prédécesseur [[Transport Layer Security|SSL]], qui sont couramment utilisés pour assurer la sécurité des transactions du [[Navigateur web|navigateur Web]] (par exemple, pour envoyer en toute sécurité les détails de la carte de crédit à une boutique en ligne).


Outre la résistance à l'attaque d'une paire de clés particulière, la sécurité de la hiérarchie de certification doit être prise en compte lors du déploiement de systèmes à clé publique. Certaines [[Autorité de certification|autorités de certification]] - généralement un programme spécialement conçu à cet effet et exécuté sur un ordinateur serveur - garantissent les identités attribuées à des clés privées spécifiques en produisant un certificat numérique. Les [[Certificat électronique|certificats numériques à clé publique]] sont généralement valides pendant plusieurs années à la fois, de sorte que les clés privées associées doivent être conservées en toute sécurité pendant cette période. Lorsqu'une clé privée utilisée pour la création de certificats à un niveau supérieur dans la hiérarchie du serveur PKI est compromise ou accidentellement divulguée, une "attaque de l'homme au milieu" est possible, rendant tout certificat subordonné totalement non sécurisé.
Si le chiffrement asymétrique permet de se prémunir des écoutes passives (''eavesdrop''), la transmission initiale de la clef publique sur un canal non sécurisé expose à des [[Attaque de l'homme du milieu|attaques de l'homme du milieu]]. Pour se prémunir contre ce risque on fait généralement appel à une [[infrastructure à clés publiques|infrastructure à clefs publiques]].


=== Articulation avec le chiffrement symétrique ===
=== Articulation avec le chiffrement symétrique ===
La cryptographie asymétrique répond à un besoin majeur de la [[cryptographie symétrique]] : le partage ''sécurisé'' d'une clef entre deux correspondants, afin de prévenir l'interception de cette clef par une personne tierce non autorisée, et donc la lecture des données chiffrées sans autorisation.
La cryptographie asymétrique répond à un besoin majeur de la [[cryptographie symétrique]] : le partage ''sécurisé'' d'une clé entre deux correspondants, afin de prévenir l'interception de cette clé par une personne tierce non autorisée, et donc la lecture des données chiffrées sans autorisation.


Les mécanismes de [[Cryptographie symétrique|chiffrement symétrique]] étant moins coûteux en [[Théorie de la complexité (informatique théorique)|temps de calcul]], ceux-ci sont préférés aux mécanismes de chiffrement asymétrique. Cependant toute utilisation de clef de chiffrement symétrique nécessite que les deux correspondants se ''partagent'' cette clef, c'est-à-dire la connaissent avant l'échange. Ceci peut être un problème si la communication de cette clef s'effectue par l'intermédiaire d'un [[Médias|medium]] non sécurisé, « en clair ». Afin de pallier cet inconvénient, on utilise un mécanisme de chiffrement asymétrique pour la seule phase d'échange de la clef symétrique, et l'on utilise cette dernière pour tout le reste de l'échange.
Les mécanismes de [[Cryptographie symétrique|chiffrement symétrique]] étant moins coûteux en [[Théorie de la complexité (informatique théorique)|temps de calcul]], ceux-ci sont préférés aux mécanismes de chiffrement asymétrique pour l'échange de données. Cependant toute utilisation de clé de chiffrement symétrique nécessite que les deux correspondants se ''partagent'' cette clé, c'est-à-dire la connaissent avant l'échange. C'est un problème si la communication de cette clé s'effectue par l'intermédiaire d'un [[Médias|medium]] non sécurisé, « en clair ». Afin de pallier cet inconvénient, on utilise souvent un mécanisme de chiffrement asymétrique pour la seule phase initiale d'échange de la clé symétrique, et l'on utilise ensuite cette dernière pour le reste de l'échange (la clé pouvant être renouvelée).


== Applications ==
== Applications ==
Ligne 92 : Ligne 140 :
{{article détaillé|Signature numérique}}
{{article détaillé|Signature numérique}}


Un inconvénient majeur de l'utilisation des mécanismes de chiffrement asymétriques est le fait que la clef publique est distribuée à toutes les personnes : ''Bob'', ''Carole'' et ''Alice'' souhaitant échanger des données de façon confidentielle. De ce fait, lorsque la personne possédant la clef privée, ''Alice'', déchiffre les données chiffrées, elle n'a aucun moyen de vérifier avec certitude la provenance de ces données (''Bob'' ou ''Carole'') : on parle de problèmes d'[[authentification]].
Un inconvénient majeur de l'utilisation des mécanismes de chiffrement asymétriques est le fait que la clé publique est distribuée à toutes les personnes : ''Bob'', ''Carole'' et ''Alice'' souhaitant échanger des données de façon confidentielle. De ce fait, lorsque la personne possédant la clé privée, ''Alice'', déchiffre les données chiffrées, elle n'a aucun moyen de vérifier avec certitude la provenance de ces données (''Bob'' ou ''Carole'') : on parle de problèmes d'[[authentification]].


Afin de résoudre ce problème, on utilise des [[Authentification|mécanismes d'authentification]] permettant de garantir la provenance des informations chiffrées. Ces mécanismes sont eux aussi fondés sur le chiffrement asymétrique dont le principe est le suivant : Bob souhaite envoyer des données chiffrées à Alice en lui garantissant qu'il en est l'expéditeur.
Afin de résoudre ce problème, on utilise des [[Authentification|mécanismes d'authentification]] permettant de garantir la provenance des informations chiffrées. Ces mécanismes sont eux aussi fondés sur le chiffrement asymétrique dont le principe est le suivant : Bob souhaite envoyer des données chiffrées à Alice en lui garantissant qu'il en est l'expéditeur.
# [[Fichier:Chiffrement asymétrique.jpg|vignette|661x661px|Méthode de chiffrement et de déchiffrement asymétrique]]Bob crée une paire de clefs asymétriques : il définit une clef privée et diffuse librement sa clef publique (notamment à Alice)
# Bob crée une paire de clés asymétriques : il définit une clé privée et diffuse librement sa clé publique (notamment à Alice)
# Alice crée une paire de clefs asymétriques : elle définit une clef privée et diffuse librement sa clef publique (notamment à Bob)
# Alice crée une paire de clés asymétriques : elle définit une clé privée et diffuse librement sa clé publique (notamment à Bob)
# Bob effectue un [[Fonction de hachage|condensat]] de son message « en clair » puis chiffre ce condensat avec sa clef '''privée'''
# Bob effectue un [[Fonction de hachage|condensat]] de son message « en clair » puis chiffre ce condensat avec sa clé '''privée'''
# Bob chiffre une seconde fois son message déjà chiffré avec la clef '''publique''' d'Alice
# Bob chiffre une seconde fois son message déjà chiffré avec la clé '''publique''' d'Alice
# Bob envoie alors le message chiffré à Alice
# Bob envoie alors le message chiffré à Alice
# Alice reçoit le message chiffré de Bob (mais qu'un tiers, par exemple Ève, pourrait intercepter)
# Alice reçoit le message chiffré de Bob (mais qu'un tiers, par exemple Ève, pourrait intercepter)
# Alice est en mesure de déchiffrer le message avec sa clef privée. Elle obtient alors un message lisible sous forme de condensat. Eve quant à elle ne peut pas déchiffrer le message intercepté de Bob car elle ne connait pas la clef privée d'Alice. En revanche Alice n'est pas sûre que le message déchiffré (sous forme de condensat) est bien celui de Bob
# Alice est en mesure de déchiffrer le message avec sa clé privée. Elle obtient alors un message lisible sous forme de condensat. Eve quant à elle ne peut pas déchiffrer le message intercepté de Bob car elle ne connait pas la clé privée d'Alice. En revanche Alice n'est pas sûre que le message déchiffré (sous forme de condensat) est bien celui de Bob
# Pour le lire, Alice va alors déchiffrer le condensat (chiffré avec la clef privée de Bob) avec la clef publique de Bob. Par ce moyen, Alice peut avoir la certitude que Bob est l'expéditeur. Dans le cas contraire, le message est indéchiffrable et elle pourra présumer qu'une personne malveillante a tenté de lui envoyer un message en se faisant passer pour Bob
# Pour le lire, Alice va alors déchiffrer le condensat (chiffré avec la clé privée de Bob) avec la clé publique de Bob. Par ce moyen, Alice peut avoir la certitude que Bob est l'expéditeur. Dans le cas contraire, le message est indéchiffrable et elle pourra présumer qu'une personne malveillante a tenté de lui envoyer un message en se faisant passer pour Bob


Cette méthode d'authentification utilise la spécificité des paires de clefs asymétriques : si l'on chiffre un message en utilisant la clef publique, alors on peut déchiffrer le message en utilisant la clef privée ; l'inverse est aussi possible : si l'on chiffre en utilisant la clef privée alors on peut déchiffrer en utilisant la clef publique.
Cette méthode d'authentification utilise la spécificité des paires de clés asymétriques : si l'on chiffre un message en utilisant la clé publique, alors on peut déchiffrer le message en utilisant la clé privée ; l'inverse est aussi possible : si l'on chiffre en utilisant la clé privée alors on peut déchiffrer en utilisant la clé publique.


=== Certificats ===
=== Certificats ===
La cryptographie asymétrique est également utilisée avec les [[Certificat électronique|certificats numériques]], celui-ci contenant la clef publique de l'entité associée au certificat. La clef privée est quant à elle stockée au niveau de cette dernière entité. Une application des certificats est par exemple la mise en œuvre d'une [[infrastructure à clés publiques|infrastructure à clefs publiques]] (PKI) pour gérer l'authentification et la [[signature numérique]] d'une entité, par exemple un [[serveur web]] ([[Apache (logiciel)|Apache]] avec le module [[Transport Layer Security|SSL]] par exemple), ou simplement un client souhaitant signer et chiffrer des informations à l'aide de son certificat de la façon décrite dans les sections précédentes.
La cryptographie asymétrique est également utilisée avec les [[Certificat électronique|certificats numériques]], celui-ci contenant la clé publique de l'entité associée au certificat. La clé privée est quant à elle stockée au niveau de cette dernière entité. Une application des certificats est par exemple la mise en œuvre d'une [[infrastructure à clés publiques]] (PKI) pour gérer l'authentification et la [[signature numérique]] d'une entité, par exemple un [[serveur web]] ([[Apache (logiciel)|Apache]] avec le module [[Transport Layer Security|SSL]] par exemple), ou simplement un client souhaitant signer et chiffrer des informations à l'aide de son certificat de la façon décrite dans les sections précédentes.


== Sécurité ==
== Sécurité ==
Un chiffrement symétrique au moyen d'une clef de {{nombre|128|[[bit]]s}} propose 2<sup>128</sup> (~ 3,4 10<sup>38</sup>) façons de chiffrer un message. Un pirate qui essaierait de déchiffrer le message par la [[attaque par force brute|force brute]] devrait les essayer une par une.
Un chiffrement symétrique au moyen d'une clé de {{nobr|128 [[bit]]s}} propose 2<sup>128</sup> (~ 3,4 10<sup>38</sup>) façons de chiffrer un message. Un pirate qui essaierait de déchiffrer le message par la [[attaque par force brute|force brute]] devrait les essayer une par une.


Pour les systèmes à clef publique, il en va autrement. Tout d'abord les clefs sont plus longues (par exemple 2048 bits minimum pour [[Rivest Shamir Adleman|RSA]]) ; en effet, elles possèdent une structure mathématique très particulière (on ne peut pas choisir une suite de bits aléatoire comme clef secrète, par exemple dans le cas du RSA, seuls les [[nombre premier|nombres premiers]] sont utilisés). Certains algorithmes exploitant cette structure sont plus efficaces qu'une recherche exhaustive sur, par exemple, {{nombre|1024|bits}}. Ainsi, dans le cas de RSA, le [[crible général des corps de nombres]] est une méthode plus efficace que la recherche exhaustive pour la [[factorisation]].
Pour les systèmes à clé publique, il en va autrement. Tout d'abord les clés sont plus longues (par exemple 2048 bits minimum pour [[Rivest Shamir Adleman|RSA]]) ; en effet, elles possèdent une structure mathématique très particulière (on ne peut pas choisir une suite de bits aléatoire comme clé secrète, par exemple dans le cas du RSA, seuls les [[nombre premier|nombres premiers]] sont utilisés). Certains algorithmes exploitant cette structure sont plus efficaces qu'une recherche exhaustive sur, par exemple, {{nombre|1024|bits}}. Ainsi, dans le cas de RSA, le [[crible général des corps de nombres|crible général par corps de nombres]] (NFS en anglais) est une méthode plus efficace que la recherche exhaustive pour la [[factorisation]].


Il faut noter le développement actuel de la cryptographie utilisant les [[Cryptographie sur les courbes elliptiques|courbes elliptiques]], qui permettent (au prix d'une théorie et d'implémentations plus complexes) l'utilisation de clefs nettement plus petites que celles des algorithmes classiques (une taille de {{nombre|160|bits}} étant considérée comme très sûre actuellement), pour un niveau de sécurité équivalent.
Il faut noter le développement actuel de la cryptographie utilisant les [[Cryptographie sur les courbes elliptiques|courbes elliptiques]], qui permettent (au prix d'une théorie et d'implémentations plus complexes) l'utilisation de clés nettement plus petites que celles des algorithmes classiques (une taille de {{nobr|160 bits}} étant considérée comme très sûre actuellement), pour un niveau de sécurité équivalent.


Dans son édition du 6 septembre 2013, le journal ''[[The Guardian]]'' affirmait que la [[NSA]] était capable de déchiffrer la plupart des données chiffrées circulant sur Internet{{sfn|Ball|Borger|Greenwald|2013}}. De nombreuses sources ont cependant indiqué que la NSA n'avait pas mathématiquement cassé les chiffrements mais s'appuierait sur des faiblesses d'implémentation des protocoles de sécurité{{sfn|Schneier|2013}}{{,}}{{sfn|Simonite|2013}}.
Dans son édition du 6 septembre 2013, le journal ''[[The Guardian]]'' affirmait que la [[NSA]] était capable de décrypter la plupart des données chiffrées circulant sur Internet{{sfn|Ball|Borger|Greenwald|2013}}. De nombreuses sources ont cependant indiqué que la NSA n'avait pas mathématiquement cassé les chiffrements mais s'appuierait sur des faiblesses d'implémentation des protocoles de sécurité{{sfn|Schneier|2013}}{{,}}{{sfn|Simonite|2013}}.


== Notes et références ==
== Notes et références ==
{{traduction/référence|en|Public-key cryptography|1127527146|type=note}}
{{Références|taille=36}}
{{Références|taille=36}}


Ligne 150 : Ligne 199 :
=== Articles connexes ===
=== Articles connexes ===
* [[Cryptographie hybride]]
* [[Cryptographie hybride]]
* [[Infrastructure à clés publiques|Infrastructures à clefs Publiques (PKI)]]
* [[Infrastructure à clés publiques|Infrastructures à clés Publiques (PKI)]]
* [[Authentification]]
* [[Authentification]]
* [[Authentification forte]]
* [[Authentification forte]]
Ligne 173 : Ligne 222 :
* {{lien web|auteur1=Bruce Schneier|url=https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html|titre=The NSA Is Breaking Most Encryption on the Internet|site=Schneier on Security|date=5 septembre 2013|consulté le =7 octobre 2013|langue=en|libellé=Schneier 2013}}.
* {{lien web|auteur1=Bruce Schneier|url=https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html|titre=The NSA Is Breaking Most Encryption on the Internet|site=Schneier on Security|date=5 septembre 2013|consulté le =7 octobre 2013|langue=en|libellé=Schneier 2013}}.
* {{lien web|auteur1=Tom Simonite|url=http://www.technologyreview.com/news/519171/nsa-leak-leaves-crypto-math-intact-but-highlights-known-workarounds/|titre=NSA Leak Leaves Crypto-Math Intact but Highlights Known Workarounds|site=MIT Technology Review|date=9 septembre 2013|consulté le= 7 octobre 2013|langue=en|libellé=Simonite 2013}}.
* {{lien web|auteur1=Tom Simonite|url=http://www.technologyreview.com/news/519171/nsa-leak-leaves-crypto-math-intact-but-highlights-known-workarounds/|titre=NSA Leak Leaves Crypto-Math Intact but Highlights Known Workarounds|site=MIT Technology Review|date=9 septembre 2013|consulté le= 7 octobre 2013|langue=en|libellé=Simonite 2013}}.
* {{lien web|lang=en|url=https://www.gnupg.org/gph/en/manual/c14.html|titre=The GNU Privacy Handbook|consulté le=18 mars 2021|id=gpg-handbook|libellé=GPG}}
* {{lien web|langue=en|url=https://www.gnupg.org/gph/en/manual/c14.html|titre=The GNU Privacy Handbook|consulté le=18 mars 2021|id=gpg-handbook|libellé=GPG}}


{{Portail|cryptologie}}
{{Portail|cryptologie}}

Dernière version du 7 août 2024 à 12:44

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[1].

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[2]. 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[1].

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

Ce système a deux utilisations majeures :

  • la confidentialité des messages reçus : c'est celle qu'on vient de décrire, 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 de l'expéditeur, garantissant la confidentialité du contenu ;
  • l'authentification de l'expéditeur d'un message (pas nécessairement confidentiel) : 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, ce qui garantit que le message a été 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[3].

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 National Computer Conference en 1976[4], puis publié quelques mois plus tard dans New Directions in Cryptography[5]. 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[6], même si ses articles[7] ne furent publiés qu'en 1978.

Mise en œuvre

[modifier | modifier le code]

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[8] 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é RSA Security. Le système Merkle-Hellman[9] est généralement considéré comme la première réalisation pratique d'un système de chiffrement à clé publique[10], il a cependant été prouvé non sûr par Shamir en 1982[11].

Recherches secrètes du GCHQ

[modifier | modifier le code]

Parallèlement aux recherches publiques, les services du chiffre britannique (GCHQ, Government Communications Headquarters) 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[12] :

Ces découvertes n'auraient été rendues publiques par le GCHQ qu'en 1997[12].

Découverte publique

[modifier | modifier le code]

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[13]. 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 2 000 ans[14].

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'août 1977 de Scientific American[15].

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

[modifier | modifier le code]

Principe général

[modifier | modifier le code]

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

[modifier | modifier le code]

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

Diffusion des clés publiques

[modifier | modifier le code]

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[16].

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).

1re étape : 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.
2e et 3e étapes : 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

[modifier | modifier le code]

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 à 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

[modifier | modifier le code]

D'autre part, l'utilisation par Bob de sa clé privée sur le condensat d'un message, permettra à Alice de vérifier que le message provient bien de Bob : elle appliquera la clé publique de Bob au condensat fourni (condensat chiffré avec la clé privée de Bob) 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 Bob est bien l'expéditeur. C'est donc ainsi que Alice sera rassurée sur l'origine du message reçu : il appartient bien à Bob. C'est sur ce mécanisme notamment que fonctionne la signature numérique.

Analyse fonctionnelle

[modifier | modifier le code]

Le coffre-fort

[modifier | modifier le code]

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.

La boîte à deux serrures

[modifier | modifier le code]

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

[modifier | modifier le code]

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

[modifier | modifier le code]

Tous les schémas à clé publique sont en théorie sensibles à une "attaque par force brute"[17]. Cependant, une telle attaque n'est pas pratique si la quantité de calcul nécessaire pour réussir - appelé le "facteur de travail" par Claude Shannon - est hors de portée de tous les attaquants potentiels. Dans de nombreux cas, le facteur de travail peut être augmenté en choisissant simplement une clé plus longue. Mais d'autres algorithmes peuvent intrinsèquement avoir des facteurs de travail beaucoup plus faibles, ce qui rend la résistance à une attaque par force brute (par exemple, à partir de touches plus longues) non pertinente. Certains algorithmes spéciaux et spécifiques ont été développés pour aider à attaquer certains algorithmes de chiffrement à clé publique ; le RSA et système de chiffrement ElGamal ont des attaques connues qui sont beaucoup plus rapides que l'approche de la force brute[18]. Cependant, aucun d'entre eux n'est suffisamment amélioré pour être réellement pratique.

Des faiblesses majeures ont été trouvées pour plusieurs algorithmes de clés asymétriques autrefois prometteurs. Le cryptosystème Merkle – Hellman a été jugé peu sûr après le développement d'une nouvelle attaque[19]. Comme pour toutes les fonctions cryptographiques, les implémentations à clé publique peuvent être vulnérables aux attaques par canal auxiliaire qui exploitent les fuites d'informations pour simplifier la recherche d'une clé secrète[20],[21]. Ceux-ci sont souvent indépendants de l'algorithme utilisé. Des recherches sont en cours pour à la fois découvrir et se protéger contre de nouvelles attaques.

Altération des clés publiques

[modifier | modifier le code]

Une autre vulnérabilité de sécurité potentielle dans l'utilisation de clés asymétriques est la possibilité d'une attaque "man-in-the-middle", dans laquelle la communication des clés publiques est interceptée par un tiers (le "man in the middle") puis modifiée pour fournir des clés publiques différentes à la place. Les messages et les réponses chiffrés doivent, dans tous les cas, être interceptés, déchiffrés et rechiffrés par l'attaquant à l'aide des clés publiques correctes pour les différents segments de communication afin d'éviter tout soupçon.

Une communication est dite non sécurisée lorsque les données sont transmises d'une manière qui permet l'interception (également appelée "reniflage"). Ces termes font référence à la lecture des données privées de l'expéditeur dans leur intégralité. Une communication est particulièrement dangereuse lorsque les interceptions ne peuvent être empêchées ou surveillées par l'expéditeur[22].

Une attaque de l'homme du milieu peut être difficile à mettre en œuvre en raison de la complexité des protocoles de sécurité modernes. Cependant, la tâche devient plus simple lorsqu'un expéditeur utilise des médias non sécurisés tels que des réseaux publics, Internet ou une communication sans fil. Dans ces cas, un attaquant peut compromettre l'infrastructure de communication plutôt que les données elles-mêmes. Un membre du personnel malveillant hypothétique d'un fournisseur d'accès Internet (FAI) pourrait trouver une attaque de l'homme du milieu relativement simple. La capture de la clé publique nécessiterait uniquement de rechercher la clé lorsqu'elle est envoyée via le matériel de communication du FAI ; dans les schémas de clés asymétriques correctement mis en œuvre, ce n'est pas un risque significatif.

Dans certaines attaques avancées de l'homme du milieu, un côté de la communication verra les données d'origine tandis que l'autre recevra une variante malveillante. Les attaques asymétriques de l'homme du milieu peuvent empêcher les utilisateurs de réaliser que leur connexion est compromise. Cela reste le cas même lorsque les données d'un utilisateur sont connues pour être compromises parce que les données semblent correctes pour l'autre utilisateur. Cela peut conduire à des désaccords déroutants entre les utilisateurs tels que "ce doit être de votre côté !" lorsqu'aucun des utilisateurs n'est en faute. Par conséquent, les attaques de l'homme du milieu ne peuvent être entièrement évitées que lorsque l'infrastructure de communication est physiquement contrôlée par l'une ou les deux parties ; par exemple via une route câblée à l'intérieur du propre bâtiment de l'expéditeur. En résumé, les clés publiques sont plus faciles à modifier lorsque le matériel de communication utilisé par un expéditeur est contrôlé par un attaquant[23],[24],[25].

Infrastructure à clés publiques

[modifier | modifier le code]

Une approche pour prévenir de telles attaques implique l'utilisation d'une infrastructure à clé publique (PKI) ; un ensemble de rôles, de politiques et de procédures nécessaires pour créer, gérer, distribuer, utiliser, stocker et révoquer des certificats numériques et gérer le chiffrement à clé publique.

Cependant, cela a des faiblesses potentielles. Par exemple, l'autorité de certification émettant le certificat doit être reconnue par toutes les parties participantes pour avoir correctement vérifié l'identité du détenteur de la clé, pour s'être assurée de l'exactitude de la clé publique lorsqu'elle émet un certificat, pour être à l'abri du piratage informatique, et avoir pris des dispositions avec tous les participants pour vérifier tous leurs certificats avant que les communications protégées puissent commencer.

Malgré ses problèmes théoriques et potentiels, cette approche est largement utilisée. Les exemples incluent TLS et son prédécesseur SSL, qui sont couramment utilisés pour assurer la sécurité des transactions du navigateur Web (par exemple, pour envoyer en toute sécurité les détails de la carte de crédit à une boutique en ligne).

Outre la résistance à l'attaque d'une paire de clés particulière, la sécurité de la hiérarchie de certification doit être prise en compte lors du déploiement de systèmes à clé publique. Certaines autorités de certification - généralement un programme spécialement conçu à cet effet et exécuté sur un ordinateur serveur - garantissent les identités attribuées à des clés privées spécifiques en produisant un certificat numérique. Les certificats numériques à clé publique sont généralement valides pendant plusieurs années à la fois, de sorte que les clés privées associées doivent être conservées en toute sécurité pendant cette période. Lorsqu'une clé privée utilisée pour la création de certificats à un niveau supérieur dans la hiérarchie du serveur PKI est compromise ou accidentellement divulguée, une "attaque de l'homme au milieu" est possible, rendant tout certificat subordonné totalement non sécurisé.

Articulation avec le chiffrement symétrique

[modifier | modifier le code]

La cryptographie asymétrique répond à un besoin majeur de la cryptographie symétrique : le partage sécurisé d'une clé entre deux correspondants, afin de prévenir l'interception de cette clé par une personne tierce non autorisée, et donc la lecture des données chiffrées sans autorisation.

Les mécanismes de chiffrement symétrique étant moins coûteux en temps de calcul, ceux-ci sont préférés aux mécanismes de chiffrement asymétrique pour l'échange de données. Cependant toute utilisation de clé de chiffrement symétrique nécessite que les deux correspondants se partagent cette clé, c'est-à-dire la connaissent avant l'échange. C'est un problème si la communication de cette clé s'effectue par l'intermédiaire d'un medium non sécurisé, « en clair ». Afin de pallier cet inconvénient, on utilise souvent un mécanisme de chiffrement asymétrique pour la seule phase initiale d'échange de la clé symétrique, et l'on utilise ensuite cette dernière pour le reste de l'échange (la clé pouvant être renouvelée).

Applications

[modifier | modifier le code]

Mécanismes d'authentification

[modifier | modifier le code]

Un inconvénient majeur de l'utilisation des mécanismes de chiffrement asymétriques est le fait que la clé publique est distribuée à toutes les personnes : Bob, Carole et Alice souhaitant échanger des données de façon confidentielle. De ce fait, lorsque la personne possédant la clé privée, Alice, déchiffre les données chiffrées, elle n'a aucun moyen de vérifier avec certitude la provenance de ces données (Bob ou Carole) : on parle de problèmes d'authentification.

Afin de résoudre ce problème, on utilise des mécanismes d'authentification permettant de garantir la provenance des informations chiffrées. Ces mécanismes sont eux aussi fondés sur le chiffrement asymétrique dont le principe est le suivant : Bob souhaite envoyer des données chiffrées à Alice en lui garantissant qu'il en est l'expéditeur.

  1. Bob crée une paire de clés asymétriques : il définit une clé privée et diffuse librement sa clé publique (notamment à Alice)
  2. Alice crée une paire de clés asymétriques : elle définit une clé privée et diffuse librement sa clé publique (notamment à Bob)
  3. Bob effectue un condensat de son message « en clair » puis chiffre ce condensat avec sa clé privée
  4. Bob chiffre une seconde fois son message déjà chiffré avec la clé publique d'Alice
  5. Bob envoie alors le message chiffré à Alice
  6. Alice reçoit le message chiffré de Bob (mais qu'un tiers, par exemple Ève, pourrait intercepter)
  7. Alice est en mesure de déchiffrer le message avec sa clé privée. Elle obtient alors un message lisible sous forme de condensat. Eve quant à elle ne peut pas déchiffrer le message intercepté de Bob car elle ne connait pas la clé privée d'Alice. En revanche Alice n'est pas sûre que le message déchiffré (sous forme de condensat) est bien celui de Bob
  8. Pour le lire, Alice va alors déchiffrer le condensat (chiffré avec la clé privée de Bob) avec la clé publique de Bob. Par ce moyen, Alice peut avoir la certitude que Bob est l'expéditeur. Dans le cas contraire, le message est indéchiffrable et elle pourra présumer qu'une personne malveillante a tenté de lui envoyer un message en se faisant passer pour Bob

Cette méthode d'authentification utilise la spécificité des paires de clés asymétriques : si l'on chiffre un message en utilisant la clé publique, alors on peut déchiffrer le message en utilisant la clé privée ; l'inverse est aussi possible : si l'on chiffre en utilisant la clé privée alors on peut déchiffrer en utilisant la clé publique.

Certificats

[modifier | modifier le code]

La cryptographie asymétrique est également utilisée avec les certificats numériques, celui-ci contenant la clé publique de l'entité associée au certificat. La clé privée est quant à elle stockée au niveau de cette dernière entité. Une application des certificats est par exemple la mise en œuvre d'une infrastructure à clés publiques (PKI) pour gérer l'authentification et la signature numérique d'une entité, par exemple un serveur web (Apache avec le module SSL par exemple), ou simplement un client souhaitant signer et chiffrer des informations à l'aide de son certificat de la façon décrite dans les sections précédentes.

Un chiffrement symétrique au moyen d'une clé de 128 bits propose 2128 (~ 3,4 1038) façons de chiffrer un message. Un pirate qui essaierait de déchiffrer le message par la force brute devrait les essayer une par une.

Pour les systèmes à clé publique, il en va autrement. Tout d'abord les clés sont plus longues (par exemple 2048 bits minimum pour RSA) ; en effet, elles possèdent une structure mathématique très particulière (on ne peut pas choisir une suite de bits aléatoire comme clé secrète, par exemple dans le cas du RSA, seuls les nombres premiers sont utilisés). Certains algorithmes exploitant cette structure sont plus efficaces qu'une recherche exhaustive sur, par exemple, 1 024 bits. Ainsi, dans le cas de RSA, le crible général par corps de nombres (NFS en anglais) est une méthode plus efficace que la recherche exhaustive pour la factorisation.

Il faut noter le développement actuel de la cryptographie utilisant les courbes elliptiques, qui permettent (au prix d'une théorie et d'implémentations plus complexes) l'utilisation de clés nettement plus petites que celles des algorithmes classiques (une taille de 160 bits étant considérée comme très sûre actuellement), pour un niveau de sécurité équivalent.

Dans son édition du 6 septembre 2013, le journal The Guardian affirmait que la NSA était capable de décrypter la plupart des données chiffrées circulant sur Internet[26]. De nombreuses sources ont cependant indiqué que la NSA n'avait pas mathématiquement cassé les chiffrements mais s'appuierait sur des faiblesses d'implémentation des protocoles de sécurité[27],[28].

Notes et références

[modifier | modifier le code]
(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Public-key cryptography » (voir la liste des auteurs).
  1. a b et c Katz et Lindell 2014, p. 375.
  2. GPG Handbook
  3. Katz et Lindell 2014, p. 439.
  4. Diffie et Hellman juin 1976.
  5. Diffie et Hellman novembre 1976.
  6. Menezes, Van Oorschot et Vanstone 1997, p. 47.
  7. Merkle 1978.
  8. Rivest, Shamir et Adleman 1978.
  9. Merkle et Hellman 1978.
  10. Menezes, Van Oorschot et Vanstone 1997, p. 300.
  11. Shamir 1983.
  12. a et b Singh 1999.
  13. (en) W. Diffie et M. Hellman, « New directions in cryptography », IEEE Transactions on Information Theory, vol. 22, no 6,‎ , p. 644–654 (ISSN 0018-9448, DOI 10.1109/TIT.1976.1055638, lire en ligne, consulté le )
  14. [1]
  15. Sara Robinson, « Still Guarding Secrets after Years of Attacks, RSA Earns Accolades for its Founders », SIAM News, vol. 36, no 5,‎ (lire en ligne)
  16. Rivest, Shamir et Adleman 1983.
  17. Christof Paar, Jan Pelzl et Bart Preneel, Understanding Cryptography: A Textbook for Students and Practitioners, Springer, (ISBN 978-3-642-04100-6, lire en ligne)
  18. Mavroeidis, Vasileios, and Kamer Vishi, "The Impact of Quantum Computing on Present Cryptography", International Journal of Advanced Computer Science and Applications, 31 March 2018
  19. Adi Shamir, « A polynomial time algorithm for breaking the basic Merkle-Hellman cryptosystem », 23rd Annual Symposium on Foundations of Computer Science (SFCS 1982),‎ , p. 145–152 (DOI 10.1109/SFCS.1982.5, lire en ligne)
  20. (en) Linus Backlund, Kalle Ngo, Joel Gärtner et Elena Dubrova, « Secret Key Recovery Attack on Masked and Shuffled Implementations of CRYSTALS-Kyber and Saber », Applied Cryptography and Network Security Workshops, Springer Nature Switzerland,‎ , p. 159–177 (ISBN 978-3-031-41181-6, DOI 10.1007/978-3-031-41181-6_9, lire en ligne, consulté le )
  21. Paul C. Kocher, « Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems », dans Advances in Cryptology — CRYPTO ’96, vol. 1109, Springer Berlin Heidelberg, , 104–113 p. (ISBN 978-3-540-61512-5, DOI 10.1007/3-540-68697-5_9, lire en ligne)
  22. Abi Tunggal, « What Is a Man-in-the-Middle Attack and How Can It Be Prevented - What is the difference between a man-in-the-middle attack and sniffing? », sur UpGuard, (consulté le )
  23. Abi Tunggal, « What Is a Man-in-the-Middle Attack and How Can It Be Prevented - Where do man-in-the-middle attacks happen? », sur UpGuard, (consulté le )
  24. martin, « China, GitHub and the man-in-the-middle » [archive du ], sur GreatFire, (consulté le )
  25. percy, « Authorities launch man-in-the-middle attack on Google », sur GreatFire, (consulté le )
  26. Ball, Borger et Greenwald 2013.
  27. Schneier 2013.
  28. Simonite 2013.

Bibliographie

[modifier | modifier le code]
  • [Barthélemy, Rolland et Véron 2005] Pierre Barthélemy, Robert Rolland et Pascal Véron (préf. Jacques Stern), Cryptographie : principes et mises en œuvre, Paris, Hermes Science Publications : Lavoisier, coll. « Collection Informatique », , 414 p., broché (ISBN 2-7462-1150-5, ISSN 1242-7691, OCLC 85891916).
  • [Diffie et Hellman juin 1976] (en) Whitfield Diffie et Martin E. Hellman, « Multiuser cryptographic technics », Proceedings of AFIPS National Computer Conference,‎ , p. 109-112 (DOI 10.1145/1499799.1499815).
  • [Diffie et Hellman novembre 1976] (en) Whitfield Diffie et Martin E. Hellman, « New directions in cryptography », IEEE Trans. Inf. Theory, vol. 22, no 6,‎ , p. 644-654.
  • [Katz et Lindell 2014] (en) Jonathan Katz et Yehuda Lindell, Introduction to Modern Cryptography, 2nd Edition, Boca Raton, Chapman and Hall, , 583 p. (ISBN 978-1-4665-7026-9, lire en ligne), III. Public-Key (Asymmetric) Cryptography.
  • [Menezes, Van Oorschot et Vanstone 1997] (en) A. J. Menezes, P. C. Van Oorschot et S. A. Vanstone, Handbook of Applied Cryptography, Boca Raton, CRC Press, coll. « CRC Press Series on Discrete Mathematics and Its Applications », , 780 p. (ISBN 978-0-8493-8523-0, OCLC 247238920).
  • [Merkle 1978] (en) Ralph C. Merkle, « Secure communications over insecure channels », Communications of the ACM, vol. 21,‎ , p. 294-299.
  • [Merkle et Hellman 1978] (en) Ralph C. Merkle et Martin E. Hellman, « Hiding information and signatures in trapdoor functions », IEEE Trans. Inf. Theory, vol. 24,‎ , p. 525-530.
  • [Rivest, Shamir et Adleman 1978] (en) Ronald Rivest, Adi Shamir et Leonard Adleman, « A method for obtaining digital signatures and public-key cryptosystems », Communications of the ACM, vol. 21,‎ , p. 120-126 (lire en ligne).
  • [Rivest, Shamir et Adleman 1983] (en) Ronald L. Rivest, Adi Shamir et Leonard L. Adleman, « Cryptographic communications system and method », United States Patent, no 4405829,‎ (lire en ligne).
  • [Shamir 1983] (en) Adi Shamir, « A polynomial time algorithm for breaking the basic Merkle-Hellman crypto-system », Advances in cryptology, Proceedings of Crypto 82,‎ , p. 279-288.
  • [Singh 1999] Simon Singh (trad. de l'anglais par Catherine Coqueret), Histoire des codes secrets : De l'Égypte des pharaons à l'ordinateur quantique [« The code Book »], Paris, Jean-Claude Lattès, , 430 p. (ISBN 978-2-7096-2048-2, OCLC 43323003), chap. 6 (« Alice et Bernard s'affichent en public »).

Articles connexes

[modifier | modifier le code]

Logiciels de cryptographie asymétrique

[modifier | modifier le code]
  • Pretty Good Privacy ou PGP, logiciel existant en versions payante et gratuite (aux fonctionnalités plus réduites).
  • GNU Privacy Guard ou GPG ou GnuPG, version Libre (open-source) et gratuite de PGP.
  • OpenSSL (Open Secure Socket Layer), version libre et gratuite permettant, notamment, de développer des fonctionnalités à base de chiffrement asymétrique.
  • Acid Cryptofiler, logiciel développé par la Délégation Générale pour l'armement pour un usage gouvernemental.

Liens externes

[modifier | modifier le code]