Jak zaszyfrować wiadomość e-mail ? Poradnik korzystania z szyfrowania GPG w Linux.

Cel szyfrowania poczty e-mail

Nad powodami szyfrowania wiadomości nie będziemy się skupiać 🙂 Jest ich tyle ile szukających takiego rozwiązania. W każdym razie najlepiej sprawdzi się do tego szyfrowanie GPG (GnuPG) – czyli wolny zamiennik PGP (Pretty Good Privacy) a dokładniej kryptografia tzw. klucza prywatnego i publicznego.

Jest to łatwa w obsłudze technologia i w pełni darmowa. Dodatkowo – praktycznie każda dystrybucja Linux posiada ją wbudowaną i możesz swobodnie z niej korzystać.

Już wcześniej na naszym serwisie luźno poruszaliśmy ten temat, a dokładniej szybkie szyfrowanie pojedynczego pliku przez gpg: szybkie szyfrowanie i deszyfrowanie pliku, (jednak wtedy – bez użycia kluczy prywatnych i publicznych)

Ponadto programy pocztowe mają wbudowane funkcje szyfrowania poczty poprzez właśnie gpg.

Czytelnikom nieznającym tematu – wypada przedstawić trochę teorii.

Jeśli jest to dla Ciebie jasne – przejdź od razu do punktu 4) w naszym artykule.

O co chodzi z kluczami prywatnymi i publicznymi ??

Można powiedzieć, że klucze ze sobą ściśle powiązane i jeden bez drugiego są bezużyteczne.

Inaczej mówiąc – aby odszyfrować wiadomość – musisz mieć oba te klucze.

Ogólnie założenia:

  1. klucz publiczny (jak sama nazwa wskazuje) możesz upublicznić – np. na Twoim blogu, profilu społecznościowym, forum itp. Służy on do szyfrowania wiadomości przez osoby, które skopują ten klucz.
  2. klucz prywatny – jest znany tylko przez Ciebie i jest ściśle tajny. Tzn. nie możesz go nikomu podawać. Służy jedynie do odszyfrowania wiadomości która została zaszyfrowana Twoim kluczem publicznym.

Taką parę kluczy można porównać do 2 kluczy w depozycie bankowym:

źródło: mybanktracker.com

  1. klucz publiczny – to klucz który posiada bankier. Można powiedzieć że nie masz nad nim kontroli. Pracownik banku może sobie „dorobić” jego kopię i może być wiele takich kluczy. Jednak samym kluczem publicznym – twojej skrytki nie da się otworzyć.
  2. natomiast klucz prywatny – to jest Twój klucz. Tylko Ty go masz. I tylko przy użyciu tych dwóch kluczy – możesz wyjąć zawartość depozytu. Czyli tutaj – odszyfrować wiadomość.

Jest to dość koślawe porównanie jednak oddaję istotę powiązania obu kluczy.

Więcej informacji na ten temat: https://pl.wikipedia.org/wiki/Kryptografia_klucza_publicznego

Jak wyglądają te klucze?

Klucze mają postać losowego ciągu znaków o określonej (przez Ciebie podczas ich generownia – o tym dalej) długości. Zaczynają i kończą się odp. znacznikiem.

Mogą być także klucze prywatne i publiczne w postaci plików binarnych. My jednak na potrzeby tego artykułu skupimy się na plikach tekstowych.

Dla przykładu – klucz prywatny (TAJNY! – nigdzie go nie podawaj i nie wysyłaj. Poniższy klucz jest bezużyteczny i prezentujemy go dla celów artykułu):


Klucz publiczny:


Realny przykład takiego klucza znajduje sie na naszej stronie „Kontakt„:

Manifest / Kontakt

Po skończonej lekturze możesz do nas wysłać zaszyfrowaną nim wiadomość 🙂

Ok przebrnęliśmy przez teorię.

Tworzenie klucza prywatnego i publicznego

Aby móc się posługiwać takim szyfrowaniem – musisz zatem posiadać oba te klucze. Ale pytanie jak je zdobyć lub wygenerować?

Na szczęście – nie musisz nić instalować. Większość systemów Linux posiada wbudowane narzędzia do generowania kluczy. Wystarczy do tego sama konsola.

Do generowania kluczy też może posłużyć świetny program Seahorse – o czym piszemy niżej.

Wywołaj komendę:


Podaj kolejno prawdziwe/testowe imię i e-mail

Ma to znaczenie przy uwiarygadnianiu Twojego klucza. Np. jeśli będziesz z kimś istotnym dla Ciebie korespondował/a to w ten sposób ta osoba będzie miała pewność co do autentyczności klucza. Po prostu te informacje się jej wyświetlą.

Podaj hasło zabezpieczające – ustal tutaj dowolne hasło. Tylko Ty musisz je znać i musisz je w przyszłości pamiętać. Najlepiej je zapisz w bezpiecznym miejscu.

Hasło będzie potrzebne np. do eksportu klucza prywatnego albo dekodowania wiadomości i bez niego klucze będą bezużyteczne

Gotowe, powinieneś/aś otrzymać komunikat typu:

Oznacza to, że klucz prywatny i powiązany z nim klucz publiczny zostały wygenerowane i są dostępne na Twoim komputerze. A dokładniej na koncie Twojego użytkownika w Linux. Możesz teraz w pełni z nich korzystać.

Eksport klucza publicznego.

W jakim celu wykonujemy taki eksport? Powtórzmy to, aby było to jasne: jest to niezbędne aby przekazać taki klucz publiczny osobie, która ma dla nas zaszyfrować wiadomość naszym szyfrem. Możemy też śmiało upublicznić taki klucz (podobnie jak redakcja naszego bloga: https://linuxporady.pl/kontakt/ ) aby każdy zainteresowany mógł do nas wysłać poufną wiadomość, którą tylko my odczytamy.

Najpierw wylistuj sobie wszystkie Twoje klucze, będzie na nim właśnie utworzony klucz. Poznasz go po dacie i mailu:


przykładowy wynik:


Eksport tego klucza (publicznego):


Natomiast zapis do pliku:


Przykładowy wygląd klucza publicznego:

Czyli ten klucz możesz np. wkleić na Twoim profilu społecznościowym i napisać, że jak ktoś chce Ci napisać prywatną wiadomość – może z niego skorzystać 🙂

Przykład wiadomości zaszyfrowanej tym kluczem:

Spokojnie, to w jaki sposób zostało to wykonane zostanie przedstawione w dalszej części artykułu

Klucz prywatny eksportowanie i importowanie

Tak naprawdę – na urządzeniu na którym wygenerowałeś/aś klucz prywatny i publiczny masz już „narzędzia” na odczyt takiej wiadomości. Nie musisz nic więcej robić. Jest on jakby w bazie Twoich podręcznych kluczy i możesz z niego skorzystać. Jednak zanim przejdziemy do posługiwania się kluczami – warto skupić się na eksporcie klucza prywatnego.

Chodzi o to, że bardzo ważne jest wygenerowanie klucza prywatnego i trzymanie go w bezpiecznym miejscu na wypadek:

  • awarii komputera na którym go wygenerowałeś/aś
  • potrzeby wysłania odszyfrowania wiadomości na innym urządzeniu, która została zaszyfrowana w/w kluczem publicznym
  • reinstalacji komputera, usunięcia użytkownika gdzie generowano klucze
  • generowania kluczy na komputerze uruchomionym w trybie Live-CD / Live-USB
  • tworzeniu kluczy na na cudzym komputerze lub na innym koncie użytkownika Twojego komputera
  • innego powodu, który sprawi, że nie będziesz mieć dostępu do klucza prywatnego

Dlatego analogicznie wylistuj klucze na Twojej maszynie:


Następnie wyeksportuj klucz prywatny:


W tym miejscu musisz właśnie podać hasło ustalone przez Ciebie w w/w punkcie 4) tego artykułu.

Zrobione – klucz w formie pliku tekstowego możesz teraz np. na pendrive przenieść na inny komputer lub zachować go w innym miejscu.

Tak wygenerowany klucz możesz zaimportować na innej maszynie – poprzez konsolę:


lub wizualnie poprzez program seahorse o czym niżej.

Szyfrowanie wiadomości e-mail.

Przechodzimy do sedna artykułu. Jednak w tym momencie podsumujmy nasze dotychczasowe działania:

  1. Na tę chwilę to Ty wygenerowałeś/aś klucz publiczny i prywatny (które są ze sobą ściśle powiązane).
  2. Zatem osoba z którą chcesz korespondować – już może mieć Twój klucz publiczny.
  3. To pozwoli jej utworzyć zaszyfrowaną wiadomość do Ciebie (przykład takiej wiadomości jest na końcu pkt. 5 tego artykułu)
  4. A ty Twoim kluczem prywatnym ją odczytasz.

Jednak jeśli to Ty chcesz wysłać do tej osoby zaszyfrowaną wiadomość – musi ta osoba analogicznie wygenerować swoje klucze a Tobie dostarczyć jej klucz publiczny.

To za pomocą klucza publicznego tej osoby – utworzysz wiadomość, którą tylko ona odczyta.

