Modul crypto-gost-tls13 tartalmazza a megvalósítást TLS 1.3 (RFC 8446 + RFC 9367) GOST titkosítással. Ez a kiadás a könyvtár kezdeti verziója, és belső használatra kész.
A könyvtár egyedülálló tulajdonsága a tisztán Java implementációja. Minden kriptográfiai műveletet a könyvtár beépített eszközeivel hajt végre, külső függőségek nélkül.
Ez a TLS 1.3 és a GOST egyik első nyílt forráskódú implementációja Java-ban, így az interop tesztelést a lehető legminimálisabb mértékben végezték el.
Az alábbiakban a könyvtár lehetőségeit ismertetjük.
- Protokollok:
- Kézfogás: teljes (kliens/szerver), rövid (PSK), kölcsönös (mTLS).
- ALPN (RFC 7301) - Alkalmazásrétegbeli protokollegyeztetés (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Névmegjelölés szerver több-bérlős telepítésekhez.
- KeyUpdate (RFC 8446 §4.6.3) – forgalomtitkosítási kulcsok frissítése.
- Rejtjelkészletek: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256 bites), CryptoPro-B (512 bites)
- Rekordonkénti TLSTREE újrakulcsolás — a titkosítási kulcs módosítása minden TLS-rekordhoz.
- Kézfogások és feljegyzések töredezése és újraösszeállítása (RFC 8446 §5.1).
- Munkamenet folytatása: PSK NewSessionTicket-en keresztül (PskStore memóriában, egyszer használatos).
- OCSP tűzés: szerveren hozzáfűzi az OCSP választ a tanúsítványhoz.
- Kézfogás utáni üzenetek: NewSessionTicket (kivéve PSK esetén).
- Kriptográfia:
- Kulcsfontosságú ütemterv: HKDF-Streebog (RFC 5869) TLS 1.3 (RFC 8446 §7.1) felett.
- Rekordvédelem: MGM-AEAD (Kuznyechik) nonce-szel az RFC 8446 §5.3 szerint.
- Az efemer kulcsok használat után törlődnek.
- Tanúsítványok:
- X.509v3 elemzés (GOST R 34.10-2012) — beépített DER elemző.
- Érvényesítési lánc: aláírások, DN (kibocsátó → alany), alapvető megkötések, kulcshasználat, kiterjesztett kulcshasználat (serverAuth / clientAuth), pathLen.
- Gazdagépnév-ellenőrzés: dNSName + iPAddress (RFC 6125).
- OCSP válaszok ellenőrzése (RFC 6960).
4.Транспорт:
- TlsTransport - interfész.
- InMemoryTlsTransport – tesztekhez és egyfolyamatos forgatókönyvekhez (memórián belüli sor).
- SocketTlsTransport — I/O blokkolása a java.net.Socket felett.
- ChannelTlsTransport - NIO SocketChannel alapú átvitel (blokkoló mód, megszakítható).
- Lépésről lépésre kézfogás:
- A TlsHandshakeEngine egy állapotgép a kézfogáshoz (leválasztva az I/O-tól). A TlsSession-t használja orchestrátorként, és alkalmas a JSSE-vel (SSLEngine) való integrációra.
- ByteBuffer API:
- TlsRecord.protect/unprotect — A ByteBuffer túlterheli a NIO-val való másolásmentes integrációt. Kulcsok betöltése:
- Pkcs12Loader — PFX (PKCS#12) olvasása PBKDF2-HMAC-SHA256 + AES-256-CBC segítségével.
- Ülés vége:
- close_notify - a protokollnak megfelelő helyes zárás.
- Kulcsanyag letörlése záráskor vagy hiba esetén.
- Kezelési riasztás: végzetes - azonnali bezárás + törlés.
- Megvalósítási biztonság:
- Konstans idejű összehasonlítások verify_data és PSK kötőanyagokhoz (védelem az időzített támadások ellen)
- Kulcsadatok törlése: destroy() függvény minden olyan objektumon, amelynek kulcsai vannak (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), bezáráskor, végzetes riasztáskor, kivétel kézfogás közben.
- DoS védelem: korlátok a tanúsítványlánc hosszára (10), a kézfogás utáni üzenetekre és a rekordméretre vonatkozóan.
- MGM nonce: Az első bájt MSB-je törlődik az ICN számára (RFC 9058 §3, RFC 9367 §3.3).
- Az ECDHE privát kulcs és a kézfogás átirata a kézfogás befejezése után megsemmisül.
- A HMAC kulcsanyag használat után törlődik (HkdfStreebog, KdfGostR3411_2012_256).
- korlátozások:
- Csak PSK folytatása (a 0-RTT és a külső PSK nem támogatott).
- Csak psk_dhe_ke (a tiszta PSK ECDHE nélkül nem támogatott).
- A HelloRetryRequest (RFC 8446 §4.1.4) nem támogatott - csak egy elnevezett csoportot használ (alapértelmezés szerint GC256A).
- Csak GOST (a nem GOST titkosítócsomagok nem támogatottak).
- Tesztelés:
- A könyvtár tartalmazza az RFC 9367 A.1 függelékében található ismert válaszokat tartalmazó teszteket (L és S változatok) – a teljes kulcsütemtervet, a TLSTREE, AEAD és ECDHE szabványokat. Emellett a KAT tesztek teljes skáláján megfelel.
- 4 integrációs teszt (ön-interoperabilitás) valódi TCP socketeken keresztül.
- Fuzz tesztek a következő elemzőkhöz: TlsMessageParser (8 metódus), TlsDerParser (3 metódus), TlsOcspVerifier (1 metódus), a biztonság garantálása és az elemzők támadási vektorának csökkentése érdekében.
- Építészeti megoldások:
- TlsHandshakeEngine - az I/O-tól leválasztott állapotgép (a jövőbeli JSSE modulhoz).
- A ByteBuffer túlterheli a TlsRecord.protect/unprotect fájlokat NIO/JSSE esetén.
- TLSTREE gyorsítótár (TlsTreeCache) - csak a megváltozott szintek újraszámítása (RFC 9367).
- Az InMemoryTlsTransport.Pair egy kétirányú párosított objektum, amely tesztekhez és egyfolyamatos kommunikációhoz használható.
A könyvtár szabad licenc alatt terjeszthető.
Forrás: linux.org.ru
