Дополнение Vanguards для скрытых сервисов

Введение в безопасность скрытых сервисов

Ранее в этом году Tor Project выпустил свой первый стабильный релиз Tor и Tor Browser с новым протоколом обслуживания v3. Протокол содержит много улучшений, включая более длинные и более безопасные адреса, предотвращение обнаружения всех сайтов, улучшенную аутентификацию и повышенную криптографию.

Однако, хотя этот новый протокол закрывает некоторые атаки (в частности, перечисление и связанные с ним целевые атаки DoS), он не решает никаких атак, которые могут привести к деанонимизации сайтов.

Разработчики считают, что самая серьезная угроза, с которой сталкиваются сейчас скрытые сервисы v3, — это обнаружение сторожевого узла (guard discovery). Атака позволяет противнику определять сторожевые узлы, которые используются клиентом Tor и/или скрытым сервисом. Как только сторожевой узел известен, атаки на анализ трафика, которые могут деанонимизировать сайт (или пользователя), становятся проще.

Основная форма этой атаки состоит в том, чтобы сделать много соединений со скрытым сервисом Tor, чтобы заставить его создавать цепочки, пока один из узлов противника не будет выбран в качестве промежуточного, рядом со сторожевым. Это возможно, потому что промежуточные узлы до точки рандеву выбираются из всего набора узлов:

Вредоносный узел фактически становиться частью цепочки рандеву, что приводит к обнаружению сторожевого узла. С этого момента сторожевой узел может быть скомпрометирован и может выдать IP-адрес скрытого сервиса.

Надстройка Vanguards

Исправление проблемы обнаружения сторожевого узла (guard discovery) в самом Tor — это огромный проект — прежде всего потому, что он включает в себя множество компромиссов между производительностью и масштабируемостью по сравнению с безопасностью, что затрудняет выбор хороших значений по умолчанию для каждого скрытого сервиса.

Из-за этого разработчики создали надстройку, которая может использоваться совместно с сервером onion-сайта или пользователем Tor, который обращается к onion-сайту.

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

Vanguards, Bandguards и Rendguard

Надстройка состоит из трех компонентов:

Vanguards

Основная функциональность обеспечивается компонентом Vanguards, который реализует Mesh Vanguards (план 292). Это гарантирует, что все схемы скрытого сервиса ограничены набором защит второго и третьего слоев, которые имеют рандомизированное время чередования, определенное в этом плане. В принципе, теперь все схемы onion-сайта привязаны к конкретным узлам, а не выбираются случайно из всей сети каждый раз.

Это изменение для фиксированных узлов для защиты второго и третьего уровней предназначено для принуждения противника к запуску большего количества узлов и для выполнения как активной атаки sybil, так и атаки на компрометацию узла. В частности, добавление защитных узлов второго уровня означает, что противник переходит от возможности обнаруживать ваш сторожевой узел в течение нескольких минут, запустив только один промежуточный узел, требуя, чтобы они выдерживали атаку в течение недель или даже месяцев, даже если они контролируют 5% сети.

Анализ выбора количества сторожевых узлов на каждом уровне и параметров продолжительности чередования доступен на GitHub. Вот как выглядит текущая топология 2-3-8:

Кроме того, для лучшей защиты идентичности этих новых закрепленных сторожевых узлов длина схем была изменена для RP (точек рандеву), HSDir (каталогов скрыты сервисов) и Intro Point (точек входа). Вы можете увидеть их здесь (где L1 — защитник первого слоя, L2 — защитник второго слоя, L3 — защитник третьего слоя, M — случайный промежуточный узел):

Bandguards

Кроме того, компонент Bandguards надстройки также проверяет наличие атак на пропускную способность канала, которые могут использоваться противником для помощи/усиления атак анализа трафика.

Когда эти атаки обнаружены, схема будет (необязательно) закрыта.

Обратите внимание, что компонент Bandguards также закрывает любую схему старше 24 часов (параметр «circ_max_age_hours») и имеет опцию (по умолчанию) для закрытия схем, которые передают более определенного количества мегабайт (опция «circ_max_megabytes»).

Если для вашего обслуживания требуется большая загрузка файлов или очень долгоживущие схемы, установите эти параметры в 0 в вашем файле vanguards.conf.

Rendguards

Наконец, компонент Rendguards надстройки выполняет анализ распространенности точек рандеву на стороне скрытого сервиса. Точка рандеву выбирается клиентом, когда он подключается к onion-сайту, а некоторые атаки полагаются на использование вредоносной точки рандеву для помощи в анализе трафика.

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

Каждый из этих компонентов настраивается. Для получения дополнительной информации см. README.

Требования, установка, использование и предостережения

Дополнение Vanguards в первую очередь относится к операторам onion-сайтов с высоким уровнем риска. Для того чтобы функции компонента Bandguards были включены, требуется Tor 0.3.4.4 или выше, но скрипт будет работать и с Tor 0.3.3.x+. Тем не менее, раньше у Tor не было достаточной поддержки протокола управления порта.

Кроме того, хотя они были тщательно протестированы командой Tor Project, параметры для различных механизмов обнаружения компонентов Bandguards и Rendgaurd все еще являются экспериментальными и могут нуждаться в тонкой настройке для вашего обслуживания или сценария, особенно если он отличается от тестовой среды.

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