GPG – Gdy Prywatność Górą

Prywatność to modne słowo, obracane przez media na wszystkie strony. Trochę już przez to wypłowiałe… Bywa jednak, że boleśnie przekonujemy się, jak ważna jest prywatność – kiedy wyciekają dane, kiedy ktoś przechwytuje naszą pocztę. A przecież narzędzie, które pozwoli nam bezpiecznie przesyłać informacje jest pod ręką.

Mogłoby się wydawać, że internet jest bezpiecznym miejscem. Serwery są pozabezpieczane, mamy VPN, certyfikaty, szyfrowane połączenia. Prawda jest jednak zupełnie inna, choć przeciętnemu użytkownikowi może się wydawać, że trwa sielanka. Dobrym przykładem był wykonany swego czasu test – wystawienie poza firewall na prywatnym, nikomu nie znanym komputerze  serwera na porcie 22 (ssh). Próba włamania nastąpiła… następnego dnia. W internecie de facto cały czas trwa wojna, w której ofiarami nie są bezpośrednio ludzie, lecz ich informacje. I te informacje musimy chronić, bo one są kluczem do wielu zasobów – danych, kont, pieniędzy. Najlepiej jest je po prostu szyfrować. Specjalnie do tego celu powstało szyfrowanie asymetryczne, z którego możemy korzystać dzięki GPG.

Co to jest GPG

