0-RTT (early data), daha önce bağlanmış bir istemcinin TLS 1.3 el sıkışması tamamlanmadan ilk uygulama verisini gönderebilmesini sağlar. Gecikmeyi bir gidiş-dönüş kadar azaltır, ancak bunun bedeli tekrar saldırılarına (replay) karşı koruma kaybıdır.
Nasıl çalışır?
- İlk bağlantıda sunucu, istemciye bir oturum bileti (PSK) verir ve early data kabul edebileceğini belirtir.
- Sonraki bağlantıda istemci ClientHello ile birlikte bu PSK'dan türetilen anahtarla şifrelenmiş veriyi hemen yollar.
- Sunucu veriyi el sıkışma bitmeden işleyebilir.
Risk: tekrar (replay)
Early data için ileri gizlilik ve tekrar koruması sınırlıdır. Bir saldırgan yakaladığı 0-RTT paketini yeniden gönderirse sunucu aynı isteği iki kez alabilir. Bu nedenle yalnızca yan etkisi olmayan (idempotent) istekler için kabul edilmelidir; para transferi, sipariş oluşturma veya oturum açma gibi işlemler 0-RTT ile karşılanmamalıdır.
nginx örneği
ssl_protocols TLSv1.3;
ssl_early_data on;
location / {
proxy_set_header Early-Data $ssl_early_data;
proxy_pass http://uygulama;
}
Arka uç uygulama, Early-Data: 1 başlığını görünce güvenli olmayan istekleri reddetmeli ve 425 Too Early durum koduyla istemciyi normal el sıkışma sonrası tekrar denemeye yönlendirmelidir (RFC 8470).
Ne zaman açık, ne zaman kapalı?
- Açılabilir: Salt okunur içerik, statik dosya, herkese açık GET istekleri; çoğunlukla CDN arkasında.
- Kapalı tutun: Durum değiştiren API'ler, ödeme ve kimlik doğrulama uç noktaları; ara katmanların başlık iletimini doğru yaptığından emin olamıyorsanız.
Doğrulama
openssl s_client -connect ornek.com:443 -tls1_3 -sess_out oturum.pem
openssl s_client -connect ornek.com:443 -tls1_3 -sess_in oturum.pem -early_data istek.txt
Ek notlar
- CDN ve ters vekil katmanları early data başlığını iletmezse arka uç riski göremez; yapılandırmayı uçtan uca test edin.
- Varsayılan olarak çoğu sunucuda 0-RTT kapalıdır; bilinçli olarak açmadıkça risk oluşmaz.
- Tarayıcılar early data'yı yalnızca uygun istekler için gönderir, ancak sunucu tarafında yine de korunmalısınız.
Şüpheniz varsa kapalı tutmak, kazanılan birkaç milisaniyeden daha güvenli bir tercihtir.
Genel TLS durumunu SSL denetleme aracıyla kontrol edebilirsiniz. Özet: 0-RTT hız kazandırır, ama yalnızca güvenli ve tekrar edilebilir isteklerde açık tutulmalıdır.
TLS ayarlarını gözden geçirirken SSL sertifikaları ve bilgi bankası sayfalarındaki diğer rehberlerden de yararlanabilirsiniz.