Анонимная сеть Hidden Lake
Анонимная сеть 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-задачи может описан следующим образом:- Каждое сообщение m шифруется ключом получателя k: c = E(k,m),
- Шифртекст c отправляется в период = T всем участникам сети,
- Период T одного участника независим от периодов T1, T2, ..., Tn других участников,
- Если на период T сообщения не существует, то в сеть отправляется ложное сообщение v без получателя (со случайным ключом r): c = E(r,v),
- Каждый участник пытается расшифровать принятый им шифртекст из сети: m = D(k,c).
Более подробный анализ безопасности сети Hidden Lake, и в частности QB-задачи, можно найти в исследовательской работе по ссылке или в прикреплённом ниже файле.
Анонимный мессенджер HLM
Поверх анонимной сети 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
После успешного скачивания нужно лишь запустить HLC следующим образом:
Bash:
$ hlc_amd64_windows.exe -network=8Jkl93Mdk93md1bz
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
Чтобы получить свой публичный ключ, который впоследствии вы будете передавать своему собеседнику (по другим каналам связи), необходимо зайти во вкладку 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-маршрутизация) | + | + | + | + | + | + | + |