SSL ve ortadaki adam yanlış anlama


92

Bu sorunla ilgili tonlarca belge okudum ancak yine de tüm parçaları bir araya getiremiyorum, bu yüzden birkaç soru sormak istiyorum.

  1. Her şeyden önce, anladığım şekliyle kimlik doğrulama prosedürünü kısaca açıklayacağım, çünkü bu konuda yanılıyor olabilirim: Bir istemci, bir sunucunun genel anahtar, bazı meta veriler ve dijital imzanın bir kombinasyonuyla yanıt verdiği bir bağlantı başlatır. güvenilir otorite. Daha sonra istemci, sunucuya güvenip güvenmediğine karar verir, bazı rastgele oturum anahtarlarını açık anahtarla şifreler ve geri gönderir. Bu oturum anahtarının şifresi yalnızca sunucuda depolanan özel anahtarla çözülebilir. Sunucu bunu yapar ve ardından HTTPS oturumu başlar.

  2. Öyleyse, yukarıda haklıysam, soru ortadaki adam saldırısının böyle bir senaryoda nasıl gerçekleşebileceğidir? Demek istediğim, birisi sunucuya (ör. Www.server.com) yanıtını açık anahtarla durdursa ve bana www.server.com olduğunu düşündüren bazı yollara sahip olsa bile, yine de oturum anahtarımın şifresini çözemezdi özel anahtar olmadan.

  3. Karşılıklı kimlik doğrulama hakkında konuşursak, her şey istemci kimliği konusunda sunucu güveniyle mi ilgili? Demek istediğim, müşteri zaten doğru sunucuyla iletişim kurduğundan emin olabilir, ancak şimdi sunucu istemcinin kim olduğunu öğrenmek istiyor, değil mi?

  4. Ve son soru, karşılıklı kimlik doğrulamanın alternatifi ile ilgili. Açıklanan durumda bir istemci olarak hareket edersem, SSL oturumu kurulduktan sonra HTTP başlığında bir oturum açma / şifre gönderirsem ne olur? Gördüğüm kadarıyla, bu bilgiler ele geçirilemez çünkü bağlantı zaten güvenli ve sunucu kimliğim için ona güvenebilir. Yanlış mıyım? Karşılıklı kimlik doğrulama ile karşılaştırıldığında böyle bir yaklaşımın dezavantajları nelerdir (uygulama karmaşıklığı değil, yalnızca güvenlik sorunları önemlidir)?

Yanıtlar:


106

SSL'ye yönelik ortadaki adam saldırıları gerçekten ancak SSL'nin ön koşullarından birinin ihlal edilmesi durumunda mümkündür, işte bazı örnekler;

  • Sunucu anahtarı çalındı ​​- saldırganın sunucu gibi görünebileceği ve istemcinin bilmesinin bir yolu olmadığı anlamına gelir .

  • İstemci, güvenilmez bir CA'ya (veya kök anahtarı çalınan birine) güvenir - güvenilir bir CA anahtarına sahip olan kişi, sunucu gibi davranan bir sertifika oluşturabilir ve istemci ona güvenir. Bugün tarayıcılarda önceden var olan CA sayısıyla, bu gerçek bir sorun olabilir. Bu, sunucu sertifikasının başka bir geçerli sertifika ile değişmiş gibi görüneceği anlamına gelir; bu, çoğu istemcinin sizden gizleyeceği bir şeydir.

  • İstemci, sertifikayı güvenilir CA'lar listesine göre doğru bir şekilde doğrulamakla uğraşmaz - herkes bir CA oluşturabilir. Doğrulama olmaksızın, "Ben'in Arabaları ve Sertifikaları", Verisign kadar geçerli görünecektir.

  • İstemci saldırıya uğradı ve güvendiği kök yetkililere sahte bir CA enjekte edildi - saldırganın istediği herhangi bir sertifikayı oluşturmasına izin veriyor ve müşteri ona güveniyor. Kötü amaçlı yazılım, örneğin sizi sahte bankacılık sitelerine yönlendirmek için bunu yapma eğilimindedir.

Özellikle # 2 oldukça kötüdür, son derece güvenilir bir sertifika için ödeme yapsanız bile, siteniz hiçbir şekilde bu sertifikaya kilitlenmez, herhangi biri için sahte sertifika oluşturabileceğinden, istemcinin tarayıcısındaki tüm CA'lara güvenmeniz gerekir. aynı geçerli olan siteniz. Ayrıca sunucuya veya istemciye erişim gerektirmez.


4
Ayrıca, https bağlantılarını http bağlantılarına şeffaf bir şekilde yeniden yazmaya çalışacak sslstrip gibi araçlar da vardır .
mpontillo

3
Sertifika doğrulamayla ilgili bir başka nokta, istemcinin ana bilgisayar adını doğrulaması gerektiğidir. Sertifikanın gerçek olup olmadığını kontrol etmek yeterince iyi değil, konuşmak istediğiniz kuruluşa verilmesi gerekiyor ( buraya ve buraya bakın ). Sslstrip'e gelince, maalesef SSL / TLS kullanmak isteyip istemediklerini kontrol etmek kullanıcının sorumluluğundadır (HSTS yardımcı olabilir).
Bruno

Tarayıcı şifrelemeden ÖNCE verileri kesen bir krom (veya bu konuda başka bir tarayıcı) eklentisi yazabilir miyim?
Rosdi Kasim

Diğer bir neden de TürkTrust konusunda olduğu gibi "güvenin kötüye kullanılması" dır.
ceremcem

1
@Remover Gerçekten değil ... # 1, gerçek genel anahtarla eşleştirilmiş sunucudaki özel anahtardır. Bu senaryoda, gerçek sunucuyla konuşursunuz, ancak başka biri ortada kalarak trafiğin şifresini çözebilir. Sertifikayı değiştiremezler. # 2, istemciye meşru gibi görünen "güvenilen" bir CA tarafından verilen tamamen farklı bir sertifika göndermeyi içerir. Saldırgan daha sonra sizin adınıza istekleri vekil olarak alabilir ve iletileri bu şekilde görebilir. Her ikisi de bir uzlaşmayla sonuçlanır, ancak 1 numara sizin kontrolünüzdedir. # 2, maalesef değil.
Temel

17

Öncelikle kimlik doğrulama prosedürünü anladığım kadarıyla kısaca anlatacağım, belki o adımda yanılıyorum. Böylece, bir istemci bir bağlantı başlatır ve bir sunucu buna ortak anahtar, bazı meta veriler ve güvenilen bir otoritenin dijital imzası kombinasyonu ile yanıt verir.

Sunucu, bir X.509 sertifika zinciri ve kendi özel anahtarıyla imzalanmış bir dijital imza ile yanıt verir.

Ardından müşteri, sunucuya güvenip güvenmediğine karar verir.

Doğru.

bazı rastgele oturum anahtarlarını genel anahtarla şifreler ve geri gönderir.

Hayır. İstemci ve sunucu, oturum anahtarının kendisinin hiçbir zaman iletilmediği karşılıklı bir oturum anahtarı oluşturma sürecine girer.

Bu oturum anahtarının şifresi yalnızca sunucuda depolanan özel anahtarla çözülebilir.

Hayır.

Sunucu bunu yapar

Hayır.

ve ardından HTTPS oturumu başlar.

TLS / SSL oturumu başlar, ancak daha fazla adım ilk bulunmaktadır.

Öyleyse, yukarıda haklıysam, soru ortadaki adam saldırısının böyle bir senaryoda nasıl gerçekleşebileceğidir?

Sunucu kılığına girerek ve SSL uç noktası gibi davranarak. Müşteri herhangi bir yetkilendirme adımını atlamak zorunda kalacaktır. Ne yazık ki çoğu HTTPS oturumundaki tek yetkilendirme adımı bir ana bilgisayar adı kontrolüdür.

Demek istediğim, birisi sunucuya (ör. Www.server.com) yanıtını açık anahtarla durdursa ve sonra bazı yollarla www.server.com olduğunu düşünmeme izin verse bile, yine de oturum anahtarımın şifresini çözemezdi. özel anahtar olmadan.

Yukarıyı görmek. Şifresini çözülecek oturum anahtarı yok. SSL bağlantısının kendisi güvenlidir, konuştuğunuz kişi güvenli olmayabilir.

Karşılıklı kimlik doğrulama hakkında konuşursak, her şey istemci kimliği konusunda sunucu güveniyle mi ilgili? Demek istediğim, müşteri zaten doğru sunucuyla iletişim kurduğundan emin olabilir, ancak şimdi sunucu istemcinin kim olduğunu bulmak istiyor, değil mi?

Doğru.

