Proste zabezpieczenie pliku

The GNU Privacy Guard – GnuPG to kompletna i darmowa implementacja standardu OpenPGP zdefiniowanego przez RFC4880 (znany również jako PGP). GnuPG pozwala na szyfrowanie, podpisywanie danych i komunikacji. Posiada wszechstronny system zarządzania kluczami wraz z modułami dostępu do wszystkich rodzajów katalogów kluczy publicznych. GnuPG, znany również jako GPG, to narzędzie linii poleceń z funkcjami ułatwiającymi integrację z innymi aplikacjami. Dostępnych jest wiele aplikacji i bibliotek frontendowych. GnuPG zapewnia także obsługę S/MIME i Secure Shell (ssh).

Jeśli chodzi o klucze, są klucze prywatne (tajne) i klucze publiczne. Są sparowane razem. Klucz publiczny jest, zgodnie z oczekiwaniami, czymś, co możesz upublicznić i udostępnić innym. Klucz prywatny jest jak tajne hasło, nie dziel się nim z nikim! Być może na Twoim komputerze jest przechowywany klucz publiczny wielu osób, ale jedyny klucz prywatny, jaki prawdopodobnie będziesz mieć, jest twój.

Instalacja GPG

Ubuntu:

$>>> sudo apt-get install gnupg

Fedora/RHL:

$>>> sudo yum install gnupg

Arch:

$>>> sudo pacman -Syu gnupg

 

Generowanie kluczy prywatnych

$>>> gpg --gen-key  gpg (GnuPG) 2.2.12; Copyright (C) 2018 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.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG musi utworzyć identyfikator użytkownika do identyfikacji klucza.

Imię i nazwisko: Ulther

Adres poczty elektronicznej: jakiś@email.com
  1. Zostaniemy poproszeni o wprowadzenie imienia i nazwiska.
  2. Teraz email.
  3. Wpisanie hasła zabezpieczającego klucz oraz powtórzenie go.

Możesz wyeksportować swój klucz prywatny, aby go gdzieś zarchiwizować. Nie udostępniaj swojego klucza prywatnego innym osobom. Możesz go eksportować w formacie ASCIIhexa-decymalnym. Format ASCII  może działać lepiej niż binarny w niektórych nośnikach komunikacyjnych, jak ssh.

Pobierzmy swoje ID:

$>>> gpg --list-secret-keys

Wyeksportujmy klucz:

$>>> gpg --export-secret-keys --armor XXXXXXXX > ./my-priv-gpg-key.asc

Gdzie za XXXXXXXX wstawiamy swoje ID w wersji hexa-decymalnej.
Pominięcie parametru –armor wygeneruje nam wynik w wersji binarnej, zamiast ASCII co dałoby nieco mniejszy plik. ASCII może być fizycznie wydrukowany, czytelny dla człowieka i łatwiejszy do przeniesienia cyfrowo. Oba formaty można później zaimportować z powrotem do GPG.

Import kluczy

Metoda opisania niżej działa zarówno dla ASCII jak i wersji binarnej oraz dla kluczy prywatnych jak i publicznych.

$>>> gpg --import ./my-priv-gpg-key.asc

Wysyłanie klucza publicznego do servera kluczy

Jeśli chcemy opublikować swój klucz publiczny gdzieś, gdzie każdy może go znaleźć. Na przykład, aby przekazać kod do centralnego repozytorium Maven, musisz podpisać swój kod przy pomocy klucza GPG, który ma publiczny podpis, na przykład na serwerze kluczy publicznych MIT. Możesz przekazać swój klucz publiczny za pomocą flagi –send-keys.

$>>> gpg --keyserver hkp://pgp.mit.edu --send-keys XXXXXXXX

Gdzie za XXXXXXXX wstawiamy swoje ID w wersji hexa-decymalnej, możemy uzyskać go jak poprzednio z flagą –list-keys.

Szyfrowanie

Istnieją dwa rodzaje szyfrowania. Symetryczny i asymetryczny. GPG obsługuje wiele różnych algorytmów dla każdej metody. Najbardziej znane to AES dla symetrycznego i RSA dla asymetrycznego. ECDSA zaczyna powoli zastępować RSA. Poniższe przykłady pokażą, jak wykonać szyfrowanie zarówno symetryczne, jak i asymetryczne, a także odszyfrować wiadomość.


Szyfrowanie za pomocą hasła (symetryczne)

Może być odszyfrowany przez każdego,kto posiada hasło. Brak konkretnego odbiorcy. Hasło można udostępnić wielu osobom. Może to być przydatne do lokalnego szyfrowania plików za pomocą prostego hasła lub do zaszyfrowania dokumentu przed wysłaniem go komuś. Będziesz musiał znaleźć inny kanał, aby wysłać mu hasło, jeśli nie zostało wcześniej wymienione.

$>>> gpg --symmetric message.txt
# Pyta o hasło
# Tworzy message.txt.gpg (binarnie)

$>>> gpg --armor --symmetric message.txt
# To samo, ale wyjście formatu ASCII zamiast binarnego
# Tworzy message.txt.asc (ASCII)

# Określ algorytm szyfrowania
$>>> gpg --symmetric --cipher-algo AES256

# Uzyskaj listę algorytmów szyfrowania
$>>> gpg --version
# E.g. 3DES, BLOWFISH, AES256, TWOFISH

# Określenie nazwy pliku na wyjsciu
$>>> gpg --output message.txt.gpg --symmeteric message.txt

# Zaszyfrowanie i podpisanie (wszystko w jednym pliku)
$>>> gpg --sign --symmetric message.txt

Szyfrowanie dla pojedynczego odbiorcy (asymetryczne)

Możesz zaszyfrować wiadomość dla jednego konkretnego odbiorcy. Robi się to poprzez szyfrowanie asymetryczne za pomocą klucza prywatnego i klucza publicznego odbiorców. W ten sposób tylko klucz prywatny odbiorcy odszyfruje wiadomość. Aby to zrobić, potrzebujesz klucza publicznego odbiorcy. Mogą udostępniać Ci swój klucz publiczny bezpośrednio lub możesz przeszukiwać serwery kluczy publicznych.

# Importuje publiczny klucz GPG NanoDano
$>>> gpg --keyserver pgp.mit.edu - search-keys nanodano@devdungeon.com

# Wypisze listę pasujących wyników.
# Wprowadź numer obok tego, który chcesz zaimportować

# Po zaimportowaniu możesz sprawdzić, czy klucz publiczny jest zapisany
$>>> gpg -list-keyes

Po zaimportowaniu klucza publicznego odbiorcy możesz szyfrować wiadomości, które tylko one(te klucze) mogą odszyfrować.

# Spowoduje to monit i zapyta o adres e-mail odbiorcy
# będziesz musiał wprowadzić ID lub e-mail
$>>> gpg --encrypt message.txt

# lub określić adresata jako argument -r
$>>> gpg --recipient nanodano@devdungeon.com --encrypt message.txt
# Zaszyfrowane wyjście będzie w message.txt.gpg

# Szyfruje i przechowuje w formacie ASCII (message.txt.asc)
# Zarówno wersje binarne, jak i ASCII odszyfrowują to samo
$>>> gpg --armor --recipient nanodano@devdungeon.com --encrypt message.txt

# Szyfruje i podpisuje w tym samym czasie
$>>> gpg --encrypt --sign --recipient nanodano@devdungeon.com message.txt
# Określa plik wyjściowy
$>>> gpg --output message.txt.gpg

Proste szyfrowanie bez kluczy

$>>> gpg -c file_name

Poprosi o wprowadzenie hasła dwukrotnie. Taki plik możemy wysłać komuś, lecz odbiorca będzie musiał znać owe hasło.

Odszyfrowanie wiadomości

Można odszyfrować wiadomości za pomocą opcji -d lub –decrypt. Automatycznie ustali, czy jest symetryczne zaszyfrowana za pomocą AES i czy potrzebuje hasła, lub jeśli zostało zaszyfrowane asymetrycznie za pomocą RSA i musi szukać klucza prywatnego. Odbiorca zostanie wykryty automatycznie, a GPG wyszuka lokalnie, aby sprawdzić, czy klucz prywatny jest przechowywany. Jeśli tak, poprosi o podanie hasła, a następnie wydrukuje odszyfrowaną wiadomość do konsoli. Jeśli jest to szyfrowanie symetryczne, wyświetli monit o podanie hasła, a następnie wydrukuje wiadomość.

$>>> gpg -d message.txt.gpg
#lub
$>>> gpg --decrypt message.txt.gpg

Ccrypt

ccrypt to narzędzie do szyfrowania i odszyfrowywania plików i strumieni. Jest oparty na szyfrach blokowych Rijndael, których wersja jest również używana w Advanced Encryption Standard (AES). Uważa się, że szyfr ten zapewnia bardzo silne bezpieczeństwo. Stanowi on proste szyfrowanie plików.

Szyfrowanie:

$>>> ccrypt filename

Poprosi o wpisanie hasła, oraz wygeneruje plik z rozszerzeniem .cpt

Deszyfrowanie:

$>>> ccrypt -d filename.cpt

Dodaj komentarz

Ta strona jest napędzana
przez tuxblog.pl