Kod imzalama sertifikası, bir yazılımı yayınlayan kişi veya kuruluşun kimliğini ve dosyanın imzalandıktan sonra değiştirilmediğini kriptografik olarak kanıtlayan dijital sertifikadır. Kullanıcı bir .exe, .msi, sürücü ya da betik çalıştırmadan önce işletim sistemi bu imzayı kontrol eder ve sonucu kullanıcıya yansıtır.
Nasıl çalışır?
- Yayıncı, sertifika otoritesinden (CA) kimlik doğrulaması sonrası kod imzalama sertifikası alır.
- İmzalama aracı dosyanın özetini (hash) hesaplar ve bu özeti özel anahtarla imzalar.
- İmza ve sertifika zinciri dosyaya eklenir.
- Kullanıcı tarafında işletim sistemi özeti yeniden hesaplar, imzayı genel anahtarla doğrular ve zincirin güvenilir bir kök sertifikaya bağlandığını kontrol eder.
Dosyada tek bir bayt değişirse özet uyuşmaz ve imza geçersiz sayılır.
Ne sağlar?
- Yayıncı adının (doğrulanmış kuruluş) kurulum ve güvenlik pencerelerinde görünmesi
- Dağıtım sırasında kötü amaçlı değişikliğin fark edilmesi
- Windows SmartScreen gibi itibar sistemlerinde olumlu sinyal
- Kurumsal politikalarda yalnızca imzalı yazılıma izin verme (ör. AppLocker, WDAC) imkanı
Hangi dosyalar imzalanır?
Windows'ta .exe, .dll, .msi, .cab, .sys ve PowerShell betikleri; Java tarafında .jar dosyaları; Office makro projeleri ve çeşitli paket biçimleri. Android ve iOS uygulamaları ise kendi platformlarının imza düzenini kullanır.
Pratik ipuçları
- Sertifika türünü (OV veya EV) ihtiyaca göre seçin; ayrıntı için kod imzalama sertifikaları sayfasına bakın.
- İmzalarken mutlaka zaman damgası (timestamp) ekleyin; böylece sertifika süresi dolsa da imza geçerli kalır.
- Özel anahtarı donanım tabanlı bir yapıda koruyun. USB token ve kargo gerektirmeyen bulut HSM yaklaşımı için Certum Cloud kod imzalama sayfasını inceleyebilirsiniz.
Sık yapılan hatalar
- Sertifikayı aldıktan sonra yalnızca yükleyiciyi imzalayıp içindeki .dll dosyalarını unutmak.
- Zaman damgası eklemeyi atlayıp sertifika bitince eski sürümlerin "imza geçersiz" görünmesine yol açmak.
- Özel anahtarı paylaşılan bir sunucuda dosya olarak bırakmak.
- İmzadan sonra dosyayı paketleyici veya sıkıştırıcıyla yeniden işlemek; imza bozulur.
İmzanın varlığı yazılımın zararsız olduğu anlamına gelmez; yalnızca yayıncıyı ve bütünlüğü kanıtlar. Güven için kod kalitesi, güncelleme politikası ve şeffaf dağıtım kanalları da gereklidir.
Özetle kod imzalama, yazılımınıza "bu dosya gerçekten benden geldi ve bozulmadı" diyebilme yetkisi verir; güveni artırır ama kötü niyetli kodu tek başına iyi hale getirmez.