Moduuli krypto-gost-tls13 sisältää toteutuksen TLS 1.3 (RFC 8446 + RFC 9367) GOST-kryptografialla. Tämä julkaisu on kirjaston ensimmäinen versio ja valmis sisäiseen käyttöön.
Kirjaston ainutlaatuinen ominaisuus on sen puhdas Java-toteutus. Kaikki kryptografiset operaatiot suoritetaan kirjaston sisäänrakennetuilla työkaluilla ilman ulkoisia riippuvuuksia.
Tämä on yksi ensimmäisistä TLS 1.3:n ja GOST:in avoimen lähdekoodin toteutuksista Javassa, joten yhteensopivuustestausta on tehty mahdollisimman vähän.
Alla on kirjaston ominaisuudet.
- Protokollat:
- Kättely: täysi (asiakas/palvelin), lyhyt (PSK), molemminpuolinen (mTLS).
- ALPN (RFC 7301) - Sovelluskerroksen protokollaneuvottelu (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Nimen ilmaisu palvelin usean vuokralaisen käyttöönottoja varten.
- KeyUpdate (RFC 8446 §4.6.3) – liikenteen salausavainten päivittäminen.
- Salaussarjat: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bittinen), CryptoPro-B (512-bittinen)
- Tietuekohtainen TLSTREE-uudelleensalaus — salausavaimen muuttaminen jokaiselle TLS-tietueelle.
- Kättelyjen ja tallenteiden pirstaloiminen ja uudelleenkokoaminen (RFC 8446 §5.1).
- Istunnon jatkaminen: PSK NewSessionTicketin kautta (PskStore muistissa, kertakäyttöinen).
- OCSP-nidonta: palvelin liittää OCSP-vastauksen varmenteeseen.
- Kättelyn jälkeiset viestit: NewSessionTicket (tallenna PSK:lle).
- Kryptografia:
- Keskeinen aikataulu: HKDF-Streebog (RFC 5869) TLS 1.3:n (RFC 8446 §7.1) yli.
- Tiedoston suojaus: MGM-AEAD (Kuznyechik) nonce-merkinnällä RFC 8446 §5.3:n mukaisesti.
- Lyhytaikaiset avaimet poistetaan käytön jälkeen.
- Sertifikaatit:
- X.509v3-jäsennys (GOST R 34.10-2012) — sisäänrakennettu DER-jäsennin.
- Validointiketju: allekirjoitukset, DN (myöntäjä → aihe), perusrajoitukset, avaimen käyttö, laajennettu avaimen käyttö (serverAuth / clientAuth), pathLen.
- Isäntänimen tarkistus: dNSName + iPAddress (RFC 6125).
- OCSP-vastausten varmennus (RFC 6960).
4.liikenne:
- TlsTransport-rajapinta.
- InMemoryTlsTransport - testeihin ja yhden prosessin skenaarioihin (muistin sisäinen jono).
- SocketTlsTransport — estää I/O:n java.net.Socketin kautta.
- ChannelTlsTransport - NIO SocketChannel-pohjainen siirto (estotila, keskeytettävä).
- Vaiheittainen kädenpuristus:
- TlsHandshakeEngine on kättelyn tilakone (irrotettu I/O:sta). Se käyttää TlsSessionia orkestroijana ja soveltuu integroitavaksi JSSE:n (SSLEngine) kanssa.
- ByteBuffer-sovellusliittymä:
- TlsRecord.protect/unprotect — ByteBufferin ylikuormitus estää kopioinnin NIO:n kanssa. Avainten lataus:
- Pkcs12Loader — lukee PFX:n (PKCS#12) PBKDF2-HMAC-SHA256 + AES-256-CBC -apuohjelmalla.
- Istunnon loppu:
- close_notify - oikea sulkeminen protokollan mukaisesti.
- Avaimen materiaalin pyyhkiminen sulkemisen tai virheen sattuessa.
- Käsittelyhälytys: kohtalokas - välitön sulkeminen + poistaminen.
- Toteutuksen turvallisuus:
- Vakioaikaiset vertailut verify_data- ja PSK-kansioille (suojaus ajoitushyökkäyksiä vastaan)
- Avainten materiaalin pyyhkiminen: destroy() kaikille objekteille, joilla on avaimet (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), sulkeutuessa, kohtalokas hälytys, poikkeus kättelyssä
- Palvelunestohyökkäysten suojaus: rajoitukset varmenneketjun pituudelle (10), kättelyn jälkeisille viesteille ja tietueen koolle.
- MGM nonce: Ensimmäisen tavun MSB tyhjennetään ICN:ää varten (RFC 9058 §3, RFC 9367 §3.3).
- ECDHE:n yksityinen avain ja kättelyn transkriptio tuhotaan kättelyn päätyttyä.
- HMAC-avainmateriaali poistetaan käytön jälkeen (HkdfStreebog, KdfGostR3411_2012_256).
- rajoituksia:
- Vain PSK:n jatkaminen (0-RTT:tä ja ulkoista PSK:ta ei tueta).
- Vain psk_dhe_ke (puhdasta PSK:ta ilman ECDHE:tä ei tueta).
- HelloRetryRequest-pyyntöä (RFC 8446 §4.1.4) ei tueta - käytetään vain yhtä nimettyä ryhmää (oletusarvoisesti GC256A).
- Vain GOST (muita kuin GOST-salauspaketteja ei tueta).
- Testaus:
- Kirjasto sisältää RFC 9367 Appendix A.1:n tunnettujen vastausten testejä (L- ja S-variantit) – täyden avainaikataulun, TLSTREE:n, AEAD:n ja ECDHE:n. Se läpäisee myös kaikki KAT-testit.
- 4 integraatiotestiä (itse-interop) oikeiden TCP-sockettien kautta.
- Sumeatestaus jäsentimille: TlsMessageParser (8 metodia), TlsDerParser (3 metodia), TlsOcspVerifier (1 metodi) turvallisuuden varmistamiseksi ja jäsentimiin kohdistuvan hyökkäysvektorin vähentämiseksi.
- Arkkitehtoniset ratkaisut:
- TlsHandshakeEngine - I/O:sta irrotettu tilakone (tulevaa JSSE-moduulia varten).
- ByteBuffer-ylikuormittaa TlsRecord.protect/unprotect-tiedoston NIO/JSSE:tä varten.
- TLSTREE-välimuisti (TlsTreeCache) - vain muuttuneiden tasojen uudelleenlaskenta (RFC 9367).
- InMemoryTlsTransport.Pair on kaksisuuntainen pari testejä ja yhden prosessin välistä kommunikaatiota varten.
Kirjastoa jaetaan vapaalla lisenssillä.
Lähde: linux.org.ru
