Mòdul cripto-gost-tls13 conté la implementació TLS 1.3 (RFC 8446 + RFC 9367) amb criptografia GOST. Aquesta versió és la versió inicial de la biblioteca i està llesta per a ús intern.
Una característica única de la biblioteca és la seva implementació pura en Java. Totes les operacions criptogràfiques es realitzen mitjançant les eines integrades de la biblioteca, sense dependències externes.
Aquesta és una de les primeres implementacions de codi obert de TLS 1.3 amb GOST a Java, per la qual cosa les proves d'interoperabilitat s'han fet en la mesura mínima possible.
A continuació es mostren les capacitats de la biblioteca.
- Protocols:
- Encaixada de mans: completa (client/servidor), curta (PSK), mútua (mTLS).
- ALPN (RFC 7301) - Negociació de protocols de capa d'aplicació (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Indicació de nom servidor per a implementacions multi-tenant.
- KeyUpdate (RFC 8446 §4.6.3): actualització de les claus de xifratge del trànsit.
- Suite de xifratge: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256 bits), CryptoPro-B (512 bits)
- Recodificació TLSTREE per registre: canvi de la clau de xifratge per a cada registre TLS.
- Fragmentació i reassemblatge de handshakes i registres (RFC 8446 §5.1).
- Represa de la sessió: PSK via NewSessionTicket (PskStore en memòria, d'un sol ús).
- Grapat OCSP: servidor прикладывает OCSP-ответ к сертификату.
- Missatges posteriors a la confirmació de connexió: NewSessionTicket (desat per a PSK).
- Criptografia:
- Horari clau: HKDF-Streebog (RFC 5869) sobre TLS 1.3 (RFC 8446 §7.1).
- Protecció de registres: MGM-AEAD (Kuznyechik) amb nonce segons RFC 8446 §5.3.
- Les claus efímeres s'esborren després del seu ús.
- Certificats:
- Anàlisi sintàctica X.509v3 (GOST R 34.10-2012): analitzador DER integrat.
- Cadena de validació: signatures, DN (emissor → assumpte), restriccions bàsiques, ús de clau, ús de clau ampliada * (serverAuth / clientAuth), pathLen.
- Comprovació del nom d'amfitrió: nomDNS + adreçaIP (RFC 6125).
- Verificació de les respostes d'OCSP (RFC 6960).
4.Transport:
- TlsTransport - interfície.
- InMemoryTlsTransport: per a proves i escenaris d'un sol procés (cua en memòria).
- SocketTlsTransport: bloqueig d'E/S a través de java.net.Socket.
- ChannelTlsTransport - Transport basat en NIO SocketChannel (mode de bloqueig, interrompible).
- Encaixada de mans pas a pas:
- TlsHandshakeEngine és una màquina d'estats per a l'intercanvi de dades (desacoblada de les E/S). Utilitza TlsSession com a orquestrador i és adequada per a la integració amb JSSE (SSLEngine).
- API de ByteBuffer:
- TlsRecord.protect/unprotect — Sobrecàrregues de ByteBuffer per a la integració de còpia zero amb NIO. S'estan carregant les claus:
- Pkcs12Loader — llegint PFX (PKCS#12) amb PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Final de la sessió:
- close_notify - tancament correcte segons el protocol.
- Esborrat del material clau en tancar o en cometre un error.
- Alerta de manipulació: fatal - tancament immediat + esborrat.
- Seguretat d'implementació:
- Comparacions en temps constant per a enllaços verify_data i PSK (protecció contra atacs de sincronització)
- Esborrant el material de la clau: destroy() en tots els objectes amb claus (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), en tancar-se, alerta fatal, excepció en la consigna de connexió
- Protecció contra la denegació de servei (DoS): límits en la longitud de la cadena de certificats (10), missatges posteriors a la confirmació de connexió, mida del registre.
- MGM nonce: El MSB del primer byte s'esborra per a ICN (RFC 9058 §3, RFC 9367 §3.3).
- La clau privada de l'ECDHE i la transcripció de la confirmació de connexió es destrueixen un cop finalitzada la confirmació de connexió.
- El material de la clau HMAC s'esborra després del seu ús (HkdfStreebog, KdfGostR3411_2012_256).
- Limitacions:
- Només PSK de represa (no s'admeten 0-RTT ni PSK extern).
- Només psk_dhe_ke (no s'admet PSK pur sense ECDHE).
- No s'admet HelloRetryRequest (RFC 8446 §4.1.4); només s'utilitza un grup amb nom (GC256A per defecte).
- Només GOST (no s'admeten els conjunts de xifratge que no són GOST).
- Prova:
- La biblioteca conté proves de resposta coneguda de l'apèndix A.1 de la RFC 9367 (variants L i S): la programació completa de claus, TLSTREE, AEAD i ECDHE. També supera tota la gamma de proves KAT.
- 4 proves d'integració (autointeroperabilitat) mitjançant sockets TCP reals.
- Proves fuzz per a analitzadors sintàctics: TlsMessageParser (8 mètodes), TlsDerParser (3 mètodes), TlsOcspVerifier (1 mètode), per garantir la seguretat i reduir el vector d'atac als analitzadors sintàctics.
- Solucions arquitectòniques:
- TlsHandshakeEngine - màquina d'estats desacoblada de les E/S (per a futurs mòduls JSSE).
- Sobrecàrregues de ByteBuffer de TlsRecord.protect/unprotect per a NIO/JSSE.
- Memòria cau TLSTREE (TlsTreeCache): recàlcul només dels nivells modificats (RFC 9367).
- InMemoryTlsTransport.Pair és un parell bidireccional per a proves i comunicació d'un sol procés.
La biblioteca es distribueix sota una llicència lliure.
Font: linux.org.ru
