Den første utgivelsen av TLS 1.3-protokollimplementeringen i Java med GOST-algoritmer i samsvar med RFC 9367

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.

  1. 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).
  1. 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.
  1. 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).
  1. 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).
  1. 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.
  1. 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.
  1. 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).
  1. 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).
  1. 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.
  1. 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

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster