Potwierdzanie autentyczności @, INTERNET


Potwierdzanie autentyczności e-maili (The Bat! i OpenPGP)

0x01 graphic
Po co to wszystko?

0x01 graphic

Pomimo tego, że poczta elektroniczna jest jedną z najpopularniejszych usług internetowych, w swojej czystej formie jest zarazem jedną z najmniej bezpiecznych. I nie chodzi tylko o kwestie dostępu osób trzecich do naszych listów (co nie stanowi głównego tematu tego artykułu), ale przede wszystkim o wiarygodność otrzymywanych od kogoś i wysyłanych samemu przesyłek. O co chodzi? Już tłumaczę. Otóż jak trudno jest wysłać komuś maila z adresu billgates@microsoft.com albo aleksander.kwasniewski@gov.pl? Nie stanowi to żadnego problemu i nie trzeba być do tego super-hackerem. Taka sytuacja ma miejsce, ponieważ o ile do odbierania poczty korzystamy zwykle z serwera POP3, któremu musimy się jakoś przedstawić (np. podając swój login i hasło), o tyle do jej wysłania skorzystać możemy już z dowolnego serwera SMTP, który nam to umożliwi. I jeśli znajdziemy (lub sami skonfigurujemy sobie na własnym komputerze) taki serwer SMTP, który nie sprawdzi czy faktycznie mamy prawo wysłać list korzystając z danego adresu, możemy podać się za Billa Gates'a czy Aleksandra Kwaśniewskiego. I jak później sprawdzić, czy e-mail od naszego kolegi jest faktycznie e-mailem od naszego kolegi (lub faktycznie od Billa Gates'a)? No więc, tu zaczynają się schody. Niby jest to proste, bo przecież zawsze możemy zadzwonić lub inaczej skontaktować się bezpośrednio i spytać. Pytanie tylko, po co w takim razie e-mail? Możemy też sprawdzić w tzw. kludges listu, z jakiego adresu został wysłany. Jednak dalsza ocena wiarygodności na podstawie takich przesłanek będzie daleka od ideału. Jak zatem sprawdzić autentyczność otrzymanego listu lub zadbać o nadanie odpowiedniej wiarygodności własnej przesyłce?



0x01 graphic
The Bat! i OpenPGP

0x01 graphic

Z pomocą przyjdzie nam system PGP. To bardzo zaawansowane narzędzie do szyfrowania i autentyzacji materiałów elektronicznych przy użyciu kluczy publicznych i prywatnych (co to jest? o tym nieco dalej). Na wstępie powiem, że zaszyfrowania lub (na czym skupia się ten tekst) autentyzacji e-maila można dokonać na bardzo wiele sposobów. Mnogość programów do obsługi poczty powoduje, że każdy ma swojego faworyta. Podobnie rzecz wygląda jeśli chodzi o programy PGP. Dlatego też opiszę tutaj dokładnie teorię, której znajomość powinna przezwyciężyć strach przed próbą zrobienia czegoś podobnego na własnej konfiguracji. Ponadto postaram się pokazać to dokładnie na przykładzie najlepszego  edytora poczty jakim jest The Bat!, który ma już w sobie implementację OpenPGP (dzięki czemu nie musimy stosować dodatkowych programów). Zdecydowanie polecam takie rozwiązanie. Miłośników The Bat!'a nie trzeba do niego przekonywać, a wszystkim innym zdradzę, że obojętnie czego używacie - z pewnością warto zastanowić się nad zamianą tego czegoś na The Bat!'a :-) Tyle ideologii, zacznijmy więc mały wykład...



0x01 graphic
Idea kluczy publicznych i prywatnych

0x01 graphic

PGP, które wykorzystamy do rozwiązania problemu opisywanego w pierwszym akapicie, jest systemem szyfrującym materiały w oparciu o ideę kluczy publicznych i prywatnych. Brzmi to całkiem jak z filmów o Jamesie Bondzie, jednak w istocie jest całkiem proste. Na wstępie zabawy z PGP musimy wygenerować sobie taką parę kluczy (jak to dokładnie zrobić pod The Bat!'em? o tym nieco dalej). Klucz prywatny będzie nam służył do elektronicznego podpisywania lub szyfrowania naszej przesyłki i musimy trzymać go w bezpiecznym miejscu. Trzymanie w bezpiecznym miejscu oznacza po prostu, żeby nikomu go nie dawać i uważać, żeby ktoś sam go od nas nie wziął. Klucz publiczny natomiast służy do sprawdzenia autentyczności przesyłki zabezpieczonej przy użyciu klucza prywatnego. Wykorzystuje się go też przy okazji szyfrowania przesyłki kluczem prywatnym tak, żeby odczytać ją mogła jedynie osoba z prywatnym imiennikiem posiadanego przez nas klucza publicznego. Klucz publiczny możemy zatem bez obaw przekazać każdemu, z kim korespondujemy, a nawet udostępnić go w publicznym miejscu (np. na stronie www lub w specjalnej bazie).

Za pomocą klucza prywatnego...

Za pomocą klucza publicznego...

możemy podpisać własną przesyłkę

możemy zaszyfrować własną przesyłkę (dodatkowo potrzebny jest klucz publiczny osoby, której chcemy dać możliwość jej odszyfrowania)

możemy odczytać zaszyfrowaną przesyłkę adresowaną do nas (czyli zaszyfrowaną za pomocą czyjegoś klucza prywatnego i naszego klucza publicznego)

możemy sprawdzić, czy podpisana przy pomocy prywatnego imiennika posiadanego przez nas klucza publicznego przesyłka jest autentyczna

możemy zaszyfrować własną przesyłkę tak, żeby odczytać mogła ją jedynie osoba z prywatnym imiennikiem posiadanego przez nas klucza publicznego

nie możemy podpisać ani zaszyfrować przesyłki jako właściciel klucza, do tego trzeba posiadać klucz prywatny




0x01 graphic
Wykorzystanie PGP do podpisywania poczty

0x01 graphic

Wracając do systemu PGP i interesującego nas zagadnienia - za pomocą opisanego powyżej klucza prywatnego można podpisać przesyłkę bez zmieniania jej treści tak, żeby możliwe było później sprawdzenie jej autentyczności za pomocą klucza publicznego. Jak to działa? Generujemy sobie parę kluczy. Klucz prywatny trzymamy dla siebie, klucz publiczny udostępniamy bez obaw wszystkim zainteresowanym. Pisząc list podpisujemy go w sposób cyfrowy za pomocą klucza prywatnego. Później ktoś, kto odbierze naszą przesyłkę, posiadając nasz klucz publiczny będzie mógł sprawdzić, czy faktycznie jesteśmy autorem treści listu. Mało tego, będzie też mógł sprawdzić, czy po drodze treść nie została przez nikogo zmieniona.

Jedyny problem z jakim możemy się tutaj zetknąć polega na autentyczności kluczy publicznych. Tzn. ktoś może wygenerować sobie parę kluczy jako np. "Redakcja Jamy Mastaha", po czym wcisnąć Wam klucz publiczny. Wtedy będzie mógł napisać do Was list jako "Redakcja Jamy Mastaha" i nic z tym nie zrobicie. Jeśli jednak w takim wypadku dostaniecie faktycznie list od "Redakcji Jamy Mastaha", od razu wyjdzie na jaw, że coś jest nie tak. Zatem, wszystko sprowadza się do pewności, że posiadany przez nas czyjś klucz publiczny jest autentycznie kluczem publicznym tej osoby/instytucji. To jednak jest już problem, który można łatwo rozwiązać. Wystarczy ściągnąć klucz publiczny bezpośrednio od właściciela, a nie autora listu. Jeśli to ta sama osoba, wszystko będzie w porządku. Jeśli nie, zostaniemy o tym poinformowani przez program PGP przy sprawdzaniu autentyczności.



0x01 graphic
Jak to zrobić pod The Bat!'em?

0x01 graphic

Krok po kroku. Najpierw generujemy sobie własną parę kluczy - publiczny i prywatny:

0x01 graphic

Uruchamiamy menedżera kluczy

0x01 graphic

Wypełniamy dane właściciela
(wyskoczy samo przy pierwszym uruchomieniu)


0x01 graphic

Podajemy rozmiar klucza
(większy bezpieczniejszy,
mniejszy szybszy)


0x01 graphic

Określamy, jak długo będzie ważny

0x01 graphic

Podajemy hasło dla klucza prywatnego,
to dodatkowe zabezpieczenie


0x01 graphic

Po takiej operacji w naszej bazie kluczy
mamy własny klucz prywatny i publiczny


Następnie eksportujemy wygenerowany przed chwilą klucz publiczny:

0x01 graphic

Program spyta, czy chcemy wyeksportować
także klucz prywatny - możemy to zrobić na wszelki wypadek,
jednak musimy pamiętać że trzeba go szczególnie pilnować


Możemy go teraz przekazać innym ludziom. Np. klucz publiczny redakcji Jamy Mastaha znajduje się
pod tym adresem i wygląda tak:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6

mQCPAz05vCcAAAEEANEvPBuj7tkClhDHupqlN5zjf80CX+RLKvgMtJKtVCL4oQ1d
dTApb/R9bWpMlkkeQ06VXHy+1/JJTjdrvl/+eLr7wSvm6yl5ibRet6g6Uijiy2wv
4sg854or1qkErxf05rhgQOk7kJWSrzqe6iwChPIGU4mcaOu3jo4wWPUZba6xABEB
AAG0LFJlZGFrY2phIEphbXkgTWFzdGFoYSA8cmVkYWtjamFAaW5mb2phbWEucGw+
iQCVAwUQPTm8J44wWPUZba6xAQHtKAQAu2spUeyx2JS68Yq8dzN6D/YijRn44MSb
pgM2ZkOq4Tpeuf6hiH0g8x/KRyMn+WY80/3qGxhqYeqFqY8uEaiBPn1ZBYt7jWOF
eheEfZVs48R1bA5idAwcZU7pn4T+5A95vNS/XSdaZHArDD6hIRopZ1vo58W4xEL1
43VEs3D6y+w=
=OFFq
-----END PGP PUBLI
C KEY BLOCK-----




0x01 graphic
Jak teraz podpisać własny list?

0x01 graphic

To bardzo proste. Normalnie otwieramy okno do edycji nowej wiadomości, piszemy list i przed wysłaniem zaznaczamy w opcjach prywatności odpowiednie pozycje:

0x01 graphic

W opcjach konta możemy ustawić,
żeby pozycje te włączone były domyślnie


Nasz list zostanie opatrzony cyfrowym podpisem (program spyta wcześniej o hasło, którym zabezpieczyliśmy klucz prywatny) i będzie wyglądał mniej więcej w ten sposób:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: MD5

to taki przykładowy list

-----BEGIN PGP SIGNATURE-----
Version: 2.6

iQCVAwUAPTnCco4wWPUZba6xAQFniAP9EcJ8wTZHYYXw5AO0plj/WN6i9CYIkQf6
ckldTCtmbQt8DxB6TXE6yhO53oEHCuKHHAgI/1LmcFW2xaqMPrStYQwQEQ8SuTZf
JLDfnJlFlZLRbfoXIJtnWM9NIkYB3jqkArWcLWrYxaMrdg3abWslIJsBpvqDwUwy
of3b7cOsZso=
=3Svl
-----END PGP SIGNATURE-----




0x01 graphic
Jak teraz sprawdzić autentyczność takiego listu?

0x01 graphic

Przede wszystkim, musimy zaopatrzyć się w klucz publiczny odpowiedniej osoby lub instytucji. Jeśli chcemy sprawdzić autentyczność listu pochodzącego rzekomo od redakcji Jamy Mastaha, importujemy klucz publiczny redakcji do menedżera kluczy w The Bat!'cie (postępujemy podobnie jak przy eksportowaniu klucza, tylko zamiast opcji Export wybieramy Import. Jeśli jesteśmy pewni autentyczności tego klucza, podpisujemy go (w ten sposób można odróżnić klucze pewne i sprawdzone od innych):

0x01 graphic

Program poprosi o podanie hasła do naszego klucza prywatnego,
którym podpiszemy czyjś klucz publiczny


Jeśli mamy już czyjś zweryfikowany klucz publiczny oraz list (pochodzący rzekomo od tej osoby/instytucji i zawierający cyfrową sygnaturę PGP) którego autentyczność chcemy potwierdzić, uruchamiamy opcję
Check OpenPGP Signature z głównego menu The Bat!'a:

0x01 graphic

O wyniku tej operacji zostaniemy powiadomieni w osobnym okienku


Program następnie dokona weryfikacji, o wyniku której zostaniemy powiadomieni w osobnym okienku. Będzie wtedy wiadomo, czy treść listu faktycznie pochodzi od osoby, której klucz publiczny użyty do sprawdzenia autentyczności posiadamy. Ponadto, weryfikacji zostanie poddana cała treść przesyłki. Znaczy to, że oprócz potwierdzenia autora dostaniemy też informację o tym, czy po drodze nikt nie zmienił treści. Podmiana nawet jednego znaku od razu skutkowała będzie stosownym komunikatem.



0x01 graphic
Ostatnie trzy grosze...

0x01 graphic

Warto zdawać sobie sprawę z tego, że opisane tutaj operacje z wykorzystaniem programu The Bat! (dostępnego w naszym dziale Pliki w sekcji Internet) całkiem podobnie będą wyglądać pod innym klientem poczty umożliwiającym coś takiego. Dlatego starałem się mocno akcentować oprócz łopatologicznych zdjęć poglądowych ideę działania tego systemu. Takie przygotowanie teoretyczne powinno pozwolić przeprowadzić analogiczne operacje w innym środowisku. The Bat! jest o tyle wygodny, że zawiera już w sobie implementację PGP i nie musimy stosować dodatkowej aplikacji, którą w przeciwnym wypadku trzebaby podpiąć pod edytor poczty. Między innymi z tego właśnie powodu The Bat!'a polecałem tutaj niejednokrotnie (pomijając kwestie OpenPGP, jest po prostu jednym z najlepszych). To nie żaden tekst sponsorowany ani nic z tych rzeczy, po prostu zdanie redaktora :-) Jeśli chcecie podyskutować na temat tego artykułu, zapraszam do działu Bezpieczeństwo w naszym Forum.
 

Dla Jamy Mastaha: giskard
Data ostatniej modyfikacji: 21 lipca 2002



Wyszukiwarka