RFC 9367 နှင့်အညီ GOST အယ်လဂိုရီသမ်များဖြင့် Java တွင် TLS 1.3 ပရိုတိုကော အကောင်အထည်ဖော်မှု၏ ပထမဆုံးထုတ်ဝေမှု

အပိုင်း crypto-gost-tls13 အကောင်အထည်ဖော်မှုတွင်ပါဝင်သည် TLS ၁.၃ (RFC ၈၄၄၆ + RFC ၉၃၆၇) GOST ကုဒ်ဝှက်စနစ်ဖြင့်။ ဤထုတ်ဝေမှုသည် စာကြည့်တိုက်၏ ကနဦးဗားရှင်းဖြစ်ပြီး အတွင်းပိုင်းအသုံးပြုရန် အသင့်ဖြစ်နေပါပြီ။

စာကြည့်တိုက်၏ ထူးခြားသောအင်္ဂါရပ်တစ်ခုမှာ ၎င်း၏ သန့်စင်သော Java အကောင်အထည်ဖော်မှုဖြစ်သည်။ cryptographic လုပ်ဆောင်ချက်အားလုံးကို စာကြည့်တိုက်၏ built-in tools များကို အသုံးပြု၍ ပြင်ပ dependencies များ မပါဘဲ လုပ်ဆောင်သည်။

ဤသည်မှာ Java တွင် GOST ပါဝင်သော TLS 1.3 ၏ ပထမဆုံး open source အကောင်အထည်ဖော်မှုများထဲမှ တစ်ခုဖြစ်သောကြောင့် interop testing ကို အနည်းဆုံးအတိုင်းအတာအထိ ပြုလုပ်ခဲ့သည်။

စာကြည့်တိုက်ရဲ့ စွမ်းဆောင်ရည်တွေကို အောက်မှာ ဖော်ပြထားပါတယ်။

  1. ပရိုတိုကောများ-
  • လက်ဆွဲနှုတ်ဆက်ခြင်း- အပြည့်အဝ (client/server)၊ အတို (PSK)၊ အပြန်အလှန် (mTLS)။
  • ALPN (RFC 7301) - အပလီကေးရှင်းအလွှာ ပရိုတိုကော ညှိနှိုင်းမှု (HTTP/2၊ HTTP/1.1)။
  • SNI (RFC 6066) - အမည်ညွှန်ပြချက် ဆာဗာ multi-tenant ဖြန့်ကျက်မှုများအတွက်။
  • KeyUpdate (RFC 8446 §4.6.3) – အသွားအလာ ကုဒ်ဝှက်ခြင်းသော့များကို အပ်ဒိတ်လုပ်ခြင်း။
  • Cipher suites- TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S။
  • ECDHE: CryptoPro-A (၂၅၆-ဘစ်)၊ CryptoPro-B (၅၁၂-ဘစ်)
  • မှတ်တမ်းတစ်ခုလျှင် TLSTREE ပြန်လည်ကီးလုပ်ခြင်း — TLS မှတ်တမ်းတစ်ခုစီအတွက် ကုဒ်ဝှက်သော့ကို ပြောင်းလဲခြင်း။
  • လက်ဆွဲနှုတ်ဆက်ခြင်းနှင့် မှတ်တမ်းများကို အပိုင်းပိုင်းခွဲခြင်းနှင့် ပြန်လည်စုစည်းခြင်း (RFC 8446 §5.1)။
  • အစည်းအဝေးပြန်လည်စတင်ခြင်း- NewSessionTicket မှတစ်ဆင့် PSK (PskStore မှတ်ဉာဏ်အတွင်း၊ တစ်ကြိမ်သုံး)။
  • OCSP စတေပလင်းလုပ်ခြင်း- ဆာဗာ OCSP တုံ့ပြန်မှုကို လက်မှတ်နှင့် ပေါင်းထည့်သည်။
  • လက်ဆွဲနှုတ်ဆက်ပြီးနောက် မက်ဆေ့ချ်များ- NewSessionTicket (PSK အတွက် ချန်ထားရန်)။
  1. ကုဒ်ဝှက်ခြင်း-
  • အဓိကအချိန်ဇယား- HKDF-Streebog (RFC 5869) မှတစ်ဆင့် TLS 1.3 (RFC 8446 §7.1) ဖြင့် ပေးပို့သည်။
  • မှတ်တမ်းကာကွယ်မှု- RFC 8446 §5.3 အရ nonce ပါရှိသော MGM-AEAD (Kuznyechik)။
  • ယာယီသော့များကို အသုံးပြုပြီးနောက် ဖျက်ပစ်ပါသည်။
  1. လက်မှတ်များ
  • X.509v3 parsing (GOST R 34.10-2012) — built-in DER parser ပါဝင်သည်။
  • အတည်ပြုချက်ကွင်းဆက်- လက်မှတ်များ၊ DN (ထုတ်ပေးသူ → ဘာသာရပ်)၊ အခြေခံကန့်သတ်ချက်များ၊ သော့အသုံးပြုမှု၊ တိုးချဲ့ထားသော သော့ * အသုံးပြုမှု (serverAuth / clientAuth)၊ pathLen။
  • Hostname စစ်ဆေးခြင်း- dNSName + iPAddress (RFC 6125)။
  • OCSP တုံ့ပြန်မှုများကို အတည်ပြုခြင်း (RFC 6960)။

4.ပို့ဆောင်ရေး:

  • TlsTransport - အင်တာဖေ့စ်။
  • InMemoryTlsTransport - စမ်းသပ်မှုများနှင့် single-process အခြေအနေများအတွက် (in-memory queue)။
  • SocketTlsTransport — java.net.Socket မှတစ်ဆင့် I/O ကို ပိတ်ဆို့ခြင်း။
  • ChannelTlsTransport - NIO SocketChannel-based transport (ပိတ်ဆို့ခြင်းမုဒ်၊ အနှောင့်အယှက်ဖြစ်စေနိုင်သည်)။
  1. အဆင့်ဆင့် လက်ဆွဲနှုတ်ဆက်ခြင်း-
  • TlsHandshakeEngine သည် handshake အတွက် state machine တစ်ခုဖြစ်သည် (I/O မှ ခွဲထားသည်)။ ၎င်းသည် TlsSession ကို orchestrator အဖြစ် အသုံးပြုပြီး JSSE (SSLEngine) နှင့် ပေါင်းစပ်ရန် သင့်လျော်သည်။
  1. ByteBuffer API:
  • TlsRecord.protect/unprotect — NIO နှင့် zero-copy ပေါင်းစပ်မှုအတွက် ByteBuffer overloads များ။ keys များကို loading လုပ်ခြင်း-
  • Pkcs12Loader — PBKDF2-HMAC-SHA256 + AES-256-CBC ဖြင့် PFX (PKCS#12) ကို ဖတ်နေသည်။
  1. အစည်းအဝေးပြီးဆုံး:
  • close_notify - ပရိုတိုကောအရ မှန်ကန်စွာ ပိတ်ခြင်း။
  • ပိတ်သည့်အခါ သို့မဟုတ် အမှားလုပ်သည့်အခါ အဓိကပစ္စည်းများကို သုတ်ခြင်း။
  • ကိုင်တွယ်မှု သတိပေးချက်- အသက်အန္တရာယ်ရှိသည် - ချက်ချင်းပိတ်ခြင်း + ဖျက်ခြင်း။
  1. အကောင်အထည်ဖော်မှု လုံခြုံရေး-
  • verify_data နှင့် PSK binders အတွက် constant-time နှိုင်းယှဉ်မှုများ (timeting attacks များမှကာကွယ်ခြင်း)
  • key material ကို ဖျက်ခြင်း- destroy() key များပါရှိသော object အားလုံး (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext)၊ close တွင်၊ fatal alert၊ handshake တွင် exception
  • DoS ကာကွယ်မှု- လက်မှတ်ကွင်းဆက်အရှည် (10)၊ လက်ဆွဲနှုတ်ဆက်ပြီးနောက် မက်ဆေ့ချ်များ၊ မှတ်တမ်းအရွယ်အစားအပေါ် ကန့်သတ်ချက်များ။
  • MGM nonce: ပထမ byte ၏ MSB ကို ICN (RFC 9058 §3၊ RFC 9367 §3.3) အတွက် ရှင်းလင်းလိုက်ပါသည်။
  • ECDHE private key နှင့် handshake transcript များကို handshake ပြီးဆုံးပြီးနောက် ဖျက်ဆီးပါသည်။
  • HMAC သော့ပစ္စည်းကို အသုံးပြုပြီးနောက် ဖျက်ပစ်ပါသည် (HkdfStreebog, KdfGostR3411_2012_256)။
  1. ကန့်သတ်:
  • PSK ပြန်လည်စတင်ခြင်းသာ (0-RTT နှင့် ပြင်ပ PSK ကို မပံ့ပိုးပါ)။
  • psk_dhe_ke သာ (ECDHE မပါသော PSK သီးသန့်ကို မပံ့ပိုးပါ)။
  • HelloRetryRequest (RFC 8446 §4.1.4) ကို ပံ့ပိုးမထားပါ။ အမည်ပေးထားသော အုပ်စုတစ်ခုတည်းကိုသာ အသုံးပြုထားသည် (မူရင်းအားဖြင့် GC256A)။
  • GOST သာ (GOST မဟုတ်သော cipher suite များကို မပံ့ပိုးပါ)။
  1. စမ်းသပ်ခြင်း-
  • စာကြည့်တိုက်တွင် RFC 9367 Appendix A.1 (L နှင့် S မျိုးကွဲများ) မှ Known Answer Tests များ—full key schedule၊ TLSTREE၊ AEAD နှင့် ECDHE တို့ပါဝင်သည်။ ၎င်းသည် KAT စစ်ဆေးမှုအားလုံးကိုလည်း အောင်မြင်သည်။
  • တကယ့် TCP socket များမှတစ်ဆင့် ပေါင်းစပ်စမ်းသပ်မှု ၄ ခု (self-interop)။
  • parsers များအတွက် Fuzz စမ်းသပ်မှုများ- TlsMessageParser (နည်းလမ်း ၈ ခု)၊ TlsDerParser (နည်းလမ်း ၃ ခု)၊ TlsOcspVerifier (နည်းလမ်း ၁ ခု)၊ လုံခြုံရေးကိုသေချာစေပြီး parsers များပေါ်ရှိ တိုက်ခိုက်မှု vector ကို လျှော့ချပေးသည်။
  1. ဗိသုကာဆိုင်ရာ ဖြေရှင်းချက်များ-
  • TlsHandshakeEngine - I/O မှ ခွဲထုတ်ထားသော state machine (အနာဂတ် JSSE မော်ဂျူးအတွက်)။
  • NIO/JSSE အတွက် TlsRecord.protect/unprotect ၏ ByteBuffer အလွန်အကျွံလုပ်ဆောင်ခြင်း။
  • TLSTREE ကက်ရှ် (TlsTreeCache) - ပြောင်းလဲထားသော အဆင့်များကိုသာ ပြန်လည်တွက်ချက်ခြင်း (RFC 9367)။
  • InMemoryTlsTransport.Pair သည် စမ်းသပ်မှုများနှင့် single-process ဆက်သွယ်ရေးအတွက် နှစ်လမ်းသွားစုံတစ်ခုဖြစ်သည်။

စာကြည့်တိုက်ကို အခမဲ့လိုင်စင်ဖြင့် ဖြန့်ဝေထားသည်။

source: linux.org.ru

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster