12/01/2017

Co to jest komunikator prywatny?

Prywatność Technologie

Co to jest komunikator prywatny? Wiele osób powie, że jest to aplikacja do komunikowania się, która szyfruje przesyłane informacje. W rzeczywistości temat prywatności korespondencji jest znacznie bardziej skomplikowany. Podczas wydarzenia Chaos Communication Congress eksperci Roland Schilling i Frieder Steinmetz wyjaśnili prostymi słowami w swoim wystąpieniu, co to jest komunikator prywatny i jakie cechy musi mieć taka aplikacja, aby można ją było za uznać za prywatną.

Sześć filarów rozmowy prywatnej

Aby zrozumieć ideę korespondencji prywatnej, Schilling i Steinmetz poprosili, abyśmy wyobrazili sobie rozmowę prywatną na przyjęciu. Co trzeba zrobić, aby rozmowa była prywatna? Trzeba znaleźć zaciszny pokój, w którym rozmowę będą słyszeć tylko dwie osoby — i nikt inny.

To podstawowy filar rozmowy prywatnej: bez względu na to, czy odbywa się ona osobiście, czy przez internet, musi być poufna. Słowa możesz słyszeć tylko Ty i Twój rozmówca.

Kolejną rzeczą jest autentyczność — musisz mieć pewność, że osoba, z którą rozmawiasz, jest na pewno tą, z którą masz zamiar rozmawiać. W prawdziwym życiu rozpoznasz czyjąś twarz, ale w rozmowie przez internet jest to nieco bardziej skomplikowane.

Jeśli rozmowa jest naprawdę ważna — a takie są zazwyczaj rozmowy prywatne — chcesz mieć pewność, że rozmówca słyszy każde Twoje słowo i wzajemnie. Co więcej, chcesz mieć pewność, że ta osoba słyszy dokładnie to, co mówisz. Aby rozmowa przez internet była prywatna, trzeba wiedzieć, że wiadomości nie zostaną przechwycone przez osobę trzecią. I taka jest koncepcja integralności, która także jest krytycznym wyznacznikiem rozmowy prywatnej.

Wyobraź sobie, że do pokoju wchodzi osoba trzecia i przez chwilę słyszy część Waszej rozmowy. W prawdziwym życiu osoba ta usłyszy tylko tyle, ile zostało powiedziane, gdy weszła, a nie to, co zostało powiedziane wcześniej czy po jej wyjściu. Tymczasem internet nie zapomina nigdy, a prowadzenie rozmowy online nie jest tak proste, jak spotkanie offline. To wskazuje dwa ważne aspekty prywatności komunikacji: zabezpieczenie wcześniejszej rozmowy i zabezpieczenie dalszej rozmowy.

Zabezpieczenie wcześniejszej rozmowy nie zezwala osobom trzecim na poznanie tego, o czym była rozmowa wcześniej, a zabezpieczenie dalszej rozmowy nie zezwala osobom trzecim na poznanie tego, co zostało powiedziane po jej opuszczeniu pokoju.

Przypuśćmy, że rozmowa dotyczyła wyjątkowo delikatnej kwestii. W tym przypadku, gdy ktoś oskarży Cię o powiedzenie czegoś na ten temat, będziesz chciał zaprzeczyć. Jeśli rozmowa była prywatna, jedyną osobą, która może to zacytować, jesteś Ty i rozmówca, więc mamy słowo przeciwko słowu. W takim przypadku nikt nie może niczego udowodnić, a to z kolei rodzi koncepcję możliwości zaprzeczenia.

Stosowanie prywatności w komunikatorach

Zatem jest to sześć funkcji, które muszą zostać zastosowane w aplikacjach do komunikowania się, zanim rozmowę będzie można nazwać prywatną. Nie tak trudno jest to osiągnąć w prawdziwym życiu, czyli w rozmowie prywatnej prowadzonej osobiście, lecz jeśli chodzi o usługi do kontaktowania się, zawsze jest ktoś trzeci — czyli sama usługa. W jaki sposób te sześć filarów stosuje się, biorąc pod uwagę obecność w rozmowie samego serwisu?

Poufność jest zapewniana przez szyfrowanie. Istnieją różne rodzaje szyfrowania, symetryczne i asymetryczne, czyli kryptografia klucza publicznego. Komunikatory prywatne (w tym przypadku Schilling i Steinmetz podali jako przykład komunikator Threema) używają obu rodzajów szyfrowania, tworząc klucz udostępniony z klucza publicznego jednej osoby i klucza prywatnego drugiej osoby. Lub klucza prywatnego pierwszej i prywatnego drugiej — obliczenia wykonywane w przypadku szyfrowania działają tak samo w obie strony.