GPG to narzędzie do szyfrowania asymetrycznego. Jest to oprogramowanie wolne, darmowe i otwarte. Nie będziemy się zagłębiać w jego historię (choć jest ona fascynująca) – ciekawi mogą zajrzeć choćby do wikipedii (https://pl.wikipedia.org/wiki/Pretty_Good_Privacy), ale ponieważ sytuacja jest nieco zagmatwana i można trochę się w tym pogubić – postaram się podsumować ją w kilku punktach:

  • algorytm szyfrowania asymetrycznego powstał w USA i został zaimplementowany w oprogramowaniu PGP (Pretty Good Privacy). Ze względu na patenty i prawo dotyczące bezpieczeństwa, PGP nie może być używany poza USA;
  • kod programu został (legalnie) wywieziony z USA i na jego podstawie powstał program GPG (Gnu Privacy Guard), który może być (również legalnie) używany poza USA;
  • Aby to wszystko uporządkować powstał standard OpenPGP, opisujący funkcjonowanie takich programów, dzięki czemu możliwe jest tworzenie wielu różnych, ale zgodnych ze sobą rozwiązań.

Mimo drobnych różnic PGP i GPG są ze sobą zgodne, podobnie jak, oparte na standardzie OpenPGP, rozwiązanie zastosowane w ThunderBirdzie. Tego samego klucza szyfrującego można użyć w dowolnym programie zgodnym z OpenPGP.

Jak to działa

GPG szyfruje dane algorytmem asymetrycznym.

W dzisiejszych czasach każdy chyba słyszał określenie “szyfrowanie asymetryczne”, “klucz prywatny”, “klucz publiczny” itp. Jednak dla przypomnienia w kilku słowach:

  • użytkownik ma dwa klucze: publiczny, który może rozpowszechniać oraz prywatny, który musi chronić i nie może go ujawniać;
  • to, co zostanie zaszyfrowane jednym kluczem można odszyfrować wyłącznie drugim z pary;
  • klucz publiczny służy do szyfrowania wiadomości dla posiadacza klucza prywatnego, prywatny zaś do odszyfrowywania i podpisywania wiadomości (to też rodzaj szyfrowania).

W tle jest matematyka, duże liczby i skomplikowane algorytmy, ale dla nas, użytkowników nie ma to znaczenia – nie trzeba wiedzieć jak to policzyć, wystarczy wiedzieć jak tego używać.

Zawsze pojawia się to samo pytanie: czy to rozwiązanie jest bezpieczne i czy gwarantuje, że ukryta wiadomość nie zostanie odczytana? Na razie tak. Na podstawie klucza publicznego możliwe jest odtworzenie klucza prywatnego i odczytanie wiadomości, jednak operacja ta jest bardzo długotrwała. Przy długości klucza 2048 bitów (domyślna wartość) odczytanie zaszyfrowanej nim wiadomości za pomocą dostępnych dziś komputerów zajmie czas liczony w tysiącach lat. Wtedy te wiadomości nie będą już miały żadnego znaczenia…

Problem zacznie się, kiedy pojawią się dostatecznie mocne maszyny kwantowe. Odtworzenie klucza prywatnego z publicznego może skrócić się do… godzin. I wtedy trzeba będzie wymyślić inny mechanizm szyfrowania. Jednak na razie GPG zapewnia dostatecznie mocną ochronę informacji.

Instalacja

GPG jest dostępne we wszystkich repozytoriach, jego instalacja przebiega więc standardowo:

Debian i pochodne (Ubuntu, Mint, Kali)

$ sudo apt install gnupg

Red Hat i pochodne (CentOS, Fedora)

$ sudo yum install gnupg

Dodatkowo zainstalujemy program, dzięki któremu nie trzeba będzie wklepywać poleceń w konsoli. Odpowiednio:

$ sudo apt install gpa
$ sudo yum install gpa

Interfejs

Rzecz jasna konsola tekstowa daje pełną kontrolę nad wykorzystaniem GPG, jednak chciałbym udowodnić, że szyfrowanie to zabawa nie tylko dla geeków – ci, którzy nie lubią konsoli mogą się nim posługiwać równie sprawnie, korzystając z myszy i okienek. Dostępnych jest wiele programów, każdy może dopasować coś dla siebie. Pełna lista dostępna jest na stronie GnuPG. Ja posłużę się dostępnym w repozytoriach programem Gnu Privacy Assistant (GPA). Program ten pozwala na zarządzanie kluczami – generowanie, przechowywanie, podpisywanie. Za jego pomocą można również szyfrować pliki. 

Interfejs programu jest częściowo spolszczony, część poleceń i menu wciąż jest tylko w języku angielskim.

Zwolennicy KDE mogą posłużyć się np. programem kgpg.

Generowanie klucza

Zaczynamy oczywiście od wygenerowania nowej pary kluczy (jeśli ich jeszcze nie posiadamy). Po ich wygenerowaniu warto zadbać, by miały bezpieczną kopię i żeby hasło do klucza prywatnego znalazło się w managerze haseł – pozwoli to na używanie kluczy tak długo jak długo będą aktualne albo nie zostaną skompromitowane. Niejeden zestaw trafił do kosza, bo okazało się, że mam tylko jeden klucz z pary, a drugi gdzieś się zapodział albo klucze co prawda są, ale hasło do nich rozmyło się gdzieś w mrokach niepamięci. I trzeba je od nowa generować i wymieniać z innymi.

Aby wygenerować parę kluczy należy w GPA z menu Keys wybrać „New key”.

GPG: Generowanie nowego klucza w programie GPA
Generowanie nowego klucza w programie GPA

W oknie, które się pojawi należy podać imię i nazwisko (prawdziwe), w kolejnym adres mailowy (również prawdziwy). Następnie program proponuje utworzenie kopii zapasowej. Jeśli z tego skorzystamy, po wygenerowaniu klucza otworzy się okno, w  którym będzie można wybrać lokalizację i nazwę pliku z kopią klucza. Jest to kopia klucza prywatnego i powinna być dobrze zabezpieczona!

W kolejnym oknie należy podać hasło, które będzie potrzebne przy używaniu klucza prywatnego.

Klucz został wygenerowany i pojawił się w okienku programu.

Ikonka z dwoma kluczykami oznacza, że mamy pełną parę – zarówno klucz prywatny jak i publiczny,

GPG: Wygenerowany klucz - para prywatny i publiczny
Wygenerowany klucz – para prywatny i publiczny

Celowo użyłem tu nieprawdziwego nazwiska i adresu, żeby pokazać, że możliwe jest podanie dowolnych danych. W ten sposób można… podszyć się pod kogoś. Dlatego klucze należy podpisywać, taki potwierdzony przez osobę trzecią klucz jest znacznie bardziej wiarygodny. O tym za chwilę.

Przechowywanie klucza prywatnego

Jeśli w trakcie generowania klucza nie została zrobiona kopia zapasowa to można (a nawet trzeba) zrobić to samodzielnie. Jeśli stracimy klucz prywatny nigdy już nie dostaniemy się do wiadomości i plików zaszyfrowanych drugim kluczem z pary.

W programie GPA należy jedynie kliknąć prawym przyciskiem myszy klucz, z menu wybrać Backup, a w oknie, które się pojawi podać nazwę i lokalizację pliku.

GPG: Kopia zapasowa klucza
Klucz prywatny koniecznie musi mieć kopię zapasową

Kopię kluczy warto trzymać na innym nośniku niż dysk komputera – w razie awarii dysku nie stracimy dostępu do zaszyfrowanych danych.

Eksportowanie klucza publicznego

Aby klucz publiczny mógł być rozpowszechniany musi zostać najpierw wyeksportowany i zapisany w pliku. W oknie GPA należy kliknąć klucz przeznaczony do eksportu prawym klawiszem myszy i wybrać z menu Export Keys. Teraz trzeba wskazać katalog, podać nazwę i gotowe. Tak wyeksportowany plik można załączyć do maila lub umieścić na jakimś serwerze.

Wymiana kluczy publicznych

Technologia szyfrowania asymetrycznego została stworzona po to, by można było bezpiecznie przesyłać informacje między różnymi osobami. Klucz publiczny, który leży wyłącznie na naszym dysku jest bezużyteczny. Dlatego też klucze publiczne trzeba rozdać wszystkim, od których spodziewamy się prywatnych wiadomości – takich, których nie chcielibyśmy ujawniać. 

Najpopularniejszą formą upublicznienia klucza prywatnego jest po prostu wysłanie go mailem. W takiej formie, w jakiej został on wyeksportowany z programu GPA. Jest to niewielki plik tekstowy, o pojemności ok. 1,5 kB. Przy dzisiejszej przepustowości Sieci jest to praktycznie niezauważalne. Jednak nie każdy ma ochotę zaśmiecać sobie pocztę załącznikami, choćby były niewielkie. Dlatego możliwe są inne rozwiązania:

  • można umieścić plik z kluczem publicznym w jakiejś chmurze, udostępnić go, a następnie w mailu dołączyć link;
  • istnieją tzw. keyserwery – specjalizowane serwery, udostępniające klucze publiczne. Umożliwiają one wyszukiwanie i podgląd kluczy. Umieszczenie klucza na serwerze jest darmowe. Oto kilka popularnych serwerów kluczy:
    https://pgp.surfnet.nl
    https://keys.openpgp.org
    https://keyserver.ubuntu.com

Kiedy już otrzymamy – taką lub inną drogą – klucz publiczny innej osoby, należy go jeszcze zaimportować do zestawu GPG. W GPA wystarczy z menu Keys wybrać opcję Import Keys i wskazać plik zawierający klucz publiczny.

Podpisywanie klucza

Ponieważ – jak to było widoczne powyżej – każdy może wygenerować klucz dla dowolnego imienia, nazwiska i adresu, klucz publiczny powinien być uwiarygodniony podpisem innej osoby. Składając musimy być jednak pewni, że podpisywany klucz jest autentyczny. Jak to zrobić?

  • Można spotkać się osobiście, pogadać, wypić razem kawę, a potem przekazać klucz bezpośrednio (np. na pendrive).
  • Można przekazać innym kanałem (np. przez Signal czy Telegram) numer identyfikacyjny, który każdy klucz posiada lub jego tzw odcisk (fingerprint). Zgodne numery to potwierdzenie przynależności klucza do właściwej osoby
GPG: Identyfikator i odcisk (fingerprint) klucza
Identyfikator i odcisk (fingerprint) klucza

Skoro jesteśmy już pewni, że mamy właściwy klucz, możemy go podpisać. W oknie GPA należy kliknąć prawym przyciskiem myszy klucz, który chcemy podpisać, a następnie z menu wybrać opcję Sign Keys. 

Pojawi się okno, przypominające, by dokładnie sprawdzić, co podpisujemy – i należy to zrobić, bo lekkomyślny podpis może mieć różne konsekwencje, w końcu podpisany przez nas klucz może być użyty w różnych miejscach.

Po podpisaniu klucza należy go jeszcze oddać właścicielowi. Można to zrobić po prostu w formie załącznika do maila, który zaimportuje go u siebie  Jeśli klucz jest umieszczony na keyserwerze i stamtąd został pobrany wystarczy wysłać go tam – zostanie automatycznie uaktualniony. Właściciel może go sobie po prostu pobrać z serwera.

Szyfrowanie poczty

Cała ta zabawa z kluczami, podpisywaniem itp. służy tylko temu, żeby można było w bezpieczny sposób przekazywać informację. W czasach, kiedy powstawało PGP najpopularniejszym kanałem komunikacyjnym była poczta elektroniczna – i do niej właśnie przystosowano program szyfrujący. Dziś, kiedy kanałów komunikacyjnych mamy w bród, w tym z założenia zabezpieczone, takie jak Signal czy Telegram, na szyfrowanie poczty nie kładzie się takiego nacisku. Jak się okazuje – zupełnie niesłusznie. Wpadki z przejęciem VIPowskich maili pokazują, że tego tematu nie wolno traktować lekko. Gdyby poczta skomprotmitowanych polityków była szyfrowana, nawet przejęcie skrzynki pocztowej niewiele by hackerom dało.

Webmail – wtyczka

Dla osób, które korzystają z poczty przez webmail, za pośrednictwem przeglądarki – np. Gmail czy Yahoo dostępna jest wtyczka Mailvelope. Jest to wtyczka do Chrome, ale ponieważ zdecydowana większość przeglądarek oparta jest na silniku Chromium to da się ją zainstalować również w innych programach takich jak Opera czy Brave.

Mailvelope znajduje się w sklepie Chrome (https://chrome.google.com/webstore/detail/mailvelope/kajibbejlbohfaggdiogboambcijhkke?hl=pl). Obsługuje ona wiele różnych serwerów pocztowych, można również dodawać niestandardowe.

Po zainstalowaniu wtyczki jej ikona pojawi się w oknie webmaila np. przy logo Gmaila oraz wśród innych wtyczek przeglądarki.

GPG: Ikonka wtyczki Mailvelope - w oknie przeglądarki i przy logo Gmaila
Ikonka wtyczki Mailvelope – w oknie przeglądarki i przy logo Gmaila

Aby wysyłana poczta mogła być szyfrowana „w locie” wtyczka potrzebuje zezwolenia na wysyłanie poczty. Trzeba tej zgody udzielić, inaczej po prostu nie będzie działać.

Zanim będzie można szyfrować maile trzeba do wtyczki zaimportować klucze: swój prywatny, by można było odczytać pocztę i publiczne klucze odbiorców. Przeglądarka nie ma dostępu do systemu plików i nie może – tak jak GPA czy KGPG po prostu wziąć sobie kluczy. 

Aby umożliwić import trzeba kliknąć ikonkę rozszerzenia (tę w oknie przeglądarki, nie obok logo Gmaila).  W otwartym oknie przechodzimy do zakładki Key Management. Mamy tu możliwość wygenerowania nowych kluczy lub skorzystania z istniejących, jeśli zostały wcześniej utworzone za pomocą konsoli lub interfejsu graficznego. Istotne jest, by w tym miejscu zaimportować wszystkie klucze publiczne osób, do których chcemy takie niejawne informacje wysyłać.

GPG: W oknie wtyczki należy zaimportować klucze
W oknie wtyczki należy zaimportować klucze

Po zaimportowaniu kluczy można już wysyłać szyfrowaną pocztę. Kliknięcie ikonki Mailvelope obok logo Gmaila otwiera okno nowej wiadomości. Jest to nieco inne okno od standardowej poczty, odpowiada za nie wtyczka, a nie Google. 

Podajemy odbiorców, temat, dodajemy załączniki. Cały pakiet zostanie zaszyfrowany kluczami publicznymi odbiorców (na podstawie ich adresów) i wysłany w postaci nieczytelnej dla innych osób.

Jeśli brak jest klucza jakiegoś odbiorcy wtyczka wyświetli ostrzeżenie.

Adresat – o ile posiada zaimportowany do wtyczki klucz prywatny (i pamięta do niego hasło, co nie jest takie oczywiste jak mogłoby się wydawać…) będzie mógł odczytać wiadomość, która w rzeczywistości wygląda tak:

GPG: Wiadomość zaszyfrowana kluczem publicznym
Wiadomość zaszyfrowana kluczem publicznym

a po podaniu hasła i odszyfrowaniu w oknie wtyczki – tak:

GPG: Wiadomość odszyfrowana przez wtyczkę
Wiadomość odszyfrowana przez wtyczkę

Cała procedura nie jest kłopotliwa i jeśli poświęci się kilka minut na import kluczy – bezpieczna poczta jest pod ręką i nie zajmuje dodatkowego czasu.

Thunderbird

Czasy programów pocztowych raczej minęły i większość ludzi woli skorzystać po prostu z przeglądarki, ale jeśli chce się używać np. Thunderbirda to sprawa szyfrowania poczty wygląda jeszcze prościej. Protokół OpenPGP (zgodny z GPG) od jakiegoś czasu jest wbudowany w program i nic nie trzeba doinstalowywać. Trzeba natomiast, jak w przypadku wtyczki Mailvelope, zaimportować klucze: swoje prywatne i publiczne odbiorców.

Import odbywa się za pomocą managera kluczy, który wywołujemy z menu (trzy kreski po prawej stronie okna programu), z menu wybieramy polecenie Konfiguracja kont, w oknie, które się otworzy, w menu po lewej stronie klikamy Szyfrowanie „end-to-end”. Kliknięcie przycisku OpenPGP Manager otworzy oddzielne okienko managera kluczy, nieco podobne do GPA. Tu z menu File wybieramy Import  Public Key(s) jeśli chcemy importować klucze publiczne odbiorców lub Import Secret Key(s) jeśli ma być importowany nasz własny klucz prywatny.

GPG: Okno managera kluczy Thunderbirda
Okno managera kluczy Thunderbirda

Po zaimportowaniu klucza prywatnego koniecznie trzeba jeszcze (w oknie szyfrowania end-to-end) wybrać domyślny klucz, przypisany do tego konta, inaczej szyfrowanie OpenPGP nie będzie działać.

Teraz w oknie tworzonej wiadomości wystarczy rozwinąć menu Zabezpieczenia, wybrać opcję Wymagaj szyfrowania i gotowe.

Szyfrowanie plików

Nic nie stoi na przeszkodzie, by kluczem publicznym zaszyfrować plik i  w takiej postaci wysłać go odbiorcy. Osoba posiadająca klucz prywatny – i tylko ona – będzie mogła odszyfrować plik.

W programie GPA jest do tego dedykowane okienko. Kliknięcie ikony otwiera okno File managera, do którego można po prostu przeciągnąć pliki.

GPG: Okno szyfrowania plików programu GPA
Okno szyfrowania plików programu GPA

Po zaznaczeniu pliku i wybraniu z menu File polecenia Encrypt pojawi się okno z listą odbiorców. Można wybrać więcej niż jednego i każdy z nich będzie mógł odszyfrować pliki za pomocą swojego klucza prywatnego. Takie pliki można bezpiecznie przesyłać pocztą czy umieścić w chmurze – nikt, kto nie ma klucza prywatnego się do nich nie dostanie.

Przy okazji – warto jest do każdego zestawu odbiorców dodać siebie (zaszyfrować dane również swoim kluczem publicznym). W ten sposób będziemy również mieli możliwość odszyfrowania pliku – na wypadek, gdyby oryginał gdzieś się zapodział.

Ot i cała filozofia szyfrowania za pomocą kluczy publicznych i prywatnych. Jak widać nie trzeba być ekspertem ani wpisywać tasiemcowych poleceń w konsoli.

Podsumowanie

Czy warto się w to bawić? Być może na co dzień nie. Może zazwyczaj nie przesyłamy tak istotnych informacji, by trzeba było je chronić 2-kilobajtowymi kluczami. Niemniej wypadki się zdarzają i – wspomniana wcześniej – afera z przejęciem skrzynki pocztowej osoby powiązanej z kołami rządowymi stanowi najlepszy dowód, że należy wiedzieć jak zabezpieczyć swoje dane kiedy przesyła się niejawne bądź wrażliwe informacje.

Niestety, na razie GPG pozostaje Generalnie Prywatnym Grajdołkiem – nie spotkałem się jeszcze z tym, by – mimo powszechnej dostępności tego rozwiązania – jakaś firma opublikowała swój klucz publiczny i poinstruowała jak z niego skorzystać. A przecież – jak wynika z tego artykułu – używanie szyfrowania asymetrycznego nie jest trudne, nie wymaga specjalistycznej wiedzy ani skomplikowanej konfiguracji oprogramowania.

3 komentarze
  1. Bardzo fajny artykul, mimo ze prywatny uzytkownik sporadycznie korzysta z takich rozwiazan, to w wielu firmach powinno sie uzywac tego typu szyfrowania, sczegolnie jak sie wysyla, faktury, potwierdzenia, dane logowania b2b itd. Niestety ludzie nie chcą o czymś takim slyszec i sa nieswiadomi zagrożenia ktory moze ale nie musi byc. Sam sprawdzilem widzac beztroskie postepowanie jak pracownik pewnej firmy. Dlatego warto tworzyc takie artykuly ktore byc moze sa jakims bardziej sznaowanym autorytetem ktory mozna komus przekazac bo ludzkie slowo czasami nie ma znaczenia.

    Tak przy okazji mam pytanie, czy wpisujac tutaj realnego maila piszac komentarz, facebook jak strona trzecia ktorej skrypty umiesciliscie na stronie LInux.pl dostaje jakies informacje o mnie?

    1. Nie dostaje – ta wtyczka z FB służy tylko do zamieszczania komentarzy z poziomu konta na FB. Nie przekazuje ona żadnych informacji zapisanych tutaj.

  2. Bdb. Na takie artykuły czekają linuxiarze. Konkrety i oby ich jak najwięcej. Wtedy może komputer świat, pcformat etc. zaczną więcej pisać o linuxach, a i może PSL własne czasopismo o linux wyda, np. świat linuxa, w przystępnej cenie, pojawi się więcej linuxów i programów na nich w języku ojczystym, w firmach, urzędach etc.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Poprzedni post

OpenShot 2.6.0 wydany z wieloma ważnymi ulepszeniami

Następny post

Sway – nowy pulpit dla Sparky Linux

Powiązane posty