Протокол Signal

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Протокол Signal (англ. Signal Protocol, ранее известный как TextSecure Protocol) — криптографический протокол, созданный компанией Open Whisper Systems для обеспечения сквозного шифрования голосовых вызовов, видеозвонков[1] и мгновенных сообщений[2]. Протокол был разработан Open Whisper Systems в 2013 году[2] и впервые был представлен в приложении TextSecure с открытым исходным кодом, которое позже было объединено в приложение Signal. Несколько приложений с закрытым исходным кодом, например, такие как WhatsApp, утверждают, что реализовали этот протокол, который, по их словам, шифрует разговоры «более миллиарда человек во всем мире»[3]. Facebook Messenger также утверждают, что они предлагают этот протокол для дополнительных «секретных сеансов связи», как и Google Allo для своего «режима инкогнито».

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

История создания

Разработка протокола Signal была начата в 2013 году Тревором Перрином (англ. Trevor Perrin) и Мокси Марлинспайком (англ. Moxie Marlinspike[en]), основателем Open Whisper Systems. Целью этой организации является развитие простого в использовании набора мобильных приложений для безопасного общения. Организация основана в 2013 году и состоит из небольшой группы разработчиков, финансируемой за счёт пожертвований и грантов, а также большого сообщества разработчиков-добровольцев. Первая версия протокола, TextSecure v1, была основана на протоколе Off-the-Record Messaging (OTR) для систем мгновенного обмена сообщениями[6][7].

24 февраля 2014 года Open Whisper Systems представила протокол TextSecure v2[8], который был перенесен в алгоритм Axolotl Ratchet[6][9]. Идея Axolotl Ratchet основана на эфемерном обмене ключами, который был представлен OTR, и сочетает его с храповым механизмом симметричного ключа, по образцу протокола мгновенного обмена сообщениями Silent Circle Instant Messaging Protocol[en] (SCIMP)[10]. Это смогло осуществить поддержку асинхронной связи («оффлайновые сообщения») в качестве его главной новой особенности, а также позволило повысить устойчивость при искаженном порядке сообщений и упростить поддержку разговоров с несколькими участниками[4]. Axolotl Ratchet был назван в честь вымирающих земноводных — аксолотлей[en], которые имеют экстраординарные способности к регенерации утраченных конечностей. Разработчики называют этот алгоритм самовосстанавливающимся, так как он автоматически отключает злоумышленнику доступ к открытым текстам последующих сообщений после взлома ключа сеанса[10].

Третья версия протокола, TextSecure v3, внесла некоторые изменения в криптографические примитивы и проводной протокол[6]. В октябре 2014 года исследователи из Рурского университета в Бохуме опубликовали анализ TextSecure v3[5][6]. Среди прочих результатов, они представили неизвестную атаку обмена ключами на протокол, но в целом они обнаружили, что он был защищен[11].

В марте 2016 года разработчики переименовали протокол как протокол Signal. Они также переименовали алгоритм Axolotl Ratchet в Double Ratchet Algorithm, чтобы лучше различать алгоритм и полный протокол[12], потому что некоторые использовали имя Аксолотль при обращении к полному протоколу[12].

По состоянию на октябрь 2016 года Протокол Сигнала был основан на протоколе TextSecure v3, но с дополнительными криптографическими изменениями[6]. В октябре 2016 года исследователи из Оксфордского университета в Великобритании, австралийского Технологического Университета Квинсленда и канадского Университета Макмастера опубликовали официальный анализ протокола[13][6]. Они пришли к выводу, что данный протокол криптографически надежен[13][6].

Свойства

Протокол обеспечивает конфиденциальность, целостность, аутентификацию, согласованность участников, проверку назначения, прямую секретность, пост-скомпрометированную безопасность (англ. Post-Compromise Security, известная как Future Secrecy), сохранение причинно-следственной связи, несвязанность сообщений, отказ от сообщений, отказ от участия и асинхронность. Он не обеспечивает сохранение анонимности и требует наличие серверов для ретрансляции сообщений и хранения информации об открытом ключе[4].

Протокол Signal также поддерживает возможность сквозных зашифрованных групповых чатов. Протокол группового чата представляет собой комбинацию парного двойного храпового механизма и многоадресного шифрования. В дополнение к свойствам, предоставляемых one-to-one протоколом, протокол группового чата обеспечивает согласованность участников, устойчивость к неупорядоченности, отказоустойчивость сообщений, вычислительное равноправие, равноправие доверия, обмен сообщениями в подгруппах, а также сужаемое и расширяемое количество участников[4].

Аутентификация

Для аутентификации пользователи могут вручную сравнивать отпечатки открытого ключа через внешний канал. Это позволяет пользователям проверять личности друг друга и избегать man-in-the-middle атаки. Реализация также может использовать механизм доверия при первом использовании, чтобы уведомлять пользователей об изменении ключа корреспондента[14].

Метаданные

Протокол Signal не мешает компаниям сохранять информацию о том, когда и с кем общаются пользователи[14][15]. Следовательно могут быть различия в том, как поставщики услуг обмена сообщениями выбирают обработку этой информации. Политика конфиденциальности Сигнала гласит, что идентификаторы получателей хранятся только на серверах Signal столько времени, сколько необходимо для передачи каждого сообщения. В июне 2016 года Мокси Марлинспайк рассказал The Intercept[en]: «Ближайшая часть информации к метаданным, которую хранит сервер Signal, это последний раз, когда каждый пользователь подключается к серверу, и точность этой информации снижается до дня, а не до часа, минуты и секунды»[15].

Использование

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

В ноябре 2014 года Open Whisper Systems объявила о партнерстве с WhatsApp для обеспечения сквозного шифрования путем включения протокола Signal в каждую клиентскую платформу WhatsApp[17]. Open Whisper Systems заявили, что они уже включили протокол в последний клиент WhatsApp для Android и что вскоре будут поддерживаться другие клиенты, групповые сообщения / мультимедиа и проверка ключей[18]. 5 апреля 2016 года WhatsApp и Open Whisper Systems объявили, что они закончили добавление сквозного шифрования к «каждому виду связи» в WhatsApp и что теперь пользователи могут проверять ключи друг друга[19][20]. В феврале 2017 года WhatsApp объявил о новой функции WhatsApp Status, которая использует протокол Signal для защиты своего содержимого[21].

В сентябре 2015 года G Data Software запустила новое приложение для обмена сообщениями под названием Secure Chat, которое использует протокол Signal[22][23].

В сентябре 2016 года Google запустил новое приложение для обмена сообщениями под названием Allo, которое имеет опциональный режим инкогнито, использующий протокол Signal для сквозного шифрования[24][25].

В октябре 2016 года Facebook развернул дополнительный режим под названием Secret Conversations в Facebook Messenger, который обеспечивает сквозное шифрование с использованием протокола Signal[26][27][28][29].

В январе 2018 года Open Whisper Systems и Microsoft объявили о добавлении поддержки протокола Signal в опциональный режим Skype, который называется Private Conversations[30][31].

В феврале 2020 года вышел новый мессенджер Session (бывший Loki Messenger), который основан на протоколе Signal и поддерживает сквозное шифрование. Заявлена децентрализация на блокчейне и работа через луковую маршрутизацию.

Влияние

Протокол Signal оказал влияние на другие криптографические протоколы. 3 мая 2016 года Viber заявил, что их протокол шифрования является пользовательской реализацией, которая использует те же подходы, что и Протокол Сигнала[32][33]. 9 мая 2016 года разработчики Wire[en] заявили, что их протокол шифрования Proteus основан на протоколе Signal[34][35].

Алгоритм Double Ratchet Algorithm, который был введен как часть протокола Signal, также был адаптирован другими протоколами. OMEMO — это расширение для открытого протокола XMPP, который был представлен в приложении обмена сообщениями Conversations и одобрен Фондом стандартов XMPP (XSF) в декабре 2016 года как XEP-0384[36]. Matrix — это открытый протокол связи, который включает в себя Olm, библиотеку, которая обеспечивает необязательное сквозное шифрование по комнатам с помощью реализации алгоритма Double Ratchet Algorithm[2].


Реализации

Open Whisper Systems поддерживает следующие библиотеки протокола Signal на GitHub:

  • libsignal-protocol-c: библиотека, написанная на C и опубликованная под лицензией GPLv3 с дополнительными разрешениями для Apple App Store.
  • libsignal-protocol-java: библиотека, написанная на Java и опубликованная под лицензией GPLv3.
  • libsignal-protocol-javascript: библиотека, написанная на JavaScript и опубликованная под лицензией GPLv3.

См. также

Примечания

  1. 1,0 1,1 1,2 Moxie Marlinspike. "Video calls for Signal now in public beta" (14 February 2017). Дата обращения: 8 декабря 2018. Архивировано 22 марта 2019 года.
  2. 2,0 2,1 2,2 Ksenia Ermoshina, Francesca Musiani, Harry Halpin. "End-to-End Encrypted Messaging Protocols: An Overview" (25 August 2016). Дата обращения: 8 декабря 2018. Архивировано 26 апреля 2021 года.
  3. Time Inc. "40 Under 40" (22 September 2016). Дата обращения: 8 декабря 2018. Архивировано 3 февраля 2017 года.
  4. 4,0 4,1 4,2 4,3 Nik Unger, Sergej Dechand, Joseph Bonneau, Sascha Fahl, Henning Perl, Ian Goldberg, Matthew Smith. "SoK: Secure Messaging" (2015). Дата обращения: 9 декабря 2018. Архивировано 1 ноября 2020 года.
  5. 5,0 5,1 Tilman Frosch, Christian Mainka, Christoph Bader, Florian Bergsma, Jorg Schwenk, Thorsten Holz. "How Secure is TextSecure?" (2014). Дата обращения: 9 декабря 2018. Архивировано 28 февраля 2019 года.
  6. 6,0 6,1 6,2 6,3 6,4 6,5 6,6 Katriel Cohn-Gordon, Cas Cremers, Benjamin Dowling, Luke Garratt, Douglas Stebila. "A Formal Security Analysis of the Signal Messaging Protocol" (ноябрь 2017). Дата обращения: 9 декабря 2018. Архивировано 22 февраля 2017 года.
  7. Open Whisper Systems. "Protocol" (2 March 2014). Дата обращения: 8 декабря 2018.
  8. Donohue, Brian. "TextSecure Sheds SMS in Latest Version" (24 February 2014). Дата обращения: 8 декабря 2018. Архивировано 15 ноября 2018 года.
  9. Open Whisper Systems. "ProtocolV2" (15 October 2014). Дата обращения: 8 декабря 2018.
  10. 10,0 10,1 Marlinspike, Moxie. "Advanced cryptographic ratcheting" (26 ноября 2013). Дата обращения: 9 декабря 2018. Архивировано 7 августа 2019 года.
  11. Darren Pauli. "Auditors find encrypted chat client TextSecure is secure" (3 Nov 2014). Дата обращения: 9 декабря 2018. Архивировано 4 ноября 2014 года.
  12. 12,0 12,1 Marlinspike, Moxie. "Signal on the outside, Signal on the inside" (30 марта 2016). Дата обращения: 9 декабря 2018. Архивировано 15 ноября 2018 года.
  13. 13,0 13,1 Chris Brook. "Signal Audit Reveals Protocol Cryptographically Sound" (November 10, 2016). Дата обращения: 9 декабря 2018. Архивировано 14 февраля 2017 года.
  14. 14,0 14,1 Christoph Rottermanner, Peter Kieseberg, Markus Huber, Martin Schmiedecker, Sebastian Schrittwieser. "Privacy and Data Protection in Smartphone Messengers" (December 2015). Дата обращения: 9 декабря 2018. Архивировано 27 марта 2016 года.
  15. 15,0 15,1 Micah Lee. "Battle of the Secure Messaging Apps: How Signal Beats WhatsApp" (June 22 2016). Дата обращения: 9 декабря 2018. Архивировано 19 февраля 2017 года.
  16. Moxie Marlinspike. "Video calls for Signal out of beta" (13 Mar 2017). Дата обращения: 8 декабря 2018. Архивировано 19 ноября 2018 года.
  17. Jon Evans. "WhatsApp Partners With Open WhisperSystems To End-To-End Encrypt Billions Of Messages A Day" (18 November 2014). Дата обращения: 8 декабря 2018. Архивировано 18 ноября 2014 года.
  18. Moxie Marlinspike. "Open Whisper Systems partners with WhatsApp to provide end-to-end encryption" (18 Nov 2014). Дата обращения: 8 декабря 2018. Архивировано 7 декабря 2018 года.
  19. Metz, Cade. "Forget Apple vs. the FBI: WhatsApp Just Switched on Encryption for a Billion People" (5 April 2016). Дата обращения: 8 декабря 2018. Архивировано 5 апреля 2016 года.
  20. Lomas, Natasha. "WhatsApp completes end-to-end encryption rollout" (5 April 2016). Дата обращения: 8 декабря 2018. Архивировано 13 ноября 2020 года.
  21. WhatsApp. "Статус WhatsApp" (20 February 2017). Дата обращения: 8 декабря 2018.
  22. Tara Seals. "G DATA Adds Encryption for Secure Mobile Chat" (17 Sep 2015). Дата обращения: 8 декабря 2018. Архивировано 22 июля 2016 года.
  23. GDATASoftwareAG. "SecureChat". Дата обращения: 8 декабря 2018. Архивировано 7 мая 2017 года.
  24. Greenberg, Andy With Allo and Duo, Google Finally Encrypts Conversations End-to-End. Wired (18 May 2016). Дата обращения: 18 мая 2016. Архивировано 2 февраля 2017 года.
  25. Gibbs, Samuel Google launches WhatsApp competitor Allo – with Google Assistant. The Guardian (21 September 2016). Дата обращения: 21 сентября 2016. Архивировано 7 января 2019 года.
  26. Isaac, Mike Facebook to Add ‘Secret Conversations’ to Messenger App. The New York Times (8 July 2016). Дата обращения: 12 июля 2016. Архивировано 12 июля 2016 года.
  27. Messenger Starts Testing End-to-End Encryption with Secret Conversations. Facebook (8 July 2016). Дата обращения: 11 января 2018. Архивировано 12 января 2018 года.
  28. Greenberg, Andy ‘Secret Conversations:’ End-to-End Encryption Comes to Facebook Messenger. Wired (8 July 2016). Дата обращения: 12 июля 2016. Архивировано 11 июля 2016 года.
  29. Greenberg, Andy You Can All Finally Encrypt Facebook Messenger, So Do It. Wired (4 October 2016). Дата обращения: 5 октября 2016. Архивировано 15 апреля 2017 года.
  30. Newman, Lily Hay Skype's Rolling Out End-to-End Encryption For Hundreds of Millions of People. Wired (11 January 2018). Дата обращения: 13 января 2018. Архивировано 12 января 2018 года.
  31. Lund, Joshua Signal partners with Microsoft to bring end-to-end encryption to Skype. Signal Blog. Open Whisper Systems (11 January 2018). Дата обращения: 13 января 2018. Архивировано 2 февраля 2020 года.
  32. Viber Encryption Overview. Viber (3 May 2016). Дата обращения: 8 июля 2017. Архивировано 11 июля 2016 года.
  33. Eyal, Ofir Canada, Germany and Australia are getting e2e encryption. Viber (3 May 2016). Дата обращения: 9 октября 2016. Архивировано 5 октября 2016 года.
  34. Add attribution. GitHub. Wire Swiss GmbH (9 May 2016). Дата обращения: 9 октября 2016. Архивировано 7 мая 2017 года.
  35. Wire Security Whitepaper (PDF). Wire Swiss GmbH (3 March 2016). Дата обращения: 15 июля 2016. (недоступная ссылка)
  36. Andreas Straub. XEP-0384: OMEMO Encryption. XMPP Standards Foundation website (7 December 2016). Дата обращения: 28 апреля 2017. Архивировано 25 февраля 2017 года.