De earste útjefte fan 'e TLS 1.3-protokolymplemintaasje yn Java mei GOST-algoritmen yn oerienstimming mei RFC 9367

Module krypto-gost-tls13 befettet de ymplemintaasje TLS 1.3 (RFC 8446 + RFC 9367) mei GOST-kryptografy. Dizze útjefte is de earste ferzje fan 'e bibleteek en is klear foar yntern gebrûk.

In unyk skaaimerk fan 'e bibleteek is de suvere Java-ymplemintaasje. Alle kryptografyske operaasjes wurde útfierd mei de ynboude ark fan 'e bibleteek, sûnder eksterne ôfhinklikheden.

Dit is ien fan 'e earste iepen boarne-ymplemintaasjes fan TLS 1.3 mei GOST yn Java, dus ynteroptests binne sa min mooglik dien.

Hjirûnder steane de mooglikheden fan 'e bibleteek.

  1. Protokollen:
  • Handshake: folslein (kliïnt/tsjinner), koart (PSK), ûnderling (mTLS).
  • ALPN (RFC 7301) - Underhanneling fan applikaasjelaachprotokol (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Namme-oantsjutting server foar ynset fan meardere hierders.
  • KeyUpdate (RFC 8446 §4.6.3) – it bywurkjen fan ferkearsfersleutelingskaaien.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • TLSTREE opnij kaaien per record - it feroarjen fan de fersiferingskaai foar elke TLS-record.
  • Fragmintaasje en wer gearstalling fan handshakes en records (RFC 8446 §5.1).
  • Sesjehervatting: PSK fia NewSessionTicket (PskStore yn it ûnthâld, ienmalich gebrûk).
  • OCSP-nietjen: server прикладывает OCSP-ответ к сертификату.
  • Berjochten nei in handshake: NewSessionTicket (bewarje foar PSK).
  1. Kryptografy:
  • Wichtige skema: HKDF-Streebog (RFC 5869) oer TLS 1.3 (RFC 8446 §7.1).
  • Rekordbeskerming: MGM-AEAD (Kuznyechik) mei nonce neffens RFC 8446 §5.3.
  • Efemere kaaien wurde nei gebrûk wiske.
  1. Sertifikaten:
  • X.509v3-parsing (GOST R 34.10-2012) - ynboude DER-parser.
  • Falidaasjeketen: hantekeningen, DN (útjouwer → ûnderwerp), basisbeperkingen, kaaigebrûk, útwreide kaai * gebrûk (serverAuth / clientAuth), pathLen.
  • Hostnammekontrôle: dNSName + iPAddress (RFC 6125).
  • Ferifikaasje fan OCSP-antwurden (RFC 6960).

4.Ferfier:

  • TlsTransport - ynterface.
  • InMemoryTlsTransport - foar testen en single-process-senario's (wachtrige yn it ûnthâld).
  • SocketTlsTransport — blokkearjen fan I/O oer java.net.Socket.
  • ChannelTlsTransport - NIO SocketChannel-basearre ferfier (blokkearmodus, ûnderbrekber).
  1. Stap foar stap hândruk:
  • TlsHandshakeEngine is in steatmasine foar handshake (loskeppele fan I/O). It brûkt TlsSession as in orkestrator en is geskikt foar yntegraasje mei JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — ByteBuffer oerlaadt foar nul-kopie-yntegraasje mei NIO. Kaaien laden:
  • Pkcs12Loader — lêst PFX (PKCS#12) mei PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Ein fan sesje:
  • close_notify - korrekt sluten neffens it protokol.
  • It ôfwiskjen fan kaaimateriaal by it sluten of meitsjen fan in flater.
  • Behannelingswarskôging: fataal - direkte sluting + wiskjen.
  1. Ymplemintaasjefeiligens:
  • Fergelikingen yn konstante tiid foar verify_data en PSK-binders (beskerming tsjin timingoanfallen)
  • Wiskjen fan kaaimateriaal: destroy() op alle objekten mei kaaien (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), by sluting, fatale warskôging, útsûndering yn handshake
  • DoS-beskerming: beheiningen op sertifikaatketenlingte (10), berjochten nei handshake, recordgrutte.
  • MGM nonce: De MSB fan 'e earste byte wurdt wiske foar ICN (RFC 9058 §3, RFC 9367 §3.3).
  • De priveekaai fan 'e ECDHE en it handshake-transkript wurde ferneatige nei't de handshake foltôge is.
  • HMAC-kaaimateriaal wurdt nei gebrûk wiske (HkdfStreebog, KdfGostR3411_2012_256).
  1. Beheinings:
  • Allinnich werhelling PSK (0-RTT en eksterne PSK wurde net stipe).
  • Allinnich psk_dhe_ke (suvere PSK sûnder ECDHE wurdt net stipe).
  • HelloRetryRequest (RFC 8446 §4.1.4) wurdt net stipe - mar ien neamde groep wurdt brûkt (standert GC256A).
  • Allinnich GOST (net-GOST-fersleutelingssuites wurde net stipe).
  1. Testen:
  • De bibleteek befettet Known Answer Tests fan RFC 9367 Appendix A.1 (L- en S-farianten) - it folsleine kaaiskema, TLSTREE, AEAD en ECDHE. It slagget ek foar it folsleine oanbod fan KAT-tests.
  • 4 yntegraasjetests (sels-ynterop) fia echte TCP-sockets.
  • Fuzz-tests foar parsers: TlsMessageParser (8 metoaden), TlsDerParser (3 metoaden), TlsOcspVerifier (1 metoade), om feiligens te garandearjen en de oanfalsvektor op parsers te ferminderjen.
  1. Arsjitektoanyske oplossingen:
  • TlsHandshakeEngine - steatmasine loskeppele fan I/O (foar takomstige JSSE-module).
  • ByteBuffer-oerlêst fan TlsRecord.protect/unprotect foar NIO/JSSE.
  • TLSTREE-cache (TlsTreeCache) - opnij berekkening fan allinich feroare nivo's (RFC 9367).
  • InMemoryTlsTransport.Pair is in bidireksjoneel pear foar testen en kommunikaasje tusken ien proses.

De bibleteek wurdt ferspraat ûnder in frije lisinsje.

Boarne: linux.org.ru

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster