Першы выпуск рэалізацыі пратаколу TLS 1.3 на Java з алгарытмамі ДАСТ у адпаведнасці з RFC 9367

модуль crypto-gost-tls13 змяшчае рэалізацыю TLS 1.3 (RFC 8446 + RFC 9367) з ДАСТ-крыптаграфіяй. Гэты рэліз з'яўляецца пачатковай версіяй бібліятэкі і гатовы для ўнутранага выкарыстання.

Асаблівасцю бібліятэкі з'яўляецца рэалізацыя на чыстай Java. Усе крыптаграфічныя аперацыі выконваюцца ўбудаванымі сродкамі бібліятэкі - без знешніх залежнасцяў.

Гэта ў сваім родзе адна з першых адчыненых рэалізацый TLS 1.3 з ДАСТ на Java, таму interop-тэставанне выканана ў мінімальна даступным аб'ёме.

Ніжэй прыведзены магчымасці бібліятэкі.

  1. Пратаколы:
  • Handshake: поўны (client/server), скарочаны (PSK), узаемны (mTLS).
  • ALPN (RFC 7301) - узгадненне пратакола прыкладнога ўзроўню (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - указанне імя сервера для multi-tenant разгортванняў.
  • KeyUpdate (RFC 8446 §4.6.3) - абнаўленне ключоў шыфравання трафіку.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Per-record TLSTREE re-keying – змена ключа шыфравання на кожны TLS-запіс.
  • Фрагментацыя і зборка поціскаў рук і запісаў (RFC 8446 §5.1).
  • Session resumption: PSK праз NewSessionTicket (PskStore in-memory, single-use).
  • Сшыванне OCSP: сервер прыкладвае OCSP-адказ да сертыфіката.
  • Post-handshake messages: NewSessionTicket (захаванне для PSK).
  1. Крыптаграфія:
  • Key schedule: HKDF-Streebog (RFC 5869) па схеме TLS 1.3 (RFC 8446 §7.1).
  • Абарона запісаў: MGM-AEAD (Kuznyechik) з nonce па RFC 8446 §5.3.
  • Эфемерныя ключы заціраюцца пасля выкарыстання.
  1. сертыфікаты:
  • Парсінг X.509v3 (GOST R 34.10-2012) - убудаваны DER-парсер.
  • Валідацыя ланцужка: подпісы, DN (issuer → subject), Basic Constraints, Key Usage, Extended Key * Usage (serverAuth / clientAuth), pathLen.
  • Праверка hostname: dNSName + iPAddress (RFC 6125).
  • Верыфікацыя OCSP-адказаў (RFC 6960).

4.Транспарт:

  • TlsTransport - інтэрфейс.
  • InMemoryTlsTransport – для тэстаў і аднапрацэсных сцэнарыяў (in-memory чарга).
  • SocketTlsTransport - blocking I/O праз java.net.Socket.
  • ChannelTlsTransport - NIO SocketChannel-базаваны транспарт (blocking mode, interruptible).
  1. Пакрокавы handshake:
  • TlsHandshakeEngine - state machine для handshake (адвязаны ад I/O). Выкарыстоўваецца TlsSession як аркестратар; прыдатны для інтэграцыі з JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect - ByteBuffer-перагрузкі для zero-copy інтэграцыі з NIO. Загрузка ключоў:
  • Pkcs12Loader - чытанне PFX (PKCS#12) з PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Завяршэнне сесіі:
  • close_notify - карэктнае закрыццё па пратаколе.
  • Заціранне ключавога матэрыялу пры закрыцці ці памылцы.
  • Апрацоўка alert: fatal - неадкладнае закрыццё + заціранне.
  1. Бяспека рэалізацыі:
  • Constant-time параўнання для verify_data і PSK binders (абарона ад timing attacks)
  • Заціранне ключавога матэрыялу: destroy() на ўсіх аб'ектах з ключамі (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), пры close, fatal alert, exception у handshake
  • Абарона ад DoS: ліміты на даўжыню ланцужкі сертыфікатаў (10), post-handshake messages, памер запісаў.
  • MGM nonce: MSB першага байта чысціцца для ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE-прыватны ключ і транскрыпт handshake знішчаюцца пасля завяршэння handshake.
  • HMAC-ключавы матэрыял заціраецца пасля выкарыстання (HkdfStreebog, KdfGostR3411_2012_256).
  1. абмежаванні:
  • Толькі resumption PSK (0-RTT і external PSK не падтрымліваюцца).
  • Толькі psk_dhe_ke (pure PSK без ECDHE не падтрымліваецца).
  • HelloRetryRequest (RFC 8446 §4.1.4) не падтрымліваецца - выкарыстоўваецца толькі адна named group (GC256A па змаўчанні).
  • Толькі ДАСТ (non-GOST cipher suites не падтрымліваюцца).
  1. Тэставанне:
  • Бібліятэка змяшчае Known Answer Tests з RFC 9367 Appendix A.1 (L і S варыянты) - поўны key schedule, TLSTREE, AEAD, ECDHE. І праходзіць поўны спектр KAT тэстаў.
  • 4 інтэграцыйных тэсту (self-interop) праз рэальныя TCP-сокеты.
  • Фазінг-тэсты для парсераў: TlsMessageParser (8 метадаў), TlsDerParser (3 метаду), TlsOcspVerifier (1 метад), для забеспячэння бяспекі і зніжэння вектара нападаў на парсеры.
  1. Архітэктурныя рашэнні:
  • TlsHandshakeEngine - state machine, адвязаная ад I/O (для будучага модуля JSSE).
  • ByteBuffer-перагрузкі TlsRecord.protect/unprotect для NIO/JSSE.
  • TLSTREE кэш (TlsTreeCache) - пералік толькі якія змяніліся узроўняў (RFC 9367).
  • InMemoryTlsTransport.Pair - двунакіраваная пара для тэстаў і аднапрацэснага ўзаемадзеяння.

Бібліятэка распаўсюджваецца пад свабоднай ліцэнзіяй.

Крыніца: linux.org.ru

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster