- PVSM.RU - https://www.pvsm.ru -
Перевод вводной части и введения в техническое описание проекта с открытым исходным кодом Ricochet (github [1]).
Ricochet – это эксперимент с альтернативным методом передачи мгновенных сообщений, который не доверяет никому – не раскрывает вашу личность, список контактов или общение.
— можно общаться без раскрытия личности или ip-адреса.
— никто не может выяснить, с кем вы общаетесь или когда вы общаетесь (никаких мета-данных)
— никаких серверов, которые можно было бы взломать, или операторов, которых можно было бы заставить выдать информацию о вас
— кросс-платформенный и простой даже для обычных пользователей
Примечание: проект недавно был переименован из Torsion.
Ricochet – система передачи мгновенных сообщений peer-to-peer, основанная на использовании скрытых сервисов Tor. Ваш логин – адрес вашего скрытого сервиса, а ваш контакт соединяется с вами (без участия серверов-посредников) через Tor. Система взаимодействия устроена так, что очень сложно установить вашу личность, исходя из вашего адреса.
Ricochet не связан и не согласован с разработчиками The Tor Project.
Проект экспериментальный. Никто не проводил формальный аудит кода. Безопасность и анонимность – это сложные темы, и вам нужно самостоятельно оценивать риски возможности быть раскрытым при использовании любого программного обеспечения. Не рекомендуем полагаться на Ricochet в плане безопасности и не доверять Ricochet больше, чем необходимо. Хотя я, как разработчик, уверен что мой проект даёт вам больше приватности, чем какой-либо другой аналогичный.
Ricochet доступен для Windows, OS X (10.7 и выше), также есть generic Linux binary package. Информация о релизах и журнал релизов доступны на соответствующих страницах.
Также они доступны на сайте проекта [2].
Бинарники подписаны через PGP 9032 CAE4 CBFA 933A 5A21 45D5 FF97 C53F 183C 045D.
Адрес автора: ricochet:rs7ce36jsj24ogfw или john.brooks@dereferenced.net.
Tor даёт пользователям возможность скрывать их местонахождение, предоставляя при этом различные виды сервисов, от веб-публикаций до системы мгновенных сообщений. Используя точки встреч Tor («rendezvous points»), другие пользователи могут присоединяться к скрытым сервисам, причём никто из них не будет знать личность другого.
Скрытый сервис должен сообщить о своём существовании по сети Tor, прежде чем к нему получится присоединиться. Сервис случайным образом выбирает ретрансляторы, строит к ним цепочки, и делает их своими точками «знакомства», предоставляя им свой публичный ключ. На картинках зелёные линии – это цепочки, а не прямые соединения. При использовании полноценных цепочек Tor очень сложно привязать точку знакомства к ip-адресу скрытого сервиса. Хотя публичный ключ доступен многим, ip-адрес скрытого сервиса не должен разглашаться.

Шаг второй: скрытый сервис собирает свой дескриптор, содержащий публичный ключ и краткую информацию о каждой из точке знакомства, и подписывает это приватным ключом. Он закачивает дескриптор в распределённую таблицу хэшей. Клиенты найдут дескриптор по запросу XYZ.onion, где XYZ – 16-символьное имя, созданное на основе публичного ключа. После этого скрытый сервис запущен.
Использование автосгенерированного имени сервиса может показаться непрактичным, но оно служит важной цели: каждый,- включая точки знакомства, директория распределённой таблицы хэшей, и конечно, клиенты,- может подтвердить, что он общается с нужным скрытым сервисом. Есть мнение, что из трёх пунктов – «децентрализованный, безопасный и имеющий смысл для человека» обычно можно выбрать не более двух.

Шаг три: клиент, пожелавший соединиться со скрытым сервисом, должен узнать его onion-адрес. После этого ему нужно скачать дескриптор из распределённой хэш-таблицы. Если там есть дескриптор для XYZ.onion (и если сервис в онлайне, не заброшен и не сделал опечатки в своём имени), клиенту становится известен набор точек знакомства и правильный публичный ключ. В это время клиент тоже создаёт цепочку к другому случайно выбранному ретранслятору и делает его точкой встречи, передавая ему разовый секретный ключ.

Шаг четыре: когда дескриптор существует и точка встречи подготовлена, клиент собирает вводное сообщение (шифрованное с публичным ключом скрытого сервиса), включающее адрес точки встречи и одноразовый секретный ключ. Клиент отправляет его одной из точек знакомства с запросом о передаче его скрытому сервису. Опять-таки общение происходит через цепочку Tor, никто не может связать отправку вводного сообщения с ip-адресом клиента, и тот остаётся анонимным.

Шаг пять: скрытый сервис расшифровывает вводное сообщение и выясняет адрес точки встречи и секретный ключ. Он создаёт цепочку к точке встречи и отправляет одноразовый секретный ключ в приветственном сообщении.

На последнем шаге точка встречи уведомляет клиента об успешном соединении. После этого клиент и скрытый сервис используют цепочки, построенные до точки встречи, для связи друг с другом. Точка просто транслирует зашифрованные сообщения туда и обратно.
В общем, полностью соединение между клиентом и скрытым сервисом состоит из 6 ретрансляторов: 3 выбраны клиентом (один из них – точка встречи), а другие три выбраны скрытым сервисом.

Создать систему мгновенных сообщений со следующими свойствами:
— пользователи не идентифицируются по контактам или адресам
— общение имеет проверку подлинности и проходит в приватном режиме
— никто не имеет доступ к списку контактов, истории сообщений или другим метаданным
— сопротивляется цензуре и отслеживанию на уровне локальной сети
— сопротивляется использованию чёрных списков или DOS
— доступна и понятна для обычных пользователей
— надёжность и интерактивность сопоставима с традиционными IM
Личность каждого пользователя представлена скрытым сервисом и его точкой связи. Эта информация распространяется как id для связи в виде ricochet:qjj5g7bxwcvs3d7i. В этом виде она уникальна и достаточна для соединения с сервисом.
Находясь в онлайне, пользователь распространяет информацию о своём скрытом сервисе в виде id, содержащего onion-адрес, и принимает двусторонние анонимные соединения, которые либо идентифицируются как известные контакты, либо используются для получения запросов на общение.
Известные контакты используют специальный протокол для передачи сообщений через установленные соединения.
Как в классических системах мгновенных сообщений, вы можете отправить запрос на добавление пользователя в свой список контактов, используя его id. Перед тем, как вы сможете отправлять или получать сообщения, этот запрос должен быть принят.
Запрос отправляется путём соединения с сервисом, при котором сообщается, что соединение установлено для запроса контакта и предоставляется разная информация, в том числе id отправителя запроса. Отправитель, находясь в онлайне, периодически пытается устанавливать связь.
Запрос включает в себя:
— имя скрытого сервиса получателя
— случайный cookie, созданный в начале соединения получателем
— случайный секретный ключ, который использует получатель для подтверждения соединений
— полный публичный ключ, связанный со скрытым сервисом и подтверждающий личность отправителя
— возможно, прозвище и короткое приветственное сообщение
— подпись этой информации RSA при помощи того же публичного ключа
Получатель подсчитывает id отправителя, основываясь на публичном ключе, и подтверждает его, проверяя подпись запроса. Это подтверждает право отправителя пользоваться скрытым сервисом, представляемым его id
Получатель может принять или отклонить запрос. Отклонённый публичный ключ можно добавить в чёрный список и в будущем отклонять автоматически
Находясь в онлайне, сервис периодически пробует связь с каждым из контактов. В случае успеха подключение остаётся открытым и контакт считается находящимся в онлайне. На каждый из контактов нужно одно соединение, неважно, кто именно из двоих контактов являлся его инициатором.
Слой скрытого сервиса удобен тем, что предоставляет конфиденциальность, эфемерность, и подтверждения – поэтому протокол приложения получается очень простым. Клиентская часть соединения подтверждается предварительно распространённым случайным ключом, созданным сразу после запроса контакта.
Для общения используется простой бинарный протокол команда-ответ. Он пытается добавить надёжности в нестабильные соединения. Для простоты и полного контроля над процессом, чтобы исключать возможность атак на безопасность и анонимность общения, используется оригинальный протокол, а не один из готовых вариантов (вроде XMPP).
Протокол включает возможность проверки версий для будущего развития.
Интерфейс – важная и часто недооценённая часть безопасности и анонимности. Менее подкованные в технических аспектах пользователи должны без труда понимать, как пользоваться программой и что нужно делать, чтобы оставаться в безопасности.
Интерфейс Ricochet старается быть простым и понятным для тех, кто использовал другие менеджеры мгновенных сообщений. Понимание Tor и сетевых концепций не требуется. Должно быть просто использовать его правильным образом, сложно нарушать правила безопасности, и возможно для IT-специалистов расширять возможности программы
Описанный здесь протокол близок к наипростейшему варианту. Более продвинутые протоколы могут допускать передачу файлов или потоковое аудио и видео. Более продвинутое использование скрытых сервисов может уменьшить риски при открытии сервиса с публичным доступом. Также можно использовать разделённые сервисы или более сложно настроенные сервисы для предотвращения атак. Естественно, приветствуются идеи и помощь в развитии проекта.
Автор: SLY_G
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/73776
Ссылки в тексте:
[1] github: https://github.com/ricochet-im/ricochet
[2] сайте проекта: https://ricochet.im/releases/
[3] Источник: http://habrahabr.ru/post/242535/
Нажмите здесь для печати.