Connect with us

Разработка

Безопасный мессенджер в короткие сроки: как Infoshell разрабатывал ТеТ-а-ТеТ

Год назад в компанию Infoshell поступил заказ на разработку мобильного чата ТеТ-а-ТеТ. Перед командой разработчиков стояли требования в создании приложения, которое позволит удобно общаться и обеспечит высокий уровень безопасности во время диалога.

AppTractor

Опубликовано

/

     
     

Год назад в компанию Infoshell поступил заказ на разработку мобильного чата ТеТ-а-ТеТ. Перед командой разработчиков стояли требования в создании приложения, которое позволит удобно общаться и обеспечит высокий уровень безопасности во время диалога. Сегодня команда разработчиков делится с читателями AppTractor.ru историей разработки приложения.

Но уже на старте работы над проектом мы столкнулись с целым рядом проблем. Клиент определил в рамках требований два противоположных по направлению тезиса – удобный и безопасный. Для читателей не понимающих, почему эти требования разные, попробуйте представить безопасную секретную базу, допустим, главный архив ФСБ, с удобным и простым способом прочитать там досье на любого человека.

Вторая проблема – отсутствие какой-либо конкретики. Говоря о безопасности, клиент не понимал основных принципов безопасности и что конкретно необходимо внедрить в систему.

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

Исходя из этих проблем, наша команда понимала, что нам нужно обучать клиента технологиям, которые используем при создании продукта. Но как на пальцах объяснить заказчику принцип работы SSL, AES, RSA и других методов шифрования контента?

Тем не менее, проект нас не пугал и казался выполнимым. Балансируя между безопасностью, скоростью работы приложения, откликом на действия пользователей и использованием UX аналогичных сервисов, мы постарались собрать все силы и создать по-настоящему удобный безопасный чат.

Подход к безопасности

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

Вторым шагом стал анализ конкурентов. В финансах мы были ограничены так же, как и в сроках. В таких условиях “изобретать велосипед” было бы не логично. Было важно понять, как действую конкуренты в рамках безопасности приложений или подобных сервисов, какие принципы шифрования информации используются на рынке и почему. Мы искали сильные стороны аналогов сервиса ТеТ-а-ТеТ и отмечали слабые. Важно было понять, что мы можем предложить, и как создать удобство для каждого нашего пользователя.

Выполнив подготовительные действия, мы начали выстраивать стратегию безопасности. “Мозгового штурм” с командой, высказывание идей и гипотез перед клиентом позволило окончательно определиться с понятием безопасности TeT-a-TeT:

1. Пользователи должны быть уверены в том, что общаются с тем собеседником, который нужен

Проблема аутентификации пользователя и личности стоит уже давно. Было придумано множество средств подтверждения личности пользователя, от регистрации через e-mail, до сканирования глаз и крови человека. В рамках проекта мы решили использовать стандартные средства авторизации – подтверждение учетной записи через пароль, который приходит по СМС и ввод дополнительного ключа.

Но этого было недостаточно, так как, если телефон попадет в чужие руки, то можно с легкостью восстановить пароль. Тогда мы продолжили работу и привязали к учетной записи e-mail и ключевое слово для входа. На сервер мы решили отправлять не сам текст ключевого слова (вдруг его пользователь использует где-то еще), а его хэш. На сервере хэш перепроверялся и, в случае совпадения, подтверждалось восстановление пароля.

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

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

2. Проект должен имитировать реальный разговор людей в одной комнате

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

Для этого мы реализовали следующие возможности – общение должно проходить в режиме on-line, а после прочтения – полностью стираться. Вопросом для нас стало, что такое прочтение сообщения. Рассуждая на эту тему, мы определили, что время на чтение, если пользователь находится в чате нужно ограничивать. Более того, чтобы прочитать следующее сообщение, нужно удалить предыдущее. Так родилась идея о таймерах и скрытии сообщений, по которым таймер еще не пошел.

Удаленные сообщения стирались навсегда, не сохраняясь ни на устройстве, ни на сервере. Таким образом никто никогда не мог просмотреть переписку из “архива”.

Раскрывая тему архива, мы поняли, что переписку могут сфотографировать или заскриншотить. К сожалению, в отличие от Android, операционная система iOS еще не предоставила возможность блокировать скриншоты в приложении. Отсюда родилась идея внедрения системы антифото, то есть предоставление визуальной информации в таком виде, чтобы при попытке сделать скриншот или сфотографировать чат, пользователю не была доступна вся информация целиком. Это уникальная особенность, которая недоступна больше ни в одном чате!

3. Переписку не должен никто перехватить

Мы решили использовать шифрование переписки с помощью одновременного использования RSA и AES ключей. Все сообщения преобразовываются в формат base 64, на который накладывался ключ. Такой формат сообщения помог нам масштабировать систему шифрования для разных типов данных (текст, изображение, аудио-файл).

Кроме того, для особых “параноиков” мы создали системы ручного шифра сообщений, чтобы только два пользователя знали, каким ключом происходит кодирование сообщений. Так мы реализовали сквозное шифрование на проекте.

4. Усложнить процесс модификации и изменения приложения

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

 

Само приложение автоматически проводит проверку на обновление. Реализованы методы проверки сервера в приложении.

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

Дальнейшие планы на проект

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

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
 
6 комментариев

6 Comments

  1. Sergey Denisyuk

    24.03.2017 at 14:46

    Ужос!

    • AppTractor

      24.03.2017 at 14:57

      Ну не ужас-ужас же! Вообще в хорошем или плохом смысле?

      • Sergey Denisyuk

        24.03.2017 at 17:28

        Именно ужас-ужас. Про в чем конкретно ужас можно отдельную статью написать, чтобы не быть голословным, к сожалению, это не формат быстрых комментов.

  2. Victor Chernogorov

    24.03.2017 at 15:00

    А кто ЦА? Зачем это приложение нужно?

    • AppTractor

      24.03.2017 at 15:04

      Ну это скорее у заказчика надо спрашивать ИМХО, а не у разработчиков…

      • Victor Chernogorov

        24.03.2017 at 15:16

        Разработчики тоже должны знать. Иначе, как они сделали проект? btw этот мессенджер безопаснее, чем телеграмм?

You must be logged in to post a comment Login

Leave a Reply

Реклама

Популярное

X
X