394 lines
17 KiB
Markdown
394 lines
17 KiB
Markdown
# 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, но с улучшенными возможностями и производительностью.
|
||
|