"CC"
Puławska 107A/2; 02-595 Warszawa
tel/fax (22) 844-35-62
e-mail: cc@cc.com.pl
WWW: http://www.cc.com.pl/
Sondaże prowadzone wśród użytkowników Internetu pokazują, że ciągle najpopularniejszą usługą jest poczta elektroniczna (e-mail). Bezpieczeństwo danych przekazywanych pocztą internetową ma więc pierwszorzędne znaczenie. O ile subtelności enkrypcji danych na poziomie transportu sieciowego, bezpieczne wywołania procedur, itd. mogą mieć dla typowych użytkowników niewielkie znaczenie, o tyle bezpieczne przesyłanie dokumentów drogą elektroniczną wzbudza bardzo duże zainteresowanie. Nie trzeba chyba tłumaczyć, że każda firma zainteresowana jest poufnością dokumentów finansowych czy projektów umów handlowych, niezależnie od tego czy istnieją one w postaci papierowej czy elektronicznej.
System bezpiecznej poczty elektronicznej musi spełniać trzy podstawowe założenia - musi zapewniać: tajność, uwierzytelnianie i integralność korespondencji. Tajność oznacza, że dokumenty są szyfrowane w sposób uniemożliwiający ich odczyt przez osoby niepowołane. Uwierzytelnianie oznacza, że nadawca oraz odbiorca są w sposób jednoznaczny identyfikowani, a podszycie się pod jednego lub drugiego jest bardzo trudne. Integralność oznacza, że osoby niepowołane nie mogą zmienić treści wiadomości, lub, że zmiana taka zostanie zawsze wykryta.
PEM opracowano z myślą o zgodności z różnymi systemami kodowania danych oraz zarządzania kluczami. Umożliwia on szyfrowanie danych w oparciu o klucze tajne i jawne. Sama wiadomość kodowana jest algorytmem DES-ECB lub trzykrotnym DES, integralność zapewniona jest przez funkcje skrótu MIC, MD2 lub MD5. Zarządzanie kluczami PEM, w tym ich certyfikacja, zgodna jest ze specyfikacją ISO X.509.
Rysunek 1: Wiadomość PEM wewnątrz przesyłki e-mail
h = H(M)
Funkcja skrótu posiada trzy ważne własności, które sprawiają, że jest ona przydatna w kryptografii:
Próba zmiany wiadomości, do której dodano jej skrót powoduje, że skrót przestaje "pasować" do wiadomości. Własności funkcji skrótu powodują, że znalezienie wiadomości pasującej do skrótu jest bardzo żmudne obliczeniowo. Funkcja skrótu jest w pewnym sensie losowa - najmniejsza zmiana skracanej wiadomości powoduje, że jej skrót całkowicie się zmienia.
Widzimy więc, że dodanie skrótu do wiadomości dość dobrze zabezpiecza ją przed manipulacją.
Z punktu widzenia zastosowania w systemach poczty elektronicznej ważne są funkcje skrótu: MD5 (Message Digest) stosująca skrót 128 bitowy, MD2 będący gorszą odmianą MD5 oraz MD4 - wcześniejsza wersja MD5.
Nagłówek oraz właściwa wiadomość PEM zawarta jest w ciele wiadomości w formacie RFC822 (rys. 1) i ograniczona jest parą nawiasów tekstowych oznaczających początek i koniec wiadomości PEM. Wewnątrz, przesyłka PEM zawiera własny nagłówek oraz właściwą wiadomość. Nagłówek PEM określa m.in:
Pola nagłówka są różne, w zależności od tego czy stosuje się szyfrowanie symetryczne czy asymetryczne.
Oto przykład wiadomości PEM dla przypadku symetrycznego kodowania (ten sam klucz dla odbiorcy i nadawcy):
Linie wiadomość PEM Komentarz -----BEGIN PRIVACY-ENHANCED MESSAGE----- Początek wiadomości PEM Proc-Type: 4, ENCRYPTED Wiadomość jest zaszyfrowana Content-Domain: RFC822 Typ wiadomości (nie wykorzystywany przy szyfrowaniu) DEK-Info: DES-CBC,E387A02071AE1F61 Algorytm szyfrowania wiadomości i jego parametry Originator-ID-Symetric: gjb@ii.pw.edu.pl,, Nadawca Recipent-ID-Symetric: Odbiorca, jego pełnomocnik, gjb@ii.pw.edu.pl,ptf-kmc,4 dane o ważności klucza Key-Info: Parametry zarządzania DES-ECB,RSA-MD2,791EC7590C1B5570,A9007D67186E0 kluczem: algorytm szyfrowania C6850158C5410BEFE7B klucza wymiany (tu DES-ECB), algorytm skrótu (tu RSA-MD2), zaszyfrowany klucz wymiany , zaszyfrowany skrót wiadomości. ... dalszy ciąg nagłówka Pusta linia kończy nagłówek PEM LO1jkg+89hujh7h/oKV54o01Bg/FWbC5KnO2Igtu+M78hb Początek zaszyfrowanej DRj2hM22N5fT6Rw6N wiadomości ... dalszy ciąg zaszyfrowanej wiadomości -----END PRIVACY-ENHANCED MESSAGE----- Koniec wiadomości PEM
Druga metoda ataku została już opisana w artykule o systemie Kerberos - włamywacz może podsunąć użytkownikom z pozoru poprawnie funkcjonującą, lecz zmodyfikowaną wersję oprogramowania PEM. Taki koń trojański może np. wysłać włamywaczowi klucze tajne, lub zmieniać treść przesyłanych wiadomości.
PGP jest pakietem darmowym, rozpowszechnianym na zasadach licencji Free Software Foundation. Dostępne są jego implementacje dla wielu popularnych systemów operacyjnych, w tym oczywiście dla MS-DOS. Dla Unix-a PGP dostępne jest w postaci źródeł w języku C.
PGP udostępnia też szereg funkcji operujących na zbiorze kluczy. Możliwe jest wygenerowanie pary kluczy zadanej długości, dodanie lub usunięcie kluczy publicznych oraz podpisywanie (certyfikacja) kluczy. Oczywiście, dopasowywanie odpowiednich kluczy do wiadomości jest automatyczne - chcąc odszyfrować i zweryfikować wiadomość wprowadza się ją do programu PGP, który określa nadawcę, znajduje jego klucz w lokalnym zbiorze kluczy i dokonuje odszyfrowania oraz weryfikacji podpisu.
Certyfikacja kluczy w PGP jest diametralnie odmienna od przyjętej w PEM - nie istnieje hierarchia certyfikacji. Użytkownicy PGP wzajemnie podpisują swoje klucze publiczne - uzyskanemu kluczowi publicznemu można zaufać, jeżeli jest on już podpisany przez osoby, których kluczom ufamy.
Podstawowa implementacja PGP jest dość siermiężna - program działa w trybie tekstowo - wsadowym, a poszczególne funkcje określa się przez opcje wywołania. Dostępnych jest jednak szereg graficznych nakładek na PGP umożliwiających korzystanie z pakietu osobom przyzwyczajonym do środowisk graficznych. Dla MS-Windows godny polecenia jest sharewarowy program WinPGP autorstwa Christophera Geiba oraz freewarowy PGP WinFront autorstwa Rossa Barclaya. Istnieją też nakładki dla PGP, pracujące pod systemem Unix, włączające PGP w sposób przezroczysty do systemu poczty internetowej. Np. program pgpsendmail umożliwia przezroczystą enkrypcję i dekrypcję wychodzącej i wchodzącej poczty elektronicznej.
Słabe strony PGP
Algorytmy kryptograficzne PGP są bardzo silne, ich poziom zbliżony jest do militarnego. Przez pewien czas pojawiały się spekulacje co do jakości algorytmów wykorzystywanych przez PGP, nie przedstawiono jednak konkretnych dowodów na istnienie błędów w implementacji, czy też słabości samych algorytmów kryptograficznych. Do PGP zastosować można krytykę analogiczną do tej jaką przedstawiono dla PEM. Należy też pamiętać, że PGP jest programem szyfrującym i deszyfrującym informacje, z pewnymi ułatwieniami związanymi z obsługą poczty elektronicznej. PGP nie jest jednak w sensie dosłownym programem implementującym bezpieczną pocztę eletrkoniczną.
Aby otrzymać parę kluczy wybieramy dwie losowe, duże liczby pierwsze p i q i obliczamy ich iloczyn:
n = p * q
Wybieramy losowo klucz szyfrujący e taki, że e i (p-1)(q-1) są względnie pierwsze (nie mają wspólnych dzielników):
Wyznaczamy klucz deszyfrujący d będący odwrotnością e modulo (p-1)(q-1), tzn:
(e * d) mod (p-1)(q-1) = 1
Liczby e i n tworzą klucz publiczny, d jest kluczem prywatnym. Po obliczeniu n, e i d liczby p i q nie są już potrzebne i powinny zostać wymazane. Zauważmy, że n oraz (p-1)(q-1) są względnie pierwsze.
Wiadomość m szyfrujemy podnosząc ją do potęgi e modulo n, dostajemy wiadomość zaszyfrowaną c:
c = me mod n
W celu odszyfrowania wiadomości podnosimy zaszyfrowany tekst do potęgi d modulo n:
cd mod n = me*d mod n = m1 mod n = m
Opis szyfrowania jest nieco uproszczony, gdyż w rzeczywistości wiadomość m musi być dzielona na bloki o jednoznacznej reprezentacji modulo n.
Sądzi się, że uzyskanie tekstu jawnego z zaszyfrowanej przy wykorzystniu RSA wiadomości jest równoznacze z faktoryzacją klucza publicznego - ponieważ ten jest iloczynem b. dużych liczb pierwszych, np. stucyfrowych, faktoryzacja taka jest bardzo trudna. Od czasu wynalezienia algorytmu w 1978 r. mimo instensywnych starań kryptoanalityków "boczna furtka" nie została znaleziona.
Zakładając, że nie zostanie odkryta "boczna furtka" umożliwiająca złamanie RSA, algorytm jest b. skuteczny: faktoryzacja liczby o długości 664 bitów (stosowane są nawet dłuższe klucze) wymaga 4000 lat pracy miliona komputerów wykonujących milion kroków algorytmu na sekundę. Atak może być jednak przeprowadzony z innej strony: np. głośne ostatnio złamanie kodowania RSA stosowanego przez przeglądarkę WWW firmy Netscape, zostało wykonane poprzez odgadnięcie liczb p i q - nie były one naprawdę losowe (zresztą klucz używany przez tą wersję przeglądarki był b. krótki).
Grzegorz Blinowski pracuje w Instytucie Informatyki Politechniki Warszawskiej, jest też właścielem firmy konsultingowej "CC" zajmującej się doradztwem w zakresie architektur klient-serwer, Internetu i bezpieczeństwa systemów komputerowych.