TLS 1.3 server adını hələ də açıq mətnlə göndərir
TLS 1.3 əl sıxışmanı şifrələyir, amma SNI-ni deyil. ClientHello oxuyun, real ECH qəbulunu yoxlayın və müşahidəçinin hələ nə görə biləcəyini qeyd edin.
Dinləyicini TLS 1.3-ə yüksəltmək müşahidəçinin oxuya biləcəyini dəyişir, amma versiya nömrəsinin işarə etdiyi qədər deyil. ClientHello hələ də hər hansı şifrələmə razılaşdırılmadan əvvəl yola düşür və adi bağlantıda tələb olunan server adı orada açıq mətndə durur. Encrypted Client Hello onu gizlədən mexanizmdir və öz ilkin şərtləri olan ayrı bir yerləşdirmədir. Bu dörd addımı iki davranışdan birini fərz edən siyasət yazmazdan əvvəl yerinə yetirin.
Əl sıxışma əslində nəyi açığa çıxarır
TLS 1.3 serverin sertifikatını və ServerHello-dan sonra gələn əl sıxışmanın böyük hissəsini şifrələyir. Müştərinin ilk göndərdiyi hər şey bu qorumanın xaricindədir, çünki açarlar hələ mövcud deyil. Server adı göstəricisi bu ilk uçuşun hissəsidir, buna görə passiv müşahidəçi heç nəyi pozmadan onu hələ də oxuya bilər.
ECH spesifikasiyası, RFC 9849, bunu əməkdaşlıq edən server üçün daxili ClientHello şifrələyərək dəyişir. Xarici əl sıxışma qalır və şəbəkənin görə biləcəyi ictimai ad daşıyır, buna görə yerləşdirmə hələ də vasitəçilər üçün mənalı olan xarici kimliyə ehtiyac duyur. O xarici ad insanların bağlantının anonim olacağını gözləyərkən qaçırdığı hissədir. Bu örtük adıdır, gizli ad deyil və hər hansı biri kimi həll olunmalı və doğrulanmalıdır.
Bunların heç biri çatdırılma yolunu gizlətmir. Mənbə və təyinat ünvanları, portlar, paket ölçüləri və vaxt müşahidə oluna bilən qalır və bunlar çox vaxt adın dediyindən daha çox kimin danışdığını deyir. Ad həlli və tətbiq səviyyəsində əlaqələr başqa bir təbəqədir, hər biri öz görünürlüyünə malikdir.
Fərz etmək yerinə ClientHello oxuyun
ServerHello-dakı versiya müştərinin nə göndərdiyini sizə demir. İlk uçuşa birbaşa baxın, sizin üçün vacib olan müşahidəçini təmsil edən mövqedən.
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
Birinci əmr əl sıxışma yerinə yetirir və razılaşdırılmış parametrləri göstərir, o cümlədən protokol versiyasını və tələb etdiyiniz adı. İkincisi real bağlantının ilk paketlərini tutur, üçüncüsü isə həmin tutmadan SNI sahəsini çıxarır. Sahə doludursa, təqlid etdiyiniz müşahidəçi onu oxuya bilər.
İkisi uyğun gəlmədikdə müştəri tərəfində və yolda ayrı-ayrılıqda tutun, çünki yerli tutma sonradan middlebox-un yenidən yazdığı və ya atdığı adı göstərə bilər. TLS-i özü sonlandırmayan hostdan da tutun, çünki sonlandıran proksi açıq mətni dizaynına görə görür və şəbəkənin gördüyü barədə heç nə sübut etmir.
ECH uzantısına iddia kimi baxın, sübut kimi deyil
ClientHello-da ECH uzantısı görmək bağlantının ECH işlətdiyi demək deyil. Müştərilər istifadə oluna bilən konfiqurasiyaları olmadıqda GREASE ECH göndərir, məhz əl sıxışmaları eyni görünsün deyə. Uzantı mövcuddur, daxili hello yemdir və əsl ad hələ də oxuna biləndir.
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'
Birinci əmr mənbənin ECH konfiqurasiya parametri olan HTTPS resurs qeydi yayımlayıb-yayımlamadığını göstərir və müştərilər açarı belə öyrənir. İkincisi əl sıxışmanın status məlumatını axtarır, halbuki müştərinin uğur mesajı daha güclü sübutdur. Qəbul vacibdir: uyğun açarı olmayan server daxili hellonu deşifrə edə bilməz və bağlantı geri düşür.
Müştərini də yoxlayın, çünki brauzer dəstəyi və konfiqurasiya versiya və platformaya görə fərqlənir. „Müasir brauzerlər ECH istifadə edir“ üzərində qurulmuş siyasət donanma haqqında fərziyyədir, sizin donanmanız haqqında fakt deyil. Həqiqətən qoşulan versiyaları inventarlaşdırın, sonra hər birindən birini sınayın. Cari masaüstü brauzerindən işləyən eyni səhifə eyni şəbəkədəki daha köhnə müştəridən heç nə gizlətməyə bilər.
Müşahidəçinin əhatəsini siyasətə yazın
Nəzarətin nəyə arxalana biləcəyinə qərar verməzdən əvvəl müşahidəçinin harada oturduğunu və o nöqtədə nəyin göründüyünü bildirin. Brauzerin saytla bağlantısı, xarici VPN daşıması və TLS-i sonlandıran proksi hər biri fərqli faktlar toplusunu açığa çıxarır və bir mövqe üçün yazılmış qayda nadir hallarda digərinə təmiz keçir.
Nəzarət SNI oxumaqdan asılıdırsa, yerləşdirilmiş müştərilərin ECH mövcud olduqda və olmadıqda necə davrandığını sınayın. Sonra uyğunluq nəticəsini qeyd edin, çünki səssizcə uyğunlaşmanı dayandıran filtr heç vaxt yerləşdirilməyəndən pisdir.
Nəhayət, qeyri-müəyyənliyi qeyddə saxlayın. Köhnə universal iddianı daha yenisi ilə əvəz etmək eyni boşluğu başqa protokol adı altında qoyur və növbəti rəyçi ona eyni dərəcədə möhkəm inanacaq.