Saate güvenmeden hiçbir şeye güvenemezsin: Meta’da kimliği doğrulanmış zaman (NTS)
NTS: Authenticated Time at Meta
Meta’nın herkese açık zaman servisi artık nts.meta.com üzerinden NTS (Network Time Security, RFC 8915) konuşuyor. Paketler kimlik doğrulamalı: cihaz, zamanın gerçekten Meta’dan geldiğini ve yolda değiştirilmediğini doğrulayabiliyor. Protokol, sunucu ve istemci açık kaynak.
Neden önemli? NTP 1985’ten beri doğrulamasız: istemci 48 bayt gönderir, bir şey 48 bayt geri gönderir ve istemci buna inanır. İmza yok, kimlik yok. Oysa zaman, diğer bütün güvenlik kararlarının ölçüldüğü girdi: sertifika doğrulama (notBefore ve notAfter yerel saatle karşılaştırılır), token süresi (‘15 dakika geçerli’ bir saat iddiasıdır), tekrar saldırısı pencereleri ve log sıralaması. Üstelik döngüsel bir sorun var: saati bilmeden sertifika süresini doğrulayamazsın. Yaygın iki çözüm de kötü: saat ayarlanana kadar doğrulamayı atlamak ya da iki tarafın birbirinin saat hatasını tahmin ederek pay bırakması.
Bu, sertifikalar 398 gün yaşarken idare edilebiliyordu. CA/Browser Forum kararıyla TLS sertifikalarının azami ömrü Mart 2026’da 200 güne indi, Mart 2027’de 100, Mart 2029’da 47 güne inecek. 47 günde elle yönetim mümkün değil; yenileme ACME ile gözetimsiz yapılıyor. Saati kaymış bir makinede otomatik yenileme döngüsü bilet açmaz; kimsenin bakmadığı bir takvimde sessizce başarısız olur.
NTS iki aşamalı. Anahtar kurulumu (NTS-KE): TCP/4460 üzerinde TLS 1.3; istemci ve sunucu bir AEAD algoritmasında anlaşıp oturum anahtarlarını doğrudan TLS oturumundan türetiyor. Doğrulanmış NTP: UDP/123 üzerinde standart NTPv4; istek benzersiz bir kimlik, bir çerez ve bir doğrulayıcı taşıyor. Doğrulayıcı hiçbir şeyi şifrelemiyor, yalnızca imzalıyor. Sahte paket doğrulamadan geçemeyip düşürülüyor ve sunucu hata cevabı göndermiyor; böylece başarısızlık paket kaybından ayırt edilemiyor ve istemciyi yeni bir key rollover’a zorlamak için kullanılamıyor.
En zarif kısım durumsuz çerezler. Çerez, sunucu durumunun istemciye emanet edilmiş hâli: oturum anahtarlarını yalnızca sunucunun açabileceği biçimde mühürlü taşıyor. Bariz uygulama her sunucuya çoğaltılan bir anahtarlık olurdu ve zaman servisini bir dağıtık durum problemine çevirirdi. Meta anahtar çoğaltmıyor: her sunucu mühür anahtarını ortak bir ana sırdan ve günün numarasından HKDF ile türetiyor. Gün, Unix epoch’tan beri geçen tam 24 saatlik dilim; saat dilimi ve yaz saati yok, her makine aynı an için aynı tamsayıyı hesaplıyor. Sonuç: anahtarlık yok, çoğaltma yok, oturum tablosu yok, saldırganın tüketebileceği bir kaynak yok.
Öne çıkanlar
- Zaman, sertifika ve token doğrulamasının girdisidir; doğrulanmamış saat tüm zincirin zayıf halkasıdır.
- Sertifika ömrü 47 güne inerken yenileme otomatikleşiyor ve saat hatası sessiz arızaya dönüşüyor.
- Durumu sunucuda tutmak yerine mühürleyip istemciye vermek, servisi durumsuz yapar.
- Anahtarı çoğaltmak yerine ortak sır + deterministik girdiden türetmek, senkronizasyon sorununu ortadan kaldırır.
- Hata cevabı göndermemek de bir güvenlik kararıdır: saldırgana sinyal vermez.
Neden önemli?
‘Durumu istemciye emanet et, anahtarı türet’ deseni yalnızca zaman servisine özgü değil; yatay ölçeklenen her kimlik doğrulama servisinde aynı problem çıkar. Yazı ayrıca saat senkronizasyonunun operasyonel bir ayrıntı değil, güvenlik bağımlılığı olduğunu hatırlatıyor.
Pratikte
İki somut karşılığı var. JWT: token doğrularken exp ve nbf alanlarını sunucu saatiyle karşılaştırıyorsun; birkaç saniyelik saat farkı için küçük bir tolerans (clockSkew, örneğin 30 sn) tanımla ve sunucularında NTP’nin çalıştığını doğrula (chronyc tracking). Stateless session: NTS cookie’si ile imzalı JWT aynı fikir; sunucu session tablosu tutmaz, istemci mühürlü state’i taşır. Key rotation’ı da buradan öğren: anahtar kimliğini (kid) token’ın içine açık yaz ki sunucu hangi anahtarla doğrulayacağını bilsin.
Sözlük
- NTS (Network Time Security)
- NTP paketlerine kimlik doğrulama ekleyen standart (RFC 8915).
- AEAD
- Veriyi şifrelerken aynı anda bütünlüğünü de doğrulayan şifreleme türü.
- HKDF
- Bir ana sırdan, farklı amaçlar için bağımsız anahtarlar türeten standart yöntem.
- stateless server
- İstekler arasında istemciye özgü veri saklamayan sunucu; her istek kendi başına işlenebilir.
- ACME
- TLS sertifikalarının otomatik alınıp yenilenmesini sağlayan protokol.