Jak zrobić naprawdę bezpieczną aplikację do przesyłania wiadomości podobną do Signal?
Opublikowany: 2021-10-05Prywatność i bezpieczeństwo komunikacji online to obecnie gorące tematy i nie bez powodu. Ponieważ wiemy, jak tworzyć zaszyfrowaną aplikację , chcielibyśmy podzielić się naszym doświadczeniem i zaoferować wskazówki w tym artykule. Porozmawiamy o obecnym stanie branży, metodach szyfrowania i możliwych zagrożeniach. Aby uzyskać szacunkową cenę, przewiń do końca artykułu.
Co się stało?
Na początku 2021 roku WhatsApp, najpopularniejsza aplikacja do obsługi wiadomości na świecie, wprowadziła nowe warunki korzystania z usługi. Wywołali spore zamieszanie, częściowo z powodu zamieszania. Następnie dyrektor generalny Tesli, Elon Musk, który jest znanym krytykiem Facebooka (WhatsApp należy do Facebooka), zasugerował, aby jego 42,5 miliona obserwujących na Twitterze przeszło na Signal, wcześniej niezbyt znany komunikator.
Użyj sygnału
— Elon Musk (@elonmusk) 7 stycznia 2021
Po tym tweecie Signal – nawiasem mówiąc, którego systemu szyfrowania używa sam WhatsApp – odnotował gwałtowny wzrost liczby użytkowników. Ten wzrost był tak duży, że serwery z trudem sobie radziły. Twórcom Signala udało się poradzić sobie z tą sytuacją, ale okazało się, że rośnie zapotrzebowanie na bezpieczne systemy przesyłania wiadomości. Teraz każdy chce wiedzieć, jak stworzyć aplikację taką jak Signal. Co prowadzi nas do tego artykułu.
Co to znaczy mieć bezpieczny komunikator internetowy?
Większość dzisiejszych komunikatorów korzysta z szyfrowania typu end-to-end. Co to jest? Oto przykład architektury aplikacji czatu:

Mówiąc prościej, typowy komunikator składa się z trzech głównych, połączonych ze sobą części:
Urządzenie nadawcy
Serwer
Urządzenie odbiorcy
Wiadomość jest wysyłana przez nadawcę do odbiorcy za pośrednictwem serwera. Bez szyfrowania wiadomość ta zostanie przesłana jako zwykły tekst i dlatego może zostać odczytana przez każdego, kto ma do niej dostęp w dowolnym momencie. Dzięki szyfrowaniu wiadomość jest przekształcana ze zwykłego tekstu w zaszyfrowany tekst — zaszyfrowany za pomocą klucza — w celu przesłania, a następnie ponownie (odszyfrowany) na urządzeniu odbiorcy za pomocą sparowanego klucza.
Szyfrowanie end-to-end oznacza, że klucze szyfrujące są przechowywane na końcach, czyli na urządzeniach użytkowników, a nie na serwerze. Dzięki temu nikt poza nadawcą i odbiorcą nie może czytać wiadomości . Nawet usługodawca będący właścicielem serwera nie ma do nich dostępu. Aby zhakować te wiadomości, haker musi uzyskać dostęp do urządzeń użytkowników, ponieważ włamanie na serwer dostawcy usług jest mało przydatne.
Słabym punktem szyfrowania typu end-to-end jest jego podatność na tzw. atak typu man-in-the-middle (MITM) . Wykwalifikowani hakerzy MITM mogą włamać się do klucza publicznego przechowywanego na serwerze i skonfigurować system tak, aby rozpoznawał hakera jako prawowitego odbiorcę, pozwalając hakerowi podsłuchiwać rozmowę, a nawet uczestniczyć w niej zamiast zamierzonego odbiorcy.
Aby walczyć z atakami MITM , programiści Signal jeszcze bardziej ulepszyli szyfrowanie end-to-end swojego protokołu za pomocą algorytmu Double Ratchet. Ten algorytm tworzy klucze sesji oprócz kluczy publicznych i prywatnych tworzonych podczas instalowania aplikacji przez użytkowników. Klucze sesji są tworzone dla każdej wysłanej wiadomości i ulegają samozniszczeniu po zakończeniu sesji (tj. po odebraniu wiadomości), uniemożliwiając hakerowi odszyfrowanie wszystkich wiadomości, jeśli uda mu się uzyskać klucz dla jednej sesji.
WhatsApp używa szyfrowania typu end-to-end do wszystkich swoich wiadomości. W rzeczywistości używa własnego protokołu szyfrowania Signala. Więc jaki jest z tym problem teraz?
Różne podejścia do szyfrowania typu end-to-end

To prawda, że WhatsApp nie może podsłuchiwać treści Twoich wiadomości i nie może podsłuchiwać połączeń w aplikacji. Jednak wersja protokołu szyfrowania Signal, z której korzysta WhatsApp, szyfruje tylko zawartość wiadomości . Oznacza to, że WhatsApp — a co za tym idzie, Facebook i każdy, komu zdecydują się udostępnić informacje — może zobaczyć, z kim rozmawiasz, kiedy i skąd. Te metadane mogą ujawnić bardzo osobiste informacje o wszystkich uczestnikach rozmowy.
Jednocześnie aplikacja Signal korzysta ze zaktualizowanego protokołu, który również koduje metadane, i nikt — nawet właściciele aplikacji — nie może ich zdekodować bez bezpośredniego dostępu do urządzeń użytkowników .
Poza tym, zgodnie z Polityką prywatności Signal, prawie żadne metadane nie są przechowywane na ich serwerach na stałe — tylko tak długo, jak długo trwa odebranie wiadomości. Następnie usuwane jest wszystko oprócz daty ostatniego logowania użytkownika.
Jedyną inną aplikacją do przesyłania wiadomości, która to robi, jest Telegram. Jednak w Telegramie szyfrowanie od końca do końca jest stosowane tylko w trybie tajnym, a nie do wszystkich czatów domyślnie. Wiadomości ogólne nie są dobrze zaszyfrowane w Telegramie. Przynajmniej Telegram odmawia nikomu udostępniania takich informacji, czy to rządów, czy reklamodawców.
Obecnie bezpieczeństwo aplikacji do przesyłania wiadomości to ogromny temat — niezdolność lub niechęć komunikatorów do udostępniania informacji użytkowników rządom często spotyka się z ograniczeniami i zakazami. Na przykład telegram został zakazany w Rosji, ojczyźnie jego twórcy; Zjednoczone Emiraty Arabskie zakazały wszystkich usług VoIP niebędących własnością państwa. W odpowiedzi ludzie na całym świecie domagają się bezpieczniejszych środków komunikacji, a rynek bezpiecznych aplikacji do przesyłania wiadomości mobilnych rośnie .
Jak więc zrobić bezpieczny komunikator?

Większość ludzi używa co najmniej jednego komunikatora, prawdopodobnie kilku, a podstawowy zestaw funkcji aplikacji komunikatora raczej Cię nie zaskoczy. Więc będziemy krótko w tej sekcji. Oto tabela funkcji bezpiecznego rozwiązania czatu :
| Cechy | Opis |
|---|---|
Proces wdrażania do firmy nowego pracownika | Krótko przedstaw swoją aplikację; im krótszy, tym lepiej, ale uczyń go zrozumiałym. |
Zarejestruj się Zaloguj się | Konto komunikatora jest zwykle powiązane z numerem telefonu. |
Profile użytkowników | Profil przechowuje dane osobowe użytkownika i łącza do ważnych funkcji, takich jak kontakty, ustawienia i często zadawane pytania. |
Ustawienia | Pozwól użytkownikom dostosować komunikator dla ich wygody. |
Powiadomienia | W komunikatorze niezbędny jest niezawodny system do natychmiastowych powiadomień. |
Czaty tekstowe | Do obsługi zarówno czatów jeden na jednego, jak i czatów grupowych wymagana jest nowoczesna aplikacja do obsługi wiadomości. |
Transfer plików | Użytkownicy muszą mieć możliwość wymiany wiadomości tekstowych, a także udostępniania obrazów i dokumentów. |
Czaty/połączenia głosowe | Funkcja VoIP jest dziś równie ważna jak wysyłanie wiadomości tekstowych. Jakość dźwięku wymaga stabilnego połączenia, nawet przy niskich prędkościach Internetu. ![]() |
Wiadomości samozniszczające | Nawet w przypadku protokołu Signal, jeśli ktoś zdobędzie telefon użytkownika, może zobaczyć wszystkie poprzednie wiadomości, chyba że użytkownicy je usunęli. Możesz dodać opcję dla użytkowników, aby ustawić czas niszczenia wiadomości i/lub plików multimedialnych. |
Synchronizuj | Większość ludzi ma więcej niż jedno urządzenie z zainstalowanymi aplikacjami komunikacyjnymi. Aby użytkownicy mogli płynnie przełączać się między urządzeniami według własnego uznania, musisz zapewnić funkcję synchronizacji. |
Uwierzytelnianie dwuetapowe | Aby lepiej chronić dane użytkowników w przypadku kradzieży urządzenia, zaoferuj dwuetapowe uwierzytelnianie za pomocą odcisku palca, hasła, kodu PIN lub kodu weryfikacyjnego lub łącza. |
Jeśli chcesz zbudować aplikację do przesyłania wiadomości typu peer-to-peer, która wyróżnia się z tłumu, rozważ następujące funkcje:
Naklejki i GIF-y. Każdy inny komunikator integruje dziś popularną usługę GIF Giphy w swoim interfejsie, aby uzupełniać emotikony. Naklejki stały się popularne, gdy Telegram zaczął oferować je za darmo (w przeciwieństwie na przykład do Vibera, gdzie tylko niektóre naklejki są bezpłatne).
Sekretne/prywatne czaty. Bez względu na to, czy zaszyfrujesz metadane użytkowników, czy nie, w dzisiejszej burzliwej rzeczywistości, znikające lub blokowane czaty mogą stać się punktem sprzedaży Twojej aplikacji. Na przykład Telegram oferuje tajne czaty, które automatycznie znikają, gdy wylogujesz się z Telegrama na swoim urządzeniu. Te czaty nie są przechowywane na serwerach w chmurze Telegrama i dlatego nie można ich tworzyć kopii zapasowych ani synchronizować, nawet jeśli jesteś zalogowany na więcej niż jednym urządzeniu.
Czat wideo. W 2020 r., przy ogromnej liczbie osób zmuszonych do pracy zdalnej z powodu pandemii, narzędzia do wideokonferencji zyskały ogromny wzrost popularności. Wielu narzekało na brak połączeń wideo — indywidualnych i grupowych — w istniejących popularnych komunikatorach. Nie jest to funkcja obowiązkowa, ale z pewnością będzie popularna wśród użytkowników.
Jak zabezpieczyć aplikację do przesyłania wiadomości
Zaplecze to miejsce, w którym magia dzieje się w posłańcach. Specjaliści ds. backendu są odpowiedzialni za bezpieczeństwo i niezawodność Twojej aplikacji do czatu, ponieważ to oni wiedzą, jak szyfrować wiadomości.
Istnieje kilka sposobów na zaimplementowanie pełnego szyfrowania i zabezpieczenie aplikacji do komunikacji . Zazwyczaj zaszyfrowane wiadomości są przechowywane na serwerach komunikatora — serwery w chmurze są bezpieczniejsze i dlatego zalecane do tego celu — a klucze odszyfrowywania są dostępne tylko z urządzeń użytkowników, aby uniknąć naruszenia danych w przypadku włamania na serwery.
Możliwe jest również całkowite zrezygnowanie z przechowywania wiadomości na serwerach i przechowywanie ich na urządzeniach użytkowników. Oznacza to jednak, że Twoi użytkownicy nie będą mogli przywrócić historii wiadomości w przypadku utraty urządzeń, na których są zalogowani lub usunięcia aplikacji. Synchronizacja wiadomości między urządzeniami również będzie niemożliwa.
Aby stworzyć bezpieczną aplikację do przesyłania wiadomości, taką jak Signal, możesz w rzeczywistości użyć interfejsu API do szyfrowania wiadomości z samego Signala . Protokół szyfrowania Signal o otwartym kodzie źródłowym jest najpopularniejszy wśród programistów budujących komunikatory, ponieważ jest stale sprawdzany i audytowany. W chwili pisania tego tekstu następujący komunikatorzy używają protokołu Signal do szyfrowania treści swoich wiadomości:
- Facebook Messenger (tylko tajne czaty)
- Skype (tylko rozmowy prywatne)
- Wiadomości Google na Androida (SMS)
Telegram używa własnego algorytmu opartego na 256-bitowym symetrycznym szyfrowaniu AES o nazwie MTProto do tajnych rozmów. Ten algorytm jest jednak zamkniętym źródłem, za co Telegram był szeroko krytykowany.
Koszt stworzenia bezpiecznej aplikacji do przesyłania wiadomości

Koszt wykonania dowolnej aplikacji zależy w dużej mierze od czasu potrzebnego na jej opracowanie . Jeśli chodzi o liczbę funkcji, komunikatory nie wydają się zbyt skomplikowane; jednak sam back-end dobrze zaszyfrowanej aplikacji do przesyłania wiadomości może zająć około 520 godzin .
Typowymi opcjami języka programowania dla zaplecza komunikatora są Elixir lub Erlang — Ruby on Rails nie jest dobrym wyborem dla dużej ilości danych w postaci wiadomości tekstowych, mediów i połączeń audio/wideo. WhatsApp używa Erlanga, a Elixir jest używany przez Discord.
W Mind Studios opracowaliśmy aplikację komunikatora z zapleczem opartym na Eliksirze. Jednak sam Elixir jest oparty na Erlangu z domieszką Ruby, więc doświadczony programista Elixir może również pisać kod w Erlangu.
Oto nasze podejście do czasu potrzebnego na opracowanie bezpiecznej aplikacji do przesyłania wiadomości :
Analiza biznesowa i tworzenie specyfikacji — 96+ godzin
Projektowanie UI/UX — 168+ godzin
Aplikacja mobilna po stronie klienta iOS — ponad 450 godzin dla MVP z najważniejszymi funkcjami
Rozwój backendu — 520+ godzin
Testowanie aplikacji na iOS — ~ 240 godzin
Tworzenie systemu Android zajmuje nieco mniej czasu niż tworzenie systemu iOS, ale testowanie trwa dłużej ze względu na większą różnorodność urządzeń.
Przy tak przybliżonym oszacowaniu czasu koszt stworzenia naprawdę bezpiecznej aplikacji do czatu zacznie się od 51 590 USD i wzrośnie wraz z dodatkowymi funkcjami.
Wniosek
Bezpieczni posłańcy są wyjątkowo ważni, a zapotrzebowanie na nie dziś jest duże, a jutro będzie większe. Ale taka jest konkurencja. Nie każda firma może tworzyć aplikacje do szyfrowania wiadomości. Aby stworzyć bezpieczną aplikację do obsługi wiadomości błyskawicznych, taką jak Signal, będziesz potrzebować programistów doświadczonych w tej niszy .
Będziesz także musiał nadążyć za liderami branży, jeśli chodzi o projektowanie. Aplikacja Signal jest prosta i nie słynie z intuicyjności, ale przekonuje użytkowników, którzy bardziej dbają o swoją prywatność niż o dzwonki i gwizdki. Z drugiej strony WhatsApp i Telegram wyglądają fantazyjnie i są wyjątkowo intuicyjne, oprócz tego, że są bezpieczne (chociaż ich bezpieczeństwo może nie być na tym samym poziomie, co Signal, nadal robi wrażenie). Aby więc błyszczeć w tej niszy, Twoja niestandardowa aplikacja musi być zarówno bezpieczna, jak i przyjazna dla użytkownika . Zrównoważenie tych wymagań nie jest błahostką. Ale z odpowiednim zespołem jest to możliwe.

