Modulis crypto-gost-tls13 ietver ievieÅ”anu TLS 1.3 (RFC 8446 + RFC 9367) ar GOST kriptogrÄfiju. Å Ä« versija ir bibliotÄkas sÄkotnÄjÄ versija, un tÄ ir gatava iekÅ”Äjai lietoÅ”anai.
BibliotÄkas unikÄla iezÄ«me ir tÄs pilnÄ«ga Java implementÄcija. Visas kriptogrÄfiskÄs operÄcijas tiek veiktas, izmantojot bibliotÄkas iebÅ«vÄtos rÄ«kus, bez ÄrÄjÄm atkarÄ«bÄm.
Å Ä« ir viena no pirmajÄm TLS 1.3 atvÄrtÄ pirmkoda ievieÅ”anÄm ar GOST valodÄ Java, tÄpÄc savietojamÄ«bas testÄÅ”ana ir veikta pÄc iespÄjas minimÄlÄ apjomÄ.
ZemÄk ir norÄdÄ«tas bibliotÄkas iespÄjas.
- Protokoli:
- Rokasspiediens: pilns (klients/serveris), Ä«ss (PSK), savstarpÄjs (mTLS).
- ALPN (RFC 7301) ā lietojumprogrammu slÄÅa protokola sarunas (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) ā nosaukuma norÄde serveris vairÄku nomnieku izvietoÅ”anai.
- KeyUpdate (RFC 8446 §4.6.3) ā datplÅ«smas Å”ifrÄÅ”anas atslÄgu atjauninÄÅ”ana.
- Å ifrÄÅ”anas komplekti: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256 bitu), CryptoPro-B (512 bitu)
- TLSTREE atkÄrtota Å”ifrÄÅ”ana katram ierakstam ā Å”ifrÄÅ”anas atslÄgas maiÅa katram TLS ierakstam.
- Rokasspiedienu un ierakstu fragmentÄcija un atkÄrtota salikÅ”ana (RFC 8446 §5.1).
- Sesijas atsÄkÅ”ana: PSK, izmantojot NewSessionTicket (PskStore atmiÅÄ, vienreizÄjai lietoÅ”anai).
- OCSP skavoÅ”ana: serveri pievieno OCSP atbildi sertifikÄtam.
- ZiÅojumi pÄc rokasspiediena: NewSessionTicket (saglabÄt PSK).
- KriptogrÄfija:
- Galvenais grafiks: HKDF-Streebog (RFC 5869) pa TLS 1.3 (RFC 8446 §7.1).
- Ieraksta aizsardzÄ«ba: MGM-AEAD (Kuznyechik) ar nonce saskaÅÄ ar RFC 8446 §5.3.
- Pagaidu atslÄgas tiek dzÄstas pÄc lietoÅ”anas.
- SertifikÄti:
- X.509v3 parsÄÅ”ana (GOST R 34.10-2012) ā iebÅ«vÄts DER parsÄtÄjs.
- ValidÄcijas Ä·Äde: paraksti, DN (izdevÄjs ā subjekts), pamata ierobežojumi, atslÄgas lietojums, paplaÅ”inÄta atslÄgas * lietojums (serverAuth / clientAuth), pathLen.
- Resursdatora nosaukuma pÄrbaude: dNSName + iPAddress (RFC 6125).
- OCSP atbilžu verifikÄcija (RFC 6960).
4.Transports:
- TlsTransport ā saskarne.
- InMemoryTlsTransport ā testiem un viena procesa scenÄrijiem (rinda atmiÅÄ).
- SocketTlsTransport ā I/O bloÄ·ÄÅ”ana, izmantojot java.net.Socket.
- ChannelTlsTransport ā NIO Socket Channel bÄzes transports (bloÄ·ÄÅ”anas režīms, pÄrtraucams).
- Soli pa solim rokasspiediens:
- TlsHandshakeEngine ir stÄvokļa maŔīna rokasspiedienam (atvienota no I/O). TÄ izmanto TlsSession kÄ orÄ·estrÄtÄju un ir piemÄrota integrÄcijai ar JSSE (SSLEngine).
- ByteBuffer API:
- TlsRecord.protect/unprotect ā ByteBuffer pÄrslogo, lai nodroÅ”inÄtu integrÄciju bez kopÄÅ”anas ar NIO. IelÄdÄ atslÄgas:
- Pkcs12Loader ā PFX (PKCS#12) nolasīŔana ar PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Sesijas beigas:
- close_notify ā pareiza aizvÄrÅ”ana saskaÅÄ ar protokolu.
- AtslÄgas materiÄla noslaucīŔana aizverot vai pieļaujot kļūdu.
- ApstrÄdes brÄ«dinÄjums: fatÄls ā tÅ«lÄ«tÄja aizvÄrÅ”ana + dzÄÅ”ana.
- IevieŔanas droŔība:
- Konstanta laika salÄ«dzinÄjumi verify_data un PSK saistvielÄm (aizsardzÄ«ba pret laika uzbrukumiem)
- AtslÄgas materiÄla dzÄÅ”ana: destroy() visiem objektiem ar atslÄgÄm (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), aizvÄrÅ”anas brÄ«dÄ«, fatÄls brÄ«dinÄjums, izÅÄmums rokasspiedienÄ
- DoS aizsardzÄ«ba: sertifikÄtu Ä·Ädes garuma ierobežojumi (10), ziÅojumi pÄc sasveicinÄÅ”anÄs, ieraksta lielums.
- MGM nonce: PirmÄ baita MSB tiek notÄ«rÄ«ts ICN vajadzÄ«bÄm (RFC 9058 §3, RFC 9367 §3.3).
- PÄc rokasspiediena pabeigÅ”anas ECDHE privÄtÄ atslÄga un rokasspiediena transkripts tiek iznÄ«cinÄti.
- HMAC atslÄgas materiÄls tiek dzÄsts pÄc lietoÅ”anas (HkdfStreebog, KdfGostR3411_2012_256).
- Ierobežojumi:
- Tikai atsÄkÅ”anas PSK (0-RTT un ÄrÄjais PSK netiek atbalstÄ«ti).
- Tikai psk_dhe_ke (tīrs PSK bez ECDHE netiek atbalstīts).
- HelloRetryRequest (RFC 8446 §4.1.4) netiek atbalstÄ«ts ā tiek izmantota tikai viena nosaukta grupa (pÄc noklusÄjuma GC256A).
- Tikai GOST (Å”ifrÄÅ”anas komplekti, kas nav GOST, netiek atbalstÄ«ti).
- PÄrbaude:
- BibliotÄkÄ ir iekļauti zinÄmo atbilžu testi no RFC 9367 A.1. pielikuma (L un S varianti) ā pilns atslÄgu grafiks, TLSTREE, AEAD un ECDHE. TÄ arÄ« iztur pilnu KAT testu klÄstu.
- 4 integrÄcijas testi (paÅ”savietojamÄ«ba), izmantojot reÄlas TCP ligzdas.
- ParsÄtÄju neprecizitÄtes testi: TlsMessageParser (8 metodes), TlsDerParser (3 metodes), TlsOcspVerifier (1 metode), lai nodroÅ”inÄtu droŔību un samazinÄtu uzbrukuma vektoru parsÄtÄjiem.
- ArhitektÅ«ras risinÄjumi:
- TlsHandshakeEngine ā stÄvokļa maŔīna, kas ir atvienota no I/O (nÄkotnes JSSE modulim).
- ByteBuffer pÄrslogo TlsRecord.protect/unprotect failu NIO/JSSE vidÄ.
- TLSTREE keÅ”atmiÅa (TlsTreeCache) ā tikai mainÄ«to lÄ«meÅu pÄrrÄÄ·inÄÅ”ana (RFC 9367).
- InMemoryTlsTransport.Pair ir divvirzienu pÄris testiem un viena procesa saziÅai.
BibliotÄka tiek izplatÄ«ta saskaÅÄ ar bezmaksas licenci.
Avots: linux.org.ru
