des certificats électroniques
Jean-Luc Archimbaud
n décrit ici, en les simplifiant, les mécanismes logiques qui permettent de réaliser les trois fonctions de sécurité, authentification, intégrité, confidentialité, avec les algorithmes asymétriques de cryptographie et les éléments nécessaires que sont les certificats électroniques.
La cryptographie asymétrique
Dans cet article nous prendrons comme exemple les documents transportés sur un réseau internet, sachant que l’on peut effectuer les mêmes opérations localement, sur les documents du disque du poste de travail.
Le chiffrement
Pour assurer la confidentialité d’un document électronique, on chiffre le texte du document. On lui applique un ensemble de fonctions mathématiques (un algorithme de chiffrement) avec des caractéristiques très particulières en utilisant une variable, la clé de chiffrement. Une fois le texte chiffré, il est illisible. Pour obtenir la version lisible, il faut le déchiffrer, c’est- à-dire appliquer une autre fonction mathématique compatible avec la première, avec une autre variable, la clé de déchiffrement. Seul le possesseur de la clé de déchiffrement peut déchiffrer le texte. La valeur de la clé de déchiffrement dépend évidemment de la valeur de la clé de chiffrement.
O
Il faut noter que les algorithmes de chiffrement sont généralement publics et ont fait l’objet de standardisation. C’est le secret de certaines clés qui permet d’assurer la confidentialité.
Algorithme de chiffrement
TEXTE en clair
Philippe
Nicole
Internet
Algorithme de déchiffrement TEXTE
en clair
Clé de déchiffrement Clé de chiffrement
Figure 1. Chiffrement
Il y a deux grandes familles d’algorithmes de chiffrement : symétriques et asymétriques.
Les algorithmes symétriques
Dans les algorithmes symétriques, aussi appelés algorithmes à clé secrète, la clé de chiffrement est la même que la clé de déchiffrement. De ce fait, pour que le texte chiffré ne soit lisible que par le destinataire, la valeur de cette clé doit être un secret partagé entre l’émetteur et le destinataire uniquement.
Ceci explique le qualificatif de « clé secrète ». DES (Data Encryption Standard) et AES (Advanced Encryption Standard) sont les algorithmes symétriques les plus connus.
Les premiers algorithmes symétriques datent de la fin des années 1970 et utilisent des fonctions mathématiques « simples ». L’avantage est que les opérations de chiffrement et de déchiffrement sont rapides à exécuter sur des ordinateurs classiques. Par contre, le problème est la gestion des clés. En
unique. Il faut donc autant de clés que de correspondants et il faut trouver un moyen d’échanger chaque clé secrète avec chaque correspondant de manière sûre (pas question d’utiliser le fax du secrétariat ou la messagerie électronique non sécurisée). Si ceci est possible entre un groupe restreint de personnes, c’est impossible à plus grande échelle, par exemple pour échanger des messages chiffrés avec tous nos correspondants sur internet.
Les algorithmes asymétriques
L’autre ensemble d’algorithmes est celui des algorithmes asymétriques ou à clé publique. Ils ont été conçus pour utiliser des clés qui possèdent plusieurs propriétés :
– la clé de chiffrement est différente de la clé de déchiffrement (d’où le terme asymétrique) ;
– les deux clés (une pour chiffrer, l’autre pour déchiffrer) sont créées ensemble avec une fonction mathématique. Elles forment un couple, l’une ne va pas sans l’autre, mais il est impossible avec une des clés de découvrir l’autre ;
– tout texte chiffré avec une des clés (de chiffrement ou de déchiffrement) peut être déchiffré avec l’autre clé (de déchiffrement ou de chiffrement) et uniquement avec celle-ci.
En pratique, pour utiliser ces algorithmes, il faut générer un couple de clés (l’une pour chiffrer, l’autre déchiffrer) pour chaque utilisateur. La personne le fera elle-même sur sa machine ou quelqu’un de confiance le fera pour elle. Elle gardera sa clé de déchiffrement secrète, on l’appellera ainsi clé privée. A l’inverse elle rendra sa clé de chiffrement publique et la diffusera (on dit aussi la publiera) le plus largement possible. On la trouvera dans des annuaires électroniques, par exemple. Ainsi le couple de clés est formé d’une clé privée secrète pour déchiffrer et d’une clé publique pour chiffrer.
Maintenant quand Philippe voudra par exemple envoyer un message chiffré avec un algorithme asymétrique à Nicole, son outil de messagerie cherchera dans un premier temps la clé publique de Nicole. S’il ne la possède pas déjà, l’outil interrogera un annuaire électronique pour trouver cette clé. Ensuite l’outil chiffrera le texte du message avec la clé publique de Nicole. Ce texte illisible ne pourra alors être déchiffré qu’avec la clé privée de Nicole, que Nicole est la seule à connaître. Ainsi le message pourra transiter via le réseau sans risque d’être déchiffré. Arrivé sur l’ordinateur de Nicole, le texte sera déchiffré avec la clé privée de Nicole.
Chiffrement asymétrique
TEXTE en clair
Philippe
Nicole
Internet
Déchiffrement asymétrique TEXTE
en clair
Clé privée de Nicole Clé publique de Nicole
Figure 2. Chiffrement avec algorithme asymétrique
Dans l’autre sens, quand Nicole enverra un texte chiffré à Philippe, elle le chiffrera avec la clé publique de Philippe. Celui-ci le déchiffrera avec sa clé privée.
RSA, du nom des trois inventeurs Rivest, Shamir, Adleman, est l’algorithme de chiffrement asymétrique le plus répandu.
Ce découplage entre clé publique et clé privée est très utile pour une utilisation « planétaire » du chiffrement. Alors que les algorithmes symétriques obligent à échanger un secret, la clé secrète, avec chaque interlocuteur, là il suffit d’avoir des annuaires qui permettent de trouver la clé publique de chaque internaute et ce système peut fonctionner entre tous les internautes. Quand un utilisateur voudra envoyer un message chiffré à un correspondant, il consultera un annuaire qui lui indiquera la clé publique de son correspondant. Avec cette clé, il chiffrera le message. Celui-ci ne pourra être déchiffré qu’avec la clé privée du correspondant, donc que par le correspondant.
Ainsi les propriétés des algorithmes asymétriques permettent de s’affranchir du problème de la gestion des clés et ainsi d’envisager de déployer l’utilisation du chiffrement à très grande échelle.
La signature électronique
Les paragraphes précédents ont décrit comment est assurée la fonction de confidentialité, avec le mécanisme de chiffrement. La signature électronique est un autre mécanisme qui permet d’assurer les fonctions d’authentification et d’intégrité. Elle est utilisée en particulier dans la messagerie électronique.
Pour générer une signature électronique, il faut dans un premier temps utiliser une fonction de hachage sur le texte, dont le résultat est une suite de bits de taille fixe, bien inférieure à la taille du texte initial. Cette suite de bits est aussi appelée condensé ou empreinte, car la fonction de hachage est telle que si un bit du texte d’origine est modifié, le résultat de la fonction sera, avec de très fortes probabilités, différent. MD5 (Message Digest) et SHA (Secure Hash Algorithm) sont parmi les plus connues.
Pour réaliser la signature électronique, avant d’envoyer un message, l’outil de messagerie calcule d’abord l’empreinte du message. Il chiffre ensuite cette empreinte par un algorithme asymétrique avec la clé privée de l’utilisateur. Ce résultat est appelé signature électronique. Avant l’envoi, cette signature est ajoutée au message, qui devient un message signé.
L’outil de messagerie du destinataire qui reçoit l’ensemble, déchiffre cette empreinte chiffrée avec la clé publique de l’émetteur. Puis il recalcule la fonction de hachage sur le message reçu et compare le résultat avec l’empreinte déchiffrée. Si les deux sont égaux, cela veut dire que le message n’a pas été modifié durant le transfert et que l’émetteur est authentifié. La figure 3 illustre ce principe.
En effet, si le message a été modifié durant le transfert, les 2 empreintes seront différentes. De plus, être capable de déchiffrer, avec la clé publique d’une personne, une empreinte chiffrée, prouve que cette empreinte a obligatoirement été chiffrée avec la clé privée de la personne, clé que seul possède l’émetteur. Cela authentifie donc l’émetteur. On peut rappeler qu’une des propriétés du couple clé privée-clé publique est que tout ce qui est chiffré avec une des clés peut être déchiffré avec l’autre clé et uniquement avec celle-ci.
Nous avons décrit séparément les mécanismes de chiffrement et de signature, mais les logiciels courants cumulent les deux fonctions. Ils permettent par exemple de transmettre un message chiffré et signé en appliquant en séquence les deux mécanismes, signature puis chiffrement, par exemple.
Philippe
Nicole : égalité ?
Internet TE XTE
en c lair TEX TE en c lair E mprein te Fct de hac
hage
TEX TE en c lair Εµπρειντε
Chiffrement Asym
E mpr ein te
TEX TE en c lair Εµπρειντε TEX TE
en c lair E mprein te
Déchiffrement Asym Fct de hachage
Clé privée de Philippe
Clé publique De Philippe
Figure 3. Signature
Les certificats électroniques
Nous avons décrit les mécanismes qui permettent d’assurer les trois fonctions de base de sécurité avec le couple de clés privée-publique et les algorithmes de chiffrement asymétriques, solution « magique ».
Mais il y a un énorme oubli dans les raisonnements précédents : on a considéré qu’un utilisateur prenait connaissance de la clé publique d’une personne simplement en consultant un annuaire (ou un serveur web). Mais qu’est-ce qui garantit que la clé publique de Philippe qu’un utilisateur a ainsi récupérée est la bonne ? Un pirate, François, a pu modifier l’annuaire ou le serveur web qui contient cette clé. Il a pu par exemple remplacer la clé publique de Philippe par la sienne. Une fois cette mascarade commise, François pourra lire les courriers confidentiels destinés à Philippe et signer des messages en se faisant passer pour Philippe.
Il a donc fallu créer un mécanisme supplémentaire pour pouvoir vérifier la validité d’une clé publique : le certificat électronique.
Un certificat électronique de personne est l’équivalent électronique d’une carte d’identité ou d’un passeport. Un passeport contient des informations
manuscrite, la date de validité, ainsi qu’un tampon et une présentation (forme, couleur, papier) qui permettent de reconnaître que ce passeport n’est pas un faux, qu’il a été délivré par une autorité bien connue.
Un certificat électronique est un petit fichier qui contient des informations similaires. Le format standard actuellement est le format X509v3. Les certificats CNRS par exemple contiennent les informations suivantes :
– le nom de l’autorité (de certification) qui a créé le certificat, – le nom et le prénom de la personne,
– le nom du laboratoire de la personne, – son adresse électronique,
– sa clé publique,
– les dates de validité du certificat, – la signature électronique de ce certificat.
La signature électronique du certificat
Cette signature électronique, le dernier élément du certificat listé ci- dessus, est calculée sur les informations contenues dans le certificat (nom, clé publique...) comme dans le cas d’un message électronique. Cette signature est l’empreinte de ces informations, chiffrée avec la clé privée de l’autorité de certification qui a délivré ce certificat.
L’autorité de certification et son certificat
Qu’est-ce qu’une autorité de certification ? Une entité qui délivre des certificats pour une communauté d’utilisateurs au sommet d’une infrastructure de gestion de clés, IGC. La section suivante explicitera les composants et le fonctionnement de cette infrastructure. C’est l’équivalent de la préfecture pour un passeport.
Cette autorité, préalablement à toute action, a généré un couple de clés publique-privée pour elle-même. Ensuite elle a très largement diffusé la valeur de sa clé publique, sous la forme d’un certificat d’autorité de certification. Les utilisateurs qui veulent utiliser et faire confiance aux certificats émis par cette autorité, insèrent ce certificat dans leurs outils (navigateur, client de messagerie).
Vérification du certificat
Quand Nicole veut envoyer un message chiffré à Philippe qui travaille dans un laboratoire CNRS, le logiciel de messagerie de Nicole a besoin de connaître la clé publique de Philippe et de vérifier son authenticité. Si ce logiciel ne connaît pas cette clé, il peut interroger l’annuaire électronique du CNRS pour récupérer le certificat de Philippe. Ce certificat est signé par l’autorité de certification CNRS. Le poste de Nicole configuré pour faire confiance à cette autorité a stocké la clé publique de cette autorité de certification. Avec ces informations le logiciel de messagerie peut vérifier la signature du certificat de Philippe pour s’assurer que ce document a bien été créé par l’autorité de certification CNRS et n’a pas été falsifié. Avec cette assurance, le logiciel de messagerie peut récupérer la clé publique de Philippe contenue dans ce certificat et l’utiliser avec confiance.
La figure 4 montre schématiquement la vérification du certificat de Philippe Cale avec extraction de la clé publique de ce dernier.
Autorité de certification : CNRS
Prénom : Philippe Nom : Cale Organisation : CNRS Service : UREC Email :
Philippe.Cale@urec.cnrs.fr Dates de validité :
Du 11/08/03 au 11/08/04 Clé publique :
A7:3F:F4:…:E1
….
Signature : 7C:C1:55:…:C7
Certificat de P. Cale
Fct de hachage
Déchiffrement
Clé publique de l’autorité de certification CNRS
Empreinte 2 Empreinte 1
Egalité ? oui
Certificat valide Clé publique de P. Cale : A7:3F:F4:…:E1 non
Certificat invalide
Figure 4. Vérification de certificat – récupération de la clé publique
Evidemment, les dates de validité contenues dans le certificat sont aussi vérifiées avant de le déclarer valide.
En résumé, pour utiliser les mécanismes de sécurité basés sur la
L’un des éléments, sa clé publique, doit être dans un certificat, signé par une autorité de certification, rendu public. L’autre, sa clé privée, doit être secrète, connue uniquement de lui. Ainsi un certificat est toujours associé à une clé privée. L’un ne va pas sans l’autre.
Extension de ces mécanismes
Nous avons pris comme exemple la messagerie électronique pour expliciter l’utilisation du couple de clés et du certificat. Des mécanismes légèrement différents sont très répandus pour utiliser ces mêmes éléments dans d’autres applications. Quelques exemples.
Un serveur web peut posséder un couple de clés et un certificat. Ils seront mis en œuvre pour prouver à chaque client qu’il est bien sur le bon serveur avec la bonne application, assurance obligatoire quand le serveur permet des transactions financières, par exemple.
Les mêmes éléments sur ce serveur pourront aussi être utilisés pour chiffrer tous ses échanges avec ses clients en utilisant les protocoles HTTPS (Hypertext Transfer Protocol Secure) et SSL (Secure Socket Layer).
Plus généralement toute application qui utilise le réseau (transfert de fichiers, accès interactif, accès à des bases de données, calcul distribué) et tous les objets (postes nomades, équipements de réseau) peuvent avoir un couple de clés et un certificat pour mettre en œuvre ces fonctions de sécurité.
Pourquoi expliquer une fois encore ces principes ?
Toute personne œuvrant dans la vie réelle sait que l’élément le plus faible de tous les systèmes de sécurité est l’utilisateur. Et pour que ces systèmes de certificats apportent de réels services de sécurité, et pas une illusion de services, il faut que tous les utilisateurs soient formés à l’usage des certificats et qu’ils aient compris :
– qu’il y a un secret à protéger : la clé privée (et pas le certificat). Ceci est vraiment fondamental ;
– qu’il faut décider à qui on fait confiance : à quelles autorités de certification ?
– qu’il faut posséder certains éléments pour que ça marche : configurer son poste pour faire confiance à certaines autorités, posséder le certificat (donc la clé publique) d’un utilisateur pour pouvoir lui envoyer un message chiffré, etc.
Et la seule méthode pour que chaque utilisateur intègre ces éléments fondamentaux et puisse agir en homme conscient et libre est d’essayer d’expliquer les principes, qui sont loin d’être simples.
Avant les utilisateurs, la population à former est celle des administrateurs systèmes et réseaux, qui mettent en place ces applications et qui, d’expérience, ont aussi du mal à comprendre ce qui est important et obligatoire dans le système.
Les applications
En simplifiant, il existe trois standards principaux à la base des applications qui utilisent les certificats électroniques : S/MIME (Secure/Multipurpose Internet Mail Extensions), SSL/TLS (Secure Socket Layer et Transport Layer Security), IPSec (IP Securiy Protocol).
S/MIME, standard de messagerie permet, avec un mécanisme de signature, l’authentification de l’émetteur et l’intégrité du message, ainsi que la confidentialité du contenu avec un mécanisme de chiffrement, dans l’échange de messages électroniques. Il est supporté de base par Netscape- Mozilla et Outlook.
SSL/TLS permet un transport sécurisé des informations sur l’internet avec les fonctions d’authentification du serveur et du client, d’intégrité et de confidentialité des échanges. Il peut être utilisé pour tous les accès web avec le protocole HTTPS, pour accéder aux boîtes aux lettres à distance avec les protocoles IMAPS (Internet Message Access Protocol) et POPS (Post Office Protocol), et éventuellement dans d’autres applications (transfert de fichiers, telnet). Netscape-Mozilla et Internet Explorer intègrent HTTPS et IMAPS.
IPSec est destiné à sécuriser le contenu des datagrammes IP dans les communications entre équipements de réseau et/ou les stations. Il permet par exemple de construire des réseaux virtuels privés (VPN) entre routeurs et des connexions sécurisées de postes nomades vers un site central. Il est intégré maintenant dans la majorité des systèmes d’exploitation des équipements de réseau et des postes de travail.
D’autre part, les versions récentes de SSH, très répandu, ensemble de logiciels utilisés pour l’accès interactif principalement, supportent maintenant les certificats comme méthode d’authentification.
Il existe ainsi tout le nécessaire pour construire un ensemble d’applications dont les fonctions de sécurité sont basées sur les certificats