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

From Vigyanwiki
No edit summary
m (12 revisions imported from alpha:कोड_साइनिंग)
 
(9 intermediate revisions by 2 users not shown)
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>https://casecurity.org/wp-content/uploads/2013/10/CASC-Code-Signing.pdf {{Bare URL PDF|date=March 2022}}</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|[[मैक ओएस एक्स]]}}, रिसीविंग ऑपरेटिंग सिस्टम को यह वेरीफाई करने की अनुमति देता है कि अपडेट लेजिमेंट है, भले ही अपडेट थर्ड पार्टीज या फिजिकल मीडिया (डिस्क) द्वारा डेलिवर्ड किया गया हो।


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


यह सॉफ्टवेयर पर हस्ताक्षर करने के लिए SSL.com द्वारा उपयोग किए जाने वाले डिकोडेड ईवी कोड हस्ताक्षर प्रमाणपत्र का एक उदाहरण है। <code>SSL.com EV Code Signing Intermediate CA RSA R3</code> इसे जारीकर्ता के सामान्य नाम के रूप में दिखाया गया है, जो इसे ईवी कोड हस्ताक्षर प्रमाणपत्र के रूप में पहचानता है। प्रमाणपत्र का <code>Subject</code> फ़ील्ड एसएसएल कॉर्प को एक संगठन के रूप में वर्णित करता है। <code>Code Signing</code> एकमात्र X509v3 विस्तारित कुंजी उपयोग के रूप में दिखाया गया है।
===[[विस्तारित सत्यापन|एक्सटेंडेड वेलिडेशन]] (ईवी) कोड पर साइनिंग===
<पूर्व>
 
प्रमाणपत्र:
एक्सटेंडेड वेलिडेशन (ईवी) कोड साइनिंग सर्टिफिकेट्स अतिरिक्त वेलिडेशन और टेक्निकल आवश्यकताओं के अधीन हैं। ये दिशानिर्देश सीए/बी फोरम की बेसलाइन आवश्यकताओं और एक्सटेंडेड वेलिडेशन गाइडलाइन्स पर आधारित हैं। ईवी के लिए स्पेसिफिक वेलिडेशन आवश्यकताओं के अतिरिक्त, ईवी कोड साइनिंग दिशानिर्देश यह निर्धारित करते हैं कि सब्सक्राइबर की प्राइवेट की क्रिप्टो मॉड्यूल में उत्पन्न, स्टोर और उपयोग की जाती है जो एफआईपीएस 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>
     डेटा:
 
        संस्करण: 3 (0x2)
कुछ एप्लिकेशन, जैसे कि विंडोज 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>
        क्रम संख्या:
 
'''सैंपल ईवी कोड साइनिंग सर्टिफिकेट'''
 
यह सॉफ्टवेयर पर साइनिंग करने के लिए SSL.com द्वारा उपयोग किए जाने वाले डिकोडेड ईवी कोड साइनिंग सर्टिफिकेट का उदाहरण है। <code>SSL.com EV Code Signing Intermediate CA RSA R3</code> को इसे इस्सुएर के कॉमन नाम के रूप में दिखाया गया है, जो इसे ईवी कोड साइनिंग सर्टिफिकेट के रूप में इडेन्टिफ्यिंग है। सर्टिफिकेट का <code>Subject</code> फ़ील्ड एसएसएल कॉर्प को आर्गेनाइजेशन के रूप में वर्णित करता है। <code>Code Signing</code> एकमात्र X509v3 एक्सटेंडेड की उपयोग के रूप में दिखाया गया है।
     Certificate:
      Data: 3 (0x2)
      Serial Number:
             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एन्क्रिप्शन
     Signature Algorithm: sha256WithRSAEncryption
         जारीकर्ता:
         Issuer:
             सामान्य नाम = SSL.com EV कोड साइनिंग इंटरमीडिएट CA RSA R3
             commonName          = SSL.com EV Code Signing Intermediate CA RSA R3
             संगठन का नाम = एसएसएल कॉर्प
             organizationName    = SSL Corp
             इलाके का नाम = ह्यूस्टन
             localityName        = Houston
             stateOrProvinceName = टेक्सास
             stateOrProvinceName = Texas
             देश का नाम = यूएस
             countryName          = US
         वैधता
         Validity
             इससे पहले नहीं: अगस्त 30 20:29:13 2019 GMT
             Not Before: Aug 30 20:29:13 2019 GMT
             इसके बाद नहीं: 12 नवंबर 20:29:13 2022 GMT
             Not After : 12 Nov 12 20:29:13 2022 GMT
         विषय:
         Subject:
             1.3.6.1.4.1.311.60.2.1.3 = यूएस
             1.3.6.1.4.1.311.60.2.1.3 = US
             1.3.6.1.4.1.311.60.2.1.2 = नेवादा
             1.3.6.1.4.1.311.60.2.1.2 = Nevada
             सड़क का पता = 3100 रिचमंड एवेन्यू स्टी 503
            streetAddress             = 3100 Richmond Ave Ste 503
            व्यवसायश्रेणी = निजी संगठन
            businessCategory          = Private Organization
            पोस्टलकोड = 77098
            postalCode                = 77098
            सामान्य नाम = एसएसएल कॉर्प
            commonName                = SSL Corp
            क्रम संख्या = एनवी20081614243
            serialNumber              = NV20081614243
            संगठन का नाम = एसएसएल कॉर्प
            organizationName          = SSL Corp
            इलाके का नाम = ह्यूस्टन
            localityName              = Houston
            stateOrProvinceName = टेक्सास
            stateOrProvinceName       = Texas
            देश का नाम = यूएस
            countryName              = US
        विषय सार्वजनिक कुंजी जानकारी:
        Subject Public Key Info:
             सार्वजनिक कुंजी एल्गोरिथम: rsaएन्क्रिप्शन
             Public Key Algorithm: rsaEncryption
                 सार्वजनिक कुंजी: (2048 बिट)
                 Public-Key: (2048 bit)
                 मापांक:
                 Modulus:
                     00:c3:e9:ae:be:d7:a2:6f:2f:24...
                     00:c3:e9:ae:be:d7:a2:6f:2f:24...
                 प्रतिपादक: 65537 (0x10001)
                 Exponent: 65537 (0x10001)
         X509v3 एक्सटेंशन:
         X509v3 extensions:
             X509v3 प्राधिकरण कुंजी पहचानकर्ता:
             X509v3 Authority Key Identifier:  
                 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
                  
                  
             प्राधिकरण सूचना पहुंच:
             Authority Information Access:  
                 सीए जारीकर्ता - यूआरआई:http://www.ssl.com/repository/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crt
                 CA Issuers - URI:http://www.ssl.com/repository/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crt
                 ओसीएसपी - यूआरआई:http://ocsps.ssl.com
                 OCSP - URI::http://ocsps.ssl.com
                  
                  
             X509v3 प्रमाणपत्र नीतियाँ:
             X509v3 Certificate Policies:  
                 नीति: 2.23.140.1.3
                 Policy: 2.23.140.1.3
                 नीति: 1.2.616.1.113527.2.5.1.7
                 Policy: 1.2.616.1.113527.2.5.1.7
                 नीति: 1.3.6.1.4.1.38064.1.3.3.2
                 Policy: 1.3.6.1.4.1.38064.1.3.3.2
                   सीपीएस: https://www.ssl.com/repository
                   CPS: https://www.ssl.com/repository
                    
                    
             X509v3 विस्तारित कुंजी उपयोग:
             X509v3 Extended Key Usage:  
                 कोड पर हस्ताक्षर
                 Code Signing
             X509v3 CRL वितरण बिंदु:
             X509v3 CRL Distribution Points:  
              
              
                 पूरा नाम:
                 Full Name:
                   यूआरआई:http://crls.ssl.com/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crl
                   URI:http://crls.ssl.com/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crl
                    
                    
             X509v3 विषय कुंजी पहचानकर्ता:
             X509v3 Subject Key Identifier:  
                 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 Key Usage: critical
                 अंगुली का हस्ताक्षर
                 Digital Signature
    हस्ताक्षर एल्गोरिथ्म: sha256WithRSAएन्क्रिप्शन
    Signature Algorithm: sha256WithRSAEncryption
         17:d7:a1:26:58:31:14:2बी:9एफ:3बी...
         17:d7:a1:26:58:31:14:2b:9f:3b ...
</पूर्व>
===सीए का अल्टरनेटिव  ===
दूसरा मॉडल प्रथम उपयोग मॉडल पर ट्रस्ट है, जिसमें डेवलपर्स अपनी सेल्फ-जनरेट की को सेलेक्ट कर सकते हैं। इस सिनेरियो में, यूजर को सरलता सर्वप्रथम ऑब्जेक्ट को वेरीफाई करने के लिए सीधे डेवलपर से पब्लिक की प्राप्त करनी होगी। कई कोड साइनिंग सिस्टम्स पब्लिक की को साइनिंग के इंटरनल स्टोर करेंगी। कुछ सॉफ्टवेयर फ्रेमवर्क और ओएस जो एक्सेक्यूटिंग करने से पहले कोड के साइनिंग को चेक करते हैं, आपको पहले रन के पश्चात उस पॉइंट से उस डेवलपर पर ट्रस्ट करने का आप्शन सेलेक्ट करने' की अनुमति देंगे। एप्लिकेशन डेवलपर इंस्टॉलर के साथ पब्लिक की सम्मिलित करके सिमिलर सिस्टम प्रदान कर सकता है। की का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी भी सबसेकेंट ऑब्जेक्ट को रन करने की आवश्यकता है, जैसे अपग्रेड, प्लगइन्स, या अन्य एप्लिकेशन, सभी उसी डेवलपर से आने के रूप में वेरीफाई हैं।
 
'''टाइम-स्टैम्पिंग'''


===सीए का विकल्प===
टाइम-स्टैम्पिंग को ट्रस्ट वार्निंग से बचने के लिए डिज़ाइन किया गया था जो कि एक्सपयार्ड सर्टिफिकेट के केस में दिखाई देगी। वास्तव में, टाइम-स्टैम्पिंग किसी सर्टिफिकेट की वैलिडिटी पीरियड से परे कोड ट्रस्ट को एक्सटेंडेड करती है।<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 डेवलपर आईडी है। किसी एप्लिकेशन को एक वैध प्रोफ़ाइल या प्रमाणपत्र की आवश्यकता होती है ताकि वह डिवाइस पर चल सके।
===समस्याएँ ===
किसी भी सिक्योरिटी मेजर्स के जैसे, कोड साइनिंग को डेफेटेड किया जा सकता है। यूजर को बिना अनसाइंड कोड रनिंग, या यहां तक ​​कि ऐसे कोड रनिंग करने के लिए भी ट्रिकड किया जा सकता है जो वेरीफाई करने से रिफ्यूज कर देता है, और सिस्टम केवल तब तक सिक्योर रहता है जब तक प्राइवेट की प्राइवेट रहती है।<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>
माइक्रोसॉफ्ट इम्प्लेमेंट्स किए गए ड्राइवरों के लिए प्रदान किए गए कोड साइनिंग का रूप (ऑथेंटिकोड पर आधारित) प्रारम्भ करता है। चूंकि ड्राइवर कर्नेल में रन करते हैं, वे सिस्टम को डिसस्टैबिलाईड कर सकते हैं या सिस्टम में सिक्योरिटी होल्स ओपन कर सकते हैं। इस कारण से, माइक्रोसॉफ्ट अपने [[WHQL परीक्षण|डब्लूएचक्यूएल प्रोग्राम]] में सबमिट किए गए ड्राइवरों को टेस्ट करता है। ड्राइवर के पास्ड हो जाने के पश्चात, माइक्रोसॉफ्ट ड्राइवर के उस वर्जन को सेफ मानता है। केवल 32-बिट सिस्टम पर, माइक्रोसॉफ्ट के साथ वैलिड नहीं किए गए ड्राइवरों को इंस्टॉल करना यूजर को वार्निंग देते हुए इंस्टॉलेशन की अनुमति देने के पश्चात संभव है कि कोड अनसाइंड है। .NET (प्रबंधित) कोड के लिए, [[मजबूत कुंजी|स्ट्रांग नेम]] साइनिंग नामक अतिरिक्त मैकेनिज्म है जो सर्टिफिकेट के विपरीत पब्लिक/प्राइवेट की और [[SHA-1]]-1 हैश का उपयोग करता है। चूँकि, माइक्रोसॉफ्ट ऑथेंटिकोड के रिप्लेसमेंट के रूप में स्ट्रॉन्ग नेम साइनिंग पर डिपेंडेंसी को डिसकरेज करता है।<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 सॉफ़्टवेयर पर, इसे ऐसे सेट किया गया है कि निष्पादन योग्य केवल फ़ैक्टरी-निर्मित डिस्क से बूट होगा, इसलिए निष्पादन योग्य को बर्न करने योग्य मीडिया में कॉपी करना ही सॉफ़्टवेयर के निष्पादन को रोकने के लिए पर्याप्त है।
यह प्रारंभ में ऑब्वियस नहीं लग सकता है कि किसी साइंड एप्लिकेशन को किसी अन्य डीवीडी पर कॉपी करने से उसे बूट होने की अनुमति क्यों नहीं मिलती है। एक्सबॉक्स (कंसोल) पर, इसका कारण यह है कि एक्सबॉक्स एक्सेक्यूटेबल्स फ़ाइल (एक्सबीई) में मीडिया-टाइप फ्लैग होता है, जो मीडिया के टाइप को निर्दिष्ट करता है जिससे एक्सबीई बूट किया जा सकता है। लगभग सभी एक्सबॉक्स सॉफ़्टवेयर पर, इसे ऐसे सेट किया गया है कि एक्सेक्यूटेबल्स केवल फ़ैक्टरी-जनरेट डिस्क से बूट होगा, इसलिए एक्सेक्यूटेबल्स को बर्नएबल मीडिया में कॉपी करना ही सॉफ़्टवेयर के एक्सेक्यूटेबल्स को स्टॉप करने के लिए पर्याप्त है।


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


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


==संदर्भ==
==संदर्भ==
Line 129: Line 130:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 16/08/2023]]
[[Category:Created On 16/08/2023]]
[[Category:Vigyan Ready]]

Latest revision as of 22:19, 5 December 2023

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

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

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

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

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

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

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

सर्टिफिकेट आइडेंटिफिकेशन (सीए) का उपयोग करके ट्रस्टड आइडेंटिफिकेशन

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

एक्सटेंडेड वेलिडेशन (ईवी) कोड पर साइनिंग

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

कुछ एप्लिकेशन, जैसे कि विंडोज 10 कर्नेल-मोड ड्राइवरों पर साइनिंग करने के लिए ईवी कोड साइनिंग सर्टिफिकेट की आवश्यकता होती है।[10] इसके अतिरिक्त, माइक्रोसॉफ्ट के आईईब्लॉग में कहा गया है कि ईवी कोड साइनिंग सर्टिफिकेट द्वारा साइनिंग इम्मेडिएटली रेपुटेशन स्थापित कर सकते हैं, भले ही उस फ़ाइल या पब्लिशर के लिए कोई पूर्व रेपुटेशन उपस्तिथ न हो।".[11]

सैंपल ईवी कोड साइनिंग सर्टिफिकेट

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

   Certificate:
      Data: 3 (0x2)
      Serial Number:
           59:4e:2d:88:5a:2c:b0:1a:5e:d6:4c:7b:df:35:59:7d
   Signature Algorithm: sha256WithRSAEncryption
       Issuer:
           commonName           = SSL.com EV Code Signing Intermediate CA RSA R3
           organizationName     = SSL Corp
           localityName         = Houston
           stateOrProvinceName  = Texas
           countryName          = US
       Validity
           Not Before: Aug 30 20:29:13 2019 GMT
           Not After : 12 Nov 12 20:29:13 2022 GMT
       Subject:
           1.3.6.1.4.1.311.60.2.1.3 = US
           1.3.6.1.4.1.311.60.2.1.2 = Nevada
            streetAddress             = 3100 Richmond Ave Ste 503
            businessCategory          = Private Organization
            postalCode                = 77098
            commonName                = SSL Corp
            serialNumber              = NV20081614243
            organizationName          = SSL Corp
            localityName              = Houston
            stateOrProvinceName       = Texas
            countryName               = US
        Subject Public Key Info:
           Public Key Algorithm: rsaEncryption
               Public-Key: (2048 bit)
               Modulus:
                   00:c3:e9:ae:be:d7:a2:6f:2f:24...
               Exponent: 65537 (0x10001)
       X509v3 extensions:
           X509v3 Authority Key Identifier: 
               keyid:36:BD:49:FF:31:2C:EB:AF:6A:40:FE:99:C0:16:ED:BA:FC:48:DD:5F
               
           Authority Information Access: 
               CA Issuers - URI:http://www.ssl.com/repository/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crt
               OCSP - URI::http://ocsps.ssl.com
               
           X509v3 Certificate Policies: 
               Policy: 2.23.140.1.3
               Policy: 1.2.616.1.113527.2.5.1.7
               Policy: 1.3.6.1.4.1.38064.1.3.3.2
                 CPS: https://www.ssl.com/repository
                 
           X509v3 Extended Key Usage: 
               Code Signing
           X509v3 CRL Distribution Points: 
           
               Full Name:
                 URI:http://crls.ssl.com/SSLcom-SubCA-EV-CodeSigning-RSA-4096-R3.crl
                 
           X509v3 Subject Key Identifier: 
               EC:6A:64:06:26:A7:7A:69:E8:CC:06:D5:6F:FA:E1:C2:9A:29:79:DE
           X509v3 Key Usage: critical
               Digital Signature
    Signature Algorithm: sha256WithRSAEncryption
        17:d7:a1:26:58:31:14:2b:9f:3b ...

