TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

හැඳින්වීම

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස
සිස්කෝ, බ්ලූකෝට්, ෆයර් අයි වැනි සුප්‍රසිද්ධ නිෂ්පාදකයින්ගේ නවීන ආයතනික අන්තර්ගත පෙරහන් පද්ධති ජාතික මට්ටමින් ක්‍රියාකාරීව ක්‍රියාත්මක වන ඔවුන්ගේ වඩාත් බලවත් සගයන් වන ඩීපීඅයි පද්ධති සමඟ බොහෝ සමානකම් ඇත. දෙදෙනාගේම කාර්යයේ සාරය වන්නේ පැමිණෙන සහ පිටතට යන අන්තර්ජාල ගමනාගමනය පරීක්ෂා කිරීම සහ කළු/සුදු ලැයිස්තු මත පදනම්ව, අන්තර්ජාල සම්බන්ධතාවය තහනම් කිරීමට තීරණයක් ගැනීමයි. ඔවුන් දෙදෙනාම ඔවුන්ගේ කාර්යයේ මූලික කරුණු වලදී සමාන මූලධර්ම මත රඳා පවතින බැවින්, ඒවා මග හැරීමේ ක්‍රම ද බොහෝ පොදු වනු ඇත.

DPI සහ ආයතනික පද්ධති යන දෙකම ඉතා ඵලදායී ලෙස මඟ හැරීමට ඔබට ඉඩ සලසන එක් තාක්ෂණයක් වන්නේ වසම්-ඉදිරිපස තාක්ෂණයයි. එහි සාරය නම්, අපි අවහිර කළ සම්පතක් වෙත ගොස්, හොඳ නමක් ඇති වෙනත් පොදු වසමකට සැඟවී සිටීම, එය පැහැදිලිවම කිසිදු පද්ධතියකින් අවහිර නොකරනු ඇත, උදාහරණයක් ලෙස google.com.

මෙම තාක්ෂණය ගැන දැනටමත් බොහෝ ලිපි ලියා ඇති අතර බොහෝ උදාහරණ ලබා දී ඇත. කෙසේ වෙතත්, ජනප්‍රිය සහ මෑතකදී සාකච්ඡා කරන ලද DNS-over-HTTPS සහ සංකේතාත්මක-SNI තාක්ෂණයන් මෙන්ම TLS 1.3 ප්‍රොටෝකෝලයේ නව අනුවාදය, වසම් ඉදිරිපස සඳහා වෙනත් විකල්පයක් සලකා බැලීමට ඉඩ සලසයි.

තාක්ෂණය අවබෝධ කර ගැනීම

පළමුව, අපි කුඩා මූලික සංකල්ප නිර්වචනය කරමු, එවිට මේ සියල්ල අවශ්‍ය වන්නේ කවුද සහ ඇයි යන්න පිළිබඳව සෑම කෙනෙකුටම අවබෝධයක් ඇත. අපි eSNI යාන්ත්‍රණය ගැන සඳහන් කළෙමු, එහි ක්‍රියාකාරිත්වය තවදුරටත් සාකච්ඡා කෙරේ. eSNI (සංකේතනය කරන ලද සේවාදායක නාම දර්ශකය) යාන්ත්‍රණය SNI හි ආරක්ෂිත අනුවාදයකි, TLS 1.3 ප්‍රොටෝකෝලය සඳහා පමණක් ලබා ගත හැක. ප්‍රධාන අදහස වන්නේ ඉල්ලීම යවන්නේ කුමන වසමකටද යන්න පිළිබඳ තොරතුරු වෙනත් දේ අතර සංකේතනය කිරීමයි.

දැන් අපි බලමු eSNI යාන්ත්‍රණය ප්‍රායෝගිකව ක්‍රියා කරන ආකාරය.

නවීන DPI විසඳුමකින් අවහිර කරන ලද අන්තර්ජාල සම්පතක් අප සතුව ඇතැයි කියමු (උදාහරණයක් ලෙස, සුප්රසිද්ධ ටොරන්ට් ට්රැකර් rutracker.nl ගනිමු). අපි ටොරන්ට් ට්‍රැකර්ගේ වෙබ් අඩවියකට ප්‍රවේශ වීමට උත්සාහ කරන විට, සම්පත අවහිර කර ඇති බව දැක්වෙන සැපයුම්කරුගේ සම්මත අංකුර අපි දකිමු:

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

RKN වෙබ් අඩවියේ මෙම වසම ඇත්ත වශයෙන්ම නැවතුම් ලැයිස්තු වල ලැයිස්තුගත කර ඇත:

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

ඔබ whois විමසන විට, Cloudflare සපයන්නා වන Cloudflare පිටුපස වසම "සැඟවී" ඇති බව ඔබට පෙනෙනු ඇත.

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

නමුත් RKN වෙතින් "විශේෂඥයින්" මෙන් නොව, Beeline වෙතින් (හෝ අපගේ ප්රසිද්ධ නියාමකයාගේ කටුක අත්දැකීම් මගින් උගන්වනු ලබන) වඩා තාක්ෂණික දැනුමක් ඇති සේවකයින් IP ලිපිනය මගින් වෙබ් අඩවිය මෝඩ ලෙස තහනම් නොකළ නමුත් නැවතුම් ලැයිස්තුවට වසම් නාමය එකතු කරන ලදී. එකම IP ලිපිනය පිටුපස සැඟවී ඇති වෙනත් වසම් මොනවාදැයි ඔබ බැලුවහොත් ඔබට මෙය පහසුවෙන් සත්‍යාපනය කළ හැකිය, ඒවායින් එකකට ගොස් ප්‍රවේශය අවහිර කර නොමැති බව බලන්න:

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

මෙය සිදු වන්නේ කෙසේද? සියලුම සන්නිවේදනයන් https ප්‍රොටෝකෝලය හරහා සිදු වන අතර, Beeline වෙතින් https සහතික ආදේශ කිරීම අප තවමත් දැක නොමැති බැවින්, මගේ බ්‍රවුසරය ක්‍රියාත්මක වන්නේ කුමන වසමදැයි සැපයුම්කරුගේ DPI දන්නේ කෙසේද? ඔහු නිරපේක්ෂ ද නැතහොත් මා අනුගමනය කරන්නේ ද?

අපි වයර්ෂාක් හරහා ගමනාගමනය දෙස බලා මෙම ප්‍රශ්නයට පිළිතුරු දීමට උත්සාහ කරමු

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

තිර පිටපත පෙන්වන්නේ බ්‍රවුසරය පළමුව DNS හරහා සේවාදායකයේ IP ලිපිනය ලබා ගන්නා බවත්, පසුව ගමනාන්ත සේවාදායකය සමඟ සම්මත TCP අතට අත දීමක් සිදු වන බවත්, පසුව බ්‍රවුසරය සේවාදායකය සමඟ SSL සම්බන්ධතාවයක් ඇති කර ගැනීමට උත්සාහ කරන බවත්ය. මෙය සිදු කිරීම සඳහා, එය SSL Client Hello පැකට්ටුවක් යවයි, එහි මූලාශ්‍ර වසමෙහි නම පැහැදිලි පෙළෙහි අඩංගු වේ. සම්බන්ධතාවය නිවැරදිව ගමන් කිරීම සඳහා මෙම ක්ෂේත්‍රය cloudflare ඉදිරිපස සේවාදායකයට අවශ්‍ය වේ. අපගේ සම්බන්ධතාවය බිඳ දමමින් සැපයුම්කරු DPI අපව අල්ලා ගන්නේ මෙහිදීය. ඒ අතරම, අපට සපයන්නාගෙන් කිසිදු අංකුරයක් නොලැබෙන අතර, වෙබ් අඩවිය අබල කර හෝ සරලව ක්‍රියා නොකරන්නේ නම් සම්මත බ්‍රවුසර දෝෂය අපට පෙනේ:

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

