TLS 1.3 -protokollan toteutuksen ensimmäinen julkaisu Javassa GOST-algoritmeilla RFC 9367:n mukaisesti

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.

  1. 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).
  1. 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.
  1. 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ä).
  1. Vaiheittainen kädenpuristus:
  • TlsHandshakeEngine on kättelyn tilakone (irrotettu I/O:sta). Se käyttää TlsSessionia orkestroijana ja soveltuu integroitavaksi JSSE:n (SSLEngine) kanssa.
  1. 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.
  1. Istunnon loppu:
  • close_notify - oikea sulkeminen protokollan mukaisesti.
  • Avaimen materiaalin pyyhkiminen sulkemisen tai virheen sattuessa.
  • Käsittelyhälytys: kohtalokas - välitön sulkeminen + poistaminen.
  1. 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).
  1. 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).
  1. 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.
  1. 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

Osta luotettava isännöinti sivustoille, joissa on DDoS-suojaus, VPS VDS -palvelimet 🔥 Osta luotettavaa verkkosivustojen hostingia DDoS-suojauksella, VPS VDS -palvelimilla | ProHoster