Prvo izdanje implementacije protokola TLS 1.3 na Javi s GOST algoritmima u skladu s RFC 9367

Modul crypto-gost-tls13 sadrži implementaciju TLS 1.3 (RFC 8446 + RFC 9367) s GOST kriptografijom. Ova verzija je početna verzija biblioteke i spremna je za internu upotrebu.

Posebnost biblioteke je realizacija u čistom Javi. Sve kriptografske operacije se izvršavaju ugrađenim sredstvima biblioteke — bez vanjskih zavisnosti.

Ovo je jedna od prvih otvorenih implementacija TLS 1.3 s GOST na Javi, zbog čega je interop testiranje obavljeno u minimalnom opsegu.

U nastavku su navedene mogućnosti biblioteke.

  1. Protokoli:
  • Handshake: pun (client/server), skraćen (PSK), uzajaman (mTLS).
  • ALPN (RFC 7301) — dogovor protokola aplikacijskog sloja (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) — označavanje imena poslužitelja za multi-tenant implementacije.
  • KeyUpdate (RFC 8446 §4.6.3) — ažuriranje ključeva šifriranja prometa.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Per-record TLSTREE re-keying — promjena ključa šifriranja za svaku TLS-poruku.
  • Fragmentacija i sastavljanje rukovanja i poruka (RFC 8446 §5.1).
  • Obnavljanje sesije: PSK preko NewSessionTicket (PskStore u memoriji, jednokratno).
  • OCSP stapling: server prikazuje OCSP-odgovor uz certifikat.
  • Post-handshake poruke: NewSessionTicket (pohrana za PSK).
  1. Kriptografija:
  • Key schedule: HKDF-Streebog (RFC 5869) prema shemi TLS 1.3 (RFC 8446 §7.1).
  • Zaštita poruka: MGM-AEAD (Kuznyechik) s nonce po RFC 8446 §5.3.
  • Efemerna ključevi se brišu nakon korištenja.
  1. Certifikati:
  • Parsiranje X.509v3 (GOST R 34.10-2012) — ugrađeni DER-parser.
  • Validacija lanca: potpisi, DN (issuer → subject), Osnovna Ograničenja, Upotreba Ključa, Proširena Upotreba Ključa (serverAuth / clientAuth), pathLen.
  • Provjera hostname: dNSName + iPAddress (RFC 6125).
  • Verifikacija OCSP-odgovora (RFC 6960).

4.Transport:

  • TlsTransport — interfejs.
  • InMemoryTlsTransport — za testove i jednoprosvjetne scenarije (in-memory red).
  • SocketTlsTransport — blocking I/O preko java.net.Socket.
  • ChannelTlsTransport — NIO SocketChannel-baziran transport (bloker način, prekinut).
  1. Korak po korak handshake:
  • TlsHandshakeEngine — state machine za handshake (odvojen od I/O). Koristi TlsSession kao orkestrator; pogodna za integraciju s JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — ByteBuffer-override za zero-copy integraciju s NIO. Učitavanje ključeva:
  • Pkcs12Loader — čitanje PFX (PKCS#12) s PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Završavanje sesije:
  • close_notify — pravilno zatvaranje prema protokolu.
  • Brisanje ključnog materijala prilikom zatvaranja ili greške.
  • Obrada alert: fatal — trenutno zatvaranje + brisanje.
  1. Sigurnost implementacije:
  • Constant-time usporedbe za verify_data i PSK binders (zaštita od timing napada)
  • Brisanje ključnog materijala: destroy() na svim objektima s ključevima (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), prilikom close, fatal alert, exception u handshake.
  • Zaštita od DoS: ograničenja na dužinu lanca certifikata (10), post-handshake poruke, veličina zapisa.
  • MGM nonce: MSB prvog bajta se briše za ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE privatni ključ i transkript handshake se uništavaju nakon završetka handshake-a.
  • HMAC ključni materijal se briše nakon korištenja (HkdfStreebog, KdfGostR3411_2012_256).
  1. Ograničenja:
  • Samo resumption PSK (0-RTT i external PSK nisu podržani).
  • Samo psk_dhe_ke (čisti PSK bez ECDHE nije podržan).
  • HelloRetryRequest (RFC 8446 §4.1.4) nije podržan — koristi se samo jedna named group (GC256A prema zadanim postavkama).
  • Samo GOST (non-GOST kriptografski nizovi nisu podržani).
  1. Testiranje:
  • Biblioteka sadrži Known Answer Tests iz RFC 9367 Appendix A.1 (L i S varijante) — potpuni key schedule, TLSTREE, AEAD, ECDHE. I prolazi kroz potpuni spektar KAT testova.
  • 4 integracijska testa (self-interop) putem pravih TCP soketa.
  • Fuzzing testovi za parsere: TlsMessageParser (8 metoda), TlsDerParser (3 metode), TlsOcspVerifier (1 metoda), za osiguranje sigurnosti i smanjenje vektora napada na parsere.
  1. Arhitektonska rješenja:
  • TlsHandshakeEngine — state machine, odvojena od I/O (za budući JSSE modul).
  • ByteBuffer preopterećenja TlsRecord.protect/unprotect za NIO/JSSE.
  • TLSTREE cache (TlsTreeCache) — ponovno izračunavanje samo promijenjenih razina (RFC 9367).
  • InMemoryTlsTransport.Pair — dvosmjerna par za testove i jednoprocese interakcije.

Biblioteka se distribuira pod slobodnom licencom.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster