Den första versionen av TLS 1.3-protokollet pÄ Java med GOST-algoritmer enligt RFC 9367

Modul crypto-gost-tls13 innehÄller implementering av TLS 1.3 (RFC 8446 + RFC 9367) med GOST-kryptografi. Denna version Àr en initial version av biblioteket och redo för internt bruk.

Ett kĂ€nnetecken för biblioteket Ă€r att det Ă€r implementerat i ren Java. Alla kryptografiska operationer utförs med hjĂ€lp av bibliotekets inbyggda medel — utan externa beroenden.

Detta Àr i ett avseende en av de första öppna implementeringarna av TLS 1.3 med GOST pÄ Java, sÄ interop-testning har utförts i minimiomfattning.

Nedan följer funktionerna i biblioteket.

  1. Protokoll:
  • Handshake: komplett (client/server), förkortad (PSK), ömsesidig (mTLS).
  • ALPN (RFC 7301) — förhandling av applikationsprotokoll (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) — namn angivelse servern för multi-tenant distributioner.
  • KeyUpdate (RFC 8446 §4.6.3) — uppdatering av krypteringsnycklar för trafik.
  • Cipher-sviter: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Per-post TLSTREE omnyckling — Ă€ndring av krypteringsnyckeln för varje TLS-post.
  • Fragmentering och sammanstĂ€llning av handskakningar och poster (RFC 8446 §5.1).
  • SessionĂ„terupplivning: PSK via NewSessionTicket (PskStore i minnet, engĂ„ngsbruk).
  • OCSP stapling: server bifogar OCSP-svaret till certifikatet.
  • Post-handshake-meddelanden: NewSessionTicket (lagring för PSK).
  1. Kryptografi:
  • Nyckelschema: HKDF-Streebog (RFC 5869) enligt TLS 1.3-schema (RFC 8446 §7.1).
  • Skydd av poster: MGM-AEAD (Kuznyechik) med nonce enligt RFC 8446 §5.3.
  • Effemeriska nycklar raderas efter anvĂ€ndning.
  1. Certifikat:
  • Parsing av X.509v3 (GOST R 34.10-2012) — inbyggd DER-parser.
  • Validering av kedja: signaturer, DN (utfĂ€rdare → Ă€mne), GrundlĂ€ggande begrĂ€nsningar, NyckelanvĂ€ndning, Utökad nyckelanvĂ€ndning (serverAuth / clientAuth), pathLen.
  • Hostname-kontroll: dNSName + iPAddress (RFC 6125).
  • Verifikation av OCSP-svar (RFC 6960).

4.Transport:

  • TlsTransport — grĂ€nssnitt.
  • InMemoryTlsTransport — för tester och enprocess-scenarier (i-minnet kö).
  • SocketTlsTransport — blocking I/O via java.net.Socket.
  • ChannelTlsTransport — NIO SocketChannel-baserad transport (blocking mode, avbrutbar).
  1. Steg-för-steg handskakning:
  • TlsHandshakeEngine — tillstĂ„ndsmaskin för handskakning (frikopplad frĂ„n I/O). AnvĂ€nder TlsSession som dirigent; lĂ€mplig för integration med JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — ByteBuffer-överskott för zero-copy integration med NIO. Laddning av nycklar:
  • Pkcs12Loader — lĂ€sning av PFX (PKCS#12) med PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Avslutande av session:
  • close_notify — korrekt stĂ€ngning enligt protokollet.
  • Radering av nyckelmaterial vid stĂ€ngning eller fel.
  • Bearbetning av alert: fatal — omedelbar stĂ€ngning + radering.
  1. SĂ€kerhet i implementationen:
  • Konstant-tid jĂ€mförelser för verify_data och PSK binders (skydd mot timing-attacker)
  • Överskrivning av nyckelmateriel: destroy() pĂ„ alla objekt med nycklar (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), vid close, fatal alert, exception i handshake
  • Skydd mot DoS: grĂ€nser för lĂ€ngd pĂ„ certifikatkedjor (10), post-handshake-meddelanden, storlek pĂ„ poster.
  • MGM nonce: MSB för första byte rensas för ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE privat nyckel och handshake-transkript raderas efter att handshake avslutas.
  • HMAC nyckelmateriel raderas efter anvĂ€ndning (HkdfStreebog, KdfGostR3411_2012_256).
  1. BegrÀnsningar:
  • Endast resumption PSK (0-RTT och extern PSK stöds inte).
  • Endast psk_dhe_ke (ren PSK utan ECDHE stöds inte).
  • HelloRetryRequest (RFC 8446 §4.1.4) stöds inte — endast en named group anvĂ€nds (GC256A som standard).
  • Endast GOST (icke-GOST cipher suites stöds inte).
  1. Testning:
  • Biblioteket innehĂ„ller kĂ€nda svarstester frĂ„n RFC 9367 Appendix A.1 (L och S varianter) — fullstĂ€ndig key schedule, TLSTREE, AEAD, ECDHE. Och genomgĂ„r hela spektrumet av KAT tester.
  • 4 integrations tester (self-interop) via riktiga TCP-sockets.
  • Fuzzing-tester för parsers: TlsMessageParser (8 metoder), TlsDerParser (3 metoder), TlsOcspVerifier (1 metod), för att sĂ€kerstĂ€lla sĂ€kerhet och minska attackvektorer pĂ„ parsers.
  1. Arkitektoniska lösningar:
  • TlsHandshakeEngine — tillstĂ„ndsmaskin, löst kopplad frĂ„n I/O (för framtida JSSE-modul).
  • ByteBuffer-överskridningar TlsRecord.protect/unprotect för NIO/JSSE.
  • TLSTREE-cache (TlsTreeCache) — omberĂ€kning av endast Ă€ndrade nivĂ„er (RFC 9367).
  • InMemoryTlsTransport.Pair — tvĂ„vĂ€gspar för tester och enkelprocessinteraktion.

Biblioteket distribueras under en fri licens.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster