कोड साइनिंग: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Software authentication}}कोड हस्ताक्षर सॉफ्टवेयर लेखक की पुष्टि करने और यह गारंटी देने के लिए डिजिटल रूप से [[डिजिटल हस्ताक्षर और कानून]] [[निष्पादन]] योग्य और स्क्रिप्टिंग भाषा की प्रक्रिया है कि कोड पर हस्ताक्षर किए जाने के बाद से उसे बदला या दूषित नहीं किया गया है। यह प्रक्रिया प्रामाणिकता और अखंडता को मान्य करने के लिए क्रिप्टोग्राफ़िक हैश का उपयोग करती है।<ref>{{Cite web|url=https://msdn.microsoft.com/en-us/library/ms537361(v=vs.85).aspx|title=Introduction to Code Signing}}</ref> कोड साइनिंग का आविष्कार 1995 में माइकल डॉयल द्वारा ईओलास वेबविश ब्राउज़र प्लग-इन के हिस्से के रूप में किया गया था, जिसने एक गुप्त कुंजी का उपयोग करके डाउनलोड करने योग्य वेब ऐप प्रोग्राम कोड पर हस्ताक्षर करने के लिए सार्वजनिक-कुंजी क्रिप्टोग्राफी के उपयोग को सक्षम किया, ताकि प्लग-इन कोड दुभाषिया कर सके। फिर कोड दुभाषिया के एपीआई तक पहुंच की अनुमति देने से पहले कोड को प्रमाणित करने के लिए संबंधित सार्वजनिक कुंजी का उपयोग करें। <ref>{{Cite web|url= https://archive.org/details/dr_dobbs_journal-1996_02/page/22/mode/2up|title=WebWish: Our Wish is Your Command}}</ref>
{{Short description|Software authentication}}कोड साइनिंग सॉफ्टवेयर स्क्रिप्ट को कन्फर्म करने और यह गारंटी देने के लिए [[निष्पादन|एक्सेक्यूटेबल्स]] और स्क्रिप्ट पर [[डिजिटल हस्ताक्षर और कानून|डिजिटल रूप से साइनिंग]] करने की प्रक्रिया है कि कोड पर साइनिंग किए जाने के पश्चात से उसे ऑल्टड या कर्रप्टेड नहीं किया गया है। यह प्रोसेस ऑथेंटिसिटी और इंटीग्रिटी को वैलिड करने के लिए क्रिप्टोग्राफ़िक हैश का उपयोग करती है।<ref>{{Cite web|url=https://msdn.microsoft.com/en-us/library/ms537361(v=vs.85).aspx|title=Introduction to Code Signing}}</ref> कोड साइनिंग का आविष्कार 1995 में माइकल डॉयल द्वारा ईओलास वेबविश ब्राउज़र प्लग-इन के भाग के रूप में किया गया था, जिसने एक सीक्रेट की का उपयोग करके डाउनलोड करने योग्य वेब ऐप प्रोग्राम कोड पर साइनिंग करने के लिए पब्लिक-की क्रिप्टोग्राफी के उपयोग को सक्षम किया, जिससे प्लग-इन कोड इंटरप्रेटर कर सके। फिर कोड इंटरप्रेटर के एपीआई तक एक्सेस करने की अनुमति देने से पहले कोड को ऑथेंटिकेट करने के लिए संबंधित पब्लिक की का उपयोग किया जाता है। <ref>{{Cite web|url= https://archive.org/details/dr_dobbs_journal-1996_02/page/22/mode/2up|title=WebWish: Our Wish is Your Command}}</ref>
कोड हस्ताक्षर कई मूल्यवान सुविधाएँ प्रदान कर सकते हैं। कोड हस्ताक्षर का सबसे आम उपयोग तैनाती के समय सुरक्षा प्रदान करना है; कुछ प्रोग्रामिंग भाषाओं में, इसका उपयोग नेमस्पेस विवादों को रोकने में मदद के लिए भी किया जा सकता है। लगभग हर कोड हस्ताक्षर कार्यान्वयन लेखक या निर्माण प्रणाली की पहचान को सत्यापित करने के लिए कुछ प्रकार के डिजिटल हस्ताक्षर तंत्र प्रदान करेगा, और यह सत्यापित करने के लिए एक [[ अंततः, ]] प्रदान करेगा कि ऑब्जेक्ट को संशोधित नहीं किया गया है। इसका उपयोग किसी ऑब्जेक्ट के बारे में संस्करण जानकारी प्रदान करने या किसी ऑब्जेक्ट के बारे में अन्य [[ मेटाडाटा ]] संग्रहीत करने के लिए भी किया जा सकता है।<ref>{{cite web |url= https://www.cabforum.org/wp-content/uploads/Baseline_Requirements_V1.pdf|title= विश्वसनीय प्रमाणपत्रों का संपूर्ण अवलोकन - CABForum|year=2015 |last1=Hendric |first1=William |access-date=2015-02-26}}</ref>
सॉफ़्टवेयर के लिए प्रमाणीकरण तंत्र के रूप में कोड हस्ताक्षर की प्रभावशीलता अंतर्निहित हस्ताक्षर कुंजी की सुरक्षा पर निर्भर करती है। अन्य सार्वजनिक कुंजी अवसंरचना|सार्वजनिक कुंजी अवसंरचना (पीकेआई) प्रौद्योगिकियों की तरह, सिस्टम की अखंडता अनधिकृत पहुंच के खिलाफ अपनी निजी कुंजी सुरक्षित करने वाले प्रकाशकों पर निर्भर करती है। सामान्य प्रयोजन के कंप्यूटरों पर सॉफ़्टवेयर में संग्रहीत कुंजियाँ समझौता करने के लिए अतिसंवेदनशील होती हैं। इसलिए, [[हार्डवेयर सुरक्षा मॉड्यूल]] या हार्डवेयर सुरक्षा मॉड्यूल के रूप में जाने जाने वाले सुरक्षित, छेड़छाड़-रोधी, क्रिप्टोग्राफ़िक हार्डवेयर उपकरणों में चाबियाँ संग्रहीत करना अधिक सुरक्षित और सर्वोत्तम अभ्यास है।<ref>{{Cite web|url=https://www.thawte.com/code-signing/whitepaper/best-practices-for-code-signing-certificates.pdf|title=Securing your Private Keys as Best Practice for Code Signing Certificates}}</ref>


== सुरक्षा प्रदान करना ==
कोड साइनिंग कई वैल्युएबल फीचर प्रदान कर सकते हैं। कोड साइनिंग का सबसे सरल उपयोग डेप्लॉयिंग के समय सिक्योरिटी प्रदान करना है; कुछ प्रोग्रामिंग लैंग्वेज में, इसका उपयोग नेमस्पेस कन्फ्लिक्ट्स को प्रिवेंट में सहायता के लिए भी किया जा सकता है। लगभग सभी कोड साइनिंग इम्प्लीमेंटेशन ऑथर या बिल्ड सिस्टम की आइडेंटिटी को वेरीफाई करने के लिए कुछ प्रकार के डिजिटल साइनिंग मैकेनिज्म प्रदान करेगा, और यह वेरीफाई करने के लिए[[ अंततः, | चेकसम]] प्रदान करेगा कि ऑब्जेक्ट को मॉडिफाई नहीं किया गया है। इसका उपयोग किसी ऑब्जेक्ट के बारे में वर्जनिंग इनफार्मेशन प्रदान करने या किसी ऑब्जेक्ट के बारे में अन्य [[ मेटाडाटा |मेटाडाटा]] स्टोर करने के लिए भी किया जा सकता है।<ref>{{cite web |url= https://www.cabforum.org/wp-content/uploads/Baseline_Requirements_V1.pdf|title= विश्वसनीय प्रमाणपत्रों का संपूर्ण अवलोकन - CABForum|year=2015 |last1=Hendric |first1=William |access-date=2015-02-26}}</ref>
कई कोड हस्ताक्षर कार्यान्वयन [[ परिवहन परत सुरक्षा ]] या [[ सुरक्षित खोल ]] द्वारा नियोजित प्रक्रिया के समान, कुंजी की एक जोड़ी, एक सार्वजनिक और एक निजी, को शामिल करते हुए एक सिस्टम का उपयोग करके कोड पर हस्ताक्षर करने का एक तरीका प्रदान करेंगे। उदाहरण के लिए, .NET के मामले में, डेवलपर हर बार निर्माण करते समय अपनी लाइब्रेरी या निष्पादन योग्य पर हस्ताक्षर करने के लिए एक निजी कुंजी का उपयोग करता है। यह कुंजी किसी डेवलपर या समूह या कभी-कभी प्रति एप्लिकेशन या ऑब्जेक्ट के लिए अद्वितीय होगी। डेवलपर या तो यह कुंजी स्वयं उत्पन्न कर सकता है या किसी विश्वसनीय प्रमाणपत्र प्राधिकारी (सीए) से प्राप्त कर सकता है।<ref>{{Cite web |url = https://www.instantssl.com/code-signing-certificate.html |title = What is Code Signing? |date = 17 June 2011 |first = William |last = Hendric |access-date = 26 February 2015}}</ref>
कोड हस्ताक्षर वितरित वातावरण में विशेष रूप से मूल्यवान है, जहां किसी दिए गए कोड का स्रोत तुरंत स्पष्ट नहीं हो सकता है - उदाहरण के लिए [[जावा एप्लेट]], [[एक्टिवेक्स]] नियंत्रण और अन्य सक्रिय वेब और ब्राउज़र स्क्रिप्टिंग कोड। एक अन्य महत्वपूर्ण उपयोग मौजूदा सॉफ़्टवेयर को सुरक्षित रूप से अपडेट और पैच प्रदान करना है।<ref>{{Cite web|url=https://msdn.microsoft.com/en-us/library/windows/desktop/aa368289(v=vs.85).aspx|title=Digital Signatures and Windows Installer}}</ref> [[माइक्रोसॉफ़्ट विंडोज़]], {{nowrap|[[Mac OS X]]}}, और अधिकांश [[लिनक्स वितरण]] यह सुनिश्चित करने के लिए कोड हस्ताक्षर का उपयोग करके अपडेट प्रदान करते हैं कि दूसरों के लिए पैच सिस्टम के माध्यम से दुर्भावनापूर्ण रूप से कोड वितरित करना संभव नहीं है। यह प्राप्तकर्ता ऑपरेटिंग सिस्टम को यह सत्यापित करने की अनुमति देता है कि अपडेट वैध है, भले ही अपडेट तीसरे पक्ष या भौतिक मीडिया (डिस्क) द्वारा वितरित किया गया हो।


पहली बार चलाने (कंप्यूटिंग) पर सॉफ़्टवेयर को प्रमाणित करने के लिए विंडोज़ और मैक ओएस एक्स पर कोड साइनिंग का उपयोग किया जाता है, जिससे यह सुनिश्चित होता है कि सॉफ़्टवेयर के साथ किसी तीसरे पक्ष के वितरक या डाउनलोड साइट द्वारा दुर्भावनापूर्ण रूप से छेड़छाड़ नहीं की गई है। कोड हस्ताक्षर के इस रूप का उपयोग लिनक्स पर उस प्लेटफ़ॉर्म की विकेन्द्रीकृत प्रकृति के कारण नहीं किया जाता है, [[ पैकेज प्रबंधक ]] सभी प्रकार के सॉफ़्टवेयर (केवल अपडेट और पैच नहीं) के लिए वितरण का प्रमुख तरीका है, साथ ही [[ओपन-सोर्स मॉडल]] प्रत्यक्ष निरीक्षण की अनुमति देता है यदि वांछित हो तो स्रोत कोड का। [[डेबियन]]-आधारित लिनक्स वितरण (दूसरों के बीच) सार्वजनिक कुंजी क्रिप्टोग्राफी का उपयोग करके डाउनलोड किए गए पैकेजों को मान्य करते हैं।<ref>{{Cite web|url=https://wiki.debian.org/SecureApt|title=SecureApt - Debian Wiki}}</ref>
सॉफ़्टवेयर के लिए ऑथेंटिकेशन मैकेनिज्म के रूप में कोड साइनिंग की एफ्फिकसी अंडरपिंनिंग साइनिंग की सिक्योरिटी पर निर्भर करती है। अन्य पब्लिक की इन्फ्रास्ट्रक्चर (पीकेआई) टेक्नोलॉजीज के जैसे, सिस्टम की इंटीग्रिटी अनऑथॉरिज़ेड एक्सेस के अगेंस्ट अपनी प्राइवेट की सेकुरिंग करने वाले पब्लिशर्स पर निर्भर करती है। जनरल पर्पस के कंप्यूटरों पर सॉफ़्टवेयर में स्टोर कीस कोम्प्रोमाईज़ करने के लिए ससटेबल होती हैं। इसलिए, कीस को [[हार्डवेयर सुरक्षा मॉड्यूल|हार्डवेयर सिक्योरिटी मॉड्यूल]] या एचएसएम के रूप में जाने वाले सिक्योर, टेमपर-प्रूफ, क्रिप्टोग्राफ़िक हार्डवेयर डिवाइस में स्टोर करना अधिक सिक्योर और बेस्ट प्रैक्टिस है।<ref>{{Cite web|url=https://www.thawte.com/code-signing/whitepaper/best-practices-for-code-signing-certificates.pdf|title=Securing your Private Keys as Best Practice for Code Signing Certificates}}</ref>
 
== सिक्योरिटी प्रदान करना ==
कई कोड साइनिंग इम्प्लीमेंटेशन [[ परिवहन परत सुरक्षा | परिवहन परत सिक्योरिटी]] या [[ सुरक्षित खोल | सुरक्षित खोल]] द्वारा नियोजित प्रक्रिया के समान, की की एक जोड़ी, एक पब्लिक और एक निजी, को शामिल करते हुए एक सिस्टम का उपयोग करके कोड पर साइनिंग करने का एक तरीका प्रदान करेंगे। उदाहरण के लिए, .NET के मामले में, डेवलपर हर बार निर्माण करते समय अपनी लाइब्रेरी या निष्पादन योग्य पर साइनिंग करने के लिए एक निजी की का उपयोग करता है। यह की किसी डेवलपर या समूह या कभी-कभी प्रति एप्लिकेशन या ऑब्जेक्ट के लिए अद्वितीय होगी। डेवलपर या तो यह की स्वयं उत्पन्न कर सकता है या किसी विश्वसनीय प्रमाणपत्र प्राधिकारी (सीए) से प्राप्त कर सकता है।<ref>{{Cite web |url = https://www.instantssl.com/code-signing-certificate.html |title =  What is Code Signing? |date = 17 June 2011 |first = William |last = Hendric |access-date = 26 February 2015}}</ref>
कोड साइनिंग वितरित वातावरण में विशेष रूप से मूल्यवान है, जहां किसी दिए गए कोड का स्रोत तुरंत स्पष्ट नहीं हो सकता है - उदाहरण के लिए [[जावा एप्लेट]], [[एक्टिवेक्स]] नियंत्रण और अन्य सक्रिय वेब और ब्राउज़र स्क्रिप्टिंग कोड। एक अन्य महत्वपूर्ण उपयोग मौजूदा सॉफ़्टवेयर को सुरक्षित रूप से अपडेट और पैच प्रदान करना है।<ref>{{Cite web|url=https://msdn.microsoft.com/en-us/library/windows/desktop/aa368289(v=vs.85).aspx|title=Digital Signatures and Windows Installer}}</ref> [[माइक्रोसॉफ़्ट विंडोज़]], {{nowrap|[[Mac OS X]]}}, और अधिकांश [[लिनक्स वितरण]] यह सुनिश्चित करने के लिए कोड साइनिंग का उपयोग करके अपडेट प्रदान करते हैं कि दूसरों के लिए पैच सिस्टम के माध्यम से दुर्भावनापूर्ण रूप से कोड वितरित करना संभव नहीं है। यह प्राप्तकर्ता ऑपरेटिंग सिस्टम को यह सत्यापित करने की अनुमति देता है कि अपडेट वैध है, भले ही अपडेट तीसरे पक्ष या भौतिक मीडिया (डिस्क) द्वारा वितरित किया गया हो।
 
पहली बार चलाने (कंप्यूटिंग) पर सॉफ़्टवेयर को प्रमाणित करने के लिए विंडोज़ और मैक ओएस एक्स पर कोड साइनिंग का उपयोग किया जाता है, जिससे यह सुनिश्चित होता है कि सॉफ़्टवेयर के साथ किसी तीसरे पक्ष के वितरक या डाउनलोड साइट द्वारा दुर्भावनापूर्ण रूप से छेड़छाड़ नहीं की गई है। कोड साइनिंग के इस रूप का उपयोग लिनक्स पर उस प्लेटफ़ॉर्म की विकेन्द्रीकृत प्रकृति के कारण नहीं किया जाता है, [[ पैकेज प्रबंधक | पैकेज प्रबंधक]] सभी प्रकार के सॉफ़्टवेयर (केवल अपडेट और पैच नहीं) के लिए वितरण का प्रमुख तरीका है, साथ ही [[ओपन-सोर्स मॉडल]] प्रत्यक्ष निरीक्षण की अनुमति देता है यदि वांछित हो तो स्रोत कोड का। [[डेबियन]]-आधारित लिनक्स वितरण (दूसरों के बीच) पब्लिक की क्रिप्टोग्राफी का उपयोग करके डाउनलोड किए गए पैकेजों को मान्य करते हैं।<ref>{{Cite web|url=https://wiki.debian.org/SecureApt|title=SecureApt - Debian Wiki}}</ref>


'''प्रमाणपत्र प्राधिकारी (सीए) का उपयोग करके विश्वसनीय पहचान'''
'''प्रमाणपत्र प्राधिकारी (सीए) का उपयोग करके विश्वसनीय पहचान'''


कोड हस्ताक्षर को प्रमाणित करने के लिए उपयोग की जाने वाली [[सार्वजनिक कुंजी]] को विश्वसनीय रूट अथॉरिटी सीए में वापस खोजा जाना चाहिए, अधिमानतः एक सुरक्षित सार्वजनिक कुंजी इंफ्रास्ट्रक्चर (पीकेआई) का उपयोग करके। यह सुनिश्चित नहीं करता है कि कोड पर ही भरोसा किया जा सकता है, केवल यह कि यह बताए गए स्रोत से आता है (या अधिक स्पष्ट रूप से, किसी विशेष निजी कुंजी से)।<ref>https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf {{Bare URL PDF|date=March 2022}}</ref> एक सीए एक रूट ट्रस्ट स्तर प्रदान करता है और प्रॉक्सी द्वारा दूसरों को ट्रस्ट सौंपने में सक्षम होता है। यदि कोई उपयोगकर्ता किसी सीए पर भरोसा करता है, तो उपयोगकर्ता संभवतः उस सीए या उसके किसी प्रॉक्सी द्वारा उत्पन्न कुंजी के साथ हस्ताक्षरित कोड की वैधता पर भरोसा कर सकता है। कई ऑपरेटिंग सिस्टम और फ्रेमवर्क में एक या अधिक प्रमाणन प्राधिकरणों के लिए अंतर्निहित विश्वास होता है। बड़े संगठनों के लिए संगठन के आंतरिक निजी सीए को लागू करना भी आम बात है, जो सार्वजनिक सीए के समान सुविधाएँ प्रदान करता है, लेकिन इस पर केवल संगठन के भीतर ही भरोसा किया जाता है।
कोड साइनिंग को प्रमाणित करने के लिए उपयोग की जाने वाली [[सार्वजनिक कुंजी|पब्लिक की]] को विश्वसनीय रूट अथॉरिटी सीए में वापस खोजा जाना चाहिए, अधिमानतः एक सुरक्षित पब्लिक की इंफ्रास्ट्रक्चर (पीकेआई) का उपयोग करके। यह सुनिश्चित नहीं करता है कि कोड पर ही भरोसा किया जा सकता है, केवल यह कि यह बताए गए स्रोत से आता है (या अधिक स्पष्ट रूप से, किसी विशेष निजी की से)।<ref>https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf {{Bare URL PDF|date=March 2022}}</ref> एक सीए एक रूट ट्रस्ट स्तर प्रदान करता है और प्रॉक्सी द्वारा दूसरों को ट्रस्ट सौंपने में सक्षम होता है। यदि कोई उपयोगकर्ता किसी सीए पर भरोसा करता है, तो उपयोगकर्ता संभवतः उस सीए या उसके किसी प्रॉक्सी द्वारा उत्पन्न की के साथ साइनिंगित कोड की वैधता पर भरोसा कर सकता है। कई ऑपरेटिंग सिस्टम और फ्रेमवर्क में एक या अधिक प्रमाणन प्राधिकरणों के लिए अंतर्निहित विश्वास होता है। बड़े संगठनों के लिए संगठन के आंतरिक निजी सीए को लागू करना भी सरल बात है, जो पब्लिक सीए के समान सुविधाएँ प्रदान करता है, लेकिन इस पर केवल संगठन के भीतर ही भरोसा किया जाता है।


===[[विस्तारित सत्यापन]] (ईवी) कोड पर हस्ताक्षर===
===[[विस्तारित सत्यापन]] (ईवी) कोड पर साइनिंग===


विस्तारित सत्यापन (ईवी) कोड हस्ताक्षर प्रमाणपत्र अतिरिक्त सत्यापन और तकनीकी आवश्यकताओं के अधीन हैं। ये दिशानिर्देश सीए/बी फोरम की बेसलाइन आवश्यकताओं और विस्तारित सत्यापन दिशानिर्देशों पर आधारित हैं। ईवी के लिए विशिष्ट सत्यापन आवश्यकताओं के अलावा, ईवी कोड हस्ताक्षर दिशानिर्देश यह निर्धारित करते हैं कि सब्सक्राइबर की निजी कुंजी एक क्रिप्टो मॉड्यूल में उत्पन्न, संग्रहीत और उपयोग की जाती है जो FIPS 140-2 स्तर 2 की आवश्यकताओं को पूरा करती है या उससे अधिक है।<ref>{{cite web |title=विस्तारित सत्यापन कोड हस्ताक्षर प्रमाण पत्र जारी करने और प्रबंधन के लिए दिशानिर्देश|url=https://cabforum.org/wp-content/uploads/EV-Code-Signing-v.1.4.pdf |publisher=CA/Browser Forum |access-date=4 December 2019}}</ref>
विस्तारित सत्यापन (ईवी) कोड साइनिंग प्रमाणपत्र अतिरिक्त सत्यापन और तकनीकी आवश्यकताओं के अधीन हैं। ये दिशानिर्देश सीए/बी फोरम की बेसलाइन आवश्यकताओं और विस्तारित सत्यापन दिशानिर्देशों पर आधारित हैं। ईवी के लिए विशिष्ट सत्यापन आवश्यकताओं के अलावा, ईवी कोड साइनिंग दिशानिर्देश यह निर्धारित करते हैं कि सब्सक्राइबर की निजी की एक क्रिप्टो मॉड्यूल में उत्पन्न, स्टोर और उपयोग की जाती है जो FIPS 140-2 स्तर 2 की आवश्यकताओं को पूरा करती है या उससे अधिक है।<ref>{{cite web |title=विस्तारित सत्यापन कोड हस्ताक्षर प्रमाण पत्र जारी करने और प्रबंधन के लिए दिशानिर्देश|url=https://cabforum.org/wp-content/uploads/EV-Code-Signing-v.1.4.pdf |publisher=CA/Browser Forum |access-date=4 December 2019}}</ref>
कुछ एप्लिकेशन, जैसे कि विंडोज 10 कर्नेल-मोड ड्राइवर पर हस्ताक्षर करने के लिए ईवी कोड हस्ताक्षर प्रमाणपत्र की आवश्यकता होती है।<ref>{{cite web |title=ड्राइवर हस्ताक्षर नीति|url=https://docs.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later- |publisher=Microsoft |access-date=9 December 2019}}</ref> इसके अतिरिक्त, माइक्रोसॉफ्ट के आईईब्लॉग में कहा गया है कि ईवी कोड हस्ताक्षर प्रमाणपत्र द्वारा हस्ताक्षरित विंडोज प्रोग्राम तुरंत प्रतिष्ठा स्थापित कर सकते हैं
कुछ एप्लिकेशन, जैसे कि विंडोज 10 कर्नेल-मोड ड्राइवर पर साइनिंग करने के लिए ईवी कोड साइनिंग प्रमाणपत्र की आवश्यकता होती है।<ref>{{cite web |title=ड्राइवर हस्ताक्षर नीति|url=https://docs.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-policy--windows-vista-and-later- |publisher=Microsoft |access-date=9 December 2019}}</ref> इसके अतिरिक्त, माइक्रोसॉफ्ट के आईईब्लॉग में कहा गया है कि ईवी कोड साइनिंग प्रमाणपत्र द्वारा साइनिंगित विंडोज प्रोग्राम तुरंत प्रतिष्ठा स्थापित कर सकते हैं
[[ कुशल स्क्रीन ]] प्रतिष्ठा सेवाओं के साथ, भले ही उसके लिए कोई पूर्व प्रतिष्ठा मौजूद न हो
[[ कुशल स्क्रीन ]] प्रतिष्ठा सेवाओं के साथ, भले ही उसके लिए कोई पूर्व प्रतिष्ठा मौजूद न हो
फ़ाइल या प्रकाशक.<ref>{{cite web |title=माइक्रोसॉफ्ट स्मार्टस्क्रीन और विस्तारित सत्यापन (ईवी) कोड हस्ताक्षर प्रमाणपत्र|url=https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/ |publisher=Microsoft |access-date=9 December 2019}}</ref>
फ़ाइल या प्रकाशक.<ref>{{cite web |title=माइक्रोसॉफ्ट स्मार्टस्क्रीन और विस्तारित सत्यापन (ईवी) कोड हस्ताक्षर प्रमाणपत्र|url=https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/ |publisher=Microsoft |access-date=9 December 2019}}</ref>


'''नमूना ईवी कोड हस्ताक्षर प्रमाणपत्र'''
'''नमूना ईवी कोड साइनिंग प्रमाणपत्र'''


यह सॉफ्टवेयर पर हस्ताक्षर करने के लिए SSL.com द्वारा उपयोग किए जाने वाले डिकोडेड ईवी कोड हस्ताक्षर प्रमाणपत्र का एक उदाहरण है। <code>SSL.com EV Code Signing Intermediate CA RSA R3</code> इसे जारीकर्ता के सामान्य नाम के रूप में दिखाया गया है, जो इसे ईवी कोड हस्ताक्षर प्रमाणपत्र के रूप में पहचानता है। प्रमाणपत्र का <code>Subject</code> फ़ील्ड एसएसएल कॉर्प को एक संगठन के रूप में वर्णित करता है। <code>Code Signing</code> एकमात्र X509v3 विस्तारित कुंजी उपयोग के रूप में दिखाया गया है।
यह सॉफ्टवेयर पर साइनिंग करने के लिए SSL.com द्वारा उपयोग किए जाने वाले डिकोडेड ईवी कोड साइनिंग प्रमाणपत्र का एक उदाहरण है। <code>SSL.com EV Code Signing Intermediate CA RSA R3</code> इसे जारीकर्ता के सामान्य नाम के रूप में दिखाया गया है, जो इसे ईवी कोड साइनिंग प्रमाणपत्र के रूप में पहचानता है। प्रमाणपत्र का <code>Subject</code> फ़ील्ड एसएसएल कॉर्प को एक संगठन के रूप में वर्णित करता है। <code>Code Signing</code> एकमात्र X509v3 विस्तारित की उपयोग के रूप में दिखाया गया है।
<पूर्व>
<पूर्व>
प्रमाणपत्र:
प्रमाणपत्र:
Line 29: Line 31:
         क्रम संख्या:
         क्रम संख्या:
             59:4e:2d:88:5a:2c:b0:1a:5e:d6:4c:7b:df:35:59:7d
             59:4e:2d:88:5a:2c:b0:1a:5e:d6:4c:7b:df:35:59:7d
     हस्ताक्षर एल्गोरिथ्म: sha256WithRSAएन्क्रिप्शन
     साइनिंग एल्गोरिथ्म: sha256WithRSAएन्क्रिप्शन
         जारीकर्ता:
         जारीकर्ता:
             सामान्य नाम = SSL.com EV कोड साइनिंग इंटरमीडिएट CA RSA R3
             सामान्य नाम = SSL.com EV कोड साइनिंग इंटरमीडिएट CA RSA R3
Line 38: Line 40:
         वैधता
         वैधता
             इससे पहले नहीं: अगस्त 30 20:29:13 2019 GMT
             इससे पहले नहीं: अगस्त 30 20:29:13 2019 GMT
             इसके बाद नहीं: 12 नवंबर 20:29:13 2022 GMT
             इसके पश्चात नहीं: 12 नवंबर 20:29:13 2022 GMT
         विषय:
         विषय:
             1.3.6.1.4.1.311.60.2.1.3 = यूएस
             1.3.6.1.4.1.311.60.2.1.3 = यूएस
Line 51: Line 53:
             stateOrProvinceName = टेक्सास
             stateOrProvinceName = टेक्सास
             देश का नाम = यूएस
             देश का नाम = यूएस
         विषय सार्वजनिक कुंजी जानकारी:
         विषय पब्लिक की जानकारी:
             सार्वजनिक कुंजी एल्गोरिथम: rsaएन्क्रिप्शन
             पब्लिक की एल्गोरिथम: rsaएन्क्रिप्शन
                 सार्वजनिक कुंजी: (2048 बिट)
                 पब्लिक की: (2048 बिट)
                 मापांक:
                 मापांक:
                     00:c3:e9:ae:be:d7:a2:6f:2f:24...
                     00:c3:e9:ae:be:d7:a2:6f:2f:24...
                 प्रतिपादक: 65537 (0x10001)
                 प्रतिपादक: 65537 (0x10001)
         X509v3 एक्सटेंशन:
         X509v3 एक्सटेंशन:
             X509v3 प्राधिकरण कुंजी पहचानकर्ता:
             X509v3 प्राधिकरण की पहचानकर्ता:
                 keyid:36:BD:49:FF:31:2C:EB:AF:6A:40:FE:99:C0:16:ED:BA:FC:48:DD:5F
                 keyid:36:BD:49:FF:31:2C:EB:AF:6A:40:FE:99:C0:16:ED:BA:FC:48:DD:5F
                  
                  
             प्राधिकरण सूचना पहुंच:
             प्राधिकरण सूचना एक्सेस:
                 सीए जारीकर्ता - यूआरआई:http://www.ssl.com/repository/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crt
                 सीए जारीकर्ता - यूआरआई:http://www.ssl.com/repository/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crt
                 ओसीएसपी - यूआरआई:http://ocsps.ssl.com
                 ओसीएसपी - यूआरआई:http://ocsps.ssl.com
Line 71: Line 73:
                   सीपीएस: https://www.ssl.com/repository
                   सीपीएस: https://www.ssl.com/repository
                    
                    
             X509v3 विस्तारित कुंजी उपयोग:
             X509v3 विस्तारित की उपयोग:
                 कोड पर हस्ताक्षर
                 कोड पर साइनिंग
             X509v3 CRL वितरण बिंदु:
             X509v3 CRL वितरण बिंदु:
              
              
Line 78: Line 80:
                   यूआरआई:http://crls.ssl.com/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crl
                   यूआरआई:http://crls.ssl.com/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crl
                    
                    
             X509v3 विषय कुंजी पहचानकर्ता:
             X509v3 विषय की पहचानकर्ता:
                 EC:6A:64:06:26:A7:7A:69:E8:CC:06:D5:6F:FA:E1:C2:9A:29:79:DE
                 EC:6A:64:06:26:A7:7A:69:E8:CC:06:D5:6F:FA:E1:C2:9A:29:79:DE
             X509v3 कुंजी उपयोग: महत्वपूर्ण
             X509v3 की उपयोग: महत्वपूर्ण
                 अंगुली का हस्ताक्षर
                 अंगुली का साइनिंग
     हस्ताक्षर एल्गोरिथ्म: sha256WithRSAएन्क्रिप्शन
     साइनिंग एल्गोरिथ्म: sha256WithRSAएन्क्रिप्शन
         17:d7:a1:26:58:31:14:2बी:9एफ:3बी...
         17:d7:a1:26:58:31:14:2बी:9एफ:3बी...
</पूर्व>
</पूर्व>


===सीए का विकल्प===
===सीए का विकल्प===
दूसरा मॉडल प्रथम उपयोग मॉडल पर भरोसा है, जिसमें डेवलपर्स अपनी स्वयं-निर्मित कुंजी प्रदान करना चुन सकते हैं। इस परिदृश्य में, उपयोगकर्ता को आम तौर पर पहली बार ऑब्जेक्ट को सत्यापित करने के लिए सीधे डेवलपर से सार्वजनिक कुंजी प्राप्त करनी होगी। कई कोड हस्ताक्षर प्रणालियाँ सार्वजनिक कुंजी को हस्ताक्षर के अंदर संग्रहीत करेंगी। कुछ सॉफ्टवेयर फ्रेमवर्क और ओएस जो निष्पादित करने से पहले कोड के हस्ताक्षर की जांच करते हैं, आपको पहले रन के बाद उस बिंदु से उस डेवलपर पर भरोसा करने का विकल्प चुनने की अनुमति देंगे। एक एप्लिकेशन डेवलपर इंस्टॉलर के साथ सार्वजनिक कुंजी शामिल करके एक समान प्रणाली प्रदान कर सकता है। कुंजी का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी भी आगामी ऑब्जेक्ट को चलाने की आवश्यकता है, जैसे अपग्रेड, प्लगइन्स, या अन्य एप्लिकेशन, सभी उसी डेवलपर से आने के रूप में सत्यापित हैं।  
दूसरा मॉडल प्रथम उपयोग मॉडल पर भरोसा है, जिसमें डेवलपर्स अपनी स्वयं-निर्मित की प्रदान करना चुन सकते हैं। इस परिदृश्य में, उपयोगकर्ता को सरल तौर पर पहली बार ऑब्जेक्ट को सत्यापित करने के लिए सीधे डेवलपर से पब्लिक की प्राप्त करनी होगी। कई कोड साइनिंग प्रणालियाँ पब्लिक की को साइनिंग के अंदर स्टोर करेंगी। कुछ सॉफ्टवेयर फ्रेमवर्क और ओएस जो निष्पादित करने से पहले कोड के साइनिंग की जांच करते हैं, आपको पहले रन के पश्चात उस बिंदु से उस डेवलपर पर भरोसा करने का विकल्प चुनने की अनुमति देंगे। एक एप्लिकेशन डेवलपर इंस्टॉलर के साथ पब्लिक की शामिल करके एक समान प्रणाली प्रदान कर सकता है। की का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी भी आगामी ऑब्जेक्ट को चलाने की आवश्यकता है, जैसे अपग्रेड, प्लगइन्स, या अन्य एप्लिकेशन, सभी उसी डेवलपर से आने के रूप में सत्यापित हैं।  


'''समय-स्टैम्पिंग'''
'''समय-स्टैम्पिंग'''


टाइम-स्टैम्पिंग को विश्वास चेतावनी से बचने के लिए डिज़ाइन किया गया था जो कि समाप्त प्रमाणपत्र के मामले में दिखाई देगी। वास्तव में, टाइम-स्टैम्पिंग किसी प्रमाणपत्र की वैधता अवधि से परे कोड ट्रस्ट को बढ़ाती है।<ref name=morton>{{cite web|last=Morton|first=Bruce|title=कोड पर हस्ताक्षर|url=https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf|publisher=CASC|access-date=21 February 2014}}</ref> ऐसी स्थिति में जब किसी समझौते के कारण प्रमाणपत्र को रद्द करना पड़ता है, तो समझौते की घटना की एक विशिष्ट तिथि और समय रद्दीकरण रिकॉर्ड का हिस्सा बन जाएगा। इस मामले में, टाइम-स्टैम्पिंग यह स्थापित करने में मदद करती है कि कोड पर हस्ताक्षर प्रमाणपत्र से समझौता होने से पहले या बाद में किया गया था।<ref name=morton/>
टाइम-स्टैम्पिंग को विश्वास चेतावनी से बचने के लिए डिज़ाइन किया गया था जो कि समाप्त प्रमाणपत्र के मामले में दिखाई देगी। वास्तव में, टाइम-स्टैम्पिंग किसी प्रमाणपत्र की वैधता अवधि से परे कोड ट्रस्ट को बढ़ाती है।<ref name=morton>{{cite web|last=Morton|first=Bruce|title=कोड पर हस्ताक्षर|url=https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf|publisher=CASC|access-date=21 February 2014}}</ref> ऐसी स्थिति में जब किसी समझौते के कारण प्रमाणपत्र को रद्द करना पड़ता है, तो समझौते की घटना की एक विशिष्ट तिथि और समय रद्दीकरण रिकॉर्ड का हिस्सा बन जाएगा। इस मामले में, टाइम-स्टैम्पिंग यह स्थापित करने में सहायता करती है कि कोड पर साइनिंग प्रमाणपत्र से समझौता होने से पहले या पश्चात में किया गया था।<ref name=morton/>


'''[[Xcode]] में कोड साइनिंग'''
'''[[Xcode]] में कोड साइनिंग'''


डेवलपर्स को किसी भी वास्तविक डिवाइस पर चलाने से पहले और [[ऐप स्टोर (आईओएस)]] पर अपलोड करने से पहले अपने आईओएस और टीवीओएस ऐप पर हस्ताक्षर करने की आवश्यकता होती है। यह साबित करने के लिए आवश्यक है कि डेवलपर के पास वैध Apple डेवलपर आईडी है। किसी एप्लिकेशन को एक वैध प्रोफ़ाइल या प्रमाणपत्र की आवश्यकता होती है ताकि वह डिवाइस पर चल सके।
डेवलपर्स को किसी भी वास्तविक डिवाइस पर चलाने से पहले और [[ऐप स्टोर (आईओएस)]] पर अपलोड करने से पहले अपने आईओएस और टीवीओएस ऐप पर साइनिंग करने की आवश्यकता होती है। यह साबित करने के लिए आवश्यक है कि डेवलपर के पास वैध Apple डेवलपर आईडी है। किसी एप्लिकेशन को एक वैध प्रोफ़ाइल या प्रमाणपत्र की आवश्यकता होती है जिससे वह डिवाइस पर चल सके।


===समस्याएँ===
===समस्याएँ===
किसी भी सुरक्षा उपाय की तरह, कोड हस्ताक्षर को पराजित किया जा सकता है। उपयोगकर्ताओं को बिना हस्ताक्षरित कोड चलाने, या यहां तक ​​कि ऐसे कोड चलाने के लिए भी धोखा दिया जा सकता है जो सत्यापन करने से इंकार कर देता है, और सिस्टम केवल तब तक सुरक्षित रहता है जब तक निजी कुंजी निजी रहती है।<ref>{{Cite web|url=http://blog.trendmicro.com/fake-antivirus-solutions-increasingly-stolen-code-signing-certificates/|title = नकली एंटीवायरस समाधान तेजी से कोड-हस्ताक्षर प्रमाणपत्र चुरा रहे हैं|date = 9 January 2014}}</ref><ref>http://www.eweek.com/c/a/Security/Theres-A-Racket-Brewing-In-the-Code-Signing-Cert-Business/ {{Dead link|date=February 2022}}</ref>
किसी भी सिक्योरिटी उपाय की तरह, कोड साइनिंग को पराजित किया जा सकता है। उपयोगकर्ताओं को बिना साइनिंगित कोड चलाने, या यहां तक ​​कि ऐसे कोड चलाने के लिए भी धोखा दिया जा सकता है जो सत्यापन करने से इंकार कर देता है, और सिस्टम केवल तब तक सुरक्षित रहता है जब तक निजी की निजी रहती है।<ref>{{Cite web|url=http://blog.trendmicro.com/fake-antivirus-solutions-increasingly-stolen-code-signing-certificates/|title = नकली एंटीवायरस समाधान तेजी से कोड-हस्ताक्षर प्रमाणपत्र चुरा रहे हैं|date = 9 January 2014}}</ref><ref>http://www.eweek.com/c/a/Security/Theres-A-Racket-Brewing-In-the-Code-Signing-Cert-Business/ {{Dead link|date=February 2022}}</ref>
यह ध्यान रखना भी महत्वपूर्ण है कि कोड हस्ताक्षर अंतिम उपयोगकर्ता को सॉफ़्टवेयर लेखक द्वारा किसी भी दुर्भावनापूर्ण गतिविधि या अनजाने सॉफ़्टवेयर बग से नहीं बचाता है - यह केवल यह सुनिश्चित करता है कि सॉफ़्टवेयर को लेखक के अलावा किसी अन्य द्वारा संशोधित नहीं किया गया है। कभी-कभी, गलत टाइम-स्टैम्प के कारण या [[ रैंडम एक्सेस मेमोरी ]] के अधिक उपयोग के कारण, सैंडबॉक्स सिस्टम प्रमाणपत्र स्वीकार नहीं करते हैं।
यह ध्यान रखना भी महत्वपूर्ण है कि कोड साइनिंग अंतिम उपयोगकर्ता को सॉफ़्टवेयर स्क्रिप्ट द्वारा किसी भी दुर्भावनापूर्ण गतिविधि या अनजाने सॉफ़्टवेयर बग से नहीं बचाता है - यह केवल यह सुनिश्चित करता है कि सॉफ़्टवेयर को स्क्रिप्ट के अलावा किसी अन्य द्वारा मॉडिफाई नहीं किया गया है। कभी-कभी, गलत टाइम-स्टैम्प के कारण या [[ रैंडम एक्सेस मेमोरी ]] के अधिक उपयोग के कारण, सैंडबॉक्स सिस्टम प्रमाणपत्र स्वीकार नहीं करते हैं।


==कार्यान्वयन==
==इम्प्लीमेंटेशन==


Microsoft परीक्षण किए गए ड्राइवरों के लिए प्रदान किए गए कोड हस्ताक्षर का एक रूप (ऑथेंटिकोड पर आधारित) लागू करता है। चूंकि ड्राइवर कर्नेल में चलते हैं, वे सिस्टम को अस्थिर कर सकते हैं या सिस्टम में सुरक्षा छेद खोल सकते हैं। इस कारण से, Microsoft अपने [[WHQL परीक्षण]] के लिए सबमिट किए गए ड्राइवरों का परीक्षण करता है। ड्राइवर के गुजर जाने के बाद, Microsoft ड्राइवर के उस संस्करण को सुरक्षित मानता है। केवल 32-बिट सिस्टम पर, माइक्रोसॉफ्ट के साथ मान्य नहीं किए गए ड्राइवरों को इंस्टॉल करना उपयोगकर्ता को चेतावनी देते हुए इंस्टॉलेशन की अनुमति देने के बाद संभव है कि कोड अहस्ताक्षरित है। .NET (प्रबंधित) कोड के लिए, [[मजबूत कुंजी]] नामक एक अतिरिक्त तंत्र है जो प्रमाणपत्रों के विपरीत सार्वजनिक/निजी कुंजी और [[SHA-1]]-1 हैश का उपयोग करता है। हालाँकि, Microsoft ऑथेंटिकोड के प्रतिस्थापन के रूप में स्ट्रॉन्ग नेम साइनिंग पर निर्भरता को हतोत्साहित करता है।<ref>[http://blogs.msdn.com/shawnfa/archive/2008/05/14/strong-name-bypass.aspx Strong Name Bypass: .NET Security Blog]</ref>
Microsoft परीक्षण किए गए ड्राइवरों के लिए प्रदान किए गए कोड साइनिंग का एक रूप (ऑथेंटिकोड पर आधारित) लागू करता है। चूंकि ड्राइवर कर्नेल में चलते हैं, वे सिस्टम को अस्थिर कर सकते हैं या सिस्टम में सिक्योरिटी छेद खोल सकते हैं। इस कारण से, Microsoft अपने [[WHQL परीक्षण]] के लिए सबमिट किए गए ड्राइवरों का परीक्षण करता है। ड्राइवर के गुजर जाने के पश्चात, Microsoft ड्राइवर के उस संस्करण को सुरक्षित मानता है। केवल 32-बिट सिस्टम पर, माइक्रोसॉफ्ट के साथ मान्य नहीं किए गए ड्राइवरों को इंस्टॉल करना उपयोगकर्ता को चेतावनी देते हुए इंस्टॉलेशन की अनुमति देने के पश्चात संभव है कि कोड असाइनिंगित है। .NET (प्रबंधित) कोड के लिए, [[मजबूत कुंजी|मजबूत की]] नामक एक अतिरिक्त मैकेनिज्म है जो प्रमाणपत्रों के विपरीत पब्लिक/निजी की और [[SHA-1]]-1 हैश का उपयोग करता है। हालाँकि, Microsoft ऑथेंटिकोड के प्रतिस्थापन के रूप में स्ट्रॉन्ग नेम साइनिंग पर निर्भरता को हतोत्साहित करता है।<ref>[http://blogs.msdn.com/shawnfa/archive/2008/05/14/strong-name-bypass.aspx Strong Name Bypass: .NET Security Blog]</ref>


== गेमिंग और उपभोक्ता उपकरणों में अहस्ताक्षरित कोड ==
== गेमिंग और उपभोक्ता उपकरणों में असाइनिंगित कोड ==
[[हैंडहेल्ड गेम कंसोल]] जैसे उपभोक्ता उपकरणों के संदर्भ में, अहस्ताक्षरित कोड शब्द का उपयोग अक्सर ऐसे एप्लिकेशन को संदर्भित करने के लिए किया जाता है जिसे सॉफ़्टवेयर को स्वीकार करने और निष्पादित करने के लिए सामान्य रूप से आवश्यक [[कुंजी (क्रिप्टोग्राफी)]] के साथ हस्ताक्षरित नहीं किया गया है। अधिकांश कंसोल गेम को कंसोल निर्माता द्वारा डिज़ाइन की गई गुप्त कुंजी के साथ हस्ताक्षरित करना पड़ता है अन्यथा गेम कंसोल पर लोड नहीं होगा। अहस्ताक्षरित कोड को निष्पादित करने के लिए कई तरीके हैं जिनमें सॉफ्टवेयर एक्सप्लॉइट (कंप्यूटर सुरक्षा), एक [[मॉडचिप]] का उपयोग, [[ जादू बदलें ]] के रूप में जानी जाने वाली तकनीक या [[ सॉफ्टमोड ]] चलाना शामिल है।
[[हैंडहेल्ड गेम कंसोल]] जैसे उपभोक्ता उपकरणों के संदर्भ में, असाइनिंगित कोड शब्द का उपयोग अक्सर ऐसे एप्लिकेशन को संदर्भित करने के लिए किया जाता है जिसे सॉफ़्टवेयर को स्वीकार करने और निष्पादित करने के लिए सामान्य रूप से आवश्यक [[कुंजी (क्रिप्टोग्राफी)|की (क्रिप्टोग्राफी)]] के साथ साइनिंगित नहीं किया गया है। अधिकांश कंसोल गेम को कंसोल निर्माता द्वारा डिज़ाइन की गई सीक्रेट की के साथ साइनिंगित करना पड़ता है अन्यथा गेम कंसोल पर लोड नहीं होगा। असाइनिंगित कोड को निष्पादित करने के लिए कई तरीके हैं जिनमें सॉफ्टवेयर एक्सप्लॉइट (कंप्यूटर सिक्योरिटी), एक [[मॉडचिप]] का उपयोग, [[ जादू बदलें ]] के रूप में जानी जाने वाली तकनीक या [[ सॉफ्टमोड ]] चलाना शामिल है।


यह शुरू में स्पष्ट नहीं लग सकता है कि किसी हस्ताक्षरित एप्लिकेशन को किसी अन्य डीवीडी पर कॉपी करने से उसे बूट होने की अनुमति क्यों नहीं मिलती है। Xbox (कंसोल) पर, इसका कारण यह है कि Xbox निष्पादन योग्य फ़ाइल (XBE) में एक मीडिया-प्रकार ध्वज होता है, जो मीडिया के प्रकार को निर्दिष्ट करता है जिससे XBE बूट किया जा सकता है। लगभग सभी Xbox सॉफ़्टवेयर पर, इसे ऐसे सेट किया गया है कि निष्पादन योग्य केवल फ़ैक्टरी-निर्मित डिस्क से बूट होगा, इसलिए निष्पादन योग्य को बर्न करने योग्य मीडिया में कॉपी करना ही सॉफ़्टवेयर के निष्पादन को रोकने के लिए पर्याप्त है।
यह शुरू में स्पष्ट नहीं लग सकता है कि किसी साइनिंगित एप्लिकेशन को किसी अन्य डीवीडी पर कॉपी करने से उसे बूट होने की अनुमति क्यों नहीं मिलती है। Xbox (कंसोल) पर, इसका कारण यह है कि Xbox निष्पादन योग्य फ़ाइल (XBE) में एक मीडिया-प्रकार ध्वज होता है, जो मीडिया के प्रकार को निर्दिष्ट करता है जिससे XBE बूट किया जा सकता है। लगभग सभी Xbox सॉफ़्टवेयर पर, इसे ऐसे सेट किया गया है कि निष्पादन योग्य केवल फ़ैक्टरी-निर्मित डिस्क से बूट होगा, इसलिए निष्पादन योग्य को बर्न करने योग्य मीडिया में कॉपी करना ही सॉफ़्टवेयर के निष्पादन को रोकने के लिए पर्याप्त है।


हालाँकि, चूँकि निष्पादन योग्य हस्ताक्षरित है, केवल ध्वज का मान बदलना संभव नहीं है क्योंकि यह निष्पादन योग्य के हस्ताक्षर को बदल देता है, जिससे जाँच करने पर सत्यापन विफल हो जाता है।
हालाँकि, चूँकि निष्पादन योग्य साइनिंगित है, केवल ध्वज का मान बदलना संभव नहीं है क्योंकि यह निष्पादन योग्य के साइनिंग को बदल देता है, जिससे जाँच करने पर सत्यापन विफल हो जाता है।


==यह भी देखें==
==यह भी देखें==
* [[अंगुली का हस्ताक्षर]]
* [[अंगुली का हस्ताक्षर|अंगुली का साइनिंग]]
* [[आईओएस जेलब्रेकिंग]]
* [[आईओएस जेलब्रेकिंग]]
* [[प्लेस्टेशन पोर्टेबल होमब्रू]]
* [[प्लेस्टेशन पोर्टेबल होमब्रू]]
* [[विशेषाधिकार वृद्धि]]
* [[विशेषाधिकार वृद्धि]]
* [[रूटिंग (एंड्रॉइड ओएस)]]
* [[रूटिंग (एंड्रॉइड ओएस)]]
* सिम्बियन ओएस#प्लेटफ़ॉर्म सुरक्षा को दरकिनार करना
* सिम्बियन ओएस#प्लेटफ़ॉर्म सिक्योरिटी को दरकिनार करना


==संदर्भ==
==संदर्भ==

Revision as of 18:19, 23 November 2023

कोड साइनिंग सॉफ्टवेयर स्क्रिप्ट को कन्फर्म करने और यह गारंटी देने के लिए एक्सेक्यूटेबल्स और स्क्रिप्ट पर डिजिटल रूप से साइनिंग करने की प्रक्रिया है कि कोड पर साइनिंग किए जाने के पश्चात से उसे ऑल्टड या कर्रप्टेड नहीं किया गया है। यह प्रोसेस ऑथेंटिसिटी और इंटीग्रिटी को वैलिड करने के लिए क्रिप्टोग्राफ़िक हैश का उपयोग करती है।[1] कोड साइनिंग का आविष्कार 1995 में माइकल डॉयल द्वारा ईओलास वेबविश ब्राउज़र प्लग-इन के भाग के रूप में किया गया था, जिसने एक सीक्रेट की का उपयोग करके डाउनलोड करने योग्य वेब ऐप प्रोग्राम कोड पर साइनिंग करने के लिए पब्लिक-की क्रिप्टोग्राफी के उपयोग को सक्षम किया, जिससे प्लग-इन कोड इंटरप्रेटर कर सके। फिर कोड इंटरप्रेटर के एपीआई तक एक्सेस करने की अनुमति देने से पहले कोड को ऑथेंटिकेट करने के लिए संबंधित पब्लिक की का उपयोग किया जाता है। [2]

कोड साइनिंग कई वैल्युएबल फीचर प्रदान कर सकते हैं। कोड साइनिंग का सबसे सरल उपयोग डेप्लॉयिंग के समय सिक्योरिटी प्रदान करना है; कुछ प्रोग्रामिंग लैंग्वेज में, इसका उपयोग नेमस्पेस कन्फ्लिक्ट्स को प्रिवेंट में सहायता के लिए भी किया जा सकता है। लगभग सभी कोड साइनिंग इम्प्लीमेंटेशन ऑथर या बिल्ड सिस्टम की आइडेंटिटी को वेरीफाई करने के लिए कुछ प्रकार के डिजिटल साइनिंग मैकेनिज्म प्रदान करेगा, और यह वेरीफाई करने के लिए चेकसम प्रदान करेगा कि ऑब्जेक्ट को मॉडिफाई नहीं किया गया है। इसका उपयोग किसी ऑब्जेक्ट के बारे में वर्जनिंग इनफार्मेशन प्रदान करने या किसी ऑब्जेक्ट के बारे में अन्य मेटाडाटा स्टोर करने के लिए भी किया जा सकता है।[3]

सॉफ़्टवेयर के लिए ऑथेंटिकेशन मैकेनिज्म के रूप में कोड साइनिंग की एफ्फिकसी अंडरपिंनिंग साइनिंग की सिक्योरिटी पर निर्भर करती है। अन्य पब्लिक की इन्फ्रास्ट्रक्चर (पीकेआई) टेक्नोलॉजीज के जैसे, सिस्टम की इंटीग्रिटी अनऑथॉरिज़ेड एक्सेस के अगेंस्ट अपनी प्राइवेट की सेकुरिंग करने वाले पब्लिशर्स पर निर्भर करती है। जनरल पर्पस के कंप्यूटरों पर सॉफ़्टवेयर में स्टोर कीस कोम्प्रोमाईज़ करने के लिए ससटेबल होती हैं। इसलिए, कीस को हार्डवेयर सिक्योरिटी मॉड्यूल या एचएसएम के रूप में जाने वाले सिक्योर, टेमपर-प्रूफ, क्रिप्टोग्राफ़िक हार्डवेयर डिवाइस में स्टोर करना अधिक सिक्योर और बेस्ट प्रैक्टिस है।[4]

सिक्योरिटी प्रदान करना

कई कोड साइनिंग इम्प्लीमेंटेशन परिवहन परत सिक्योरिटी या सुरक्षित खोल द्वारा नियोजित प्रक्रिया के समान, की की एक जोड़ी, एक पब्लिक और एक निजी, को शामिल करते हुए एक सिस्टम का उपयोग करके कोड पर साइनिंग करने का एक तरीका प्रदान करेंगे। उदाहरण के लिए, .NET के मामले में, डेवलपर हर बार निर्माण करते समय अपनी लाइब्रेरी या निष्पादन योग्य पर साइनिंग करने के लिए एक निजी की का उपयोग करता है। यह की किसी डेवलपर या समूह या कभी-कभी प्रति एप्लिकेशन या ऑब्जेक्ट के लिए अद्वितीय होगी। डेवलपर या तो यह की स्वयं उत्पन्न कर सकता है या किसी विश्वसनीय प्रमाणपत्र प्राधिकारी (सीए) से प्राप्त कर सकता है।[5] कोड साइनिंग वितरित वातावरण में विशेष रूप से मूल्यवान है, जहां किसी दिए गए कोड का स्रोत तुरंत स्पष्ट नहीं हो सकता है - उदाहरण के लिए जावा एप्लेट, एक्टिवेक्स नियंत्रण और अन्य सक्रिय वेब और ब्राउज़र स्क्रिप्टिंग कोड। एक अन्य महत्वपूर्ण उपयोग मौजूदा सॉफ़्टवेयर को सुरक्षित रूप से अपडेट और पैच प्रदान करना है।[6] माइक्रोसॉफ़्ट विंडोज़, Mac OS X, और अधिकांश लिनक्स वितरण यह सुनिश्चित करने के लिए कोड साइनिंग का उपयोग करके अपडेट प्रदान करते हैं कि दूसरों के लिए पैच सिस्टम के माध्यम से दुर्भावनापूर्ण रूप से कोड वितरित करना संभव नहीं है। यह प्राप्तकर्ता ऑपरेटिंग सिस्टम को यह सत्यापित करने की अनुमति देता है कि अपडेट वैध है, भले ही अपडेट तीसरे पक्ष या भौतिक मीडिया (डिस्क) द्वारा वितरित किया गया हो।

पहली बार चलाने (कंप्यूटिंग) पर सॉफ़्टवेयर को प्रमाणित करने के लिए विंडोज़ और मैक ओएस एक्स पर कोड साइनिंग का उपयोग किया जाता है, जिससे यह सुनिश्चित होता है कि सॉफ़्टवेयर के साथ किसी तीसरे पक्ष के वितरक या डाउनलोड साइट द्वारा दुर्भावनापूर्ण रूप से छेड़छाड़ नहीं की गई है। कोड साइनिंग के इस रूप का उपयोग लिनक्स पर उस प्लेटफ़ॉर्म की विकेन्द्रीकृत प्रकृति के कारण नहीं किया जाता है, पैकेज प्रबंधक सभी प्रकार के सॉफ़्टवेयर (केवल अपडेट और पैच नहीं) के लिए वितरण का प्रमुख तरीका है, साथ ही ओपन-सोर्स मॉडल प्रत्यक्ष निरीक्षण की अनुमति देता है यदि वांछित हो तो स्रोत कोड का। डेबियन-आधारित लिनक्स वितरण (दूसरों के बीच) पब्लिक की क्रिप्टोग्राफी का उपयोग करके डाउनलोड किए गए पैकेजों को मान्य करते हैं।[7]

प्रमाणपत्र प्राधिकारी (सीए) का उपयोग करके विश्वसनीय पहचान

कोड साइनिंग को प्रमाणित करने के लिए उपयोग की जाने वाली पब्लिक की को विश्वसनीय रूट अथॉरिटी सीए में वापस खोजा जाना चाहिए, अधिमानतः एक सुरक्षित पब्लिक की इंफ्रास्ट्रक्चर (पीकेआई) का उपयोग करके। यह सुनिश्चित नहीं करता है कि कोड पर ही भरोसा किया जा सकता है, केवल यह कि यह बताए गए स्रोत से आता है (या अधिक स्पष्ट रूप से, किसी विशेष निजी की से)।[8] एक सीए एक रूट ट्रस्ट स्तर प्रदान करता है और प्रॉक्सी द्वारा दूसरों को ट्रस्ट सौंपने में सक्षम होता है। यदि कोई उपयोगकर्ता किसी सीए पर भरोसा करता है, तो उपयोगकर्ता संभवतः उस सीए या उसके किसी प्रॉक्सी द्वारा उत्पन्न की के साथ साइनिंगित कोड की वैधता पर भरोसा कर सकता है। कई ऑपरेटिंग सिस्टम और फ्रेमवर्क में एक या अधिक प्रमाणन प्राधिकरणों के लिए अंतर्निहित विश्वास होता है। बड़े संगठनों के लिए संगठन के आंतरिक निजी सीए को लागू करना भी सरल बात है, जो पब्लिक सीए के समान सुविधाएँ प्रदान करता है, लेकिन इस पर केवल संगठन के भीतर ही भरोसा किया जाता है।

विस्तारित सत्यापन (ईवी) कोड पर साइनिंग

विस्तारित सत्यापन (ईवी) कोड साइनिंग प्रमाणपत्र अतिरिक्त सत्यापन और तकनीकी आवश्यकताओं के अधीन हैं। ये दिशानिर्देश सीए/बी फोरम की बेसलाइन आवश्यकताओं और विस्तारित सत्यापन दिशानिर्देशों पर आधारित हैं। ईवी के लिए विशिष्ट सत्यापन आवश्यकताओं के अलावा, ईवी कोड साइनिंग दिशानिर्देश यह निर्धारित करते हैं कि सब्सक्राइबर की निजी की एक क्रिप्टो मॉड्यूल में उत्पन्न, स्टोर और उपयोग की जाती है जो FIPS 140-2 स्तर 2 की आवश्यकताओं को पूरा करती है या उससे अधिक है।[9] कुछ एप्लिकेशन, जैसे कि विंडोज 10 कर्नेल-मोड ड्राइवर पर साइनिंग करने के लिए ईवी कोड साइनिंग प्रमाणपत्र की आवश्यकता होती है।[10] इसके अतिरिक्त, माइक्रोसॉफ्ट के आईईब्लॉग में कहा गया है कि ईवी कोड साइनिंग प्रमाणपत्र द्वारा साइनिंगित विंडोज प्रोग्राम तुरंत प्रतिष्ठा स्थापित कर सकते हैं कुशल स्क्रीन प्रतिष्ठा सेवाओं के साथ, भले ही उसके लिए कोई पूर्व प्रतिष्ठा मौजूद न हो फ़ाइल या प्रकाशक.[11]

नमूना ईवी कोड साइनिंग प्रमाणपत्र

यह सॉफ्टवेयर पर साइनिंग करने के लिए SSL.com द्वारा उपयोग किए जाने वाले डिकोडेड ईवी कोड साइनिंग प्रमाणपत्र का एक उदाहरण है। SSL.com EV Code Signing Intermediate CA RSA R3 इसे जारीकर्ता के सामान्य नाम के रूप में दिखाया गया है, जो इसे ईवी कोड साइनिंग प्रमाणपत्र के रूप में पहचानता है। प्रमाणपत्र का Subject फ़ील्ड एसएसएल कॉर्प को एक संगठन के रूप में वर्णित करता है। Code Signing एकमात्र X509v3 विस्तारित की उपयोग के रूप में दिखाया गया है। <पूर्व> प्रमाणपत्र:

   डेटा:
       संस्करण: 3 (0x2)
       क्रम संख्या:
           59:4e:2d:88:5a:2c:b0:1a:5e:d6:4c:7b:df:35:59:7d
   साइनिंग एल्गोरिथ्म: sha256WithRSAएन्क्रिप्शन
       जारीकर्ता:
           सामान्य नाम = SSL.com EV कोड साइनिंग इंटरमीडिएट CA RSA R3
           संगठन का नाम = एसएसएल कॉर्प
           इलाके का नाम = ह्यूस्टन
           stateOrProvinceName = टेक्सास
           देश का नाम = यूएस
       वैधता
           इससे पहले नहीं: अगस्त 30 20:29:13 2019 GMT
           इसके पश्चात नहीं: 12 नवंबर 20:29:13 2022 GMT
       विषय:
           1.3.6.1.4.1.311.60.2.1.3 = यूएस
           1.3.6.1.4.1.311.60.2.1.2 = नेवादा
           सड़क का पता = 3100 रिचमंड एवेन्यू स्टी 503
           व्यवसायश्रेणी = निजी संगठन
           पोस्टलकोड = 77098
           सामान्य नाम = एसएसएल कॉर्प
           क्रम संख्या = एनवी20081614243
           संगठन का नाम = एसएसएल कॉर्प
           इलाके का नाम = ह्यूस्टन
           stateOrProvinceName = टेक्सास
           देश का नाम = यूएस
       विषय पब्लिक की जानकारी:
           पब्लिक की एल्गोरिथम: rsaएन्क्रिप्शन
               पब्लिक की: (2048 बिट)
               मापांक:
                   00:c3:e9:ae:be:d7:a2:6f:2f:24...
               प्रतिपादक: 65537 (0x10001)
       X509v3 एक्सटेंशन:
           X509v3 प्राधिकरण की पहचानकर्ता:
               keyid:36:BD:49:FF:31:2C:EB:AF:6A:40:FE:99:C0:16:ED:BA:FC:48:DD:5F
               
           प्राधिकरण सूचना एक्सेस:
               सीए जारीकर्ता - यूआरआई:http://www.ssl.com/repository/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crt
               ओसीएसपी - यूआरआई:http://ocsps.ssl.com
               
           X509v3 प्रमाणपत्र नीतियाँ:
               नीति: 2.23.140.1.3
               नीति: 1.2.616.1.113527.2.5.1.7
               नीति: 1.3.6.1.4.1.38064.1.3.3.2
                 सीपीएस: https://www.ssl.com/repository
                 
           X509v3 विस्तारित की उपयोग:
               कोड पर साइनिंग
           X509v3 CRL वितरण बिंदु:
           
               पूरा नाम:
                 यूआरआई:http://crls.ssl.com/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crl
                 
           X509v3 विषय की पहचानकर्ता:
               EC:6A:64:06:26:A7:7A:69:E8:CC:06:D5:6F:FA:E1:C2:9A:29:79:DE
           X509v3 की उपयोग: महत्वपूर्ण
               अंगुली का साइनिंग
   साइनिंग एल्गोरिथ्म: sha256WithRSAएन्क्रिप्शन
        17:d7:a1:26:58:31:14:2बी:9एफ:3बी...

</पूर्व>

सीए का विकल्प

दूसरा मॉडल प्रथम उपयोग मॉडल पर भरोसा है, जिसमें डेवलपर्स अपनी स्वयं-निर्मित की प्रदान करना चुन सकते हैं। इस परिदृश्य में, उपयोगकर्ता को सरल तौर पर पहली बार ऑब्जेक्ट को सत्यापित करने के लिए सीधे डेवलपर से पब्लिक की प्राप्त करनी होगी। कई कोड साइनिंग प्रणालियाँ पब्लिक की को साइनिंग के अंदर स्टोर करेंगी। कुछ सॉफ्टवेयर फ्रेमवर्क और ओएस जो निष्पादित करने से पहले कोड के साइनिंग की जांच करते हैं, आपको पहले रन के पश्चात उस बिंदु से उस डेवलपर पर भरोसा करने का विकल्प चुनने की अनुमति देंगे। एक एप्लिकेशन डेवलपर इंस्टॉलर के साथ पब्लिक की शामिल करके एक समान प्रणाली प्रदान कर सकता है। की का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी भी आगामी ऑब्जेक्ट को चलाने की आवश्यकता है, जैसे अपग्रेड, प्लगइन्स, या अन्य एप्लिकेशन, सभी उसी डेवलपर से आने के रूप में सत्यापित हैं।

समय-स्टैम्पिंग

टाइम-स्टैम्पिंग को विश्वास चेतावनी से बचने के लिए डिज़ाइन किया गया था जो कि समाप्त प्रमाणपत्र के मामले में दिखाई देगी। वास्तव में, टाइम-स्टैम्पिंग किसी प्रमाणपत्र की वैधता अवधि से परे कोड ट्रस्ट को बढ़ाती है।[12] ऐसी स्थिति में जब किसी समझौते के कारण प्रमाणपत्र को रद्द करना पड़ता है, तो समझौते की घटना की एक विशिष्ट तिथि और समय रद्दीकरण रिकॉर्ड का हिस्सा बन जाएगा। इस मामले में, टाइम-स्टैम्पिंग यह स्थापित करने में सहायता करती है कि कोड पर साइनिंग प्रमाणपत्र से समझौता होने से पहले या पश्चात में किया गया था।[12]

Xcode में कोड साइनिंग

डेवलपर्स को किसी भी वास्तविक डिवाइस पर चलाने से पहले और ऐप स्टोर (आईओएस) पर अपलोड करने से पहले अपने आईओएस और टीवीओएस ऐप पर साइनिंग करने की आवश्यकता होती है। यह साबित करने के लिए आवश्यक है कि डेवलपर के पास वैध Apple डेवलपर आईडी है। किसी एप्लिकेशन को एक वैध प्रोफ़ाइल या प्रमाणपत्र की आवश्यकता होती है जिससे वह डिवाइस पर चल सके।

समस्याएँ

किसी भी सिक्योरिटी उपाय की तरह, कोड साइनिंग को पराजित किया जा सकता है। उपयोगकर्ताओं को बिना साइनिंगित कोड चलाने, या यहां तक ​​कि ऐसे कोड चलाने के लिए भी धोखा दिया जा सकता है जो सत्यापन करने से इंकार कर देता है, और सिस्टम केवल तब तक सुरक्षित रहता है जब तक निजी की निजी रहती है।[13][14] यह ध्यान रखना भी महत्वपूर्ण है कि कोड साइनिंग अंतिम उपयोगकर्ता को सॉफ़्टवेयर स्क्रिप्ट द्वारा किसी भी दुर्भावनापूर्ण गतिविधि या अनजाने सॉफ़्टवेयर बग से नहीं बचाता है - यह केवल यह सुनिश्चित करता है कि सॉफ़्टवेयर को स्क्रिप्ट के अलावा किसी अन्य द्वारा मॉडिफाई नहीं किया गया है। कभी-कभी, गलत टाइम-स्टैम्प के कारण या रैंडम एक्सेस मेमोरी के अधिक उपयोग के कारण, सैंडबॉक्स सिस्टम प्रमाणपत्र स्वीकार नहीं करते हैं।

इम्प्लीमेंटेशन

Microsoft परीक्षण किए गए ड्राइवरों के लिए प्रदान किए गए कोड साइनिंग का एक रूप (ऑथेंटिकोड पर आधारित) लागू करता है। चूंकि ड्राइवर कर्नेल में चलते हैं, वे सिस्टम को अस्थिर कर सकते हैं या सिस्टम में सिक्योरिटी छेद खोल सकते हैं। इस कारण से, Microsoft अपने WHQL परीक्षण के लिए सबमिट किए गए ड्राइवरों का परीक्षण करता है। ड्राइवर के गुजर जाने के पश्चात, Microsoft ड्राइवर के उस संस्करण को सुरक्षित मानता है। केवल 32-बिट सिस्टम पर, माइक्रोसॉफ्ट के साथ मान्य नहीं किए गए ड्राइवरों को इंस्टॉल करना उपयोगकर्ता को चेतावनी देते हुए इंस्टॉलेशन की अनुमति देने के पश्चात संभव है कि कोड असाइनिंगित है। .NET (प्रबंधित) कोड के लिए, मजबूत की नामक एक अतिरिक्त मैकेनिज्म है जो प्रमाणपत्रों के विपरीत पब्लिक/निजी की और SHA-1-1 हैश का उपयोग करता है। हालाँकि, Microsoft ऑथेंटिकोड के प्रतिस्थापन के रूप में स्ट्रॉन्ग नेम साइनिंग पर निर्भरता को हतोत्साहित करता है।[15]

गेमिंग और उपभोक्ता उपकरणों में असाइनिंगित कोड

हैंडहेल्ड गेम कंसोल जैसे उपभोक्ता उपकरणों के संदर्भ में, असाइनिंगित कोड शब्द का उपयोग अक्सर ऐसे एप्लिकेशन को संदर्भित करने के लिए किया जाता है जिसे सॉफ़्टवेयर को स्वीकार करने और निष्पादित करने के लिए सामान्य रूप से आवश्यक की (क्रिप्टोग्राफी) के साथ साइनिंगित नहीं किया गया है। अधिकांश कंसोल गेम को कंसोल निर्माता द्वारा डिज़ाइन की गई सीक्रेट की के साथ साइनिंगित करना पड़ता है अन्यथा गेम कंसोल पर लोड नहीं होगा। असाइनिंगित कोड को निष्पादित करने के लिए कई तरीके हैं जिनमें सॉफ्टवेयर एक्सप्लॉइट (कंप्यूटर सिक्योरिटी), एक मॉडचिप का उपयोग, जादू बदलें के रूप में जानी जाने वाली तकनीक या सॉफ्टमोड चलाना शामिल है।

यह शुरू में स्पष्ट नहीं लग सकता है कि किसी साइनिंगित एप्लिकेशन को किसी अन्य डीवीडी पर कॉपी करने से उसे बूट होने की अनुमति क्यों नहीं मिलती है। Xbox (कंसोल) पर, इसका कारण यह है कि Xbox निष्पादन योग्य फ़ाइल (XBE) में एक मीडिया-प्रकार ध्वज होता है, जो मीडिया के प्रकार को निर्दिष्ट करता है जिससे XBE बूट किया जा सकता है। लगभग सभी Xbox सॉफ़्टवेयर पर, इसे ऐसे सेट किया गया है कि निष्पादन योग्य केवल फ़ैक्टरी-निर्मित डिस्क से बूट होगा, इसलिए निष्पादन योग्य को बर्न करने योग्य मीडिया में कॉपी करना ही सॉफ़्टवेयर के निष्पादन को रोकने के लिए पर्याप्त है।

हालाँकि, चूँकि निष्पादन योग्य साइनिंगित है, केवल ध्वज का मान बदलना संभव नहीं है क्योंकि यह निष्पादन योग्य के साइनिंग को बदल देता है, जिससे जाँच करने पर सत्यापन विफल हो जाता है।

यह भी देखें

संदर्भ

  1. "Introduction to Code Signing".
  2. "WebWish: Our Wish is Your Command".
  3. Hendric, William (2015). "विश्वसनीय प्रमाणपत्रों का संपूर्ण अवलोकन - CABForum" (PDF). Retrieved 2015-02-26.
  4. "Securing your Private Keys as Best Practice for Code Signing Certificates" (PDF).
  5. Hendric, William (17 June 2011). "What is Code Signing?". Retrieved 26 February 2015.
  6. "Digital Signatures and Windows Installer".
  7. "SecureApt - Debian Wiki".
  8. https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf[bare URL PDF]
  9. "विस्तारित सत्यापन कोड हस्ताक्षर प्रमाण पत्र जारी करने और प्रबंधन के लिए दिशानिर्देश" (PDF). CA/Browser Forum. Retrieved 4 December 2019.
  10. "ड्राइवर हस्ताक्षर नीति". Microsoft. Retrieved 9 December 2019.
  11. "माइक्रोसॉफ्ट स्मार्टस्क्रीन और विस्तारित सत्यापन (ईवी) कोड हस्ताक्षर प्रमाणपत्र". Microsoft. Retrieved 9 December 2019.
  12. 12.0 12.1 Morton, Bruce. "कोड पर हस्ताक्षर" (PDF). CASC. Retrieved 21 February 2014.
  13. "नकली एंटीवायरस समाधान तेजी से कोड-हस्ताक्षर प्रमाणपत्र चुरा रहे हैं". 9 January 2014.
  14. http://www.eweek.com/c/a/Security/Theres-A-Racket-Brewing-In-the-Code-Signing-Cert-Business/[dead link]
  15. Strong Name Bypass: .NET Security Blog