GNU/Linux >> Linux Esercitazione >  >> Linux

Come crittografare e decrittografare file/cartelle in Linux usando GnuPG

Recentemente uno dei nostri lettori ha posto una domanda:"Come crittografare e decrittografare pochi file/cartelle in Linux preferibilmente basati su CLI?"

Ecco la soluzione: Per crittografare e decrittografare i file utilizzeremo GnuPG (GNU Privacy Guard) che è lo strumento di GNU per la crittografia e la firma. GnuPG è un'implementazione con licenza GPL dello standard OpenPGP ( Pretty Good Privacy ) come definito in RFC 4880. GnuPG stesso è uno strumento a riga di comando senza alcun elemento grafico. È il vero motore crittografico che può essere utilizzato direttamente da un prompt dei comandi, da script di shell o da altri programmi. Pertanto può essere considerato come un backend per altre applicazioni.

Vantaggi di GnuPG:

  • Funzionalità migliori rispetto a PGP e alcuni miglioramenti della sicurezza rispetto a PGP 2.
  • Decrittografa e verifica i messaggi PGP 5, 6 e 7.
  • Supporta ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 e TIGER.
  • Facile implementazione di nuovi algoritmi utilizzando moduli di estensione.
  • Supporta le date di scadenza delle chiavi e delle firme.
  • Supporto per inglese, danese, olandese, esperanto, estone, francese, tedesco, giapponese, italiano, polacco, portoghese (brasiliano), portoghese (portoghese), russo, spagnolo, svedese e turco.

In questo articolo vedremo l'installazione, la crittografia e la decrittografia di file di GnuPG tramite password e coppia di chiavi.

Come installare GnuPG

GnuPG verrebbe installato sulla maggior parte delle distribuzioni Linux. Per verificare esegui il comando seguente:

[root@catest]# yum info gnupg

Se trova già l'installazione, non è necessario installarlo, altrimenti installa usando yum (Sapere come configurare Yum).

[root@catest]#yum install gnupg

Come crittografare un file in Linux usando la password – GnuPG

Segui il comando seguente per crittografare un file utilizzando una passphrase:

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

L'esecuzione sopra il comando per la prima volta creerebbe .gnupg directory nella tua directory home. Sotto .gnupg directory verrebbero creati due file: gpg.conf, pubring.gpg e secring.gpg . gpg.conf è il file di configurazione predefinito che gpg considererebbe nella crittografia e decrittografia dei file, pubring.gpg è il portachiavi pubblico e secring.gpg è il portachiavi segreto.

Qui l'opzione -c farebbe in modo che gpg crittografa il file con una cifra simmetrica usando una passphrase. La cifra simmetrica predefinita utilizzata è CAST5, ma è possibile sceglierne altre con l'opzione –cipher-algo.

Per crittografare un file chiamato sample.txt eseguire il comando seguente:

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

Il comando precedente richiederebbe due volte la passphrase per confermare e, in caso di successo, creerebbe sample.txt.gpg mantenendo anche il file sample.txt originale. Si consiglia di eliminare il file originale sample.txt e di avere solo il file crittografato.

Nota:se dovessi dimenticare la tua passphrase, sarebbe impossibile decifrare il file!

Come decifrare un file in Linux usando la password – GnuPG

Per decrittografare un file già crittografato usa il comando seguente:

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

L'esecuzione del comando precedente richiederebbe la passphrase per decrittografare il file. In caso di successo, il file crittografato verrà decrittografato.

Come generare una coppia di chiavi pubblica-privata – GnuPG

Prima di iniziare la crittografia utilizzando la coppia di chiavi, prima di tutto dovrebbe essere creata una coppia di chiavi privata/pubblica GPG utilizzando il comando seguente:

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

Seguire le istruzioni. Le impostazioni predefinite dovrebbero essere sufficienti per un primo test. Apparirà qualcosa come il seguente:

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:

Ti verrà richiesta una passphrase per la chiave. Si consiglia vivamente di usarne uno forte. Non è comunque necessario per la crittografia dei file, ma è necessario durante la decrittografia dei file.

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)

Una volta che sono disponibili sufficienti byte casuali, le chiavi verranno generate. Ma rendere disponibili sufficienti byte casuali non è un compito facile. quindi la soluzione è:

Soluzione per "Byte casuali insufficienti disponibili - GnuPG"

Sappiamo tutti che è piuttosto doloroso creare manualmente entropia per la creazione di una chiave GPG. Quindi, usando rngd alimenteremo dati casuali dal dispositivo hardware al dispositivo casuale del kernel come mostrato di seguito:

[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

Quindi crea la tua chiave GPG e le chiavi verranno generate come mostrato di seguito:

++++++++++.++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++.+++++.+++++++++++++++.+++++..+++++.+++++++++++++++.+++++++++++++++>+++++..+++++.+++++^^^^
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

Come esportare la chiave pubblica – GnuPG

Ora che la coppia di chiavi è stata generata, esporteremo la chiave pubblica da utilizzare in un altro server per la crittografia e quindi trasferiremo il file crittografato sul nostro server originale per decrittografarlo utilizzando la chiave privata. Per esportare la chiave pubblica, esegui il comando seguente:

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

Qui 'ramyasanthosh' è l'uid utilizzato durante la generazione della coppia di chiavi.

Come crittografare file usando una coppia di chiavi pubbliche – GnuPG

Ora useremo questa chiave pubblica per crittografare il file su un altro server, per il quale devi prima importare la chiave pubblica su quel sistema come mostrato con il comando seguente:

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

Quindi puoi vedere la chiave pubblica importata con il comando seguente per elencare tutte le chiavi pubbliche disponibili.

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

Ora usando questa chiave pubblica crittograferemo un file:

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

Una volta terminato, troverai il nome del file sample.txt.gpg – Un file crittografato. Trasferisci il file sul server originale in cui abbiamo generato la coppia di chiavi.

Come decifrare un file usando la chiave privata – GnuPG

Ora decrittograferemo il file crittografato usando la chiave privata con il comando seguente. Ti verrà chiesto di inserire la passphrase che hai utilizzato per generare la coppia di chiavi.

[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]>"

Questo è fatto con la decrittazione e troverai il file originale sample.txt.

Come eseguire il backup della tua chiave privata – GnuPG

È sempre consigliabile eseguire il backup della chiave privata e non dimenticare mai la passphrase! Segui il comando seguente per eseguire il backup della tua chiave privata:

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

Linux
  1. Come crittografare e decrittografare file e directory utilizzando Tar e OpenSSL

  2. Utilizzo di GPG per crittografare e decrittografare file su Linux [Hands-on for Beginners]

  3. Come estrarre i file .gz e .tar.gz in Linux

  4. wget vs curl:come scaricare file usando wget e curl

  5. Come crittografare e decrittografare un file utilizzando GnuPG in Linux

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Come aprire file e cartelle come amministratore in Nautilus File Manager in Linux

Come nascondere cartelle e file in Linux usando un file di testo

Come copiare file e directory nel terminale Linux

Come crittografare file su Linux

Come eliminare file e directory utilizzando la riga di comando di Linux