Szyfrowanie asymetryczne GPG
Rozwój technologii niesie ze sobą coraz większe zagrożenia związane z bezpieczeństwem informacji. Ochrona poufnych danych dotyczy nie tylko firm i instytucji, ale również każdego użytkownika komputera domowego. Jedną z możliwości zabezpieczenia danych jest wprowadzenie standardu szyfrowania komunikacji GPG (GNU Privacy Guard). Jest to udostępniany na licencji GPL (GNU General Public License) odpowiednik oprogramowania kryptograficznego PGP (Pretty Good Privacy).
Standard GPG bazuje na użyciu dwóch asymetrycznych kluczy - publicznym i prywatnym. Pierwszy z tych kluczy służy do szyfrowania, a drugi do deszyfrowania. Takie rozwiązanie charakteryzuje się dużym bezpieczeństwem. Użytkownicy wymieniają się tylko kluczami publicznymi, a klucze prywatne nigdy nie są udostępnianie osobom postronnym (powinny być przechowywane w bezpiecznym miejscu).
Zatrzymajmy się na dłużej przy samych kluczach, żeby dokładnie zrozumieć mechanizm szyfrowania i odszyfrowania. Jeżeli chcemy wysłać do kogoś np. zaszyfrowany e-mail, to musimy posiadać klucz publiczny odbiorcy. Gdy otrzyma on taką wiadomość, będzie mógł odszyfrować ją swoim kluczem prywatnym. I analogicznie w drugą stronę - jeżeli to my chcemy otrzymywać zaszyfrowane wiadomości, to nadawca musi posiadać nasz klucz publiczny. Po otrzymaniu takiej wiadomości będziemy mogli odszyfrować ją swoim kluczem prywatnym.
GPG można wykorzystać nie tylko do zabezpieczenia poczty elektronicznej, ale również do szyfrowania plików lub całych folderów. Dzięki temu można trzymać je na dysku, nie martwiąc się o to, że ktoś wykradnie z nich jakieś informacje. Dodatkowo klucz prywatny może służyć również do podpisu cyfrowego dokumentów i wiadomości, a klucz publiczny do jego weryfikacji.
Instalacja GPG
Wielką zaletą GPG jest jego dostępność na najpopularniejsze system - Windows, Linuks, Mac OS, Android.
W Windowsie zaczynamy od pobrania programu gpg4win (właściwie jest to cały pakiet oprogramowania) i jego instalacji. W skład pakietu wchodzą takie elementy jak narzędzie szyfrujące GnuPG, menadżer certyfikatów Kleopatra, alternatywny zarządca certyfikatów GPA, a także dwa pluginy pozwalające na integrację z Microsoft Outlook oraz eksploratorem Windows. Sam proces instalacji nie różni się od innych programów w systemie Windows i w zdecydowanej większości przypadków można zostawić domyślne ustawienia instalatora.
W Linuksie narzędzie szyfrujące GnuPG jest instalowane domyślnie. Jego obsługa nie jest niestety wygodna, bo przez wiersz poleceń. Można jednak zainstalować menadżer certyfikatów Kleopatra, który bardzo ułatwi dalszą pracę.
Generowanie kluczy GPG
Pierwszą czynnością jest przygotowanie pary kluczy - publicznego i prywatnego - które zapewnią możliwość szyfrowania i deszyfrowania naszej poczty lub innych danych. Uruchamiamy program Kleopatra (który jest częścią zainstalowanego wcześniej gpg4win), a następnie klikamy na górnym pasku w "Plik" i z menu, które się wyświetli, wybieramy "Nowa para kluczy". Wyświetli się okno, w którym wybieramy "Utwórz parę kluczy osobistych OpenPGP".
W kolejnym kroku dobrze jest podać zarówno nazwę dla naszej pary kluczy (np. imię i nazwisko) jak i adres e-mail. Poniżej, w ustawieniach zaawansowanych, zostawiamy domyślne ustawienia. Ewentualnie można zmienić jak długo będą ważne nasze klucze. Jeżeli nie ustawimy tej wartości (odznaczymy pole z datą), klucze będą ważne bezterminowo - nie jest to zalecane rozwiązanie.
W następnym kroku ustalamy hasło chroniące nasz klucz prywatny. Można to pominąć, jednak zdecydowanie zalecamy, żeby skorzystać z tej opcji i wpisać hasło, które będzie trudne do odgadnięcia przez osoby trzecie. Należy pamiętać, że klucz prywatny umożliwia np. odszyfrowanie poczty i w przypadku kradzieży komputera, hasło jest dodatkowym zabezpieczeniem.
Na koniec wyświetli się okno z informacją o utworzeniu naszego zestawu kluczy oraz tzw. odcisku palca dla klucza (ang. fingerprint). Odcisk klucza jest 40-cyfrowym ciągiem, który pozwala jednoznacznie zweryfikować wygenerowaną parę kluczy (nikt inny nie utworzy kluczy o tym samym odcisku). Dobrze również wykonać kopię zapasową naszej pary kluczy (pamiętajmy, że jeżeli stracimy klucz prywatny, nie będziemy mogli np. odszyfrować przesłanych do nas wiadomości, które zostały zaszyfrowane z wykorzystaniem naszego klucza publicznego).
Udostępnianie klucza publicznego GPG
Na początek trzeba zaznaczyć - nigdy nikomu nie udostępniamy klucza prywatnego. Osobom trzecim przekazujemy jedynie klucz publiczny.
W managerze kluczy - Kleopatra - zaznaczamy nasz klucz na liście, a następnie wybieramy polecenie "Eksportuj" z paska narzędzi. Pozwoli to zapisać klucz publiczny do pliku (domyślna nazwa pliku będzie zgodna z odciskiem klucza).
Możemy również na naszym kluczu kliknąć prawym klawiszem myszy i z menu kontekstowego wybrać "Eksportuj" (Uwaga - w menu kontekstowym dostępna jest również opcja "Eksportuj klucz poufny". Służy ona jednak do wyeksportowania naszego zestawu kluczy - razem z kluczem prywatnym).
Tak przygotowany plik należy przekazać osobie, która będzie chciała wysyłać do nas zaszyfrowane wiadomości e-mail lub weryfikować nasz podpis cyfrowy. Najprościej po prostu przesłać klucz za pomocą poczty e-mail.
Do przekazywania naszego klucza publicznego można również wykorzystać serwer kluczy OpenPGP. Kleopatra umożliwia zarówno szybkie wysłanie naszego klucza na wybrany serwer, jak i proste wyszukiwanie kluczy publicznych oraz ich importowanie. Serwery synchronizują się między sobą, tak więc nie ma wielkiego znaczenia, który wybierzemy. Żeby ustawić serwer kluczy w Kleopatrze, należy z górnego menu wybrać "Ustawienia", a następnie "Ustawienia Kleopatra".
W kolejnym oknie, z lewej strony, zaznaczamy "Usługi katalogowe", a następnie wpisujemy adres wybranego serwera kluczy w polu "Serwer kluczy OpenPGP", np. hkps://hkps.pool.sks-keyservers.net.
Teraz wystarczy na naszym kluczu kliknąć prawym klawiszem myszy i z menu kontekstowego wybrać "Opublikuj na serwerze". Od tego momentu każda zainteresowana osoba może bez przeszkód pobrać nasz klucz publiczny. Trzeba jeszcze pamiętać o jednej kwestii - wysłany na serwer klucz zostanie tam na zawsze. Praktycznie nie ma możliwości skasowania go.
Importowanie klucza publicznego i prywatnego GPG
Importować można zarówno klucz publiczny należący do innej osoby, jak i własny klucz prywatny (raczej nie zdarzy się, że będziemy importować klucz prywatny kogoś innego - byłoby to niezgodne z ideą szyfrowania asynchronicznego i bezpieczeństwa).
Załóżmy, że przekazaliśmy nasz klucz publiczny osobie, która będzie do nas przesyłać zaszyfrowane wiadomości. Taka osoba musi zaimportować u siebie nasz klucz publiczny - może to oczywiście wykonać, korzystając z programu Kleopatra. W tym celu na pasku narzędzi trzeba wybrać "Importuj", a następnie wskazać otrzymany klucz publiczny. Uwaga - poniżej widać klucz innej osoby niż na wcześniejszych zdjęciach. Wynika to oczywiście z tego, że import naszego klucza publicznego odbywa się na innym komputerze, należącym do kogoś innego.
W kolejnym oknie wyświetli się informacja dotycząca potrzeby certyfikacji, która oznacza, że za chwilę zweryfikujemy otrzymany klucz z wykorzystaniem odcisku klucza. Jak to zrobić? Można np. zadzwonić do osoby, od której otrzymaliśmy klucz publiczny i poprosić o przedyktowane odcisku. Jeżeli będzie się zgadzał, to znaczy, że klucz jest prawdziwy i faktycznie pochodzi od osoby, która go utworzyła (odcisk klucza można w każdej chwili sprawdzić, klikając na nim prawym klawiszem myszy i wybierając z menu kontekstowego "Szczegóły").
W następnym kroku mamy wyświetlony odcisk klucza. Po jego weryfikacji należy wybrać, który klucz prywatny użyjemy do certyfikacji. Poniżej zaznaczmy, który klucz publiczny ma zostać podpisany. Na samym dole - w ustawieniach zaawansowanych - możemy wybrać, żeby certyfikacja była wiążąca dla innych osób. Chodzi o to, że gdy przesyłamy dalej (do jeszcze innej osoby) certyfikowany właśnie klucz - to w przypadku gdy ta inna osoba wcześniej certyfikowała nasz własny klucz publiczny - to nie będzie musiała sama wykonywać certyfikacji dla tego klucza. Taka konstrukcja zaufania upraszcza sprawdzanie wielu kluczy i tworzy sieć zaufania (ang. Web of Trust). Jednak w większości przypadków nie będziemy korzystać z tej opcji.
W celu zakończenia certyfikacji należy podać hasło do naszego klucza prywatnego - spowoduje to, że otrzymany klucz publiczny będzie podpisany cyfrowo naszym kluczem prywatnym.
Na końcu zobaczymy podsumowanie, a na liście naszych kluczy będzie widoczny dodany przed chwilą klucz publiczny z informacją, że jest on certyfikowany. Można teraz zauważyć różnicę w wyglądzie posiadanych kluczy. W kluczach publicznych jest wykorzystana zwykła czcionka, a w przypadku kluczy prywatnych jest wykorzystana pogrubiona czcionka.
Innym sposobem na import klucza publicznego jest skorzystanie z serwera kluczy OpenPGP (oczywiście wcześniej jego właściciel musi go tam umieścić). Na początku trzeba ustawić adres wybranego serwera kluczy w ustawieniach Kleopatry (opis jak to zrobić jest w części dotyczącej udostępniania klucza publicznego). Następnie na pasku narzędzi wybieramy "Wyszukaj na serwerze".
W oknie wyszukiwarki podajemy np. adres e-mail, który został wykorzystany przy generowaniu klucza, i klikamy w "Znajdź". Jeżeli klucz publiczny zostanie odnaleziony, wystarczy go zaznaczyć i kliknąć "Importuj". Na koniec należy przejść omówioną wcześniej procedurę certyfikowania klucza, po której zobaczymy nowy klucz publiczny na naszej liście.
Od tego momentu możemy np. otrzymywać zaszyfrowane wiadomości. Oczywiście, żeby szyfrowana komunikacja była w obie strony (odbieranie i wysyłanie), to sami musimy posiadać klucz publiczny osoby, do której chcemy takie wiadomości kierować.
MS Outlook - szyfrowanie oraz podpisywanie wiadomości
Pierwszą zmianą, jaką zobaczymy w MS Outlook, po zainstalowaniu gpg4win (a dokładnie pluginu GpgOL) jest nowa ikona na wstążce w zakładce "Narzędzia główne". Klikając w małą strzałkę, w dolnym prawym rogu, otworzy się okno z ustawieniami GpgOL.
Domyślne ustawienia zapewniają automatyczne podpisywanie (naszym kluczem prywatnym) oraz szyfrowanie tworzonych wiadomości w przypadku wykrycia klucza publicznego odbiorcy. Ewentualnie można rozważyć np. włączenie automatycznego podpisywania naszym kluczem prywatnym wszystkich tworzonych wiadomości.
Podczas tworzenia nowej wiadomości i wpisaniu odbiorcy, jeżeli będziemy posiadać jego klucz publiczny, automatycznie zostanie włączone szyfrowanie i podpis cyfrowy (powiązany z naszym kluczem prywatnym). Oczywiście możemy sami decydować o szyfrowaniu i podpisywaniu tworzonej wiadomości. Wystarczy kliknąć strzałkę skierowaną w dół przy ikonie "Secure" na wstążce w zakładce "Wiadomość" i wybrać odpowiednią opcję.
W przypadku skorzystania z podpisu cyfrowego, przy próbie wysłania wiadomości, zostaniemy poproszeni o wpisanie hasła do naszego klucza prywatnego.
Jeżeli będziemy chcieli zaszyfrować wiadomość do odbiorcy, którego nie posiadamy klucza publicznego, wyświetli się dodatkowe okienko z możliwością ręcznego wyboru klucza. System automatycznie będzie chciał wykorzystać nasz klucz publiczny do szyfrowania. Do odszyfrowania takiej wiadomości potrzebny jest nasz klucz prywatny, a przecież odbiorca nie posiada tego klucza (jak zostało już wcześniej napisane - nikomu nie udostępniamy naszego klucza prywatnego). W takim wypadku należy wcześniej poprosić odbiorcę o jego klucz publiczny lub po prostu zrezygnować z szyfrowania wiadomości (cały czas można wykorzystać podpis cyfrowy).
Kiedy odbierzemy zaszyfrowaną wiadomość, zobaczymy przy niej ikonę kłódki. Przy próbie odczytania takiej wiadomości, otworzy się okienko, w którym musimy podać hasło do naszego klucza prywatnego. W ten sposób odszyfrujemy wiadomość i bez problemu ją odczytamy. Otwarta wiadomość również jest odpowiednio oznaczona, za pomocą kategorii z przypisanym kolorem. W tym przypadku widzimy, że wiadomość jest zaszyfrowana i podpisana cyfrowo przez nadawcę.
Pozostaje jeszcze sprawdzić co w przypadku, kiedy nie posiadamy odpowiedniego klucza prywatnego do odszyfrowania wiadomości. Taką wiadomość otworzymy, ale nie zobaczymy właściwej treści. Możemy się jedynie zapoznać z identyfikatorem klucza, który został użyty do podpisania oraz klucza potrzebnego do odszyfrowania wiadomości.
Android - szyfrowanie oraz podpisywanie wiadomości
Coraz częściej z poczty elektronicznej korzysta się nie tylko na komputerze, ale np. na telefonie. Android również umożliwia skorzystanie z GPG. Wykorzystamy w tym celu program OpenKeychain, który współpracuje m.in. z programem pocztowym K-9 Mail.
OpenKeychain pozwala zaimportować lub utworzyć nowy zestaw kluczy. W tym przykładzie zakładamy, że dysponujemy już naszym zestawem kluczy (prywatnym i publicznym) oraz kluczem publicznym odbiorcy naszych wiadomości. Zaczynamy od dodania swoich kluczy, dlatego wybieramy "Importuj klucz z pliku" (jeżeli jednak chcielibyśmy utworzyć nową parę kluczy, to wybieramy "Utwórz mój klucz"). Następnie musimy wskazać gdzie mamy zapisany nasz zestaw kluczy. W tym celu w kolejnym oknie klikamy w ikonę folderu i wskazujemy miejsce, w którym zapisaliśmy klucze.
W kolejnym kroku wykonamy import klucza publicznego osoby, do której będziemy wysyłać zaszyfrowane wiadomości. Możemy ponownie zaimportować klucz z pliku lub pobrać - jak w przypadku Kleopatry - z serwera kluczy OpenPGP (serwery kluczy są domyślnie skonfigurowane, ewentualne zmiany można wykonać w ustawieniach OpenKeychain). Klikamy w prawym dolnym rogu w ikonę z plusem i wybieramy z menu odpowiednią opcję - "Importuj z pliku" lub "Wyszukiwanie kluczy".
Tym razem skorzystamy z serwera kluczy OpenPGP, dlatego wybieramy "Wyszukiwanie kluczy". Otworzy się okno, w którym podajemy np. nazwę (najczęściej imię i nazwisko właściciela) szukanego klucza publicznego. Jeżeli klucz zostanie znaleziony, to wystarczy, że klikniemy przycisk "Importuj".
Podobnie jak w przypadku Kleopatry, musimy jeszcze certyfikować zaimportowany klucz. Na liście dostępnych kluczy wybieramy właściwy klucz publiczny.