Den første udgivelse af TLS 1.3-protokolimplementeringen i Java med GOST-algoritmer i overensstemmelse med RFC 9367

Modul krypto-gost-tls13 indeholder implementeringen TLS 1.3 (RFC 8446 + RFC 9367) med GOST-kryptografi. Denne udgivelse er den første version af biblioteket og er klar til intern brug.

En unik egenskab ved biblioteket er dets rene Java-implementering. Alle kryptografiske operationer udføres ved hjælp af bibliotekets indbyggede værktøjer uden eksterne afhængigheder.

Dette er en af ​​de første open source-implementeringer af TLS 1.3 med GOST i Java, så interop-testning er blevet udført i det mindst mulige omfang.

Nedenfor er bibliotekets muligheder.

  1. Protokoller:
  • Handshake: fuldt (klient/server), kort (PSK), gensidigt (mTLS).
  • ALPN (RFC 7301) - Protokolforhandling på applikationslag (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Navneangivelse server til implementeringer med flere lejere.
  • KeyUpdate (RFC 8446 §4.6.3) – opdatering af trafikkrypteringsnøgler.
  • Cipher-suiter: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • TLSTREE-omkodning per post — ændring af krypteringsnøglen for hver TLS-post.
  • Fragmentering og gensamling af handshakes og optegnelser (RFC 8446 §5.1).
  • Genoptagelse af session: PSK via NewSessionTicket (PskStore i hukommelsen, til engangsbrug).
  • OCSP-hæftning: server tilføjer OCSP-svaret til certifikatet.
  • Beskeder efter handshake: NewSessionTicket (gem til PSK).
  1. Kryptografi:
  • Nøgleplan: HKDF-Streebog (RFC 5869) over TLS 1.3 (RFC 8446 §7.1).
  • Beskyttelse af arkiver: MGM-AEAD (Kuznyechik) med nonce i henhold til RFC 8446 §5.3.
  • Kortvarige nøgler slettes efter brug.
  1. Certifikater:
  • X.509v3-parsing (GOST R 34.10-2012) — indbygget DER-parser.
  • Valideringskæde: signaturer, DN (udsteder → emne), grundlæggende begrænsninger, nøglebrug, udvidet nøgle * brug (serverAuth / clientAuth), pathLen.
  • Kontrol af værtsnavn: dNSName + iPAddress (RFC 6125).
  • Verifikation af OCSP-svar (RFC 6960).

4.transport:

  • TlsTransport - grænseflade.
  • InMemoryTlsTransport - til test og scenarier med én proces (kø i hukommelsen).
  • SocketTlsTransport — blokerer I/O over java.net.Socket.
  • ChannelTlsTransport - NIO SocketKanalbaseret transport (blokeringstilstand, afbrydelig).
  1. Trin-for-trin håndtryk:
  • TlsHandshakeEngine er en tilstandsmaskine til handshake (afkoblet fra I/O). Den bruger TlsSession som orkestrator og er egnet til integration med JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — ByteBuffer-overbelastning for nul-kopi-integration med NIO. Indlæser nøgler:
  • Pkcs12Loader — læser PFX (PKCS#12) med PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Slut på sessionen:
  • close_notify - korrekt lukning i henhold til protokollen.
  • Aftørring af nøglemateriale ved lukning eller ved fejl.
  • Håndteringsadvarsel: fatal - øjeblikkelig lukning + sletning.
  1. Implementeringssikkerhed:
  • Konstanttidssammenligninger for verify_data og PSK-bindere (beskyttelse mod timingangreb)
  • Sletning af nøglemateriale: destroy() på alle objekter med nøgler (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), ved lukning, fatal alarm, undtagelse i handshake
  • DoS-beskyttelse: begrænsninger på certifikatkædelængde (10), meddelelser efter handshake, poststørrelse.
  • MGM nonce: MSB'en for den første byte ryddes for ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE-privatnøglen og handshake-transkriptet destrueres, når handshaket er fuldført.
  • HMAC-nøglemateriale slettes efter brug (HkdfStreebog, KdfGostR3411_2012_256).
  1. begrænsninger:
  • Kun genoptagelses-PSK (0-RTT og ekstern PSK understøttes ikke).
  • Kun psk_dhe_ke (ren PSK uden ECDHE understøttes ikke).
  • HelloRetryRequest (RFC 8446 §4.1.4) understøttes ikke - kun én navngiven gruppe bruges (GC256A som standard).
  • Kun GOST (ikke-GOST-krypteringspakker understøttes ikke).
  1. Test:
  • Biblioteket indeholder Known Answer Tests fra RFC 9367 Appendix A.1 (L- og S-varianter) – det fulde nøgleskema, TLSTREE, AEAD og ECDHE. Det består også hele spektret af KAT-tests.
  • 4 integrationstests (selvinteroperabilitet) via rigtige TCP-sockets.
  • Fuzz-tests for parsere: TlsMessageParser (8 metoder), TlsDerParser (3 metoder), TlsOcspVerifier (1 metode) for at sikre sikkerhed og reducere angrebsvektoren på parsere.
  1. Arkitektoniske løsninger:
  • TlsHandshakeEngine - tilstandsmaskine afkoblet fra I/O (til fremtidigt JSSE-modul).
  • ByteBuffer-overbelastninger af TlsRecord.protect/unprotect for NIO/JSSE.
  • TLSTREE-cache (TlsTreeCache) - genberegning af kun ændrede niveauer (RFC 9367).
  • InMemoryTlsTransport.Pair er et tovejspar til test og kommunikation mellem enkelte processer.

Biblioteket distribueres under en fri licens.

Kilde: linux.org.ru

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster