Moduli crypto-gost-tls13 ina utekelezaji TLS 1.3 (RFC 8446 + RFC 9367) na usimbaji fiche wa GOST. Toleo hili ni toleo la awali la maktaba na liko tayari kwa matumizi ya ndani.
Kipengele cha kipekee cha maktaba ni utekelezaji wake halisi wa Java. Shughuli zote za usimbaji data zinafanywa kwa kutumia zana zilizojengewa ndani ya maktaba, bila utegemezi wa nje.
Huu ni mojawapo ya utekelezaji wa kwanza wa programu huria ya TLS 1.3 na GOST katika Java, kwa hivyo majaribio ya interop yamefanywa kwa kiwango cha chini kabisa kinachowezekana.
Hapa chini kuna uwezo wa maktaba.
- Itifaki:
- Kushikana mikono: kamili (mteja/seva), fupi (PSK), pande zote mbili (mTLS).
- ALPN (RFC 7301) - Majadiliano ya Itifaki ya Tabaka la Programu (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Dalili ya Jina seva kwa ajili ya kupelekwa kwa wapangaji wengi.
- Usasishaji wa Ufunguo (RFC 8446 §4.6.3) - kusasisha funguo za usimbaji fiche wa trafiki.
- Suti za msimbo: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (biti 256), CryptoPro-B (biti 512)
- Kuweka upya TLSTREE kwa kila rekodi — kubadilisha kitufe cha usimbaji fiche kwa kila rekodi ya TLS.
- Kugawanyika na kuunganishwa upya kwa salamu za mikono na rekodi (RFC 8446 §5.1).
- Kuanza tena kwa kipindi: PSK kupitia NewSessionTicket (PskStore iko kwenye kumbukumbu, inatumika mara moja).
- Uunganishaji wa OCSP: seva прикладывает OCSP-ответ к сертификату.
- Ujumbe wa baada ya kushikana mikono: NewSessionTicket (hifadhi kwa PSK).
- Uandishi wa Kielektroniki:
- Ratiba muhimu: HKDF-Streebog (RFC 5869) juu ya TLS 1.3 (RFC 8446 §7.1).
- Ulinzi wa rekodi: MGM-AEAD (Kuznyechik) bila kuathiri kulingana na RFC 8446 §5.3.
- Funguo za muda mfupi hufutwa baada ya matumizi.
- Vyeti:
- Uchanganuzi wa X.509v3 (GOST R 34.10-2012) — kichanganuzi cha DER kilichojengewa ndani.
- Msururu wa uthibitishaji: sahihi, DN (mtoaji → mada), Vizuizi vya Msingi, Matumizi ya Ufunguo, Matumizi ya Ufunguo * Uliopanuliwa (serverAuth / clientAuth), pathLen.
- Ukaguzi wa jina la mwenyeji: dNSName + iPAddress (RFC 6125).
- Uthibitishaji wa majibu ya OCSP (RFC 6960).
4.Usafiri:
- Usafirishaji wa Tls - kiolesura.
- InMemoryTlsTransport - kwa majaribio na matukio ya mchakato mmoja (foleni ya kumbukumbu).
- SocketTlsTransport — inazuia I/O kupitia java.net.Socket.
- Usafiri wa ChannelTlsport - Usafirishaji unaotegemea Soketi ya NIO (hali ya kuzuia, inayoweza kukatizwa).
- Kusalimiana kwa mkono hatua kwa hatua:
- TlsHandshakeEngine ni mashine ya hali ya kushikana mikono (iliyotenganishwa kutoka I/O). Inatumia TlsSession kama okestrakta na inafaa kwa kuunganishwa na JSSE (SSLEngine).
- API ya ByteBuffer:
- TlsRecord.protect/unprotect — ByteBuffer huzidisha kwa ajili ya muunganisho wa sifuri-nakala na NIO. Funguo za kupakia:
- Pkcs12Loader — inasoma PFX (PKCS#12) kwa kutumia PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Mwisho wa kipindi:
- funga_arifu - sahihisha kufunga kulingana na itifaki.
- Kufuta nyenzo muhimu wakati wa kufunga au kufanya hitilafu.
- Tahadhari ya kushughulikia: mbaya - kufunga mara moja + kufuta.
- Usalama wa utekelezaji:
- Ulinganisho wa wakati unaofaa wa vifungashio vya verify_data na PSK (ulinzi dhidi ya mashambulizi ya muda)
- Kufuta nyenzo muhimu: kuharibu () vitu vyote kwa kutumia funguo (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), kwa tahadhari ya karibu, hatari, ubaguzi katika kupeana mikono
- Ulinzi wa DoS: mipaka ya urefu wa mnyororo wa cheti (10), ujumbe wa baada ya kupeana mikono, ukubwa wa rekodi.
- MGM nonce: MSB ya baiti ya kwanza imefutwa kwa ICN (RFC 9058 §3, RFC 9367 §3.3).
- Ufunguo wa kibinafsi wa ECDHE na nakala ya salamu za mkono huharibiwa baada ya salamu kukamilika.
- Nyenzo muhimu ya HMAC hufutwa baada ya matumizi (HkdfStreebog, KdfGostR3411_2012_256).
- Ukomo:
- PSK ya kuanza tena pekee (0-RTT na PSK ya nje hazitumiki).
- Psk_dhe_ke pekee (PSK safi bila ECDHE haitumiki).
- HelloRetryRequest (RFC 8446 §4.1.4) haitumiki - ni kundi moja tu lililopewa jina linalotumika (GC256A kwa chaguo-msingi).
- GOST pekee (vifaa vya cipher visivyo vya GOST havitumiki).
- Jaribio:
- Maktaba ina Majaribio ya Majibu Yanayojulikana kutoka kwa Kiambatisho cha RFC 9367 A.1 (toleo la L na S)—ratiba kamili ya ufunguo, TLSTREE, AEAD, ECDHE. Pia inapita safu kamili ya majaribio ya KAT.
- Majaribio 4 ya ujumuishaji (self-interop) kupitia soketi halisi za TCP.
- Majaribio ya Fuzz kwa vichanganuzi: TlsMessageParser (mbinu 8), TlsDerParser (mbinu 3), TlsOcspVerifier (mbinu 1), ili kuhakikisha usalama na kupunguza vekta ya mashambulizi kwenye vichanganuzi.
- Suluhisho za usanifu:
- TlsHandshakeEngine - mashine ya hali iliyotenganishwa kutoka I/O (kwa moduli ya JSSE ya baadaye).
- Upakiaji mwingi wa ByteBuffer wa TlsRecord.protect/unprotect kwa NIO/JSSE.
- Akiba ya TLSTREE (TlsTreeCache) - hesabu upya ya viwango vilivyobadilishwa pekee (RFC 9367).
- InMemoryTlsTransport.Pair ni jozi ya pande mbili kwa ajili ya majaribio na mawasiliano ya mchakato mmoja.
Maktaba hiyo inasambazwa chini ya leseni ya bure.
Chanzo: linux.org.ru
