Onion routing защищает сетевое соединение за счёт многослойного шифрования и передачи трафика через несколько узлов. Каждый промежуточный узел обрабатывает только свой слой и знает лишь необходимую часть маршрута. Идея в том, чтобы ни один обычный relay не видел одновременно всю цепочку от пользователя до назначения.

Луковая маршрутизация используется в Tor для разделения информации о том, кто отправляет трафик и куда он направляется. На основе этой технологии работают и onion-сервисы, где обе стороны соединения взаимодействуют внутри сети Tor.

Для работы Tor нужны сетевые узлы и совместимое клиентское ПО. Значительную часть relays поддерживают независимые операторы и организации. Узлы отличаются скоростью, доступностью и пропускной способностью, поэтому сеть строит маршруты с учётом их параметров.

Технический смысл onion routing

Клиент заранее формирует цепочку из нескольких узлов. Для каждого участка используются отдельные криптографические ключи, а данные оборачиваются несколькими слоями. По мере прохождения цепочки каждый relay снимает или обрабатывает только предназначенный ему слой и передаёт пакет дальше.

Это отличается от обычного веб-прокси. Прокси действительно является посредником между клиентом и сервером, но один прокси обычно знает и адрес клиента, и направление запроса. В onion routing знание о маршруте распределяется между несколькими узлами.

Упрощённо это можно представить как последовательность пересадок: первый узел знает, откуда пришло соединение, но не обязан знать конечный сайт; промежуточный видит соседние участки; последний relay при выходе в открытый интернет знает назначение, но не исходный IP пользователя. Для onion-сервисов схема отличается тем, что соединение не выходит в обычный веб.

Маршруты не являются постоянными навсегда: Tor периодически строит новые цепочки. Это помогает не привязывать всю активность пользователя к одному набору промежуточных узлов.

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