2012-12-19 5 views
7

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

हालांकि, मैं इंस्टॉलर के साथ डेटा फ़ाइल शामिल नहीं कर सकता क्योंकि उन निकालने के लिए बहुत आसान है। मैंने एन्क्रिप्शन सुविधाओं की कोशिश की है लेकिन वे बिल्कुल सही काम नहीं कर रहे हैं।

तो मैं फ़ाइल वितरित करने का एक तरीका खोजने का प्रयास कर रहा हूं ताकि उपयोगकर्ता वितरित होने पर इसे पढ़ न सके। मैंने एन्क्रिप्टेड रूप में HTTP पर PHP के माध्यम से फ़ाइल को डाउनलोड करने के विभिन्न तरीकों के बारे में सोचा था, लेकिन किसी भी तरह से एन्क्रिप्शन कुंजी भेजने के बिना ऐसा करना मुश्किल है। उल्लेख नहीं है, मैं HTTP मामलों में बहुत अनुभवी नहीं हूँ।

मैं इसके आसपास काम करने के लिए कुछ विचारों के साथ आया हूं लेकिन या तो वे काम नहीं करते हैं या वे बहुत जटिल हैं। मैं बल्कि एक कम जटिल समाधान के साथ आना होगा।

यह बहुत सुरक्षित नहीं होना चाहिए, लेकिन इसे एक HTTP स्निफ़र के खिलाफ खड़ा होना चाहिए। इसे पूरा करने का सबसे अच्छा तरीका क्या होगा?

+0

एन्क्रिप्शन क्यों काम नहीं करेगा? यदि आप इसे उन चाबियों से एन्क्रिप्ट करते हैं जो केवल आपके एप्लिकेशन के लिए ज्ञात हैं, तो समस्या क्या है? –

+4

मुझे नहीं पता कि एन्क्रिप्शन क्यों काम नहीं करेगा, लेकिन मुझे कहना होगा ... क्या * बिल्कुल * आप यहां हासिल करने की कोशिश कर रहे हैं? यह सिर्फ "नरक क्या है? आप यह क्यों करेंगे?" –

+2

यह भी देखें: [** एक्सवाई समस्या **] (http://meta.stackexchange.com/q/66377/135887)। – Charles

उत्तर

3

यह मूल रूप से सॉफ्टवेयर में ऐसा करना असंभव है। यदि उपयोगकर्ता का मशीन पर चल रहा आपका प्रोग्राम इसे पढ़ सकता है, तो उपयोगकर्ता की मशीन पर चलने वाला कोई अन्य प्रोग्राम इसे पढ़ सकता है; और उपयोगकर्ता उस अन्य प्रोग्राम को नियंत्रित कर सकता है, और फ़ाइल की सामग्री निकाल सकता है।

आप इसे कठिन बना सकते हैं; आम तौर पर लोग इस सुविधा को डीआरएम कहते हैं, और कुछ डीआरएम योजनाओं को तोड़ने में मुश्किल होती है। वे बहुत मजबूत हो जाते हैं, और तोड़ने में अधिक मुश्किल होते हैं, यदि आप विशेष हार्डवेयर का उपयोग करते हैं, जो डिक्रिप्शन को संभालता है और किसी भी गैर-सुरक्षित घटकों को डेटा तक पहुंचने की अनुमति नहीं देता है। लेकिन अंत में, हमेशा इसके चारों ओर एक रास्ता है; एक समर्पित उपयोगकर्ता हमेशा एक उचित विश्लेषक को उचित बस में लगा सकता है और इसके डेटा को पढ़ सकता है।

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

हालांकि, यह सब काफी कठिन और महंगा है, और आपके उपयोगकर्ताओं के लिए जीवन को और अधिक कठिन बनाता है। और यदि कोई है, कहीं छोटा छेद, कि एक व्यक्ति क्रैक कर सकता है, तो वे केवल डेटा निकाल सकते हैं और इसे कहीं भी पोस्ट कर सकते हैं; इससे कोई फर्क नहीं पड़ता कि ज्यादातर लोगों को बाईपास करना बहुत कठिन होता है, जब तक एक व्यक्ति कर सकता है, खेल खत्म हो गया है।

और निश्चित रूप से, इन सभी हार्डवेयर आधारित तंत्रों के लिए आपके उपयोगकर्ताओं को विशेष हार्डवेयर रखने की आवश्यकता होती है जो उनका समर्थन करता है; यदि आप पूरी तरह से सॉफ्टवेयर आधारित समाधान कर रहे हैं, तो गेम पहले से ही ऊपर है। उपयोगकर्ता बस आपके प्रोग्राम की मेमोरी पर डीबगर इंगित कर सकता है और जब आप इसे पढ़ते हैं तो फ़ाइल की सामग्री को पढ़ सकते हैं।

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

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

संबंधित मुद्दे