RFC 9367 сәйкес ГОСТ алгоритмдерімен Java тілінде TLS 1.3 хаттамасын іске асырудың алғашқы нұсқасы

Модуль crypto-gost-tls13 іске асыруды қамтиды TLS 1.3 (RFC 8446 + RFC 9367) ГОСТ криптографиясымен. Бұл шығарылым кітапхананың бастапқы нұсқасы болып табылады және ішкі пайдалануға дайын.

Кітапхананың бірегей ерекшелігі - оның таза Java-да жүзеге асырылуы. Барлық криптографиялық операциялар кітапхананың кіріктірілген құралдарын пайдаланып, сыртқы тәуелділіктерсіз орындалады.

Бұл Java тіліндегі GOST бар TLS 1.3 алғашқы ашық бастапқы кодты іске асыруларының бірі, сондықтан өзара әрекеттесу тестілеуі мүмкіндігінше минималды деңгейде жүргізілді.

Төменде кітапхананың мүмкіндіктері берілген.

  1. Протоколдар:
  • Қол алысу: толық (клиент/сервер), қысқа (PSK), өзара (mTLS).
  • ALPN (RFC 7301) - Қолданбалы деңгей хаттамасының келіссөздері (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Аты-жөнін көрсету сервер көп жалға алушылы орналастырулар үшін.
  • KeyUpdate (RFC 8446 §4.6.3) – трафикті шифрлау кілттерін жаңарту.
  • Шифрлар жинағы: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-бит), CryptoPro-B (512-бит)
  • TLSTREE жазбасы үшін қайта кілттеу — әрбір TLS жазбасы үшін шифрлау кілтін өзгерту.
  • Қол алысулар мен жазбаларды фрагментациялау және қайта құрастыру (RFC 8446 §5.1).
  • Сеансты қайта бастау: NewSessionTicket арқылы PSK (PskStore жадында, бір реттік пайдалану).
  • OCSP степлерлеу: сервер сертификатқа OCSP жауабын қосады.
  • Қол алысудан кейінгі хабарламалар: NewSessionTicket (PSK үшін сақтау).
  1. Криптография:
  • Негізгі кесте: TLS 1.3 (RFC 8446 §7.1) арқылы HKDF-Streebog (RFC 5869).
  • Жазбаларды қорғау: RFC 8446 §5.3 сәйкес NONS-пен MGM-AEAD (Kuznyechik).
  • Уақытша кілттер қолданылғаннан кейін өшіріледі.
  1. Сертификаттар:
  • X.509v3 талдауы (ГОСТ Р 34.10-2012) — кіріктірілген DER талдаушысы.
  • Тексеру тізбегі: қолтаңбалар, DN (эмитент → тақырып), Негізгі шектеулер, Кілтті пайдалану, Кеңейтілген Кілтті пайдалану (serverAuth / clientAuth), pathLen.
  • Хост атауын тексеру: dNSName + iPAddress (RFC 6125).
  • OCSP жауаптарын тексеру (RFC 6960).

4.Көлік:

  • TlsTransport - интерфейсі.
  • InMemoryTlsTransport - тестілер және бір процесті сценарийлер үшін (жад ішіндегі кезек).
  • SocketTlsTransport — java.net.Socket арқылы енгізу/шығаруды бұғаттау.
  • ChannelTlsTransport - NIO SocketАрнаға негізделген тасымалдау (бұғаттау режимі, үзіліссіз).
  1. Қол алысудың кезең-кезеңімен:
  • TlsHandshakeEngine - қол алысуға арналған күй машинасы (енгізу/шығарудан ажыратылған). Ол TlsSession-ды оркестратор ретінде пайдаланады және JSSE (SSLEngine)-мен интеграциялауға жарамды.
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — NIO-мен нөлдік көшірме интеграциясы үшін ByteBuffer шамадан тыс жүктеледі. Кілттерді жүктеу:
  • Pkcs12Loader — PBKDF2-HMAC-SHA256 + AES-256-CBC көмегімен PFX (PKCS#12) оқу.
  1. Сессияның соңы:
  • close_notify - хаттамаға сәйкес дұрыс жабу.
  • Жабу немесе қателік жіберу кезінде негізгі материалды сүрту.
  • Басқару туралы ескерту: өлімге әкелуі мүмкін - дереу жабу + өшіру.
  1. Іске асыру қауіпсіздігі:
  • verify_data және PSK байланыстырушылары үшін тұрақты уақыт салыстырулары (уақыт шабуылдарынан қорғау)
  • Кілт материалын өшіру: кілттері бар барлық нысандарда (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext) destroy(), жабу кезінде, өлімге әкелетін ескерту, қол алысу кезіндегі ерекшелік
  • DoS қорғанысы: сертификат тізбегінің ұзындығына (10), қол алысудан кейінгі хабарламаларға, жазба өлшеміне шектеулер.
  • MGM nonce: Бірінші байттың MSB ICN үшін тазартылады (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE құпия кілті және қол алысу транскрипті қол алысу аяқталғаннан кейін жойылады.
  • HMAC кілтінің материалы пайдаланылғаннан кейін өшіріледі (HkdfStreebog, KdfGostR3411_2012_256).
  1. Шектеулер:
  • Тек PSK қайта іске қосылады (0-RTT және сыртқы PSK қолдау көрсетілмейді).
  • Тек psk_dhe_ke (ECDHE жоқ таза PSK қолдау көрсетілмейді).
  • HelloRetryRequest (RFC 8446 §4.1.4) қолдау көрсетілмейді - тек бір аталған топ пайдаланылады (әдепкі бойынша GC256A).
  • Тек ГОСТ бойынша (ГОСТ емес шифрлар жиынтығы қолдау көрсетілмейді).
  1. Тестілеу:
  • Кітапханада RFC 9367 A.1 қосымшасынан алынған белгілі жауап тесттері (L және S нұсқалары) — толық кілт кестесі, TLSTREE, AEAD және ECDHE бар. Сондай-ақ, ол KAT тесттерінің толық ауқымынан өтеді.
  • Нақты TCP сокеттері арқылы 4 интеграциялық тест (өзін-өзі интероперациялау).
  • Қауіпсіздікті қамтамасыз ету және парсерлерге шабуыл векторын азайту үшін парсерлерге арналған Fuzz тесттері: TlsMessageParser (8 әдіс), TlsDerParser (3 әдіс), TlsOcspVerifier (1 әдіс).
  1. Сәулеттік шешімдер:
  • TlsHandshakeEngine - күй машинасы енгізу/шығарудан ажыратылған (болашақ JSSE модулі үшін).
  • NIO/JSSE үшін TlsRecord.protect/unprotect файлының ByteBuffer шамадан тыс жүктелуі.
  • TLSTREE кэші (TlsTreeCache) - тек өзгертілген деңгейлерді қайта есептеу (RFC 9367).
  • InMemoryTlsTransport.Pair - тестілеу және бір процесті байланыстыру үшін екі бағытты жұп.

Кітапхана тегін лицензия бойынша таратылады.

Ақпарат көзі: linux.org.ru

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster