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.
- 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).
- 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žú.
- 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ý).
- 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).
- 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.
- 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.
- 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).
- 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é).
- 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.
- 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
