Moodul krüpto-gost-tls13 sisaldab teostust TLS 1.3 (RFC 8446 + RFC 9367) GOST-krüptograafiaga. See väljaanne on teegi algversioon ja on sisemiseks kasutamiseks valmis.
Selle teegi ainulaadne omadus on selle puhas Java implementatsioon. Kõik krüptograafilised toimingud teostatakse teeki sisseehitatud tööriistade abil, ilma väliste sõltuvusteta.
See on üks esimesi avatud lähtekoodiga TLS 1.3 implementatsioone GOST-iga Javas, seega on koostalitlusvõime testimine tehtud minimaalselt.
Allpool on loetletud raamatukogu võimalused.
- Protokollid:
- Käepigistus: täielik (klient/server), lühike (PSK), vastastikune (mTLS).
- ALPN (RFC 7301) - rakenduskihi protokolli läbirääkimised (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - nime tähis server mitme üürnikuga juurutuste jaoks.
- KeyUpdate (RFC 8446 §4.6.3) – liikluse krüpteerimisvõtmete uuendamine.
- Šifreerimiskomplektid: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bitine), CryptoPro-B (512-bitine)
- Kirjepõhine TLSTREE ümberkodeerimine – iga TLS-kirje krüpteerimisvõtme muutmine.
- Käepigistuste ja dokumentide fragmenteerimine ja uuesti kokkupanek (RFC 8446 §5.1).
- Seansi jätkamine: PSK NewSessionTicketi kaudu (PskStore mälus, ühekordselt kasutatav).
- OCSP klammerdamine: server lisab sertifikaadile OCSP vastuse.
- Käepigistuse järgsed sõnumid: NewSessionTicket (salvesta PSK jaoks).
- Krüptograafia:
- Põhiskeem: HKDF-Streebog (RFC 5869) üle TLS 1.3 (RFC 8446 §7.1).
- Kirjekaitse: MGM-AEAD (Kuznyechik) nonss-märgisega vastavalt RFC 8446 §5.3.
- Ajutised võtmed kustutatakse pärast kasutamist.
- Sertifikaadid:
- X.509v3 parsimine (GOST R 34.10-2012) — sisseehitatud DER-parser.
- Valideerimisahel: allkirjad, DN (väljastaja → subjekt), põhipiirangud, võtme kasutamine, laiendatud võtme * kasutus (serverAuth / clientAuth), pathLen.
- Hostinime kontroll: dNSName + iPAddress (RFC 6125).
- OCSP vastuste kontrollimine (RFC 6960).
4.Transport:
- TlsTransport - liides.
- InMemoryTlsTransport – testide ja üheprotsessiliste stsenaariumide jaoks (mälusisene järjekord).
- SocketTlsTransport — sisend-/väljundi blokeerimine java.net.Socketi kaudu.
- ChannelTlsTransport - NIO Socket Channel-põhine transport (blokeerimisrežiim, katkestatav).
- Samm-sammult käepigistus:
- TlsHandshakeEngine on käepigistuse olekumasin (eraldi sisend-/väljundoperatsioonidest). See kasutab orkestraatorina TlsSessioni ja sobib integreerimiseks JSSE-ga (SSLEngine).
- ByteBufferi API:
- TlsRecord.protect/unprotect — ByteBufferi ülekoormamine NIO-ga nullkopeerimise integreerimiseks. Võtmete laadimine:
- Pkcs12Loader — PFX-i (PKCS#12) lugemine PBKDF2-HMAC-SHA256 + AES-256-CBC abil.
- Sessiooni lõpp:
- close_notify - korrektne sulgemine vastavalt protokollile.
- Võtmematerjali pühkimine sulgemisel või vea tegemisel.
- Käitlemise hoiatus: saatuslik - kohene sulgemine + kustutamine.
- Rakendamise turvalisus:
- Konstantse aja võrdlused verify_data ja PSK sideainete jaoks (kaitse ajastusrünnakute eest)
- Võtmematerjali pühkimine: destroy() kõikidel objektidel, millel on võtmed (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), sulgemisel, saatuslik hoiatus, käepigistuse erand
- DoS-kaitse: piirangud sertifikaadiahela pikkusele (10), käepigistusjärgsetele sõnumitele, kirje suurusele.
- MGM nonce: Esimese baiti MSB tühjendatakse ICN-i jaoks (RFC 9058 §3, RFC 9367 §3.3).
- ECDHE privaatvõti ja käepigistuse transkript hävitatakse pärast käepigistuse lõppu.
- HMAC-võtme materjal kustutatakse pärast kasutamist (HkdfStreebog, KdfGostR3411_2012_256).
- Piirangud:
- Ainult jätkamise PSK (0-RTT ja välist PSK-d ei toetata).
- Ainult psk_dhe_ke (puhas PSK ilma ECDHE-ta pole toetatud).
- HelloRetryRequest (RFC 8446 §4.1.4) ei ole toetatud – kasutatakse ainult ühte nimega gruppi (vaikimisi GC256A).
- Ainult GOST (mitte-GOST šifrikomplekte ei toetata).
- Testimine:
- Teek sisaldab RFC 9367 lisa A.1 teadaolevate vastuste teste (L- ja S-variandid) – täielikku võtmegraafikut, TLSTREE-d, AEAD-d ja ECDHE-d. See läbib ka kõik KAT-testid.
- 4 integratsioonitesti (enese interop) päris TCP soklite kaudu.
- Parserite hägustestid: TlsMessageParser (8 meetodit), TlsDerParser (3 meetodit), TlsOcspVerifier (1 meetod), turvalisuse tagamiseks ja parserite rünnakuvektori vähendamiseks.
- Arhitektuurilised lahendused:
- TlsHandshakeEngine - olekumasin, mis on I/O-st lahutatud (tulevase JSSE mooduli jaoks).
- ByteBufferi ülekoormus TlsRecord.protect/unprotect failis NIO/JSSE puhul.
- TLSTREE vahemälu (TlsTreeCache) - ainult muudetud tasemete ümberarvutamine (RFC 9367).
- InMemoryTlsTransport.Pair on kahesuunaline paar testide ja üheprotsessilise suhtluse jaoks.
Raamatukogu levitatakse tasuta litsentsi alusel.
Allikas: linux.org.ru
