Po co to wszystko?
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?
The Bat! i OpenPGP
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...
Idea kluczy publicznych i prywatnych
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
Wykorzystanie PGP do podpisywania poczty
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.
Jak to zrobić pod The Bat!'em?
Krok po kroku. Najpierw generujemy sobie własną parę kluczy - publiczny i prywatny:
Następnie eksportujemy wygenerowany przed chwilą klucz publiczny:
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 PUBLIC KEY BLOCK-----
Jak teraz podpisać własny list?
To bardzo proste. Normalnie otwieramy okno do edycji nowej wiadomości, piszemy list i przed wysłaniem zaznaczamy w opcjach prywatności odpowiednie pozycje:
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-----
Jak teraz sprawdzić autentyczność takiego listu?
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):
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:
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.
Ostatnie trzy grosze...
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
|