Pretty Good Privacy!

OpenPGP jest technologią szyfrowania, mającą głównie zastosowanie w poczcie elektronicznej. Przy odrobinie zachodu pozwala ukryć treść wiadomości przed dostawcą usługi. Po co? – A dlaczego nie?

Wykorzystywany przez OpenPGP model szyfrowania to tzw. szyfrowanie asymetryczne – w którym odbiorca wiadomości posiada klucz kryptograficzny składający się z dwóch części: publicznej – przeznaczonej do szyfrowania i prywatnej – do deszyfrowania (przeważnie zwanych po prostu kluczami, ale należy zauważyć, że jest to para nierozerwalnie złączona prawami matematyki).

Oznacza to, że:

  1. odbiorca musi podzielić się swoim kluczem (publicznym) z każdym, kto chce zaszyfrować coś dla niego,
  2. proces ten może odwrócić tylko posiadacz sekretnej części – odbiorca,
  3. część publiczna nie pozwala na deszyfrowanie, zatem nie musi być utrzymywana w tajemnicy,
  4. nadawca nie potrzebuje części prywatnej, zatem nie musi być mu udostępniana. Nie musi nawet opuszczać urządzenia na którym powstała.

Osoby korzystające z OpenPGP mogą uczynić swój klucz częścią swojej cyfrowej tożsamości – jak numer telefonu czy adres e-mail. Mój na przykład wygląda tak:

0243 7935 DF5A A8A9 DF40  C890 F149 EE15 E69C 7F45

...właściwie, to tylko numer klucza. Pełny klucz znajdziecie tutaj: https://keys.openpgp.org/vks/v1/by-fingerprint/02437935DF5AA8A9DF40C890F149EE15E69C7F45 😉


Teraz zła wiadomość – OpenPGP jest niekompatybilny z webmailem (mail w przeglądarce) i potrzebujemy do tego aplikacji pocztowej. Chociaż niektórzy (jak Proton Mail lub Tutanota) oferują szyfrowanie OpenPGP, to nawet jeśli ufacie swojemu dostawcy, powinniście być świadomi, że administrator ma dostęp do waszego klucza lub może wykraść go lub odszyfrowane wiadomości z przeglądarki, serwując wam zmieniony JavaScript. Może też tego dokonać ktoś, kto włamie się do serwisu.

Na komputer polecam program Thunderbird od Mozilli, a na telefon – K-9 Mail z dodatkową aplikacją OpenKeychain do zarządzania kluczami.

IMAP, SMTP, what?

Jak wiecie, e-mail jest standardem umożliwiającym wymianę wiadomości pomiędzy dziesiątkami lub nawet setkami tysięcy serwerów na całym świecie. Aby komunikacja przebiegała bezproblemowo, muszą one ze sobą „gadać” wspólnym językiem. Właśnie takim językiem jest SMTPSimple Mail Transfer Protocol. Ma zastosowanie zarówno w komunikacji serwer-serwer, jak i klient-serwer.

IMAP z kolei (ang. Internet Message Access Protocol), jest to protokół dostępu do poczty na serwerze przez aplikacje pocztowe. SMTP jest do wysyłania, a IMAP do odbierania.

Nie wszystkie serwery dają dostęp do poczty przez IMAP/SMTP. Niektóre wymagają włączenia takiej opcji w ustawieniach konta. Czasami do logowania jest generowane oddzielne hasło. Gdzieś na stronie dostawcy powinna znajdować się informacja o konfiguracji klienta pocztowego, np.:

Zaletą korzystania z aplikacji pocztowych jest także uproszczony widok i możliwość podpięcia kilku kont.

Stworzenie klucza

Klucz OpenPGP możecie wygenerować w Thunderbird: Konfiguracja kont/Szyfrowanie „end-to-end”/Dodaj klucz. Następnie znajdziecie opcje udostępniania pliku *.asc.

W przypadku K-9 Mail klucz generujemy najpierw w aplikacji OpenKeychain Zarządzaj kluczami/Utwórz mój klucz. Następnie w ustawieniach konta należy skojarzyć dane konto z kluczem. Operacje kryptograficzne są realizowane przez OpenKeyChain, sam K-9 nie ma dostępu do części prywatnej.

Przyjmowanie klucza

Dla Thunderbird klucz publiczny możemy zaimportować z menedżera kluczy. Wygodną opcją jest też import z poziomu menu kontekstowego załącznika z rozszerzeniem *.asc.

Analogicznie na telefonie importujemy klucz do aplikacji OpenKeychain (powinniśmy zobaczyć taką opcję przy próbie otwarcia pliku).


Podpisy cyfrowe!

Poszczególne części klucza mają także inne zastosowania. Skoro szyfrując częścią publiczną można było odszyfrować ją tylko prywatną, to działa też w drugą stronę – wiadomość zaszyfrowana kluczem **prywatnym** będzie możliwa do odszyfrowania tylko kluczem publicznym – do którego co do zasady każdy ma dostęp!

Z pozoru nie ma to sensu. Jednak po głębszym zastanowieniu: skoro wiadomość dało się odszyfrować tylko moim kluczem, to któż inny mógł ją zaszyfrować, jak nie ja? Podpis cyfrowy jest kryptograficznym poświadczeniem łączącym dane z kluczem publicznym. W praktyce, przy podpisach nie szyfruje się całych dokumentów, a jedynie ich sumy kontrolne – drastycznie zmniejsza to rozmiar podpisu, a efekt jest taki sam.

W przeciwieństwie do świata realnego, nie można ich podrobić. W świecie cyfrowym nie istnieją też podpisy in blanco – nie można wziąć podpisu z jednego dokumentu i przenieść go na inny, ponieważ nie będzie pasował. Zawsze można odszyfrować podpis, obliczyć sumę kontrolną i sprawdzić czy się zgadza.


Klienty poczty domyślnie dołączają podpis cyfrowy do wysyłanych zaszyfrowanych wiadomości. Możemy też podpisywać wiadomości niezaszyfrowane. Thunderbird posiada opcję załączania klucza do każdej wysyłanej wiadomości. To jeden ze sposobów uświadamiania o istnieniu takich rzeczy. Możemy też dopisać do sygnaturki notkę o korzystaniu z OpenPGP, może z linkiem do tego artykułu? (🤗)

PGP a rzeczywiste bezpieczeństwo

Niektórzy wskazują, że standard PGP nie zapewnia wystarczającego poziomu ochrony, na przykład w sytuacji kradzieży klucza prywatnego atakujący zyskuje dostęp do wszystkich konwersacji, a ponadto jest w stanie fałszować podpisy.

Nowoczesne protokoły komunikacyjne takie jak Signal czy Matrix cechuje to, że od wystąpienia incydentu mogą zostać odszyfrowane tylko nowe wiadomości. To właśnie dlatego w niektórych aplikacjach przy nowym logowaniu nie można odszyfrować starych wiadomości, o ile nie posiada się ich kopii zapasowej.

Nie sądzę, aby to był argument przeciwko korzystaniu z PGP, biorąc pod uwagę, że alternatywą jest... brak zabezpieczeń. Lepsza nienajlepsza ochrona niż żadna ✨.

Innym argumentem przeciwko szyfrowaniu poczty jest podejrzliwość organów ścigania, którzy nie mogą dłużej inwigilować poczty. Jeśli chodzi o mnie, jak sądzę, gdy zapukają do mnie smutni panowie w garniturach, mogę śmiało pokazać im treść mojej poczty. Ale nie będą tego sprawdzać bez mojej wiedzy.

Szyfrujmy wszystko. Rzeczy ważne i nieważne. Po co pozwalać obcym ludziom czytać nasze listy?

PGP poza pocztą

OpenPGP nie jest nierozerwalnie związany z e-mailem. Jeżeli chcecie potestować jego możliwości, na systemach Linuxowych jest domyślnie zainstalowany program GnuPG (GNU Privacy Guard). Jego najczęstsze zastosowania to:

GnuPG idealnie nadaje się również do szyfrowania kopii zapasowych. Wiecie, że możecie bezpiecznie zaszyfrować plik do siebie nie podając hasła? Do szyfrowania zostanie wykorzystany wasz klucz publiczny, który przecież i tak wszyscy znają.

Dla dociekliwych polecam zapoznać się z komendą gpg. Istnieją również graficzne nakładki na kształt OpenKeychain:


O GnuPG nie pisał ostatnio nikt ze znanych mi osób. Jeśli spodobał wam się ten wpis, możecie zasubskrybować tego bloga przez RSS, neutralną technologię agregacji treści. 😊