ImageMagick’in Windows yükleyicisi artık imzalanmayacak
(github.com/ImageMagick)- ImageMagick, mevcut kod imzalama sertifikasının 28 Ekim 2023’te sona ereceğini ve o zamana kadar LeaderSSL’in sponsor olduğu sertifikayı artık alamayacağını duyurdu
- Haziran 2023’ten itibaren CA/B Forum, OV kod imzalama özel anahtarlarının FIPS 140-2 Level 2 veya Common Criteria Level EAL4+ sertifikalı cihazlarda saklanmasını zorunlu kıldığı için, özel anahtarı dışa aktarıp GitHub Actions’ta kullanma yöntemi engellendi
- Etki alanı yalnızca
.exeyükleyicileriyle sınırlı değil; kod imzalama sertifikasıyla imzalanan tüm ikili dosyaları kapsıyor - Tartışmada Digicert’in yıllık 629 dolarlık sertifikası, SignPath, Azure Key Vault ve AzureSignTool, Azure Code Signing, kendi kendine imzalama gibi alternatifler gündeme geldi; bazılarında GitHub Actions entegrasyonu veya AppVeyor gereksinimi gibi kısıtlar bulunuyor
- ImageMagick, 6 Kasım 2023’te Azure Code Signing kullanmaya karar verdi ve bunun sonucunda ikili dosyaları yeniden imzalayabilir hâle geldi
Sertifikanın sona ermesi ve imzalamanın durması sorunu
- ImageMagick bakımcısı, şu anda kullanılan kod imzalama sertifikasının 28 Ekim 2023’te sona ereceğini duyurdu
- LeaderSSL uzun yıllar boyunca kod imzalama sertifikasına sponsor oldu, ancak artık sponsor olamayacak
- Haziran 2023’ten itibaren CA/B Forum gereksinimleri değişti; OV kod imzalama özel anahtarlarının aşağıdakilerden birinde saklanması gerekiyor
- FIPS 140-2 Level 2 sertifikalı cihaz
- Common Criteria Level EAL4+ sertifikalı cihaz
- Bu gereksinim nedeniyle ImageMagick, kod imzalama sertifikası ve özel anahtarı dışa aktarıp GitHub Actions üzerinde kullandığı mevcut yöntemi artık sürdüremeyecek
Gerekli alternatif ve maliyet
- Bakımcı, yeni yöntem için iki seçenek sundu
- Kendi GitHub ajanı ve donanım token’ı kullanmak
- GitHub ile entegre olan bulut tabanlı imzalama çözümü kullanmak
- Tercih edilen yöntem, GitHub ile entegre olan bulut çözümü
- O dönemde bakımcı, Digicert’in tek seçenek gibi göründüğünü söyledi; Digicert kod imzalama sertifikasının tek yıl için 629 dolar olduğunu ve vergilerin buna dahil olmadığını belirtti
- Kuruluşunuzun imzalı yükleyicilere ihtiyacı varsa kod imzalama sertifikasına sponsor olunmasını istedi
Etki alanı
- Bir katılımcı, etkinin yalnızca
.exeyükleyicileri için mi geçerli olduğunu, yoksa portable zip içindekimagick.exegibi tüm Win32 ikili dosyalarının da imzasız mı kalacağını sordu - Bakımcı, kod imzalama sertifikasıyla imzalanan tüm ikili dosyaların etkilendiğini yanıtladı
Tartışılan alternatifler
-
SignPath
- Bir katılımcı SignPath’i önerdi; bakımcı bu şirketi bilmediğini, ancak bir seçenek olabileceğini söyledi
- Başka bir katılımcı, OSS projelerinde SignPath’i 2 yıldan uzun süredir kullandığını ve sorulara her zaman iyi yanıt aldığını paylaştı
- Aynı katılımcı, SignPath’in kaynak doğrulama yöntemi nedeniyle imzalı ikili dosya veya yükleyici derlemeleri için AppVeyor gerektiğini; yükleyicinin de
.MSIbiçiminde olması gerektiğini bildiğini ekledi - SignPath tarafından bir katılımcı, ücretsiz sertifikada bazı kısıtlar olduğunu açıkladı
- “SignPath Foundation” adına verilen ücretsiz sertifika, şeffaf ve doğrulanabilir derlemeler gerektiriyor; o dönemde bu AppVeyor anlamına geliyordu
- GitHub Actions bağlayıcısının yakında sunulacağını belirtti
- MSI, MSIX, AppX gibi standart biçimlerde avantajları olsa da başka yükleyicileri de işleyebiliyor
- ImageMagick’in kayıtlı bir LLC’si bulunduğu için ImageMagick adına kısıtlama olmadan sertifika alınabileceğini ve ilk yılın SignPath tarafından sponsor edilebileceğini önerdi
-
Azure Key Vault ve AzureSignTool
- Bir katılımcı, GlobalSign tarafından verilen EV kod imzalama sertifikasını Azure Key Vault’a koyup AzureSignTool ile GitHub Actions’ta dosyaları imzaladığını paylaştı
- Bakımcı, bu yöntemin daha ucuz bir seçenek gibi göründüğünü söyledi ve
AzureSignToolkullanan dotnet/sign’ın da bir gün önce önerildiğini belirtti - Başka bir katılımcı, Windows yükleyicisini EV sertifikasıyla imzalamak için GlobalSign ve Azure Key Vault kombinasyonunu anlatan bir yazı paylaştı
- Bir katılımcı, Azure Key Vault’un bunu desteklediğini ve günde birkaç kez derleme imzalansa bile maliyetin sent düzeyinde olduğunu söyledi
- Daha sonra başka bir katılımcı, Ocak 2024’te sertifikasının süresi dolduktan sonra aynı sorunu yaşadığını; yeni sertifikanın bir cihazda verilmesi gerektiğini ve Azure Key Vault’a taşınamadığını ekledi
-
Azure Code Signing
- Bir katılımcı Azure Code Signing’e geçtiğini söyledi ve Microsoft ile ilgili ekiple iletişime geçmeyi deneyeceğini belirtti
- Bakımcı, AzureCodeSigningTAP’e doğrudan e-posta gönderdiğini söyledi
- Azure Code Signing mühendisi olduğunu belirten bir katılımcı, GitHub Actions’ı desteklediklerini söyledi ve gerekirse iletişime geçilmesini önerdi
-
Kendi kendine imzalama
- Bir katılımcı, ikili dosyaları kendi kendine imzalayıp kullanıcıların genel sertifikayı kurmasını sağlama yönteminin değerlendirilip değerlendirilmediğini sordu
- Bakımcı, bunu henüz değerlendirmediğini ve tartışmada önerilen seçenekleri gözden geçirdiğini söyledi
Nihai karar
- 6 Kasım 2023’te bakımcı, önerilen çeşitli seçenekler için teşekkür ederek Azure Code Signing kullanmaya karar verdiğini açıkladı
- Bu kararla ImageMagick ikili dosyaları yeniden imzalayabilir hâle geldi
- Kurulum sürecinin ayrı bir depodaki ImageMagick now uses Azure Code Signing yazısında özetlendiğini belirtti
1 yorum
Hacker News yorumları
e-spor koçları için ücretsiz bir açık kaynak video oynatıcı yaptım; ilk kurulumda uyarıyı aşmaları gerektiği yönünde sürekli şikâyet aldığım için acıyı anlıyorum.
Sertifika ücretini ödeyebilirim, ama zaten zaman harcayıp ücretsiz dağıttığım bir proje için bir de para vermek istemiyorum.
Açık kaynak yazılımlar için Let's Encrypt benzeri bir hizmet olsa iyi olurdu; fakat Microsoft ya da Apple açısından bu, insanları uygulama mağazası denen duvarlarla çevrili bahçeden çıkarabileceği için temel çıkarlarına ters düşer gibi görünüyor.
Yaklaşık 25 yıldır yazılım geliştiriyorum; “güvenlik” adı altında kendi bilgisayarım üzerindeki sahipliğimin azalmasını izlemek epey buruk.
https://www.vodon.gg/
Genelde verilen yanıt, kod imzalama sertifikalarının kötü amaçlı yazılım dağıtan kişiyi çevrimdışında cezalandırmayı ya da yalnızca belirli bir yayıncı listesindeki yazılımların kurulmasına izin veren politikaları mümkün kılmayı amaçlayan hukuki kimlik kanıtı olduğudur.
Buna karşılık HTTPS için alan adı doğrulama sertifikası, bir DNS adı üzerindeki kontrolü kanıtlamayı hedefler; bu da otomatik teknik yöntemlerle doğrulanabilir ve çevrimdışı kimlikle mutlaka bağlantılı değildir.
Let's Encrypt sertifikası, belirli bir DNS adını kontrol eden kişi tarafından belirli bir anahtarın kontrol ediliyor gibi göründüğünü doğrular; kod imzalama sertifikası ise belirli bir yargı alanında var olan belirli bir tüzel kişinin temsilcisi tarafından kontrol ediliyor gibi göründüğünü de doğrulamaya çalışır. Bu yüzden faydalı biçimde doğrulamanın maliyeti çok daha yüksektir.
Bir gün devletler bunu otomatikleştirmenin bir yolunu sunabilir, ama iki sertifikanın kanıtladığı şey ve doğrulama yöntemi oldukça farklıdır.
İlgili tartışma zaten https://news.ycombinator.com/item?id=38056024 adresinde daha uzun biçimde sürüyor.
Kullanıcılar bunu gerçekten o kadar önemsiyorsa maliyeti paylaşmaya istekli olmalılar; değillerse imzasız olması da sorun olmamalı.
Yeterince indirme sayısı birikince bu uyarı kapanıyor gibi görünüyor.
Mac kullanınca bu tür endişeler azalıyor.
Sorun yalnızca maliyet değil.
İmzalamayı otomatik yayın iş akışıyla yönetiyordum.
https://github.com/technion/rustypwneddownloader/blob/main/....
Yeni kurallara göre bu iş akışını kullanamıyorum; derlemeyi kendi masaüstüme taşıyıp donanım imzalama anahtarı kullanarak otomatik olmayan ve şeffaf da olmayan bir şekilde yüklemenin güvenliği artırdığı iddiasına ikna olmak zor.
Birincisi, dosya olarak saklanan özel anahtar sessizce çalınabilir; o durumda geriye yalnızca iptal etmek kalır.
HSM şartının başlıca nedeni budur; kötü amaçlı yazılım yazarları bunu bir süredir yapıyor ve çeşitli nedenlerle iptal süreci zor ve maliyetli.
HSM de çalınabilir, ama bunun için ofise ya da eve girip fiziksel olarak bir şeyi alıp götürmek gerekir; dolayısıyla fark edilme olasılığı daha yüksektir.
HSM kullanım kimlik bilgileri de çalınabilir, ancak kolayca ve hızlıca değiştirilebilir; PIN’in keylog ile ele geçirildiğini öğrenirseniz, ihlalden toparlandıktan sonra yalnızca PIN’i değiştirmeniz yeterlidir, sertifikayı iptal etmeniz gerekmez.
İkincisi, CI üzerinde otomatik imzalama gerçekten riskli olabilir.
CI sistemine kod push edebilen herkes sizin adınıza kod imzalatabilir ve bundan haberiniz bile olmayabilir.
Anahtar sürekli çevrimiçi olduğundan CI sistemi hacklenirse iş biter; öyle olmasa bile CI çok sayıda rastgele kod çalıştırır ve sıkı biçimde izlenmez, bu yüzden kod sokabilen herkes bir zayıflık hâline gelir.
Yerelde imzalarsanız anahtarı yayın anına kadar kelimenin tam anlamıyla çevrimdışı tutabilir, anahtar adlı sahiplik faktörü ile kimlik bilgisi adlı bilgi faktörünü kullanarak iki faktörlü kimlik doğrulama uygulayabilirsiniz; bu da oldukça güvenlidir.
Gecelik geliştirme derlemeleri, dahili araçlar ve dışarı çıkmaması gereken geçici ikililer için ücretsiz olarak kendi kendine imzalama yapılabilir.
GitHub Actions gizli değerlerinde OV .pfx sertifikası saklayıp aynı şekilde kullanıyorum.
Sertifikam Kasım 2024’te sona eriyor; ne yapacağıma henüz karar veremedim.
Şirket değil bireysel geliştirici olarak sertifika almak bile yeterince zordu.
Yine de sonuçta bunun para meselesi olması gerekiyor.
Metinde geçen yıllık 629 dolarlık bulutta barındırılan HSM ile mümkün; bu ücreti öderseniz, şu anda kullandığınız signtool ya da Set-AuthenticodeSignature gibi komutlarla GitHub Actions içinde çalışmasını sağlayabilirsiniz: https://docs.digicert.com/en/software-trust-manager/ci-cd-in...
100 dolar civarında küçük bir SFF/Atom PC’ye donanım anahtarı takarsınız.
Değişen tek şey, imzalama adımının buluttan yerel çalıştırıcıya taşınması olur.
Güvenlik açısından bunun iyileştirme olup olmadığına hangi taraftan bakmak gerektiğinden emin değilim.
ImageMagick gibi önemli ve yaygın kullanılan bir projenin yazılım imzalama gibi zorunlu bir unsur için 629 dolar bile bulamaması şaşırtıcı.
Teknoloji sektörünün, büyük ölçüde bel bağladığı açık kaynak projeleri finansal olarak gerektiği gibi destekleyemediğinin açık bir örneği.
Muazzam değer sağlasalar da bu tür projeler çoğu zaman sürdürülebilir olacak kadar değeri geri kazanamıyor.
Açık kaynak katkılarına nasıl yaklaştığımız ve onları nasıl değerlendirdiğimiz konusunda ciddi bir değişime ihtiyaç olduğunu hatırlatan soğuk bir reminder.
Asıl mesele bunun bir güvenlik sorunu mu olduğu, yoksa “güvenlik” diye bağırarak ancak para ödeyenlerin katılabildiği bir pazarı dayatma sorunu mu olduğu.
Bana kalırsa tam tersi olması gerekmez mi?
629 dolar önemsiz bir para değil.
Bu, Microsoft’un Windows ekosisteminde kendi yarattığı bir durum.
Microsoft’a ya da ortaklarına kira ödemekle değil.
Masaüstü metin düzenleyicim KeenWrite, Windows ikili dosyalarını imzalamak için Wine, rcedit-x64.exe, osslsigncode ve kabuk betikleri kullanıyor.
Önce rcedit-x64.exe ikili dosyaya tanımlayıcı bilgileri ekliyor.
https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/installe...
Ardından osslsigncode sertifikayı uyguluyor.
https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/...
Daha önce söylendiği gibi, geliri 0 dolar olan bir açık kaynak projesinin Windows’ta dağıtım yapmak için para ödemek zorunda kalması, bilgisayarım üzerindeki mülkiyetimin azalması demek.
Artık HSM tabanlı olması gerekiyor.
Hem Windows’ta hem macOS’ta uygulama imzalama yüzünden cehennemi yaşadım ve giderek daha da kötüleşiyor.
Öncelikle bu iş, her şeyi web uygulaması olarak sunma isteği uyandırıyor.
Tarayıcı birçok açıdan çok daha iyi bir deneyim sunuyor ve güvenliği de iyi entegre edilmiş durumda; buna karşılık 25 yıllık işletim sistemleri güvenliği sonradan yamamış gibi hissettiriyor.
Apple içinde kimsenin umurunda olmayacaktır ama eğer bu, donanım-yazılım tekelini yıkacak çatlak olursa epey komik olur.
İkinci olarak, üçüncü tarafların neden bu tür imzalamayı bir hizmet olarak sunamadığını merak ediyorum.
Teknik olarak imzalayabileceğim uygulama sayısında bir sınır yok, değil mi?
Kullanıcı açısından sertifikanın benim adımla değil de işletim sisteminin güvendiği ABC Corp adıyla imzalanmış olmasının neden sorun olduğunu da anlamıyorum.
Zincirin bir yerini iptal edebilirsiniz, ama teknik olarak mümkün görünüyor; ayrıca dalgın dalgın onayladığım EULA’nın bir yerinde bunun açıkça yasaklanıp yasaklanmadığını da merak ediyorum.
Yine de sonuçtan gerçekten memnunum, kullanıcılar da öyle görünüyor.
İlginçtir, yakın zamanda biri bana onu kullanmamı önerdi; ana yazarı olduğumu öğrenince epey şaşırdı.
Bu senaryoda her şeyi gözü kapalı mı imzalıyorsunuz? Öyleyse açıkça iyi değil.
Alternatif, uzun inceleme ve denetim süreçleri; ama bir şey aradan sıyrılırsa darbe yine imzalayana gelir.
Cihaz sürücüsü değilse, istemci tarafında tarayıcıda kullanılmak üzere yeniden derlenebilecek noktaya yaklaşıyoruz.
Şirkette yakın zamanda aynı sorunu yaşadık ve gereksinimlerin değiştiğini ancak mevcut sağlayıcıdan sertifikayı yenileyemediğimizde öğrendik.
Windows kod imzalamanın artık nasıl yapılacağına dair bilgi şaşırtıcı derecede az.
Fiziksel cihaz kullanmak istemedik; tamamen uzaktan çalışan bir ekip için gerçekçi değil.
Sonunda Digicert ile birlikte Azure KeyVault kullanmaya karar verdik.
Comodo, yani Sectigo, hoşuma gitmiyor.
Bu kombinasyonu gerçekten çalışır hale getirmeye dair bilgi çok az ve çalışıp çalışmadığını test edebilmeden önce yaklaşık 600 dolar harcamanız gerekiyor.
Yapılandırmayı bitirince iyi çalıştı.
Azure üzerinden imzalama yapan yeni kurulum, CI sisteminde özel anahtar tutmaktan daha güvenli.
Ama Windows uygulama imzalamanın macOS veya iOS imzalamadan daha zor olacağını hiç düşünmemiştim.
Görev tamamlandı.
Dediğiniz gibi bilgi eksikliği var; benim de dahil olduğum birçok kişi için yararlı olur.
Yanıtlardan birinde geçen SignPath’i (https://signpath.org) kullanan var mı merak ediyorum.
Web sitesinde “SignPath Foundation provides reliable code signing for Open Source projects.” yazıyor.
Meşru bir hizmetse faydalı bir seçenek olabilir.
Şu anda “vakıf” SignPath şirketi tarafından işletiliyor; ancak bir gün vakfın genişleyip bağımsız ve topluluk tarafından işletilen bir yapıya dönüşmesini umduklarını söylüyorlar.
“Developers, developers, developers!” nereye gitti diye düşündürüyor
Büyük teknoloji şirketlerinde ortak görünen şey şu: Başta iyi görünüyorlar, birkaç yıl sonra çürüme içeri sızıyor ve yeterince uzun dayanırlarsa sonunda parazitik bir varlığa dönüşüyorlar
Microsoft ölçeğinde bir şirketin, desteklediğini söylediği özgür ve açık kaynak dünyasının kendi platformuna zahmetsiz ya da maliyetsiz dağıtım yapabilmesini sağlayacak bir yol bulamaması mümkün değil
Güvenlik adı altındaki bu tür sürtünmeler tesadüfen her zaman gelire yardımcı oluyor
İmza sertifikası maliyetlerinin genel olarak düşürülmesini isterdim
En fazla 10 dolar civarı yeterli olur
Çok az kişinin kullandığı özel yazılımlar için mevcut maliyet haklı çıkarılamaz
Bunun bu kadar pahalı olması için aklıma gelen tek neden, çalıntı kartın gerçek sahibinin fark edeceği kadar büyük bir tutar olması gerektiği
Bu da başlı başına bir tür yazar doğrulaması anlamına gelebilir
Öyleyse 3 ay sonra bir kısmı ya da tamamı iade edilemez mi diye düşünüyorum
Doğrulama amacıyla bile olsa, bu doğrulama için her yıl para alınmasına pek gerek yok gibi görünüyor; sonuçta rant kollama gibi duruyor
Store, hatırladığım kadarıyla tek seferlik $19 ve yinelenen ya da yıllık bir ücret değil
Dolayısıyla bu sorun yalnızca Store dışında dağıtım yaparken geçerli
Sertifikaların pahalı olmasının nedeni, devletlerin dijitalleşmemiş olması ve kriptografiyi düzgün ele almaması; bu yüzden özel anahtar sahipliği ile yasal kimlik sahipliğini ilişkilendirmek için çok fazla manuel iş gerekiyor
Sertifika otoriteleri ülkeye göre web sitelerinden kayıt bilgilerini aramak zorunda kalıyor, çoğu zaman API olmuyor; telefon görüşmeleri yapmaları, pasaport taramalarını incelemeleri vb. gerekiyor
Tüm bunlar emek yoğun olduğu için pahalılaşıyor
Devletler kendi açık anahtar altyapılarını işletip şirket kaydı sırasında özel anahtarı da birlikte verseydi ya da pasaportlarda belge imzalama için özel anahtar bulunsaydı, bu çok daha ucuza gelebilirdi
Ne yazık ki uzun zamandır ilerleme olmadı ve ulusal açık anahtar altyapısını deneyen birkaç ülke de büyük ölçüde vazgeçti
ABD, Savunma Bakanlığı dışında büyük ölçekli bir devlet açık anahtar altyapısını hiç denemedi; bu yüzden ABD’li yazılım şirketleri de akıllı kart desteğini iyi yapma ihtiyacını pek hissetmedi
Yaygın işletim sistemlerinde sağlam destek yok ve standartlar da yetersiz
Buna bir de sertifika tüketicisi Microsoft’un ve CA/Browser Forum’un sertifika otoritelerinden istediği yüksek operasyonel yük ekleniyor
Bunun da bir maliyeti var
Yıllık ücretler, maliyeti zamana yaymak için var
Sertifika otoritesi ilk sertifikayı verirken 1 yıllık ücretten daha fazla masraf yapıyor; ama kullanıcının birkaç yıl kullanacağını varsayarsa başa baş noktasını geçip küçük bir kâr edebiliyor
https://www.gnu.org/philosophy/right-to-read.en.html
Yaşadıkça RMS’in modern çağın Kassandra’sı olduğunu daha iyi anlıyorum