Mímú olùgbọ́ dé TLS 1.3 ń yí ohun tí olùwòó lè kà padà, ṣùgbọ́n kì í ṣe bí nọ́mbà ẹ̀dà ṣe dábàá. ClientHello ṣì ń rìn kí a tó pinnu lórí ìkọ̀kọ̀, àti nínú ìsopọ̀ lasan orúkọ sáàbà tí a béèrè wà níbẹ̀ ní ọ̀rọ̀ tààrà. Encrypted Client Hello ni ọ̀nà tí ń fi í pa mọ́, ó sì jẹ́ ìmújáde ọ̀tọ̀ pẹ̀lú àwọn àìsí-ipò tirẹ̀. Ṣe àwọn ìgbésẹ̀ mẹ́rin wọ̀nyí kí o tó kọ ìlànà tí ó gbà ìhùwàsí kan nínú àwọn méjèèjì.

Ohun tí ìfọwọ́gbá náà ń fi hàn ní tòótọ́

TLS 1.3 ń fi ìwé-ẹ̀rí sáàbà àti ọ̀pọ̀ jùlọ ìfọwọ́gbá tí ó tẹ̀lé ServerHello pa mọ́. Gbogbo ohun tí ẹ̀rọ-ìbánisọ̀rọ̀ ránṣẹ́ kọ́kọ́ wà ní ìta ààbò yẹn, nítorí àwọn kọ́kọ́rọ́ kò tíì sí. Àmì orúkọ sáàbà jẹ́ apá kan ìrìn àkọ́kọ́ yẹn, ìdí nìyẹn tí olùwòó tí kì í kópa ṣì lè kà á láìfọ́ nkankan.

Àkọsílẹ̀ ECH, RFC 9849, ń yí èyí padà nípa fífi ClientHello inú pa mọ́ fún sáàbà tí ń fọwọ́ sowọ́pọ̀. Ìfọwọ́gbá ìta ṣì wà ó sì gbé orúkọ gbangba tí nẹ́tíwọ́kì lè rí, nítorí náà ìmújáde ṣì nílò ìdánimọ̀ ìta tí ó ní ìtumọ̀ fún àwọn alárinà. Orúkọ ìta yẹn ni apá tí àwọn ènìyàn ń pàdánù nígbà tí wọ́n retí pé ìsopọ̀ yóò di aláìlórúkọ. Orúkọ ìbòò ni, kì í ṣe orúkọ tí a pa mọ́, ó sì gbọdọ̀ yanjú àti jẹ́rìí gẹ́gẹ́ bí èyíkéyìí mìíràn.

Kò sí nínú èyí tí ń fi ọ̀nà ìfijíṣẹ́ pa mọ́. Àwọn àdírẹ́sì orísun àti ibi-ìlọ, àwọn pọ́ọ̀tù, ìwọ̀n àpòpọ̀ àti àkókò ṣì wà ní àfojúsùn, wọ́n sì sábà sọ púpọ̀ nípa ẹni tí ń sọ̀rọ̀ ju orúkọ lọ. Yíyanjú orúkọ àti àjọṣepọ̀ ní ìpele ohun-èlò jẹ́ ìpele mìíràn, ọ̀kọ̀ọ̀kan pẹ̀lú ìfarahàn tirẹ̀.

Ka ClientHello dípò kí o gbà á lásán

Ẹ̀dà tí ó wà nínú ServerHello kò sọ fún ọ ohun tí ẹ̀rọ-ìbánisọ̀rọ̀ ránṣẹ́. Wo ìrìn àkọ́kọ́ ní tààrà, láti ipò tí ó dúró fún olùwòó tí ìwọ náà kà sí pàtàkì.

openssl s_client -connect app.plant.example:443 -servername app.plant.example -tls1_3 </dev/null> 2>/dev/null | head -20
sudo tcpdump -ni eth0 -c 40 'tcp port 443' -w /tmp/tls.pcap
tshark -r /tmp/tls.pcap -Y 'tls.handshake.extensions_server_name' -T fields -e tls.handshake.extensions_server_name

Àṣẹ àkọ́kọ́ ṣe ìfọwọ́gbá ó sì fi àwọn àwòrán tí a gbà hàn, pẹ̀lú ẹ̀dà ìlànà àti orúkọ tí o béèrè. Èkejì ń gba àwọn àpòpọ̀ àkọ́kọ́ ìsopọ̀ gidi, ẹ̀kẹta sì ń yọ ààyè SNI kúrò nínú ìgbàsílẹ̀ yẹn. Tí ààyè náà bá kún, olùwòó tí o ṣe àfarawé rẹ̀ lè kà á.

Gbà lọ́tọ̀ọ̀tọ̀ ní ẹ̀gbẹ́ ẹ̀rọ-ìbánisọ̀rọ̀ àti ní ọ̀nà nígbà tí àwọn méjèèjì kò bá faramọ́, nítorí ìgbàsílẹ̀ àdúgbò lè fi orúkọ hàn tí middlebox yóò tún kọ tàbí sọnù lẹ́yìn náà. Gbà pẹ̀lú láti ọ̀dọ̀ ẹ̀rọ tí kò parí TLS fúnra rẹ̀, níwọ̀n bí a ti mọ̀ pé aṣojú tí ń parí ń rí ọ̀rọ̀ tààrà nípasẹ̀ àpẹẹrẹ rẹ̀ kò sì fi nkankan hàn nípa ohun tí nẹ́tíwọ́kì ń rí.

Wo àfikún ECH gẹ́gẹ́ bí ẹ̀sùn, kì í ṣe ẹ̀rí

Rírí àfikún ECH nínú ClientHello kò túmọ̀ sí pé ìsopọ̀ náà lo ECH. Àwọn ẹ̀rọ-ìbánisọ̀rọ̀ ń rán GREASE ECH nígbà tí wọn kò ní ìṣètò tí ó wúlò, gan-an kí ìfọwọ́gbá wọn lè dà bí ẹyọ kan. Àfikún náà wà, hello inú jẹ́ ẹ̀tàn, orúkọ gidi sì ṣì ṣeé kà.

dig +short HTTPS app.plant.example
openssl s_client -connect app.plant.example:443 -tls1_3 -status </dev/null> 2>/dev/null | grep -i -E 'ech|status_request'

Àṣẹ àkọ́kọ́ fi hàn bóyá orísun ń tẹ ìgbàsílẹ̀ ohun-èlò HTTPS pẹ̀lú àwòrán ìṣètò ECH jáde, ìyẹn ni bí àwọn ẹ̀rọ-ìbánisọ̀rọ̀ ṣe ń kọ́ kọ́kọ́rọ́. Èkejì ń wá ìsọfúnni ipò ìfọwọ́gbá, bó tilẹ̀ jẹ́ pé ìfiránṣẹ́ àṣeyọrí ẹ̀rọ-ìbánisọ̀rọ̀ ni ẹ̀rí tí ó lágbára jù. Ìgbàwọlé ni ohun tí ó ṣe pàtàkì: sáàbà tí kò ní kọ́kọ́rọ́ tí ó bá mu kò lè tú hello inú, ìsopọ̀ sì padà sẹ́yìn.

Ṣàyẹ̀wò ẹ̀rọ-ìbánisọ̀rọ̀ pẹ̀lú, nítorí àtìlẹyìn aṣàwákiri àti ìṣètò yàtọ̀ síra nípa ẹ̀dà àti pẹpẹ. Ìlànà tí a kọ́ lórí „àwọn aṣàwákiri òde òní ń lo ECH“ jẹ́ àròsọ nípa ẹgbẹ́ ẹ̀rọ, kì í ṣe òtítọ́ nípa ẹgbẹ́ rẹ. Ṣe àkójọ àwọn ẹ̀dà tí ń so mọ́ra gan-an, kí o sì dán ọ̀kọ̀ọ̀kan wọn wò. Ojú-ìwé kan náà tí ń ṣiṣẹ́ láti aṣàwákiri tabili òde òní lè má fi nkankan pa mọ́ fún ẹ̀rọ-ìbánisọ̀rọ̀ àtijọ́ nínú nẹ́tíwọ́kì kan náà.

Kọ ìwọ̀n olùwòó sínú ìlànà

Sọ ibi tí olùwòó jókòó àti ohun tí ó hàn níbẹ̀ kí o tó pinnu ohun tí ìṣàkóso lè gbára lé. Ìsopọ̀ aṣàwákiri mọ́ ojú-ìwé, ìgbékalẹ̀ VPN ìta àti aṣojú tí ń parí TLS ọ̀kọ̀ọ̀kan ń fi ìṣẹ̀lẹ̀ gidi tí ó yàtọ̀ hàn, ìlànà tí a kọ fún ipò kan kì í sábà yí padà lọ́nà mímọ́ sí òmíràn.

Tí ìṣàkóso bá gbára lé kíkà SNI, dán wò bí àwọn ẹ̀rọ-ìbánisọ̀rọ̀ tí a ti gbé kalẹ̀ ṣe ń hùwà nígbà tí ECH wà àti nígbà tí kò sí. Lẹ́yìn náà ṣàkọsílẹ̀ àbájáde ìbámu, nítorí àsẹ́ tí ó dákẹ́ yọ̀ọ́ kúrò nínú ìbámu burú ju èyí tí a kò tíì gbé kalẹ̀ rí.

Níkẹyìn, pa àìdánilójú mọ́ nínú àkọsílẹ̀. Rírọ́pò ẹ̀sùn àgbáyé àtijọ́ pẹ̀lú èyí tuntun ń fi àlàfo kan náà sílẹ̀ lábẹ́ orúkọ ìlànà mìíràn, olùgbéléwọ̀n tó kàn yóò sì gbà á gbọ́ bẹ́ẹ̀ gẹ́gẹ́.

Àwọn àpilẹ̀kọ tó jọra