Module dulritunar-gost-tls13 inniheldur framkvæmdina TLS 1.3 (RFC 8446 + RFC 9367) með GOST dulritun. Þessi útgáfa er fyrsta útgáfa bókasafnsins og er tilbúin til innri notkunar.
Sérkenni bókasafnsins er eingöngu Java-útfærslan. Allar dulritunaraðgerðir eru framkvæmdar með innbyggðum tólum bókasafnsins, án utanaðkomandi tengsla.
Þetta er ein af fyrstu opnum hugbúnaðarútfærslunum af TLS 1.3 með GOST í Java, þannig að samvirkniprófanir hafa verið gerðar í lágmarki mögulegu mæli.
Hér að neðan eru möguleikar bókasafnsins.
- Samskiptareglur:
- Handaband: fullt (viðskiptavinur/þjónn), stutt (PSK), gagnkvæmt (mTLS).
- ALPN (RFC 7301) - Samningagerð um forritalag (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Nafnamerking miðlara fyrir uppsetningu margra leigjenda.
- KeyUpdate (RFC 8446 §4.6.3) – uppfærsla á dulkóðunarlyklum umferðar.
- Dulmálssvítur: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bita), CryptoPro-B (512-bita)
- Endurlykill fyrir hverja TLS-færslu á TLS-færslu — að breyta dulkóðunarlyklinum fyrir hverja TLS-færslu.
- Sundurliðun og endursamsetning handabanda og skráa (RFC 8446 §5.1).
- Endurupptaka lotu: PSK í gegnum NewSessionTicket (PskStore í minni, einnota).
- OCSP hefting: netþjóni bætir OCSP svarinu við skírteinið.
- Skilaboð eftir handaband: NewSessionTicket (vista fyrir PSK).
- Dulkóðun:
- Lykiláætlun: HKDF-Streebog (RFC 5869) yfir TLS 1.3 (RFC 8446 §7.1).
- Verndun gagna: MGM-AEAD (Kuznyechik) með nonce samkvæmt RFC 8446 §5.3.
- Skammvinnir lyklar eru eytt eftir notkun.
- Vottorð:
- X.509v3 greining (GOST R 34.10-2012) — innbyggður DER-greinir.
- Staðfestingarkeðja: undirskriftir, nafnnúmer (útgefandi → efni), grunntakmarkanir, notkun lykla, útvíkkuð notkun lykla * (serverAuth / clientAuth), pathLen.
- Athugun á vélarheiti: dNSName + iPAddress (RFC 6125).
- Staðfesting á OCSP svörum (RFC 6960).
4.Samgöngur:
- TlsTransport - viðmót.
- InMemoryTlsTransport - fyrir prófanir og atburðarásir með einu ferli (biðröð í minni).
- SocketTlsTransport — blokkar inntak/úttak yfir java.net.Socket.
- ChannelTlsTransport - NIO SocketRásarbundinn flutningur (blokkunarhamur, truflunarhæfur).
- Skref fyrir skref handaband:
- TlsHandshakeEngine er stöðuvél fyrir handaband (aftengd frá I/O). Hún notar TlsSession sem skipulagsstjóra og hentar vel til samþættingar við JSSE (SSLEngine).
- ByteBuffer API:
- TlsRecord.protect/unprotect — Ofhleðsla á ByteBuffer fyrir afritunarlausa samþættingu við NIO. Hleður lykla:
- Pkcs12Loader — les PFX (PKCS#12) með PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Lok fundar:
- close_notify - rétt lokun samkvæmt samskiptareglunum.
- Að þurrka af lykilefni við lokun eða mistök.
- Viðvörun um meðhöndlun: banvænt - lokun + eyðing tafarlaust.
- Öryggi í framkvæmd:
- Samanburður á stöðugum tíma fyrir verify_data og PSK bindiefni (vörn gegn tímaárásum)
- Eyða lykilefni: destroy() á öllum hlutum með lyklum (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), við lokun, banvæn viðvörun, undantekning í handbandi
- DoS vernd: takmarkanir á lengd vottorðskeðjunnar (10), skilaboð eftir handaband, stærð færslu.
- MGM nonce: MSB fyrsta bætisins er hreinsað fyrir ICN (RFC 9058 §3, RFC 9367 §3.3).
- Einkalykillinn fyrir ECDHE og afrit af handabandi eru eytt eftir að handabandi lýkur.
- Lykilgögnum HMAC er eytt eftir notkun (HkdfStreebog, KdfGostR3411_2012_256).
- Takmarkanir:
- Aðeins endurupptöku-PSK (0-RTT og ytri PSK eru ekki studd).
- Aðeins psk_dhe_ke (hreint PSK án ECDHE er ekki stutt).
- HelloRetryRequest (RFC 8446 §4.1.4) er ekki stutt - aðeins einn nefndur hópur er notaður (sjálfgefið er GC256A).
- Aðeins GOST (dulkóðunarsvítur sem ekki eru GOST eru ekki studdar).
- Próf:
- Bókasafnið inniheldur þekkt svörpróf úr RFC 9367 viðauka A.1 (L og S afbrigði) — allt lykiláætlunina, TLSTREE, AEAD og ECDHE. Það stenst einnig öll KAT prófin.
- 4 samþættingarprófanir (sjálfvirk gagnvirkni) í gegnum raunveruleg TCP-tengi.
- Fuzz-prófanir fyrir þáttara: TlsMessageParser (8 aðferðir), TlsDerParser (3 aðferðir), TlsOcspVerifier (1 aðferð), til að tryggja öryggi og draga úr árásarvektor á þáttara.
- Arkitektúrlausnir:
- TlsHandshakeEngine - stöðuvél aftengd frá I/O (fyrir framtíðar JSSE einingu).
- Ofhleðsla á TlsRecord.protect/unprotect í ByteBuffer fyrir NIO/JSSE.
- TLSTREE skyndiminni (TlsTreeCache) - endurútreikningur aðeins á breyttum stigum (RFC 9367).
- InMemoryTlsTransport.Pair er tvíátta par fyrir prófanir og samskipti milli eins ferlis.
Bókasafnið er dreift undir frjálsu leyfi.
Heimild: linux.org.ru
