Tajne przez poufne, czyli o szyfrowaniu poczty elektronicznej
Data publikacji: 20.04.2010
W dobie rosnącej mocy obliczeniowej komputerów oraz powszechnego dostępu do Internetu coraz częściej korzystamy z elektronicznego obiegu informacji. Dziś za pomocą globalnej sieci przesyłamy już nie tylko świąteczne pocztówki, ale coraz częściej „odważamy” się dysponować naszym bankowym kontem, składać urzędowe wnioski czy wreszcie rozdysponowywać tajnymi (z naszego punktu widzenia) danymi.
Wysyłamy dziesiątki wiadomości, siedząc w domowym zaciszu, pracując czy wreszcie przeciskając się komunikacją po zatłoczonym mieście. Chyba niewielu z nas chciałoby, by w tej wymianie informacji uczestniczyły osoby trzecie?
Jak zabezpieczyć pocztę?
Bezpieczeństwo komunikacji w sieci jest tak ważne, jak cenne są dla nas dane przesyłane za pośrednictwem poczty. Po pierwsze, trzeba odpowiedzieć sobie na pytanie, co chcemy zabezpieczyć? Możemy zatem mówić o funkcjach bezpieczeństwa takich jak:
Kryptografia oferuje w swym konwencjonalnym wydaniu przede wszystkim techniki szyfrowania symetrycznego (np. AES, DES itp.), które spełniają tylko jedną z funkcji bezpieczeństwa (poufność danych). Potęga Internetu stawia jednak tym tradycyjnym metodom przeszkodę w postaci dystrybucji klucza używanego do szyfrowania informacji. Bo niby jak możemy bezpiecznie „podzielić” się kluczem z osobą, która znajduje się po drugiej stronie kuli ziemskiej? Z pomocą przychodzi tu model szyfrowania asymetrycznego, który polega na wygenerowaniu pary kluczy – prywatnego, przypisanego uczestnikowi komunikacji, i publicznego – ogólnie dostępnego.
Najlepszym rozwinięciem zagadnienia szyfrowania danych z użyciem pary kluczy będzie poniższy przykład:
Użytkownik A, chcąc zachować poufność wysyłanych danych, przesyła Użytkownikowi B wiadomość, którą szyfruje kluczem publicznym Użytkownika B. Aby odszyfrować wiadomość, Użytkownik B musi użyć swojego klucza prywatnego.
W kontekście poczty elektronicznej możemy mówić o kilku standardach szyfrowania wymienianych informacji. Niestety, niektóre z nich są autorskimi rozwiązaniami wielkich producentów oprogramowania i przeciętny użytkownik nie będzie miał nigdy okazji się do nich nawet „zbliżyć”. Najpopularniejszymi dostępnymi standardami są PGP (Pretty Good Privacy) oraz S / MIME. Przyjrzyjmy się pokrótce każdemu z nich: PGP został zapoczątkowany w 1991 roku przez Philipa Zimmermanna jako prosta forma zabezpieczenia poczty elektronicznej oraz określony w postaci standardu OpenPGP. Można powiedzieć, że działa na zasadzie „przyjaciele naszych przyjaciół są naszymi przyjaciółmi”. Poziom autentyczności publicznego jest determinowany przez sumę zaszyfrowanych za jego pomocą wiadomości przez różne osoby znające posiadacza klucza. Siłę certyfikatu wystawionego za pośrednictwem klucza ustala grono osób potwierdzających zaufanie do wystawcy certyfikatu – zdobywa się je z czasem i wzrasta ono wraz z ilością osób potwierdzających wiarygodność klucza. Im większe grono osób potwierdzających ten klucz – tym zaufanie jest „silniejsze”. W praktyce sprowadza się to do ręcznego umieszczania kluczy publicznych „znajomych” w lokalnym repozytorium klienta pocztowego. Istnieją także dedykowane serwery, które utrzymują listy kluczy publicznych wygenerowanych w standardzie PGP i co najważniejsze są ogólnodostępne. S / MIME jest natomiast bardziej rozbudowanym standardem, którego rdzeń opiera się (podobnie jak PGP) na koncepcji par kluczy, natomiast wiarygodność wydanych certyfikatów spoczywa na barkach tzw. Urzędów Certyfikacji (CA – Certificate Authority). Pełnią one rolę zaufanej trzeciej strony w stosunku do podmiotów oraz użytkowników certyfikatów. Urzędy te, wystawiając klucze i certyfikaty, potwierdzają autentyczność obu zwracających się do niego stron. W Polsce takim centrum jest np. Sigillum. S / MIME posługuje się kluczami publicznymi opakowanymi w certyfikaty X.509. To, co rozróżnia oba wymienione standardy, to sposób wygenerowania kluczy. W przypadku PGP / OpenPGP należy skorzystać z jednej implementacji tego standardu (np. GnuPG) i wywołać odpowiednie polecenie z linii komend bądź skorzystać z klienta pocztowego, który wykorzystując daną implementację, przeprowadzi nas przez proces generacji kluczy, oferując przyjazny interfejs graficzny. W przypadku S / MIME sprawa nieco się komplikuje. Owszem, istnieje możliwość wygenerowania kluczy we własnym zakresie (np. przy użyciu OpenSSL), ale obarczone jest to dużym nakładem pracy. Musimy stworzyć imitację CA, tj. certyfikat naszego „centrum”, który będzie potwierdzał autentyczność właściwego klucza publicznego oraz zainstalować takie CA w kliencie pocztowym. Jest też druga droga, która niestetywiąże się z wydatkami oraz procesem składania wniosku do Urzędu Certyfikacji. Posiadanie „legalnego” komercyjnego certyfikatu (tylko taki może być używany do podpisywania i szyfrowania poczty elektronicznej) to już znaczny wydatek przewyższający przykładowo cenę dwuletniej subskrypcji dobrego oprogramowania antywirusowego. Zaletą jest przede wszystkim to, że taki certyfikat możemy wykorzystać w każdym innym, przewidzianym przez ustawę celu. Klucz prywatny nie jest już plikiem, który skrzętnie ukrywamy przed osobami trzecimi, tylko rezyduje na zabezpieczonym pinem tokenie.
Konfiguracja opcji szyfrowania i podpisywania poczty elektronicznej
Najpopularniejszym sposobem zabezpieczania plików jest posługiwanie się hasłem. Metoda ta ma jednak tę wadę, że hasła albo są zbyt proste i łatwo je złamać za pośrednictwem ataków słownikowych czy tablic tęczowych, albo są zbyt złożone, przez co trudne do zapamiętania. Dlatego skuteczniejszym sposobem ochrony danych jest używanie generatorów haseł lub szyfrowanie plików (zdjęć, filmów) przed wysłaniem. Szyfry to algorytmy matematyczne służące do zabezpieczania plików. Mogą być one oparte o system kluczy, dzięki czemu osoby nieposiadające klucza nie będę mogły odtworzyć pliku i tekstu jawnego. Najwięcej zwolenników wśród użytkowników Linuxa ma popularne GPGP. Jest to program do szyfrowania hybrydowego, tj. używający kombinacji tradycyjnych szyfrów symetrycznych i kryptografii klucza publicznego. Standardowo GPGP dostarczane jest w większości pakietów dystrybucyjnych GNU/ Linux i uruchamia się z linii poleceń. Na rynku dostępnych jest sporo interfejsów graficznych. Eksperci nie zalecają jednak ich używania ze względu na zbyt częste przypadki braku wsparcia dla tych programów, a w efekcie utratę kontroli i gwarancji bezpieczeństwa. Pamiętać należy jedynie o tym, by pliku szyfrowanego nie wysyłać z kluczem (a przekazywać go inną drogą). Teorię szyfrowania wiadomości zaprezentujemy na przykładzie. Do tego celu posłuży nam klient poczty Mozilla Thunderbird, będziemy też musieli założyć 2 konta: nadawcy i adresata wiadomości oraz wygenerować dla nich odpowiednio pary kluczy (np. za pomocą OpenSSL).
Podpisywanie i szyfrowanie wiadomości przy użyciu S / MIME
Wybierając opcję Edycja -> Konfiguracja kont..., należy wybrać konto, dla którego chcemy skonfigurować opcje szyfrowania i / lub podpisywania poczty elektronicznej oraz przejść do zabezpieczeń konta. W przykładzie, dla ułatwienia, oba konta skonfigurowane są dla tego samego klienta. W rzeczywistych warunkach, aby wysłać zaszyfrowaną wiadomość do adresata, należy zadbać o umieszczenie jego klucza publicznego w repozytorium certyfikatów Mozilla Thunderbird. Potrzebny będzie nam certyfikat, przy użyciu którego podpiszemy wiadomość. Przykładowo, użyjemy certyfikatu spreparowanego za pomocą OpenSSL. Certyfikat należy zaimportować, klikając przycisk Wyświetl Certyfikaty oraz przechodząc do zakładki Certyfikaty użytkownik, a następnie klikając przycisk Importuj... Certyfikat powinien zawierać klucz prywatny, który będzie niezbędny do podpisywania danych (np. w formacie PKCS12). Czynność należy powtórzyć dla Adresata i Nadawcy, wybierając odpowiednio certyfikaty wygenerowane w formacie PKCS12 dla obu stron. Należy zatwierdzić operację, klikając OK. Teraz mamy możliwość wyboru certyfikatu i przypisania go do celów podpisu i / lub szyfrowania wiadomości elektronicznej. Klucz prywatny certyfikatu wybranego do podpisu będzie użyty do wygenerowania skrótu wiadomości. Klucz publiczny będzie natomiast użyty odpowiednio do odszyfrowania i zaszyfrowania wiadomości przez nadawcę – szyfruje on wiadomość przy użyciu naszego klucza publicznego, dzięki czemu tylko my jesteśmy w stanie ją odszyfrować. Opcjonalnie, możemy ustanowić domyślne podpisywanie wiadomości oraz szyfrowanie (należy pamiętać o tym, iż w przypadku wybrania tej drugiej opcji wiadomość zostanie wysłana tylko w przypadku, gdy jesteśmy w posiadaniu klucza publicznego adresata).
Wysłanie podpisywanej i zaszyfrowanej wiadomości
W poprzednim kroku skonfigurowaliśmy odpowiednie opcje dotyczące podpisywania i szyfrowania wiadomości, zatem możemy przystąpić do przetestowana bezpiecznej komunikacji. Używając konta nadawcy, spreparujmy przykładową wiadomość. Teraz wystarczy już tylko wybrać odpowiednią opcję z menu S / MIME -> Zaszyfruj tę wiadomość oraz Podpisz cyfrowo tę wiadomość i kliknąć Wyślij. Na koncie adresata powinna pojawić się nowa (odszyfrowana!) wiadomość. Klikając w prawym górnym rogu wiadomości na widoczną kłódkę, zobaczymy informację o zabezpieczeniu wiadomości.
download.lpmagazine.org
wstecz
Jak zabezpieczyć pocztę?
Bezpieczeństwo komunikacji w sieci jest tak ważne, jak cenne są dla nas dane przesyłane za pośrednictwem poczty. Po pierwsze, trzeba odpowiedzieć sobie na pytanie, co chcemy zabezpieczyć? Możemy zatem mówić o funkcjach bezpieczeństwa takich jak:
- autentyczność, która polega na weryfikacji tożsamości uczestnika wymiany informacji;
- niezaprzeczalność wykonanej operacji na danych, tj. brak możliwości wyparcia się uczestnictwa;
- poufność danych, których treści nie chcemy zdradzać;
- integralność, czyli brak możliwości modyfikacji danych przez osoby postronne.
Kryptografia oferuje w swym konwencjonalnym wydaniu przede wszystkim techniki szyfrowania symetrycznego (np. AES, DES itp.), które spełniają tylko jedną z funkcji bezpieczeństwa (poufność danych). Potęga Internetu stawia jednak tym tradycyjnym metodom przeszkodę w postaci dystrybucji klucza używanego do szyfrowania informacji. Bo niby jak możemy bezpiecznie „podzielić” się kluczem z osobą, która znajduje się po drugiej stronie kuli ziemskiej? Z pomocą przychodzi tu model szyfrowania asymetrycznego, który polega na wygenerowaniu pary kluczy – prywatnego, przypisanego uczestnikowi komunikacji, i publicznego – ogólnie dostępnego.
Najlepszym rozwinięciem zagadnienia szyfrowania danych z użyciem pary kluczy będzie poniższy przykład:
Użytkownik A, chcąc zachować poufność wysyłanych danych, przesyła Użytkownikowi B wiadomość, którą szyfruje kluczem publicznym Użytkownika B. Aby odszyfrować wiadomość, Użytkownik B musi użyć swojego klucza prywatnego.
W kontekście poczty elektronicznej możemy mówić o kilku standardach szyfrowania wymienianych informacji. Niestety, niektóre z nich są autorskimi rozwiązaniami wielkich producentów oprogramowania i przeciętny użytkownik nie będzie miał nigdy okazji się do nich nawet „zbliżyć”. Najpopularniejszymi dostępnymi standardami są PGP (Pretty Good Privacy) oraz S / MIME. Przyjrzyjmy się pokrótce każdemu z nich: PGP został zapoczątkowany w 1991 roku przez Philipa Zimmermanna jako prosta forma zabezpieczenia poczty elektronicznej oraz określony w postaci standardu OpenPGP. Można powiedzieć, że działa na zasadzie „przyjaciele naszych przyjaciół są naszymi przyjaciółmi”. Poziom autentyczności publicznego jest determinowany przez sumę zaszyfrowanych za jego pomocą wiadomości przez różne osoby znające posiadacza klucza. Siłę certyfikatu wystawionego za pośrednictwem klucza ustala grono osób potwierdzających zaufanie do wystawcy certyfikatu – zdobywa się je z czasem i wzrasta ono wraz z ilością osób potwierdzających wiarygodność klucza. Im większe grono osób potwierdzających ten klucz – tym zaufanie jest „silniejsze”. W praktyce sprowadza się to do ręcznego umieszczania kluczy publicznych „znajomych” w lokalnym repozytorium klienta pocztowego. Istnieją także dedykowane serwery, które utrzymują listy kluczy publicznych wygenerowanych w standardzie PGP i co najważniejsze są ogólnodostępne. S / MIME jest natomiast bardziej rozbudowanym standardem, którego rdzeń opiera się (podobnie jak PGP) na koncepcji par kluczy, natomiast wiarygodność wydanych certyfikatów spoczywa na barkach tzw. Urzędów Certyfikacji (CA – Certificate Authority). Pełnią one rolę zaufanej trzeciej strony w stosunku do podmiotów oraz użytkowników certyfikatów. Urzędy te, wystawiając klucze i certyfikaty, potwierdzają autentyczność obu zwracających się do niego stron. W Polsce takim centrum jest np. Sigillum. S / MIME posługuje się kluczami publicznymi opakowanymi w certyfikaty X.509. To, co rozróżnia oba wymienione standardy, to sposób wygenerowania kluczy. W przypadku PGP / OpenPGP należy skorzystać z jednej implementacji tego standardu (np. GnuPG) i wywołać odpowiednie polecenie z linii komend bądź skorzystać z klienta pocztowego, który wykorzystując daną implementację, przeprowadzi nas przez proces generacji kluczy, oferując przyjazny interfejs graficzny. W przypadku S / MIME sprawa nieco się komplikuje. Owszem, istnieje możliwość wygenerowania kluczy we własnym zakresie (np. przy użyciu OpenSSL), ale obarczone jest to dużym nakładem pracy. Musimy stworzyć imitację CA, tj. certyfikat naszego „centrum”, który będzie potwierdzał autentyczność właściwego klucza publicznego oraz zainstalować takie CA w kliencie pocztowym. Jest też druga droga, która niestetywiąże się z wydatkami oraz procesem składania wniosku do Urzędu Certyfikacji. Posiadanie „legalnego” komercyjnego certyfikatu (tylko taki może być używany do podpisywania i szyfrowania poczty elektronicznej) to już znaczny wydatek przewyższający przykładowo cenę dwuletniej subskrypcji dobrego oprogramowania antywirusowego. Zaletą jest przede wszystkim to, że taki certyfikat możemy wykorzystać w każdym innym, przewidzianym przez ustawę celu. Klucz prywatny nie jest już plikiem, który skrzętnie ukrywamy przed osobami trzecimi, tylko rezyduje na zabezpieczonym pinem tokenie.
Konfiguracja opcji szyfrowania i podpisywania poczty elektronicznej
Najpopularniejszym sposobem zabezpieczania plików jest posługiwanie się hasłem. Metoda ta ma jednak tę wadę, że hasła albo są zbyt proste i łatwo je złamać za pośrednictwem ataków słownikowych czy tablic tęczowych, albo są zbyt złożone, przez co trudne do zapamiętania. Dlatego skuteczniejszym sposobem ochrony danych jest używanie generatorów haseł lub szyfrowanie plików (zdjęć, filmów) przed wysłaniem. Szyfry to algorytmy matematyczne służące do zabezpieczania plików. Mogą być one oparte o system kluczy, dzięki czemu osoby nieposiadające klucza nie będę mogły odtworzyć pliku i tekstu jawnego. Najwięcej zwolenników wśród użytkowników Linuxa ma popularne GPGP. Jest to program do szyfrowania hybrydowego, tj. używający kombinacji tradycyjnych szyfrów symetrycznych i kryptografii klucza publicznego. Standardowo GPGP dostarczane jest w większości pakietów dystrybucyjnych GNU/ Linux i uruchamia się z linii poleceń. Na rynku dostępnych jest sporo interfejsów graficznych. Eksperci nie zalecają jednak ich używania ze względu na zbyt częste przypadki braku wsparcia dla tych programów, a w efekcie utratę kontroli i gwarancji bezpieczeństwa. Pamiętać należy jedynie o tym, by pliku szyfrowanego nie wysyłać z kluczem (a przekazywać go inną drogą). Teorię szyfrowania wiadomości zaprezentujemy na przykładzie. Do tego celu posłuży nam klient poczty Mozilla Thunderbird, będziemy też musieli założyć 2 konta: nadawcy i adresata wiadomości oraz wygenerować dla nich odpowiednio pary kluczy (np. za pomocą OpenSSL).
Podpisywanie i szyfrowanie wiadomości przy użyciu S / MIME
Wybierając opcję Edycja -> Konfiguracja kont..., należy wybrać konto, dla którego chcemy skonfigurować opcje szyfrowania i / lub podpisywania poczty elektronicznej oraz przejść do zabezpieczeń konta. W przykładzie, dla ułatwienia, oba konta skonfigurowane są dla tego samego klienta. W rzeczywistych warunkach, aby wysłać zaszyfrowaną wiadomość do adresata, należy zadbać o umieszczenie jego klucza publicznego w repozytorium certyfikatów Mozilla Thunderbird. Potrzebny będzie nam certyfikat, przy użyciu którego podpiszemy wiadomość. Przykładowo, użyjemy certyfikatu spreparowanego za pomocą OpenSSL. Certyfikat należy zaimportować, klikając przycisk Wyświetl Certyfikaty oraz przechodząc do zakładki Certyfikaty użytkownik, a następnie klikając przycisk Importuj... Certyfikat powinien zawierać klucz prywatny, który będzie niezbędny do podpisywania danych (np. w formacie PKCS12). Czynność należy powtórzyć dla Adresata i Nadawcy, wybierając odpowiednio certyfikaty wygenerowane w formacie PKCS12 dla obu stron. Należy zatwierdzić operację, klikając OK. Teraz mamy możliwość wyboru certyfikatu i przypisania go do celów podpisu i / lub szyfrowania wiadomości elektronicznej. Klucz prywatny certyfikatu wybranego do podpisu będzie użyty do wygenerowania skrótu wiadomości. Klucz publiczny będzie natomiast użyty odpowiednio do odszyfrowania i zaszyfrowania wiadomości przez nadawcę – szyfruje on wiadomość przy użyciu naszego klucza publicznego, dzięki czemu tylko my jesteśmy w stanie ją odszyfrować. Opcjonalnie, możemy ustanowić domyślne podpisywanie wiadomości oraz szyfrowanie (należy pamiętać o tym, iż w przypadku wybrania tej drugiej opcji wiadomość zostanie wysłana tylko w przypadku, gdy jesteśmy w posiadaniu klucza publicznego adresata).
Wysłanie podpisywanej i zaszyfrowanej wiadomości
W poprzednim kroku skonfigurowaliśmy odpowiednie opcje dotyczące podpisywania i szyfrowania wiadomości, zatem możemy przystąpić do przetestowana bezpiecznej komunikacji. Używając konta nadawcy, spreparujmy przykładową wiadomość. Teraz wystarczy już tylko wybrać odpowiednią opcję z menu S / MIME -> Zaszyfruj tę wiadomość oraz Podpisz cyfrowo tę wiadomość i kliknąć Wyślij. Na koncie adresata powinna pojawić się nowa (odszyfrowana!) wiadomość. Klikając w prawym górnym rogu wiadomości na widoczną kłódkę, zobaczymy informację o zabezpieczeniu wiadomości.
Źródło: Linux +, Katarzyna Wojda, Łukasz Korzeniowski - Konsultanci IT Kontrakt, Tajne przez poufne, czyli o szyfrowaniu poczty elektronicznej, maj 2010
download.lpmagazine.org
wstecz


