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.
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.
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.
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.
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 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ı)
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
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.
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 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:
Standart komutlardan biri ile ilgili yardıma ihtiaç duyarsak openssl komut_adi –h ile detay bilgi edinebiliriz.
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