Module crypto-gost-tls13 ni imuse naa ninu TLS 1.3 (RFC 8446 + RFC 9367) pẹ̀lú ìkọ̀kọ̀ GOST. Ìtújáde yìí ni àtúnṣe àkọ́kọ́ ti ìkàwé náà, ó sì ti ṣetán fún lílò nínú rẹ̀.
Ohun pàtàkì kan nínú ìkàwé náà ni ìgbékalẹ̀ Java rẹ̀ tó péye. Gbogbo iṣẹ́ ìkọ̀kọ̀ ni a ń ṣe nípa lílo àwọn irinṣẹ́ ìkàwé tí a ṣe sínú rẹ̀, láìsí ìgbẹ́kẹ̀lé láti òde.
Èyí jẹ́ ọ̀kan lára àwọn ìṣẹ̀dá àkọ́kọ́ tí ó ṣí sílẹ̀ fún TLS 1.3 pẹ̀lú GOST ní Java, nítorí náà a ti ṣe ìdánwò interop dé ìwọ̀n tí ó kéré jùlọ tí ó ṣeé ṣe.
Àwọn agbára ìkàwé tó wà ní ìsàlẹ̀ yìí ni.
- Àwọn ìlànà:
- Ìfọwọ́sowọ́pọ̀: kíkún (oníbàárà/olùpèsè), kúkúrú (PSK), àpapọ̀ (mTLS).
- ALPN (RFC 7301) - Ìbánisọ̀rọ̀ Ìlànà Ìpele Ohun elo (HTTP/2, HTTP/1.1).
- SNI (RFC 6066) - Ìtọ́kasí Orúkọ olupin fún àwọn ìgbékalẹ̀ àwọn onílé púpọ̀.
- KeyUpdate (RFC 8446 §4.6.3) – ṣíṣe àtúnṣe àwọn kọ́kọ́rọ́ ìpamọ́ ijabọ.
- Cipher suites: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256-bit), CryptoPro-B (512-bit)
- Àtúnṣe TLSTREE fún ìgbà kọ̀ọ̀kan — yíyípadà kọ́kọ́rọ́ ìkọ̀kọ̀ fún ìgbà kọ̀ọ̀kan TLS.
- Pípín àti àtúntò àwọn ìfọwọ́sowọ́pọ̀ àti àwọn àkọsílẹ̀ (RFC 8446 §5.1).
- Ìpadàbọ̀ sí ìpàdé: PSK nípasẹ̀ NewSessionTicket (PskStore nínú ìrántí, lílo lẹ́ẹ̀kan).
- Ìdènà OCSP: olupin fi idahun OCSP kun iwe-ẹri naa.
- Àwọn ìránṣẹ́ lẹ́yìn ìfọwọ́sowọ́pọ̀: NewSessionTicket (fipamọ́ fún PSK).
- Ṣíṣe ìkọ̀kọ̀:
- Ìṣètò pàtàkì: HKDF-Streebog (RFC 5869) lórí TLS 1.3 (RFC 8446 §7.1).
- Ààbò àkọsílẹ̀: MGM-AEAD (Kuznyechik) pẹ̀lú nonce gẹ́gẹ́ bí RFC 8446 §5.3.
- A máa pa àwọn kọ́kọ́rọ́ ephemeral rẹ́ lẹ́yìn lílò.
- Awọn iwe -ẹri:
- Ìṣàyẹ̀wò X.509v3 (GOST R 34.10-2012) — ìṣàyẹ̀wò DER tí a ṣe sínú rẹ̀.
- Ẹ̀wọ̀n ìfọwọ́sowọ́pọ̀: àwọn ìfọwọ́sowọ́pọ̀, DN (olùfúnni → kókó ọ̀rọ̀), Àwọn ìdíwọ́ ìpìlẹ̀, Lílo Kọ́kọ́rọ́, Lílo Kọ́kọ́rọ́ tó gbòòrò * (serverAuth / clientAuth), pathLen.
- Àyẹ̀wò orúkọ olùgbàlejò: dNSName + iPAAddress (RFC 6125).
- Ìfìdí múlẹ̀ àwọn ìdáhùn OCSP (RFC 6960).
4.Ọkọ:
- TlsTransport - wiwo.
- InMemoryTlsTransport - fún àwọn ìdánwò àti àwọn ìṣẹ̀lẹ̀ ìṣiṣẹ́ kan ṣoṣo (ìlà inú ìrántí).
- SocketTlsTransport — dí I/O lórí java.net.Socket.
- ChannelTlsTransport - Gbigbe ti o da lori SocketChannel NIO (ipo idinamọ, ti o le da duro).
- Gbigbọ ọwọ ni igbese-nipasẹ-igbesẹ:
- TlsHandshakeEngine jẹ́ ẹ̀rọ ìpele fún fífọwọ́ (tí a yà sọ́tọ̀ kúrò nínú I/O). Ó ń lo TlsSession gẹ́gẹ́ bí olùdarí orin, ó sì yẹ fún ìṣọ̀kan pẹ̀lú JSSE (SSLEngine).
- API ByteBuffer:
- TlsRecord.protect/unprotect — Àwọn ohun tí ByteBuffer ń ṣe pọ̀ jù fún ìṣọ̀kan òdo pẹ̀lú NIO. Àwọn kọ́kọ́rọ́ ìkójọpọ̀:
- Pkcs12Loader — kíkà PFX (PKCS#12) pẹ̀lú PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Ipari ipade:
- close_notify - pípa tí ó tọ́ gẹ́gẹ́ bí ìlànà náà.
- Nu àwọn ohun èlò pàtàkì nù nígbà tí a bá ń ti àwọn nǹkan tàbí tí a bá ń ṣe àṣìṣe.
- Ìkìlọ̀ ìtọ́jú: ikú - pípa lẹ́sẹ̀kẹsẹ̀ + píparẹ́.
- Aabo imuse:
- Àwọn àfiwéra àkókò-ìgbà fún verify_data àti PSK soppers (ààbò lòdì sí àwọn ìkọlù àkókò)
- Nu ohun èlò pàtàkì nù: run() lórí gbogbo ohun tí a fi kọ́kọ́rọ́ ṣe (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), nígbà tí a bá sún mọ́ ọn, tí ó lè pa ènìyàn, àyọkúrò nínú gbígbọ́ ọwọ́
- Ààbò DoS: àwọn ààlà lórí gígùn ẹ̀wọ̀n ìwé-ẹ̀rí (10), àwọn ìránṣẹ́ lẹ́yìn ìfọwọ́sowọ́pọ̀, ìwọ̀n àkọsílẹ̀.
- MGM nonce: A ti yọ MSB ti byte akọkọ kuro fun ICN (RFC 9058 §3, RFC 9367 §3.3).
- Kọ́kọ́rọ́ ìkọ̀kọ̀ ECDHE àti ìfọwọ́sowọ́pọ̀ ni a ó parẹ́ lẹ́yìn tí ìfọwọ́sowọ́pọ̀ bá parí.
- A pa ohun èlò pàtàkì HMAC rẹ́ lẹ́yìn lílò (HkdfStreebog, KdfGostR3411_2012_256).
- Awọn idiwọn:
- PSK ìpadàbọ̀sípò nìkan (0-RTT àti PSK ìta kò ní àtìlẹ́yìn).
- Psk_dhe_ke nikan (PSK mimọ laisi ECDHE ko ni atilẹyin).
- A ko ṣe atilẹyin fun HelloRetryRequest (RFC 8446 §4.1.4) - ẹgbẹ kan ṣoṣo ti a darukọ ni a lo (GC256A nipasẹ aiyipada).
- GOST nìkan (àwọn suite ìkọ̀wé tí kìí ṣe GOST ni a kò ṣe àtìlẹ́yìn fún).
- Idanwo:
- Ilé ìkàwé náà ní àwọn ìdánwò ìdáhùn tí a mọ̀ láti inú RFC 9367 Àfikún A.1 (àwọn ìyàtọ̀ L àti S)—ìṣètò pàtàkì gbogbo, TLSTREE, AEAD, àti ECDHE. Ó tún kọjá gbogbo àwọn ìdánwò KAT.
- Àwọn ìdánwò ìṣọ̀kan mẹ́rin (ìbáṣepọ̀ ara ẹni) nípasẹ̀ àwọn ihò TCP gidi.
- Àwọn ìdánwò Fuzz fún àwọn olùṣàyẹ̀wò: TlsMessageParser (ọ̀nà 8), TlsDerParser (ọ̀nà 3), TlsOcspVerifier (ọ̀nà 1), láti rí i dájú pé ààbò wà àti láti dín ìkọlù kù lórí àwọn olùṣàyẹ̀wò.
- Awọn ojutu ayaworan:
- TlsHandshakeEngine - ẹ̀rọ ìpele tí a ti yọ kúrò láti inú I/O (fún modulu JSSE ọjọ́ iwájú).
- Àwọn ìṣẹ́jú tí ByteBuffer ń ṣe lórí TlsRecord.protect/unprotect fún NIO/JSSE.
- Àkójọ TLSTREE (TlsTreeCache) - àtúnṣe ìṣírò àwọn ìpele tí a yípadà nìkan (RFC 9367).
- InMemoryTlsTransport.Pair jẹ́ bata meji fun awọn idanwo ati ibaraẹnisọrọ ilana kan.
A pin ile-ikawe naa labẹ iwe-aṣẹ ọfẹ kan.
orisun: linux.org.ru
