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