První vydání implementace protokolu TLS 1.3 v Javě s algoritmy GOST v souladu s RFC 9367

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

Unikátní vlastností knihovny je její čistá implementace v Javě. Všechny kryptografické operace se provádějí pomocí vestavěných nástrojů knihovny, bez jakýchkoli externích závislostí.

Toto je jedna z prvních open source implementací TLS 1.3 s GOST v Javě, takže interop testování bylo provedeno v minimálním možném rozsahu.

Níže jsou uvedeny možnosti knihovny.

  1. Protokoly:
  • Handshake: plný (klient/server), krátký (PSK), vzájemný (mTLS).
  • ALPN (RFC 7301) - Vyjednávání protokolu aplikační vrstvy (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Indikace názvu server pro nasazení s více nájemci.
  • KeyUpdate (RFC 8446 §4.6.3) – aktualizace šifrovacích klíčů provozu.
  • Šifrovací sady: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256bitový), CryptoPro-B (512bitový)
  • Překlíčování TLSTREE pro každý záznam – změna šifrovacího klíče pro každý záznam TLS.
  • Fragmentace a opětovné sestavení handshakes a záznamů (RFC 8446 §5.1).
  • Obnovení relace: PSK přes NewSessionTicket (PskStore v paměti, jednorázové použití).
  • Sešívání OCSP: serveru připojí odpověď OCSP k certifikátu.
  • Zprávy po navázání spojení: NewSessionTicket (s výjimkou PSK).
  1. Kryptografie:
  • Klíčový harmonogram: HKDF-Streebog (RFC 5869) přes TLS 1.3 (RFC 8446 §7.1).
  • Ochrana záznamu: MGM-AEAD (Kuznyechik) s nonce dle RFC 8446 §5.3.
  • Dočasné klíče se po použití vymažou.
  1. Certifikáty:
  • Syntaktická analýza X.509v3 (GOST R 34.10-2012) — vestavěný analyzátor DER.
  • Ověřovací řetězec: podpisy, DN (vydavatel → subjekt), základní omezení, použití klíče, rozšířené použití klíče (serverAuth / clientAuth), délka cesty.
  • Kontrola názvu hostitele: dNSName + iPAddress (RFC 6125).
  • Ověřování odpovědí OCSP (RFC 6960).

4.Doprava:

  • TlsTransport - rozhraní.
  • InMemoryTlsTransport – pro testy a scénáře s jedním procesem (fronta v paměti).
  • SocketTlsTransport — blokování I/O přes java.net.Socket.
  • ChannelTlsTransport – přenos založený na NIO SocketChannel (blokovací režim, přerušitelný).
  1. Postupné podání ruky:
  • TlsHandshakeEngine je stavový automat pro handshake (oddělený od I/O). Používá TlsSession jako orchestrátor a je vhodný pro integraci s JSSE (SSLEngine).
  1. Rozhraní API pro ByteBuffer:
  • TlsRecord.protect/unprotect — Přetížení ByteBufferu pro integraci s nulovou kopií pomocí NIO. Načítání klíčů:
  • Pkcs12Loader — čtení PFX (PKCS#12) s PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Konec sezení:
  • close_notify - správné zavření dle protokolu.
  • Otření materiálu klíče při zavírání nebo chybě.
  • Způsob manipulace: fatální - okamžité zavření + smazání.
  1. Zabezpečení implementace:
  • Porovnání v konstantním čase pro bindery verify_data a PSK (ochrana proti útokům na časování)
  • Mazání materiálu klíče: destroy() na všech objektech s klíči (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), při zavření, fatálním poplachu, výjimce při handshake
  • Ochrana proti útokům DoS: omezení délky řetězce certifikátů (10), zprávy po navázání kontaktu (po handshake), velikost záznamu.
  • MGM nonce: MSB prvního bajtu je vymazán pro ICN (RFC 9058 §3, RFC 9367 §3.3).
  • Soukromý klíč ECDHE a přepis handshake jsou po dokončení handshake zničeny.
  • Materiál klíče HMAC se po použití vymaže (HkdfStreebog, KdfGostR3411_2012_256).
  1. Omezení:
  • Pouze obnovení PSK (0-RTT a externí PSK nejsou podporovány).
  • Pouze psk_dhe_ke (čistý PSK bez ECDHE není podporován).
  • HelloRetryRequest (RFC 8446 §4.1.4) není podporován - používá se pouze jedna pojmenovaná skupina (standardně GC256A).
  • Pouze GOST (šifrovací sady jiné než GOST nejsou podporovány).
  1. Testování:
  • Knihovna obsahuje testy se známými odpověďmi z RFC 9367, dodatek A.1 (varianty L a S) – kompletní klíčový plán, TLSTREE, AEAD a ECDHE. Také splňuje všechny požadavky na testy KAT.
  • 4 integrační testy (self-interop) přes reálné TCP sockety.
  • Fuzz testy pro parsery: TlsMessageParser (8 metod), TlsDerParser (3 metody), TlsOcspVerifier (1 metoda) pro zajištění bezpečnosti a snížení vektoru útoku na parsery.
  1. Architektonická řešení:
  • TlsHandshakeEngine - stavový automat oddělený od I/O (pro budoucí JSSE modul).
  • Přetížení ByteBuffer funkcí TlsRecord.protect/unprotect pro NIO/JSSE.
  • TLSTREE cache (TlsTreeCache) - přepočet pouze změněných úrovní (RFC 9367).
  • InMemoryTlsTransport.Pair je obousměrný pár pro testy a komunikaci mezi jednotlivými procesy.

Knihovna je šířena pod volnou licencí.

Zdroj: linux.org.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster