Komunikator na protesty. Miał zapewniać anonimowość, okazał się dziurawy i groźny
Rok 2020 jest nie tylko rokiem koronawirusa, ale także protestów: pomijając obowiązkowe nagłówki o COVID-19, wstrząsające wiadomości dotyczą dziś nie wojen, a właśnie protestów. Choć może się wydawać, że porządny protest wymaga płonących radiowozów i potłuczonych witryn sklepowych, porządnie zorganizowane przejawy obywatelskiego sprzeciwu opierają się nie na przemocy, a na logistyce i komunikacji. Wiedzą o tym w Hongkongu. Autorzy aplikacji Bridgefy też sprawiali wrażenie świadomych tego faktu. Ponieśli jednak druzgocącą klęskę. Potrzebne jest jednak parę słów wprowadzenia.
26.08.2020 07:08
O komunikację jest dziś łatwiej niż kiedykolwiek, ale w większości jest ona zależna od infrastruktury: działa tylko wtedy, gdy nie zablokował jej operator i jest prywatna tylko w zakresie dopuszczanym przez oprogramowanie. Nawet jeżeli aplikacja jest "szyfrowana", to smartfon z nią może mieć dziurawy system lub korzystać z tzw. "chmurowo wspomaganej klawiatury". Dlatego aby zadbać o prywatność, musimy nie tylko zatroszczyć się o szyfrowanie end-to-end, bezpieczny system i brak podsłuchu ze strony innych aplikacji. Należy mieć także na uwadze to, że sieć komórkowa nie należy do nas i jest podatna na podsłuch i inne formy inwigilacji.
Decentralizacja kluczem do sukcesu
Rozwiązaniem tej ostatniej kwestii jest użycie zdecentralizowanego komunikatora. Dla porównania: szyfrująca na końcówkach (a nie w chmurze) aplikacja Signal przesyła wiadomości w sposób bezpieczny... ale przestanie działać, gdy władze zablokują sieć telefoniczną. Aby odpięte od sieci telefony dalej mogły wymieniać się wiadomościami między sobą, konieczne jest stworzenie sieci kratowej (mesh network, topologia siatki) opartej o siatkę niepełną. Każdy węzeł takiej sieci autonomicznie zabiega o utrzymanie kontaktu z jak największą liczbą innych węzłów. W takiej sieci, osiągnięcie masy krytycznej pozwala wyznaczyć graf umożliwiający dostarczenie wiadomości do każdego uczestnika bez konieczności stosowania centralnego serwera.
Takie rozwiązanie to krok dalej niż Signal. Zastosowano je, z użyciem Bluetooth, w aplikacji Bridgefy. Tworzy ona sieć kontaktów w grupie ("chmarze") korzystając z zasięgu Bluetooth. Nadaje się dzięki temu na komunikator dla dużych zgromadzeń, jak protesty na Białorusi, w Hongkongu i w ramach działalności BLM. Wyłączenie internetu jej niestraszne, a podsłuchy są niewykonalne dzięki zastosowaniu OTR.
Błędy implementacji i architektury
A przynajmniej tak twierdzili twórcy. Innego zdania, i to już w kwietniu, był zespół badaczy analizujących działanie aplikacji. W tym tygodniu opublikowano dokument z wnioskami, sformułowanymi po kilku miesiącach testów programu i dyskusji z autorami. Bridgefy okazuje się nie być bezpieczne. Ponadto, wskutek reklamowania się jako dedykowana "aplikacja do protestów", naraża użytkowników (np. politycznych dysydentów) na ryzyko deanonimizacji.
Okazuje się na przykład, że aplikacja szyfruje dane, ale nie metadane. Możliwe staje się odtworzenie na tej podstawie sieci kontaktów danej osoby. Dzięki temu ułatwione jest określenie jej tożsamości. Choć brzmi to jak błąd w implementacji, sprawa tak naprawdę ma się znacznie gorzej: to błędy w samej architekturze aplikacji. Po prostu źle ją wymyślono. Obiecując zarazem zbyt wiele.
Wstępne rozgłaszanie klucza przebiega w sposób naiwny, jak w PGP: użytkownik nadaje publicznie (broadcast) klucz publiczny związany ze swoją tożsamością. W PGP to wystarczy, ale w przypadku Bridgefy zapominanie, że identyfikacja to nie uwierzytelnienie jest drogim błędem. Bezpieczna jest więc komunikacja, ale nie wymiana klucza. Bridgefy okazuje się być zatem podatny na wszystkie niebezpieczeństwa przed którymi reklamuje ochronę: deanonimizację, kreślenie grafów kontaktów, kradzież tożsamości, odczyt wiadomości, podmianę ich treści oraz zablokowanie sieci.
Nie bierz komunikatorów od obcych
Publiczne rozgłaszanie klucza nie jest groźne dla tego klucza. Bezpieczeństwo szyfru nie ucierpi na tym, że publiczna część klucza wymienionego między dwoma użytkownikami zostanie rozgłoszona w sieci. Zapewne dlatego twórcy uznali, że sprawa jest załatwiona. Problem polega na tym, że w jednej sieci może być więcej osób, które powiedzą "jestem Kamil, a to jest mój klucz". Prowadzi to do zatrucia komunikacji: wiadomości od prawdziwego Kamila są bezpieczne. Wiadomości od złowrogiego Kamila też – są wszak zaszyfrowane. Problem w tym, że to nie ten sam Kamil...
Twórcy aplikacji zostali poinformowani o jej słabościach już wcześniej. Od tego czasu rozpoczęli stopniowe wycofywanie się ze swoich dotychczasowych deklaracji dotyczących bezpieczeństwa Bridgefy. Obecne jednak zdecydowali się... poddać grę i zbudować program na nowo, od zera, w oparciu o Signal. Klęska rozwiązania jest przy okazji pożywką dla teorii spiskowych.