Перейти к содержимому

Шифрование AGE

Шифрование AGE защищает конфиг прокси-подписки так, что только клиент с соответствующим секретным ключом может его прочитать. Даже если кто-то перехватит HTTPS-трафик или получит ссылку на подписку — он увидит только зашифрованные данные.

┌─────────────────────────────────────────────────────────────────┐
│ 1 · Генерация ключей (один раз, на стороне администратора) │
│ │
│ Методы генерации ключей указаны ниже │
│ │
│ AGE-SECRET-KEY-… (секретный) → клиенту (Prizrak-Box) │
│ age1… (публичный) → серверу (Remnawave) │
└───────────────────────┬─────────────────────────────────────────┘
Публичный ключ ──────────────────────► Remnawave (сервер)
Секретный ключ ──────────────────────► Prizrak-Box (клиент)
┌─────────────────────────────────────────────────────────────────┐
│ 2 · Remnawave (сервер подписок) │
│ │
│ Определяет запрос от Prizrak-Box по заголовку User-Agent │
│ Получает YAML-конфиг → шифрует через age1pq1… │
│ Отдаёт ASCII-armored .age файл │
└───────────────────────┬─────────────────────────────────────────┘
│ HTTPS (зашифрованные данные)
┌───────────────────────▼─────────────────────────────────────────┐
│ 3 · Prizrak-Box (клиент) │
│ │
│ Хранит AGE-SECRET-KEY-PQ-1… в настройках профиля │
│ age.SetGlobalSecretKeys(key) │
│ Расшифровывает armor → разбирает YAML → применяет профиль │
└─────────────────────────────────────────────────────────────────┘

Используется гибридная схема ML-KEM-768 + X25519 (age1pq1… / AGE-SECRET-KEY-PQ-1…). Классические ключи X25519 (age1… / AGE-SECRET-KEY-1…) также поддерживаются.


Способ генерации в Desktop версии Prizrak-Box

Настройки → Настройки ядра

Найдите раздел Генерация AGE ключей и нажмите Сгенерировать. Приложение отобразит публичный и секретный ключи. Скопируйте секретный ключ — он потребуется при настройке Remnawave.


В панели администратора Remnawave откройте раздел Response Rules и создайте новое правило. Добавьте его в начало списка — это обеспечит приоритет над остальными правилами.

Используйте следующий JSON как шаблон, подставив свои значения:

{
"name": "Prizrak-Box",
"description": "Prizrak-Box for Desktop & Android — age encrypted config",
"enabled": true,
"operator": "AND",
"conditions": [
{
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "Clash-Meta/Prizrak-Box (",
"caseSensitive": false
}
],
"responseType": "MIHOMO",
"responseModifications": {
"encryption": {
"method": "age1pq1",
"key": "age1pq1…"
}
}
}
ПолеЧто указывать
responseTypeMIHOMO — тип ответа mihomo-конфиг (шифрование задаётся отдельно через responseModifications)
responseModifications.encryption.methodage1pq1 для post-quantum ключа или age1 для классического X25519
responseModifications.encryption.keyПубличный ключ (age1pq1… или age1…), сгенерированный на предыдущем шаге

После включения шифрования отключите доступ к конфигу в открытом виде, чтобы клиенты не могли обойти шифрование напрямую через /mihomo.

В том же правиле ответа добавьте поле settings перед rules:

{
...
"settings": {
"disableSubscriptionAccessByPath": true
},
"rules": [
...
]
}

Это отключает доступ по путям /json, /stash, /mihomo для всех пользователей панели.


После генерации ключевой пары введите секретный ключ в клиент:

Prizrak-Box Desktop — нажмите иконку с ключиком в левом нижнем углу, чтобы активировать поле ввода секретного ключа, вставьте AGE-SECRET-KEY-PQ-1… и нажмите кнопку Подтвердить для добавления профиля.

Prizrak-Box Android — нажмите иконку с ключиком в правом верхнем углу, чтобы активировать поле ввода секретного ключа, вставьте AGE-SECRET-KEY-PQ-1… и нажмите иконку сохранения профиля.

Шифрование AGE