Żyjemy w świecie, gdzie zachowanie prywatności jest coraz trudniejsze. Powszechna inwigilacja stała się jedną z największych bolączek ludzkości. Ponieważ rezygnacja z korzyści jakie daje nam internet byłaby zbyt bolesna jedyne co nam pozostaje to stawić czoło złodziejom prywatności poprzez wykorzystanie technologii i narzędzi do szyfrowania komunikacji w internecie i danych na naszych komputerach osobistych i smartfonach. Dbałość o zachowanie prywatności powinna stać się naszą codzienną rutyną – jak mycie zębów.
Darmowe oprogramowanie do szyfrowania komunikacji i danych znane jest od ponad dwóch dekad. Mam tu na myśli GnuPG (GNU Privacy Guard) znany również pod nazwą GPG. GPG od dawna jest nieodłączną częścią każdej dystrybucji linuksa. Jest to narzędzie, którym najwygodniej posługiwać się w terminalu (z linii komend). Dla osób przyzwyczajonych do aplikacji okienkowych dostępna jest nieskończona ilość nakładek graficznych umożliwiających pracę z GPG w trybie okienkowym.
Do czego w praktyce możemy wykorzystać GPG ? Przede wszystkim do zaszyfrowania naszych maili, czyli poczty elektronicznej. Można przyjąć, że poczta niezaszyfrowana to poczta, której treść jest „ogólnie dostępna” w internecie. Wyobraźmy sobie, że wysyłamy tradycyjny list bez koperty: po prostu dając go listonoszowi. Listonosz bez problemu może przeczytać nasz list i informacjami, które w ten sposób uzyska podzielić się ze znajomymi i rodziną, lub wykorzystać je przeciwko autorowi listu. Potem nasz list bez koperty trafia do jednego urzędu pocztowego, drugiego urzędu pocztowego, trzeciego urzędu pocztowego… W czasie transportu pomiędzy urzędami pocztowymi trafia w ręce kuriera. Tak mniej więcej wygląda podróż przez internet poczty niezaszyfrowanej. W najlepszym przypadku, wszyscy którzy pośredniczą w dostarczeniu listu odbiorcy mają do jego treści pełen dostęp. Zaszyfrowanie wiadomości sprawia, że wszyscy, którzy uczestniczą w jej transporcie przez internet widzą tylko adres nadawcy i adres odbiorcy. Nawet tytuł listu jest zaszyfrowany. Jedyną osobą, która potrafi odszyfrować taki list jest jego odbiorca. Żaden złodziej prywatności nie ma szans na przechwycenie treści zaszyfrowanej poczty.
Do szyfrowanie wiadomości GPG używa pary kluczy: klucza prywatnego i klucza publicznego. Klucza prywatnego musimy strzec niczym przysłowiowego „oka w głowie”. To on gwarantuje nam prywatność i bezpieczeństwo naszej korespondencji. Jeżeli pojawi się podejrzenie, że ktokolwiek niepowołany mógł uzyskać do niego dostęp należy go unieważnić i wygenerować nową parę kluczy.
Jak to wygląda w praktyce ?
Załóżmy, że dwójka przyjaciół, Tomek i Marek, postanowiła wprowadzić szyfrowanie korespondencji pomiędzy sobą. Co w tym celu muszą zrobić ?
Marek musi wygenerować swoją parę kluczy szyfrujących a Tomek musi wygenerować swoją parę kluczy szyfrujących. Z każdą parą kluczy powiązany jest adres e-mail, który trzeba podać podczas tworzenia kluczy i odpowiednio długie, i bezpieczne hasło.
Teraz Tomek musi wyeksportować swój klucz publiczny do pliku i przekazać go Markowi. Można to zrobić na kilka sposobów:
- zapisać na nośniku zewnętrznym (pendrive) i przekazać „do rąk własnych”,
- wysłać jako załącznik do niezaszyfrowanego maila,
- umieścić klucz publiczny na serwerze kluczy, skąd Marek będzie go mógł pobrać.
To przy pomocy klucza publicznego uzyskanego od Tomka Marek będzie szyfrował korespondencję do Tomka. I tylko Tomek będzie mógł odszyfrować taką wiadomość przy pomocy swojego klucza prywatnego. Klucz publiczny może być ogólnie dostępny i w żaden sposób nie czyni to krzywdy szyfrowanej korespondencji, ponieważ rozszyfrować może ją tylko osoba posiadająca klucz prywatny stanowiący parę dla klucza publicznego, którym zaszyfrowano korespondencję.
To samo co zrobił Tomek musi zrobić Marek: wygenerować parę kluczy szyfrujących, wyeksportować swój klucz publiczny i przekazać go w jakiś sposób Tomkowi. Przy pomocy tego klucza Tomek będzie szyfrował korespondencję do Marka.
Jeżeli nie przekazujemy klucza bezpośrednio „z rąk do rąk” bardzo ważną rzeczą jest potwierdzenie, że klucz publiczny, który do nas dotarł faktycznie pochodzi od osoby, której jest przypisywany. Do weryfikacji autentyczności klucza służy tzw. „odcisk palca” klucza. Po otrzymaniu klucza publicznego od Tomka (jeżeli nie odbyło się to w drodze bezpośredniego przekazania klucza „z rąk do rąk”) Marek powinien np. zadzwonić do Tomka, by potwierdzić, że „odcisk palca” klucza, który widzi u siebie jest dokładnie taki sam jak „odcisk palca” tego klucza widoczny u Tomka. „Odcisk palca” to specjalna suma kontrolna, która jest kombinacją około 40. znaków i liter. Potwierdzenie, że ciąg tych znaków jest dla danego klucza identyczny u Tomka i u Marka gwarantuje, że Marek posiada autentyczny klucz publiczny Tomka. Oczywiście w taki sam sposób powinna być potwierdzona autentyczność klucza publicznego Marka, który posiada Tomek.
Ważne jest, by pamiętać o tym, że w przypadku utraty klucza prywatnego (awaria dysku twardego), jeżeli nie zrobiliśmy kopii zapasowej tego klucza wszystkie wiadomości zaszyfrowane skojarzonym z nim kluczem publicznym będą nie do odzyskania.
W zasadzie problem szyfrowania korespondencji mamy załatwiony, ale… skoro klucz publiczny Tomka jest ogólnie dostępny skąd wiadomo, że list pochodzi od Marka ? Ktoś mógł się podszyć pod Marka i w jego imieniu napisać list. Tu z pomocą przychodzi podpis elektroniczny. Każdy zaszyfrowany list nadawca powinien sygnować swoim podpisem elektronicznym. Służy do tego klucz prywatny. Gdy Marek wysyła list do Tomka szyfruje go kluczem publicznym Tomka, a podpisuje swoim kluczem prywatnym. Ponieważ Tomek ma klucz publiczny Marka, będzie mógł potwierdzić, że podpis jest prawdziwy, a mail pochodzi od Marka. To druga funkcja klucza publicznego: potwierdzenie autentyczności podpisu elektronicznego złożonego przy pomocy skojarzonego z nim klucza prywatnego. Ponieważ tylko Marek ma dostęp do swojego klucza prywatnego jego podpis jest nie do podrobienia. Vuala. W ten sposób korespondencja pomiędzy Tomkiem a Markiem została zabezpieczona i żadne osoby postronne nie są w stanie odczytać jej treści.
Jak sprawdzić, czy wysłany mail faktycznie został zaszyfrowany ? Wystarczy otworzyć podgląd źródła wiadomości . Zamiast czytelnej treści zobaczymy blok znaków umieszczony pomiędzy nagłówkami „BEGIN PGP MESSAGE” i „END PGP MESSAGE”. W Thunderbirdzie: po wybraniu wiadomości w górnym-prawym panelu, w dolnym-prawym panelu klikamy przycisk „Więcej”, a następnie „Wyświetl źródło”.
-----BEGIN PGP MESSAGE-----
wcBMAx3pSrVCpNF4AQf+IejERhV/UzflN+BWL1+9Rcscv0m4cLTNpMyjIAv5LgNp+Ng5tvdqFEqr
aq75ZL2BpED6PtOq2FBez4HYheOVI3BU2xLsq7/+N7wvRKnDQDFdCeYEhsxKORSal1ZZq5zZADGL
93iqX02U8A5bTGZqw1Xt/tOMrXJiX569IMajoqlesp3uhqwrsVGO8/glgkipEe62qGBJNKNCXhXN
j7vMHaTE2TCM3M5+813Wqzs33cmuOOSoqBr6FhaKg/hs4UcmFaHM+gTc71KmdZ733zxp0G4jgTJj
............................................................................
------END PGP MESSAGE------
Nieco wyżej znajdziemy informację, że jest to wiadomość zaszyfrowana:
This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
Content-Type: application/pgp-encrypted
Szyfrowanie korespondencji w programie pocztowym Thunderbird
Tyle teorii. W praktyce szyfrowanie korespondencji stało się dziś wyjątkowo proste: coraz więcej programów pocztowych oferuje taką funkcjonalność jako wbudowany moduł. Jednym z nich jest popularny Thunderbird.
Uwaga: Thunderbird nie korzysta z systemowego zbioru kluczy GnuPG: ma własny. Klucze przechowywane są w katalogu profilowym aplikacji ~/.thunderbird w dwóch plikach pubring.gpg i secring.gpg.
Prześledźmy kolejne kroki do wprowadzenia szyfrowanej poczty na przykładzie konta pocztowego tomek@tataija.eu
Po kliknięciu na nazwę konta (tomek@tataija.eu), na panelu który pojawi się po prawej stronie zobaczymy opcję: Szyfrowanie „end-to-end”. Klikamy na ten link, co przenosi nas do panelu: Szyfrowanie „end-to-end”. Moduł szyfrowania najwyraźniej nie doczekał się jeszcze tłumaczenia na język polski, ale nie powinno to być żadną przeszkodą: wszak nauka języka angielskiego rozpoczyna się w Polsce już w przedszkolu 😉
Klikamy przycisk „Add Key” (Dodaj klucz).
Mamy teraz 2 możliwości: możemy zaimportować klucz (jeden z kluczy), którym posługujemy się na co dzień lub wygenerować nowy klucz: specjalnie na użytek szyfrowania poczty. Druga opcja wydaje się sensowniejsza. Zaznaczamy „Create a new OpenPGP Key” (Utwórz nowy klucz OpenPGP) i klikamy „Continue”. Z tworzonym kluczem automatycznie powiązany zostanie adres pocztowy tomek@tataija.eu
Kreator proponuje nam utworzenie klucza ważnego przez 3 lata. Możemy wydłużyć/skrócić okres ważności klucza lub wybrać opcję „Key does not expire” (Klucz nie wygasa). W ustawieniach zaawansowanych mamy możliwość zmiany typu klucza (domyślnie RSA; alternatywa to ECC: Elliptic Curve) i wielkości klucza (domyślnie 3072; alternatywa to 4096). Wartości domyślne są zupełnie w porządku: pozostawiamy jak jest i klikamy „Generate key” (Utwórz klucz).
Kreator informuje nas, że utworzenie klucza może chwilę potrwać. Jeżeli będziemy w tym czasie aktywnie korzystać z komputera czas oczekiwania będzie znacznie skrócony (chodzi o stworzenie bazy przypadkowych zdarzeń, na podstawie których wygenerowany zostanie unikalny klucz). „Intensywnie korzystać” oznacza w praktyce wykonanie kilku szybkich ruchów myszką. Klikamy przycisk „Confirm” (Potwierdzam).
Wygenerowany klucz pojawia się na panelu Szyfrowanie „end-to-end”. Widzimy jego identyfikator (ID) w postaci szesnastkowej (0x) i informację, że ten klucz nie wygasa. Do zarządzania kluczami – swoim prywatnym i publicznymi otrzymanymi od osób, z którymi prowadzimy korespondencję – służy Menadżer Kluczy OpenPGP. Przechodzimy do niego klikając przycisk „OpenPGP Key Manager”.
Na razie widzimy tylko jeden klucz, ten który wygenerowaliśmy przed chwilą. Podwójne kliknięcie otwiera panel ze szczegółowymi informacjami o kluczu.
Odpowiadając na pytanie: „Czy sam utworzyłeś ten klucz, a wyświetlany właściciel klucza to ty ?” musimy zaznaczyć opcję: „Yes, treat this key as a personal key” (Tak, traktuj ten klucz jako klucz osobisty). Drugą ważną rzeczą, jaką widzimy na tym panelu jest „odcisk palca” dla wygenerowanej pary kluczy (Fingerprint). Po przesłaniu swojego klucza publicznego osobom, z którymi chcemy prowadzić zaszyfrowaną korespondencję każda z tych osób powinna do nas zadzwonić, żeby sprawdzić czy „odcisk palca” klucza publicznego, który od nas otrzymała jest dokładnie taki sam jak ten, na który właśnie patrzymy. Oczywiście w przypadku, gdy klucz publiczny został przekazany na pendrajwie (jak to się poprawnie pisze ?) „z rąk do rąk” nie ma potrzeby, by weryfikować jego autentyczność.
W zakładce „Structure” (Struktura) widzimy wygenerowaną parę kluczy: primary key (klucz prywatny) i subkey (klucz publiczny). Pierwszy służy do podpisywania i poświadczania (Sign, Certify) a drugi do szyfrowania (Encrypt).
Żeby uruchomić szyfrowanie korespondencji z wybraną osobą/osobami musimy wyeksportować nasz klucz publiczny do pliku i przekazać go tej osobie/osobom. Mamy tu dwie możliwości: „Export Public Key(s) To File” (Wyeksportuj klucz publiczny do pliku) lub „Send Public Key(s) By Email” (Wyślij klucz publiczny pocztą elektroniczną). Druga opcja automatycznie tworzy nową wiadomość z kluczem publicznym w postaci załącznika. Wystarczy podać adresata, wpisać temat wiadomości i kliknąć przycisk „Wyślij”. Należy pamiętać, że w przypadku wybrania drugiej opcji należy sprawdzić „odcisk palca” klucza, który dotarł do adresata.
Nazwa pliku z wyeksportowanym kluczem publicznym tworzona jest automatycznie i w naszym przypadku wygląda tak: Tomek tomek@tataija.eu-(0xA938E21658C2B7E7)-public.asc
Jest to plik tekstowy, którego zawartość można podejrzeć w dowolnym edytorze tekstu.
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
Oq8/3iZ67DtobddSkzUGlR0=
=unTN
-----END PGP PUBLIC KEY BLOCK-----
Teraz osoba, której wysłaliśmy klucz publiczny musi się zrewanżowć odesłaniem nam swojego klucza publicznego. Jeżeli zrobi to w postaci załącznika do wiadomości Thunderbird automatycznie rozpozna załącznik jako klucz publiczny i dołączy go do zbioru posiadanych kluczy. Ponieważ przysłany klucz zostanie powiązany z adresem pocztowym nadawcy maila każda wiadomość do tego adresata przed wysłaniem automatycznie zostanie zaszyfrowana jego kluczem publicznym. W większości wypadków wszystko dzieje się automatycznie i nie wymaga jakiejkolwiek ingerencji ze strony nadawcy wiadomości. Jeżeli wiadomość chcemy zaszyfrować innym kluczem przed wysłaniem możemy wskazać klucz publiczny, który ma posłużyć do zaszyfrowania wiadomości.
Jeżeli klucz publiczny otrzymaliśmy na nośniku typu pendrive importujemy go poprzez menu: „Import Public Key(s) From File” (Zaimportuj klucz publiczny z pliku).
Po kliknięciu linku „View Details and manage key acceptance” (Zobacz szczegóły i zarządzaj akceptacją klucza) uruchamia się Menadżer Kluczy z podglądem na szczegóły zaimportowanego klucza publicznego.
Jeżeli klucz jest zweryfikowany (dostaliśmy go „z ręki do ręki”) zaznaczamy opcję: „Yes, I’ve verified in person this key has the correct fingerprint” (Tak, potwierdziłem osobiście „odcisk palca” tego klucza). Jeżeli nie jesteśmy w 100% pewni co do autentyczności klucza dzwonimy do jego właściciela i potwierdzamy „odcisk palca” (Fingerprint).
Po zamknięciu Menadżera Kluczy wracamy do panelu Szyfrowanie „end-to-end” , gdzie zaznaczamy dwie opcje: „Domyślnie wymagaj szyfrowania” oraz „Domyślnie dodawaj mój podpis cyfrowy” (uchroni to nas przed nieopatrznym wysłaniem niezaszyfrowanej wiadomości).
W przypadku adresatów, dla których Thunderbird nie będzie potrafił znaleźć klucza do zaszyfrowania wiadomości, przed jej wysłaniem zobaczymy monit z informacją, że z danym adresem pocztowym nie jest powiązany żaden klucz szyfrujący. Jeżeli faktycznie nie ma takiego klucza, w menu „Zabezpieczenia” (w oknie „Nowa wiadomość”) należy zaznaczyć opcję „Nie szyfruj” i ponownie nacisnąć przycisk „Wyślij”. W takim przypadku do wiadomości domyślnie dołączany jest klucz publiczny nadawcy, a wiadomość podpisywana jest cyfrowo. Domyślne ustawienia można zmienić usuwając zaznaczenia z odpowiednich opcji w menu „Zabezpieczenia”.