Луковая маршрутизация
Луковая маршрутизация (также встречается термин «луковая маршрутизация»; англ. onion routing) — метод передачи данных в компьютерных сетях, предложенный Дэвидом Голдшлагом (англ. David M. Goldschlag), Майклом Ридом (англ. Michael Reed) и Полом Сайверсоном (англ. Paul Syverson)[1], основанный на идее сетей смешивания Дэвида Чаума (англ. David Chaum) и предназначенный для построения сетей, в которых обеспечивается анонимность отправителей и получателей сообщений, а также их содержания. Луковая маршрутизация позволяет построить инфраструктуру для приватных коммуникаций поверх публичных сетей[2].
С помощью луковой маршрутизации обеспечивается двунаправленность связи, близкая к реальному времени, причём обмениваться сообщениями могут как соединённые по каналу, так и не соединённые участники.
Сети, использующие этот принцип, называются луковыми сетями (англ. onion networks). К наиболее известным реализациям лукового маршрутизирования относятся такие проекты, как Freedom Network, Onion Routing, MixMaster, Babel, Mixminion, Zach Brown's Onion, PipeNet, IronKey, MorphMix, Tarzan и особенно Tor — наиболее значимая и масштабная луковая сеть, развёрнутая в Интернете[3].
Цель
Главная задача луковой маршрутизации — отделить идентификацию сообщения от его маршрутизации, а значит — обеспечить анонимную маршрутизацию (англ. anonymous routing). Для передачи сообщений по сети не требуется постоянного знания идентичности отправителя и получателя. Под идентичностью понимается любой набор данных, позволяющий идентифицировать пользователя, например, IP-адрес, по которому можно определить организацию, пользователя или страну происхождения сообщения[3].
Для эффективной защиты анонимности важно, чтобы маршрут, по которому проходит сообщение от отправителя к получателю, нельзя было предсказать или раскрыть. Это достигается тем, что каждый участник маршрута знает только соседа, от которого получил сообщение, и того, которому должен переслать. Это правило справедливо и для конечных точек связи: получатель не обязан знать отправителя. Более того, бывают случаи, когда даже инициатор связи не знает, с кем он общается — так называемые скрытые сервисы (англ. hidden services), поддерживаемые, например, в сети Tor.
Для анонимности не требуется доверять всем промежуточным узлам, достаточно хотя бы одного некоррумпированного — корреляция входящих и исходящих сообщений в таком случае невозможна.
Также защита идентичности требует сохранения конфиденциальности передаваемых данных, иначе анализ трафика позволит частично раскрыть маршрут передачи сообщения.
В то же время луковая маршрутизация не гарантирует, что получатель не узнает личность отправителя: в протоколах верхнего уровня могут использоваться идентификационные данные (например, cookies на веб-сайте). Для повышения анонимности на прикладном уровне пользователь должен правильно настраивать клиентское ПО (отключать cookies, плагины Java, очищать историю и использовать фильтрующие прокси, например, privoxy или polipo, для удаления потенциально идентифицируемого содержимого)[3].
Реализация
В луковой маршрутизации реализована идея Дэвида Чаума по сокрытию связи между отправителем и получателем путём вложенного инкапсулирования сообщения в слои шифрования с использованием публичных ключей. Сообщения последовательно «заворачиваются» во вложенные слои (напоминая луковицу по структуре), а каждый промежуточный узел (луковый маршрутизатор, англ. onion router) снимает только свой слой шифрации и передаёт сообщение дальше.
После снятия своего слоя маршрутизатор получает заголовок и очередной зашифрованный фрагмент (следующий слой «луковицы»), который отправляется следующему по цепочке узлу согласно полученной информации.
Исходная идея
Ключевая особенность системы — каждый промежуточный узел маршрута знает строго минимальный объём информации: только, откуда получено сообщение, и только, куда его следует переслать. Таким образом, ни один промежуточный маршрутизатор не может знать одновременно отправителя и получателя, а содержимое сообщения известно лишь конечному получателю[4].
Схема работы включает следующие этапы:
- Инициатор создает соединение с прокси приложений (англ. Application Proxy), который транслирует специфический прикладной протокол пользователя во внутренний, пригодный для передачи по сети маршрутизаторов.
- Далее прокси отправляет сообщения на луковый прокси (англ. Onion Proxy, OP), который определяет маршрут, строит структуру данных — собственно «луковицу» (англ. onion/onion forward), содержащую отдельный слой шифра для каждого маршрутизатора.
- Если E_{PK}(data) — шифрование публичным ключом PK, D_{SK}(data) — расшифровка приватным ключом,
если маршрут — узлы 4, 3, 5, то структура шифрования будет:
: E_{PK_4}(адрес_3, E_{PK_3}(адрес_5, E_{PK_5}(данные)))
- Луковый прокси отправляет «луковицу» во входной узел маршрута (entry funnel), который снимает свой слой, определяет адрес следующего, передаёт сообщение ему.
- Итоговый (выходной) маршрутизатор (exit funnel) извлекает исходное сообщение, адресованное получателю, и пересылает его.
- Ответное сообщение проходит обратный путь, заворачиваясь новым слоем шифрования на каждом маршрутизаторе (reply onion) до OP, который расшифровывает все слои.
Проблемы
Обеспечение безопасности луковых сетей — область активных исследований. Хотя предложены действенные методы повышения безопасности и производительности, проблемы сохраняются.
Корреляция входящих и исходящих пакетов
Если наблюдать входящий и выходящий трафик маршрутизатора, можно попытаться сопоставить пакеты и частично деанонимизировать связь. Для усложнения анализа применяются:
- Введение искусственных задержек обработки сообщений;
- Добавление «пустых» — бесполезных, но маскирующих — пакетов (трафик-заполнитель);
- Передача сообщений фиксированного размера (так называемые ячейки);
- Группировка пакетов и объединение с управляющим трафиком и заполнительными сообщениями (по принципу чесночной маршрутизации, используемой, например, в I2P и Perfect Dark)[5][6].
Прокси приложений
Каждый прикладной протокол требует отдельного прокси. Это ограничивает совместимость. В новых проектах (например, в Tor) используют универсальный прокси-интерфейс (например, SOCKS), позволяя проксировать любые приложения, поддерживающие этот стандарт.
Повторное внедрение сообщений
К луковым сетям применимы атаки повторного воспроизведения (англ. replay attacks), когда записанное сообщение снова вводится в сеть для создания перегрузки или рассогласования (атаки отказа в обслуживании — DoS). Для защиты роутеры отслеживают, обрабатывалось ли уже данное сообщение, и присваивают срок действия пакету, по истечении которого он уничтожается[6].
Публикация конфигурационных данных
Узлы должны знать параметры работы (например, список активных маршутизаторов, их адреса и ключи). В ряде систем они распространяются через специальные веб-страницы или службы каталогов (Directory Service), администрируемые доверенными лицами (например, в Tor или Mixminion). Также возможно зеркалирование (репликация справочников), что снижает нагрузку на каталог.
Функция службы каталогов, кроме обеспечения работоспособности, позволяет предотвращать атаку путём внедрения злонамеренных узлов — каждый новый маршрутизатор утверждается через службу[7].
Политики входа/выхода
В некоторых системах (например, Tor) поддерживаются политики выхода (англ. exit policies) — набор разрешённых для использования IP-адресов и портов для конкретного узла (exit node); также могут применяться политики входа (entry policy), например, в организациях[8].
Контроль перегрузок
В реальных сетях необходимо балансировать нагрузку и контролировать потоки данных. Некоторые системы (например, Tor) позволяют обнаруживать перегрузку и временно ограничивать поступление данных на перегруженные участки[8].
Сквозная целостность
Многие луковые сети (например, Tor) реализуют контроль целостности сообщений для предотвращения вмешательства в их содержимое какими-либо промежуточными узлами. Проверка выполняется перед выходом исходящих данных из сети[8].
Мультиплексирование потоков
Для повышения эффективности и анонимности возможна мультиплексированная передача нескольких потоков по одному луковому каналу[8].
Переменное число узлов
В некоторых сетях возможно динамическое изменение числа промежуточных узлов. Например, Tor реализует топологию leaky-pipe, позволяя покидать цепочку через промежуточный узел, что усложняет атаки, нацеленные на выходные узлы[8].
Неэффективность
Использование асимметричного (публичного) шифрования для каждого слоя крайне ресурсоёмко для низколатентных приложений. Поэтому на практике используют симметричное шифрование для передачи данных внутри уже установленных каналов, ключи для которых договариваются с помощью асимметричного шифрования (сеансовый ключ)[3].
Процесс работы схемы с симметричными ключами:
- Между участниками канала договариваются симметричные ключи;
- Каждый узел снимает свой симметричный слой защиты с поступающего сообщения;
- Ответ формируется аналогично — на каждом узле добавляется новый слой симметричного шифрования[3].
Существует ряд подходов к организации канала передачи с использованием симметричных и асимметричных схем; однако каждый из них имеет свои ограничения, и эта задача остаётся открытой[3].
Использование криптографии в луковой маршрутизации
Важнейшее отличие различных систем луковой маршрутизации — выбор типа криптографии и способа её применения, что критично для эффективности и безопасности.
Классическая асимметричная криптография
По схеме, описанной в исходной концепции[1], уязвимость заключается в следующем: если злоумышленник записывает всё взаимодействие маршрутизаторов, а затем получит их приватные ключи (например, через компрометацию), то может расшифровать прошлый трафик. Для смягчения угрозы ключи должны регулярно обновляться, а устаревшие — немедленно уничтожаться, что приводит к дополнительным накладным расходам и снижает масштабируемость системы[9][10].
Симметричные сессионные ключи, генерируемые на первом маршрутизаторе
В ряде систем (например, Onion Routing) симметричные ключи для каждого участка цепи договариваются заранее (через публичные ключи) и используются для передачи данных[11]. Главный недостаток подхода — отсутствие perfect forward secrecy (идеальной прямой секретности): если злоумышленник контролирует начальный маршрутизатор (или вскроет его ключ впоследствии), имеются сценарии компрометации всего канала[9].
Телескопический подход
Другая схема построения канала (используемая в Tor и некоторых remailer-сетях) предполагает пошаговое установление симметричного канала с каждым маршрутизатором, в том числе за счёт последовательного туннелирования запросов с использованием протокола Диффи–Хеллмана[12]. Такой подход обеспечивает perfect forward secrecy и эффективнее защищает прошлые сессии, даже если позже приватный ключ маршрутизатора скомпрометирован[7].
Неинтерактивные (одношаговые) схемы
Для упрощения обмена и снижения вычислительных затрат предлагаются схемы с формированием всего канала в один проход, но такие схемы не обеспечивают немедленной прямой секретности (immediate forward secrecy)[13][14].
На основе криптографии идентичности
Альтернативные схемы (например, PB-OR, fs-ID-OR) используют криптографию на основе идентификаторов, ключи к которым выдаёт надёжный центр сертификации (англ. Key Generation Center), иногда с распределением полномочий по сети[15]. Это даёт eventual forward secrecy (постепенную прямую секретность), но приводит к централизованным точкам отказа и иной специфике угроз[13].
Криптография без сертификатов
Каталано и др[14]. предложили систему CL-OR, позволяющую формировать каналы без центра сертификации, но при этом проблемы масштабирования системы сохраняются[10][13].
Анонимность получателя
Луковая маршрутизация традиционно защищает инициатора, но существуют схемы для обеспечения анонимности получателя, например, через reply onions и точки встречи (англ. Rendezvous Points)[8][16].
Reply onions
В Onion Routing реализована возможность использовать reply onions[17][18]. Такой «ответный лук» создаётся инициатором и передаётся получателю для возможной обратной связи. Эта структура содержит маршрут и все необходимые ключевые данные для установления канала к отправителю[18].
Точки встречи
Концепция точек встречи (англ. Rendezvous Points) заключается в организации опосредованной связи через третье лицо, выступающее в качестве точки обмена сообщениями между анонимными сторонами. Данную технологию поддерживают Tor и ранее — Onion Routing[3].
Скрытые сервисы
Сервисы, скрывающие своё расположение (например, IP-адрес), называются скрытыми сервисами (англ. hidden services) или сервисами скрытого расположения (англ. location-hidden services). Для анонимного доступа сервер генерирует пару ключей, регистрирует адрес формата <hash>.onion в каталоге и сообщает информацию о точках входа (introduction points). Клиент, используя каталог (через Tor), связывается с точкой входа, а затем канал устанавливается через точку встречи[8][16].
Классификация
Системы, реализующие луковую маршрутизацию, различаются по способу управления ключами, построения каналов, способам обмена служебной информацией, механизмам выбора маршрута, наличию задержек, объёму трафика-заполнителя, поддержке протоколов и т. д.
По задержкам
- Сети высокой латентности — сознательно добавляют большие и переменные задержки, обеспечивая наивысший уровень анонимности ценой невозможности интерактивной работы (пример: MixMaster, Babel, Mixminion).
- Сети низкой латентности — минимизируют задержки ради скорости, что полезно для интерактивных сервисов (веб, чат, SSH), но затрудняет защиту от атак на основе анализа времени (пример: Freedom Network, Onion Routing, Tor)[8].
По организации каналов
- Сети с предварительно выстраиваемыми каналами (туннелями) — путь выбирается заранее (например, Freedom Network, Onion Routing).
- Сети с поэтапным построением маршрута — путь формируется постепенно в процессе (например, Tor).
- Сети с динамическим выбором маршрута для каждого пакета — так называемая Dynamic Multipath Onion Routing (пример: MORE)[19].
По типу узлов
- Статические сети с ограниченным числом известных луковых маршрутизаторов (пример: Onion Routing, Freedom Network, Tor). Класс подразделяется на:
- Добровольческие — маршрутизаторы размещены добровольцами (MixMaster, Tor).
- Коммерческие — маршрутизаторы предоставляются компанией как платный сервис (пример: Freedom Network).
- Динамические сети — новые маршрутизаторы появляются и исчезают постоянно (пример: Tarzan, MorphMix), часто реализуются на основе peer-to-peer.
Уязвимости
Луковая маршрутизация не даёт абсолютной анонимности против всех атак, но существенно повышает трудность deanonymizации. Степень защищённости зависит от числа маршрутизаторов в пути и их добросовестности.
Примеры атак
- Анализ временных характеристик: сопоставление времени прохождения входящих и исходящих сообщений для вычисления цепочки передачи данных. Меры защиты — выравнивание размеров пакетов, пересадка сообщений, задержки[8].
- Атаки отказа в обслуживании (DoS): вывод сети из строя через перегрузку криптографическими операциями или трафиком. Решения — внедрение систем «электронных монет» (например, Hashcash), требующих вычислительных усилий от клиента.
** Атаки повторного внедрения (replay): повторное введение записанных пакетов для перегрузки сети[6].
- Атаки пересечения (intersection attacks): анализ входа/выхода узлов в разные моменты для уменьшения пула возможных отправителей и их идентификации[20][21].
- Атаки предшественника (predecessor attacks): задача заключается в анализе повторяющихся соединений между двумя абонентами; если один из маршрутизаторов скомпрометирован, он может построить вероятностную модель инициатора[22].
- Контроль узлов выхода: перехват содержимого на выходных маршрутизаторах. Решение: использование сквозного шифрования (например, SSL)[23].
- Дополнительные уязвимости — атаки на службу каталогов и точки встречи[24].
Примечания
- ↑ 1 2 D. Goldschlag, M. Reed, P. Syverson. "Hiding Routing Informations", In proceedings of the First International Workshop on Information Hiding, 1996, LNC vol 1174 pp. 137–150.
- ↑ Сумоcа Матос, Родольфо. Системы анонимности в глобальных сценариях (исп.). Universidad Complutense de Madrid 50 (сентябрь 2008). Дата обращения: 30 июня 2024. Архивировано 23 января 2021 года.
- ↑ 1 2 3 4 5 6 7 Paul Syverson, "A peel of Onion", ACSAC'11. Orlando, Florida USA. Декабрь 2011.
- ↑ Marc O'Morain и др. "Onion Routing for Anonymous Communications" [1] Onion Routing for Anonymous Communications (англ.). Trinity College Dublin. Дата обращения: 30 июня 2024. Архивировано 6 мая 2012 года.
- ↑ Bassam Zantout, Ramzi A. Haraty. "I2P Data Communication System", ICN 2011
- ↑ 1 2 3 B. V. V. Sri Raj Dutt и др., "Implementation of Onion Routing"
- ↑ 1 2 M. Edman, B. Yener. "On Anonymity in an Electronic Society: A Survey of Anonymous Communication Systems". ACM Journal Name, Vol. V, No. N, Month 2008, c. 1–39.
- ↑ 1 2 3 4 5 6 7 8 9 Roger Dingledine, Nick Mathewson, Paul Syverson. "Tor: The Second-Generation Onion Router"
- ↑ 1 2 Aniket Kate и др. "Pairing-Based Onion Routing"
- ↑ 1 2 Aniket Kate, Ian Goldberg. "Using Sphinx to Improve Onion Routing Circuit Construction"
- ↑ Paul F. Syverson и др., "Anonymous Connections and Onion Routing"
- ↑ M. Backes и др. "Provably Secure and Practical Onion Routing"
- ↑ 1 2 3 Dario Catalano и др. "Fully Non-Interactive Onion Routing with Forward-Secrecy"
- ↑ 1 2 Dario Catalano и др. "Certificateless Onion Routing"
- ↑ A. Kate, I. Goldberg. "Distributed Private-Key Generators for Identity-Based Cryptography". In Proc 7th Conference on Security and Cryptography for Networks (SCN), 2010
- ↑ 1 2 Peter Wayne, "Disappearing Cryptography: Information Hiding: Steganography & Watermarking". Third Edition. Morgan Kaufmann 2009.
- ↑ Paul F. Syverson и др., "Hiding Routing Information". Workshop on Information Hiding, Cambridge UK, May 1996
- ↑ 1 2 Michael G. Reed, Paul F. Syverson, David M. Goldschlag. "Proxies for Anonymous Routing", 12th Annual Computer Security Applications Conference, 1996
- ↑ Heiko Niedermayer, "Architecture and Components of Secure and Anonymous Peer-to-Peer Systems". Technische Universität München
- ↑ M. Wright и др. "Defending anonymous Communications Against Passive Logging"
- ↑ Mohan Balaji Areti и др. "Attacks on Anonymous Systems"
- ↑ Matthew Wright и др. "An Analysis of the Degradation of Anonymous Protocols"
- ↑ Bangeman, Eric. Security researcher stumbles across embassy e-mail log-ins (англ.). Arstechnica.com (30 августа 2007). Дата обращения: 30 июня 2024. Архивировано 22 октября 2007 года.
- ↑ Øverlier, L., Syverson, P., "Locating hidden servers". IEEE Symposium on Security and Privacy
Литература
- Научные публикации
- Dario Catalano, Mario Di Raimondo, Dario Fiore, Rosario Gennaro, Orazio Puglisi. "Fully Non-Interactive Onion Routing with Forward-Secrecy".