Rilis munggaran implementasi protokol TLS 1.3 dina Java nganggo algoritma GOST luyu sareng RFC 9367

Modul crypto-gost-tls13 ngandung palaksanaan TLS 1.3 (RFC 8446 + RFC 9367) nganggo kriptografi GOST. Rilis ieu mangrupikeun vérsi awal perpustakaan sareng parantos siap dianggo sacara internal.

Fitur unik perpustakaan ieu nyaéta implementasi Java murni. Sadaya operasi kriptografi dilaksanakeun nganggo alat bawaan perpustakaan, tanpa katergantungan éksternal.

Ieu mangrupikeun salah sahiji implementasi sumber terbuka munggaran TLS 1.3 sareng GOST dina Java, janten uji interop parantos dilaksanakeun saminimal mungkin.

Di handap ieu mangrupikeun kamampuan perpustakaan.

  1. Protokol:
  • Sasalaman: pinuh (klien/server), pondok (PSK), silih (mTLS).
  • ALPN (RFC 7301) - Negosiasi Protokol Lapisan Aplikasi (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Indikasi Ngaran sérver pikeun palaksanaan multi-tenant.
  • KeyUpdate (RFC 8446 §4.6.3) – ngapdet konci énkripsi lalu lintas.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Nga-re-key TLSTREE per rékaman — ngarobah konci énkripsi pikeun unggal rékaman TLS.
  • Fragmentasi sareng perakitan deui jabat tangan sareng rékaman (RFC 8446 §5.1).
  • Neraskeun deui sési: PSK via NewSessionTicket (PskStore dina mémori, sakali dianggo).
  • Stapel OCSP: sérver nambihan réspon OCSP kana sertipikat.
  • Pesen saatos sasalaman: NewSessionTicket (iwal ti PSK).
  1. Kriptografi:
  • Jadwal konci: HKDF-Streebog (RFC 5869) ngalangkungan TLS 1.3 (RFC 8446 §7.1).
  • Protéksi rékaman: MGM-AEAD (Kuznyechik) kalayan nonce numutkeun RFC 8446 §5.3.
  • Konci anu teu permanén bakal dihapus saatos dianggo.
  1. Sértipikat:
  • Parsing X.509v3 (GOST R 34.10-2012) — parser DER bawaan.
  • Ranté validasi: tanda tangan, DN (pamedal → subjek), Kendala Dasar, Panggunaan Konci, Panggunaan Konci anu Diperpanjang * (serverAuth / clientAuth), pathLen.
  • Pariksa ngaran host: dNSName + iPAddress (RFC 6125).
  • Verifikasi réspon OCSP (RFC 6960).

4.Angkutan:

  • TlsTransport - antarmuka.
  • InMemoryTlsTransport - pikeun tés sareng skénario prosés tunggal (antrian dina mémori).
  • SocketTlsTransport — meungpeuk I/O ngaliwatan java.net.Socket.
  • ChannelTlsTransport - Transportasi berbasis NIO SocketChannel (modeu pameungpeuk, interupsibel).
  1. Léngkah-léngkah sasalaman:
  • TlsHandshakeEngine nyaéta mesin kaayaan pikeun handshake (dipisahkeun tina I/O). Éta ngagunakeun TlsSession salaku orchestrator sareng cocog pikeun integrasi sareng JSSE (SSLEngine).
  1. API ByteBuffer:
  • TlsRecord.protect/unprotect — ByteBuffer ngaleuleuskeun pikeun integrasi zero-copy sareng NIO. Konci nu keur dimuat:
  • Pkcs12Loader — maca PFX (PKCS#12) nganggo PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Akhir sesi:
  • close_notify - ngabenerkeun panutupan numutkeun protokol.
  • Ngausap bahan konci nalika nutup atanapi ngadamel kasalahan.
  • Waspada penanganan: fatal - langsung ditutup + ngahapus.
  1. Kaamanan palaksanaan:
  • Babandingan waktos konstan pikeun pangiket verify_data sareng PSK (proteksi ngalawan serangan timing)
  • Ngahapus bahan konci: destroy() dina sadaya objék anu nganggo konci (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), dina kaayaan caket, waspada fatal, pengecualian dina jabat tangan
  • Protéksi DoS: wates panjang ranté sertipikat (10), pesen pasca-jabat tangan, ukuran rékaman.
  • MGM nonce: MSB tina byte munggaran dihapus pikeun ICN (RFC 9058 §3, RFC 9367 §3.3).
  • Konci pribadi ECDHE sareng transkrip jabat tangan bakal dirusak saatos jabat tangan réngsé.
  • Bahan konci HMAC dihapus saatos dianggo (HkdfStreebog, KdfGostR3411_2012_256).
  1. larangan:
  • PSK hungkul anu tiasa diteruskeun (0-RTT sareng PSK éksternal henteu dirojong).
  • Ngan psk_dhe_ke (PSK murni tanpa ECDHE teu dirojong).
  • HelloRetryRequest (RFC 8446 §4.1.4) teu dirojong - ngan hiji grup anu dingaranan anu dianggo (GC256A sacara standar).
  • GOST hungkul (suite sandi non-GOST henteu dirojong).
  1. Uji coba:
  • Perpustakaan ieu ngandung Tés Jawaban Anu Dipikanyaho tina RFC 9367 Lampiran A.1 (varian L sareng S)—jadwal konci lengkep, TLSTREE, AEAD, ECDHE. Perpustakaan ieu ogé lulus sadaya tés KAT.
  • 4 tés integrasi (interop mandiri) via soket TCP nyata.
  • Tés Fuzz pikeun parser: TlsMessageParser (8 métode), TlsDerParser (3 métode), TlsOcspVerifier (1 métode), pikeun mastikeun kaamanan sareng ngirangan véktor serangan dina parser.
  1. Solusi arsitéktur:
  • TlsHandshakeEngine - mesin kaayaan dipisahkeun tina I/O (pikeun modul JSSE ka hareup).
  • Kaleuwihan ByteBuffer tina TlsRecord.protect/unprotect pikeun NIO/JSSE.
  • Cache TLSTREE (TlsTreeCache) - itungan ulang ngan ukur tingkat anu dirobih (RFC 9367).
  • InMemoryTlsTransport.Pair nyaéta pasangan dua arah pikeun tés sareng komunikasi prosés tunggal.

Perpustakaan ieu disebarkeun dina lisénsi gratis.

sumber: linux.org.ru

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster