Files
Phantom/website/architecture.html

1226 lines
77 KiB
HTML
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.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Архитектура - Phantom Protocol</title>
<meta name="description" content="Техническая архитектура Phantom Protocol - 5 слоев анонимности, DHT, маршрутизация и безопасность">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;600;700;900&family=Rajdhani:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Custom CSS -->
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/desktop-fix.css">
<link rel="stylesheet" href="css/responsive.css">
<link rel="stylesheet" href="css/vendor-prefixes.css">
<link rel="stylesheet" href="css/visual-fixes.css">
<!-- Prism.js for code highlighting -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet">
</head>
<body data-theme="dark">
<!-- Animated Background Canvas -->
<canvas id="phantomBackground"></canvas>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-dark fixed-top glass-nav">
<div class="container">
<a class="navbar-brand" href="index.html">
<i class="fas fa-ghost"></i> <span class="brand-text">Phantom Protocol</span>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="index.html">Главная</a></li>
<li class="nav-item"><a class="nav-link" href="docs.html">Документация</a></li>
<li class="nav-item"><a class="nav-link active" href="architecture.html">Архитектура</a></li>
<li class="nav-item"><a class="nav-link" href="download.html">Скачать</a></li>
<li class="nav-item"><a class="nav-link" href="community.html">Сообщество</a></li>
<li class="nav-item"><a class="nav-link" href="about.html">О проекте</a></li>
<li class="nav-item">
<a class="nav-link btn-gradient ms-lg-2" href="download.html">
<i class="fas fa-download me-1"></i> Начать
</a>
</li>
<li class="nav-item">
<button class="btn btn-sm theme-toggle" id="themeToggle">
<i class="fas fa-moon"></i>
</button>
</li>
</ul>
</div>
</div>
</nav>
<!-- Hero Section -->
<section class="hero-section d-flex align-items-center" style="padding-top: 120px; padding-bottom: 60px; min-height: 40vh;">
<div class="container">
<div class="row justify-content-center text-center">
<div class="col-lg-10">
<div class="animate-fade-in-up">
<h1 class="display-3 fw-bold mb-4">
<i class="fas fa-project-diagram text-primary me-3"></i>
Архитектура Протокола
</h1>
<p class="lead text-muted mb-4">
Глубокое погружение в техническую архитектуру Phantom Protocol: 5 слоев защиты,
распределенная маршрутизация и криптографическая безопасность
</p>
</div>
</div>
</div>
</div>
</section>
<!-- Main Content -->
<section class="py-5">
<div class="container">
<div class="row">
<!-- Sidebar Navigation -->
<div class="col-lg-3 mb-4">
<div class="sticky-top" style="top: 100px;">
<div class="card glass-card">
<div class="card-body">
<h5 class="card-title mb-3">
<i class="fas fa-list me-2"></i>Содержание
</h5>
<nav class="nav flex-column">
<a class="nav-link text-light" href="#overview">
<i class="fas fa-eye me-2"></i>Обзор
</a>
<a class="nav-link text-light" href="#layers">
<i class="fas fa-layer-group me-2"></i>5 Слоев Защиты
</a>
<a class="nav-link text-light" href="#routing">
<i class="fas fa-route me-2"></i>Маршрутизация
</a>
<a class="nav-link text-light" href="#dht">
<i class="fas fa-network-wired me-2"></i>DHT Система
</a>
<a class="nav-link text-light" href="#cryptography">
<i class="fas fa-shield-alt me-2"></i>Криптография
</a>
<a class="nav-link text-light" href="#comparison">
<i class="fas fa-balance-scale me-2"></i>Сравнение
</a>
<a class="nav-link text-light" href="#performance">
<i class="fas fa-tachometer-alt me-2"></i>Производительность
</a>
</nav>
</div>
</div>
</div>
</div>
<!-- Main Content Area -->
<div class="col-lg-9">
<!-- Overview Section -->
<div id="overview" class="mb-5">
<div class="card glass-card">
<div class="card-body p-4">
<h2 class="card-title mb-4">
<i class="fas fa-eye text-primary me-2"></i>
Обзор Архитектуры
</h2>
<p class="lead">
Phantom Protocol представляет собой многоуровневую систему обеспечения анонимности,
основанную на принципах децентрализации, криптографической защиты и распределенной маршрутизации.
</p>
<div class="row mt-4">
<div class="col-md-6 mb-3">
<div class="feature-card p-3 h-100">
<h5><i class="fas fa-network-wired text-success me-2"></i>Распределенная Архитектура</h5>
<p class="mb-0 small">Нет центральных серверов или точек контроля. Каждая нода является равноправным участником сети.</p>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="feature-card p-3 h-100">
<h5><i class="fas fa-layer-group text-info me-2"></i>Многослойная Защита</h5>
<p class="mb-0 small">5 независимых слоев безопасности создают множественные барьеры для атакующих.</p>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="feature-card p-3 h-100">
<h5><i class="fas fa-random text-warning me-2"></i>Динамическая Маршрутизация</h5>
<p class="mb-0 small">Маршруты меняются постоянно, предотвращая анализ трафика и корреляционные атаки.</p>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="feature-card p-3 h-100">
<h5><i class="fas fa-lock text-danger me-2"></i>Квантово-Устойчивое Шифрование</h5>
<p class="mb-0 small">Защита от квантовых компьютеров через решеточную криптографию и хеш-цепочки.</p>
</div>
</div>
</div>
<div class="alert alert-info mt-4">
<i class="fas fa-info-circle me-2"></i>
<strong>Философия дизайна:</strong> Безопасность через децентрализацию,
анонимность через избыточность, надежность через отсутствие доверия.
</div>
</div>
</div>
</div>
<!-- 5 Layers Section -->
<div id="layers" class="mb-5">
<div class="card glass-card">
<div class="card-body p-4">
<h2 class="card-title mb-4">
<i class="fas fa-layer-group text-primary me-2"></i>
5 Слоев Защиты
</h2>
<p class="mb-4">
Каждый слой обеспечивает независимую защиту, создавая оборону в глубину.
Компрометация одного слоя не приводит к раскрытию пользователя.
</p>
<!-- Layer 1 -->
<div class="layer-card mb-4 p-4">
<div class="d-flex align-items-start mb-3">
<div class="layer-number">1</div>
<div class="ms-3">
<h4 class="mb-2">Транспортный Слой</h4>
<span class="badge bg-primary">Transport Layer</span>
</div>
</div>
<p>
<strong>Функция:</strong> Обфускация сетевого трафика и защита от DPI (Deep Packet Inspection).
</p>
<ul>
<li><strong>TLS 1.3</strong> с имитацией обычного HTTPS трафика</li>
<li><strong>WebSocket tunneling</strong> для прохождения через файрволы</li>
<li><strong>Pluggable transports</strong>: obfs4, meek, snowflake</li>
<li><strong>Domain fronting</strong> через CDN сервисы</li>
<li><strong>Трафик padding</strong> для защиты от анализа размеров пакетов</li>
</ul>
<div class="mt-3">
<pre><code class="language-javascript">// Пример конфигурации транспорта
{
"transport": {
"type": "obfs4",
"bridge": "auto",
"cert": "...",
"iatMode": 1, // Inter-Arrival Time obfuscation
"padding": true
}
}</code></pre>
</div>
</div>
<!-- Layer 2 -->
<div class="layer-card mb-4 p-4">
<div class="d-flex align-items-start mb-3">
<div class="layer-number" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);">2</div>
<div class="ms-3">
<h4 class="mb-2">Слой Маршрутизации</h4>
<span class="badge" style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);">Routing Layer</span>
</div>
</div>
<p>
<strong>Функция:</strong> Многоходовая луковая маршрутизация через случайные ноды.
</p>
<ul>
<li><strong>3-5 hop routing</strong> через географически распределенные ноды</li>
<li><strong>Guard nodes</strong> защищают точку входа пользователя</li>
<li><strong>Exit nodes</strong> с политиками фильтрации</li>
<li><strong>Route rotation</strong> каждые 10 минут или по требованию</li>
<li><strong>Path selection</strong> на основе bandwidth, latency и reputation</li>
</ul>
<div class="mt-3 text-center">
<div class="routing-diagram p-3" style="background: rgba(102, 126, 234, 0.1); border-radius: 8px;">
<strong>Клиент</strong>
<i class="fas fa-arrow-right mx-2"></i>
<strong>Guard</strong>
<i class="fas fa-arrow-right mx-2"></i>
<strong>Middle 1</strong>
<i class="fas fa-arrow-right mx-2"></i>
<strong>Middle 2</strong>
<i class="fas fa-arrow-right mx-2"></i>
<strong>Exit</strong>
<i class="fas fa-arrow-right mx-2"></i>
<strong>Destination</strong>
</div>
</div>
</div>
<!-- Layer 3 -->
<div class="layer-card mb-4 p-4">
<div class="d-flex align-items-start mb-3">
<div class="layer-number" style="background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);">3</div>
<div class="ms-3">
<h4 class="mb-2">Криптографический Слой</h4>
<span class="badge" style="background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);">Cryptographic Layer</span>
</div>
</div>
<p>
<strong>Функция:</strong> Множественное шифрование и защита целостности данных.
</p>
<ul>
<li><strong>Onion encryption</strong>: каждый hop добавляет слой шифрования</li>
<li><strong>ChaCha20-Poly1305</strong> для симметричного шифрования</li>
<li><strong>X25519</strong> для обмена ключами (ECDH)</li>
<li><strong>Ed25519</strong> для цифровых подписей</li>
<li><strong>Kyber-768</strong> для пост-квантовой защиты</li>
</ul>
<div class="mt-3">
<pre><code class="language-plaintext">Original Data
↓ Encrypt with Exit key
[Layer 3: Exit encryption]
↓ Encrypt with Middle2 key
[Layer 2: Middle2 encryption]
↓ Encrypt with Middle1 key
[Layer 1: Middle1 encryption]
↓ Encrypt with Guard key
[Layer 0: Guard encryption]
→ Передача в сеть</code></pre>
</div>
</div>
<!-- Layer 4 -->
<div class="layer-card mb-4 p-4">
<div class="d-flex align-items-start mb-3">
<div class="layer-number" style="background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);">4</div>
<div class="ms-3">
<h4 class="mb-2">Слой Обнаружения</h4>
<span class="badge" style="background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);">Discovery Layer</span>
</div>
</div>
<p>
<strong>Функция:</strong> Распределенное обнаружение нод через DHT без центральных серверов.
</p>
<ul>
<li><strong>Kademlia DHT</strong> для поиска и хранения информации о нодах</li>
<li><strong>Bootstrap nodes</strong> жестко закодированы в клиенте</li>
<li><strong>Peer exchange</strong> между нодами для расширения списка</li>
<li><strong>Node reputation system</strong> на основе uptime и performance</li>
<li><strong>Sybil attack protection</strong> через proof-of-work и rate limiting</li>
</ul>
<div class="mt-3">
<pre><code class="language-javascript">// DHT запрос ноды
{
"method": "findNode",
"target": "a8f3c9e2...",
"k": 20, // возвращает 20 ближайших нод
"signature": "ed25519_sig..."
}</code></pre>
</div>
</div>
<!-- Layer 5 -->
<div class="layer-card mb-4 p-4">
<div class="d-flex align-items-start mb-3">
<div class="layer-number" style="background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);">5</div>
<div class="ms-3">
<h4 class="mb-2">Прикладной Слой</h4>
<span class="badge" style="background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);">Application Layer</span>
</div>
</div>
<p>
<strong>Функция:</strong> Анонимные сервисы и end-to-end защита приложений.
</p>
<ul>
<li><strong>Hidden services</strong> (.phantom адреса) с rendezvous points</li>
<li><strong>End-to-end encryption</strong> между клиентом и сервисом</li>
<li><strong>Stream isolation</strong> для разных приложений</li>
<li><strong>DNS over Phantom</strong> для предотвращения утечек DNS</li>
<li><strong>Application-level padding</strong> и timing obfuscation</li>
</ul>
</div>
<div class="alert alert-warning mt-4">
<i class="fas fa-exclamation-triangle me-2"></i>
<strong>Важно:</strong> Все слои работают независимо. Компрометация одного слоя не влияет на безопасность других.
</div>
</div>
</div>
</div>
<!-- Routing Section -->
<div id="routing" class="mb-5">
<div class="card glass-card">
<div class="card-body p-4">
<h2 class="card-title mb-4">
<i class="fas fa-route text-primary me-2"></i>
Система Маршрутизации
</h2>
<h4 class="mt-4">Выбор Пути (Path Selection)</h4>
<p>
Phantom использует сложный алгоритм выбора пути, учитывающий множество факторов:
</p>
<div class="table-responsive">
<table class="table table-dark table-hover">
<thead>
<tr>
<th>Фактор</th>
<th>Вес</th>
<th>Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td><i class="fas fa-tachometer-alt text-primary me-2"></i>Bandwidth</td>
<td>40%</td>
<td>Пропускная способность ноды</td>
</tr>
<tr>
<td><i class="fas fa-clock text-success me-2"></i>Latency</td>
<td>25%</td>
<td>Задержка соединения</td>
</tr>
<tr>
<td><i class="fas fa-star text-warning me-2"></i>Reputation</td>
<td>20%</td>
<td>История надежности</td>
</tr>
<tr>
<td><i class="fas fa-globe text-info me-2"></i>Geography</td>
<td>10%</td>
<td>Географическое разнообразие</td>
</tr>
<tr>
<td><i class="fas fa-chart-line text-danger me-2"></i>Uptime</td>
<td>5%</td>
<td>Время работы без сбоев</td>
</tr>
</tbody>
</table>
</div>
<h4 class="mt-4">Типы Нод</h4>
<div class="row">
<div class="col-md-4 mb-3">
<div class="card bg-dark h-100">
<div class="card-body">
<h5 class="text-success"><i class="fas fa-shield-alt me-2"></i>Guard Node</h5>
<p class="small mb-2">Точка входа в сеть. Знает IP пользователя, но не знает назначение.</p>
<ul class="small mb-0">
<li>Высокая стабильность</li>
<li>Долгосрочное соединение</li>
<li>Меняется раз в 2-3 месяца</li>
</ul>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card bg-dark h-100">
<div class="card-body">
<h5 class="text-info"><i class="fas fa-network-wired me-2"></i>Middle Node</h5>
<p class="small mb-2">Промежуточные ноды. Не знают ни источник, ни назначение.</p>
<ul class="small mb-0">
<li>Максимальная анонимность</li>
<li>Случайный выбор</li>
<li>Меняется каждые 10 минут</li>
</ul>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card bg-dark h-100">
<div class="card-body">
<h5 class="text-warning"><i class="fas fa-door-open me-2"></i>Exit Node</h5>
<p class="small mb-2">Точка выхода в интернет. Знает назначение, но не знает источник.</p>
<ul class="small mb-0">
<li>Фильтрация контента</li>
<li>Политики безопасности</li>
<li>Exit node families</li>
</ul>
</div>
</div>
</div>
</div>
<h4 class="mt-4">Circuit Building</h4>
<pre><code class="language-javascript">// Построение цепи маршрутизации
async function buildCircuit() {
// 1. Выбор Guard node
const guard = await selectGuardNode();
// 2. Установка соединения с Guard
const guardConnection = await connectToNode(guard);
// 3. Выбор Middle nodes через Guard
const middle1 = await selectMiddleNode(guardConnection);
const middle2 = await selectMiddleNode(guardConnection);
// 4. Выбор Exit node
const exit = await selectExitNode(guardConnection);
// 5. Создание цепи: Guard -> Middle1 -> Middle2 -> Exit
const circuit = await createCircuit([
guard, middle1, middle2, exit
]);
// 6. Обмен ключами с каждым hop
await exchangeKeys(circuit);
return circuit;
}</code></pre>
<div class="alert alert-info mt-4">
<i class="fas fa-lightbulb me-2"></i>
<strong>Совет:</strong> Для максимальной безопасности используйте настройку
<code>strictNodes</code> для контроля географии нод в вашем маршруте.
</div>
</div>
</div>
</div>
<!-- DHT Section -->
<div id="dht" class="mb-5">
<div class="card glass-card">
<div class="card-body p-4">
<h2 class="card-title mb-4">
<i class="fas fa-network-wired text-primary me-2"></i>
DHT Система (Distributed Hash Table)
</h2>
<p class="lead">
Phantom использует модифицированный Kademlia DHT для децентрализованного обнаружения нод
и хранения метаданных сети без центральных серверов.
</p>
<h4 class="mt-4">Архитектура DHT</h4>
<p>
Каждая нода в сети имеет уникальный 160-битный идентификатор (Node ID),
генерируемый как <code>SHA-1(публичный_ключ)</code>.
</p>
<div class="row mb-4">
<div class="col-md-6">
<h5><i class="fas fa-database text-success me-2"></i>Хранимые Данные</h5>
<ul>
<li>IP адреса и порты нод</li>
<li>Публичные ключи</li>
<li>Характеристики нод (bandwidth, flags)</li>
<li>Hidden service дескрипторы</li>
<li>Introduction points</li>
</ul>
</div>
<div class="col-md-6">
<h5><i class="fas fa-search text-info me-2"></i>Операции DHT</h5>
<ul>
<li><strong>FIND_NODE</strong> - поиск ближайших нод</li>
<li><strong>STORE</strong> - сохранение данных</li>
<li><strong>FIND_VALUE</strong> - получение данных</li>
<li><strong>PING</strong> - проверка доступности</li>
</ul>
</div>
</div>
<h4 class="mt-4">Расстояние в DHT (XOR Metric)</h4>
<p>
Kademlia использует XOR метрику для определения "расстояния" между нодами:
</p>
<pre><code class="language-javascript">// Вычисление расстояния между двумя Node ID
function distance(nodeId1, nodeId2) {
// XOR между двумя 160-битными ID
return nodeId1.xor(nodeId2);
}
// Пример: поиск 20 ближайших нод
async function findClosestNodes(targetId, k = 20) {
const closestNodes = [];
const queriedNodes = new Set();
// Начинаем с нод из routing table
let candidates = routingTable.getClosestNodes(targetId, k);
while (candidates.length > 0) {
const node = candidates.shift();
if (queriedNodes.has(node.id)) continue;
queriedNodes.add(node.id);
// Спрашиваем ноду о её ближайших соседях
const neighbors = await node.findNode(targetId);
// Добавляем новые кандидаты
for (const neighbor of neighbors) {
if (!queriedNodes.has(neighbor.id)) {
candidates.push(neighbor);
closestNodes.push(neighbor);
}
}
// Сортируем по расстоянию до targetId
closestNodes.sort((a, b) =>
distance(a.id, targetId) - distance(b.id, targetId)
);
// Оставляем только k ближайших
closestNodes.splice(k);
}
return closestNodes;
}</code></pre>
<h4 class="mt-4">K-Buckets (Routing Table)</h4>
<p>
Каждая нода поддерживает routing table из 160 k-buckets (k обычно = 20):
</p>
<div class="table-responsive">
<table class="table table-dark table-sm">
<thead>
<tr>
<th>Bucket #</th>
<th>Диапазон расстояний</th>
<th>Количество нод</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>2<sup>0</sup> - 2<sup>1</sup></td>
<td>≤ k (20)</td>
</tr>
<tr>
<td>1</td>
<td>2<sup>1</sup> - 2<sup>2</sup></td>
<td>≤ k (20)</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>159</td>
<td>2<sup>159</sup> - 2<sup>160</sup></td>
<td>≤ k (20)</td>
</tr>
</tbody>
</table>
</div>
<h4 class="mt-4">Защита от Атак</h4>
<div class="row">
<div class="col-md-6 mb-3">
<div class="card bg-danger bg-opacity-10 border-danger h-100">
<div class="card-body">
<h5 class="text-danger"><i class="fas fa-user-secret me-2"></i>Sybil Attack</h5>
<p class="small">Атакующий создает множество фейковых нод.</p>
<p class="small mb-0"><strong>Защита:</strong></p>
<ul class="small mb-0">
<li>Proof-of-Work для регистрации</li>
<li>Rate limiting на запросы</li>
<li>Reputation system</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="card bg-warning bg-opacity-10 border-warning h-100">
<div class="card-body">
<h5 class="text-warning"><i class="fas fa-moon me-2"></i>Eclipse Attack</h5>
<p class="small">Изоляция ноды от остальной сети.</p>
<p class="small mb-0"><strong>Защита:</strong></p>
<ul class="small mb-0">
<li>Множественные bootstrap nodes</li>
<li>Peer diversity requirements</li>
<li>Periodic refresh от разных IP</li>
</ul>
</div>
</div>
</div>
</div>
<div class="alert alert-success mt-4">
<i class="fas fa-check-circle me-2"></i>
DHT обеспечивает полную децентрализацию: нет центральных серверов,
которые можно заблокировать или скомпрометировать.
</div>
</div>
</div>
</div>
<!-- Cryptography Section -->
<div id="cryptography" class="mb-5">
<div class="card glass-card">
<div class="card-body p-4">
<h2 class="card-title mb-4">
<i class="fas fa-shield-alt text-primary me-2"></i>
Криптографическая Защита
</h2>
<h4 class="mt-3">Криптографические Примитивы</h4>
<div class="table-responsive">
<table class="table table-dark table-striped">
<thead>
<tr>
<th>Назначение</th>
<th>Алгоритм</th>
<th>Размер ключа</th>
<th>Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td>Симметричное шифрование</td>
<td><strong>ChaCha20-Poly1305</strong></td>
<td>256 бит</td>
<td>AEAD cipher, быстрее AES на мобильных</td>
</tr>
<tr>
<td>Обмен ключами</td>
<td><strong>X25519</strong></td>
<td>256 бит</td>
<td>Elliptic Curve Diffie-Hellman</td>
</tr>
<tr>
<td>Цифровые подписи</td>
<td><strong>Ed25519</strong></td>
<td>256 бит</td>
<td>EdDSA на Curve25519</td>
</tr>
<tr>
<td>Хеш-функции</td>
<td><strong>BLAKE3</strong></td>
<td>256 бит</td>
<td>Быстрее SHA-256, параллелизуемый</td>
</tr>
<tr>
<td>KDF</td>
<td><strong>HKDF-SHA256</strong></td>
<td>-</td>
<td>Вывод ключей из общего секрета</td>
</tr>
<tr>
<td>Пост-квантовая защита</td>
<td><strong>Kyber-768</strong></td>
<td>768 бит</td>
<td>NIST PQC finalist, решеточная криптография</td>
</tr>
</tbody>
</table>
</div>
<h4 class="mt-4">Гибридная Криптосистема</h4>
<p>
Phantom использует гибридную схему, комбинируя классическую и пост-квантовую криптографию:
</p>
<pre><code class="language-javascript">// Гибридный обмен ключами
async function hybridKeyExchange(peerPublicKey) {
// 1. Классический X25519 ECDH
const classicSharedSecret = x25519(
myPrivateKey,
peerPublicKey.x25519
);
// 2. Пост-квантовый Kyber KEM
const kyberCiphertext = kyber768.encapsulate(
peerPublicKey.kyber
);
const kyberSharedSecret = kyberCiphertext.sharedSecret;
// 3. Комбинируем оба секрета через KDF
const hybridSecret = hkdf({
ikm: concat(classicSharedSecret, kyberSharedSecret),
salt: "phantom-v1-hybrid-kdf",
info: concat(myPublicKey, peerPublicKey),
length: 32
});
// 4. Выводим ключи для шифрования/MAC
const keys = {
encKey: hkdfExpand(hybridSecret, "encryption", 32),
macKey: hkdfExpand(hybridSecret, "mac", 32)
};
return { keys, kyberCiphertext };
}</code></pre>
<h4 class="mt-4">Onion Encryption (Луковое Шифрование)</h4>
<p>
Каждый слой маршрутизации добавляет свой слой шифрования:
</p>
<pre><code class="language-javascript">// Создание луковой структуры
function createOnion(payload, circuit) {
let onion = payload;
// Шифруем в обратном порядке (от exit к guard)
for (let i = circuit.length - 1; i >= 0; i--) {
const node = circuit[i];
// Добавляем padding для скрытия размера
onion = addPadding(onion, CELL_SIZE);
// Шифруем с ключом ноды
onion = chacha20Poly1305Encrypt(
key: node.encryptionKey,
nonce: randomNonce(),
plaintext: onion,
ad: node.id // authenticated data
);
}
return onion;
}
// Каждая нода снимает один слой
function peelOnion(onion, myKey) {
const decrypted = chacha20Poly1305Decrypt(
key: myKey,
ciphertext: onion
);
return removePadding(decrypted);
}</code></pre>
<h4 class="mt-4">Perfect Forward Secrecy (PFS)</h4>
<p>
Phantom использует эфемерные ключи для каждой сессии. Компрометация долгосрочных ключей
не раскрывает предыдущие коммуникации.
</p>
<div class="card bg-info bg-opacity-10 border-info">
<div class="card-body">
<h6 class="text-info"><i class="fas fa-key me-2"></i>Иерархия ключей</h6>
<ol class="mb-0 small">
<li><strong>Identity Key</strong> (долгосрочный) - Ed25519, хранится зашифрованным</li>
<li><strong>Medium-term Key</strong> (неделя) - X25519, используется для DH</li>
<li><strong>Ephemeral Session Key</strong> (10 минут) - производный от DH</li>
<li><strong>Per-hop Keys</strong> (одноразовые) - для каждого hop в цепи</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<!-- Comparison Section -->
<div id="comparison" class="mb-5">
<div class="card glass-card">
<div class="card-body p-4">
<h2 class="card-title mb-4">
<i class="fas fa-balance-scale text-primary me-2"></i>
Сравнение с Другими Системами
</h2>
<div class="table-responsive">
<table class="table table-dark table-hover">
<thead>
<tr>
<th>Характеристика</th>
<th>Phantom Protocol</th>
<th>Tor</th>
<th>I2P</th>
<th>VPN</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Слои маршрутизации</strong></td>
<td class="text-success">3-5 hops</td>
<td class="text-success">3 hops</td>
<td class="text-warning">Переменное</td>
<td class="text-danger">1 hop</td>
</tr>
<tr>
<td><strong>Децентрализация</strong></td>
<td class="text-success">Полная (DHT)</td>
<td class="text-warning">Частичная (directory authorities)</td>
<td class="text-success">Полная</td>
<td class="text-danger">Централизованная</td>
</tr>
<tr>
<td><strong>Пост-квантовая защита</strong></td>
<td class="text-success">Да (Kyber-768)</td>
<td class="text-danger">Нет</td>
<td class="text-danger">Нет</td>
<td class="text-danger">Нет</td>
</tr>
<tr>
<td><strong>Транспортная обфускация</strong></td>
<td class="text-success">obfs4, meek, snowflake</td>
<td class="text-success">pluggable transports</td>
<td class="text-warning">Базовая</td>
<td class="text-warning">Зависит от провайдера</td>
</tr>
<tr>
<td><strong>Скорость</strong></td>
<td class="text-success">Высокая (оптимизированная маршрутизация)</td>
<td class="text-warning">Средняя</td>
<td class="text-warning">Средняя-Низкая</td>
<td class="text-success">Высокая</td>
</tr>
<tr>
<td><strong>Hidden services</strong></td>
<td class="text-success">.phantom домены</td>
<td class="text-success">.onion домены</td>
<td class="text-success">.i2p адреса</td>
<td class="text-danger">Нет</td>
</tr>
<tr>
<td><strong>Защита от корреляции трафика</strong></td>
<td class="text-success">Padding + timing randomization</td>
<td class="text-warning">Базовая</td>
<td class="text-success">Хорошая</td>
<td class="text-danger">Нет</td>
</tr>
<tr>
<td><strong>Устойчивость к цензуре</strong></td>
<td class="text-success">Высокая (domain fronting, DHT)</td>
<td class="text-success">Высокая (bridges)</td>
<td class="text-warning">Средняя</td>
<td class="text-warning">Средняя</td>
</tr>
<tr>
<td><strong>Модель угроз</strong></td>
<td class="text-success">Государственный уровень</td>
<td class="text-success">Государственный уровень</td>
<td class="text-success">Государственный уровень</td>
<td class="text-warning">Корпоративный/ISP</td>
</tr>
<tr>
<td><strong>Open Source</strong></td>
<td class="text-success">Да (MIT)</td>
<td class="text-success">Да (BSD)</td>
<td class="text-success">Да</td>
<td class="text-warning">Редко</td>
</tr>
</tbody>
</table>
</div>
<h4 class="mt-4">Когда использовать Phantom?</h4>
<div class="row">
<div class="col-md-6 mb-3">
<div class="card bg-success bg-opacity-10 border-success h-100">
<div class="card-body">
<h5 class="text-success"><i class="fas fa-check-circle me-2"></i>Лучший выбор</h5>
<ul class="small mb-0">
<li>Журналисты и активисты в авторитарных странах</li>
<li>Whistleblowers и источники конфиденциальной информации</li>
<li>Защита от квантовых компьютеров</li>
<li>Максимальная устойчивость к цензуре</li>
<li>Хостинг anonymous hidden services</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="card bg-warning bg-opacity-10 border-warning h-100">
<div class="card-body">
<h5 class="text-warning"><i class="fas fa-exclamation-triangle me-2"></i>Альтернативы</h5>
<ul class="small mb-0">
<li><strong>VPN</strong> - для простого обхода гео-блокировок</li>
<li><strong>Tor</strong> - более зрелая экосистема и больше exit nodes</li>
<li><strong>I2P</strong> - для peer-to-peer приложений внутри сети</li>
<li><strong>Proxy</strong> - для базовой приватности без особых требований</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Performance Section -->
<div id="performance" class="mb-5">
<div class="card glass-card">
<div class="card-body p-4">
<h2 class="card-title mb-4">
<i class="fas fa-tachometer-alt text-primary me-2"></i>
Производительность и Оптимизация
</h2>
<h4 class="mt-3">Метрики Производительности</h4>
<div class="row">
<div class="col-md-3 mb-3">
<div class="stat-card p-3 text-center">
<div class="stat-value text-success">~150ms</div>
<div class="stat-label">Средняя латентность</div>
<small class="text-muted">3-hop circuit</small>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="stat-card p-3 text-center">
<div class="stat-value text-info">50-100 Mbps</div>
<div class="stat-label">Пропускная способность</div>
<small class="text-muted">Типичная для guard node</small>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="stat-card p-3 text-center">
<div class="stat-value text-warning">2-3 сек</div>
<div class="stat-label">Построение circuit</div>
<small class="text-muted">Включая crypto handshake</small>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="stat-card p-3 text-center">
<div class="stat-value text-danger">~20 MB</div>
<div class="stat-label">Использование RAM</div>
<small class="text-muted">Phantom клиент</small>
</div>
</div>
</div>
<h4 class="mt-4">Оптимизации</h4>
<div class="accordion" id="optimizationsAccordion">
<!-- Optimization 1 -->
<div class="accordion-item bg-dark border-secondary">
<h2 class="accordion-header">
<button class="accordion-button bg-dark text-light collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#opt1">
<i class="fas fa-bolt text-warning me-2"></i>
Circuit Preemption
</button>
</h2>
<div id="opt1" class="accordion-collapse collapse" data-bs-parent="#optimizationsAccordion">
<div class="accordion-body">
<p>Phantom заранее строит несколько circuits в фоне, чтобы новые соединения были мгновенными.</p>
<pre><code class="language-javascript">// Настройка preemptive circuits
{
"circuits": {
"preemptive": {
"count": 3, // Количество готовых circuits
"renewBefore": 120 // Обновлять за 2 минуты до истечения
}
}
}</code></pre>
</div>
</div>
</div>
<!-- Optimization 2 -->
<div class="accordion-item bg-dark border-secondary">
<h2 class="accordion-header">
<button class="accordion-button bg-dark text-light collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#opt2">
<i class="fas fa-compress text-info me-2"></i>
Protocol Compression
</button>
</h2>
<div id="opt2" class="accordion-collapse collapse" data-bs-parent="#optimizationsAccordion">
<div class="accordion-body">
<p>Сжатие данных на прикладном уровне уменьшает размер передаваемых пакетов без компрометации безопасности.</p>
<ul>
<li>LZ4 для быстрого сжатия текстовых данных</li>
<li>Brotli для HTML/CSS/JS контента</li>
<li>Selective compression - только compressible data</li>
</ul>
</div>
</div>
</div>
<!-- Optimization 3 -->
<div class="accordion-item bg-dark border-secondary">
<h2 class="accordion-header">
<button class="accordion-button bg-dark text-light collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#opt3">
<i class="fas fa-microchip text-success me-2"></i>
Hardware Acceleration
</button>
</h2>
<div id="opt3" class="accordion-collapse collapse" data-bs-parent="#optimizationsAccordion">
<div class="accordion-body">
<p>Использование аппаратных инструкций CPU для криптографических операций:</p>
<ul>
<li><strong>AES-NI</strong> для AES операций (fallback)</li>
<li><strong>SHA extensions</strong> для хеш-функций</li>
<li><strong>AVX2/AVX-512</strong> для параллельных вычислений</li>
<li><strong>ARM Crypto Extensions</strong> на мобильных устройствах</li>
</ul>
</div>
</div>
</div>
<!-- Optimization 4 -->
<div class="accordion-item bg-dark border-secondary">
<h2 class="accordion-header">
<button class="accordion-button bg-dark text-light collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#opt4">
<i class="fas fa-stream text-primary me-2"></i>
Stream Multiplexing
</button>
</h2>
<div id="opt4" class="accordion-collapse collapse" data-bs-parent="#optimizationsAccordion">
<div class="accordion-body">
<p>Множественные TCP соединения мультиплексируются через один circuit, экономя overhead на построении новых.</p>
<pre><code class="language-javascript">// Один circuit обслуживает множество streams
const circuit = await buildCircuit();
// Создаем streams для разных приложений
const httpStream = circuit.openStream(80);
const httpsStream = circuit.openStream(443);
const dnsStream = circuit.openStream(53);</code></pre>
</div>
</div>
</div>
</div>
<h4 class="mt-4">Мониторинг Производительности</h4>
<p>Phantom предоставляет встроенные метрики для отслеживания производительности:</p>
<pre><code class="language-bash"># Просмотр метрик через CLI
phantom metrics
# Вывод:
# Circuits:
# Active: 3
# Total built: 127
# Avg build time: 2.3s
# Failure rate: 2.1%
#
# Bandwidth:
# Download: 5.2 MB/s
# Upload: 1.8 MB/s
# Total transferred: 1.2 GB
#
# Latency:
# Current: 145ms
# Average: 152ms
# P95: 280ms</code></pre>
<div class="alert alert-info mt-4">
<i class="fas fa-lightbulb me-2"></i>
<strong>Совет:</strong> Для максимальной производительности выбирайте guard node
географически близко к вам, а exit node близко к целевому серверу.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer -->
<!-- Единый Footer для всех страниц Phantom Protocol -->
<footer class="footer py-5 mt-5">
<div class="container">
<div class="row">
<!-- Колонка 1: Логотип и описание -->
<div class="col-lg-4 col-md-6 mb-4 mb-lg-0">
<h5 class="mb-3">
<i class="fas fa-ghost text-gradient"></i> Phantom Protocol
</h5>
<p class="text-muted">
Децентрализованная приватная сеть нового поколения с постквантовой криптографией.
</p>
<div class="social-links mt-3">
<a href="https://github.com/phantom-protocol" target="_blank" class="me-2">
<i class="fab fa-github"></i>
</a>
<a href="https://twitter.com/PhantomProtocol" target="_blank" class="me-2">
<i class="fab fa-twitter"></i>
</a>
<a href="https://t.me/phantomprotocol" target="_blank" class="me-2">
<i class="fab fa-telegram"></i>
</a>
<a href="https://discord.gg/phantom" target="_blank">
<i class="fab fa-discord"></i>
</a>
</div>
</div>
<!-- Колонка 2: Продукт -->
<div class="col-lg-2 col-md-6 mb-4 mb-lg-0">
<h6 class="mb-3">Продукт</h6>
<ul class="list-unstyled">
<li class="mb-2"><a href="architecture.html" class="footer-link">Архитектура</a></li>
<li class="mb-2"><a href="download.html" class="footer-link">Скачать</a></li>
<li class="mb-2"><a href="index.html#comparison" class="footer-link">Сравнение</a></li>
<li class="mb-2"><a href="index.html#demo" class="footer-link">Демо</a></li>
</ul>
</div>
<!-- Колонка 3: Ресурсы -->
<div class="col-lg-2 col-md-6 mb-4 mb-lg-0">
<h6 class="mb-3">Ресурсы</h6>
<ul class="list-unstyled">
<li class="mb-2"><a href="docs.html" class="footer-link">Документация</a></li>
<li class="mb-2"><a href="docs.html#api" class="footer-link">API Reference</a></li>
<li class="mb-2"><a href="docs.html#faq" class="footer-link">FAQ</a></li>
<li class="mb-2"><a href="https://github.com/phantom-protocol" target="_blank" class="footer-link">GitHub</a></li>
</ul>
</div>
<!-- Колонка 4: Сообщество -->
<div class="col-lg-2 col-md-6 mb-4 mb-lg-0">
<h6 class="mb-3">Сообщество</h6>
<ul class="list-unstyled">
<li class="mb-2"><a href="community.html" class="footer-link">Сообщество</a></li>
<li class="mb-2"><a href="https://github.com/phantom-protocol/discussions" target="_blank" class="footer-link">Обсуждения</a></li>
<li class="mb-2"><a href="https://t.me/PhantomProtocol" target="_blank" class="footer-link">Telegram</a></li>
<li class="mb-2"><a href="https://discord.gg/phantom" target="_blank" class="footer-link">Discord</a></li>
</ul>
</div>
<!-- Колонка 5: О проекте -->
<div class="col-lg-2 col-md-6">
<h6 class="mb-3">О проекте</h6>
<ul class="list-unstyled">
<li class="mb-2"><a href="about.html" class="footer-link">О нас</a></li>
<li class="mb-2"><a href="https://github.com/phantom-protocol/phantom/blob/main/LICENSE" target="_blank" class="footer-link">Лицензия MIT</a></li>
<li class="mb-2"><a href="https://github.com/phantom-protocol/phantom/blob/main/CONTRIBUTING.md" target="_blank" class="footer-link">Контрибуция</a></li>
<li class="mb-2"><a href="about.html" class="footer-link">Контакты</a></li>
</ul>
</div>
</div>
<hr class="my-4">
<!-- Footer Bottom -->
<div class="footer-bottom">
<div class="row align-items-center">
<div class="col-md-6">
<p class="mb-0">&copy; 2025 Phantom Protocol. Open Source под лицензией MIT.</p>
</div>
<div class="col-md-6 text-md-end">
<p class="mb-0">
<i class="fas fa-code"></i> Сделано с <i class="fas fa-heart text-danger"></i> для открытого интернета
</p>
</div>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<!-- Prism.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-javascript.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-bash.min.js"></script>
<!-- Main JavaScript -->
<script src="js/background.js" defer></script>
<script src="js/main.js" defer></script>
<!-- Smooth scroll for sidebar -->
<script>
document.querySelectorAll('.nav-link[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
</script>
</body>
</html>