Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

mardi 5 septembre 2017

Refaire fonctionner Enigmail avec Icedove / Thunderbird sur Debian 8.9

Depuis la dernière mise à jour du paquet Icedove sur Debian 8.9, ce dernier m'a signalé que mon Add-On Enigmail était désactivé et qu'il fallait passer désormais par un autre Add-On dont j'ai oublié le nom. Ce jour là, j'ai laché l'affaire en me disant que je regarderai cela plus tard.

Ce matin, j'ai jeté un oeil, n'ai pas trouvé d'Add-On de remplacement pour Enigmail mais par contre en suivant la procédure suivante, j'ai rétabli ma configuration Mail+Encryption:

  • Installation de Thunderbird
  • Démarrage de Thunderbird + Migration des données issues d'Icedove (se fait tout seul)
  • Installation d'Enigmail afin de le réactiver (cette possibilité n'étant pas proposée)
  • Suppression du paquet iceowl-extension

Donc, je suis passé d'Icedove à Thunderbird (comma avant sur Debian quoi !) et ça fonctionne comme avant. Enfin presque ...

Maintenant, le déchiffrement des messages ne se fait pas de manière automatique et j'ai une erreur qui dit: GnuPG a rapporté une erreur de communication avec gpg-agent (un composant de GnuPG).

Capture-Alerte_Enigmail.png

Les solutions proposées dans le billet cité n'ont malheureusement pas fonctionné chez moi.

J'ai trouvé la solution dans le billet gnome-keyring gpg2 and enigmail clash.

Le script en question a été enregistré en .gpgrc et appelé dans .bashrc. Ensuite, j'appele Thunderbird de la façon suivante:

bash -i -c '/usr/bin/thunderbird %u'

Et j'ai bien:

env| grep GPG
GPG_AGENT_INFO=/tmp/gpg-63XK4k/S.gpg-agent:3002:1

C'est donc bien le gpg-agent qui est utilisé et non le Gnome Keyring.

Avec cette façon de faire, tout fonctionne, y compris le cache sur la saisie du mot de passe de ma clé privée !

Enfin, j'ai remarqué une aberration dans la configuration par défaut de Thunderbird, le moteur de recherche par défaut est Bing, moteur de recherche d'une célèbre (plus que son moteur en tous cas !) société américaine dont je ne citerai pas le nom. Je me demande bien ce qui a pû dicter ce choix malheureux dans un logiciel open source ...

Capture-Preferences_de_Thunderbird.png

vendredi 17 février 2017

Encrypter et decrypter vos fichiers sensibles avec gpg

On utilise souvent gpg pour encrypter les mails avant envoi avec le module Enigmail installé dans Icedove ou Thunderbird.

Mais à partir du moment où on a généré une paire de clé sur sa machine, on peut très bien aussi utiliser celle-ci pour encrypter nos fichiers sensibles de la même façon que si on s'envoyait ces fichiers par mail à nous même.

Imaginons que vous n'ayez pas encore généré de clé gpg, on va donc le faire maintenant:

Etape 1: Générer une clé RSA avec gpg

debian@debian-jessie:~$ gpg --gen-key
gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Sélectionnez le type de clef désiré :
   (1) RSA et RSA (par défaut)
   (2) DSA et Elgamal
   (3) DSA (signature seule)
   (4) RSA (signature seule)
Quel est votre choix ? 1
les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (2048) 1024
La taille demandée est 1024 bits
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
         0 = la clef n'expire pas
      <n>  = la clef expire dans n jours
      <n>w = la clef expire dans n semaines
      <n>m = la clef expire dans n mois
      <n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 0
La clef n'expire pas du tout
Est-ce correct ? (o/N) O

Une identité est nécessaire à la clef ; le programme la construit à partir
du nom réel, d'un commentaire et d'une adresse électronique de cette façon :
   « Heinrich Heine (le poète) <heinrichh@duesseldorf.de> »

Nom réel : GPG Test
Adresse électronique : gpg-test@debian-jessie
Commentaire : 
Vous avez sélectionné cette identité :
    « GPG Test <gpg-test@debian-jessie> »

Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? O
Une phrase secrète est nécessaire pour protéger votre clef secrète.

De nombreux octets aléatoires doivent être générés. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers ; cela donne au générateur de
nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie.

Il n'y a pas suffisamment d'octets aléatoires disponibles. Veuillez faire
autre chose pour que le système d'exploitation puisse rassembler plus
d'entropie (287 octets supplémentaires sont nécessaires).
.+++++
+++++
De nombreux octets aléatoires doivent être générés. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers ; cela donne au générateur de
nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie.
.....+++++
.+++++
gpg: clef B92948DE marquée de confiance ultime.
les clefs publique et secrète ont été créées et signées.

