Moduli crypto-gost-tls13 përmban një implementim TLS 1.3 (RFC 8446 + RFC 9367) me kriptografi GOST. Ky version është një version fillestar i bibliotekës dhe është i gatshëm për përdorim të brendshëm.
Karakteristika e bibliotekĂ«s Ă«shtĂ« implementimi nĂ« Java tĂ« pastĂ«r. TĂ« gjitha operacionet kriptografike kryhen nga mjetet e integruara tĂ« bibliotekĂ«s â pa varĂ«si tĂ« jashtme.
Kjo është një nga implementimet e para të hapura të TLS 1.3 me GOST në Java, prandaj testimi i interoperabilitetit është realizuar në një shkallë minimale të disponueshme.
Më poshtë janë mundësitë e bibliotekës.
- Protokollat:
- Handshake: i plotë (client/server), i shkurtuar (PSK), i ndërsjellë (mTLS).
- ALPN (RFC 7301) â negociimi i protokollit tĂ« nivelit aplikativ (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) â pĂ«rcaktimi i emrit server pĂ«r implementimet multi-tenant.
- KeyUpdate (RFC 8446 §4.6.3) â pĂ«rditĂ«simi i çelĂ«save tĂ« enkriptimit tĂ« trafikut.
- Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
- Per-record TLSTREE re-keying â ndryshimi i çelĂ«sit tĂ« enkriptimit pĂ«r çdo regjistrim TLS.
- Fraktimi dhe grumbullimi i dorëheqjeve dhe regjistrimeve (RFC 8446 §5.1).
- Rikthimi i seancës: PSK përmes NewSessionTicket (PskStore në memorie, përdorim të vetëm).
- OCSP stapling: server bashkëngjit përgjigjen OCSP në certifikat.
- Post-handshake messages: NewSessionTicket (ruajtja për PSK).
- Kriptografia:
- Plani i çelësit: HKDF-Streebog (RFC 5869) sipas skemës TLS 1.3 (RFC 8446 §7.1).
- Mbrojtja e të dhënave: MGM-AEAD (Kuznyechik) me nonce sipas RFC 8446 §5.3.
- ĂelĂ«sat efemer fshihen pas pĂ«rdorimit.
- Certifikatat:
- Analiza X.509v3 (GOST R 34.10-2012) â parser DER i integruar.
- Validimi i zinxhirit: nĂ«nshkrimet, DN (emitues â subjekt), Kufizimet Bazike, PĂ«rdorimi i ĂelĂ«sit, PĂ«rdorimi i Zgjeruar tĂ« ĂelĂ«sit (serverAuth / clientAuth), pathLen.
- Kontrolli i hostname: dNSName + iPAddress (RFC 6125).
- Verifikimi i përgjigjeve OCSP (RFC 6960).
4.Transporti:
- TlsTransport â ndĂ«rfaqe.
- InMemoryTlsTransport â pĂ«r teste dhe skenarĂ« njĂ«procesorĂ« (kuotĂ« nĂ« memorie).
- SocketTlsTransport â bllokim I/O pĂ«rmes java.net.Socket.
- ChannelTlsTransport â transport i bazuar nĂ« NIO SocketChannel (modalitet bllokimi, ndĂ«rprerĂ«s).
- Handshake hap pas hapi:
- TlsHandshakeEngine â makinĂ« gjendjeje pĂ«r handshake (e ndarĂ« nga I/O). PĂ«rdoret TlsSession si orkestrues; e pĂ«rshtatshme pĂ«r integrim me JSSE (SSLEngine).
- API ByteBuffer:
- TlsRecord.protect/unprotect â mbipĂ«rcaktimet e ByteBuffer pĂ«r integrim zero-copy me NIO. Ngarkimi i çelĂ«save:
- Pkcs12Loader â leximi i PFX (PKCS#12) me PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Përfundimi i seancës:
- close_notify â mbyllje korrekte sipas protokollit.
- Fshirja e materialit të çelësit gjatë mbylljes ose gabimit.
- Trajtimi i alertit: fatal â mbyllje e menjĂ«hershme + fshirje.
- Siguria e implementimit:
- Krahasime me kohë konstante për verify_data dhe PSK binders (mbrojtje nga sulmet e kohës)
- Shkëputja e materialit kryesor: destroy() në të gjitha objektet me çelësa (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), në close, alarmin fatal, përjashtim në handshake
- Mbrojtja nga DoS: kufizime mbi gjatësi e zinxhirit të certifikatave (10), mesazhet post-handshake, madhësia e të dhënave.
- MGM nonce: MSB i byte-it të parë blihet për ICN (RFC 9058 §3, RFC 9367 §3.3).
- ĂelĂ«si privat ECDHE dhe transkripti i handshake shkatĂ«rrohen pas pĂ«rfundimit tĂ« handshake.
- Materiali i çelësit HMAC fshihet pas përdorimit (HkdfStreebog, KdfGostR3411_2012_256).
- Kufizime:
- Vetëm resumption PSK (0-RTT dhe PSK të jashtëzakonshme nuk mbështeten).
- Vetëm psk_dhe_ke (pure PSK pa ECDHE nuk mbështetet).
- HelloRetryRequest (RFC 8446 §4.1.4) nuk mbështetet - përdoret vetëm një grup i emërtuar (GC256A si parazgjedhje).
- Vetëm GOST (pazgjidhjet jo-GOST nuk mbështeten).
- Testimi:
- Biblioteka përmban Testet e Njohura të Përgjigjes nga RFC 9367 Prandah A.1 (varianti L dhe S) - plani i plotë i çelësit, TLSTREE, AEAD, ECDHE. Dhe kalon një gamë të plotë testesh KAT.
- 4 teste integrimi (self-interop) përmes soketeve reale TCP.
- Teste fuzzing për parserët: TlsMessageParser (8 metoda), TlsDerParser (3 metoda), TlsOcspVerifier (1 metodë), për të siguruar sigurinë dhe për të zvogëluar vektorin e sulmeve në parserët.
- Zgjidhjet arkitekturore:
- TlsHandshakeEngine - makinë gjendjeje, e çliruar nga I/O (për modul të ardhshëm JSSE).
- ByteBuffer-ngarkesat TlsRecord.protect/unprotect për NIO/JSSE.
- TLSTREE cache (TlsTreeCache) â ri-kalkulimi vetĂ«m i niveleve tĂ« ndryshuara (RFC 9367).
- InMemoryTlsTransport.Pair â çift dypĂ«rdorimshĂ«m pĂ«r teste dhe ndĂ«rveprim tĂ« njĂ« procesi.
Biblioteka shpërndahet nën një licencë të lirë.
Burimi: linux.org.ru
