Iwaju agbegbe ti o da lori TLS 1.3

Ifihan

Iwaju agbegbe ti o da lori TLS 1.3
Awọn ọna ṣiṣe sisẹ akoonu ti ile-iṣẹ ode oni lati ọdọ awọn aṣelọpọ olokiki bii Sisiko, BlueCoat, FireEye ni ọpọlọpọ ni wọpọ pẹlu awọn ẹlẹgbẹ wọn ti o lagbara diẹ sii - awọn eto DPI, eyiti o jẹ imuse ni agbara ni ipele orilẹ-ede. Ohun pataki ti iṣẹ ti awọn mejeeji ni lati ṣayẹwo ijabọ Intanẹẹti ti nwọle ati ti njade ati, da lori awọn atokọ dudu / funfun, ṣe ipinnu lati gbesele asopọ Intanẹẹti. Ati pe niwọn igba ti awọn mejeeji gbarale awọn ilana kanna ni awọn ipilẹ ti iṣẹ wọn, awọn ọna fun yiyipo wọn yoo tun ni pupọ ni wọpọ.

Ọkan ninu awọn imọ-ẹrọ ti o fun ọ laaye lati ni imunadoko ni fori mejeeji DPI ati awọn eto ajọṣepọ jẹ imọ-ẹrọ iwaju-ašẹ. Koko-ọrọ rẹ ni pe a lọ si orisun ti o dina, ti o fi ara pamọ si ẹlomiiran, agbegbe ti gbogbo eniyan pẹlu orukọ rere, eyiti o han gbangba kii yoo dina nipasẹ eyikeyi eto, fun apẹẹrẹ google.com.

Ọpọlọpọ awọn nkan ti tẹlẹ ti kọ nipa imọ-ẹrọ yii ati pe ọpọlọpọ awọn apẹẹrẹ ti fun. Sibẹsibẹ, olokiki ati ijiroro laipẹ DNS-over-HTTPS ati awọn imọ-ẹrọ SNI ti paroko, ati ẹya tuntun ti Ilana TLS 1.3, jẹ ki o ṣee ṣe lati gbero aṣayan miiran fun iwaju agbegbe.

Oye imọ-ẹrọ

Ni akọkọ, jẹ ki a ṣalaye awọn imọran ipilẹ diẹ ki gbogbo eniyan ni oye ti tani ati idi ti gbogbo eyi ṣe nilo. A mẹnuba ẹrọ eSNI, iṣẹ ṣiṣe eyiti yoo jiroro siwaju. Ilana eSNI (itọkasi Orukọ olupin ti paroko) jẹ ẹya ti o ni aabo ti SNI, wa nikan fun ilana TLS 1.3. Ero akọkọ ni lati encrypt, laarin awọn ohun miiran, alaye nipa agbegbe wo ni a firanṣẹ si.

Bayi jẹ ki a wo bii ẹrọ eSNI ṣe n ṣiṣẹ ni iṣe.

Jẹ ki a sọ pe a ni awọn orisun Intanẹẹti ti o dina nipasẹ ojutu DPI ode oni (jẹ ki a mu, fun apẹẹrẹ, olokiki olokiki rutracker.nl). Nigba ti a ba gbiyanju lati wọle si oju opo wẹẹbu olutọpa ṣiṣan, a rii stub boṣewa olupese ti n tọka pe awọn orisun ti dinamọ:

Iwaju agbegbe ti o da lori TLS 1.3

Lori oju opo wẹẹbu RKN agbegbe yii jẹ atokọ nitootọ ni awọn atokọ iduro:

Iwaju agbegbe ti o da lori TLS 1.3

Nigbati o ba beere whois, o le rii pe agbegbe naa funrararẹ “farapamọ” lẹhin olupese awọsanma Cloudflare.

Iwaju agbegbe ti o da lori TLS 1.3

Ṣugbọn ko dabi “awọn alamọja” lati RKN, awọn oṣiṣẹ imọ-ẹrọ diẹ sii lati Beeline (tabi kọ ẹkọ nipasẹ iriri kikorò ti olutọsọna olokiki wa) ko fi ofin de aaye naa nipasẹ adiresi IP, ṣugbọn ṣafikun orukọ ìkápá si atokọ iduro naa. O le ni rọọrun rii daju eyi ti o ba wo kini awọn ibugbe miiran ti o farapamọ lẹhin adiresi IP kanna, ṣabẹwo si ọkan ninu wọn ki o rii pe wiwọle ko dina:

Iwaju agbegbe ti o da lori TLS 1.3

Bawo ni eyi ṣe ṣẹlẹ? Bawo ni DPI olupese ṣe mọ aaye wo ni aṣawakiri mi wa lori, niwọn igba ti gbogbo awọn ibaraẹnisọrọ waye nipasẹ ilana https, ati pe a ko tii ṣe akiyesi iyipada ti awọn iwe-ẹri https lati Beeline? Ṣe o jẹ clairvoyant tabi ṣe n tẹle mi?

Jẹ ki a gbiyanju lati dahun ibeere yii nipa wiwo ijabọ nipasẹ wireshark

Iwaju agbegbe ti o da lori TLS 1.3

Sikirinifoto fihan pe akọkọ ẹrọ aṣawakiri naa gba adiresi IP olupin nipasẹ DNS, lẹhinna imuwọwọ boṣewa TCP kan waye pẹlu olupin opin irin ajo, ati lẹhinna ẹrọ aṣawakiri naa gbiyanju lati fi idi asopọ SSL kan mulẹ pẹlu olupin naa. Lati ṣe eyi, o firanṣẹ apo-iwe Hello Client SSL kan, eyiti o ni orukọ agbegbe orisun ninu ọrọ mimọ. Aaye yii nilo nipasẹ olupin frontend cloudflare lati le da ọna asopọ naa tọ. Eyi ni ibi ti DPI olupese ti mu wa, fifọ asopọ wa. Ni akoko kanna, a ko gba eyikeyi abori lati ọdọ olupese, ati pe a rii aṣiṣe aṣawakiri boṣewa bi ẹnipe aaye naa jẹ alaabo tabi nirọrun ko ṣiṣẹ:

Iwaju agbegbe ti o da lori TLS 1.3

Bayi jẹ ki a mu ẹrọ eSNI ṣiṣẹ ni ẹrọ aṣawakiri, bi a ti kọ sinu awọn ilana fun Akata :
Lati ṣe eyi a ṣii oju-iwe iṣeto Firefox nipa: konfigi ati mu awọn eto atẹle ṣiṣẹ:

network.trr.mode = 2;
network.trr.uri = https://mozilla.cloudflare-dns.com/dns-query
network.security.esni.enabled = true

Lẹhin eyi, a yoo ṣayẹwo pe awọn eto n ṣiṣẹ ni deede lori oju opo wẹẹbu cloudflare. ọna asopọ ati pe jẹ ki a gbiyanju ẹtan naa pẹlu olutọpa ṣiṣan wa lẹẹkansi.

Iwaju agbegbe ti o da lori TLS 1.3

Voila. Olutọpa ayanfẹ wa ṣii laisi VPN eyikeyi tabi awọn olupin aṣoju. Jẹ ki a ni bayi wo idalenu ijabọ ni wireshark lati rii kini o ṣẹlẹ.

Iwaju agbegbe ti o da lori TLS 1.3

Ni akoko yii, package hello alabara ssl ko ni ni gbangba ni aaye opin irin ajo, ṣugbọn dipo, aaye tuntun kan han ninu package - encrypted_server_name - eyi ni ibiti iye rutracker.nl wa, ati pe olupin frontend cloudflare nikan le ṣe idinku eyi. aaye. Ati pe ti o ba jẹ bẹ, lẹhinna DPI olupese ko ni yiyan bikoṣe lati wẹ ọwọ rẹ ati gba iru ijabọ bẹẹ. Ko si awọn aṣayan miiran pẹlu fifi ẹnọ kọ nkan.

Nitorinaa, a wo bii imọ-ẹrọ ṣe n ṣiṣẹ ni ẹrọ aṣawakiri. Nisisiyi ẹ ​​jẹ ki a gbiyanju lati lo si awọn ohun kan pato ati awọn ohun ti o wuni. Ati ni akọkọ, a yoo kọ ọmọ-ọwọ kanna lati lo eSNI lati ṣiṣẹ pẹlu TLS 1.3, ati ni akoko kanna a yoo rii bii agbegbe ti o da lori eSNI ti n ṣiṣẹ iwaju funrararẹ.

Ibugbe iwaju pẹlu eSNI

