Szyfr PGP-1.pdf

(185 KB) Pobierz
Laboratorium nr 5
„Bezpieczeństwo systemów sieciowych”
Zastosowania kryptografii – pakiet PGP
Laboratorium nr 1.
Zastosowania kryptografii – pakiet PGP.
Spis treści:
1. Wstęp.
1.1. Opis działania.
1.2. Algorytm szyfrowania/deszyfrowania.
1.3. Wykorzystanie algorytmu RSA w PGP.
1.4. Bezpieczeństwo.
1.5. Historia rozwoju i wersje.
2. Opis pakietu.
2.1. Start - generowanie kluczy,konfiguracja
2.2. Eksportowanie klucza publicznego.
2.3. Importowanie czyjegoś klucza publicznego.
2.4.Szyfrowanie informacji.
2.5.Deszyfrowanie plików.
2.6.Szyfrowanie symetryczne.
2.7. Podpisy cyfrowe.
2.7.1 Podpisy "zwykłe".
2.7.2. Podpisy "clearsign"
2.7.3. Podpisy "detach"
3. Zadania.
4. Literatura.
1. Wstęp.
Pretty Good Privacy - PGP jest kryptosystemem (tzn. systemem szyfrująco-deszyfrującym) autorstwa
Phila Zimmermanna wykorzystującym ideę klucza publicznego . Podstawowym zastosowaniem PGP
jest szyfrowanie poczty elektronicznej, transmitowanej przez kanały nie dające gwarancji poufności ani
integralności poczty. Przez poufność rozumiemy tu niemożność podglądania zawartości listów przez
osoby trzecie; przez integralność - niemożność wprowadzania przez takie osoby modyfikacji do treści
listu.
PGP pozwala nie tylko szyfrować listy, aby uniemożliwić ich podglądanie, ale także sygnować
(podpisywać) listy zaszyfrowane lub niezaszyfrowane w sposób umożliwiający adresatowi (adresatom)
stwierdzenie, czy list pochodzi rzeczywiście od nadawcy, oraz czy jego treść nie była po podpisaniu
modyfikowana przez osoby trzecie. Szczególnie istotny z punktu widzenia użytkownika poczty
elektronicznej jest fakt, że techniki szyfrowania oparte o metodę klucza publicznego nie wymagają
wcześniejszego przekazania klucza szyfrowania/deszyfrowania kanałem bezpiecznym (tzn.
gwarantującym poufność). Dzięki temu, używając PGP, mogą ze sobą korespondować osoby, dla
których poczta elektroniczna (kanał niepoufny) jest jedyną formą kontaktu.
1.1. Opis działania.
Różnica między kryptosystemem "tradycyjnym", a metodą klucza publicznego polega w największym
uproszczeniu na tym, że szyfr "tradycyjny" wymagał użycia tego samego klucza do szyfrowania i
odszyfrowywania. Klucz ten zatem musiał być wcześniej uzgodniony przez porozumiewające się
strony, i to z użyciem kanału bezpiecznego (zapewniającego poufność i integralność) - w przeciwnym
razie istniałoby ryzyko przechwycenia klucza przez osoby trzecie, co dałoby tym osobom możliwość
zarówno odczytywania szyfrowanych komunikatów, jak i ich podrabiania (fałszowania). W metodzie
klucza publicznego, pojedynczy klucz zastąpiony jest parą kluczy: jeden z nich służy do zaszyfrowania
listu, drugi do odszyfrowania. Znajomość klucza szyfrowania nie wystarczy do deszyfracji listu, ani do
odtworzenia klucza deszyfrowania.
1
„Bezpieczeństwo systemów sieciowych”
Zastosowania kryptografii – pakiet PGP
1.2. Algorytm szyfrowania/deszyfrowania.
Klucz deszyfrowania bazuje na parze dużych liczb pierwszych, klucz szyfrowania zaś - na ich
iloczynie. Znajomość iloczynu 2 liczb pierwszych nie wystarczy do znalezienia tych liczb - a raczej,
wystarczy, lecz dla odpowiednio dużych liczb (rzędu 10 do potęgi 100) operacja taka zajmuje całe lata,
nawet na najszybszych dostępnych komputerach.
Co za tym idzie, tylko klucz deszyfrowania musi pozostać sekretem swego właściciela (i dlatego
nazywany jest "kluczem prywatnym" ). Klucz szyfrowania może być udostępniony ogółowi - stąd
termin "klucz publiczny". Dowolna osoba, chcąca wysłać tajną wiadomość do właściciela tego
klucza, używa klucza publicznego w celu zaszyfrowania treści listu. List ten odszyfrować może tylko
osoba będąca w posiadaniu klucza prywatnego związanego z tym kluczem publicznym - w domyśle:
właściciel klucza.
Zastosowany w PGP algorytm szyfrowania kluczem publicznym nosi nazwę RSA (Rivest-Shamir-
Adleman) - nazwiska jego twórców. Algorytm ten jest w USA opatentowany i nie może być używany w
programach wywożonych z USA. Dlatego też istnieją 3 aktualne wersje PGP:
1. "tylko w USA", która wykorzystuje licencjonowany kod firmy RSA Data Security, Inc., nie może
być eksportowana poza USA,
2. wersja komercyjna(również tylko w USA), opracowana przez firmę ViaCrypt
3. wersja "międzynarodowa", którą opracował Stale Schumacher <staalesc@ifi.uio.no>, a która
opiera się na implementacji algorytmu RSA napisanej poza USA, niezależnie od firmy RSA.
Jest to jedyna wersja, jakiej można używać poza USA, nie gwałcąc amerykańskich przepisów
eksportowych.
Wszystkie te wersje są wzajemnie zgodne.
1.3. Wykorzystanie algorytmu RSA w PGP.
PGP nie szyfruje całego dokumentu (np. listu) z użyciem algorytmu RSA - ponieważ jest on dość
powolny, trwałoby to bardzo długo. Zamiast tego, PGP szyfruje z użyciem RSA pewną wygenerowaną
losowo liczbę 128-bitową, która następnie jest używana jako klucz szyfrowania właściwego
dokumentu (np. listu) "tradycyjnym" algorytmem IDEA. Przy deszyfracji, PGP odszyfrowuje klucz IDEA
z użyciem prywatnego klucza RSA odbiorcy, a następnie kluczem IDEA odszyfrowuje list. W zasadzie
zatem PGP jest połączeniem "tradycyjnego" kryptosystemu bazującego na kluczu przekazanym
kanałem bezpiecznym (innym dla każdej wiadomości), i kryptosystemu opartego o metodę klucza
publicznego, który zapewnia ten bezpieczny kanał).
1.4. Bezpieczeństwo.
W czasie tworzenia własnej pary kluczy możemy wybierać, jakiej "wielkości" klucze chcemy używać,
tzn., z jakiej ilości znaków mają one składać się. Im dłuższe klucze tym bezpieczniejsze, bo tym
większą ilość możliwych kombinacji tworzą. Na przykład, większość zwykłych programów do
przeglądania informacji w Internecie używa 40bitowych kluczy w czasie przesyłania niektórych
informacji, np. wypełnionych formularzy na stronach WWW. PGP w wersji międzynarodowej
umożliwia zrobienie kluczy o długości od 768 do 4096 bitów. Oczywiście tą ilość kombinacji zawsze
można odnosić do urządzeń, które ktoś może zastosować do rozszyfrowania hasła (tzn.
rozszyfrowania metodą sprawdzenia wszystkich możliwych kombinacji). Skala możliwości obecnie
istniejących urządzeń jest bardzo duża (przeważnie przekłada się na koszt takiego urządzenie) i to,
co jest "szczytem" możliwości nawet najnowocześniejszego PeCeta, który będzie potrzebował
miesięcy albo i lat na przetestowanie wszystkich kombinacji, może zająć superkomputerowi wartemu
miliony dolarów tylko kilka godzin. Zawsze pozostaje pytanie i odpowiedź: jak cenne są nasze
informacje dla kogoś innego, czyli ile może on wydać na ich rozszyfrowanie. Poniżej pokazana jest
tabela, w której porównano czasy potrzebne na rozszyfrowanie różnych kluczy różnymi
urządzeniami. Należy pamiętać, że w czasie rozszyfrowywania klucza liczy się nie tylko cena
samego urządzenia ale także czas jego pracy. Zastosowanie nawet najmniejszego klucza
2
„Bezpieczeństwo systemów sieciowych”
Zastosowania kryptografii – pakiet PGP
dostępnego w PGP daje wystarczającą pewność, że w przeważającej większości przypadków raczej
nikt nie będzie chciał wydać miliona dolarów na "podejrzenie" naszych informacji.
1.5. Historia rozwoju i wersje.
Pierwszą powszechnie znaną i stosowaną na świecie wersją PGP było PGP 2.3a , wypuszczona w
1993 roku. W wersji tej, podobnie jak we wszystkich następnych aż do PGP 5.0, do zarządzania
kluczami używany był algorytm RSA , jako szyfr symetryczny - IDEA , a jako funkcja jednokierunkowa -
MD5 . Wersja 2.3a potrafiła obsługiwać klucze RSA o wielkości 1024 bitów.
Problemy patentowe
Opublikowanie wersji 2.3a oraz jej szerokie rozpowszechnienie spowodowało, że firma RSA DSI Inc. ,
będąca właścicielem patentu na algorytm RSA, wytoczyła Zimmermanowi proces o naruszenie praw
autorskich. Proces ten zakończył się ostatecznie ugodą i był bezpośrednią przyczyną wypuszczenia
wersji 2.5 , w której implementacja RSA napisana przez Zimmermana zastąpiona została funkcjonalnie
identyczną lecz wolniejszą implementacją RSAREF, mającą jednak błogosławieństwo RSA DSI.
Dodatkowo, by zachęcić użytkowników PGP 2.3a do zainstalowania nowszej - legalnej - wersji, PGP
2.5 zawierało szereg ograniczeń mających zmniejszyć kompatybilność ze starszymi wersjami.
Dodatkowo, licencja użytkowania RSAREF zezwalała na bezpłatne korzystanie z niej wyłącznie do
celów niekomercyjych, stworzona została więc równolegle rozwijana wersja 2.4 , zwana ViaCrypt PGP ,
od nazwy firmy która ją sprzedawała. Nie było to jednak jedyną nowością od PGP 2.3a, wersja 2.5
posiadała wiele nowych funkcji, poprawione błędy oraz usprawnienia. Między innymi, pozwalała na
generowanie kluczy RSA o długości 2048 bitów.
Wkrótce potem ukazały się kolejno wersje od 2.6 do 2.6.3 , w których poprawiono liczne błędy oraz
uwzględniono sugestie użytkowników. Od wersji 2.6 zmieniła się także licencja użytkowania PGP -
program pod swoje skrzydła wziął Massachusetts Institute of Technology , zapewniając mu dystrybucję
oraz ochronę prawną.
Wersja międzynarodowa
Wersja 2.6 była także przełomowa pod innym względem - Norweg Staale Schumacher, rozpoczął
równoległe rozwijanie wersji międzynarodowej PGP, pozbawionej ograniczeń nakładanych na
amerykańską wersję PGP 2.5 o których wspomniano powyżej. Wersja międzynarodowa korzystała -
ponownie - z szybszej wersji algorytmu RSA oraz była kompatybilna z wersjami PGP 2.2 oraz 2.3.
W pierwszej połowie 1995 roku autor tej strony przetłumaczył i udostępnił publicznie tłumaczenie
pierwszej części dokumentacji oraz komunikatów PGP 2.6. Sądząc z odzewu, było ono potrzebne i
zdobyło sobie pewną popularność.
PGP.com
Od czasu wypuszczenia PGP 2.6.3, które stało się praktycznym standardem światowym jeśli chodzi o
darmowe oprogramowanie szyfrujące, Philip Zimmerman założył firmę PGP Inc. . Jej sztandarowym
produktem była oczywiście nowa wersja PGP 5.0 . Wprowadzono w niej nowy algorytm kluczy
publicznych DSS/Diffie-Hellman , nowe szyfry - 3DES i CAST , oraz algorytmy generowania funkcji
skrótu - SHA-1 i RIPEMD-160 . Algorytm Diffie-Hellman (patent wygasł w 1997 roku) został dodany ze
względu na ograniczenia patentowe algorytmu RSA, będące przyczyną kłopotów z PGP 2.3. SHA-1
miało w zamierzeniu zastąpić dotychczas używane MD5, które posiada pewne słabości
kryptograficzne.
Ze względu na przepisy eksportowe USA (ITAR), zaliczające zaawansowane algorytmy szyfrujące do
technik militarnych nie jest możliwe legalne wyeksportowanie kodu źródłowego PGP ze Stanów
Zjednoczonych. Co ciekawe, przepisy te ograniczają wyłącznie eksport elektronicznej formy kodu
źródłowego. Eksport źródeł wydrukowanych na papierze nie podlega pod ITAR. Logicznym
następstwem takiej niekonsekwencji było wypuszczenie przez PGP Inc. pełnego kodu źródłowego
PGP w postaci 14-to tomej księgi, która została następnie legalnie wywieziona poza granice USA i
zeskanowana przez Staale Schumachera, dotychczasowego koordynatora wersji międzynarodowej
3
34936675.003.png 34936675.004.png
„Bezpieczeństwo systemów sieciowych”
Zastosowania kryptografii – pakiet PGP
PGP. Zajęło to w sumie około 1000 godzin, przy współpracy ponad 70-ciu osób z całej Europy. Taka
kłopotliwa procedura została przeprowadzona po to, by uniknąć wszelkich zarzutów jakie wysuwano
wobec Philipa Zimmermana odnośnie wersji PGP 2.6.3i, która została napisana w USA i ,,jakimś
sposobem'' znalazła się w Europie.
NAI PGP
Warto zaznaczyć, że pod koniec roku 1998 PGP Inc. zostało kupione przez firmę Network Associates
Inc. , co jednak nie wpłynęło na zmianę polityki wobec wersji freeware . Od tej pory PGP poszerzyło
znacznie swoje możliwości. Z programu szyfrującego stosowanego głównie do poczty elektronicznej
PGP ewoluowało w kompleksowy produkt, umożliwiający tworzenie szyfrowanych wirtualnych sieci
prywatnych (PGPnet, implementacja IPSec), obsługę systemu X.509 oraz szyfrowanie dysków
logicznych.
W sierpniu 1998 roku światło dzienne ujrzał dokument RFC 1991 podpisany przez Zimmermana oraz
dwie inne osoby związane blisko z rozwojem PGP. Nosił on tytuł ,,PGP Message Exchange Formats'' i
zawierał formalną specyfikację formatu używanego przez PGP w wersji 2. W trzy miesiące później inni
ludzie, związani z NAI, opublikowali RFC 2440 zawierające opis nowego standardu nazwanego
,,OpenPGP'', kompatybilnego z PGP 5.0 oraz umożliwiającego kompatybilność ze starszymi wersjami
PGP.
PGP 5.0 pojawiło się w dwóch wersjach - komercyjnej ( PGP for Privacy ) oraz darmowej ( PGP
Freeware ). Był to znak, że polityka firmy wobec programu uległa - jeśli nie formalnej to przynajmniej
praktycznej - zmianie.
Wersja PGP 2.6.3, ciesząca się do dziś największą popularnością na całym świecie, była dostępna
pod 7 systemów operacyjnych dla komputerów osobistych (Amiga, Atari, BeOS, Macintosh, MSDOS,
OS/2 Windows) oraz kilkadziesiąt systemów unixowych. Pierwsza wersja PGP 5.0 była dostępna pod
Windows, Macintosha oraz systemy unixowe.
Wszystkie kolejne wersje PGP były dostępne wyłącznie dla Windows i Macintosha. Są one
kompatybilne z wersją 5.0, jednak moje osobiste wrażenia odnośnie tej ostatniej nie są zbyt
pozytywne. Wersja 5.0, dostępna pod systemy unixowe była pełna błędów i używanie jej było dość
uciążliwe. Nadzieje na nową, lepszą wersję pozbawioną tych niedogodności zostały rozwiane wraz z
wersją PGP 5.5 , która nie została już przeniesiona na unixy i większość użytkowników była
przekonana że NAI nie zamierza wypuszczać wersji na tę platformę.
Tymczasem w wakacje 1999 ogłoszono wersję PGP 6.5.1 dla Linuxa. Co ciekawe, w przeciwieństwie
do PGP 5.0 w nowej wersji autorzy powrócili do koncepcji pojedynczego, monolitycznego programu
pgp , ze składnią linii poleceń podobną jak w PGP 2.6.3i. Nie testowałem jej jednak dokładnie, więc nie
wiem nic więcej na temat funkcjonalności tej wersji.
W latach 1998-2001 PGP produkowane przez NAI stało się zdecydowanie produktem nastawionym na
klientów biznesowych i spełniających szereg innych funkcji poza szyfrowaniem poczty. Kolejne wersje
PGP zawierają oprogramowanie do tworzenia VPN (protokół IPSEC), zabezpieczania systemu
Windows itd. W 4-tym kwartale 2000 dostępne było już PGP 7.0, kontynuujące tę linię rozwoju.
OpenPGP.org
W maju 2001 Phil Zimmerman opuścił NAI, tłumacząc swoją decyzję różnicami w wizji przyszłości
PGP. Równocześnie z podjęciem pracy w fimie Hush Communications, oferującej bezpieczne konta
pocztowe, stworzył OpenPGP Alliance , czyli niedochodowe stowarzyszenie firm i innych grup,
rozwijających oprogramowanie kompatybilne z PGP.
Alternatywy
Od grudnia 1997 roku rozwijany jest program nazywany roboczo G10 , i mający stanowić powszechnie
dostępną alternatywę dla skomercjalizowanego PGP. W międzyczasie nazwa G10 została zmieniona
na GNU Privacy Guard , a sam program został oficjalnie objęty ochroną prawną przez Free Software
Foundation . Napisany zgodnie ze wysokimi standardami tworzenia oprogramowania nakładanymi
4
34936675.005.png 34936675.006.png 34936675.001.png 34936675.002.png
„Bezpieczeństwo systemów sieciowych”
Zastosowania kryptografii – pakiet PGP
przez GNU, Privacy Guard wydaje się być w tej chwili najlepszą alternatywą dla PGP dla
użytkowników systemów unixowych.
2. Opis pakietu.
W celu instalacji pakietu GNU-PGP:
1. Rozpakuj plik ZIP zawierający archium PGP.
2. Skopiuj pliki "gpg.exe", "gpgv.exe", "gpgkeys_ldap.exe" do dowolnego katalogu (najlepiej
takiego, który figuruje na ścieżce poszukiwań plików wykonywalnych).
3. Utwórz katalog "c:\gnupg"
4. Dalej postępuj zgodnie z poniższą instrukcją obsługi pakietu PGP.
2.1. Start - generowanie kluczy, konfiguracja.
Na początek musimy wygenerować dla siebie parę kluczy: klucz publiczny i pasujący tylko do niego
klucz prywatny. Wydajemy polecenie:
gpg --gen-key .
Efekt jest taki:
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection?
GnuPG potrafi stworzyć różne rodzaje kluczy, jednak nasz klucz główny (primary key) musi potrafić
generować podpisy cyfrowe (signatures). DSA może służyć jedynie podpisom cyfrowym, natomiast
ElGamal podpisom i szyfrowaniu. Zaleca się wybranie opcji (1), w wyniku czego wygenerowane
zostaną dwie pary kluczy: para k. publiczny - k. prywatny dla DSA oraz tak para kluczy dla ElGamala.
Piszemy 1 lub naciskamy 'Enter' aby zaakceptować pierwszą opcję. Widzimy:
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024)
Musimy teraz wybrać długość naszego klucza. Im większy on jest, tym większą mamy pewność, że
metodą prób i błędów nikt nie "zgadnie" naszego klucza prywatnego. Długość 768 bitów nie jest
zalecana, choć prawdopodobieństwo jego złamania jest niewielkie. Pełne bezpieczeństwo gwarantuje
nam klucz długości 1024 bitów. Dla DSA automatycznie zostanie wygenerowany klucz długości 1024
bitów, w algorytmie ElGamala możemy ją sobie wybrać.
Następnie musimy wybrać okres ważności naszego klucza:
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years Key is valid for? (0)
Jeśli nie mamy ważnego powodu, aby nasz klucz stracił wartość za jakiś czas, ponownie akceptujemy
wartość domyślną: 0. Jeśli jednak chcemy, żeby nasz klucz przestał być ważny np. za 5 miesięcy,
5
Zgłoś jeśli naruszono regulamin