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

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

>

Как доставлять сообщения без ID адресата

>

Согласно технической документации, SimpleX с этой целью использует «временные анонимные парные идентификаторы очередей сообщений», отдельные для каждого из соединений

Вывод: никак.

Плюс к этому, отсутствие идентификаторов ВООБЩЕ никоим образом не влияет ни на анонимность, ни на безопасность. Идентификация и аутентификация - это разные вещи. Необходимо не только идентифицировать пользователя, но и аутентифицировать им отправленные или полученные ранее сообщения. Если это сделать невозможно, или сложно, то знание идентификаторов особо ничего нам не даст.

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

Как минимум из этого примера мы видим, что существование идентификаторов никак не влияет ни на безопасность, ни на анонимность. Но при этом сам факт идентификации быть обязан (в том числе и в SimpleX), как минимум для последующей аутентификации принимаемых сообщений.

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

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

И сколько такое пространство должно занимать места и как долго его хранить? И где? И кому? Плюс к тому, обязательно же найдётся какой-то _удак, который будет спамить в туда мусор, переполняя это самое место. А заинтересованные лица смогут выгребать все тамошние сообщения, в надежде что когда-нибудь подберут/найдут/украдут/и т.д. ключи и расшифруют сразу всё. Как по мне, что-то похожее есть у Matrix сети и мессенджера Element. Которые хоть и не про анонимность, но тамошние узлы весьма напоминают эти самые пространства.

Это принцип работы Bitmessage :)

Проект написан на TypeScript, с фронтендами Electron и React Native.

закапывайте

А как в этом проекте используется IPFS?

После изучения темы "Хакер в столовой" всё встаёт на свои места, становятся ясны мотивы таких запилов - извечная борьба щита и меча (становящаяся для некоторых самостоятельным смыслом жизни).

Ну почему же? Представьте себе что все все сообщения шифруются открытыми ключами тех, кому эти сообщения направлены. Само собой из общего трафика, тебе будут "понятны" только те сообщения, которые направлены конкретно тебе. Остальные сообщения будут выглядеть абракадаброй. И не надо никакого id.

вопрос только в том, как предоставить эти открытые ключи тем, кто будет отправлять тебе сообщения.

Попросить передать знакомого. И прочие PGP сети доверия.

Они потому и называются открытыми, потому что их можно не боясь отправлять открытыми путями без всякого шифрования. Хоть по e-mail.

Главная засада - однозначно соотнести с отправителем при отправке по незащищенному каналу.

Отправитель подписывает своё сообщение своим закрытым ключом. Не шифрует, а только подписывает. Шифрует он открытым ключом получателя. У получателя есть открытый ключ отправителя, поэтому он сможет понять, тот ли отправитель ему направил сообщение. Надеюсь, понятно обьяснил.

Я знаю как это работает, я говорю о другой проблеме. Вот вы получаете с ndochp@mail.ru письмо с моим открытым ключем. И вступаете в переписку в этом суперчате.
А на самом деле у меня почта на ndochp@gmail.com, а ящик на mail.ru был удален за неактивность сто лет назад, и теперь его может создать любой желающий.
(самое смешное, что на некоторых форумах вы найдете мои сообщения от ящика ndochp@mail.ru и злоумышленник может вам их подсветить, чтобы убедить что он - это я)

Так ведь, люди сначала между собой договариваются, как обменятся ключами. А не ждут пока неизвестно кто пришлёт ему какой то ключ. Подразумевается что они не дураки, и знают e-mail (или другие контакты) друг друга. А злоумышленник всегда может кого то обмануть.

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

Есть альтернатива https://ru.wikipedia.org/wiki/Tox где идентификатор ты создаёшь сам. Повторить его без секретного ключа тяжело.

У меня дилетантский вопрос. Есть ли сейчас реальные примеры анонимных и безопасных мессенджеров?

Могу посамопиариться и предложить сеть Hidden Lake, и на основе неё мессенджер HLM c:

jabber

Предположим меня укусил шифропанк и мне очень захотелось завести отдельный мессенджер, непременно с шифрованием и самодостаточностью, для семьи и ближайшего окружения. Но если я могу пользоваться чем угодно и под какой угодной ОС, то остальным нужен не пугающий клиент под Андроид и Windows. Куда мне смотреть?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий