Първо издание на реализацията на протокола TLS 1.3 на Java с алгоритмите ГОСТ в съответствие с RFC 9367

Модулът crypto-gost-tls13 съдържа реализация TLS 1.3 (RFC 8446 + RFC 9367) с ГОСТ криптография. Тази версия е началната версия на библиотеката и е готова за вътрешна употреба.

Особеност на библиотеката е реализацията на чиста Java. Всички криптографски операции се извършват с вградените средства на библиотеката — без външни зависимости.

Това е по рода си една от първите отворени реализации на TLS 1.3 с ГОСТ на Java, затова интероп-тестовете са проведени в минимално налично количество.

По-долу са представени възможностите на библиотеката.

  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-бит), CryptoPro-B (512-бит)
  • Per-record TLSTREE re-keying — смяна на ключа за шифроване за всяка TLS запис.
  • Фрагментация и събиране на хендшейкове и записи (RFC 8446 §5.1).
  • Възобновяване на сесии: PSK чрез NewSessionTicket (PskStore in-memory, еднократна употреба).
  • OCSP stapling: сървър прилага OCSP отговор към сертификата.
  • Следхендшейк съобщения: 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), Основни ограничения, Използване на ключа, Разширено използване на ключа * (serverAuth / clientAuth), pathLen.
  • Проверка на име на хост: dNSName + iPAddress (RFC 6125).
  • Верификация на OCSP отговори (RFC 6960).

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

  • TlsTransport — интерфейс.
  • InMemoryTlsTransport — за тестове и еднопроцесорни сценарии (in-memory опашка).
  • SocketTlsTransport — блокиращо I/O чрез java.net.Socket.
  • ChannelTlsTransport — NIO SocketChannel-базиран транспорт (блокиращ режим, прекъсваем).
  1. Стъпков хендшейк:
  • TlsHandshakeEngine — машина на състояния за хендшейк (отделена от 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 — правилно затваряне по протокола.
  • Изтриване на ключовия материал при затваряне или грешка.
  • Обработка на предупреждения: fatal — незабавно затваряне + изтриване.
  1. Сигурност на реализацията:
  • Сравнение за постоянно време за verify_data и PSK binders (защита от времеви атаки)
  • Затърсване на ключов материал: destroy() на всички обекти с ключове (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext) при close, fatal alert, exception в handshake.
  • Защита от DoS: лимити за дължината на веригите със сертификати (10), post-handshake съобщения, размер на записите.
  • 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 (чист 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 варианти) — пълен ключов график, 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