Korzystanie z programu Gnu Privacy Guard



Podobne dokumenty
Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

UŜywanie wtyczki pluginu Enigmail w progamie Mozilla Thunderbird

Rozliczenia z NFZ. Ogólne założenia. Spis treści

PERSON Kraków

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

I. Zakładanie nowego konta użytkownika.

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

API transakcyjne BitMarket.pl

INFORMATOR TECHNICZNY WONDERWARE

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

WF-FaKir dla Windows

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Zdalne odnawianie certyfikatów do SWI

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Microsoft Management Console

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

PODRĘCZNIK UŻYTKOWNIKA

Konfiguracja programu Outlook 2007 do pracy z nowym serwerem poczty (Exchange)

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

INSTRUKCJA Panel administracyjny

Wtedy wystarczy wybrać właściwego Taga z listy.

MySource Matrix CMS - PROSTY INTERFEJS UŻYTKOWNIKA. INSTRUKCJA ver 1.2

Użytkowanie elektronicznego dziennika UONET PLUS.

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Zarządzanie Zasobami by CTI. Instrukcja

Instalacja Plugin. Rys. 1. Folder Plugin.

UWAGA! PRZECZYTAJ NAJPIERW:

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Poniżej instrukcja użytkowania platformy

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Konfiguracja historii plików

Instrukcja programu PControl Powiadowmienia.

Logowanie do systemu Faktura elektroniczna

Spring MVC Andrzej Klusiewicz 1/18

Instrukcja wgrywania synoptyki pola (wersja modelu danych do 634)

INSTRUKCJA DO INTERNETOWEGO ROZKŁADU JAZDY

INSTRUKCJA WebPTB 1.0

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

Metody opracowywania dokumentów wielostronicowych. Technologia Informacyjna Lekcja 28

art. 488 i n. ustawy z dnia 23 kwietnia 1964 r. Kodeks cywilny (Dz. U. Nr 16, poz. 93 ze zm.),

Archiwum Prac Dyplomowych

Instrukcja logowania do aplikacji ING Agent

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

Logowanie do mobilnego systemu CUI i autoryzacja kodami SMS

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Kancelaris - Zmiany w wersji 2.50

elektroniczna Platforma Usług Administracji Publicznej

zgubił całą naszą korespondencję Można by tak wymieniać bez bezpieczeństwa, gdyby była wykonana dnia poprzedniego rozwiązałaby niejeden problem.

Instrukcja. 1 Zamawiając kuriera. W Paczkomacie lub POK. 3 Nadając list polecony. nadawania przesyłek z Allegro: (Punkt Obsługi Klienta)

PRESTASHOP INTEGRATOR XL BY CTI INSTRUKCJA

INSTRUKCJA KORZYSTANIA Z ELEKTRONICZNEJ ŚCIEŻKI WYKAZÓW

DE-WZP JJ.3 Warszawa,

Instrukcja wprowadzania ocen do systemu USOSweb

INSTRUKCJA TESTOWANIA USŁUG NA PLATFORMIE ELA-ENT

InsERT GT Własne COM 1.0

SpedCust 5 instrukcja instalacji

Specyfikacja techniczna banerów Flash

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Pierwsze logowanie do systemu I-Bank

Bazy danych. Andrzej Łachwa, UJ, /15

Procedury uzyskania dostępu do systemu SIL

Ashampoo Rescue Disc

Ramki tekstowe w programie Scribus

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

INSTRUKCJA DLA UCZESTNIKÓW ZAWODÓW ZADANIA

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Adapter USB do CB32. MDH-SYSTEM ul. Bajkowa 5, Lublin tel./fax lub kom e mail: info@mdh-system.pl

Regulamin serwisu internetowego ramowka.fm

System kontroli wersji SVN

(opracował: Ł. Skonecki)

Pracownia internetowa w szkole podstawowej (edycja 2004)

Postanowienia ogólne. Usługodawcy oraz prawa do Witryn internetowych lub Aplikacji internetowych

KALENDARZE. Ćwiczenie 1 Tworzenie nowego, edycja kalendarza. 1. Uruchom nowy projekt. 2. W menu Narzędzia kliknij polecenie Zmień czas pracy

Ogólna charakterystyka kontraktów terminowych

Tomasz Greszata - Koszalin

Systemy mikroprocesorowe - projekt

Instalacja i konfiguracja automatu synchronizacji CDN OFFLINE

Media Organizer v1.0b

9. Dynamiczne generowanie grafiki, cz. 3

Regulamin korzystania z serwisu

Zmiany w programie C GEO v. 6.5

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

Mechanizm zawarty w warunkach zamówienia podstawowego. Nie wymaga aneksu do umowy albo udzielenia nowego zamówienia. -

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

Zmiany w wersji 1.18 programu VinCent Office.

Instrukcja procesu aktywacji oraz obsługi systemu Banku Internetowego dla BS Mikołajki

PROCEDURA ADMINISTROWANIA ORAZ USUWANIA

Aneks nr 8 z dnia r. do Regulaminu Świadczenia Krajowych Usług Przewozu Drogowego Przesyłek Towarowych przez Raben Polska sp. z o.o.

Platforma zamówień personelu JOBMAN.pl

Transkrypt:

Korzystanie z programu Gnu Privacy Guard Spis treści 1. Szyfrowanie informacji...2 2. Idea pary kluczy publicznego i prywatnego...2 3. Standard OpenPGP i jego implementacje...3 4. Instalacja GnuPG i narzędzi wspomagających...3 5. Generowanie kluczy...5 6. Eksportowanie oraz importowanie kluczy...8 7. Podpisywanie i weryfikacja...15 8. Szyfrowanie i deszyfrowanie...20 9. Sieć zaufania (web of trust)...22 10. Bibliografia...23 1

1. Szyfrowanie informacji JuŜ 100 lat p.n.e. powstały pierwsze pomysły na bezpieczną wymianę informacji. Jeden z pierwszych szyfrów został stworzony przez Juliusza Cezara. Opierał się na prostej idei przesuwania znaków o 3 pozycje. Np. znak 'a' był zapisywany jako 'd', 'b' jako 'e', 'z' jako 'b' itd. Oto jak wyglądałaby zaszyfrowany słynny cytat Juliusza Cezara: Postać oryginalna: Veni Vidi Vici Postać zaszyfrowana: Yhql Ylgl Ylfl Aby odszyfrować tak zakodowaną wiadomość naleŝy znać klucz jakim była szyfrowana i wykonać działania odwrotne. Szyfrując uŝywano przesunięcia o 3 znaki w prawo, więc deszyfrowanie odbywałoby się przesuwając kaŝdy znak o 3 pozycje w lewo. Taki algorytm nazywany jest w kryptografii szyfrowaniem symetrycznym. Deszyfrowanie polega na odwróceniu działań wykonanych podczas szyfrowania stosując ten sam klucz. W przypadku szyfru Cezara kluczem była liczba 3. Co ciekawe szyfr Cezara moŝe dawać wyniki zupełnie odmienne od oczekiwanych, przykładowo zaszyfrowanie kluczem o wartości 13 łańcucha hejnal urwany da w wyniku łańcuch urwany hejnal. Oczywiście szyfr przesuwający zostanie złamany w ciągu ułamków sekund na kaŝdym współczesnym komputerze. Nie nadaje się więc do zastosowania w dzisiejszych warunkach. Ponadto szyfrowanie symetryczne nie nadaje się do wykorzystania w Internecie, poniewaŝ w takim przypadku zachodziłaby potrzeba bezpiecznej wymiany klucza. Przechwycenie przez intruza pakietu zawierającego klucz dawałoby mu pełny dostęp do szyfrowanych informacji, więc cała idea straciłaby sens. Jak więc bezpiecznie wymienić dane poprzez sieć? Idealnie byłoby gdyby dane moŝna było szyfrować jednym, a deszyfrować tylko innym kluczem. W takim przypadku przechwycenie klucza umoŝliwiającego szyfrowanie, nie wystarczyłoby, aby odszyfrować informacje. Jak się okazuje istnieje takie rozwiązanie i nazywa się szyfrowaniem asymetrycznym. 2. Idea pary kluczy publicznego i prywatnego Zasada działania szyfrowania asymetrycznego opiera się na idei dwóch kluczy, publicznego i prywatnego. Kluczem publicznym moŝna tylko szyfrować, a kluczem prywatnym moŝna deszyfrować. Jak wskazują nazwy klucz prywatny powinien być dostępny tylko dla osoby, która moŝe czytać szyfrowane wiadomości, natomiast klucz publiczny moŝe być dostępny dla kaŝdego, kto zechce zaszyfrować informacje. Idea szyfrowania asymetrycznego opiera się na złoŝoności danych działań matematycznych względem działań do nich odwrotnych. PomnoŜenie dwóch duŝych liczb pierwszych jest duŝo mniej wymagające obliczeniowo, niŝ uzyskanie czynników z tak uzyskanego iloczynu. Weźmy dwie 128-bitowe liczby pierwsze, przeciętny komputer w ciągu niespełna sekundy dokona mnoŝenia takich liczb i zwróci liczbę 256-bitową. Odwrócenie działania, czyli uzyskanie z liczby 256-bitowej dwóch liczb 128-bitowych, będzie duŝo bardziej wymagające. Klucz publiczny moŝe być właśnie tak powstałą liczbą 256-bitową, natomiast klucz prywatny dwiema liczbami 128-bitowymi, z których powstał klucz publiczny. Przykładowo rozłoŝenie na czynniki pierwsze liczby 15 jest proste: 3 5, natomiast liczba 91723948197324 sprawi juŝ trochę więcej kłopotu, tym bardziej liczba 155- czy 200-cyfrowa. RozłoŜenie liczby na czynniki pierwsze składa się z pewnej ilości kroków, która to ilość zwiększa się wykładniczo wraz ze wzrostem wielkości liczby. Oznacza to, ze jeśli liczba jest wystarczająco 2

duŝa, jej faktoryzacja moŝe zająć lata. Najbardziej istotne jest to, Ŝe klucz deszyfrujący (prywatny) znacząco róŝni się od klucza szyfrującego (publicznego) oraz Ŝe dla odpowiednio długiego klucza publicznego nie jest moŝliwe, w rozsądnym czasie, wygenerowanie klucza prywatnego. 3. Standard OpenPGP i jego implementacje Wraz z rozwojem Internetu oraz związanych z nim niebezpieczeństw i brakiem prywatności, szyfrowanie przesyłanych danych nabrało szczególnego znaczenia. W 1991 roku Phil Zimmerman zapoczątkował projekt PGP - program umoŝliwiający szyfrowanie i cyfrowe podpisywanie wszelkiego rodzaju dokumentów elektronicznych. PGP umoŝliwiał bezpieczną wymianę oraz autentykację wszelkiego rodzaju dokumentów elektronicznych. Początkowo był dostępny wraz kodem źródłowym, począwszy jednak od wersji 5.0 stał się oprogramowaniem zamkniętym i komercyjnym. Z początkiem 1997 roku została powołana w ramach IETF (Internet Engineering Task Force) grupa, która zdefiniowała otwarty standard szyfrowania poczty elektronicznej z wykorzystaniem kryptografii klucza publicznego, bazując na zamkniętym programie PGP i zapewniając kompatybilność z nim. Tak powstał standard OpenPGP, opisany w dokumencie RFC 2440. Określa on wzorcowe formaty zaszyfrowanych wiadomości i podpisów. Od tej pory praktycznie kaŝdy moŝe stworzyć własną implementację standardu i wymieniać informacje z uŝytkownikami innych, jak choćby PGP. Najpopularniejszą otwartą implementacją protokołu OpenPGP jest Gnu Privacy Guard (GPG). Choć oferuje nieco mniejsze moŝliwości niŝ komercyjny PGP, znakomicie nadaje się do zastosowań w małych firmach oraz wśród uŝytkowników domowych. 4. Instalacja GnuPG i narzędzi wspomagających Gnu Privacy Guard w wersji w przygotowanej na platformę Windows moŝna pobrać ze strony projektu http://www.gpg4win.org/. W pakiecie oprócz GnuPG znajduje się kilka aplikacji ułatwiających korzystanie z niego: GPGee rozszerzenia systemowego menu podręcznego WinPT narzędzie do zarządzania kluczami Proces instalacji nie sprawia kłopotu. Jednak aby móc korzystać z narzędzi w powłoce systemowej naleŝy dodać ich lokalizację do zmiennej systemowej PATH. W tym celu przejdźmy do Panel sterowania -> System -> Zaawansowane -> Zmienne środowiskowe -> Zmienne systemowe 3

Rys. 1 Ustawianie zmiennej systemowej PATH. Jeśli wszystko wykonaliśmy jak naleŝy, otwórzmy powłokę systemową Start -> Uruchom -> cmd.exe. Po wpisaniu: gpg --version powinniśmy ujrzeć numer wersji zainstalowanego GPG oraz wspierane algorytmy kryptograficzne. MoŜemy juŝ więc rozpocząć właściwą pracę z GnuPG. Rys. 2 Wynik wywołania polecenia gpg version. 4

5. Generowanie kluczy Kiedy utworzymy parę kluczy, zarówno publiczny jak i prywatny będą przechowywane na dysku naszego komputera. Stwarza to pewne ryzyko kaŝdy kto uzyska dostęp do naszego komputera moŝe zdobyć nasz klucz prywatny i odszyfrować nasze wiadomości lub podszyć się pod nas. Próba zapamiętania klucza w pamięci równieŝ skazana jest na niepowodzenie jest on po prostu bardzo długi. Praktycznym rozwiązaniem tego problemu jest zaszyfrowanie klucza prywatnego hasłem. Przy kaŝdej próbie uŝycia klucza prywatnego gpg zapyta o nie, a po poprawnym podaniu zdeszyfruje klucz w pamięci i skorzysta z niego. NaleŜy dbać by hasło miało odpowiednią długość i złoŝoność na pewno złym pomysłem będzie uŝywanie haseł słownikowych. Zaleca się hasła zawierające małe i duŝe litery, cyfry oraz znaki specjalne o długości conajmniej ośmiu znaków. Aby utworzyć parę kluczy, w powłoce systemowej wpiszmy: gpg --gen-key Zostaniemy poproszeni o wybranie rodzaju klucza. Wybierzmy domyślny DSA and Elgamal. Następne pytanie dotyczy długości klucza. W tym miejscu równieŝ zaleca się wybranie wartości domyślnej. Wartość ta powinna być kompromisem krótszy klucz łatwiej złamać, dłuŝszy klucz będzie wymagał więcej czasu na kaŝdą operację, która go wykorzystuje. Wzrost mocy obliczeniowej komputerów oraz rozwój badań w dziedzinie kryptoanalizy powoduje, Ŝe wiele algorytmów, uwaŝanych niegdyś za niemoŝliwe do złamania w krótkim czasie, zostało skompromitowanych w ostatnich latach. Na przykład w ostatnim czasie złamano algorytm RSA o długości klucza 576 bitów (100 maszyn w 3 miesiące). Kolejne pytanie dotyczy długości czasu waŝności klucza. Ustawienie wygaśnięcia klucza po pewnym czasie zwiększa nieco bezpieczeństwo po przekroczeniu daty waŝności nie będzie moŝna z niego korzystać. WiąŜe się z tym pewna niedogodność będziemy musieli rozesłać nasz nowy klucz publiczny wszystkim, którzy dotychczas korzystali ze starego. 5

Wybierzmy więc opcję 0 = key does not expire klucz nie wygasa nigdy. Rys. 3 Generowanie pary kluczy. Teraz program zapyta nas o naszą toŝsamość i adres email. Są to informacje, które pozwolą innym zidentyfikować do kogo naleŝy klucz. Jeśli troszczymy się o naszą prywatność, nie musimy podawać naszych prawdziwych danych, zamiast tego moŝemy wybrać nazwę unikalną na tyle, by nasz klucz nie został pomylony z naleŝącym do kogoś innego. MoŜemy równieŝ uzupełnić pole komentarz lub pozostawić je puste. Ostatnia rzecz o jaką zapyta proces generowania klucza jest hasło, którym będziemy go chronić. Podczas podawania hasła nie drukuje się ono na ekranie (ani Ŝadne inne znaki sygnalizujące wpisywanie). Po podaniu danych rozpoczyna się właściwy proces generowania klucza. Aby był on wygenerowany w sposób losowy potrzebna jest duŝa ilość entropii. Podczas trwania tego procesu zaleca się by intensywnie wykorzystywać dysk twardy lub aktywnie przeglądać strony internetowe. Aby dostarczyć odpowiednią entropię moŝna włączyć kopiowanie duŝego pliku, z róŝnymi 6

odstępami czasowymi naciskać klawisze i losowo przesuwać kursor myszy. Po wygenerowaniu nasza para kluczy znajduje się w katalogu: C:\Documents and Settings\%USERNAME%\Dane aplikacji\gnupg Klucz publiczny to pubring.gpg a prywatny secring.gpg. Ten drugi naleŝy szczególnie chronić. Skopiujmy go juŝ teraz na zewnętrzny nośnik i umieśćmy w bezpiecznym miejscu. Wygenerowane klucze naleŝy po zakończonych zajęciach bezwzględnie usunąć z komputerów laboratoryjnych! Alternatywnie, tą samą operację generowania klucza moŝemy wykonać korzystając z graficznej nakładki do zarządzania kluczami, która instaluje się wraz z pakietem Gpg4win, to jest WinPT. Odnajdźmy ją w menu Start i uruchommy. Aplikacja uruchamia się w zasobniku systemowym. Przy pierwszym uŝyciu, jeśli nie istnieją jeszcze Ŝadne klucze zostaniemy zapytani czy chcemy taką parę stworzyć. Wybierzmy wtedy Generate a GnuPG key pair. Tak jak poprzednio zostaniemy poproszeni o podanie naszej toŝsamości, adresu email oraz hasła chroniącego klucz prywatny. Ponadto zostaniemy zapytani czy chcemy utworzyć kopię zapasową świeŝo wygenerowanych kluczy, a jeśli tak, program pyta o ich docelową lokalizację. Nie mamy wpływu na waŝność, długość oraz rodzaj klucza zostaną ustawione sensowne wartości domyślne. W razie potrzeb moŝemy wygenerować klucz w trybie Expert (menu w WinPT, Key -> New -> Expert) i uzyskać dostęp do wspomnianych wyŝej opcji klucza. Rys. 4 Generowanie klucza z nakładki WinPT w trybie Expert. 7

6. Eksportowanie oraz importowanie kluczy Wygenerowany klucz publiczny jest bezuŝyteczny jeśli nie dostarczymy go osobom, z którymi chcemy wymieniać szyfrowane informacje. MoŜemy więc umieścić go na naszej stronie internetowej lub wysłać pocztą elektroniczną. Jeszcze innym, a prawdopodobnie najpraktyczniejszym, sposobem jest umieszczenie klucza na specjalnym serwerze, który słuŝy do ich przechowywania. By wyeksportować klucz do formatu tekstowego uŝyjemy w konsoli systemowej polecenia: gpg --armor --output "klucz.txt" --export "NAZWA" gdzie w miejsce nazwa wpisujemy adres email wpisany przy generacji klucza lub naszą 'nazwę' która identyfikuje klucz (np. imię i nazwisko). MoŜemy takŝe podać część nazwy jeśli jednoznacznie wskazuje ona klucz (np. jedynie nazwa domeny adresu email jeśli jest unikatowa w zbiorze kluczy). Tak spreparowany klucz jest gotowy do publikowania. WaŜne jest by umieszczać go w całości (razem z komentarzami, od początkowego do końcowego): -----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK----- 8

Rys. 5 Wyeksportowany klucz w postaci znaków ASCII. By dokonać tego samego z nakładki WinPT naleŝy w oknie głównym zaznaczyć interesujący nas klucz, a następnie wybrać bądź to z menu Edit -> Copy bądź z menu podręcznego (prawy klawisz myszy) Copy Key to Clipboard. Wybrany klucz publiczny znajduje się w schowku. Serwery kluczy potrafią przechowywać klucze publiczne i udostępniać je kaŝdemu, kto o nie poprosi. Jest to rozwiązanie wygodne, zwłaszcza jeśli chcemy rozdystrybuować klucz większej liczbie osób. Istnieje wiele serwerów kluczy, jednak nie musimy wysyłać naszego klucza do kaŝdego z nich. Zdecydowana większość, a przynajmniej popularne serwery, synchronizuje się ze sobą. W efekcie po pewnym czasie odpytanie któregokolwiek z nich o wyeksportowany klucz zwróci spodziewany wynik. Procedura wyeksportowania klucza na serwer jest prosta. W konsoli systemowej wystarczy w tym celu uŝyć polecenia: gpg --keyser SERWER_KLUCZY --send-keys ID_KLUCZA gdzie ID_KLUCZA to jego identyfikator, a SERWER_KLUCZY jest nazwą domenową lub adresem wybranego serwera kluczy. 9

Rys. 6 Eksport klucza publicznego do schowka w programie WinPT. Listę wszystkich kluczy wraz z identyfikatorami uzyskamy wywołując: gpg --list-keys Rys. 7 Listowanie wszystkich dostępnych kluczy. W ramce ID klucza. 10

Popularne serwery kluczy pgp.mit.edu wwwkeys.eu.pgp.net keyserver.veridis.com keyserver.pgp.com Rys. 8 Eksport klucza na serwer kluczy. Operację eksportu klucza na serwer moŝna dokonać takŝe za pomocą interfejsu WinPT. W tym celu otwórzmy menu podręczne na interesującym nas kluczu i wybierzmy pozycję Send to keyserver i dowolny serwer z listy. Jej zawartość moŝna modyfikować w menu Keyserver. Rys. 9 Eksport klucza na serwer w interfejsie WinPT. 11

Jeśli chcemy przesłać jakiejś osobie zaszyfrowaną wiadomość, to takŝe musimy zdobyć jej klucz publiczny. Jeśli dysponujemy juŝ takim, zapisanym w pliku tekstowym to by go zaimportować do naszego GPG wystarczy zrobić: gpg --import zapisany_klucz_publiczny.txt Naturalnie naleŝy podać poprawną ścieŝkę do pliku lub musimy znajdować się w katalogu gdzie jest klucz. Co ciekawe w pliku zawierającym klucz mogą znajdować się takŝe inne dane wczytany zostanie jedynie blok pomiędzy znacznikami. ----- BEGIN PGP PUBLICKEY BLOCK----- ----- END PGP PUBLICKEY BLOCK----- Rys. 10 Import klucza zapisanego w pliku tekstowym. Te same operacje wykonamy z nakładki WinPT. Odpowiednią opcję słuŝącą do importu obcego klucza publicznego z pliku tekstowego znajdziemy w menu Key -> Import. Tutaj mamy jeszcze moŝliwość zaimportować klucz wprost czyjejś witryny www wybierzmy wtedy Key -> Import via HTTP. Rys. 11 Import klucza zapisanego w pliku tekstowym z poziomu WinPT. 12

Importowanie klucza z serwerów jest znacznie wygodniejsze, nie wymaga uprzedniego dostarczenia klucza w formacie tekstowym. Najpierw musimy zlokalizować interesujący nas klucz. ZałóŜmy, Ŝe chcielibyśmy nawiązać bezpieczną korespondencję z Janem Nowakiem. Odnajdźmy najpierw jego klucz: gpg --keyserver SERWER_KLUCZY --search-key adres_email Gdy odnajdziemy właściwy klucz i poznamy jego ID, moŝemy go zaimportować: gpg --keyserver SERWER_KLUCZY --recv-key ID_KLUCZA Rys. 12 Wyszukanie i import klucza z serwera. Ta sama operacja w nakładce WinPT sprowadza się do wywołania menu Keyserver. Uruchomi się wtedy nowe okienko w którym moŝemy wpisać szukany przez nas klucz. Po odnalezieniu na serwerze zostanie utworzone nowe okienko, z którego moŝemy dokonać juŝ importu. Popularne serwery kluczy: pgp.mit.edu subkeys.pgp.net wwwkeys.eu.pgp.net keyserver.pgp.com keyserver.veridis.com 13

Rys. 13 Wyszukanie i import klucza z serwera za pomocą WinPT. Jest jeszcze jedna czynność, którą powinniśmy wykonać po zaimportowaniu. Taki klucz domyślnie nie naleŝy do grupy zaufanych. Jeśli będziemy z niego korzystać, otrzymamy ostrzeŝenia, Ŝe jego autentyczność nie została potwierdzona. Jeśli jednak jesteśmy przekonani co do jego pochodzenia, to by pozbyć się ostrzeŝeń wystarczy ustawić odpowiedni poziom zaufania względem niego. W konsoli wpiszmy: gpg --edit-key NAZWA_KLUCZA Wejdziemy w tryb interaktywny. Wydajmy w nim polecenie: trust 14

Zostaniemy poproszeni o wybranie poziomu zaufania. Wybierzmy opcję przedostatnią, tj. 5 = I trust ultimately. Aby wyjść z trybu interaktywnego i zapisać wprowadzone zmiany wpiszmy: quit Alternatywnie ta sama czynność w WinPT polega na wybraniu klucza z listy, a po uruchomieniu na nim menu podręcznego wybraniu opcji Set implicit trust. Pełną funkcjonalność interaktywnego trust znajdziemy pod opcją Key edit w tym samym menu. Rys. 13 Ustawianie pełnego zaufania dla zaimportowanego klucza. 7. Podpisywanie i weryfikacja Dzięki OpenPGP otrzymujemy mechanizm weryfikacji poprawności i autorstwa istotnych dla nas danych. Wystarczy, Ŝe nadawca podpisze cyfrowo swoim kluczem prywatnym dane, których autentyczność sprawdzimy my, korzystając z jego klucza publicznego. Procedura wygląda następująco obliczania jest wartość funkcji mieszającej dla danego zestawu danych, następnie ta wartość jest szyfrowana kluczem prywatnym nadawcy. MoŜna ją zdeszyfrować tylko kluczem publicznym tego nadawcy. To upewnia nas o pochodzeniu. Po zdeszyfrowaniu moŝemy porównać wartość funkcji mieszającej nadawcy z wynikiem takiego haszowania u nas. Jeśli są zgodne, to znaczy Ŝe dane nie uległy zmianie. Mamy wtedy juŝ całkowitą pewność, Ŝe to co otrzymaliśmy, po przejściu przez kanał komunikacyjny, zgadza się z oryginałem. 15

Aby podpisać plik wystarczy w konsoli wpisać: gpg --clearsign PLIK Zostanie do tego uŝyty nasz domyślny klucz. Program poprosi nas o podanie naszego hasła do klucza, a wynikiem jego działania będzie plik PLIK.asc. MoŜe on wyglądać następująco: Rys. 14 Podpisywanie wiadomości wybranym kluczem. Listing wiadomości. JeŜeli chcemy uŝyć do podpisu innego klucza niŝ nasz domyślny, wtedy dołączmy parametr --localuser. Jako argument przyjmuje nazwę wybranego klucza, tj. adres email wpisany przy generacji klucza, imię i nazwisko lub identyfikator. gpg --local-user NAZWA --clearsign PLIK PowyŜsze sposoby sprawdzają się kiedy podpisujemy pliki tekstowe. Jednak taka modyfikacja jak dodanie popisu do pliku binarnego uszkodzi go. Wtedy powinniśmy stosować podpis cyfrowy w osobnym pliku: gpg --output PLIK_PODPISU.sig --detach-sign PLIK Utworzony podpis będzie w formacie binarnym, nieczytelnym dla człowieka. Jeśli chcemy by podpis był w formacie pliku ASCII dodajmy przełącznik --armor 16

Rys. 15 Podpisywanie pliku binarnego. Podpis w formacie tekstowym w osobnym pliku. Weryfikacja popisanego pliku jest równieŝ prosta. JeŜeli posiadamy klucz publiczny osoby podpisującej, to po wpisaniu w konsoli: gpg --verify PODPIS (lub plik tekstowy z załączonym podpisem) otrzymamy potwierdzenie autentyczności, jeśli plik nie uległ zmianie. Jeśli nie posiadamy w naszym zbiorze klucza publicznego osoby podpisującej, musimy go wcześniej zaimportować. Wszystkie operacje podpisywana i weryfikacji moŝna uprościć stosując rozszerzenie powłoki systemowej Windows, GPGee. Dzięki niemu wystarczy wybrać odpowiednią opcję z menu kontekstowego pliku. Prześledźmy proces podpisywania (rys. 17, 19) i weryfikacji pliku (rys. 18, 20). 17

Rys. 16 Podpisywanie pliku binarnego. Weryfikacja podpisu. Rys. 17 Podpisywanie pliku. Rys. 18 Weryfikacja podpisu. 18

Rys. 19 Podpisywanie pliku. Zaznaczona opcja podpisu w osobnym pliku. tekstowym. Rys. 20 Weryfikacja podpisu. NaleŜy pamiętać o uprzednim zaimportowaniu klucza publicznego. 19

8. Szyfrowanie i deszyfrowanie Standard OpenPGP zapewnia wysoką ochronę prywatności umoŝliwiając szyfrowanie wiadomości i danych kryptografią asymetryczną. Plik zaszyfrujemy z konsoli w następujący sposób: gpg --recipient ODBIORCA --output PLIK.gpg --encrypt PLIK Nowo powstały plik binarny PLIK.gpg zawiera zaszyfrowane dane kluczem publicznym odbiorcy. Tylko on będzie mógł do zdeszyfrować swoim kluczem prywatnym. Zaszyfrowany plik wynikowy moŝe być równieŝ tekstowy, jeśli jego rozmiar nie jest zbyt wielki: gpg --armor --recipient ODBIORCA --output PLIK.asc --encrypt PLIK Rys. 21 Szyfrowanie pliku. Postać tekstowa po zaszyfrowaniu. Czasem chcemy przekazać szyfrowaną wiadomość więcej niŝ jednej osobie. Stwarza to pewien problem, gdyŝ dzielenie klucza prywatnego nie wchodzi w rachubę, a szyfrowanie dla kaŝdego z osobna nieco kłopotliwe. GnuPG pozwala nam jednak zakodować wiadomość dla więcej niŝ jednego odbiorcy jednocześnie. Wtedy jeden z ich kluczy prywatnych wystarcza do rozszyfrowania, więc kaŝdy moŝe to zrobić indywidualnie. Składnia tej operacji róŝni się jedynie dodaniem większej ilości odbiorców --recipient : gpg --armor --recipient ODBIORCA_1 --recipient ODBIORCA_2 --output PLIK.asc -- encrypt PLIK Teraz spróbujmy taki zaszyfrowany plik odkodować. Jeśli był on adresowany do nas, musimy posiadać odpowiedni klucz prywatny. 20

PoniŜsze polecenie : gpg --decrypt-files PLIK.gpg spowoduje zdekodowanie zaszyfrowanego pliku. Po podaniu hasła do klucza plik rozkodowany plik zostanie umieszczony w bieŝącym katalogu pod nazwą PLIK. Jeśli szyfrowany plik był wiadomością tekstową, moŝna uŝyć alternatywnie polecenia: gpg --decrypt PLIK.asc Nie wypakuje ono pliku z zaszyfrowanej postaci, lecz wyświetli zawartość na ekranie. Rys. 22 Deszyfrowanie pliku. Podobnie jak przy podpisywaniu tak i operacje szyfrowania/ deszyfrowania moŝna przeprowadzić za pomocą rozszerzeń powłoki GPGee. Proces jest bardzo podobny, wystarczy tylko zmienić uŝywane opcje. 21

