CNS/documentation * Fiche sur gnupg GnuPG (gpg) est un outil de cryptage et de signature. Il permet de crypter des données selon différents types de cryptages (à clé simples ou publiques), comme des fichiers, des mails ... et de les signer, afin de prouver la provenance des données. * Obtenir GnuPG Vous pouvez obtenir GnuPG sur le site officiel, http://www.gnupg.org/ La version en cours (au 20011220), est la 1.0.6. Récupérez gnupg-1.0.6.tar.gz * Installation de GnuPG $ tar zxf gnupg-1.0.6.tar.gz $ cd gnupg-1.0.6 $ ./configure [...] $ make [...] $ su -c 'make install' [...] * Première utilisation de GnuPG Attention: la sécuritée de l'utilisation de GnuPG dépend principalement de l'utilisation que vous en faites; il va suivre certains conseils qu'il faut *absolument* respecter si vous voulez avoir un certain taux de confiance en les données que vous gérer via cet outil. L'étape suivante DOIT être effectuée sur une machine ou vous êtes root (administrateur), ou vous avez un accès physique à la machine, et ne le faites pas à travers un réseau, ou encore sur une machine ou vous n'êtes pas le seul utilisateur. La première étape est de créer une paire de clées gpg; cela se réalise par cette commande: $ gpg --gen-key gpg (GnuPG) 1.0.6; Copyright (C) 2001 Free Software Foundation, Inc. [...] gpg: /home/user/.gnupg: directory created gpg: /home/user/.gnupg/options: new options file created gpg: you have to start GnuPG again, so it can read the new options file $ gpg --gen-key gpg (GnuPG) 1.0.6; Copyright (C) 2001 Free Software Foundation, Inc. [...] Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (4) ElGamal (sign and encrypt) Your selection? 1 (le 2 ne permet pas le cryptage des données, et le 4 ne fait plus ses preuves en terme de sécuritée; on choisiera le "1".) DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024) (Personnellement, j'utilise une clée de 2048 bits (256 octets); cependant, vous pouvez en créer de plus grandes, 4096 semble un choix sur (maximum).) What keysize do you want? (1024) 4096 Keysizes larger than 2048 are not suggested because computations take REALLY long! Are you sure that you want this keysize? y (Seulement si vous avez une machine puissante, sinon le calcul prendra beaucoup plus de temps.) Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 0 (La clée est valide pour toujours.) (On va vous demander ensuite des renseignements, votre nom, votre email, votre pseudo si vous en avez un ...) eal name: User XXX Email address: user@xxx.org Comment: X3user You selected this USER-ID: "User XXX (X3user) " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. Enter passphrase: (Attention !! ceci est la phrase que vous aurez à tapper pour signer et décrypter les documents. Ne l'oubliez pas ou vous serez dans l'obligation de recreer une paire de clées, et de redistribuer vos clées publiques à tout vos expéditeurs. Evidement, plus la clée est longue plus sécurisé est le systeme.) (Une fois la phrase tappée et la phrase vérifiée, les 2 clées seront générées. Bougez la souris, tappez sur le clavier, jouez des mp3 et les nombres utilisés seront plus "surs" (utilisant /dev/random, qui apprivisionne par des données aléatoires).) public and secret key created and signed. (Ca y est, c'est fini) $ ls -l .gnupg/ total 20 -rw-rw-r-- 1 myc myc 4342 Dec 23 18:10 options -rw-rw-r-- 1 myc myc 1656 Dec 23 18:26 pubring.gpg -rw-rw-r-- 1 myc myc 0 Dec 23 18:11 pubring.gpg~ -rw------- 1 myc myc 600 Dec 23 18:26 random_seed -rw------- 1 myc myc 2600 Dec 23 18:26 secring.gpg On va tout de suite créer le fichier comprenant la clée publique pour apres l'echanger avec ses contacts: $ gpg --fingerprint user > pubkey \ > && gpg -a --export user >> pubkey gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! $ cat pubkey pub 1024D/2DB2F81B 2001-12-23 User XXX (X3user) [...] -----END PGP PUBLIC KEY BLOCK----- $ * Utilisation courrante de GnuPG 1) inclusion (import) d'une clée pgp publique de quelqu'un d'autre: On admet avoir récupéré la clée publique pgp d'une personne; pour l'inclure, on la rajoute à notre trousseau par la commande: myc:~$ gpg --import ../mycroft/mycroft.txt gpg: Warning: using insecure memory! gpg: key 1AD913C4: public key imported gpg: /home/myc/.gnupg/trustdb.gpg: trustdb created gpg: Total number processed: 1 gpg: imported: 1 myc:~$ gpg --list-key | grep -A 2 mycroft gpg: Warning: using insecure memory! pub 1024D/1AD913C4 2001-02-07 Patrick MARIE (mycroft) uid Patrick MARIE (mycroft) uid mycroft sub 2048g/DFA4A476 2001-02-07 2) cryptage Comment marche le cryptage PGP ? Le principe est simple: On crypte les donnée à une personne CIBLE avec la clée publique de cette personne CIBLE. Seule cette personne pourra décrypter le message avec sa clée privée, que seul lui a. Quand vous recevez un document crypté, si il a été crypté avec votre clée publique vous n'aurez qu'à utiliser gpg, spécifier la clée (passphrase) utilisée lors de la création des clées pour débloquer votre clée privée et enfin décrypter la clée. Il est possible, que lors de l'envoie d'un document, de "signer" ce document, prouvant que vous êtes la source du message, car on signe ce document grace à sa clée privée. Le destinataire aura donc la certitude que vous êtes bien la personne qui a envoyé le message. créons un fichier: myc:~$ (sleep 1; killall yes) & yes > lala [1] 4015 [1]+ Done ( sleep 1; killall yes ) Terminated myc:~$ ls -l lala -rw-rw-r-- 1 myc myc 11112448 Dec 23 18:41 lala myc:~$ gpg -r mycroft --encrypt lala gpg: Warning: using insecure memory! Could not find a valid trust path to the key. Let's see whether we can assign some missing owner trust values. It is NOT certain that the key belongs to its owner. If you *really* know what you are doing, you may answer the next question with yes Use this key anyway? yes myc:~$ l lala.gpg -rw-rw-r-- 1 myc myc 11418 Dec 23 18:53 lala.gpg myc:~$ Voila, le fichier est crypté, il ne reste qu'à donner ce fichier à son destinataire. 2) décryptage [18:58] mycroft@kiev (68) ~> gpg -d lala.gpg > fichier Vous avez besoin d'un mot de passe pour déverrouiller la clé secréte pour l'utilisateur: "Patrick MARIE (mycroft) " clé de 2048 bits ELG-E, ID DFA4A476, créée le 2001-02-07 (ID clé principale 1AD913C4) Entrez le mot de passe: gpg: chiffré avec une clé de 2048 bits ELG-E, ID DFA4A476, créée le 2001-02-07 "Patrick MARIE (mycroft) " [19:01] mycroft@kiev (69) ~> ls -l fichier -rw-r--r-- 1 mycroft mycroft 11112448 déc 23 19:01 fichier [19:01] mycroft@kiev (70) ~> ls -l ../myc/lala -rw-rw-r-- 1 myc myc 11112448 déc 23 18:41 ../myc/lala Et voila :-) 3) signature et vérification myc:~$ cat texte_essai Ceci est un texte pour faire un test. myc:~$ gpg -as texte_essai gpg: Avertissement: l'utilisation de la mémoire n'est pas sére ! Vous avez besoin d'un mot de passe pour déverrouiller la clé secréte pour l'utilisateur: "User XXX (X3user) " clé de 1024 bits DSA, ID 2DB2F81B, créée le 2001-12-23 Entrez le mot de passe: myc:~$ cat texte_essai.asc -----BEGIN PGP MESSAGE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: Pour information voir http://www.gnupg.org owGbwMvMwCQomuocqLvphzTjGosk7pLUipLU+NTi4sRMGzVZMS7n1ORMhdTiEoXS PAWwnEJBfmmRQlpiZlEqRKy4RI+rw56ZlQGkHmaWINO0fQxzpT4+L5wYlDjfxdsi 0EtRveiaio0xw3xXtRNtE+qPWM16ViArUh/6cEvNYlUA =kBEY -----END PGP MESSAGE----- myc:~$ gpg -d texte_essai.asc gpg: Avertissement: l'utilisation de la mémoire n'est pas sére ! Ceci est un texte pour faire un test. gpg: Signature faite dim 23 déc 2001 19:06:14 CET avec une clé DSA ID 2DB2F81B gpg: Bonne signature de "User XXX (X3user) " myc:~$ rm texte_essai.asc myc:~$ gpg --clearsign texte_essai gpg: Avertissement: l'utilisation de la mémoire n'est pas sére ! Vous avez besoin d'un mot de passe pour déverrouiller la clé secréte pour l'utilisateur: "User XXX (X3user) " clé de 1024 bits DSA, ID 2DB2F81B, créée le 2001-12-23 Entrez le mot de passe: myc:~$ cat texte_essai Ceci est un texte pour faire un test. myc:~$ cat texte_essai.asc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ceci est un texte pour faire un test. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: Pour information voir http://www.gnupg.org iD8DBQE8Jh2aFWVDUS2y+BsRAlH2AJ9SItp3U+WfmNdE3RZ7zFCdR5THpwCeLVeS jPFU7BZsASQp2lqZVBFKgpE= =7mUW -----END PGP SIGNATURE----- myc:~$ gpg --verify texte_essai.asc gpg: Avertissement: l'utilisation de la mémoire n'est pas sére ! gpg: Signature faite dim 23 déc 2001 19:08:26 CET avec une clé DSA ID 2DB2F81B gpg: Bonne signature de "User XXX (X3user) " myc:~$ * Résumé - création d'une paire de clée: $ gpg --gen-key - cryptage d'un message: $ gpg -e -r [personne à qui crypter] [fichier] - décryptage d'un message: $ gpg -d [fichier] - cryptage d'un message et signature: $ gpg -se -r [personne à qui crypter] [fichier] - export de sa clée: $ ($a="utilisateur"; gpg --fingerprint $a; gpg -a --export $a) > [fichier] - signature avec texte clair $ gpg -s --clearsign [fichier] - lister les clées $ gpg --list-keys - aide #!@#!@ $ man gpg $ gpg --help * Notes Pour retirer le message (agacant) comme quoi la mémoire n'est pas utilisée: $ echo "no-secmem-warning" >> ~/.gnupg/options Configuration à rajouter dans le .muttrc afin d'utiliser GnuPG: -- debut -- set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f" set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f" set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f" set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f" set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f" set pgp_encrypt_only_command="pgpewrap gpg -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" set pgp_import_command="gpg --no-verbose --import -v %f" set pgp_export_command="gpg --no-verbose --export --armor %r" set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r" set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r" set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r" set pgp_getkeys_command="" -- fin -- Author: CNS/Minithins $Id: doc_gnupg,v 1.1 2001/12/24 21:25:44 mycroft Exp mycroft $