ऑबफसकेशन (सॉफ़्टवेयर): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(5 intermediate revisions by 4 users not shown)
Line 5: Line 5:
{{Information security}}
{{Information security}}


सॉफ़्टवेयर विकास में, ऑबफसकेशन सोर्स कोड या [[मशीन कोड]] बनाने का कार्य है जिसे मनुष्य या कंप्यूटर के लिए समझना कठिन होता है। [[प्राकृतिक भाषा|प्राकृतिक लैंग्वेज]] में ऑबफसकेशन की तरह, यह कथन लिखने के लिए अनावश्यक रूप से राउंडएबलआउट अभिव्यक्तियों का उपयोग कर सकता है। प्रोग्रामर डेलिबर्टेली कोड को उसके उद्देश्य ([[अस्पष्टता के माध्यम से सुरक्षा|ऑबफसकेशन के माध्यम से सुरक्षा]]) या उसके लॉजिक या उसमें निहित अंतर्निहित मानो को छिपाने के लिए ऑबफसकेशन कर सकते हैं, मुख्य रूप से टेम्पेरिंग को रोकने, [[रिवर्स इंजीनियरिंग]] को रोकने या यहां तक ​​कि सोर्स कोड पढ़ने वाले किसी व्यक्ति के लिए एक [[पहेली]] या रिक्रेएशनल चैलेंज बनाने के लिए यह मैन्युअल रूप से या स्वचालित टूल का उपयोग करके किया जा सकता है, इसके बाद वाला इंडस्ट्री में पसंदीदा तकनीक है।<ref>{{Cite web|url=https://searchsoftwarequality.techtarget.com/definition/obfuscation|title=What is obfuscation (obfu)? - Definition from WhatIs.com|website=SearchSoftwareQuality|language=en|access-date=2019-02-01}}</ref>
सॉफ़्टवेयर विकास में, ऑबफसकेशन सोर्स कोड या [[मशीन कोड]] बनाने का कार्य है जिसे मनुष्य या कंप्यूटर के लिए समझना कठिन होता है। [[प्राकृतिक भाषा|प्राकृतिक लैंग्वेज]] में ऑबफसकेशन की तरह, यह कथन लिखने के लिए अनावश्यक रूप से राउंडएबलआउट अभिव्यक्तियों का उपयोग कर सकता है। प्रोग्रामर डेलिबर्टेली कोड को उसके उद्देश्य ([[अस्पष्टता के माध्यम से सुरक्षा|ऑबफसकेशन के माध्यम से सुरक्षा]]) या उसके लॉजिक या उसमें निहित अंतर्निहित मानो को छिपाने के लिए ऑबफसकेशन कर सकते हैं, मुख्य रूप से टेम्पेरिंग को रोकने, [[रिवर्स इंजीनियरिंग]] को रोकने या यहां तक ​​कि सोर्स कोड पढ़ने वाले किसी व्यक्ति के लिए [[पहेली]] या रिक्रेएशनल चैलेंज बनाने के लिए यह मैन्युअल रूप से या स्वचालित टूल का उपयोग करके किया जा सकता है, इसके बाद वाला इंडस्ट्री में पसंदीदा तकनीक है।<ref>{{Cite web|url=https://searchsoftwarequality.techtarget.com/definition/obfuscation|title=What is obfuscation (obfu)? - Definition from WhatIs.com|website=SearchSoftwareQuality|language=en|access-date=2019-02-01}}</ref>
 
 
==अवलोकन==
==अवलोकन==
कुछ लैंग्वेज की आर्किटेक्वेरिएबल और विशेषताएं उन्हें दूसरों की तुलना में ऑबफसकेशन करना सरल बना सकती हैं।<ref>{{cite web|last=Binstock |first=Andrew |url=http://www.devx.com/microsoftISV/Article/11351 |title=Obfuscation: Cloaking your Code from Prying Eyes |date=2003-03-06 |access-date=2013-11-25 |url-status=dead |archive-url=https://web.archive.org/web/20080420165109/http://www.devx.com/microsoftISV/Article/11351 |archive-date=April 20, 2008 }}</ref><ref>{{cite web|last=Atwood |first=Jeff |url=http://www.codinghorror.com/blog/archives/000291.html |title=Jeff Atwood, May 15, 2005 |publisher=Codinghorror.com |date=2005-05-15 |access-date=2013-11-25}}</ref> [[सी (प्रोग्रामिंग भाषा)|सी (प्रोग्रामिंग लैंग्वेज )]],<ref>{{cite web |url=http://www.kenter.demon.nl/obfuscate.html |title=कहानियो|publisher=Kenter.demon.nl |access-date=2013-11-25 |archive-url=https://web.archive.org/web/20160304033430/http://www.kenter.demon.nl/obfuscate.html |archive-date=March 4, 2016 |url-status=dead }}</ref> [[सी++|C++]],<ref>{{cite web|url=http://www.dreamincode.net/forums/index.php?showtopic=38102 |title=C++ Tutorials – Obfuscated Code – A Simple Introduction |publisher=DreamInCode.net |access-date=2013-11-25}}</ref><ref>{{cite web|url=http://sites.google.com/site/rcorcs/posts/obfuscatedcode |title=C Tutorials – Obfuscated Code in C |date=2011-07-07 |access-date=2013-11-25}}</ref> और [[पर्ल]] [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] <ref>{{cite web|author=As of 2013-11-25 18:22 GMT |url=http://www.perlmonks.org/index.pl?node_id=291267 |title=लाइन शोर में पीई(ए)आरएल|publisher=Perlmonks.org |access-date=2013-11-25}}</ref> ऐसी लैंग्वेज के कुछ उदाहरण हैं जिन्हें ऑबफसकेशन करना सरल है। [[हास्केल (प्रोग्रामिंग भाषा)|हास्केल (प्रोग्रामिंग लैंग्वेज )]] संरचना में अधिक भिन्न होने के अतिरिक्त हास्केल भी अधिक ऑबफसकेशन है<ref>{{cite web|url=https://wiki.haskell.org/Obfuscation |title=Obfuscation – Haskell Wiki |date=2006-02-16 |access-date=2020-03-03 |url-status=live |archive-url=https://web.archive.org/web/20170830203204/https://wiki.haskell.org/Obfuscation |archive-date=August 30, 2017 }}</ref>  
कुछ लैंग्वेज की आर्किटेक्वेरिएबल और विशेषताएं उन्हें दूसरों की तुलना में ऑबफसकेशन करना सरल बना सकती हैं।<ref>{{cite web|last=Binstock |first=Andrew |url=http://www.devx.com/microsoftISV/Article/11351 |title=Obfuscation: Cloaking your Code from Prying Eyes |date=2003-03-06 |access-date=2013-11-25 |url-status=dead |archive-url=https://web.archive.org/web/20080420165109/http://www.devx.com/microsoftISV/Article/11351 |archive-date=April 20, 2008 }}</ref><ref>{{cite web|last=Atwood |first=Jeff |url=http://www.codinghorror.com/blog/archives/000291.html |title=Jeff Atwood, May 15, 2005 |publisher=Codinghorror.com |date=2005-05-15 |access-date=2013-11-25}}</ref> [[सी (प्रोग्रामिंग भाषा)|सी (प्रोग्रामिंग लैंग्वेज )]],<ref>{{cite web |url=http://www.kenter.demon.nl/obfuscate.html |title=कहानियो|publisher=Kenter.demon.nl |access-date=2013-11-25 |archive-url=https://web.archive.org/web/20160304033430/http://www.kenter.demon.nl/obfuscate.html |archive-date=March 4, 2016 |url-status=dead }}</ref> [[सी++|C++]],<ref>{{cite web|url=http://www.dreamincode.net/forums/index.php?showtopic=38102 |title=C++ Tutorials – Obfuscated Code – A Simple Introduction |publisher=DreamInCode.net |access-date=2013-11-25}}</ref><ref>{{cite web|url=http://sites.google.com/site/rcorcs/posts/obfuscatedcode |title=C Tutorials – Obfuscated Code in C |date=2011-07-07 |access-date=2013-11-25}}</ref> और [[पर्ल]] [[प्रोग्रामिंग भाषा|प्रोग्रामिंग लैंग्वेज]] <ref>{{cite web|author=As of 2013-11-25 18:22 GMT |url=http://www.perlmonks.org/index.pl?node_id=291267 |title=लाइन शोर में पीई(ए)आरएल|publisher=Perlmonks.org |access-date=2013-11-25}}</ref> ऐसी लैंग्वेज के कुछ उदाहरण हैं जिन्हें ऑबफसकेशन करना सरल है। [[हास्केल (प्रोग्रामिंग भाषा)|हास्केल (प्रोग्रामिंग लैंग्वेज )]] संरचना में अधिक भिन्न होने के अतिरिक्त हास्केल भी अधिक ऑबफसकेशन है<ref>{{cite web|url=https://wiki.haskell.org/Obfuscation |title=Obfuscation – Haskell Wiki |date=2006-02-16 |access-date=2020-03-03 |url-status=live |archive-url=https://web.archive.org/web/20170830203204/https://wiki.haskell.org/Obfuscation |archive-date=August 30, 2017 }}</ref>  
Line 34: Line 32:
ऑबफसकेशन सोर्स कोड लिखना और ब्रेन टीज़र को तनाव देने वाला हो सकता है। कई प्रोग्रामिंग प्रतियोगिताएं सबसे रचनात्मक रूप से ऑबफसकेशन कोड को पुरस्कृत करती हैं, जैसे कि अंतर्राष्ट्रीय ओफ़्फ़ुसेटेड सी कोड प्रतियोगिता और ओफ़्फ़ुसेटेड पर्ल प्रतियोगिता है ।
ऑबफसकेशन सोर्स कोड लिखना और ब्रेन टीज़र को तनाव देने वाला हो सकता है। कई प्रोग्रामिंग प्रतियोगिताएं सबसे रचनात्मक रूप से ऑबफसकेशन कोड को पुरस्कृत करती हैं, जैसे कि अंतर्राष्ट्रीय ओफ़्फ़ुसेटेड सी कोड प्रतियोगिता और ओफ़्फ़ुसेटेड पर्ल प्रतियोगिता है ।


पर्ल प्रोग्रामर्स के [[ हस्ताक्षर खंड |सिग्नेचर]] में लघु ऑबफसकेशन पर्ल प्रोग्राम का उपयोग किया जा सकता है। ये जेएपीएच (केवल एक और पर्ल हैकर) हैं।<ref>{{cite web |url=http://rochester.pm.org/talks/japh_discussion.txt |title=JAPH – Just Another Perl Hacker |author=<!--Staff writer(s); no by-line.--> |website=pm.org |publisher=Perl Mongers |archive-url=https://web.archive.org/web/20130516074850/http://rochester.pm.org/talks/japh_discussion.txt |archive-date=16 May 2013 |access-date=27 February 2015 }}</ref>
पर्ल प्रोग्रामर्स के [[ हस्ताक्षर खंड |सिग्नेचर]] में लघु ऑबफसकेशन पर्ल प्रोग्राम का उपयोग किया जा सकता है। ये जेएपीएच (केवल और पर्ल हैकर) हैं।<ref>{{cite web |url=http://rochester.pm.org/talks/japh_discussion.txt |title=JAPH – Just Another Perl Hacker |author=<!--Staff writer(s); no by-line.--> |website=pm.org |publisher=Perl Mongers |archive-url=https://web.archive.org/web/20130516074850/http://rochester.pm.org/talks/japh_discussion.txt |archive-date=16 May 2013 |access-date=27 February 2015 }}</ref>




Line 40: Line 38:
{{Further information|अविभाज्यता ऑबफसकेशन|ब्लैक-बॉक्स ऑबफसकेशन}}
{{Further information|अविभाज्यता ऑबफसकेशन|ब्लैक-बॉक्स ऑबफसकेशन}}


क्रिप्टोग्राफ़रों ने कोड को ऑबफसकेशन करने के विचार का पता लगाया है जिससे कोड को रिवर्स-इंजीनियरिंग करना क्रिप्टोग्राफ़िक रूप से कठिन हो जाता है। इसे [[अविभाज्यता अस्पष्टता|अविभाज्यता]] ऑबफसकेशन के कई प्रस्तावों में औपचारिक रूप दिया गया है, एक क्रिप्टोग्राफ़िक आदिम, जिसे यदि सुरक्षित रूप से बनाना संभव हो, तो किसी को कई अन्य प्रकार की क्रिप्टोग्राफी का निर्माण करने की अनुमति मिल जाएगी, जिसमें पूरी तरह से नए प्रकार भी सम्मिलित हैं जिन्हें कोई नहीं जानता कि कैसे बनाया जाए। (एक शसक्त धारणा, [[ब्लैक-बॉक्स अस्पष्टता|ब्लैक-बॉक्स ऑबफसकेशन]], सामान्य रूप से असंभव मानी जाती है।)<ref>{{Cite magazine |title=क्रिप्टोग्राफी ब्रेकथ्रू सॉफ़्टवेयर को अनहैक करने योग्य बना सकता है|url=https://www.wired.com/2014/02/cryptography-breakthrough/ |magazine=Wired |language=en-us |issn=1059-1028 |access-date=2021-03-14}}</ref><ref>{{Cite journal |last1=Jain |first1=Aayush |last2=Lin |first2=Huijia |last3=Sahai |first3=Amit |date=2020 |title=अच्छी तरह से स्थापित धारणाओं से अप्रभेद्यता अस्पष्टता|url=https://eprint.iacr.org/2020/1003 |journal=Cryptology ePrint Archive |arxiv=2008.09317}}</ref>
क्रिप्टोग्राफ़रों ने कोड को ऑबफसकेशन करने के विचार का पता लगाया है जिससे कोड को रिवर्स-इंजीनियरिंग करना क्रिप्टोग्राफ़िक रूप से कठिन हो जाता है। इसे [[अविभाज्यता अस्पष्टता|अविभाज्यता]] ऑबफसकेशन के कई प्रस्तावों में औपचारिक रूप दिया गया है, क्रिप्टोग्राफ़िक प्रिमिटिव, जिसे यदि सुरक्षित रूप से बनाना संभव हो, तो किसी को कई अन्य प्रकार की क्रिप्टोग्राफी का निर्माण करने की अनुमति मिल जाएगी, जिसमें पूरी तरह से नए प्रकार भी सम्मिलित हैं जिन्हें कोई नहीं जानता कि कैसे बनाया जाए। (एक शसक्त धारणा, [[ब्लैक-बॉक्स अस्पष्टता|ब्लैक-बॉक्स ऑबफसकेशन]], सामान्य रूप से असंभव मानी जाती है।)<ref>{{Cite magazine |title=क्रिप्टोग्राफी ब्रेकथ्रू सॉफ़्टवेयर को अनहैक करने योग्य बना सकता है|url=https://www.wired.com/2014/02/cryptography-breakthrough/ |magazine=Wired |language=en-us |issn=1059-1028 |access-date=2021-03-14}}</ref><ref>{{Cite journal |last1=Jain |first1=Aayush |last2=Lin |first2=Huijia |last3=Sahai |first3=Amit |date=2020 |title=अच्छी तरह से स्थापित धारणाओं से अप्रभेद्यता अस्पष्टता|url=https://eprint.iacr.org/2020/1003 |journal=Cryptology ePrint Archive |arxiv=2008.09317}}</ref>




==ऑबफसकेशन के हानि ==
==ऑबफसकेशन के हानि ==


* जबकि ऑबफसकेशन पढ़ने, लिखने और रिवर्स-इंजीनियरिंग को एक प्रोग्राम को कठिन और समय लेने वाली बना सकती है, किंतु जरूरी नहीं कि यह इसे असंभव बना दे।<ref>{{cite web|title="Can We Obfuscate Programs?" by Boaz Barak|url=http://www.math.ias.edu/~boaz/Papers/obf_informal.html|archive-url=https://web.archive.org/web/20160323104433/http://www.math.ias.edu/~boaz/Papers/obf_informal.html|archive-date=March 23, 2016|access-date=2013-11-25|publisher=Math.ias.edu}}</ref>
* जबकि ऑबफसकेशन पढ़ने, लिखने और रिवर्स-इंजीनियरिंग को प्रोग्राम को कठिन और समय लेने वाली बना सकती है, किंतु जरूरी नहीं कि यह इसे असंभव बना दे।<ref>{{cite web|title="Can We Obfuscate Programs?" by Boaz Barak|url=http://www.math.ias.edu/~boaz/Papers/obf_informal.html|archive-url=https://web.archive.org/web/20160323104433/http://www.math.ias.edu/~boaz/Papers/obf_informal.html|archive-date=March 23, 2016|access-date=2013-11-25|publisher=Math.ias.edu}}</ref>
* यह डेवलपर्स के लिए निर्माण प्रक्रिया में समय और कॉम्प्लेक्सिटी जोड़ता है।
* यह डेवलपर्स के लिए निर्माण प्रक्रिया में समय और कॉम्प्लेक्सिटी जोड़ता है।
* सॉफ़्टवेयर के ऑबफसकेशन हो जाने के बाद यह डिबगिंग संबंधी समस्याओं को अत्यंत कठिन बना सकता है।
* सॉफ़्टवेयर के ऑबफसकेशन हो जाने के बाद यह डिबगिंग संबंधी समस्याओं को अत्यंत कठिन बना सकता है।
* एक बार जब कोड एबंडवेयर बन जाता है और उसका रखरखाव नहीं किया जाता है, तो होबईस्ट लोग प्रोग्राम को बनाए रखना चाहते हैं, मॉड जोड़ना चाहते हैं, या इसे उत्तम रूप से समझना चाहते हैं। ऑबफसकेशन के कारण अंतिम उपयोगकर्ताओं के लिए कोड के साथ उपयोगी कार्य करना कठिन हो जाता है।
* एक बार जब कोड एबंडवेयर बन जाता है और उसका रखरखाव नहीं किया जाता है, तो होबईस्ट लोग प्रोग्राम को बनाए रखना चाहते हैं, मॉड जोड़ना चाहते हैं, या इसे उत्तम रूप से समझना चाहते हैं। ऑबफसकेशन के कारण अंतिम उपयोगकर्ताओं के लिए कोड के साथ उपयोगी कार्य करना कठिन हो जाता है।
* कुछ प्रकार की ऑबफसकेशन (जिससे कोड जो केवल एक स्थानीय बाइनरी नहीं है और आवश्यकतानुसार वेब सर्वर से मिनी बाइनरी डाउनलोड करता है) प्रदर्शन को व्यर्थ कर सकता है और/या इंटरनेट की आवश्यकता हो सकती है।
* कुछ प्रकार की ऑबफसकेशन (जिससे कोड जो केवल स्थानीय बाइनरी नहीं है और आवश्यकतानुसार वेब सर्वर से मिनी बाइनरी डाउनलोड करता है) प्रदर्शन को व्यर्थ कर सकता है और/या इंटरनेट की आवश्यकता हो सकती है।


=== उपयोगकर्ताओं को ऑबफसकेशन कोड के बारे में सूचित करना ===
=== उपयोगकर्ताओं को ऑबफसकेशन कोड के बारे में सूचित करना ===
कुछ एंटीवायरस सॉफ़्टवेयर, जैसे एवीजी एंटीवायरस,<ref>{{Cite web |date=2020-07-21 |title=Blocking website and only way to fix is disabling HTTPS s... {{!}} AVG |url=https://support.avg.com/answers?id=9060N000000gbDLQAY |access-date=2022-02-04 |website=support.avg.com |language=en}}</ref> यह अपने उपयोगकर्ताओं को तब भी सचेत करेगा जब वे मैन्युअल रूप से ऑबफसकेशन किए गए कोड वाली किसी वेबसाइट पर पहुंचेंगे, क्योंकि ऑबफसकेशन का एक उद्देश्य मालिसियस कोड को छिपाना भी हो सकता है। चूँकि कुछ डेवलपर फ़ाइल आकार को कम करने या सुरक्षा बढ़ाने के उद्देश्य से कोड ऑबफसकेशन का उपयोग कर सकते हैं। औसत उपयोगकर्ता यह अपेक्षा नहीं कर सकता है कि उसका एंटीवायरस सॉफ़्टवेयर किसी अन्यथा हानिरहित कोड के बारे में अलर्ट प्रदान करेगा, विशेष रूप से विश्वसनीय निगमों से, इसलिए ऐसी सुविधा वास्तव में उपयोगकर्ताओं को वैध सॉफ़्टवेयर का उपयोग करने से रोक सकती है।
कुछ एंटीवायरस सॉफ़्टवेयर, जैसे एवीजी एंटीवायरस,<ref>{{Cite web |date=2020-07-21 |title=Blocking website and only way to fix is disabling HTTPS s... {{!}} AVG |url=https://support.avg.com/answers?id=9060N000000gbDLQAY |access-date=2022-02-04 |website=support.avg.com |language=en}}</ref> यह अपने उपयोगकर्ताओं को तब भी सचेत करेगा जब वे मैन्युअल रूप से ऑबफसकेशन किए गए कोड वाली किसी वेबसाइट पर पहुंचेंगे, क्योंकि ऑबफसकेशन का उद्देश्य मालिसियस कोड को छिपाना भी हो सकता है। चूँकि कुछ डेवलपर फ़ाइल आकार को कम करने या सुरक्षा बढ़ाने के उद्देश्य से कोड ऑबफसकेशन का उपयोग कर सकते हैं। औसत उपयोगकर्ता यह अपेक्षा नहीं कर सकता है कि उसका एंटीवायरस सॉफ़्टवेयर किसी अन्यथा हानिरहित कोड के बारे में अलर्ट प्रदान करेगा, विशेष रूप से विश्वसनीय निगमों से, इसलिए ऐसी सुविधा वास्तव में उपयोगकर्ताओं को वैध सॉफ़्टवेयर का उपयोग करने से रोक सकती है।


मोज़िला और गूगल अपने ऐड-ऑन स्टोर में ऑबफसकेशन कोड वाले ब्राउज़र एक्सटेंशन को अनुमति नहीं देते हैं।<ref>{{Cite web |last=at 05:01 |first=Thomas Claburn in San Francisco 2 Oct 2018 |title=Google क्रोम वेब स्टोर में छिपे हुए कोड के खिलाफ कार्रवाई कर रहा है|url=https://www.theregister.co.uk/2018/10/02/google_chrome_web_store/ |access-date=2019-11-12 |website=www.theregister.co.uk |language=en}}</ref><ref>{{Cite web |last=Cimpanu |first=Catalin |title=मोज़िला ने अस्पष्ट कोड वाले फ़ायरफ़ॉक्स एक्सटेंशन पर प्रतिबंध लगाने की घोषणा की|url=https://www.zdnet.com/article/mozilla-announces-ban-on-firefox-extensions-containing-obfuscated-code/ |access-date=2019-11-12 |website=ZDNet |language=en}}</ref>
मोज़िला और गूगल अपने ऐड-ऑन स्टोर में ऑबफसकेशन कोड वाले ब्राउज़र एक्सटेंशन को अनुमति नहीं देते हैं।<ref>{{Cite web |last=at 05:01 |first=Thomas Claburn in San Francisco 2 Oct 2018 |title=Google क्रोम वेब स्टोर में छिपे हुए कोड के खिलाफ कार्रवाई कर रहा है|url=https://www.theregister.co.uk/2018/10/02/google_chrome_web_store/ |access-date=2019-11-12 |website=www.theregister.co.uk |language=en}}</ref><ref>{{Cite web |last=Cimpanu |first=Catalin |title=मोज़िला ने अस्पष्ट कोड वाले फ़ायरफ़ॉक्स एक्सटेंशन पर प्रतिबंध लगाने की घोषणा की|url=https://www.zdnet.com/article/mozilla-announces-ban-on-firefox-extensions-containing-obfuscated-code/ |access-date=2019-11-12 |website=ZDNet |language=en}}</ref>
Line 62: Line 60:


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


== मॉडल ऑबफसकेशन ==
== मॉडल ऑबफसकेशन ==


मॉडल ऑबफस्केशन [[ यंत्र अधिगम |मशीन लर्निंग]] मॉडल की आंतरिक संरचना को छिपाने की एक तकनीक है।<ref>{{cite journal |last1=Zhou |first1=Mingyi |last2=Gao |first2=Xiang |last3=Wu |first3=Jing |last4=Grundy |first4=John C. |last5=Chen |first5=Xiao |last6=Chen |first6=Chunyang |last7=Li |first7=Li |title=तैनात तंत्रिका नेटवर्क को सुरक्षित करने के लिए मॉडल अस्पष्टता|date=2023 |url=https://openreview.net/forum?id=ib482K6HQod |language=en}}</ref> ऑबफसकेशन एक मॉडल को ब्लैक बॉक्स में बदल देती है। यह [[समझाने योग्य एआई]] के विपरीत है।
मॉडल ऑबफस्केशन [[ यंत्र अधिगम |मशीन लर्निंग]] मॉडल की आंतरिक संरचना को छिपाने की तकनीक है।<ref>{{cite journal |last1=Zhou |first1=Mingyi |last2=Gao |first2=Xiang |last3=Wu |first3=Jing |last4=Grundy |first4=John C. |last5=Chen |first5=Xiao |last6=Chen |first6=Chunyang |last7=Li |first7=Li |title=तैनात तंत्रिका नेटवर्क को सुरक्षित करने के लिए मॉडल अस्पष्टता|date=2023 |url=https://openreview.net/forum?id=ib482K6HQod |language=en}}</ref> ऑबफसकेशन मॉडल को ब्लैक बॉक्स में बदल देती है। यह [[समझाने योग्य एआई]] के विपरीत है।


==यह भी देखें==
==यह भी देखें==
Line 72: Line 70:
* एएआरडी कोड
* एएआरडी कोड
* [[स्पेगेटी कोड]]
* [[स्पेगेटी कोड]]
* केवल लिखने योग्य भाषा
* राईट ओनली लैंग्वेज
* [[विघटन]]
* [[डीकम्पाइलर ]]
* [[गूढ़ प्रोग्रामिंग भाषा]]
* [[एसोटेरिक प्रोग्रामिंग लैंग्वेज]]
* [[क्विन (कंप्यूटिंग)]]
* [[क्विन (कंप्यूटिंग)]]
* [[ओवरलैपिंग निर्देश]]
* [[ओवरलैपिंग निर्देश]]
Line 80: Line 78:
* [[हार्डवेयर अस्पष्टता]]
* [[हार्डवेयर अस्पष्टता]]
* अंडरहैंडेड सी प्रतियोगिता
* अंडरहैंडेड सी प्रतियोगिता
* [[स्रोत-से-स्रोत संकलक]]
* [[सोर्स-से-सोर्स कम्पाइलर]]
* [[प्रोगार्ड (सॉफ्टवेयर)]]|प्रोगार्ड (जावा ऑबफस्केटर)
* [[प्रोगार्ड (सॉफ्टवेयर)]]|प्रोगार्ड (जावा ऑबफस्केटर)
* डॉटफस्केटर|डॉटफस्केटर (.नेट ऑबफस्केटर)
* डॉटफस्केटर|डॉटफस्केटर (.नेट ऑबफस्केटर)
* [[डिजिटल अधिकार प्रबंधन]]
* [[डिजिटल अधिकार प्रबंधन]]
* अविभाज्यता अस्पष्टता
* अविभाज्यता अस्पष्टता
* [[स्रोत कोड सौंदर्यीकरण]]
* [[सोर्स  कोड बीयूटीफिकेशन]]
{{Div col end}}
{{Div col end}}


Line 116: Line 114:
*[[c2:BlackBoxComputation]]
*[[c2:BlackBoxComputation]]


{{DEFAULTSORT:Obfuscated Code}}[[Category: सॉफ़्टवेयर अस्पष्टता| सॉफ़्टवेयर अस्पष्टता]] [[Category: उदाहरण सी कोड वाले लेख]] [[Category: सोर्स कोड]] [[Category: कार्यक्रम परिवर्तन]]
{{DEFAULTSORT:Obfuscated Code}}  


[[es:Ofuscación#Informática]]
[[es:Ofuscación#Informática]]


 
[[Category:Articles with Curlie links|Obfuscated Code]]
 
[[Category:Articles with hatnote templates targeting a nonexistent page|Obfuscated Code]]
[[Category: Machine Translated Page]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 25/07/2023]]
[[Category:CS1 errors]]
[[Category:Citation Style 1 templates|M]]
[[Category:Collapse templates]]
[[Category:Created On 25/07/2023|Obfuscated Code]]
[[Category:Lua-based templates|Obfuscated Code]]
[[Category:Machine Translated Page|Obfuscated Code]]
[[Category:Multi-column templates|Obfuscated Code]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages using div col with small parameter|Obfuscated Code]]
[[Category:Pages with script errors|Obfuscated Code]]
[[Category:Short description with empty Wikidata description|Obfuscated Code]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Obfuscated Code]]
[[Category:Templates based on the Citation/CS1 Lua module]]
[[Category:Templates generating COinS|Cite magazine]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category|Obfuscated Code]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions|Obfuscated Code]]
[[Category:Templates using TemplateData|Obfuscated Code]]
[[Category:Templates using under-protected Lua modules|Obfuscated Code]]
[[Category:Wikipedia fully protected templates|Div col]]
[[Category:Wikipedia metatemplates]]
[[Category:उदाहरण सी कोड वाले लेख|Obfuscated Code]]
[[Category:कार्यक्रम परिवर्तन|Obfuscated Code]]
[[Category:सॉफ़्टवेयर अस्पष्टता| सॉफ़्टवेयर अस्पष्टता]]
[[Category:सोर्स कोड|Obfuscated Code]]

Latest revision as of 17:57, 10 August 2023

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

अवलोकन

कुछ लैंग्वेज की आर्किटेक्वेरिएबल और विशेषताएं उन्हें दूसरों की तुलना में ऑबफसकेशन करना सरल बना सकती हैं।[2][3] सी (प्रोग्रामिंग लैंग्वेज ),[4] C++,[5][6] और पर्ल प्रोग्रामिंग लैंग्वेज [7] ऐसी लैंग्वेज के कुछ उदाहरण हैं जिन्हें ऑबफसकेशन करना सरल है। हास्केल (प्रोग्रामिंग लैंग्वेज ) संरचना में अधिक भिन्न होने के अतिरिक्त हास्केल भी अधिक ऑबफसकेशन है[8]

वे गुण जो किसी लैंग्वेज को ऑबफसकेशन बनाते हैं वे तुरंत स्पष्ट नहीं होते हैं।

टेक्नीक

ऑबफसकेशन के प्रकारों में सरल कीवर्ड सब्स्टिटूशन, आर्टिस्टिक इफ़ेक्ट बनाने के लिए व्हाइटस्पेस का उपयोग या गैर-उपयोग, और स्व-उत्पन्न या भारी कंप्रेस्ड प्रोग्राम सम्मिलित हैं।

निक मोंटफोर्ट के अनुसार, तकनीकों में सम्मिलित हो सकते हैं:

  1. नेमिंग ऑबफसकेशन, जिसमें अर्थहीन या ऑबफसकेशन विधि से वेरिएबल का नेमिंग सम्मिलित है;
  2. डेटा/कोड/टिप्पणी अस्पष्ट, जिसमें कुछ वास्तविक कोड को टिप्पणियों जैसा बनाना या डेटा के साथ ऑबफसकेशन करने वाला सिंटैक्स बनाना सम्मिलित है;
  3. डबल कोडिंग, जो काव्य रूप या रौचक आकृतियों में कोड प्रदर्शित कर सकती है।[9]


ऑटोमेटेड टूल्स

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

यद्यपि अधिकांश व्यावसायिक ऑबफस्केशन समाधान या तो प्रोग्राम सोर्स कोड, या प्लेटफ़ॉर्म-इंडिपेंडेंट बाइटकोड को परिवर्तित करके काम करते हैं जैसा कि जावा और .NET द्वारा उपयोग किया जाता है, कुछ ऐसे भी हैं जो सीधे संकलित बायनेरिज़ पर काम करते हैं।


रिक्रेएशनल

ऑबफसकेशन सोर्स कोड लिखना और ब्रेन टीज़र को तनाव देने वाला हो सकता है। कई प्रोग्रामिंग प्रतियोगिताएं सबसे रचनात्मक रूप से ऑबफसकेशन कोड को पुरस्कृत करती हैं, जैसे कि अंतर्राष्ट्रीय ओफ़्फ़ुसेटेड सी कोड प्रतियोगिता और ओफ़्फ़ुसेटेड पर्ल प्रतियोगिता है ।

पर्ल प्रोग्रामर्स के सिग्नेचर में लघु ऑबफसकेशन पर्ल प्रोग्राम का उपयोग किया जा सकता है। ये जेएपीएच (केवल और पर्ल हैकर) हैं।[15]


क्रिप्टोग्राफ़िक

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


ऑबफसकेशन के हानि

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

उपयोगकर्ताओं को ऑबफसकेशन कोड के बारे में सूचित करना

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

मोज़िला और गूगल अपने ऐड-ऑन स्टोर में ऑबफसकेशन कोड वाले ब्राउज़र एक्सटेंशन को अनुमति नहीं देते हैं।[20][21]


ऑबफसकेशन और कॉपीलेफ्ट लाइसेंस

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


डिकम्पाइलर

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

मॉडल ऑबफसकेशन

मॉडल ऑबफस्केशन मशीन लर्निंग मॉडल की आंतरिक संरचना को छिपाने की तकनीक है।[24] ऑबफसकेशन मॉडल को ब्लैक बॉक्स में बदल देती है। यह समझाने योग्य एआई के विपरीत है।

यह भी देखें

संदर्भ

  1. "What is obfuscation (obfu)? - Definition from WhatIs.com". SearchSoftwareQuality (in English). Retrieved 2019-02-01.
  2. Binstock, Andrew (2003-03-06). "Obfuscation: Cloaking your Code from Prying Eyes". Archived from the original on April 20, 2008. Retrieved 2013-11-25.
  3. Atwood, Jeff (2005-05-15). "Jeff Atwood, May 15, 2005". Codinghorror.com. Retrieved 2013-11-25.
  4. "कहानियो". Kenter.demon.nl. Archived from the original on March 4, 2016. Retrieved 2013-11-25.
  5. "C++ Tutorials – Obfuscated Code – A Simple Introduction". DreamInCode.net. Retrieved 2013-11-25.
  6. "C Tutorials – Obfuscated Code in C". 2011-07-07. Retrieved 2013-11-25.
  7. As of 2013-11-25 18:22 GMT. "लाइन शोर में पीई(ए)आरएल". Perlmonks.org. Retrieved 2013-11-25.
  8. "Obfuscation – Haskell Wiki". 2006-02-16. Archived from the original on August 30, 2017. Retrieved 2020-03-03.
  9. Montfort, Nick. "अस्पष्ट कोड" (PDF). Archived from the original (PDF) on April 24, 2019. Retrieved 2017-11-24.
  10. Ben Kurtovic. "अस्पष्ट "हैलो वर्ल्ड!"". benkurtovic.com.
  11. "अस्पष्ट अजगर". wiki.c2.com.
  12. "पहली वार्षिक अस्पष्ट पायथन सामग्री". code.activestate.com.
  13. domas (2022-11-03), xoreaxeaxeax/movfuscator, retrieved 2022-11-05
  14. Break Me00 The MoVfuscator Turning mov into a soul crushing RE nightmare Christopher Domas (in English), retrieved 2022-11-05
  15. "JAPH – Just Another Perl Hacker". pm.org. Perl Mongers. Archived from the original on 16 May 2013. Retrieved 27 February 2015.
  16. "क्रिप्टोग्राफी ब्रेकथ्रू सॉफ़्टवेयर को अनहैक करने योग्य बना सकता है". Wired (in English). ISSN 1059-1028. Retrieved 2021-03-14.
  17. Jain, Aayush; Lin, Huijia; Sahai, Amit (2020). "अच्छी तरह से स्थापित धारणाओं से अप्रभेद्यता अस्पष्टता". Cryptology ePrint Archive. arXiv:2008.09317.
  18. ""Can We Obfuscate Programs?" by Boaz Barak". Math.ias.edu. Archived from the original on March 23, 2016. Retrieved 2013-11-25.
  19. "Blocking website and only way to fix is disabling HTTPS s... | AVG". support.avg.com (in English). 2020-07-21. Retrieved 2022-02-04.
  20. at 05:01, Thomas Claburn in San Francisco 2 Oct 2018. "Google क्रोम वेब स्टोर में छिपे हुए कोड के खिलाफ कार्रवाई कर रहा है". www.theregister.co.uk (in English). Retrieved 2019-11-12.
  21. Cimpanu, Catalin. "मोज़िला ने अस्पष्ट कोड वाले फ़ायरफ़ॉक्स एक्सटेंशन पर प्रतिबंध लगाने की घोषणा की". ZDNet (in English). Retrieved 2019-11-12.
  22. "जीपीएल में "कार्य में संशोधन करने के लिए कार्य के पसंदीदा स्वरूप" भाषा के पीछे तर्क". Lwn.net. Retrieved 2013-11-25.
  23. "What is free software?". gnu.org. Retrieved 2014-12-18.
  24. Zhou, Mingyi; Gao, Xiang; Wu, Jing; Grundy, John C.; Chen, Xiao; Chen, Chunyang; Li, Li (2023). "तैनात तंत्रिका नेटवर्क को सुरक्षित करने के लिए मॉडल अस्पष्टता" (in English). {{cite journal}}: Cite journal requires |journal= (help)


अग्रिम पठन


बाहरी संबंध