Güvenlik

Sertifika ve SSL Kavramları


Sertifikalar



Sayısal imzaları kullanarak bir verinin gerçekten beklenen kişi tarafından gönderildiği ve iletim esnasında değişikliğe uğramadığını anlayabiliriz. Peki, gönderilen verinin gerçekten beklediğimiz insana ulaştığından nasıl emin olabiliriz? Yani açık anahtarını kullanarak verileri şifrelediğimiz kişi gerçekte düşündüğümüz kişi midir? Nasıl emin olabiliriz.


Burada sertifika tanımı ortaya çıkıyor. Sertifika, basitce kişinin açık anahtarının yetkili bir sertifika otoritesi tarafından imzalanmış halidir diyebiliriz.


SSL Nedir?


Temelleri Netscape firması tarafından 1994 yılında atılan SSL aynı yılda ticari olarak piyasaya sürüldü ve bir sonraki yıl IETF tarafından standart olarak Kabul edildi. Aslında standartın asıl ismi TLS olmasına rağmen genellikle SSL kullanımı tercih edilmektedir. Yani TLS 1 ile SSL 3.1 aynı özelliklere sahiptir. Ilk zamanlar sadece HTTP trafiğini şifreleme amaçlı geliştirilmiş olsa da günümüzde TCP tabanlı tüm servisleri şifreleme amaçlı kullanılabiliyor.


TLS opensource bir teknoloji, SSL ise Netscape’e ait protokoldür.


SSL Kullanımının Dezavantajları


Daha fazla kaynak, daha fazla bantgenişliği ihtiyacı. Aynı sayfa, özet bilgiler veren bir sniffer aracılığıyla ziyaret edilirse SSL’in farkı(dezavantajları) daha net anlaşılır


Çok fazla kaynak harcamasından ötürü online alışveriş ve bankacılık sitelerinin sadece Login ve para transferi sayfalarında SSL kullanılır.


HTTPS vs S-HTTP


Genelde birbirlerinin yerine kullanılsalar da teknik olarak aralarında büyük bir fark vardır: S-HTTP’de sadece iletilen veri-mesaj şifrelenirken HTTPS’de verinin iletileceği ortam (network hattı) şifrelenir, doğal olarak da şifrelenmiş ortam (tünel) içindeki herşey (veri-mesaj vb) şifrelenmiş olur. HTTPS, SSL over HTTP olarak adlandırılır.


Şifreleme Algoritmaları


Simetrik ve Asimetrik olmak üzere iki çeşittir:


a.) Simetrik Anahtarlı Şifreleme Algoritmaları


Bir veriyi şifrelemek ve şifreli veriden orjinal veriyi elde etmek için aynı anahtar kullanılır. Burada bir anahtar değişim problemi vardır, ortak anahtar nasıl iki tarafa ulaştırılacak? Bu genelde telefon vb ile yapılır. Çok sayıda kişi kullandığında anahtar yönetimi başlı başına bir sorun haline gelir.


b.) Asimetrik – Açık Anahtarlı Şifreleme Algoritmaları


Bu tip algoritmalarda veriyi şifrelemek ve çözmek için iki anahtar kullanılır. Veriyi şifrelemek için bir anahtar (public key), çözmek için diğer anahtar (private) kullanılır.


Benim public anahtarım kullanılarak şifrelenmiş bir veri ancak benim private anahtarım kullanılarak çözülebilir. Bu yüzden asimetrik algoritmalarda açık anahtar(public key) dağıtılır, gizli anahtar(private key) saklanır.


Bir de bunların haricinde mesaj özeti (message digest) olarak adlandırılan ve veri bütünlüğünü koruma amaçlı kullanılan tek yönlü çalışan MD5 ve SHA gibi hash algoritmaları vardır.


Sayısal-Dijital  İmza Kavramı


Verinin içeriğinin değiştirilme durumu ve göndereninin gerçekliliğini ispat  söz konusu ise sayısal  imza kullanılır. Sayısal imza, yazılan mesajın özetinin gizli anahtar ile şifrelenmiş ve bir sıra numarası eklenmiş halidir.


Gönderici;


1) Mesajın özetini hesaplar. (Hash)


2) Gizli anahtarını kullanarak özeti şifreler ve bir sıra numarası ekler.  (Private keyi ile şifreler)


Alıcı;


1) Göndericinin açık anahtarını kullanarak şifreyi çözer. (Public key)


2) Şifre çözüldükten sonra ortaya gönderilen mesajın özeti çıkar.


3) Aynı algoritma kullanılarak mesaj özet işlemine tabi tutulur ve imzadaki özet (hash) ile karşılaştırılarak doğruluğu kontrol edilir.


Bu sayede, gönderilen mesajın değişmediğinden (integrity) ve göndereninden (non-repudiation) emin olunabilir. 


Sertifika Otoritesi


Sertifika isteğinde bulunan şahıs/kurumların gerçekte belirttikleri kişiler/kurumlar olduklarını (bunun yanında belirtilen diğer hususları da) doğrulayan ve onaylayan kurumdur. Verisign, Globalsign gibi..


Eğer her iki taraf da ortak güvenilen bir sertifika otoritesi tarafından imzalanmış sertifika kullanıyorsa birbirlerinin public keylerine güvenebilirler.


Sertifika Yaşam Döngüsü: (PKI Altyapısı)


Tanımlar:


CA – Certification Authority: Sertifika Otoritesi, sertifika vermeye yetkili kurum


RA – Registration Authority:  Sertifika talebinde bulunan kişi/kurumun kimlik bilgilerini doğrulayan


yerel kurum


CRL – Certificate Revocation List: Sertifikaların geçerlilik sürelerinin takip edildiği liste


Private Key: Kişiye/Kuruma özel, kesinlikle başkalarıyla paylaşılmaması gereken şifreleme anahtarı


Public Key: Kişiye/Kuruma özel, başkalarının da erişebildiği şifreleme anahtarı


Sertifika: Public Key + Dijital İmza


Dijital İmza: Sertifika talebinde bulunan kişi/kurumun Public Key Hashi’nin CA’in Private Keyi ile şifrelenmesi (imzalanması) işlemi.


Encryption: Şifreleme teknikleriyle bilgiyi erişilemez/okunamaz hale getirme işlemi


Decryption: Şifrelenmiş bilgiyi tekrar erişilebilir/okunabilir hale getirme işlemi


Authentication: Kimlik doğrulama


Integrity: Bütünlük


NonRepudiation: İnkar edilemezlik


Hash: Özet


Text –Encryption–> Cipher Text –Decryption–>Text


Text –Hash—> Digest


Sertifika Yaşam Döngüsü


1.       Sertifika talebinde bulunacak kişi/kurum kendine özel private-public key çiftini oluşturur. Şifreleme bu haliyle de yapılır. Ancak bu durumda sadece Encryption sağlanmış olur. Authentication, Integrity ve NonRepudiation için oluşturulan Public Key’in herkesin bildiği/güvendiği bir kurum tarafından onaylanması gerekir (CA).


2.       Sertifika başvurusu (kişi/kurumun Public Key’i ve kimlik bilgileri) RA’ya yapılır. RA gerekli kimlik doğrulama işlemlerini yaparak (Kimlik araştırması, Ticaret Sicil Gazetesi vb) başvuru ve gerekli bilgileri CA’ya gönderir. CA, başvuran kişi/kurumun Public Keyi’nin Hash’ini alıp kendi Private Keyi ile şifreler (imzalar). Yani, dijital imza Public Key Hashi’nin CA’in Private Keyi ile şifrelenmesidir. CA, başvuruyu yapan kişi/kurumun Public Keyi ve ve bu Hash’i kullanarak sertifika üretir.


3.       Sertifika kullanılacağı zaman kaynağından indirilir (https web sayfası, file server vb). İçindeki Public Key ve Dijital İmza ayrıştırılır. CA’in Private Key’i ile imzalanmış Hash, CA’nın herkes tarafından edinilebilen Public Key’i ile decrypt edilir. Elde edilen Hash değeri, gelen sertifikadaki Public Key’in Hash’i alınarak (hangi metodla Hashlenmişse; MD5, SHA-1 vb) karşılaştırılır. Aynı ise, sertifikanın doğru olduğu değerlendirilir. Artık, sertifikanın gerçekten sahibi tarafından kullanıldığından emin olunur.


4.       Kullanıcı, şifrelemede kullanmak üzere Session Key üretir. Bunu, kişi/kurumun Public Keyi ile şifreleyerek kişi/kuruma gönderir. Kişi/kurum, kendi Public Key’i ile şifrelenmiş Session Key’i Private Key’i ile decrypt eder. Böylece Key Exchange yapılmış olur. Gidip gelen veriler bu Session Key ile şifrelenir (simetrik). Her yeni bağlantıda rassal olarak üretilir. Kullanıldıktan sonra silinir.


5.       Key Exchange Asimetrik şifreleme ile, veri şifrelemesi simetrik şifreleme ile yapılır.


6.       Kullanım süresi dolan sertifikalar CRL’e kaydedilir.


CA, sertifikayı üreten ve kullanan kişiler/kurumlar için güvenilir üçüncü taraf rolündedir. Kullanıcı sertifikasını kullanacağı kişi/kuruma doğrudan güvenmese de CA’ye güvenir. Kişi/kurum da aynı CA’ye (bazı CA’ler: Globalsign, Verisign vb) güvendiğinden dolaylı olarak aralarında güven sağlanmış olur.


Özgür bir SSL sürümü: OpenSSL


  Temel OpenSSL Kullanımı


OpenSSL dosyalarının hangi dizinde bulunduğunu öğrenmek için:


# openssl version –d



OPENSSLDIR: “/usr/share/ssl”


Komutu kullanılabilir. Bu dosyaları daha akılda kalıcı bir dizinden yönetmek istersek aşağıdaki komut işimizi görecektir. Bu komut sonrasında openssl ile ilgili dosyalar /etc/ssl dizini altından da erişilebilir olacaktır.


#ln -s /usr/share/ssl/ /etc/ssl



Hangi OpenSSL sürümü ile çalıştığınızı öğrenmek için:


# openssl version



OpenSSL 0.9.7a Feb 19 2003


Komutunu kullanabilirsiniz. Detaylı bir çıktı almak istenirse openssl version –a komutu da kullanılabilir.


OpenSSL ile Yardım Alma.


OpenSSL kullanırken parametrelerin neler olduğunu ve bunların detaylarını öğrenmek için –h parametresini kullanılabilir. Mesela genel openssl kullanımı için:


image001



Standart komutlardan biri ile ilgili yardıma ihtiaç duyarsak openssl komut_adi –h ile detay bilgi edinebiliriz.


image002


Not: Bu doküman Huzeyfe ÖNAL ve Çağatay IŞIKÇI tarafından hazırlanmıştır.


Kaynaklar:


https://calomel.org/ssl_certs.html


http://www.lifeoverip.net

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu