Lëshimi i parë i implementimit të protokollit TLS 1.3 në Java me algoritmet GOST në përputhje me RFC 9367

Moduli crypto-gost-tls13 përmban implementim TLS 1.3 (RFC 8446 + RFC 9367) me kriptografi GOST. Ky publikim është versioni fillestar i bibliotekës dhe është i gatshëm për përdorim të brendshëm.

Veçori e bibliotekës është realizimi në Java të pastër. Të gjitha operacionet kriptografike kryhen nga mjetet e brendshme të bibliotekës - pa varësi të jashtme.

Në vetë të drejtën e vet, kjo është një nga realizimet e para të hapura të TLS 1.3 me GOST në Java, prandaj testimi i ndërveprueshmërisë është kryer në përmasat minimale të disponueshme.

Më poshtë janë mundësitë e bibliotekës.

  1. Protokollet:
  • Handshaku: i plotĂ« (client/server), i shkurtuar (PSK), i ndĂ«rsjellĂ« (mTLS).
  • ALPN (RFC 7301) - negociimi i protokollit tĂ« nivelit aplikativ (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - caktimi i emrit serverĂ« pĂ«r ndĂ«rtimet multi-tenant.
  • KeyUpdate (RFC 8446 §4.6.3) - rinovimi i çelisĂ« pĂ«r enkriptimin e trafikut.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Per-record TLSTREE re-keying - ndĂ«rrimi i çelisĂ« sĂ« enkriptimit pĂ«r çdo rekord TLS.
  • Fragmentimi dhe mbledhja e dorĂ«zimeve dhe rekordeve (RFC 8446 §5.1).
  • Rikthimi i sesionit: PSK pĂ«rmes NewSessionTicket (PskStore in-memory, pĂ«rdorim i vetĂ«m).
  • OCSP stapling: server prikon pĂ«rgjigjen OCSP me certifikatin.
  • Mesazhet post-handshake: NewSessionTicket (ruajtja pĂ«r PSK).
  1. Kriptografia:
  • ÇelĂ«si i planit: HKDF-Streebog (RFC 5869) sipas pĂ«rshkrimit TLS 1.3 (RFC 8446 §7.1).
  • Mbrojtja e rekordeve: MGM-AEAD (Kuznyechik) me nonce sipas RFC 8446 §5.3.
  • ÇelĂ«sat efemer fshihen pas pĂ«rdorimit.
  1. Certifikatat:
  • Parsimimi i X.509v3 (GOST R 34.10-2012) - parser i brendshĂ«m DER.
  • Validimi i zinxhirit: nĂ«nshkrime, DN (marrĂ«si → subjekti), Kufizimet thelbĂ«sore, PĂ«rdorimi i çelĂ«sit, PĂ«rdorimi i çelĂ«sit tĂ« zgjeruar * (serverAuth/clientAuth), pathLen.
  • Kontrolli i hostname: dNSName + iPAddress (RFC 6125).
  • Verifikimi i pĂ«rgjigjeve OCSP (RFC 6960).

4.Transporti:

  • TlsTransport - ndĂ«rfaqja.
  • InMemoryTlsTransport - pĂ«r prova dhe skenarĂ« me njĂ« proces (kuadri nĂ« memorie).
  • SocketTlsTransport - I/O blocking pĂ«rmes java.net.Socket.
  • ChannelTlsTransport - transport i bazuar nĂ« NIO SocketChannel (mode blocking, ndĂ«rprerĂ«s).
  1. Hendeku hap pas hapi:
  • TlsHandshakeEngine - makine e shtetit pĂ«r handshaku (e ndarĂ« nga I/O). PĂ«rdoret TlsSession si orkestrues; e pĂ«rshtatshme pĂ«r integrim me JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect - ngarkesa ByteBuffer pĂ«r integrim zero-copy me NIO. Ngarkimi i çelĂ«save:
  • Pkcs12Loader - leximi i PFX (PKCS#12) me PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Përfundimi i sesionit:
  • close_notify - mbyllje e duhur sipas protokollit.
  • Fshihja e materialeve tĂ« çelĂ«sit gjatĂ« mbylljes ose njĂ« gabimi.
  • Trajtimi i alert: fatal - mbyllje e menjĂ«hershme + fshihje.
  1. Siguria e implementimit:
  • Krahasimi nĂ« kohĂ« konstante pĂ«r verify_data dhe PSK binders (mbrojtje nga sulmet nga koha)
  • Izbrazhimi materialet kyç: destroy() nĂ« tĂ« gjitha objektet me çelĂ«sa (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), gjatĂ« close, fatal alert, exception nĂ« handshake
  • Mbrojtja nga DoS: kufizime nĂ« gjatĂ«si e zinxhirĂ«ve tĂ« certifikatave (10), mesazhe post-handshake, madhĂ«sia e regjistrimeve.
  • MGM nonce: MSB i bajtit tĂ« parĂ« pastruar pĂ«r ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ÇelĂ«si privat ECDHE dhe transkripti i handshake shkatĂ«rrohen pas pĂ«rfundimit tĂ« handshake.
  • Materiali i çelĂ«sit HMAC pastruar pas pĂ«rdorimit (HkdfStreebog, KdfGostR3411_2012_256).
  1. Kufizimet:
  • VetĂ«m PSK i rifillimit (0-RTT dhe PSK tĂ« jashtme nuk mbĂ«shteten).
  • VetĂ«m psk_dhe_ke (pure PSK pa ECDHE nuk mbĂ«shtetet).
  • HelloRetryRequest (RFC 8446 §4.1.4) nuk mbĂ«shtetet — pĂ«rdoret vetĂ«m njĂ« grup i emĂ«rtuar (GC256A si parazgjedhje).
  • VetĂ«m GOST (cifrat jo-GOST nuk mbĂ«shteten).
  1. Testimi:
  • Biblioteka pĂ«rmban Teste tĂ« Njohura tĂ« PĂ«gjigjeve nga RFC 9367 Shtojca A.1 (L dhe S variante) — plan tĂ« plotĂ« kyç, TLSTREE, AEAD, ECDHE. Dhe kalon njĂ« gamĂ« tĂ« plotĂ« testesh KAT.
  • 4 teste integrimi (self-interop) pĂ«rmes soketeve reale TCP.
  • Testet e fuzzing pĂ«r parserĂ«t: TlsMessageParser (8 metoda), TlsDerParser (3 metoda), TlsOcspVerifier (1 metodĂ«), pĂ«r tĂ« siguruar sigurinĂ« dhe pĂ«r tĂ« reduktuar vektorĂ«t e sulmeve ndaj parserĂ«ve.
  1. Zgjidhjet arkitekturore:
  • TlsHandshakeEngine — makinĂ« gjendje, e shkĂ«putur nga I/O (pĂ«r modul tĂ« ardhshĂ«m JSSE).
  • Overloads e ByteBuffer pĂ«r TlsRecord.protect/unprotect pĂ«r NIO/JSSE.
  • Caches TLSTREE (TlsTreeCache) — rinumrimi vetĂ«m i niveleve tĂ« ndryshuara (RFC 9367).
  • InMemoryTlsTransport.Pair — njĂ« çift dyanshĂ«m pĂ«r teste dhe ndĂ«rveprime tĂ« njĂ« procesi.

Biblioteka shpërndahet nën një licencë të lirë.

Burimi: linux.org.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster