ΠŸΡŠΡ€Π²Π°Ρ‚Π° вСрсия Π½Π° имплСмСнтацията Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TLS 1.3 Π² Java с GOST Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с RFC 9367

ΠœΠΎΠ΄ΡƒΠ» ΠΊΡ€ΠΈΠΏΡ‚ΠΎ-гост-тлс13 ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° имплСмСнтацията TLS 1.3 (RFC 8446 + RFC 9367) с GOST криптография. Π’Π°Π·ΠΈ вСрсия Π΅ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° вСрсия Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΈ Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° Π·Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°.

Π£Π½ΠΈΠΊΠ°Π»Π½Π° характСристика Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ Π½Π΅ΠΉΠ½Π°Ρ‚Π° чиста Java имплСмСнтация. Всички криптографски ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ инструмСнти Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°, Π±Π΅Π· външни зависимости.

Π’ΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° TLS 1.3 с GOST Π² Java, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ тСстовСтС Π·Π° взаимодСйствиС са свСдСни Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ.

По-Π΄ΠΎΠ»Ρƒ са посочСни Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°.

  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).
  • Π’ΡŠΠ·ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° сСсията: PSK Ρ‡Ρ€Π΅Π· NewSessionTicket (PskStore in-memory, Π΅Π΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°).
  • OCSP Ρ‚Π΅Π»Π±ΠΎΠ΄ΠΈΡ€Π°Π½Π΅: ΡΡŠΡ€Π²ΡŠΡ€ добавя OCSP ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π° към сСртификата.
  • Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ слСд Ρ€ΡŠΠΊΠΎΡΡ‚ΠΈΡΠΊΠ°Π½Π΅: NewSessionTicket (Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π·Π° PSK).
  1. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ:
  • ΠšΠ»ΡŽΡ‡ΠΎΠ² Π³Ρ€Π°Ρ„ΠΈΠΊ: HKDF-Streebog (RFC 5869) ΠΏΡ€Π΅Π· TLS 1.3 (RFC 8446 Β§7.1).
  • Π—Π°Ρ‰ΠΈΡ‚Π° Π½Π° записа: MGM-AEAD (Kuznyechik) с nonce съгласно RFC 8446 Β§5.3.
  • Π•Ρ„ΠΈΠΌΠ΅Ρ€Π½ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ сС ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ слСд ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°.
  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 SocketChannel (Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ Ρ€Π΅ΠΆΠΈΠΌ, ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π΅ΠΌ).
  1. Π ΡŠΠΊΠΎΡΡ‚ΠΈΡΠΊΠ°Π½Π΅ ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ°:
  • TlsHandshakeEngine Π΅ машина Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡΡ‚Π° Π·Π° Ρ€ΡŠΠΊΠΎΡΡ‚ΠΈΡΠΊΠ°Π½Π΅ (ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ I/O). Вя ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° TlsSession ΠΊΠ°Ρ‚ΠΎ оркСстратор ΠΈ Π΅ подходяща Π·Π° интСграция с JSSE (SSLEngine).
  1. API Π½Π° ByteBuffer:
  • TlsRecord.protect/unprotect β€” ΠŸΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½ΠΈΡ Π½Π° ByteBuffer Π·Π° интСграция с Π½ΡƒΠ»Π΅Π²ΠΎ ΠΊΠΎΠΏΠΈΠ΅ с NIO. Π—Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅:
  • Pkcs12Loader β€” Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° PFX (PKCS#12) с PBKDF2-HMAC-SHA256 + AES-256-CBC.
  1. ΠšΡ€Π°ΠΉ Π½Π° сСсията:
  • close_notify - ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ затварянС съгласно ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.
  • Π˜Π·Π±ΡŠΡ€ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΡ€ΠΈ затварянС ΠΈΠ»ΠΈ допусканС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°.
  • Π’Ρ€Π΅Π²ΠΎΠ³Π° ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°: Ρ„Π°Ρ‚Π°Π»Π½Π° - Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ затварянС + ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅.
  1. Бигурност Π½Π° внСдряванСто:
  • БравнСния с постоянно Π²Ρ€Π΅ΠΌΠ΅ Π·Π° verify_data ΠΈ PSK ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‰ΠΈ устройства (Π·Π°Ρ‰ΠΈΡ‚Π° срСщу Π°Ρ‚Π°ΠΊΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ)
  • Π˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»: destroy() Π½Π° всички ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), ΠΏΡ€ΠΈ затварянС, Ρ„Π°Ρ‚Π°Π»Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ handshake
  • 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 (чист PSK Π±Π΅Π· ECDHE Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°).
  • HelloRetryRequest (RFC 8446 Β§4.1.4) Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС само Π΅Π΄Π½Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π° Π³Ρ€ΡƒΠΏΠ° (GC256A ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅).
  • Π‘Π°ΠΌΠΎ ΠΏΠΎ Π“ΠžΠ‘Π’ (Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΏΠΎ Π“ΠžΠ‘Π’).
  1. ВСстванС:
  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° тСстовС с извСстни ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ ΠΎΡ‚ RFC 9367 ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A.1 (L ΠΈ S Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ) - ΠΏΡŠΠ»Π½ΠΈΡΡ‚ списък с ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅, TLSTREE, AEAD ΠΈ ECDHE. Вя ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· пълния Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ KAT тСстовС.
  • 4 ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ тСста (самостоятСлно взаимодСйствиС) Ρ‡Ρ€Π΅Π· Ρ€Π΅Π°Π»Π½ΠΈ TCP сокСти.
  • Fuzz тСстовС Π·Π° парсСри: TlsMessageParser (8 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°), TlsDerParser (3 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°), TlsOcspVerifier (1 ΠΌΠ΅Ρ‚ΠΎΠ΄), Π·Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° сигурността ΠΈ намаляванС Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° Π°Ρ‚Π°ΠΊΠ° Π²ΡŠΡ€Ρ…Ρƒ парсСритС.
  1. АрхитСктурни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:
  • TlsHandshakeEngine - машина Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡΡ‚Π°, ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ 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