RFC 9367-yə uyğun olaraq GOST alqoritmləri ilə Java-da TLS 1.3 protokolunun ilk versiyası

Modul kripto-gost-tls13 tətbiqini ehtiva edir TLS 1.3 (RFC 8446 + RFC 9367) GOST kriptoqrafiyası ilə. Bu buraxılış kitabxananın ilkin versiyasıdır və daxili istifadə üçün hazırdır.

Kitabxananın unikal xüsusiyyəti onun təmiz Java tətbiqidir. Bütün kriptoqrafik əməliyyatlar kitabxananın daxili alətləri vasitəsilə və heç bir xarici asılılıq olmadan yerinə yetirilir.

Bu, Java-da GOST ilə TLS 1.3-ün ilk açıq mənbəli tətbiqlərindən biridir, buna görə də qarşılıqlı test mümkün olan minimum dərəcədə aparılmışdır.

Aşağıda kitabxananın imkanları verilmişdir.

  1. Protokollar:
  • Əl sıxma: tam (klient/server), qısa (PSK), qarşılıqlı (mTLS).
  • ALPN (RFC 7301) - Tətbiqi Səviyyə Protokolu Danışıqları (HTTP/2, HTTP/1.1).
  • SNI (RFC 6066) - Ad Göstəricisi server çoxkirayəçili yerləşdirmələr üçün.
  • KeyUpdate (RFC 8446 §4.6.3) – trafik şifrələmə açarlarının yenilənməsi.
  • Şifrə dəstləri: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
  • ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
  • Hər qeyd üçün TLSTREE yenidən açarlaşdırma — hər TLS qeydi üçün şifrələmə açarının dəyişdirilməsi.
  • Əl sıxışmalarının və qeydlərin fraqmentləşdirilməsi və yenidən yığılması (RFC 8446 §5.1).
  • Sessiyanın bərpası: NewSessionTicket vasitəsilə PSK (PskStore yaddaşda, birdəfəlik istifadə üçün).
  • OCSP zımbalama: server OCSP cavabını sertifikata əlavə edir.
  • Əl sıxışma sonrası mesajlar: NewSessionTicket (PSK üçün yadda saxla).
  1. Kriptoqrafiya:
  • Əsas cədvəl: TLS 1.3 (RFC 8446 §7.1) üzərindən HKDF-Streebog (RFC 5869).
  • Qeydlərin qorunması: RFC 8446 §5.3-ə uyğun olaraq nonce ilə MGM-AEAD (Kuznyechik).
  • Qeyri-müəyyən düymələr istifadədən sonra silinir.
  1. Sertifikatlar:
  • X.509v3 təhlili (GOST R 34.10-2012) — daxili DER təhlilçisi.
  • Doğrulama zənciri: imzalar, DN (emitent → mövzu), Əsas Məhdudiyyətlər, Açar İstifadəsi, Genişləndirilmiş Açar * İstifadəsi (serverAuth / clientAuth), pathLen.
  • Host adının yoxlanılması: dNSName + iPAddress (RFC 6125).
  • OCSP cavablarının yoxlanılması (RFC 6960).

4.Nəqliyyat:

  • TlsTransport - interfeys.
  • InMemoryTlsTransport - testlər və tək prosesli ssenarilər (yaddaşdaxili növbə) üçün.
  • SocketTlsTransport — java.net.Socket üzərindən giriş/çıxışı bloklayır.
  • ChannelTlsNəqliyyat - NIO SocketKanal əsaslı nəqliyyat (bloklama rejimi, kəsilə bilən).
  1. Addım-addım əl sıxma:
  • TlsHandshakeEngine, əl sıxma üçün bir vəziyyət maşınıdır (Giriş/Çıxışdan ayrılmışdır). Orkestrator kimi TlsSession-dan istifadə edir və JSSE (SSLEngine) ilə inteqrasiya üçün uyğundur.
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — NIO ilə sıfır surət inteqrasiyası üçün ByteBuffer həddindən artıq yüklənir. Açarları yükləyir:
  • Pkcs12Loader — PBKDF2-HMAC-SHA256 + AES-256-CBC ilə PFX (PKCS#12) oxuyur.
  1. Sessiyanın sonu:
  • close_notify - protokola uyğun olaraq düzgün bağlanma.
  • Bağlanarkən və ya səhv edərkən əsas materialın silinməsi.
  • İdarəetmə xəbərdarlığı: ölümcül - dərhal bağlanma + silmə.
  1. Tətbiq təhlükəsizliyi:
  • verify_data və PSK bağlayıcıları üçün sabit zaman müqayisələri (vaxt hücumlarından qorunma)
  • Açar materialını silmək: bağlandıqda, ölümcül xəbərdarlıq, əl sıxma zamanı istisna olduqda, açarları (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext) olan bütün obyektlərdə destroy() funksiyası
  • DoS qorunması: sertifikat zəncirinin uzunluğuna (10), əl sıxışma sonrası mesajlara, qeyd ölçüsünə məhdudiyyətlər.
  • MGM nonce: Birinci baytın MSB-si ICN üçün təmizlənir (RFC 9058 §3, RFC 9367 §3.3).
  • ECDHE gizli açarı və əl sıxma transkripti əl sıxma başa çatdıqdan sonra məhv edilir.
  • HMAC açar materialı istifadədən sonra silinir (HkdfStreebog, KdfGostR3411_2012_256).
  1. Məhdudiyyətlər:
  • Yalnız PSK-nın bərpası (0-RTT və xarici PSK dəstəklənmir).
  • Yalnız psk_dhe_ke (ECDHE olmadan təmiz PSK dəstəklənmir).
  • HelloRetryRequest (RFC 8446 §4.1.4) dəstəklənmir - yalnız bir adlı qrup istifadə olunur (standart olaraq GC256A).
  • Yalnız GOST (GOST olmayan şifrə dəstləri dəstəklənmir).
  1. Test:
  • Kitabxanada RFC 9367 Əlavə A.1-dən (L və S variantları) məlum Cavab Testləri — tam açar cədvəli, TLSTREE, AEAD və ECDHE var. O, həmçinin KAT testlərinin tam çeşidini keçir.
  • Real TCP soketləri vasitəsilə 4 inteqrasiya testi (öz-özünə qarşılıqlı əlaqə).
  • Təhlükəsizliyi təmin etmək və parserlərdə hücum vektorunu azaltmaq üçün parserlər üçün Fuzz testləri: TlsMessageParser (8 metod), TlsDerParser (3 metod), TlsOcspVerifier (1 metod).
  1. Memarlıq həlləri:
  • TlsHandshakeEngine - vəziyyət maşını giriş/çıxışdan ayrılır (gələcək JSSE modulu üçün).
  • NIO/JSSE üçün TlsRecord.protect/unprotect faylının ByteBuffer həddindən artıq yüklənməsi.
  • TLSTREE önbelleği (TlsTreeCache) - yalnız dəyişdirilmiş səviyyələrin yenidən hesablanması (RFC 9367).
  • InMemoryTlsTransport.Pair, testlər və tək prosesli rabitə üçün iki istiqamətli bir cütdür.

Kitabxana pulsuz lisenziya əsasında paylanır.

Mənbə: linux.org.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster