GNU/Linux >> Znalost Linux >  >> Linux

Začínáme s nástroji pro šifrování příkazového řádku v systému Linux

1 Úvod

Šifrování je proces kódování zpráv nebo informací takovým způsobem, že je mohou číst pouze oprávněné strany. S téměř nulovým soukromím v této naší digitální generaci je šifrování našich dat jedním z nejžádanějších nástrojů. Většina aplikací, jako je gmail, šifruje naše data, ale data ve vašem systému jsou stále nezabezpečená a na přístup k nim čekají hackeři nebo neoprávnění uživatelé. Jedním ze způsobů, jak minimalizovat riziko krádeže dat, je zašifrovat data, která jsou přítomna i v našem lokálním systému.

Tento tutoriál ukazuje několik metod šifrování dat v systémech Linux pomocí nástrojů příkazového řádku.

2 Šifrování pomocí GPG

2.1 Úvod GPG

GPG je zkratka pro GNU Private Guard, což je nástroj příkazového řádku, který se používá k šifrování a dešifrování datových souborů nebo složek pomocí šifrování symetrickým nebo veřejným klíčem. GPG je licencovaná alternativa k sadě kryptografického softwaru PGP. GPG používají také systémy kompilující OpenPGP.

2.2 Šifrování pomocí symetrického klíče

Zde mám soubor s názvem "test.txt" že zašifruji a poté dešifruji pomocí symetrického klíče a vytisknu dešifrovaný text do jiného souboru s názvem "output.txt".

Spuštěním následujícího příkazu zašifrujte soubor test.txt pomocí symetrického klíče. Volba "-c" indikovala, že GPG má používat symetrické klíče.

gpg -c test.txt

Výsledek bude vypadat jako na obrázku níže. Při prvním spuštění GPG se vytvoří složka .gnupg. Obsahuje soubory, které jsou nezbytné pro proces šifrování. Poté vás dvakrát požádá o zadání přístupové fráze. Ujistěte se prosím, že zadáváte silnou přístupovou frázi a že si ji pamatujete, protože ji budete v budoucnu potřebovat k dešifrování souborů.

Jakmile je tedy heslo zadáno správně, soubor s názvem "test.txt.gpg" je vytvořen. Toto je zašifrovaný soubor. Následující obrázek ukazuje soubor před a po zašifrování. Můžete vidět, že zašifrovaný text je v nečitelném formátu.

Pomocí následujícího příkazu dešifrujte zašifrovaný soubor

gpg -o output.txt test.txt.gpg

Budete vyzváni k zadání přístupové fráze použité k šifrování. Jakmile to zadáte správně, vytvoří se soubor „output.txt“ se stejným obsahem jako soubor „test.txt“. Výstup dešifrování může vypadat podobně jako na obrázku níže:

2.3 Šifrování veřejným klíčem

Zde zašifrujeme sadu souborů pomocí mechanismu šifrování veřejného / soukromého klíče GPG. Zahrnuje vytvoření soukromého klíče, který by nikdy neměl být s nikým sdílen, a veřejného klíče, který je nutné sdílet s lidmi, kteří vám chtějí posílat šifrovaná data.

Nejprve budeme muset zabalit soubory do komprimované složky. Zde mám adresář s názvem "enctest" se třemi soubory test1.txt až test3.txt .Tento adresář zkomprimujeme soubor tar.gz. K vytvoření komprimovaného archivu tar.gz použiji následující příkaz:

tar czf files.tar.gz ~/enctest

Tím se vytvoří soubor "files.tar.gz" . Nyní musíme vygenerovat pár veřejný/soukromý klíč. Spuštěním následujícího příkazu vygenerujte klíč:

gpg --gen-key

Pamatujte, že to musí být provedeno pouze jednou a pomocí tohoto klíče lze zašifrovat libovolný počet souborů a složek. Jakmile zadáte tento příkaz, zobrazí se různé sady otázek. Otázky budou:

  • Jaký typ šifrování použít? Vybral jsem 1, což je RSA a RSA.
  • Jaká by měla být velikost klíče? Vybral jsem si 2048, můžete si vybrat libovolnou velikost v rozmezí 1024 a 4096.
  • Kdy by měla platnost klíče vypršet? Vybral jsem 0 , což znamená, že platnost klíče nikdy nevyprší. Můžete však poskytnout dny, týdny nebo roky, pokud chcete, aby platnost vypršela v určitou dobu.

Budete požádáni o další věci, jako je přístupová fráze, budete vyzváni k jejímu zadání dvakrát. Ujistěte se, že používáte silnou frázi a že si pamatujete přístupovou frázi. Budou použity také vaše přihlašovací údaje. Přihlašovací údaje, které jsem zde použil (uvedené níže), jsou pouze pro testování. Doporučuje se, abyste použili své skutečné přihlašovací údaje, jako je jméno, e-mailové ID a uveďte nějaký komentář.

Následující obsah ukazuje moji odpověď a jak bude výstup vypadat:

gpg (GnuPG) 1.4.16; Copyright (C) 2013 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.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
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: John Doe
Email address: [email protected]
Comment: tis is key generation
You selected this USER-ID:
    "John Doe (tis is key generation) <[email protected]>"

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

Jakmile zadáte přístupovou frázi, začne generovat klíč. Požádá vás, abyste udělali nějakou práci. K otevření některých souborů se doporučuje pohybovat myší nebo něco psát nebo používat jednotky. Tuto práci použije ke generování náhodných bitů. Možná to budete muset udělat vícekrát. Výstup pro mě je uveden níže:

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 187 more bytes)
+++++
...+++++
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 92 more bytes)
.....+++++

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

+++++

Po dokončení je klíč vygenerován. Bude vypadat podobně jako obsah níže:

gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
gpg: key FA2314B6 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:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/FA2314B6 2015-04-02
      Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
uid                  John Doe (tis is key generation) <[email protected]>
sub   2048R/6F78E642 2015-04-02

Jsou zde dvě důležité věci:zadejte silnou přístupovou frázi a nezapomeňte si ji zapamatovat

Nyní, když jsou klíče vygenerovány, budeme nyní muset exportovat soubor veřejného klíče pro jeho import do jiných systémů nebo jej odeslat e-mailem. Chcete-li spustit export, použijte následující příkaz:

gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

Nahraďte 'John Doe' jménem, ​​které jste použili při generování klíče.

Doporučuje se také pořídit si zálohu soukromého klíče. Můžeme k tomu použít gpg. Chcete-li provést zálohu, použijte následující příkaz:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

Zde je soubor "file-enc-privkey.asc" bude bezpečně uchovávat zálohu soukromého klíče. Po dokončení exportu a zálohování klíče můžeme nyní zašifrovat a dešifrovat soubor .tar.gz. K šifrování použijte následující příkaz:

gpg --encrypt --recipient 'John Doe' files.tar.gz

Nezapomeňte změnit 'John Doe' ve výše uvedeném příkazu na jméno, které jste zadali během generování klíče, jinak se šifrování nezdaří. Po úspěšném spuštění příkazu se zobrazí zašifrovaný soubor s názvem "files.tar.gz.gpg" bude vytvořen.

Nyní můžeme dešifrovat archiv tar.gz pomocí následujícího příkazu. K dešifrování a poskytnutí dešifrované složky použije soukromý klíč spolu s přístupovou frází. K dešifrování použijte následující příkaz:

gpg --output output.tar.gz --decrypt files.tar.gz.gpg

Výše uvedený příkaz požádá o přístupové heslo a poté dešifruje zašifrovaný soubor a vytvoří komprimovaný soubor s názvem "output.tar.gz" které pak lze extrahovat do složky s tar a získat zpět soubory. Následující obrázek ukazuje výstup šifrovacích a dešifrovacích příkazů:

2.4 Proč GPG?

GPG podporuje obojí:šifrování veřejným klíčem i symetrické šifrování, což poskytuje dobrou flexibilitu a lze jej použít pro širokou škálu aplikací. Není potřeba poskytovat žádné citlivé informace a také gpg může mít libovolný počet šifrátorů pomocí veřejného klíče. Uživatel si může vybrat z několika šifrovacích algoritmů. Tyto důvody z něj dělají velmi užitečný bezpečnostní nástroj pro šifrování souborů a složek nebo dat.

3 Šifrování pomocí OpenSSL

3.1 Úvod do OpenSSL

Projekt OpenSSL je společným úsilím vyvinout robustní, plně funkční a Open Source sadu nástrojů na komerční úrovni, která implementuje protokoly Secure Sockets Layer (SSL v2/v3) a Transport Layer Security (TLS) a také plně výkonný obecný účelová kryptografická knihovna. OpenSSL je k dispozici pro většinu operačních systémů podobných Unixu a je založeno na SSLeay. OpenSSL podporuje také mnoho aplikací SSH, SFTP a SCP. Zde používáme OpenSSL k šifrování dat pomocí asymetrického šifrování a šifry AES. Symetrické šifrování lze použít pro šifrování větších souborů nebo dat.

3.2 Generování veřejného a soukromého klíče

První věc, kterou musíme udělat, je vygenerovat veřejný a soukromý klíč. Nejprve vygenerujeme soukromý klíč. Chcete-li to provést, použijte následující příkaz:

openssl genrsa -out private_key.pem 1024

Výše uvedený příkaz dává OpenSSL pokyn k použití RSA ke generování soukromého klíče o velikosti 1024 bajtů. Klíč je pak bezpečně uložen v souboru s názvem "private_key.pem" . Výstup tohoto příkazu bude vypadat podobně jako na obrázku níže:

Jakmile je vygenerován soukromý (tajný) klíč, můžeme jej použít k vygenerování veřejného klíče, takže tvoří pár. Pro vygenerování veřejného klíče použijte následující příkaz:

openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

Bude to vypadat jako na obrázku níže:

3.3 Šifrování dat

Nyní můžeme použít veřejný klíč k šifrování dat. Zde zašifrujeme soubor „test.txt“ a zašifrovaný text uložíme do souboru encrypt.dat. Proveďte následující příkaz:

openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

Následující obrázky ukazují textový soubor před a po šifrování:

3.4 Dešifrování dat

Zde používáme soukromý klíč k dešifrování souboru. Spusťte následující příkaz:

openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

Soubor decrypt.txt bude obsahovat dešifrovaná data. Provedení výše uvedeného příkazu a také obsah souboru je znázorněn na obrázku níže:

4 Závěr

Výše uvedené metody jsou vysoce bezpečné, jsou-li používány opatrně a umožňují více šifer a úrovní zabezpečení, aby vyhovovaly různým úrovním zabezpečení. Jakýkoli z nich lze tedy použít v různých scénářích pro šifrování souborů/složek a nezpracovaných dat.

  • OpenSSL
  • OpenPGP

Linux
  1. Začínáme s příkazem tac systému Linux

  2. Začínáme s PiFlash:Spuštění Raspberry Pi v systému Linux

  3. Začínáme s linuxovým příkazem cat

  1. Začínáme s linuxovými firewally

  2. Začínáme s PostgreSQL na Linuxu

  3. Začínáme s SSH v Linuxu

  1. Začínáme s btrfs pro Linux

  2. Rady pro začátek s GNOME

  3. Začínáme s pracovním prostředím GNOME Linux