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