Incognito Private Messenger — первый в мире мессенджер без идентификации

ДНЕПР, УКРАИНА

Нью-Йорк, США

WhatsApp, Telegram, Skype

Все мессенджеры гарантируют пользователям тайну переписки. Но запросов уполномоченных органов это не касается — при необходимости органы получат любые сведения о пользователе, в том числе сообщения, список контактов и номер телефона. Если таковые сведения доступны уполномоченным органам, они могут стать доступны и злоумышленникам. И как всегда, в зоне риска бизнес.

 

В этом кейсе мы расскажем, как создали мессенджер первый в мире для переписки, который позволяет общаться без сканирования телефонной книги и списка номеров, — Incognito Private Messenger.

Платформы:

iOS, Android

Устройства:

Телефон

Языковые версии:

Русская

Средняя оценка:

Google Play

Предыстория

 

Заказчик — частное лицо, предприниматель. По роду своей деятельности он общается с бизнесменами, политиками, банкирами. Для общения, обсуждения сделок и передачи информации ему приходится использовать мессенджеры.

 

Все существующие мессенджеры привязаны к телефонной книге,  номеру телефона и личным данным. В случае взлома, помимо этих сведений, злоумышленники могут получить информацию о сделках, банковские и личные данные. Для людей, которым приходится обмениваться конфиденциальной информацией, необходим защищенный мессенджер.

 

Задача

 

Создать мессенджер без идентификации пользователя для iOS и Android.

 

Пожелания:

создание мессенджера

 

Функциональные особенности

 

Решение

Для создания приложения с такими функциональными особенностями следовало решить несколько задач:

 

Чтобы решить эти задачи, мы использовали современный стек технологий.

 

Дизайн

 

На первом этапе мы разработали две концепции дизайна: светлый и темный. Решили остановиться на темном, так как именно такой дизайн у пользователя ассоциируется с приватностью.  Для иконки тоже взяли привычный пользователям образ — некто в шляпе. Образ человека в шляпе раскрыли с помощью ярких оттенков.

Кликабельные элементы не должны  сливаться с основным темным цветом приложения, поэтому для них выбрали яркие, в меру контрастные цвета.

 



 

Подчеркиваем приватность

 

Одна из задач — обозначить участников чата без привязки к личным данным, по которым их можно было бы идентифицировать. Задачу решили с помощью кодового слова. О нем участники чата договариваются заранее вне приложения или используют фразу, которая сразу ассоциируется с участником будущего диалога.

Помимо кодового слова в чате, пользователь может настроить свой дополнительный уникальный ключ шифрования. После того, как ключ создан, пользователь видит анимацию. Так закрепляется визуальный эффект.

 



 

Разработали оповещение на iOS о том, что второй участник чата сделал скриншот переписки. В версии для Андроид пользователь может полностью отключить возможность делать скриншоты в приложении.

 



 

При необходимости вся переписка удаляется одним нажатием кнопки. На вход в приложение можно установить пароль.

 

создание мессенджера на андроид

 

Как все работает изнутри

Приватность

Фишка проекта в том, что пользователь обезличен, нет ни одного идентификатора, который бы указывал на личность человека. Чтобы создать чат,  пользователи в офлайн должны договориться о кодовом слове.

 



 

Механизм такой: пользователь А создает чат, дает ему название и приглашает в чат пользователей В и С. Пользователи В и С могут войти в чат тремя способами:

 

 

Количество пользователей в одном чате  не ограничено.

 



 

Шифрование

 

Для шифрования и дешифрования сообщений необходим криптографический ключ. Допустим, мы обмениваемся секретными сообщениями через курьера. Если сообщение не зашифровано, курьер его может прочитать. Переписку нужно зашифровать, а перед этим передать секретный ключ второму абоненту. Просто передать его нельзя, так как курьер может расшифровать сообщение. Чтобы решить задачу с обменом секретными ключами, мы использовали алгоритм Диффи-Хеллмана.


В этом алгоритме передача данных основана на принципе end-2-end шифрования. Это самый безопасный протокол, в котором шифровка и расшифровка сообщений происходят без участия сервера. Сервер служит лишь инструментом передачи уже зашифрованных сообщений. Среднее время обработки одного сообщения измеряется в миллисекундах и стремится к нулю. Сервер хранит только лишь зашифрованные сообщения, которые не доставлены  адресату (например, при отсутствии подключения к интернету) и автоматически удаляет их через 7 дней, если получатель так и не появился в сети. Расшифровать информацию может только получатель с помощью закрытого ключа. Таким образом, на серверах не остается никаких следов.

 

Архитектура, стек технологий

 

Для разработки back-end мы выбрали платформу NodeJS. По нашему мнению, эта платформа лучше всего подходит для  реализации чатов с использованием сокетов. Платформа легко и быстро масштабируется. С коробки есть поддержка 10 тысяч подключений на одной ноде. Количество подключений можно увеличить до 100 тысяч. Для этого достаточно изменить настройки.

Для быстрой работы с данными чатов и удобного трансфера  данных нам нужна NoSQL БД (хранение зашифрованных данных до момента доставки получателю) . Большинство компаний для этой цели используют MongoDB. Но для нашей цели это решение не подходило — в MongoDB есть ряд проблем с очисткой файлов после удаления записей, а также с масштабированием.

Поэтому в качестве базы данных мы выбрали RethinkDB. У этой базы данных нет таких проблем и есть удобный синтаксис для работы с выборкой RQL (Resource Query Language).

 

Android

 

Приложение для Android написано на Kotlin и соответствует последним рекомендациям  Google. Мессенджер мы создали на основе шаблона проектирования архитектуры  MvVM с использованием Android Architecture Components. Этот шаблон позволяет создать гибкую архитектуру. Поэтому в будущем мы без проблем сможем расширить функционал приложения.

 

iOS

 

Для создания приложения для iOS мы использовали наш Scaffold на базе MvVM шаблона проектирования. В будущем можно будет расширить функционал приложения.

 

создание чата

 

Приложение Incognito Private Messenger обеспечивает 100% конфиденциальность

 

Это главное преимущество проекта в сравнении с аналогами. Переписка пользователей хранится только на клиентах. На сервере хранится только привязка устройств к чату и уведомления. Там нет ключей или какой-то другой информации, которая бы позволила скомпрометировать алгоритм шифрования.

 

Уникальное решение

Стандартная верификация пользователей в мессенджере невозможна, так как нет номеров телефонов. Поэтому мы разработали алгоритм проверки каждого клиента, который подключается к чату:

 


Заключение

Incognito Private Messenger  — уникальный в своем роде. Дальше, по мере необходимости и  по мере роста числа пользователей, мы будем расширять функционал приложения. Все возможности для этого мы предусмотрели.

Кроме того, сейчас мы работаем над локализацией мессенджера и уже скоро он будет доступен к скачиванию на английском языке.

 

Расчет проекта

Что будем делать? Каждая мелочь и мысль может помочь нам составить необходимое представление о проекте