User:Нода Иван/sandbox

The Signal Protocol - Протокол Связи (ранее известный как TextSecure Protocol), является несетеризованным криптографическим протоколом, который может использоваться для обеспечения сквозного шифрования аудио- и видеозвонков и мгновенного обмена сообщениями во время беседы в реальном времени (чат). Протокол разработан Open Whisper Systems в 2013 году и впервые использован в приложении TextSecure с открытым исходным кодом, которое позже стало называться Signal.Несколько представителей проприетарного (несвободного) программного обеспечения заявили, что используют данный протокол. К примеру мессенджер WhatsApp, представители которого заявили, что шифруют разговоры более чем одного миллиарда человек по всему миру. Также как представители мессенджера Facebook утверждали, что приложение предоставляет возможность использования данного протокола для "тайной переписки", так и представители мобильного приложения Google Allo сообщили, что данный протокол применяется в их приложении в "режиме инкогнито".

Протокол сочетает в себе Double Ratchet Algorithm, предварительные ключи шифрования и тройное подтверждение установления связи Диффи-Хеллмана(3-DH), и использует Curve25519, AES-256 и HMAC-SHA256 как криптографические примитивы.

История
Протокол Связи начинал разрабатываться Тревором Перрен (Trevor Perrin) и Мокси Марлинспайк (Moxie Marlinspike) (Open Whisper Systems) в 2013 году. Первая версия протокола, TextSecure v1, была основана на криптографическом протоколе для систем мгновенного обмена сообщениями Off-the-Record Messaging (OTR).

24 Февраля 2014 года Open Whisper Systems представила протокол TextSecure v2, в котором произошел переход к использованию алгоритма Axolotl Ratchet. Структура алгоритма Axolotl Ratchet основана на эфемерном изменении ключа, который доставлялся с помощью OTR, и сочетанием его с симметричной заменой ключа на основании модели протокола Silent Circle Instant Messaging Protocol (SCIMP). Протокол SCIMP обеспечил поддержку асинхронной передачи данных ("автономные сообщения") в качестве нового базового функционала, а также увеличил устойчивость протокола TextSecure к искажению последовательности (очередности) сообщений и более простую поддержку многопользовательского чата. Алгоритм Axolotl Ratchet был назван в честь находящейся под угрозой исчезновения водной саламандры Axolotl, которая обладает экстраординарными возможностями самовосстановления. Разработчики называют алгоритм самовосстанавливающимся, поскольку он автоматически лишает злоумышленника доступа к открытому тексту последующих сообщений после взлома ключа сеанса.

В третьей версии данного протокола, TextSecure v3, были внесены некоторые изменения в криптографические примитивы и wire protocol. В октябре 2014 года исследователи из Рурского университета в Бохуме опубликовали отчет об анализе протокола TextSecure v3. Среди выводов были представлены данные об атаке unknown key-share attack на данный протокол, но, в целом, было сделано заключение, что TextSecure надежен и безопасен.

В марте 2016 года, разработчики переименовали протокол в Протокол Связи. Также они переименовали алгоритм Axolotl Ratchet в алгоритм Double Ratchet, чтобы лучше отличать замену ключа("ratchet") в протоколе от названия протокола, потому что некоторые используют название Axolotl, подразумевая сам протокол.

В октябре 2016 года, Протокол Связи основывался на TextSecure v3, но с некоторыми криптографическими изменениями. В октябре 2016 года исследователи из Оксфордского университета, Великобритания, Queensland University of Technology, Австралия, и Университета МакМастера, Канада, опубликовали формальный анализ протокола. Они пришли к выводу, что протокол крипто устойчив.

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

Протокол Связи также поддерживает сквозное шифрование групповых чатов. Протокол группового чата использует попарную комбинацию алгоритма Double Ratchet и многоадресного шифрования. В дополнение ко всем свойствам, которые предоставляет протокол один к одному (one-to-one protocol), протокол группового чата обеспечивает согласованность при отправке сообщений между пользователями, доставку сообщений, расшифровку данных без получения всех предыдущих сообщений, равенство участников по достоверности информации и потребляемым ресурсам, создание групповых чатов без прекращения сеанса, а также удаление и добавление участников в них.

Аутентификация
Для аутентификации пользователи могут вручную сравнивать отпечаток открытого ключа используя внешний канал. Это позволяет пользователям проверить личности друг друга и избежать атаки человек посередине. Также реализован механизм, позволяющий пользователю выбрать, довериться ли неизвестному пользователю при первом совместном сеансе или нет (trust on first use).

Не признание авторства какого-либо сообщения
Нет никаких конкретно доказательств, что сообщение было написано именно этим пользователем.

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

Метаданные
Протокол Связи не затрудняет провайдерам сбор и хранение информации о том, когда и с кем пользователи общались. Отличия могул лишь заключаться в том, какой именно способ обработки информации выбирает провайдер для данного сервиса обмена сообщениями. Политика конфиденциальности программного обеспечения Signal гласит, что на сервере будет храниться такое количество пользовательских идентификаторов, которое необходимо для доставки каждого сообщения. В июне 2016 года было опубликовано заявление Мокси Марлинспайка в The Intercept о том, что информация, которую можно было бы отнести к метаданным, хранящимся на серверах приложения Signal - это дата последнего подключения пользователя к серверу с точностью до дней, а не часов, минут и секунд ("the closest piece of information to metadata that the Signal server stores is the last time each user connected to the server, and the precision of this information is reduced to the day, rather than the hour, minute, and second").

Применение
Open Whisper Systems впервые использовала свой протокол в приложении TextSecure. Позже они объединили приложение, шифрующее голос, которое называлось RedPhone, с приложением TextSecure и назвали полученное программное обеспечение Signal. RedPhone использовал ZRTP для шифрования звонков. В марте 2017, Signal перешел на новую технологию, базирующуюся на WebRTC, которая также позволила совершать видеозвонки. Новая система вызова в приложении Signal использует Протокол Связи для сквозного шифрования.

В ноябре 2014 года Open Whisper Systems объявила о сотрудничестве с WhatsApp с целью внедрения Протокола Связи для обеспечения сквозного шифрования данных каждого пользователя платформы WhatsApp. Open Whisper Systems заявили, что они уже внедрили протокол в последнюю версию WhatsApp для клиентов на ОС Android и что поддержка других клиентов, групповых и медиа сообщений, а также ключа проверки будет вскоре после этого. 5 Апреля 2016 года WhatsApp и Open Whisper Systems сообщили о том, что закончили добавление сквозного шифрования для "всех способов обмена данными" для WhatsApp, и что пользователи теперь могут проверять ключи друг друга. В феврале 2017 года WhatsApp сообщила о новом функционале, WhatsApp статус, который использует Протокол Связи для обеспечения безопасности хранящихся данных.

В сентябре 2015 года G Data Software запустила новой мессенджер под названием Secure Chat, который использует Протокол Связи.

В сентябре 2016 Google запустила новый мессенджер под названием Allo, который предоставлял возможность использования "Режима инкогнито"(Incognito Mode), при использовании которого применялся Протокол Связи для сквозного шифрования.

В октябре 2016 года Facebook добавила дополнительный функционал под названием "Тайный разговор"(Secret Conversations) в Facebook Messenger, который обеспечивает сквозное шифрование за счет внедрения Протокола Связи.

В январе 2018 года Open Whisper Systems и Microsoft сообщили о добавлении Протокола Связи для дополнительной поддержки режима "Тайной беседы"(Private Conversations) в Skype.

Влияние
Протокол Связи повлиял на другие криптографические протоколы. 3 Мая 2016 года представители Viber заявили, что криптографический протокол, который они сами реализовали, использует тот же подход("uses the same concepts"), что и Протокол Связи. 9 Мая 2016 года создатели Wire заявили, что их криптографический протокол, Proteus, основан на Протоколе Связи.

Double Ratchet Algorithm, который был представлен как часть Протокола Связи, также был также был применен в других протоколах. OMEMO - это расширение для протокола XMPP, которое применяется в мессенджере Conversations и которое было утверждено XMPP Standards Foundation (XSF) в декабре 2016 года как XEP-0384. Matrix это открытый протокол обмена данными, который включает в себя Olm, библиотеку, которая применяется для дополнительной реализации сквозного шифрования на основании room-by-room путем использования Double Ratchet Algorithm.

Реализация
Open Whisper Systems обладает следующими библиотеками (libraries), который поддерживают реализацию Протокола Связи на GitHub:
 * libsignal-protocol-c: Библиотека, написанная на C и опубликованная на основании Открытого Лицензионного Соглашения (GPLv3) с дополнительными правами для продукции компании Apple App Store.
 * libsignal-protocol-java: Библиотека, написанная на Java и опубликованная на основании Открытого Лицензионного Соглашения (GPLv3).
 * libsignal-protocol-javascript: Библиотека, написанная на JavaScript и опубликованная на основании Открытого Лицензионного Соглашения (GPLv3).

См. также

 * Comparison of instant messaging protocols
 * Comparison of cryptography libraries

Внешние ссылки

 * "TextSecure Protocol: Present and Future", talk by Trevor Perrin at NorthSec 2015 (video)
 * "TextSecure Protocol: Present and Future", talk by Trevor Perrin at NorthSec 2015 (video)

Category:Application layer protocols Category:Cryptographic protocols