Zatem, klucz jest taki sam i jest on unikatowy dla obu osób (żadna inna para nie ma takiego klucza). Aplikacja generuje klucz niezależnie i zapewnia poufność, ponieważ go nie przesyła — obie osoby otrzymują go tuż po rozpoczęciu rozmowy.

Metoda ta jest także używana do zapewnienia integralności — jeśli ktoś z zewnątrz dodałby coś do już zaszyfrowanego tekstu, stałby się on nieczytelny. Wówczas Twój rozmówca albo otrzymałby to, co mu wysłałeś, albo otrzymałby informację o błędzie (ponieważ komunikator nie potrafi odszyfrować szyfrogramu).

Dla zapewnienia większej poufności możesz w ogóle ukryć fakt rozmowy. Zadba o to kolejna warstwa szyfrowania. Wiadomość, którą wysyłasz, zostaje zaszyfrowana przy użyciu klucza udostępnionego Twojego i Twojego partnera — to jak wkładanie wiadomości w zaadresowaną kopertę. A następnie szyfrujesz ją znów — wkładasz w kolejną kopertę i wysyłasz na adres serwera komunikatora. W takiej sytuacji używasz klucza wygenerowanego na podstawie Twojego klucza i klucza serwera.

Zatem ta koperta-w-kopercie jest dostarczana na serwer komunikatora. Jeśli potencjalny atakujący spróbuje do niej zajrzeć, dowie się, że to Ty ją wysłałeś, ale nie pozna jej miejsca docelowego. Serwer komunikatora odpakowuje kopertę zewnętrzną, widzi adres docelowy (ale nie samą wiadomość), umieszcza pakiet w kolejnej kopercie i wysyła ją do odbiorcy. W tym miejscu potencjalny atakujący może zobaczyć jedynie kopertę od serwera komunikatora z adresem nadawcy, ale nie to, kto ją nadał.

Biorąc pod uwagę tak wiele kopert latających w różnych kierunkach, trudno jest wyśledzić, kto odebrał Twoją wiadomość. Trudno, ale nie jest to niemożliwe: jeśli ktoś zważy wszystkie koperty, znajdzie dwie z taką samą wagą i skojarzy Ciebie z rozmówcą. Aby temu zapobiec, system dodaje do każdej koperty losową wagę, tak aby wysyłana przez Ciebie koperta oraz koperta Twojego rozmówcy nie miały takiej samej wagi.

Trudniej jest zachować wiarygodność. Niektóre aplikacje do komunikowania się używają jako identyfikatorów adresów e-mail lub numerów telefonów — w ten sposób użytkownik udowadnia, że to naprawdę on. Lecz numer telefonu i adres e-mail to dane poufne, a Ty być może nie masz ochoty na podawanie ich aplikacji. Niektóre — jak Threema — zachęcają użytkowników do użycia innego identyfikatora i wymianę kodów QR w celu udowodnienia swojej tożsamości.

Możliwość zaprzeczenia w tym przypadku jest osiągana poprzez wysyłanie każdej wiadomości do obu uczestników dialogu. Klucz jest taki sam dla obu osób, więc wiadomość mogła wysłać każda z nich. Z tego powodu nawet jeśli ktoś przechwyci i odszyfruje wiadomość przychodzącą, nie wie, kto był jej nadawcą.

To wszystko dba o poufność, wiarygodność, integralność i możliwość zaprzeczenia. A co z zabezpieczeniem wcześniejszej i dalszej rozmowy? Jeśli czyjś klucz prywatny i publiczny są zawsze takie same, to w przypadku, gdy klucz udostępniony zostanie zhakowany, atakujący może odszyfrować zarówno wiadomości wcześniejsze, jak i późniejsze.

Aby ograniczyć tę możliwość, klucze muszą być okresowo wydawane ponownie przez serwer. Jeśli klucz jest wydawany ponownie, na przykład raz w miesiącu, atakujący będzie mógł odczytać historię rozmowy tylko dla danego miesiąca i nie będzie mógł monitorować rozmowy po wydaniu nowego klucza (w praktyce ponowne wydanie kluczy dzieje się znacznie częściej).

Podsumowanie

W ten sposób dobrnęliśmy do końca naszego krótkiego wstępu do koncepcji komunikacji prywatnej. Tak naprawdę jest to o wiele bardziej skomplikowane, ponieważ nowoczesne aplikacje do komunikowania się muszą obsługiwać pliki multimedialne, grupowe czaty, a czasami wideopołączenia.

Jeśli interesuje Cię ta tematyka, zobacz poniższy film od 33C3, w którym Schilling i Steinmetz wyjaśniają nie tylko podstawową ideę, ale także informują, w jaki sposób przeprowadzili inżynierię wsteczną aplikacji Threema i odkryli jej sposób implementowania klucza prywatnego. Mamy nadzieję, że spodoba Ci się ten film tak jak nam.