Sertifika şeffaflığı, kısaca
Herkese açık ekleme-yalnızca loglar, SCT'ler ve bir sertifikanın oraya nasıl düştüğü.
Sertifika şeffaflığı (Certificate Transparency, CT), sertifika otoritelerinin verdiği her TLS sertifikasının herkese açık, ekleme-yalnızca loglara yazılmasını sağlayan mekanizma. İlk sürümü RFC 6962’de, 2.0 sürümü RFC 9162’de tanımlı.
Temel fikir basit: bir CA sessizce senin alan adına sertifika veremesin. Verirse kaydı ortada dursun.
Log neye benziyor
Her log bir Merkle ağacı. Yeni girdiler yalnızca sona eklenir, aradan bir şey çıkarılamaz — çıkarılırsa ağaç kökü tutmaz. Bu yüzden log operatörünün dürüstlüğüne güvenmek zorunda değilsin; iki farklı zamandaki kök değerleri arasında tutarlılık kanıtı isteyebilirsin.
Bir sertifika loga gönderildiğinde log, imzalı bir makbuz döner: SCT (Signed Certificate Timestamp). SCT, “bu sertifikayı şu anda aldım ve şu kadar süre içinde ağaca ekleyeceğim” taahhüdüdür.
Tarayıcı tarafı
Chrome, Nisan 2018’den sonra verilen halka açık sertifikalar için CT zorunluluğu getirdi: yeterli sayıda SCT sunmayan sertifika hata veriyor. SCT tarayıcıya üç yoldan ulaşabilir:
- sertifikanın içine gömülü X.509 uzantısı olarak,
- TLS el sıkışmasında bir uzantıyla,
- OCSP stapling yanıtıyla.
Pratikte en yaygını birincisi. Ama burada bir tavuk-yumurta problemi var: SCT sertifikanın içine gömülecekse, sertifika henüz imzalanmadan loga gitmesi gerekir.
Ön sertifika
Çözüm precertificate. CA, gerçek sertifikanın aynısını üretir ve içine “kritik”
işaretli bir zehir uzantısı (1.3.6.1.4.1.11129.2.4.3) koyar. Bu uzantıyı anlamayan
her istemci sertifikayı reddedeceği için ön sertifika TLS’te kullanılamaz. Loga
gönderilen bu olur; dönen SCT’ler asıl sertifikaya gömülür.
Yani logda aynı isim için iki kayıt görmen normal: biri ön sertifika, biri asıl sertifika.
Ne işe yarıyor
Loglar herkese açık olduğu için akışı canlı izleyip kendi alan adlarına verilen sertifikaları yakalayabilirsin. Tipik kullanımlar:
- yanlış verilmiş ya da beklenmeyen sertifikaları fark etmek,
- bir kurumun henüz duyurmadığı alt alan adlarını görmek,
- taze kayıtlı, kimlik avına hazırlanan alan adlarını izlemek.
Geçmişe dönük arama için crt.sh yeterli. Canlı akış için log
sunucularının get-entries uç noktasını doğrudan çekmek ya da bunu senin için yapan
bir yayıncıya bağlanmak gerekir.
Şunu unutma: CT bir engelleme mekanizması değil, bir görünürlük mekanizması. Kötü sertifikayı durdurmaz, sadece gizlenemez hale getirir.