GPG
Les commandes présentées sont celles du logiciel en ligne de commande "gpg" disponible sous Linux, cependant des commandes similaires peuvent être retrouvées sur d'autres plateformes et d'autres logiciels. Les concepts présentés sont identiques dans les logiciels graphiques.
GPG (lisez : GNU Privacy Guard) est un outil multifonction, libre et gratuit, qui permet de signer et de chiffrer à peu près tout ce qui se présente sous forme numérique (tout ce qui a un bit, si vous me passez l'expression). Cette page présente un didacticiel non exhaustif des principales fonctionnalités disponibles. 
Vous trouverez un excellent didacticiel à cette adresse : http://gpglinux.free.fr/gpg.pdf
Une autre documentation, au format HTML : Introduction à GnuPG
= Théorie =
Chiffrement/Signature.
Le chiffrement est la fonction la plus connue. Elle permet de rendre un document complètement illisible pour toute personne non désignée par le rédacteur. Pour ce faire, le créateur de l'information chiffre ses données à l'aide d'une clé partagée seulement avec le destinataire, et ce dernier pourra retrouver les documents de son binôme rapidement, le tout dans une totale intimité numérique. Dans le cas du chiffrement asymétrique, la clé de chiffrement symétrique est elle-même chiffrée mais de telle façon que seul le destinataire choisi soit en mesure de la déchiffrer. Ainsi toute personne peut envoyer un message à quelqu'un mais personne ne peut les intercepter.
La signature permet à un créateur de garantir la provenance et l'intégrité d'un document. Dans l'implémentation PGP, toute personne peut accéder à la clé publique permettant de vérifier la signature d'un document et donc que seule la personne disposant de la clé privée associée est à l'origine de cette signature. Puisque que la clé publique est en libre circulation, l'association entre la clé et la personnalité morale propriétaire repose sur un réseau de confiance: toute autre personne peut ajouter sa signature à la clé publique de quelqu'un et signifier ainsi sa "confiance" au sujet de l'appartenance de cette clé.
Les signatures numériques sont largement utilisées dans la publication de logiciel. Les paquets et les dépôts de logiciel Linux sont généralement tous signés, ne reste plus que l'autorisation de l'utilisateur de faire confiance aux clés utilisées.
Fonctionnement et principes.
Signer.
Lorsque vous signez une information, gpg génère un fichier unique associé à vos informations. La signature garantie l'intégrité des données, donc si vous modifiez le document signé, le fichier de signature ne sera plus valide. Le fichier signature doit être fait avec la version finale du document à signer qui ne doit plus changer d'un bit après la signature.
Lors de l'envoi à une personne, le document doit être accompagné de la signature et de la clé publique permettant de vérifier cette signature (ou seulement l'identifiant de la clé). Cette méthode n'empêche pas la lecture du contenu, elle permet de vérifier que ce contenu est authentique, et livré dans son intégralité par rapport à la version de celui qui l'a composé. Attention : si la signature comporte bien une date, cette dernière n'est pas fiable. Il suffit en effet de changer la date de son ordinateur pour pouvoir générer des signatures post ou antidatées. Une signature certifie donc l'authenticité des données qu'elle signe, mais pas à une date donnée.
À savoir : il existe des serveurs sécurisés pour stocker les clefs publiques. C'est plus pratique pour que n'importe qui puisse vérifier la validité du document. Vous pouvez aussi mettre ce fichier sur votre site internet, mais le plus sécurisé reste de transmettre la clef ... par un contact social.
Chiffrer.
Lorsque vous chiffrez un document, vous utilisez la clef publique appartenant à la personne (morale ou physique) qui est le destinataire. Seule cette personne (qui possède également le mot de passe) pourra déchiffrer les informations. Vous pouvez aussi chiffrer « dans le vide », c'est-à-dire que le fichier n'est pas destiné à quelqu'un en particulier, mais à toute personne connaissant le mot de passe, mais c'est évidemment moins sécurisé.
C'est donc beaucoup plus confidentiel. Bien que l'on puisse croire à première vue que c'est destiné à la communication entre deux personnes uniquement, ce n'est pas forcément vrai : un profil peut appartenir à un groupe de personnes (association, entreprise), donc chaque ordinateur de ce groupe peut posséder le même compte, mais la sécurité est plus controversée dans ce cas-là.
Le chiffrement et la signature sont deux procédés distincts qu'il est possible de combiner ou non pour garantir l'identité et la confidentialité des échanges.
Créer ses clefs.
gpg --gen-key
Cette commande est interactive est nécessite de répondre aux questions suivantes:
Le programme vous affichera l"'empreinte" de votre clé, qui est un identifiant permettant de sélectionner et retrouver votre clé.
Gérer son porte-clef.
Les clés connus (privée et publiques) sont sauvegardées et centralisées dans un porte-clefs ("keyring)". Il est possible d'utiliser plusieurs porte-clefs et toutes les commandes suivantes utiliseront le porte-clef par défaut.
Exporter.
Pour que vos amis super secrets puissent vérifier la validité des informations que vous leur envoyez, il faut leur donner la clef publique !
gpg --export --armor votre-clef > ~/clefpublique.asc
Cette commande générera un fichiercodice_5 sous la forme d'un fichier texte ("--armor)". La clé publique peut maintenant être diffusée
Il est également possible d'exporter la clé secrète vers un fichier texte.
gpg --export-secret-key -a > fichier.asc
Importation.
Une fois récupérée, il faut ajouter la clé publique dans le trousseau de clés pour la rendre accessible aux applications de l'ordinateur utilisant GPG.
gpg --import fichier.asc
Puis, faites un petit codice_1, pour vérifier qu'elle est bien présente.
Pour pouvoir réimporter sa clef privée, par exemple pour la transférer entre des ordinateurs, il faut l'exporter et l'importer avec la commande codice_8. Cette opération est relativement peu sécurisée, il vaut mieux l'éviter.
Détruire sa clef.
Pour une raison ou une autre, on peut regretter sa clef. Et vous l'avez diffusée sur tous les serveurs ! Il existe un moyen simple : il faut révoquer votre clef. Autrement dit, vous créez une clef qui, mise sur les mêmes serveurs, « annoncera » la fin de validité de votre clef publique. Très pratique quand on a créé une clef à durée de vie illimitée.
gpg --gen-revoke votre-clef
Elle créera un certificat pour révoquer votre clef, à mettre ensuite sur les serveurs de clefs. Autant vous dire qu'il est intelligent de créer ce certificat, avant que vous n'en ayez besoin. Il est aussi important de ne pas le dévoiler, même si c'est moins important que la clef privée (on ne pourra pas signer à votre place, mais on pourra vous empêcher de signer).
Ensuite, pour l'appliquer, vous importez le fichier via :
gpg --import fichier
Et, ensuite, exportez-la au serveur de clefs :
gpg --keyserver pgp.mit.edu --send-keys votreclef
Si tout s'est bien passé, votre clef est maintenant invalide.
Signer ses informations.
Nous attaquons une partie intéressante : la signature électronique ! Il existe deux méthodes, il faut étudier laquelle convient le mieux à votre utilisation. 
Avec un fichier joint.
Pour signer un fichier, il faut taper :
gpg --default-key votre-clef --armor --detach-sign fichier
Cela créera un fichier portant le même nom que celui à signer avec une extension asc. Ensuite, il vous suffira d'envoyer votre fichier avec lequel vous allez joindre le fichier asc. Pour vérifier que le fichier est certifié authentique, il suffit de taper (si, bien sûr, vous avez la clef publique de votre correspondant) :
gpg --verify fichier.asc fichier
Signature intégrée.
Vous pouvez intégrer dans le fichier même (par exemple les messages, les fichiers textes, etc.), la signature électronique. Pour cela :
gpg --default-key votre-clef --clearsign fichier
La signature se trouvera à l'intérieur du fichier. Vous le remarquerez rapidement, votre texte sera entouré des balises GPG, avec le morceau de la signature. Cette méthode de signature n'est pas privilégiée pour le fichier non-textuels.
Pour vérifier l'authenticité :
gpg --verify le-fichier-signé
Chiffrer ses informations.
Méthode via clefs.
gpg --recipient la-clef-du-receveur --encrypt fichier
Cela vous pondra un fichier gpg, illisible de façon binaire. Mais, vous pouvez chiffrer l'information de façon ascii, souvent plus recommandé, de cette façon : 
gpg --recipient clef-du-receveur --armor --encrypt fichier
À ce moment là, vous aurez un fichier asc, qui est lisible par un éditeur de texte, mais, bien sûr, incompréhensible. C'est plus conseillé, puisque plus souple. Vous pouvez faire un copier-coller du fichier via mail, ou autre, s'il est chiffré en ascii. Les deux façons sont aussi sécurisées l'une que l'autre.
Dans les deux cas, seule la personne possédant la clef indiquée dans la commande ne pourra déchiffrer les informations.
Pour déchiffrer :
gpg --decrypt fichier > fichier
Tout simplement, il demandera le mot de passe de l'utilisateur, et transformera le fichier gpg en fichier lisible.
Méthode de chiffrement symétrique.
Le chiffrement symétrique, c'est-à-dire qui n'utilise pas le système de clef publique/privée, on vous demande un mot de passe que votre interlocuteur doit connaître.
codice_9 pour chiffrer et codice_10 pour déchiffrer.