Prvi izvod realizacije protokola TLS 1.3 na Javi s GOST algoritmima u skladu s RFC 9367

Modul crypto-gost-tls13 sadrži realizaciju TLS 1.3 (RFC 8446 + RFC 9367) s GOST kriptografijom. Ova verzija je inicijalna verzija biblioteke i spremna je za unutrašnju upotrebu.

Osobitost biblioteke je implementacija na čistoj Javi. Sve kriptografske operacije se izvode ugrađenim sredstvima biblioteke – bez spoljnjih zavisnosti.

Ovo je jedan od prvih otvorenih implementacija TLS 1.3 s GOST-om na Javi, tako da je interop-testiranje obavljeno u minimalnom obimu.

Ispod su navedene mogućnosti biblioteke.

  1. Protokoli:
  • Handshake: potpuni (client/server), skraćeni (PSK), uzajamni (mTLS).
  • ALPN (RFC 7301) — dogovor protokola aplikacijskog nivoa (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) — naziv strežnika za multi-tenant deployment.
  • KeyUpdate (RFC 8446 §4.6.3) — ažuriranje ključeva šifriranja prometa.
  • Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Per-record TLSTREE re-keying — promena ključa šifriranja za svaku TLS evidenciju.
  • Fragmentacija i sastavljanje rukovanja i evidencija (RFC 8446 §5.1).
  • Obnova sesije: PSK preko NewSessionTicket (PskStore u memoriji, za jednokratnu upotrebu).
  • OCSP stapling: strežnik prikazuje OCSP odgovor uz sertifikat.
  • Post-handshake poruke: NewSessionTicket (čuvanje za PSK).
  1. Kriptografija:
  • Ključni raspored: HKDF-Streebog (RFC 5869) prema shemi TLS 1.3 (RFC 8446 §7.1).
  • Zaštita evidencija: MGM-AEAD (Kuznyechik) s nonce prema RFC 8446 §5.3.
  • Ephemer na ključevi se brišu nakon korišćenja.
  1. Certifikati:
  • Parsiranje X.509v3 (GOST R 34.10-2012) — ugrađeni DER parser.
  • Validacija lanca: potpisi, DN (issuer → subject), osnovne restrikcije, upotreba ključa, proširena upotreba ključa (serverAuth / clientAuth), pathLen.
  • Provera hostname: dNSName + iPAddress (RFC 6125).
  • Verifikacija OCSP odgovora (RFC 6960).

4.Transport:

  • TlsTransport — interfejs.
  • InMemoryTlsTransport — za testove i jednoprosesesne scenarije (in-memory red).
  • SocketTlsTransport — blocking I/O preko java.net.Socket.
  • ChannelTlsTransport — transport temeljen na NIO SocketChannel (blocking mode, interruptible).
  1. Postupak rukovanja:
  • TlsHandshakeEngine — state machine za rukovanje (odvojen od I/O). Koristi se TlsSession kao orkestrator; prikladan za integraciju s JSSE (SSLEngine).
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — ByteBuffer preopterećenja za zero-copy integraciju s NIO. Učitavanje ključeva:
  • Pkcs12Loader — čitanje PFX (PKCS#12) s PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. Zatvaranje sesije:
  • close_notify — pravilno zatvaranje prema protokolu.
  • Brišući ključne materijale pri zatvaranju ili grešci.
  • Obrada alert: fatal — trenutno zatvaranje + brisanje.
  1. Sigurnost implementacije:
  • Сравнение с постоянным временем для verify_data и привязок PSK (защита от атак по времени)
  • Стирание ключевого материала: destroy() для всех объектов с ключами (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext) при закрытии, фатальной ошибке, исключении в процессе обмена ключами
  • Защита от DoS: ограничения на длину цепочки сертификатов (10), post-handshake сообщения, размер записей.
  • MGM nonce: старший бит первого байта очищается для ICN (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE-приватный ключ и транскрипт обмена ключами уничтожаются после завершения обмена.
  • HMAC-ключевой материал стирается после использования (HkdfStreebog, KdfGostR3411_2012_256).
  1. Ограничения:
  • Только resumption PSK (0-RTT и внешние PSK не поддерживаются).
  • Только psk_dhe_ke (чистый PSK без ECDHE не поддерживается).
  • HelloRetryRequest (RFC 8446 §4.1.4) не поддерживается — используется только одна именованная группа (GC256A по умолчанию).
  • Только ГОСТ (без-GOST шифры не поддерживаются).
  1. Тестирование:
  • Библиотека содержит известные ответные тесты из приложения A.1 RFC 9367 (варианты L и S) — полный график ключей, TLSTREE, AEAD, ECDHE. И проходит полный спектр тестов KAT.
  • 4 интеграционных теста (self-interop) через реальные TCP-сокеты.
  • Фаззинг-тесты для парсеров: TlsMessageParser (8 методов), TlsDerParser (3 метода), TlsOcspVerifier (1 метод), для повышения безопасности и снижения вектора атак на парсеры.
  1. Архитектурные решения:
  • TlsHandshakeEngine — конечный автомат, отвязанный от I/O (для будущего модуля JSSE).
  • Перегрузки ByteBuffer TlsRecord.protect/unprotect для NIO/JSSE.
  • Кэш TLSTREE (TlsTreeCache) — пересчет только изменившихся уровней (RFC 9367).
  • InMemoryTlsTransport.Pair — двунаправленная пара для тестов и однопроцессного взаимодействия.

Библиотека распространяется под свободной лицензией.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster