Modul kripto-gost-tls13 amalga oshirishni o'z ichiga oladi TLS 1.3 (RFC 8446 + RFC 9367) GOST kriptografiyasi bilan. Ushbu nashr kutubxonaning dastlabki versiyasi bo'lib, ichki foydalanishga tayyor.
Kutubxonaning o'ziga xos xususiyati uning sof Java implementatsiyasidir. Barcha kriptografik operatsiyalar kutubxonaning o'rnatilgan vositalari yordamida, tashqi bog'liqliklarsiz amalga oshiriladi.
Bu Java'da GOST bilan TLS 1.3 ning birinchi ochiq kodli implementatsiyalaridan biri, shuning uchun interop sinovlari iloji boricha minimal darajada amalga oshirildi.
Quyida kutubxonaning imkoniyatlari keltirilgan.
- Protokollar:
- Qo'l berib ko'rishish: to'liq (mijoz/server), qisqa (PSK), o'zaro (mTLS).
- ALPN (RFC 7301) - Ilova qatlami protokoli bo'yicha muzokaralar (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Ism ko'rsatkichi server ko'p ijarachili joylashtirishlar uchun.
- KeyUpdate (RFC 8446 §4.6.3) – trafik shifrlash kalitlarini yangilash.
- Shifr to'plamlari: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
- Har bir yozuv uchun TLSTREE qayta kalitlash — har bir TLS yozuvi uchun shifrlash kalitini o'zgartirish.
- Qo'l berib ko'rishishlar va yozuvlarni parchalash va qayta yig'ish (RFC 8446 §5.1).
- Sessiyani qayta boshlash: NewSessionTicket orqali PSK (PskStore xotirasida, bir martalik foydalanish uchun).
- OCSP zımbalama: server sertifikatga OCSP javobini qo'shadi.
- Qo'l berib ko'rishishdan keyingi xabarlar: NewSessionTicket (PSK uchun saqlash).
- Kriptografiya:
- Asosiy jadval: TLS 1.3 (RFC 8446 §7.1) ustidan HKDF-Streebog (RFC 5869).
- Yozuvlarni himoya qilish: RFC 8446 §5.3 ga muvofiq nonce bilan MGM-AEAD (Kuznyechik).
- Vaqtinchalik kalitlar ishlatilgandan keyin o'chiriladi.
- Sertifikatlar:
- X.509v3 tahlil qilish (GOST R 34.10-2012) — o'rnatilgan DER tahlil qiluvchi.
- Tasdiqlash zanjiri: imzolar, DN (emitent → mavzu), Asosiy cheklovlar, Kalitdan foydalanish, Kengaytirilgan Kalit * Foydalanish (serverAuth / clientAuth), pathLen.
- Xost nomini tekshirish: dNSName + iPAddress (RFC 6125).
- OCSP javoblarini tekshirish (RFC 6960).
4.Yuk tashish:
- TlsTransport - interfeys.
- InMemoryTlsTransport - testlar va bitta jarayonli stsenariylar uchun (xotiradagi navbat).
- SocketTlsTransport — java.net.Socket orqali kirish/chiqishni bloklaydi.
- ChannelTlsTransport - NIO SocketKanalga asoslangan transport (blokirovka rejimi, uzilish mumkin).
- Bosqichma-bosqich qo'l berib ko'rishish:
- TlsHandshakeEngine - bu qo'l siqish uchun holat mashinasi (I/O dan ajratilgan). U TlsSessionni orkestrator sifatida ishlatadi va JSSE (SSLEngine) bilan integratsiya qilish uchun mos keladi.
- ByteBuffer APIsi:
- TlsRecord.protect/unprotect — NIO bilan nol nusxali integratsiya uchun ByteBuffer ortiqcha yuklaydi. Kalitlar yuklanmoqda:
- Pkcs12Loader — PBKDF2-HMAC-SHA256 + AES-256-CBC yordamida PFX (PKCS#12) ni o'qish.
- Sessiya tugashi:
- close_notify - protokolga muvofiq to'g'ri yopilish.
- Yopish yoki xato qilish paytida asosiy materialni artib tashlash.
- Foydalanish haqida ogohlantirish: halokatli - darhol yopish + o'chirish.
- Amalga oshirish xavfsizligi:
- verify_data va PSK bog'lovchilari uchun doimiy vaqt taqqoslashlari (vaqt hujumlaridan himoya)
- Kalit materialini o'chirish: yopilganda, halokatli ogohlantirish, qo'l siqishda istisno bo'lganda, kalitlarga ega barcha obyektlarda (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext) destroy() funksiyasi
- DoS himoyasi: sertifikat zanjiri uzunligiga cheklovlar (10), qo'l berib ko'rishishdan keyingi xabarlar, yozuv hajmi.
- MGM nonce: Birinchi baytning MSBsi ICN uchun tozalanadi (RFC 9058 §3, RFC 9367 §3.3).
- ECDHE maxfiy kaliti va qo'l berib ko'rishish transkripti qo'l berib ko'rishish tugagandan so'ng yo'q qilinadi.
- HMAC kalit materiali ishlatilgandan keyin o'chiriladi (HkdfStreebog, KdfGostR3411_2012_256).
- Cheklovlar:
- Faqat PSK qayta ishga tushiriladi (0-RTT va tashqi PSK qo'llab-quvvatlanmaydi).
- Faqat psk_dhe_ke (ECDHEsiz sof PSK qo'llab-quvvatlanmaydi).
- HelloRetryRequest (RFC 8446 §4.1.4) qo'llab-quvvatlanmaydi - faqat bitta nomlangan guruh ishlatiladi (sukut bo'yicha GC256A).
- Faqat GOST (GOST bo'lmagan shifr to'plamlari qo'llab-quvvatlanmaydi).
- Sinov:
- Kutubxonada RFC 9367 A.1 ilovasidan olingan ma'lum javob testlari (L va S variantlari) — to'liq kalit jadvali, TLSTREE, AEAD va ECDHE mavjud. Shuningdek, u KAT testlarining barcha turlaridan o'tadi.
- Haqiqiy TCP soketlari orqali 4 ta integratsiya testi (o'z-o'zini o'zaro bog'lash).
- Parserlar uchun Fuzz testlari: TlsMessageParser (8 usul), TlsDerParser (3 usul), TlsOcspVerifier (1 usul), xavfsizlikni ta'minlash va parserlarga hujum vektorini kamaytirish uchun.
- Arxitektura yechimlari:
- TlsHandshakeEngine - holat mashinasi I/O dan uzilgan (kelajakdagi JSSE moduli uchun).
- NIO/JSSE uchun TlsRecord.protect/unprotect faylining ByteBuffer faylidan ortiqcha yuklanish.
- TLSTREE keshi (TlsTreeCache) - faqat o'zgartirilgan darajalarni qayta hisoblash (RFC 9367).
- InMemoryTlsTransport.Pair - bu sinovlar va bitta jarayonli aloqa uchun ikki tomonlama juftlik.
Kutubxona bepul litsenziya asosida tarqatiladi.
Manba: linux.org.ru
