Перейти к содержанию

Введение

I2P/Bote - это бессерверный псевдонимный сервис обмена электронными сообщениями через сеть I2P.
Электронные письма хранятся в зашифрованном виде в распределённой хеш-таблице Kademlia, сформированной всеми узлами I2P/Bote.

Электронные письма могут быть отправлены через некоторое число промежуточных узлов (Реле) (для усиления анонимности) или напрямую на несколько узлов-хранителей (для более быстрой доставки).

Все узлы равнозначны.
Не существует "суперузла" или специально назначеных реле/хранителей.
Любой участник является потенциальным реле или хранителем.
Перед отправкой письмо разбивается на пакеты по 30 КиБ или менее и шифруется при помощи публичного ключа получателя.
Полученые пакеты передаются на хранение в распределённую хеш-таблицу.

Пакеты сохраняются в распределённой хеш-таблице Kademlia с избыточностью.
Сохранёные пакеты хранятся на узлах в течении 100 дней, в течении которых получатель может выгрузить их.
Если узел достиг лимита дискового пространства, доступного для хранилища, и нет пакетов для удаления, то новые запросы на хранение будут отклонены.

Ниже находится схемотичная иллюстрация маршрутизации пакетов от отправителя до получателя через реле:

                    .-------.      .-------.      .-------------.
                    | Реле  | ---> | Реле  | ---> | Сохранитель | -----------.
                _   `-------'      `-------'      `-------------'             `\
                /`                                                              |
               /                                                                |
 .-------------.    .-------.      .-------.      .-------------.               |
 | Отправитель |--> | Реле  | ---> | Реле  | ---> | Сохранитель | ------.       |
 `-------------'    `-------'      `-------'      `-------------'        `\     |
               \                                                           |    |
               _\/                                                         |    |
                    .-------.      .-------.      .-------------.          |    |
                    | Реле  | ---> | Реле  | ---> | Сохранитель | -.       |    |
                    `-------'      `-------'      `-------------'   `\     |    |
                                                                      |    |    |
                                                                      V    V    V
                                .--------------- Kademlia DHT -------------------------.
                                |                                .---------.           |
                                |   .---------.                  |  Узел   |           |
                                |   |   Узел  |     .---------.  |Хранитель|           |
                                |   |Хранитель|     |  Узел   |  `---------'           |
                                |   `---------'     |Хранитель|                        |
                                |                   `---------'            .---------. |
                                |  .---------.   .---------.               | Узел    | |
                                |  |   Узел  |   | Узел    |  .---------.  |Хранитель| |
                                |  |Хранитель|   |Хранитель|  |  Узел   |  `---------' |
                                |  `---------'   `---------'  |Хранитель|              |
                                |                             `---------'              |
                                `------------------------------------------------------'
                                                                    |    |    |
                    .-------.      .-------.      .---------.      /     |    |
                    | Реле  | <--- | Реле  | <--- | Сборщик | <---'      |    |
                  / `-------'      `-------'      `---------'            |    |
                 /                                                       |    |
               \/_                                                       |    |
 .------------.     .-------.      .-------.      .---------.           /     |
 | Получатель | <-- | Реле  | <--- | Реле  | <--- | Сборщик | <--------'      |
 `------------'     `-------'      `-------'      `---------'                 |
               |\                                                             |
                 \                                                            |
                  \ .-------.      .-------.      .---------.                /
                    | Реле  | <--- | Реле  | <--- | Сборщик | <-------------'
                    `-------'      `-------'      `---------'

Число реле, через которое будет отправлено или получено письмо, является настраиваемым значением.

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

 .-------------.
 | Отправитель | ------------.
 `-------------'              `\
                               |
                               V
    .------------------- Kademlia DHT ---------------------.
    |                                .---------.           |
    |   .---------.                  | Storage |           |
    |   | Storage |     .---------.  |  Node   |           |
    |   |  Node   |     | Storage |  `---------'           |
    |   `---------'     |  Node   |                        |
    |                   `---------'            .---------. |
    |  .---------.   .---------.               | Storage | |
    |  | Storage |   | Storage |  .---------.  |  Node   | |
    |  |  Node   |   |  Node   |  | Storage |  `---------' |
    |  `---------'   `---------'  |  Node   |              |
    |                             `---------'              |
    `------------------------------------------------------'
                               |
                               |
 .------------.                /
 | Получатель | <-------------'
 `------------'

I2P/Bote использует строки с кодированием ключей в Base32/Base64.
Их называют Почтовое назначение и они имеют переменную длину, в зависимости от выбранного комплекта алгоритмов.
Детали можно узнать в разделе Криптография.


Последнее обновление: 2023-03-10