SSL(Secure Socket Layer), network üzerindeki bilgi transferi sırasında bilginin bütünlüğü ve gizliliği için sunucu ile istemci arasındaki iletişimin şifrelenmiş şekilde yapılabilmesine imkan veren bir sertifikadır. Türkçesi güvenli giriş katmanı anlamıan gelmektedir.
SSL protokolü bütün yaygın web sunucularında ve tarayıcılar tarafından desteklenmektedir. SSLin çalışabilmesi için sunucu tarafında bir anahtar(private key) istemci tarafında ise çalışacak bir sertifikaya(Public key) ihtiyaç duyulmaktadır.

Kısaca Şekil 1’de de görüldüğü üzere SSL internet bağlantılarının güvenli olmasını sağlamaktadır. Kötü niyetli kişilerin iki uç sistem arasında aktarılan verileri açık bir şekilde okumasını engellemektedir. Tarayıcı üzerinde adres çubuğunun sol kısmında bir kilit simgesi bulunuyorsa bu sitenin SSL sertifikasının bulunduğu anlamına gelir.
Netscape tarafından geliştirilen SSL ilk 1994 yılında kullanılmaya başlanmıştır. Protokolün bu 30 yıllık sürede birçok sürümü olmuştur ve bu sürümlerde oldukça önemli zafiyetler ortaya çıkmıştır. SSL; 1.0, 2.0 ve 3.0 sürümlerinden sonra yenilenerek TLS (Taşıma Katmanı Güvenliği) ismi verilmiştir. Günümüzde TLS 1.0, 1.1, 1.2 ve 1.3 olmak üzere kullanılmaktadır fakat kullanıcılar yine eski ismiyle kullanıyor.
HTTPS açılımı Hyper Text Transfer Protokol Secure Türkçesi ise Güvenli Hiper Metin Aktarım Protokolü anlamına gelmektedir. Tarayıcı ile Web sunucusu gibi iki uç sistem arasındaki iletişimin güvenliğini sağlamak için kullanılan bir protokoldür.

Şekil 2’de görüldüğü üzere HTTP ve HTTPS arasındaki fark şema üzerinde belirtilmiştir. HTTP ile yapılan iletişimlerde giden ve gelen veriler açık şekilde iletilmektedir. Fakat HTTPS iletişiminde ise giden ve gelen veriler şifreli şekilde iletilmektedir. HTTP iletişiminde araya giren kötü niyetli biri iletişimi okuyup değiştirirken HTTPS iletişiminde veriler güvenli olduğundan okunamaz ve manipüle edilemez. Kötü niyetli kişiler iletişimi engellese bile verileri okuyamamaktadır. HTTPS verileri SSL sayesinde şifrelemektedir.
SSL, temelde asimetrik ve simetrik kriptografi algoritmalarıyla çalışır.

Simetrik Kriptografi: Şekil 3’te de görüldüğü üzere simetrik şifrelemede tek anahtar bulunur. Bu anahtar veriyi hem şifreler hem de şifreyi çözer. Örnek olarak kapı anahtarı verilebilir hem kapıyı kilitler hem de kilitli kapıyı açar. En yaygın kullanılan simetrik algoritmalar AES-128, AES-192 ve AES-256’dır.

Asimetrik Kriptografi: Asimetrik Şifreleme veya Açık Anahtar Şifreleme olarak da bilinir. Şekil 4’te de görüldüğü üzere bu yöntem, verileri şifrelemek ve şifresini çözmek için matematiksel olarak ilişkili bir anahtar çifti kullanır. Anahtar çiftinin biri, herkesle paylaşılabilen public key (açık anahtar) olarak adlandırılır. Diğer anahtar ise gizli tutulur ve private key (özel anahtar) olarak bilinir.
Asimetrik kriptografide, anahtarlar matematiksel değerlerdir ve verileri şifreleyen veya şifresini çözen özel algoritmalar kullanılarak oluşturulur. Bu yöntemde, veriler yalnızca belirli bir özel anahtar ile imzalanabilir ve yalnızca onunla ilişkili genel anahtar kullanılarak şifresi çözülebilir.
Asimetrik şifreleme, özellikle SSL (Güvenli Yuva Katmanı) protokolü gibi güvenli iletişim sistemlerinde kullanılır. SSL anlaşması, iletişimi başlatmak için asimetrik şifreleme yönteminden faydalanır.En yaygın kullanılan asimetrik anahtar şifreleme algoritmaları arasında ElGamal, RSA, DSA ve PKCS bulunur.
SSL’in Çalışma mantığı nasıldır?
SSL ile gerçekleştirilen bir iletişim her zaman SSL anlaşması ile başlar. Bu anlaşmanın temeli, tarayıcının web sunucusunu doğrulamasına, public key almasına ve asıl veri aktarımı başlamadan önce şifreli yani güvenli bir bağlantı oluşmasına dayanır. Bu süreçte, asimetrik şifreleme kullanılarak güvenli bir iletişim kanalı oluşturulur.

Şekil 5’te verilen SSL anlaşma şemasının açıklamasını adım adım ele alalım;
1.Adım: İstemci, iletişimi başlatmak için “Client Hello” mesajı gönderir. Bu mesaj, istemcinin SSL sürüm numarasını, şifreleme algoritmalarını, oturuma özgü verileri ve sunucunun SSL kullanarak istemciyle güvenli bir bağlantı kurması için gerekli diğer bilgileri içerir.
2.Adım: Sunucu, “Server Hello” mesajıyla yanıt verir. Bu mesaj, sunucunun SSL sürüm numarasını, şifreleme algoritmalarını, oturuma özgü verileri ve genel anahtarlı bir SSL sertifikasını içerir. Ayrıca, istemcinin sunucuyla güvenli bir şekilde iletişim kurması için gereken diğer bilgileri de sağlar.
3.Adım: İstemci, sunucunun SSL sertifikasını Sertifika Yetkilisi (CA) üzerinden doğrular ve sunucunun kimliğini kontrol eder. Eğer kimlik doğrulama başarısız olursa, istemci SSL bağlantısını reddeder ve bir hata oluşturur. Başarılı olması durumunda ise bir sonraki adıma geçilir.
4.Adım: İstemci, bir oturum anahtarı oluşturur, bunu sunucunun genel anahtarıyla şifreleyerek sunucuya gönderir. Eğer sunucu, istemcinin kimlik doğrulamasını talep ettiyse (genellikle sunucudan sunucuya iletişimde), istemci ayrıca kendi sertifikasını da sunucuya iletir.
5.Adım: Sunucu, gelen oturum anahtarının şifresini kendi özel anahtarıyla çözer ve bağlantının doğrulandığını göstermek için oturum anahtarıyla şifrelenmiş bir onay mesajını istemciye gönderir.

Bu nedenle, SSL anlaşmasının sonunda, hem istemci hem de sunucu, gerçek verileri şifrelemek ve şifresini çözmek için kullanacakları ortak bir oturum anahtarına sahip olur. Bu aşamadan sonra, açık anahtar ve özel anahtar bir daha kullanılmaz; iletişim, simetrik şifreleme ile devam eder.
Tarayıcı Sertifanın Doğruluğunu nasıl tespit eder

Şekil 7’de görüldüğü üzer bir SSL sertifikası bulunmaktadır. Bu sertifikanın doğrulanma sürecini ele alalım;
1. Adım Sertifikayı Alma: Tarayıcı, bir web sitesine HTTPS üzerinden bağlanmak istediğinde, ilk olarak sunucuya bir istekte bulunur. Sunucu, kendisini doğrulamak ve güvenli bir bağlantı sağlamak amacıyla içinde public key (genel anahtar) bulunan SSL/TLS sertifikasını tarayıcıya iletir. Bu sertifika, web sitesinin kimliğini doğrulamak için kullanılan dijital bir belgedir.
2. Adım Sertifika Zincirini Kontrol Etme: Sertifikayı alan tarayıcı, öncelikle sertifikanın zincirini kontrol eder. Sertifikayı hangi yetkili otoritenin (Issuer) verdiğini belirler ve bu otoritenin güvenilir olup olmadığını anlamaya çalışır. Eğer sertifika, tanınan bir Certificate Authority (CA) tarafından verilmişse, tarayıcı bu otoritenin köken (root) sertifikasını bulur. Köken sertifikaları genellikle tarayıcının içinde önceden yüklü olarak bulunur ve güvenilir kabul edilir.
3.Adım Dijital İmzayı Doğrulama: Daha sonra tarayıcı, sertifikanın dijital imzasını doğrular. Bu işlem, sertifikanın içinde bulunan public key kullanılarak gerçekleştirilir. Eğer imza geçerliyse, sertifikanın gerçekten CA tarafından verildiği ve üzerinde herhangi bir değişiklik yapılmadığı anlaşılır. Bu, sertifikanın güvenilir olup olmadığını belirlemede kritik bir adımdır.
4. Adım Sertifika Geçerliliğini Kontrol Etme: Sertifikanın geçerliliği de kontrol edilmelidir. Bu aşamada tarayıcı, sertifikanın süresinin dolup dolmadığını, bağlanılmak istenen alan adı (CN — Common Name) ile eşleşip eşleşmediğini denetler. Örneğin, sertifika yalnızca “test.com” için verilmişse, tarayıcının bağlandığı adres de “https://test.com” olmalıdır. Ayrıca, sertifikada kullanılan şifreleme algoritmalarının güçlü olup olmadığı ve sertifikanın daha önce iptal edilip edilmediği gibi güvenlik kriterleri de incelenir.
5. Adım Sertifika İptal Listelerini (CRL/OCSP) Kontrol Etme: Sertifika iptal durumunu doğrulamak için tarayıcı, CA tarafından yayınlanan Sertifika İptal Listesi (CRL — Certificate Revocation List) veya Online Sertifika Durum Protokolü (OCSP — Online Certificate Status Protocol) sunucularına bir istek gönderir. Eğer sertifika iptal edilmişse, tarayıcı siteyi güvenli kabul etmez ve kullanıcıyı uyarır. Bu, çalıntı veya tehlikeye girmiş sertifikaların kullanımını engellemek için kritik bir adımdır.
6. Adım Güvenli Bağlantıyı Kurma: Son olarak, tüm kontrolleri başarıyla geçen sertifikaya sahip bir siteyle güvenli bağlantı kurulabilir. Tarayıcı ve sunucu, TLS handshake sürecini tamamlayarak ortak bir şifreleme anahtarı belirler ve güvenli iletişim başlar.
Bu sürecin tamamı Public Key Infrastructure (PKI) içinde gerçekleşir. Eğer herhangi bir adımda hata olursa, tarayıcı “Güvenli değil” uyarısı verir.
Geçmişten Günümüze SSL/TLS Gelişimi
SSL 1.0: Ciddi güvenlik eksikleri nedeniyle yayınlanmamıştır
SSL 2.0: İnternet üzerindeki ilk güvenli iletişim protokollerinden biri olmuştur. Fakat mesaj bütünlüğü kontrol mekanizmasının zayıflığı ve MITM (ortadaki adam saldırısı) saldırılarına karşı savunmasız kalmıştır. Bu sebeplerden dolayı 2011 yılında kullanımdan kaldırılmıştır.
SSL 3.0: Daha önceki sürümlerin açıklarını kapatmak ve diğer sürümlere nazaran daha güvenli şifreleme algoritması sunmak için geliştirilmiştir. POODLE (Padding Oracle On Downgraded Legacy Encryption) saldırılarına karşı savunmasızdı ve MD5 ile SHA-1 gibi zayıf algoritmalar kullanıldığından dolayı 2015 yılında kullanımdan kaldırılmıştır.
TLS 1.0: SSL 3.0’ın yerine geçmesi için geliştirilen TLS 1.0, daha güvenli bir protokol yapısına sahiptir. Buna rağmen yine de BEAST (Browser Exploit Against SSL/TLS) saldırısına karşı savunmasız olmuştur. Bu nedenden dolayı zamanla güvenlik riski oluşturmuş ve 2020 itibariyle kullanımdan kaldırılmıştır.
TLS 1.1: BEAST saldırısına karşı daha dayanıklı hale getirilerek geliştirilmiştir ve blok şifreleme modlarını güçlendirmiştir. Ancak, modern siber tehditlere karşı yeterli olmaması nedeniyle 2020 yılında kullanımdan kaldırılmıştır.
TLS 1.2: SHA-256 gibi daha güçlü hash algoritmalarını destekleyen, AEAD (Authenticated Encryption with Associated Data) kullanımına izin veren ve forward secrecy desteği sunan bir protokol olmuştur. AEAD, hem veri gizliliği hem de bütünlüğü sağlayarak güvenliği artırırken, forward secrecy ise uzun vadeli şifreleme anahtarlarının ele geçirilmesi durumunda geçmiş oturumların korunmasını garanti eder. Ancak, gereksiz el sıkışma mesajları nedeniyle performans açısından geliştirilmeye açıktır.
TLS 1.3: Güvenlik ve performans iyileştirilmeleriyle en güncel ve güvenli sürümdür. Daha hızlı el sıkışma protokolü sayesinde çok daha verimli çalışır ve eski, güvensiz şifreleme algoritmalarını tamamen kaldırarak forward secrecy’yi zorunlu hale getirmiştir. AEAD algoritmalarının standart hale getirilmesiyle veri güvenliği daha da artırılmıştır. Ancak, eski sistemlerle uyumluluk sorunları yaratabileceği için bazı kurumsal ortamlarda güncellemeler gerektirmektedir.
SSL ve TLS arasındaki farklar nelerdir?
SSL ve TLS aynı amaca hizmet etseler de geçen bu sürede önemli değişikliklere tanık olmuştur. Bu değişikliklerin özeti tablo 1’de verilmiştir.

Bir yanıt yazın