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 հիշողության մեջ, միանգամյա օգտագործման):
  • OCSP կարում։ սերվեր վկայագրին կցում է OCSP պատասխանը։
  • Ձեռքսեղմումից հետո հաղորդագրություններ՝ NewSessionTicket (բացառությամբ PSK-ի):
  1. Կրիպտոգրաֆիա։
  • Հիմնական ժամանակացույց՝ HKDF-Streebog (RFC 5869) TLS 1.3-ի միջոցով (RFC 8446 §7.1):
  • Գրառման պաշտպանություն՝ MGM-AEAD (Կուզնյեչիկ)՝ 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-ը ձեռքսեղմման վիճակների մեքենա է (անջատված մուտքի/ելքի համակարգից): Այն օգտագործում է TlsSession-ը որպես օրկեստրատոր և հարմար է JSSE (SSLEngine)-ի հետ ինտեգրման համար:
  1. ByteBuffer API:
  • 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), փակման, մահացու ազդանշանի, բացառության դեպքում ձեռքսեղմման ժամանակ։
  • DoS պաշտպանություն. վկայականների շղթայի երկարության սահմանափակումներ (10), ձեռքսեղմումից հետո հաղորդագրությունների, գրառման չափի վրա։
  • MGM ոչ մի անգամ. Առաջին բայթի 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):
  • Միայն GOST (ոչ GOST գաղտնագրերի հավաքածուները չեն աջակցվում):
  1. Փորձարկում:
  • Գրադարանը պարունակում է RFC 9367 հավելված A.1-ից հայտնի պատասխանների թեստեր (L և S տարբերակներ)՝ ամբողջական բանալիային ժամանակացույց, TLSTREE, AEAD, ECDHE: Այն նաև հաջողությամբ անցնում է KAT թեստերի ամբողջ շարքը:
  • 4 ինտեգրման թեստ (ինքնաշխատ փոխազդեցություն) իրական TCP սոքեթների միջոցով։
  • Fuzz թեստեր վերլուծիչների համար՝ TlsMessageParser (8 մեթոդ), TlsDerParser (3 մեթոդ), TlsOcspVerifier (1 մեթոդ), որոնք ապահովում են անվտանգությունը և նվազեցնում վերլուծիչների վրա հարձակման վեկտորը։
  1. Ճարտարապետական ​​լուծումներ.
  • TlsHandshakeEngine - վիճակային մեքենան անջատված է մուտքի/ելքի համակարգից (ապագա JSSE մոդուլի համար):
  • TlsRecord.protect/unprotect-ի ByteBuffer-ի գերբեռնվածությունը NIO/JSSE-ի համար։
  • TLSTREE քեշ (TlsTreeCache) - վերահաշվարկ միայն փոփոխված մակարդակների համար (RFC 9367):
  • InMemoryTlsTransport.Pair-ը երկկողմանի զույգ է թեստերի և մեկ պրոցեսային հաղորդակցության համար։

Գրադարանը տարածվում է անվճար լիցենզիայի ներքո։

Source: linux.org.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster