Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров28K
Всего голосов 22: ↑22 и ↓0+22
Комментарии25

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

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

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

исправил

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

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

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

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

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

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

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

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


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

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


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

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


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

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


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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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


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

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


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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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


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

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


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

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

Мне нечего скрывать, кроме моего номера телефона. Но его итак уже все знают.
Нужно придумать к номеру телефона(который как бы публичный ключ) еще закрытую часть, которую не узнают рекламщики, соц опросы, мошенники и прочие.
Кстати, давно меня интересует вопрос: почему многие мессенджеры требуют привязки к номеру телефона? Если пользователь потеряет пароль — его проблемы. Единственный вариант кажущийся разумным — борьба со спамом, потенциальным спамерам сложнее будет плодить аккаунты. Все остальные догадки идут не в пользу защиты тайны переписки…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий