Modul krypto-gost-tls13 inneholder implementeringen TLS 1.3 (RFC 8446 + RFC 9367) med GOST-kryptografi. Denne utgivelsen er den første versjonen av biblioteket og er klar for intern bruk.
En unik funksjon ved biblioteket er den rene Java-implementeringen. Alle kryptografiske operasjoner utføres ved hjelp av bibliotekets innebygde verktøy, uten eksterne avhengigheter.
Dette er en av de første implementeringene av TLS 1.3 med åpen kildekode med GOST i Java, så interoptesting har blitt utført i minst mulig grad.
Nedenfor er bibliotekets muligheter.
- Protokoller:
- Håndtrykk: fullt (klient/server), kort (PSK), gjensidig (mTLS).
- ALPN (RFC 7301) – Protokollforhandling på applikasjonslag (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Navneangivelse server for distribusjoner med flere leietakere.
- KeyUpdate (RFC 8446 §4.6.3) – oppdatering av trafikkrypteringsnøkler.
- Chiffer-suiter: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
- TLSTREE-ny nøkkelinnføring per post – endring av krypteringsnøkkelen for hver TLS-post.
- Fragmentering og sammenstilling av håndtrykk og poster (RFC 8446 §5.1).
- Gjenopptakelse av økt: PSK via NewSessionTicket (PskStore i minnet, engangsbruk).
- OCSP-stifting: serveren legger til OCSP-svaret i sertifikatet.
- Meldinger etter håndtrykk: NewSessionTicket (lagre for PSK).
- Kryptografi:
- Nøkkelplan: HKDF-Streebog (RFC 5869) over TLS 1.3 (RFC 8446 §7.1).
- Beskyttelse av arkiver: MGM-AEAD (Kuznyechik) med nonce-beskyttelse i henhold til RFC 8446 §5.3.
- Kortvarige nøkler slettes etter bruk.
- Sertifikater:
- X.509v3-parsing (GOST R 34.10-2012) — innebygd DER-parser.
- Valideringskjede: signaturer, DN (utsteder → emne), grunnleggende begrensninger, nøkkelbruk, utvidet nøkkel * bruk (serverAuth / clientAuth), pathLen.
- Vertsnavnsjekk: dNSName + iPAddress (RFC 6125).
- Verifisering av OCSP-svar (RFC 6960).
4.Транспорт:
- TlsTransport - grensesnitt.
- InMemoryTlsTransport – for tester og enkeltprosess-scenarier (kø i minnet).
- SocketTlsTransport — blokkerer I/O over java.net.Socket.
- ChannelTlsTransport – NIO SocketKanalbasert transport (blokkeringsmodus, avbrytbar).
- Trinnvis håndtrykk:
- TlsHandshakeEngine er en tilstandsmaskin for håndtrykk (frikoblet fra I/O). Den bruker TlsSession som en orkestrator og er egnet for integrering med JSSE (SSLEngine).
- ByteBuffer API:
- TlsRecord.protect/unprotect — ByteBuffer-overbelastning for nullkopiintegrasjon med NIO. Laster inn nøkler:
- Pkcs12Loader — leser PFX (PKCS#12) med PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Slutt på økten:
- close_notify - korrekt lukking i henhold til protokollen.
- Tørking av nøkkelmateriale ved lukking eller ved feil.
- Håndteringsvarsel: fatalt - umiddelbar lukking + sletting.
- Implementeringssikkerhet:
- Konstanttidssammenligninger for verify_data og PSK-bindere (beskyttelse mot tidsangrep)
- Sletter nøkkelmateriale: destroy() på alle objekter med nøkler (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), ved lukking, fatal varsling, unntak i håndtrykk
- DoS-beskyttelse: begrensninger på sertifikatkjedelengde (10), meldinger etter håndtrykk, poststørrelse.
- MGM nonce: MSB-en til den første byten fjernes for ICN (RFC 9058 §3, RFC 9367 §3.3).
- ECDHE-privatnøkkelen og håndtrykktranskriptet blir ødelagt etter at håndtrykket er fullført.
- HMAC-nøkkelmateriale slettes etter bruk (HkdfStreebog, KdfGostR3411_2012_256).
- restriksjoner:
- Kun gjenopptakelses-PSK (0-RTT og ekstern PSK støttes ikke).
- Kun psk_dhe_ke (ren PSK uten ECDHE støttes ikke).
- HelloRetryRequest (RFC 8446 §4.1.4) støttes ikke – bare én navngitt gruppe brukes (GC256A som standard).
- Kun GOST (ikke-GOST-krypteringspakker støttes ikke).
- Testing:
- Biblioteket inneholder kjente svartester fra RFC 9367 tillegg A.1 (L- og S-varianter) – hele nøkkelskjemaet, TLSTREE, AEAD og ECDHE. Det består også hele spekteret av KAT-tester.
- 4 integrasjonstester (selvinteroperabilitet) via ekte TCP-sockets.
- Fuzz-tester for parsere: TlsMessageParser (8 metoder), TlsDerParser (3 metoder), TlsOcspVerifier (1 metode), for å sikre sikkerhet og redusere angrepsvektoren på parsere.
- Arkitektoniske løsninger:
- TlsHandshakeEngine – tilstandsmaskin frakoblet fra I/O (for fremtidig JSSE-modul).
- ByteBuffer-overbelastning av TlsRecord.protect/unprotect for NIO/JSSE.
- TLSTREE-hurtigbuffer (TlsTreeCache) – omberegning av kun endrede nivåer (RFC 9367).
- InMemoryTlsTransport.Pair er et toveis par for tester og kommunikasjon mellom enkeltprosesser.
Biblioteket distribueres under en fri lisens.
Kilde: linux.org.ru
