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

From Vigyanwiki
No edit summary
m (12 revisions imported from alpha:कोड_साइनिंग)
 
(3 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.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.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>
Line 85: Line 85:
         17:d7:a1:26:58:31:14:2b:9f:3b ...
         17:d7:a1:26:58:31:14:2b:9f:3b ...
===सीए का अल्टरनेटिव  ===
===सीए का अल्टरनेटिव  ===
दूसरा मॉडल प्रथम उपयोग मॉडल पर ट्रस्ट है, जिसमें डेवलपर्स अपनी सेल्फ-जनरेट की प्रदान करना सेलेक्ट कर सकते हैं। इस सिनेरियो में, यूजर को सरलता सर्वप्रथम ऑब्जेक्ट को वेरीफाई करने के लिए सीधे डेवलपर से पब्लिक की प्राप्त करनी होगी। कई कोड साइनिंग सिस्टम्स पब्लिक की को साइनिंग के इंटरनल स्टोर करेंगी। कुछ सॉफ्टवेयर फ्रेमवर्क और ओएस जो एक्सेक्यूटिंग करने से पहले कोड के साइनिंग को चेक करते हैं, आपको पहले रन के पश्चात उस पॉइंट से उस डेवलपर पर ट्रस्ट करने का आप्शन सेलेक्ट करने' की अनुमति देंगे। एप्लिकेशन डेवलपर इंस्टॉलर के साथ पब्लिक की सम्मिलित करके सिमिलर सिस्टम प्रदान कर सकता है। की का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी भी सबसेकेंट ऑब्जेक्ट को रन करने की आवश्यकता है, जैसे अपग्रेड, प्लगइन्स, या अन्य एप्लिकेशन, सभी उसी डेवलपर से आने के रूप में वेरीफाई हैं।  
दूसरा मॉडल प्रथम उपयोग मॉडल पर ट्रस्ट है, जिसमें डेवलपर्स अपनी सेल्फ-जनरेट की को सेलेक्ट कर सकते हैं। इस सिनेरियो में, यूजर को सरलता सर्वप्रथम ऑब्जेक्ट को वेरीफाई करने के लिए सीधे डेवलपर से पब्लिक की प्राप्त करनी होगी। कई कोड साइनिंग सिस्टम्स पब्लिक की को साइनिंग के इंटरनल स्टोर करेंगी। कुछ सॉफ्टवेयर फ्रेमवर्क और ओएस जो एक्सेक्यूटिंग करने से पहले कोड के साइनिंग को चेक करते हैं, आपको पहले रन के पश्चात उस पॉइंट से उस डेवलपर पर ट्रस्ट करने का आप्शन सेलेक्ट करने' की अनुमति देंगे। एप्लिकेशन डेवलपर इंस्टॉलर के साथ पब्लिक की सम्मिलित करके सिमिलर सिस्टम प्रदान कर सकता है। की का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि किसी भी सबसेकेंट ऑब्जेक्ट को रन करने की आवश्यकता है, जैसे अपग्रेड, प्लगइन्स, या अन्य एप्लिकेशन, सभी उसी डेवलपर से आने के रूप में वेरीफाई हैं।  


'''टाइम-स्टैम्पिंग'''
'''टाइम-स्टैम्पिंग'''
Line 95: Line 95:
'''[[Xcode|एक्सकोड]] में कोड साइनिंग'''
'''[[Xcode|एक्सकोड]] में कोड साइनिंग'''


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


===समस्याएँ ===
===समस्याएँ ===
Line 104: Line 104:
==इम्प्लीमेंटेशन==
==इम्प्लीमेंटेशन==


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

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

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