Modul kripto-gost-tls13 përmban zbatimin TLS 1.3 (RFC 8446 + RFC 9367) me kriptografi GOST. Ky version është versioni fillestar i bibliotekës dhe është gati për përdorim të brendshëm.
Një veçori unike e bibliotekës është implementimi i saj i pastër në Java. Të gjitha operacionet kriptografike kryhen duke përdorur mjetet e integruara të bibliotekës, pa varësi të jashtme.
Ky është një nga implementimet e para me burim të hapur të TLS 1.3 me GOST në Java, kështu që testimi i ndërveprimit është bërë në masën minimale të mundshme.
Më poshtë janë aftësitë e bibliotekës.
- Protokollet:
- Shtrëngim duarsh: i plotë (klient/server), i shkurtër (PSK), i ndërsjellë (mTLS).
- ALPN (RFC 7301) - Negocimi i Protokollit të Shtresës së Aplikacionit (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Treguesi i Emrit server për vendosjet me shumë qiramarrës.
- KeyUpdate (RFC 8446 §4.6.3) â pĂ«rditĂ«simi i çelĂ«save tĂ« enkriptimit tĂ« trafikut.
- Kompletet e shifrave: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
- Ri-çelĂ«simi TLSTREE pĂ«r çdo regjistrim â ndryshimi i çelĂ«sit tĂ« enkriptimit pĂ«r çdo regjistrim TLS.
- Fragmentimi dhe rimontimi i shtrëngimeve të duarve dhe i të dhënave (RFC 8446 §5.1).
- Rifillimi i sesionit: PSK nëpërmjet NewSessionTicket (PskStore në memorie, për përdorim të vetëm).
- Kapja OCSP: server shton përgjigjen OCSP në certifikatë.
- Mesazhe pas shtrëngimit të dorës: NewSessionTicket (ruaj për PSK).
- Kriptografia:
- Grafiku kryesor: HKDF-Streebog (RFC 5869) mbi TLS 1.3 (RFC 8446 §7.1).
- Mbrojtja e regjistrimit: MGM-AEAD (Kuznyechik) me nonce sipas RFC 8446 §5.3.
- ĂelĂ«sat e shkurtĂ«r fshihen pas pĂ«rdorimit.
- Certifikatat:
- Analiza X.509v3 (GOST R 34.10-2012) â analizues DER i integruar.
- Zinxhiri i validimit: nĂ«nshkrimet, DN (lĂ«shuesi â subjekti), Kufizimet BazĂ«, PĂ«rdorimi i ĂelĂ«sit, PĂ«rdorimi i ĂelĂ«sit tĂ« Zgjeruar * (serverAuth / clientAuth), pathLen.
- Kontrolli i emrit të hostit: dNSName + iPAddress (RFC 6125).
- Verifikimi i përgjigjeve OCSP (RFC 6960).
4.Transport:
- TlsTransport - ndërfaqe.
- InMemoryTlsTransport - për teste dhe skenarë me një proces të vetëm (radhë në memorie).
- SocketTlsTransport â bllokimi i hyrjeve/daljeve mbi java.net.Socket.
- ChannelTlsTransport - Transporti i bazuar në NIO SocketChannel (modaliteti i bllokimit, i ndërprerë).
- Shtrëngim duarsh hap pas hapi:
- TlsHandshakeEngine është një makinë gjendjeje për handshake (e shkëputur nga I/O). Përdor TlsSession si orkestrues dhe është i përshtatshëm për integrim me JSSE (SSLEngine).
- API-ja e ByteBuffer:
- TlsRecord.protect/unprotect â ByteBuffer mbingarkon pĂ«r integrimin zero-kopje me NIO. Ngarkimi i çelĂ«save:
- Pkcs12Loader â leximi i PFX (PKCS#12) me PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Fundi i seancës:
- close_notify - mbyllje e saktë sipas protokollit.
- Fshirja e materialit të çelësit gjatë mbylljes ose gjatë bërjes së një gabimi.
- Alarm trajtimi: fatal - mbyllje e menjëhershme + fshirje.
- Siguria e implementimit:
- Krahasime në kohë konstante për lidhësit verify_data dhe PSK (mbrojtje kundër sulmeve të kohës)
- Fshirja e materialit të çelësit: destroy() në të gjitha objektet me çelësa (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), në mbyllje, alarm fatal, përjashtim në handshake
- Mbrojtja DoS: kufizime në gjatësinë e zinxhirit të certifikatave (10), mesazhet pas shtrëngimit të dorës, madhësia e regjistrimit.
- MGM nonce: MSB e bajtit të parë pastrohet për ICN (RFC 9058 §3, RFC 9367 §3.3).
- ĂelĂ«si privat ECDHE dhe transkripti i shtrĂ«ngimit tĂ« dorĂ«s shkatĂ«rrohen pasi tĂ« pĂ«rfundojĂ« shtrĂ«ngimi i dorĂ«s.
- Materiali i çelësit HMAC fshihet pas përdorimit (HkdfStreebog, KdfGostR3411_2012_256).
- kufizimet:
- Vetëm rifillimi i PSK (0-RTT dhe PSK i jashtëm nuk mbështeten).
- Vetëm psk_dhe_ke (PSK i pastër pa ECDHE nuk mbështetet).
- HelloRetryRequest (RFC 8446 §4.1.4) nuk mbështetet - përdoret vetëm një grup i emëruar (GC256A si parazgjedhje).
- Vetëm GOST (paketat e shifrave jo-GOST nuk mbështeten).
- Duke testuar:
- Biblioteka përmban Teste me Përgjigje të Njohura nga Shtojca A.1 e RFC 9367 (variantet L dhe S) - skema e plotë e çelësave, TLSTREE, AEAD dhe ECDHE. Gjithashtu kalon gamën e plotë të testeve KAT.
- 4 teste integrimi (vetë-ndërveprim) nëpërmjet soketave reale TCP.
- Teste fuzz për analizuesit: TlsMessageParser (8 metoda), TlsDerParser (3 metoda), TlsOcspVerifier (1 metodë), për të siguruar sigurinë dhe për të zvogëluar vektorin e sulmit mbi analizuesit.
- Zgjidhje arkitekturore:
- TlsHandshakeEngine - makineri gjendjesh e shkëputur nga I/O (për modulin e ardhshëm JSSE).
- Mbingarkesa të ByteBuffer të TlsRecord.protect/unprotect për NIO/JSSE.
- Memoria e përkohshme TLSTREE (TlsTreeCache) - rillogaritja vetëm e niveleve të ndryshuara (RFC 9367).
- InMemoryTlsTransport.Pair është një çift dypalësh për teste dhe komunikim me një proces të vetëm.
Biblioteka shpërndahet sipas një licence falas.
Burimi: linux.org.ru
