A TLS 1.3 protocol implementation on Java with GOST algorithms in accordance with RFC 9367 has been released.

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.

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster