Temeller

TLS parmak izi ve SNI, açıkça

Her HTTPS bağlantısı açıkta yapılan bir konuşmayla başlar. Bu konuşmada söylenen iki şey — istediğiniz sitenin adı ve yazılımınızın merhaba deyiş biçimi — bir filtreleme sisteminin sahip olduğu en değerli işaretlerdir.

4 dk okumaSon gözden geçirme

HTTPS'in şifreli olmayan kısmı

TLS şifreli başlayamaz, çünkü iki taraf henüz bir anahtar üzerinde anlaşmamıştır. Bu anahtarı kuran el sıkışma bu yüzden düz metin olarak gönderilir ve hayli kapsamlıdır: istemci sürümler, şifre takımları, eliptik eğriler, imza algoritmaları ve bir uzantı listesi önerir; sunucu da kendisine sunulanlar arasından seçer.

El sıkışmadan sonraki her şey korunur. El sıkışma sırasındaki her şey yol üzerindeki herkes için okunabilirdir. Tanımlayıcı değerin neredeyse tamamını bunun iki unsuru taşır.

Server Name Indication: açıktaki ana bilgisayar adı

Tek bir IP adresi yaygın olarak binlerce siteye hizmet verir. Sunucunun el sıkışmayı tamamlayabilmesi için hangi sertifikayı sunacağını önceden bilmesi gerekir; bu yüzden istemci istediği ana bilgisayar adını Server Name Indication adlı bir uzantıda belirtir. Şifrelenmemiş olarak, en ilk mesajda, her yaygın istemci tarafından gönderilir.

Bir filtreleme sistemi için bu neredeyse ideal. Hedeflenen varış noktasını adıyla, sabit ve öngörülebilir bir yerde verir; bağlantıyı daha ileri izlemeye ya da DNS ile ilişkilendirmeye gerek kalmaz. Bir listeyle eşleştirmenin maliyeti neredeyse sıfırdır.

  • Adrese göre engellemekten daha güvenilirdir, çünkü tek bir adres hem istenen hem istenmeyen siteleri barındırıyor olabilir.
  • Şifreli DNS dâhil olmak üzere alternatif bir DNS çözücü kullanımından sağ çıkar — ad, bağlantının kendisinde yeniden ve açıkça belirtilir.
  • Daha sert bir yapılandırma olan beyaz liste için de aynı ölçüde kullanışlıdır: adı onaylı listede olmayan her şeyi düşür.

Encrypted Client Hello

Encrypted Client Hello, bu açığı kapatmak için tasarlanmış mekanizmadır. İstemci sunucunun açık anahtarını DNS üzerinden alır, merhabasının hassas kısmını — gerçek ana bilgisayar adı dâhil — şifreler ve onun yerine genel bir kamusal ad taşıyan bir dış merhaba gönderir. Gözlemci yalnızca o kamusal adı görür.

Gerçekten işe yarar ve anlamlı bir iyileşmedir. Sınırları teorik değil pratiktir: her iki uçta destek gerektirir, düşmanca bir çözücünün vermeyi reddedebileceği bir DNS kaydına bağlıdır ve neredeyse hiç kimsenin kullanmadığı bir ağda onu kullanıyor olmanız başlı başına ayırt edicidir. Bir ağ ayrıca onu taşıyan el sıkışmaları büsbütün reddedebilir.

TLS parmak izi: siteyi değil yazılımı tanımlar

İkinci işaret daha incedir. TLS'te hiçbir şey her istemcinin aynı şeyleri aynı sırayla önermesini gerektirmez ve pratikte hiçbiri önermez. Chrome belirli bir şifre takımı kümesini belirli bir sırayla, belirli bir uzantı kümesiyle — bilinçli yem değerler dâhil — önerir. Firefox farklıdır. Go'nun standart kütüphanesi her ikisinden de keskin biçimde ayrılır. OpenSSL yine farklıdır ve sürümleri arasında da farklılaşır.

Bu sıralı kümeyi özetlemek, istemci yazılımı için kısa ve kararlı bir tanımlayıcı üretir. JA3 yaygın kullanılan ilk şemaydı; JA4 onun ardılıdır ve bazı istemcilerin artık bilinçli olarak yaptığı karıştırmaya karşı daha dayanıklı olacak şekilde tasarlanmıştır. Her hâlükârda sonuç aynıdır: bir gözlemci, hiçbir şeyi çözmeden bağlantıyı ne tür bir programın açtığını anlayabilir.

Bir parmak izi gözlemciye ne söyler, ne söylemez
SoruYanıt
Bu bağlantıyı hangi tarayıcı ya da kütüphane kurdu?Genellikle, bir sürüm aralığına kadar.
Hangi site istendi?Parmak izinden değil — o SNI'nin işi.
Ne gönderildi ya da alındı?Hayır.
İstemci iddia ettiği şeye uyuyor mu?Evet, ve asıl mesele budur.

Parmak izini tünelleme açısından önemli kılan işte bu son satırdır. SNI'si sıradan bir web sitesini söyleyen, ama parmak izi bir tarayıcıya değil bir Go programına ait olan bir bağlantı kendi kendisiyle çelişmiştir. İşaretlerin hiçbiri tek başına şüpheli değildir; şüpheli olan çelişkidir.

Taklit neden göründüğünden zordur

Akla gelen yanıt, tünele bir tarayıcının parmak izini ürettirmektir. Tam da bunun için kütüphaneler vardır ve işe yararlar. Bunu zorlu kılan şey, bir kez çözülüp bitirilecek bir problem olmamasıdır.

  • Tarayıcılar, şifre takımları emekliye ayrıldıkça ve kuantum sonrası anahtar değişimi yaygınlaştıkça el sıkışmalarını düzenli olarak değiştirir. Bir yıl önce Chrome ile eşleşen bir parmak izi artık hiçbir şeyle eşleşmez ki bu, hiç taklit etmemekten kötüdür.
  • Bazı tarayıcılar uzantı sırasını bilinçli olarak rastgeleleştirir, dolayısıyla tek bir anlık görüntünün durağan taklidi başlı başına bir anormalliktir.
  • Parmak izi diğer her şeyle tutarlı olmak zorundadır: anlaşılan sürümle, ALPN değeriyle, ardından gelen kayıt boyutlarıyla, ilk isteğin zamanlamasıyla.
  • Nadir bir parmak izi, tünel olarak bilinmese bile bir işarettir. Sıra dışı olmak yeter.

Buradan çıkarılacak genel ilke şudur: gizlenmek şifreli olmakla ya da sıra dışı olmakla ilgili değildir. Tutarlılıkla ilgilidir — her katmanın aynı hikâyeyi anlatması ve o hikâyenin sıkıcı olan hikâye olması.

Sık sorulan sorular

Ağım HTTPS üzerinden hangi siteleri ziyaret ettiğimi görebilir mi?

Neredeyse tüm durumlarda ana bilgisayar adını görebilir, çünkü o TLS el sıkışmasında açık olarak gönderilir. Belirli sayfayı, içeriği ya da gönderdiklerinizi göremez. Encrypted Client Hello, her iki uç da desteklediği yerde ana bilgisayar adını da gizler.

JA3 parmak izi nedir?

Bir istemcinin TLS Client Hello'sunda sunduğu sıralı alanların — sürüm, şifre takımları, uzantılar, eğriler ve nokta biçimleri — bir özetidir. Kullanıcıyı değil istemci yazılımını tanımlar ve hem güvenlik izlemede hem filtrelemede yaygın kullanılır. JA4 aynı amaca hizmet eden daha yeni bir şemadır.

VPN SNI'yi gizler mi?

Onu başka yere taşır. Tünel üzerinden ziyaret ettiğiniz sitelerin el sıkışmaları şifreli kanalın içinde gerçekleşir; orada yerel ağ onları okuyamaz. Tünele giden bağlantının kendisi kendi el sıkışması olan ayrı bir TLS oturumudur ve o alana ne koyarsa ağın gördüğü de odur.

HushTunnel bunu nasıl uyguluyor

HushTunnel, bu rehberlerde anlatılan tasarımları — REALITY ve XTLS ile birlikte VLESS — kullanır ve ziyaret ettiğiniz sitelere dair hiçbir kayıt tutmaz.

Tüm rehberler