Module kripto-gost-tls13 bevat die implementering TLS 1.3 (RFC 8446 + RFC 9367) met GOST-kriptografie. Hierdie weergawe is die aanvanklike weergawe van die biblioteek en is gereed vir interne gebruik.
'n Unieke kenmerk van die biblioteek is die suiwer Java-implementering. Alle kriptografiese bewerkings word uitgevoer met behulp van die biblioteek se ingeboude gereedskap, sonder eksterne afhanklikhede.
Dit is een van die eerste oopbron-implementerings van TLS 1.3 met GOST in Java, dus is interop-toetsing tot die minimum moontlik gedoen.
Hieronder is die biblioteek se vermoëns.
- Protokolle:
- Handskud: volledig (kliënt/bediener), kort (PSK), wedersyds (mTLS).
- ALPN (RFC 7301) - Toepassingslaagprotokolonderhandeling (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Naamaanduiding bediener vir multi-huurder-implementerings.
- KeyUpdate (RFC 8446 §4.6.3) – opdatering van verkeersenkripsiesleutels.
- Gesyferde suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bis), CryptoPro-B (512-bis)
- TLSTREE-hersleuteling per rekord — verandering van die enkripsiesleutel vir elke TLS-rekord.
- Fragmentering en hersamestelling van handdrukke en rekords (RFC 8446 §5.1).
- Sessie hervatting: PSK via NewSessionTicket (PskStore in-geheue, enkelgebruik).
- OCSP-nieting: bediener voeg die OCSP-antwoord by die sertifikaat.
- Boodskappe na die handskud: NewSessionTicket (bewaar vir PSK).
- Kriptografie:
- Sleutelskedule: HKDF-Streebog (RFC 5869) oor TLS 1.3 (RFC 8446 §7.1).
- Rekordbeskerming: MGM-AEAD (Kuznyechik) met nonce volgens RFC 8446 §5.3.
- Kortstondige sleutels word na gebruik uitgevee.
- Sertifikate:
- X.509v3-ontleding (GOST R 34.10-2012) — ingeboude DER-ontleder.
- Validasieketting: handtekeninge, DN (uitreiker → onderwerp), Basiese Beperkings, Sleutelgebruik, Uitgebreide Sleutel * Gebruik (serverAuth / clientAuth), pathLen.
- Gasheernaam-kontrole: dNSNaam + iPAsadres (RFC 6125).
- Verifikasie van OCSP-antwoorde (RFC 6960).
4.vervoer:
- TlsTransport - koppelvlak.
- InMemoryTlsTransport - vir toetse en enkelproses-scenario's (in-geheue-waglys).
- SocketTlsTransport — blokkering van I/O oor java.net.Socket.
- ChannelTlsTransport - NIO SocketKanaalgebaseerde vervoer (blokkeermodus, onderbreekbaar).
- Stap-vir-stap handdruk:
- TlsHandshakeEngine is 'n toestandsmasjien vir handskud (ontkoppel van I/O). Dit gebruik TlsSession as 'n orkestrator en is geskik vir integrasie met JSSE (SSLEngine).
- ByteBuffer API:
- TlsRecord.protect/unprotect — ByteBuffer-oorlading vir nul-kopie-integrasie met NIO. Laai sleutels:
- Pkcs12Loader — lees PFX (PKCS#12) met PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Einde van sessie:
- close_notify - korrekte sluiting volgens die protokol.
- Vee van sleutelmateriaal af wanneer dit toegemaak word of 'n fout gemaak word.
- Hanteringswaarskuwing: noodlottig - onmiddellike sluiting + uitvee.
- Implementeringssekuriteit:
- Konstante-tyd vergelykings vir verify_data en PSK binders (beskerming teen tydsberekening aanvalle)
- Vee sleutelmateriaal uit: destroy() op alle objekte met sleutels (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), met afsluiting, noodlottige waarskuwing, uitsondering in handskud
- DoS-beskerming: beperkings op sertifikaatkettinglengte (10), boodskappe na die handdruk, rekordgrootte.
- MGM nonce: Die MSB van die eerste greep word skoongemaak vir ICN (RFC 9058 §3, RFC 9367 §3.3).
- Die ECDHE-privaatsleutel en handskud-transkripsie word vernietig nadat die handskud voltooi is.
- HMAC-sleutelmateriaal word na gebruik uitgevee (HkdfStreebog, KdfGostR3411_2012_256).
- beperkings:
- Slegs hervatting PSK (0-RTT en eksterne PSK word nie ondersteun nie).
- Slegs psk_dhe_ke (suiwer PSK sonder ECDHE word nie ondersteun nie).
- HelloRetryRequest (RFC 8446 §4.1.4) word nie ondersteun nie - slegs een benoemde groep word gebruik (GC256A by verstek).
- Slegs GOST (nie-GOST-syfersuites word nie ondersteun nie).
- Toets:
- Die biblioteek bevat Bekende Antwoordtoetse van RFC 9367 Aanhangsel A.1 (L- en S-variante)—die volledige sleutelskedule, TLSTREE, AEAD en ECDHE. Dit slaag ook die volle reeks KAT-toetse.
- 4 integrasietoetse (self-interop) via regte TCP-sokke.
- Fuzz-toetse vir ontleders: TlsMessageParser (8 metodes), TlsDerParser (3 metodes), TlsOcspVerifier (1 metode), om sekuriteit te verseker en die aanvalvektor op ontleders te verminder.
- Argitektoniese oplossings:
- TlsHandshakeEngine - toestandsmasjien ontkoppel van I/O (vir toekomstige JSSE-module).
- ByteBuffer-oorladings van TlsRecord.protect/unprotect vir NIO/JSSE.
- TLSTREE-kasgeheue (TlsTreeCache) - herberekening van slegs veranderde vlakke (RFC 9367).
- InMemoryTlsTransport.Pair is 'n tweerigtingpaar vir toetse en enkelproseskommunikasie.
Die biblioteek word onder 'n vrye lisensie versprei.
Bron: linux.org.ru