सीए का अल्टरनेटिव  

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

टाइम-स्टैम्पिंग

टाइम-स्टैम्पिंग को ट्रस्ट वार्निंग से बचने के लिए डिज़ाइन किया गया था जो कि एक्सपयार्ड सर्टिफिकेट के केस में दिखाई देगी। वास्तव में, टाइम-स्टैम्पिंग किसी सर्टिफिकेट की वैलिडिटी पीरियड से परे कोड ट्रस्ट को एक्सटेंडेड करती है।[12]

ऐसी स्थिति में जब किसी कोम्प्रोमाईज़ड के कारण सर्टिफिकेट को रिवोकड करना होता है, तो कम्प्रोमिसिंग इवेंट स्पेसिफिक डेट और टाइम रिवोकेशन रिकॉर्ड का भाग बन जाएगा। इस केस में, टाइम-स्टैम्पिंग यह स्थापित करने में सहायता करती है कि कोड पर साइनिंग सर्टिफिकेट से कोम्प्रोमाईज़ड होने से पहले या पश्चात में किया गया था।[12]

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

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

समस्याएँ

किसी भी सिक्योरिटी मेजर्स के जैसे, कोड साइनिंग को डेफेटेड किया जा सकता है। यूजर को बिना अनसाइंड कोड रनिंग, या यहां तक ​​कि ऐसे कोड रनिंग करने के लिए भी ट्रिकड किया जा सकता है जो वेरीफाई करने से रिफ्यूज कर देता है, और सिस्टम केवल तब तक सिक्योर रहता है जब तक प्राइवेट की प्राइवेट रहती है।[13][14]

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

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

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

गेमिंग और कन्जूमर डिवाइस में अनसाइंड कोड

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

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

चूँकि, एक्सेक्यूटेबल्स साइंड है, केवल फ्लैग की वैल्यू चेंज करना संभव नहीं है क्योंकि यह एक्सेक्यूटेबल्स के साइनिंग को आल्टरस कर देता है, जिससे चेक करने पर वेलिडेशन फेल हो जाता है।

यह भी देखें

संदर्भ

  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