TextSecure — зашифрованное приложение для обмена сообщениями для Android , которое разрабатывалось с 2010 по 2015 год. Оно было предшественником Signal и первым приложением, использовавшим протокол Signal , который с тех пор был реализован в WhatsApp и других приложениях. TextSecure использовал сквозное шифрование для защиты передачи текстовых сообщений, групповых сообщений, вложений и медиасообщений другим пользователям TextSecure.
TextSecure был впервые разработан компанией Whisper Systems , которую позже приобрела компания Twitter . Исходный код приложения был затем выпущен под свободной и открытой лицензией программного обеспечения. В 2013 году разработка TextSecure была подхвачена независимой группой Open Whisper Systems , которая объединила его с зашифрованным приложением для голосовых вызовов RedPhone и переименовала продукт в Signal.
TextSecure начинался как приложение для отправки и получения зашифрованных SMS-сообщений. [7] Его бета-версия была впервые запущена 25 мая 2010 года компанией Whisper Systems , [1] стартапом, совместно основанным исследователем безопасности Мокси Марлинспайком и робототехником Стюартом Андерсоном. [8] [9] Помимо запуска TextSecure, Whisper Systems выпустила брандмауэр, инструменты для шифрования других форм данных и RedPhone , приложение, которое обеспечивало зашифрованные голосовые вызовы. [1] [8] Все это было фирменное корпоративное программное обеспечение для обеспечения мобильной безопасности.
В ноябре 2011 года Whisper Systems объявила, что ее приобрела Twitter . Финансовые условия сделки не были раскрыты ни одной из компаний. [10] Приобретение было сделано «в первую очередь для того, чтобы г-н Марлинспайк мог помочь тогдашнему стартапу улучшить свою безопасность». [11] Вскоре после приобретения сервис RedPhone от Whisper Systems стал недоступен. [12] Некоторые критиковали удаление, утверждая, что программное обеспечение было «специально нацелено [на помощь] людям, находящимся в условиях репрессивных режимов» и что оно оставило таких людей, как египтяне, в «опасном положении» во время событий египетской революции 2011 года . [13]
Twitter выпустил TextSecure как бесплатное программное обеспечение с открытым исходным кодом под лицензией GPLv3 в декабре 2011 года. [8] [14] [15] [16] RedPhone также был выпущен под той же лицензией в июле 2012 года. [17] Позже Марлинспайк покинул Twitter и основал Open Whisper Systems как совместный проект с открытым исходным кодом для продолжения разработки TextSecure и RedPhone. [18] [19]
Веб-сайт Open Whisper Systems был запущен в январе 2013 года. [19] Open Whisper Systems начала работу над внедрением TextSecure в iOS в марте 2013 года. [20] [21]
В феврале 2014 года Open Whisper Systems представила вторую версию своего протокола TextSecure (теперь Signal Protocol ), который добавил возможности группового чата и push-сообщений в TextSecure. [20] [22] К концу июля 2014 года Open Whisper Systems объявила о планах объединить свои приложения RedPhone и TextSecure в Signal . [23] Это объявление совпало с первоначальным выпуском Signal как аналога RedPhone для iOS. Разработчики заявили, что их следующими шагами будут предоставление возможностей мгновенного обмена сообщениями TextSecure для iOS, объединение приложений RedPhone и TextSecure на Android и запуск веб-клиента. [24] Signal стал первым приложением iOS, которое позволило бесплатно и легко совершать сильно зашифрованные голосовые вызовы. [18] [25]
Совместимость с TextSecure была добавлена в приложение iOS в марте 2015 года. [26] [27] Позже в том же месяце Open Whisper Systems прекратила поддержку отправки и получения зашифрованных SMS/MMS-сообщений на Android. Начиная с версии 2.7.0, TextSecure поддерживал отправку и получение зашифрованных сообщений только через канал данных. Причины этого включали: [7]
Отказ Open Whisper Systems от шифрования SMS/MMS побудил некоторых пользователей создать ответвление под названием Silence (первоначально называвшееся SMSSecure [28] ), предназначенное исключительно для шифрования SMS- и MMS-сообщений. [29] [30]
В ноябре 2015 года приложение RedPhone было объединено с TextSecure и переименовано в Signal для Android . [3]
TextSecure позволял пользователям отправлять зашифрованные текстовые сообщения, аудиосообщения, фотографии, видео, контактную информацию и широкий выбор смайликов через соединение для передачи данных (например, Wi-Fi , 3G или 4G ) другим пользователям TextSecure со смартфонами под управлением Android. TextSecure также позволял пользователям обмениваться незашифрованными SMS и MMS-сообщениями с людьми, у которых не было TextSecure. [22]
Сообщения, отправленные с помощью TextSecure другим пользователям TextSecure, автоматически шифровались end-to-end, что означало, что их могли прочитать только предполагаемые получатели. Ключи , которые использовались для шифрования сообщений пользователя, хранились только на устройстве. В пользовательском интерфейсе зашифрованные сообщения обозначались значком замка.
TextSecure позволял пользователю устанавливать парольную фразу, которая шифровала локальную базу данных сообщений и ключи шифрования пользователя. [32] Это не шифровало базу данных контактов пользователя или временные метки сообщений. [32] Пользователь мог определить период времени, по истечении которого приложение «забывало» парольную фразу, обеспечивая дополнительный механизм защиты в случае потери или кражи телефона. [31]
TextSecure имел встроенную функцию для проверки того, что пользователь общается с нужным человеком и что не было никакой атаки типа «человек посередине» . Эта проверка могла быть выполнена путем сравнения отпечатков ключей (в форме QR-кодов ) лично. [31] Приложение также уведомляло пользователя, если отпечаток ключа корреспондента изменился. [31]
TextSecure позволял пользователям общаться с несколькими людьми одновременно. [33] Групповые чаты автоматически шифровались сквозным шифрованием и поддерживались через доступное соединение данных, если все участники были зарегистрированными пользователями TextSecure. Пользователи могли создавать группы с заголовком и значком аватара, добавлять своих друзей, присоединяться к группам или выходить из них, а также обмениваться сообщениями/медиа, все с теми же свойствами шифрования, которые предоставляли парные чаты TextSecure. Серверы не имели доступа к метаданным группы, таким как списки участников группы, заголовок группы или значок аватара группы. [22] [34]
Приложение также может функционировать в качестве замены родному приложению обмена сообщениями Android, поскольку оно может отправлять незашифрованные SMS- и MMS-сообщения.
TextSecure требовал, чтобы у пользователя был номер телефона для проверки. [35] Номер не обязательно должен был совпадать с номером на SIM-карте устройства; это мог быть также номер VoIP [35] или стационарный телефон, при условии, что пользователь мог получить код проверки и иметь отдельное устройство для настройки программного обеспечения. Номер можно было зарегистрировать только на одном устройстве за раз.
Официальному клиенту TextSecure требовались Google Play Services , поскольку приложение зависело от платформы push-сообщений GCM от Google. [36] С февраля 2014 года по март 2015 года TextSecure использовал GCM в качестве транспорта для доставки сообщений по каналу данных. С марта 2015 года доставка сообщений TextSecure осуществлялась самой Open Whisper Systems, а клиент полагался на GCM только для события пробуждения. [7]
TextSecure был первым приложением, использовавшим протокол Signal Protocol (тогда он назывался TextSecure Protocol), который с тех пор был реализован в WhatsApp , Facebook Messenger и Google Allo , шифруя разговоры «более миллиарда человек по всему миру». [37] Протокол объединяет алгоритм Double Ratchet , предварительные ключи и рукопожатие 3-DH. [38] Он использует Curve25519 , AES-256 и HMAC-SHA256 в качестве примитивов . [39]
Протокол обеспечивает конфиденциальность, целостность, аутентификацию, согласованность участников, проверку назначения, прямую секретность , обратную секретность (также известную как будущая секретность), сохранение причинно-следственной связи, невозможность связывания сообщений, отказ от сообщений, отказ от участия и асинхронность . [40] Он не обеспечивает сохранение анонимности и требует серверов для ретрансляции сообщений и хранения материала открытого ключа. [40]
Протокол группового чата представляет собой комбинацию парного двойного храпового механизма и многоадресного шифрования . [40] В дополнение к свойствам, предоставляемым протоколом «один к одному», протокол группового чата обеспечивает согласованность говорящих, устойчивость к нарушению порядка, устойчивость к потере сообщений, вычислительное равенство, равенство доверия, обмен сообщениями в подгруппах, а также сжимаемое и расширяемое членство. [40]
Все клиент-серверные коммуникации были защищены TLS . [41] После того, как сервер удалил этот уровень шифрования, каждое сообщение содержало либо номер телефона отправителя, либо получателя в открытом виде. [42] Эти метаданные теоретически могли бы позволить создать «подробный обзор того, когда и с кем общались пользователи». [42] Open Whisper Systems утверждали, что их серверы не хранили эти метаданные.
Чтобы определить, какие контакты также являются пользователями TextSecure, криптографические хэши контактных номеров пользователя периодически передавались на сервер. [43] Затем сервер проверял, совпадают ли они с хэшами SHA256 зарегистрированных пользователей, и сообщал клиенту, если какие-либо совпадения были найдены. [43] Мокси Марлинспайк писал, что легко вычислить карту всех возможных входов хэша для выходов хэша и обратить отображение из-за ограниченного пространства прообразов (набора всех возможных входов хэша) телефонных номеров, и что «практическое сохранение конфиденциальности при обнаружении контактов остается нерешенной проблемой». [42] [43]
Механизм групповых сообщений был разработан таким образом, что серверы не имели доступа к списку участников, названию группы или значку группы. [44] Вместо этого создание, обновление, присоединение и выход из групп выполнялись клиентами, которые доставляли парные сообщения участникам таким же образом, как доставлялись индивидуальные сообщения. [22] [34]
Архитектура сервера была частично децентрализована в период с декабря 2013 года по февраль 2016 года. В декабре 2013 года было объявлено, что протокол обмена сообщениями, который использовался TextSecure, был успешно интегрирован в операционную систему Android с открытым исходным кодом CyanogenMod . [45] [46] [47] Начиная с CyanogenMod 11.0, клиентская логика содержалась в системном приложении WhisperPush. Согласно Open Whisper Systems, команда Cyanogen запустила собственный сервер TextSecure для клиентов WhisperPush, который был объединен с сервером TextSecure Open Whisper Systems, так что оба клиента могли обмениваться сообщениями друг с другом без проблем. [47] Команда CyanogenMod прекратила поддержку WhisperPush в феврале 2016 года и рекомендовала своим пользователям перейти на Signal. [48]
Полный исходный код TextSecure был доступен на GitHub по лицензии свободного программного обеспечения . [5] Программное обеспечение, которое обрабатывало маршрутизацию сообщений для канала данных TextSecure, также имело открытый исходный код. [6]
TextSecure официально распространялся только через Google Play . В октябре 2015 года TextSecure был установлен более 1 000 000 раз через Google Play. [2]
TextSecure был на короткое время включен в репозиторий программного обеспечения F-Droid в 2012 году, но был удален по просьбе разработчика, поскольку это была непроверенная сборка и исключительно устаревшая. Open Whisper Systems впоследствии заявили, что они не будут поддерживать распространение своих приложений через F-Droid, поскольку он не обеспечивает своевременных обновлений программного обеспечения, полагается на централизованную модель доверия и требует разрешения установки приложений из неизвестных источников, что наносит ущерб безопасности Android для обычных пользователей. [36]
В октябре 2013 года iSEC Partners опубликовали сообщение в блоге, в котором сообщили, что провели аудит нескольких проектов, поддержанных Open Technology Fund за последний год, включая TextSecure. [49]
В октябре 2014 года исследователи из Рурского университета в Бохуме опубликовали анализ протокола шифрования TextSecure. [39] Среди других результатов они представили неизвестную атаку с разделением ключей на протокол, но в целом они обнаружили, что зашифрованный чат-клиент был безопасным. [50]
Бывший сотрудник АНБ Эдвард Сноуден неоднократно одобрял TextSecure. В своей программной речи на SXSW в марте 2014 года он похвалил TextSecure за простоту использования. [51] [52] Во время интервью с The New Yorker в октябре 2014 года он рекомендовал использовать «что-нибудь от Moxie Marlinspike и Open Whisper Systems». [53] Когда его спросили о приложениях для зашифрованных сообщений во время Reddit AMA в мае 2015 года, он порекомендовал TextSecure. [54] [55]
В октябре 2014 года Electronic Frontier Foundation (EFF) включила TextSecure в свое обновленное руководство по самозащите от слежки. [56] В ноябре 2014 года TextSecure получила высшую оценку в рейтинге безопасных сообщений EFF. [57] [58] TextSecure получила баллы за шифрование сообщений при передаче, шифрование сообщений с помощью ключей, к которым у провайдеров нет доступа ( сквозное шифрование ), возможность для пользователей самостоятельно проверять личности своих корреспондентов, безопасность прошлых сообщений в случае кражи ключей ( прямая секретность ), открытость кода для независимой проверки ( открытый исходный код ), хорошее документирование конструкций безопасности и недавние независимые аудиты безопасности. [57] В то время « ChatSecure + Orbot », Cryptocat , «Signal/RedPhone», Pidgin (с OTR ), Silent Phone , Silent Text и дополнительные секретные чаты Telegram также получили семь из семи баллов в оценочной таблице. [57]
TextSecure был разработан некоммерческой группой разработчиков программного обеспечения Open Whisper Systems. [59] Группа финансируется за счет пожертвований и грантов , и все ее продукты публикуются как бесплатное программное обеспечение с открытым исходным кодом .
По состоянию на октябрь 2016 года [обновлять]проект получил неизвестное количество пожертвований от отдельных спонсоров через Freedom of the Press Foundation . [60] Open Whisper Systems получила гранты от Knight Foundation , [61] Shuttleworth Foundation , [62] и Open Technology Fund , [63] программы, финансируемой правительством США, которая также поддерживала другие проекты по обеспечению конфиденциальности, такие как программное обеспечение для обеспечения анонимности Tor и зашифрованное приложение для обмена мгновенными сообщениями Cryptocat .