GNU/Linux >> Tutoriels Linux >  >> Linux

Comment chiffrer et déchiffrer des fichiers/dossiers sous Linux à l'aide de GnuPG

Récemment, un de nos lecteurs a posé une question :"Comment chiffrer et déchiffrer quelques fichiers/dossiers sous Linux, de préférence basés sur CLI ?"

Voici la solution : Pour chiffrer et déchiffrer les fichiers, nous utiliserons GnuPG (GNU Privacy Guard), qui est l'outil de GNU pour le chiffrement et la signature. GnuPG est une implémentation sous licence GPL de la norme OpenPGP (Pretty Good Privacy) telle que définie dans la RFC 4880. GnuPG lui-même est un outil de ligne de commande sans aucun élément graphique. C'est le véritable moteur de chiffrement qui peut être utilisé directement à partir d'une invite de commande, à partir de scripts shell ou par d'autres programmes. Par conséquent, il peut être considéré comme un backend pour d'autres applications.

Avantages de GnuPG :

  • Meilleures fonctionnalités que PGP et quelques améliorations de sécurité par rapport à PGP 2
  • Déchiffre et vérifie les messages PGP 5, 6 et 7.
  • Prend en charge ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 et TIGER.
  • Mise en œuvre facile de nouveaux algorithmes à l'aide de modules d'extension.
  • Compatible avec les dates d'expiration des clés et des signatures
  • Prise en charge de l'anglais, du danois, du néerlandais, de l'espéranto, de l'estonien, du français, de l'allemand, du japonais, de l'italien, du polonais, du portugais (brésilien), du portugais (portugais), du russe, de l'espagnol, du suédois et du turc

Dans cet article, nous verrons l'installation de GnuPG, le chiffrement et le déchiffrement de fichiers à l'aide d'un mot de passe ainsi que d'une paire de clés.

Comment installer GnuPG

GnuPG serait installé sur la plupart des distributions Linux. Pour vérifier, exécutez la commande ci-dessous :

[root@catest]# yum info gnupg

S'il trouve déjà l'installation, alors vous n'avez pas besoin d'installer, sinon installez en utilisant yum (savoir comment configurer Yum).

[root@catest]#yum install gnupg

Comment chiffrer un fichier sous Linux à l'aide d'un mot de passe – GnuPG

Suivez la commande ci-dessous pour chiffrer un fichier à l'aide d'une phrase secrète :

[root@catest]# gpg -c <filename>

Exécuter la commande ci-dessus pour la première fois créerait .gnupg répertoire dans votre répertoire personnel. Sous .gnupg deux fichiers seraient créés : gpg.conf, pubring.gpg & secring.gpg . gpg.conf est le fichier de configuration par défaut que gpg considérerait dans le chiffrement et le déchiffrement des fichiers, pubring.gpg est le trousseau de clés public et secring.gpg est le porte-clés secret.

Ici, l'option -c obligerait gpg à chiffrer le fichier avec un chiffrement symétrique à l'aide d'une phrase de passe. Le chiffrement symétrique par défaut utilisé est CAST5, mais d'autres peuvent être choisis avec l'option –cipher-algo.

Pour chiffrer un fichier appelé sample.txt, exécutez la commande ci-dessous :

[root@catest]# gpg -c sample.txt
Enter passphrase:<YOUR-SECRET-PASSWORD>
Repeat passphrase:<YOUR-SECRET-PASSWORD>

La commande ci-dessus demanderait deux fois la phrase secrète pour confirmer et en cas de succès, elle créerait sample.txt.gpg en conservant également le fichier original sample.txt. Il est conseillé de supprimer le fichier original sample.txt et de n'avoir que le fichier crypté.

Remarque :si jamais vous oubliez votre phrase secrète, il serait impossible de déchiffrer le fichier !

Comment décrypter un fichier sous Linux à l'aide d'un mot de passe – GnuPG

Pour décrypter un fichier déjà crypté, utilisez la commande ci-dessous :

[root@catest ~]# gpg sample.txt.gpg
gpg: CAST5 encrypted data
Enter passphrase:

L'exécution de la commande ci-dessus demanderait la phrase secrète pour déchiffrer le fichier. En cas de succès, le fichier chiffré serait déchiffré.

Comment générer une paire de clés publique-privée – GnuPG

Avant de commencer le chiffrement à l'aide d'une paire de clés, tout d'abord, une paire de clés privée/publique GPG doit être créée à l'aide de la commande ci-dessous :

[root@catest ~]# gpg --gen-key

Suivez les instructions. Les valeurs par défaut devraient être suffisantes pour un premier test. Quelque chose comme ci-dessous apparaîtra :

gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: directory `/home/ramyasanthosh/.gnupg' created
gpg: new configuration file `/home/ramyasanthosh/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/ramyasanthosh/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/ramyasanthosh/.gnupg/secring.gpg' created
gpg: keyring `/home/ramyasanthosh/.gnupg/pubring.gpg' created
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
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
Key is valid for? (0) 7
Key expires at Mon 30 Dec 2013 04:46:14 PM IST
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"

Real name: ramyasanthosh
Email address: [email protected]
Comment: Testing
You selected this USER-ID:
"ramyasanthosh (Testing) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

Enter passphrase:
Repeat passphrase:

Il vous sera demandé une phrase de passe pour la clé. Il est fortement recommandé d'en utiliser un fort. Il n'est de toute façon pas nécessaire pour le chiffrement des fichiers, mais est requis lors du déchiffrement des fichiers.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
.++++++++++....++++++++++.++++++++++++++++++++..+++++.+++++++++++++++++++++++++++++++++++..+++++.++++++++++++++++++++..+++++++++++++++..++++++++++>+++++.+++++......>+++++..+++++

Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 284 more bytes)

Une fois que suffisamment d'octets aléatoires sont disponibles, les clés seront générées. Mais rendre disponible suffisamment d'octets aléatoires n'est pas une tâche facile. donc la solution est :

Solution à "Pas assez d'octets aléatoires disponibles - GnuPG"

Nous savons tous qu'il est assez pénible de créer manuellement une entropie pour la création d'une clé GPG. Ainsi, en utilisant rngd, nous transmettrons des données aléatoires du périphérique matériel au périphérique aléatoire du noyau, comme indiqué ci-dessous :

[root@catest .gnupg]# ls -l /dev/urandom
cr--r--r-- 1 root root 1, 9 Oct 11 11:14 /dev/urandom
[root@catest .gnupg]# which rngd
/sbin/rngd
[root@catest .gnupg]# rngd -r /dev/random

Créez ensuite votre clé GPG et les clés seront générées comme indiqué ci-dessous :

++++++++++.++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++.+++++.+++++++++++++++.+++++..+++++.+++++++++++++++.+++++++++++++++>+++++..+++++.+++++^^^^
gpg: /home/ramyasanthosh/.gnupg/trustdb.gpg: trustdb created
gpg: key 296A5510 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
pub   1024D/453697B4 2013-12-23
      Key fingerprint = 0511 6477 3F98 75AB 905D  0D05 BCBA 6C69 4536 97B4
uid                  ramyasanthosh (Testing) <[email protected]>
sub   2048g/D4EAC9A3 2013-12-23

Comment exporter une clé publique – GnuPG

Maintenant que la paire de clés est générée, nous allons exporter la clé publique à utiliser dans un autre serveur pour le chiffrement, puis transférer le fichier chiffré sur notre serveur d'origine pour le déchiffrer à l'aide de la clé privée. Pour exporter la clé publique, exécutez la commande ci-dessous :

[root@catest .gnupg]# gpg --armor --output public-key.txt --export 'ramyasanthosh'

Ici, "ramyasanthosh" est l'uid utilisé lors de la génération de la paire de clés.

Comment chiffrer un fichier à l'aide d'une paire de clés publiques – GnuPG

Nous allons maintenant utiliser cette clé publique pour chiffrer le fichier sur un autre serveur, pour lequel vous devez d'abord importer la clé publique sur ce système, comme indiqué avec la commande ci-dessous :

Mon Dec 23>$ gpg --import file-enc-pubkey.txt

Ensuite, vous pouvez voir la clé publique importée avec la commande ci-dessous pour lister toutes les clés publiques disponibles.

Mon Dec 23>$ gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/453697B4 2013-12-23
uid                  ramyasanthosh (Testing) <[email protected]>
sub   2048g/D4EAC9A3 2013-12-23

Maintenant, en utilisant cette clé publique, nous allons chiffrer un fichier :

Mon Dec 23>$ gpg --encrypt --recipient 'ramyasanthosh' sample.txt
pub  2048g/D4EAC9A3 2013-12-23 ramyasanthosh (Testing) <[email protected]>
 Primary key fingerprint: 0511 6477 3F98 75AB 905D  0D05 BCBA 6C69 4536 97B4
      Subkey fingerprint: 25C1 48E1 073A 7F61 BFFD  9D14 3F7E 939F D4EA C9A3

Une fois cela fait, vous trouverez le nom du fichier sample.txt.gpg – Un fichier crypté. Transférez le fichier sur le serveur d'origine sur lequel nous avons généré la paire de clés.

Comment décrypter un fichier à l'aide d'une clé privée – GnuPG

Nous allons maintenant décrypter le fichier crypté à l'aide de la clé privée avec la commande ci-dessous. Il vous sera demandé d'entrer la phrase de passe que vous avez utilisée pour générer la paire de clés.

[root@catest ~]# gpg --output sample.txt --decrypt sample.txt.gpg

You need a passphrase to unlock the secret key for
user: "ramyasanthosh (Testing) <[email protected]>"
2048-bit ELG-E key, ID D4EAC9A3, created 2013-12-23 (main key ID 453697B4)

Enter passphrase:

gpg: encrypted with 2048-bit ELG-E key, ID D4EAC9A3, created 2013-12-23
      "ramyasanthosh (Testing) <[email protected]>"

C'est fait avec le déchiffrement et vous retrouverez le fichier original sample.txt.

Comment sauvegarder votre clé privée – GnuPG

Il est toujours conseillé de sauvegarder votre clé privée et de ne jamais oublier votre mot de passe ! Suivez la commande ci-dessous pour sauvegarder votre clé privée :

[root@catest ~]# gpg --armor --output privatekey.asc --export-secret-keys 'ramyasanthosh'

Linux
  1. Comment chiffrer et déchiffrer des fichiers et des répertoires à l'aide de Tar et OpenSSL

  2. Utilisation de GPG pour chiffrer et déchiffrer des fichiers sous Linux [Hands-on for Beginners]

  3. Comment extraire les fichiers .gz et .tar.gz sous Linux

  4. wget vs curl :comment télécharger des fichiers à l'aide de wget et curl

  5. Comment compresser et décompresser des fichiers .bz2 sous Linux à l'aide de la commande bzip2

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment ouvrir des fichiers et des dossiers en tant qu'administrateur dans Nautilus File Manager sous Linux

Comment masquer des dossiers et des fichiers sous Linux à l'aide d'un fichier texte

Comment copier des fichiers et des répertoires dans un terminal Linux

Comment chiffrer un fichier sous Linux

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux