Луковая маршрутизация

Луковая маршрутизация (также встречается термин «луковая маршрутизация»; англ. 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].

Реализация

undefined

В луковой маршрутизации реализована идея Дэвида Чаума по сокрытию связи между отправителем и получателем путём вложенного инкапсулирования сообщения в слои шифрования с использованием публичных ключей. Сообщения последовательно «заворачиваются» во вложенные слои (напоминая луковицу по структуре), а каждый промежуточный узел (луковый маршрутизатор, англ. 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. 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.
  2. Сумоcа Матос, Родольфо. Системы анонимности в глобальных сценариях (исп.). Universidad Complutense de Madrid 50 (сентябрь 2008). Дата обращения: 30 июня 2024. Архивировано 23 января 2021 года.
  3. 1 2 3 4 5 6 7 Paul Syverson, "A peel of Onion", ACSAC'11. Orlando, Florida USA. Декабрь 2011.
  4. Marc O'Morain и др. "Onion Routing for Anonymous Communications" [1] Onion Routing for Anonymous Communications (англ.). Trinity College Dublin. Дата обращения: 30 июня 2024. Архивировано 6 мая 2012 года.
  5. Bassam Zantout, Ramzi A. Haraty. "I2P Data Communication System", ICN 2011
  6. 1 2 3 B. V. V. Sri Raj Dutt и др., "Implementation of Onion Routing"
  7. 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.
  8. 1 2 3 4 5 6 7 8 9 Roger Dingledine, Nick Mathewson, Paul Syverson. "Tor: The Second-Generation Onion Router"
  9. 1 2 Aniket Kate и др. "Pairing-Based Onion Routing"
  10. 1 2 Aniket Kate, Ian Goldberg. "Using Sphinx to Improve Onion Routing Circuit Construction"
  11. Paul F. Syverson и др., "Anonymous Connections and Onion Routing"
  12. M. Backes и др. "Provably Secure and Practical Onion Routing"
  13. 1 2 3 Dario Catalano и др. "Fully Non-Interactive Onion Routing with Forward-Secrecy"
  14. 1 2 Dario Catalano и др. "Certificateless Onion Routing"
  15. A. Kate, I. Goldberg. "Distributed Private-Key Generators for Identity-Based Cryptography". In Proc 7th Conference on Security and Cryptography for Networks (SCN), 2010
  16. 1 2 Peter Wayne, "Disappearing Cryptography: Information Hiding: Steganography & Watermarking". Third Edition. Morgan Kaufmann 2009.
  17. Paul F. Syverson и др., "Hiding Routing Information". Workshop on Information Hiding, Cambridge UK, May 1996
  18. 1 2 Michael G. Reed, Paul F. Syverson, David M. Goldschlag. "Proxies for Anonymous Routing", 12th Annual Computer Security Applications Conference, 1996
  19. Heiko Niedermayer, "Architecture and Components of Secure and Anonymous Peer-to-Peer Systems". Technische Universität München
  20. M. Wright и др. "Defending anonymous Communications Against Passive Logging"
  21. Mohan Balaji Areti и др. "Attacks on Anonymous Systems"
  22. Matthew Wright и др. "An Analysis of the Degradation of Anonymous Protocols"
  23. Bangeman, Eric. Security researcher stumbles across embassy e-mail log-ins (англ.). Arstechnica.com (30 августа 2007). Дата обращения: 30 июня 2024. Архивировано 22 октября 2007 года.
  24. Ø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".

Ссылки

Категории