Merhabalar,
Yaşadığımız çağda, bilgi güvenliğinin hayatımızın her alanında önemini hissettirmektedir. Bu noktada en önemli ihtiyaçlardan biri, istenmeyen tarafların bu bilgilere yetkisiz müdahalesinin önüne geçilmelidir.
Bunun için en önemli araçlardan Kriptografi’dir. Kriptografinin de gerek kritik sistemler gerekse sıradan kullanıcıların hayatlarına dokunan en önemli uygulamalarından biri SSL/TLS uygulamasıdır.
Bu yazıda, soru/cevap tekniği kullanılarak, SSL/TLS uygulamasının temelleri ve güvenliğinin sağlanması için dikkat edilmesi gereken noktalar netleştirilmeye çalışılacaktır.
Konunun daha iyi anlaşılması için aşağıdaki yazıları okumanız faydalı olacaktır.
BİLGİ GÜVENLİĞİ DERSLERİ: KRİPTOLOJİ İÇİN TEMEL SORULAR ve CEVAPLAR
BİLGİ GÜVENLİĞİ DERSLERİ: KRİPTOGRAFİK ALGORİTMALARI ANLAMAK
Kriptografik protokol nedir?
Protokol genel olarak; bir haberleşme sisteminin iki veya daha fazla varlığının başarılı bir şekilde bilgi iletilmesini sağlayan kurallar dizisidir.
Kriptografik protokol ise, bilgi güvenliği ile ilgili bir işlemi yerine getirirken başta algoritmalar olmak üzere kriptografik fonksiyonların kullanımı sırasını ve şeklini düzenleyen kurallar dizisidir.
Protokol güvenliği neden önemlidir?
Kriptografik işlemler ve bunların güvenliği dendiğinde akla çoğunlukla algoritmalar gelir. Oysa bir kriptografik sistemin güvenliğinin sağlanması için çoğu zaman algoritmaların tek başlarına ve bir kereye mahsus olarak kullanılması yeterli olmaz. SSL/TLS gibi anahtar oluşturma süreçleri buna güzel bir örnektir.
Bu sürçelerde kullanılan algoritma ne kadar güvenli olursa olsun, eğer protokolde bir güvenlik zafiyeti ortaya çıkarsa sistem güvenliği tamamen devre dışı kalabilir. Bu nedenle protokol güvenliği kritiktir.
SSL/TLS nedir?
SSL (Secure Socket Layer), haberleşme sistemleri üzerindeki bilgi transferi sırasında kriptografik yöntemlerle bilginin bütünlüğü ve gizliliğin korunmasına imkan veren kriptografik bir protokoldür.
Asimetrik kriptografinin kurucu teorisyenlerinden Tahir El-Gamal’ında içinde bulunduğu bir ekip ile Netscape firması tarafından ilk olarak geliştirilmiştir.
TLS (Transport Layer Security) ise, IEFT (Internet Engineering Task Force) tarafından SSL v3.0 temel alınarak oluşturulmuş haberleşme standardıdır.
SSL/TLS için tarihsel gelişim nasıldır?
Protokolün ilk sürümü (SSL v1.0) hiç yayınlanmamıştır. SSL v2.0 ise 1995 yılında yayınlanmıştır.
TLS 1.0 1999 yılında yayınlanmış olup güncel TLS versiyonu 2018 yılından yayınlanan TLS v1.3’dür.
SSL/TLS protokolü nasıl çalışır?
SSL/TLS protokolü adımları en en temelde aşağıdaki gibi verilmiştir. Bu noktada temel olarak uç noktalar (client) bağlandıkları sunucunun güvenilirliğini teyit ederler. Örnek vermek gerekirse, bir banka kullanıcısı internet üzerinden işlem yapmak istediğinde SSL/TLS sayesinde bağlandığı noktanın gerçekten güvenilir banka olduğundan emin olur. Akabinde buradaki sunucu ile güvenli bir şekilde haberleşme başlatır.
İşlem adımları şu sıra ile gerçekleşir. Konunun daha iyi anlaşılması için asimetrik kripto ve public/private anahtar konusunda temel bilgi sahibi olunması gerekir. Bunun için bu bağlantıda verilen yazının okunması faydalı olacaktır.
Uç nokta (client) sunucuya bağlanma isteği gönderir. Gerçek hayatta bir banka müşterisi bilgisayarında browser üzerinden bankanın adresini yazıp “enter” tuşuna basar.
Sunucu gelen talebe karşılık “sertifika=public anahtar” bilgi paketini gönderir.
Client gelen “sertifika=public anahtar” bilgisini doğrular. Yani kullanıcı bilgisayarındaki browser üzerine gömülü kök sertifika makamının anahtarını kullanarak “sertifika=public anahtar” paketinin güvenilirliğini doğrular. Eğer doğrualam olmazsa sertifika hatası verir.
Client bi rastgele sayı (simetrik master key) üreterek bunu sunucuya ait “sertifika=public anahtar” ile şifreleyip sunucuya gönderir.
Client tarafı “sertifika=public anahtar” verisini sunucuya gönderir. Sunucu bu değeri doğrulayarak client tarafının yetkili olduğundan emin olur.
Sunucu client tarafının “sertifika=public anahtar” ile şifreli gönderdiği “simetrik master key” değerini çözerek elde eder.
Bu sayede hem client hem sunucu tarafı “simetrik master key” değerine sahip olur.
Ortak olarak paylaşılmış “simetrik master key” kullanılarak iki trafik arasında şifreli veri iletimi güvenliği sağlanmış olur.
Not:
Eğer client tarafının da doğrulanması gerekirse sunucu client tarafına ait “sertifika=public anahtar” verisini doğrular. Ancak bu işlem çoğunlukla gerekli görülmez ve uygulanmaz. 5. adım bu senaryo içindir
Sertifika nedir ve SSL/ TLS güvenliği ile bağlantısı nasıldır?
Asimetrik sistemlerde, “public key” ve “private key” denilen bir anahtar çifti kullanılır. “Public key” ile şifrelenen veriler ancak “private key” ile açılır. Bu nedenle “Public key” haberleşme trafiğinin başında karşı tarafa gönderilir. Bu sayede veri şifrelemede kullanılacak anahtar tohumu güvenle “private key” sahibine iletilir.
Bu noktada akla şöyle bir soru gelebilir. “Ya kötü niyetli bir saldırgan, veri şifrelemede kullanılacak public key olarak kendi anahtarını gönderirse ne olur ?”. Bu durumda veri şifreleme anahtarı, saldırganın “public keyi” ile şifrelenmiş olacağından onun eline geçecektir.
Bunun önüne geçilmesi için “public key” verisi uluslararası geçerli otoritelerce imzalanır. (Otoriteye ait “private key” ile işleme tutulur). Bu sayede “public key” alıcısı, aldığı anahtarın doğruluğundan emin olur. İşte “public key” ve kişiye/kuruma özel bilgileri içeren imzalanmış bu veriye “sertifika” denir?
SSL/TLS protokolünde sunucu tarafından public anahtarın gönderildiği nokta “sertifika” kavramının devreye girdiği noktadır. Bu notada araya saldırganların girmemesi için “public key” imzalı sertifika içinde gönderilir. Client tarafındaki browser üzerinde bu doğrulanır. Ona göre protokol devam eder.
Sonuç olarak “sertifika” yapısı güvenli bir SSL/TLS işlemi için kritik önem ifa eder.
SSL/TLS altyapısının güvenli olduğuna neye göre karar verilir.
SSL/TLS yapılarının güvenliğine dikkat ederken çoğunlukla sadece protkol sürümü dikate alınır. Oysa protokol versiyonu kadar önemli olan bir nokta daha vardır. Buda protokol tarafından kullanılan kripto kütüphanesi (cipher suite)’dir.
Cipher suite ile neler seçilir? Nasıl bir yapısı vardır?
Cipher suite ile SSL/TLS protokolü esnasında kullanılacak algoritmalar seçilir. Bu noktada tek bir algoritma yeterli olmaz. Zira protokolde; anahtar paylaşımı, imzalama, şifreleme ve bütünlük tarafı için ayrı ayrı algoritmalar görev alır.
Aşağıda örnek bir cipher suite seçimi ve bunun anlamlandırılması gösterilmiştir.
Kaynak: https://docs.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl–schannel-ssp-
Cipher suite nasıl ayarlanır?
SSL/TLS protokolünün hangi cipher suite ile beraber kullanılacağı implementasyonun yapıldığı sunucu/client sistemleri üzerinden konfgüre edilir. Aşağıda Microsoft IIS için örnek bağlantı verilmiştir.
Kaynak: https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings
Güvenilir SSL/TLS versiyonları hangileridir?
SSL/TLS sürümlerinin güvenliğine ilişkin literatürdeki son durum aşağıdadır.
- SSL v2.0, SSL v3.0 geçerli tüm otoritelerce her durumda güvensiz kabul edilmektedir.
- PCI DSS değerlendirmesine göre:
– TLS 1.0 kullanımı derhal bırakılmalıdır.
– TLS 1.1 şu için güvenli konfigürasyonla kullanılabilmele beraber ivedi olarak TLS 1.2’ye ve daha günceline geçiş yapılmalıdır. - NIST SP 800-52’ye göre:
– Kamu kurumları sadece TLS 1.2 ve 1.3 kullanabilir.
– Ticari alanlarlarda TLS 1.0 ve TLS 1.1 kesinlikle tavsiye edilmemekle beraber kullanılabilir.
– TLS 1.0, TLS 1.1 ve TLS 1.2 kullanımında güvenli konfigürasyon önemli olup kontrol edilmelidir.
SSL/TLS versiyonlarının güvenliğine karar vermek için referans kaynaklar nelerdir?
Hem SSL/TLS sürümü hem de cipher suite seçimi açısından özellikle NIST tarafından yayınlanan kaynaklar referans olarak kullanılabilir.
Buna ek olarak literatürde farklı kaynaklardan da bilgilendirme yapılmaktadır.
Mevcut sistemlerde güvenlik hangi araçlarla kontrol edilebilir?
Mevcut sistemlerde kullanılan SSL/TLS konfigürasyonlarının güvenliğini kontrol etmek için birden fazla yöntem olup bunlarla kolayca kontrol yapmak mümkündür.
Aşağıda bunlar için bazı örnekler verilmiştir.
- SSLSCAN
– https://www.oreilly.com/library/view/web-penetration-testing/9781788623377/285990a3-9992-40b0-ac36-69adc6fb47ce.xhtml
– Not: Kali Linux üzerinden kolaylıkla kullanılabilir. - Qualys Free Scan
– https://www.ssllabs.com/ssltest/index.html - Nessus
– https://www.tenable.com/products/nessus