Transport Layer Security (TLS) Nedir?

Bir diğer adı Taşıma Katmanı Güvenliği (Transport Layer Security) olan TLS ve TLS’in öncüsü olan Güvenlik Soket Katmanı yani SSL, kullanıcıların bilgisayar ağları üzerinden sağlıklı ve güvenli bir biçimde iletişim kurabilmeleri için tasarlanan kriptolama protokolleridir. Bilgisayarların ve kullanıcıların kimlik doğrulamaları asimetrik şifreler ile yapılmaktadır. Kullanıcılar karşılıklı bir biçimde kullandıkları simetrik anahtarlarla anlaşırlar.

Asimetrik anahtarlar aynı zamanda kullanıcıların veri akışlarını gizlemek ve mesajlar arasındaki kimlik doğrulamaları için de kullanılır. TLS yani eski adıyla SSL’i günümüzün popüler haberleşme uygulamalarında sık sık görebiliriz. Taşıma Katmanı Güvenliği olan TLS kısa süreli oturum anahtarı, uzun süreli simetrik anahtarlardan oluşturulmamalı. Aksi taktirde teknolojiyi kötü amaçlı kullanan kullanıcılar diğer kullanıcıların verilerine kolay yoldan erişebilir.

SSL/TLS’in Çalışma Prensibi Nedir?

Kullanıcı ile internet sunucusu arasında sunucu – istemci taraflı bir çalışma mantığı vardır. Kullanıcı internet sunucusundan bir bağlantı ister ve bunun karşılığında internet sunucusu, istemci yani kullanıcıya sertifika ile birlikte “public key” gönderir. İnternet tarayıcısı, istemcinin kullandığı ve göndermiş olduğu bilgiyi kontrol etmek amaçlı sertifikayı değerlendirir. Tarayıcı, sertifika otoritesinden geçerse, simetrik bir anahtar üretir. Public key bu simetrik anahtarı şifreler ve sunucuya mesajı iletir. Sunucuya gelen mesaj “public key” ile denenir ve eğer mesaj uyuşuyorsa kendine ait olan “private key” ile simetrik anahtarı açar ve çalıştırır. Sunucu elde ettiği bu simetrik anahtar ile istemciye, verileri istediği şekilde taşımak için kullanır. İstemci ise sunucudan gelen veriler ve aktifleşen simetrik anahtar sayesinde tarayıcıda istediği bilgilere ulaşmak için kullanır.  

TLS protokolü kullanıcıların gizli dinlenilmesini ve kullanıcıların onayı olmadan değişiklik yapılmasını önler ve ağ üzerinden istemci ile sunucu arasındaki uygulamaların haberleşmelerine olanak sağlar. İstemcinin TLS bağlantısını kullanabilmesi için TLS bağlantısının kurulup kurulmaması hakkındaki isteğini dile getirmesi şarttır. Bu isteğin dile getirilebilmesi için de ana iki yol vardır.

Bu yollardan ilki; TLS uzantıları için farklı port numarası kullanılmasıdır. Örneğin; HTTPS için kullanılan 443. port numarası. İkinci yol ise; sıradan bir port numarasını kullanılır. Bu durumda istemci, TLS protokolünün istemciler adına özelleştirilmiş mekanizması ile sunucunun, bağlantıyı TLS protokolüne iletmesi gerektiğini belirtir. Ardından istemci, etkin hale gelen sunucudan güvenli bir bağlantı istediği ve bu isteği de gerçekleştiği zaman, “el sıkışma” olarak da adlandırdığımız bağlantı işlemi gerçekleşme başlar.

Sunucu, istemci tarafından istenen güvenli bilgilerden şifreleme ve özet fonksiyon bilgilerine sahip olur. İstemci, sunucu tarafından desteklenir ve bunun karşılığında da istemci, isteklerini sayısal bir kimlik niteliğinde olan sertifika ile yollar. Sayısal kimlik, güvenilir sertifika yöneticisini, sunucunun sahip olduğu açık şifreleme anahtarını ve sunucunun sahip olduğu ismi içerir. Ardından istemci sunucu tarafından gönderilen sertifikanın güvenilirliğini ve sertifikanın geçerliliğini kontrol eder ve güvenli bir bağlantıda oturum anahtarı üretmeyi dener. İstemci, herhangi bir sayıyı sunucunun “public key”i ile paylaşarak şifreleri ve şifrelenmiş mesajı sunucuya yollar. Sunucu, şifrelenmiş bu mesajı sadece “private key”i kullanarak çözme aşamasına ulaşabilir.   

İstemci ve sunucu, rastgele sayılardan oluşan bir “master key” oluştururlar. “Master key”in elde edilmesinden sonra istemci ve sunucu şifreleme ve şifrelemeyi çözmek adına ortak bir anahtar oluştururlar. Bu anahtara da “oturum anahtarı” denir. Böylelikle istemci ile sunucu arasında “el sıkışma” olarak da adlandırdığımız bağlantı işlemi sona ermiş ve istemci ile sunucu arasında da güvenli bir bağlantı kurulmuş olur.

Bu aşamanın ardından istemcinin ve sunucunun, birbirlerine göndermiş oldukları verileri ellerinde tutmaları gerekmektedir. Daha sonrasında ellerinde tuttukları verileri şifrelemek ve şifreledikleri verileri de muhafaza etmeleri beklenir. Gerçekleştirilen bu üç işlem, en son oluşturulan oturum anahtarına aktarılır ve işlem çok daha basit hale indirgenmiş olur. Artık ne “master key” ne de “public key”i kullanmaya gerek kalmaz.

TLS Protokolünde Algoritma

Oturum anahtarlarının, her yazılımda olduğu gibi birer algoritmaları vardır ve oturum anahtarları da bu algoritmalar üzerinden oluşturularak çalıştırılırlar. İstemci ve sunucu da TLS tarafından güvenliği sağlanan bilgilerin değişimi öncesinde, verileri şifrelemek adına; kullanacak olan şifreleme algoritması ile şifreleme anahtarı üzerinde anlaşmaya varmaları gerekmektedir.

“Public key” sertifikaları yaşanan değişim boyunca kullanılır ve bu değişim süresince de “private key” ve “public key” büyüklüklerine göre de çeşitlilik gösterir. Bu sayede yüksek seviyeli bir güvenlik sağlanmış olur.

TLS Protokolünde Algoritmaların Veri Bütünlüğü

Algoritmaların verin bütünlüğünü korumak önemli olsa da oldukça zor bir yoldur. Fakat TLS protokolü, bu konuda kendisini oldukça geliştirmiştir ve böylelikle de veri bütünlüğünü korumayı başarmıştır. Veri bütünlüğünün oluşabilmesi için “mesaj kimlik doğrulama kodu” olarak adlandırdığımız doğrulama kodu kullanılır. Blok şifreleme için CBC ve dizi şifreleme için de HMAC modları kullanılır. CCM ve HCM mod gibi doğrulanmış olan şifrelemeler için ise AEAD kullanılır.

TLS Uygulamaları

Uygulamaların tasarımı sırasında, TLS’in herhangi bir taşıma katmanı üzerinde gelişimi sürdürülürken, TLS uygulamaların belli başlı protokollerini de muhafaza eder. Bir diğer ifade ile herhangi bir nesnenin bazı özelliklerini ve işlevlerini başka bir sınıftan ve nesnelerden saklar. Geçmişte de günümüzde de güvenilir taşıma protokolleri göz önünde tutulur ve tercih edilir. Fakat bu güvenilir taşıma protokollerinin yanında veri alt tabanlı protokoller de kullanılmıştır ve bu şekilde de TLS geliştirilmiştir.

TLS Adına Kullanılabilecek Web Siteleri

TLS’in en çok kullanılan formu web siteleri için hazrılanmıştır. Bunun sebebi de internette bulunan web sayfaları ve tarayıcıları içinde “http” protokolü ile gelen iletim tehlikelerini “HTTPS” protokolü ile daha güvenilir hale getirmesidir.

HTTPS nedir ve nasıl çalıştığını ayrıntılı olarak öğrenmek için buraya tıklayabilirsiniz.

TLS Adına Kullanılabilecek Web Tarayıcıları

Popülaritesi yüksek olan ve hepimizin adını en az bir kez işitmiş olduğumuz web tarayıcıları, son sürümlerinde TLS’in en yeni ve gelişmiş versiyonlarını desteklerler. Web tarayıcıları da bu desteklemeleri varsayılan olarak içlerinde aktif şekilde verirler. Fakat tüm bunlara rağmen web tarayıcılarının bazı eski sürümlerinde TLS’in en yeni ve gelişmiş versiyonları ile ilgili sıkıntıların yaşandığı da bilinmektedir.

TLS Adına Kullanılabilecek Kütüphaneler

  • Botan, BSD lisansına sahip C++ dilini kullanarak oluşturulan şifrelemedir. Botan portatif açık kaynaklı şifrelemeyi kullanır ve içerikteki istenmeyen verilerin istenmeyen taraflarca okunmasını engellemek adına kullanılan bir kütüphanedir. Yani; Botan sayesinde içeriklerdeki istenmeyen verilerin istenmeyen taraflarca okunmasını engelleyebilmekteyiz.
  • Cryptlib, Botan gibi portatif açık kaynaklı şifreleme kullanarak, yine Botan gibi içerikteki istenmeyen verilerin, istenmeyen taraflarca okunmasını engellemek adına, içeriklerin anlaşılamayacak hal alması için kullanılan bir kütüphanedir.
  • Pascal dilini baz almış olan Delphi programlaması ile uğraşan insanlar, OpenSSL’den (TLS protokolünün açık kaynak kodlu uygulaması) faydalanarak oluşturulmuş olan Indy kütüphanesini kullanabilirler.
  • GnuTLS: LGPL lisanlı ve kullanımına tamamen izin verilen Java Secure Socket Extension, Java 7’den bu yana TLS 1.1 ve TLS 1.2 desteğine olanak sağlamasına rağmen, Java Runtime Environment, kullanıcılar için kullanımı devre dışıdır. Buna rağmen Java Runtime Environment, sunucu tarafından hala daha aktif bir biçimde varlığını sürdürmektedir. Java 8’den itibaren ise hem kullanıcı hem de sunucu için aktif durumdadır ve kullanıma açıktır.
  • Taşıma Katmanı Güvenliği protokolüne ait ve açık kaynaklı bşr uygulama olan LibreSSL, OpenBSD tarafından yapılmış olan OpenSSL’in uygulamasıdır.
  • Daha önce PolarSSl olarak adlandırılan mbed TLS, gömülü sistemlerde kullanılabilmesi adına yapılmış, küçük bir SSL kütüphanesidir.
  • Network Security Services: FIPS 140 tarafından da onaylı bir halde var olan açık kaynak kodlu kütüphanesidir.
  • OpenSSL, kullanıcılar için kullanımı serbest olan bir uygulamadır. Ayrıca BSD lisanslı bir uygulamadır.
  • SChannel: Microsoft Windpws sistemlerinin TLS ve SSL paketlerini oluşturan bir uygulamadır.
  • Secure Transport: iOS ve OS X sistemlerinin TLS ve SSL paketlerini oluşturan bir uygulamadır. 

TLS için Diğer Kullanım Alanları

Elektronik posta yani kısa adı ile e-mail gönderme protokolü olan SMTP’de de diğerlerinde olduğu gibi güvenli bir alt yapıya ihtiyaç duyulduğu için elektronik posta gönderme amacıyla da TLS’e başvurarak elektronik postalarımızı kolaylıkla koruma altına alabiliriz. Aynı zamanda bu uygulamalar dijital sertifikalaşma yoluyla, daha önce de bahsetmiş olduğumuz el sıkışma yöntemi ile de kolaylıkla en son yapmış oldukları işlemlerin doğrulamalarını halledebilirler.

TLS aynı zamanda çoğumuzun bildiği VPN kullanımını da bizlerin kullanımına sunmaktadır, çünkü VPN’de de benzer yapısal özellikleri görmekteyiz. TLS kullanımı sonucunda bütün ağın tünellenerek kapsandığı bir protokoldür. Tünelleme şu şekilde ifade edilebilir: Kendi verileri içinde verileri okumak amacıyla birbirinden farklı iletişim protokollerini kullanan başka veri paketini kapsayan bir protokoldür, fakat kapsadığı veri paketi eksiksiz olmalıdır. Tek bir ağda, aralarında düşünebileceğiniz her türden verinin sorunsuz ve güvenli bir biçimde iletimini sağlayabilecek iki nokta arasında bir tünel oluşturma amacı güder. 

TLS’i baz alan VPN’ler belli bir süre geçtikten sonra web tarayıcılarının dışında da istemci sunucularının baz alınabileceği uygulamalarda da oldukça fazla sayıda etki göstermişler ve rol almışlardır.

TLS aynı şekilde Oturum Başlatma Protokolü olan SIP uygulamasında da önemli bir rol ile yerini alır ve koruma konusunda da standart bir görev üstlenir. 

TLS’in Tarihçesi ve Gelişimi

TLS dönemleri, geliştirilen versiyonlar doğrultusunda dört ayrı kategoride incelenebilir.

TLS 1.0 Dönemi

  • TLS 1.0, bilgisayarların sahip olduğu ağlar üzerinden şifreleme için kullanılan kanalları kurmak adına tanımlanmış olan güvenlik protokolüdür. TLS 1.0, TLS’in ilk sürümüdür ve bundan dolayı birden fazla hata tespit edilmiştir ve zamanla yerini başa versiyonlara bırakmıştır. Bundan dolayı TLS’in günümüzde kullandığımız yeni sürümlerinde TLS’in daha üst modelleri yer almaktadır.

TLS 1.1 Dönemi

  • TLS 1.1 versiyonu adından da anlaşılabileceği üzere TLS 1.0 versiyonunun güncellenmiş şeklidir. Oldukça karmaşık olan ve komplike şifrelerin de yer aldığı saldırılara karşı kullanıcıları korumak için geliştirilmiştir. Başta gizli bir biçimde tutulan başlangıç vektörü, TLS 1.1 versiyonu ile açık bir biçimde tutulmaya başlamıştır. Bunun sebebi ise barizdir. Kullanıcıları, kötü amaçlı kullanıcılar tarafından yapılan ve ard niyetli saldırılara karşı korumaktır.
  • Padding için, yani bir diğer adıyla içerik oluşturmak için, bırakılmış olan boş alanlarda oluşan hataları düzeltme konusunda değişikliklere gidilmiş ve boşluklar adına daha fazla yer ayrılmıştır.

TLS 1.2 Dönemi

  • TLS 1.1 versiyonunun, TLS 1.0 versiyonundan daha başarılı olması gibi, TLS 1.2 versiyonu da TLS 1.1 versiyonunun geliştirilmiş versiyonudur ve gelişim aşamasında özellikle TLS 1.1 spesifikasyonları göz önünde bulundurulmuştur. Rastgele fonksiyonlarındaki belli başlı metotlar değiştirilmiştir ve bununla birlikte bu yöntemler aynı biçimde tamamlanmış olan mesaj özetinde de değişikliğe uğraşmıştır.
  • Tamamlanmış halde bulunan mesaj uzunluğundaki metotlar değiştirilmiş olsalar bile, bit bakımından herhangi bir değişiklik yaşanmamıştır ve 96 bitte kalması kesinleştirilmiştir.
  • Dijital bir biçimde imzalı eleman fonksiyonlarında da belli başlı metotlar değiştirilmiş ve daha önce de bahsetmiş olduğumuz “el sıkışma” fonksiyonuna dönüştürülmüştür.
  • İstemci ve sunuculara daha fazla özgürlük tanınmıştır. Yani istemci ve sunucular hangi özetleri ile imzalama algoritmalarını kullanacağını kendileri seçmeye başlamışlardır.
  • TLS uzantılarının tanım kısımlarına daha güçlü bir alt yapı oluşturmak adına “Gelişmiş Şifreleme Standardı”nın özel parolaları eklenmiştir.

