Статья Запуск анонимного мессенджера HLM в сети «Hidden Lake»

number571

One Level
14.12.2023
2
2
BIT
79

Анонимная сеть Hidden Lake
1730062922275.png


Анонимная сеть Hidden Lake (HL) - это децентрализованная F2F (friend-to-friend) анонимная сеть с теоретической доказуемостью на базе очередей (QB-задача). В отличие от известных анонимных сетей, подобия Tor, I2P, Mixminion, Crowds и т.п., сеть HL способна противостоять атакам глобального наблюдателя. Сети Hidden Lake для анонимизации своего трафика не важны такие критерии как: 1) уровень сетевой централизации, 2) количество узлов, 3) расположение узлов и 4) связь между узлами в сети, что делает её уникальной.

Исходный код анонимной сети Hidden Lake находится в открытом доступе на странице репозитория GitHub:
number571/hidden-lake

Задача на базе очередей

Анонимность сети HL сводится к скрытию факта существования какой-либо коммуникации за счёт использования задачи на базе очередей (QB-задачи). Иными словами, стороннему наблюдателю, включая, в том числе и глобального наблюдателя, становится сложно определить состояние субъекта: 1) отправляет ли он в текущий момент времени какое-либо сообщение? 2) получает ли он в текущий момент времени какое-либо сообщение? 3) бездействует ли он в текущий момент времени? Алгоритм QB-задачи может описан следующим образом:

1730062939094.png


  1. Каждое сообщение m шифруется ключом получателя k: c = E(k,m),
  2. Шифртекст c отправляется в период = T всем участникам сети,
  3. Период T одного участника независим от периодов T1, T2, ..., Tn других участников,
  4. Если на период T сообщения не существует, то в сеть отправляется ложное сообщение v без получателя (со случайным ключом r): c = E(r,v),
  5. Каждый участник пытается расшифровать принятый им шифртекст из сети: m = D(k,c).



Более подробный анализ безопасности сети Hidden Lake, и в частности QB-задачи, можно найти в исследовательской работе по ссылке или в прикреплённом ниже файле.

Анонимный мессенджер HLM

1730062951220.png

Поверх анонимной сети HL можно разрабатывать собственные приложения на любом языке программирования или технологии, если таковые способны взаимодействовать с HTTP-протоколом. Данный способ разработки становится возможным за счёт использования микросервисной архитектуры, где каждая новая логика добавляется посредством написания нового сервиса. Это позволяет: 1) децентрализовать разработку и не зависеть от применяемых технологий; 2) не зависеть от работы других модулей программы; 3) не усложнять логику уже написанных сервисов. На базе такой архитектуры был написан анонимный мессенджер HLM, а также ряд других прикладных приложений по типу HLF (файлообменника) и HLR (программы удалённого доступа). В данной теме мы будем уделять внимание только мессенджеру.

Для запуска мессенджера HLM потребуется скачать приложение HLC (композит). Это приложение позволяет запускать сразу несколько сервисов (как пример, HLS - сервис анонимизации трафика и HLM - сервис мессенджера) посредством одной программы, а не нескольких, что крайне удобно при обычном локальном включении. Данный композит может быть найден в релизах на странице GitHub под названием hlc_amd64_windows.exe, где amd64 - это 64-битная архитектура, windows - платформа. Также существуют релизы для архитектур arm64 и платформ linux, darwin (macOS).

Приложение HLC также можно запустить из исходников - для этого потребуется скачать и установить компилятор языка Go, т.к. именно на нём (в массе своей) пишутся сервисы для Hidden Lake. После корректной установки компилятора нужно будет лишь запустить следующие команды:
Bash:
$ go install github.com/number571/hidden-lake/cmd/hlc@latest
$ hlc

1730062965370.png

После успешного скачивания нужно лишь запустить HLC следующим образом:
Bash:
$ hlc_amd64_windows.exe -network=8Jkl93Mdk93md1bz
Параметр network - это сеть ретрансляторов, к которой вы будете подключаться. Список всех доступных сетей можно посмотреть в файле networks.yml репозитория number571/hidden-lake.

P.S. В линуксе и макоси перед запуском может потребоваться дополнительно выдача прав на исполнение как пример:
Bash:
chmod +x hlc_amd64_linux



После первого запуска HLC, будет запущено три сервиса по умолчанию: HLS (сервис анонимизации), HLM (сервис мессенджера), HLF (сервис файлообменника). Т.к. файлообменник нам не нужен - мы отключаем HLC и далее удаляем строку hidden-lake-filesharer в автоматически созданном файле hlc.yml. Далее просто перезапускаем HLC. После этого открываем браузер и вводим адрес localhost:9591 - это есть HTTP адрес графического интерфейса HLM.

Чтобы начать общаться хоть с кем-то в этом мессенджере - необходимо обменяться публичными ключами, т.к. анонимная сеть Hidden Lake
1730062972922.png
является F2F-сетью и потому требует для успешного установления коммуникации взаимной договорённости её абонентов. Такой обмен позволяет избежать некоторых деанонимизирующих наблюдений, а также возможный спектр других атак, если в HL будут найдены уязвимости. Для эмуляции друга можно запустить параллельно ещё раз приложение HLC, но перед этим необходимо изменить порты в конфигах hls.yml и hlm.yml, чтобы они не пересекались с другим запущенным HLC. Можно просто поменять все порты, начинающиеся с цифры 9 на цифру 8. В таком случае коллизия исчезнет, а приложение запустится.

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

P.S. Стоит сказать, что публичный ключ весит достаточно много, а именно - 6280 байт (~6KiB). Такой размер ключа обусловлен постквантовыми алгоритмами (ML-DSA и ML-KEM), которые применяет HL. Вследствие этого, HLM можно считать не только анонимным мессенджером, но и одним из первых мессенджеров со стойкостью к постквантовой криптографии.

Сравнение HLM с другими мессенджерами

Для сравнения я выбрал следующие мессенджеры: Telegram, Signal, Bitmessage, DeltaChat, SimpleX.
Использовал сравнительные характеристики со следующих источников: , , .

МессенджерДецентрализацияАнонимностьСквозное (E2E)шифрованиеПостквантовая стойкостьГрупповые чатыОткрытый исходный кодАудио / видео чатыОбмен файламиИдентификация без номера телефона
HLM++ (qb-задача)+++/- (только с общим приватным ключом)+-+/- (ограничен размером генерируемого шифртекста QB-задачей)+
Bitmessage++/- (слепая маршрутизация)+-++-+/- (ограничен константно размером в 220KiB от максимального PoW)+
Signal--++++++-
Telegram--+/- (только в секретных чатах)-++/- (только клиентской части)++-
DeltaChat+/- (гибридный)-+-++-++
SimpleX+/- (гибридный)+ (onion-маршрутизация)+++++++
 

Вложения

  • hidden_lake_anonymous_network.pdf
    664,5 КБ · Просмотры: 17
  • Нравится
Реакции: User17
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!