Ìtújáde àkọ́kọ́ ti ìṣiṣẹ́ ìlànà TLS 1.3 ní Java pẹ̀lú àwọn algoridimu GOST ní ìbámu pẹ̀lú RFC 9367

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.

  1. À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).
  1. Ṣíṣ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ò.
  1. 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).
  1. 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).
  1. 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.
  1. 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ẹ́.
  1. 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).
  1. 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).
  1. 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ò.
  1. 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

Ra alejo gbigba igbẹkẹle fun awọn aaye pẹlu aabo DDoS, awọn olupin VPS VDS 🔥 Ra gbigbalejo oju opo wẹẹbu ti o gbẹkẹle pẹlu aabo DDoS, awọn olupin VPS VDS | ProHoster