Bir VPN açıklamasında TLS kelimesini görüp bir web proxy'sinin bu trafiği anlayacağı sonucuna varmak yaygın bir kestirmedir. Bu protokolün içinde eşler kendi paketlerini değiş tokuş eder ve TLS o değiş tokuşun içindeki tek bir kanalın parçası olarak çalışır. Kullanıcının önemsediği yük farklı bir mesaj biçiminde gider, bu yüzden ikisi sıradan bir HTTPS oturumuyla asla örtüşmez.

Önce zarf gelir

Her tünel paketi protokolün kendi başlığıyla başlar: bir mesaj türü, bir anahtar tanımlayıcısı ve bayt akışı taşımasında paketin nerede bittiğini işaretleyen bir uzunluk öneki. O zarfı ayrıştırmayan bir okuyucu bir sonraki alanın nerede başladığını bilemez.

outer transport (UDP datagram or TCP stream)
  -> OpenVPN header (opcode, key id, length where needed)
    -> control message (reliability wrapper, TLS exchange)
    -> data message (protected inner packet)

Bu taslak bir haritadır, bayt tablosu değil, çünkü tam alanlar mesaj türüne bağlıdır, ancak ilk oktet her zaman işlem kodunu ve anahtar tanımlayıcısını birlikte paketler. Mesaj türünü port numarasından tahmin etmek, çözücülerin gördüklerini yanlış adlandırmasına yol açan şeydir. Teşhis için önemli olan sıradır: taşıma, sonra protokol zarfı, sonra iki iş türünden biri. Ardından ne geleceğine dair bir görüş oluşturmadan önce zarfı okuyun. Yanlış yerden başlayan bir çözücü kendinden emin saçmalık üretir.

Güvenilirlik katmanı protokole aittir

Denetim mesajlarının sıralı, onaylanmış teslimata ihtiyacı vardır ve protokol bunu onaylar ve yeniden iletimlerle kendisi sağlar. Bir onay kendi mesajı olarak gelebilir ya da başka bir denetim mesajıyla birlikte yolculuk edebilir, bu da tek bir temiz değiş tokuş bekleyen herkese izleri düzensiz gösterir.

Avantaj, dış taşıma UDP olsa bile TLS el sıkışmasının güvenilir bir taşıyıcı almasıdır. Bedel, tek bir datagramın o konuşmanın yalnızca bir bölümünü içerebilmesidir, bu yüzden onu bağımsız bir TLS kaydı olarak ele almak saçmalık üretir. Yeniden birleştirme protokol katmanında olmalıdır. Bu yüzden yakalanan bir paket nadiren eksiksiz bir el sıkışma adımı gibi görünür.

Dış taşımayı TCP'ye geçirmek bu katmanı kaldırmaz. Güvenilir taşıma, protokol düzeyinde daha az yeniden iletim demektir; çerçevelemenin kaybolması veya trafiğin HTTP'ye dönüşmesi değil.

Veri paketleri farklı bir biçim kullanır

Oturum var olduğunda, kullanışlı yük iç IP paketlerini veya Ethernet çerçevelerini taşıyan veri mesajları olarak gelir. Kendi anahtarları ve kendi işlemeleriyle korunurlar ve bir TLS kitaplığının kabul edeceği hiçbir anlamda TLS uygulama kaydı değildirler.

Bu ayrım yapılandırmada görülür: denetim kanalı ve veri kanalı ayrı şifre ayarlarına sahiptir, bu yüzden birini adlandıran bir günlük satırı diğeri hakkında hiçbir şey söylemez. Güçlü bir denetim şifresini güçlü bir veri şifresinin kanıtı olarak okumak yaygın bir raporlama hatasıdır.

İlgili bir yanlış anlamayı da açıklamanın dışında tutun. TLS, simetrik veri kanalının yanında oturan bir ortak anahtar kanalı değildir, çünkü TLS anahtarlar kurulduktan sonra kendi kayıtlarını simetrik olarak korur. Gerçek ayrım rol ve paket biçimidir, her tarafın hangi tür kriptografi kullandığı değil.

Neden bir HTTPS proxy yardımcı olamaz

TLS'i sonlandıran bir proxy, bir TLS kayıt akışı ve ardından içinde bir uygulama protokolü bekler. Bu protokolün denetim kanalı, kendi çerçevelemesinin içinde, çevresinde bir güvenilirlik katmanıyla taşınır, bu yüzden sonlandıran proxy o çerçevelemeyi bozuk girdi olarak okur.

Baytları veya datagramları yorumlamadan geçiren saydam bir iletici, akışı yeniden yazmadığı veya yeniden birleştirmediği sürece çalışabilir. Herhangi bir aracı hakkında sorulması gereken soru, gerçek taşımayı ve çerçevelemeyi iletip iletmediğidir; bir yerde TLS destekleyip desteklemediği değil. Proxy kurallarına bir akşam harcamadan önce bunu sorun. Buradaki arızaların çoğu eksik bir ayar değil, mimaridir.

Bir izi doğru okumak

Önce bir denetim değiş tokuşu, ardından çok daha fazla sayıda veri mesajı bekleyin, ikisi de tek bir taşımayı paylaşır. Denetim aşaması tamamlanıp veri aşaması takılırsa, arıza el sıkışmayla değil anahtarlar, yönlendirme veya veri yolunun filtrelenmesiyle ilgilidir. Birkaç veri mesajı yakalayın ve istemciden ayrılıp ayrılmadıklarını kontrol edin. O tek gözlem aramayı ikiye böler.

Anahtar yöntemlerine ilişkin tarihsel açıklamalar protokol belgelerinde belirli bir sürümün hâlâ her eski biçimi desteklediği anlamına gelmez. İşlerin eskiden nasıl yürüdüğünü anlatan bir paragrafa dayanarak bir beklenti kurmadan önce çalıştırdığınız sürümü kontrol edin.

İlgili makaleler