व्यावहारिक रूप से, अगर कोड और चाबी एक एसडी कार्ड मशीन पर हैं, वे होगा यह डी-संकलन करने में सक्षम हो, वे जाएगा कुंजियों की खोज करने में सक्षम हो सकता है और वे जाएगा संवेदनशील डेटा निकालने में सक्षम होना।
यह फिल्मों को एन्क्रिप्ट करने जैसा है, एक डीवीडी में फिल्म को डिक्रिप्ट करने के लिए आवश्यक सभी जानकारी को शामिल करना होता है ताकि इसे दर्शक को प्रदर्शित किया जा सके, इसलिए सभी मूवी कॉपी सुरक्षा तंत्र अंततः बर्बाद हो जाते हैं।
सबसे अच्छा आप कर सकते हैं रिवर्स इंजीनियरिंग के अर्थशास्त्र को बदलने के लिए अपने उत्पाद।
क्या एन्क्रिप्शन और / या इसके लायक है?
अब हमने स्थापित किया है कि अपने आप को पूरी तरह से सुरक्षित रखने का कोई तरीका नहीं है, सवाल बन जाते हैं
- ऐसा होने की कितनी संभावना है?
- आपके एल्गोरिथ्म और डेटा के किसी और के लिए मूल्य क्या है?
- अपने सॉफ़्टवेयर का उपयोग करने के लिए लाइसेंस खरीदने के लिए उन्हें क्या लागत है?
- आपके एल्गोरिथ्म और डेटा को दोहराने के लिए उन्हें क्या लागत है?
- रिवर्स इंजीनियरिंग आपके एल्गोरिथ्म और डेटा की लागत क्या है?
- आपके एल्गोरिथ्म और डेटा की सुरक्षा के लिए आपको क्या लागत है?
यदि ये आपके एल्गोरिथ्म / डेटा की सुरक्षा के लिए एक महत्वपूर्ण आर्थिक अनिवार्यता पैदा करते हैं तो आपको इसे करने पर ध्यान देना चाहिए। उदाहरण के लिए, यदि ग्राहकों के लिए सेवा का मूल्य और लागत दोनों उच्च हैं, लेकिन रिवर्स इंजीनियरिंग की लागत आपके कोड को स्वयं विकसित करने की लागत से बहुत कम है, तो लोग इसका प्रयास कर सकते हैं।
तो, यह आपके प्रश्न की ओर जाता है
- आप अपने एल्गोरिथ्म और डेटा को कैसे सुरक्षित करते हैं?
कहानियो
आपके द्वारा सुझाया गया विकल्प, कोड को बाधित करते हुए, ऊपर दिए गए अर्थशास्त्र के साथ खिलवाड़ करता है - यह आपके लिए लागत को बढ़ाने की कोशिश करता है (5 से ऊपर) आपको (6) लागत को बढ़ाए बिना। समस्या यह है कि डीवीडी एन्क्रिप्शन के साथ यह विफलता के लिए बर्बाद है और यदि 3, 4 और 5 के बीच पर्याप्त अंतर है, तो अंततः कोई ऐसा करेगा।
एक अन्य विकल्प स्टेग्नोग्राफ़ी का एक रूप हो सकता है , जो आपको पहचानने की अनुमति देता है कि किसने आपके कोड को डिक्रिप्ट किया और इसे वितरित करना शुरू किया। उदाहरण के लिए, यदि आपके डेटा के हिस्से के रूप में आपके पास 100 अलग-अलग फ्लोट मान हैं, और उन मूल्यों में से प्रत्येक के एलएसबी में 1 बिट त्रुटि आपके आवेदन के साथ समस्या पैदा नहीं करेगी, तो उन बिट्स में एक अद्वितीय (प्रत्येक ग्राहक) पहचानकर्ता को एनकोड करें । समस्या यह है, अगर किसी के पास आपके एप्लिकेशन डेटा की कई प्रतियों तक पहुंच है, तो यह स्पष्ट होगा कि यह अलग है, जिससे छिपे हुए संदेश को पहचानना आसान हो जाता है।
सुरक्षा
केवल सच में सुरक्षित विकल्प आपके सॉफ़्टवेयर का एक महत्वपूर्ण हिस्सा एक सेवा के रूप में प्रदान करना है , बजाय इसे अपने आवेदन में शामिल करने के।
वैचारिक रूप से, आपका एप्लिकेशन आपके एल्गोरिथ्म को चलाने के लिए आवश्यक सभी डेटा एकत्र करेगा, इसे क्लाउड में एक सर्वर (आपके द्वारा नियंत्रित) के अनुरोध के रूप में पैकेज करेगा, आपकी सेवा फिर आपके परिणामों की गणना करेगी और इसे क्लाइंट को वापस भेज देगी, जो इसे प्रदर्शित करेगा।
यह आपके सभी स्वामित्व, गोपनीय डेटा और एल्गोरिदम को एक डोमेन के भीतर रखता है जिसे आप पूरी तरह से नियंत्रित करते हैं, और क्लाइंट के किसी भी निकालने की संभावना को हटा देता है।
स्पष्ट नकारात्मक पक्ष यह है कि क्लाइंट आपके सेवा प्रावधान में बंधे हैं, आपके सर्वर और उनके इंटरनेट कनेक्शन की दया पर हैं। प्लस साइड पर, वे बग फिक्स के साथ हमेशा अद्यतित रहते हैं। दुर्भाग्य से कई लोगों को इन कारणों से सास पर आपत्ति है ।
हालांकि यह एक बहुत बड़ा कदम होगा, और इसमें 6 से ऊपर की भारी लागत हो सकती है, लेकिन एकमात्र तरीका है कि मैं आपके एल्गोरिथ्म और डेटा को पूरी तरह से सुरक्षित रख सकता हूं ।