17 KiB
17 KiB
Phantom Protocol Extended - Архитектура доменной системы и exit-нодов
Обзор расширенной архитектуры
Phantom Protocol Extended превращает базовую анонимную сеть в полноценную интернет-инфраструктуру с поддержкой:
- Phantom DNS - Децентрализованная доменная система
- Hidden Services - Анонимные веб-сервисы (.phantom домены)
- Exit Nodes - Шлюзы для доступа к обычному интернету
- Service Discovery - Автоматическое обнаружение сервисов
- 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:
- Генерация ключей - Ed25519 keypair для сервиса
- Регистрация в PDNS - Публикация .phantom домена
- Introduction Points - Выбор узлов для входа
- 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:
- HTTP Exit - Для веб-трафика
- HTTPS Exit - Для защищенного веб-трафика
- DNS Exit - Для DNS запросов
- 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:
- DNS Resolution - Получение Service Descriptor
- Introduction - Соединение с Introduction Point
- Rendezvous Setup - Установка точки встречи
- Circuit Building - Построение анонимного канала
- 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. Маршрутизация
Типы маршрутов:
- Internal Route - Внутри Phantom сети
- Hidden Service Route - К .phantom сервисам
- 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, но с улучшенными возможностями и производительностью.