Signature electronique
L'envoyeur joint une signature électronique à son message.
Dans les algorithmes à clé privée, la clé de chiffrement, est identique à la clé de déchiffrement. Cette clé, unique, doit donc être gardée secrète par son propriétaire. L'inconvénient évident de ce système, est que l'envoyeur et le destinataire du message doivent avoir convenu de la clé avant l'envoi du message. Ils doivent donc disposer d'un canal sûr, pour s'échanger des clés. Ceci pose problème sur Internet où il n'y a pas de canaux sûrs. Un exemple d'un tel algorithme est le très fameux DES (Data Encryption System).
Dans ce cas, les clés de chiffrement et de déchiffrement sont distinctes, et généralement symétriques: la clé de chiffrement permet de déchiffrer ce qui a été chiffré avec la clé de déchiffrement, et vice versa. L'heureux possesseur d'une telle paire de clés, en rend une (au choix) publique, c'est-à-dire qu'il la donne à tout le monde, dans une sorte d'annuaire. Tout correspondant qui veut envoyer un message, chiffre son message à l'aide de la clé publique du destinataire. Seul le possesseur de la clé secrète correspondant à cette clé publique pourra déchiffrer le message.
Les algorithmes de chiffrement à clé publique permettent aussi à l'envoyeur de signer son message. En effet, il lui suffit de chiffrer, le message (ou une fonction de ce message) avec sa propre clé secrète. Le destinataire déchiffrera cette fonction avec la clé publique de l'envoyeur et sera ainsi certain de l'identité de l'envoyeur, puisqu'il est le seul à posséder la clé secrète qui permette de faire un tel chiffrement. Subtil n'est-ce pas. RSA (Rivest, Shamir, Adleman, les 3 inventeurs) est un tel algorithme.
Les algorithmes à clé publique sont assez lents. La méthode généralement utilisée pour envoyer un message, est de tirer au hasard une clé secrète, chiffrer le message avec un algorithme à clé privée en utilisant cette clé, puis chiffrer cette clé aléatoire elle-même avec la clé publique du destinataire. Ceci permet d'avoir la sécurité des systèmes à clé publique, avec la performance des systèmes à clé privée.
retour à la table des matières
Un problème qui peut ne pas apparaître immédiatement est celui de la validation des clés publiques.
Dans le cas où le destinataire est un être humain que l'on connaît personnellement, il est possible de lui demander sa clé. Mais il faudra vérifier par un moyen non électronique que l'on a bien affaire à la bonne personne, par exemple en téléphonant cette clé (on suppose qu'il est très difficile de se faire passer pour une personne auprès d'une autre qui la connaît personnellement).
Dans tous les autres cas, il va falloir avoir recours à d'autres moyens. On va utiliser ce que l'on appelle des certificats. Une autorité sera chargée de délivrer des certificats. Un certificat, est un document électronique, qui contient divers renseignements sur une personne (nom, prénom, date de naissance, etc.) ainsi que la (ou une des) clé(s) publique(s) de cette personne. Le tout chiffré à l'aide de la clé secrète de cette autorité. La clé publique de l'autorité est supposée connue de tous les correspondants, mais si ce n'est pas le cas, cette autorité peut disposer elle même d'un certificat signé par une autorité de plus haut niveau.
Un tel certificat indiquera de façon certaine la clé publique de la personne de nom et prénom spécifiés. Donc si on reçoit un message dont la signature est déchiffrable à l'aide de cette clé publique, c'est nécessairement cette personne qui a envoyé le message. Il est donc possible de rendre publics ces certificats dans des annuaires de clés.
On voit tout de suite l'importance de la clé secrète de l'autorité de certification. Si elle est compromise, il peut y avoir émission de faux certificats, ce qui peut avoir des conséquences extrèmement graves. Pour pallier au maximum ce problème, la clé secrète n'est connue de personne, elle est seulement contenue dans une machine appelée CSU (Certificates Signing Unit). Cette machine ne sait faire qu'une chose, signer des certificats à l'aide de cette clé, mais ne peut en aucun cas la donner. De plus ce genre de machine peut nécessiter la présence de 2 personnes simultanément (avec chacune une clé) pour fonctionner.
retour à la table des matières
Différentes attaques
Que peut encore faire un éventuel pirate face à cet arsenal. Les attaques usuelles sont:
Lecture frauduleuse d'un message
Impossible à cause du chiffrement.
Modification frauduleuse d'un message
Impossible pour la même raison.
Envoi d'un faux message
Impossible à cause de la signature électronique.
Duplication d'un message
C'est le cas où une personne mal intentionnée, copie un message en le voyant passer (sans le comprendre), mais se doute de sa teneur, et le renvoie identique un peu plus tard. On peut imaginer qu'un tel message était un ordre de versement sur un compte banquaire. Pour empêcher cela, au début de la communication, le destinataire tire aléatoirement une clé, l'envoi à l'envoyeur, qui va la joindre au message (avant chiffrement). Quand le scélérat tentera de rejouer la communication, une clé aléatoire différente (espérons) sera choisie, et le récepteur se rendra compte de la supercherie.
retour à la table des matières
brevets et règles d'ex(im)portation
Dans beaucoup de pays les méthodes de chiffrement sont interdites soit d'importation, soit d'exportation, soit d'utilisation, soit des trois. La Suisse semble exempte de ces tracasseries d'un autre âge.
De plus, pour simplifier, l'algorithme RSA (ainsi que virtuellement tout algorithme à clé publique) est breveté aux Etats-Unis. Heureusement ce brevet n'est pas valable en dehors des Etats-Unis.
On peut donc s'estimer relativement heureux en Suisse de ce point de vue.
retour à la table des matières
A cause des restrictions d'exportation des USA, les logiciels Kerberos et DCE qui utilisent DES, sont bridés hors des USA, la partie authentification est préservée, mais pas la partie chiffrement.
Il est possible d'exporter des versions binaires seulement de RSA dans la mesure où les clés sont limitées à 40 bits. Ceci car les clés de moins de 40 bits, sont assez facilement décodables, en tout cas la NSA (National Secutity Agency), qui a autorisé l'exportation, peut certainement les décoder.
Heureusement il existe des implémentations publiques de DES et RSA dont la main n'a jamais mis le pied sur le territoire américain, ces implémentations sont donc utilisables librement dans tout pays où l'importation et l'utilisation d'algorithmes de chiffrement sont légaux, donc en Suisse.
retour à la table des matières
Des logiciels de haut niveau, sont même disponibles:
PGP est un programme qui permet de chiffrer/déchiffrer des messages à l'aide de RSA, ainsi que de gérer des fichiers de telles clés. Il a été initialement écrit aux USA, par Phil Zimmerman qui a eu pas mal d'ennuis à son propos. PGP est librement disponible sur Internet.
SSL est un protocole de communication qui est indépendant du protocole de communication de plus haut niveau qui repose sur lui. Il est donc possible de porter les logiciels de communications usuels (ftp, telnet, http, etc.) sur SSL sans grande modification, et de façon quasiment transparente pour l'utilisateur. SSL peut alors négocier la méthode de chiffrement à utiliser, authentifier les acteurs de la communication, et chiffrer au vol tout ce qui transite par son canal.
Les spécifications de SSL sont publiques, mais son implémentation de référence (SSLREF) n'est pas exportable des USA. Heureusement, il en existe une implémentation librement accessible à partir de l'Australie. Il existe des patchs pour intégrer SSL aux logiciels de communications usuels: http (Mosaic et NCSA httpd), telnet, ftp, etc.
SECURE SHELL : SSH
SSH est une version sécurisée des programmes usuels de connexion à distance sur UNIX : rlogin, rsh et rcp. Leur équivalents sont slogin, ssh et scp, qui leur sont parfaitement compatibles au niveau utilisateur, mais font de l'authentification et du chiffrement par en dessous.
Clés publiques
Les clés publiques et/ou certificats sont des choses publiques, elles doivent dont être distribuées de la façon la plus large possible par des serveurs de clés. Des serveurs X.500, ou CSO peuvent être utilisés pour cette fonction.
Clés secrètes
A l'opposé, les clés secrètes doivent être gardées le plus secrètes possible. Le vol d'une telle clé permet aux voleurs de signer à la place du véritable propriétaire de la clé.
Un disque d'ordinateur n'est en aucun cas assez sûr pour stocker une chose aussi précieuse. Un dispositif particulier, telle qu'une carte à puce doit être utilisé.
retour à la table des matières
Quelques URL qui ne manqueront pas de vous intéresser

article paru dans le Flash informatique, numéro 7 du 26 septembre 1995