Принцип конфиденциальности I2P заключается в том, что местонахождение скрытой службы неизвестно. Каждая скрытая служба (например, веб-сайт или посещающий его пользователь) взаимодействует с другими ресурсами через анонимные туннели. Как и другие участники сети, они строят туннели через наш канал маршрутизатора. Эта модель создает множество прямых соединений между маршрутизаторами I2P, где невозможно определить, на каком маршрутизаторе данный туннель начался и закончился: тысячи одновременных зашифрованных подключений к тому или иному маршрутизатору препятствуют этому.
LeaseSet
Чтобы связаться с любым скрытым сервисом, вам необходимо получить его LeaseSet, который содержит информацию о входных туннелях и криптографических ключах. Для этого все конечные точки сервера, ожидающие подключения, публикуют свои лизеты для floodfills, маршрутизаторов, которые действуют как справочник или доска объявлений. Несмотря на то, что floodfil получает информацию только о первых узлах входных туннелей и криптографических ключах, т.е. в LeaseSet нет компрометирующей информации, архитектура I2P предполагает использование зашифрованных lyset. Это позволяет скрыть присутствие конечной точки (также известной как «скрытая служба» и «цель») от возможного мониторинга файловых потоков.
Идентификатор LeaseSet
Идентификатор незашифрованного Lysset — это обычный адрес скрытого ресурса внутри сети, только без окончания «.b32.i2p». Это позволяет владельцам файлов лавинной рассылки просматривать адреса публикуемых ими ресурсов в виде открытого текста. Если вы создали личный ресурс в I2P и не хотите, чтобы об этом случайно узнал кто-либо другой, зашифрованный Lisset специально для вас!
Незашифрованный лизсет на флудфиле
Blinding
Скрытие идентификатора LeaseSet в английской терминологии называется ослеплением (blinding). Следовательно, имя адреса скрытой службы с зашифрованным LeaseSet происходит от: «bb32» — blinded-b32. В свою очередь, «b32» во всех доменах сети является сокращением названия кодировки base32, которая кодирует информацию, формирующую домен. Важно отметить, что bb32 — это просто термин. На самом деле в адресах такое написание не используется.
Обычный |
http://shx5vqsw7usdaunyzr2qmes2fq37oumybpudrd4jjj4e4vk4uusa.b32.i2p |
Зашифрованный |
http://tojbxbveijj5c6ql25bifzdfh5xm2idc36cbffrmdfovuykgtjd2yfuk.b32.i2p |
Запрос LeaseSeat
Идентификатор LeaseSets типа bb32 (который видит Floodfil) не соответствует адресу и не может сообщить владельцу Floodfil реальное имя опубликованного у него ресурса. Также короткий домен в зоне «i2p» не может быть связан с таким адресом, как bb32. Единственный способ получить доступ к такой скрытой службе — иметь полную строку ее адреса. Получая в качестве входных данных адрес bb32, маршрутизатор I2P запрашивает соответствующий набор LeaseSet, зашифрованный с помощью floodfil, а затем расшифровывает его содержимое, используя дополнительную информацию, закодированную в домене.
Доменное имя обычной конечной точки полностью состоит из хэша полного адреса (набора криптографических ключей, который затем поставляется с LeaseSet), а адрес с зашифрованным LeaseSet является открытым ключом для подписи скрытого ресурса, а также три байта специальной информации: флаги, тип подписи и тип зашифрованной подписи.
Ознакомится с криптографическими подробностями блидинга – скрытия идентификатора лизсета, а так же с шифрованием его содержимого,можно в официальном документе. Согласно предоставленной документации, в зашифрованном LeaseSet поддерживаются два типа подписей: ED25519-SHA512 (тип 7) и RED25519-SHA512 (тип 11), однако настоятельно рекомендуется использовать только второй из них.
Скрин документации
Это связано с тем, что, во-первых, тип подписи 11 алгоритмически более оптимален для использования в зашифрованных LeaseSet, а во-вторых, тип подписи 7 используется по умолчанию и допускает непреднамеренное использование уже существующего адреса в сочетании с зашифрованными LeaseSet. Теоретически это уязвимость, поскольку она позволяет злоумышленнику Floodfil раскрыть еще один зашифрованный набор LeaseSet службы, который ранее использовал простой набор LeaseSet с тем же ключом подписи. Это стало возможным благодаря алгоритму вычисления блиндинга, который можно воспроизвести, зная, что полный адрес конечной точки должен быть включен в аренду. Предполагается, что пользователь, который вручную присвоил тип сигнатуры 11, вероятно, сразу же укажет, какой тип лизинга ему нужен, что предотвратит утечку.
Конечная точка bb32
Минимальная конфигурация туннеля конечной точки типа bb32 (которая иногда почему-то называется b33, что не имеет какой-либо логики) выглядит следующим образом (принципиальны последние две строки):
[SUPER-HIDDEN-SERVICE]
type = server
host = 127.0.0.1
port = 8080
inport = 80
keys = site.dat
signaturetype = 11
i2cp.leaseSetType = 5
Ответ на вопрос «где смотреть адрес созданного сервиса с зашифрованным лизсетом»
Ранее упоминались флаги, содержащие зашифрованный адрес lysset в первом байте. Все, что нас интересует в контексте данной статьи, — это флаг авторизации. Для настройки используются дополнительные параметры конфигурации i2cp.leaseSetAuthType. В целом это позволяет сделать доступ к частному ресурсу еще более управляемым, создав списки ключей или паролей для каждого пользователя и, в данном случае — удалить определенный идентификатор из списков, после чего соответствующий пользователь больше не будет, иметь возможность получить набор LeaseSet и доступ к ресурсу. Подробнее об этом читайте в статье.
Небольшой итог
Часто, чтобы получить доступ к скрытой услуге I2P, вам нужно использовать хостинг-провайдера. Например, из-за отсутствия в наличии хорошего аптайма ресурса на домашнем компьютере. В то же время мы хотим быть на 100% уверены, что сотрудники не будут злоупотреблять своим положением. И что кто-то не украдет данные с дисков.