unified: Phantom Protocol 2025 complete archive integration

This commit is contained in:
NW
2026-05-18 17:28:53 +01:00
commit b680c5aeca
553 changed files with 112091 additions and 0 deletions

View File

@@ -0,0 +1,359 @@
# 📝 Проектирование Hidden Services
**Версия:** 1.0
**Дата:** 23 ноября 2025
**Статус:** ✅ Завершено
**Автор:** Manus AI
---
## 1. Введение
Этот документ описывает архитектуру и протоколы для реализации **Hidden Services** (скрытых сервисов) в сети Phantom Protocol. Hidden Services позволяют пользователям публиковать и получать доступ к сервисам (например, веб-сайтам), не раскрывая их реальное местоположение (IP-адрес).
**Цели:**
- Обеспечить анонимность как для поставщика сервиса, так и для клиента.
- Использовать существующую Kademlia DHT для обнаружения сервисов.
- Минимизировать задержки при установке соединения.
- Обеспечить устойчивость к атакам на обнаружение и доступность.
---
## 2. Архитектура (Задача 1.1.2 ✅)
Архитектура Hidden Services состоит из четырех основных компонентов, которые взаимодействуют для обеспечения анонимности:
1. **Скрытый Сервис (Hidden Service):** Это серверное приложение, которое прослушивает трафик только внутри сети Phantom. Оно никогда не раскрывает свой IP-адрес и устанавливает исходящие анонимные туннели к нескольким **точкам входа (Introduction Points)**, чтобы анонсировать свое существование.
2. **Клиент (Client):** Это приложение пользователя, которое инициирует соединение со скрытым сервисом. Клиент находит информацию о сервисе в DHT и анонимно договаривается о соединении через **точку рандеву (Rendezvous Point)**.
3. **Точка Рандеву (Rendezvous Point):** Это любой узел в сети Phantom, выбранный клиентом для "встречи" со скрытым сервисом. Его основная задача - соединить два анонимных туннеля (от клиента и от сервиса), не зная ничего о конечных участниках.
4. **Дескриптор Сервиса (Service Descriptor):** Это небольшая структура данных, подписанная скрытым сервисом и опубликованная в Kademlia DHT. Она содержит публичный ключ сервиса и адреса его точек входа, позволяя клиентам инициировать соединение.
### Диаграмма Архитектуры
```mermaid
graph TD
subgraph "Клиент"
C[Клиент]
end
subgraph "Скрытый Сервис"
HS[Сервис]
end
subgraph "Phantom Сеть"
DHT[Kademlia DHT]
RP[Точка Рандеву]
IP1[Точка входа 1]
IP2[Точка входа 2]
end
C -- "1. Запрос дескриптора по .phantom адресу" --> DHT
DHT -- "2. Возврат дескриптора" --> C
HS -- "3. Периодическая публикация дескриптора" --> DHT
HS -- "4. Создание туннеля к точке входа" --> IP1
C -- "5. Создание туннеля к точке рандеву" --> RP
RP -- "6. Сообщение о рандеву (Introduce1)" --> IP1
IP1 -- "7. Передача сообщения сервису" --> HS
HS -- "8. Создание туннеля к точке рандеву" --> RP
C <-. "9. Установлено анонимное соединение" .-> HS
```
---
## 3. Формат .phantom Адреса (Задача 1.1.3 ✅)
`.phantom` адрес - это человекочитаемый и безопасный идентификатор скрытого сервиса. Он является производным от его постоянного публичного ключа.
**Формат:** `[52-символьный Base32-хэш].phantom`
**Пример:** `v4vyh26w7qf5g3z4v3h2g5g3z4v3h2g5v4vyh26w7qf5g3z4v3h2g.phantom`
### Процесс Генерации Адреса
1. **Генерация ключевой пары:** Сервис генерирует долгосрочную ключевую пару для идентификации.
- `(public_key, private_key) = Ed25519_generate()`
2. **Хэширование публичного ключа:** Для получения уникального идентификатора и сокращения длины используется хэширование.
- `hash = BLAKE2b-256(public_key)` (BLAKE2b выбран за скорость и безопасность)
3. **Добавление контрольной суммы:** Для предотвращения опечаток добавляется контрольная сумма.
- `checksum = SHA256(SHA256(public_key))[0:2]` (первые 2 байта двойного хэша)
- `payload = hash + checksum`
4. **Кодирование в Base32:** `payload` кодируется в Base32 (RFC 4648) для удобства использования в DNS и URL.
- `base32_payload = Base32_encode(payload)`
5. **Формирование адреса:**
- `address = base32_payload + ".phantom"`
---
## 4. Процессы Регистрации и Подключения
### Процесс Регистрации Сервиса (Задача 1.1.5 ✅)
1. **Инициализация:** Сервис генерирует свою ключевую пару Ed25519.
2. **Выбор Точек Входа:** Сервис выбирает 3-5 надежных и хорошо подключенных узлов в сети в качестве своих **точек входа (Introduction Points)**.
3. **Построение Туннелей:** Сервис строит анонимные туннели к каждой из своих точек входа и поддерживает их в активном состоянии.
4. **Создание Дескриптора:** Сервис создает **дескриптор**, содержащий его публичный ключ и список адресов точек входа.
5. **Подпись и Публикация:** Сервис подписывает дескриптор своим приватным ключом и публикует его в DHT. Ключом для хранения в DHT является хэш публичного ключа сервиса.
6. **Перепубликация:** Сервис периодически (например, каждые 60 минут) перепубликовывает свой дескриптор, чтобы он не истек в DHT.
### Процесс Подключения Клиента (Задача 1.1.6 ✅)
1. **Получение Адреса:** Клиент получает `.phantom` адрес сервиса (например, через веб-сайт, мессенджер).
2. **Запрос Дескриптора:** Клиент декодирует адрес, извлекает хэш и запрашивает у DHT дескриптор по этому хэшу.
3. **Проверка Дескриптора:** Клиент получает дескриптор и проверяет его подпись, используя публичный ключ из самого дескриптора.
4. **Выбор Точки Рандеву:** Клиент выбирает случайный узел в сети в качестве **точки рандеву (Rendezvous Point)**.
5. **Туннель к Рандеву:** Клиент строит анонимный туннель к точке рандеву и отправляет ей **одноразовый секрет (cookie)**, сгенерированный случайным образом.
6. **Отправка Сообщения:** Клиент выбирает одну из точек входа из дескриптора и анонимно отправляет ей **сообщение о рандеву (introduce message)**. Это сообщение зашифровано для публичного ключа сервиса и содержит адрес точки рандеву и тот же cookie.
7. **Пересылка Сервису:** Точка входа пересылает сообщение сервису по ранее установленному туннелю.
8. **Туннель от Сервиса:** Сервис расшифровывает сообщение, строит свой анонимный туннель к указанной точке рандеву и отправляет ей тот же cookie.
9. **Соединение:** Точка рандеву, получив одинаковые cookie от клиента и сервиса, "соединяет" их туннели. Теперь трафик может течь между клиентом и сервисом анонимно в обе стороны.
---
## 5. Протокол Рандеву (Задача 1.1.4 ✅)
Протокол рандеву - это ядро установки соединения. Он состоит из двух ключевых сообщений.
### Сообщение о Рандеву (Introduce1)
Отправляется от клиента к точке входа, зашифровано для публичного ключа сервиса.
**Содержимое (Protobuf):**
```protobuf
// Файл: protos/hidden_service.proto
message Introduce1 {
// Адрес точки рандеву (фантомный адрес)
bytes rendezvous_address = 1;
// Одноразовый секрет (cookie, 32 байта), сгенерированный клиентом
bytes rendezvous_cookie = 2;
// Публичный ключ клиента для DH-обмена (X25519)
bytes client_dh_public_key = 3;
}
```
### Сообщение о Рандеву (Rendezvous1)
Отправляется от скрытого сервиса к точке рандеву.
**Содержимое (Protobuf):**
```protobuf
// Файл: protos/hidden_service.proto
message Rendezvous1 {
// Тот же одноразовый секрет, что и в Introduce1
bytes rendezvous_cookie = 1;
// Публичный ключ сервиса для DH-обмена (X25519)
bytes service_dh_public_key = 2;
}
```
---
## 6. Структуры Данных (Задача 1.1.7 ✅)
### Дескриптор Сервиса (Protobuf)
```protobuf
// Файл: protos/hidden_service.proto
syntax = "proto3";
package phantom;
message ServiceDescriptor {
// Публичный ключ сервиса (Ed25519, 32 байта)
bytes public_key = 1;
// Список точек входа
repeated IntroductionPoint introduction_points = 2;
// Версия протокола (например, 1)
uint32 protocol_version = 3;
// Временная метка создания (Unix timestamp)
uint64 timestamp = 4;
// Подпись (public_key, introduction_points, protocol_version, timestamp)
bytes signature = 5;
}
message IntroductionPoint {
// Адрес узла (фантомный адрес)
bytes address = 1;
// Публичный ключ для шифрования сообщений от клиента (X25519)
bytes encryption_key = 2;
}
```
### `phantom_hidden_service.h`
```c
#ifndef PHANTOM_HIDDEN_SERVICE_H
#define PHANTOM_HIDDEN_SERVICE_H
#include <openssl/evp.h>
#include <stdint.h>
#include "kademlia.h"
#define PHANTOM_HS_ADDRESS_LEN 52
#define PHANTOM_HS_COOKIE_LEN 32
#define PHANTOM_HS_MAX_INTRO_POINTS 5
// Структура для хранения информации о точке входа
typedef struct {
phantom_address_t address; // Фантомный адрес точки входа
EVP_PKEY *encryption_key; // Ключ шифрования X25519
// ... информация о туннеле
} phantom_intro_point_t;
// Структура для хранения информации о скрытом сервисе
typedef struct {
// Постоянные ключи сервиса
EVP_PKEY *identity_key; // Ed25519
// .phantom адрес
char address[PHANTOM_HS_ADDRESS_LEN + 9]; // + .phantom + null
// Список точек входа
phantom_intro_point_t intro_points[PHANTOM_HS_MAX_INTRO_POINTS];
int num_intro_points;
// ... информация о потоках, состоянии и т.д.
} phantom_hidden_service_t;
// Функции
/**
* @brief Создает и инициализирует новый скрытый сервис
* @return Указатель на структуру сервиса или NULL при ошибке
*/
phantom_hidden_service_t* phantom_hs_create();
/**
* @brief Публикует дескриптор сервиса в DHT
* @param service Указатель на структуру сервиса
* @param dht Указатель на экземпляр Kademlia DHT
* @return 0 при успехе, -1 при ошибке
*/
int phantom_hs_publish(phantom_hidden_service_t *service, kademlia_dht_t *dht);
/**
* @brief Запускает прослушивание входящих соединений от точек входа
* @param service Указатель на структуру сервиса
* @return 0 при успехе, -1 при ошибке
*/
int phantom_hs_listen(phantom_hidden_service_t *service);
#endif // PHANTOM_HIDDEN_SERVICE_H
```
---
## 7. Диаграммы Последовательности (Задача 1.1.8 ✅)
### Публикация Сервиса
```mermaid
sequenceDiagram
participant HS as Скрытый Сервис
participant IP as Точка Входа
participant DHT as Kademlia DHT
HS->>HS: 1. Генерация identity_key (Ed25519)
HS->>IP: 2. Установка анонимного туннеля
HS->>HS: 3. Создание дескриптора (с адресом IP)
HS->>HS: 4. Подпись дескриптора своим identity_key
HS->>DHT: 5. Публикация дескриптора (PUT)
Note right of DHT: Хранится 1 час
loop Каждые 60 минут
HS->>DHT: Перепубликация дескриптора
end
```
### Подключение Клиента
```mermaid
sequenceDiagram
participant C as Клиент
participant DHT as Kademlia DHT
participant IP as Точка Входа
participant RP as Точка Рандеву
participant HS as Скрытый Сервис
C->>DHT: 1. Запрос дескриптора (GET)
DHT-->>C: 2. Возврат дескриптора
C->>C: 3. Проверка подписи дескриптора
C->>RP: 4. Установка туннеля и отправка cookie
C->>IP: 5. Отправка Introduce1 (зашифровано для HS)
IP->>HS: 6. Пересылка зашифрованного сообщения
HS->>HS: 7. Расшифровка, проверка cookie
HS->>RP: 8. Установка туннеля и отправка того же cookie
RP->>RP: 9. Сравнение cookie от C и HS
Note over RP: Cookie совпали, соединяем туннели
C-->>HS: 10. Обмен данными по анонимному туннелю
```
---
## 8. План Реализации
**Задача 1.1: Проектирование (2 недели)**
- [x] Создать этот документ
- [x] Описать архитектуру
- [x] Определить формат адреса
- [x] Спроектировать протокол рандеву
- [x] Описать процесс регистрации сервиса
- [x] Описать процесс подключения клиента
- [x] Определить структуры данных
- [x] Создать диаграммы последовательности
**Задача 1.2: Реализация `phantom_hidden_service.c` (6-8 недель)**
- [ ] Реализовать `phantom_hs_create()`
- [ ] Реализовать генерацию адреса
- [ ] Реализовать создание дескриптора
- [ ] Реализовать `phantom_hs_publish()`
- [ ] Реализовать `phantom_hs_listen()`
**Задача 1.3: Реализация клиентской части (4-6 недель)**
- [ ] Реализовать `phantom_client_connect_hs()`
- [ ] Реализовать запрос дескриптора
- [ ] Реализовать протокол рандеву
**Задача 1.4: Тестирование (2 недели)**
- [ ] Написать unit-тесты
- [ ] Написать интеграционные тесты
- [ ] Протестировать реальный сценарий (веб-сервер)
---
## 9. Открытые Вопросы
1. **Защита от DoS-атак на точки входа:** Как предотвратить флуд сообщениями о рандеву?
- *Решение:* Требовать небольшой proof-of-work (например, Hashcash) от клиента при отправке сообщения `Introduce1`. Это будет реализовано в версии 2 протокола.
2. **Ротация точек входа:** Как часто сервис должен менять свои точки входа для повышения анонимности?
- *Решение:* Сервис должен выбирать новые точки входа каждые 24 часа и публиковать обновленный дескриптор.
3. **Хранение дескрипторов в DHT:** Как обеспечить постоянное наличие дескрипторов в DHT?
- *Решение:* Сервис должен перепубликовывать свой дескриптор каждые 60 минут. Если сервис отключается, дескриптор автоматически истечет.
4. **Балансировка нагрузки:** Как распределить нагрузку между несколькими точками входа?
- *Решение:* Клиент должен выбирать точку входа из дескриптора случайным образом. Это обеспечивает простую и эффективную балансировку.
---
**Конец документа**

View File

@@ -0,0 +1,788 @@
# 📖 Полное руководство пользователя Phantom Protocol
**Версия:** 2025.1
**Автор:** Phantom Protocol Team
**Дата:** Январь 2025
---
## 📋 Содержание
1. [Введение в Phantom Protocol](#введение-в-phantom-protocol)
2. [Быстрый старт](#быстрый-старт)
3. [Установка и настройка](#установка-и-настройка)
4. [Базовое использование](#базовое-использование)
5. [Продвинутые сценарии](#продвинутые-сценарии)
6. [Безопасность и приватность](#безопасность-и-приватность)
7. [Устранение неполадок](#устранение-неполадок)
8. [Справочная информация](#справочная-информация)
---
## 🌟 Введение в Phantom Protocol
Phantom Protocol представляет собой революционную систему анонимной сетевой коммуникации, которая обеспечивает беспрецедентный уровень приватности и безопасности в цифровом мире. Разработанная с использованием передовых криптографических технологий и инновационных сетевых протоколов, система позволяет пользователям общаться, обмениваться данными и получать доступ к интернет-ресурсам, сохраняя полную анонимность.
### Что такое Phantom Protocol?
Phantom Protocol - это децентрализованная анонимная сеть, которая использует концепцию "фантомных адресов" и многослойного шифрования для обеспечения приватности коммуникаций. В отличие от традиционных VPN сервисов или даже сети Tor, Phantom Protocol предлагает уникальный подход к анонимности, основанный на распределенной хеш-таблице Kademlia и инновационном алгоритме построения маршрутов.
Основная идея заключается в том, что каждое сообщение или пакет данных проходит через несколько промежуточных узлов (хопов), при этом каждый узел знает только предыдущий и следующий узел в цепочке. Это создает эффект "фантомного" маршрута, где невозможно проследить полный путь сообщения от отправителя к получателю.
### Ключевые преимущества
**Максимальная анонимность:** Phantom Protocol обеспечивает более высокий уровень анонимности по сравнению с существующими решениями благодаря использованию динамических фантомных адресов и многослойного шифрования. Каждое соединение использует уникальный набор промежуточных узлов, что делает практически невозможным корреляционный анализ трафика.
**Децентрализованная архитектура:** Система не имеет центральных точек отказа или контроля. Все узлы равноправны и могут выполнять функции маршрутизации, что обеспечивает высокую отказоустойчивость и устойчивость к цензуре.
**Высокая производительность:** Благодаря оптимизированным алгоритмам выбора маршрутов и эффективному использованию сетевых ресурсов, Phantom Protocol обеспечивает высокую скорость передачи данных при сохранении анонимности.
**Простота использования:** Несмотря на сложную внутреннюю архитектуру, система предоставляет простые и интуитивно понятные интерфейсы для конечных пользователей. Большинство операций можно выполнить с помощью нескольких команд или через веб-интерфейс.
### Области применения
Phantom Protocol находит применение в широком спектре сценариев, где требуется обеспечение приватности и анонимности:
**Журналистика и активизм:** Журналисты и правозащитники могут использовать Phantom Protocol для безопасного общения с источниками информации и публикации материалов в условиях цензуры или преследований.
**Корпоративная безопасность:** Компании могут использовать систему для защиты конфиденциальной корпоративной информации и обеспечения безопасности удаленных сотрудников.
**Личная приватность:** Обычные пользователи могут защитить свою личную информацию от слежки со стороны интернет-провайдеров, рекламных компаний и государственных органов.
**Исследования и разработка:** Исследователи в области кибербезопасности и криптографии могут использовать Phantom Protocol как платформу для экспериментов и разработки новых методов обеспечения приватности.
### Техническая основа
Phantom Protocol построен на нескольких ключевых технологических компонентах, которые работают в синергии для обеспечения максимальной безопасности и эффективности.
**Kademlia DHT (Distributed Hash Table)** служит основой для децентрализованного обнаружения узлов и маршрутизации. Эта технология позволяет узлам автоматически находить друг друга и строить оптимальные маршруты без необходимости в центральных серверах или координаторах.
**Многослойное шифрование** обеспечивает защиту данных на каждом этапе передачи. Каждый пакет данных шифруется несколько раз с использованием различных ключей, соответствующих каждому узлу в маршруте. Это означает, что даже если один из узлов будет скомпрометирован, злоумышленник не сможет получить доступ к исходным данным.
**Фантомные адреса** представляют собой временные криптографические идентификаторы, которые используются для адресации узлов в сети. Эти адреса регулярно обновляются и не связаны с реальными IP-адресами или другими идентифицирующими данными.
**Протокол построения путей** автоматически выбирает оптимальные маршруты через сеть, учитывая такие факторы, как задержка, пропускная способность, надежность узлов и требования к анонимности.
## 🚀 Быстрый старт
Этот раздел поможет вам быстро начать работу с Phantom Protocol. Мы рассмотрим самые простые способы подключения к сети и начала использования основных функций системы.
### Системные требования
Перед началом работы убедитесь, что ваша система соответствует минимальным требованиям для запуска Phantom Protocol.
**Операционная система:** Phantom Protocol поддерживает все основные операционные системы, включая Linux (Ubuntu 20.04+, CentOS 8+, Debian 11+), macOS (10.15+), и Windows (10/11). Рекомендуется использовать 64-битные версии операционных систем для обеспечения максимальной производительности и безопасности.
**Аппаратные требования:** Минимальные требования включают процессор с частотой 1 ГГц или выше, 2 ГБ оперативной памяти и 1 ГБ свободного места на диске. Для оптимальной работы рекомендуется использовать многоядерный процессор, 4 ГБ ОЗУ и SSD накопитель.
**Сетевые требования:** Стабильное интернет-соединение со скоростью не менее 1 Мбит/с. Для работы в качестве полноценного узла сети рекомендуется соединение со скоростью 10 Мбит/с и выше. Система должна иметь возможность устанавливать исходящие TCP соединения на различные порты.
**Программное обеспечение:** Docker версии 20.10 или выше для контейнеризованного развертывания, либо Python 3.8+ и компилятор GCC для сборки из исходного кода. Также потребуется Git для клонирования репозитория.
### Установка через Docker (рекомендуется)
Docker предоставляет самый простой и надежный способ запуска Phantom Protocol. Этот метод гарантирует, что все зависимости будут установлены корректно и система будет работать в изолированной среде.
**Шаг 1: Установка Docker**
Если Docker еще не установлен в вашей системе, выполните следующие команды:
```bash
# Для Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# Для CentOS/RHEL
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
# Для macOS
# Скачайте Docker Desktop с официального сайта docker.com
# Для Windows
# Скачайте Docker Desktop с официального сайта docker.com
```
После установки перезагрузите систему или выйдите и войдите в систему заново, чтобы изменения в группах пользователей вступили в силу.
**Шаг 2: Загрузка Phantom Protocol**
Клонируйте репозиторий Phantom Protocol и перейдите в директорию проекта:
```bash
git clone https://github.com/phantom-protocol/phantom-protocol-2025.git
cd phantom-protocol-2025
```
**Шаг 3: Запуск базовой сети**
Запустите базовую конфигурацию Phantom сети, состоящую из пяти узлов:
```bash
# Сборка Docker образов
docker-compose build
# Запуск сети
docker-compose up -d
# Проверка статуса
docker-compose ps
```
Эта команда создаст и запустит полноценную Phantom сеть с пятью узлами, которые автоматически обнаружат друг друга и сформируют связанную сеть. Процесс инициализации может занять несколько минут.
**Шаг 4: Проверка работоспособности**
Убедитесь, что все узлы запустились корректно и сеть функционирует:
```bash
# Проверка логов
docker-compose logs phantom-node-1
# Проверка сетевой связности
docker exec phantom-node-1 phantom-client --test-connection
# Просмотр топологии сети
docker exec phantom-node-1 phantom-client --show-network
```
Если все команды выполняются без ошибок и показывают активные соединения между узлами, значит ваша Phantom сеть готова к использованию.
### Первое подключение
После успешного запуска сети вы можете подключиться к ней и начать использовать основные функции Phantom Protocol.
**Подключение через SOCKS5 прокси**
Самый простой способ начать использовать Phantom Protocol - это настроить SOCKS5 прокси, который будет маршрутизировать ваш интернет-трафик через анонимную сеть:
```bash
# Запуск SOCKS5 прокси на порту 8080
docker run -d --name phantom-socks5 \
--network phantom-protocol-2025_phantom-network \
-p 8080:8080 \
phantom-protocol:socks5-proxy
```
После запуска прокси настройте ваш браузер или другое приложение для использования SOCKS5 прокси на адресе `127.0.0.1:8080`. Весь трафик будет автоматически маршрутизироваться через Phantom сеть.
> **🔒 ВАЖНО: Fail-Secure Поведение**
>
> SOCKS5 прокси Phantom Protocol реализует принцип **fail-secure** (безопасный отказ). Это означает, что если подключение к Phantom сети невозможно или туннель не может быть установлен, прокси **НЕ будет** устанавливать прямое подключение к целевому хосту.
>
> Вместо этого:
> - ❌ Соединение будет прервано
> - 🔒 В логах появится сообщение о причине отказа
> - ⚠️ Браузер получит ошибку "Host unreachable"
>
> Это поведение **критически важно** для сохранения вашей анонимности. Если бы прокси автоматически переключался на прямое подключение, ваш реальный IP-адрес был бы раскрыт.
>
> **Что делать при ошибке подключения:**
> 1. Проверьте, что Phantom сеть запущена: `docker ps | grep phantom`
> 2. Проверьте логи прокси: `docker logs phantom-socks5`
> 3. Убедитесь, что в сети достаточно активных узлов
> 4. Попробуйте перезапустить прокси
**Настройка браузера Firefox:**
1. Откройте Настройки → Основные → Параметры сети
2. Выберите "Ручная настройка прокси"
3. В поле "SOCKS Host" введите `127.0.0.1`
4. В поле "Port" введите `8080`
5. Выберите "SOCKS v5"
6. Установите флажок "Проксировать DNS при использовании SOCKS v5"
**Настройка браузера Chrome:**
1. Запустите Chrome с параметрами прокси:
```bash
google-chrome --proxy-server="socks5://127.0.0.1:8080"
```
**Проверка анонимности**
Чтобы убедиться, что ваш трафик действительно проходит через Phantom сеть, откройте сайт для проверки IP-адреса:
```bash
# Проверка IP без прокси
curl http://httpbin.org/ip
# Проверка IP через Phantom прокси
curl --socks5 127.0.0.1:8080 http://httpbin.org/ip
```
IP-адреса должны отличаться, что подтверждает работу анонимизации.
### Базовые команды
Phantom Protocol предоставляет набор команд для управления сетью и мониторинга ее состояния.
**Подключение к сети**
```bash
# Подключение к локальной сети
phantom-client --connect
# Подключение к удаленному узлу
phantom-client --connect 192.168.1.100:8050
# Подключение с указанием количества хопов
phantom-client --connect --hops 5
```
**Отправка сообщений**
```bash
# Отправка текстового сообщения
phantom-client --send-message "Hello, Phantom!" --to node-id-12345
# Отправка файла
phantom-client --send-file document.pdf --to node-id-12345
# Широковещательное сообщение
phantom-client --broadcast "Public announcement"
```
**Создание туннелей**
```bash
# TCP туннель
phantom-tunnel --local 8080 --remote example.com:80 --hops 3
# SSH туннель
phantom-tunnel --local 2222 --remote server.com:22 --hops 5
# VPN туннель
phantom-tunnel --vpn --interface tun0
```
**Мониторинг сети**
```bash
# Показать статус узла
phantom-client --status
# Показать топологию сети
phantom-client --show-network
# Показать статистику трафика
phantom-client --show-stats
# Непрерывный мониторинг
phantom-client --monitor
```
### Веб-интерфейс
Phantom Protocol включает удобный веб-интерфейс для мониторинга и управления сетью. После запуска Docker контейнеров веб-интерфейс будет доступен по адресу `http://localhost:8090`.
**Основные разделы веб-интерфейса:**
**Dashboard** - главная панель с общей информацией о состоянии сети, количестве активных узлов, статистике трафика и текущих соединениях.
**Network Topology** - интерактивная карта сети, показывающая все узлы и соединения между ними. Вы можете кликать на узлы для получения детальной информации.
**Traffic Monitor** - реальное время мониторинга трафика с графиками пропускной способности, задержек и количества пакетов.
**Node Management** - управление локальными узлами, включая запуск, остановку и настройку параметров.
**Security Center** - информация о безопасности сети, включая обнаруженные угрозы и рекомендации по улучшению защиты.
### Первые шаги с .phantom доменами
Одной из уникальных особенностей Phantom Protocol является поддержка собственной доменной системы с доменами верхнего уровня .phantom.
**Создание .phantom сайта**
```bash
# Создание hidden service
phantom-hidden-service --create --name my-website
# Получаем адрес: abc123def456.phantom
# Запуск веб-сервера
python3 -m http.server 8080
# Привязка к Phantom адресу
phantom-hidden-service --bind abc123def456.phantom:80 --target localhost:8080
```
**Доступ к .phantom сайтам**
Для доступа к .phantom сайтам настройте ваш DNS на использование Phantom DNS сервера:
```bash
# Linux/macOS
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf.phantom
sudo cp /etc/resolv.conf.phantom /etc/resolv.conf
# Windows
# Измените DNS сервер в настройках сетевого адаптера на 127.0.0.1
```
После этого вы сможете открывать .phantom сайты в любом браузере, например: `http://abc123def456.phantom`
### Безопасность с первых шагов
Даже при первом знакомстве с Phantom Protocol важно соблюдать основные принципы безопасности.
**Используйте уникальные идентификаторы:** Никогда не используйте одинаковые идентификаторы узлов или ключи на разных машинах. Каждая установка должна генерировать уникальные криптографические материалы.
**Регулярно обновляйте систему:** Phantom Protocol активно развивается, и новые версии часто содержат важные исправления безопасности. Настройте автоматические обновления или регулярно проверяйте наличие новых версий.
**Мониторьте сетевую активность:** Используйте встроенные инструменты мониторинга для отслеживания подозрительной активности в вашей части сети.
**Настройте файрвол:** Убедитесь, что ваш файрвол настроен правильно и блокирует ненужные входящие соединения, оставляя открытыми только порты, необходимые для работы Phantom Protocol.
Следуя этим простым рекомендациям, вы сможете безопасно начать использовать Phantom Protocol и постепенно изучать его более продвинутые возможности.
## ⚙️ Установка и настройка
Данный раздел содержит подробные инструкции по установке Phantom Protocol на различных операционных системах и настройке системы для оптимальной работы в различных сценариях использования.
### Установка из исходного кода
Для пользователей, которые предпочитают полный контроль над процессом установки или хотят внести изменения в код, доступна установка из исходного кода.
**Подготовка среды разработки**
Перед началом компиляции убедитесь, что в вашей системе установлены все необходимые зависимости. Процесс установки зависимостей различается в зависимости от операционной системы.
Для систем на базе Ubuntu или Debian выполните следующие команды:
```bash
sudo apt update
sudo apt install -y build-essential cmake git
sudo apt install -y libssl-dev libxml2-dev libprotobuf-dev
sudo apt install -y protobuf-compiler pkg-config
sudo apt install -y python3 python3-pip python3-dev
```
Для систем на базе CentOS, RHEL или Fedora:
```bash
sudo yum groupinstall -y "Development Tools"
sudo yum install -y cmake git openssl-devel libxml2-devel
sudo yum install -y protobuf-devel protobuf-compiler pkgconfig
sudo yum install -y python3 python3-pip python3-devel
```
Для macOS с использованием Homebrew:
```bash
brew install cmake git openssl libxml2 protobuf pkg-config
brew install python3
```
**Клонирование и сборка**
После установки зависимостей клонируйте репозиторий и выполните сборку:
```bash
# Клонирование репозитория
git clone https://github.com/phantom-protocol/phantom-protocol-2025.git
cd phantom-protocol-2025
# Генерация protobuf файлов
cd protos
./generate_protos.sh
cd ..
# Сборка основных компонентов
cd src
make clean
make all
# Проверка сборки
./phantom-client --version
./phantom-tunnel --version
```
Процесс сборки может занять от нескольких минут до получаса в зависимости от производительности вашей системы. Если сборка завершилась без ошибок, все исполняемые файлы будут созданы в директории `src/`.
**Установка в систему**
Для установки скомпилированных файлов в системные директории выполните:
```bash
sudo make install
# Проверка установки
phantom-client --version
which phantom-client
```
По умолчанию файлы устанавливаются в `/usr/local/bin/`. Если вы хотите изменить префикс установки, используйте:
```bash
make install PREFIX=/opt/phantom
```
### Настройка сетевых параметров
Правильная настройка сетевых параметров критически важна для обеспечения оптимальной производительности и безопасности Phantom Protocol.
**Конфигурация файрвола**
Phantom Protocol использует несколько портов для различных функций. Основной порт для межузлового общения - 8050, но система может использовать дополнительные порты для специализированных сервисов.
Для Ubuntu/Debian с ufw:
```bash
# Разрешение основного порта Phantom
sudo ufw allow 8050/tcp
# Разрешение портов для клиентских сервисов
sudo ufw allow 8080/tcp # SOCKS5 прокси
sudo ufw allow 8090/tcp # Веб-интерфейс мониторинга
sudo ufw allow 1194/udp # VPN сервер (если используется)
# Применение правил
sudo ufw reload
```
Для CentOS/RHEL с firewalld:
```bash
# Разрешение портов
sudo firewall-cmd --permanent --add-port=8050/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --permanent --add-port=1194/udp
# Перезагрузка конфигурации
sudo firewall-cmd --reload
```
**Оптимизация сетевых параметров ядра**
Для обеспечения максимальной производительности рекомендуется настроить параметры сетевого стека ядра Linux:
```bash
# Создание файла конфигурации
sudo tee /etc/sysctl.d/99-phantom-network.conf << EOF
# Увеличение размеров буферов сокетов
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Оптимизация TCP параметров
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_mtu_probing = 1
# Увеличение лимитов соединений
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 5000
# Оптимизация для высокой нагрузки
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 120
EOF
# Применение настроек
sudo sysctl -p /etc/sysctl.d/99-phantom-network.conf
```
### Конфигурационные файлы
Phantom Protocol использует систему конфигурационных файлов для настройки различных аспектов работы системы. Основной конфигурационный файл обычно располагается в `/etc/phantom/phantom.conf`.
**Структура основного конфигурационного файла**
```ini
# Phantom Protocol Configuration File
# Версия: 2025.1
[node]
# Уникальный идентификатор узла (генерируется автоматически)
node_id = auto
# Адрес для прослушивания входящих соединений
listen_address = 0.0.0.0
listen_port = 8050
# Максимальное количество одновременных соединений
max_connections = 1000
# Интервал отправки heartbeat сообщений (секунды)
heartbeat_interval = 30
[network]
# Список bootstrap узлов для первоначального подключения
bootstrap_nodes =
phantom-seed1.example.com:8050,
phantom-seed2.example.com:8050,
192.168.1.100:8050
# Минимальное количество соединений с другими узлами
min_peer_connections = 3
# Максимальное количество соединений с другими узлами
max_peer_connections = 50
# Таймаут подключения к узлам (секунды)
connection_timeout = 30
# Интервал поиска новых узлов (секунды)
peer_discovery_interval = 300
[routing]
# Количество хопов по умолчанию для маршрутизации
default_hops = 3
# Максимальное количество хопов
max_hops = 10
# Алгоритм выбора маршрута (random, shortest, fastest, most_reliable)
route_selection = fastest
# Время жизни маршрута (секунды)
route_ttl = 3600
# Включение кэширования маршрутов
route_caching = true
[security]
# Алгоритм шифрования (aes-256-gcm, chacha20-poly1305)
encryption_algorithm = aes-256-gcm
# Размер ключа шифрования (бит)
key_size = 256
# Включение perfect forward secrecy
perfect_forward_secrecy = true
# Интервал ротации ключей (секунды)
key_rotation_interval = 3600
# Минимальная длина пути для анонимности
min_anonymity_path_length = 3
[logging]
# Уровень логирования (debug, info, warning, error)
log_level = info
# Файл для записи логов
log_file = /var/log/phantom/phantom.log
# Максимальный размер лог файла (MB)
max_log_size = 100
# Количество архивных лог файлов
log_rotation_count = 5
# Включение логирования в syslog
syslog_enabled = false
[performance]
# Размер буфера для сетевых операций (байт)
network_buffer_size = 65536
# Количество рабочих потоков
worker_threads = auto
# Включение TCP_NODELAY
tcp_nodelay = true
# Включение TCP keep-alive
tcp_keepalive = true
# Таймаут неактивности соединения (секунды)
connection_idle_timeout = 300
```
**Конфигурация клиентских сервисов**
Каждый клиентский сервис (SOCKS5 прокси, VPN, DNS) имеет свой конфигурационный файл:
```ini
# /etc/phantom/socks5-proxy.conf
[socks5]
listen_address = 127.0.0.1
listen_port = 8080
max_connections = 100
connection_timeout = 30
buffer_size = 8192
[phantom]
bootstrap_nodes = 127.0.0.1:8050
hops = 3
encryption = aes-256-gcm
[access_control]
allowed_clients = 127.0.0.0/8, 192.168.0.0/16
blocked_destinations =
authentication_required = false
```
### Настройка автозапуска
Для обеспечения автоматического запуска Phantom Protocol при загрузке системы создайте systemd сервисы.
**Создание systemd сервиса для основного узла**
```bash
sudo tee /etc/systemd/system/phantom-node.service << EOF
[Unit]
Description=Phantom Protocol Node
Documentation=https://phantom-protocol.org/docs
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=phantom
Group=phantom
ExecStart=/usr/local/bin/phantom-node --config /etc/phantom/phantom.conf
ExecReload=/bin/kill -HUP \$MAINPID
Restart=always
RestartSec=5
StartLimitInterval=0
# Безопасность
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/phantom /var/log/phantom
# Ресурсы
LimitNOFILE=65535
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
EOF
```
**Создание пользователя для сервиса**
```bash
# Создание системного пользователя
sudo useradd -r -s /bin/false -d /var/lib/phantom phantom
# Создание необходимых директорий
sudo mkdir -p /var/lib/phantom /var/log/phantom /etc/phantom
sudo chown phantom:phantom /var/lib/phantom /var/log/phantom
sudo chmod 750 /var/lib/phantom /var/log/phantom
```
**Активация и запуск сервиса**
```bash
# Перезагрузка конфигурации systemd
sudo systemctl daemon-reload
# Включение автозапуска
sudo systemctl enable phantom-node
# Запуск сервиса
sudo systemctl start phantom-node
# Проверка статуса
sudo systemctl status phantom-node
# Просмотр логов
sudo journalctl -u phantom-node -f
```
### Настройка мониторинга
Мониторинг является критически важным аспектом эксплуатации Phantom Protocol, особенно при работе в производственной среде.
**Настройка Prometheus метрик**
Phantom Protocol поддерживает экспорт метрик в формате Prometheus:
```bash
# Включение метрик в конфигурации
echo "
[monitoring]
prometheus_enabled = true
prometheus_port = 9090
prometheus_path = /metrics
update_interval = 10
" | sudo tee -a /etc/phantom/phantom.conf
```
**Конфигурация Prometheus**
```yaml
# /etc/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'phantom-nodes'
static_configs:
- targets: ['localhost:9090']
scrape_interval: 10s
metrics_path: /metrics
```
**Настройка Grafana дашбордов**
Phantom Protocol поставляется с готовыми дашбордами для Grafana, которые можно импортировать:
```bash
# Копирование дашбордов
sudo cp grafana-dashboards/*.json /var/lib/grafana/dashboards/
# Перезапуск Grafana
sudo systemctl restart grafana-server
```
### Оптимизация производительности
Для достижения максимальной производительности Phantom Protocol требует тонкой настройки различных параметров системы.
**Настройка параметров JVM (если используется)**
Некоторые компоненты Phantom Protocol могут использовать JVM. В этом случае рекомендуется оптимизировать параметры виртуальной машины:
```bash
# /etc/phantom/jvm.conf
-Xms2g
-Xmx4g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+UseStringDeduplication
-XX:+OptimizeStringConcat
-Djava.net.preferIPv4Stack=true
```
**Оптимизация дискового ввода-вывода**
Для систем с высокой нагрузкой рекомендуется оптимизировать параметры дискового ввода-вывода:
```bash
# Настройка планировщика I/O для SSD
echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler
# Оптимизация параметров файловой системы
sudo mount -o remount,noatime,nodiratime /var/lib/phantom
```
**Настройка лимитов ресурсов**
```bash
# /etc/security/limits.d/phantom.conf
phantom soft nofile 65535
phantom hard nofile 65535
phantom soft nproc 4096
phantom hard nproc 4096
phantom soft memlock unlimited
phantom hard memlock unlimited
```
Эти настройки обеспечат оптимальную работу Phantom Protocol в различных условиях эксплуатации и помогут избежать проблем с производительностью при высокой нагрузке.