Этот перевод был создан с помощью машинного обучения и может быть не на 100% точным. Просмотреть английскую версию

Доставка OBEP в 1-of-N или N-of-N туннели

Proposal 125
Open
Author zzz, str4d
Created 2016-03-10
Last Updated 2017-04-07

Обзор

В данном предложении рассматриваются два улучшения для повышения производительности сети:

  • Передача выбора IBGW в OBEP путем предоставления ему списка альтернатив вместо одного варианта.

  • Включение маршрутизации мультикаст-пакетов на уровне OBEP.

Мотивация

В случае прямого соединения идея заключается в снижении перегрузки соединений за счёт предоставления OBEP гибкости при подключении к IBGW. Возможность указывать несколько туннелей также позволяет реализовать мультикаст на уровне OBEP (путём доставки сообщения во все указанные туннели).

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

  1. Это заставило бы OBEP выполнить поиск.

  2. LeaseSet может не быть опубликован в floodfill, поэтому поиск завершится неудачей.

  3. LeaseSet может быть зашифрован, поэтому OBEP не сможет получить лизы.

  4. Указание LeaseSet раскрывает OBEP Destination сообщения, которую иначе он мог бы узнать только путём сканирования всех LeaseSet в сети и поиска совпадения лиза.

Дизайн

Инициатор (OBGW) будет помещать некоторые (все?) целевые Leases в инструкции доставки TUNNEL-DELIVERY вместо выбора только одного.

OBEP выберет один из них для доставки. OBEP выберет, если возможно, тот, к которому он уже подключён или о котором уже знает. Это сделает путь OBEP-IBGW быстрее и надёжнее, а также сократит общее количество сетевых соединений.

У нас есть один неиспользуемый тип доставки (0x03) и два оставшихся бита (0 и 1) в флагах для TUNNEL-DELIVERY, которые можно использовать для реализации этих функций.

Последствия для безопасности

Предложение не изменяет объём информации, раскрываемой о целевом Destination OBGW или его представлении о NetDB:

  • Атакующий, контролирующий OBEP и сканирующий LeaseSet из NetDB, уже может определить, отправляется ли сообщение конкретному Destination, путём поиска пары TunnelId / RouterIdentity. В худшем случае наличие нескольких Lease в TMDI может ускорить поиск совпадения в базе данных атакующего.

  • Атакующий, управляющий злонамеренным Destination, уже может получить информацию о представлении жертвы о NetDB, публикуя LeaseSet, содержащие разные входящие туннели на разных floodfill, и наблюдая, через какие туннели подключается OBGW. С их точки зрения, выбор OBEP туннеля функционально идентичен выбору туннеля самим OBGW.

Флаг мультикаста раскрывает OBEP тот факт, что OBGW использует мультикаст. Это создаёт компромисс между производительностью и приватностью, который следует учитывать при реализации протоколов верхнего уровня. Поскольку флаг является опциональным, пользователи могут принимать решение, соответствующее их приложению. Однако может быть выгодно сделать такое поведение поведением по умолчанию для совместимых приложений, поскольку широкое использование разными приложениями снизит объём утечки информации о том, от какого именно приложения пришло сообщение.

Спецификация

Инструкции доставки первого фрагмента будут изменены следующим образом:

+----+----+----+----+----+----+----+----+
  |flag|  Tunnel ID (opt)  |              |
  +----+----+----+----+----+              +
  |                                       |
  +                                       +
  |         To Hash (optional)            |
  +                                       +
  |                                       |
  +                        +----+----+----+
  |                        |dly | Message
  +----+----+----+----+----+----+----+----+
   ID (opt) |extended opts (opt)|cnt | (o)
  +----+----+----+----+----+----+----+----+
   Tunnel ID N   |                        |
  +----+----+----+                        +
  |                                       |
  +                                       +
  |         To Hash N (optional)          |
  +                                       +
  |                                       |
  +              +----+----+----+----+----+
  |              | Tunnel ID N+1 (o) |    |
  +----+----+----+----+----+----+----+    +
  |                                       |
  +                                       +
  |         To Hash N+1 (optional)        |
  +                                       +
  |                                       |
  +                                  +----+
  |                                  | sz
  +----+----+----+----+----+----+----+----+
       |
  +----+

flag ::
       1 байт
       Порядок битов: 76543210
       биты 6-5: тип доставки
                 0x03 = TUNNELS
       бит 0: мультикаст? Если 0 — доставить в один из туннелей
                         Если 1 — доставить во все туннели
                         Установить в 0 для совместимости с будущими версиями,
                         если тип доставки не TUNNELS

Count ::
       1 байт
       Опционально, присутствует, если тип доставки — TUNNELS
       2-255 — количество пар id/hash, следующих далее

Tunnel ID :: TunnelId
To Hash ::
       по 36 байт каждая
       Опционально, присутствует, если тип доставки — TUNNELS
       пары id/hash

Общая длина: типичная длина:
       75 байт для доставки TUNNELS с count=2 (нефрагментированное сообщение туннеля);
       79 байт для доставки TUNNELS с count=2 (первый фрагмент)

Остальные инструкции доставки остаются без изменений

Совместимость

Единственные пиры, которым необходимо понимать новую спецификацию — это OBGW и OBEP. Поэтому мы можем сделать это изменение совместимым с существующей сетью, сделав его использование условным в зависимости от версии целевого I2P:

  • OBGW должны выбирать совместимые OBEP при построении исходящих туннелей, основываясь на версии I2P, указанной в их RouterInfo .

  • Пиры, объявляющие целевую версию, должны поддерживать разбор новых флагов и не должны отвергать инструкции как недопустимые.

Ссылки