PremiĂšre version de mise en Ɠuvre du protocole TLS 1.3 en Java avec des algorithmes GOST conformĂ©ment Ă  la RFC 9367.

Module crypto-gost-tls13 contient une implĂ©mentation TLS 1.3 (RFC 8446 + RFC 9367) avec la cryptographie GOST. Cette version est la premiĂšre version de la bibliothĂšque et prĂȘte Ă  ĂȘtre utilisĂ©e en interne.

La particularitĂ© de la bibliothĂšque est son implĂ©mentation en Java pur. Toutes les opĂ©rations cryptographiques sont effectuĂ©es Ă  l'aide des moyens intĂ©grĂ©s de la bibliothĂšque — sans dĂ©pendances externes.

C'est l'une des premiÚres implémentations ouvertes de TLS 1.3 avec GOST en Java, donc les tests d'interopérabilité ont été réalisés dans un volume minimum.

Ci-dessous se trouvent les fonctionnalités de la bibliothÚque.

  1. Protocoles :
  • Handshake : complet (client/serveur), rĂ©duit (PSK), mutuel (mTLS).
  • ALPN (RFC 7301) — nĂ©gociation de protocole de couche d'application (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) — spĂ©cification de nom de serveurs pour les dĂ©ploiements multi-locataires.
  • KeyUpdate (RFC 8446 §4.6.3) — mise Ă  jour des clĂ©s de chiffrement du trafic.
  • Suites de chiffrement : TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE : CryptoPro-A (256 bits), CryptoPro-B (512 bits)
  • Re-keying TLSTREE par enregistrement — changement de clĂ© de chiffrement pour chaque enregistrement TLS.
  • Fragmentation et assemblage des poignĂ©es de main et des enregistrements (RFC 8446 §5.1).
  • Reprise de session : PSK via NewSessionTicket (PskStore en mĂ©moire, usage unique).
  • OCSP stapling : serveur attache la rĂ©ponse OCSP au certificat.
  • Messages post-handshake : NewSessionTicket (stockage pour PSK).
  1. Cryptographie :
  • Plan de clĂ© : HKDF-Streebog (RFC 5869) selon le schĂ©ma TLS 1.3 (RFC 8446 §7.1).
  • Protection des enregistrements : MGM-AEAD (Kuznyechik) avec nonce selon RFC 8446 §5.3.
  • Les clĂ©s Ă©phĂ©mĂšres sont effacĂ©es aprĂšs utilisation.
  1. Certificats :
  • Analyse X.509v3 (GOST R 34.10-2012) — analyseur DER intĂ©grĂ©.
  • Validation de la chaĂźne : signatures, DN (Ă©mission → sujet), Contraintes de base, Utilisation de clĂ©, Utilisation de clĂ© Ă©tendue (serverAuth / clientAuth), pathLen.
  • VĂ©rification du nom d'hĂŽte : dNSName + iPAddress (RFC 6125).
  • VĂ©rification des rĂ©ponses OCSP (RFC 6960).

4.Transport :

  • TlsTransport — interface.
  • InMemoryTlsTransport — pour les tests et les scĂ©narios Ă  processus unique (file d'attente en mĂ©moire).
  • SocketTlsTransport — I/O bloquant via java.net.Socket.
  • ChannelTlsTransport — transport basĂ© sur NIO SocketChannel (mode bloquant, interruptible).
  1. Handshake étape par étape :
  • TlsHandshakeEngine — machine d'Ă©tat pour la poignĂ©e de main (dĂ©couple de l'I/O). Utilise TlsSession comme orchestre ; adaptĂ© pour l'intĂ©gration avec JSSE (SSLEngine).
  1. API ByteBuffer :
  • TlsRecord.protect/unprotect — surcharges ByteBuffer pour une intĂ©gration zĂ©ro-copy avec NIO. Chargement des clĂ©s :
  • Pkcs12Loader — lecture PFX (PKCS#12) avec PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. ClĂŽture de session :
  • close_notify — fermeture correcte selon le protocole.
  • Effacement du matĂ©riel clĂ© lors de la fermeture ou d'une erreur.
  • Traitement de l'alerte : fatal — fermeture immĂ©diate + effacement.
  1. Sécurité de l'implémentation :
  • Comparaisons en temps constant pour verify_data et PSK binders (protection contre les attaques par temporisation)
  • Effacement des matĂ©riaux clĂ©s : destroy() sur tous les objets avec des clĂ©s (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), lors de la fermeture, alerte fatale, exception dans l handshake.
  • Protection contre les attaques DoS : limites sur la longueur de la chaĂźne de certificats (10), messages post-handshake, taille des enregistrements.
  • Nonce MGM : le MSB du premier octet est remis Ă  zĂ©ro pour l'ICN (RFC 9058 §3, RFC 9367 §3.3).
  • La clĂ© privĂ©e ECDHE et le transcript du handshake sont dĂ©truits aprĂšs la fin de l handshake.
  • Le matĂ©riel clĂ© HMAC est effacĂ© aprĂšs utilisation (HkdfStreebog, KdfGostR3411_2012_256).
  1. Limitations :
  • Seul le PSK de reprise est supportĂ© (0-RTT et PSK externes ne sont pas pris en charge).
  • Seul psk_dhe_ke est supportĂ© (pure PSK sans ECDHE n'est pas pris en charge).
  • HelloRetryRequest (RFC 8446 §4.1.4) n'est pas supportĂ© — seule un groupe nommĂ© est utilisĂ© (GC256A par dĂ©faut).
  • Seules les suites de chiffrement GOST sont supportĂ©es (les suites non-GOST ne sont pas prises en charge).
  1. Tests :
  • La bibliothĂšque contient des tests de rĂ©ponse connus provenant de l'annexe A.1 du RFC 9367 (versions L et S) — plan clĂ© complet, TLSTREE, AEAD, ECDHE. Elle passe Ă©galement l'ensemble des tests KAT.
  • 4 tests d'intĂ©gration (auto-interop) via des sockets TCP rĂ©els.
  • Tests de fuzzing pour les parseurs : TlsMessageParser (8 mĂ©thodes), TlsDerParser (3 mĂ©thodes), TlsOcspVerifier (1 mĂ©thode), pour assurer la sĂ©curitĂ© et rĂ©duire les vecteurs d'attaque sur les parseurs.
  1. Solutions architecturales :
  • TlsHandshakeEngine — machine d'Ă©tat, dĂ©couplĂ©e de l'I/O (pour le futur module JSSE).
  • Surcharge de ByteBuffer TlsRecord.protect/unprotect pour NIO/JSSE.
  • Cache TLSTREE (TlsTreeCache) — recalcul uniquement des niveaux modifiĂ©s (RFC 9367).
  • InMemoryTlsTransport.Pair — paire bidirectionnelle pour les tests et l'interaction en un seul processus.

La bibliothÚque est distribuée sous une licence libre.

Source : linux.org.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster