Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!



Ostatnia aktualizacja strony: 13.05.2017

Szyfrowanie komunikacji internetowej/telefonicznej

Kliknij, aby pominąć teorię i przejść do opisu gotowych programów

W tradycyjnej poczcie gwarancją, że nikt nie czytał naszych listów, jest zaklejona koperta. Jednak stosowanych w komunikacji elektronicznej sygnałów elektrycznych i elektromagnetycznych nie można w ten sposób zabezpieczyć. Zazwyczaj podczas komunikacji na większe odległości wymagany jest jakiś pośrednik, który ma dostęp do przesyłanych treści. Na przykład, gdyby do łączności przewodowej stosować oddzielną linię pomiędzy każdą parą użytkowników, ich ilość byłaby ogromna((n^2-n)/2, gdzie n jest liczbą urządzeń w takiej sieci), a z większości i tak nikt nie skorzystałby ani razu - trzeba więc stosować routery, które kierują sygnały do odpowiednich przewodów. Zarówno w komunikacji przewodowej, jak i bezprzewodowej muszą zwykle istnieć urządzenia wzmacniające sygnał (np. maszty BTS w telefonii komórkowej). Poza tym często korzystamy ze zcentralizowanych serwisów przechowujących nasze wiadomości (wyjątkiem mogą być np. przedsiębiorstwa posiadające w swoich budynkach serwery e-mail). Jedynym rozwiązaniem na zachowanie poufności informacji jest jej zaszyfrowanie tak, aby tylko nadawca i odbiorca znał jej treść (end-to-end).

Kryptografia znana jest już od starożytności (np. szyfr Cezara), jednak stosowane wówczas algorytmy mogłyby zostać łatwo złamane przy użyciu współczesnych komputerów. Z tego względu wprowadzono nowe metody szyfrowania. Są one dużo bardziej skomplikowane, jednak korzystanie z nich nie powinno sprawiać problemów przeciętnemu użytkownikowi (wszystkie obliczenia są automatycznie przeprowadzane przez jego sprzęt). Algorytmy kryptograficzne są powszechnie stosowane nie tylko przez wojsko i tajne służby, ale również przez wszystkich użytkowników Internetu, nawet tych niedbających o swoją prywatność. Protokół HTTPS umożliwia bezpieczną transmisję danych pomiędzy serwerem a komputerem użytkownika, algorytmy z serii A5 chronią sygnał przesyłany z telefonów komórkowych do stacji bazowych i na odwrót, a kontrowersyjna technologia HDCP szyfruje obraz w jakości HD przesyłany z komputera do monitora lub z dekodera do telewizora, aby uniemożliwić jego kopiowanie. Tylko czy stosowanie kryptografii w taki sposób rzeczywiście chroni prywatność użytkowników? Niezupełnie - zarówno operatorzy telefonii stacjonarnej lub komórkowej, jak i właściciele Facebooka, Google'a i innych serwisów internetowych zazwyczaj mają dostęp do osobistych informacji przesyłanych za ich pośrednictwem. Szyfrowanie end-to-end jest więc jedynym sposobem, aby temu zapobiec.

Szyfrowanie symetryczne

Korzystanie z tej techniki wymaga uzgodnienia nadawcy z odbiorcą odpowiedniego algorytmu oraz tajnego hasła. Nadawca szyfruje swoją wiadomość przy ich użyciu, a następnie wysyła ją do odbiorcy, który, znając hasło, może ją odszyfrować i przeczytać. Jednak z powodu konieczności ukrycia hasła nie można przesyłać go kanałami narażonymi na podsłuchiwanie. Czy da się jakoś ominąć ten problem?

Szyfrowanie asymetryczne

Szyfrowanie asymetryczne bazuje na tym, że niektóre operacje arytmetyczne można łatwo przeprowadzić w jedną stronę, ale otrzymanie początkowej wartości na podstawie ich wyniku jest bardzo złożone obliczeniowo. Każdy użytkownik systemów korzystających z tego szyfrowania posiada dwa powiązane ze sobą klucze: prywatny i publiczny, przy czym zastosowany algorytm musi zapewniać, że odtworzenie klucza prywatnego na podstawie publicznego jest niezwykle trudne. Każdy, kto chce otrzymywać od innych szyfrowane wiadomości, musi udostępnić im swój klucz publiczny (np. ustawiając w swojej skrzynce pocztowej dodawanie go w podpisach maili), natomiast klucza prywatnego powinien dobrze pilnować. Nadawca szyfruje wiadomości kluczem publicznym otrzymanym od adresata, który następnie odszyfrowuje je swoim kluczem prywatnym. Kluczom można przyporządkować również termin ważności, po którym trzeba będzie je zmienić (co jest możliwe również wtedy, gdy użytkownicy nie mogą się ze sobą spotkać przez dłuższy czas).

Czy w przypadku szyfrowania asymetrycznego użytkownik może ściągnąć i przeczytać wiadomości, które sam wysłał innej osobie, lub niewysłane wersje robocze? Tak - wystarczy, że jego urządzenie zapisze na serwerze dwa szyfrogramy: jeden zabezpieczony kluczem publicznym adresata, a drugi - jego własnym.

Szyfrowanie hybrydowe

Wykonywanie algorytmów szyfrowania asymetrycznego jest bardziej czasochłonne, niż w przypadku kryptografii symetrycznej. Z tego względu wiele programów w rzeczywistości wykorzystuje kryptografię asymetryczną jedynie do przesłania przypisanego do danej rozmowy klucza prywatnego (wylosowanego przez komputer jednego z użytkowników), który jest następnie stosowany do szyfrowania i deszyfrowania wiadomości. Podobnie, jak w poprzednim przypadku, jeśli zaszyfrowane wiadomości mają być przechowywane na serwerze, użytkownik generujący klucz prywatny rozmowy musi zaszyfrować go zarówno kluczem publicznym drugiej osoby, jak i swoim.

Podpis cyfrowy

Zaszyfrowanie wiadomości umożliwia zabezpieczenie jej przed dostępem osób niepowołanych, ale nie daje adresatowi gwarancji, że nadawca jest tym, za kogo się podaje. Ten problem jest szczególnie poważny w przypadku e-maili. Żeby mieć możliwość wysyłania ich z cudzego adresu, nie trzeba być hakerem ani właścicielem serwera - wystarczy skorzystać z odpowiedniego, ogólnodostępnego oprogramowania. Jednak okazuje się, że można rozwiązać ten problem, wykorzystując te same pary kluczy, które służą do szyfrowania i deszyfrowania. Nadawca załącza do swojej wiadomości podpis - plik wygenerowany na podstawie przesyłanej treści oraz jego klucza prywatnego (ale nie umożliwiający jego odtworzenia). Odbiorca może, korzystając z klucza publicznego nadawcy, treści wiadomości i podpisu, zweryfikować jego poprawność. Podpisywanie wiadomości i jej szyfrowanie mogą być uruchamiane niezależnie od siebie nawzajem.

Przykładowe programy do szyfrowania end-to-end na PC i Androida (oczywiście wszystkie open-source)

Signal

Signal jest aplikacją na Androida umożliwiającą wysyłanie szyfrowanych asymetrycznie wiadomości tekstowych i wykonywanie połączeń głosowych (niestety, aktualnie tylko przez Internet). Dawniej dzielił się na dwa oddzielne programy: TextSecure i RedPhone. Nowi użytkownicy rejestrują się podając swój numer telefonu, po czym otrzymują SMS z kodem weryfikującym, który zostaje odczytany przez aplikację. Podczas wybrania numeru adresata aplikacja sprawdza, czy jest on zarejestrowany. Jeśli tak, możemy wysłać zaszyfrowaną wiadomość.

SureSpot

SureSpot również jest aplikacją na Androida służącą do szyfrowanej komunikacji za pośrednictwem serwerów należących do jego producenta. Jednak, w przeciwieństwie do Signal, konto nie jest powiązane z numerem telefonu, tylko z nickiem, co zwiększa anonimowość i ułatwia rejestrację. Aby zaprosić znajomych do korzystania z SureSpot, trzeba podać im swoją nazwę użytkownika, ewentualnie wysłać link wygenerowany przez aplikację lub dać do zeskanowania wyświetlany przez nią fotokod. Użytkownicy mogą za darmo przesyłać wiadomości tekstowe, głosowe i zdjęcia. Jeśli jedna osoba usunie wiadomość ze swojej skrzynki, zniknie ona również u jej współrozmówców (oczywiście, podobnie jak np. w SnapChat, takie zabezpieczenie można łatwo obejść). Surespot daje duże możliwości, jeśli chodzi o personalizację: można ustawić grafikę wyświetlaną w tle, a także każdemu użytkownikowi spośród znajomych przyporządkować własną nazwę i ikonkę. Ostatnio otwarte rozmowy są wyświetlane w formie łatwo dostępnych zakładek (które można miarę potrzeby zamykać), a funkcja wyświetlania odcisków kluczy publicznych ułatwia ochronę przed atakiem man in the middle.

Silence

Silence (dawniej SMSSecure) - tzw. fork TextSecure, różniący się od niego tym, że wymiana kluczy publicznych oraz zaszyfrowanych wiadomości następuje poprzez zwykłe SMS-y, a nie przez Internet. Dzięki temu nie jest wymagana rejestracja na żadnym serwerze. Aby zacząć korzystać z Silence, należy ustawić je jako domyślną aplikację do odbierania i wysyłania wiadomości tekstowych, np. dotykając okienko widoczne po pierwszym uruchomieniu (wprowadzoną zmianę można łatwo cofnąć). Po modyfikacji tego ustawienia możemy zaimportować wcześniejsze SMS-y z domyślnej aplikacji, choć nie jest to obowiązkowe. Silence umożliwia wysyłanie i odbieranie również nieszyfrowanych wiadomości - za pomocą przycisku z kłódką możemy włączać i wyłączać bezpieczną sesję z wybranym numerem.

Aplikacja potrafi automatycznie wykrywać, czy osoba, z którą piszemy, też jej używa. Przed wysłaniem nieszyfrowanego SMS-a Silence dodaje na jego końcu 10 spacji (nie dotyczy numerów specjalnych, np. odbierających SMS-y premium), a po odebraniu oznaczonej w ten sposób wiadomości proponuje zainicjowanie wymiany kluczy publicznych i rozpoczęcie bezpiecznej sesji.

We wcześniejszej wersji Silence po ustawieniu go jako domyślnej aplikacji SMS często nie wyświetlały się powiadomienia o nowych wiadomościach, jednak ostatnie aktualizacje prawdopodobnie rozwiązały ten problem. Możliwe jest jednak wyłączanie powiadomień albo całkowite blokowanie SMS-ów od wybranych nadawców - również wtedy, kiedy sieć nie przysyła nam ich numeru, tylko nazwę (często w ten sposób dostarczane są reklamy), co w domyślnej aplikacji nie było możliwe.

ChatSecure

ChatSecure umożliwia szyfrowaną, jak również nieszyfrowaną, komunikację poprzez Hangouts i wiele innych komunikatorów. Posiada funkcję powiadomień, dzięki czemu w przeszłości można było nim zastąpić oficjalną aplikację Facebook Messenger, który szpieguje użytkowników, np. wysyłając w tle ich lokalizację na serwery portalu społecznościowego (można to zauważyć dzięki migającej ikonce nawigacji na pasku powiadomień). Niestety obecnie nie jest to już możliwe, ponieważ Facebook zablokował swoje API.

APG

APG to również aplikacja na Androida, jednak nie jest powiązana z żadnym komunikatorem. Przy jej użyciu można szyfrować i deszyfrować teksty oraz pliki metodą zarówno symetryczną, jak i asymetryczną, oraz używać jej do komunikacji w podsłuchiwanych serwisach. Prostą, choć niezbyt wygodną metodą wymiany wiadomości pomiędzy programem a np. otwartym w przeglądarce komunikatorem Facebook jest ich kopiowanie i wklejanie. Jest też możliwość zintegrowania APG z innymi zainstalowanymi aplikacjami, które oferują taką możliwość.

BitMessage

BitMessage jest programem nieposiadającym centralnego serwera (sieć P2P), napisanym na podstawie algorytmów stosowanych w Bitcoinie. Bardziej szczegółowo opisałem go na tej stronie.

Mozilla Thunderbird + Enigmail + GnuPG

Mozilla Thunderbird jest programem służącym do korzystania ze skrzynki mailowej. Podobnie, jak w przeglądarce Mozilla Firefox, można w niej instalować różne dodatki. Jednym z nich jest Enigmail - łatwo się domyślić, do czego służy. Jednak korzysta on z programu GnuPG, który też musimy zainstalować.

FirePGP

Zalogowanie się do skrzynki e-mail poprzez programy typu Thunderbird nie zawsze jest możliwe. W przypadku niektórych skrzynek e-mail możemy korzystać jedynie z wersji przeglądarkowej. Jak wówczas zabezpieczyć swoje wiadomości? Rozwiązaniem jest FirePGP - rozszerzenie Mozilli Firefox umożliwiające szyfrowanie i deszyfrowanie tekstów oraz zarządzanie kluczami.

7-Zip

Program ten służy do tworzenia archiwów oraz ich otwierania. Obsługuje formaty takie, jak .zip, .rar (można nim zastąpić płatny WinRAR) i .7z. Posiada funkcję szyfrowania symetrycznego, umożliwiającą bezpieczne przesyłanie załączników do maili. Jednocześnie zarchiwizowane pliki będą miały mniejszy rozmiar, co może przyspieszyć ich wysłanie.

ProtonMail

ProtonMail jest serwisem e-mail wyróżniającym się możliwością wysyłania szyfrowanych wiadomości bez konieczności instalacji dodatkowych programów. Współczesne strony internetowe są niejednokrotnie czymś więcej, niż statycznymi dokumentami - można umieszczać w nich niewielkie skrypty wykonywane przez przeglądarki (np. napisane w języku JavaScript). W ProtonMail wykorzystano tę możliwość do implementacji algorytmów kryptograficznych działających na komputerze użytkownika (pobieranych do pamięci operacyjnej przy otwieraniu webmaila). Podczas rejestracji oprócz hasła umożliwiającego logowanie się trzeba ustawić drugie, przeznaczone do deszyfrowania maili. Nie jest ono wysyłane na serwer, który otrzymuje od przeglądarki jedynie wygenerowaną przez nią parę kluczy, przy czym klucz prywatny jest zaszyfrowany symetrycznie przy pomocy tego hasła, zanim opuści urządzenie użytkownika. Hasło odszyfrowujące można zresetować, jednak spowoduje to utratę dostępu do poprzednich wiadomości. Z ProtonMail można korzystać także poprzez aplikację mobilną (oczywiście również z funkcją szyfrowania).

A co, jeśli osoba, z którą chcemy się komunikować, nie korzysta z ProtonMail? Wówczas możemy wysłać jej nieszyfrowanego maila albo skorzystać z szyfrowania symetrycznego. W tym celu trzeba uzgodnić z nią hasło (osobiście lub poprzez inny, szyfrowany komunikator) przeznaczone do odszyfrowania wiadomości. Adresat otrzyma link prowadzący do strony zawierającej zaszyfrowaną wiadomość i skrypt odszyfrowujący ją po podaniu hasła (w przeglądarce), który umożliwia także wysłanie zabezpieczonej odpowiedzi. Niestety, na razie ProtonMail nie obsługuje PGP.

Minds

minds.com jest niedawno założonym portalem społecznościowym. Można z niego korzystać w przeglądarce lub poprzez aplikację mobilną (open-source). Użytkownik oprócz ogólnego hasła do logowania ustawia również drugie - przeznaczone do korzystania z bezpiecznego komunikatora (podobnie, jak w ProtonMail). Szyfrowanie i deszyfrowanie odbywa się w urządzeniu użytkownika (np. w przeglądarce z obsługą JavaScript - obecnie większość). Hasło można zmienić, jednak spowoduje to utratę dostępu do wcześniej odebranych wiadomości (chyba, że zrobi się ich kopię).

Firefox Hello

Niedawno dodana funkcja Mozilli Firefox umożliwia prowadzenie szyfrowanych wideorozmów. Osoba, do której dzwonimy, nie musi posiadać tej przeglądarki, nie trzeba też zakładać konta w żadnym serwisie - wystarczy, że wyślemy jej link automatycznie generowany po naciśnięciu odpowiedniego przycisku.

Mozilla zakończyła wsparcie dla Firefox Hello. Aktualizacja przeglądarki do wersji 49. lub nowszej spowoduje usunięcie tej funkcji. źródło

ChatCrypt

ChatCrypt jest prostym komunikatorem przeglądarkowym. Aby utworzyć nową rozmowę lub dołączyć do istniejącej, należy wprowadzić nazwę chatroom'u i hasło (uzgodnione ze współrozmówcami), jak również swoją nazwę użytkownika. Osoby prowadzące witryny internetowe mogą umieszczać na nich formularz przeznaczony do logowania (poprzez wklejenie kodu HTML) - przykład znajdziecie na dole mojej strony (z nieznanych przyczyn nie działa prawidłowo w Mozilli na Windowsie, co innego na Linuxie i Androidzie).

Zadania

  1. Pobierz zaszyfrowane archiwum i odszyfruj je, podając hasło stronasebastiana.
  2. Zainstaluj aplikację APG. Skopiuj poniższy tekst i odszyfruj go przy użyciu hasła kryptografiasymetryczna. Tekst:
    -----BEGIN PGP MESSAGE-----
    Version: APG v1.1.1
    
    jA0ECQMC2fKfhCh5y7Vg0p0BeLil1jKLXX2ORb4cBuS2+v5LtO7YSPvmMRBwqY3V
    tsTcEai6sX8lQ6e6MDgegWIg1xCNVKXsv8DAQezDSRH58nC1uZigr/ts+uo2sCG/
    c6qekuFfSPN+ElMdY+Qs+/sifN8OvHURWE7/sDbRMKiUPhZy6VBJNIkpl9tzYK15
    4nhCt/FrPZYsMNMLIq/bczMEQy3n9pZwU7IC6kxJ
    =bGIv
    -----END PGP MESSAGE-----
    
  3. Wyślij mi podpisanego cyfrowo i zaszyfrowanego (mój klucz publiczny) e-maila (sebastian@stronasebastiana.cba.pl). Załącz swój klucz publiczny, żebym mógł wysłać Ci zaszyfrowaną odpowiedź.
  4. Załóż konto na ProtonMail i wyślij mi e-maila (s[kropka]kusyk[at]protonmail[kropka]com).
  5. Załóż konto na Minds i ustaw hasło do komunikatora. Dodaj mnie do znajomych (nazwa użytkownika @Sebastian2 ) i wyślij mi wiadomość.
  6. Zainstaluj aplikację Surespot, dodaj mnie do znajomych (nazwa użytkownika Seba2016 ) i wyślij mi wiadomość.
  7. Pobierz BitMessage i wyślij mi wiadomość (adres BM-2cXpM2XGrEn2GFegYg7aLKNSLQnqdCPCrS ).

Jak zastosować kryptografię w swoich aplikacjach?

Ci z Was, którzy interesują się programowaniem, mogą samodzielnie tworzyć narzędzia do szyfrowanej komunikacji, bezpiecznego przechowywania plików w chmurze itp. W tym celu trzeba skorzystać z odpowiednio mocnych algorytmów. Są one dość skomplikowane, jednak do napisania działającej aplikacji nie jest konieczna ich dokładna znajomość - wystarczy zaimportować odpowiednią bibliotekę zawierającą potrzebne funkcje. http://www.javamex.com/tutorials/cryptography/rsa_encryption.shtmlhttp://www.javamex.com/tutorials/cryptography/rsa_encryption.shtml https://gist.github.com/bricef/2436364

Warto szyfrować wiadomości oraz pliki przechowywane w chmurze, ponieważ w ten sposób możemy ochronić prywatne dane przed dostępem osób niepowołanych. W dzisiejszych czasach istnieje wiele darmowych i łatwych w obsłudze narzędzi przeznaczonych do tego celu. A czy w podobny sposób możemy zabezpieczyć swoje pieniądze, nie rezygnując przy tym z płatności elektronicznych? Zapraszam na kolejną stronę, poświęconą kryptowalutom.

Początek strony