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

Chroń swoją prywatność za pomocą polecenia gpg systemu Linux. Użyj światowej klasy szyfrowania, aby chronić swoje sekrety. Pokażemy Ci, jak używać gpg do pracy z kluczami, szyfrowania plików i ich odszyfrowywania.

GnuPrivacy Guard (GPG) pozwala na bezpieczne szyfrowanie plików, tak aby tylko zamierzony odbiorca mógł je odszyfrować. W szczególności GPG jest zgodny z OpenPGP standard. Jest wzorowany na programie o nazwie Pretty Good Privacy (PGP). PGP zostało napisane w 1991 roku przez Phil Zimmerman.

GPG opiera się na pomyśle dwóch kluczy szyfrujących na osobę. Każda osoba ma klucz prywatny i klucz publiczny. Klucz publiczny może odszyfrować coś, co zostało zaszyfrowane przy użyciu klucza prywatnego.

Aby bezpiecznie wysłać plik, zaszyfrujesz go swoim kluczem prywatnym i kluczem publicznym odbiorcy. Aby odszyfrować plik, potrzebują swojego klucza prywatnego i Twojego klucza publicznego.

Zobaczysz z tego, że klucze publiczne muszą być udostępniane. Musisz mieć klucz publiczny odbiorcy, aby zaszyfrować plik, a odbiorca potrzebuje Twojego klucza publicznego, aby go odszyfrować. Nie ma niebezpieczeństwa, że ​​klucze publiczne będą tylko takie – publiczne. W rzeczywistości istnieją serwery klucza publicznego do tego właśnie celu, jak zobaczymy. Klucze prywatne muszą pozostać prywatne. Jeśli Twój klucz publiczny znajduje się w domenie publicznej, Twój klucz prywatny musi być utrzymywany w tajemnicy i bezpieczny.

Konfiguracja GPG wymaga więcej kroków niż korzystania z niej. Na szczęście zwykle wystarczy go skonfigurować tylko raz.

Generowanie kluczy

Polecenie gpg zostało zainstalowane we wszystkich sprawdzonych dystrybucjach Linuksa, w tym Ubuntu, Fedora i Manjaro.

Nie musisz używać GPG 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órego będziesz używać.

Oto polecenie generowania kluczy. Opcja –full-generation-key generuje klucze w interaktywnej sesji w oknie terminala. Zostaniesz również 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 dobre i solidny model haseł i fraz haseł.

gpg --full-generate-key

gpg --full-generated-key w oknie terminala

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ść w bitach dla kluczy szyfrowania. Naciśnij klawisz Enter, aby zaakceptować wartość domyślną.

pytania dotyczące generowania kluczy w oknie terminala

Musisz określić, jak długo ma trwać klucz. Jeśli testujesz system, wprowadź krótki okres, na przykład 5, na pięć dni. Jeśli zamierzasz zachować ten klucz, wprowadź dłuższy okres, na przykład 1 rok przez rok. Klucz będzie trwał 12 miesięcy, a więc będzie wymagał odnowienia po roku. Potwierdź swój wybór literą Y.

Musisz podać swoje imię i nazwisko oraz adres e-mail. Jeśli chcesz, możesz dodać komentarz.

pytania dotyczące generowania kluczy w oknie terminala

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 wiesz, co to jest.

Okno hasła gpg

Kliknij przycisk OK po wprowadzeniu hasła. Zobaczysz to okno podczas pracy z gpg, więc upewnij się, że pamiętasz swoje hasło.

Nastąpi wygenerowanie klucza i nastąpi powrót do wiersza poleceń.

Generowanie klucza gpg zakończone w oknie terminala

Generowanie certyfikatu unieważnienia

Jeśli Twój klucz prywatny stanie się znany innym, będziesz musiał odłączyć stare klucze od swojej tożsamości, aby móc wygenerować nowe. Aby to zrobić, będziesz potrzebować certyfikatu unieważnienia. Zrobimy to teraz i przechowamy w bezpiecznym miejscu.

Po opcji –output należy podać nazwę pliku certyfikatu, który chcesz utworzyć. Opcja –gen-revoke powoduje, że gpg generuje certyfikat unieważnienia. Musisz podać adres e-mail użyty podczas generowania kluczy.

gpg --output ~/revocation.crt --gen-revoke [email protected]

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

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

Jeśli chcesz, możesz wpisać opis. Naciśnij dwukrotnie klawisz Enter, aby zakończyć opis.

Zostaniesz poproszony o potwierdzenie ustawień, naciśnij Y i naciśnij Enter.

gpg pytania dotyczące certyfikatu w oknie terminala

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

Wspomina o kimś o imieniu Mallory. Dyskusje o kryptografii są używane od dawna Bob i Alice jak dwie komunikujące się osoby. Istnieją inne postacie drugoplanowe. Ewa to podsłuchiwacz, Mallory to złośliwy napastnik. Musimy tylko wiedzieć, że musimy dbać o bezpieczeństwo certyfikatu.

Jako minimum usuńmy z certyfikatu wszystkie uprawnienia oprócz naszych.

chmod 600 ~/revocation.crt

chmod 600 ~ / revocation.crt w oknie terminala

Sprawdźmy z ls, aby zobaczyć, jakie są teraz uprawnienia:

ls -l

http://cryptocouple.com/ w oknie terminala

To idealne. Nikt poza właścicielem pliku – nami – 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 zaimportować go za pomocą następującego polecenia. W tym przykładzie plik klucza nosi nazwę „mary-geek.key”.

gpg --import mary-geek.key

gpg --import mary-geek.key w oknie terminala

Klucz zostanie zaimportowany i zostanie wyświetlona nazwa i adres e-mail powiązany z tym kluczem. Oczywiście powinno to pasować do osoby, od której ją otrzymałeś.

pomyślnie zaimportowano klucz w oknie terminala

Istnieje również możliwość, że osoba, od której potrzebujesz klucza, przesłała swój klucz na publiczny serwer kluczy. Te serwery przechowują klucze publiczne ludzi z całego świata. Serwery kluczy synchronizują się ze sobą okresowo, dzięki czemu klucze są powszechnie dostępne.

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

Po opcji –keyserver musi następować nazwa serwera kluczy, który chcesz przeszukać. Po opcji –search-keys musi następować imię i nazwisko osoby, której szukasz, lub jej adres e-mail. Użyjemy adresu e-mail:

gpg --keyserver pgp.mit.edu --search-keys [email protected]

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

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

gpg keyserver powoduje wyświetlenie okna terminala

Klucz zostanie zaimportowany i zostanie wyświetlona nazwa i adres e-mail powiązany z tym kluczem.

Weryfikacja i podpisywanie klucza

Jeśli ktoś Ci przekazał plik klucza publicznego, możesz śmiało powiedzieć, że należy on do tej osoby. Jeśli pobrałeś go z publicznego serwera kluczy, możesz poczuć potrzebę sprawdzenia, czy klucz należy do osoby, dla której jest przeznaczony.

Opcja –fingerprint powoduje, że gpg tworzy krótką sekwencję dziesięciu zestawów czterech znaków szesnastkowych. Możesz poprosić osobę o przesłanie odcisku palca jej klucza.

Następnie można użyć opcji –fingerprint, aby wygenerować tę samą sekwencję znaków szesnastkowych odcisków palców i porównać je. Jeśli pasują, wiesz, że klucz należy do tej osoby.

gpg --fingerprint [email protected]

gpg --fingerprint mary-geek@protonmail.com w oknie terminala

Generowany jest odcisk palca.

gpg odcisk palca w oknie terminala

Kiedy upewnisz się, że klucz jest oryginalny i należy do osoby, z którą ma być powiązany, 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 jest niepodpisany. Użyjemy trafnie nazwanej opcji –sign-key i podamy adres e-mail osoby, aby gpg wiedział, który klucz podpisać.

gpg --sign-key [email protected]

gpg --sign-key mary-geek@protonmail.com w oknie terminala

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

gpg potwierdzenie podpisania klucza w oknie terminala

Jak udostępnić swój klucz publiczny

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

gpg --output ~/dave-geek.key --armor --export [email protected]

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

Możemy zajrzeć do pliku klucza za pomocą mniejszego.

less dave-geek.key

plik klucza publicznego w mniej w oknie terminala

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

plik klucza publicznego w mniej w oknie terminala

Możesz również udostępnić swój klucz publiczny na serwerze kluczy publicznych. Opcja –send-keys wysyła klucz do serwera kluczy. Po opcji –keyserver należy podać adres internetowy serwera kluczy publicznych. Aby określić, który klucz ma zostać wysłany, w wierszu poleceń należy podać 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

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4 w oknie terminala

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

klucz potwierdzający został wysłany do serwera kluczy w oknie terminala

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 mówi gpg, aby utworzył plik ASCII. Po opcji -r (adresat) należy podać adres e-mail osoby, do której wysyłasz plik.

gpg --encrypt --sign --armor -r [email protected]

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

Plik jest tworzony z tą samą nazwą co oryginał, ale z dołączonym „.asc” do nazwy pliku. Zajrzyjmy do środka.

less Raven.txt.asc

mniej Raven.txt.asc w oknie terminala

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

Zaszyfrowana zawartość raven.txt.asc w oknie terminala

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

gpg --decrypt coded.asc> plain.txt w oknie terminala ”width =” 646 ″ height = ”212 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Spójrzmy na plik plain.txt: </p>
<pre> less plain.txt </ pre > <p> <img loading =

Plik został pomyślnie odszyfrowany.

decrytpted plik w less w oknie terminala

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.

Opcja –refresh-keys powoduje, że gpg wykonuje sprawdzenie. Po opcji –keyserver musi następować wybrany serwer kluczy. Po zsynchronizowaniu kluczy między publicznymi serwerami kluczy nie powinno mieć znaczenia, który wybierzesz.

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

gpg --keyserver pgp.mit.edu --refresh-keys w oknie terminala

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

klucz gpg odświeża się w oknie terminala

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 nazywa Enigmail. Podłącza się bezpośrednio do konfiguracji gpg, aby umożliwić szyfrowanie wiadomości e-mail z poziomu Thunderbirda.