A TLS 1.3 protokoll Java nyelvű implementációjának első kiadása GOST algoritmusokkal az RFC 9367 szabványnak megfelelően

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.

  1. 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).
  1. 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.
  1. 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ó).
  1. 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.
  1. 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.
  1. Ü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.
  1. 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).
  1. 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).
  1. 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.
  1. É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

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster