Bu yazı boyunca bir web sunucusu ve kullanıcı (istemci) arasındaki veri trafiğinin güvenliğine ve SSL / TLS protokollerine değineceğim.
Bir internet kullanıcısı, tarayıcısını kullanarak bir web sitesine erişmek istediği zaman kullanıcının bilgisayarından ilgili web sitesinin sunucusuna bir veri gönderilerek istek yapılır. Web sunucusu bu veriyi (isteği) işler ve cevabını aynı protokolü kullanarak kullanıcının bilgisayarına iletir. Kullanıcının tarayıcısı bu veriyi görsel hale getirerek kullanıcıya sunar, böylece internet üzerinde gezinmiş oluruz.

Yukarıda çok kabaca bahsettiğimiz veri transferi şekli, internetin icadı ile birlikte kullanılmaya başlamış ve günümüzde hâlen kullanılmaktadır. İnternet üzerindeki gezintimizi kabaca bu şekilde yapmaktayız.
Temel şemamız değişmemiş olsa bile internetin icadından günümüze kadar veri transferi protokolleri, yöntemleri, protokol içerisinde kullanılan yazılımlar ve network cihazları oldukça gelişti. Aynı zamanda internet üzerinden gönderilen veri boyutu ve bu verinin önemi muazzam derecede artış gösterdi. Günümüzde artık tüm bilgilerimizi ve sırlarımızı internet üzerinde aktarır hâle geldik. Buna örnek olarak e-devlet platformunu ve en yakınlarımızla olan iletişimimizi bile WhatsApp gibi çevrimiçi mesajlaşma uygulamalarını kullanmamızı gösterebiliriz. Bu değişim doğrudan internet üzerindeki veri transferinin hedef haline gelmesine neden oldu.
Günümüzde sadece birkaç hafta içerisinde öğrenebileceğiniz bilgilerle, bağlı olduğunuz network üzerinde aktarılan veri paketlerini dinleyebilmeniz ve veriye erişebilmeniz mümkün durumda. Bunu kolayca yapmak için internet üzerinde erişebileceğiniz açık kaynak kodlu hazır yazılımlar bile mevcut. Durum böyle olunca tabii ki veri güvenliği kavramı çok daha büyük bir anlam ifade etmeye başladı. En özel bilgilerimizi aktarırken bilgilerimizin çalınmayacağını bilmek zorundaydık. Bütün bu gelişmeler doğrultusunda günümüzde veri aktarabilmek amacıyla kullandığımız veri transfer protokolleri geliştiler ve daha güvenli hale geldiler. Ancak güvende olmamızı sağlayan en büyük faktör ise bu veriyi şifreleyerek aktarmaya başlamamız oldu, bu yazımızın ana konusu da kullanıcı ve bir web sunucusu arasındaki veri trafiğinin şifrelenmesi.

Web sunucusu ve kullanıcı arasındaki veri trafiğinin şifrelenmesi için araya bir güvenli katman ekliyoruz. Buna ilk olarak Secure Socket Layer (SSL) adını verdiğimiz bir katmanı kullanarak verinin dolaşımda olduğu sürece şifrelenmiş bir şekilde kalmasını sağladık.
Bağlı olduğumuz network’ün güvenli olmadığını ve saldırılara açık olduğunu varsayalım. Saldırgan network (ağ), üzerinden gönderilen veri paketlerine ulaşabilecektir ancak veri bu güvenli katman ile şifrelenmiş olduğu için bu veri paketini okuyamayacak ve verimizi ele geçiremeyecektir.

SSL Nasıl Çalışır?
SSL adını verdiğimiz güvenlik katmanı “Public Key” ve “Private Key” adını verdiğimiz iki anahtar ile çalışır. Bu anahtarlar çözülmesi çok zor ve güvenli bir şifreleme yöntemi kullanmaktadır. Private Key, web sunucusunda kalırken Public Key, veri transferi yapılırken kullanıcının bilgisayarına gönderilir. Veri trafiği web sunucusundan veya kullanıcının bilgisayarından çıkarken bu key’ler tarafından şifrelenir ve karşı tarafa ulaştığında yine aynı key’ler tarafından şifresi çözülür. Böylece verinin iletim süresince şifrelenmesi sağlanırken aynı zamanda hedefine ulaştığında şifresinin çözülmesi sağlanır. Bu key’lere sahip olmayan bir saldırgan, verinize erişemeyecektir.
SSL nesiller boyunca gelişimini sürdürdükten sonra yerini Transport Layer Security (TLS) teknolojisine bıraktı.
TLS’nin Gelişimi Ve SSL İle Kıyaslama
SSL v3 sürümü yayımlandıktan bir süre sonra, yine aynı geliştiriciler (Netscape) tarafından TLS duyuruldu ve SSL yerini TLS’e bıraktı. TLS’nin daha güvenli ve hızlı iken aynı zamanda SSL’den oldukça farklı bir şekilde çalışıyor, kısaca bakalım.
TLS iki farklı katmandan oluşuyor:
- TLS Record Protocol (TLS Kayıt Protokolü)
- TLS Handshake Protokol (TLS El Sıkışma Protokolü)
Record protokolü bağlantının güvenliğini sağlarken, Handshake protokolü web sunucusu ve kullanıcının kimlik doğrulama işlemlerini gerçekleştirir.
SSL ve TLS arasındaki bazı farklar:
- SSL mesajı şifreleyip doğrudan veri aktarımını başlatır, TLS ise aktarım öncesinde hedef istemci / sunucu ile doğrulama mesajı göndererek iletişime geçer. Doğrulama mesajı ile “handshake” gerçekleşirse bağlantı kurulur ve veri aktarımı başlar, aksi takdirde bağlantı kurulmaz.
- Eğer hedefte bir güvenli katman yoksa TLS tarafından “Güvenli Sertifika (Katman) Yok” mesajı geçilebilir, SSL’de ise ayrıca bir bilgilendirme sağlanmaz.
- TLS pek çok durumda MAC (H-MAC) şifreleme kullanırken SSL; MD5, ve SHA türü şifrelemeler kullanır.
- TLS’de şifreleme, şifreleme çözümü daha hızlı gerçekleşir.
Bublogta üzerinde TLS şifrelemesi kullanılmakla birlikte TLS v1.1’den daha alt sürümü destekleyen nispeten ilkel istemcilerin istekleri güvenlik duvarımız tarafından engellenmektedir. Ayrıca Katı Taşıma Politikası (HSTS) uygulanmakta, yani şifrelenmeyen tüm bağlantı istekleri Bublogta altyapısına ulaşamadan güvenlik duvarımız tarafından engellenmektedir. Böylece güvenli olmayan hiçbir bağlantıya izin verilmiyor olup kullanıcılarımızın güvenliğinin en üst düzeyde sağlanıyor olması garanti altına alınmaktadır.