SSL ve TLS Nedir?
Güvenlik sertifikaları ile ilgili konulara devam edelim. Şimdiye değin SSL Sertifika Tipleri, Let’s Encrypt, Zero SSL, Certbot İle Let’s Encrypt SSL Sertifika İşlemleri ve SSL Sertifika Tipleri‘nden bahsetmeye çalıştım.
Bu yazıda ise hem SSL için temel bir açıklama düşecek hem de TLS (Transport Layer Security) ile ilgili bazı bilgiler aktarmayı amaçlamaktayım. Öncelikle, SSL (Secure Sockets Layer) ile girişimimizi yapalım.
SSL
SSL (Secure Sockets Layer / Güvenli Soket Katmanı), istemci (client) ile sunucu (server) arasında veri alışverişinin şifreli / güvenli bir şekilde gerçekleştirilebilmesini sağlayan, öntanımlı olarak (default) 443. portu kullanan bir güvenlik katmanıdır. Eğer bir web sitesi ve/veya web uygulaması geçerli bir SSL sertifikasına sahip ise veri iletişimi HTTPS (Hypertext Transfer Protocol Secure)1 aracılığıyla şifreli bir şekilde gerçekleştirilir. HTTPS, HTTP (Hyper-Text Transfer Protocol, Türkçe Hiper-Metin Transfer Protokolü)’nin iletim (transport) katmanının şifreli hale getirilmesi2 ve bu sayede gizlilik (confidentiality) sağlaması olarak izah edilebilir3. SSL Sertifika Tipleri başlıklı yazıda, sertifika tipleri bağlamında da bahsi geçtiği üzere, İstemcinin sunucunun kimliğini doğrulaması (authenticity) ile birlikte taraflar arasında güvenli veri iletimi sağlanabilir4.
Özellikle gizliliğin ve güvenliğin önemli olduğu, kredi kartı, kullanıcı verileri ve benzeri verilerin işleme alındığı web sitelerinde ve web uygulamalarında bulunması zorunlu olan geçerli bir SSL sertifikası ile iletilen veriler üçüncü kişiler tarafından kullanılamaz5. Bu süreçte SSL standart biçimde bir algoritma aracılığıyla şifreleme işlemini gerçekleştirir. SSL sertifikasının güvenlik işlemini başarıyla yürütebilmesi için şu özellikleri / alanları barındırması gerekir;
- Kurumun unvanı
- Sertifika geçerliliği için seri numara ve son kullanma tarihi
- Public Key
- CA (Certificate Authority)’nın ECSP (Electronic Certificate Service Provider / Elektronik Sertifika Hizmet Sağlayıcıları) elektronik imzası
Bu özellikler sayesinde sağlanan güvenli ve geçerli veri iletimi ayrıca tarih ve saat olarak log’lanır.
SSL Çalışma Biçimi
SSL, “Public Key” ve “Private Key” olarak ifade edilen anahtarlar aracılığıyla sağlanan bir yapı üzerinden doğrulama işlemlerini gerçekleştirir. Bu anahtarlar birbirleriyle uyumlu bir şekilde çalışırlar ve taraflar (istemci ve sunucu) arasındaki şifreleme / doğrulama sürecini yürütürler. Şifreleme işlemleri için 40 bit veya 128 bit arasındaki bir değerde şifreleme kullanılmaktadır. Bu değer SSL tiplerine göre değişiklik gösterecektir ve şifreleme yönteminin ne kadar güçlü olduğu gösterir. Kullanılan anahtar uzunluğu ne kadar yüksekse şifreleme o kadar güçlüdür. Örneğin; 8 bit üzerinden bir veri iletiminin çözülmesi son derece kolay olacaktır. Bu ifadede yer bulan bit ikilik sayma düzeninde bir rakamı ifade eder ve 0 veya 1 değerini alabilir. Örnek üzerinden devam edecek olursak, 8 bit sadece 28 (veya 2^8) = 256 olası farklı anahtar içerir. Bu 256 farklı olasılık sınanarak bir eşleşme sağlanabilir. SSL protokolünde 40, 128, 256, 1024, 2048, 3072, 4096-bit şifreleme kullanılabilmektedir. 128 bit şifrelemede 2.128 değişik anahtar bulunur ve bu şifrenin çözülebilmesi çok büyük bir efor gerektirir. Harici bir bağlantı sağlanmak istendiğinde public key ile bağlantının doğrulanması gerekir. Aksi durumda bağlantı reddedilecektir. Elbette bu sertifikaların kullanım sürecinde client desteği de önemlidir. Örneğin, bir internet tarayıcısı için browser compatibility tanımı kullanılır.
Bir tarayıcı üzerinden web uygulamasına ve/veya sitesine HTTPS üzerinden bağlantı sağlanmak istendiğinde (request) sertifika sunucudan tarayıcıya yollanır. Tarayıcı aldığı sertifikadaki tüm bilgileri ve public key’i okur ve doğrular. Bu aşamada, sertifika içerisindeki sertifika imzası denetlenir. Tarayıcıya gömülü olan CA public key’i ile sertifika imzası çözülerek CA tarafından üretilen hash değeri elde edilir. Ardından, sertifika ile de bir hash değeri üretilir ve bu hash değerleri karşılaştırılır. Eğer edinilen değerler aynı ise doğrulama (validation) işlemi sağlanmış olur.
TLS
TSL (Transport Layer Security / Taşıma Katmanı Güvenliği), İnternet Mühendisliği Görev Gücü (IETF) standartlar yolu protokolüdür ve önceki SSL spesifikasyonları (1994, 1995, 1996) esas alınarak SSL’i de kullanıma sunan Netscape tarafından geliştirilmiştir. Bu açıdan değerlendirildiğinde, SSL için TLS’nin öncülü diyebiliriz. Bu nedenle kimi zaman SSL/TLS olarak da adlandırılır. Kısaca bu süreci açıklamak gerekirse, SSL protokolünün yayınlanan son versiyonu 3.0 sonrasında TLS 1.0 ile devamlılık sağlanmıştır. TLS 1.0’ın SSL 3.1’e karşılık geldiği düşünülebilir6. Tabi eklenen özellikler ve modifiye edilen, daha gelişmiş ve güvenli hale getirilen yapı sebebiyle TLS ifadesi tercih edilmeye başlanmıştır.
Son duyurulan güncellemeler ile birlikte (2018) TLS 1.3 kullanıma sunulmuştur. TLS 1.3’ü destekleyen tarayıcılar şunlardır7:
TLS iki katmandan oluşur:
- TLS Record Protocol (TLS Kayıt Protokolü)
- TLS Handshake Protocol (TLS El Sıkışma Protokolü)
Handshake Protokolü, sunucu ve kullanıcıların kimlik doğrulama işlemlerini gerçekleştirir. Handshake Protocol veri iletişimi öncesine şifreleme algoritmaları ile şifreleme anahtarlarına izin verilirken, Record Protocol ile bağlantının güvenliği sağlanır.
SSL ve TLS arasındaki farklara özet bir şekilde değinecek olursak;
- Güvenlik noktasında hem SSL hem de TLS hemen hemen eşit seviyede güvenlik sunar. Ancak, SSL süreci güvenlik ile başlatıp doğrudan güvenli veri iletişimine geçerken, TLS sunucuya güvenli olmayan bir açılış mesajı gönderir. Eğer bu mesaj üzerinden istemci ile sunucu arasında bir handshake gerçekleşmezse (message authentication) bağlantı kurulmaz. Handshake sağlanmış ise güvenli bağlantı kurulur ve veri iletişimi sağlanır.
- Eğer istemci bir SSL sertifikasına sahip değilse TLS protokolü “Sertifika Yok” mesajını geçirebilir. SSL’de ise ayrıca bir bilgilendirmeye gerek yoktur.
- H-MAC herhangi bir hash fonksiyonuyla yönetilebilir olduğu için TLS pek çok durumda MAC (H-MAC) kullanır. Ancak, SSL MD5 ve SHA kullanmaktadır.
- TLS, H-MAC ve PRF standartlarını ve bu standartlar üzerinden üretilen anahtarları (key) kullanır. SSL ise RSA, Diffie-Hellman veya Fortezza/DMS kullanmaktadır.
- TLS sertifika doğrulama mesajını handshake içerisinde iletir, SSL ise doğrulama mesajını daha kompleks bir süreç içerisinde iletmektedir.
- TLS, “bitti mesajı” için PRF çıktısıyla birlikte istemci ve sunucudan gelen “bitti” mesajlarını kullanır. SSL ise anahtar üretimine benzer biçimde bir “bitti mesajı” oluşturur.
TLS kullanımı için öncelikle sunucu ayarlarından SSL 2.0 ve SSL 3.0’ın devre dışı bırakılması gerekmektedir.
İleri Okumalar
- HTTPS nasıl çalışır?
- SSL Certificates and Web Browsers
- Compare SSL/TSL Certificates for Websites
- Why Choose DigiCert for SSL Certificates?
- HTTPS-Only Features in Major Browsers
- Changes to Google Chrome and Chrome OS certificate handling
- What is the difference between SSL vs SSH? Which is more secure?
- TLS 1.3 Nedir ve Nasıl Çalışır?
- HTTPS, TLS ve SSL Nedir? Ne İşe Yararlar?
- TLS 1.3 – Enhanced Performance, Hardened Security