Cryptographie, PGP et Pine

Gazette Linux n°58 — Octobre 2000

Matteo Dell'Omodarme

Hervé Ly-Sunnaram

Adaptation française  

Frédéric Marchal

Correction du DocBook 

Article paru dans le n°58 de la Gazette Linux d'octobre 2000.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Qu'est ce que la cryptographie ?
Cryptographie à clé publique
PGP (Pretty Good Privacy)
Création d'une paire de clés
Chiffrer et déchiffrer avec PGP
Configurer Pine pour qu'il gère les messages PGP automatiquement

Qu'est ce que la cryptographie ?

Le chiffrement est la transformation de données dans une forme qui est (c'est ce qu'on espère) impossible à lire sans connaissance de la clé. Son but est d'assurer la confidentialité en gardant l'information à l'abri de tout individu auquel elle n'est pas destinée.

Le déchiffrement est l'inverse du chiffrement. C'est la transformation de données chiffrées en une forme compréhensible.

Chiffrement et déchiffrement nécessitent l'emploi d'une information secrète, connue sous le nom de clé.

Certains mécanismes de chiffrement utilisent la même clé pour à la fois le chiffrement et le déchiffrement. D'autres utilisent des clés différentes pour les deux processus.

La cryptographie est fondamentalement basée sur les fameux problèmes durs, c'est-à-dire les problèmes qui ne peuvent être résolus qu'avec un gaspillage énorme en calculs. Voici quelques exemples : factorisation, démonstration de théorème et le « problème du voyageur de commerce » (trouver la route qui, pour une liste de villes données, minimise la longueur totale du chemin).

Il y a deux types de systèmes de chiffrement : à clé secrète et à clé publique.

Dans la cryptographie à clé secrète (ou cryptographie symétrique), la même clé est utilisée à la fois pour le chiffrement et le déchiffrement. Le système de chiffrement à clé secrète le plus répandu qui est utilisé aujourd'hui est connu sous le nom de DES (Data Encryption Standard [Standard de Chiffrement de Données]), développé par IBM au milieu des années 1970.

Dans la cryptographie à clé publique, chaque utilisateur possède une clé publique et une clé privée. La première est rendue publique et la seconde est tenue secrète. La clé publique est utilisée pendant le chiffrement tandis que le déchiffrement s'effectue avec la clé privée. Aujourd'hui, le système de chiffrement à clé publique RSA est la forme la plus répandue des cryptographies à clé publique. RSA signifie Rivest, Shamir et Adlemain, les inventeurs de ce système de chiffrement.

Une autre technique à clé publique répandue est l'Algorithme de Signature Numérique (Digital Signature Algorithm) (DSA), bien qu'il ne puisse être utilisé que pour les signatures.

Cryptographie à clé publique

Dans la cryptographie à clé secrète (ou symétrique), l'émetteur et le destinataire du message connaissent et utilisent la même clé secrète : l'émetteur utilise la clé secrète pour chiffrer le message et le destinataire utilise la même clé pour déchiffrer le message.

En utilisant un système de ce type, le problème principal à résoudre est le problème de gestion de la clé, ou comment faire pour que l'émetteur et le destinataire s'accorde sur la clé sans que personne ne le découvre. Toute personne qui intercepte la clé en transit peut par la suite lire, modifier ou contrefaire tout message chiffré ou authentifié en utilisant cette clé.

Afin de résoudre ce problème, Whitfield Diffie et Martin Hellman ont présenté le concept de cryptographie à clé publique en 1976. Dans leur système, chaque personne obtient une paire de clé, l'une appelée clé publique et l'autre appelée clé privée. La clé publique est rendue publique tandis que la clé privée est gardée secrète. L'émetteur et le destinataire n'ont pas besoin de partager d'informations secrètes parce que toutes les communications ne font intervenir que des clés publiques. Aucune clé privée n'est jamais transmise ou partagée.

N'importe qui peut envoyer un message confidentiel en utilisant juste l'information publique mais le message ne peut être déchiffré qu'avec la clé privée que seul possède le destinataire voulu.

Le schéma de communication est le suivant : quand A souhaite envoyer un message secret à B, il utilise la clé publique de B pour chiffrer son message et il l'envoie. B utilise alors sa clé privée pour déchiffrer le message et le lire. N'importe qui peut envoyer un message chiffré à B mais seul B peut le lire (car seul B connait la clé privée de B).

Dans un système de chiffrement à clé publique, la clé privée est toujours liée mathématiquement à la clé publique. Donc, il est toujours possible d'attaquer le système de clé publique en déterminant la clé privée à partir de la clé publique. En général, la défense contre ça est de rendre le problème de détermination de la clé privée à partir de la clé publique aussi difficile que possible. Certains systèmes de chiffrement à clé publique sont conçus de telle sorte que déterminer la clé privée à partir de la clé publique nécessite de factoriser un grand nombre, mais en fait, effectuer la résolution est informatiquement infaisable par le calcul car multiplier deux nombres premiers ensemble, c'est facile, mais, pour autant que nous le sachions, factoriser le produit de deux nombres premier est bien plus difficile.

C'est la raison pour laquelle la factorisation est vraisemblablement le problème dur sous-jacent sur lequel s'appuient plusieurs systèmes de chiffrement à clé publique, y compris l'algorithme RSA. Il n'a pas été prouvé que factoriser est difficile, et il reste une possibilité qu'une méthode de factorisation rapide soit découverte, bien que l'on considère aujourd'hui que cela soit très peu probable. En général plus le nombre est grand, plus cela prend du temps pour le factoriser. C'est pourquoi la taille des modules dans le RSA détermine le degré de sécurité de l'utilisation de RSA. Plus le module est grand, plus ça prendra de temps à un attaquant pour le factoriser et donc plus le module RSA sera résistant à une attaque.

PGP (Pretty Good Privacy)

PGP est un programme développé par Phil. R. Zimmermann qui permet de communiquer de manière sure sur un canal non-sécurisé. En utilisant PGP, on peut protéger facilement et efficacement la confidentialité des données en les chiffrant de telle sorte que seules les bonnes personnes puissent les lire.

PGP est basé sur la cryptographie à clé publique : deux clés complémentaires, qu'on appelle une paire de clés, sont utilisées pour maintenir la sécurité des communications. L'une des clés est désignée comme clé privée et vous êtes le seul à pouvoir y accéder ; l'autre est une clé publique que vous pouvez échanger librement avec d'autres utilisateurs PGP. Vos clés publique et privée sont mémorisées dans des fichiers trousseau de clés.

Avant de commencer à utiliser PGP, il faut générer cette paire de clés.

Après avoir créé une paire de clé, on peut commencer à correspondre avec d'autres utilisateurs PGP. On aura besoin d'une copie de leur clé publique et ils auront besoin de la nôtre. La clé publique est juste un bloc de texte donc c'est plutôt simple d'échanger des clés avec quelqu'un. Avec certaines techniques standard, la clé publique est incluse dans un courriel, copiée dans un fichier ou envoyée à un serveur de clés d'entreprise ou publiques où tout le monde peut obtenir une copie en cas de besoin. Après avoir généré votre paire de clé et échangé les clés publiques, on peut commencer à chiffrer et à signer courriels et fichiers.

Création d'une paire de clés

Les informations et commandes suivantes se rapportent à PGP 5.0i. Des changements peuvent apparaître avec une version différente de PGP. Les informations d'obtention et d'installation du programme ne sont pas couvertes par cet article.

Afin d'utiliser les caractéristiques de PGP, la première opération que vous devez accomplir est de générer une paire de clés. Entrez à la ligne de commande :

pgpk -g

Vous devez répondre à quelques questions pour générer vos clés :

  • L'algorithme à utiliser pour les messages chiffrés (DSS/DH ou RSA)

  • La taille de la clé ou le nombre de bits utilisés pour construire votre clé numérique. Une longue clé est plus solide mais elle prend plus de temps à chiffrer ou à déchiffrer. À moins de vouloir échanger des informations extrêmement sensibles, on est en sécurité avec une clé composée de 1024 bits.

  • Entrez votre identifiant (user ID). Il n'est pas absolument nécessaire d'entrer votre vrai nom ou même votre adresse électronique. Cependant, l'utilisation de votre vrai nom facilite pour les autres votre identification en tant que possesseur de la clé publique. Par exemple :

    Matteo Dell'Omodarme <matt@martine2.difi.unipi.it>

    Si vous n'avez pas d'adresse électronique, utilisez votre numéro de téléphone ou une autre donnée personnelle pour être sûr que votre identifiant est unique.

  • Entrez une phrase de passe, une chaîne de caractères ou de mots que vous voulez utiliser pour vous assurer exclusivement l'accès à votre clé privée.

La paire de clés générée est placée dans le trousseau de clés publique et privé dans votre dossier HOME/.pgp. Là, vous trouverez le fichier pubring.skr, contenant les clés publiques et le fichier secring.skr, le fichier de vos clés secrètes.

pgpk est la commande à utiliser pour gérer les clés publiques et privées de PGP. Vous pouvez alors extraire votre clé publique de votre trousseau de clé de cette façon :

pgpk -x mon_nom_d_utilisateur@mon_nom_d_hote > ma clé

Pour ajouter une nouvelle clé publique, qui est enregistrée dans un fichier de clé, à votre base de données :

pgpk -a fichierDeCle

et pour enlever une clé :

pgpk -r nouvelUtilisateur@nouveau_nom_d_hote

Chiffrer et déchiffrer avec PGP

pgpe chiffre et signe des fichiers en utilisant la cryptographie à clé publique ou chiffre des fichiers en utilisant la cryptographie traditionnelle.

L'utilisation la plus simple de la commande est la suivante :

pgpe fichier_texte nouvel_utilisateur@nouveau_nom_d_hote

ce qui chiffre le fichier de texte en clair fichier_texte en utilisant la clé publique du destinataire prévu. Beaucoup d'options sont disponibles (voir la page du manuel de pgpe), en voici quelques-unes :

-a, --armor :

Active « l'armure ASCII ». On obtient une version texte-seul du texte chiffré. On a quelque chose de sûr pour un envoi mais c'est environ 30% plus gros.

-f :

mode flux. Accepte l'entrée sur stdin et place la sortie sur stdout. Si aucun fichier n'est spécifié comme argument, PGP exécute ce mode par défaut.

-o fichierDeSortie :

Spécifie que la sortie doit aller en fichier de sortie. S'il n'est pas spécifié, la sortie va dans le fichier par défaut. Le fichier par défaut pour chaque fichier d'entrée est le nom du fichier d'entrée auquel on ajoute .pgp à moins que l'armure ASCII soit active auquel cas on ajoute .asc. C'est une erreur de spécifier plusieurs fichiers en entrée avec cette option.

-t :

Active le mode texte. Cela fait que PGP convertit votre message d'entrée en un message sous une forme indépendante de la plateforme. C'est essentiellement utilisé quand on déplace des fichiers d'un système d'exploitation à un autre.

pgpv déchiffre et vérifie les fichiers chiffrés et/ou signés par PGP. Afin de déchiffrer un message chiffré avec votre clé publique, entrez la commande :

pgpv fichier_texte.pgp

Quelques options sont disponibles. Parmi elles, il y a :

-f :

mode flux : Accepte l'entrée sur stdin et place la sortie sur stdout. Si aucun fichier n'est spécifié en argument, PGP exécute ce mode par défaut.

-o fichierDeSortie :

Spécifie que la sortie doit aller en fichier de sortie. Si aucun n'est spécifié, la sortie va dans le fichier par défaut. Le fichier par défaut pour chaque fichier d'entrée est le nom du fichier d'entrée auquel on enlève .pgp, .asc ou .sig. C'est une erreur de spécifier plusieurs fichiers en entrée avec cette option.

Configurer Pine pour qu'il gère les messages PGP automatiquement

Une option utile du client de messagerie Pine rend possible la gestion automatique du chiffrement des messages sortants et le déchiffrement de ceux entrants. Dans le fichier $HOME/.pinerc, recherchez les lignes commençant par display-filters et sending-filters et faites les insertions suivantes :

#Cette variable prend une liste de programmes auxquels le message est transféré #après le déchiffrage MIME, préalablement à l'affichage.
display-filters=_BEGINNING("-----BEGIN PGP MESSAGE-----")_ /usr/bin/pgpv


# Définit le programme auquel le message est transféré avant l'encodage #MIME préalablement à l'affichage
sending-filters=/usr/bin/pgpe -taf _RECIPIENTS_

La ligne display-filters dit que : « quand un courriel reçu commence avec la chaîne de caractère donnée (c'est-à-dire ici -----BEGIN PGP MESSAGE----), on traite son contenu en utilisant le programme /usr/bin/pgpv ». Puisque tous les messages PGP commencent de cette manière, pgpv attrape automatiquement tous les messages PGP chiffrés qu'il voit passer et les déchiffre (évidemment, seulement s'ils ont été chiffrés avec votre clé publique).

La ligne sending-filters configure /usr/bin/pgpe comme étant le programme traitant vos messages sortants, utilisant l'adresse électronique (c'est à dire _RECIPIENTS_) de vos destinataires choisis pour sélectionner la clé publique qui doit être utilisée par le mécanisme de chiffrement de PGP.

Les modifications précédentes faites, vous êtes capable d'envoyer des messages chiffrés ou des messages en clair, en choisissant l'un ou l'autre à l'envoi. Une question sera posée avant que votre courrier ne parte :

Send message (unfiltered)?

Répondre Y à la question force Pine à envoyer le courriel en clair tandis que taper la séquence Ctrl+N (c'est à dire l'option >Next Filter [Filtre Suivant]) vous permet de choisir parmi différents filtres.

Si pgpe est l'unique filtre défini, le message suivant est affiché :

Send message (filtered thru "pgpe")?

Répondre Y à cette question entraîne le chiffrement de votre message par Pine avec la clé publique appropriée et son envoi.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.