TLS/SSL Güvenlik Prensibine Genel Bir Bakış

Anıl Sakaryalı
Finartz
Published in
4 min readJan 27, 2021

İnternet alışverişinin yaygınlaşması ve kamu dahil birçok hizmete elektronik ortamdan ulaşılabilmesi gibi nedenlerle, elektronik ortamda paylaştığımız kişisel veriler aklımıza bir takım sorular getirebiliyor. “Acaba kimlik bilgilerimi doğru yere mi giriyorum?” ya da “Bu bilgilere gönderdiğim kurum dışında başkaları ulaşabilir mi?” aklımıza gelen sorulara örnek olarak verilebilir. Bu yazıda, belirtilen sorulara yanıt olarak geliştirilmiş TLS(Transport Layer Security)/SSL(Secure Sockets Layer) güvenlik prensibinden bahsedeceğiz.

TLS/SSL nedir ve veri iletişiminde ne sağlar

TLS/SSL ağ üzerinden yapılan bir İstemci(Client)-Sunucu(Server) veri iletişimini iki taraf için de güvenli ve şifreli hale getiren güvenlik prensipleridir. Veri iletişimi yaygın olarak bir web tarayıcısı ve internet sunucusu arasında gerçekleşse de, güvenli olmayan ağ üzerinden yapılan tüm veri iletişimlerinde TLS/SSL kullanılabilir. Bu bağlamda haberleşen taraflar iki mikroservis veya backend de olabilir.

İstemci ve sunucu arasında güvenli bir ağın bulunmadığı veri iletişimleri, Aradaki Adam Saldırısı(Man-in-the-middle attack) olarak adlandırılan saldırılara açık hale gelir. Bu saldırıda, kişi gizlice istemci ve sunucu arasına sızarak gerçekleşen veri iletişimine kulak misafiri olabilir veya iletilen verileri değiştirebilir. Bu sayede, bir internet alışverişi sırasında kullandığımız kredi kartı bilgilerimiz istenmeyen kişilerce ele geçirilebilir, ya da bir online bankacılık hizmetinde gerçekleştirdiğimiz para transferi işlemiyle oynanarak transferin farklı bir hesaba yatması sağlanabilir. TLS/SSL, istemci ve sunucu arasında güvenli bir kanal kurarak veri iletişimine aşağıdaki özellikleri sağlar:

  • Gizlilik(Privacy): Taraflar arası veri iletişimi yalnızca tarafların anlayabileceği bir şekilde şifreli olarak yapılır. Bu sayede, kulak misafiri olan 3. kişiler bu verilere erişemez
  • Kimlik doğrulama(Authentication): Tarafların kimliği dijital imzaları üzerinden doğrulanır, böylece bilinen internet servislerini taklit ederek kullanıcıların kişisel verilerine ulaşabilecek sahte kişilerin önüne geçilir ve iletişiminin gerçekten bahsedilen kişiler arasında yapıldığından emin olur.
  • Güvenilirlik(Reliability): İletilen mesajın alıcıya ulaşmadan önce değiştirilmediğine dair güvenilirlik sağlar.

Aslında SSL ve TLS bu işlevi gören farklı teknolojilerdir ve mevcut durumda TLS eski teknoloji olan SSL’in yerini almıştır, fakat SSL teriminin kullanılması bir alışkanlık olarak halen devam etmektedir. Bu anlamda TLS ve SSL isimleri karşımıza ayrı ayrı çıkabileceği gibi, hiç kimseyi kırmamak adına TLS/SSL olarak beraber de çıkabilir. Biz de kimseyi kırmadık ve teknolojiden TLS/SSL olarak bahsettik.

TLS/SSL ile güvenli veri iletişimi süreci

TLS/SSL veri iletişimi öncesinde bu veri iletişimi kanalının kurulması için taraflar arasında bir ön hazırlık yapılması gerekmektedir. Bu hazırlık aşamasına TLS/SSL Handshake adını vermekteyiz. Bu hazırlık sürecini ve sonrasındaki haberleşme sürecini aşağıdaki maddeler ile özetleyebiliriz

1-Client Hello

Güvenli veri iletişiminin kurulması için öncelikle, İstemci ve Sunucu arasında kullanılacak, şifreleme algoritmalarına dair bir anlaşmaya varılması gerekmektedir. Kimlik doğrulama, anahtar değişimi, veri şifreleme, ve mesaj doğrulama için farklı şifreleme algoritmaları kullanılır. Kullanılan şifreleme algoritmalarının bütününe Cipher Suit adı verilmektedir. Client Hello mesajında istemci, desteklediği Cipher Suit bilgisini sunucu ile paylaşır.

2-Server Hello

Sunucu, gelen istemci Cipher Suit’i içerisinde desteklediği en güncel algoritmaları seçer. Doğrulanmış Cipher Suit bilgisinin yanında istemcinin sunucu kimliğini doğrulayacağı bilgileri içeren ve oturum boyunca kullanılacak ortak simetrik anahtarının iletiminde kullanılacak asimetrik şifreleme anahtarını barındıran sertifikayı da istemci ile paylaşır

Asimetrik / Simetrik Şifreleme

Kriptografi’de bir mesajın şifrelenmesi ve deşifre edilmesinin farklı anahtarlar ile mi yoksa aynı anahtar ile mi yapılacağı konusundaki ayrım şifrelemenin asimetrik ya da simetrik olduğuna işaret eder. Asimetrik şifrelemede şifreleme ve deşifreleme için biri Açık(Public Key) diğeri Gizli(Private Key) olmak üzere bir anahtar çifti kullanılır. Simetrik şifreleme ise iki işlem için de Ortak Anahtar kullanır.

TLS/SSL’de kullanılan güvenli bağlantıdan sonra mesajlar simetrik şifreleme ile iletilir. Fakat taraflar arasında bu simetrik anahtarın nasıl paylaşılacağı sorun teşkil eder. Neticede bağlantı güvenli hale gelmeden bu simetrik anahtar ele geçirilirse, geri kalan veri iletişiminin de pek güvenliği kalmamaktadır. Bu anahtarın iletiminde asimetrik şifreleme devreye girer, oluşturulan simetrik anahtar sunucu tarafından sağlanan açık anahtar ile şifrelenir, ve bu şifreyi ancak sunucuda bulunan gizli anahtar açabilir.

3,4,5-Tek taraflı ya da çift taraflı sertifika doğrulaması

İstemci, sunucunun ilettiği sertifika üzerinden kimlik doğrulaması gerçekleştirir. Bu kimlik doğrulamasının yapılabilmesi için istemci sertifikasının bir Sertifika Otoritesi tarafından onaylanması gerekmektedir.

Sadece istemci kimliğinin doğrulandığı senaryoya Tek Taraflı(One-Way) Doğrulama adını vermekteyiz. Bazı durumlarda sunucu da istemciden kimlik doğrulaması yapmak üzere sertifikasını isteyebilir. Bu durumda, istemci sunucunun kimliğini doğruladıktan sonra kendi kimlik bilgilerini içeren sertifikasını sunucuya iletir. Bu doğrulama da yine bir Sertifika Otoritesi üzerinden gerçekleşir. Karşılıklı gerçekleşen bu senaryoya da İki Taraflı(Two-Way) Doğrulama ismi verilir.

Karşımıza çıkabilecek herhangi Tek Taraflı TLS/SSL ya da İki Taraflı TLS/SSL terimi, bahsi geçen doğrulamanın hangi taraflarca yapılacağına işaret etmektedir

Sertifika Otoritesi(CA)

Sertifika otoritesi, sertifika sahibi ve sertifikanın değişildiği kimlik doğrulamasını yapacak alıcı için güvenilir bir üçüncü şahıs görevi yapar. İnternet tarayıcılarının HTTPS protokolü üzerinden domain ismi kontrolü yapmasına olanak sağlayan DigiCert, GoDaddy, veya Let’s Encrypt gibi sağlayıcılar sertifika otoritesine örnek olarak gösterilebilir.

6-Şifreleme anahtarı değişimi

İlk iki aşamada iletilen Client Hello ve Server Hello mesajları içerisinde İstemci ve Sunucu rastgele byte dizileri oluştururlar ve şifreli mesajlaşmada kullanılacak Ortak Anahtarı yaratmak üzere birbirleriyle paylaşırlar. Bu ortak anahtarın yaratılması kullanılan algoritmaya göre değişecek şekilde karşılıklı mesajlaşmayı gerektirebilir. Yaratılan ortak anahtar en sonunda Server Hello mesajı içerisinde gelen Açık Anahtar ile şifrelenir ve istemciye iletilir. Bu adım ile TLS/SSL Handshake süreci son bulur, ve şifreli haberleşme kanalı tarafları arasında kurulur.

7,8-Şifreli Haberleşme

TLS/SSL Handshake işleminin başarılı sonuçlandığını doğrulayan mesajlar iki taraflı iletildikten sonra, oluşturulan Ortak Anahtar ile veriler simetrik olarak şifrelenir/deşifrelenir ve karşılıklı paylaşılır.

Bu yazıda TLS/SSL güvenlik prensibinin genel işleyişine dair bilgi vermeye çalıştım. Takip eden yazılarda kimlik doğrulama için kullanılan sertifika yapısına, bu sertifikaların tutulduğu keystore/truststore dosyalarına, ve TLS/SSL güvenlik prensibinin uygulamalarda nasıl kullanılabileceğine dair daha pratik bilgilere değinmeye çalışacağım.

--

--