|
MasteR
|
 |
« : 29 Ocak 2008, 18:43:12 » |
|
SSL (Secure Socket Layer) SSL teknolojisi TCP/IP protokolü üzerinden çalışan, web sunucusu ve web tarayıcısı arasındaki tüm bilgi akışını koruyan bir güvenlik protokolüdür. Bütün popüler web tarayıcılarda ve web sunucularda uygulanmaktadır. Bugünün web üzerinden elektronik ticaret ve elektronik iş uygulamalarında önemli bir rolü vardır. SSL protokolü iki taraf arasında güvenli ve gizli iletişimin sağlanmasında elektronik kimlik belgelerini kullanır. SSL bağlantısı üzerinden gönderilen veriler üçüncü şahıslar tarafından bozguna uğratıldığında, bundan tarafların anında haberi olur. Bu sistemde kredi kartı bilgileri SSL teknolojisiyle şifrelendikten sonra online olarak bankaya yollanmaktadır ve bilgiler alışveriş yapılan mağaza çalışanları tarafından görülememektedir. 10.1 SSL’in Tarihçesi
SSL 1994 yılında Netscape Navigator browser`ının ilk sürümü ile tanıtıldı. Navigator`un haberleşmeyi kriptolayabilmesi Netscape`in seçilmesinde ana etkendi. Aynı yıl içerisinde CommerceNet adı verilen iş grupları koalisyonu tarafından S-HTTP adında rakip bir kriptografik protokol sunuldu. S-HTTP ve SSL tarafından kullanılan kriptografik ilkeler aynı olsa da (dijital zarflar, imzalı sertifikalar, mesaj özetleri) aralarında iki önemli fark vardı:
1) S-HTTP sadece web protokolleri ile çalışacak şekilde dizayn edilmişti. 2) SSL popüler olan ücretsiz bir browser içerisinde bulunuyordu. S-HTTP ise kullanıcıların satın almak zorunda olduğu NCSA Mosaic`in modifiye edilmiş bir sürümünde bulunuyordu. SSL kısa süre içerisinde web üzerinde baskın güvenli protokol oldu ve S-HTTP unutulmaya yüz tuttu.
SSL`in üç adet sürümü vardı. SSL 1, Netscape içerisinde dahili olarak kullanıldı ve bazı ciddi hatalar içerdiğinden piyasaya sürülmedi. SSL 2.0 Netscape 1.0 ile 2.x sürümleri içerisine dahil edildi fakat 'man-in-the-middle' saldırıları ile ilgili bazı zayıflıklar içeriyordu. Ek olarak iki üniversite öğrencisi Netscape`in rastgele sayı üreticisindeki bir açıktan yararlanarak SSL 2.0`ı dakikalar içerisinde kırdı.
SSL`in güvenliği konusunda oluşan endişelerden yararlanmak isteyen Microsoft 1996 yılında Internet Explorer`ın ilk sürümünde rakip protokol PCT`yi sundu. Netscape karşılık olarak 2.0 daki problemlerin giderildiği ve (Diffie-Hellman anonim anahtar değiştokuşu ve Fortezza akıllı kart desteği gibi) yeni özelliklerin eklendiği SSL v3.0`ı sundu. Bu noktada Microsoft geri adım atarak Internet yazılımlarının tüm sürümlerinde SSL`i desteklemeye karar verdi (geriye uyumluluk için halen PCT desteği bulunuyor). SSL v3.0 Netscape Navigator 3.0 ve yukarısı sürümlerde ve Internet explorer 3.0 ve yukarısında bulunuyor. Günümüzde ticari web sitelerini ziyaret eden kullanıcılar kötü niyetli kişilerin varlığından dolayı bazen kredi kartı veya banka hesap numarası gibi bilgileri web sitesine vermekten çekinirler. Bir web server güvenlik özelliği olarak geliştirilen Güvenli Soketler Katmanı(SSL) 3.0 protokolü güvenliği sağlar ve kullanıcılarla "encrypt" edilmiş bir bağlantı kurmaya olanak sağlar. SSL sınırlandırılmış web sitelerine erişen kullanıcıların kimliğini güvenilir bir şekilde kanıtlıyorken web içeriğinizin authenticity (doğruluğunu) garanti eder. SSL 3 temel tipte güvenlik sağlar:
• Server authentication : Bir SSL bağlantısı kurulduğunda ve güvenli iletişim sinyali gözüktüğünde, URL'nizde belirlediğiniz sunucuya bağlandığınızdan gerçekten emin olabilirsiniz.
• Encryption ile gizlilik sağlama: SSL kullanarak istemci ve sunucu arasında güvenli bir bağlantı kurabiliyoruz. HTTP kullanarak istemci ve sunucu arasında iletilen bilgi encrypt edilemez. Bu nedenle istemci ve sunucu arasında iletilen bilgi yetkilendirilmemiş erişimler tarafından görülebilir.
• Verilerin bütünlüğü: SSL kullanan bir güvenli bağlantı , bir güvenli HTTP sunucudan aldığınız verilerin sunucu tarafından size yollanan veriler ile aynı olmasını garantiler.
1996 yılında 3.0 versiyonunun çıkarılmasıyla hemen bütün Internet tarayıcılarının (Microsoft Explorer, Netscape Navigator vb) desteklediği bir standart haline gelmiş ve çok geniş uygulama alanları bulmuştur. SSL, gönderilen bilginin kesinlikle ve sadece doğru adreste deşifre edilebilmesini sağlar. Bilgi gönderilmeden önce otomatik olarak şifrelenir ve sadece doğru alıcı tarafından deşifre edilebilir. Her iki tarafta da doğrulama (authentication, iki bilgisayarın karşılıklı olarak birbirini tanıması) yapılarak işlemin ve bilginin gizliliği ve bütünlüğü korunur. Bilgisayarların birbirlerini "tanıma" işlemi, açık-kapalı anahtar tekniğine (public-private key encryption) dayanan bir kripto sistemi ile sağlanır. Bu sistemde, iki anahtardan oluşan bir anahtar çifti vardır. Bunlardan açık anahtar (public key) herkes tarafından bilinebilen ve gönderilen mesajı "şifrelemede" kullanılan bir dijital anahtardır. Ancak, açık anahtar ile şifrelenen mesaj sadece bu anahtarın diğer çifti olan "kapalı anahtar" (private key) ile açılabilir (deşifre edilebilir). Kapalı anahtar da, sadece sizin bildiğiniz bir anahtar olduğundan, mesaj güvenliği sağlanmış olur. Örnek olarak, size mesaj göndermek isteyen birine kendi açık anahtarınızı gönderirsiniz. Karşı taraf bu anahtarı kullanarak mesajını şifreler ve size gönderir. Şifrelenen mesajı, sadece sizde olan ikinci bir anahtar (kapalı anahtar, private key) çözebilir ve bu anahtarı sadece siz bilirsiniz. Veri akışında kullanılan şifreleme yönteminin gücü kullanılan anahtar uzunluğuna bağlıdır. Anahtar uzunluğu bilginin korunması için çok önemlidir. Örneğin; 8 bit üzerinden bir iletimin çözülmesi son derece kolaydır. 8 bit ise sadece 28=256 olası farklı anahtar içerir. Bir bilgisayar bu 256 farklı olasılığı sıra ile inceleyerek bir sonuca ulaşabilir. SSL protokolünde 40 bit ve 128 bit şifreleme kullanılmaktadır. 128 bit şifrelemede 2128 değişik anahtar vardır ve bu şifrenin çözülebilmesi çok büyük bir maliyet ve zaman gerektirir. Kötü niyetli bir kişinin 128 bit'lik şifreyi çözebilmesi için 1 milyon dolarlık yatırım yaptıktan sonra 67 yıl gibi bir zaman harcaması gerekir. Bu örnekten anlaşıldığı gibi SSL güvenlik sistemi tam ve kesin bir koruma sağlar. Anahtarlar üretilirken kullanılan bazı popüler algoritmalar olarak, DES (Data Encryption Standard), RSA, IDEA verilebilir. Bunlardan RSA'nın RC4 algoritması (128 bit şifreleme olarak) Netscape ve Internet Explorer'da da kullanılan bir algoritmadır. İstemci bilgisayar, SSL destekleyen bir sunucuya bağlandığı anda, (bu, https:// ile başlayan URL satırları ile gerçekleşir) doğrulama işlemi başlar. İstemci, kendi açık anahtarını sunucuya gönderir. Sunucu ise, bu anahtarı kullanarak şifrelediği bir mesajı istemciye geri gönderir. Bir sonraki adımda istemci sadece kendinde olan kapalı (private) anahtarı kullanarak gelen şifreli mesajı çözer ve sunucuya geri gönderir. mesaj içeriğinin yolda herhangi bir şekilde değiştirilme olasılığına karşı olarak da sayısal imza ile imzalanır ve şifreli mesaj imzasıyla birlikte gönderilir veya alınır.Mesajı alan sunucu ise, bunu kendisinin gönderdiği orijinal mesaj ile karşılaştırır ve eğer iki mesaj "aynı" ise "doğrulama" işlemi başarıyla tamamlanmıştır ve sunucu bu noktadan itibaren "doğru bilgisayarla/kişiyle" iletişimde olduğunu anlar. Daha sonra sunucu istemciye o an gerçekleşen web oturumunda kullanılacak tüm önemli anahtarları gönderir ve güvenli iletişim başlar. Bu yöntem sayesinde SSL web üzerindeki iletişimde hem transfer edilen bilginin gizliliğini ve bütünlüğünü sağlamakta , hem de istemci ve sunucunun kimliklerini doğrulamaktadır. Daha sonra SSL bağlantısı kurulur ve sunucu-kullanici arasındaki tüm veriler üçüncü şahısların mesajı okumasını önlemek amacıyla şifrelenir, SSL / Sunucu Kimlik Doğrulaması olarak adlandırılan bu işlemlerin amacı kullanıcıya bağlandığı sitenin gerçekten bağlandığını düşündüğü site olduğunun ve sunucuya gönderilen bilgilerin gerçekten de sadece o sunucu tarafından okunabileceğinin ıspatının sağlanmasıdır. Kullanıcı bundan emin olmak için SSL bağlantısı süresince sunucudan gelen her bilgiyi web sayfasının güvenlikle ilgili özelliklerine bakarak kontrol etmelidir. Eğer yabancı veya farklı bir sunucunun kimliğiyle karşılaşılırsa bağlanılan sunucu bağlanıldığı sanılan sunucu değildir ve iletişimin güvenliği tehdit altındadır.
SSL, web sunucusunu tanımak için, dijital olarak imzalanan sertifikalar kullanır. Sertifika, aslında, o organizasyon hakkında bazı bilgiler içeren bir veri dosyasıdır. Aynı zamanda da, kuruluşun açık-kapalı anahtar çiftinin "açık" anahtarı da sertifika içinde yer alır. Sunucu sertifikası da, o sunucuyu işleten kuruma ait bilgiler içeren bir sertifikadır. 10.2 SSL karakteristikleri
SSL`in transport katmanında bulunmasının ana sebeplerinden biri spesifik olarak HTTP protokolü için yapılmamış olmasıdır. Bu özellik SSL`e esneklik ve protokol bağımsızlığı sağlamaktadır.Ufak sınırlamalardan biri SSL bağlantısının dedike/özel bir TCP/IP soketi kullanması gerektiğidir. Bir web sunucusu SSL modunda çalıştığında kriptolanmış haberleşmeler için ayrı bir ağ portu (genelde port 443) kullanır. SSL`in önemli özelliklerinden biri simetrik kriptolama algoritması, mesaj özeti fonksiyonu ve kimlik tanılama metodları seçimindeki esnekliğidir. SSL simetrik kriptolama için DES (CBC-cipher block chaining modunda), triple-DES, RC2 veya RC4 kullanabilir. Mesaj özetleri için MD5 veya SHA hash algoritmalarını kullanabilir. Kimlik tanılaması için RSA açık anahtarları ve sertifikalarını kullanabilir veya Diffie-Hellman anahtar değiştokuş algoritması kullanarak anonim modda çalışabilir. Kriptolama algoritmaları için çeşitli anahtar uzunlukları kullanılabilir. Simetrik kriptolama algoritması, mesaj özeti metodu ve kimlik tanılamanın kullanılmasındaki kombinasyonlar 'şifreleme takımı' olarak bilinir. Aşağıdaki liste SSL tarafından desteklenen şifreleme takımlarını listelemektedir:
Takım Gücü SSL Sürümü Tanımı DES-CBC3-MD5 Çok Yüksek v2.0, v3.0 CBC modunda 3DES, MD5 hash, 168-bit oturum anahtarı DES-CBC3-SHA Çok Yüksek v2.0, v3.0 CBC modunda 3DES, SHA hash, 168-bit oturum anahtarı RC4-MD5 Yüksek v2.0, v3.0 RC4, MD5 hash, 128-bit anahtar RC4-SHA Yüksek v3.0 RC4, SHA hash, 128-bit anahtar RC2-CBC-MD5 Yüksek v2.0, v3.0 CBC modunda RC2, MD5 hash, 128-bit anahtar DES-CBC-MD5 Orta v2.0, v3.0 CBC modunda DES, MD5 hash, 56-bit anahtar DES-CBC-SHA Orta v2.0, v3.0 CBC modunda DES, SHA hash, 56-bit anahtar EXP-DES-CBC-SHA Düşük v3.0 CBC modunda DES, SHA hash, 40-bit anahtar EXP-RC4-MD5 Düşük v2.0, v3.0 Export seviyesi RC4, MD5 hash, 40-bit anahtar EXP-RC2-CBC-MD5 Düşük v2.0, v3.0 Export seviyesi RC4, MD5 hash, 40-bit anahtar EXP-RC2-CBC-MD5 Düşük v2.0, v3.0 CBC modunda export seviyesi RC2, MD5 hash, 40-bit anahtar NULL-MD5 - v2.0, v3.0 Kriptolama yok, MD5 hash, sadece kimlik tanılama NULL-SHA - v3.0 Kriptolama yok, SHA hash, sadece kimlik tanılama
Bir SSL istemcisi sunucu ile ilk bağlantı kurduğunda ikisi bir şifreleme takımı üzerinde anlaşırlar. Genel olarak, ikisininde sahip olduğu en güçlü kriptolama metodunu seçerler. Eğer sadece 40-bit oturum anahtarlarını destekleyebilen export-sürümü bir browser bu tip bir sınırlaması olmayan bir sunucuya bağlanmaya kalkarsa, sunucuda 40-bit ile haberleşecektir. Benzer olarak, yine bu tip bir sınırlaması olan istemci ile haberleşirken 1024-bit anahtarından 512-bit RSA açık anahtarı türetecektir.
SSL veri sıkıştırmayı dahili olarak desteklemektedir. Bu da bir mesaj kriptolandıktan sonra sıkıştırılamayacağı için önemli bir özelliktir.
10.3 SSL işlemleri
Protokolün amacı sunucunun kimliğini tanılamak (seçime bağlı olarak, istemcinin kimlik tanılamasının yapılması) ve hem istemci hemde sunucunun kriptolanmış mesajlar gönderebilmede kullanabilmesi için gizli simetrik anahtar belirlemesidir. İşlemin adımları kısaca şöyledir: 1. İstemci (örnekte browser) sunucu portuna bir bağlantı açarak 'ClientHello' mesajı gönderir. 'ClientHello' istemcinin kullandığı SSL sürümü, desteklediği şifreleme takımı ve desteklediği veri sıkıştırma metodları gibi bilgileri içerir. 2. Sunucu 'ServerHello' mesajı ile cevap verir. Sunucu seçtiği şifreleme takımı ve veri sıkıştırma metodunu içeren ve bağlantıyı tanımlayan oturum ID`sini içeren bir mesaj gönderir. Şifreleme takımı ve sıkıştırma metodlarının seçiminden sunucu sorumludur. Eğer istemci ve sunucu arasında seçimlerde bir uyum sağlanamazsa sunucu 'handshake failure' mesajı gönderip bağlantıyı kapatır. 3. Sunucu sertifikasını gönderir. Eğer sunucu sertifika-tabanlı kimlik tanılaması kullanıyorsa sunucu imzalı X.509v3 site sertifikasını gönderir. Eğer sertifika root olmayan bir sertifika otoritesi tarafından imzalanmışsa, sunucu ana sertifika otoritesine kadar olan imzalı sertifikalar zincirini de gönderir. 4. Sunucu istemci sertifikası isteği gönderir (seçime bağlı). Eğer istemci kimlik tanılaması için istemci sertifikaları kullanılıyorsa sunucu istemciye sertifika isteği mesajı gönderir. 5. İstemci sertifikasını gönderir (seçime bağlı). Eğer sunucu istek yaptıysa, istemci imzalı X.509v3 istemci sertifikasını gönderir. Eğer istemcinin sertifikası yoksa 'no certificate' alarmını gönderir. Sunucu bu noktada 'handshake failure' ile bağlantıyı iptal edebilir yada devam edebilir. 6. İstemci 'ClientKeyExchange' mesajı gönderir. Burda simetrik oturum anahtarı seçilir. Detaylar seçilen şifreleme takımına göre değişir fakat tipik bir durumda istemci iyi bir rastgele-sayı üreteci ile 'pre-master secret' yaratır. Bu anahtar her iki tarafta da oturum anahtarı olarak kullanılacak gerçek anahtarı yaratmada kullanılır (farklı simetrik şifreler farklı anahtar uzunlukları kullandığından oturum anahtarı direk olarak yaratılmaz). Browser dijital zarf yaratmak için bu anahtarı sunucunun (sertifikasından aldığı) RSA açık anahtarı ile kriptolar. Sonrasında zarf sunucuya gönderilir. 7. İstemci 'CertificateVerify' mesajı gönderir (seçime bağlı). Eğer istemci kimlik tanılaması kullanılıyorsa, istemci doğru RSA özel anahtarını bildiğini göstererek sunucuya kimlik tanılamasını gerçekleştirmesi gerekir. 'CertificateVerify' mesajı (aradaki konuşmayı dinleyen birisinin müdahele etmesini zorlaştıracak şekilde çeşitli yollarla değiştirilen) 6. adımda yaratılan premaster anahtarı içerir. Anahtar istemcinin RSA özel anahtarı ile imzalanır ve sunucuya gönderilir. Sunucu istemcinin sertifikası ile bunu kontrol eder. Burada sunucunun kimliğini tanılaması gerekmediğine dikkat edilmeli. İstemci premaster anahtarını sunucunun açık anahtarını kullanarak gönderdiği için sadece sunucunun sertifikasının sahibi bunu dekriptolayıp kullanabilir. 8. Hem istemci hemde sunucu 'ChangeCipherSpec' mesajı gönderir. Bu mesaj istemci ve sunucunun kararlaştırılan simetrik şifre ve oturum anahtarı ile haberleşmeye başlayabileceklerini onaylayan basit bir mesajdır. 9. Hem istemci hemde sunucu 'finished' mesajı gönderir. Bu mesajlar o ana kadarki tüm konuşmanın tam olarak alındığı ve yolda değiştirilmediğini onaylamada kullanılacak olan MD5 ve SHA hash`lerini içerir.
Bu noktada hem istemci hemde sunucu her iki tarafa doğru olan trafiği oturum anahtarı kullanarak simetrik olarak kriptolamak için kriptolama moduna geçerler. Yukarda belirtilen 9 adıma ek olarak SSL 3.0 sunucular için ek bir işlem vardır. 3. adımda sertifikasını göndermek yerine sunucu 'ServerKeyExchange' mesajı gönderir. Bu sunucunun bir sertifika göndermeden bir oturum anahtarı belirlemek için kullanılır. Bu aşağıdaki durumlardan herhangi birinde gerçekleşebilir: 1. Sunucu anonim Diffie-Hellman anahtar değiştokuşu protokolünü kullanıyorsa 2.Sunucu Fortezza akıllı kart kriptolama takımını kullanıyorsa 3. Sunucunun sadece imza için özel anahtarı varsa (mesela bir DSS anahtarı) Bu senaryoların en ilginci Diffie-Hellman anahtar değiştokuşu algoritması kullanımıdır. Bu durumda istemci ve sunucu bibirlerini tanımadan paylaşılan oturum anahtarı belirler. Sertifika değiştokuşu olmadığından etkileşim tamamen anonimdir. Bu aynı zamanda işlemin man-in-the-middle saldırısından etkilenebileceği anlamına da gelir.
|