GnuPG. Opis rozwiązania i zastosowanie.
Transkrypt
GnuPG. Opis rozwiązania i zastosowanie.
GnuPG. Opis rozwiązania i zastosowanie. Bezpieczeństwo systemów komputerowych. Temat seminarium: GnuPG. Opis rozwiązania i zastosowanie Autor: Tomasz Pawlak GnuPG. Opis rozwiązania i zastosowanie. Seminarium 2004 – PP, SKiSR 1 GnuPG. Opis rozwiązania i zastosowanie. Plan prezentacji 1. 2. 3. 4. 5. 6. Historia i krótki opis programu Opis rozwiązania i algorytmy Zastosowanie i przykłady zastosowania Integracja GnuPG z klientem poczty Podsumowanie Bibliografia Seminarium 2004 – PP, SKiSR 2 GnuPG. Opis rozwiązania i zastosowanie. GNU Privacy Guard (GnuPG) jest narzędziem służącym do zabezpieczenia komunikacji oraz przechowywanych danych. Jest odpowiednikiem programu PGP. Może być używany do szyfrowania danych oraz tworzenia podpisów cyfrowych. GPG jest kompatybilny z Internetowym standardem OpenPGP opisanym w RFC2440. Seminarium 2004 – PP, SKiSR 3 GnuPG. Opis rozwiązania i zastosowanie. Twórcą PGP jest Philip Zimmerman. Stworzył on PGP w Stanach Zjednoczonych Ameryki w 1991r . Wersja 1.0.0 GnuPG pojawiła się 7 września 1999. GnuPG w najnowszej wersji (1.2.4)można pobrać z serwera ftp://ftp.gnu.org/gccrypt oraz strony producenta http://www.gnupg .org . Seminarium 2004 – PP, SKiSR 4 GnuPG. Opis rozwiązania i zastosowanie. GnuPG jest darmowym programem na licencji GNU. W odróżnieniu do PGP, nie korzysta on z opatentowanego algorytmu IDEA. Domyślnymi algorytmami wykorzystywanymi przez GnuPG są DSA i ElGamal. Ponadto program wspiera algorytmy: AES, 3DES, Blowfish, CAST5, Twofish oraz szyfry MD5, RIPEMD/160, SHA-1, SHA-256, SHA-384 i SHA-512. Dostępny jest również algorytm kompresji ZIP. Seminarium 2004 – PP, SKiSR 5 GnuPG. Opis rozwiązania i zastosowanie. Celem przedsięwzięcia jest zapewnienie Europejczykom wiarygodnego i nie zawodnego sposobu ochrony swoich cyfrowych danych. Badania i rozwój GnuPG jest finansowany ze środków Niemieckiego Ministerstwa Finansów i Technologii. Docelowo GnuPG ma być ma być dostępny w tylko w wersji odpłatnej. Seminarium 2004 – PP, SKiSR 6 GnuPG. Opis rozwiązania i zastosowanie. Jak do tej pory GnuPG został przetłumaczony jak do tej pory na 27 języków, między innymi na Polski: American English Bela-Russian (be) Catalan (ca) Czech (cs) Danish (da)[*] Dutch (nl)[*] Esperanto (eo)[*] Estonian (et) Finnish (fi)[*] French (fr) Galician (gl) German (de) Greek (el) Hungarian (hu) Indonesian (id) Italian (it) Japanese (ja) Polish (pl)[*] Brazilian Portuguese (pt_BR)[*] Portuguese (pt)[*] Romanian (ro) Russian (ru) Slovak (sk) Spanish (es) Swedish (sv)[*] Traditional Chinese (zh_TW)[*] Turkish (tr) *Nie wszystkie komunikaty są wyświetlane w danym języku Seminarium 2004 – PP, SKiSR 7 GnuPG. Opis rozwiązania i zastosowanie. GnuPG jest dostępny na wiele platform systemowych i sprzętowych: GNU/Linux (x86, alpha, mips, sparc64, m68k, powerPC) FreeBSD (x86) NetBSD OpenBSD Windows 95/98/NT/2000/Me/XP (x86) PocketPC MacOs Oraz AIX v4.3, BSDI v4.0.1 with i386, HPUX v9.x, v10.x and v11.0 with HPPA CPU, IRIX v6.3 with MIPS R10000 CPU, MP-RAS v3.02, OSF1 V4.0 with Alpha CPU, OS/2 version 2, SCO UnixWare/7.1.0, SunOS, Solaris on Sparc and x86, USL Unixware v1.1.2 Seminarium 2004 – PP, SKiSR 8 GnuPG. Opis rozwiązania i zastosowanie. Zagrożenia dla informacji w sieci telekomunikacyjnej Seminarium 2004 – PP, SKiSR 9 GnuPG. Opis rozwiązania i zastosowanie. Kryptografia symetryczna to taki rodzaj szyfrowania, w którym tekst jawny ulega przekształceniu na tekst zaszyfrowany za pomocą pewnego klucza, natomiast do odszyfrowania jest niezbędna znajomość tego samego klucza oraz algorytmu zastosowanego do szyfrowania. Operacje szyfrowania i deszyfrowania są takie same. Bezpieczeństwo zależy od tajności klucz. Kryptografia asymetryczna jest to taki rodzaj szyfrowania, w którym wiadomość jest szyfrowana przy pomocy klucza publicznego, a deszyfracja kryptogramu może nastąpić tylko z użyciem klucza prywatnego. Szyfrowanie i deszyfrowanie są operacjami odwrotnymi. Bezpieczeństwo zależy tylko od tajności klucza prywatnego. W obu przypadkach jawność algorytmu szyfrowania nie obniża poziomu bezpieczeństwa, wręcz przeciwnie nawet go podnosi. Seminarium 2004 – PP, SKiSR 10 GnuPG. Opis rozwiązania i zastosowanie. Algorytm asymetryczny Seminarium 2004 – PP, SKiSR 11 GnuPG. Opis rozwiązania i zastosowanie. Algorytm asymetryczny na przykładzie RAS (1) W algorytmie RAS ciąg bitów podawanych na wejście przekształcenia szyfrującego traktowany jest jako duża liczba całkowita, rzędu 10100. Rolę klucza prywatnego pełni trójka dużych liczb całkowitych SK=(d,p,q), rolę klucza publicznego para liczb PK=(e,N). Liczby p i q są dużymi liczbami pierwszymi. Liczba N jest iloczynem liczb p i q, N = p*q. Liczby e i d związane są zależnością: e*d = 1 mod ((p-1)(q1)). Algorytm jest przeznaczony do szyfrowania i odszyfrowania nbitowych bloków danych, gdzie n oznacza długość liczby N. Blok zaszyfrowany ma taką samą długość jak blok wejściowy, tzn. n bitów. Przyjęta obecnie za bezpieczną i powszechnie używana wartość parametru n wynosi 1024 bity. Seminarium 2004 – PP, SKiSR 12 GnuPG. Opis rozwiązania i zastosowanie. Algorytm asymetryczny na przykładzie RAS (2) Przekształcenia szyfrujące jest proste obliczeniowo i polega na podniesieniu liczby reprezentującej wiadomość M do potęgi e określonej przez klucz publiczny, modulo liczba N stanowiąca drugi element klucza publicznego. Wykonanie przekształcenia odwrotnego, tzn. odtworzenie wiadomości M na podstawie znajomości szyfrogramu C i klucza publicznego PK = (e,N), bez znajomości klucza prywatnego SK = (d,p,q), wydaje się być obliczeniowo niemożliwe przy aktualnym stanie techniki obliczeniowej. Seminarium 2004 – PP, SKiSR 13 GnuPG. Opis rozwiązania i zastosowanie. Algorytm asymetryczny na przykładzie RAS (3) Złamanie algorytmu polegające na odtworzeniu klucza prywatnego na podstawie znajomości odpowiadającego mu klucza publicznego sprowadza się we wszystkich znanych atakach do rozkładu liczby N na czynniki pierwsze p i q. Problem ten jest trudny obliczeniowo i dla używanych obecnie wielkości liczby N (ok. 10300) wydaje się być niewykonalnym. W kwietniu tego roku udało się złamać 576-bitowy szyfr RAS576. Trwało to 3 miesiące i wykorzystano do tego sieć złożoną ze 100 komputerów. RAS-576 rekomendowany jest do zabezpieczania transakcji internetowych oraz komunikacji bezprzewodowej. Obecnie próbom poddawany jest szyfr RAS-640. Seminarium 2004 – PP, SKiSR 14 GnuPG. Opis rozwiązania i zastosowanie. Algorytm asymetryczny na przykładzie RAS (4) Rodzaj i koszt komputera zastosowanego do "złamania" klucz Czas potrzebny do rozszyfrowania klucza o długości: 100 bitów 500 bitów 1.000 bitów Komputer PC z procesorem Pentium P90 i 16MB pamięci operacyjnej 60 dni 105 lat ??? Najnowocześniejszy komputer wieloprocesorowy dostępny w handlu 3 dni 6 000 lat 1011 lat Specjalny superkomputer wykonywany na indywidualne zamówienie, np. agencji 10 h 500 lat 108 lat Superkomputer z rozbudowanym systemem procesorowym (jak na przykład BigBlue) 60 min. 6 lat 6 000 000 lat Tabela przedstawia czas potrzebny do rozszyfrowania różnych kluczy na różnych komputerach. Dane z 1998 roku. Seminarium 2004 – PP, SKiSR 15 GnuPG. Opis rozwiązania i zastosowanie. Weryfikacja pakietu instalacyjnego gpg --verify gnupg-w32cli-1.2.4.zip.sig gnupg-w32cli-1.2.4.zip gpg: Signature made 12/23/03 22:17:34 using DSA key ID 57548DCD gpg: Good signature from "Werner Koch (gnupg sig) <[email protected]>" md5sum gnupg-w32cli-1.2.4.zip bb568fe26abbe045d91f95ae0324eab2 gnupg-w32cli-1.2.4.zip Tworzenie i usuwanie klucza Utworzenie klucza publicznego i prywatnego: gpg --gen-key Usunięcie klucza z systemu: gpg --delete-key KEY_ID gpg --delete-secret-and-public-key KEY_ID Seminarium 2004 – PP, SKiSR 16 GnuPG. Opis rozwiązania i zastosowanie. Eksport kluczy do pliku Eksport klucza publicznego do pliku binarnego: gpg -o mypub.key --export KEY_ID Eksport klucza do pliku w formacie ASCII: gpg -a -o mypub.key --export KEY_ID gpg -a -o mysec.key --export-secret-key KEY_ID Import klucza z pliku gpg --import JanKowalski.key gpg: keyring `c:\gnupg\secring.gpg' created gpg: keyring `c:\gnupg\pubring.gpg' created gpg: c:\gnupg\trustdb.gpg: trustdb created gpg: key 1FBF3AB1: public key „Jan Kowalski (Opis) <[email protected]>" imported gpg: Total number processed: 1 gpg: imported: 1 Seminarium 2004 – PP, SKiSR 17 GnuPG. Opis rozwiązania i zastosowanie. Serwer kluczy publicznych Przeszukanie serwera w poszukiwaniu klucza: gpg --keyserver subkeys.pgp.net --search-keys KLUCZ Pobranie klucza z serwera kluczy: gpg --keyserver subkeys.pgp.net --recv-keys KLUCZ Wysłanie klucza publicznego na serwer: gpg --keyserver subkeys.pgp.net --send-keys KLUCZ Uwierzytelnienie klucza publicznego Podpisanie obcego klucza publicznego swoim kluczem prywatnym: gpg --sign-key KLUCZ_PUB Wyświetlenie listy kluczy wraz z listą uwierzytelnień: gpg --check-sigs c:/gnupg\pubring.gpg -------------------pub 1024D/57548DCD 1998-07-07 Werner Koch (gnupg sig) <[email protected]> sig!3 57548DCD 2003-12-24 Werner Koch (gnupg sig) <[email protected]> sig!2 1EFF3AB1 2004-05-04 Tomasz Pawlak (Pila, Poland) <[email protected]> Seminarium 2004 – PP, SKiSR 18 GnuPG. Opis rozwiązania i zastosowanie. Uwierzytelnienie obcego klucza publicznego pub 1024D/428FFE34 created: 2004-05-05 expires: never trust: -/q sub 1024g/007BA997 created: 2004-05-05 expires: never (1). Kowalski (Opis) <[email protected]> pub 1024D/428FFE34 created: 2004-05-05 expires: never trust: -/q Primary key fingerprint: 6AA6 E98C E289 E0E4 58BE 319C 520E CF92 428F FE34 Kowalski (Opis) <[email protected]> How carefully have you verified the key you are about to sign actually belongs to the person named above? If you don't know what to answer, enter "0". (0) I will not answer. (default) (1) I have not checked at all. (2) I have done casual checking. (3) I have done very careful checking. Your selection? (enter '?' for more information): 3 Are you really sure that you want to sign this key with your key: " Balcerek () <[email protected]>”(7BCC6A1B) I have not checked this key at all. Really sign? yes You need a passphrase to unlock the secret key for user: " Balcerek () <[email protected]>” 1024-bit DSA key, ID 7BCC6A1B, created 2004-05-05 Seminarium 2004 – PP, SKiSR 19 GnuPG. Opis rozwiązania i zastosowanie. Szyfrowanie wiadomości Szyfruje wiadomość do pliku binarnego FILE.gpg: gpg –r KLUCZ_PUB –e FILE Szyfruje wiadomość do pliku ASCII FILE.asc: gpg –a –r KLUCZ_PUB –e FILE Szyfruje wiadomość do pliku ASCII output.file: gpg –a –o output.file –r KLUCZ_PUB –e FILE Szyfruje wiadomość z użyciem algorytmu symetrycznego ALGO: gpg --cipher-algo ALGO -c FILE Wyświetla informacje o programie m.in. wspierane algorytmy: gpg --version Deszyfrowanie wiadomości Deszyfruje zakodowany plik CoDeDFiLe, wynik umieszcza w file.txt: gpg –o file.txt --decrypt CoDeDFiLe Seminarium 2004 – PP, SKiSR 20 GnuPG. Opis rozwiązania i zastosowanie. Podpisywanie plików Podpisanie pliku FILE swoim kluczem prywatnym: gpg –s FILE Jak wyżej, wynik zapisany do pliku ASCII FILE.asc: gpg –a –s FILE Podpisany plik FILE zostanie zapisany w formacie ASCII do pliku output: gpg –a –o output –s FILE Utworzenie oddzielnego podpisu do pliku FILE w pliku FILE.sig: gpg –b FILE Weryfikacja podpisu Weryfikacja pliku z dołączonym podpisem: gpg --verify FILE Weryfikacja pliku podpisanego w osobnym pliku: gpg --verify plik.zip.sig plik.zip gpg: Signature made 05/05/04 08:44:52 using DSA key IDF3A149771 gpg: Good signature from „Kowalski <[email protected]>" gpg: checking the trustdb gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1 Seminarium 2004 – PP, SKiSR 21 GnuPG. Opis rozwiązania i zastosowanie. Zarządzanie kluczami Wyświetlenie wszystkich kluczy w systemie: gpg --list-keys Wyświetlenie kluczy do których zostanie dopasowana wartość KLUCZ: gpg --list-keys KLUCZ Wyświetlenie listy kluczy publicznych: gpg --list-public-keys Wyświetlenie listy kluczy prywatnych: gpg --list-secret-keys Wyświetlenie listy kluczy prywatnych wraz ze wszystkimi podpisami: gpg --list-sigs Wyświetlenie listy kluczy wraz z ich odciskiem palca: gpg --fingerprint Uruchomienie konsoli umożliwiającej operacje na KLUCZ’u: gpg --edit-key KLUCZ Seminarium 2004 – PP, SKiSR 22 GnuPG. Opis rozwiązania i zastosowanie. Integracja GnuPG z klientem poczty Enigmail Aby umożliwić szyfrowanie poczty w programie Enigmail należy zainstalować ze strony http://enigmail.mozdev. org/download.html odpowiednią wersje wtyczki. W menu Preferencje->Prywatność i zabezpieczenia>Enigmail należy podać scieżke do pliku wykonywalnego GnuPG. Seminarium 2004 – PP, SKiSR 23 GnuPG. Opis rozwiązania i zastosowanie. Wysłanie zakodowanej wiadomości Seminarium 2004 – PP, SKiSR 24 GnuPG. Opis rozwiązania i zastosowanie. Odebranie zakodowanej wiadomości Seminarium 2004 – PP, SKiSR 25 GnuPG. Opis rozwiązania i zastosowanie. Deszyfrowanie zakodowanej wiadomości Seminarium 2004 – PP, SKiSR 26 GnuPG. Opis rozwiązania i zastosowanie. Szyfrowanie wiadomości i załącznika Seminarium 2004 – PP, SKiSR 27 GnuPG. Opis rozwiązania i zastosowanie. Odczytanie wiadomości zakodowanej w formacie PGP/MIME Seminarium 2004 – PP, SKiSR 28 GnuPG. Opis rozwiązania i zastosowanie. Podsumowanie: GnuPG jest bardzo dobrym programem do szyfrowania danych które są przesyłane przez sieć lub magazynowane na nośniku. Możliwości które oferuje są w stanie dostarczyć wiarygodnego poziomu bezpieczeństwa. GnuPG jest obsługiwany przez wiele klientów poczty elektronicznej, przez co staje się on łatwiejszy w użyciu Seminarium 2004 – PP, SKiSR 29 GnuPG. Opis rozwiązania i zastosowanie. Bibliografia 5. 6. 7. 8. 9. 10. 11. 12. 13. http://www.gnupg.org/ http://www.pgpi.org/ http://www.enigma.com.pl/publikacje/elementarz.zip http://mozillapl.org/ http://enigmail.mozdev.org/ http://drfugazi.eu.org http://www.philzimmerman.com/EN/background/index .html http://www.gnupg.de/presse.en.html Podręcznik Systemowy MAN Seminarium 2004 – PP, SKiSR 23