Den første version af TLS 1.3-protokollen implementeret i Java med GOST-algoritmer i overensstemmelse med RFC 9367

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

Et særligt træk ved biblioteket er implementeringen i ren Java. Alle kryptografiske operationer udføres ved hjælp af bibliotekets indbyggede funktioner - uden eksterne afhængigheder.

Dette er i sin slags en af de første åbne implementeringer af TLS 1.3 med GOST på Java, derfor er interop-testning udført i minimum af omfang.

Nedenfor er mulighederne for biblioteket.

  1. Protokoller:
  • Handshake: fuld (client/server), forkortet (PSK), gensidig (mTLS).
  • ALPN (RFC 7301) - forhandling af applikationsprotokol (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - angivelse af navn server til multi-tenant deployment.
  • KeyUpdate (RFC 8446 §4.6.3) - opdatering af krypteringsnøgler for trafik.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Per-record TLSTREE re-keying - ændring af krypteringsnøglen for hver TLS-post.
  • Fragmentering og samling af håndtryk og poster (RFC 8446 §5.1).
  • Session genoptagelse: PSK via NewSessionTicket (PskStore in-memory, one-time use).
  • OCSP stapling: server vedhæfter OCSP-svar til certifikatet.
  • Post-handshake beskeder: NewSessionTicket (gem til PSK).
  1. Kryptografi:
  • Nøgleplan: HKDF-Streebog (RFC 5869) i henhold til TLS 1.3 (RFC 8446 §7.1).
  • Beskyttelse af poster: MGM-AEAD (Kuznyechik) med nonce i henhold til RFC 8446 §5.3.
  • Ephemerale nøgler slettes efter brug.
  1. Certifikater:
  • Parsing af X.509v3 (GOST R 34.10-2012) - indbygget DER-parser.
  • Validering af kæden: signaturer, DN (issuer → subject), Basic Constraints, Key Usage, Extended Key * Usage (serverAuth / clientAuth), pathLen.
  • Hostname verifikation: dNSName + iPAddress (RFC 6125).
  • Verifikation af OCSP-svar (RFC 6960).

4.Transport:

  • TlsTransport - grænseflade.
  • InMemoryTlsTransport - til test og enkeltproces-scenarier (in-memory kø).
  • SocketTlsTransport - blocking I/O gennem java.net.Socket.
  • ChannelTlsTransport - NIO SocketChannel-baseret transport (blocking mode, afbrydelig).
  1. Trinvist håndtryk:
  • TlsHandshakeEngine - tilstandsmaskine til håndtryk (løst fra I/O). Bruges TlsSession som orkestrator; egnet til integration med JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect - ByteBuffer-overbelastninger til zero-copy integration med NIO. Indlæsning af nøgler:
  • Pkcs12Loader - læsning af PFX (PKCS#12) med PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Afslutning af session:
  • close_notify - korrekt lukning i henhold til protokollen.
  • Sletning af nøglemateriale ved lukning eller fejl.
  • Håndtering af alert: fatal - øjeblikkelig lukning + sletning.
  1. Sikkerhed ved implementering:
  • Constant-time sammenligning for verify_data og PSK binders (beskyttelse mod timing angreb)
  • Sletning af nøglemateriale: destroy() på alle objekter med nøgler (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), ved close, fatal alert, exception i handshake
  • Beskyttelse mod DoS: grænser for længden af certifikatkæder (10), post-handshake beskeder, størrelse på poster.
  • MGM nonce: MSB af det første byte nulstilles for ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE-private nøgle og handshake-transkript slettes efter afslutning af handshake.
  • HMAC-nøglemateriale slettes efter brug (HkdfStreebog, KdfGostR3411_2012_256).
  1. Begrænsninger:
  • Kun resumption 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 named group bruges (GC256A som standard).
  • Kun GOST (non-GOST cipher suites understøttes ikke).
  1. Testning:
  • Biblioteket indeholder kendte svar tests fra RFC 9367 Appendix A.1 (L og S varianter) — fuld nøgleplan, TLSTREE, AEAD, ECDHE. Og gennemgår et fuldt spektrum af KAT tests.
  • 4 integrations tests (self-interop) gennem virkelige TCP-sokker.
  • Fuzzing-tester 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 — tilstands-maskine, adskilt fra I/O (til fremtidig JSSE modul).
  • ByteBuffer-overbelastninger TlsRecord.protect/unprotect for NIO/JSSE.
  • TLSTREE-cache (TlsTreeCache) — genberegning af kun de ændrede niveauer (RFC 9367).
  • InMemoryTlsTransport.Pair — tovejspair til tests og enkeltprocesinteraktion.

Biblioteket distribueres under en fri licens.

Kilde: linux.org.ru

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