Die eerste vrystelling van die TLS 1.3-protokolimplementering in Java met GOST-algoritmes in ooreenstemming met RFC 9367

Module kripto-gost-tls13 bevat die implementering TLS 1.3 (RFC 8446 + RFC 9367) met GOST-kriptografie. Hierdie weergawe is die aanvanklike weergawe van die biblioteek en is gereed vir interne gebruik.

'n Unieke kenmerk van die biblioteek is die suiwer Java-implementering. Alle kriptografiese bewerkings word uitgevoer met behulp van die biblioteek se ingeboude gereedskap, sonder eksterne afhanklikhede.

Dit is een van die eerste oopbron-implementerings van TLS 1.3 met GOST in Java, dus is interop-toetsing tot die minimum moontlik gedoen.

Hieronder is die biblioteek se vermoëns.

  1. Protokolle:
  • Handskud: volledig (kliënt/bediener), kort (PSK), wedersyds (mTLS).
  • ALPN (RFC 7301) - Toepassingslaagprotokolonderhandeling (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Naamaanduiding bediener vir multi-huurder-implementerings.
  • KeyUpdate (RFC 8446 §4.6.3) – opdatering van verkeersenkripsiesleutels.
  • Gesyferde suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bis), CryptoPro-B (512-bis)
  • TLSTREE-hersleuteling per rekord — verandering van die enkripsiesleutel vir elke TLS-rekord.
  • Fragmentering en hersamestelling van handdrukke en rekords (RFC 8446 §5.1).
  • Sessie hervatting: PSK via NewSessionTicket (PskStore in-geheue, enkelgebruik).
  • OCSP-nieting: bediener voeg die OCSP-antwoord by die sertifikaat.
  • Boodskappe na die handskud: NewSessionTicket (bewaar vir PSK).
  1. Kriptografie:
  • Sleutelskedule: HKDF-Streebog (RFC 5869) oor TLS 1.3 (RFC 8446 §7.1).
  • Rekordbeskerming: MGM-AEAD (Kuznyechik) met nonce volgens RFC 8446 §5.3.
  • Kortstondige sleutels word na gebruik uitgevee.
  1. Sertifikate:
  • X.509v3-ontleding (GOST R 34.10-2012) — ingeboude DER-ontleder.
  • Validasieketting: handtekeninge, DN (uitreiker → onderwerp), Basiese Beperkings, Sleutelgebruik, Uitgebreide Sleutel * Gebruik (serverAuth / clientAuth), pathLen.
  • Gasheernaam-kontrole: dNSNaam + iPAsadres (RFC 6125).
  • Verifikasie van OCSP-antwoorde (RFC 6960).

4.vervoer:

  • TlsTransport - koppelvlak.
  • InMemoryTlsTransport - vir toetse en enkelproses-scenario's (in-geheue-waglys).
  • SocketTlsTransport — blokkering van I/O oor java.net.Socket.
  • ChannelTlsTransport - NIO SocketKanaalgebaseerde vervoer (blokkeermodus, onderbreekbaar).
  1. Stap-vir-stap handdruk:
  • TlsHandshakeEngine is 'n toestandsmasjien vir handskud (ontkoppel van I/O). Dit gebruik TlsSession as 'n orkestrator en is geskik vir integrasie met JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — ByteBuffer-oorlading vir nul-kopie-integrasie met NIO. Laai sleutels:
  • Pkcs12Loader — lees PFX (PKCS#12) met PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Einde van sessie:
  • close_notify - korrekte sluiting volgens die protokol.
  • Vee van sleutelmateriaal af wanneer dit toegemaak word of 'n fout gemaak word.
  • Hanteringswaarskuwing: noodlottig - onmiddellike sluiting + uitvee.
  1. Implementeringssekuriteit:
  • Konstante-tyd vergelykings vir verify_data en PSK binders (beskerming teen tydsberekening aanvalle)
  • Vee sleutelmateriaal uit: destroy() op alle objekte met sleutels (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), met afsluiting, noodlottige waarskuwing, uitsondering in handskud
  • DoS-beskerming: beperkings op sertifikaatkettinglengte (10), boodskappe na die handdruk, rekordgrootte.
  • MGM nonce: Die MSB van die eerste greep word skoongemaak vir ICN (RFC 9058 §3, RFC 9367 §3.3).
  • Die ECDHE-privaatsleutel en handskud-transkripsie word vernietig nadat die handskud voltooi is.
  • HMAC-sleutelmateriaal word na gebruik uitgevee (HkdfStreebog, KdfGostR3411_2012_256).
  1. beperkings:
  • Slegs hervatting PSK (0-RTT en eksterne PSK word nie ondersteun nie).
  • Slegs psk_dhe_ke (suiwer PSK sonder ECDHE word nie ondersteun nie).
  • HelloRetryRequest (RFC 8446 §4.1.4) word nie ondersteun nie - slegs een benoemde groep word gebruik (GC256A by verstek).
  • Slegs GOST (nie-GOST-syfersuites word nie ondersteun nie).
  1. Toets:
  • Die biblioteek bevat Bekende Antwoordtoetse van RFC 9367 Aanhangsel A.1 (L- en S-variante)—die volledige sleutelskedule, TLSTREE, AEAD en ECDHE. Dit slaag ook die volle reeks KAT-toetse.
  • 4 integrasietoetse (self-interop) via regte TCP-sokke.
  • Fuzz-toetse vir ontleders: TlsMessageParser (8 metodes), TlsDerParser (3 metodes), TlsOcspVerifier (1 metode), om sekuriteit te verseker en die aanvalvektor op ontleders te verminder.
  1. Argitektoniese oplossings:
  • TlsHandshakeEngine - toestandsmasjien ontkoppel van I/O (vir toekomstige JSSE-module).
  • ByteBuffer-oorladings van TlsRecord.protect/unprotect vir NIO/JSSE.
  • TLSTREE-kasgeheue (TlsTreeCache) - herberekening van slegs veranderde vlakke (RFC 9367).
  • InMemoryTlsTransport.Pair is 'n tweerigtingpaar vir toetse en enkelproseskommunikasie.

Die biblioteek word onder 'n vrye lisensie versprei.

Bron: linux.org.ru

Koop betroubare hosting vir werwe met DDoS-beskerming, VPS VDS-bedieners 🔥 Koop betroubare webwerfhosting met DDoS-beskerming, VPS VDS-bedieners | ProHoster