Files
Phantom/release/docs/phantom-extended-architecture.md

17 KiB
Raw Permalink Blame History

Phantom Protocol Extended - Архитектура доменной системы и exit-нодов

Обзор расширенной архитектуры

Phantom Protocol Extended превращает базовую анонимную сеть в полноценную интернет-инфраструктуру с поддержкой:

  1. Phantom DNS - Децентрализованная доменная система
  2. Hidden Services - Анонимные веб-сервисы (.phantom домены)
  3. Exit Nodes - Шлюзы для доступа к обычному интернету
  4. Service Discovery - Автоматическое обнаружение сервисов
  5. Load Balancing - Распределение нагрузки между узлами

Компоненты расширенной системы

1. Phantom DNS (PDNS)

Архитектура PDNS

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   DNS Client    │───▶│  PDNS Resolver  │───▶│  PDNS Registry  │
│                 │    │                 │    │                 │
│ phantom-browser │    │ phantom-dns     │    │ Kademlia DHT    │
└─────────────────┘    └─────────────────┘    └─────────────────┘

Типы доменов:

  • .phantom - Hidden services (аналог .onion)
  • .exit - Exit node routing
  • .local - Локальные сервисы в сети

Структура DNS записи:

struct phantom_dns_record {
    char domain[256];                    // Доменное имя
    uint8_t phantom_address[32];         // Phantom адрес сервиса
    uint8_t service_key[32];            // Открытый ключ сервиса
    uint16_t port;                      // Порт сервиса
    uint32_t ttl;                       // Время жизни записи
    uint8_t service_type;               // Тип сервиса (HTTP, HTTPS, etc.)
    uint8_t signature[64];              // Цифровая подпись
    uint32_t timestamp;                 // Время создания
};

2. Hidden Services (.phantom домены)

Архитектура Hidden Service

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Client    │───▶│ Introduction│───▶│ Rendezvous  │───▶│   Service   │
│             │    │    Point    │    │    Point    │    │             │
│ phantom-cli │    │             │    │             │    │ web-server  │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

Процесс создания Hidden Service:

  1. Генерация ключей - Ed25519 keypair для сервиса
  2. Регистрация в PDNS - Публикация .phantom домена
  3. Introduction Points - Выбор узлов для входа
  4. Service Descriptor - Создание описания сервиса

Структура Service Descriptor:

struct phantom_service_descriptor {
    uint8_t service_id[32];             // Идентификатор сервиса
    uint8_t public_key[32];             // Открытый ключ сервиса
    char domain_name[256];              // .phantom доменное имя
    
    // Introduction Points
    struct introduction_point {
        uint8_t node_id[20];            // ID узла
        uint8_t phantom_addr[32];       // Phantom адрес
        uint16_t port;                  // Порт
        uint8_t link_key[32];          // Ключ для связи
    } intro_points[3];                  // До 3 точек входа
    
    uint32_t timestamp;                 // Время создания
    uint32_t expiry;                    // Время истечения
    uint8_t signature[64];              // Подпись дескриптора
};

3. Exit Nodes

Архитектура Exit Node

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Client    │───▶│ Phantom Net │───▶│  Exit Node  │───▶│  Internet   │
│             │    │             │    │             │    │             │
│ phantom-cli │    │ Encrypted   │    │ Decryption  │    │ google.com  │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

Типы Exit Nodes:

  1. HTTP Exit - Для веб-трафика
  2. HTTPS Exit - Для защищенного веб-трафика
  3. DNS Exit - Для DNS запросов
  4. General Exit - Для любого TCP/UDP трафика

Конфигурация Exit Policy:

struct exit_policy {
    bool allow_http;                    // Разрешить HTTP
    bool allow_https;                   // Разрешить HTTPS
    bool allow_dns;                     // Разрешить DNS
    bool allow_smtp;                    // Разрешить SMTP
    bool allow_ftp;                     // Разрешить FTP
    
    // Списки разрешенных/запрещенных адресов
    struct ip_range allowed_ranges[64];
    struct ip_range blocked_ranges[64];
    
    // Ограничения по портам
    uint16_t allowed_ports[256];
    uint16_t blocked_ports[256];
    
    // Ограничения пропускной способности
    uint64_t bandwidth_limit;           // Байт/сек
    uint64_t daily_limit;               // Байт/день
};

4. Service Discovery

Протокол обнаружения сервисов:

// Запрос на поиск сервисов
struct service_discovery_query {
    uint8_t query_id[16];               // ID запроса
    char service_type[64];              // Тип сервиса (http, ftp, etc.)
    char keywords[256];                 // Ключевые слова
    uint8_t max_results;                // Максимум результатов
    uint32_t timestamp;                 // Время запроса
};

// Ответ с найденными сервисами
struct service_discovery_response {
    uint8_t query_id[16];               // ID запроса
    uint8_t result_count;               // Количество результатов
    
    struct service_info {
        char domain[256];               // Доменное имя
        char description[512];          // Описание сервиса
        uint8_t phantom_addr[32];       // Phantom адрес
        uint16_t port;                  // Порт
        float rating;                   // Рейтинг (0.0-5.0)
        uint32_t uptime;               // Время работы
    } services[32];
    
    uint32_t timestamp;                 // Время ответа
    uint8_t signature[64];              // Подпись ответа
};

Протоколы взаимодействия

1. Phantom DNS Protocol (PDNSP)

Типы сообщений:

enum pdns_message_type {
    PDNS_QUERY = 1,                     // DNS запрос
    PDNS_RESPONSE = 2,                  // DNS ответ
    PDNS_REGISTER = 3,                  // Регистрация домена
    PDNS_UPDATE = 4,                    // Обновление записи
    PDNS_DELETE = 5                     // Удаление записи
};

struct pdns_message {
    uint16_t message_id;                // ID сообщения
    uint8_t message_type;               // Тип сообщения
    uint8_t flags;                      // Флаги
    uint16_t question_count;            // Количество вопросов
    uint16_t answer_count;              // Количество ответов
    
    // Переменная часть с вопросами и ответами
    uint8_t data[];
};

2. Hidden Service Protocol (HSP)

Установка соединения с Hidden Service:

  1. DNS Resolution - Получение Service Descriptor
  2. Introduction - Соединение с Introduction Point
  3. Rendezvous Setup - Установка точки встречи
  4. Circuit Building - Построение анонимного канала
  5. Service Connection - Соединение с сервисом

Сообщения протокола:

enum hsp_message_type {
    HSP_INTRODUCE = 1,                  // Представление клиента
    HSP_RENDEZVOUS = 2,                 // Установка встречи
    HSP_CONNECT = 3,                    // Соединение с сервисом
    HSP_DATA = 4,                       // Передача данных
    HSP_CLOSE = 5                       // Закрытие соединения
};

3. Exit Node Protocol (ENP)

Типы запросов к Exit Node:

enum exit_request_type {
    EXIT_HTTP = 1,                      // HTTP запрос
    EXIT_HTTPS = 2,                     // HTTPS запрос
    EXIT_DNS = 3,                       // DNS запрос
    EXIT_TCP = 4,                       // Произвольный TCP
    EXIT_UDP = 5                        // Произвольный UDP
};

struct exit_request {
    uint8_t request_id[16];             // ID запроса
    uint8_t request_type;               // Тип запроса
    char target_host[256];              // Целевой хост
    uint16_t target_port;               // Целевой порт
    uint32_t data_length;               // Длина данных
    uint8_t data[];                     // Данные запроса
};

Криптографическая архитектура

1. Ключи и сертификаты

Иерархия ключей:

Root CA (Phantom Network)
├── Service CA (Hidden Services)
│   ├── Service Key 1 (.phantom domain)
│   ├── Service Key 2 (.phantom domain)
│   └── ...
├── Exit Node CA
│   ├── Exit Node Key 1
│   ├── Exit Node Key 2
│   └── ...
└── DNS CA (PDNS)
    ├── DNS Server Key 1
    ├── DNS Server Key 2
    └── ...

Структура сертификата:

struct phantom_certificate {
    uint8_t version;                    // Версия сертификата
    uint8_t cert_type;                  // Тип (Service/Exit/DNS)
    uint8_t subject_id[32];             // ID субъекта
    uint8_t issuer_id[32];              // ID издателя
    uint8_t public_key[32];             // Открытый ключ
    uint32_t not_before;                // Действителен с
    uint32_t not_after;                 // Действителен до
    
    // Расширения
    struct cert_extension {
        uint16_t type;                  // Тип расширения
        uint16_t length;                // Длина данных
        uint8_t data[];                 // Данные расширения
    } extensions[];
    
    uint8_t signature[64];              // Подпись сертификата
};

2. Протоколы шифрования

Для Hidden Services:

  • Handshake: X25519 + Ed25519
  • Symmetric: ChaCha20-Poly1305
  • Authentication: Ed25519 signatures

Для Exit Nodes:

  • Client-Exit: AES-256-GCM
  • Exit-Internet: TLS 1.3 (для HTTPS)

Сетевая архитектура

1. Топология сети

                    ┌─────────────────┐
                    │   Phantom DHT   │
                    │   (Kademlia)    │
                    └─────────────────┘
                            │
        ┌───────────────────┼───────────────────┐
        │                   │                   │
┌───────▼────────┐ ┌────────▼────────┐ ┌────────▼────────┐
│  DNS Servers   │ │ Hidden Services │ │   Exit Nodes    │
│                │ │                 │ │                 │
│ .phantom DNS   │ │ .phantom sites  │ │ Internet Access │
└────────────────┘ └─────────────────┘ └─────────────────┘
        │                   │                   │
        └───────────────────┼───────────────────┘
                            │
                    ┌───────▼────────┐
                    │    Clients     │
                    │                │
                    │ phantom-browser│
                    └────────────────┘

2. Маршрутизация

Типы маршрутов:

  1. Internal Route - Внутри Phantom сети
  2. Hidden Service Route - К .phantom сервисам
  3. Exit Route - Через Exit Node к интернету

Алгоритм выбора маршрута:

enum route_type select_route(const char *destination) {
    if (ends_with(destination, ".phantom")) {
        return ROUTE_HIDDEN_SERVICE;
    } else if (ends_with(destination, ".exit")) {
        return ROUTE_EXIT_NODE;
    } else if (is_phantom_address(destination)) {
        return ROUTE_INTERNAL;
    } else {
        return ROUTE_EXIT_NODE;  // Обычный интернет
    }
}

Компоненты реализации

1. phantom-dns (DNS Server)

  • Обработка DNS запросов для .phantom доменов
  • Интеграция с Kademlia DHT
  • Кэширование DNS записей
  • Валидация цифровых подписей

2. phantom-service (Hidden Service Host)

  • Хостинг .phantom веб-сайтов
  • Управление Introduction Points
  • Обработка Rendezvous соединений
  • Интеграция с веб-серверами

3. phantom-exit (Exit Node)

  • Проксирование трафика в интернет
  • Применение Exit Policy
  • Мониторинг пропускной способности
  • Логирование (с соблюдением приватности)

4. phantom-browser (Client)

  • Браузер для Phantom сети
  • Поддержка .phantom доменов
  • Автоматическое построение маршрутов
  • Интегрированный SOCKS5 прокси

5. phantom-registry (Service Registry)

  • Каталог доступных сервисов
  • Поиск по категориям
  • Рейтинговая система
  • Модерация контента

Безопасность и анонимность

1. Защита Hidden Services

  • End-to-end encryption между клиентом и сервисом
  • Multiple introduction points для отказоустойчивости
  • Rotating keys для forward secrecy
  • Traffic padding против анализа трафика

2. Защита Exit Nodes

  • Exit policy enforcement для предотвращения злоупотреблений
  • Rate limiting для защиты от DDoS
  • Geolocation diversity для устойчивости
  • Legal compliance в соответствии с юрисдикцией

3. Защита DNS

  • DNSSEC-like signatures для валидации записей
  • Distributed storage в Kademlia DHT
  • Cache poisoning protection через криптографию
  • Censorship resistance через децентрализацию

Производительность и масштабируемость

1. Оптимизации

  • Connection pooling для Exit Nodes
  • Circuit reuse для Hidden Services
  • Predictive caching для DNS
  • Load balancing между узлами

2. Метрики

  • Latency: < 500ms для .phantom сайтов
  • Throughput: > 10 Mbps через Exit Nodes
  • Availability: > 99% для популярных сервисов
  • Scalability: До 100,000 узлов в сети

Эта архитектура превращает Phantom Protocol в полноценную анонимную интернет-инфраструктуру, сопоставимую с Tor, но с улучшенными возможностями и производительностью.