TLS Aslında Bir HTTPS Bağlantısını Nasıl Güvence Altına Alır?
TLS el sıkışmasının, sertifika doğrulamasının ve HTTPS'yi gerçekten güvenli kılan anahtar değişiminin pratik bir analizi.
İnsanlar "HTTPS şifrelenmiş demektir" derler ve orada bırakırlar, ama ilginç olan kısım iki yabancının hiç karşılaşmadan, dinliyor olabilecek insanlarla dolu bir ağ üzerinden nasıl paylaşılan bir gizliliği kabul ettikleridir. TLS bunu yapar ve ağ yönetimi, web geliştirme veya güvenlik ile ilgileniyorsanız mekaniklerini anlamak değer.
El sıkışma, adım adım
Tarayıcınız https://example.com'a bağlandığında, işte kabaca neler olur (çoğu sitenin şimdi kullandığı TLS 1.3):
- ClientHello — tarayıcı desteklenen şifre paketlerini, rastgele bir nonce'u ve anahtar değişimi için bir anahtar paylaşımı tahminini (X25519 veya secp256r1 gibi bir şey kullanarak) gönderir.
- ServerHello — sunucu bir şifre paketi seçer, kendi anahtar paylaşımını gönderir ve sertifikasını artı o sertifikayla eşleşen özel anahtarı tuttuğunu kanıtlayan bir imzayı döndürür.
- Anahtar türetme — her iki taraf da artık anahtar paylaşımlarında Diffie-Hellman tarzı matematikle aynı paylaşılan gizliliği bağımsız olarak hesaplar. Hiçbiri asla gizliliği iletmez; türetilir, gönderilmez.
- Finished mesajları — her iki taraf da el sıkışmanın tüm transkripti üzerine bir MAC göndererek ile tampered olmadığını doğrular.
Sonrasında, her şey paylaşılan gizminden türetilen simetrik anahtarlarla şifrelenir, genellikle AES-128-GCM veya ChaCha20-Poly1305. TLS 1.3 bunu TLS 1.2'nin iki tur gidiş-dönüş el sıkışmasından etkin olarak bir tur gidiş-dönüşe indirdi, bu da ölçekte gerçek bir gecikme kazancıdır.
Sertifikanın neden şifrelemeden daha önemli olduğu
Kimlik doğrulaması olmayan şifreleme işe yaramaz — herkes şifrelenmiş bir kanal kurabiliyor, bir ortadaki adam çalıştıran bir saldırgan da dahil. Sertifika, bir ortak anahtarı bir alan adına bağlayan ve Let's Encrypt veya DigiCine gibi bir Sertifika Yetkilisi (CA) tarafından imzalanan şeydir.
Tarayıcınız işletim sistemi veya tarayıcı güven deposuna baked olan sabit bir kök CA listesine güvenir. Sunucunun sertifikası bu köklerden birinin arasında bu olanakları zincirlendirir. Zincir doğrulanmazsa veya sertifikadaki alan adı talep ettiğiniz olanlarla eşleşmezse, kırmızı bir uyarı sayfası alırsınız. Bu güven zinciri modeli gerçek güvenlik sınırıdır — bir CA'nın imzalama anahtarını çalarsanız, herhangi bir alan adı için geçerli sertifikalar basabilirsiniz, bu yüzden CA uzlaşmaları büyük olaylar olarak kabul edilir.
Simetrik vs asimetrik kripto burada ne yapıyor
Asimetrik kripto (RSA veya eliptik eğri) yavaş ve pahalı olduğu için TLS bunu sadece el sıkışma sırasında kullanır — sunucuyu doğrulamak ve paylaşılan gizliliği kurmaya yardımcı olmak için. Bu yapıldıktan sonra, gerçek tüm veriler (HTML, JSON, ne olursa olsun) hızlı simetrik şifrelerle şifrelenir. Bu melez yaklaşım, SSH, PGP ve çoğu gerçek dünya kripto sisteminde göreceğiniz aynı kalıptır: kimlik ve anahtar değişimi için asimetrik, toplu veri için simetrik. İleri gizlilik ilgili bir detaydır bilmeye değer: paylaşılan gizlilik oturum başına yeni oluşturulan efemeral Diffie-Hellman anahtar paylaşımlarından geldiğinden, birisi trafiğinizi kaydederse ve daha sonra sunucunun özel anahtarını çalarsa, yine de eski oturumları şifre çözemezler. Bu özellik daha eski RSA-only anahtar değişiminde yoktu.
Kendiniz kontrol etme
Yeşil bir asma kilidi simgesine körü körüne güvenmek zorunda değilsiniz. Şunu çalıştırın:
openssl s_client -connect example.com:443 -tls1_3
Bu size görüşülen şifre paketini, sertifika zincirini ve el sıkışmanın gerçekten tamamlanıp tamamlanmadığını gösterir. Bir tarayıcının gördüğü şeyin hızlı bir bakışı için, curl -v https://example.com TLS sürümünü ve sertifika ayrıntılarını HTTP yanıtından önce yazdırır.
Ayrıca Chrome veya Firefox'u başlatmadan önce SSLKEYLOGFILE ortam değişkenini dışa aktarırsanız, Wireshark'ta kendi trafiğinizi şifre çözerek — tahmin etmek yerine TLS sorunlarını hata ayıklamak için gerçekten yararlı.
Bunun pratikte gerçekten kırıldığı yer
Çoğu gerçek dünya HTTPS başarısızlığı kriptografik kırılmalar değil, operasyon: süresi dolmuş sertifikalar, yanlış yapılandırılmış orta zincirleri, eski TLS sürümlerine takılı istemciler veya karışık içerik (bir HTTPS sayfası bir HTTP kaynağını yüklüyor). Modern TLS 1.3'e karşı gerçek protokol seviyesi saldırılar nadirdir çünkü spec, SSL 3.0 ve erken TLS'yi renci dolgu oracle ve downgrade numaralarını kapattı. Zayıf noktalar şimdi genellikle uç noktalar — uzlaşmış bir CA, çalınmış özel anahtar veya bir kullanıcı tıklatması sertifika uyarısı üzerinden yapmaması gereken şey.
Daha ileri gitmek istiyorsanız, Korra Studio'nun ağ iletişimi ve kriptografi segmentleri temel Diffie-Hellman matematiklerini ve paket seviyesi protokol analizini daha derinlemesine ele almaktadır.
AI yardımıyla yazıldı, Michal Pilch (CISSP), Korra Studio tarafından incelendi ve yayınlandı.
Bu, Korra Studio bilgi tabanından bir nottur — platform her konuyu 1-to-1 mentoring ile eşleştirir.
Ücretsiz başlaarrow_forward