TLS 1.3 Dönemi

  • Günümüzde de kullanmakta olduğumuz TLS 1.3 sürümü, TLS sürümleri arasındaki en son sürüm olarak piyasalarda yerini almaktadır. TLS 1.3 sürümünde sorgulamalar esnasında veri açığı verme ve diğer problemlerden kaçınmak adına şifre paketleri ile kimlik doğrulama ve anahtar anlaşmaları ayrı tutulmuştur.
  • Haricinde kullanılan eliptik eğriler zayıf oldukları ve diğerlerine göre de daha az kullanıldıkları gerekçesiyle kaldırılmış ve yerlerini başka eğrilere bırakmıştır.
  • Bir önceki sürüm yani TLS 1.2’de kaldırılan dijital imzalamalar, TLS 1.3 diğer TLS sürümlerine nazaran oldukça güncel bir TLS sürümü olmasına rağmen geri getirilmiştir.
  • TLS 1.3 ile TLS’in önceki sürümlerine olan desteği de TLS 1.3’ün kullanımına teşvik amaçlı kaldırılmıştır.
  • TLS 1.3 ile önceki sürümlerde yer edinen ve eskimiş olan özelliklerin bazıları tekrardan kullanıcıların kullanımına sunulmuştur. Örnek olarak dijital imza verilebilir. Öte yandan birçoğuna verilen destek ise tamamen kaldırılmıştır.
  • Oturumların kullanımına blok şifreler sunulmuştur.
  • Eski TLS sürümleri için kullanılan RC4 ve SSL yöntemlerini kullanan anlaşmalar, tamamen piyasaya sürülmemesi kararlaştırılarak, bu tür anlaşmaların hepsi engellenmiştir.
  • TLS’in eski sürümlerinde sahip olduğu katmanların bütün özellikleri rafa kaldırılmıştır. Bu da katman versiyonunun numara kayıtlarının silinmesi ve versiyon numaralarının hepsinin dondurulması anlamına gelir.
  • Dijital imzalar adına daha kaliteli bir hizmet sunabilmek için eskisine nazar oldukça farklı ve yeni algoritmalar eklenmiştir. 

TLS’de Bulunan Çeşitli Güvenlik Önlemleri

TLS’in zayıf şifreleme protokolüne sahip olan bir önceki versiyonuna düşürülmesine (“downgrade of the protocol”) rağmen karşı koruma olanağı tanır. Birbirinin ardı sıra gelmesiyle oluşturulan paketleri sıra numaraları ile etiketler ve sıra numaralarına göre etiketleri de mesaj doğrulama kodlarında (MAC) kullanır. Bağlantıyı sona erdirme işlemlerinde de iki taraftan da yollanan “finished” kelimesinin “hash”i ile dışarıdan gelebilecek bağlantı sonlandırma saldırılarına karşın da önlemlerini sıkı bir biçimde alır.

Veriler ikiye ayrılır ve bu verileri farklı hash fonksiyonları ile birlikte (MD5 vs SHA-1) “hash”lerini oluşturur. Bu “hash”leri oluşturduktan sonra da ikiye ayrılan veriyi “XOR”layarak mesaj doğrulaması için kod oluşturur. Ekstradan TLS’de çok daha fazla çeşide sahip güvenlik önemleri vardır. Bu önlemler de sürekli denetlenmektedir. Bu denetlenmelerin sebepleri arasında ise birçok veriyi tek bir ağda taşıması ve bütün parolaların tek bir ağ üzerinden geçmesi yatar. Bu güvenlik önemleri şu şekilde sıralanabilir:

  • Önceki sürümlerde kullanılmış olan ve önceki sürümlerde şimdiki sürüme nazaran zayıf kalmış bulunan şifre protokollerinin engellenmesi için alınan önlemler.
  • Mevcut bağlantıları sonlandırmak adına sunucu ve istemcinin aynı zamanda olmasa bile belli başlı aralıklarla bağlantıyı karşılıklı sonlandırmaları ile saldırılara karşı alınan önlemler.
  • Sözde rastgelelik formunda ve fonksiyonunda kendisine gelen verileri ikiye bölmesi ile bu verileri birbirinden farklı ve değişken uzunlukta veri kümelerinde saklayarak karşılıklı olmasını engelleyerek (dışlayıcı metotlara daha sonra bunların aynı kümeye ait olduğunu gösterir) aldığı önlemler.
0 Shares:
Benzer İçerikler
Devamını Oku

HTTP/2 Nedir, Ne İşe Yarar?

Bu İçerikte Bahsedilen Konular HTTP Protokolleri Nelerdir?HTTP 1.1 ile HTTP 2 Arasındaki Farklar Nelerdir?Kullanıcılar Açısından HTTP/2Geliştiriciler Açısından HTTP/2Sunucular…