Компоненты ВПН-шифрования
Полный ВПН-сетап юзает не одну криптографию, а несколько:
- Symmetric cipher — шифрует сам трафик (AES, ChaCha20).
- Asymmetric crypto — для key exchange и authentication (Curve25519, RSA, ECDSA).
- Hash function — для целостности и key derivation (SHA-2, BLAKE2).
- MAC / AEAD — для authenticated encryption (GCM, Poly1305).
Symmetric ciphers
AES-256-GCM
Advanced Encryption Standard, 256-bit ключ, Galois Counter Mode. Дефолт во многих ВПН (включая OpenVPN). AES-NI инструкции в современных x86-CPU делают его очень быстрым.
ChaCha20-Poly1305
ChaCha20 — stream cipher от Daniel Bernstein. Poly1305 — authenticator. Вместе — AEAD construction. Дефолт в WireGuard. Быстрее AES на CPU без AES-NI (большинство ARM/мобильных).
Key exchange
Diffie-Hellman (DH)
Классический алгоритм — две стороны обмениваются публичными ключами, выводят общий secret. Modern варианты:
- ECDHE — Elliptic Curve DH Ephemeral. Юзается в OpenVPN/TLS.
- Curve25519 — конкретная elliptic curve. WireGuard.
"Ephemeral" — ключ новый каждую сессию (даёт Perfect Forward Secrecy).
Authentication
Как стороны убеждаются что друг друга не имперсонируют:
- Pre-shared keys (PSK) — оба знают один секрет. Просто, но key distribution — проблема.
- Public-key authentication — каждая сторона имеет key pair, аутентифицирует через signature. Юзается в WireGuard, OpenVPN cert-based.
- Certificates (X.509) — public keys подписанные доверенным CA. Юзается в OpenVPN/TLS.
Authenticated encryption (AEAD)
Modern best practice — шифр + authentication в одной операции. Защищает от tampering. Юзается:
- AES-256-GCM — AEAD mode of AES.
- ChaCha20-Poly1305 — AEAD construction.
Старые не-AEAD варианты (AES-CBC + HMAC) технически работают, но AEAD проще и безопаснее.
Perfect Forward Secrecy (PFS)
Кpитично для ВПН: компрометация long-term key (типа private key сервера) НЕ должна позволить расшифровать прошлые сессии.
Реализуется через ephemeral key exchange — каждая сессия имеет свой ephemeral key. Long-term ключ юзается только для authentication, не для шифрования.
WireGuard и modern OpenVPN setups имеют PFS by default.
Что юзает ClownVPN
WireGuard mode (default)
- Cipher: ChaCha20-Poly1305.
- Key exchange: Curve25519.
- Hash: BLAKE2s.
- Authentication: public-key (Noise framework).
- PFS: yes (ephemeral keys).
OpenVPN mode (fallback)
- Cipher: AES-256-GCM.
- Key exchange: ECDHE (X25519 или P-256).
- Hash: SHA-256.
- Authentication: TLS 1.3 cert-based.
- PFS: yes.