Модул крипто-гост-tls13 татбиқро дар бар мегирад TLS 1.3 (RFC 8446 + RFC 9367) бо криптографияи ГОСТ. Ин нашр версияи ибтидоии китобхона буда, барои истифодаи дохилӣ омода аст.
Хусусияти беназири китобхона татбиқи 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 (Кузнечик) бо нонс мувофиқи 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 - Socket NIO Интиқоли каналӣ (реҷаи блоккунӣ, қатъшаванда).
- Дастфишурӣ бо қадам ба қадам:
- TlsHandshakeEngine як мошини ҳолатӣ барои дастфишурӣ аст (аз вуруд/хуруҷ ҷудо карда шудааст). Он TlsSession-ро ҳамчун оркестратор истифода мебарад ва барои ҳамгироӣ бо JSSE (SSLEngine) мувофиқ аст.
- API-и ByteBuffer:
- 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), ҳангоми пӯшидан, огоҳии марговар, истисно ҳангоми handshake
- Ҳифзи DoS: маҳдудиятҳо дар дарозии занҷири сертификат (10), паёмҳои пас аз дастфишорӣ, андозаи сабт.
- MGM nonce: 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).
- ByteBuffer аз ҳад зиёд бор кардани файли TlsRecord.protect/unprotect барои NIO/JSSE.
- Кэши TLSTREE (TlsTreeCache) - аз нав ҳисобкунии танҳо сатҳҳои тағйирёфта (RFC 9367).
- InMemoryTlsTransport.Pair як ҷуфти дуҷониба барои санҷишҳо ва муоширати якравона мебошад.
Китобхона тибқи иҷозатномаи ройгон паҳн карда мешавад.
Манбаъ: linux.org.ru
