Cryptographie à clé publique

 

Dernière rubrique modifiée : 2005-05-19

Cette rubrique est une introduction générale aux éléments de cryptographie à clé publique portant spécifiquement sur la sécurité des messages. Il existe d'autres sources d'information vous permettant d'approfondir votre étude du sujet.

La cryptographie est une technique de protection des données faisant appel à des codes et des chiffrements. Elle constitue un élément fondamental de la sécurité des messages.

Simplifié à l'extrême, un code est un processus permettant de modifier méthodiquement des informations afin de les rendre illisibles sans qu'il soit possible de savoir comment ces informations ont été modifiées. L'un des premiers codes, et le plus rudimentaire (appelé Chiffrement de Jules César), consistait à décaler les lettres de l'alphabet d'une valeur fixe. L'expéditeur et le destinataire du message connaissaient tous deux la valeur de décalage et pouvaient ainsi utiliser ce code pour modifier des informations qu'ils étaient les seuls à pouvoir comprendre. Le processus de transformation des informations en code s'appelle le cryptage et l'opération inverse le décryptage. Le message d'origine est appelé « texte en clair ». Le message modifié est appelé « texte crypté ». Les informations utilisées pour transformer le texte en clair en texte crypté forment ce que l'on appelle la « clé ». On désigne la méthode particulière par laquelle une clé transforme des informations par le terme d'algorithme.

noteRemarque :
Ne confondez pas le texte en clair avec le texte brut lorsqu'il est fait référence au format d'un message électronique. Dans ce contexte, l'expression « texte brut » sert à faire la distinction entre un message au format HTML et un message au format RTF. Dans le contexte de la sécurité des messages, l'expression « texte en clair » est utilisée par opposition au texte crypté, afin d'indiquer que le texte en question n'est pas crypté.

Par exemple, si un expéditeur souhaite crypter un message à l'aide du chiffrement de César, il sait que la clé remplacera chaque occurrence de la lettre A par la lettre D dans le texte crypté, chaque occurrence de la lettre B par la lettre E, et ainsi de suite. Cette clé, qui utilise l'algorithme « Décaler les lettres de trois vers la fin de l'alphabet », crypte le mot « aide » en « dlgh ».

Lorsque le destinataire reçoit le message en texte crypté, il transforme le texte crypté en texte en clair à l'aide de la clé permettant de décrypter les informations qui dans ce cas utilise un algorithme consistant à décaler les lettres de trois vers le début de l'alphabet, à l'inverse du cryptage initial.

Dans cet exemple, l'expéditeur et le destinataire du message doivent garder la clé secrète car toute personne venant à la découvrir peut l'utiliser pour décrypter le message. La perte d'une clé rend le cryptage inutilisable. En outre, la force de l'algorithme a de l'importance. Une personne non autorisée peut récupérer le texte crypté et chercher à « craquer » le cryptage en déterminant la clé à partir du texte crypté.

Notez que l'expéditeur et le destinataire utilisent tous les deux la même clé. Ce type de cryptage est appelé « cryptage à clé symétrique », car les deux intervenants utilisent la même clé.

Bien qu'il s'agisse d'un exemple simple, il illustre bien les concepts et fonctionnalités de base de la cryptographie. Les progrès effectués récemment dans le domaine de la cryptographie sont infimes.

Fonctionnement de la cryptographie à clé publique

En 1976, Whitfield Diffe et Martin Hellman mirent au point la cryptographie à clé publique. Cette cryptographie constituait un progrès majeur car elle modifiait fondamentalement le processus de cryptage et de décryptage.

Au lieu d'utiliser une seule clé secrète, connue uniquement des deux parties, Diffe et Hellman proposèrent d'en utiliser deux. La première, appelée « clé privée », reste secrète. Au lieu d'être communiquée aux deux parties, elle n'est détenue que par un seul des intervenants. La deuxième clé, appelée « clé publique », n'est pas tenue secrète et peut être communiquée librement. Ces deux clés, ou cette « paire de clés » comme l'on dit, peuvent être combinées pour les opérations de cryptage et de décryptage. Il existe une relation réciproque spéciale entre les clés d'une même paire de sorte que l'une ne peut être utilisée sans l'autre. Cette relation lie les clés l'une à l'autre de manière exclusive : une clé publique et sa clé privée correspondante sont associées l'une à l'autre et ne sont reliées à aucune autre clé.

Cette association est possible parce qu'il existe une relation mathématique spéciale entre les algorithmes des clés publiques et des clés privées. Les clés de la paire sont reliées mathématiquement de sorte que l'utilisation de la paire permet d'obtenir le même résultat que si l'on utilisait deux fois une clé symétrique. Les clés doivent impérativement être utilisées ensemble : chacune des clés ne peut être utilisée seule pour annuler sa propre opération. En d'autres termes, l'opération effectuée par chaque clé est une opération à sens unique : il est impossible d'utiliser une clé pour inverser l'opération effectuée à l'aide de cette clé. En outre, les algorithmes mis en œuvre par les deux clés sont conçus de sorte qu'il n'est possible d'utiliser une clé pour déterminer l'autre clé de la paire. Ainsi, la clé privée ne peut être découverte à l'aide de la clé publique. Les règles mathématiques qui permettent d'associer les clés sont à l'origine d'un des inconvénients que posent les paires de clés par rapport aux clés symétriques. Les algorithmes employés doivent être assez solides pour qu'il soit impossible d'utiliser la clé publique connue de tous pour décrypter des informations qu'elle a permis de crypter en procédant à une attaque en force. Une clé publique est le fruit de calculs mathématiques complexes et sa nature à sens unique permet de parer au fait qu'elle soit connue publiquement en empêchant le public d'accéder aux informations qu'elle permet de crypter.

Si l'on applique ce concept à l'exemple précédent, l'expéditeur utiliserait la clé publique pour crypter du texte en clair. Le destinataire utiliserait ensuite la clé privée pour décrypter le texte et récupérer le texte en clair.

Étant donné la relation spéciale existant entre la clé privée et la clé publique d'une paire, une personne peut utiliser la même paire de clés avec plusieurs personnes au lieu d'avoir à utiliser une clé différente pour chacune d'entre elles. Tant que la clé privée reste secrète, la clé publique peut être communiquée librement et être utilisée en toute sécurité. La possibilité d'utiliser une paire de clés unique avec un grand nombre de personnes représente une percée importante dans le domaine de la cryptographie dont elle améliore l'utilisation en réduisant de façon considérable les besoins de gestion des clés. Un utilisateur peut partager une paire de clés avec autant de personnes qu'il le souhaite sans avoir à créer une clé secrète unique pour chacune d'entre elles.

Cryptographie à clé publique et sécurité des messages

La cryptographie à clé publique est un élément fondamental de la sécurité des messages. Sans elle, il n'existerait sans doute pas de solutions de sécurité pratiques, la gestion des clés avant son apparition ayant été particulièrement fastidieuse. Après avoir abordé les concepts de base de la cryptographie à clé publique, nous pouvons maintenant passer à l'étape suivante et découvrir comment ces concepts interagissent pour assurer la sécurité des messages.

Cryptographie à clé publique et signatures numériques

Comme mentionné au cours de la section précédente, la possibilité d'identifier de manière unique l'expéditeur d'un message est un élément central des signatures numériques. La réciprocité de la relation qui unit deux clés au sein d'une paire permet à la cryptographie à clé publique d'atteindre cet objectif d'identification unique.

La clé privée n'appartenant qu'à une seule partie, chaque fois qu'il apparaît qu'elle a été utilisée, on peut en conclure que seul le propriétaire de la clé a pu en faire usage. Ainsi, l'utilisation d'une clé privée s'apparente à la signature d'un document papier puisque seul le détenteur d'une signature peut effectivement l'apposer. La signature atteste de la présence de son détenteur tout comme l'utilisation d'une clé privée confirme la présence du sien.

Si une paire de clés a été utilisée avec succès dans une opération de cryptage et décryptage, cela signifie que la clé privée a été utilisée pour une partie de l'opération. La clé publique étant liée à une seule clé privée, la clé publique correspondante peut être utilisée pour identifier exclusivement la clé privée qui lui est associée. Si une clé publique a été utilisée avec succès dans une opération de cryptage et décryptage, on peut en déduire que la clé privée correspondante a été utilisée pour une partie de l'opération. Étant donné que seul le détenteur des clés peut utiliser la clé privée, cela signifie que le détenteur de clés et lui seul peut avoir effectué une partie de l'opération de cryptage et décryptage.

L'utilisation d'une clé privée pour établir l'identité indique que l'opération complète de cryptage et décryptage s'est exécutée avec succès. Une opération complète consiste à avoir crypté le texte en clair à l'aide d'une clé privée et à l'avoir décrypté à l'aide de la clé publique correspondante. Si cette opération est indiquée comme réussie, l'utilisation de la clé privée, et d'elle seule, est démontrée.

Pour qu'une opération de cryptage et décryptage soit indiquée comme réussie, il faut que le texte en clair présent avant le cryptage et le décryptage correspondent au texte en clair après cryptage et décryptage. Les deux ensembles de texte en clair doivent être comparés en direct et correspondre de manière absolue. Il doit y avoir un contrôle permettant d'établir cette comparaison et de procéder à la validation.

Dans la messagerie électronique, la fonction de contrôle est remplie par le message à proprement parler. Étant donné qu'il est disponible à la fois à l'expéditeur et au destinataire, le message constitue un élément de contrôle pratique.

Pour être utilisé dans l'opération de comparaison, le message est converti en une valeur de hachage qui est une représentation numérique du texte intégral. Deux textes de messages identiques produisent des valeurs de hachage identiques.

En combinant la valeur de hachage d'un message à la clé privée lors de l'envoi du message, le détenteur de la clé privée établit que lui seul est l'expéditeur du message.

La combinaison du message à la clé privée s'effectue en cryptant la valeur de hachage à l'aide de la clé privée de l'expéditeur, ce qui crée la signature numérique à proprement parler. Selon la configuration du système de messagerie de l'expéditeur, la signature numérique est ensuite ajoutée en bas du message, créant un message à « signature en clair » ou bien combinée avec le message original dans une pièce jointe binaire, créant un message « à signature opaque ».

La signature numérique étant jointe au message d'origine, les messages à signature en clair peuvent être lus par des clients de messagerie électronique qui ne prennent pas en charge le protocole S/MIME. La signature est supprimée et le message d'origine est affiché par des clients ne prenant pas en charge S/MIME. Cependant, il n'existe aucun moyen de vérifier le message ; cela revient pratiquement à avoir un message sans signature. Les messages à signature en clair présentent l'inconvénient d'augmenter les risques que le message ait été modifié par les passerelles de messagerie impliquées et donc que la signature soit invalide.

Inversement, dans les messages à signature opaque, le message et la signature numérique étant traités comme une seule pièce jointe binaire, les risques de modification en cours de transit sont moindres. Cependant, seul un client S/MIME peut lire la pièce jointe. Si un client ne prenant pas en charge S/MIME reçoit un message à signature opaque, le message reste illisible.

Les messages à signature opaque ont été partiellement créés pour résoudre le problème des systèmes de messagerie qui modifiaient le corps du message en cours de transit. Il est important de noter que les solutions de messagerie actuelles conformes aux normes S/MIME ne modifient pas le corps du message. Bon nombre de clients ne peuvent toutefois pas lire les messages à signature opaque. Il est donc recommandé d'envoyer des messages à signature opaque.

Lors de la réception du message, la signature numérique peut être récupérée et la clé publique de l'expéditeur est mise en œuvre dans une opération de décryptage qui produit la valeur de hachage originale du message. Cette valeur peut alors être comparée à la valeur de hachage du message reçu. Étant donné qu'une seule clé privée peut correspondre à une clé publique et que seul le détenteur de la clé publique a pu l'utiliser pour crypter la valeur de hachage, le décryptage de la valeur de hachage à l'aide de la clé publique établit que c'est bien le détenteur de la clé privé qui a crypté la valeur de hachage. Cette dernière étant une représentation numérique du texte du message, si la valeur de hachage cryptée correspond à la valeur de hachage du message reçu, cela indique que le texte du message envoyé correspond au texte reçu. Si l'on ajoute cela au fait que seul le détenteur de la clé privé a pu envoyer le message, il en résulte que le destinataire a la garantie que seul le détenteur de la clé a envoyé le message, ce qui satisfait aux besoins d'authentification et par conséquent, de non répudiation. Cela indique également que le message n'a pas été modifié, ce qui garantit l'intégrité des données. Si les valeurs de hachage sont différentes, le destinataire peut en conclure que le message a été modifié en cours de transit ou que la clé publique utilisée ne correspond pas à la clé privée mise en œuvre. Dans les deux cas, le destinataire sait que le message n'est pas valide et que son contenu n'est pas digne de confiance.

La manière dont la cryptographie à clé publique assure les services de sécurité qui composent les signatures numériques devient alors apparente.

La figure suivante décrit une opération de signature couplée aux éléments de prise en charge de la cryptographie à clé publique.

35451fb8-5e11-4d67-ba6e-e5d4da6febca

  1. Le message est capturé.
  2. La valeur de hachage du message est calculée.
  3. La clé privée de l'expéditeur est récupérée.
  4. La valeur de hachage est cryptée à l'aide de la clé privée de l'expéditeur.
  5. La valeur de hachage cryptée est ajoutée au message sous la forme d'une signature numérique.
  6. Le message est envoyé.

La figure suivante décrit une opération de vérification couplée aux éléments de prise en charge de la cryptographie à clé publique.

d1b14a27-5cfb-4df2-89f7-990219378716

  1. Le message est reçu.
  2. La signature numérique contenant la valeur de hachage cryptée est extraite du message.
  3. Le message est récupéré.
  4. La valeur de hachage du message est calculée.
  5. La clé publique de l'expéditeur est récupérée.
  6. La valeur de hachage cryptée est décryptée à l'aide de la clé publique de l'expéditeur.
  7. La valeur de hachage décryptée est comparée à la valeur de hachage produite lors de la réception.
  8. Si les valeurs correspondent, le message est valide.

Cette séquence illustre la façon dont la cryptographie à clé publique offre les fonctionnalités permettant à une signature numérique de remplir ses services de sécurité centrales que sont l'authentification, la non répudiation et l'intégrité des données.

Cryptographie à clé publique et cryptage des messages

Contrairement aux signatures numériques, la relation entre la cryptographie à clé publique et le cryptage des messages est généralement plus évidente, le cryptage étant une fonction centrale de la cryptographie à clé publique. Cependant, le cryptage des messages ne résulte pas uniquement du cryptage et décryptage du message à l'aide de la paire de clés. Cette dernière est utilisée pour le cryptage de messages mais pas pour l'ensemble du message.

L'objectif du cryptage des messages consistant à garantir que seuls les destinataires autorisés puissent prendre connaissance d'un message, la clé privée de chaque destinataire remplit parfaitement cette fonction. La clé privée ne peut être utilisée avec succès que si elle est utilisée par son détenteur, c'est pourquoi l'utilisation de la clé au cours de la lecture du message permet d'assurer que le détenteur de cette clé, et lui seul, peut lire le message. Elle garantit la confidentialité des données qui est un élément sous-jacent du cryptage des messages. En outre, la clé publique pouvant être distribuée librement, cela permet à plusieurs personnes d'envoyer des informations à un détenteur de clé privée unique.

Cependant, la paire de clés n'est pas utilisée sur l'ensemble du message car l'opération de cryptage et décryptage à l'aide d'une paire de clés est un processus fastidieux résultant de la nécessaire complexité des algorithmes des clés. Bien qu'il faille utiliser une paire de clés, il n'est pas indispensable de le faire sur l'ensemble du message. Elle a simplement besoin d'être intégrée au processus de verrouillage et déverrouillage des informations. Tant que le message reste illisible jusqu'à ce que la clé privée soit présentée, l'objectif du cryptage des messages est atteint.

Comme mentionné dans la section sur le fonctionnement de la cryptographie à clé publique plus haut dans cette rubrique, les clés publiques mettent en œuvre des algorithmes puissants pour compenser le fait qu'elles soient connues publiquement. Ces algorithmes puissants sont plus volumineux et les calculs qui les utilisent sont donc plus lents que les anciennes clés symétriques. Une clé privée ne servant qu'à déverrouiller des informations avant qu'elles ne soient affichées, et non sur l'ensemble du message, il est plus économique d'utiliser une paire de clés sur le moins d'informations possible et d'employer une clé symétrique sur autant d'informations que possible tout en s'assurant que les informations ne peuvent être utilisées tant que la clé privée n'a pas été présentée.

Les clés symétriques utilisent une clé secrète que les deux parties doivent impérativement connaître. Ce processus est parfois appelé « négociation de clés ». Dans le cas des paires de clés, il n'existe pas de négociation de clés car une clé publique peut être utilisée par plusieurs personnes. Les paires de clés peuvent également être utilisées en conjonction avec des clés symétriques pour gérer la négociation des clés. Une clé symétrique peut être choisie puis cryptée à l'aide de la clé publique d'une paire de clés puis envoyée au détenteur de la clé privée. Lorsqu'elle est adressée à plusieurs destinataires, la même clé symétrique peut être utilisée pour tous les destinataires puis cryptée à l'aide de la clé publique de chaque destinataire spécifique. Le détenteur de clé privé étant le seul à pouvoir décrypter la clé symétrique, cette dernière reste secrète et n'est connue que des personnes habilitées. Vous pouvez générer des clés symétriques à usage unique au cours d'une opération ou session particulière. Ces clés sont appelées « clés de session ». Le cryptage à l'aide d'une clé publique renforce plutôt qu'il ne se substitue au cryptage par clé symétrique.

Le cryptage des messages a pour but de faire en sorte qu'un message reste illisible tant que la clé privée n'a pas été fournie. Cette clé privée peut être utilisée dans une négociation de clé symétrique afin de transmettre une clé symétrique de manière sécurisée. Étant donné qu'une clé symétrique peut être transmise de manière sécurisée à un destinataire, vous pouvez en utiliser une pour crypter un message puis crypter cette clé à l'aide de la clé publique d'une paire de clés. Seul le détenteur de la clé privée peut déverrouiller la clé symétrique qui est ensuite utilisée pour décrypter le message. Ce processus se déroule comme si le message tout entier avait été crypté et décrypté à l'aide de la paire de clés. Cependant, comme il utilise une clé symétrique, plus rapide, sur la plupart des informations, le processus s'exécute plus vite. Tout au long du processus, le message reste protégé jusqu'à ce que la clé privée soit présentée, ce qui garantit la confidentialité des données, service fondamental du cryptage des messages. La nature du processus de cryptage et décryptage fait que toute modification d'un message après cryptage entraînera l'échec de l'opération de décryptage, ce qui permet d'assurer l'intégrité des données.

Bien que l'usage d'une clé symétrique soit inattendu et que ses avantages ne soient pas immédiatement apparents, une clé symétrique permet de renforcer la sécurité des messages en accélérant le processus de cryptage des messages sans pour autant sacrifier la sécurité. La figure suivante décrit une opération de cryptage couplée aux éléments de prise en charge de la cryptographie à clé publique.

21058391-2d70-42f9-bf25-8ead79705b27

  1. Le message est capturé.
  2. La clé publique de l'expéditeur est récupérée.
  3. Une clé de session symétrique à usage unique est générée.
  4. L'opération de cryptage est effectuée sur le message à l'aide de la clé de session.
  5. La clé de session est cryptée à l'aide de la clé publique du destinataire.
  6. La clé de session cryptée est incluse dans le message crypté.
  7. Le message est envoyé.

La figure suivante décrit une opération de vérification couplée aux éléments de prise en charge de la cryptographie à clé publique.

50f0afca-e520-46b5-8e12-6e295dfe86d9

  1. Le message est reçu.
  2. Le message crypté et la clé de session cryptée sont extraits du message.
  3. La clé privée de l'expéditeur est récupérée.
  4. La clé de session est décryptée à l'aide de la clé privée du destinataire.
  5. Le message est décrypté à l'aide de la clé de session décryptée.
  6. Le message décrypté est renvoyé au destinataire.

Cette séquence illustre la façon dont la cryptographie à clé publique remplit les services centraux du cryptage des messages : la confidentialité et l'intégrité des données.

Interaction entre la cryptographie à clé publique dans les signatures numériques et le cryptage des messages

Les signatures numériques et le cryptage des messages sont des services complémentaires. Après avoir étudié la façon dont la cryptographie à clé publique s'intègre individuellement dans chaque service, il est utile d'observer comment ces services sont utilisés conjointement.

La figure suivante décrit une opération de signature et de cryptage couplée aux éléments de prise en charge de la cryptographie à clé publique.

e81cca9b-c780-49d9-a3f9-69cc3c442183

  1. Le message est capturé.
  2. La valeur de hachage du message est calculée.
  3. La clé privée de l'expéditeur est récupérée.
  4. La clé publique de l'expéditeur est récupérée.
  5. La valeur de hachage est cryptée à l'aide de la clé privée de l'expéditeur.
  6. La valeur de hachage cryptée est ajoutée au message sous la forme d'une signature numérique.
  7. Une clé de session symétrique à usage unique est générée.
  8. L'opération de cryptage est effectuée sur le message à l'aide de la clé de session.
  9. La clé de session est cryptée à l'aide de la clé publique du destinataire.
  10. La clé de session cryptée est incluse dans le message crypté.
  11. Le message est envoyé.

La figure suivante décrit une opération de décryptage et de vérification de la signature numérique, couplée aux éléments de prise en charge de la cryptographie à clé publique.

97705e57-0a94-4197-99c3-40bb58a9eaa0

  1. Le message est reçu.
  2. Le message crypté et la clé de session cryptée sont extraits du message.
  3. La clé privée de l'expéditeur est récupérée.
  4. La clé de session est décryptée à l'aide de la clé privée du destinataire.
  5. Le message est décrypté à l'aide de la clé de session décryptée.
  6. La signature numérique contenant la valeur de hachage cryptée est extraite du message.
  7. La valeur de hachage du message est calculée.
  8. La clé publique de l'expéditeur est récupérée.
  9. La valeur de hachage cryptée est décryptée à l'aide de la clé publique de l'expéditeur.
  10. La valeur de hachage décryptée est comparée à la valeur de hachage produite lors de la réception.
  11. Si les valeurs correspondent, le message est valide.
  12. Le message décrypté est renvoyé au destinataire.

Cette séquence illustre la façon dont la cryptographie à clé publique permet les signatures numériques et le cryptage des messages.

Comme vous pouvez le remarquer, une partie nécessite la clé publique ou la clé privée de l'autre partie en fonction de l'opération spécifique en cours. Par exemple, l'expéditeur doit avoir sa clé privée pour signer numériquement un message électronique mais il doit avoir la clé publique du destinataire pour pouvoir lui adresser des messages cryptés. Cela pouvant prêter à confusion, vous trouverez à la figure suivante un tableau indiquant les correspondances entre les clés, leurs utilisateurs et les opérations effectuées.

ef4e76b6-4799-45a9-90f8-ec7af508152a

Le concept suivant à assimiler est celui des certificats numériques. Les certificats numériques rendent l'utilisation des signatures numériques et du décryptage possible en distribuant des paires de clés.