GNU/Linux >> Znalost Linux >  >> Linux

Jak šifrovat a dešifrovat soubory/složky v Linuxu pomocí GnuPG

Nedávno měl jeden z našich čtenářů otázku:„Jak zašifrovat a dešifrovat několik souborů/složek v Linuxu, nejlépe na bázi CLI?“

Zde je řešení: K šifrování a dešifrování souborů použijeme GnuPG (GNU Privacy Guard) což je nástroj GNU pro šifrování a podepisování. GnuPG je implementace standardu OpenPGP (Pretty Good Privacy) licencovaného GPL, jak je definován v RFC 4880. Samotné GnuPG je nástroj příkazového řádku bez jakýchkoli grafických prvků. Je to skutečný kryptografický engine, který lze používat přímo z příkazového řádku, ze skriptů shellu nebo jinými programy. Proto jej lze považovat za backend pro jiné aplikace.

Výhody GnuPG:

  • Lepší funkčnost než PGP a některá vylepšení zabezpečení oproti PGP 2.
  • Dešifruje a ověřuje zprávy PGP 5, 6 a 7.
  • Podporuje ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 a TIGER.
  • Snadná implementace nových algoritmů pomocí rozšiřujících modulů.
  • Podporuje data vypršení platnosti klíče a podpisu.
  • Angličtina, dánština, holandština, esperanto, estonština, francouzština, němčina, japonština, italština, polština, portugalština (brazilská), portugalština (portugalština), ruština, španělština, švédština a turečtina.

V tomto článku uvidíme instalaci GnuPG, šifrování a dešifrování souborů pomocí hesla a páru klíčů.

Jak nainstalovat GnuPG

GnuPG by bylo nainstalováno na většině linuxových distribucí. Pro ověření spusťte níže uvedený příkaz:

[root@catest]# yum info gnupg

Pokud již nalezne instalaci, nemusíte instalovat, jinak nainstalujte pomocí yum (Vědět, jak nakonfigurovat Yum).

[root@catest]#yum install gnupg

Jak zašifrovat soubor v Linuxu pomocí hesla – GnuPG

Chcete-li zašifrovat soubor pomocí přístupové fráze, postupujte podle níže uvedeného příkazu:

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

První spuštění výše uvedeného příkazu by vytvořilo .gnupg adresář ve vašem domovském adresáři. Pod .gnupg adresář by vytvořil dva soubory: gpg.conf, pubring.gpg & secring.gpg . gpg.conf je výchozí konfigurační soubor, který gpg vezme v úvahu při šifrování a dešifrování souborů, pubring.gpg je veřejný svazek klíčů a secring.gpg je tajný svazek klíčů.

Zde volba -c způsobí, že gpg zašifruje soubor symetrickou šifrou pomocí přístupové fráze. Výchozí používaná symetrická šifra je CAST5, ale lze vybrat i další pomocí možnosti –cipher-algo.

Chcete-li zašifrovat soubor s názvem sample.txt, spusťte níže uvedený příkaz:

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

Výše uvedený příkaz by pro potvrzení dvakrát vyzval k zadání přístupové fráze a v případě úspěchu by vytvořil sample.txt.gpg, který si také zachová původní soubor sample.txt. Je vhodné smazat původní soubor sample.txt a mít pouze zašifrovaný soubor.

Poznámka:Pokud někdy zapomenete svou přístupovou frázi, nebude možné soubor dešifrovat!

Jak dešifrovat soubor v Linuxu pomocí hesla – GnuPG

Pro dešifrování již zašifrovaného souboru použijte níže uvedený příkaz:

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

Spuštěním výše uvedeného příkazu se zobrazí výzva k zadání přístupové fráze k dešifrování souboru. Po úspěchu bude zašifrovaný soubor dešifrován.

Jak vygenerovat pár veřejného a soukromého klíče – GnuPG

Před zahájením šifrování pomocí páru klíčů by měl být nejprve vytvořen pár GPG soukromý/veřejný klíč pomocí níže uvedeného příkazu:

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

Následuj instrukce. Výchozí hodnoty by měly být dostatečné pro první test. Objeví se něco jako níže:

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:

Budete požádáni o heslo ke klíči. Důrazně se doporučuje použít silný. Pro šifrování souborů to stejně není potřeba, ale je vyžadováno při dešifrování souborů.

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)

Jakmile bude k dispozici dostatek náhodných bajtů, vygenerují se klíče. Ale zpřístupnění dostatečného množství náhodných bajtů není úplně snadný úkol. takže řešení je:

Řešení „Nedostatek náhodných bajtů k dispozici – GnuPG“

Všichni víme, že vytvořit entropii ručně pro vytvoření klíče GPG je docela bolestné. Takže pomocí rngd budeme předávat náhodná data z hardwarového zařízení do jaderného náhodného zařízení, jak je ukázáno níže:

[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

Poté vytvořte svůj klíč GPG a klíče se vygenerují, jak je uvedeno níže:

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

Jak exportovat veřejný klíč – GnuPG

Nyní, když je pár klíčů vygenerován, vyexportujeme veřejný klíč k použití na jiném serveru pro šifrování a poté přeneseme zašifrovaný soubor na náš původní server k dešifrování pomocí soukromého klíče. Pro export veřejného klíče spusťte níže uvedený příkaz:

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

Zde je „ramyasanthosh“ uid používaný při generování páru klíčů.

Jak zašifrovat soubor pomocí páru veřejného klíče – GnuPG

Nyní použijeme tento veřejný klíč k zašifrování souboru na jiném serveru, pro který musíte nejprve naimportovat veřejný klíč na tento systém, jak je znázorněno pomocí příkazu níže:

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

Poté můžete vidět, že pomocí níže uvedeného příkazu byl importován veřejný klíč, který obsahuje všechny dostupné veřejné klíče.

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

Nyní pomocí tohoto veřejného klíče zašifrujeme soubor:

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

Po dokončení najdete název souboru sample.txt.gpg – Šifrovaný soubor. Přeneste soubor na původní server, kde jsme vygenerovali pár klíčů.

Jak dešifrovat soubor pomocí soukromého klíče – GnuPG

Nyní dešifrujeme zašifrovaný soubor pomocí soukromého klíče pomocí níže uvedeného příkazu. Budete požádáni o zadání přístupové fráze, kterou jste použili k vygenerování páru klíčů.

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

To se provádí dešifrováním a najdete původní soubor sample.txt.

Jak zálohovat svůj soukromý klíč – GnuPG

Vždy je vhodné, abyste si zálohovali svůj soukromý klíč a nikdy nezapomněli svou přístupovou frázi! Pro zálohování soukromého klíče postupujte podle níže uvedeného příkazu:

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

Linux
  1. Použití GPG k šifrování a dešifrování souborů v systému Linux [Hands-on pro začátečníky]

  2. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  3. Jak zašifrovat a dešifrovat soubor pomocí GnuPG v Linuxu

  1. Jak šifrovat a dešifrovat soubory a adresáře pomocí Tar a OpenSSL

  2. wget vs curl:Jak stahovat soubory pomocí wget a curl

  3. Jak komprimovat a dekomprimovat soubory .bz2 v Linuxu pomocí příkazu bzip2

  1. Jak kopírovat soubory a adresáře v Linuxu

  2. Jak přesouvat soubory a adresáře v Linuxu (mv Command)

  3. Jak porovnávat a slučovat textové soubory na Linuxu