Prva izdaja implementacije protokola TLS 1.3 v Javi z algoritmi GOST v skladu z RFC 9367

Modul kripto-gost-tls13 vsebuje izvedbo TLS 1.3 (RFC 8446 + RFC 9367) z GOST kriptografijo. Ta izdaja je začetna različica knjižnice in je pripravljena za interno uporabo.

Edinstvena značilnost knjižnice je njena čista implementacija v Javi. Vse kriptografske operacije se izvajajo z vgrajenimi orodji knjižnice, brez zunanjih odvisnosti.

To je ena prvih odprtokodnih implementacij TLS 1.3 z GOST v Javi, zato je bilo testiranje medsebojnega delovanja opravljeno v najmanjši možni meri.

Spodaj so navedene zmogljivosti knjižnice.

  1. Protokoli:
  • Rokovanje: polno (odjemalec/strežnik), kratko (PSK), medsebojno (mTLS).
  • ALPN (RFC 7301) - Pogajanja o protokolu aplikacijske plasti (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Navedba imena strežnika za večnajemniške uvedbe.
  • KeyUpdate (RFC 8446 §4.6.3) – posodabljanje ključev za šifriranje prometa.
  • Šifrirani paketi: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bitni), CryptoPro-B (512-bitni)
  • Ponovno kodiranje TLSTREE za vsak zapis – spreminjanje šifrirnega ključa za vsak zapis TLS.
  • Fragmentacija in ponovno sestavljanje rokovanja in zapisov (RFC 8446 §5.1).
  • Nadaljevanje seje: PSK prek NewSessionTicket (PskStore v pomnilniku, za enkratno uporabo).
  • Spenjanje OCSP: strežnik прикладывает OCSP-ответ к сертификату.
  • Sporočila po rokovanju: NewSessionTicket (razen za PSK).
  1. Kriptografija:
  • Ključni razpored: HKDF-Streebog (RFC 5869) prek TLS 1.3 (RFC 8446 §7.1).
  • Zaščita zapisa: MGM-AEAD (Kuznyechik) z nonce v skladu z RFC 8446 §5.3.
  • Kratkoročne tipke se po uporabi izbrišejo.
  1. Potrdila:
  • Razčlenjevanje X.509v3 (GOST R 34.10-2012) – vgrajen razčlenjevalnik DER.
  • Veriga validacije: podpisi, DN (izdajatelj → zadeva), osnovne omejitve, uporaba ključa, razširjena uporaba ključa * (serverAuth / clientAuth), dolžina poti.
  • Preverjanje imena gostitelja: dNSName + iPAddress (RFC 6125).
  • Preverjanje odgovorov OCSP (RFC 6960).

4.Prevoz:

  • TlsTransport - vmesnik.
  • InMemoryTlsTransport - za teste in scenarije z enim samim procesom (čakalna vrsta v pomnilniku).
  • SocketTlsTransport — blokiranje V/I prek java.net.Socket.
  • ChannelTlsTransport - transport na osnovi NIO SocketChannel (blokirni način, prekinljiv).
  1. Rokovanje po korakih:
  • TlsHandshakeEngine je stroj stanj za rokovanje (ločen od V/I). Uporablja TlsSession kot orkestrator in je primeren za integracijo z JSSE (SSLEngine).
  1. API za bajtni medpomnilnik:
  • TlsRecord.protect/unprotect — Preobremenitve ByteBufferja za integracijo ničelne kopije z NIO. Nalaganje ključev:
  • Pkcs12Loader — branje PFX (PKCS#12) z PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Konec seje:
  • close_notify - pravilno zapiranje v skladu s protokolom.
  • Brisanje ključnega materiala pri zapiranju ali napaki.
  • Opozorilo o ravnanju: usodno - takojšnje zapiranje + brisanje.
  1. Varnost izvedbe:
  • Primerjave v konstantnem času za verify_data in PSK binderje (zaščita pred časovnimi napadi)
  • Brisanje ključnega materiala: destroy() na vseh objektih s ključi (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), ob zaprtju, usodnem opozorilu, izjema pri handshakeu
  • Zaščita pred DoS: omejitve dolžine verige potrdil (10), sporočila po rokovanju, velikost zapisa.
  • MGM nonce: MSB prvega bajta se izbriše za ICN (RFC 9058 §3, RFC 9367 §3.3).
  • Zasebni ključ ECDHE in prepis rokovanja se uničita po zaključku rokovanja.
  • Ključno gradivo HMAC se po uporabi izbriše (HkdfStreebog, KdfGostR3411_2012_256).
  1. Omejitve:
  • Samo nadaljevanje PSK (0-RTT in zunanji PSK nista podprta).
  • Samo psk_dhe_ke (čisti PSK brez ECDHE ni podprt).
  • Zahteva HelloRetryRequest (RFC 8446 §4.1.4) ni podprta - uporablja se samo ena imenovana skupina (privzeto GC256A).
  • Samo GOST (šifri, ki niso GOST, niso podprti).
  1. Testiranje:
  • Knjižnica vsebuje teste z znanimi odgovori iz dodatka A.1 k RFC 9367 (različici L in S) – celoten razpored ključev, TLSTREE, AEAD in ECDHE. Prav tako uspešno opravlja celoten nabor testov KAT.
  • 4 integracijski testi (samointerop) prek pravih TCP vtičnic.
  • Fuzz testi za razčlenjevalnike: TlsMessageParser (8 metod), TlsDerParser (3 metode), TlsOcspVerifier (1 metoda) za zagotavljanje varnosti in zmanjšanje vektorja napadov na razčlenjevalnike.
  1. Arhitekturne rešitve:
  • TlsHandshakeEngine - stroj stanj, ločen od V/I (za prihodnji JSSE modul).
  • Preobremenitve ByteBufferja za TlsRecord.protect/unprotect za NIO/JSSE.
  • Predpomnilnik TLSTREE (TlsTreeCache) - ponovni izračun samo spremenjenih nivojev (RFC 9367).
  • InMemoryTlsTransport.Pair je dvosmerni par za teste in komunikacijo med posameznimi procesi.

Knjižnica se distribuira pod brezplačno licenco.

Vir: linux.org.ru

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster