2010-08-06 9 views
6

यह है मेरा पहला सवाल तो कोमल हो कृपया ...लाइसेंस योजना, हंसोड़-सुरक्षित और रद्द क्षमताओं

मैं एक सॉफ्टवेयर है जो मैं लाइसेंस योजना के कुछ प्रकार का उपयोग कर की रक्षा करना चाहते हैं पर काम कर रहा हूँ। उपयोगकर्ता के लिए कुछ "अद्वितीय" कुंजी उत्पन्न करने के लिए एक मूल योजना होगी। उपयोगकर्ता इस कुंजी और पंजीकरण कोड भेजता है जब वह सॉफ़्टवेयर पंजीकृत करना चाहता है और एक सक्रियण कोड प्राप्त करता है।

जब एप्लिकेशन चलाता है तो सक्रियण कोड को डिक्रिप्ट करके प्राप्त "अद्वितीय" कुंजी और डेटाबॉब की तुलना करके सक्रियण कोड को मान्य करता है।

यह उचित और लागू करने के लिए काफी सरल है, एक आदि हालांकि इस योजना के दो गुण का अभाव अलग क्रिप्टो एल्गोरिदम चुन सकते हैं: उपयोगकर्ता हंसोड़ हार्डवेयर हस्ताक्षर आदि में सफल हुआ तो एक ही "अद्वितीय निर्माण करने के लिए

  1. "एक और कंप्यूटर पर कुंजी वह एक ही लाइसेंस डेटा का उपयोग कर सकता है।
  2. यदि उपयोगकर्ता एप्लिकेशन को अनइंस्टॉल करने का निर्णय लेता है और उसे किसी अन्य कंप्यूटर पर ले जाना चाहता है, तो ऐसा कुछ भी नहीं है जो पुराने कंप्यूटर पर पुराने लाइसेंस डेटा का उपयोग करने से रोकता है और फिर भी नई स्थापना के लिए नया लाइसेंस डेटा प्राप्त करता है।

क्या आपके पास इन मुद्दों को हल करने के बारे में कोई सुझाव है?

एक विचार जो मुझे "अद्वितीय" कुंजी में कुछ यादृच्छिक डेटा जोड़ना था, यह यादृच्छिक डेटा एक अस्पष्ट तरीके से संग्रहीत किया जाएगा, यदि उपयोगकर्ता इस यादृच्छिक डेटा को हटा देगा, और किसी प्रकार का हैश पिछले यादृच्छिक डेटा के साथ और लाइसेंस डेटा जेनरेट किया जाएगा जो मुझे यह सत्यापित करने के लिए भेजा जा सकता है कि उसने वास्तव में एप्लिकेशन को अनइंस्टॉल कर दिया है और मुझे यह सुनिश्चित किया है कि यादृच्छिक डेटा बदलने के बाद से वह पिछले लाइसेंस डेटा का उपयोग करने में सक्षम नहीं होगा।

से अधिक और बाहर अब के लिए

...

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

इसके कारण सॉफ़्टवेयर संभवतः वीएम के अंदर नहीं चलाया जाएगा, हालांकि अच्छा बिंदु और मैंने इसके बारे में सोचा नहीं है।

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

जो मैं खोज रहा हूं वह 2 अंकों के लिए अच्छा/व्यवहार्य समाधान है। हार्डवेयर स्पूफिंग, लाइसेंस कुंजी को रद्द करना यानी यह सुनिश्चित करने के लिए कि उपयोगकर्ता एक ही regcode + activationcode का उपयोग नहीं कर सकता है।

+1

यदि ऐप बस चाबियाँ "तुलना करता है", तो एक क्रैकर आसानी से तुलना करने के लिए एक जेएमपी निर्देश डाल सकता है, या "सत्यापित" वापस कर सकता है। उन्हें बस इतना करना है कि ऐप को तोड़ने और एक अच्छी कुंजी बनाम एक खराब कुंजी के निष्पादन की तुलना करें। कोड को सुरक्षित रखना बहुत मुश्किल है क्योंकि कोड को अपना काम करने के लिए चलाना चाहिए, और जब आप इसे देखते हैं तो आप इसे देख सकते हैं। –

+0

यह सच है, हालांकि सक्रियण कुंजी में कुछ एम्बेडेड क्रिप्टो-कुंजी हो सकती है जिसे एप्लिकेशन के लिए सही ढंग से कार्य करने के लिए आवश्यक डेटा फ़ाइलों को डिक्रिप्ट करने के लिए चुपचाप उपयोग किया जाता है, यदि क्रैकर jzz में jz बदलने के लिए प्रबंधित करता है या इसके विपरीत उसे अभी भी आवश्यकता होती है सॉफ़्टवेयर के लिए सही तरीके से कार्य करने के लिए सही कोड प्राप्त करें। रास्ते से अच्छी टिप्पणी! –

+0

एचएम। क्या इसका मतलब है कि डेटा फाइल प्रति ग्राहक अद्वितीय हैं? –

उत्तर

3

सबसे पहले करने के लिए अपने सभी प्रतिक्रिया

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

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

आभासी मशीनों के बारे में क्या? अब और फिर कुछ झूठी सकारात्मकताओं के जोखिम पर, वर्तमान में मौजूदा वर्चुअल मशीन कॉन्फ़िगरेशन का पता लगाने के लिए संभवतः संभव है। यदि आप आभासी मशीनों को मना करते हैं, तो आप इसे उपयोगकर्ताओं को कैसे औचित्य देते हैं? यदि आप वर्चुअल मशीनों को अनुमति देते हैं, तो आप उपयोगकर्ता को पूरे वीएम की कई प्रतियां बनाने से कैसे रोकते हैं? (यह हाइबरनेशन के साथ भौतिक मशीनों के साथ भी हो सकता है)।

क्या यह एप्लिकेशन हर बार आपको वापस कॉल करने जा रहा है? मुझे लगता है, आपकी स्थापना रद्द योजना से। यह एक बैंडविड्थ और लाभकारी लागत है, और कुछ उपयोगकर्ताओं को भी बंद कर देगा - हर कोई ऑनलाइन नहीं है, खासकर संवेदनशील वातावरण में। लेकिन फिर आपको ऐसी जटिल योजना की आवश्यकता नहीं है: आपका सर्वर इस बात का ट्रैक रख सकता है कि आवेदन की कितनी प्रतियां चल रही हैं, हालांकि आपको किसी मामले के लिए आवेदन को समाप्त नहीं होने पर केस को संभालना होगा (एप्लिकेशन क्रैश, ओएस दुर्घटना, बिजली की विफलता, कनेक्टिविटी का नुकसान ...)।

आप अपने सवाल में इस पर चर्चा नहीं करते हैं, लेकिन आप, आवेदन निष्पादन की रक्षा के लिए इतना है कि कोई एक डिबगर के साथ लाइसेंस जांच से बचने नहीं कर सकते।

+0

मैंने प्रश्न में कुछ अतिरिक्त जानकारी जोड़ दी है। मैंने किसी कारण से डीबगर/डिकंपेलर को कवर नहीं किया है ... मेरे पास उन चीजों के खिलाफ सुरक्षा के लिए कुछ चीजें हैं। बहुत मजबूत नहीं है लेकिन वैसे भी। –

1

पंजीकरण कोड भी सक्रियण कोड होना चाहिए।

आप बिक्री स्थल पर अद्वितीय पंजीकरण कोड उत्पन्न, या उत्पाद के साथ पैक। ग्राहक एक ही कोड का उपयोग कर एक चरण में आपके (या आपके सर्वर) के साथ पंजीकृत/सक्रिय/निष्क्रिय करता है। ग्राहक के हार्डवेयर को किसी भी कुंजी उत्पन्न करने की आवश्यकता नहीं है।

Reregistering/फिर सक्रिय अभी भी आप के साथ संपर्क की आवश्यकता है, ताकि आप प्रयास को पुनर्स्थापित के बारे में पता कर रहे हैं।

+0

ठीक है, तो क्या होगा यदि यह ग्राहक किसी अन्य व्यक्ति को पंजीकरण कोड दें? चूंकि सभी सॉफ़्टवेयर ऑफ़लाइन पंजीकृत होने में सक्षम होना चाहिए क्योंकि मैं केवल पंजीकरण कोड की वैधता को सत्यापित नहीं कर सकता हूं। यही कारण है कि पंजीकरण प्रक्रिया अब दो चरण की प्रक्रिया है, जहां उपयोगकर्ता पंजीकरण कोड में प्रवेश करता है और उसके बाद मुझे उत्पन्न होने वाली सूचना के उन दो चरणों से एक इंस्टॉलेशन आईडी प्राप्त होती है (टीसीपी/आईपी, टेलीफोन इत्यादि ...) सक्रियण कुंजी जो अब उस डिवाइस से जुड़ी हुई है। –

+0

@ डैनियल: चूंकि आपको सक्रियण की आवश्यकता है, इसलिए अलग पंजीकरण चरण का कोई कारण नहीं है, न ही ऑफ़लाइन पंजीकरण के लिए। यह सिर्फ सबकुछ जटिल करता है। इसे सरल रखें। पंजीकरण करने और एक ही समय में सभी के साथ सक्रिय करने के लिए एक कोड प्रदान करें। यदि ग्राहक पंजीकरण/सक्रिय करने के बाद किसी और को कोड देता है, तो नया उपयोगकर्ता उसी कोड के साथ पंजीकरण/सक्रिय नहीं कर सकता है क्योंकि आप पहले ही जानते हैं कि यह पहले ग्राहक से संबंधित है। उदाहरण के लिए, कोड ए 1 बी 2 सी 3 उत्पाद, उपयोगकर्ता या प्रोग्राम के साथ जहाज आपको पंजीकरण/सक्रिय करने के लिए कोड भेजता है (नाम/पता/मैक/जो कुछ भी आप कैप्चर करना चाहते हैं) के साथ। –

1

अपने सॉफ़्टवेयर को उपकरण हार्डवेयर में रखें और हार्डवेयर पर पैडलॉक डालें। ग्राहक को उपकरण शिप करें।

आपको लगता है कि ग्राहक के उपकरण अपना कोड प्राप्त करने के लिए खुला लोहा काटने की आरी जाएगा, भंडारण माध्यम एन्क्रिप्ट करने पर विचार करें .... तब वे बॉक्स लोहा काटने की आरी और चाबी खोजने के लिए। एक टीपीएम चिप या सुरक्षित यूएसबी टोकन बाद वाले के साथ सहायता कर सकता है।

0

मुझे लगता है कि आपकी समस्या का एकमात्र समाधान एक क्रिप्टोग्राफिक हार्डवेयर dongle है। आम तौर पर यह एक यूएसबी आधारित छेड़छाड़ प्रतिरोधी चुनौती-प्रतिक्रिया डोंगल होगा, जिसे आसानी से कंप्यूटर के बीच स्थानांतरित किया जा सकता है।

इन उपकरणों की बड़ी मात्रा के लिए $ 1 से कम लागत है, और बहुत कम मात्रा के लिए $ 10 से अधिक नहीं है। अच्छे लोगों को फोर्ज करना बहुत कठिन होता है, आपके एप्लिकेशन में एम्बेड करना बहुत आसान होता है, और आमतौर पर एक मुफ्त EXE एन्क्रिप्टर के साथ आपूर्ति की जाती है जिसमें एंटी-डिबगिंग और एंटी-रिवर्स-इंजीनियरिंग कार्यक्षमता भी होती है।

1

शेयरवेयर लेखक और ASP के लंबे समय के सदस्य होने के नाते मुझे लगता है कि आप अपने समाधान के साथ गलत दिशा में जा रहे हैं। इस काम करने योग्य बनाने का एकमात्र तरीका हार्डवेयर डिवाइस के साथ पहले से ही सुझाव दिया गया है। यह या निरंतर ऑनलाइन सक्रियण एकमात्र तरीका है यदि आप सुनिश्चित करना चाहते हैं और आपका उत्पाद इतना अच्छा है और प्रतियोगियों के बिना कि आपके ग्राहक अभी भी इसका उपयोग करेंगे।

लेकिन अभ्यास से सीखा हम (छोटे आईएसवी का आयोजन) यह है कि आपको वह नहीं करना चाहिए जो आप करने की कोशिश कर रहे हैं। इसे हार्डवेयर से बांधें मत। प्रति व्यक्ति एक लाइसेंस बेचें प्रति कंप्यूटर एक लाइसेंस नहीं। अंत में आप आराम से लाइसेंस के कारण अधिक बिक्री करेंगे।

ईमानदार लोगों को ईमानदार रहने के लिए बस पर्याप्त करें। तो ट्रेल संस्करण को सीमित करें (मैंने मेरे लिए एक घंटे के बाद आवेदन को समाप्त करने का निर्णय लिया) और अंतिम संस्करण को सभी सामानों से मुक्त छोड़ दें। भुगतान किए गए ग्राहकों के लिए एक अलग डाउनलोड दें और यह है कि। एक अच्छी कंपनी बनें और कानूनी प्रतिबंध कंपनी द्वारा अधिकतम लालची लाभ न करें।

मैंने पहले कुछ बेहतर विंडोज़ सुरक्षा कार्यक्रमों का उपयोग किया लेकिन उन्हें सभी को मेरे कोड के साथ गंभीर समस्याएं थीं। और वे जल्दी या बाद में क्रैक हो जाते हैं। तो मैंने उन सभी को छोड़ दिया।

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