Modul crypto-gost-tls13 tartalmazza a megvalósítást TLS 1.3 (RFC 8446 + RFC 9367) GOST-kriptográfiával. Ez a kiadás a könyvtár kezdeti verziója, és belső használatra készült.
A könyvtár sajátossága a tiszta Java-ban történő megvalósítás. Minden kriptográfiai műveletet a könyvtár beépített eszközeivel végzünk - külső függőségek nélkül.
Ez az első nyílt TLS 1.3 megvalósítások egyike GOST-ra Java-ban, ezért az interop-tesztelés minimális szinten történt.
Az alábbiakban a könyvtár lehetőségei találhatók.
- Protokollok:
- Kapcsolatfelvétel: teljes (ügyfél/szerver), rövidített (PSK), kölcsönös (mTLS).
- ALPN (RFC 7301) — alkalmazás szintű protokoll egyeztetése (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) — név megjelölése a szerver multi-tenant telepítésekhez.
- KeyUpdate (RFC 8446 §4.6.3) — a forgalom titkosító kulcsainak frissítése.
- Titkosító szettek: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
- Per rekord TLSTREE újrakulcsolás — a titkosító kulcs váltása minden TLS-rekordhoz.
- A kézfogások és rekordok fragmentálása és összeállítása (RFC 8446 §5.1).
- Session resumption: PSK NewSessionTicket révén (PskStore in-memory, egyszer használható).
- OCSP stapling: szerver OCSP-válasz csatolása a tanúsítványhoz.
- Post-handshake üzenetek: NewSessionTicket (megőrzés PSK-hez).
- Kriptográfia:
- Kulcstervezés: HKDF-Streebog (RFC 5869) TLS 1.3 séma szerint (RFC 8446 §7.1).
- Rekordok védelme: MGM-AEAD (Kuznyechik) nonce-al az RFC 8446 §5.3 szerint.
- Az efemer kulcsok használat után törlésre kerülnek.
- Certifikációk:
- X.509v3 (GOST R 34.10-2012) elemzés — beépített DER-parsing.
- Láncvalidálás: aláírások, DN (kiadó → címzett), Alapvető Korlátok, Kulcs Használat, Kiterjesztett Kulcs * Használat (serverAuth / clientAuth), pathLen.
- Hostname ellenőrzése: dNSName + iPAddress (RFC 6125).
- OCSP-válaszok ellenőrzése (RFC 6960).
4.Szállítás:
- TlsTransport — interfész.
- InMemoryTlsTransport — tesztekhez és egypontos forgatókönyvekhez (in-memory sor).
- SocketTlsTransport — blokkoló I/O a java.net.Socket-on keresztül.
- ChannelTlsTransport — NIO SocketChannel-alapú szállítás (blokkoló mód, megszakítható).
- Lépésről lépésre kapcsolatfelvétel:
- TlsHandshakeEngine — állapotgép a kapcsolatfelvételhez (független az I/O-tól). A TlsSession-t használja koordinátorként; alkalmas JSSE-vel (SSLEngine) való integrációnál.
- ByteBuffer API:
- TlsRecord.protect/unprotect — ByteBuffer-túladagolások zero-copy integrációhoz NIO-val. Kulcsok betöltése:
- Pkcs12Loader — PFX (PKCS#12) olvasása PBKDF2-HMAC-SHA256 + AES-256-CBC használatával.
- Ülés befejezése:
- close_notify — a protokoll szerint helyes zárás.
- A kulcsmateriai törlése zárás vagy hiba esetén.
- Alert kezelés: fatal — azonnali zárás + törlés.
- A megvalósítás biztonsága:
- Állandó időtartamú összehasonlítás a verify_data és PSK bindingekhez (véd a timing támadások ellen)
- A kulcsanyag megsemmisítése: destroy() minden kulcsra (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext) close, fatal alert, exception esetén a handshake-ben.
- DoS elleni védelem: a tanúsítványláncok hosszára vonatkozó korlátozások (10), post-handshake üzenetek, rekordok mérete.
- MGM nonce: az első byte MSB-je törlődik az ICN számára (RFC 9058 §3, RFC 9367 §3.3).
- Az ECDHE privát kulcs és a handshake transzkriptje megsemmisül a handshake befejezése után.
- Az HMAC kulcsmaterial törlődik használat után (HkdfStreebog, KdfGostR3411_2012_256).
- Korlátok:
- Csak resumption PSK támogatott (0-RTT és external PSK nem támogatott).
- Csak psk_dhe_ke (tiszta PSK ECDHE nélkül nem támogatott).
- A HelloRetryRequest (RFC 8446 §4.1.4) nem támogatott — csak egy named group használható (GC256A alapértelmezett).
- Csak GOST (nem GOST titkosító kötletek nem támogatottak).
- Tesztelés:
- A könyvtár tartalmazza a RFC 9367 A.1 mellékletéből származó Known Answer Tests-et (L és S variánsok) — teljes kulcs ütemezés, TLSTREE, AEAD, ECDHE. És a KAT tesztek teljes spektrumán áthalad.
- 4 integrációs teszt (self-interop) valós TCP socketeken keresztül.
- Fuzz tesztek a parserok számára: TlsMessageParser (8 metódus), TlsDerParser (3 metódus), TlsOcspVerifier (1 metódus), a biztonság és a támadási vektorok csökkentése érdekében a parseroknál.
- Architekturális megoldások:
- TlsHandshakeEngine — állapotgép, amely el van választva az I/O-tól (a jövőbeli JSSE modul számára).
- ByteBuffer túlterhelések TlsRecord.protect/unprotect a NIO/JSSE-hez.
- TLSTREE cache (TlsTreeCache) — csak a megváltozott szintek újraszámítása (RFC 9367).
- InMemoryTlsTransport.Pair — kétirányú pár tesztekhez és egysoros interakcióhoz.
A könyvtár szabad licenc alatt terjesztett.
Forrás: linux.org.ru
