GnuPG utilise la cryptographie asymetrique pour communiquer en secret. Dans un tel système, chaque utilisateur génére une paire de clés : une clé publique et une clé privée. La clé privée est gardée en secret quand à la clé publique elle sera diffusée auprès des interlocuteurs avec qui l'utilisateur va communiquer. GnuPg est un logiciel basé sur le standard OpenPGP. GnuPG est installé par défaut dans les sytèmes Ubuntu sinon tapez: sudo apt-get install gnupg une interface graphique de GnuPG peut etre installée aussi comme seahorse ou kleopatra. Taper : sudo apt-get install seahorse Générer des clés avec GnuPG ouvrir un terminal et taper : gpg --gen-key une série de questions vous sera posés, choisissez: - RSA pour le cryptage et la signature - une taille de clés égale à 4096 - user-id: ton nom - mail: ton @ mail valide (remarque: vous pouvez associer plusieurs @mail à une meme paire de clés) - passphrase: un mot de passe secret dont il faut le mémoriser toujours après ces etapes, une paire de clé sera générée. Donner l'id de votre clé? Création d'un certificat de Revocation un certificat de révocation doit etre crée pour revendiquer la paire de clés que vous avez générée dans le cas où votre clé privée a été compromise! gpg --output revoke.asc --gen-revoke $GPGKEY Une fois généré, le certificat doit etre sauvé en secret. Un intrus qui met la met la main sur ce certificat peut rendre votre clé inutilisable. Construire une version ASCII de votre clé une version ASCII de votre clé doit etre generée pour pouvoir publier votre clé dans des sites web et via email, sinon la version binaire de lac lé sera tronqué et les editeurs mail et web ne peuvent la
coder. gpg --output mykey.asc --export -a $GPGKEY remarque: c'est l'option -a responsible de la conversion en ASCII Publier la clé dans un serveur de clé publique - on peut exporter la clé publique dans un fichier en utilisant cette commande : gpg --export -a "Key-ID" > mykey.asc ou gpg --armor --export your_email@address.com pour l'afficher à l'ecran - copier le contenu de la clé - consulter un serveur de clé publique comme: http://keyserver.ubuntu.com/ ou http://pgp.mit.edu/ et publier la clé dans un de ces serveurs, il va etre automatiquement diffusé vers tous les serveurs de clés publiques. Voir une liste de clé tu peut voir la liste de clés que tu possède entapant gpg --list-keys tu peut voir une clé spécifique de l'utilosateur mail@address.com en tapant: gpg --list-keys mail@address.com Importer une clé publique d'un autre utilisateur on peut importer la clé publique d'un autre utilisateur avec qui on veut communiquer en secret depuis un serveur de clé publique et en le sauvant dans un fichier, l'importation de la clé pour que GnuPG l'utilise se fait par cette commande :
gpg --import name_of_pub_key_file Verification de l'identité d'une personne : fonctionde hachage comment etre sûr que la clé publique d'un utilisateur est integre? Et associer la clé à cette personne? On peut comparer les empreintes digitales au lieu de comparer les clés eux memes : on peut generer l'empreinte digitale d'une clé en tapant: gpg --fingerprint email@address.com Signer une clé signer une clé veut dire que vous faites confiance à la clé publique que vous avez signé avec votre clé privée et que vous avez verifier l'identité de la personne possedant la clé. Pour signer une clé que vous avez importé, taper: gpg --sign-key email@example.com après la signtaure de la clé, ceci peut aider d'autres personnes à faire confiance à cette personne. Si quelqu'un vous fait confiance et voit que vous avez signer une clé d'une autre personne, il va faire confiance à la clé de cette personne. Vous pouver maintenant exporter cette clé signé pour que d'autres personnes beificent de cette confiance : gpg --export --armor email@example.com ces personnes peuvent telecharger cette signature (envoyé pour vous) et importer la clé signé par: gpg --import file_name Chiffrement et déchiffrement des messages avec GnuPG chiffrer/dechiffrer un message pour utilisation personnelle : # the long version gpg --encrypt --recipient 'Your Name' foo.txt ou # the short version gpg -e -r Name foo.txt le fichier chiffré sera nommé foo.txt.gpg ou foo.txt.asc on peut maintenant déchiffrer le message qui existe dans foo.txt.gpg par:
gpg --output foodechiffre.txt --decrypt foo.txt.gpg chiffrer/dechiffrer un message entre deux interlocuteurs on peut maintenant chiffrer et dechiffrer des messages entre toi et ton interlocuteur gpg --encrypt --sign --armor -r person@email.com name_of_file --encrypt : pour chiffrer le fichier name_of_file avec la clé publique de person@email.com --sign : signer le fichier crypté par ta clé privée -r : specifie le recepteur, donc le chiffrement sera fait avec la clé publique de Mr person@email.com si vous voulez aussi vous meme dechiffrer le message chiffré, vous devez ajouter -r ton@mail comme recepteur si plus qu'un recepteur existe, le message sera chiffré séparement autant de foix qu'il ya des recepteurs le message chiffré sera un texte ASCII et non des données binaires brut avec la commande --armor Dechiffrer le message : lors de la reception d'un message chiffré, taper simplement : gpg file_name Envoyer des emails chiffrés et déchiffrement Maintenant que chacun a crée une paire de clés, constituer des groupes de deux personnes et essayer de vous envoyer des mails chiffrés et faire le déchiffrement. Faire en sorte que vous soyez sûr : - de l'identité de votre interlocuteur - de sa clé publique - signer aussi les messages envoyés pour que le recepteur soit capable de verifier votre identité Automatisation du processus du cryptage par mail Utiliser le client mail thunderbird pour que le chiffrement/dechiffrement et/ou création/verification de la signature soit automatique et facile. Thunderbird a besoin dans ce cas du plugin enigmail. Installer ce plugin en tapant le suivant: sudo apt-get install enigmail
configurer votre client mail pour envoyer/recevoir des messages chiffrés et/ou signés en utilisant le plugin enigmail de thunderbird. Utilisation de la cryptographie symmetrique chiffrer le fichier salut avec l'algorithme symmetrique AES256 gpg --armour --symmetric --cipher-algo AES256 salut GnuPG va vous demander de donner un passphrase, ce passphrase est utilisé pour générer une clé symmetrique de taille 256 bits pour l'alg AES256. voir le resultat du cryptage : gedit salut.asc de l'autre coté de la communication, faire le décryptage : gpg -o salutdec.txt -d salut.asc de la meme façon l'utilisateur peut choisir n'importe quel alg symmetrique à utiliser pourvu que ça soit supporté dans GnuPG. Ex TWOFISH ou CAMELIA256 Si on veut en plus signer le message avec notre clé privée : gpg --sign --symmetric --cipher-algo AES256 file.txt et pour dechiffrer et verifier la signature : gpg -d file.txt.gpg Simple signature d'un document Si on veut seulement signer le document salut : gpg --clearsign salut resultat -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 salut people -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iqicbaebagagbqjw1j/eaaojeeghtb4rrbdqggsp/12hmejsokx5t4k7ygbv19r/ MPhV1TOx1aA4cNQlFyXAKYySMdCYVSaQNTSC6sRXOBGvECXgfvv5xezNs8pDw/Ro FIXckxrlM6Ee4x+2Qx2bVkoi/pNlJi4NZ75tLgEM5LSzewdiRE62P8NGxeqgidwL lpk642kbyf7ry9dya0c7fktprehhwj5/qb//otjpfz8kqlvqnp71qllj/n53manw 7ZmFHAwBJaHRfyRuD23WyAN8nlpOkieUSIGiWMINX5it+3c/1K6xKFDUIqnbu1Tv
FKHYlDS7DIAKGdIDDmFrOtvL/Idj3qHvD3bqttEFSiQBZxWewWPu7cuY/qB6MkHg MlKJIGG7XVmTxpCjsjtGwtnSfIbebcPLIyhAFPHUQfvvgFN8rSP3czdhBhs/4dRh 18NTisgOQP0qudzY6BKrLyq33kpWCnaQKmjOVN1/4j9muo/3QrW01/YXTnMSRmfX dv7p19c4eqfdhz4qjop9et6xdndb8j/qi/yet4vbgykv1zvmt+u/behyswy92ynp 62ryhIDXVk98HZCPmswbRA7o/qcZzBFyxsq6egU55nZn5Lhrw7jtBF61/0hyl5AX 0fZpRH9j9u2QIRpANN3WsaqbHHamw3QCtDoafroa7ruQXslHxDWLOSllI9TdEQ4Q mvr6q3r8ldwyct3jommx =as2p -----END PGP SIGNATURE----- Coté recepteur, il verifie la signature : gpg --verify sallutclearsign resultat gpg: Signature made Mon 29 Feb 2016 02:45:08 PM EST using RSA key ID 2B44176A gpg: Good signature from "rhouma (test this) <rhoouma@yahoo.fr>" au lieu de clarsign on peut utiliser la commande sign pour generer une signature binaire, et la verification se fait de la meme façon. On peut aussi choisir quel clé privé à utiliser pour signer un fichier par la commande --local-user mail description : gpg --clearsign --local-user rhouma.ubuntu salut Projet à réaliser : Utiliser la cryptographie hybride pour communiquer en secret. La cryptographie symmetrique sera utilisée pour chiffrer les messages et les fichiers quand à la cryptographie asymmetrique, elle sera utilisée pour communiquer en secret les clés des algorithmes symmetriques. Utiliser: - thunderbird - enigmail - GnuPG - Seahorse ou - GnuPG - Seahorse - plugin mailvelope de Firefox - extension mailvelope de Chrome pour cela vous devez importer votre paire de clés qui a été deja generé par des commandes dans un
terminal en addition de la clé publique de votre interlocuteur: taper ça pour copier une clé publique gpg -a --export keyid et pour une clé privée gpg -a --export-secret-keys keyid visiter ces pages web pour plus de détails : https://www.mailvelope.com https://whiteout.io/#product