TLS 1.3 protokola ievieÅ”anas pirmais laidiens Java valodā ar GOST algoritmiem saskaņā ar RFC 9367

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.

  1. 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).
  1. 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.
  1. 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).
  1. 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).
  1. 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.
  1. 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.
  1. 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).
  1. 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).
  1. 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.
  1. 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

Iegādājieties uzticamu mitināŔanu vietnēm ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa vietņu mitināŔanu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster