You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jean-Marie Mineau 2227099148
example signed commit
1 year ago
README.md example signed commit 1 year ago
add-key.png initial commit 1 year ago
config_telecom.png initial commit 1 year ago
default-settings.png initial commit 1 year ago
exemple.png initial commit 1 year ago
gitea_manage_pgp.png add gitea pictures 1 year ago
gitea_signed_commit.png example signed commit 1 year ago
gitea_ssh_pgp.png add gitea pictures 1 year ago
import-key.png initial commit 1 year ago
param-end-to-end.png initial commit 1 year ago

README.md

GPG

Installer GPG:

GPG est un outil pour gérer le protocol openPGP (Pretty Goog Privacy) que nous allons utiliser sur linux.

Le protocole openPGP lui même est décrit par la RFC4880. En pratique c'est de la crypto hybride (assymétrique pour la clef symétrique/symétrique pour le contenu du message).

On peut trouver des infos utiliser sur le archwiki par exemple, ou sur le site de GnuPG, ou tout simplement dans le manuel $ man gpg

  • Remarque: les commandes préfixés par # sont a lancer avec des droit administrateur (avec sudo par exemple), celle préfixés par $ sont à lancer normalement (a chaque fois sans préfixe...)
# apt update
# apt install gpg

(sur un systeme arch base: # pacman -S gnupg)

Generation de la clef

gpg --full-gen-key

PGP va vous demander de choisir un algorithme de chiffrement:

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
  (14) Existing key from card

On a prendre RSA pour faire simple: rentrez 1.

Il vous est ensuite demander la taille de votre clef:

RSA keys may be between 1024 and 4096 bits long.

Actuellement (en 2020), il est fortement recommander d'utiliser des clefs RSA d'au moins 2048 bits. On considere également qu'une clef plus longue risque de trop ralentire les calculs. Faisons un compromis et prenons une clef de 3072 bits (la valeur par défaut, il suffit de faire 'entrer' sans rien taper)

Ensuite on doit donner la durée de validité de la clef:

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years

L'usage est de donner une durée de validité résonnable a une clef, pour que par exemple en cas de perte de la clefs elle finira par être révoquée. On peut ralonger la validité d'une clef après coup.

Pour cette fois, ne nous embettons pas et mettons une durée de validité infinie: rentrez 0 (ou juste 'enter' sans rien rentrer, c'est la valeur par défaut)

Ensuite on doit donner l'identité associé à la clef:

Real name: : ici donner votre nom prenom

Email address: : l'addresse mail que vous aller utiliser avec cette clef

Comment: : laissez cette section vide, il semble que le protocole ne soit pas trop définit a ce niveau

Maintenant validez:

You selected this USER-ID:
    "Toto Passoire toto.passoire@example.com"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

=> Rentez O pour valider.

Rentrez maintenant un mot de passe pour sécuriser votre clef privée.

Félicitation, vous avez une clef PGP!

Bonus:

Si vous utilisez plusieurs addresses mails, vous pouvez rajouter des identitées a votre clef:

Il vous faut d'abord l'identifiant de la clef a modifier. GPG est assez souple a ce niveau, vous pouvez prendre par example l'addresse mail déjà présente dans la clef

$ gpg --edit-key toto.passoire@example.com

Vous aller rentrer dans une nouvelle console. Dans cette console rentrez adduid:

gpg> adduid

Les meme questions que pour la creation de la clef vont vous etre posées, cette fois mettez la deuxieme addresse mail que vous voulez utiliser.

Il faudra rentrer le mot de passe de la clef que vous voulez modifier pour ecrire les changements.

Pour quitter la console, utilisez

gpg> q

Lister les clefs

Pour lister les clefs privés a votre disposition (= vos clefs personnelles):

$ gpg --list-secret-keys

Pour lister les clefs publiques a votre disposition (= les clefs de vos destinataires)

$ gpg --list-public-keys

Exporter votre clef publique

Pour que quelqu'un puisse vous envoyer des messages et verifier vos signature, cette personne a besoin de votre clef publique. Il faut donc l'exporter dans un fichier que vous allez transmettre a cette personne.

$ gpg --export --armor --output myKey.pub toto.passoire@example.com

(remplacez toto.passoire@example.com par votre propre addresse mail)

Votre clef est maintenant copiée dans myKey.pub.

Vous pouvez la voir en faisant

$ cat myKey.pub

Importer une clef publique

Pour envoyer des messages chiffré a quelqu'un, il faut ca clef publique. Cette personne doit donc vous donner ca clef (voir l'étape plus haut), et il ne vous reste plus qu'a faire:

$ gpg --import myKey.pub

Pour rajouter cette clef a votre liste de clef publique connue.

Notez que tout le monde peut donner n'importe quelle identité a ca clef. C'est a vous de veriifer que l'identité dans la clef correspond a la personne qui vous l'a donnée, et que la clef vous a été donné par la bonne personne, de facon sécurisé. La tradition veux que les échanges de clefs publiques se fassent en face a face...

Si vous êtes sur de l'identité associé a une clef, il faut la signer:

gpg --sign-key tata.casserole@example.com

(Ou tata.casserole@example.com est l'addresse mail associée à la seconde clef).

Backup de la clef privée:

Vous pouvez enregistrer votre clef privé dans un fichier (a garder en sureté!) en cas de probleme avec votre ordianteur.

$ gpg --export-secret-keys --armor --output myPrivateKey.asc toto.passoire@example.com

Le mot de passe de votre clef va vous etre demandé, puis la clef va être sauvegardé dans myPrivateKey.asc. Ne paratgez pas ce fichier!.

Pour charger une clef privé depuis un fichier de sauvegarde:

$ gpg --import myPrivateKey.asc

Chiffrer et Signer:

Pour chiffrer et signer un message, écrivez votre message dans un fichier, par example monMessage.txt, puis:

$ gpg --encrypt --sign --armor -r tata.casserole@example.com --output monMessage.asc monMessage.txt

L'addresse indiquée après le -r est celle du destinataire. Le message chiffré et signé est dans monMessage.asc

Dechiffrer et verifier un message

Vous pouvez dechiffrer et verifier la signature d'un message en faisant:

$ gpg --decrypt monMessage.asc

(Voir la section au dessus pour savoir comment chiffrer et signer un message)

Si vous n'avez pas la clef public de la signature, il faut rajouter --skip-verify, MAIS IL N'EST PAS RECOMMENDEE DE FAIRE CONFIANCE A DES MESSAGES DONT ON NE PEUT PAS VERIFIER LA SIGNATURE.

Mail

Installer thunderbird:

Thunderbird est un client mail qui permet de ce connecter a un serveur mail (comme zimbra) pour envoyer et recevoir des mails.

Installez thunderbird

Se connecter a un serveur mail

Dans thunderbird, faire "file->new->existing email account"

Remplicez votre nom, addresse mail (télécom pour l'exemple), mots de passe, faire "configurer manuellement", dans serveur, mettre z.mines-telecom.fr, et dans SSL mettre SSL/TLS, cliquez sur 'retest' pour verifier que ca marche, puis 'done'.

telecom

Pour un compte gmail, donnez juste votre nom et addresse mail, sans le mdp, et faites done, thunderbird va ouvrir une fenetre web pour vous connecter a votre compte google tout seul.

Si thunderbird galere un peu trop pour afficher les mails d'un nouveau compte, essayer de le redémarer.

Mettre en place une clef PGP

Ensuite, dans les parametres du compte, selectionnez "end to end encryption"

end-to-end

Puis "ajouter une clef"

add-key

Si vous n'avez par deja créé une clef avec gpg plus haut, faite "creer une nouvelle clef OpenPGP". Sinon:

"Importer une celf OpenPGP existante":

import-key

Et selectionner dans votre systeme de fichier le ficher "myProvateKey.asc" que vous aviez sauvegardé (voir "Backup de la clef privée").

Il vous sera demandé le mots de passe de la clef. (Noté que thunderbird fonctionne indépendament de gpg, il fait une copie de la clef, et si vous la modifier avec gpg, il faudra la réimporter dans thunderbird. Aussi, thunderbird ne sauvegarde pas la clef privée avec un mots de passe, pour renforcé la sécurité, vous pouvez mettre un mot de passe générale dans thunderbird)

En bah de la section "End to End Encryption", selectionnez "Add my digital signature by default" (vous pouvez aussi ajoutez "require encryption by default", mais vous risquer de souvant devoir désactiver manuellement l'encryption, puisque vous ne pouvez envoyer des message encrypter qu'a des gens qui ont partagé une clef PGP publique avec vous.

default-settings

Ces parametre par défaut vont signer tout les mails envoyés avec cette addresse, mais ne chiffrerons pas les mails.

Pour chiffrer un mail, il faut aller, au moment de l'écrire, dans "Securité", et cocher "Require Encryption".

Lorsque vous recvez un message encrypté, thunderbird le décrypte pour vous et vérifie la signature.

exemple

Git

On peut utiliser PGP pour signer les commits git (ce qui permet par exemple d'eviter ce genre de probleme: https://news-web.php.net/php.internals/113838).

Pour commencer if faut configurer git pour singer les commit:

$ git config --global commit.gpgsign true

Puis il faut indiquer la clef a utiliser:

$ git config --global user.signingkey 67486F107F62E9E9

(67486F107F62E9E9 est l'identifiant de la clef a utiliser, vous pouvez la retrouver avec:

$ gpg --list-secret-keys --keyid-format LONG

qui donne:

/home/me/.gnupg/pubring.kbx
---------------------------
sec   rsa4096/67486F107F62E9E9 2020-11-04 [SC] [expires: 2021-11-04]
      ED55EC00C6F10D35E371342767486F107F62E9E9
uid                 [ultimate] Jean-Marie Mineau <jean-marie.mineau@telecom-paris.fr>
uid                 [ultimate] Jean-Marie Mineau <mineau.jean.marie@gmail.com>
ssb   rsa4096/150126FFBEA43140 2020-11-04 [E] [expires: 2021-11-04]

sec   rsa2048/895D4B4165CC8599 2020-07-09 [SC]
      E440E44D0DFD2889E1FC8F63895D4B4165CC8599
uid                 [ unknown] Jean-Marie Mineau <mineau.jean.marie@gmail.com>
ssb   rsa2048/A8890A0435101B28 2020-07-09 [E]

)

Vous pouvez ensuite rajouter votre clef publique sur votre compte gitea/gitlab/github (gitea dans l'example).

Il faut aller dans les parametres du compte, dans la section ssh/gpg:

ssh/gpg section

Il faut ensuite rajouter la clef publique

manage pgp

(il faut donner la valeur donnée par

$ gpg --export --armor --output myKey.pub toto.passoire@example.com

)

Maintenant, les commits sont validés sur gitea : commit signé