Nitori otitọ pe curl nlo ile-ikawe openssl boṣewa lati sopọ nipasẹ ilana https, ni akọkọ gbogbo a nilo lati pese atilẹyin eSNI nibẹ. Ko si atilẹyin eSNI ni awọn ẹka oluwa openssl sibẹsibẹ, nitorinaa a nilo lati ṣe igbasilẹ ẹka openssl pataki kan, ṣajọ ati fi sii.

A ṣe akopọ ibi-ipamọ lati GitHub ati ṣe akopọ bi igbagbogbo:

$ git clone https://github.com/sftcd/openssl
$ cd openssl
$ ./config

$ make
$ cd esnistuff
$ make

Nigbamii ti, a ṣe ẹda ibi ipamọ pẹlu curl ati tunto akojọpọ rẹ nipa lilo ile-ikawe openssl ti a ṣe akojọpọ:

$ cd $HOME/code
$ git clone https://github.com/niallor/curl.git curl-esni
$ cd curl-esni

$ export LD_LIBRARY_PATH=/opt/openssl
$ ./buildconf
$ LDFLAGS="-L/opt/openssl" ./configure --with-ssl=/opt/openssl --enable-esni --enable-debug

Nibi o ṣe pataki lati ṣalaye ni deede gbogbo awọn ilana nibiti openssl wa (ninu ọran wa, eyi jẹ /opt/openssl/) ati rii daju pe ilana iṣeto naa lọ laisi awọn aṣiṣe.

Ti iṣeto ba ṣaṣeyọri, a yoo rii laini naa:

IKILO: esni ESNI sise sugbon samisi EXPERIMENTAL. Lo pẹlu iṣọra!

$ make

Lẹhin ti kọ package ni aṣeyọri, a yoo lo faili bash pataki kan lati openssl lati tunto ati ṣiṣe curl. Jẹ ki a daakọ si itọsọna pẹlu curl fun irọrun:

cp /opt/openssl/esnistuff/curl-esni 

ati ṣe idanwo https kan ibeere si olupin cloudflare, lakoko ti o n ṣe igbasilẹ DNS ati awọn apo-iwe TLS nigbakanna ni Wireshark.

$ ESNI_COVER="www.hello-rkn.ru" ./curl-esni https://cloudflare.com/

Ninu idahun olupin, ni afikun si ọpọlọpọ alaye n ṣatunṣe aṣiṣe lati openssl ati curl, a yoo gba esi HTTP kan pẹlu koodu 301 lati cloudflare.

HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 13:12:55 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: max-age=3600
< Expires: Sun, 03 Nov 2019 14:12:55 GMT
< Location: https://www.cloudflare.com/

eyi ti o tọkasi pe a ti firanṣẹ ibeere wa ni aṣeyọri si olupin ti nlo, ti gbọ ati ṣiṣe.

Bayi jẹ ki a wo idalenu ijabọ ni wireshark, i.e. ohun ti olupese DPI ri ninu apere yi.

Iwaju agbegbe ti o da lori TLS 1.3

A le rii pe curl akọkọ yipada si olupin DNS fun bọtini eSNI ti gbogbo eniyan fun olupin cloudflare - ibeere TXT DNS kan si _esni.cloudflare.com (package No. 13). Lẹhinna, ni lilo ile-ikawe openssl, curl fi ibeere TLS 1.3 ranṣẹ si olupin cloudflare ninu eyiti aaye SNI ti paroko pẹlu bọtini gbogbo eniyan ti o gba ni igbesẹ iṣaaju (packet #22). Ṣugbọn, ni afikun si aaye eSNI, apo-iwe SSL-hello tun pẹlu aaye kan pẹlu deede - SNI ṣiṣi, eyiti a le ṣe pato ni eyikeyi aṣẹ (ninu ọran yii - www.hello-rkn.ru).

Aaye SNI ti o ṣii yii ko ṣe akiyesi ni eyikeyi ọna nigbati a ṣe ilana nipasẹ awọn olupin awọsanmaflare ati pe o ṣiṣẹ nikan bi iboju-boju fun DPI olupese. Awọn olupin cloudflare gba apo-iwe ssl-hello wa, ti sọ eSNI kuro, yọ SNI atilẹba kuro nibẹ o si ṣe ilana rẹ bi ẹnipe ko si ohun ti o ṣẹlẹ (o ṣe ohun gbogbo ni pato bi a ti pinnu nigbati o ba n dagba eSNI).

Ohun kan ṣoṣo ti o le mu ninu ọran yii lati oju wiwo DPI ni ibeere DNS akọkọ si _esni.cloudflare.com. Ṣugbọn a jẹ ki ibeere DNS ṣii nikan lati ṣafihan bi ẹrọ yii ṣe n ṣiṣẹ lati inu.

Lati nipari fa rogi kuro labẹ DPI, a lo ẹrọ DNS-over-HTTPS ti a mẹnuba tẹlẹ. Alaye diẹ - DOH jẹ ilana ti o fun ọ laaye lati daabobo lodi si ikọlu eniyan-ni-arin nipasẹ fifiranṣẹ ibeere DNS kan lori HTTPS.

Jẹ ki a ṣiṣẹ ibeere naa lẹẹkansi, ṣugbọn ni akoko yii a yoo gba awọn bọtini eSNI ti gbogbo eniyan nipasẹ ilana https, kii ṣe DNS:

ESNI_COVER="www.hello-rkn.ru" DOH_URL=https://mozilla.cloudflare-dns.com/dns-query ./curl-esni https://cloudflare.com/

Idasonu ijabọ ibeere ti han ni sikirinifoto ni isalẹ:

Iwaju agbegbe ti o da lori TLS 1.3

O le rii pe curl akọkọ wọle si olupin mozilla.cloudflare-dns.com nipasẹ ilana DoH (asopọ https si olupin 104.16.249.249) lati gba lati ọdọ wọn awọn iye ti awọn bọtini gbangba fun fifi ẹnọ kọ nkan SNI, ati lẹhinna si opin irin ajo naa olupin, nọmbafoonu sile awọn ašẹ www.hello-rkn.ru.

Ni afikun si oke DoH resolver mozilla.cloudflare-dns.com, a le lo awọn iṣẹ DoH olokiki miiran, fun apẹẹrẹ, lati ile-iṣẹ ibi olokiki.
Jẹ ki a ṣiṣẹ ibeere wọnyi:

ESNI_COVER="www.kremlin.ru" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

Ati pe a gba idahun:

< HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 14:10:22 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=da0144d982437e77b0b37af7d00438b1a1572790222; expires=Mon, 02-Nov-20 14:10:22 GMT; path=/; domain=.rutracker.nl; HttpOnly; Secure
< Location: https://rutracker.nl/forum/index.php
< CF-Cache-Status: DYNAMIC
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 52feee696f42d891-CPH

Iwaju agbegbe ti o da lori TLS 1.3

Ni ọran yii, a yipada si olupin rutracker.nl ti dina, ni lilo DoH resolver dns.google (ko si typo nibi, ni bayi ile-iṣẹ olokiki ni agbegbe ipele akọkọ tirẹ) ati bo ara wa pẹlu agbegbe miiran, eyiti o jẹ muna. eewọ fun gbogbo awọn DPI lati dènà labẹ irora iku. Da lori idahun ti o gba, o le loye pe ibeere wa ti ni ilọsiwaju ni aṣeyọri.

Gẹgẹbi ayẹwo afikun ti DPI ti olupese ṣe idahun si SNI ti o ṣii, eyiti a gbejade bi ideri, a le ṣe ibeere kan si rutracker.nl labẹ itanjẹ ti diẹ ninu awọn orisun eewọ miiran, fun apẹẹrẹ, olutọpa ṣiṣan “dara” miiran:

$ ESNI_COVER="rutor.info" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

A ko ni gba esi lati ọdọ olupin, nitori... ibeere wa yoo dina nipasẹ eto DPI.

Ipari kukuru si apakan akọkọ

Nitorinaa, a ni anfani lati ṣafihan iṣẹ ṣiṣe ti eSNI ni lilo openssl ati curl ati idanwo iṣẹ ti iwaju iwaju ti o da lori eSNI. Ni ọna kanna, a le ṣe atunṣe awọn irinṣẹ ayanfẹ wa ti o lo ile-ikawe openssl lati ṣiṣẹ "labẹ itanjẹ" ti awọn ibugbe miiran. Awọn alaye diẹ sii nipa eyi ninu awọn nkan wa atẹle.

orisun: www.habr.com

Fi ọrọìwòye kun