The TCP fallback now does a full outer TLS handshake (tokio-rustls 0.26 over
rustls 0.23, ring provider) before the Aura proto handshake, exactly like the
QUIC backend: on the wire it is indistinguishable from genuine HTTPS until the
inner Aura mutual-auth handshake starts. Removes v1's "light HTTP masquerade"
limitation; the real security boundary remains the inner PQ handshake.
- aura-transport::tcp: dropped the HTTP/1.1 preamble helpers and TcpOpts
fields (masquerade, host, user_agent, server_header). New flow:
TlsAcceptor::accept (server) / TlsConnector::connect (client) →
tokio::io::split(TlsStream) → server_handshake / client_handshake → Session.
Client reuses crate::quic::AcceptAnyServerCert (outer SNI not authenticated;
inner handshake is the security boundary). Outer server cert auto-sourced
from proto_cfg.server_cert_pem (no API change for the CLI's bind).
- ALPN default: ["h2", "http/1.1"] (DEFAULT_TCP_ALPN, exported).
- TcpOpts: now just { alpn: Option<Vec<Vec<u8>>> }.
- TcpClient::connect gains an outer-SNI &str param; DialConfig.sni passes it
through (separate from the inner proto_cfg.server_name).
- tokio-rustls 0.26 added as a transport-local dependency (not workspace).
CLI updates: removed dead host/user_agent/server_header wiring; mask rotation
no longer touches TCP outer parameters (TLS doesn't have a Host header on
the wire). [transport] masquerade kept as a no-op for back-compat with old
configs (documented).
3 new tcp_loopback tests (default ALPN end-to-end, custom ALPN, outer SNI
mismatch still connects = proves accept-any is in effect). Workspace: 142
tests passed (+1), clippy -D warnings clean, fmt clean.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Aura VPN
Aura — гибридный пост-квантовый VPN на Rust. Внутреннее рукопожатие гибридное и взаимно аутентифицированное (X25519 + ML-KEM-768 по FIPS 203 со взаимной X.509-проверкой), данные шифруются ChaCha20-Poly1305 с explicit-nonce, обфускация — паддинг датаграмм под «корзины» HTTPS-размеров.
На проводе по умолчанию идёт собственный UDP-транспорт Aura (без QUIC и без внешнего TLS на
основном пути). Если сеть режет UDP, клиент автоматически переключается на TCP/443 или QUIC
(мимикрия HTTP/3), последовательно пробуя транспорты из настраиваемого [transport] order. На
стороне клиента есть TUN-интерфейс и split-tunnel (longest-prefix matching по CIDR + правила по
доменам), которым можно управлять на лету через admin-сокет.
Крейты
| Крейт | Что внутри |
|---|---|
aura-crypto |
Гибридный KEM (X25519 + ML-KEM-768), HKDF, AEAD ChaCha20-Poly1305, helpers |
aura-pki |
Самоподписанный CA, выпуск server/client-сертификатов, проверка, плоский CRL |
aura-proto |
Рукопожатие Aura, фрейминг, датаграмный/потоковый кодек данных |
aura-transport |
Транспорты: собственный UDP, TCP/443, QUIC; единый dialer с handover |
aura-tunnel |
TUN, маршрутизатор, split-tunnel (CIDR + домены), DNS-резолв в host-маршруты |
aura-cli |
Бинарь aura: pki, server, client, route, status, bench-crypto |
Быстрый старт
Подъём сервера на удалённой машине и подключение клиента описаны в
docs/deployment.md. Это основная точка входа для развёртывания.
Документация
docs/deployment.md— руководство по развёртыванию (сервер + клиент)docs/protocol.md— wire-протокол: рукопожатие, кадры, выбор транспортаdocs/pki.md— модель PKI, командыaura pki, верификация и CRLdocs/split-tunnel.md— split-tunnel, статика и admin-сокет на летуdocs/sing-box.md— план интеграции с sing-box (для мобильных клиентов)