Кирьянцев А. студент, 3 курс
факультет информационных систем и технологий
Авдеева Н. студент, 3 курс
факультет информационных систем и технологий Поволжский Государственный Университет Телекоммуникаций и
Информатики Россия, г. Самара
СОЗДАНИЕ МЕССЕНДЖЕРА, ЗАЩИЩЁННОГО ОТ ПЕРЕХВАТА
СООБЩЕНИЙ
Аннотация
В данной статье рассказывается о построении программной платформы - мессенджера, защищённого от краж паролей, кражи переписки и подделки сообщений третьей страной.
Современное общество характеризуется обменом, накоплением информации в электронном виде и её обработкой в компьютерных сетях, что требует оперативного решения постоянно возникающих проблем защиты информационного содержания и информационной безопасности.
Данная тема является весьма актуальной и подогрета заявлениями и публикациями технического специалиста, бывшего сотрудника ЦРУ Э. Сноудена, о том, что агентство национальной безопасности (АНБ) США ведёт нечестную игру в направлении прослушивания граждан по всему миру при помощи существующих информационных сетей и сетей связи.
В настоящее время для обмена сообщений в реальном времени существуют программы - мессенджеры, которые могут применяться для передачи текстовых сообщений, звуковых сигналов, картинок, видео, игр, а так же для организации телеконференций путем шифрования сообщений пользователей сети. Обычно мессенджеры работают совместно с сервером и являются клиентскими программами со своими правилами работы и особенностями, например ICQ, Skype. Основной недостаток этих программ заключается в том, что они оставляют метаданные на центральном сервере в незашифрованном виде, что позволяет, при необходимости, узнать информацию о самих абонентах, времени их общения, количестве сообщений в обычной сессии. Для устранения этого недостатка разработана программная реализация шифрования данных, на клиентской стороне с помощью приложения Cryp2Chat.
В интернет мессенджерах отсутствуют следующие функции:
- Проверка наличия MITM (Men in the middle) - атаки,
- Наличие «чистого» (без данных) сервера,
- Самоуничтожение сообщения после закрытия сессии.
MITM-атака - самый распространенный способ атаки для кражи
данных пользователя, когда атакующий способен читать и видоизменять по своей воле сообщения, которыми обмениваются отправитель и получатель, причем ни один из них не может догадаться о присутствии атакующего в канале. И для него не важно - используете ли вы криптографический протокол SSL или нет. Атакующий подключается к каналу между абонентами и осуществляет активное вмешательство в протокол передачи. При этом он может удалять, искажать информацию или навязывая ложную.
Все эти проблемы решены в новом приложении - Cryp2Chat.
Разработанное приложение Cryp2Chat в отличие от интернет мессенджеров одно из первых, которое не оставляет метаданные на центральном сервере. Пришедшее сообщение может расшифровать только сам клиент. Ключ для дешифрования имеется только у клиента и за его пределы не выходит.
Алгоритм работы программы следующий (рис.1). Сервер получает список контактов пользователей сети. Ключ для шифрования генерируются на стороне источника - отправителя, далее публичный ключ высылается на сервер, а затем к получателю. Приватная часть ключа остается у пользователя-отправителя.
Отправка сообщения от клиента-получателя через сеть осуществляется в три этапа:
1. получение с сервера публичного ключа получателя;
2. шифрование сообщения публичным ключом;
3. отправка на сервер шифрограммы.
Шифрование происходит методом RSA (длина ключа составляет 1024 бит), но предусмотрена возможность использования и других алгоритмов шифрования.
Рис. 1. Пример работы приложения Cryp2Chat Приложение Cryp2Chat - это авторский сервис для обмена быстрыми сообщениями с поддержкой End2End шифрования.
Сервер прототипа данного приложения написан на Node.js (продвинутый JavaScript) с использованием библиотеки для веб сокетов -
Node.js - программная платформа, основанная на движке V8
••......&
Сервер
Отправитель
Получатель
Socket.IO.
(транслирующая JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Клиентская часть реализована на Html и JavaScript с использованием библиотеки Cryprico.
Для проксификации и увеличения надежности канала предлагается использование сети TOR (The Onion Router). На компьютере клиента запускается прокси-сервер, который подключается к сети TOR [1], используя многоуровневое шифрование (рис.2). Прежде чем передать пакет данных серверу, он проходит через три случайных компьютера. Перед отправлением пакет шифруется тремя ключами: для каждого из трех компьютеров соответственно. Кроме того, сеть TOR может обеспечивать анонимность для серверов.
При проектировании приложения были рассмотрены три возможные потенциальные опасности:
1. Подбор пароля. Для оценки возможности подбора паролей использовался блог Касперского[2]. Программа показала, что подбор пароля с длиной ключа примерно 50 символов, включающая в себя служебные символы, займет более, чем 100 тысяч лет. Даже на мощном ботнете Conficker пароль будет подбираться десять тысяч веков.
2. Кража ключа. Она невозможна по двум причинам:
- если это android приложение, то «песочница» - жестко контролируемый набор ресурсов для исполнения гостевой программы, не даст другому приложению доступ к файлам с паролем,
- если это web приложение, то обращение к переменной невозможно, так как удален указатель на элемент, и только внутренний код может обращаться к этой переменной.
3. Код приложения не поддается изменению, потому что:
- если это web приложение, то скачанный код сохраняется при первом запуске приложения и не скачивается при последующих запусках,
- если это нативное приложение, то изменение кода со стороны сервера не приведет к изменению кода приложения на клиенте.
Передача потенциально опасной информации (террористические акты, продажа наркотиков) предотвращена. т.к. контроль обмена данными ведется с помощью электронной подписи. При
регистрации пользователь генерирует подпись - это RSA ключ, который передается на сервер, хранится там и никогда не изменяется. При передаче сообщения сервер проверяет подпись, и если данная подпись отсутствует на сервере, то это сообщение не передается. Таким образом, можно еще и контролировать передачу данных.
Использованные источники:
1. https://ru.wikipedia.org/wiki/Tor#.D0.90. - электронный ресурс TOR.
2. http://blog.kaspersky.com/password-check - проверка криптостойкости
3. http://my-chrome.ru/2014/06/end2end-begins/^End2End шифровани