it-swarm-tr.com

SSL / TLS (https) erişilen URL'leri gizliyor mu?

Diyelim ki bunu tarayıcımda yazıyorum

https://www.mysite.com/getsecret?username=alice&password=mysecret

ve bir saldırgan benden ISS'ime olan tüm trafiği izliyor.

Hangi bilgiler HTTPS tarafından korunmaktadır? URL açıklandı mı? Alma isteğinin parametreleri açıklanmış mı?

Ayrıca, HTTPS URL için bütünlük sağlıyor mu?

Çeşitli HTTPS makalelerine ve TLS spesifikasyonuna bakmayı denedim, ancak bunu anlayamadım.

[EDIT:] Yalnızca sunucu etki alanı adının gösterilmesi uygun olur. Ancak, ?username=alice&password=mysecret açıklanmalıdır.

71
Jus12

HTTPS protokolü, SSL veya TLS bağlantısı (TCP üzerinden) üzerinden HTTP kullanmaya eşdeğerdir.

Böylece, önce sunucuya bir TCP bağlantısı (443 numaralı bağlantı noktasında) açılır. Bu genellikle sunucunun Ana Bilgisayar adını göstermek için yeterlidir (yani www.mysite.com sizin durumunuzda) saldırgana. IP adresi doğrudan gözlenir ve:

  1. genellikle daha önce şifrelenmemiş bir DNS sorgusu yaptınız,
  2. birçok HTTPS sunucusu IP adresi başına yalnızca bir alan adı sunar,
  3. Sunucunun sertifikası düz olarak gönderilir ve sunucu adını içerir (birden çok sertifika arasında belki de),
  4. daha yeni TLS sürümlerinde, istemcinin Sunucuya hangi Ana Bilgisayar adının istendiğini gösterdiği sunucu adı göstergesi vardır, böylece sunucu birden çok sertifika varsa doğru sertifikayı sunabilir. (Bu 2'den uzaklaşmak için yapılır.)

Sonra bir TLS el sıkışması gerçekleşir. Bu, bir şifre paketinin müzakere edilmesini ve ardından bir anahtar değişimini içerir. Tarayıcınızdan ve sunucunuzdan en az birinin kabul edilen süitlere NONE şifresini dahil etmediğini varsayarsak, anahtar değişiminden sonraki her şey şifrelenir.

Ve başarılı bir ortadaki adam saldırısı (yani bağlantıyı kesen ve tarayıcınızın kabul ettiği sahte bir sunucu sertifikası sunan bir saldırgan) olmadığını varsayarsak, anahtar değişimi güvenlidir ve hiçbir dinleyici hiçbir şeyin şifresini çözemez. siz ve sunucu arasında gönderilir ve ayrıca hiçbir saldırgan, fark edilmeden içeriğin herhangi bir bölümünü değiştiremez. Bu, URL'yi ve HTTP isteğinin herhangi bir bölümünü ve sunucudan gelen yanıtı içerir.

Tabii ki, D.W. bahsedilirse, hem isteğin uzunluğu (URL'den çok daha fazla değişken veri içermeyen, belki bazı Çerezler) hem de şifrelenmiş veri akışından yanıt görülebilir. Bu, özellikle sunucuda çok az sayıda farklı kaynak varsa gizliliği bozabilir. Ayrıca herhangi bir takip kaynak talebi.

URL'deki şifreniz (veya isteğin herhangi bir kısmı) yine de güvenli olmalıdır - en fazla uzunluğu biliniyor olabilir.

59
Paŭlo Ebermann

@ Paŭlo Ebermann ve @Jeff Ferland'ın söylediği gibi, GET isteği SSL altında şifrelenmiştir ve bu nedenle güvenlidir. Ancak, birçok web sunucusunun GET isteklerini ve parametrelerini günlüğe kaydettiğini ve GET aracılığıyla gönderdiğiniz tüm kimlik bilgilerinin veya diğer hassas bilgilerin bir günlüğe bir yere yazılabileceğini unutmayın. Bu nedenle, hassas veriler gönderirken POST (SSL altında da şifrelenir)) kullanmanız gerekir.

Bu "şifreleme tüm sorunlarınızı çözen sihirli güvenlik değildir" kategorisine girer.

26
gowenfawr

URL'nin korunmadığını, yani pasif bir dinleyicinin ziyaret ettiğiniz URL'yi öğrenebileceğini varsaymalısınız.

Bunun diğer insanların iddia ettikleri ile çeliştiğini fark ediyorum, bu yüzden daha iyi açıklayabilirim.

Alan adından sonraki her şeyin şifreli olarak gönderildiği doğrudur. Örneğin, url https://www.example.com/foo/bar.html, sonra www.example.com saldırgan tarafından görülebilirken, HTTP isteği (GET /foo/bar.html HTTP/1.0) şifreli. Bu, bir gizli dinleyicinin doğrudan URL'nin yol bölümünü görmesini engeller. Bununla birlikte, URL'nin yol bölümünün uzunluğu kulak misafiri tarafından görülebilir. Ayrıca, ziyaret ettiğiniz sayfanın uzunluğu gibi diğer bilgiler de kulak misafiri tarafından görülebilir. Bu, saldırganın kapısındaki bir ayak. Saldırgan https trafiğinize kulak misafiri olabiliyorsa, ziyaret ettiğiniz URL'leri öğrenmek için kapıda bu ayağı kullanan bir araştırma yapılmıştır .

Bu saldırıların başarılı olacağının garantisi olmasa da, en kötüsünü varsaymanın ihtiyatlı olacağını öneririm: bir kulak misafiri ziyaret ettiğiniz URL'leri öğrenebileceğini varsaymak. Bu nedenle, değil SSL/TLS'nin hangi sayfaları ziyaret etmekte olduğunuz bir kulak misafiri tarafından saklandığını varsaymalısınız.

Evet, https, ziyaret ettiğiniz URL için bütünlük sağlar.

Not; Başka bir uyarı: Uygulamada, web sitesi [~ # ~] hsts [~ # kullanmıyorsa, sslstrip ve diğer ortadaki adam saldırıları birçok veya çoğu kullanıcıya karşı başarılı olabilir. ~] . Bu saldırılar URL'nin gizliliğini ve bütünlüğünü ihlal edebilir. Bu nedenle, kullanıcılar güvensiz bir ağ üzerinden HSTS kullanmayan web sitelerini ziyaret ediyorsa (ör. Açık Wifi), bir saldırganın kullanıcıların hangi sayfaları ziyaret ettiğini öğrenebileceğinden emin olmalısınız. Sslstrip tehdidine karşı kısmi bir azaltma, kullanıcıların HTTPS Everywhere kullanması ve sitelerin HSTS'yi benimsemesidir.

25
D.W.

Oturumunuz başlamadan önce aşağıdakiler sızacaktır:

  • Sunucunun IP Adresi
  • Sunucunun sertifikası
    • Sertifikada yayınlanan alan adını içerecektir, ancak bu, kullandığınızla eşleşeceğini garanti etmez.
  • DNS sorgularınız

SSL bağlantısı oluşturmakla ilgili olmayan veri veya istek yok (GET ...) SSL oturumu başlamadan önce sunucuya gönderilir. URL, sayfa isteğinin bir parçası olarak gönderilir ve oturumun bir parçası olan trafikle aynı şekilde korunur.

12
Jeff Ferland

Evet ve hayır.

URL düzgün bir şekilde şifrelenir, bu nedenle sorgu parametreleri asla doğrudan gösterilmemelidir.

Bununla birlikte, trafik analizi sık sık URL'nin uzunluğunu alabilir - ve sunucuyu ve URL'nin uzunluğunu bilmek, özellikle bir sayfadaki bağlantıların tıklandığını varsayarsak, hangi sayfalara erişildiğini gizlemek için genellikle yeterlidir. Google "trafik analizi ssl tarama" veya konuyla ilgiliyse benzer bir şey için.

Kullanım durumunuzda bu çok az öneme sahiptir. Trafik analizinin akıllıca kullanılması, getirilen diğer URL'lerin de kullanıcı adını içerip içermediğine bağlı olarak kullanıcı adının uzunluğunu ve/veya şifrenin uzunluğunu ortaya çıkarabilir. Kullanıcı adını/şifreyi sabit bir uzunluğa yerleştirirseniz, bu saldırılardan kaçınabilirsiniz, ancak uğraşmaya değmeyebilir.

11
Nakedible

TLS yığınları Sunucu Adı Gösterimi göndermeye başlıyor (SNI, http://en.wikipedia.org/wiki/Server_Name_Indication ; http://www.ietf.org/rfc/rfc3546 txt ). Bu açık bir şekilde gönderilir, yani gizli mesajlar, adres çubuğuna yazdığınız sunucu adını görebilir.

9
Steve Dispensa