Modul crypto-gost-tls13 sisaldab rakendust TLS 1.3 (RFC 8446 + RFC 9367) GOST-krĂŒptograafiaga. See versioon on raamatukogu esialgne versioon ning valmis sisemiseks kasutamiseks.
Raamatukogu eripĂ€ra on see, et see on rakendatud puhtas Java-s. KĂ”ik krĂŒptograafilised operatsioonid teostatakse raamatukogu sisseehitatud vahenditega â ilma vĂ€listest sĂ”ltuvustest.
See on omaala ĂŒks esimesi avatud rakendusi TLS 1.3 GOST-iga Java-s, mistĂ”ttu interop-testimine on teostatud minimaalse kĂ€tetöö mahus.
Allpool on raamatukogu vÔimalused.
- Protokollid:
- Handshake: tĂ€ielik (client/server), lĂŒhendatud (PSK), vastastikune (mTLS).
- ALPN (RFC 7301) â rakendustasandi protokolli kokkulepe (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) â nime mÀÀramine serverid multi-tenant rakenduste puhul.
- KeyUpdate (RFC 8446 §4.6.3) â krĂŒpto vĂ”tmete uuendamine.
- Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
- Per-record TLSTREE uuendamine â vĂ”tme vahetamine iga TLS-kirje jaoks.
- KÀepigistuste ja kÀskude fraktsioonimine ja kogumine (RFC 8446 §5.1).
- Sessiooni taasalustamine: PSK kaudu NewSessionTicket (PskStore mĂ€lu, ĂŒhekorra kasutamine).
- OCSP stapling: server kinnitades OCSP-vastuse sertifikaadi kĂŒlge.
- Post-handshake sÔnumid: NewSessionTicket (salvestamine PSK jaoks).
- KrĂŒptograafia:
- PĂ”hjaĂŒlevaade: HKDF-Streebog (RFC 5869) TLS 1.3 (RFC 8446 §7.1) skeemi jĂ€rgi.
- Salvestuste kaitse: MGM-AEAD (Kuznyechik) nonce'i abil vastavalt RFC 8446 §5.3.
- Ephemeraalsetest vÔtmetest vabanetakse pÀrast kasutamist.
- Certificates:
- X.509v3 (GOST R 34.10-2012) analĂŒĂŒs â sisseehitatud DER-analĂŒsaator.
- Ahelate valideerimine: allkirjad, DN (issuer â subject), pĂ”hitingimused, vĂ”tme kasutamine, pikendatud vĂ”tme * kasutamine (serverAuth / clientAuth), pathLen.
- Hostname'i kontroll: dNSName + iPAddress (RFC 6125).
- OCSP vastuste verifitseerimine (RFC 6960).
4.Transport:
- TlsTransport â liides.
- InMemoryTlsTransport â testide ja ĂŒhe protsessi stsenaariumite jaoks (mĂ€lus jĂ€rjekord).
- SocketTlsTransport â blocking I/O kaudu java.net.Socket.
- ChannelTlsTransport â NIO SocketChannel-baasil transport (blokeerimisreĆŸiim, katkestatav).
- Samm-sammuline handshake:
- TlsHandshakeEngine â oleku masin handshake'i jaoks (I/O-st eraldatud). Kasutab TlsSession'i orkestreerimiseks; sobib JSSE (SSLEngine) integreerimiseks.
- ByteBuffer API:
- TlsRecord.protect/unprotect â ByteBuffer ĂŒlekanded zero-copy NIO integreerimiseks. VĂ”tmete laadimine:
- Pkcs12Loader â PFX (PKCS#12) lugemine PBKDF2-HMAC-SHA256 + AES-256-CBC abil.
- Seansi lÔpetamine:
- close_notify â korrektne sulgemine protokolli jĂ€rgi.
- VÔtmematerjali hÀvitamine sulgemisel vÔi vea korral.
- Alertide töötlemine: fatal â kohene sulgemine + hĂ€vitamine.
- Teostuse turvalisus:
- Constant-time vĂ”rdlemine verify_data ja PSK binders'i jaoks (kaitse timing rĂŒnnakute eest).
- Kraytava peamaterjali: destroy() kÔigis objektides, kus on vÔtmed (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), sulgemisel, surmav teade, erand kÀesolevas kÀimises
- DoS-i kaitse: sertifikaatide ahela pikkuse piirangud (10), post-kÀimise sÔnumid, kirje suurus.
- MGM nonce: esimese bait'i MSB puhastatakse ICN jaoks (RFC 9058 §3, RFC 9367 §3.3).
- ECDHE privaatvÔti ja kÀimiste transkriptsioon hÀvitatakse pÀrast kÀimise lÔpetamist.
- HMAC-i vÔtme materjal puhastatakse pÀrast kasutamist (HkdfStreebog, KdfGostR3411_2012_256).
- Piirangud:
- Ainult jÀtkamine PSK (0-RTT ja vÀline PSK ei ole toetatud).
- Ainult psk_dhe_ke (puht PSK ilma ECDHE-ta ei ole toetatud).
- HelloRetryRequest (RFC 8446 §4.1.4) ei ole toetatud - kasutatakse ainult ĂŒhte nimetatud gruppi (GC256A vaikesĂ€tetena).
- Ainult GOST (non-GOST ĆĄifri komplektid ei ole toetatud).
- Testimine:
- Raamatukogu sisaldab tuntud vastuse teste RFC 9367 lisa A.1 (L ja S variandid) - tÀielik vÔtme ajakava, TLSTREE, AEAD, ECDHE. Ja lÀbib tÀieliku KAT testide sageduse.
- 4 integreerimistesti (self-interop) lÀbi reaalsed TCP-pesad.
- Fuzzing-testid parserite jaoks: TlsMessageParser (8 meetodit), TlsDerParser (3 meetodit), TlsOcspVerifier (1 meetod), et tagada turvalisus ja vĂ€hendada rĂŒnnakute vektoreid parseritele.
- Arhitektuurilised lahendused:
- TlsHandshakeEngine - oleku masin, mis on vÔrgu I/O-st eraldatud (tulevase JSSE mooduli jaoks).
- ByteBufferi ĂŒlekoormused TlsRecord.protect/unprotect NIO/JSSE jaoks.
- TLSTREE vahemĂ€lu (TlsTreeCache) â ainult muudetud tasemete ĂŒmberarvutamine (RFC 9367).
- InMemoryTlsTransport.Pair â kahepoolne paar testide ja ĂŒhes protsessis suhtlemise jaoks.
Teek on vabalt kasutatav litsentsi all.
Allikas: linux.org.ru
