http://fr.wikibooks.org/wiki/GPG
http://lsoron.free.fr/dossiers/crypto/page2.html
http://www.gnupg.org/howtos/fr/GPGMiniHowto-2.html
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.
Si “ $ dpkg -l | grep gnupg ” ne renvoi rien:
# apt-get install gnupg
(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.
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 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>
$ gpg --armor --export info-clef
$ gpg --import fichier
$ 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.
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.
gpg --default-key <infokey_du_signataire> --armor --detach-sign fichier
fichier.asc
est créé et contient la signature
gpg --default-key <infokey_du_signataire> --armor --clearsign fichier
gpg --verify fichier.asc fichier
ou
gpg --verify fichier
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.
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…
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…
Il ne faut jamais faire ça, mais parfois il le faut.
$ 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!
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.
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…