Potwierdzanie autentyczności e-maili (The Bat! i OpenPGP)
(25924
odsłon)
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 autentycznamoż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:
 Uruchamiamy menedżera kluczy
 Wypełniamy dane właściciela (wyskoczy samo przy pierwszym uruchomieniu)

Podajemy rozmiar klucza (większy bezpieczniejszy, mniejszy szybszy)
 Określamy, jak długo będzie ważny
 Podajemy hasło dla klucza prywatnego, to dodatkowe zabezpieczenie
 Po takiej operacji w naszej bazie kluczy mamy własny klucz prywatny i publiczny
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 |
[ Indeks sekcji ]
|
|