9. Sieć zaufania (web of trust) Posiadanie kluczy publicznych daje moŝliwość weryfikacji nadawcy przesyłki. Otrzymując podpisanego maila od Jana Kowalskiego mamy pewność, Ŝe to właśnie Jan Kowalski jest nadawcą przesyłki. Jest jednak pewien szczegół, który do tej pory pomijaliśmy. ZałóŜmy następujący scenariusz. Dowolna osoba generuje parę kluczy. Tworzy e-maila i w polu nadawca wpisuje Jan Kowalski, po czym podpisuje przesyłkę wygenerowanym kluczem prywatnym i wysyła go do nas. Udostępnia wygenerowany niedawno klucz publiczny na serwerze kluczy. My odbieramy tak spreparowanego maila. Nieświadomi niebezpieczeństwa pobieramy klucz publiczny z serwera, aby sprawdzić autentyczność nadawcy. Oczywiście weryfikacja przebiega pomyślnie, choć nie wiemy, Ŝe zostaliśmy oszukani. Standard OpenPGP definiuje, a GnuPG implementuje, rozwiązanie tego problemu. Cała idea opiera się na podpisywaniu kluczy publicznych i przechodniości zaufania. Budowanie sieci zaufania musi zacząć się od minimum dwóch osób, które znają identyfikatory swoich kluczy. Niech takimi osobami będą osoba A i osoba B. ZałóŜmy, Ŝe osoba C równieŝ pragnie, aby osoby do których wysyła maile mogły sprawdzić czy faktycznie pochodzą od niej. Oczywiście w tym celu komendą gpg gen-key generuje klucz prywatny i publiczny. Jednak ma świadomość, Ŝe to nie wystarczy, aby odbiorcy jego poczty mogli być pewni jej autentyczności. W takim wypadku prosi osobę A, aby podpisała jego klucz publiczny swoim. Następnie wysyła maila do osoby B. Osoba B, pobiera z serwera klucz osoby C i widzi, Ŝe klucz jest podpisany przez osobę A. A ufa B, więc moŝe takŝe zaufać sygnowanym przez niego przesyłkom. Tym sposobem jeśli C wyśle maila do dowolnej osoby, która ufa kluczowi osoby A moŝe liczyć na zaufanie takŝe przesyłkom podpisanych pośrednio przez niego. Teraz B moŝe równieŝ złoŝyć podpis cyfrowy na kluczu C, dzięki czemu osoby, które ufają kluczowi B będą takŝe mogły zaufać kluczowi C. Jak widać sieć zaufania jest zdecentralizowana i opiera się na relacjach między kluczami. Relacja moŝe być jednokierunkowa (osoba A podpisuje klucz osoby B) lub dwukierunkowa (osoby A i B wzajemnie popisują swoje klucze). KaŜdy klucz zawiera tzw. sygnaturę. Sygnatura jest skrótem (np. MD5 lub SHA) klucza. Jeśli sygnatura pasuje do klucza weryfikacja wiadomości przebiega pozytywnie. Sygnatury tworzą ścieŝki zaufania, dzięki którym moŝliwe staje się budowanie sieci zaufania. W poprzednim przykładzie B zaufał kluczowi C, poniewaŝ po ścieŝce zaufania zbudowanej przez A, był pewny autentyczności klucza publicznego, który pobrał z serwera. Idealnie jest, kiedy kaŝde podpisanie kluczy przebiega w sposób dwukierunkowy, dzięki czemu sieć zaufania moŝe znacznie się rozszerzać. 22

Aby w programie GPG podpisać klucz naleŝy przejść w tryb edycji. Przed podpisaniem klucza zaleca się sprawdzenie jego odcisku (fingerprint) i skontaktowanie się z właścicielem w celu jego weryfikacji. Jeśli fingerprint jest prawidłowy moŝna przystąpić do podpisania klucza publicznego danej osoby swoim kluczem prywatnym. W trakcie podpisywania zostaniemy poproszeni o wpisanie hasła klucza, którego uŝywamy do podpisania. Teraz moŝna odesłać właścicielowi jego klucz wraz z naszym podpisem i poprosić o podpisanie naszego klucza. 10. Bibliografia OpenPGP Message Format. http://www.ietf.org/rfc/rfc2440.txt Dokumentacja GnuPG. http://www.gnupg.org/ http://pl.wikipedia.org/wiki/kryptografia SPKI Certificate Theory. http://www.ietf.org/rfc/rfc2693.txt Lista dysuksyjna Enigmail. http://mozdev.org/mailman/listinfo/enigmail/ MIME Security with OpenPGP. http://www.ietf.org/rfc/rfc3156.txt http://www.openpgp.org/ http://www.philzimmermann.com 23