Ve son soru, karşılıklı kimlik doğrulamanın alternatifi ile ilgili. Açıklanan durumda bir istemci olarak hareket edersem, SSL oturumu kurulduktan sonra HTTP başlığında bir oturum açma / şifre gönderirsem ne olur? Gördüğüm gibi, bu bilgiler ele geçirilemez çünkü bağlantı zaten güvenli ve sunucu kimliğim için ona güvenebilir. Yanlış mıyım?

Hayır.

Karşılıklı kimlik doğrulama ile karşılaştırıldığında bu tür bir yaklaşımın olumsuz yönleri nelerdir (uygulama karmaşıklığı değil, yalnızca güvenlik sorunları önemlidir)?

Yalnızca kullanıcı adı / parola kadar güvenlidir ve gizli bir anahtara göre sızdırılması çok daha kolaydır.


Açıklamanız için teşekkürler. Anlamadığım tek şey, bir istemcinin bir sunucuya bir oturum anahtarı göndermediğini neden söylemiştin? Pekala, belki yanlış terminoloji kullandım, burada bu veri parçası "ön-ana gizli" olarak adlandırılıyor, ama yine de, istemci tarafından gönderilmiyor ve sunucu özel anahtarıyla şifresi çözülüyor mu?
Vadim Chekry

1
@VadimChekry Pre-master sırrı oturum anahtarı değildir. Her iki uçta bağımsız olarak oturum anahtarını oluşturmak için kullanılan birkaç veri parçasından biridir. İşlem, RFC 2246'da açıklanmaktadır.
Marquis of Lorne

1
@Chris Çok daha az savunmasızsınız, ancak IP adresi sahtekarlığı mümkündür. Sertifikadaki eş kimliğini kendiniz kontrol etmenin yerini hiçbir şey tutamaz.
Lorne Markisi

1
+1 Bu çoğunlukla oldukça iyi bir cevap. Bununla birlikte, bazı noktalarda tek kelimelik yanıtlarla açıklama eksiktir. Ana bedende bahsedilen noktaları genişletip / veya detaylandırırsanız (yani, "hayır" yerine kısaca gerçekte ne olduğundan bahsedebilirsiniz ), bunu kesin bir cevap haline getirebilirsiniz . Bu gerçekten birkaç şeyi açıklığa kavuşturur. Teşekkürler.
seslendirme

1
@ tjt263 İlk 'hayır', gerçekte ne olduğuna dair bir açıklama sağlar. Sonraki iki "hayır", ilk "hayır" ı üreten aynı yanılgıya atıfta bulunur ve aynı açıklamaya sahiptir. Bir sonraki ve son 'hayır', 'hatalı mıyım' anlamına gelir ve OP'den az önce alıntılanan bilgileri ifade eder. Bu nedenle, burada gerçekten eksik olduğunu düşündüğünüz şeyi anlamak zordur.
Marquis of Lorne

17

İstemci ve sunucu arasındaki yolda olan herkes ortadaki bir adamı https'ye saldırabilir. Bunun olası olmadığını veya nadir olduğunu düşünüyorsanız, bir internet ağ geçidindeki tüm SSL trafiğinin şifresini sistematik olarak çözen, tarayan ve yeniden şifreleyen ticari ürünler olduğunu düşünün.. Müşteriye, "gerçek" SSL sertifikasından kopyalanan ancak farklı bir sertifika zinciriyle imzalanmış ayrıntılarla anında oluşturulmuş bir SSL sertifikası göndererek çalışırlar. Bu zincir, tarayıcının güvenilir CA'larından herhangi biriyle sona ererse, bu MITM, kullanıcı için görünmez olacaktır. Bu ürünler öncelikle şirketlere "güvenli" (polis) kurumsal ağlar için satılır ve kullanıcıların bilgisi ve onayı ile kullanılmalıdır. Teknik olarak yine de, ISS'ler veya başka bir ağ taşıyıcısı tarafından kullanımlarını durduran hiçbir şey yoktur. (NSA'nın en az bir güvenilen kök CA imzalama anahtarına sahip olduğunu varsaymak güvenli olacaktır ).

Bir sayfayı sunuyorsanız , sayfanın hangi ortak anahtarla imzalanması gerektiğini belirten bir HTTP üstbilgisi ekleyebilirsiniz . Bu, kullanıcıları "güvenli" bağlantılarının MITM'sine karşı uyarmaya yardımcı olabilir, ancak bu ilk kullanımda güven tekniğidir. Bob "gerçek" genel anahtar pininin bir kaydına sahip değilse, Mallory belgedeki pkp başlığını yeniden yazar. Bu teknolojiyi (HPKP) kullanan web sitelerinin listesi iç karartıcı derecede kısadır. Kredilerine google ve dropbox dahildir. Genellikle, bir https-yakalama ağ geçidi, HPKP kullanan birkaç büyük güvenilir siteden gelen sayfalarda dalgalanır. Beklemediğiniz halde bir HPKP hatası görürseniz, dikkatli olun.

Şifrelerle ilgili olarak, bir https bağlantısındaki her şey, isteğin yönlendirilebilmesi için açık olması gereken alan adı dışında https ile güvence altına alınır. Genel olarak, şifreleri günlüklerde, yer imlerinde vb. Takılabilecekleri sorgu dizesine koymamanız önerilir. Ancak, https güvenliği ihlal edilmedikçe sorgu dizesi görünmez.


Ancak bu, bu MITM ekipmanının (trafiğin şifresini çözen / tarayan ve yeniden şifreleyen) güvenilir CA'dan birine erişmesi gerektiği anlamına gelir, değil mi? (sunucu sertifikasını "taklit etmek" için). Bunun olduğunu söyleyelim. Sonra birisi bunu bozar, bilgi herkese açık hale gelir ve basında bir skandal olur ve CA sertifikası tüm tarayıcılardan kaldırılır, değil mi? Demek istediğim, ideal olarak ...
jazzcat

2
Hayır hayır. Ağ geçidindeki "SSL Denetimi", anında sertifika oluşturup imzalamaya ihtiyaç duyar, ancak bunu yapmak için bir kök sertifikasına ihtiyacı yoktur. Zinciri olan bir ara sertifikası vardır. Tarayıcınız zincirin köküne güvenip güvenmediğini, bir sertifika hatası görüp görmeyeceğinizi belirler. İş yerinde, tarayıcılarımızın sertifika hataları vermemesi için fortinet kök sertifikasını yüklememiz istendi. Ancak, zincir zaten güvenilen bir sertifika ile sonlandırılmışsa, şeffaftır.
bbsimonbb

İş yerindeki bir meslektaş, bu kurumsal ağ MITM tekniklerinin Google'ın SSL'yi zorlaması için neden kötü bir fikir olduğu konusunda sınırlı bir anlayış kullanıyordu - Gerçekten de bir doğruluğu olabilir mi?
EmSixTeen

1
Üzgünüm soruyu anlamadım!
bbsimonbb

2
  1. Doğru
  2. O kadar doğru değil. Bu tür bir saldırıda, yineleme sunucusu isteğinizi alır ve sizin adınıza hedefe gönderir. ve sonra size sonuçla cevap verin. Aslında, sizinle iletişim kurmayı amaçladığınız gerçek sunucu değil, sizinle güvenli bağlantı kuran ortadaki adam sunucusudur. bu nedenle, sertifikanın geçerli ve güvenilir olduğunu her zaman kontrol etmelisiniz.
  3. doğru olabilir
  4. Güvenli bağlantının güvenilir olduğundan eminseniz, kullanıcı adı / şifre göndermek güvenlidir.

Yaklaşık 2 - İstemcinin bağlantı kurma prosedürü sırasında sunucu tarafından gönderilen meta verileri tamamen kontrol ettiğini ve istemcinin TÜM sertifikalara güvenmediğini varsayıyorum. Öyleyse, böyle bir senaryo, eğer - a) bir müşteri yukarıda söylediğimi yapmıyorsa veya b) ortadaki adam, güvenilir CA tarafından imzalanmış bir sertifikaya sahipse mümkün olmaz mıydı?
Vadim Chekry

1
Ara sunucunun geçerli sertifika göndermesi çok nadiren oluyor, geçen yıl iyi hatırlıyorsam Comodo CA'da bu gerçekleşti. Ancak normalde güvenilir bir bağlantıysa, o zaman tamamen güvenlidir.
Boynux

1

Oturum anahtarı ile ilgili kısım dışında söylediğiniz her şey doğrudur. CA'ların amacı ortadaki adam saldırısını yenmektir - diğer her şey SSL tarafından yapılır. İstemci kimlik doğrulaması, bir kullanıcı adı ve şifre şemasına bir alternatiftir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.