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. 1
Plan prezentacji 1. Historia i krótki opis programu 2. Opis rozwiązania i algorytmy 3. Zastosowanie i przykłady zastosowania 4. Integracja GnuPG z klientem poczty 5. Podsumowanie 6. Bibliografia 2
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. 3
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. 4
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. 5
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. 6
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 7
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 8
Zagrożenia dla informacji w sieci telekomunikacyjnej 9
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. 10
Algorytm asymetryczny 11
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 100 całkowita, rzędu 10. 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)(q- 1)). Algorytm jest przeznaczony do szyfrowania i odszyfrowania n- bitowych 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. 12
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. 13
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 300 wielko ści liczby N (ok. 10 ) wydaje si ę być niewykonalny m. W kwietniu tego roku udało si ę złamać 576-bitowy szyfr RAS- 576. 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. 14
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. 15
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) <dd9jn@gnu.org>" 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 16
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 gpg --import JanKowalski.key Import klucza z pliku 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) <kowalski@mail.com>" imported gpg: Total number processed: 1 gpg: imported: 1 17
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) <dd9jn@gnu.org> sig!3 57548DCD 2003-12-24 Werner Koch (gnupg sig) <dd9jn@gnu.org> sig!2 1EFF3AB1 2004-05-04 Tomasz Pawlak (Pila, Poland) <zdzs@poczta.fm> 18
Uwierzytelnienie obcego klucza publicznego pub 1024D/428FFE34 created: 2004-05-05 expires: never sub 1024g/007BA997 created: 2004-05-05 expires: never (1). Kowalski (Opis) <kowalski@mail.com> trust: -/q 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) <kowalski@mail.com> 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 () <balcerek@yahoo.com> (7BCC6A1B) I have not checked this key at all. Really sign? yes You need a passphrase to unlock the secret key for user: " Balcerek () <balcerek@yahoo.com> 1024-bit DSA key, ID 7BCC6A1B, created 2004-05-05 19
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 20
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 <kowalski@wp.pl>" gpg: checking the trustdb gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1 21
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 22
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. 23
Wysłanie zakodowanej wiadomości 24
Odebranie zakodowanej wiadomo ści 25
Deszyfrowanie zakodowanej wiadomości 26
Szyfrowanie wiadomo ści i załącznika 27
Odczytanie wiadomo ci zakodowanej w formacie ś PGP/MIME 28
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 29
Bibliografia 5. http://www.gnupg.org/ 6. http://www.pgpi.org/ 7. http://www.enigma.com.pl/publikacje/elementarz.zip 8. http://mozillapl.org/ 9. http://enigmail.mozdev.org/ 10. http://drfugazi.eu.org 11. http://www.philzimmerman.com/en/background/index.html 12. http://www.gnupg.de/presse.en.html 13. Podręcznik Systemowy MAN 23