- ImageMagick ने घोषणा की कि 28 अक्टूबर 2023 को उसका मौजूदा code signing certificate expire हो जाएगा, और उसे LeaderSSL द्वारा sponsor किया जाने वाला certificate अब नहीं मिल पाएगा
- जून 2023 से CA/B Forum ने OV code signing private key को FIPS 140-2 Level 2 या Common Criteria Level EAL4+ certified device में store करना अनिवार्य कर दिया, जिससे private key export करके GitHub Actions में इस्तेमाल करने का तरीका बंद हो गया
- असर सिर्फ
.exeinstaller तक सीमित नहीं है, बल्कि code signing certificate से sign किए जाने वाले सभी binaries पर लागू है - चर्चा में Digicert का सालाना 629 डॉलर वाला certificate, SignPath, Azure Key Vault और AzureSignTool, Azure Code Signing, self-signing जैसे विकल्प सामने आए; इनमें से कुछ में GitHub Actions integration या AppVeyor requirement जैसी सीमाएँ हैं
- ImageMagick ने 6 नवंबर 2023 को Azure Code Signing इस्तेमाल करने का फैसला किया, जिसके बाद binaries को फिर से sign करना संभव हो गया
Certificate expire होने और signing बंद होने की समस्या
- ImageMagick maintainer ने घोषणा की कि 28 अक्टूबर 2023 को वर्तमान में इस्तेमाल हो रहा code signing certificate expire हो जाएगा
- कई वर्षों तक LeaderSSL ने code signing certificate sponsor किया था, लेकिन अब वे sponsorship जारी नहीं रख पाएँगे
- जून 2023 से CA/B Forum requirements बदल गईं, और OV code signing private key को इनमें से किसी एक में store करना जरूरी हो गया
- FIPS 140-2 Level 2 certified device
- Common Criteria Level EAL4+ certified device
- इस requirement के कारण ImageMagick अब code signing certificate और private key को export करके GitHub Actions में इस्तेमाल करने वाला पुराना तरीका जारी नहीं रख सकता
जरूरी विकल्प और लागत
- maintainer ने नए तरीके के तौर पर दो विकल्प बताए
- अपना GitHub agent और hardware token इस्तेमाल करना
- GitHub के साथ integrate होने वाला cloud-based signing solution इस्तेमाल करना
- पसंदीदा तरीका GitHub के साथ integrate होने वाला cloud solution है
- उस समय maintainer ने कहा कि Digicert ही एकमात्र विकल्प जैसा दिखता है, और Digicert code signing certificate एक साल के लिए 629 डॉलर का है, taxes अलग से हैं
- उन्होंने अनुरोध किया कि अगर किसी organization को signed installer की जरूरत है, तो code signing certificate sponsor करें
असर का दायरा
- एक participant ने पूछा कि असर सिर्फ
.exeinstaller तक है या portable zip केmagick.exeजैसे सभी Win32 binaries भी unsigned रहेंगे - maintainer ने जवाब दिया कि code signing certificate से sign किए जाने वाले सभी binaries प्रभावित होंगे
चर्चा में आए विकल्प
-
SignPath
- एक participant ने SignPath सुझाया, और maintainer ने जवाब दिया कि वे उस company को नहीं जानते थे, लेकिन यह एक विकल्प हो सकता है
- दूसरे participant ने अपना अनुभव साझा किया कि उन्होंने OSS project में SignPath को 2 साल से ज्यादा इस्तेमाल किया है, और सवालों पर हमेशा अच्छा response मिला
- उसी participant ने जोड़ा कि SignPath के provenance verification तरीके के कारण signed binary या installer build के लिए AppVeyor की जरूरत होती है, और उनकी समझ के अनुसार installer
.MSIformat में होना चाहिए - SignPath की ओर से एक participant ने बताया कि free certificate पर कुछ सीमाएँ हैं
- “SignPath Foundation” को जारी होने वाला free certificate transparent और verifiable builds मांगता है, जिसका उस समय मतलब AppVeyor था
- GitHub Actions connector जल्द उपलब्ध होने वाला है
- MSI, MSIX, AppX जैसे standard formats में फायदे हैं, लेकिन दूसरे installers भी process किए जा सकते हैं
- चूँकि ImageMagick के पास registered LLC है, इसलिए ImageMagick के नाम पर बिना restrictions certificate मिल सकता है, और पहले साल को SignPath sponsor कर सकता है
-
Azure Key Vault और AzureSignTool
- एक participant ने साझा किया कि वे GlobalSign द्वारा जारी EV code signing certificate को Azure Key Vault में रखते हैं और AzureSignTool से GitHub Actions में files sign करते हैं
- maintainer ने जवाब दिया कि यह तरीका ज्यादा सस्ता विकल्प लगता है, और बताया कि पिछले दिन
AzureSignToolइस्तेमाल करने वाला dotnet/sign भी recommend किया गया था - दूसरे participant ने GlobalSign और Azure Key Vault के combination से Windows installer को EV certificate से sign करने पर एक article साझा किया
- एक participant ने कहा कि Azure Key Vault इसे support करता है और दिन में कई बार builds sign करने पर भी लागत cents के स्तर पर रहती है
- बाद में एक अन्य participant ने जोड़ा कि जनवरी 2024 में certificate expire होने के बाद उन्हें भी यही समस्या आई; नया certificate device पर issue होना था और उसे Azure Key Vault में move नहीं किया जा सकता था
-
Azure Code Signing
- एक participant ने कहा कि वे Azure Code Signing पर migrate कर चुके हैं और Microsoft तथा उस team से संपर्क करने की कोशिश करेंगे
- maintainer ने जवाब दिया कि उन्होंने AzureCodeSigningTAP को सीधे email भेजा है
- खुद को Azure Code Signing engineer बताने वाले participant ने कहा कि यह GitHub Actions को support करता है, और जरूरत होने पर संपर्क करने को कहा
-
Self-signing
- एक participant ने पूछा कि क्या binaries को self-sign करके public certificate users से install करवाने का तरीका consider किया गया है
- maintainer ने जवाब दिया कि अभी इस पर विचार नहीं किया है, और चर्चा में सुझाए गए विकल्पों की समीक्षा कर रहे हैं
अंतिम फैसला
- 6 नवंबर 2023 को maintainer ने सुझाए गए कई विकल्पों के लिए धन्यवाद देते हुए बताया कि उन्होंने Azure Code Signing इस्तेमाल करने का फैसला किया है
- इस फैसले से ImageMagick binaries को फिर से sign कर पाने में सक्षम हो गया
- setup process को अलग repository के article ImageMagick now uses Azure Code Signing में summarize किया गया है
1 टिप्पणियां
Hacker News की राय
eSports coaches के लिए मैंने एक open-source video player मुफ्त में बनाया, लेकिन पहली बार install करते समय warning को bypass करना पड़ता है—इस शिकायत को लगातार सुनकर दर्द समझ में आता है
certificate की लागत दे सकता हूं, लेकिन जिस project को मैं पहले ही अपना समय देकर मुफ्त में distribute कर रहा हूं, उस पर और पैसे खर्च नहीं करना चाहता
open-source software के लिए Let's Encrypt जैसी service हो तो अच्छा होगा, लेकिन Microsoft या Apple के नजरिए से यह लोगों को app store वाले walled garden से बाहर ले जा सकती है, इसलिए शायद उनके मुख्य हितों के खिलाफ होगी
करीब 25 साल से software बना रहा हूं, और “security” के नाम पर अपने computer पर ownership कम होते देखना काफी कड़वा लगता है
https://www.vodon.gg/
आम तौर पर जवाब यह होता है कि code-signing certificate का मकसद कानूनी पहचान का प्रमाण देना है, ताकि malware distribute करने वाले व्यक्ति को offline दंडित किया जा सके, या केवल कुछ publishers की list वाले software install करने की policy लागू की जा सके
इसके उलट HTTPS के लिए domain validation certificate का मकसद DNS name पर control साबित करना है, जिसे automated technical तरीकों से verify किया जा सकता है और यह जरूरी नहीं कि offline identity से जुड़ा हो
Let's Encrypt certificate यह पुष्टि करता है कि कोई key किसी खास DNS name को control करने वाले व्यक्ति के control में लगती है, लेकिन code-signing certificate यह भी verify करना चाहता है कि वह किसी खास jurisdiction में मौजूद किसी खास legal entity के representative के control में लगती है, इसलिए इसे उपयोगी ढंग से verify करने की लागत कहीं ज्यादा है
कभी सरकार इसे automate करने का तरीका दे सकती है, लेकिन दोनों certificates क्या साबित करते हैं और उन्हें verify करने का तरीका काफी अलग है
इससे जुड़ी लंबी चर्चा पहले से https://news.ycombinator.com/item?id=38056024 पर चल रही है
अगर users सच में इतनी परवाह करते हैं, तो उन्हें cost share करने के लिए तैयार होना चाहिए; नहीं तो unsigned होना भी समस्या नहीं होना चाहिए
लगता है download count पर्याप्त हो जाने पर यह warning बंद हो जाती है
Mac इस्तेमाल करें तो ऐसी चिंताएं कम हो जाती हैं
सिर्फ cost ही समस्या नहीं है
मैं automated release workflow से signing manage कर रहा था
https://github.com/technion/rustypwneddownloader/blob/main/....
नए rules के तहत यह workflow इस्तेमाल नहीं कर सकते, और build को अपने desktop पर ले जाकर hardware signing key से, non-automated और non-transparent तरीके से upload करना security improvement है—यह दावा समझना मुश्किल है
पहला, file में stored private key चुपचाप चोरी हो सकती है, और तब बचने का तरीका सिर्फ revoke करना होता है
HSM requirement की मुख्य वजह यही है; malware authors काफी समय से ऐसा करते आए हैं, और कई वजहों से revocation मुश्किल और महंगा होता है
HSM भी चोरी हो सकता है, लेकिन उसके लिए office या घर में घुसकर चीज उठानी पड़ेगी, इसलिए पता चलने की संभावना ज्यादा है
HSM इस्तेमाल करने के credentials भी चोरी हो सकते हैं, लेकिन उन्हें आसानी से और जल्दी बदला जा सकता है; अगर पता चले कि PIN keylog हो गया है, तो breach से recover करने के बाद सिर्फ PIN बदलना होगा, certificate revoke करने की जरूरत नहीं होगी
दूसरा, CI में automated signing सच में risky हो सकती है
CI system में code push कर सकने वाला कोई भी व्यक्ति आपके नाम से code signing करवा सकता है, और हो सकता है आपको पता भी न चले
key हमेशा online रहती है, इसलिए CI system hack हो गया तो बात खत्म; और अगर ऐसा न भी हो, CI arbitrary code बहुत चलाता है और उसकी close monitoring नहीं होती, इसलिए code push कर सकने वाला हर व्यक्ति कमजोरी बन जाता है
locally sign करने पर key को release के क्षण तक सचमुच offline रखा जा सकता है, और key वाले possession factor व credentials वाले knowledge factor के साथ two-factor authentication लगाया जा सकता है, जिससे यह काफी safe होता है
nightly development builds, internal tools, और temporary binaries जिन्हें बाहर नहीं जाना चाहिए, उन्हें मुफ्त में self-sign किया जा सकता है
GitHub Actions secrets में OV .pfx certificate store करके उसी तरह इस्तेमाल कर रहा हूं
मेरा certificate नवंबर 2024 में expire होगा, और अभी तय नहीं किया कि क्या करूं
company नहीं बल्कि individual developer के रूप में certificate पाना ही काफी मुश्किल था
फिर भी अंततः यह पैसे का मामला होना चाहिए
original में बताया गया $629/year cloud-hosted HSM हो तो यह संभव है, और वह cost देने पर अभी इस्तेमाल होने वाले signtool या Set-AuthenticodeSignature जैसे commands से इसे GitHub Actions में चलाया जा सकता है: https://docs.digicert.com/en/software-trust-manager/ci-cd-in...
करीब 100 dollar का छोटा SFF/Atom PC लेकर उसमें hardware key लगा दें
बदलता सिर्फ इतना है कि signing step cloud से local runner पर चला जाता है
security के लिहाज से यह improvement है या नहीं, किस नजरिए से देखें—यह मुझे ठीक से नहीं पता
यह हैरान करने वाली बात है कि ImageMagick जैसा अहम और व्यापक रूप से इस्तेमाल होने वाला project software signing जैसी ज़रूरी चीज़ के लिए $629 तक नहीं जुटा पाता
यह इस बात का साफ़ उदाहरण है कि tech industry जिन open source projects पर बहुत निर्भर करती है, उन्हें आर्थिक रूप से ठीक से support नहीं कर पाती
बहुत ज़्यादा value देने के बावजूद, ऐसे projects अक्सर टिकाऊ बने रहने लायक पर्याप्त value वापस हासिल नहीं कर पाते
यह एक ठंडी reminder है कि open source योगदानों को देखने और उनका मूल्यांकन करने के तरीके में बड़ा बदलाव चाहिए
असल सवाल यह है कि यह security की समस्या है या “security” के नाम पर पैसे देकर ही हिस्सा ले सकने वाला market थोपने की समस्या
बल्कि उल्टा होना चाहिए, ऐसा लगता है
$629 कोई मामूली रकम नहीं है
यह Microsoft ने Windows ecosystem में खुद पैदा की हुई स्थिति है
Microsoft या उसके partners को किराया देने के बारे में नहीं
मेरा desktop text editor KeenWrite Windows binaries को sign करने के लिए Wine, rcedit-x64.exe, osslsigncode और shell scripts का इस्तेमाल करता है
पहले rcedit-x64.exe binary में पहचान से जुड़ी जानकारी जोड़ता है
https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/installe...
उसके बाद osslsigncode certificate apply करता है
https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/...
जैसा पहले कहा, zero-dollar revenue वाले open source project को Windows पर distribute करने के लिए पैसा देना पड़े, तो यह मेरे computer पर मेरे ownership को कम करने जैसा है
अब यह HSM-based होना चाहिए
Windows और macOS दोनों पर application signing के साथ नरक झेला है, और यह लगातार और खराब हो रहा है
सबसे पहले तो यह चीज़ किसी भी चीज़ को web app के रूप में देने का मन कराती है
browser कई मायनों में कहीं बेहतर experience देता है, और security भी अच्छी तरह integrated experience है, जबकि 25 साल पुराने operating systems security को बाद में चिपकाई गई चीज़ जैसा महसूस कराते हैं
Apple के अंदर शायद किसी को फर्क नहीं पड़ेगा, लेकिन अगर यही hardware-software monopoly को तोड़ने वाली दरार बन जाए तो काफी मज़ेदार होगा
दूसरी बात, मुझे हैरानी है कि कोई third party इस तरह की signing को service के रूप में क्यों नहीं दे सकती
technically मैं जितने apps sign कर सकता हूं, उसकी कोई limit तो नहीं है, है ना?
user के नज़रिए से, certificate मेरे नाम के बजाय OS द्वारा trusted ABC Corp के नाम से signed हो तो यह समस्या क्यों है, यह भी समझ नहीं आता
chain में कहीं कुछ revoke किया जा सकता है, लेकिन technically यह संभव लगता है, और यह भी सोचता हूं कि क्या किसी EULA में, जिस पर मैंने बिना ध्यान दिए agree किया था, इसे explicitly ban किया गया है
फिर भी result से मैं सच में खुश हूं और users भी शायद ऐसे ही हैं
मज़ेदार बात यह है कि हाल ही में किसी ने मुझे इसे try करने की सलाह दी, और जब उसे पता चला कि मैं इसका main author हूं तो वह काफी हैरान हुआ
इस scenario में क्या कोई भी चीज़ आंख बंद करके sign कर दी जाएगी? अगर हां, तो यह साफ़ तौर पर अच्छा नहीं है
alternative है लंबी review और audit process, लेकिन अगर कुछ बचकर निकल गया तो फिर भी signer को ही नुकसान होगा
अगर बात device driver की नहीं है, तो हम उस point के करीब पहुंच रहे हैं जहां client-side browser में इस्तेमाल के लिए recompile किया जा सके
हमारी company में हाल ही में यही समस्या आई, और requirements बदलने का पता तब चला जब हम मौजूदा provider से certificate renew नहीं कर पाए
अब Windows code signing कैसे करनी है, इस पर जानकारी हैरान करने वाली हद तक कम है
हम physical device इस्तेमाल नहीं करना चाहते थे, और पूरी तरह remote team के लिए यह practical नहीं है
आखिरकार हमने Digicert के साथ Azure KeyVault इस्तेमाल करने का फैसला किया
Comodo, यानी Sectigo, मुझे पसंद नहीं है
इस combination को सच में चलाने के बारे में जानकारी बहुत कम है, और यह test करने से पहले ही कि यह काम करेगा या नहीं, करीब $600 खर्च करने पड़ते हैं
configuration पूरा करने के बाद यह ठीक चलता है
Azure के जरिए signing वाला नया setup CI system में private key store करने से ज़्यादा secure है
लेकिन मैंने कभी नहीं सोचा था कि Windows app signing macOS या iOS signing से ज़्यादा मुश्किल होगी
mission accomplished
जैसा आपने कहा, जानकारी की कमी है, इसलिए मेरे समेत कई लोगों के लिए उपयोगी होगा
जवाबों में से एक में आए SignPath(https://signpath.org) को किसी ने इस्तेमाल किया है या नहीं, जानना चाहता हूं
website पर लिखा है “SignPath Foundation provides reliable code signing for Open Source projects.”
अगर यह legitimate service है, तो उपयोगी option हो सकता है
अभी “foundation” SignPath company चलाती है, लेकिन वे कहते हैं कि उम्मीद है किसी दिन foundation expand होकर independent और community-run रूप लेगी
“Developers, developers, developers!” कहाँ गया, ऐसा लगता है
बड़ी tech कंपनियों में एक बात आम दिखती है: शुरुआत में वे अच्छी लगती हैं, फिर कुछ साल बाद सड़न घुसने लगती है, और अगर वे काफी लंबे समय तक टिक जाएँ तो आखिरकार परजीवी अस्तित्व में बदल जाती हैं
Microsoft जैसी आकार की कंपनी के लिए यह असंभव नहीं होना चाहिए कि वह उस free और open source दुनिया को, जिसका वह समर्थन करने की बात करती है, अपने platform पर बिना झंझट या लागत के distribute करने का तरीका बना सके
सुरक्षा के नाम पर पैदा की गई ऐसी रुकावटें हमेशा संयोग से revenue के लिए मददगार साबित होती हैं
अच्छा होगा अगर signing certificate की लागत कुल मिलाकर कम कर दी जाए
ज्यादा से ज्यादा 10 डॉलर के आसपास काफी है
बहुत कम लोगों द्वारा इस्तेमाल किए जाने वाले specialized software के लिए मौजूदा लागत को justify नहीं किया जा सकता
इसके इतना महँगा होने की जो वजह सोच में आती है, वह बस इतनी है कि रकम इतनी बड़ी हो कि चोरी हुए card का असली owner उसे notice कर ले
इसका मतलब यह हो सकता है कि यह अपने-आप में एक तरह का author verification है
अगर ऐसा है, तो 3 महीने बाद कुछ या पूरा पैसा refund कर देना चाहिए, ऐसा लगता है
verification के उद्देश्य से भी उस verification के लिए हर साल पैसे लेने की जरूरत बहुत कम दिखती है, और आखिरकार यह rent-seeking जैसा लगता है
Store, जहाँ तक याद है, one-time $19 है और recurring या annual cost नहीं है
इसलिए यह समस्या सिर्फ Store के बाहर distribute करते समय लागू होती है
certificates महँगे इसलिए हैं क्योंकि सरकारें digitalized नहीं हैं और cryptography को ठीक से handle नहीं करतीं, इसलिए private key के ownership को legal identity के ownership से जोड़ने में काफी manual work लगता है
Certificate authorities को देश-वार websites पर registration details खोजनी पड़ती हैं, कई बार API नहीं होती, phone calls करनी पड़ती हैं, passport scans review करने पड़ते हैं वगैरह
यह सब labour-intensive है, इसलिए महँगा हो जाता है
अगर सरकारें अपना public key infrastructure चलाएँ और company registration के समय private key भी issue करें, या passports में document signing के लिए private key शामिल हो, तो यह बहुत सस्ता हो सकता है
अफसोस कि लंबे समय से इस दिशा में कोई प्रगति नहीं हुई, और जिन कुछ देशों ने national public key infrastructure के साथ प्रयोग किया था, उनमें से अधिकांश ने उसे छोड़ दिया
अमेरिका ने Department of Defense के बाहर बड़े पैमाने पर government public key infrastructure की कोशिश कभी नहीं की, इसलिए अमेरिकी software companies को भी smartcard support अच्छा बनाने की ज्यादा जरूरत महसूस नहीं हुई
mainstream operating systems में मजबूत support नहीं है और standards की भी कमी है
इसके अलावा certificate consumers Microsoft और CA/Browser Forum द्वारा certificate authorities पर लगाई गई भारी operational burden भी है
इसकी भी लागत आती है
annual fee का मकसद लागत को समय के साथ बाँटना है
certificate authority को पहली बार certificate issue करते समय 1 साल की fee से ज्यादा खर्च पड़ता है, लेकिन अगर वे मान लें कि user इसे कई साल इस्तेमाल करेगा, तो वे break-even पार कर सकते हैं और थोड़ा profit कमा सकते हैं
https://www.gnu.org/philosophy/right-to-read.en.html
जितना ज्यादा जीता हूँ, उतना ही महसूस होता है कि RMS आधुनिक युग के Cassandra थे