Chiffrement des données et sécurité informatique

par Claude Lecommandeur, SIC-Logiciels, e-mail: Claude.Lecommandeur@epfl.ch

Table des matières

Nécessité de chiffrer les données sur les réseaux informatique

Les réseaux informatiques actuels ne sont pas sûrs. Tout un chacun peut y écouter les communications des autres, et même les modifier s'il y met un peu d'énergie. Cette caractéristique rend ces réseaux impropres à toute utilisation commerciale, où l'intégrité et la confidentialité des données ainsi que l'authentification des correspondants sont fondamentaux. Les techniques de chiffrement vont permettre de résoudre ces problèmes.

retour à la table des matières


Sécurité des réseaux

Comme nous l'avons vu, les trois caractéristiques qui vont rendre des réseaux non sûrs utilisables commercialement sont:

L'intégrité des données

On doit être en mesure de détecter si une donnée à été frauduleusement modifée, et/ou être en mesure d'empêcher totalement ce genre de modification.

  • Méthode de hachage

    On adjoint au message une clé calculée en fonction de ce message de telle manière qu'il soit extrèmement difficile (en fait pratiquement impossible) de modifier le message sans modifier la clé de hachage.

    retour à la table des matières


    La confidentialité des données

    On doit pouvoir faire en sorte que seules les personnes autorisées aient accès à l'information.

  • Chiffrement

    On chiffre le message avec une clé.

    L'authentification des correspondants

    On doit être en mesure de prouver son identité à travers le réseau.
  • Signature electronique

    L'envoyeur joint une signature électronique à son message.

    Algorithmes de chiffrement

    Algorithmes à clé privée

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

    Algorithmes à clé publique

    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.

    Algorithmes mixtes

    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


    Certificats

    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


    Implémentations accessibles

    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:

    PRETTY GOOD PRIVACY : PGP

    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.

    SECURE SOCKET LAYER : SSL

    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.

    stockage des clés publiques/secrètes

    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