Prvé vydanie implementácie protokolu TLS 1.3 v jazyku Java s algoritmami GOST v súlade s RFC 9367

Modul crypto-gost-tls13 obsahuje implementáciu TLS 1.3 (RFC 8446 + RFC 9367) s kryptografiou GOST. Táto verzia je počiatočnou verziou knižnice a je pripravená na interné použitie.

Jedinečnou vlastnosťou knižnice je jej čistá implementácia v jazyku Java. Všetky kryptografické operácie sa vykonávajú pomocou vstavaných nástrojov knižnice bez akýchkoľvek externých závislostí.

Toto je jedna z prvých open source implementácií TLS 1.3 s GOST v Jave, takže interop testovanie bolo vykonané v minimálnom možnom rozsahu.

Nižšie sú uvedené možnosti knižnice.

  1. Protokoly:
  • Handshake: plný (klient/server), krátky (PSK), vzájomný (mTLS).
  • ALPN (RFC 7301) - Vyjednávanie protokolu aplikačnej vrstvy (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Indikácia názvu server pre nasadenia s viacerými nájomníkmi.
  • KeyUpdate (RFC 8446 §4.6.3) – aktualizácia šifrovacích kľúčov prevádzky.
  • Šifrovacie sady: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bitový), CryptoPro-B (512-bitový)
  • Prekľúčovanie TLSTREE pre každý záznam – zmena šifrovacieho kľúča pre každý záznam TLS.
  • Fragmentácia a opätovné zostavenie handshakeov a záznamov (RFC 8446 §5.1).
  • Obnovenie relácie: PSK cez NewSessionTicket (PskStore v pamäti, jednorazové použitie).
  • Zošívanie OCSP: server pripojí odpoveď OCSP k certifikátu.
  • Správy po nadviazaní spojenia: NewSessionTicket (okrem PSK).
  1. Kryptografia:
  • Kľúčový harmonogram: HKDF-Streebog (RFC 5869) cez TLS 1.3 (RFC 8446 §7.1).
  • Ochrana záznamu: MGM-AEAD (Kuznyechik) s nonce podľa RFC 8446 §5.3.
  • Prchavé kľúče sa po použití vymažú.
  1. Certifikáty:
  • Syntaktická analýza X.509v3 (GOST R 34.10-2012) – vstavaný analyzátor DER.
  • Overovací reťazec: podpisy, DN (vydavateľ → predmet), základné obmedzenia, použitie kľúča, rozšírené použitie kľúča (serverAuth / clientAuth), dĺžka cesty.
  • Kontrola názvu hostiteľa: dNSName + iPAddress (RFC 6125).
  • Overovanie odpovedí OCSP (RFC 6960).

4.doprava:

  • TlsTransport – rozhranie.
  • InMemoryTlsTransport – pre testy a scenáre s jedným procesom (front v pamäti).
  • SocketTlsTransport — blokovanie I/O cez java.net.Socket.
  • ChannelTlsTransport – prenos založený na NIO SocketChannel (blokovací režim, prerušiteľný).
  1. Postupné podávanie rúk:
  • TlsHandshakeEngine je stavový automat pre handshake (oddelený od I/O). Používa TlsSession ako orchestrátor a je vhodný na integráciu s JSSE (SSLEngine).
  1. Rozhranie API pre bajtový vyrovnávač:
  • TlsRecord.protect/unprotect — Preťaženia ByteBuffer pre integráciu s nulovou kópiou s NIO. Načítanie kľúčov:
  • Pkcs12Loader — čítanie PFX (PKCS#12) s PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Koniec relácie:
  • close_notify - správne zatvorenie podľa protokolu.
  • Zotretie materiálu kľúča pri zatváraní alebo chybe.
  • Správa upozornenia: fatálna - okamžité zatvorenie + vymazanie.
  1. Bezpečnosť implementácie:
  • Porovnávania v konštantnom čase pre viazané moduly verify_data a PSK (ochrana pred útokmi na časovanie)
  • Vymazanie materiálu kľúča: destroy() na všetkých objektoch s kľúčmi (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), pri zatvorení, fatálnej výstrahe, výnimke pri handshake
  • Ochrana proti útokom DoS: limity dĺžky reťazca certifikátov (10), správy po nadviazaní spojenia, veľkosť záznamu.
  • MGM nonce: MSB prvého bajtu sa vymaže pre ICN (RFC 9058 §3, RFC 9367 §3.3).
  • Súkromný kľúč ECDHE a prepis handshake sa po dokončení handshake zničia.
  • Materiál kľúča HMAC sa po použití vymaže (HkdfStreebog, KdfGostR3411_2012_256).
  1. obmedzenia:
  • Iba obnovenie PSK (0-RTT a externé PSK nie sú podporované).
  • Iba psk_dhe_ke (čistý PSK bez ECDHE nie je podporovaný).
  • Funkcia HelloRetryRequest (RFC 8446 §4.1.4) nie je podporovaná – používa sa iba jedna pomenovaná skupina (predvolene GC256A).
  • Iba GOST (šifrovacie sady iné ako GOST nie sú podporované).
  1. Testovanie:
  • Knižnica obsahuje testy so známymi odpoveďami z dodatku A.1 k RFC 9367 (varianty L a S) – kompletný rozvrh kľúčov, TLSTREE, AEAD a ECDHE. Taktiež spĺňa všetky požiadavky na testy KAT.
  • 4 integračné testy (self-interop) cez skutočné TCP sockety.
  • Fuzz testy pre parsery: TlsMessageParser (8 metód), TlsDerParser (3 metódy), TlsOcspVerifier (1 metóda) na zaistenie bezpečnosti a zníženie vektora útoku na parsery.
  1. Architektonické riešenia:
  • TlsHandshakeEngine - stavový automat oddelený od I/O (pre budúci JSSE modul).
  • Preťaženia ByteBuffer funkcií TlsRecord.protect/unprotect pre NIO/JSSE.
  • Vyrovnávacia pamäť TLSTREE (TlsTreeCache) - prepočet iba zmenených úrovní (RFC 9367).
  • InMemoryTlsTransport.Pair je obojsmerný pár pre testy a komunikáciu medzi jednotlivými procesmi.

Knižnica je distribuovaná na základe bezplatnej licencie.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster