The first release of the TLS 1.3 protocol implementation in Java with GOST algorithms compliant with RFC 9367

Modul crypto-gost-tls13 obsahuje implementaci TLS 1.3 (RFC 8446 + RFC 9367) s GOST kryptografií. Tato verze je počáteční verzí knihovny a je připravena pro interní použití.

Hlavní vlastností knihovny je implementace v čisté Javě. Všechny kryptografické operace jsou prováděny vestavěnými prostředky knihovny — bez externích závislostí.

Toto je jedno z prvních otevřených implementací TLS 1.3 s GOST na Javě, proto bylo interop testování provedeno v minimálně dostupném rozsahu.

Níže jsou uvedeny možnosti knihovny.

  1. Protokoly:
  • Handshake: plný (client/server), zkrácený (PSK), vzájemný (mTLS).
  • ALPN (RFC 7301) — dohodnutí protokolu aplikační vrstvy (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) — specifikace názvu serveru pro multi-tenant nasazení.
  • KeyUpdate (RFC 8446 §4.6.3) — aktualizace klíčů pro šifrování provozu.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Per-record TLSTREE re-keying — změna klíče šifrování pro každou TLS zprávu.
  • Fragmentace a sestavení handshake a záznamů (RFC 8446 §5.1).
  • Obnovení relace: PSK prostřednictvím NewSessionTicket (PskStore v paměti, jednorázové použití).
  • OCSP stapling: server připojuje OCSP odpověď k certifikátu.
  • Post-handshake zprávy: NewSessionTicket (uchování pro PSK).
  1. Kryptografie:
  • Key schedule: HKDF-Streebog (RFC 5869) podle schématu TLS 1.3 (RFC 8446 §7.1).
  • Ochrana záznamů: MGM-AEAD (Kuznyechik) s nonce podle RFC 8446 §5.3.
  • Efemérní klíče jsou vymazány po použití.
  1. Certifikáty:
  • Parsing X.509v3 (GOST R 34.10-2012) — vestavěný DER parser.
  • Validace řetězce: podpisy, DN (issuer → subject), Basic Constraints, Key Usage, Extended Key * Usage (serverAuth / clientAuth), pathLen.
  • Kontrola hostname: dNSName + iPAddress (RFC 6125).
  • Verifikace OCSP odpovědí (RFC 6960).

4.Transport:

  • TlsTransport — rozhraní.
  • InMemoryTlsTransport — pro testování a jednou procesní scénáře (in-memory fronta).
  • SocketTlsTransport — blokující I/O přes java.net.Socket.
  • ChannelTlsTransport — transport založený na SocketChannel NIO (blokující režim, přerušitelné).
  1. Krokový handshake:
  • TlsHandshakeEngine — stavový stroj pro handshake (odpojený od I/O). Používá TlsSession jako orchestrátor; je vhodný pro integraci s JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — přetížení ByteBuffer pro zero-copy integraci s NIO. Načítání klíčů:
  • Pkcs12Loader — čtení PFX (PKCS#12) s PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Ukončení relace:
  • close_notify — správné uzavření podle protokolu.
  • Vymazání klíčového materiálu při uzavření nebo chybě.
  • Zpracování alertu: fatal — okamžité uzavření + vymazání.
  1. Bezpečnost implementace:
  • Constant-time porovnání pro verify_data a PSK binders (ochrana proti timing attacks)
  • Zničení klíčového materiálu: destroy() na všech objektech s klíči (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), při uzavření, fatálním upozornění, výjimce v handshake
  • Ochrana proti DoS: limity na délku řetězce certifikátů (10), post-handshake zprávy, velikost záznamů.
  • MGM nonce: MSB prvního bytu je vymazán pro ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE soukromý klíč a transkript handshake jsou zničeny po dokončení handshake.
  • HMAC klíčový materiál je vymazán po použití (HkdfStreebog, KdfGostR3411_2012_256).
  1. Omezení:
  • Pouze resumption PSK (0-RTT a external PSK nejsou podporovány).
  • Pouze psk_dhe_ke (čistý PSK bez ECDHE není podporován).
  • HelloRetryRequest (RFC 8446 §4.1.4) není podporováno — používá se pouze jedna pojmenovaná skupina (GC256A jako výchozí).
  • Pouze GOST (cipher suites non-GOST nejsou podporovány).
  1. Testování:
  • Knihovna obsahuje Known Answer Tests z RFC 9367 Příloha A.1 (varianty L a S) — kompletní key schedule, TLSTREE, AEAD, ECDHE. A prochází kompletní spektrem KAT testů.
  • 4 integrační testy (self-interop) přes skutečné TCP sokety.
  • Fuzzing testy pro parzery: TlsMessageParser (8 metod), TlsDerParser (3 metody), TlsOcspVerifier (1 metoda), pro zajištění bezpečnosti a snížení vektorů útoků na parzery.
  1. Architektonická řešení:
  • TlsHandshakeEngine — stavový stroj, odpojený od I/O (pro budoucí modul JSSE).
  • ByteBuffer přetížení TlsRecord.protect/unprotect pro NIO/JSSE.
  • TLSTREE cache (TlsTreeCache) — přepočet pouze změněných úrovní (RFC 9367).
  • InMemoryTlsTransport.Pair — obousměrný pár pro testy a jednoprocesní interakci.

Knihovna je distribuována pod svobodnou licencí.

Zdroj: linux.org.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster