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