Как сделать действительно безопасное приложение для обмена сообщениями, похожее на Signal?
Опубликовано: 2021-10-05Конфиденциальность и безопасность онлайн-общения - горячие темы в наши дни, и не без причины. Поскольку мы знаем, как создать зашифрованное приложение , мы хотели бы поделиться своим опытом и предложить советы в этой статье. Поговорим о текущем состоянии отрасли, методах шифрования и возможных рисках. Чтобы узнать цену, прокрутите статью до конца.
Что случилось?
В начале 2021 года WhatsApp, самое популярное приложение для обмена сообщениями в мире, представило новые условия обслуживания. Они вызвали бурю негодования, отчасти из-за неразберихи. После этого генеральный директор Tesla Илон Маск, известный критик Facebook (WhatsApp принадлежит Facebook), предложил, чтобы его 42,5 миллиона подписчиков в Twitter переключились на Signal, ранее не очень известный мессенджер.
Использовать сигнал
- Илон Маск (@elonmusk) 7 января 2021 г.
После этого твита у Signal, чью систему шифрования , кстати, использует сам WhatsApp , наблюдался всплеск количества пользователей. Этот всплеск был настолько большим, что серверы с трудом справились. Разработчикам Signal удалось справиться с ситуацией, но она показала, что спрос на безопасные системы обмена сообщениями растет. Теперь каждый хочет знать, как создать такое приложение, как Signal. Что подводит нас к этой статье.
Что значит иметь безопасный мессенджер?
Большинство приложений для обмена мгновенными сообщениями сегодня используют сквозное шифрование. Что это? Вот схема архитектуры чат-приложения в качестве примера:
Проще говоря, типичный мессенджер состоит из трех основных взаимосвязанных частей:
Устройство отправителя
Сервер
Устройство получателя
Сообщение отправляется отправителем получателю через сервер. Без шифрования это сообщение будет передаваться как обычный текст и, следовательно, может быть прочитано любым, у кого есть доступ к нему, в любой момент в пути. При шифровании сообщение преобразуется из простого текста в шифротекст - зашифрованный с помощью ключа - для передачи, а затем преобразуется обратно (расшифровывается) на устройстве получателя с помощью парного ключа.
Сквозное шифрование означает, что ключи шифрования хранятся на концах, то есть на устройствах пользователей, а не на сервере. Это делает так, что никто, кроме отправителя и получателя, не может читать сообщения . Даже поставщик услуг, владеющий сервером, не имеет к ним доступа. Чтобы взломать эти сообщения, хакеру необходим доступ к устройствам пользователей, так как взлом сервера поставщика услуг малопригоден.
Слабым местом сквозного шифрования является его уязвимость к так называемой атаке « человек посередине» (MITM) . Квалифицированные хакеры MITM могут взломать открытый ключ, хранящийся на сервере, и настроить систему для распознавания хакера как законного получателя, что позволяет хакеру подслушивать разговор и даже участвовать в нем вместо предполагаемого получателя.
Чтобы бороться с атаками MITM , разработчики Signal дополнительно усовершенствовали сквозное шифрование своего протокола с помощью алгоритма двойного храповика. Этот алгоритм создает ключи сеанса в дополнение к открытым и закрытым ключам, созданным при установке приложения пользователями. Ключи сеанса создаются для каждого отправленного сообщения, и они самоуничтожаются по завершении сеанса (то есть при получении сообщения), что делает невозможным для хакера расшифровать все сообщения, если им удастся получить ключ для одного сеанса.
WhatsApp использует сквозное шифрование для всех своих сообщений. Фактически, он использует собственный протокол шифрования Signal. Так в чем проблема сейчас?
Различные подходы к сквозному шифрованию
Это правда, что WhatsApp не может отслеживать содержимое ваших сообщений и не может прослушивать ваши звонки в приложении. Однако версия протокола шифрования Signal, которую использует WhatsApp, шифрует только содержимое сообщений . Это означает, что WhatsApp - и, соответственно, Facebook и все, с кем они решат поделиться информацией - могут видеть, с кем вы разговариваете, когда и откуда. Эти метаданные могут раскрывать очень личную информацию обо всех участниках разговора.
В то же время приложение Signal использует обновленный протокол, который также кодирует метаданные, и никто - даже владельцы приложения - не может его декодировать без прямого доступа к устройствам пользователей .
Кроме того, согласно Политике конфиденциальности Signal, почти никакие метаданные не хранятся на их серверах постоянно - только до тех пор, пока сообщение не будет получено. Затем удаляется все, кроме даты последнего входа пользователя.
Единственное другое приложение для обмена сообщениями, которое делает это, - Telegram. Однако в Telegram сквозное шифрование применяется только в секретном режиме, а не для всех чатов по умолчанию. Общие сообщения в Telegram плохо зашифрованы. По крайней мере, Telegram отказывается делиться такой информацией с кем-либо, будь то правительства или рекламодатели.
Сегодня безопасность приложений для обмена сообщениями - огромная тема: неспособность или нежелание мессенджера делиться информацией пользователей с правительствами часто сталкивается с ограничениями и запретами. Telegram, например, был запрещен в России, на родине его создателя; Объединенные Арабские Эмираты запретили все негосударственные услуги VoIP. В ответ люди повсюду требуют более безопасных средств связи, и рынок приложений для безопасного обмена сообщениями растет .
Итак, как сделать безопасный мессенджер?
Большинство людей используют хотя бы один мессенджер, возможно, несколько, и базовый набор функций мессенджера вас вряд ли удивит. Итак, мы будем краткими в этом разделе. Вот таблица возможностей безопасного решения для чата :
Функции | Описание |
---|---|
Адаптация | Кратко представьте свое приложение; чем короче, тем лучше, но сделайте понятным. |
Зарегестрироваться войти | Аккаунт в мессенджере обычно привязан к номеру телефона. |
Профили пользователей | В профиле хранится личная информация пользователя и ссылки на важные функции, такие как контакты, настройки и ответы на часто задаваемые вопросы. |
Настройки | Разрешите пользователям настраивать мессенджер для своего удобства. |
Уведомления | В приложении для обмена сообщениями важно иметь надежную систему мгновенных уведомлений. |
Текстовые чаты | Современное приложение для обмена сообщениями необходимо для поддержки как индивидуальных, так и групповых чатов. |
Передача файлов | Пользователи должны иметь возможность обмениваться текстовыми сообщениями, а также обмениваться изображениями и документами. |
Голосовые чаты / звонки | Функция VoIP сегодня так же важна, как и текстовые сообщения. Для качественного звука требуется стабильное соединение даже при низкой скорости интернета. |
Самоуничтожающиеся сообщения | Даже с протоколом Signal, если кто-то овладевает телефоном пользователя, он может видеть все предыдущие сообщения, если пользователь не удалил их. Вы можете добавить возможность пользователям устанавливать таймер для уничтожения сообщений и / или медиафайлов. |
Синхронизировать | У большинства людей установлено несколько устройств с установленными коммуникационными приложениями. Чтобы пользователи могли плавно переключаться между устройствами по своему усмотрению, вам необходимо предоставить функцию синхронизации. |
Двухэтапная аутентификация | Чтобы лучше защитить данные пользователей в случае кражи устройства, предложите двухэтапную аутентификацию с помощью отпечатка пальца, пароля, пин-кода, кода подтверждения или ссылки. |
Если вы хотите создать одноранговое приложение для обмена сообщениями, которое выделялось бы из толпы, обратите внимание на следующие функции:
Наклейки и гифки. Сегодня любой другой мессенджер интегрирует популярный сервис GIF Giphy в свой интерфейс, чтобы дополнять смайлики. Наклейки стали популярными, когда Telegram начал предлагать их бесплатно (в отличие, например, от Viber, где бесплатно предоставляются только некоторые наклейки).
Секретные / приватные чаты. Независимо от того, шифруете ли вы метаданные своих пользователей, в сегодняшней бурной реальности исчезновение или блокировка чатов может стать преимуществом для вашего приложения. Например, Telegram предлагает секретные чаты, которые автоматически исчезают, если вы выходите из Telegram на своем устройстве. Эти чаты не хранятся на облачных серверах Telegram и поэтому не могут быть скопированы или синхронизированы, даже если вы вошли в систему более чем на одном устройстве.
Видеочат. В 2020 году, когда подавляющее число людей было вынуждено работать удаленно из-за пандемии, инструменты видеоконференцсвязи пережили огромный всплеск популярности. И многие сетуют на отсутствие видеозвонков - индивидуальных и групповых - в существующих популярных мессенджерах. Это ни в коем случае не обязательная функция, но она наверняка будет популярна среди пользователей.
Как защитить приложение для обмена сообщениями
Бэкенд - это то место, где в мессенджерах происходит волшебство. Специалисты Backend несут ответственность за безопасность и надежность вашего чат-приложения, так как именно они умеют шифровать сообщения.
Есть несколько способов реализовать сквозное шифрование и обезопасить коммуникационное приложение . Обычно зашифрованные сообщения хранятся на серверах мессенджера - облачные серверы более безопасны и поэтому рекомендуются для этой цели - а ключи дешифрования доступны только с устройств пользователей, чтобы избежать утечки данных в случае взлома серверов.
Также можно полностью отказаться от хранения сообщений на ваших серверах и хранить их на устройствах пользователей. Но это означает, что ваши пользователи не смогут восстановить свою историю сообщений в случае потери устройств, на которых они вошли в систему, или удаления приложения. Синхронизация сообщений между устройствами также будет невозможна.
Чтобы создать приложение для безопасного обмена сообщениями, такое как Signal, вы можете использовать API зашифрованного обмена сообщениями из самого Signal . Протокол шифрования с открытым исходным кодом Signal является самым популярным среди разработчиков, создающих мессенджеры, поскольку он постоянно проверяется и проверяется. На момент написания следующие мессенджеры используют протокол Signal для шифрования содержимого своих сообщений:
- Facebook Messenger (только секретные чаты)
- Skype (только частные разговоры)
- Сообщения Google для Android (SMS)
Telegram использует собственный 256-битный симметричный алгоритм на основе шифрования AES под названием MTProto для секретных чатов. Однако этот алгоритм является закрытым, за что Telegram подвергается широкой критике.
Стоимость создания безопасного приложения для обмена сообщениями
Стоимость создания любого приложения сильно зависит от времени, необходимого для разработки . Что касается количества функций, мессенджеры не кажутся слишком сложными; однако создание только серверной части для хорошо зашифрованного приложения для обмена сообщениями может занять около 520 часов .
Обычными вариантами языка программирования для серверной части мессенджера являются Elixir или Erlang - Ruby on Rails - не лучший выбор для большого количества данных в виде текстовых сообщений, мультимедиа и аудио / видеозвонков. WhatsApp использует Erlang, а Elixir - Discord.
В Mind Studios мы разработали приложение для обмена сообщениями с серверной частью на основе Эликсира. Однако сам Elixir основан на Erlang с добавлением некоторого количества Ruby, поэтому опытный разработчик Elixir может писать код и на Erlang.
Вот наша оценка времени, необходимого для разработки приложения для безопасного обмена сообщениями :
Бизнес-анализ и создание спецификации - 96+ часов
UI / UX дизайн - 168+ часов
Клиентское мобильное приложение iOS - более 450 часов для MVP с наиболее важными функциями
Backend разработка - 520+ часов
Тестирование iOS-приложения - ~ 240 часов
Разработка под Android занимает немного меньше времени, чем разработка под iOS, но тестирование занимает больше времени из-за большего разнообразия устройств.
С этой приблизительной оценкой времени стоимость создания действительно безопасного приложения для чата будет начинаться с 51 590 долларов и будет расти с появлением дополнительных функций.
Заключение
Безопасные мессенджеры исключительно важны, и спрос на них сегодня высок, а завтра будет еще больше. Но такова конкуренция. Не каждая компания может создавать приложения для обмена зашифрованными сообщениями. Чтобы разработать безопасное приложение для обмена мгновенными сообщениями, такое как Signal, вам потребуются разработчики, имеющие опыт работы в этой нише .
Вам также нужно идти в ногу с лидерами отрасли, когда дело касается дизайна. Приложение Signal простое и не славится своей интуитивностью, но оно выигрывает у пользователей, которые заботятся о своей конфиденциальности больше, чем о наворотах. WhatsApp и Telegram, с другой стороны, выглядят модно и исключительно интуитивно понятны в дополнение к безопасности (хотя их безопасность может быть не на том же уровне, что и Signal, это все равно впечатляет). Итак, чтобы ярко проявить себя в этой нише, ваше пользовательское приложение должно быть безопасным и удобным для пользователя . Уравновесить эти требования - не пустяк. Но с правильной командой это возможно.