gpg: vérification de la base de confiance
gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),
     modèle de confiance PGP
gpg: profondeur : 0  valables :   1  signées :   0
     confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.
pub   1024R/B92948DE 2017-02-12
 Empreinte de la clef = C5F3 6E3A 69D8 7A63 434F  43BF 4768 0256 B929 48DE
uid                  GPG Test <gpg-test@debian-jessie>
sub   1024R/7F8FD1CF 2017-02-12

Afin que la génération de la clé ne soit pas trop longue, on a utilisé une longueur de clé de 1024 bits. Et hormis l'adresse e-mail, le nom réel et la passphrase de la clé privée, on a conservé les valeurs par défaut.

Vérifions la clé générée

Etape 2: Lister les clés gpg

debian@debian-jessie:~$ gpg --list-keys --armor
/home/debian/.gnupg/pubring.gpg
-------------------------------
pub   1024R/B92948DE 2017-02-12
uid                  GPG Test <gpg-test@debian-jessie>
sub   1024R/7F8FD1CF 2017-02-12

Voilà, nous somme prêt à encrypter un fichier.

Etape 3: Encrypter un fichier avec gpg

Voici les données que nous allons encrypter:

debian@debian-jessie:~$ cat secret_file.txt
This file contains sensitive data that we do not want to disclose.

That's why we will encrypt it with gpg asymetric encryption.

La commande à utiliser est toute simple. Il faut préciser:

  • la clé publique à utiliser pour encrypter, ce qui se fait en donnant l'adresse e-mail de celle-ci,
  • le fichier à encrypter
debian@debian-jessie:~$ gpg --recipient gpg-test@debian-jessie --encrypt secret_file.txt 
debian@debian-jessie:~$ ls secret_file.txt*
secret_file.txt  secret_file.txt.gpg

Le fichier initial secret_file.txt a été encrypté dans un fichier secret_file.txt.gpg.

Attention: Le fichier initial secret_file.txt n'est pas supprimé par gpg, c'est à vous de le faire explicitement !!!

Maintenant si on souhaite que le fichier encrypté s'appele autrement, par exemple safe_file.ext pour tromper l'ennemi:

debian@debian-jessie:~$ gpg --recipient gpg-test@debian-jessie --output safe_file.ext --encrypt secret_file.txt 

Cela se fait avec le flag --output qu'il faut placer avant le flag --encrypt.

Etape 4: Décrypter un fichier encrypté avec gpg

Maintenant, nous allons décrypter le fichier précédemment encrypté de la façon suivante:

debian@debian-jessie:~$ gpg --recipient gpg-test@debian-jessie --decrypt safe_file.ext 

Une phrase secrète est nécessaire pour déverrouiller la clef secrète de
l'utilisateur : « GPG Test <gpg-test@debian-jessie> »
clef RSA de 1024 bits, identifiant 7F8FD1CF, créée le 2017-02-12 (identifiant de clef principale B92948DE)

gpg: chiffré avec une clef RSA de 1024 bits, identifiant 7F8FD1CF, créée le 2017-02-12
      « GPG Test <gpg-test@debian-jessie> »
This file contains sensitive data that we do not want to disclose.

That's why we will encrypt it with gpg asymetric encryption.

On utilise maintenant le flag --decrypt, gpg nous demande la passphrase de la clé privée nécessaire à la décryption, et le contenu décrypté s'affiche sur la sortie standard.

Si l'on souhaite que le contenu décrypté soit enregistré dans le fichier output.txt, on utilise le flag --output comme suit:

debian@debian-jessie:~$ gpg --recipient gpg-test@debian-jessie --output output.txt --decrypt safe_file.ext 

Une phrase secrète est nécessaire pour déverrouiller la clef secrète de
l'utilisateur : « GPG Test <gpg-test@debian-jessie> »
clef RSA de 1024 bits, identifiant 7F8FD1CF, créée le 2017-02-12 (identifiant de clef principale B92948DE)

gpg: chiffré avec une clef RSA de 1024 bits, identifiant 7F8FD1CF, créée le 2017-02-12
      « GPG Test <gpg-test@debian-jessie> »

Vérifions le fichier décrypté:

debian@debian-jessie:~$ cat output.txt 
This file contains sensitive data that we do not want to disclose.

That's why we will encrypt it with gpg asymetric encryption.

Voilà, ce billet est un peu long. J'espère qu'il démystifie quelque peu l'utilisation de gpg pour ceux qui ne l'utilisent pas habituellement.

dimanche 8 juin 2014

Chiffrer un document avec gpg de manière symétrique

The GNU Privacy Guard plus connu sous le nom de gpg permet de chiffrer des documents en utilisant les algorithmes de chiffrement à clé publique.

Si un ami souhaite m'envoyer des informations sensibles, il chiffre celles-cis avec ma clé publique, et je serai le seul à pouvoir prendre connaissance du contenu envoyé parce qu'il est uniquement déchiffrable par ma clé privée, en ma seule possession.

Mais le programme de GNU permet également de chiffrer un fichier selon un procédé symétrique. Ici, plus de clé publique ni de clé privée mais uniquement un mot de passe duquel est dérivé la clé de chiffrement.

Etape 1: Encrypter en symétrique

echo "secret content" > top.secret
gpg --symmetric top.secret
cat top.secret.gpg 
��E
       ��`�+]�f�#z���,sxO?�ؘ|�h]WA��UE��

La commande gpg demande de saisir un mot de passe (et de le confirmer).

On peut aussi utiliser:

gpg -c top.secret

Attention le fichier inital n'est pas supprimé par gpg. On peut le faire avec:

shred -u top.secret

Maintenant pour déchiffrer le fichier, il suffit d'utiliser:

Etape 2: Déchiffrer de manière symétrique

gpg top.secret.gpg

qui affiche alors:

gpg: CAST5 encrypted data
Enter passphrase: 

Après saisie du mot de passe (correct !), le fichier top.secret a été recréé.

On aurait pu aussi utiliser (si l'on souhaite par exemple renommer le fichier décrypté):

gpg --output top.secret.renamed --decrypt top.secret.gpg

ou pour décrypter sur la sortie standard:

gpg --decrypt top.secret.gpg

Etape 3: Les algorithmes de chiffrement symétriques de gpg

Le chiffrement symétrique de gpg utilise par défaut l'agorithme CAST5 qui ne présente pour l'instant aucune attaque connue.

Pour connaitre la liste des algorithmes pour le chiffrement symétrique avec gpg:

gpg --version
gpg (GnuPG) 1.4.12
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, 
        CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

Et pour changer d'algorithme, on utilise le flag --cipher-algo:

gpg --cipher-algo AES --symmetric top.secret

Lors du déchiffrement, l'algorithme n'est pas à préciser puisque gpg saura le deviner seul avec les informations inscrites dans le fichier au cours du chiffrement.

samedi 1 février 2014

Générer des paires de clés RSA de plus de 4096 bits avec gpg

GnuPG (The GNU Privacy Guard) est probablement un outil dont vous vous servez pour crypter vos fichiers sensibles ou vos emails.

gpg permet de générer différentes types de paires de clés, dont des paires de clés RSA. Pour les clés RSA, la taille maximale est de 4096 bits.

De la même manière que GnuPG refuse une taille inférieure à 1024 bits, il n'accepte pas plus de 4096 bits.

Il y a pourtant un moyen de générer des paires de clés RSA de 8192 bits (et théoriquement plus, tout dépend de votre machine) en utilisant l"Unattended key generation", c'est à dire la génération de clés en mode "batch".

Pour cela, on crée un fichier au format suivant:

cat >foo <<EOF
     %echo Generating a RSA key
     Key-Type: RSA
     Key-Length: 8192
     Subkey-Type: RSA
     Subkey-Length: 8192
     Name-Real: Jean Crypte
     #Name-Comment:
     Name-Email: jean.crypte@gmail.com
     Expire-Date: 25y
     Passphrase: youwon'tfindme
     # Do a commit here, so that we can later print "done" :-)
     %commit
     %echo done
EOF

Et on fournit ce fichier à gpg comme suit:

gpg --batch --gen-key -a foo

Puis on supprime le fichier temporaire:

rm -f foo

Si la ligne Passphrase est absente ou commentée, gpg ne demandera pas à l'utilisateur de saisir de mot de passe lors de la génération et la clé privé en sera donc dépourvue.

Un inconvénient qu'on peut trouver à cette méthode réside dans le fait que le mot de passe se trouve, à un moment donné, dans un fichier sur le disque. Il est donc conseillé d'utiliser un mot de passe temporaire que l'on changera ensuite.

Pour plus de détails sur la génération de clés RSA en mode batch, consultez la documentation de l'Unattended key generation de GnuPG.