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.
- 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).
- 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.
- 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).
- 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).
- 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.
- 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.
- 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).
- 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).
- 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.
- 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
