Анонимная сеть Hidden Lake
Анонимная сеть Hidden Lake (HL) - это децентрализованная F2F (friend-to-friend) анонимная сеть с теоретической доказуемостью на базе очередей (QB-задача). В отличие от известных анонимных сетей, подобия Tor, I2P, Mixminion, Crowds и т.п., сеть HL способна противостоять атакам глобального наблюдателя. Сети Hidden Lake для анонимизации своего трафика не важны такие критерии как: 1) уровень сетевой централизации, 2) количество узлов, 3) расположение узлов и 4) связь между узлами в сети, что делает её уникальной.
Исходный код анонимной сети Hidden Lake находится в открытом доступе на странице репозитория GitHub:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
Задача на базе очередей
Анонимность сети 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 можно разрабатывать собственные приложения на любом языке программированияДля запуска мессенджера HLM потребуется скачать приложение HLC (композит). Это приложение позволяет запускать сразу несколько сервисов (как пример, HLS - сервис анонимизации трафика и HLM - сервис мессенджера) посредством одной программы, а не нескольких, что крайне удобно при обычном локальном включении. Данный композит может быть найден в
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
на странице GitHub под названием hlc_amd64_windows.exe, где amd64 - это 64-битная архитектура, windows - платформа. Также существуют релизы для архитектур arm64 и платформ linux, darwin (macOS).Приложение HLC также можно запустить из исходников - для этого потребуется скачать и установить компилятор языка Go, т.к. именно на нём (в массе своей) пишутся сервисы для Hidden Lake. После корректной установки компилятора нужно будет лишь запустить следующие команды:
Установка и запуск HLC:
$ go install github.com/number571/hidden-lake/cmd/hlc@latest
$ hlc
После успешного скачивания нужно лишь запустить HLC следующим образом:
Bash:
$ hlc_amd64_windows.exe -network=8Jkl93Mdk93md1bz
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
репозитория 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 является 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-маршрутизация) | + | + | + | + | + | + | + |