Oczywiście te klucze będą diametralnie inne niż Twoje i unikalne dla tej osoby.

OK, zatem przypuśćmy że już masz klucz publiczny od Twojego znajomego/znajomej i możemy przejść do sedna.

Niech Twój korespondent wyeksportuje klucz publiczny w analogiczny sposób jak pokazano w punkcie 5) i Ci go dostarczy w formie pliku tekstowego

Plik zapisz jako zwykły plik tekstowy w folderze głównym np. pod nazwą:

Konsola

Następnie wywołaj import klucza publicznego:


Efekt swoich prac możesz znaleźć listując Twoje klucze:


Wiadomość zaszyfrujesz przez komendę:

Gdzie e-mail na końcu komendy to e-mail naszego adresata tj. właściciela otrzymanego klucza publicznego.

Program z GUI

Aby zaimportować klucz publiczny w programie z interfejsem graficznym zainstaluj odpowiednie oprogramowanie do zarządzania kluczami:


Program będzie widoczny w menu programów pod nazwą:

Hasła i klucze albo Passwords and Keys

Włączysz go po prostu poprzez:

Jak widać program Seahorse pozwala także na wizualne generowanie kluczy – analogicznie jak w konsoli. Oczywiście mamy więcej opcji do wyboru jak np. czas wygaszania klucza (!). Pozwala to na dodatkowe zabezpieczenie wiadomości. Po upłynięciu określonej daty – wiadomość po prostu bezpowrotnie przepadnie 🙂

Następnie z menu programu:

File -> import

I dodaj klucz wskazując go z folderu domowego:


Komunikat w programie:

Importowane klucza publicznego pod Linux

Gotowe! 🙂

Zainstaluj następnie program do szyfrowania / deszyfrowania wiadomości na podstawie kluczy:


Otwórz ten program:


Wybierz ikonkę notatnika (Clipboard) i napisz sekretną wiadomość, następnie z menu:

File -> encrypt

Wybierz klucz publiczny Janka:

Szyfrowanie wiadomości kluczem publicznym pod Linux

Program poprosi o potwierdzenie tej operacji i efektem naszych prac będzie zaszyfrowana wiadomość typu:


Taką wiadomość możesz śmiało wysłać Jankowi. Tylko on ją odczyta, bo tylko on posiada (w założeniu) klucz prywatny który jest skorelowany z kluczem prywatnym na podstawie którego wygenerowałeś/aś tą wiadomość. Czyli możesz ją po prostu wkleić w wiadomości e-mail albo w komunikatorze.

Dekodowanie zaszyfrowanej wiadomości e-mail.

OK postawmy się jeszcze w roli Janka, który musi odczytać taką wiadomość.

Na identycznej zasadzie – Ty będziesz odczytywać wiadomości zaszyfrowane Twoim kluczem publicznym.

Konsola

Na Twojej maszynie jest już zaimportowany klucz prywatny. Zatem jedyne co musisz zrobić to wywołać komendę w konsoli:

W pliku wiadomosc-zakodowana-wiadomosc.txt powinna znaleźć się zaszyfrowana wiadomość rozpoczynająca się znacznikiem „—–BEGIN PGP MESSAGE—–” – przykład takiej wiadomości znajdziesz w pkt. 5 tego artykułu.

Następnie po podaniu Twojego hasła (patrz punkt 4) wiadomość zostanie rozszyfrowana.

Program z GUI

W programie z GUI – aby to zrobić po prostu uruchom wspomniany w poprzednim punkcie program:


Następnie we wspomnianym oknie „Clipboard” wklej zaszyfrowaną wiadomość.

I teraz z menu wybierz opcję:

File -> Verify

Jeśli Twój komputer posiada zainstalowany klucz prywany (patrz pkt. 6) to wiadomość powinna być odczytana.

Usuwanie kluczy z systemu.

Usuwanie klucza publicznego

Na koniec poruszymy jeszcze kwestię usuwania kluczy. Jeśli zajdzie taka potrzeba – w każdej chwili możesz to zrobić. Czy to za pomocą w/w programu seahorse czy przez komendę:

Usuwanie klucza prywatnego

Jeśli z w/w kluczem powiązany jest klucz prywatny – najpierw musisz usunąć klucz prywatny:

Nazwy klucza znajdziesz listując je poprzez komendę:

Podsumowanie

To oczywiście tylko elementarne podstawy korzystania z GPG. Jeśli jakieś kwestie są dla Ciebie niejasne – zachęcamy do komentarzy na naszym profilu społecznościowym: https://www.facebook.com/LinuxPoradypl-773261456112863/

grafika: wallpaperaccess.com