055122007 İsmail KIRBAŞ SSL (Secure Socket Layer) Nedir? Bildiğimiz gibi Internet herkese açık bir ortamdır. Teknolojinin ilerlemesi ile beraber artık internet gündelik hayatımızın vazgeçilmez bir parçası haline gelmiştir. Internetin bu denli yaygınlaşması beraberinde güvenlik sorunlarını da getirmiştir. Açık metin HTTP trafiği internet BB Mehmet Peksaf Batmaz Bank Internet Şubesi Ali Pekfesat Mehmet Peksaf Müşteri No : 6980871 Şifre : aliveli4950 internet Müşteri No : 6980871 Şifre : aliveli4950 Müşteri No : 6980871 Şifre : aliveli4950 Ali Pekfesat SSL Nedir? < 1 > Batmaz Bank Internet Şubesi 055122007 İsmail KIRBAŞ SSH Tekniği Tatu Ylönen tarafından geliştirilen SSH (Secure shell, Güvenli kabuk) bir bilgisayara uzaktan girmenizi ve orada komutlar çalıştırmanızı sağlayan oldukça basit yapılı bir uygulama. SSH güçlü bir asıllama ve güvenli iletişim gereklerini karşılayarak telnet vb. İletişim kurallarının yerini alıyor. Biri ticari olan iki ayrı isimle piyasada bulunuyor. SSH iletişim kuralının çalışması aşağıdaki şekille özetlenebilir: İstemci Sunucu Asıllama İsteği Konak Anahtarı + Sunucu Anahtarı Konak(Sunucu(Oturum Anahtarı)) Oturum(TAMAM) Açık Konak Anahtarı : 1024 bit RSA Açık sunucu Anahtarı : 768 bit RSA Oturum Anahtarı : 256 bit rastgele sayı (Blowfish, DES, 3DES) İstemcinin gönderdiği asıllama isteğine sunucu açık konak anahtarını ve açık sunucu anahtarını göndererek yanıt verir. Konak anahtar çifti konağa özeldir ve sunucunun kurulması sırasında oluşturulur. Bu anahtar daha sonra değiştirilmez. Sunucu anahtar çifti fazladan güvenlik için eklenmiştir. Genelde saatte bir değişecek şekilde ayarlanır. Konak aldığı bu anahtarlarla yarattığı bir simetrik oturum anahtarını iki kere şifreleyerek sunucuya gönderir. Ayrıca, yaratılan oturum anahtarına şifrelenmeden önce fazladan güvenlik için rastgele sayılar da eklenir. Daha sonra, sunucu oturum anahtarıyla şifrelenmiş bir onay iletisi gönderir. Bu güvenli oturumun ilk iletisidir. Bundan sonraki iletiler oturum anahtarıyla şifrelenmiş olarak iletilecektir. İstemcinin sunucuyu geçerli sayması için iletişim kuralında herhangi bir tanımlama yoktur. Sunucunun asıllanmasının önceden istemciye yerleştirilmiş bir konak anahtarı - konak adresi listesi ile yapıldığı varsayılır. Listede kayıtlı olmayan bir konak anahtarı ile karşılaşıldığında istemci tarafındaki yazılım kullanıcıyı uyaracaktır. Kullanıcının onayı olursa, istemci yazılım bu yeni konak anahtarıni kaydeder. Sunucu anahtarı hiçbir zaman istemci tarafında kaydedilmez. SSL Nedir? < 2 > 055122007 İsmail KIRBAŞ Sunucu tarafından kullanıcı asıllaması gerekirse bu iki farklı yolla yapılabilir: Eğer parola ile asıllama yapılacaksa bu parola zaten şifrelenmiş olan hattan gönderilir. Eğer RSA asıllaması yapılacaksa sunucu yarattığı rastgele bir sayıyı kullanıcının açık anahtarı ile şifreleyerek gönderir. İstemci tarafında yazılımın kullanıcının gizli anahtarını kullanabilmesi için bir parola sorulur. Bu parolanın onaylanmasıyla yazılım kullanıcının gizli anahtarı ile metni çözerek yaratılan rastgele sayıyı bulur. Yanıt olarak sunucuya rastgele sayının özü ve bağlantıyla ilgili bazı ek bililer gönderilir. SSH iletişim kuralı bir kayıt iletişim kuralı ve onun üzerine kurlu bir tokalaşma iletişim kuralından oluşmuştur. SSH iletişim kuralı ile kullanılabilecek sıkıştırma ve şifreleme algoritmaları ile asıllama sırasında desteklenen şemalar aşağıdaki tablolarda gösterilmiştir. Sıkıştırma algoritmaları yok sıkıştırma yok Zorunlu zlib GNU ZLIB seçimli Asıllama algoritmaları yok asıllama yok seçimli hmac-md5 HMAC-MD5 seçimli hmac-sha HMAC-SHA seçimli 8 bayt MD5 + veri md5-8 seçimli + anahtar 8 bayt SHA + veri sha-8 seçimli + anahtar SHA + veri + sha zorunlu anahtar Şifreleme algoritmaları yok şifreleme yok seçimli 3des-cbc 3-DES zorunlu idea-cbc IDEA seçimli arcfour ARCFOUR seçimli blowfish-cbc Blowfish seçimli Anahtar değişimi algoritması doubleçifte şifreli encrypting- anahtar zorunlu sha değişimi Asıllama Yöntemleri password securid skey opie publickey hostbased kerberos4 kerberos5 kerberos-afs Netscape Corporation tarafından geliştirilen SSL (Secure sockets layer) iletişim kuralı da SSH’a benzer katmanlara sahiptir. SSH’dan temel farkı, anahtarların elle yönetimi yerine izin belgesi (sertifika) tabanlı kamusal anahtar altyapısını (PKI) kullanabilmesidir. Birçok işletim sisteminde yazılım ile ulaşım katmanı iletişim kurallarının haberleşmesini sağlayan BSD Sockets gibi arayüzler bulunur. SSL, güvenlik düzeneklerini bu arayüzlere taşıyarak tüm TCP/IP iletişimini güvenli kılmak fikri üzerine kuruludur. SSL iletişim kuralının nereye yerleştiği aşağıdaki şekilden görülebilir SSL Nedir? < 3 > 055122007 İsmail KIRBAŞ İstemci Sunucu Uygulama Uygulama SSL Tokalaşma SSL Tokalaşma SSL SSL Kayıt SSL Kayıt TCP / IP TCP / IP İletişim kuralları yığınında yerleştiği yerden ötürü SSL kullanan yazılımlar ile kullanmayan yazılımların kapı numaraları çakışmaktadır. Bunun çözümü üç şekilde olabilir: SSL destekleyen her bir uygulama iletişim kuralı için yeni bir kapı numarası atanır, alışıldık kapı numaraları kullanılarak güvenlik seçenekleri uygulama iletişim kuralına bırakılır ya da TCP paketlerine SSL kullanılıp kullanılmadığını belirten bir alan eklenir. Şu an için görünen ilk seçeneğin kullanıldığı. Şekilde görüldüğü gibi SSL iki ayrı katmana ayrılır: SSL kayıt katmanı ve SSL tokalaşma katmanı. SSL kayıt katmanı üstündeki iletişim kurallarından aldığı verinin parçalanması, asıllanması ve şifrelenmesi ile ilgilenir. Bu katmanın üzerinde SSL’in diğer katmanları çalışır. Bunların en önemlisi tokalaşma iletişim kuralıdır. SSL tokalaşma iletişim kuralının ereği sunucu ile istemci arasında bir bağ oluşturmak, şifreleme, sıkıştırma kurallarını belirlemek, gerekirse tarafları asıllamak, oturum için gerekli anahtarları oluşturmaktır. -----------------------------------İşte verinin güvenliksiz bir ortam olan internette bir yerden bir yere taşınması sorununa bir çözüm olması için SSL ortaya atılmıştır. SSL’i ilk ortaya atan Netscape firmasıdır. Daha sonra IETF tarafından bir güvenlik standardı olarak kabul edilmiş ve Netscape’ten devralınmıştır. SSL, güvenli olmayan bir ortamda verinin göndericiden alıcıdan güvenli bir şekilde iletimini sağlamak amacı ile hem herkese açık bir anahtar şifrelemesini hem de özel anahtar şifrelemesini aynı anda kullanabilen bir yapıda tasarlanmıştır. Veriyi sunan Web Server, Sertifika otoritesi tarafından imzalanmış özel ve herkese açık bir anahtara sahiptir. Bu anahtar değerleri verinin alıcı tarafından sunucudan güvenli bir şekilde alınmasını sağlar. SSL teknolojisi, veri iletimi esnasında Hashing metodunu kullanır. Hashing metodolojisi ile , sunucu , veriden tek bir hash değeri yollar. İstemciye veri ile beraber bu hash değerini de yollar. İstemci bu data paketini aldığında, aynı hash fonksiyonunu kullanarak , gelen bu paketten yeni bir hash değeri üretir. Burada altının çizilmesi gereken nokta, veri İstemcisinin ürettiği anahtar değerinin , sunucunun kullanmış olduğu aynı hash fonksiyonu ile üretilmiş olmasıdır. İstemci ile sunucu, aralarında bağlantı sağlarken, aynı hash fonksiyonu kullanmak SSL Nedir? < 4 > 055122007 İsmail KIRBAŞ için anlaşırlar. İstemcinin üretmiş olduğu bu yeni hash değeri, sunucunun yolladığı hash değeri ile aynı olmak zorundadır. Eğer aynı değilse veri değişmiştir. Aynı değilse verinin değişmediğinden sunucu emin olmuş olur. SSL, web sunucusunda tanımlanmış olan digital imzaları kullanır. Böylece web sunucusunun yayınlamış olduğu digital imza sayesinde, browserdan web sunucusuna erişen İstemci, gerçekten alışverişte bulunacağı firma ile bir bağlantının kurulduğundan emin olur. Bir sunucu sertifikası, sunucuda tanımlanmış olan bir dijital imza ile bellidir. Ve sunucunun gerçek kimlik bilgilerini içerir. Sertifika otoritesi, bahsi geçen sertifikayı sunucu firmaya verirken, öncesinde o da bir kimlik denetiminde bulunur. Güvenilir bir firma olduğuna kanaat getirdiğinde, sunucu firmaya sertifika verir. Sertifika Otoritesinin vermiş olduğu bu sertifika, sunucu firmanın güvenilir ve onaylanmış bir firma olduğunu belgeler. Sertifika otoritesi, Verisign gibi firmalardır. Ve bu sertifika otoriteleri, internette alışveriş hizmeti sağlamak isteyen firmalara dağıtabilecekleri sertifikaları, bir onay aşamasından sonra verir. Sunucuya İstemciden bir SSL isteği geldiğinde, İstemcinin web browserı, sunucu ile irtibata geçer. Ve sunucu, İstemciye Sertifika Otoritesi tarafından kendisine verilmiş olan sertifikayı yollar. İşte kısaca diyebiliriz ki, sertifika, bir dijital imzadan ibarettir. İstemci, sunucunun yollamış olduğu bu sertifikayı aldığında, bu sertifikadan sunucunun firma kimlik bilgilerini ve herekese açık anahtar bilgisini okuyabilir. İstemci, sertifika otoritesinin herkese açık anahtarı ile sayısal imzayı çözer ve otoritenin ürettiği hash değerini bulur. Daha sonra sertifika içinden kendisi de bir hash değeri üretir. Bu iki hash değerinin aynı olması gerekmektedir. Eğer aynı ise, web sunucusu, Sertifika Otoritesi tarafından onaylanmıştır ve İstemcinin gerçekten iletişime geçmek istediği bir firma demektir. Böylelikle sunucu ve İstemci arasında bir SSL “güvenli” bir bağlantı kurulumu gerçeklenmiş olur ve bu bağlantı esnasında giden gelen paketler şifrelendiği için üçüncü kişiler, sunucu ile İstemci arasında gidip gelen veri paketlerini okuyamaz. Eğer üçüncü şahıslar, veri okumaya başlayabilirse, bundan anında hem sunucunun hem de İstemcinin haberi olur ve bağlantı hemen kesilir. SSL ile, yukarıda da görebildiğimiz gibi hem sunucu İstemciye kendini tanıtır hem de İstemci sunucuya kendini tanıtır. Böylelikle iki taraflı bir güven ilişkisi kurulmuştur. O halde İstemci ile sunucu arasında iki taraflı bir el sıkışması yapılır. (HandShake). Bu el sıkışma anlaşması, İstemci sunucuya ilk ulaştığı anda yapılır. El sıkışma aşamaları şöyle cereyan eder: * İstemci, sunucuya ilk ulaştığında el sıkışma başlar ve her iki taraf, güvenlik amacı ile kullanılacak olan şifreleme fonksiyonu üzerinde anlaşır. * İstemci, sunucunun kimliğini denetler. * İstemci, sunucudan almış olduğu dijital imzadan bir anahtar oluşturur ve bunu sunucuya yollar. * Sunucu bu anahtarı alınca, kontrol eder. * Eğer istenirse, sunucu da tarayıcıdan bir kimlik denetimi isteyebilir. Bu da demek ki, çift taraflı bir güven anlaşması desteklenmektedir. SSL Nedir? < 5 > 055122007 İsmail KIRBAŞ Bu el sıkışma aşamaları başarılı bir biçimde gerçeklenirse, sunucu ve İstemci arasında bir veri iletişim kanalı açılmıştır ve veri iletişimi başlar. Konuya daha açıklık getirmek istersek, şunları da burada yeri geldiğinde söylemekte fayda var: - - El sıkışma başladığında, İstemci sunucudan kimlik bilgilerini ister. Bunun üzerine sunucu, İstemciye sertifikasını yollar. İstemci aldığı bu bilgiler eşiğinde simetrik bir anahtar oluşturur. Daha sonra sunucunun herkese açık anahtarı ile, bu bulduğu anahtarı şifreler. Ve bu değeri sunucuya yollar. Kendi özel anahtarını kullanarak, sunucu, İstemcinin yolladığı bu şifrelenmiş anahtarı çözer. Bu aşamalar sonucu İstemci ve sunucunun birbirine yollamış olduğu anahtarlar eğer aynı ise, El sıkışma başarılı bir biçimde kurulmuş demektir ve veri alışverişi başlar. Bu el sıkışma protokolü ve verinin şifrelenerek İstemci ve sunucu arasında yollanması işlemleri, OSI referans modelinin Application ve Presentation seviyelerinde gerçeklenir. (Application seviyesinde, İstemci ve tarayıcı World Wide Web üzerinden oturum açıp veri alişverişinde bulunurlarken, şifreleme işlemleri Presentation seviyesinde yapılır.) Burada değinilmesi gereken bir diğer nokta ise, yapılan şifreleme tekniğidir. 3 farklı şifreleme tekniği kullanılır. a. Hash Tekniği ile Şifreleme: Veri trafiği esnasında, verinin değişmediğinin ve bütünlüğünün korunduğunu anlamak için kullanılır. SSL Nedir? < 6 > 055122007 İsmail KIRBAŞ b. Anahtar Değişim Tekniği ile Şifreleme: İstemci ve sunucunun, el sıkışma sonrasında , veriyi şifrelemek amacı ile kullandıkları simetrik anahtarı nasıl birbirine ulaştıracağını belirlemek için kullanılır. c. Simetrik Veri Şifreleme: Veri şifrelenmesinde kullanılacak olan RC2 gibi bir veri şifreleme tekniğidir. SSL desteği veren web sunucunun barındırdığı web adresleri “https” ile başlar. O SSL tekniği ile güvenliği sağlanmış olan bir web sunucuya bir istemci bağlanıp veri alışverişini başlatmak istediğinde şu adımlar gerçeklenir: Öncelikle Web sunucu, bir Sertifika Otoritesinin kendisine tahsis etmiş olduğu sertifikayı yüklemiş olması gerekmektedir. Böylelikle, Sertifika Otoritesi, sunucuyu onayladığını, istemcilere garanti etmiş olur. İstemci, sunucuya bağlandığında aralarında bir el sıkışma protokolü kurumu başlatılır. Bu bağlamda, İstemci ve sunucu hangi şifreleme tekniğini kullanacakları konusunda anlaşırlar. Sunucu, istemciye, kendisine Sertifika Otoritesi tarafından verilmiş olan sertifikayı yollar. İstemci, sunucunun kendine yollamış olduğu sertifikayı kullanarak sunucunun kimlik denetimini yapar. İstemci, bu kimlik denetiminden sonra, eğer geçerli bir sertifika aldı ise; bu sertifika bilgisinden, simetrik şifreleme anahtarını yaratır ve bunu sunucuya yollar. Bu şifreleme anahtarı, sunucu ve İstemci arasındaki verinin şifrelenmesi için kullanılacaktır. Sunucu, İstemciye veri yollarken, bu şifre anahtarı ile veriyi şifreler, veri için bir hash değeri üretir. Şifrelenmiş veri ve hash değeri istemciye yollanır. İstemci veriyi alır, bir hash değeri üretir. Veriyi ve hash değerini simetrik anahtar ile şifreler, sunucuya yollar. Sunucu aldığı bu şifrelenmiş veriyi ve hash değerini çözer. Veri için yeni bir hash değeri üretir. İki hash değerini karşılaştırır. Aynı ise, iletişime devam edilir. Bu adımlar, İstemci ve sunucu arasındaki veri trafiği boyunca devam eder. SSL teknolojisi, 40 bit, 56 bit ve 128 bit veriyi destekler. Ama daha güvenli olması için tercih edilen 128 bitlik veri alışverişidir. SSL Nedir? < 7 > 055122007 İsmail KIRBAŞ Bir SSL Sertifikasının görünümü: Bir Netscape istemcisi ile, güvenli bölgenin detayları alınıyor. LKD SSL sunucusunun sertifikası.... This Certificate belongs to: This Certificate was issued by: www.linux.org.tr LKD Root Certificate Authority webmaster@linux.org.tr bgg@linux.org.tr Bilgi Guvenligi Grubu Bilgi Guvenligi Grubu Linux Kullanicilari Dernegi Linux Kullanicilari Dernegi (LKD) Ankara, TR, TR Ankara, TR Serial Number: 01 This Certificate is valid from Tue Sep 12, 2000 to Wed Sep 12, 2001 Certificate Fingerprint: BF:F1:06:75:DE:56:F4:77:82:C1:FD:34:A5:40:2B:62 SSL Nedir? < 8 > 055122007 İsmail KIRBAŞ Kaynaklar: 1. http://wp.netscape.com/eng/ssl3/draft302.txt 2. Rolf Oppliger, Internet and Intranet Security, Artech House, 1998, pp. 215–247 3. Berk Demir, Linux Kullanıcıları Derneği 4. http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci343029,00.html 5. Dr.İ.SOĞUKPINAR G.Y.T.E. Bil.Müh.Böl. Veri ve Ağ Güvenliği Ders Notları SSL Nedir? < 9 > 055122007 İsmail KIRBAŞ Örnek Soru 1: SSL sistemi hangi şifreleme sistemlerini kullanmaktadır? Cevap1: a. Hash Tekniği ile Şifreleme: Veri trafiği esnasında, verinin değişmediğinin ve bütünlüğünün korunduğunu anlamak için kullanılır. b. Anahtar Değişim Tekniği ile Şifreleme: İstemci ve sunucunun, el sıkışma sonrasında , veriyi şifrelemek amacı ile kullandıkları simetrik anahtarı nasıl birbirine ulaştıracağını belirlemek için kullanılır. c. Simetrik Veri Şifreleme: Veri şifrelenmesinde kullanılacak olan RC2 gibi bir veri şifreleme tekniğidir . Örnek Soru 2: SSL sisteminin avantaj ve dezavantajları nelerdir? Cevap 2 Avantajları: - Ucuz ve kurulumu kolaydır. - Mevcut donanım yapısıyla entegre çalışabilir. - Anahtar büyüklüğü arttırılarak güvenlik seviyesi arttırılabilir. - Küresel anlamda yaygın olarak kullanılmaktadır. Dezavanjları: - Yerini kendisinden daha güvenli bir sistem olan IPSec sistemine bırakmaktadır. - Trafik çözümlemesine ya da sel (flooding) saldırılarına karşı savunması yoktur. - SSL ve TLS’nin uygulama iletişim kurallarının yapılarını değiştirmediğini ve bu sebeple ancak geçici bir çözüm olarak ele alınması gerektiğini savunanlar da vardır. SSL Nedir? < 10 >