La unua eldono de la efektivigo de la protokolo TLS 1.3 en Java kun GOST-algoritmoj laŭ RFC 9367

Modulo kripto-gost-tls13 enhavas la efektivigon TLS 1.3 (RFC 8446 + RFC 9367) kun GOST-kriptografio. Ĉi tiu eldono estas la komenca versio de la biblioteko kaj estas preta por interna uzo.

Unika trajto de la biblioteko estas ĝia pura Java efektivigo. Ĉiuj ĉifraj operacioj estas plenumataj per la enkonstruitaj iloj de la biblioteko, sen eksteraj dependecoj.

Ĉi tiu estas unu el la unuaj malfermfontecaj efektivigoj de TLS 1.3 kun GOST en Java, do interoperacia testado estis farita laŭeble plej malmulte.

Jen sube estas la kapabloj de la biblioteko.

  1. Protokoloj:
  • Manpremo: plena (kliento/servilo), mallonga (PSK), reciproka (mTLS).
  • ALPN (RFC 7301) - Aplikaĵa Tavola Protokola Intertraktado (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Nomindiko servilo por plurluantaj deplojoj.
  • KeyUpdate (RFC 8446 §4.6.3) – ĝisdatigante trafikajn ĉifradajn ŝlosilojn.
  • Ĉifroj: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bita), CryptoPro-B (512-bita)
  • Reŝlosado de TLSTREE por ĉiu rekordo — ŝanĝante la ĉifran ŝlosilon por ĉiu TLS-rekordo.
  • Fragmentiĝo kaj rekunmeto de manpremoj kaj registroj (RFC 8446 §5.1).
  • Seanca rekomenco: PSK per NewSessionTicket (PskStore enmemora, unufoja).
  • OCSP-agrafado: servilo aldonas la OCSP-respondon al la atestilo.
  • Post-manpremaj mesaĝoj: NewSessionTicket (konservita por PSK).
  1. Kriptografio:
  • Ŝlosilhoraro: HKDF-Streebog (RFC 5869) super TLS 1.3 (RFC 8446 §7.1).
  • Protekto de registroj: MGM-AEAD (Kuznyechik) kun necerteco laŭ RFC 8446 §5.3.
  • Efemeraj ŝlosiloj estas forviŝitaj post uzo.
  1. Atestiloj:
  • X.509v3-analizado (GOST R 34.10-2012) — enkonstruita DER-analizilo.
  • Validiga ĉeno: subskriboj, DN (eldoninto → subjekto), Bazaj Limigoj, Ŝlosila Uzado, Etendita Ŝlosila * Uzado (servilaAŭtorizo ​​/ klientaAŭtorizo), vojlongo.
  • Kontrolo de gastigantnomo: dNSName + iPAddress (RFC 6125).
  • Konfirmo de OCSP-respondoj (RFC 6960).

4.Transportado:

  • TlsTransport - interfaco.
  • InMemoryTlsTransport - por testoj kaj unu-procezaj scenaroj (atendovico en memoro).
  • SocketTlsTransport — blokado de enigo/eligo tra java.net.Socket.
  • ChannelTlsTransport - NIO SocketKanal-bazita transporto (bloka reĝimo, interrompebla).
  1. Paŝon post paŝo manpremo:
  • TlsHandshakeEngine estas ŝtatmaŝino por manpremo (malkuplita de enigo/eligo). Ĝi uzas TlsSession kiel orkestrejon kaj taŭgas por integriĝo kun JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — Troŝarĝoj de ByteBuffer por nul-kopia integriĝo kun NIO. Ŝarĝante ŝlosilojn:
  • Pkcs12Loader — legante PFX (PKCS#12) per PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Fino de la sesio:
  • close_notify - ĝusta fermo laŭ la protokolo.
  • Viŝado de ŝlosila materialo dum fermo aŭ farado de eraro.
  • Pritrakta alarmo: mortiga - tuja fermo + forviŝo.
  1. Sekureco de efektivigo:
  • Konstant-tempaj komparoj por verify_data kaj PSK-ligiloj (protekto kontraŭ tempigaj atakoj)
  • Forviŝante ŝlosilan materialon: destroy() sur ĉiuj objektoj kun ŝlosiloj (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), ĉe fermo, mortiga alarmo, escepto en manpremo
  • DoS-protekto: limoj pri la longo de la atestilĉeno (10), post-manpremaj mesaĝoj, kaj grandeco de la registro.
  • MGM-necesa dato: La plej grava nombro-situacia bajto (MSB) de la unua bajto estas malplenigita por ICN (RFC 9058 §3, RFC 9367 §3.3).
  • La privata ŝlosilo kaj manprema transskribaĵo de ECDHE estas detruitaj post kiam la manpremo finiĝas.
  • HMAC-ŝlosilmaterialo estas forviŝita post uzo (HkdfStreebog, KdfGostR3411_2012_256).
  1. Limigoj:
  • Nur Rekomenca PSK (0-RTT kaj ekstera PSK ne estas subtenataj).
  • Nur psk_dhe_ke (pura PSK sen ECDHE ne estas subtenata).
  • HelloRetryRequest (RFC 8446 §4.1.4) ne estas subtenata - nur unu nomita grupo estas uzata (GC256A defaŭlte).
  • Nur GOST (ne-GOST-ĉifro-serioj ne estas subtenataj).
  1. Testado:
  • La biblioteko enhavas Testojn kun Konataj Respondoj el RFC 9367 Apendico A.1 (L kaj S variaĵoj) — la plenan ŝlosilhoraron, TLSTREE, AEAD, kaj ECDHE. Ĝi ankaŭ trapasas la plenan gamon de KAT-testoj.
  • 4 integriĝtestoj (mem-interoperaciaj) per realaj TCP-ingoj.
  • Malprecizaj testoj por analiziloj: TlsMessageParser (8 metodoj), TlsDerParser (3 metodoj), TlsOcspVerifier (1 metodo), por certigi sekurecon kaj redukti la atakvektoron sur analiziloj.
  1. Arkitekturaj solvoj:
  • TlsHandshakeEngine - ŝtata maŝino malkuplita de I/O (por estonta JSSE-modulo).
  • Troŝarĝoj de ByteBuffer de TlsRecord.protect/unprotect por NIO/JSSE.
  • TLSTREE-kaŝmemoro (TlsTreeCache) - rekalkulo de nur ŝanĝitaj niveloj (RFC 9367).
  • InMemoryTlsTransport.Pair estas dudirekta paro por testoj kaj unu-proceza komunikado.

La biblioteko estas distribuita sub libera permesilo.

fonto: linux.org.ru

Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster