Մոդուլ կրիպտո-գոստ-տլս13 պարունակում է իրականացումը TLS 1.3 (RFC 8446 + RFC 9367) GOST կրիպտոգրաֆիայի միջոցով: Այս թողարկումը գրադարանի սկզբնական տարբերակն է և պատրաստ է ներքին օգտագործման համար:
Գրադարանի եզակի առանձնահատկությունը մաքուր Java իրականացումն է: Բոլոր կրիպտոգրաֆիկ գործողությունները կատարվում են գրադարանի ներկառուցված գործիքների միջոցով՝ առանց արտաքին կախվածությունների:
Սա TLS 1.3-ի GOST-ով Java-ում առաջին բաց կոդով իրականացումներից մեկն է, ուստի փոխգործակցության թեստավորումը կատարվել է հնարավորինս նվազագույն չափով։
Ստորև ներկայացված են գրադարանի հնարավորությունները։
- Արձանագրություններ՝
- Ձեռքսեղմում. լրիվ (հաճախորդ/սերվեր), կարճ (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-ի):
- Կրիպտոգրաֆիա։
- Հիմնական ժամանակացույց՝ HKDF-Streebog (RFC 5869) TLS 1.3-ի միջոցով (RFC 8446 §7.1):
- Գրառման պաշտպանություն՝ MGM-AEAD (Կուզնյեչիկ)՝ nonce-ով, համաձայն RFC 8446 §5.3-ի։
- Ժամանակավոր ստեղները ջնջվում են օգտագործելուց հետո։
- Վկայագրեր.
- 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-ի վրա հիմնված փոխադրում (արգելափակման ռեժիմ, ընդհատվող):
- Քայլ առ քայլ ձեռքսեղմում.
- TlsHandshakeEngine-ը ձեռքսեղմման վիճակների մեքենա է (անջատված մուտքի/ելքի համակարգից): Այն օգտագործում է TlsSession-ը որպես օրկեստրատոր և հարմար է JSSE (SSLEngine)-ի հետ ինտեգրման համար:
- ByteBuffer API:
- TlsRecord.protect/unprotect — ByteBuffer-ը գերբեռնում է NIO-ի հետ զրոյական պատճենի ինտեգրման համար։ Բեռնվում են բանալիները։
- Pkcs12Loader — PFX (PKCS#12)-ի ընթերցում PBKDF2-HMAC-SHA256 + AES-256-CBC-ով։
- Նիստի ավարտը.
- close_notify - ճիշտ փակում ըստ արձանագրության։
- Բանալու նյութի մաքրում փակելիս կամ սխալ թույլ տալիս։
- Կառավարման տագնապ. մահացու - անհապաղ փակում + ջնջում:
- Կիրառման անվտանգություն.
- 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):
- Սահմանափակումներ.
- Միայն վերսկսման PSK (0-RTT և արտաքին PSK չեն աջակցվում):
- Միայն psk_dhe_ke (մաքուր PSK առանց ECDHE-ի չի աջակցվում):
- HelloRetryRequest-ը (RFC 8446 §4.1.4) չի աջակցվում՝ օգտագործվում է միայն մեկ անվանված խումբ (ըստ լռելյայն GC256A):
- Միայն GOST (ոչ GOST գաղտնագրերի հավաքածուները չեն աջակցվում):
- Փորձարկում:
- Գրադարանը պարունակում է RFC 9367 հավելված A.1-ից հայտնի պատասխանների թեստեր (L և S տարբերակներ)՝ ամբողջական բանալիային ժամանակացույց, TLSTREE, AEAD, ECDHE: Այն նաև հաջողությամբ անցնում է KAT թեստերի ամբողջ շարքը:
- 4 ինտեգրման թեստ (ինքնաշխատ փոխազդեցություն) իրական TCP սոքեթների միջոցով։
- Fuzz թեստեր վերլուծիչների համար՝ TlsMessageParser (8 մեթոդ), TlsDerParser (3 մեթոդ), TlsOcspVerifier (1 մեթոդ), որոնք ապահովում են անվտանգությունը և նվազեցնում վերլուծիչների վրա հարձակման վեկտորը։
- Ճարտարապետական լուծումներ.
- TlsHandshakeEngine - վիճակային մեքենան անջատված է մուտքի/ելքի համակարգից (ապագա JSSE մոդուլի համար):
- TlsRecord.protect/unprotect-ի ByteBuffer-ի գերբեռնվածությունը NIO/JSSE-ի համար։
- TLSTREE քեշ (TlsTreeCache) - վերահաշվարկ միայն փոփոխված մակարդակների համար (RFC 9367):
- InMemoryTlsTransport.Pair-ը երկկողմանի զույգ է թեստերի և մեկ պրոցեսային հաղորդակցության համար։
Գրադարանը տարածվում է անվճար լիցենզիայի ներքո։
Source: linux.org.ru
