Yazılım imzası kontrolü

Yazılım Paketleri için Sigstore: Manuel Anahtar Yönetimi Olmadan Dijital İmzalar Nasıl Doğrulanır?

Dijital imzalar, paket kullanıcılarının iki pratik soruya yanıt bulmasına yardımcı olur: Bu dosya imzalandıktan sonra değiştirildi mi ve proje tarafından belirtilen kimlik tarafından mı imzalandı? Geleneksel imzalama yöntemleri bu sorulara yanıt verebilir, ancak çoğu zaman uzun ömürlü özel anahtarlara, açık anahtarların dağıtımına, son kullanma tarihlerine, iptal prosedürlerine ve güvenli depolamaya dayanır. Sigstore farklı bir yaklaşım kullanır. Geliştiricinin veya otomatik sürüm iş akışının OpenID Connect aracılığıyla kimliğini doğrulamasına, kısa ömürlü bir imzalama anahtarı oluşturmasına, bu anahtarı kısa ömürlü bir sertifikayla ilişkilendirmesine ve imzalama olayını herkese açık bir şeffaflık günlüğüne kaydetmesine olanak tanır. Kullanıcı açısından bu yaklaşım, doğrulamayı tek tek açık anahtarları manuel olarak toplama ve saklama ihtiyacından uzaklaştırırken paket, imzalayan kişi veya sistem ve belirli bir imzalama olayı arasındaki kriptografik bağlantıyı korur.

Sigstore Paket İmzalarının Doğrulanma Biçimini Neden Değiştiriyor?

Geleneksel uzun ömürlü bir imzalama anahtarında, bakım sorumlusunun özel anahtarı aylarca veya yıllarca koruması ve ilgili açık anahtarı sürümleri doğrulaması gereken herkese ulaştırması gerekir. Bu yöntem doğru uygulandığında etkili olabilir, ancak doğrudan paketin kendisiyle ilgili olmayan ek operasyonel iş yükü oluşturur. Anahtarların süresi dolabilir, anahtarlar kaybolabilir, güvenli olmayan bilgisayarlara kopyalanabilir veya bir bakım sorumlusu projeden ayrıldıktan sonra bile güvenilir kabul edilmeye devam edebilir. Kullanıcının ayrıca bir açık anahtarın nereden geldiğine ve hâlâ üzerinde belirtilen kişi ya da kuruluşa ait olup olmadığına karar vermesi gerekir. Deneyimli sürüm ekipleri bu sorunları yönetebilir, ancak küçük açık kaynak projelerinde ve otomatik derleme sistemlerinde bunların gözden kaçması daha kolaydır.

Sigstore’un kimlik tabanlı imzalama modeli, imzalayan kişiden kalıcı bir gizli anahtarı yönetmesini istemek yerine her imzalama işlemi için geçici bir anahtar oluşturarak bu yükü azaltır. İmzalayan kişi GitHub, GitLab, Google veya Microsoft gibi bir OpenID Connect sağlayıcısı üzerinden kimliğini doğrular. Sigstore’un sertifika yetkilisi Fulcio, kimlik bilgilerini kontrol eder ve bu kimliği geçici açık anahtarla ilişkilendiren kısa ömürlü bir sertifika düzenler. Özel anahtar yalnızca kısa süre boyunca kullanılır ve işlem tamamlandıktan sonra silinir. Böylece doğrulama yapan kişinin, bakım sorumlusunun kişisel açık anahtarını süresiz olarak yayımlamasına ve düzenli olarak yenilemesine ihtiyacı kalmaz. Önemli olan bilgiler beklenen imzalayan kimliği, kimlik sağlayıcısı ve sertifika ile şeffaflık kanıtlarını doğrulamak için kullanılan güvenilir Sigstore kökleri olur.

İmzalama olayı ayrıca Sigstore’un şeffaflık günlüğü olan Rekor aracılığıyla kaydedilir. Bu önemlidir çünkü sertifika bilinçli olarak kısa ömürlüdür ve doğrulama, sertifikanın süresi dolduktan haftalar veya yıllar sonra gerçekleştirilebilir. Kaydedilen kanıtlar, imzanın sertifika geçerliyken mevcut olduğunu gösterir ve doğrulama yapan kişinin hâlen geçerli bir kişisel sertifika istemek yerine geçmişte gerçekleşen imzalama olayını kontrol etmesini sağlar. Sigstore istemcileri güvenilir kök materyalini The Update Framework, yani TUF aracılığıyla alır; böylece kök sertifikalar ve günlük anahtarları kontrollü biçimde güncellenebilir. Pratikte paket doğrulaması, kişisel imzalama anahtarlarından oluşan bir listeyi yönetmekten çok beklenen kimliği ve kaydedilmiş bir olayı kontrol etmeye dönüşür.

Geçerli Bir Sigstore İmzası Gerçekte Neyi Kanıtlar?

Başarılı bir Sigstore doğrulaması, kontrol edilen paketin imzalanan verilerle eşleştiğine dair güçlü kanıt sağlar. Dosyanın çok küçük bir bölümü bile değişirse kriptografik özeti değişir ve imza doğrulamasının başarısız olması gerekir. Doğrulama sırasında sertifika ve sertifikada bulunan kimlik bilgileri de kontrol edilir. Böylece kullanıcı herhangi bir geçerli Sigstore imzalayanını kabul etmek yerine belirli bir e-posta adresini, hizmet kimliğini veya otomatik iş akışını şart koşabilir. Bu önemli bir ayrımdır. Amaç yalnızca herhangi bir imzanın geçerli olduğunu görmek değil, sürümün proje tarafından açıkça yetkilendirilen kimlik tarafından imzalandığını doğrulamaktır.

Anahtarsız imzalarda zaman bilgisi de güven kararının bir parçasıdır. Kısa ömürlü bir sertifikanın süresi, kullanıcı eski bir paketi kontrol ettiğinde dolmuş olabilir ancak bu durum eski imzayı otomatik olarak geçersiz yapmaz. Sigstore bundle dosyaları imzayı, sertifikayı, zaman damgası bilgilerini ve şeffaflık günlüğü kaydıyla ilişkili kanıtları birlikte taşıyabilir. Cosign bu kanıtları kullanarak imzalama olayının sertifikanın geçerlilik süresi içinde gerçekleşip gerçekleşmediğini ve kaydedilen bilgilerin kontrol edilen paketle tutarlı olup olmadığını belirler. Bundle biçiminin sıradan dosyalarda kullanışlı olmasının nedenlerinden biri de budur: doğrulama için gerekli bilgiler farklı dosyalardan yeniden oluşturulmak yerine birlikte sunulur.

Geçerli bir imza, paketin güvenli, hatasız veya belirli bir sistem için uygun olduğunu kanıtlamaz. İmza, kodun kalitesini değil bütünlük ve imzalayan kimliğiyle ilgili bilgileri doğrular. Yetkili bir bakım sorumlusunun hesabı ele geçirilirse veya meşru bir sürüm iş akışı kötü amaçlı kaynak kodundan bir paket oluşturursa kriptografik olarak geçerli bir imza yine de üretilebilir. Bu nedenle paket kullanıcıları Sigstore’u yazılım tedarik zinciri güvenliğinin tek çözümü değil, katmanlarından biri olarak değerlendirmelidir. Kaynak kökeni doğrulamaları, kod incelemeleri, bağımlılık kontrolleri, güvenlik açığı taramaları ve tekrarlanabilir derleme yöntemleri farklı soruları yanıtlar ve imza doğrulamasının yerine geçmek yerine onu tamamlar.

Sigstore ile İmzalanmış Bir Yazılım Paketi Pratikte Nasıl Doğrulanır?

Doğrulama üç temel bilgiyle başlar: paketin tam dosyası, bu dosyayla ilişkili Sigstore doğrulama materyali ve paketi imzalamasını beklediğiniz kimlik. Normal bir dosya veya sürüm arşivi için doğrulama materyali genellikle .sigstore.json uzantılı bir Sigstore bundle dosyası olarak sunulur. Beklenen kimlik, paketin bulunduğu güvenilir olmayan bir indirme sayfasından değil, projenin kendi sürüm belgelerinden, deposundan veya güvenlik yönergelerinden alınmalıdır. Ayrıca beklenen OpenID Connect sağlayıcısını bilmek gerekir. Otomatik sürümlerde kimlik, bir kişinin e-posta adresi yerine belirli bir iş akışı URI’si olabilir. Böylece derleme sürecinin kendisi doğrulama politikasının bir parçası hâline gelir.

Cosign, genel yazılım dosyalarını imzalamak ve doğrulamak için kullanılan temel Sigstore komut satırı aracıdır. Tipik bir kontrol, paket dosyası, bundle dosyası, beklenen sertifika kimliği ve beklenen OIDC sağlayıcısıyla birlikte cosign verify-blob komutunu kullanır. Buradaki önemli nokta komut sözdizimini ezberlemek değil, yeterince sınırlayıcı kimlik değerleri belirlemektir. Herhangi bir sertifika kimliğini kabul eden bir komut, dosyanın birileri tarafından Sigstore ile imzalandığını gösterebilir ancak beklenen projenin sürümü imzaladığını doğrulamaz. İyi tanımlanmış bir sürüm sürecinde proje, kullanıcıların güvenmesi gereken tam kimliği veya iş akışı modelini belgeler ve doğrulama, bu kriterlerin dışındaki imzaları kriptografik olarak geçerli olsalar bile reddedecek şekilde yapılandırılır.

Cosign bir bundle dosyasını doğruladığında yalnızca bağımsız dijital imzayı kontrol etmez. İmzanın paketle eşleşmesini doğrular, imzalama sertifikasını ve kimlik şartlarını kontrol eder ve güvenilir Sigstore verilerini kullanarak ilgili şeffaflık veya zaman damgası kanıtlarını inceler. Başarısız bir kontrol, paket kurulmadan veya üretim ortamına aktarılmadan önce araştırılmalıdır. Başarısızlık her zaman dosyanın değiştirildiği anlamına gelmez. Yanlış kimlik değeri, eski yerel güven ayarları, eşleşmeyen bir bundle dosyası veya bozuk indirme de doğrulamanın başarısız olmasına neden olabilir. Temel kural basittir: kullanılan dosyada hem kriptografik kontrol hem de beklenen kimlik kontrolü başarılı olana kadar sürüm doğrulanmış kabul edilmemelidir.

npm, PyPI ve Maven Central’da Doğrulama

Bazı paket ekosistemleri artık Sigstore tabanlı bilgileri kendi araçları üzerinden sunuyor. Bu nedenle kullanıcıların her zaman doğrudan Cosign komutu çalıştırması gerekmiyor. npm provenance, yayımlanan bir paketi kaynak deposu ve derleme ortamıyla ilişkilendirebilirken npm’in imza denetimi, kurulu bağımlılıklar için kayıt defteri imzalarını ve mevcut provenance doğrulamalarını kontrol edebilir. npm audit signatures komutu bu amaçla kullanılabilir. npm belgeleri ayrıca doğrulama biçimleri ve özellikleri gelişmeye devam ettiği için güncel bir npm CLI sürümünün kullanılmasını önerir. Bu yaklaşım, Sigstore’un arka planda çalışan bir güven mekanizmasına dönüşürken sıradan paket yönetimi araçlarının doğrulama sonucunu geliştiricilerin günlük bağımlılık kontrollerinde kullanabileceği biçimde sunmasına iyi bir örnektir.

PyPI, PEP 740 kapsamında dijital doğrulama beyanlarını destekler ve bunları Trusted Publishing ile birleştirir. Yetkilendirilmiş otomatik bir yayıncı üzerinden yayımlanan paket, hangi yayın kimliğinin kullanıldığını gösteren bir doğrulama beyanı taşıyabilir. PyPI bu bilgileri indeks API’leri üzerinden erişilebilir hâle getirir ve pypi-attestations aracı, bir dağıtım dosyasını kayıtlı provenance bilgisi ve beklenen kaynak deposuna göre doğrulayabilir. Böylece Python kullanıcıları bir wheel veya kaynak dağıtımının beklenen güvenilir iş akışıyla yayımlandığını ve dosyanın imzalanmış ifadeyle eşleştiğini kontrol edebilir. PyPI bu doğrulamayı paketin güvenilir olduğuna dair bir değerlendirmeden özellikle ayırır: doğrulama, paketin kökeniyle ilgili bilgileri kanıtlar ancak içinde zararlı kod bulunmadığını garanti etmez.

Maven Central ise Sigstore kullanımının her paket ekosisteminde aynı olmadığını gösteren iyi bir örnektir. Mevcut yayınlama şartları, gönderilen dosyalar için hâlâ GPG veya PGP imzalarını zorunlu tutar. Bununla birlikte Central, ek .sigstore.json dosyalarını destekler ve yayıncılar bunları sağladığında Sigstore imzalarını doğrular. Bu nedenle bir Java kütüphanesi hem geleneksel .asc imzasına hem de Sigstore doğrulama materyaline sahip olabilir. Kullanıcı açısından pratik kural, kullanılan paket kaynağının gerçek şartlarını ve sunduğu meta verileri takip etmektir. Sigstore, kimlik tabanlı imzalama için tasarlanan süreçlerde manuel anahtar yönetimini azaltabilir ancak bir ekosistem uzun ömürlü PGP anahtarlarını zorunlu tutmaya devam ediyorsa mevcut imza şartlarını ortadan kaldırmaz.

Yazılım imzası kontrolü

Anahtarsız Doğrulamanın 2026 Sürüm Sürecindeki Yeri

Sigstore, özellikle OIDC kimlik belirteci verebilen bir sürekli entegrasyon hizmeti üzerinden yazılım otomatik olarak yayımlandığında kullanışlıdır. Uzun ömürlü bir imzalama anahtarını derleme ortamında gizli bilgi olarak saklamak yerine sürüm iş akışı kısa ömürlü bir kimlik belirteci alır, kısa ömürlü bir imzalama sertifikası edinir ve oluşturulan dosyaları o işlem sırasında imzalar. Kullanılan kimlik, sürümü gerçekleştiren depoyu ve iş akışını tanımlayabilir ve tüketicilere doğrulayabilecekleri somut bir değer sağlar. Bu tasarım, derleme ayarlarında tekrar kullanılabilecek kalıcı bir özel anahtar bulunmayabileceği için uzun ömürlü imzalama anahtarının yanlışlıkla açığa çıkmasının yaratacağı riski azaltır. Ayrıca günlük sürüm işlemlerinde düzenli anahtar yenilemenin önemini azaltır.

Doğrulama yapan tarafın yine de açık bir güven politikasına ihtiyacı vardır. Manuel anahtar yönetiminin kaldırılması, güven kararlarının ortadan kalktığı anlamına gelmez. Bir ekip hangi deponun, iş akışının, hizmet hesabının veya bakım sorumlusu kimliğinin paketi imzalamaya yetkili olduğunu belirlemelidir. Doğrulama daha sonra bu kimliği ve beklenen kimlik sağlayıcısını zorunlu tutmalıdır. Proje sürüm iş akışını değiştirirse, başka bir depoya taşınırsa veya imzalama için farklı bir kimlik kullanmaya başlarsa kullanıcıların kabul edilen politikayı güncellemesi gerekebilir. Bu hâlâ bakım gerektirir ancak yeni bir kişisel açık anahtar dağıtmaktan farklıdır. Politika, yazılımı kimin veya hangi sürecin yayımlamaya yetkili olduğunu tanımlarken kısa ömürlü kriptografik materyal otomatik olarak oluşturulur ve kullanım sonrasında geçerliliğini kaybeder.

Araçların ve güven köklerinin de güncel tutulması gerekir. Sigstore, sertifika yetkilisi ve şeffaflık günlüğü anahtarlarındaki değişikliklerin her paket bakım sorumlusunun yeni doğrulama anahtarları dağıtmasına gerek kalmadan istemcilere ulaştırılabilmesi için açık güven materyalini TUF aracılığıyla dağıtır. Cosign 3.x, çeşitli yaygın iş akışlarında imza doğrulama verilerini taşımak için varsayılan yöntem olarak Sigstore bundle dosyalarını kullanır. Bu, paket imzalarının sürüm dosyalarıyla birlikte saklanmasını ve diğer Sigstore araçları tarafından kullanılmasını kolaylaştırır. Sürümleri arşivleyen kuruluşların bu nedenle paketi ve ilgili bundle dosyasını birlikte saklaması mantıklıdır. İlgili sürüm meta verilerinin doğrulanmış bir kopyasını korumak, orijinal imzalama sertifikasının süresi dolduktan uzun süre sonra bile paketin yeniden kontrol edilmesi gerektiğinde faydalıdır.

Bir Sürüme Güvenmeden Önce Bilinmesi Gereken Sınırlar ve Kontroller

En önemli sınırlama, kimlik tabanlı imzalamanın güvenlik sınırını kimlik sağlayıcısına ve sürüm iş akışına yaklaştırmasıdır. Bir saldırgan yetkili bir geliştirici hesabını veya kimlik belirteci alma yetkisine sahip bir iş akışını ele geçirirse geçerli görünen imzalı bir sürüm oluşturabilir. Şeffaflık günlüğü bu noktada yardımcı olur çünkü imzalama olayları herkese açık biçimde denetlenebilir ve beklenmeyen kimlikler veya olaylar tespit edilebilir. Ancak kayıt altına almak saldırıyı önlemekle aynı şey değildir. Projeler bakım sorumlusu hesaplarını güçlü kimlik doğrulamayla korumaya, sürüm izinlerini sınırlamaya, iş akışı değişikliklerini incelemeye ve normal geliştirme izinleriyle resmi paket yayımlama yetkisini birbirinden ayırmaya devam etmelidir.

Kullanıcıların yalnızca son dosyayı kimin imzaladığını değil daha fazlasını bilmesi gerektiğinde provenance bilgisi önem kazanır. Temel bir imza, belirli bir kimliğin belirli bir paketi onayladığını gösterebilir ancak paketin hangi kaynak kodu revizyonundan oluşturulduğunu veya derlemenin nasıl gerçekleştirildiğini otomatik olarak açıklamaz. Doğrulama beyanları, sürümü belirli bir depo, iş akışı veya derleme açıklamasıyla ilişkilendirerek bu bağlamı ekleyebilir. npm provenance ve PyPI attestations bunun pratik örnekleridir. Daha yüksek güvence gerektiren ortamlarda ekipler Sigstore doğrulamasını SLSA provenance, yazılım malzeme listeleri, bağımlılık politikaları ve tekrarlanabilir derlemelerle birlikte kullanabilir. Her kontrol farklı bir belirsizliği azaltır; böylece tek bir dijital imzadan tedarik zinciriyle ilgili tüm soruları yanıtlaması beklenmez.

Bu nedenle 2026 için uygulanabilir bir doğrulama politikası oldukça nettir: paketleri beklenen kaynaktan alın, kullanılan dosyanın tamamını doğrulayın, belgelenmiş imzalayan kimliğini ve sağlayıcısını şart koşun, sunulmuşsa ilgili Sigstore bundle dosyasını saklayın ve paket ekosistemi destekliyorsa provenance bilgilerini kontrol edin. Paket kaynağı hâlâ PGP imzasını zorunlu tutuyorsa Sigstore’un bunun yerini aldığını varsaymak yerine PGP imzasını da doğrulamaya devam edin. Sigstore’un temel avantajı güveni tamamen otomatik hâle getirmesi değildir. Asıl avantaj, yazılım projelerinin her bakım sorumlusundan ve kullanıcıdan uzun ömürlü imzalama anahtarları ağını elle yönetmesini istemek yerine kısa ömürlü kimlik bilgileri ve denetlenebilir kimlikler kullanabilmesi ve aynı zamanda neyin, kim tarafından ve ne zaman imzalandığına ilişkin doğrulanabilir bir kayıt tutabilmesidir.

Popüler konular