SORU
22 Ocak 2009, PERŞEMBE


SSL nasıl gerçekten işe yarıyor mu?

SSL nasıl çalışır?

Nereye sertifika istemci (veya tarayıcı?) yüklenir ve Sunucu (web server?)?

Nasıl güven/şifreleme/kimlik doğrulama işlemi tarayıcıya URL'Yİ girin ve sunucudan sayfayı zaman başlıyor?

Nasıl HTTPS protokolü sertifika tanıyor mu? Neden güven/şifreleme/doğrulama işi olan sertifikaları ne zaman sertifikalar ile çalışmak HTTP olabilir mi?

CEVAP
11 EYLÜL 2011, Pazar


Benim orijinal cevap çok aceleyle yazdım, ama sonra, bu oldukça popüler cevap/soru dönüştü, biraz genişletilmiş ve daha kusursuz yaptım beri. not:

TLS Yetenekleri

"SSL" en sık bu kuralı ifade etmek için kullanılan isim. ama özellikle özel SSL protokolü ortalarında Netscape tarafından tasarlanan 90 ' anlamına gelir. "TLS" cevabım TLS kullanacağım yani SSL göre, bu STANDART bir standarttır. Bu gün, oran web üzerinde güvenli bağlantıları neredeyse tüm gerçekten TLS kullanarak, SSL.

TLS çeşitli yeteneklere sahiptir:

  1. Uygulama katmanı veri şifreleme. (Senin durumunda, uygulama katmanı protokolü, HTTP.)
  2. İstemci için Sunucu Kimlik Doğrulaması.
  3. Sunucuya istemci kimlik doğrulaması.

#1 ve #2 çok yaygındır. Daha az yaygındır #3. #2, Bu yüzden o kısmı anlatacağım odaklama gibi görünüyor.

Kimlik doğrulaması

Bir sunucu, bir istemci sertifikası kullanarak kendini tanıtır. Bir sertifika bir web sitesi hakkında bilgileri içeren veri[1] Bir damla

  • Etki alanı adı
  • Ortak anahtar
  • Şirketin sahibi
  • Verildiği zaman
  • Ne zaman sona ereceğini
  • Yayınlayan kişi
  • Vb.

Sen-ebilmek başarmak gizlilik (#1 Yukarıda) kullanarak, ortak anahtar dahil sertifika için iletileri şifrelemek bu sadece şifresi ile ilgili özel anahtarı, bir saklı güvenle sunucu.[2] hadi bu anahtar çağrı çifti daha sonra karışık kalmayalım KP1,. Ayrıca sertifikasındaki etki alanı adı web sitesi ziyaret (#2 yukarıda) ile eşleştiğini doğrulayın.

Ama eğer bir rakip paketleri ve sunucuya gönderilen değiştirmek olabilir, ve eğer düşman ile sunulan sertifika ve kendi genel anahtarını eklenen veya herhangi bir diğer önemli detay farklı değişiklikte ne? Eğer öyle olsaydı, düşman yakalamak ve güvenli bir şekilde şifrelenmiş sandın tüm iletileri değiştirebilir.

Bu saldırıyı önlemek için, sertifikayı şifreli olarak imza karşılık gelen ortak anahtarı olan herkes tarafından doğrulanabilir şekilde başkasının özel anahtarı ile imzalanır. Hadi bu anahtar çifti bu sunucunun kullandığı aynı anahtar olmayan net yapmak KP2, Ara.

Sertifika Yetkilileri

KP2 kim yarattı? Belgesini kim imzalamış?

Biraz basite indirgemek, birsertifika yetkilisiKP2 oluşturur, ve onlar kendi özel anahtarını kullanarak hizmet diğer kuruluşların sertifikaları imzalamak için satmak. Örneğin, bir sertifika oluşturun ve kendi özel anahtarı ile Verisign gibi bir şirket imzalamak için para ödüyorum.[3] kimse ama Verisign bu özel anahtarına erişimi vardır Beri, hiçbirimiz bu imzayı taklit edebilir.

Ve nasıl bizzat imza doğrulamak için KP2 ortak anahtarın altına aldın ki?

İyi bir sertifika ortak anahtarı tutan zaten gördük ve bilgisayar bilim adamları özyineleme aşk neden bir sertifika içine KP2 ortak anahtar koyup dağıtmak öyle değil mi? Bu ilk başta biraz çılgınca geliyor, ama aslında kesinlikle böyle değil. Verisign örneği ile devam Harcamalarda kim olduklarını, imzalamak için izin verilir, onlar hakkında bilgi içeren bir sertifika (diğer sertifikalar) ve kendi ortak anahtar üretir.

Şimdi Eğer bu Verisign sertifikasını bende ziyaret etmek istiyorum web sitesi için sunucu sertifikası üzerinde imzayı doğrulamak için kullanabilirsiniz. Kolay, değil mi?!

- O kadar çabuk değil. Gelen Verisign sertifika almak zorunda kaldımbir yere. Biri Verisign sertifikası taklit ve orada kendi genel anahtarını koyduysa? Başladığımız yere sunucu sertifikasının imzası taklit edebilirler, ve hemen geri döndük sonra: man-in-the-middle saldırısı.

Sertifika Zincirlerini

Özyinelemeli olarak düşünmeye devam tabii üçüncü bir sertifika ve üçüncü bir anahtar çifti (KP3) tanıtmak ve bu Verisign belgesi imzalamak için kullanabiliriz. Bu sertifika zinciri diyoruz: zincirdeki her sertifikanın bir sonraki sertifika doğrulamak için kullanılır. Umarım zaten bu özyinelemeli yaklaşım sadece/sertifikaları tüm yol aşağı kaplumbağalar olduğunu görebilirsiniz. Nerede duracak?

Sertifikalar sonsuz sayıda yaratamayız beri, sertifika zinciri açıkçası durdurmak için vardırbir yerebu zincirdeki bir sertifika dahil olmak üzere tarafından yapılırkendinden imzalı.

Kadar başınızı beyin parçalarını patlayan pick sırasında, bir an için yaparım.Kendini imzalamış?!

Evet, sertifika zinciri sonunda (bir.k.bir. "") kök, kendi anahtar çiftini kendisi imzalamak için kullandığı bir sertifika olacak. Bu sonsuz özyineleme sorunu ortadan kaldırır, ama kimlik doğrulama sorunu çözmek değil. Kimseye oluşturabilir kendinden imzalı bir sertifika diyor bir şey, sadece hoşuma oluşturabilir sahte diploma Princeton diyor ben üç ihtisas siyaset, teorik fizik, ve uygulamalı ders vermekte ve iz benim kendi adı altında.

Bu sorun için [biraz] heyecansız çözüm sadece kendinden imzalı açıkça güven sertifikalar kümesini seçmek. Örneğin, "ben . diyebilirim ^em>güvenbu belirleme kendi kendine imzalanmış sertifika."

Yerde açık bir güven ile, artık tüm sertifika zinciri doğrulayabilirim. Kaç tane sertifika vardır zincirinde olursa olsun, kök aşağı her imza her şekilde doğrulayabilirim. Kök çıkınca, o kök sertifika açıkça güven olup olmadığını kontrol edebilirim. Eğer öyleyse, o zaman bütün zincir güvenebilirim.

Güven Görüştü

TLS kimlik doğrulama sistemi kullanırgüven görüştü. Eğer bir araba tamircisi kiralamak istiyorum, bulduğum rastgele bir tamirciye güven olabilirim. Ama belki de arkadaşım belirli bir tamirci kefil. Arkadaşım güveniyorum beri, o zaman tamirci güvenebilirim.

Bir bilgisayar satın almak veya bir tarayıcı indirmek zaman, bu açıkça güvendiği birkaç yüz kök sertifikalar ile birlikte geliyor.[4] ve bu sertifikaları kendi faaliyet gösteren şirketlerin sertifikalarını imzalayarak diğer kuruluşlara güven vermek olabilir.

Bu mükemmel bir sistem olmaktan çok uzaktır. Bazı zamanlar CA verebilir bir sertifika yanlışlıkla. Bu gibi durumlarda, sertifika iptal edilmesi gerekebilir. İptal, sertifikayı her zaman şifreli olarak doğru olacağından oldukça zordur; bant dışı bir protokol daha önce geçerli bir sertifika iptal edildiğini öğrenmek için gereklidir. Uygulamada, bu protokollerden bazıları çok güvenli değil, ve birçok tarayıcı onları zaten kontrol yok.

Bazen bütün bir CA tehlikeye düşer. Eğer Verisign girip kök imzalama anahtarı çalmak için olsaydı, örneğin, sonra parodi olabilirherhangi birdünyadaki belgesi. Eğer belgemi Dilek (Verisign rakip) tarafından imzalanmış olsa bile, fark etmez. bu sadece Verisign müşteri etkilemez dikkat edin: Belgem hala Verisign tehlikeye imzalama anahtarı kullanılarak taklit edilebilir.

Bu sadece teorik değil. Vahşi oldu. DigiNotar was famously hacked ve daha sonra iflas etti. Comodo was also hacked, ama anlaşılmaz bir şekilde bu güne kadar iş kalır.

CAs doğrudan tehlikeye olmasalar da, bu sistem diğer tehditler var. Örneğin, bir hükümet yasal bir zorlama sahte bir sertifika imzalamak için CA zorlamak için kullanın. İşveren çalışan bilgisayarınızda kendi CA sertifikasını yükleyin. Bu çeşitli durumlarda, trafik "" aslında tamamen görünür/sertifika. denetleyen bir kuruluş için değiştirilebilir güvenli olmasını beklediğiniz

Bazı değiştirmeleri, Convergence, TACK DANE da dahil olmak üzere ileri sürülmüştür.

Son notlar

[1] TLS sertifika verileri X.509 standard göre biçimlendirilmiş. X. 509 ASN.1 dayanmaktadır (olduğu anlamına geliyor . "Soyut Sözdizimi Gösterimi #1"), ^em>değilikili veri biçimi. Bu nedenle, X. 509 olmalıdırkodlanmışikili bir biçime. DER and PEM benim bildiğim, en yaygın iki kodlamalar.

[2] uygulamada, protokol aslında bir simetrik şifreleme anahtarları üzerinde, ama bu senin sorunun değil alakalı bir detay.

[3] Tahminen, CA aslında önce senin imza sertifikasını doğrular. Eğer bunu yapmasaydın, o zaman sadece bir imza CA google.com sormak için bir sertifika oluşturun. Bu certificiate ile, man-in-the-orta herhangi bir "" bağlantı google.com. güvenli edebilirim Bu nedenle, doğrulama adımı bir CA operasyonunda çok önemli bir faktördür. Ne yazık ki, bu doğrulama işlemi, dünya çapında CAs anda yüzlerce kişi ne kadar çok net değil.

[4] Mozilla list of trusted CAs.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • Just So

    Just So

    3 HAZİRAN 2007