SSL Nedir?
SSL yani Güvenli Giriş Katmanı (Secure Socket Layer) kişisel gizlilik ve güvenlik için network üzerindeki data alışverişinde sunucu ve client arasındaki iletişimin şifrelenmiş bir şekilde iletilmesini sağlayan korumadır. Güvenli giriş katmanı gizliliğinin korunması için Netscape tarafından geliştirilmiş güvenlik protokolüdür. Günümüzde bütün yaygın web sunucuları ve tarayıcılar tarafından desteklenmektedir.
SSL Nasıl Çalışır?
Güvenli giriş katmanının çalışması için sunucu (web server) tarafından bir anahtara (private key) ve tarayıcı tarafında çalışabilen bir sertifikaya (public key) ihtiyaç vardır.
Bu iki anahtar da dijital ortamda kodlanmış yazılımlardır. Biri veriyi şifrelerken diğeri açar.
SSL Sertifikası Hangi Bilgileri Barındırır?
-Sertifika sahibi veya firma unvanı
-Sertifika seri numarası
-Sertifika son kullanım tarihi
-Sertifika sahibinin açık anahtarı
-Sertifika veren kurumun elektronik imzası
SSL Sertifika Çeşitleri Nelerdir ?
- DV SSL (Domain Validation Secure Socket Layer)
- OV SSL (Organizational Validation Secure Socket Layer)
- EV SSL (Extended Validation Secure Socket Layer)
- DV SSL (Domain Validation Secure Socket Layer) Nedir?
Doğrulama düzeyi en düşük SSL sertifikası çeşididir. Sadece sunucu adını doğrulama işlemi yapmaktadır. Çok düşük fiyatlara temin edilebilir.
- OV SSL (Organizational Validation Secure Socket Layer) Nedir?
Sunucu adına bağlı olarak domain adına da sahip olan firmanın bilgilerini içerir ve bu bilgiler SSL sertifikasını üreten firma tarafından kontrol edilerek tek tek doğrulanır.
Bu bilgiler şunlardır:
Kurum adı, kurumun faaliyette olup olmadığı, başvuruyu yapan kişinin kurumda çalışıp çalışmadığı, iletişim bilgileri.
- EV SSL (Extended Validation Secure Socket Layer) Nedir?
Güvenlik düzeyi tarafından baktığımızda en yüksek olan versiyonudur. Sertifika sahibi firmanın doğrulama süreçlerinde fiziksel, hukuki ve ticari varlığıyla birlikte çok kapsamlı doğrulamalardan geçip temin edilmektedir. Bu sertifikaya sahip siteye bağlanıldığında adres çubuğunda yeşil renkle firmanın adı yazmaktadır.
SSL/TLS Protokolündeki Elektronik Sertifika Altyapısına Yapılan Saldırılar Nelerdir?
Microsoft’un Sertifika Hatası
2001 yılında yaşanan bu sorun Finlandiyalı Bilgi İşlem Uzmanı, Comodo firmasına Microsoft yetkilisi gibi mail atarak Microsoft Windows Live sertifikasına sahip oldu. Bilgi İşlem Uzmanı bu sertifika sayesinde zararlı yazılıma Microsoft sertifikası verebilir ya da güvenli bağlantılarda fark edilmeden araya girebilirdi. Ancak bunlar yerine bu açıklığı Microsoft’a bildirdi ve sertifikası iptal edildi. Bu olay büyük firmaların bile basit hatalar yapabileceğini akıllara tekrar getirdi.
OCSP Saldırısı
Moxie Marlinspike tarafından 2009 yılında sertifika durumu kontrolleri ile ilgili bir saldırı gerçekleştirildi. OCSP (Online Certificate Status Protocol) yani Çevrimiçi Sertifika Durumu Protokolü sayesinde bir sertifikanın iptal olup olmadığı kontrol edilebilmektedir.
OCSPResponse ::= SEQUENCE {
responseStatus OCSPResponseStatus ,
responseBytes OPTIONAL
OCSPResponseStatus ::= ENUMERATED {
successful (0) , — Response has valid confirmations
malformedRequest (1) , — Illegal confirmation request
internalError (2) , — Internal error in issuer
tryLater (3) , — Try again later
– -(4) is not used
sigRequired (5) , — Must sign the request
unauthorized (6) — Request unauthorized
}
OCSP cevabı alındığında Response Status değerinin sayısal karşılığı sorgulama cevabını belirlemektedir. Örneğin “0” değeri sorgulamanın başarılı olduğunu, “6” değeri de isteğin yetkisi olmadığını belirtir. Göz ardı edilen açıklık ise, cevabın “3” yani “tekrar deneyin” olması durumunda cevabın imzalanmadan gönderilmesidir. Bundan ötürü “tekrar deneyin” mesajının gerçekten de yetkili bir makamdan gelip gelmediği kontrol edilemez. Araya giren bir saldırgan istemci ya da istemcilerin OSCP isteklerinin tümünü düşürüp, istemciye cevap olarak “tekrar deneyin” mesajı döner ve servise erişimi engellemiş olur. Bu açıklığı kapatabilmek için tüm cevap türlerinin imzalanması ve bu sayede doğrulanması gerekmektedir.
Let’s Encrypt Sertifika Otoritesi ve Oltalama Saldırısı
2015 yılında “Linux Foundation” tarafından, “Lets Encrypt” isimli ücretsiz bir sertifika otoritesi kuruldu. Kuruluşun amacı her web sunucusuna ücretsiz olarak sertifika sağlamak ve böylece internet güvenliğini artırmaktı. Ancak 2017 yılında gerçekleşen bir oltalama saldırısı bu sertifika otoritesinin kötüye kullanılabileceğini ortaya çıkardı.
SSL/TLS Haberleşme Protokolüne Yönelik Saldırılar Nelerdir?
Şifre Paketi Düşürme Saldırısı
İlk bilinen 1996 yılından Wagner ve Scneier tarafından ortaya çıkarılmış ve SSL v2.0’a yönelik bir saldırıdır. Saldırganlar istemcide gönderilen “Client Hello” mesajından bulunan şifre paketlerini silip yerine “Null” (şifreleme yapmama anlamına gelir) şifrelerle değiştirip sunucuya gönderirler. Sunucunun iletişimi güvenli hâle getirmek için yapabileceği bir şey kalmaz. Ya bağlantıyı sonlandırır ya da “Null” şifrelemeyi kabul eder.
Bu olaylardan sonra SSL v3.0 ile “Null” şifre paketlerini kaldırarak sorunun giderilmesi denenmiştir. Ancak SSL v3.0’ın SSL v2.0’ı desteklemesinden dolayı açıklık devam etti. Sonrasından v3.0’da “Null” şifreleri hiçbir zaman desteklenmemesi sağlandı.
Bleichenbacher Saldırısı
RSA ile şifrelenmiş seçili metinler üzerinde yapılan bir SSL protokolü saldırısıdır. 1998 yılında Daniel Bleichenbacher tarafından ortaya çıkarılmıştır.Saldırı için gerekli ön koşullar:
Saldırının gerçekleşebilmesi için saldırganın sunucuya istediği mesajı şifrelemesi ve şifreli mesaja da ulaşabilmesi gerekmektedir. Sonrasında saldırgan tahminlerde bulunarak hedefini daraltır ve daha önce seçmiş olduğu şifreli bir mesajın açık hâline erişir. Açık hâli elde edilen şifreli paketin istemcinin sunucuya gönderdiği ve ön ana giz değerini içeren Client Key Exchange mesajı olması durumunda, saldırgan oturum anahtarını hesaplayabilir ve tüm oturum verilerine erişebilir.
Beast
TLSv1.0 ve önceki versiyonlarda ortaya çıkan, Şifre Blok Zincirleme (Cipher Block Chaining – CBC) yönteminde bulunan bir açıklık sonucu oluşmuştur. 2011 yılında Duong ve Russo tarafından ortaya çıkarılmış olan saldırı yöntemidir. Saldırının geçmişi 2001 yılına dayansa da, pratik bir atak olmadığı düşünülmüş ve TLSv1.1 versiyonunda açıklık kapatıldığı için dikkate alınmamıştır. Ancak, TLS’in yeni versiyonlarının çıkması eski versiyonların kullanılmaması anlamına gelmediği için açıklık devam etmiştir. Saldırı, el sıkışma gerçekleştikten ve simetrik anahtar ile gizli iletişim başladıktan sonra gerçekleşir. Taraflar simetrik şifreleme için AES ve şifreleme yöntemi için CBC modu seçilmiş ise, saldırıya açık hâle gelirler. SSL/TLS Haberleşme Protokolüne Yönelik Saldırılar BEAST saldırısını kritik yapan unsur, saldırıların nasıl gelişebildiğini göstermesidir. BEAST saldırısı kendisinden sonraki birçok saldırı için temel oluşturmuş ve CRIME gibi daha gelişmiş saldırılara yol açmıştır. Saldırının on yıl boyunca aktif olması ve tarayıcı geliştiricileri tarafından umursanmaması da saldırının on yıl boyunca açtığı yaraları büyütmüştür.
CRIME
CRIME (Compression Ratio Info-Leak Mass Explotation) saldırısı Juliano Rizzo ve Thai Duong tarafından gizli bilgilerin ele geçirilmesini hedefleyen saldırı çeşididir. 2012 yılında ortaya çıkan bu saldırı, 2002 yılından bu yana bilinen bir açıklığın pratikleşmiş hâlidir. Taraflar arasında ortak oturum anahtarı oluşturulduktan sonra, çerezler de bu oturum anahtarı ile şifrelenirler. CRIME saldırısı da şifrelenmiş çerez içerisindeki gizli değeri ele geçirebilir.
TIME
CRIME saldırısından kısa süre sonra Tal Be’ery tarafından TIME saldırısı ortaya çıktı. Bu saldırının başarılı olabilmesi için saldırganın ağ paketlerini dinleyebilir olması kısıtlaması vardır. TIME saldırısı da sıkıştırma temelli bir saldırı olmasına rağmen saldırının bu kısıtlamaya ihtiyacı kalmamıştır. CRIME saldırısının gelişmiş hâli olarak gösterilen TIME saldırısı, sıkıştırılmış verilerin büyüklüğünü giriş ve çıkış zaman farklılıklarından ölçerek gerçekleştirilmektedir.
Lucky 13
2013’ün Şubat ayında AlFardan ve Patersen tarafından TLSv1.0 ve 1.1 sürümlerinin yeni bir açıklığa sahip olduğu ortaya çıkarıldı. Bu açıklığa Lucky13 adı verildi. Bu saldırı, araya giren saldırganın oturum anahtarı oluşturulurken Şifre-Bloku Zincirleme (Cipher Block Chaining – CBC) kipi kullanılması hâlinde şifreli metinlerden açık metinleri ortaya çıkarabilmektedir. CBC kipi içeren bir şifre paketi ile oluşan oturumda şifre çözme işlemi yapılırken küçük zaman farklılıkları oluşur. Lucky13 saldırısında tam olarak da bu zaman farklılıkları kullanılarak gerçekleştirilmekteydi.
POODLE
POODLE saldırısı, 2014 yılında Google güvenlik ekibi tarafından yayınlanmış bir saldırıdır [76]. SSLv3’ün kesin olarak güvensiz olduğunu ortaya çıkaran bu saldırı, tarafların TLS versiyonlar ile el sıkışma yapmak istemesi durumunda dahi bu saldırıya açık olunduğu gösterildi. TLS versiyonları ile el sıkışma başarısız olursa, taraflar SSLv3 ile konuşmaya çalışabilir. Bu durum ağ kesintilerinden kaynaklı olabileceği gibi, bir saldırgan tarafından da zorlanmış olabilir
Heartbleed
Heartbleed, yaygın bir TLS uygulaması olan OpenSSL kütüphanesinde bulunan bir güvenlik açığı ile ortaya çıkmıştır. İsmi açıklığa sebep olan heartbeat eklentisinden dolayı alınmıştır. Heartbeat, bağlantı kurulan iki taraftan birisinin diğerine “Sana şu uzunlukta bir mesaj atıyorum, sen de bana gönder.” tarzı bir mesaj atabilmeyi sağlar. Cihazların birbiri ile bağlantılarını kontrol etmelerini sağlayan ve normalde zararsız görünen bu özellik, kod geliştiricilerin gözden kaçırdıkları küçük bir ayrıntı yüzünden heartbleed açıklığı ortaya çıkmıştır. Eğer taraflardan birisi diğerine, “Sana 64 Kilobayt şu veriyi gönderiyorum.” deyip, yalnızca 1 bayt gönderirse, cevap veren taraf, kalan 65534 bayt uzunluğundaki, olmayan bilgiyi vermek isterken, kendi hafızasındaki (RAM) verileri gönderir. Bu durumda, kötü niyetli bir kullanıcı, sunucunun hafızasında bulunan kritik verilere (diğer kullanıcıların anahtarları, şifreleri vs.) erişimi gerçekleşir. Bu bilginin uzunluğunun sunucu tarafından kontrol edilmemesi, heartbleed açıklığının temelidir. Bu açıklıktan faydalanmak isteyen bir istemci, normalde erişmemesi gereken bilgilere erişebilir. Heartbeat eklentisi; birbiri ile bağlantı kuran cihazların, birbirleri ile iletişimlerinin aktif olup olmadığını kontrol etmek için gönderilen periyodik sinyallerden oluşan bir protokoldür. Protokolün temel çalışma mantığında; istemci, sunucunun çalışır durumda olduğunu test edebilmek için bir istekte bulunur. Bu isteğin içinde beklediği cevabın uzunluğu da istemci tarafından verilir. Aşağıda bulunan örnekte gördüğünüz üzere 16 bit uzunluğundaki değişkeni istencinin gönderdiği bir değerdir.
struct {
HeartbeatMessageType type ;
uint16 payload – length ;
opaque payload [ HeartbeatMessage . payload_length ];
opaque padding [ padding_length ];
} HeartbeatMessage ;
FREAK
2016 yılının Ocak ayında, OpenSSL tarafından CVE-2015-0204 kodlu bir açıklık yayınlandı. Bu açıklığa göre istemci, ithal RSA anahtarı içeren şifre paketleri ile el sıkışmayı kabul etmektedir. İstemci başlangıçta bu şifre paketlerini önermemiş olsa dahi sunucunun isteği ile tercih etmektedir. Bu açıklık ortaya çıktıktan 2 ay sonra FREAK (Factoring RSA Export Keys – İthal RSA Anahtarlarını Hesaplama) adı verilen saldırı ortaya çıktı.
Logjam
Logjam saldırısı, 2015 yılında bir grup araştırmacı tarafından Diffie-Hellman anahtar anlaşma protokolüne yapılmış bir saldırıdır. Bu saldırı yöntem olarak FREAK saldırısına benzerlik göstermektedir. İki saldırıda da ortak olan durum ithal şifre paketlerinin kullanılmasıdır. Ancak Logjam, hem saldırı senaryosu hem de Diffie-Hellman’ı hedef almasından ötürü kritik bir saldırıdır.
DROWN
DROWN (Decrypting RSA using Obsolete and Weakened eNcryption – zayıf ve geçmişte kalmış şifrelemelerle RSA şifresi çözmek) saldırısı, 2016 yılı Ağustos ayında bir grup araştırmacı tarafından ortaya çıkarılan çapraz protokol saldırısıdır [6]. Çapraz protokol kavramı bu saldırının, SSLv2 protokolündeki açıklık ile TLS protokollerinin güvenliğinin etkilemesinden ötürü kullanılır. DROWN saldırısı genel hâli ile Bleichenbacher saldırısının (Bleichenbacher saldırısı için bkz. Bölüm 6.4) geliştirilmiş hâli kullanılarak ve birtakım protokol açıklıkları kullanılarak gerçekleştirilen bir saldırıdır. 2048-bit uzunluğundaki bir RSA TLS şifreli metnini çözebilmek için saldırganın, 1000 adet TLS el sıkışmasını ele geçirmesi, 40000 adet SSLv2 bağlantısı gerçeklemesi ve toplamda 2 üssü 50 çevrim dışı işlem yapması gerekir.