TLS ve Güvenli Kanallar
Taşıma Katmanı Güvenliği (TLS), internet iletişiminin çoğunu güvence altına alan bir protokoldür. Bu protokol, iki uç nokta arasında gizli, bütünlüğü korunmuş bir kanal oluşturmak için kimliği doğrulanmış anahtar değişimi ve kimliği doğrulanmış şifrelemeyi birleştirmektedir.
Tanım
TLS gibi güvenli bir kanal protokolü, iki taraf arasında, kimliği doğrulanmış bir anahtar değişimi ve ardından trafiğin kimliği doğrulanmış şifrelenmesi yoluyla, değiş tokuş edilen tüm verilerin gizliliğini, bütünlüğünü ve kimlik doğrulamasını garanti eden bir oturum kurmaktadır.
Kapsam
Bu konu, merkezi örnek olarak TLS'nin alındığı güvenli kanal protokollerini kapsamaktadır: sunucuyu (ve isteğe bağlı olarak istemciyi) doğrulayan ve oturum anahtarlarını oluşturan el sıkışma (handshake), kimliği doğrulanmış şifreleme sağlayan kayıt katmanı (record layer), ileri gizlilik (forward secrecy) ve sürüm düşürme koruması (downgrade protection) ile tarihsel saldırılardan çıkarılan dersler incelenmektedir. Kriptografik yapı taşlarının dağıtılmış bir protokole nasıl dönüştürüldüğü ele alınmaktadır. Sertifika altyapısı (PKI) ve bireysel temel öğeler (primitives), ilgili diğer konularda ele alındığı için bu kapsamın dışındadır.
Temel sorular
- TLS el sıkışması (handshake) sunucuyu nasıl doğrular ve oturum anahtarları üzerinde nasıl anlaşır?
- Kayıt katmanı (record layer) her mesajı kimliği doğrulanmış şifreleme ile nasıl korur?
- İleri gizlilik (forward secrecy) nasıl sağlanır ve kaydedilmiş trafik için neden önemlidir?
- Sürüm düşürme (downgrade) ve yeniden anlaşma (renegotiation) saldırıları nasıl önlenir?
- Tarihsel saldırılar (BEAST, POODLE, Heartbleed) protokol ve uygulama tasarımı hakkında ne öğretmiştir?
Anahtar kavramlar
- TLS el sıkışması (handshake)
- kayıt katmanı (record layer)
- kimliği doğrulanmış şifreleme (AEAD)
- geçici anahtar değişimi (ECDHE)
- ileri gizlilik (forward secrecy)
- sunucu ve istemci kimlik doğrulaması
- sürüm düşürme (downgrade) ve yeniden anlaşma (renegotiation) saldırıları
- oturum devam ettirme (session resumption)
- şifre paketi anlaşması (cipher suite negotiation)
Temel kuramlar
- El sıkışma (Handshake) artı kayıt protokolü (Record Protocol)
- TLS, kimliği sertifikalar aracılığıyla doğrulayan ve oturum anahtarları türeten kimliği doğrulanmış bir anahtar değişim el sıkışmasını (handshake), uygulama verilerini bu anahtarlarla şifreleyen ve doğrulayan bir kayıt katmanından (record layer) ayırarak, kimlik doğrulama, anahtar anlaşması ve toplu korumayı net bir şekilde bir araya getirmektedir.
- İleri gizlilik (Forward secrecy) ve sürüm düşürme koruması (Downgrade protection)
- TLS 1.3, ileri gizlilik (forward secrecy) için geçici (eliptik eğri) Diffie-Hellman'ı zorunlu kılmakta ve el sıkışma (handshake) dökümünü (transcript) anahtar çizelgesine (key schedule) bağlayarak aktif bir saldırganın daha zayıf parametrelere sürüm düşürmeyi (downgrade) fark edilmeden zorlamasını engellemektedir.
Mekanizmalar
TLS 1.3'te istemci, anahtar değişim paylaşımlarını ve desteklenen parametreleri göndermektedir; sunucu ise kendi geçici Diffie-Hellman paylaşımı, sertifikası ve el sıkışma (handshake) dökümü (transcript) üzerinde bir imza ile yanıt vermektedir ve her iki taraf da bir anahtar türetme fonksiyonu (HKDF) aracılığıyla oturum anahtarları türetmektedir. Kayıt katmanı (record layer) daha sonra tüm verileri bir AEAD şifresi (AES-GCM veya ChaCha20-Poly1305 gibi) ile korumaktadır. Döküm, kurcalamayı veya sürüm düşürmeyi önlemek için doğrulanmaktadır ve el sıkışma, isteğe bağlı sıfır gidiş-dönüş (zero-round-trip) devam ettirme (resumption) ile tek bir gidiş-dönüşte tamamlanmaktadır.
Klinik önem
TLS, internet trafiğinin büyük çoğunluğunu güvence altına almaktadır: web için HTTPS, güvenli e-posta iletimi, API'ler, VPN'ler ve mesajlaşma uygulamalarının tümü TLS üzerinden çalışmaktadır. Doğruluğu, parolaların, ödemelerin ve kişisel verilerin ağ saldırganlarından korunup korunmadığını doğrudan belirlemektedir. Hatalı SSL/erken TLS sürümlerinden TLS 1.3'e geçiş — ve bu geçişe eşlik eden analizler — gerçek dünya baskısı altında protokol evrimi için bir model teşkil etmektedir.
Kanıt ve kılavuzlar
TLS 1.3, RFC 8446'da standartlaştırılmış ve önerilmektedir; SSL 3.0, TLS 1.0 ve TLS 1.1 kullanımdan kaldırılmıştır (RFC 8996). NIST SP 800-52 yapılandırma rehberliği sağlamaktadır. TLS 1.3, kapsamlı resmi analizlerle geliştirilmiş, BEAST, POODLE gibi önceki saldırılara ve Heartbleed gibi uygulama hatasına olanak tanıyan eski zayıflıkları (statik RSA anahtar değişimi, CBC modu, yeniden anlaşma) ortadan kaldırmıştır.
Tarihçe
Netscape, SSL'i 1994-1995 yıllarında oluşturmuştur; SSL 3.0, IETF tarafından TLS 1.0 (1999) olarak yeniden tasarlanmış ve TLS 1.2 (2008) aracılığıyla geliştirilmiştir. BEAST, CRIME, POODLE, Heartbleed uygulama hatası, Logjam ve FREAK gibi on yıllık saldırılar, eski modlardaki ve sürüm düşürme (downgrade) yönetimindeki zayıflıkları ortaya çıkarmıştır. TLS 1.3 (RFC 8446, 2018), zorunlu ileri gizlilik (forward secrecy), daha hızlı bir el sıkışma (handshake) ve resmi güvenlik analizi ile önemli bir yeniden tasarım olmuştur.
Öne çıkan isimler
- Eric Rescorla
- Hugo Krawczyk
- Kenny Paterson
- Taher ElGamal
İlgili konular
Temel eserler
- rfc8446
- stallings2017
- katz2020
Sıkça sorulan sorular
- SSL ve TLS arasındaki fark nedir?
- TLS, SSL'in halefidir. SSL (sürüm 2.0 ve 3.0) eskimiş ve güvensizdir; 'SSL' terimi günlük dilde kullanılmaya devam etse de, mevcut tüm güvenli web bağlantıları TLS kullanmaktadır ve TLS 1.3 modern sürüm olarak kabul edilmektedir.
- TLS beni kötü niyetli bir web sitesinden korur mu?
- TLS yalnızca, sertifikada belirtilen sunucuya gizli, kimliği doğrulanmış bir kanalınız olduğunu garanti etmektedir — bu, o alan adıyla iletişim kurduğunuzu doğrular, ancak alan adının güvenilir olduğunu garanti etmez. Bir kimlik avı (phishing) sitesi, kendi (benzer görünümlü) alan adı için geçerli bir sertifika sunabilir, bu nedenle TLS sitenin dürüstlüğünü onaylamaz.