A prima versione di l'implementazione di u protocolu TLS 1.3 in Java cĂš algoritmi GOST in cunfurmitĂ  cĂš RFC 9367

Modulu crypto-gost-tls13 cuntene l'implementazione TLS 1.3 (RFC 8446 + RFC 9367) cÚ a crittografia GOST. Questa versione hè a versione iniziale di a biblioteca è hè pronta per l'usu internu.

Una caratteristica unica di a biblioteca hè a so implementazione pura in Java. Tutte l'operazioni crittografiche sò realizate cÚ l'arnesi integrati di a biblioteca, senza dipendenze esterne.

Questa hè una di e prime implementazioni open source di TLS 1.3 cÚ GOST in Java, dunque i testi d'interoperabilità sò stati fatti à u minimu pussibule.

QuÏ sottu sò e capacità di a biblioteca.

  1. Protocolli:
  • Stretta di manu: cumpleta (client/server), corta (PSK), mutuale (mTLS).
  • ALPN (RFC 7301) - Negoziazione di u Protocolu di u Livellu di l'Applicazione (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Indicazione di u nome servitore per implementazioni multi-tenant.
  • KeyUpdate (RFC 8446 §4.6.3) – aghjurnamentu di e chjave di crittografia di u trafficu.
  • Suite di cifratura: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Ricodificazione TLSTREE per record - cambiamentu di a chjave di crittografia per ogni record TLS.
  • Frammentazione è riassemblaggio di strette di manu è registrazioni (RFC 8446 §5.1).
  • Ripresa di sessione: PSK via NewSessionTicket (PskStore in memoria, usu unicu).
  • Agrafatura OCSP: servitore aghjusta a risposta OCSP Ă  u certificatu.
  • Missaghji dopu Ă  a stretta di manu: NewSessionTicket (salvu per PSK).
  1. Crittografia:
  • Calendariu chjave: HKDF-Streebog (RFC 5869) annantu Ă  TLS 1.3 (RFC 8446 §7.1).
  • Prutezzione di i registri: MGM-AEAD (Kuznyechik) cĂš nonce secondu RFC 8446 §5.3.
  • E chjave effimere sò cancellate dopu l'usu.
  1. Certificati:
  • Analisi X.509v3 (GOST R 34.10-2012) — parser DER integratu.
  • Catena di validazione: firme, DN (emittente → sughjettu), Vincoli di basa, Usu di a chjave, Usu estesu di a chjave * (serverAuth / clientAuth), pathLen.
  • Verificazione di u nome di l'ospite: dNSName + iPAddress (RFC 6125).
  • Verificazione di e risposte OCSP (RFC 6960).

4.Trasportu:

  • TlsTransport - interfaccia.
  • InMemoryTlsTransport - per i testi è i scenarii di prucessu unicu (coda in memoria).
  • SocketTlsTransport — bluccĂ  I/O via java.net.Socket.
  • ChannelTlsTransport - Trasportu basatu annantu Ă  u canale NIO Socket (modalitĂ  di bloccu, interrompibile).
  1. Stretta di manu passu Ă  passu:
  • TlsHandshakeEngine hè una macchina Ă  stati per handshake (disaccoppiata da I/O). Utilizza TlsSession cum'è orchestratore è hè adatta per l'integrazione cĂš JSSE (SSLEngine).
  1. API di ByteBuffer:
  • TlsRecord.protect/unprotect — Sovraccarichi di ByteBuffer per l'integrazione Ă  copia zero cĂš NIO. Caricamentu di chjave:
  • Pkcs12Loader — lettura di PFX (PKCS#12) cĂš PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Fine di a sessione:
  • close_notify - chjusura curretta secondu u protocolu.
  • SguassĂ  u materiale chjave quandu si chjude o si face un errore.
  • Alerta di gestione: fatale - chjusura immediata + cancellazione.
  1. Sicurezza di l'implementazione:
  • Paraguni in tempu custante per verify_data è i raccoglitori PSK (prutezzione contr'Ă  l'attacchi di timing)
  • SguassĂ  u materiale di a chjave: destroy() nant'Ă  tutti l'uggetti cĂš chjave (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), Ă  a chjusura, alerta fatale, eccezzione in handshake
  • Prutezzione DoS: limiti nantu Ă  a lunghezza di a catena di certificati (10), missaghji post-handshake, dimensione di u record.
  • MGM nonce: U MSB di u primu byte hè sbulicatu per ICN (RFC 9058 §3, RFC 9367 §3.3).
  • A chjave privata ECDHE è a trascrizione di a stretta di manu sò distrutte dopu Ă  a fine di a stretta di manu.
  • U materiale di a chjave HMAC hè sguassatu dopu l'usu (HkdfStreebog, KdfGostR3411_2012_256).
  1. Limitazioni:
  • Solu PSK di ripresa (0-RTT è PSK esternu Ăšn sò micca supportati).
  • Solu psk_dhe_ke (PSK puru senza ECDHE Ăšn hè micca supportatu).
  • HelloRetryRequest (RFC 8446 §4.1.4) Ăšn hè micca supportatu - solu un gruppu numinatu hè utilizatu (GC256A per difettu).
  • Solu GOST (e suite di cifratura non-GOST Ăšn sò micca supportate).
  1. Testu:
  • A biblioteca cuntene Testi di Risposta Cunnisciuta da RFC 9367 Appendice A.1 (varianti L è S) - a pianificazione chjave cumpleta, TLSTREE, AEAD è ECDHE. Supera ancu a gamma completa di test KAT.
  • 4 testi d'integrazione (autointeroperabilitĂ ) via socket TCP veri.
  • Test fuzz per i parser: TlsMessageParser (8 metudi), TlsDerParser (3 metudi), TlsOcspVerifier (1 metudu), per assicurĂ  a sicurezza è riduce u vettore d'attaccu nantu Ă  i parser.
  1. Soluzioni architettoniche:
  • TlsHandshakeEngine - macchina Ă  stati disaccoppiata da I/O (per u futuru modulu JSSE).
  • Sovraccarichi di ByteBuffer di TlsRecord.protect/unprotect per NIO/JSSE.
  • Cache TLSTREE (TlsTreeCache) - ricalculu solu di i livelli mudificati (RFC 9367).
  • InMemoryTlsTransport.Pair hè una coppia bidirezionale per i testi è a cumunicazione Ă  prucessu unicu.

A biblioteca hè distribuita sottu una licenza gratuita.

Source: linux.org.ru

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster