Table des matières
GNUPG ou GPG
Généralités
Liens
http://fr.wikibooks.org/wiki/GPG
http://lsoron.free.fr/dossiers/crypto/page2.html
http://www.gnupg.org/howtos/fr/GPGMiniHowto-2.html
Le principe de base
On génére une clé privé et une clé public.
La clé public peut être distribué et va permettre aux correspondants de crypter des fichiers à votre attention.
La clé privé est la seule permettant de décrypter les fichiers.
La clé privé ne doit pas être communiqué.
On a besoin que d'une seule clé privé… dans le meilleur des mondes.
Installer gpg
Si “ $ dpkg -l | grep gnupg ” ne renvoi rien:
# apt-get install gnupg
Usages simples
Générer une clé privé/public
(pour le user courant)
$ gpg --gen-key
ATTENTION: La “passphrase” permettra l'accès et l'usage de la clé privé.
Mais la passphrase complique l'usage, donc on laissera vide et gnupg ne nous demandera jamais la passphrase.
Options générales (pour la suite)
- -armor ⇒ permet de produire un crytage en ASCII.
- -batch ⇒ signaler qu'on est dans un script sans interaction possible…
On appellera par la suite “info-clef”, tout ce qui peut permettre d'identifier la clé (public et privé?) a manipuler: ce peut être un “id” (8 chiffres hexa) ou un nom ou un mail…
Lister/Modifier les clés
Lister les clés: $ gpg –list-keys
Effacer une clé: $ gpg –delete-key <info-clef>
Effacer la clé privée: $ gpg –delete-secret-key <info-clef>
(est-ce une bonne idée?)
Editer une clé: $ gpg –edit-key <info-clef>
Extraire sa clé public afin de la distribuer
$ gpg --armor --export info-clef
Importer (ajouter a son trousseau) une clé public
$ gpg --import fichier
Crypter un message
$ gpg --armor -r <dest> -e <fichier>
Où <dest> est ce qui permet d'identifier le destinataire (“the receiver”)… (exemple: mail@truc ou l'id (info-clé) de la clé.)
Un <fichier> 'fichier.asc' est créé.
Le message est crypté avec la clé public receveur.
Mais rien ne permet de s'assurer que l'envoyeur est le bon… pour cela il faut signer.
Signer un message
Signature simple
La signature permet de s'assurer de l'origine du message.
La signature est faite a partir de la clef privée.
En conséquence, le destinataire doit posséder la clef publique dans son trousseau pour authentifier la signature. Dans le cas contraire, la signature est simplement ignoré.
L'option –default-key
permet de choisir le signataire du message.
Si –default-key
est absent, c'est la clef privée par défaut qui est utilisée.
Un fichier a part
gpg --default-key <infokey_du_signataire> --armor --detach-sign fichier
fichier.asc
est créé et contient la signature
Dans le fichier
gpg --default-key <infokey_du_signataire> --armor --clearsign fichier
Verifier la signature
gpg --verify fichier.asc fichier
ou
gpg --verify fichier
Cryptage et Signature
Ajouter: –sign
Exemple:
$ gpg --armor -r <infokey_du_receveur> -o fichier.asc --default-key <infokey_du_signataire> --sign -e fichier
Le receveur devrait s'assurer que la signature est celle attendue.
Le problème: la "passphrase"
Si par malheur, vous avez entré une passphrase…
La “passphrase” réclame une interaction. Lorsqu'on veut automatiser la signature, il faut que la passphrase soit desactivé _OU_ que l'on écrive la passphrase dans un fichier dont on fera lecture ainsi :
On ajoute “ –passphrase-fd 0 ” pour forcer une lecture “stdin”
Exemple:
cat passphrase.txt | gpg --armor --yes --sign --passphrase-fd 0 -r <receiver> -e <fichier>
Ce n'est pas super sécurisé !!! mais comment faire autrement ?
to be continued…
Décripter un message
gpg -o dest.txt -d fichier_crypte
Aprés les demandes de 'passphrase', 'dest.txt' contient le message en clair.
La signature est affiché, s'il y en a une…
Exercises
Transferer une clef privée
Il ne faut jamais faire ça, mais parfois il le faut.
Extraire clef privée
$ gpg --armor --export-secret-keys <infokey> >kprive.txt
Ce qui exporte la clef privée de <infokey> dans kprive.txt
.
On copie:
$ scp kprive.txt <address_ip>:~/tmp/.
On importe:
$ gpg --import kprive.txt
Et voila, mais il ne faut pas faire ça ! Oh non!
Importer une clef public
Aprés que le public ait fait:
$ gpg --armor --export <infokey> >pubkey.txt
Et envoyer le fichier par un moyen quelconque… on fait alors:
$ gpg --import pubkey.txt
Mais si on en fait usage, gpg
va emettre un avertissement et refusé le cryptage.
Donc je fais ça:
$ gpg --edit-key <infokey>
Et puis:
> trust
Choisir le niveau de confiance ultime… puis:
> save
Et voila.
Recuperer les clés
Copier ou recuperer les clés bruts…
On va regarder et/ou copier ce qui se trouve dans ~/.gnupg
:
$ gpg --homedir <REPERTOIRE> --list-key
Etc…
On peut faire toutes les commandes classiques: exporter, importer, etc…