දැන් අපි බ්‍රවුසරයේ eSNI යාන්ත්‍රණය සක්‍රීය කරමු, සඳහා උපදෙස් වල ලියා ඇති පරිදි ෆයර්ෆොක්ස් :
මෙය සිදු කිරීම සඳහා අපි ෆයර්ෆොක්ස් වින්‍යාස පිටුව විවෘත කරමු ගැන: config සහ පහත සැකසුම් සක්රිය කරන්න:

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

මෙයින් පසු, අපි ක්ලවුඩ්ෆ්ලේර් වෙබ් අඩවියේ සැකසුම් නිවැරදිව ක්‍රියා කරන්නේදැයි පරීක්ෂා කරන්නෙමු. ලින්ක් සහ අපි නැවතත් අපගේ ටොරන්ට් ට්‍රැකර් සමඟ උපක්‍රමය උත්සාහ කරමු.

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

Voila. අපගේ ප්‍රියතම ට්‍රැකර් කිසිදු VPN හෝ ප්‍රොක්සි සේවාදායකයකින් තොරව විවෘත විය. අපි දැන් බලමු වයර්ෂාක් එකේ තියෙන ට් රැෆික් ඩම්ප් එක මොකක්ද කියලා බලන්න.

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

මෙවර, ssl client hello පැකේජයේ නිශ්චිතවම ගමනාන්ත වසම අඩංගු නොවේ, නමුත් ඒ වෙනුවට, නව ක්ෂේත්‍රයක් පැකේජයේ දිස් විය - encrypted_server_name - මෙහි rutracker.nl හි අගය අඩංගු වන අතර, මෙය විකේතනය කළ හැක්කේ cloudflare frontend සේවාදායකයට පමණි. ක්ෂේත්රය. එසේ නම්, සැපයුම්කරු DPI හට අත් සේදීම සහ එවැනි ගමනාගමනයට ඉඩ දීම හැර වෙනත් විකල්පයක් නැත. සංකේතනය සමඟ වෙනත් විකල්ප නොමැත.

ඉතින්, අපි බ්රවුසරයේ තාක්ෂණය ක්රියා කරන ආකාරය දෙස බැලුවා. දැන් අපි එය වඩාත් නිශ්චිත හා රසවත් දේවල් සඳහා අයදුම් කිරීමට උත්සාහ කරමු. පළමුව, අපි TLS 1.3 සමඟ වැඩ කිරීමට eSNI භාවිතා කිරීමට එම curl එක උගන්වමු, ඒ සමඟම eSNI-පාදක වසම් ඉදිරිපස ක්‍රියා කරන ආකාරය අපි බලමු.

eSNI සමඟින් වසම් ඉදිරිපස

https ප්‍රොටෝකෝලය හරහා සම්බන්ධ වීමට curl විසින් සම්මත openssl පුස්තකාලය භාවිතා කරන නිසා, ප්‍රථමයෙන් අපි එහි eSNI සහාය ලබා දිය යුතුය. openssl master branches වල eSNI support එකක් තාම නැති නිසා අපිට විශේෂ openssl ශාඛාවක් බාගෙන compile කරලා Install කරන්න ඕන.

අපි GitHub වෙතින් ගබඩාව ක්ලෝන කර සුපුරුදු පරිදි සම්පාදනය කරමු:

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

$ make
$ cd esnistuff
$ make

ඊළඟට, අපි කර්ල් සමඟ ගබඩාව ක්ලෝන කර අපගේ සම්පාදනය කළ openssl පුස්තකාලය භාවිතයෙන් එහි සම්පාදනය වින්‍යාස කරමු:

$ 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

මෙහිදී openssl පිහිටා ඇති සියලුම නාමාවලි නිවැරදිව සඳහන් කිරීම වැදගත් වේ (අපගේ නඩුවේදී, මෙය /opt/openssl/) සහ වින්‍යාස කිරීමේ ක්‍රියාවලිය දෝෂයකින් තොරව සිදු වන බවට වග බලා ගන්න.

වින්‍යාසය සාර්ථක නම්, අපට පේළිය පෙනෙනු ඇත:

අවවාදයයි: esni ESNI සබල කර ඇති නමුත් පර්යේෂණාත්මක ලෙස සලකුණු කර ඇත. පරිස්සමෙන් භාවිතා කරන්න!

$ make

පැකේජය සාර්ථකව ගොඩනැගීමෙන් පසු, curl වින්‍යාස කිරීමට සහ ධාවනය කිරීමට අපි openssl වෙතින් විශේෂ bash ගොනුවක් භාවිතා කරමු. පහසුව සඳහා curl සමඟ එය නාමාවලියට පිටපත් කරමු:

cp /opt/openssl/esnistuff/curl-esni 

සහ Wireshark හි DNS සහ TLS පැකට් එකවර පටිගත කරන අතරතුර, cloudflare සේවාදායකය වෙත පරීක්ෂණ https ඉල්ලීමක් කරන්න.

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

සේවාදායක ප්‍රතිචාරයේදී, openssl සහ curl වෙතින් බොහෝ දෝෂහරණ තොරතුරු වලට අමතරව, අපට cloudflare වෙතින් කේතය 301 සමඟ HTTP ප්‍රතිචාරයක් ලැබෙනු ඇත.

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/

එයින් ඇඟවෙන්නේ අපගේ ඉල්ලීම ගමනාන්ත සේවාදායකය වෙත සාර්ථකව භාර දී ඇති බවත්, අසා ඇති බවත්ය.

දැන් අපි බලමු වයර්ෂාක්හි රථවාහන ඩම්ප් එක, i.e. මෙම නඩුවේ සැපයුම්කරු DPI දුටු දේ.

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

Cloudflare සේවාදායකය සඳහා පොදු eSNI යතුරක් සඳහා curl පළමුව DNS සේවාදායකය වෙත හැරී ඇති බව දැකිය හැකිය - _esni.cloudflare.com වෙත TXT DNS ඉල්ලීමක් (පැකේජ අංක 13). ඉන්පසුව, openssl පුස්තකාලය භාවිතා කරමින්, Curl විසින් TLS 1.3 ඉල්ලීමක් ක්ලවුඩ් ෆ්ලෙයාර් සේවාදායකය වෙත යවා එහි SNI ක්ෂේත්‍රය පෙර පියවරේදී ලබාගත් පොදු යතුර සමඟ සංකේතනය කර ඇත (පැකට් #22). නමුත්, eSNI ක්ෂේත්‍රයට අමතරව, SSL-hello පැකට්ටුවේ සුපුරුදු - විවෘත SNI සහිත ක්ෂේත්‍රයක් ද ඇතුළත් විය, එය අපට ඕනෑම අනුපිළිවෙලකින් සඳහන් කළ හැකිය (මෙම අවස්ථාවේදී - www.hello-rkn.ru).

මෙම විවෘත SNI ක්ෂේත්‍රය cloudflare සේවාදායකයන් විසින් සකසන විට කිසිදු ආකාරයකින් සැලකිල්ලට නොගත් අතර DPI සපයන්නා සඳහා වෙස් මුහුණක් ලෙස පමණක් සේවය කළේය. cloudflare සේවාදායකයට අපගේ ssl-hello පැකට්ටුව ලැබී, eSNI විකේතනය කර, ඔරිජිනල් SNI එතැනින් උපුටා ගෙන කිසිවක් සිදු නොවූවාක් මෙන් එය සකසන ලදී (එය eSNI සංවර්ධනය කිරීමේදී සැලසුම් කළ ආකාරයටම සියල්ල කළේය).

DPI දෘෂ්ටි කෝණයකින් මෙම නඩුවේ අල්ලා ගත හැකි එකම දෙය වන්නේ _esni.cloudflare.com වෙත වන මූලික DNS ඉල්ලීමයි. නමුත් අපි DNS ඉල්ලීම විවෘත කළේ මෙම යාන්ත්‍රණය ඇතුළත සිට ක්‍රියා කරන ආකාරය පෙන්වීමට පමණි.

අවසානයේ DPI යටතේ ඇති පාපිසි ඉවත් කිරීමට, අපි දැනටමත් සඳහන් කර ඇති DNS-over-HTTPS යාන්ත්‍රණය භාවිතා කරමු. කුඩා පැහැදිලි කිරීමක් - DOH යනු HTTPS හරහා DNS ඉල්ලීමක් යැවීමෙන් මිනිසා-මැද ප්‍රහාරයකින් ආරක්ෂා වීමට ඔබට ඉඩ සලසන ප්‍රොටෝකෝලයකි.

අපි නැවත ඉල්ලීම ක්‍රියාත්මක කරමු, නමුත් මෙවර අපට පොදු eSNI යතුරු ලැබෙන්නේ https ප්‍රොටෝකෝලය හරහා මිස DNS නොවේ:

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

ඉල්ලීම් තදබදය පහත තිර රුවෙහි පෙන්වා ඇත:

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

Curl මුලින්ම Mozilla.cloudflare-dns.com සේවාදායකයට DoH ප්‍රොටෝකෝලය (https සම්බන්ධතාවය 104.16.249.249) හරහා SNI සංකේතනය සඳහා පොදු යතුරු වල අගයන් ඔවුන්ගෙන් ලබා ගැනීමටත් පසුව ගමනාන්තයටත් ප්‍රවේශ වන බව දැකිය හැකිය. සේවාදායකය, වසම පිටුපස සැඟවී ඇත www.hello-rkn.ru.

ඉහත DoH solver mozilla.cloudflare-dns.com වලට අමතරව, අපට වෙනත් ජනප්‍රිය DoH සේවාවන් භාවිතා කළ හැකිය, උදාහරණයක් ලෙස, සුප්‍රසිද්ධ දුෂ්ට සංස්ථාවෙන්.
පහත විමසුම ක්‍රියාත්මක කරමු:

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

තවද අපට පිළිතුර ලැබේ:

< 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

TLS 1.3 මත පදනම් වූ වසම් ඉදිරිපස

මෙම අවස්ථාවෙහිදී, අපි අවහිර කරන ලද rutracker.nl සේවාදායකය වෙත හැරී, DoH විසදුම්කරු dns.google (මෙහි මුද්‍රණ දෝෂයක් නොමැත, දැන් සුප්‍රසිද්ධ සංස්ථාවට තමන්ගේම පළමු මට්ටමේ වසමක් ඇත) සහ වෙනත් වසමකින් අපව ආවරණය කර ගත්තෙමු. සියලුම DPI වලට මරණයේ වේදනාව යටතේ අවහිර කිරීම තහනම් කර ඇත. ලැබුණු ප්‍රතිචාර අනුව, අපගේ ඉල්ලීම සාර්ථකව ක්‍රියාවට නංවා ඇති බව ඔබට වැටහෙනු ඇත.

අපි ආවරණයක් ලෙස සම්ප්‍රේෂණය කරන විවෘත SNI වෙත සැපයුම්කරුගේ DPI ප්‍රතිචාර දක්වන බවට අමතර පරීක්‍ෂණයක් ලෙස, අපට වෙනත් තහනම් සම්පතක් මුවාවෙන් rutracker.nl වෙත ඉල්ලීමක් කළ හැකිය, උදාහරණයක් ලෙස, තවත් “හොඳ” ටොරන්ට් ට්‍රැකර්:

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

අපට සේවාදායකයෙන් ප්‍රතිචාරයක් නොලැබෙනු ඇත, මන්ද... අපගේ ඉල්ලීම DPI පද්ධතිය මගින් අවහිර කරනු ලැබේ.

පළමු කොටසට කෙටි නිගමනයක්

එබැවින්, openssl සහ curl භාවිතයෙන් eSNI හි ක්‍රියාකාරීත්වය නිරූපණය කිරීමට සහ eSNI මත පදනම්ව වසම් ඉදිරිපස ක්‍රියාකාරිත්වය පරීක්ෂා කිරීමට අපට හැකි විය. එලෙසම, වෙනත් වසම්වල "මුවාවෙන්" වැඩ කිරීමට openssl පුස්තකාලය භාවිතා කරන අපගේ ප්‍රියතම මෙවලම් අපට අනුගත කළ හැක. මේ ගැන වැඩි විස්තර අපගේ ඊළඟ ලිපි වලින්.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න