Jak szyfrować i odszyfrowywać pliki za pomocą GPG w systemie Linux

Chroń swoją prywatność za pomocą polecenia GPG w systemie Linux. Użyj światowej klasy szyfrowania, aby zabezpieczyć swoje sekrety. Pokażemy Ci, jak korzystać z GPG do zarządzania kluczami, szyfrowania plików i ich odszyfrowywania.

Gnu Privacy Guard (GPG) pozwala na bezpieczne szyfrowanie plików, tak aby tylko zamierzony odbiorca mógł je odszyfrować. GPG jest zgodny ze standardem OpenPGP i wzorowany na programie Pretty Good Privacy (PGP), który został stworzony w 1991 roku przez Phila Zimmermanna.

GPG opiera się na idei dwóch kluczy szyfrujących dla każdej osoby: klucza prywatnego i klucza publicznego. Klucz publiczny może odszyfrować dane, które zostały zaszyfrowane kluczem prywatnym.

Aby bezpiecznie wysłać plik, zaszyfrujesz go swoim kluczem prywatnym oraz kluczem publicznym odbiorcy. Aby odszyfrować plik, odbiorca potrzebuje swojego klucza prywatnego oraz Twojego klucza publicznego.

Warto zauważyć, że klucze publiczne muszą być udostępniane. Musisz mieć klucz publiczny odbiorcy, aby zaszyfrować plik, a odbiorca potrzebuje Twojego klucza publicznego, aby go odszyfrować. Klucze publiczne są, jak sama nazwa wskazuje, publiczne, podczas gdy klucze prywatne muszą pozostawać w tajemnicy. Jeśli Twój klucz publiczny jest dostępny publicznie, Twój klucz prywatny musi być chroniony i bezpieczny.

Konfiguracja GPG wymaga więcej kroków niż sama jego obsługa. Na szczęście zazwyczaj wystarczy skonfigurować go tylko raz.

Generowanie kluczy

Polecenie GPG jest zainstalowane we wszystkich popularnych dystrybucjach Linuksa, w tym Ubuntu, Fedora i Manjaro.

Nie musisz używać GPG tylko z pocztą e-mail. Możesz zaszyfrować pliki i udostępnić je do pobrania lub przekazać je fizycznie odbiorcy. Musisz jednak powiązać adres e-mail z generowanymi kluczami, więc wybierz adres e-mail, który będziesz używać.

Aby wygenerować klucze, użyj poniższego polecenia. Opcja --full-generate-key rozpocznie interaktywną sesję w terminalu, w której zostaniesz poproszony o podanie hasła. Upewnij się, że pamiętasz, jakie jest hasło. Trzy lub cztery proste słowa połączone ze znakami interpunkcyjnymi to dobry i solidny model haseł i fraz haseł.

gpg --full-generate-key

Zostaniesz poproszony o wybranie typu szyfrowania z menu. Jeśli nie masz dobrego powodu, aby tego nie robić, wpisz 1 i naciśnij Enter.

Musisz wybrać długość kluczy szyfrowania w bitach. Naciśnij klawisz Enter, aby zaakceptować wartość domyślną.

Następnie musisz określić, jak długo klucz ma być ważny. Jeśli testujesz system, wprowadź krótki okres, na przykład 5 dni. Jeśli zamierzasz zachować ten klucz na dłużej, wprowadź dłuższy okres, na przykład 1 rok. Klucz będzie ważny przez 12 miesięcy, więc będziesz musiał go odnowić po roku. Potwierdź swój wybór literą Y.

Podaj swoje imię i nazwisko oraz adres e-mail. Możesz dodać komentarz, jeśli chcesz.

Zostaniesz poproszony o podanie hasła. Będziesz potrzebować hasła za każdym razem, gdy będziesz pracować z kluczami, więc upewnij się, że je zapamiętasz.

Kliknij przycisk OK po wprowadzeniu hasła. Będziesz widzieć to okno podczas pracy z GPG, więc upewnij się, że pamiętasz swoje hasło.

Wygenerowanie klucza zakończy się, a następnie powrócisz do wiersza poleceń.

Generowanie certyfikatu unieważnienia

Jeśli Twój klucz prywatny stanie się znany innym osobom, będziesz musiał unieważnić stare klucze, aby móc wygenerować nowe. W tym celu potrzebujesz certyfikatu unieważnienia, który teraz utworzymy i przechowamy w bezpiecznym miejscu.

Aby to zrobić, użyj polecenia z opcją --output, aby określić nazwę pliku certyfikatu, oraz opcję --gen-revoke, która generuje certyfikat unieważnienia. Musisz podać adres e-mail, który użyłeś podczas generowania kluczy.

gpg --output ~/revocation.crt --gen-revoke dave-geek@protonmail.com

Zostaniesz poproszony o potwierdzenie, że chcesz wygenerować certyfikat. Naciśnij Y i naciśnij Enter. Pojawi się pytanie o powód generowania certyfikatu. Ponieważ robimy to z wyprzedzeniem, nie wiemy na pewno. Naciśnij 1 jako prawdopodobną odpowiedź i naciśnij Enter.

Możesz wpisać krótki opis, a następnie naciśnij dwukrotnie klawisz Enter, aby zakończyć opis.

Potwierdź ustawienia, naciskając Y i Enter.

Certyfikat zostanie wygenerowany. Pojawi się komunikat podkreślający potrzebę zabezpieczenia tego certyfikatu.

W kontekście kryptografii wspomina się o postaciach takich jak Bob i Alice, które symbolizują komunikujące się osoby, a inne postacie, jak Ewa (podsłuchiwacz) i Mallory (złośliwy napastnik), są używane w dyskusjach dotyczących bezpieczeństwa. Musimy pamiętać, aby dbać o bezpieczeństwo certyfikatu.

Aby zminimalizować ryzyko, usuńmy wszystkie uprawnienia do certyfikatu z wyjątkiem naszych:

chmod 600 ~/revocation.crt

Możemy sprawdzić uprawnienia, używając polecenia ls:

ls -l

To idealne. Nikt poza właścicielem pliku — czyli Tobą — nie może nic zrobić z certyfikatem.

Importowanie klucza publicznego innej osoby

Aby zaszyfrować wiadomość, którą może odszyfrować inna osoba, musimy mieć jej klucz publiczny.

Jeśli otrzymałeś klucz w pliku, możesz go zaimportować za pomocą następującego polecenia. W tym przykładzie plik klucza nosi nazwę „mary-geek.key”.

gpg --import mary-geek.key

Klucz zostanie zaimportowany, a na ekranie zobaczysz nazwę i adres e-mail powiązany z tym kluczem. Oczywiście powinno to pasować do osoby, od której go otrzymałeś.

Możliwe jest również, że osoba, od której potrzebujesz klucza, przesłała go na publiczny serwer kluczy. Serwery te przechowują publiczne klucze ludzi z całego świata i synchronizują się ze sobą, więc klucze są powszechnie dostępne.

Serwer kluczy publicznych MIT jest popularnym serwerem kluczy, który jest regularnie synchronizowany, więc wyszukiwanie na nim powinno być skuteczne. Jeśli ktoś niedawno przesłał klucz, może to zająć kilka dni.

Aby wyszukać klucz, użyj poniższego polecenia, zastępując mary-geek@protonmail.com adresem e-mail osoby, której klucz chcesz znaleźć:

gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com

Wyniki będą wymienione i ponumerowane. Aby zaimportować klucz, wpisz numer i naciśnij Enter. W tym przypadku jest jedno dopasowanie, więc wpisujemy 1 i wciskamy Enter.

Klucz zostanie zaimportowany, a na ekranie zobaczysz nazwę i adres e-mail powiązany z tym kluczem.

Weryfikacja i podpisywanie klucza

Jeśli ktoś przekazał Ci plik klucza publicznego, możesz mieć pewność, że należy on do tej osoby. Jeśli pobrałeś go z publicznego serwera kluczy, możesz chcieć sprawdzić, czy klucz należy do właściwej osoby.

Aby to zrobić, użyj opcji --fingerprint, aby GPG wygenerował krótki odcisk palca składający się z dziesięciu zestawów czterech znaków szesnastkowych. Możesz poprosić osobę o przesłanie odcisku palca jej klucza.

Następnie możesz użyć tej samej opcji, aby wygenerować odcisk palca i porównać go z tym, który otrzymałeś. Jeśli pasują, wiesz, że klucz należy do tej osoby.

gpg --fingerprint mary-geek@protonmail.com

Generowany jest odcisk palca.

Kiedy upewnisz się, że klucz jest oryginalny i należy do właściwej osoby, możesz podpisać jej klucz.

Jeśli tego nie zrobisz, nadal możesz go używać do szyfrowania i odszyfrowywania wiadomości od i do tej osoby, ale GPG zapyta cię za każdym razem, czy chcesz kontynuować, ponieważ klucz nie jest podpisany. Użyj opcji --sign-key, aby podpisać klucz, podając adres e-mail osoby.

gpg --sign-key mary-geek@protonmail.com

Zobaczysz informacje o kluczu i osobie oraz zostaniesz poproszony o potwierdzenie, że naprawdę chcesz podpisać klucz. Naciśnij Y i Enter, aby podpisać klucz.

Jak udostępnić swój klucz publiczny

Aby udostępnić klucz jako plik, musimy go wyeksportować z lokalnego magazynu kluczy GPG. Aby to zrobić, użyjemy opcji --export, po której należy podać adres e-mail użyty do wygenerowania klucza. Po opcji --output podaj nazwę pliku, do którego klucz ma zostać wyeksportowany. Opcja --armor mówi GPG, aby generował dane wyjściowe w formacie ASCII zamiast pliku binarnego.

gpg --output ~/dave-geek.key --armor --export dave-geek@protonmail.com

Możemy zajrzeć do pliku klucza za pomocą polecenia less:

less dave-geek.key

Klucz jest pokazany w całej okazałości:

Możesz również udostępnić swój klucz publiczny na serwerze kluczy publicznych. Opcja --send-keys wysyła klucz do serwera. Po opcji --keyserver podaj adres internetowy serwera kluczy publicznych. Aby określić, który klucz ma zostać wysłany, w wierszu poleceń podaj odcisk palca klucza. Zauważ, że między zestawami czterech znaków nie ma spacji.

(Możesz zobaczyć odcisk palca swojego klucza, używając opcji --fingerprint).

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

Otrzymasz potwierdzenie, że klucz został wysłany.

Szyfrowanie plików

W końcu jesteśmy gotowi do zaszyfrowania pliku i wysłania go do Mary. Plik nosi nazwę Raven.txt.

Opcja --encrypt mówi GPG, aby zaszyfrował plik, a opcja --sign mówi mu, aby podpisał plik Twoimi danymi. Opcja --armor generuje plik ASCII. Po opcji -r (adresat) podaj adres e-mail osoby, do której wysyłasz plik.

gpg --encrypt --sign --armor -r mary-geek@protonmail.com

Plik zostanie utworzony z tą samą nazwą, ale z dołączonym „.asc” do nazwy pliku. Zajrzyjmy do środka:

less Raven.txt.asc

Plik jest całkowicie nieczytelny i może go odszyfrować tylko ktoś, kto ma Twój klucz publiczny oraz prywatny klucz Mary. Jedyną osobą, która powinna mieć oba te elementy, jest Mary.

Możemy teraz wysłać plik do Mary, mając pewność, że nikt inny nie może go odszyfrować.

Odszyfrowywanie plików

Mary wysłała odpowiedź. Znajduje się w zaszyfrowanym pliku o nazwie coded.asc. Możemy go bardzo łatwo odszyfrować za pomocą opcji --decrypt. Zamierzamy przekierować dane wyjściowe do innego pliku o nazwie plain.txt.

Pamiętaj, że nie musimy mówić GPG, od kogo pochodzi plik; może to wywnioskować z zaszyfrowanej zawartości pliku.

gpg --decrypt coded.asc > plain.txt

Spójrzmy na plik plain.txt:

less plain.txt

Plik został pomyślnie odszyfrowany.

Odświeżanie kluczy

Okresowo możesz poprosić GPG o sprawdzenie posiadanych kluczy względem publicznego serwera kluczy i odświeżenie tych, które uległy zmianie. Możesz to robić co kilka miesięcy lub gdy otrzymasz klucz od nowego kontaktu.

Aby to zrobić, użyj opcji --refresh-keys, a po opcji --keyserver podaj wybrany serwer kluczy. Po synchronizacji kluczy między publicznymi serwerami kluczy nie powinno mieć znaczenia, który wybierzesz.

gpg --keyserver pgp.mit.edu --refresh-keys

GPG odpowiada, wymieniając sprawdzane klucze i informując Cię, czy któryś z nich został zmieniony i zaktualizowany.

Prywatność to gorący temat

Prywatność nigdy nie jest daleko od wiadomości w dzisiejszych czasach. Bez względu na powody, dla których chcesz zachować bezpieczeństwo i prywatność swoich informacji, GPG zapewnia prosty sposób na zastosowanie niesamowicie silnego szyfrowania do plików i komunikacji.

Istnieją inne sposoby korzystania z GPG. Możesz pobrać wtyczkę dla Thunderbird o nazwie Enigmail, która integruje się bezpośrednio z konfiguracją GPG, umożliwiając szyfrowanie wiadomości e-mail z poziomu Thunderbirda.