Зачем
Сейчас Reality использует X25519 (классический ECDH). Это надёжно сегодня, но уязвимо к harvest-now-decrypt-later атаке: пробер записывает зашифрованный трафик и расшифровывает его лет через 5-10, когда появятся достаточно мощные квантовые компьютеры (CRQC). Особенно актуально для пользователей в авторитарных режимах — записанный трафик может всплыть позже.
XRAY с какой-то версии (надо проверить) поддерживает ML-DSA65 — post-quantum signature scheme, стандартизированная NIST в 2024. Команда xray mldsa65 генерирует пары Seed/Verify, которые подставляются в Reality realitySettings.
Профит спорный (РКН пока нет CRQC), но это бесплатный hardening — ключ генерится разово, runtime-overhead нулевой.
Подсмотрено в xVRVx/autoXRAY:
key_mldsa65=\$(xray mldsa65)
seed_mldsa65=\$(echo \"\$key_mldsa65\" | awk -F': ' '/Seed/ {print \$2}')
verify_mldsa65=\$(echo \"\$key_mldsa65\" | awk -F': ' '/Verify/ {print \$2}')
Что сделать
research (BLOCKER до начала работы)
- Проверить, что
xray mldsa65 есть в текущей stable-версии xray-core, которую устанавливает наш installer.
- Прочитать актуальные xray-docs про схему — куда подставлять Seed/Verify в
realitySettings (Seed = privateKey-аналог, Verify = publicKey-аналог + клиентский publicKey/pbk).
- Проверить, что популярные клиенты (Happ, v2rayN, v2rayTun, Shadowrocket) уже умеют ML-DSA65. Это критично — если клиент не понимает, подключение провалится.
реализация (если research OK)
scripts/lib/reality.sh → generate_reality_keypair():
generate_reality_keypair() {
if [[ \"\$REALITY_PQ\" == \"Y\" ]]; then
local out=\$(xray mldsa65)
REALITY_PRIVATE_KEY=\$(echo \"\$out\" | awk -F': ' '/Seed/ {print \$2}')
REALITY_PUBLIC_KEY=\$(echo \"\$out\" | awk -F': ' '/Verify/ {print \$2}')
else
local out=\$(xray x25519)
# ... как сейчас ...
fi
}
В setup-exit добавить prompt: «Использовать post-quantum ключи (ML-DSA65)? [N]».
update-скрипты
update-exit.sh / update-relay.sh должны сохранять существующий тип ключа (детектить по длине Seed/Verify vs X25519). Не трогать у тех, у кого X25519, не пытаться upgrade'ить — это сломает существующих клиентов.
Готово, когда
- Research-блок: подтверждено, что N% клиентов поддерживают ML-DSA65
- Опциональный setup-flag работает; defaults на X25519
- E2E на тестовом сервере с поддерживающим клиентом
- Update-скрипты не ломают X25519-серверы
Риск-скрин
Если клиенты не поддерживают ML-DSA65 на момент v1.10.0 — issue парковать в v1.11.0 / v1.12.0, дождаться экосистемы. Не делать default'ом, пока не пройдёт год после релиза в xray.
Зачем
Сейчас Reality использует X25519 (классический ECDH). Это надёжно сегодня, но уязвимо к harvest-now-decrypt-later атаке: пробер записывает зашифрованный трафик и расшифровывает его лет через 5-10, когда появятся достаточно мощные квантовые компьютеры (CRQC). Особенно актуально для пользователей в авторитарных режимах — записанный трафик может всплыть позже.
XRAY с какой-то версии (надо проверить) поддерживает ML-DSA65 — post-quantum signature scheme, стандартизированная NIST в 2024. Команда
xray mldsa65генерирует парыSeed/Verify, которые подставляются в Reality realitySettings.Профит спорный (РКН пока нет CRQC), но это бесплатный hardening — ключ генерится разово, runtime-overhead нулевой.
Подсмотрено в
xVRVx/autoXRAY:Что сделать
research (BLOCKER до начала работы)
xray mldsa65есть в текущей stable-версии xray-core, которую устанавливает наш installer.realitySettings(Seed = privateKey-аналог, Verify = publicKey-аналог + клиентский publicKey/pbk).реализация (если research OK)
scripts/lib/reality.sh→generate_reality_keypair():В setup-exit добавить prompt: «Использовать post-quantum ключи (ML-DSA65)? [N]».
update-скрипты
update-exit.sh/update-relay.shдолжны сохранять существующий тип ключа (детектить по длине Seed/Verify vs X25519). Не трогать у тех, у кого X25519, не пытаться upgrade'ить — это сломает существующих клиентов.Готово, когда
Риск-скрин
Если клиенты не поддерживают ML-DSA65 на момент v1.10.0 — issue парковать в v1.11.0 / v1.12.0, дождаться экосистемы. Не делать default'ом, пока не пройдёт год после релиза в xray.