Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Aujourd’hui, on va voir comment chiffrer et déchiffrer des fichiers avec un mot de passe avec GnuPG sur toutes les plateformes où le système est disponible.
Je ne vais pas vous montrer comment le faire avec une clé privée, il y a déjà beaucoup de tutoriels sur le Net pour ça, on verra simplement comment le faire avec un mot de passe.
Le gros avantage de GnuPG est qu’il supporte autre chose que l’AES (contrairement à pas mal de programmes de chiffrement) et que les commandes sont universelles. Vous taperez donc les mêmes commandes sous GNU/Linux, Mac OS, Windows, xBSD etc …
Installation de GnuPG :
- GNU/Linux
GnuPG Classic (1.x) est normalement déjà inclus dans votre distribution.
GnuPG Stable / Modern (2.x) est présent dans le paquet gnupg2 sur la plupart des distributions :
apt-get install gnupg2
Pour les dérivés de RHEL/CentOS, cherchez-le sur RPMFind.
- Mac OS
Téléchargez et installez GnuPG for OSX sur Sourceforge.
- Windows
Téléchargez et installez Gpg4win.
- FreeBSD
Utilisez les ports ou le gestionnaire de packages :
pkg_add -r -v gnupg
Chiffrer / déchiffrer des fichiers avec mot de passe avec GnuPG :
Ouvrez un terminal sur votre ordinateur ( ou votre mac pour ceux qui n’ont toujours pas compris que c’était un pc comme un autre 🙂 ).
On va télécharger un petit fichier d’exemple sur ping.online.net pour voir comment l’utilitaire gpg fonctionne :
http://ping.online.net/10Mo.dat
Pour la suite de cette procédure, vous pourrez utiliser gpg ou gpg2 selon la version installée sur votre système. Toutes les commandes fonctionnent avec gpg.
Chiffrer un fichier :
Lancez la commande suivante pour chiffrer notre fichier de test :
gpg -c 10Mo.dat
Un deuxième fichier chiffré apparaîtra avec l’extension .gpg :
ls 10Mo.dat 10Mo.dat.gpg
Avec la commande suivante, on peut obtenir des informations sur un fichier .gpg :
gpg --list-packets 10Mo.dat.gpg
Par exemple :
gpg --list-packets 10Mo.dat.gpg :symkey enc packet: version 4, cipher 3, s2k 3, hash 2 salt 8901109482fed275, count 65536 (96) gpg: CAST5 encrypted data
Pour comprendre cette sortie, il faut obtenir les informations sur votre installation de GnuPG avec la commande suivante :
gpg -h
Par exemple :
gpg -h gpg (GnuPG) 1.4.18 Copyright (C) 2014 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: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Compression: Uncompressed, ZIP, ZLIB, BZIP2
On voit donc que le fichier est chiffré avec CAST5 et hashé avec SHA1 :
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 gpg --list-packets 10Mo.dat.gpg :symkey enc packet: version 4, cipher 3, s2k 3, hash 2 salt 8901109482fed275, count 65536 (96) gpg: CAST5 encrypted data
Maintenant, on va chiffrer le même fichier avec TWOFISH et en le hashant avec SHA512 :
gpg -c --cipher-algo twofish --s2k-digest-algo SHA512 10Mo.dat
Et on aura maintenant cette sortie :
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 gpg --list-packets 10Mo.dat.gpg :symkey enc packet: version 4, cipher 10, s2k 3, hash 10 salt 983753232d1aa10f, count 65536 (96) gpg: TWOFISH encrypted data
Déchiffrer un fichier :
Utilisez simplement la commande suivante pour déchiffrer le fichier d’exemple :
gpg 10Mo.dat.gpg
Vous aurez une sortie similaire :
gpg 10Mo.dat.gpg gpg: TWOFISH encrypted data gpg: encrypted with 1 passphrase File `10Mo.dat' exists. Overwrite? (y/N) y
Créer un alias sous Debian :
Dans cet exemple, on va voir comment créer une commande de raccourci sur un Debian pour chiffrer les fichiers plus rapidement.
On va créer un alias de commande dans le fichier .bashrc de l’utilisateur root.
La commande se nommera encrypt et sera le raccourci de cette commande :
gpg -c --cipher-algo twofish --s2k-digest-algo SHA512
Ouvrez le fichier .bashrc de l’utilisateur root :
nano /root/.bashrc
Ajoutez la ligne suivante à la fin du fichier :
alias encrypt="gpg -c --cipher-algo twofish --s2k-digest-algo SHA512"
Sauvegardez, quittez votre session et reconnectez-vous au compte root pour appliquer les changements.
Maintenant, cette commande :
encrypt 10Mo.dat
Sera équivalente à celle-ci :
gpg -c --cipher-algo twofish --s2k-digest-algo SHA512 10Mo.dat
Et voilà 🙂