TLS Handshake Nedir?

“’SSL/TLS Handshake’ kavramı, HTTPS bağlantılarını kuran bir işlemin teknik adıdır” şeklinde kısa ve öz bir tanım yazabiliriz. Fakat SSL/TLS Handshake kavramını daha iyi anlamak adına işin arka yüzüne de bakmamız gerekir. SSL/TLS protokolünde yer edinen birçok zor iş, handshake’de gerçekleşir. Handshake işlemi, SSL protokolünün ilk olarak 1996 yılında üretilmesinden sonra günümüze kadar geliştirilerek ve her yeni yineleme işleminin daha da az ek yük ile birlikte daha hızlı bir biçimde yapılmasını sağlamış bir süreçtir. 2018 yılının Mart ayında, IETF tam anlamıyla elden geçirilmiş bir handshake ile birlikte TLS 1.3 yayınlamıştır ve biz handshake kullanıcılarının bu sayede işlemlerimizi daha hızlı bir biçimde gerçekleştirebilmemize olanak sağlamıştır. 

TLS nedir ve çalışma prensipleri nelerdir detaylı olarak öğrenmek için buraya tıklayabilirsiniz.

TLS Handshake Özellikleri Nelerdir?

Eğer SSL/TLS handshake işleminin özelliklerini anlamak istiyorsak, kavrama dair tanımı tam anlamıyla oturtmamız gerekiyor. Bir HTTPS bağlantısı düşünelim. Bu HTTPS bağlantısı iki taraf içermektedir. Söz konusu iki taraf, sunucu ve istemcidir (bağlantı başlatan kullanıcı, genelde bu sizin web tarayıcınız olur). Bu iki taraf da birbiriyle el sıkışır, yani handshake yaparlar. Yapılan bu handshake’in amacı ise hem istemci hem de sunucu arasındaki güvenli bağlantıyı oluşturmaktır ve bu amaç doğrultusunda gereken tüm kripto grafik işlemleri yerine getirmektedir. SSL/TLS üç ana etkeni yerine getirmektedir:

  • Simetrik oturum anahtarlarını oluşturma veya değiştirme
  • Parametrelerin ve cipher suites değişimi
  • Taraflardan birinin (istemci ya da sunucu) ya da her ikisinin de kimlik doğrulaması.

Eğer bu üç etkenin ne olduğunu ve ne işe yaradığını anlarsak SSL/TLS handshake işleminin önemini, yani özelliklerini de kavramış oluruz.En yaygın istemciler olarak web tarayıcılarını ele alabiliriz. Web tarayıcılarına ve web tarayıcısı uygulamalarına göre de SSL/TLS handshake işlemlerinin özellikleri sürekli farklılık gösterebilir. Aynı şekilde hepimizin de bir kere bile olsa duymuş olduğu popüler işletim sistemleri de bu konuda farklı farklı özellik desteklerine sahiptir. Özellikle tarayıcılar, uygulamalar ve işletim sistemlerine ekleyecek olduğumuz farklı ve özel konfigürasyonlar ile birlikte bu özellikleri daha karmaşık hale getirebiliriz. Kısacası SSL/TLS anlaşmalarının ilk adımları bu anlaşmaları isteyen istemcilerin ve sunucuların kendi yeteneklerini paylaşmalarını gerektirir. Böylelikle de birbirlerini karşılıklı olarak desteklemiş oldukları kripto grafik özellikleri keşfedebilirler.

Gönderilen ilk mesaj “ClientHello” olarak isimlendirilir ve gönderilen bu mesaj, her iki sunucunun da birbiriyle iletişim kurabilmesi adına kullanacak oldukları cipher süit konusunda karar verebilmesi için yetenekleri listeler. “ClientHello” mesajına cevaben sunucu “ServerHello” şeklinde bir mesajla cevap verir. Bu mesaj sonrası sunucu, istemciye sağlanmış olan listeden bağlantı parametrelerinin hangilerini seçtiğini gösterir ve bu parametreleri “random server” adı verilen kendisinin rastgele seçmiş olduğu asal numarasına çevirir. Aksi halde istemci ile sunucu arasında herhangi bir ortak yetenek paylaşma durumu gerçekleşme bağlantı başarısız olur. Bir istemci ile birlikte sunucu, kullanacak oldukları şifreleme biçimleri üzerine anlaşma sağladıktan sonra yapmış oldukları bu anlaşma cipher suites olarak adlandırılır ve istemciye SSL sertifikası sunucu tarafından gönderilir.

“Sertifika” mesajı ile birlikte sunucu tarafından istemciye sunucunun istemciye SSL sertifika zinciri yollanır. Bağlantı ile birlikte kimlik doğrulamasının sağlanması için de istemciye yardımcı olmak amacıyla SSL sertifikasına bir CA tarafından imza atılır. Alıcı ise sertifikayı doğrulamak amacıyla birçok kontörlü göz ucuyla gerçekleştirir. İstemci bunun yanında sertifikanın private keye sahip olduğundan emin olmayı amaçlar ve emin de olur. Bu ise anahtar üretme esnasında yapılır.

“Server Hello Done” mesajı gönderilir ve istemci bu şekilde tüm mesajların gönderildiğini anlar. Client ise daha sonrasında sesion keye olan katkısını gerçekleştirir. Bu işlem ise ilk atılmış olan “hello” mesajı ile karara varılmış olan anahtar değişim yöntemlerine göre ayrıntılara ayrılabilir. 

“Change Cipher Spec” mesajı ile birlikte sunucu kendi private keyi ile pre-master keyini elde etmiş olacaktır. Bu aşamaya kadar geçilen tüm süreçlerde asimetrik şifreleme kullanılmıştı ve böylelikle de pre-master key güvenle karşı taraf ile paylaşılmış oldu.

İki taraf da artık pre-master keye sahiptir. Bu yüzden her iki taraf da simetrik anahtar kullanabilirler. Bundan dolayı de simetrik anahtar olarak kullanabilecekleri aynı oturum anahtarlarını oluştururlar. Oluşum sonrasında da anlaşma ve işlemlerin tamamlandığını dile getirmek amacı ile “finished” mesajı gönderilir ve bu işlem de dile getirilir. Bu mesaj ilk korunan veridir ve bu mesaj da şifrelenmiştir. Aynı zamanda mesaj, anlaşmanın incelenmediğinden her iki tarafın da emin olabilmesi için farklı verileri de içerir. Bunun sonrasında sunucu da aynı şekilde “finished” mesajını gönderir ve handshake’in bütünlüğünü koruması ve bu işlemi doğrulaması amacıyla aynı kontrol işlemlerini gerçekleştirir. Handshake tamamlanmıştır ve bundan sonraki tüm veriler de handshake ile güvenli bir biçimde şifrelenerek mesajlarını ileteceklerdir.

Gördüğümüz üzere handshake kavramının en büyük özelliklerinden biri verilerin güvenliğini sağlamak ve bu veri güvenliğini sağlarken de bunu en kolay ve hızlı yoldan yapmaktır. Bu şekilde sizlere handshake’in tüm özelliklerini ve nasıl yapıldıklarını paylaşmış olduk.

HTTPS, SSL ve TLS Arasındaki Farklar Nelerdir?

HTTPS, SSL ve TLS arasındaki farkları daha iyi anlayabilmek için biraz TLS, HTTPS ve SSL’in ne olduğundan ve çalışma prensiplerinden bahsedelim. Çünkü aralarındaki farkları en iyi biçimde TLS, HTTPS ve SSL’in ne olduğunu bilerek anlayabiliriz. 

TLS Nedir?

TSL yani Transport Layer Security (Taşıma Katmanı Güvenliği), kendisinden bir önceki SSL spesifikasyonları (1994, 1995, 1996) baz alınarak SSL’in de kurucusu ve kullanıma sunan firması yani Netscape tarafından geliştirilmiştir. İnternet Mühendisliği Görev Gücü (IEFT)’nün standartlar yolu protokolüdür. Bu bakış açısından yola çıkarsak eğer, bir bakıma SSL’in, TLS’in öncüsü diyebiliriz. Çoğu zaman SSL ile TLS’i aynı başlık içinde SSL/TLS şeklinde görmemizi de mümkün kılar.

SSL’in yayınlanmış olan son protokollerinden biri olan 3.0 versiyonu sonrasında SSL’den ziyade TLS adı ön plana çıkmaya başlamış ve TLS 1.0 ile birlikte yola devam edilmiştir. TLS 1.0’ın ise SSL 3.1’e denk geldiğini rahatlıkla söyleyebiliriz. Öte yandan da TLS’in SSL’e göre daha gelişmiş ve güvenli bir yapısı olduğundan (eklenen yeni özellikleri de işin içine rahatlıkla katabiliriz), SSL ifadesinden ziyade SSL ifadesi tercih edilmeye ve kullanılmaya başlanmıştır. Bunun sonrasında önümüze sürülen son güncellemeler ile birlikte TLS 1.3 kullanıcıların kullanımına sunulmuştur.

TLS iki katmandan oluşur:

1. TLS Handshake Protocol (TLS El Sıkışma Protokolü)

2. TLS Record Protocol (TLS Kayıt Protokolü)

SSL Nedir?

SSL yani Güvenli Soket Katmanı (Secure Sockets Layer), sunucu ve istemci arasında dönüşümlü yaşanan veri alışverişlerinin şifreli ve güvenli bir biçimde gerçekleştirilmesi konusunda çok büyük rol sahibidir, yani SSL bir güvenlik katmanıdır. SSL bu durumu gerçekleştirirken ön tanımlı bir şekilde 443. Portu kullanır. Var sayalım ki bir internet sitesi ya da internet uygulamasının geçerli bir SSL sertifikası var. Bu durumda söz konusu internet sitesi ya da internet uygulamasındaki veri iletişimi HTTPS (Hypertext Transfer Protocol Secure) yani Hiper-Metin Transfer Protokol Güvenliği ile şifreli bir biçimde gerçekleştirilmiş olur. HTTP (Hypertext Transfer Protocol/ Hiper-Metin Transfer Protokol) ya da HTTPS’nin iletim katmanını şifreli bir biçime sokması ve bunun sayesinde de gizlilik sağlaması olarak söylenebilir. Kısacası istemcinin sunucu kimliğini doğrulaması üzerine, taraflar arasında gerçekleşen veri iletimini güvenli bir biçimde gerçekleştirmesine olanak sağlar.  

HTTPS nedir?

HTTPS, herhangi bir internet tarayıcısı ile herhangi bir internet sitesi arasında veri alışverişi yapabilmek adına kullanılan birincil bir protokol olan http’nin güvenli bir halidir. HTTPS, şifrelidir ve amacı veri aktarımı sırasındaki güvenliği sağlamaktır. Üç sebepten dolayı HTTPS’nin kullanılması gerekir: gizlilik, bütünlük ve kimlik doğrulama.

  • Gizlilik: Herhangi bir sunucu ile birlikte tarayıcı aracılığıyla iletişim kurmaya çalıştığımız zaman bu iletişim bir başkaları tarafından dinlenebilir durumdadır. Fakat HTTPS kullanımı esnasında iletişimin dinlenilmesine olanak kalmaz. Verileriniz şifrelenir, iletişiminizi dinleyenler tarafından verileriniz çalınmaz yani gizlilik ilkesi başarıyla sağlanmış olur. Bundan dolayı HTTPS bağlantısına dikkat ediniz ve HTTPS bağlantısı kullanmayan sitelerden uzak durunuz.
  • Bütünlük: Şifrelenmiş bir mesaj gönderdiğimizi varsayalım. HTTPS kullanmadığınız taktirde göndermiş olduğunuz mesaj tanımadığınız insanlar tarafından mesajınız iletilmeden önce değiştirilebilir ya da ele geçirilebilir. Fakat değiştirilmiş veriler sizlere sıradan verilermiş gibi gelip gitmeye devam eder. HTTPS kullanımı esnasında verileriniz şifreli ve korunaklı olacağından dolayı verileriniz anlaşılamaz ve değiştirilemez.
  • Kimlik Doğrulama: Bunun amacı mesajı gönderdiğimiz ve aldığımız kişinin doğruluğundan emin olmamızı sağlamaktır.

Bu üç ana sebepten dolayı HTTPS çok önemlidir ve HTTPS kullanmayan sitelerden kaçınılmalıdır.

HTTPS nedir ve nasıl çalışır öğrenmek istiyor musunuz? Detaylı rehbere ulaşmak için buraya tıklamanız yeterli.

HTTPS, SSL ve TLS Arasındaki Farklar

HTTPS, SSL ve TLS’İn arasındaki farkları çalışma prensiplerinden ve tanımlarından bir nebze çıkarmış da olsak sizlere daha da detaylı bir biçimde bahsetmek isteriz. HTTPS, TLS ve SSL arasındaki farkları şu şekilde sıralayabiliriz:

  • Güvenlik konusunda hem TLS hem de SSL birbirlerine oldukça eşit imkanlarda güvenlik sunmaktadır. Fakat aralarında küçük de olsa bu konuda farklılıklar görmemiz mümkündür. TLS sunuculara güvenli olmanın aksine, güvenli olmayan bir açılış mesajı gönderir ve göndermiş olduğu mesaj üzerinden eğer sunucu ve istemci arasında herhangi bir handshake işlemi gerçekleşmemiş olursa herhangi bir bağlantı kurulması söz konusu değildir. Aksine eğer handshake işlemi gerçekleşmiş ise güvenli bir bağlantı kurulmasına olanak sağlar ve veri iletişimi sağlanır. SSL ise TLS’in aksine direkt olarak sürece güvenlik ile adım atıp aynı şekilde de güvenli veri iletişimine geçer.
  • Eğer istemcinin sahip olduğu SSL sertifikası yok ise SSL’de herhangi bir bilgilendirmeye gerek yoktur fakat TLS protokolü “Sertifika Yok” şeklindeki mesajını geçebilir.
  • SSL, MD5 ve SHA kullanmaktadır fakat TLS çoğu zaman ve çoğu durumda MAC (H-MAAC) kullanır. Bunun sebebi de H-MAC’in rastgele bir hash fonksiyonu ile birlikte yönetebiliyor oluşudur.
  • SSL, Diffie-Hellman (ya da Fortezza/DMS) ve RSA kullanıyor iken TLS ise H-MAC ile PRF standartlarını dikkate alır ve bu standartlar üzerinden üretilmiş olan anahtarları kullanır.
  • SSL elde etmiş doğrulama mesajlarını daha kompleks süreçler içerisinde iletmekteyken TLS ise sertifika doğrulama mesajlarını, aksine daha önce de bahsetmiş olduğumuz handshake içerisinde iletir.
  • SSL “bitti mesajı” oluşturur ve bunu da anahtar üretimine benzer bir biçimde gerçekleştirir. Fakat TLS ise “bitti mesajı” adına PRF çıktısı ile birlikte sunucudan ve istemciden gelmiş olan “bitti” mesajlarını kullanarak gerçekleştirir.

SSL ve TLS’in farklarını anlattıktan sonra sizlerle son olarak bir uyarı notu geçmek isteriz. Eğer SSL yerine TLS’i tercih etmişseniz ve TLS’i kullanmak istiyorsanız öncelikle sunucu ayarlarından SSL 2.0 ile SSL 3.0’ın devre dışı kaldığından emin olmalısınız. 

Harici olarak HTTPS, TLS ve SSL isimleri birbirleri ile hep karıştırılır. Bu karışıklığı çözmek için HTTPS ile başlayalım. HTTPS, http’nin güvenli bir halidir. İnternetiniz ve internet sunucularınızın iletişim kurabilmesine ve birbirleri ile bilgi alışverişi yapmasına olanak sağlar. Bu veri alıp verme durumu SSL/TLS ile daha güvenli bir hale getirildiği zamanda buna HTTPS demeye başlıyoruz.

0 Shares:
Benzer İçerikler