TLS el sıkışması nedir?
TLS, İnternet iletişiminin güvenliğini sağlamak için tasarlanmış bir şifreleme ve kimlik doğrulama protokolüdür. TLS anlaşması, TLS kullanan bir iletişim oturumunu başlatan süreçtir. TLS anlaşması sırasında iletişim kuran iki taraf, birbirlerini onaylamak, birbirlerini doğrulamak, kullanacakları şifreleme algoritmalarını oluşturmak ve oturum anahtarları üzerinde anlaşma sağlamak üzere mesajları değiş tokuş eder. TLS anlaşmaları, HTTPS'in çalışma şeklinin temel bir parçasıdır.
TLS ile SSL el sıkışması karşılaştırması
SSL (Güvenli Yuva Katmanı), HTTP için geliştirilmiş orijinal şifreleme protokolüydü. SSL, bir süre önce TLS (Aktarım Katmanı Güvenliği) olarak değiştirildi. "SSL" adı halen yaygın olarak kullanılıyor olsa da, SSL anlaşmaları artık TLS anlaşmaları olarak adlandırılmaktadır.
Teknik Doküman
TLS'nin gücünü en üst düzeye çıkarın
Rehber
Uygulama erişimini güvenceye almak için Sıfır Güven rehberi
TLS el sıkışması ne zaman gerçekleşir?
Kullanıcı HTTPS üzerinden bir web sitesine gittiğinde ve tarayıcı ilk kez web sitesinin kaynak sunucusunu sorgulamaya başladığında bir TLS tokalaşması gerçekleşir. API çağrıları ve HTTPS sorguları üzerinden DNS çözümlemesi de dahil olmak üzere HTTPS kullanan diğer her türlü iletişimde de bir TLS tokalaşması gerçekleşir.
TLS el sıkışmaları, TCP el sıkışması aracılığıyla bir TCP bağlantısı açıldıktan sonra gerçekleşir.
Güvenli SSL
Tüm Cloudflare planlarına ücretsiz SSL dahil
TLS el sıkışması sırasında ne olur?
TLS el sıkışması sırasında istemci ve sunucu şunları birlikte yapar:
- Hangi TLS sürümünü (TLS 1.0, 1.2, 1.3, vb.) kullanacaklarını belirtir
- Hangi şifre paketlerini (aşağıya bakın) kullanacaklarına karar verir
- Sunucunun açık anahtarı ve SSL sertifika yetkilisinin dijital imzası aracılığıyla sunucunun kimliğini doğrular
- El sıkışma tamamlandıktan sonra simetrik şifreleme kullanmak için oturum anahtarları oluşturur
TLS el sıkışmasının adımları nelerdir?
TLS el sıkışmaları, istemci ve sunucu tarafından değiş tokuş edilen bir dizi veri birimi veya mesajdır. İstemci ve sunucu, el sıkışmayı tamamlamak ve daha fazla iletişimi mümkün kılmak için gerekli bilgileri değiş tokuş ettiğinden, TLS el sıkışması birden çok adım içerir.
TLS anlaşmasındaki kesin adımlar, kullanılan anahtar değiş tokuş algoritmasının türüne ve her iki tarafça desteklenen şifre paketlerine bağlı olarak değişiklik gösterir. RSA anahtar değişimi algoritması, artık güvenli olmadığı düşünülse de, TLS'nin 1.3'ten önceki sürümlerinde kullanılıyordu. Kabaca aşağıdaki gibidir:
- "istemci merhaba" (client hello) mesajı: İstemci, sunucuya bir "merhaba" mesajı göndererek el sıkışmayı başlatır. Bu mesaj, istemcinin desteklediği TLS sürümünü, desteklenen şifre paketlerini ve "istemci rastgele" (client random) olarak bilinen bir rastgele bayt dizisini içerir.
- "sunucu merhaba" (server hello) mesajı: İstemci merhaba mesajına yanıt olarak sunucu; kendi SSL sertifikasını, kendi seçtiği şifre paketini ve kendi oluşturduğu başka bir rastgele bayt dizisi olan "sunucu rastgele"yi (server random) içeren bir mesaj gönderir.
- Doğrulama: İstemci, sunucunun SSL sertifikasını, onu veren sertifika yetkilisiyle doğrular. Bu, sunucu olduğunu söyleyen tarafın kimliğini ve istemcinin etki alanının gerçek sahibiyle etkileşime girdiğini doğrular.
- Premaster secret: İstemci, "premaster secret" olarak da ifade edilen bir rastgele bayt dizisi daha gönderir. Premaster secret, açık anahtarla şifrelenir ve şifresi yalnızca sunucu tarafından özel anahtarla çözülebilir. (İstemci, açık anahtarı sunucunun SSL sertifikasından alır.)
- Kullanılan özel anahtar: Sunucu, premaster secret'ın şifresini çözer.
- Oluşturulan oturum anahtarları: Hem istemci hem de sunucu, istemci rastgeleden, sunucu rastgeleden ve premaster secret'tan oturum anahtarları oluşturur. Aynı sonuçlara varmaları gerekir.
- İstemci hazır: İstemci, oturum anahtarıyla şifrelenmiş bir "bitti" mesajı gönderir.
- Sunucu hazır: Sunucu, oturum anahtarıyla şifrelenmiş bir "bitti" mesajı gönderir.
- Sağlanan güvenli simetrik şifreleme: El sıkışma tamamlanır ve oturum anahtarları kullanılarak iletişim devam eder.
Tüm TLS anlaşmaları asimetrik şifrelemeden (açık ve özel anahtar) yararlanır, ancak bunların tümü oturum anahtarları oluşturma sürecinde özel anahtarı kullanmaz. Örneğin, kısa süreli bir Diffie-Hellman anlaşması aşağıdaki gibi ilerler:
- İstemci merhaba: İstemci; protokol sürümü, istemci rastgele ve şifre takımlarının bir listesini içeren bir istemci merhaba mesajı gönderir.
- Sunucu merhaba: Sunucu; SSL sertifikası, seçilen şifre paketi ve sunucu ile rastgele yanıt verir. Yukarıda açıklanan RSA el sıkışmasının aksine, bu mesajda sunucu ayrıca aşağıdakileri içerir (3. adım):
- Sunucunun dijital imzası: Sunucu, bu noktaya kadar tüm iletilerin dijital imzasını hesaplar.
- Dijital imza onaylandı: İstemci, sunucunun dijital imzasını doğrular ve sunucunun söylediği kişi olduğunu doğrular.
- İstemci DH parametresi: İstemci, DH parametresini sunucuya gönderir.
- İstemci ve sunucu premaster secret'ı hesaplar: İstemci ve sunucu, RSA el sıkışmasında olduğu gibi istemcinin premaster secret'ı oluşturup sunucuya göndermesi yerine, eşleşen bir premaster secret'ı ayrı ayrı hesaplamak için değiş tokuş ettikleri DH parametrelerini kullanır.
- Oluşturulan oturum anahtarları: Şimdi istemci ve sunucu, RSA el sıkışmasında olduğu gibi, oturum anahtarlarını premaster secret, istemci rastgele ve sunucu rastgele olarak hesaplar.
- İstemci hazır: RSA anlaşmasıyla aynı.
- Sunucu hazır
- Güvenli simetrik şifreleme sağlandı
*DH parametresi: DH, Diffie-Hellman'ın kısaltmasıdır. Diffie-Hellman algoritması, aynı premaster secret'a ulaşmak için üstel hesaplamalar kullanır. Sunucu ve istemcinin her biri, hesaplama için bir parametre sağlar ve birleştirildiklerinde, her iki tarafta eşit sonuçlarla farklı bir hesaplama ile sonuçlanırlar.
Geçici Diffie-Hellman el sıkışmaları ile diğer el sıkışması türleri arasındaki karşıtlık ve bunların ileriye dönük gizliliği nasıl sağladıkları hakkında daha fazla bilgi için Anahtarsız SSL nedir? bölümüne bakın.
TLS 1.3'teki anlaşmanın farkı nedir?
TLS 1.3, RSA'yı veya saldırıya açık diğer şifre paketleri ile parametreleri desteklemez. Aynı zamanda TLS anlaşmasını kısaltarak TLS 1.3 anlaşmasını hem daha hızlı hem de daha güvenli hale getirir.
TLS 1.3 anlaşmasının temel adımları şunlardır:
- İstemci merhaba: İstemci; protokol sürümü, istemci rastgele ve şifre takımlarının bir listesini içeren bir istemci merhaba mesajı gönderir. Güvenli olmayan şifre paketleri için destek TLS 1.3'ten kaldırıldığı için, olası şifre paketlerinin sayısı büyük ölçüde azaltılmıştır. İstemci, aynı zamanda ön master sırrını hesaplamak için kullanılacak parametreleri de içerir. Esasen istemci, sunucunun tercih ettiği anahtar değişim yöntemini bildiğini varsaymaktadır (ki bu, basitleştirilmiş şifre paketleri listesi nedeniyle muhtemelen bilinmektedir). Bu, TLS 1.3 anlaşmaları ile TLS 1.0, 1.1 ve 1.2 el sıkışmaları arasındaki önemli farklardan biri olan anlaşmanın genel uzunluğunu azaltır.
- Sunucu temel bir sır oluşturur: Bu noktada, sunucu istemciyi rastgele ve istemcinin parametreleri ile şifre takımlarını almıştır. Sunucuyu zaten rastgele oluşturmuştur, çünkü bunu kendi başına üretebilir. Bu nedenle, sunucu temel gizli anahtarı oluşturabilir.
- Sunucu açılışı and "Kapanış": Sunucu açılışı, sunucu sertifikasını, dijital imzayı, sunucu rastgele ve seçilen şifre paketini içerir. Zaten ana sırra sahip olduğundan, "Bitti" mesajı da gönderir.
- Son adımlar ve "Tamamlandı" istemcisi: İstemci imzayı ve sertifikayı doğrular, ana gizli anahtarı oluşturur ve "Bitti" mesajını gönderir.
- Güvenli simetrik şifreleme sağlandı
Oturumu yeniden başlatmak için 0-RTT modu
TLS 1.3 aynı zamanda herhangi bir gidiş-dönüş veya istemci ile sunucu arasında ileri geri iletişim gerektirmeyen daha da hızlı bir TLS tokalaşma versiyonunu da destekler. İstemci ve sunucu daha önce birbirine bağlandıysa (yani kullanıcı web sitesini daha önce ziyaret etmişse) ikisi de ilk oturumdan "kaldığı yerden devam ediş ana sırrı" şeklinde adlandırılan bir ortak sır daha elde edebilir. Sunucu bu ilk oturum sırasında ayrıca istemciye oturum bileti adı verilen bir şey gönderir. İstemci bu ortak sırrı kullanarak bir sonraki oturumun ilk mesajında bu oturum biletiyle birlikte sunucuya şifrelenmiş veri gönderebilir. Ardından istemci ve sunucu arasında TLS kaldığı yerden devam eder.
Şifre paketi nedir?
Bir şifre paketi, güvenli bir iletişim bağlantısı kurmak için kullanılan bir dizi algoritmadır. Yaygın olarak kullanılan bir dizi şifre paketi vardır ve TLS el sıkışmasının önemli bir kısmı, bu el sıkışma için hangi şifre paketinin kullanılacağına karşılıklı karar verilmesi sürecidir.
TLS/SSL hakkında daha fazla bilgi edinmek için SSL nasıl çalışır? bölümüne bakın.