Как криптомессенджер Signal успешно противостоит прослушке со стороны властей США



    На фоне событий в США резко выросла популярность защищённого мессенджера Signal — c 6000 до 26 000 скачиваний в день. В этой программе реализована стойкая криптография и сквозное шифрование, она распространяется с открытым исходным кодом и работает на известных криптографических протоколах (в отличие от проприетарного MProto).

    Но теперь разработчики Signal столкнулись с новой угрозой. Правительство США пытается скомпрометировать защиту мессенджера и опять получить доступ к переписке пользователей. В 2016 году им удалось получить судебную повестку на изъятие переписки одного пользователя, но из-за сквозного шифрования там нечего было изымать.

    Единственные данные, которые Signal может предоставить по запросу правительственных служб или по судебной повестке — только те данные, которые она хранит о пользователе. Это:

    • дата создания аккаунта в Unix-времени;
    • дата последнего использования в Unix-времени.

    И это всё. Никаких контактов, информации о группах и данных из профиля.


    Досье пользователя, которое Signal предоставил по судебному запросу. Скриншот из судебных документов

    «Мы разработали Signal таким образом, чтобы персональные данные хранились у клиентов, а не у нас, — пишут разработчики. — Signal использует сквозное шифрование, так что мы никогда не имеем доступа к содержимому сообщений, которые вы отправляете. Они видны только вам и предполагаемым получателям. Однако Signal также применяет эту философию дизайна и к остальным вашим данным».

    В отличие от любых других популярных мессенджеров, у Signal нет доступа к контактам, социальному графу, групповым данным, информации о состоянии в группах, имени профиля, аватару профиля, данным о местоположении, истории поиска и так далее. В коде программы отсутствуют трекеры, реклама или код для аналитики. Абсолютно вся информация зашифрована, кроме даты создания аккаунта и даты последнего использования, как показано на скриншоте.


    Кадр из лекции Мокси Марлинспайка на конференции по информационной безопасности Chaos Computer Club в декабре 2019 года с демонстрацией учётных данных его личного аккаунта Signal

    «Поскольку мы создали Signal, чтобы полностью избежать хранения какой-либо конфиденциальной информации, я могу выйти на сцену перед тысячами людей и публично опубликовать все данные своей учётной записи, не раскрыв при этом ничего, кроме того, как давно у меня установлен Signal (с тех пор, как я последний раз поменял телефон) и последней даты, когда я его использовал (это сегодня, кстати)», — говорит Мокси Марлинспайк (Moxie Marlinspike), известный хакер, криптоанархист и основной разработчик программы.

    Главная слабость Signal и подобных мессенджеров — привязка к конкретному номеру телефона. Например, если посторонний присоединится к некоей группе, то увидит телефонные номера всех участников этой группы. Этот приём использовала полиция Гонконга, чтобы установить личности протестующих в WhatsApp, Signal и Telegram-.

    С другой стороны, остальные данные аккаунта злоумышленник не получит даже по судебному запросу.

    «Если вы попросите генерального директора любой другой крупной коммуникационной платформы публично опубликовать свои учётные данные со своей платформы, он этого не сделает, — пишет Мокси. — Я их не виню — это много данных, которыми неудобно делиться с вами, — но это поднимает вопрос о том, насколько комфортно делиться теми же данными с ними [властями]».

    Любая американская компания обязана выполнять правила американского законодательства и предъявлять данные по судебному запросу, будь то WhatsApp или Signal. Но в случае Signal ей просто нечего будет предъявить.

    В некоторых странах после утечек из WhatsApp даже военных и политиков переводят на обязательное использование криптомессенджеров Signal и Wickr. Например, такие правила установлены для бойцов 82-й воздушно-десантной дивизии армии США и для коммуникации членов консервативной партии Великобритании. Так что наличие на телефоне Signal — не признак подозрительной активности, а скорее признак наличия здравого смысла.

    Отсутствие персональных данных во владении компании — единственная стратегия, которая позволяет обеспечить безопасность этих данных, уверены создатели Signal. Соответственно, доверие к любой компании сводится не к доверию сохранности наших личных данных, а к доверию их инженерным способностям и ноу-хау для разработки программного обеспечения, которое не допустит передачи личных данных от пользователя и гарантирует, что они хранятся только у него и больше никому не доступны, включая саму компанию.

    Signal — это некоммерческая организация 501(с)(3), поэтому программное обеспечение было и останется свободным и бесплатным. «Наша миссия заключается в повышении конфиденциальности в интернете, поэтому мы публикуем нашу технологию и делимся знаниями, чтобы побудить другие компании использовать её в своих собственных продуктах и услугах», — пишет Мокси Марлинспайк. Сегодня на протоколе Signal работают некоторые другие мессенджеры, хотя и они и не реализовали строгий отказ от сбора персональной информации о пользователях и продолжают хранить на своих серверах контакты, разговоры, фотографии и прочие данные для каждого аккаунта. Например, WhatsApp тоже использует защищённый протокол Signal, однако передаёт в материнскую компанию Facebook социальный граф пользователя. То же самое относится к коммерческим компаниям Telegram FZ LLC и Telegram Messenger Inc. В случае Signal на сервер передаётся только усечённый хеш каждого телефонного номера из списка контактов. Такой хеш нельзя сбрутить напрямую, хотя и о полной секретности речи не идёт.

    Конечно, существуют более защищённые и надёжные мессенджеры со сквозным шифрованием, без указания телефонного номера и других идентификаторов. Например, P2P-система прямого обмена шифрованными сообщениями Matrix с клиентским программным обеспечением типа Riot и другими клиентами.


    Интерфейс клиента Riot для пиринговой криптосети Matrix

    Но пока эти программы не очень дружественны к пользователям. Например, чтобы в десктопном клиенте Riot отменить отправку подтверждений о прочтении, нужно отредактировать файл конфигурации /etc/riot/config.json.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Что вы используете для шифрования секретной переписки?

    • 35,5%Секретные чаты Telegram93
    • 7,6%Секретные чаты Signal20
    • 9,2%PGP/GPG/электронная почта24
    • 14,9%Другое39
    • 32,8%Мне нечего скрывать86
    GlobalSign
    Компания

    Комментарии 24

      +2

      Мне кажется, для полной модели открытости, база данных аккаунтов должна быть доступна всем (на чтение). Публичные ключи, даты и т.д. В этом месте применима та же логика, по которой криптоалгоритмы открыты — их публичный аудит даёт большую уверенность в безопасности, чем прятание. Если база данных аккаунтов открыта и показана её безопасность, то "утечка" такой базы становится невозможной, так же как и какие-то side channels, которые, я уверен, будут найдены исследователями как только такая база появится в официальном доступе.

        +2
        их (вероятный) публичный аудит даёт большую уверенность в иллюзию безопасности

        исправил
          0

          Насколько я понимаю, в Keybase всё именно так и есть.

          +2
          Например, если посторонний присоединиться к некоей группе, то увидит телефонные номера всех участников этой группы.

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

          чтобы персональные данные хранились у клиентов, а не у нас

          Но притом они хранят неперсональные данные как логи с ip, временем подключения и т.п. И кроме того, можно получить номер телефона, который раскрывает личность в большинстве случаев.

          Остаётся только сопоставить неперсональные и персональные данные. Какое-то странное противостояние получается, учитывая финансирование от этих же самых властей США.
            +1
            причём, теоретически это сделать вообще невозможно из-за проблемы передачи по незащищённому каналу

            Разве протокол Диффи-Хеллмана не про это?
              +1
              Проблема в том, что вы можете обменяться ключами безопасно по данному протоколу, но не ясно с кем. Т.е. посередине может быть человек, который будет посредником и пропускать всё через себя. Чтобы это обойти придумали сертификаты и доверие, т.е. мы начинаем доверять кому-то, кто говорит, что никого посередине нет. В мессенджерах пытаются обойти тем, что показывают секретный ключ, который можно (и нужно) сверить по отдельному каналу.
                0
                Совершенно верно, но это уже другой вопрос. Обменяться же ключами по незащищённому каналу можно.
                Ну а дальше вопрос «упоротости» пользователя. Либо использовать PKI или что-то аналогичное (не применяется в мессенджерах насколько я знаю?), либо сверять ключи по другому каналу (а желательно лично), либо забить и надеяться на то, что мы общаемся с тем с кем думаем. Подавляющая масса пользователей удовлетворяется последним вариантом насколько я понимаю.
                При этом PKI это тоже как бы не панацея, т.к. события последних лет показывают, что ряд УЦ весьма халатно относится к своим обязанностям.
                Сверка ключей дело хорошее, но тут надо иметь открытый код клиента, что бы понимать не случится ли так, что ключ незаметно поменяется, а ты об этом не узнаешь.
                Я не специалист в криптографии, а так — мимо проходил. Но мне картина как-то так представляется. Чуть не каждую неделю очередной пост про мессенджеры, а воз и ныне там. Вот и этот пост. Что здесь нового написано? Ничего. Снова рассказы про сквозное шифрование, которое сейчас у всех заявлено. А по факту настоящий защищённый мессенджер это утопия, он просто не найдёт пользователей, т.к. из обычных людей никто не понимает как это работает. А мессенджер без пользователей никому не нужен. Просто потому что если мне надо отправить, что-то очень сильно секретное тем моим полутора знакомым которые разбираются, то проще это заархивировать WinRAR'ом с паролем (заявлен AES256) и отправить е-мейлом (предварительно лично обменявшись паролем), чем ждать когда для меня сделают 100% защищённый мессенджер.
                Для всех остальных случаев достаточно третьего варианта — забить и надеяться, что мы обменялись ключами с тем с кем думаем.
                У меня такая картина мира в голове. Может я не прав, не знаю.
                  0
                  Да, ключи могут поменяться, могут утечь, мессенджер может сливать информацию. Гарантии никакой нет. С криптографией основные протоколы согласования давно придуманы, и не думаю, что придумают что-то ещё (кроме конкретных алгоритмов шифрования).
                  Поэтому я в этом плане поддерживаю политику Телеграма: удобные чаты для всех, секретные, чтобы говорили о том, что они есть, всякие забавные фишки вроде эмоджи на звонках, чтобы начать разговор со сверки смайликов.
                  Т.е. с маркетинговой точки зрения — абсолютно правильная политика. Большинству не нужны секретные чаты, нужны фразы о том, что они есть и специалисты довольны.
              0
              Сквозное шифрование подразумевает генерацию уникального ключа для каждой пары собеседников

              Угу. Там у каждого участника группового чата уникальный ключ. Для каждой пары не надо — участник публикует свой открытый ключ для всей группы. И знает открытые ключи всех участников. При присоединении нового участника, последний устанавливает e2e коннект с одним из старых участников (и тут, наверное, они могут сверить отпечатки ключей по независимому каналу) после чего, ему отправляются открытые ключи остальных членов группы. В вацапе-то это молча происходит, как сделано в сигнале я не знаю — не использовал, но протокол, вроде бы, позволяет. Да, такой лайфхак уязвим — старый участник группы может выдать "добро" без должной осторожности, но это уже человеческая уязвимость.


              Получается, либо это не совсем сквозное шифрование, либо ключи хранятся на сервере.

              Не, всё получается, если реализовано должным образом.


              Но притом они хранят неперсональные данные как логи с ip, временем подключения и т.п.

              Вы это знаете, вы можете этому противостоять.


              И кроме того, можно получить номер телефона, который раскрывает личность в большинстве случаев.

              Сигнал (как и телеграмм) НЕ позиционируется как анонимный мессанджер. Ну, вот не позиционируется и всё тут.


              Какое-то странное противостояние получается

              Дык, нет там противостояния. Они тщательно описывают что именно они могут предоставить пользователю и что не могут в силу вынужденного следования законодательству. Законодательство требует сохранять лог факта коннекта — они его сохраняют. Если бы не требовало, не сохраняли бы. А абсолютно защищённых средств коммуникации не бывает (ну, может, в каком-то смысле квантовые средства кажется, что защищены абсолютно). Бывают средства, способные до определённой степени противостоять определённым видам атак (и, при этом, возможно, "уязвимые" для других). А тыкать в сигнал/телеграмм — аааа, они не анонимны, поэтому плохи — странно и глупо — ни кто и не обещал, что они анонимны, они про другое. И в этом другом они достаточно хороши.

                0
                Mur81, я подразумевал передачу ключей в широком смысле. При обмене открытыми ключами, возможен человек посередине.

                avost, сквозное шифрование подразумевает полносвязную архитектуру в пределах группы, n(n-1) шифрованных каналов. Хранить, а тем более запрашивать у третьих лиц ключи — не совсем сквозное шифрование.

                Сигнал (как и телеграмм) НЕ позиционируется как анонимный мессанджер. Ну, вот не позиционируется и всё тут.

                Позиционируют себя как «безопасные».
                Безопа́сность — состояние защищённости интересов пользователя.

                Понятное дело, что это маркетинг, что лох — не мамонт, но уж слишком жирное оправдание.
                  0
                  сквозное шифрование подразумевает полносвязную архитектуру в пределах группы, n(n-1) шифрованных каналов.

                  Вы какую-то другую задачу рассматриваете. В вашей задаче если А пошлёт в группу сообщение для Б, то Ц его не прочтёт, несмотря на то, что он член группы. Либо А должен отдельно рассылать сообщения для А и для Ц. Но зачем? А шифрует сообщение своим закрытым ключом, помещает его в группу, а у Б и Ц есть открытый ключ А и они его успешно читают.


                  Хранить, а тем более запрашивать у третьих лиц ключи — не совсем сквозное шифрование.

                  В какой-то степени это лайфхак. В принципе, можно дожидаться появления в онлайне всех членов группы и собирать ключи с каждого из них, но это жутко неудобно и непонятно какую задачу решает. Но если у вас действительно есть такая задача, то не организуйте группу, а делайте что-то типа рассылки — персональные чаты с каждым из участников отдельно со всеми проверками ключей. Заодно анонимизацию повысите.


                  Безопа́сность — состояние защищённости интересов пользователя.

                  Не бывает "безопасности вообще". Бывает "безопасность" противостоящая определённым моделям угроз. Ну, и вы взяли не то определение :). Сигнал позиционирует вот эту безопасность — Компьютерная безопасность — раздел информационной безопасности, характеризующий невозможность возникновения ущерба компьютера, превышающего величину приемлемого ущерба для него от всех выявленных и изученных источников его отказов в определённых условиях работы и на заданном интервале времени. По крайней мере, на вики ссылка со статьи о сигнале указывает именно на это определение :).

                    0
                    Сигнал позиционирует вот эту безопасность

                    Не, ну если сливать всё и всем, то, безусловно, никакого ущерба компьютеру не будет. Гениальное определение, гениальное оправдание. А если интернет отключить, то это абсолютно неуязвимый чат получится на одного человека…

                    А шифрует сообщение своим закрытым ключом, помещает его в группу, а у Б и Ц есть открытый ключ А и они его успешно читают.

                    Ну что же вы такое пишите? Если дешифровка идёт по открытому ключу, то любой man in the middle, сервер, участник, другой обладатель публичного ключа может прочитать всю переписку! Получается, что вся «безопасность» сводится к передаче и хранению открытых ключей, а это опять же та самая задача сквозного шифрования.
                      –1
                      Гениальное определение, гениальное оправдание.

                      "Гениально" как раз ваше определение — счастья всем и бесплатно! Хорошо, как декларация, но бесполезно в практическом применении. Но вы можете привести пример того, что в вашем мире розовых пони хотя бы лежит рядом с вашим "определением" безопасности. Кроме тривиального примера мёртвого человека, помещённого в несгораемый шкаф на дне Марианской впадины. И то, туда тоже недавно спустились.


                      Не, ну если сливать всё и всем, то, безусловно, никакого ущерба

                      Если вы сливаете всё и всем, то, безусловно, не криптографическая система в этом виновата. Она лишь позволяет при правильном применении противодействовать определённым атакам.


                      Если дешифровка идёт по открытому ключу, то любой man in the middle, сервер, участник, другой обладатель публичного ключа может прочитать всю переписку!

                      C ума сойти! Оказывается, обладая ключом, можно расшифровать то, что им зашифровано (ну, или половинкой, с учётом особенностей метода)! Кто бы мог подумать, что безопасность криптографических протоколов так критично зависит от хранения ключей в секрете! (не, ну, под капотом, там не так просто, там эфимерные ключи и прочее, как положено в современном мире, но это уже детали реализации).
                      Я вам даже больше скажу — и при полносвязанной схеме и MiM и другой участник дискуссии могут прочитать переписку. Только сервер вы зря сюда включили — серверу ключи как раз не дают.


                      Получается, что вся «безопасность» сводится к передаче и хранению открытых ключей

                      "Получается", что вся криптографическая безопасность именно к этому и сводится.


                      а это опять же та самая задача сквозного шифрования.

                      ну! И эти ключи именно так и распространяются же!

                        0
                        ну! И эти ключи именно так и распространяются же!

                        А должен отдельно рассылать сообщения для А и для Ц. Но зачем?

                        Действительно, зачем, если можно выложить свой ключ в открытый доступ? Наверное, чтобы не выкладывать его в открытый доступ и не давать случайным третьим лицам права удостоверяющего центра.
                        Или как по-вашему собеседник получит ваш ключ, если вы его не передаёте и если ключ не хранится на сервере, и если нет удостоверяющего центра?
              –4

              Durov @ t.me @ Сияющий Град на Холме?
              Нах?..
              long live AX.25 @ SW?

                +4

                Как же достал пиар этого недокриптомессенджера. Помимо общеизвестного факта привязки к номеру телефона (и ориентации на мобилки — десктоп версия сильно урезана), у него ряд других проблем, прекрасно описанных небезызвестным Drew DeVault в статье "I don't trust Signal". TL;DR продвигает централизованную закачку через Google Play как единственно приемлемую, не одобряет распространение приложения через F-Droid, не разрешает форкам подключаться к своим серверам (т.е. по факту централизован), лидер проекта врёт и выкручивается в ответ на критику. От себя: отсутствует в оф.репах дебиана/убунты из-за желания контролировать каналы дистрибуции.

                  0

                  В этом есть логика. Например, чтобы снизить вероятность распространения модифицированного клиента с трекингом и прочими чудесами.

                    +2
                    Есть и другая логика. Например, чтобы повысить вероятность распространения модифицированного клиента с трекингом и прочими чудесами до того, до кого нужно (через тот же PlayMarket с аутентификацией через Google аккаунт, привязанный к мобильному номеру).
                      0

                      Если юзеру не хватает квалификации на такие базовые вещи, как проверка цифровой подписи приложения, пришедшего по недоверенному каналу (коим являются и google play и f-droid и сайт разработчика и репы дебиана) и поддержка актуальности обновлений, то вся эта криптография ему как мёртвому припарки.

                        –1

                        Если юзеру не хватает квалификации на такие базовые вещи, как ревью кода приложения на предмет уязвимостей, то вся эта криптография ему как мёртвому припарки.

                          0

                          По-вашему, сложность аудита кода сопоставима со сложностью проверки цифровой подписи? Не надо доводить мои утверждения до абсурда.

                      0
                      Есть какие пруфы, анализ алгоритмов для того, чтобы утверждать, что это «недокриптомессенджер»? В указанной статье просто сопли размазываются о том, каким образом распространяется приложение.
                      Не разрешают форкам подключаться к своим серверам? Так что это за полумеры — форкнуть сигнал и собрать себе билд (видимо для того, чтобы убедиться, что нет закладок), но при этом подключаться к серверам сигнала? Подними свой сервер и подключайся к нему.
                        +1
                        Есть какие пруфы, анализ алгоритмов для того, чтобы утверждать, что это «недокриптомессенджер»?

                        Привязки к телефону, отсутствия федеративности (в протоколе), и причисления десктопа к второсортным платформам вам недостаточно? Безопасность — комплексная мера, она не исчерпывается только качеством криптоалгоритмов (с которыми у signal/open whisper проблем нет, он использует известные криптографические примитивы)


                        сопли размазываются о том, каким образом распространяется приложение

                        Что значит "сопли размазываются"? Технический ответ на критику деВолта, а не бросание эпитетами, можно услышать?


                        при этом подключаться к серверам сигнала

                        Мне это нафиг не надо (если бы была федеративность), а без федеративности всё определяется моим доверием к оф. серверам, которое подорвано как раз играми мокси с вендорлоком.


                        подними свой сервер и подключайся к нему.

                        Без федеративности пользователи любого сервера замкнуты сами на себе, в таком виде форки (libresignal) нужны примерно полутора анонимусам.


                        собрать себе билд

                        Параноики так и делают, не доверяя вообще никаким бинарникам из инета, но раз уж кто ослабляет требования до "ставим подписанные бинарники", то пусть автор сигнала и не несёт пургу о проблемах распространения подписанных бинарников кем угодно, это его не красит.

                      –1
                      Мне нечего скрывать, кроме моего номера телефона. Но его итак уже все знают.
                      Нужно придумать к номеру телефона(который как бы публичный ключ) еще закрытую часть, которую не узнают рекламщики, соц опросы, мошенники и прочие.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое