Den första utgåvan av TLS 1.3-protokollimplementeringen i Java med GOST-algoritmer i enlighet med RFC 9367

Modul krypto-gost-tls13 innehåller implementeringen TLS 1.3 (RFC 8446 + RFC 9367) med GOST-kryptografi. Denna utgåva är den första versionen av biblioteket och är redo för intern användning.

En unik egenskap hos biblioteket är dess rena Java-implementering. Alla kryptografiska operationer utförs med hjälp av bibliotekets inbyggda verktyg, utan externa beroenden.

Detta är en av de första implementeringarna av TLS 1.3 med öppen källkod och GOST i Java, så interoptestning har utförts i minsta möjliga utsträckning.

Nedan följer bibliotekets möjligheter.

  1. Protokoll:
  • Handskakning: fullständig (klient/server), kort (PSK), ömsesidig (mTLS).
  • ALPN (RFC 7301) - Förhandling av applikationslagerprotokoll (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Namnindikering server för distributioner med flera hyresgäster.
  • KeyUpdate (RFC 8446 §4.6.3) – uppdatering av trafikkrypteringsnycklar.
  • Chiffersviter: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bitars), CryptoPro-B (512-bitars)
  • TLSTREE-omnyckling per post — ändrar krypteringsnyckeln för varje TLS-post.
  • Fragmentering och återmontering av handskakningar och register (RFC 8446 §5.1).
  • Återupptagning av session: PSK via NewSessionTicket (PskStore i minnet, engångsbruk).
  • OCSP-häftning: server прикладывает OCSP-ответ к сертификату.
  • Meddelanden efter handskakning: NewSessionTicket (spara för PSK).
  1. Kryptografi:
  • Nyckelschema: HKDF-Streebog (RFC 5869) över TLS 1.3 (RFC 8446 §7.1).
  • Recordskydd: MGM-AEAD (Kuznyechik) med nonce-skydd enligt RFC 8446 §5.3.
  • Tillfälliga nycklar raderas efter användning.
  1. Certifikat:
  • X.509v3-parsning (GOST R 34.10-2012) — inbyggd DER-parser.
  • Valideringskedja: signaturer, DN (utfärdare → ämne), grundläggande begränsningar, nyckelanvändning, utökad nyckel*användning (serverAuth / clientAuth), pathLen.
  • Värdnamnskontroll: dNSName + iPAdress (RFC 6125).
  • Verifiering av OCSP-svar (RFC 6960).

4.transport:

  • TlsTransport - gränssnitt.
  • InMemoryTlsTransport – för tester och scenarier med en enda process (kö i minnet).
  • SocketTlsTransport — blockerar I/O över java.net.Socket.
  • ChannelTlsTransport - NIO SocketKanalbaserad transport (blockeringsläge, avbrottsbar).
  1. Steg-för-steg handslag:
  • TlsHandshakeEngine är en tillståndsmaskin för handskakning (frikopplad från I/O). Den använder TlsSession som orkestrator och är lämplig för integration med JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — ByteBuffer-överbelastning för nollkopieringsintegration med NIO. Laddar nycklar:
  • Pkcs12Loader — läser PFX (PKCS#12) med PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Slut på sessionen:
  • close_notify - korrekt stängning enligt protokollet.
  • Avtorkning av nyckelmaterial vid stängning eller vid fel.
  • Hanteringsvarning: allvarlig - omedelbar stängning + radering.
  1. Implementeringssäkerhet:
  • Jämförelser i konstant tid för verify_data och PSK-bindare (skydd mot tidsattacker)
  • Rensar nyckelmaterial: destroy() på alla objekt med nycklar (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), vid stängning, allvarlig varning, undantag i handskakning
  • DoS-skydd: begränsningar för certifikatkedjelängd (10), meddelanden efter handskakning, poststorlek.
  • MGM nonce: MSB för den första byten rensas för ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE:s privata nyckel och handskakningstranskription förstörs efter att handskakningen är slutförd.
  • HMAC-nyckelmaterial raderas efter användning (HkdfStreebog, KdfGostR3411_2012_256).
  1. restriktioner:
  • Endast återupptagnings-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 namngiven grupp används (GC256A som standard).
  • Endast GOST (icke-GOST-chiffreringssviter stöds inte).
  1. Testning:
  • Biblioteket innehåller Known Answer Tests från RFC 9367 Appendix A.1 (L- och S-varianter) – hela nyckelschemat, TLSTREE, AEAD och ECDHE. Det klarar också alla KAT-tester.
  • 4 integrationstester (självinteroperabilitet) via riktiga TCP-sockets.
  • Fuzz-tester för parsers: TlsMessageParser (8 metoder), TlsDerParser (3 metoder), TlsOcspVerifier (1 metod), för att garantera säkerhet och minska attackvektorn på parsers.
  1. Arkitektoniska lösningar:
  • TlsHandshakeEngine - tillståndsmaskin frikopplad från I/O (för framtida JSSE-modul).
  • ByteBuffer-överbelastningar av TlsRecord.protect/unprotect för NIO/JSSE.
  • TLSTREE-cache (TlsTreeCache) - omberäkning av endast ändrade nivåer (RFC 9367).
  • InMemoryTlsTransport.Pair är ett dubbelriktat par för tester och kommunikation mellan enskilda processer.

Biblioteket distribueras under en fri licens.

Källa: linux.org.ru

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster