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

394 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 записи:
```c
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:
```c
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:
```c
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
#### Протокол обнаружения сервисов:
```c
// Запрос на поиск сервисов
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)
#### Типы сообщений:
```c
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** - Соединение с сервисом
#### Сообщения протокола:
```c
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:
```c
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
└── ...
```
#### Структура сертификата:
```c
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 к интернету
#### Алгоритм выбора маршрута:
```c
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, но с улучшенными возможностями и производительностью.