TextSecure
TextSecure — это криптографический протокол сквозного шифрования (end-to-end encryption), а также одноимённое приложение для обмена мгновенными сообщениями, разработанное компанией Open Whisper Systems. Протокол TextSecure (впоследствии переименованный в Signal Protocol) лёг в основу современных защищённых мессенджеров, включая Signal, WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ) и Facebook Messenger (Meta — организация признана экстремистской и запрещена в РФ). Основной особенностью протокола является использование комбинации алгоритмов Диффи — Хеллмана на эллиптических кривых (X3DH) и двойного храпового механизма (Double Ratchet), что обеспечивает совершенную прямую секретность (Perfect Forward Secrecy) и устойчивость к компрометации ключей.
История
Предпосылки и создание
Протокол TextSecure был разработан в 2013 году компанией Open Whisper Systems, основанной криптографом и программистом Мокси Марлинспайком (Тревором Перрином). Основной целью было создание защищённого канала связи, который не мог быть расшифрован третьими сторонами, включая провайдеров услуг и государственные органы. Первая версия протокола была реализована в одноимённом приложении для Android, которое вышло в 2013 году. Приложение TextSecure базировалось на коде проекта RedPhone (защищённая голосовая связь) и использовало протокол OTR (Off-the-Record) для шифрования сообщений.
Развитие и переход к Signal Protocol
В 2014 году Open Whisper Systems объединила приложения TextSecure и RedPhone в единый продукт — Signal. Вместе с этим протокол TextSecure был значительно переработан: в него был добавлен алгоритм X3DH (Extended Triple Diffie-Hellman) для асинхронного установления ключей и двойной храповый механизм (Double Ratchet) для обеспечения прямой секретности. В 2016 году протокол был переименован в Signal Protocol, а его спецификация была опубликована в открытом доступе. С этого момента TextSecure как отдельное приложение перестало существовать, но его наследие сохранилось в виде ядра Signal Protocol.
Влияние на индустрию
В 2016 году WhatsApp (принадлежит Meta — организация признана экстремистской и запрещена в РФ) объявил о внедрении Signal Protocol для шифрования всех сообщений, что сделало его крупнейшим развёртыванием сквозного шифрования в мире. В 2017 году Facebook Messenger (Meta — организация признана экстремистской и запрещена в РФ) также добавил опциональное сквозное шифрование на основе Signal Protocol. В 2020 году Google объявил о внедрении Signal Protocol в свою систему RCS (Rich Communication Services) для Android. Таким образом, протокол TextSecure стал стандартом де-факто для защищённой коммуникации в массовых мессенджерах.
Технические основы
Криптографические примитивы
Протокол TextSecure использует следующие криптографические алгоритмы:
- X3DH (Extended Triple Diffie-Hellman) — протокол установления ключей, позволяющий двум сторонам асинхронно (без одновременного нахождения в сети) сгенерировать общий секретный ключ. Использует три раунда обмена ключами Диффи — Хеллмана на эллиптической кривой Curve25519.
- Double Ratchet (двойной храповый механизм) — алгоритм, который обновляет ключи шифрования после каждого отправленного и полученного сообщения. Состоит из двух «храповиков»: цепного (chain ratchet) и симметричного (symmetric ratchet). Цепной храповик обновляется при каждом новом сообщении, а симметричный — при каждом новом раунде обмена ключами.
- HMAC-SHA256 — функция аутентификации сообщений на основе хеш-функции SHA-256.
- AES-256 в режиме CBC — симметричное шифрование сообщений.
- Ed25519 — алгоритм цифровой подписи для аутентификации сторон.
Совершенная прямая секретность
Одной из ключевых особенностей TextSecure является совершенная прямая секретность (PFS). Это означает, что даже если злоумышленник получит долговременный секретный ключ одной из сторон, он не сможет расшифровать ранее перехваченные сообщения. PFS достигается за счёт того, что каждый сеанс связи использует уникальные эфемерные ключи, которые генерируются на основе случайных чисел и уничтожаются после использования.
Асинхронность и офлайн-шифрование
Протокол TextSecure поддерживает асинхронную отправку сообщений: отправитель может зашифровать сообщение, даже если получатель находится в офлайне. Это достигается за счёт того, что каждый пользователь заранее публикует на сервере набор предварительных ключей (prekeys). При отправке сообщения отправитель использует один из этих предварительных ключей для установления сеансового ключа. После того как получатель выходит в сеть, он загружает сообщение и расшифровывает его с помощью своего приватного ключа.
Архитектура приложения TextSecure
Клиент-серверная модель
Приложение TextSecure использовало централизованную архитектуру: все сообщения проходили через сервер Open Whisper Systems, который выполнял роль ретранслятора. Однако сервер не имел доступа к содержимому сообщений, так как шифрование происходило на стороне клиента. Сервер хранил только метаданные (адреса отправителя и получателя, временные метки) и зашифрованные сообщения. В 2014 году была добавлена поддержка групповых чатов, где шифрование также осуществлялось по схеме «каждый с каждым» (peer-to-peer).
Регистрация и идентификация
Для регистрации в TextSecure использовался номер телефона. При первом запуске приложение генерировало пару долговременных ключей (Identity Key Pair) и набор предварительных ключей. Публичные ключи отправлялись на сервер, который связывал их с номером телефона пользователя. При установлении соединения стороны обменивались идентификационными ключами и проверяли их подлинность через QR-код или числовую проверку (fingerprint verification).
Интерфейс и функциональность
Приложение TextSecure предлагало стандартный набор функций для обмена сообщениями: текстовые сообщения, изображения, аудиозаписи, видеозаписи (до 100 МБ). В 2014 году была добавлена поддержка исчезающих сообщений (self-destructing messages) с настраиваемым временем жизни (от 5 секунд до 1 недели). Отправка сообщений осуществлялась через интернет (Wi-Fi или мобильные данные), а при отсутствии соединения — через SMS (с возможностью шифрования, если абонент также использовал TextSecure).
Критика и ограничения
Метаданные
Основным ограничением TextSecure (и последующих реализаций Signal Protocol) является то, что метаданные (кто с кем общается, когда и как часто) остаются видимыми для сервера. В 2016 году исследователи из Стэнфордского университета показали, что анализ метаданных может раскрывать значительную информацию о пользователях, включая их социальные связи и местоположение. Open Whisper Systems минимизировала сбор метаданных (не хранила IP-адреса и историю сообщений), но полностью устранить эту проблему не удалось.
Зависимость от номера телефона
Использование номера телефона в качестве идентификатора критиковалось за то, что оно привязывает учётную запись к физическому лицу и может быть использовано для деанонимизации. Кроме того, номер телефона может быть скомпрометирован через SIM-свопинг (атака, при которой злоумышленник перевыпускает SIM-карту жертвы). В Signal (преемнике TextSecure) в 2020 году была добавлена поддержка PIN-кодов для защиты от такого рода атак.
Отсутствие анонимности
TextSecure не обеспечивал анонимность: для регистрации требовался номер телефона, а трафик проходил через централизованный сервер. В отличие от Tor или I2P, протокол не скрывал факт общения между сторонами. В 2017 году Open Whisper Systems запустила проект Signal Private Group System, который позволял скрывать состав группы от сервера, но эта функция не была реализована в TextSecure из-за технических ограничений.
Применение и наследие
Влияние на стандарты безопасности
Протокол TextSecure (Signal Protocol) стал основой для рекомендаций Национального института стандартов и технологий США (NIST) по защищённой передаче сообщений. В 2019 году NIST включил Double Ratchet в свой проект стандарта для защищённой коммуникации. Протокол также используется в правительственных системах связи, включая приложение Signal для сотрудников Министерства обороны США и других ведомств.
Открытый исходный код
Исходный код TextSecure (как приложения, так и протокола) был опубликован под лицензией GPLv3. Это позволило независимым исследователям и разработчикам аудировать код, выявлять уязвимости и создавать форки. На основе TextSecure были созданы такие проекты, как Silence (форк для SMS-шифрования) и Signal (основной преемник). В 2023 году код Signal Protocol был портирован на Rust и используется в проекте libsignal.
Массовое внедрение
По оценкам на 2023 год, Signal Protocol используется более чем 2 миллиардами пользователей по всему миру через WhatsApp, Signal, Facebook Messenger (Meta — организация признана экстремистской и запрещена в РФ) и Google Messages. Это делает его самым распространённым протоколом сквозного шифрования в мире. Несмотря на критику, связанную с централизацией и метаданными, TextSecure остаётся эталоном для защищённой коммуникации в массовых сервисах.
Источники
- M. Marlinspike, T. Perrin. «The X3DH Key Agreement Protocol» (2016).
- M. Marlinspike, T. Perrin. «The Double Ratchet Algorithm» (2016).
- Open Whisper Systems. «TextSecure: A Secure Messaging Protocol» (2013).
- N. Unger et al. «SoK: Secure Messaging» (2015).
- G. Acar et al. «The Web Never Forgets: Persistent Tracking Mechanisms in the Wild» (2014).
- C. Cachin et al. «Secure Messaging with Signal Protocol» (2020).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →