2008-09-08 20 views
13

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

हमने जो मॉडल देखा है वह एक मैक पते पर लाइसेंस लगा रहा है, इसलिए सॉफ्टवेयर केवल एक मशीन पर काम करेगा।

मैं क्या सोच रहा हूं, लाइसेंस समाप्ति तिथि, मैक पता, और विभिन्न सॉफ़्टवेयर प्रतिबंधों जैसे एम्बेडेड विभिन्न जानकारी के साथ लाइसेंस कुंजी उत्पन्न करने का एक अच्छा तरीका क्या है?

उत्तर

9

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

क्रिप्टोग्राफिक रूप से, यह बिल्कुल सही नहीं है, लेकिन यह ऐसा क्षेत्र है जहां आप कम से कम प्रयास करना चाहते हैं जो एक आकस्मिक हमलावर को रोक देगा - कुछ भी जल्दी से ब्लैक होल बन जाता है।

ओह, मुझे यह भी इंगित करना चाहिए कि आप कुंजी के हिस्से के रूप में सादे पाठ (या थोड़ा obfuscated) में समाप्ति तिथि (और कोई अन्य जानकारी जो आप स्वयं को पढ़ना चाहें) प्रदान करना चाहेंगे, साथ ही यदि आप इस मार्ग पर जाएं - एमडी 5 सिर्फ अंतिम उपयोगकर्ता को लाइसेंस बढ़ाने के लिए समाप्ति तिथि बदलने से रोकने के लिए है।

सबसे आसान काम इस तरह की एक कुंजी फ़ाइल होगा ...

# License key for XYZZY 
expiry-date=2009-01-01 
other-info=blah 
key=[md5 has of MAC address, expiry date, other-info] 
+3

जब तक आप हस्ताक्षर के रूप में MD5 का उपयोग कर रहे हों, तो आप एक उचित असममित कुंजी हस्ताक्षर का भी उपयोग कर सकते हैं। –

+1

@ जेसन यदि आप केवल एमडी 5 का उपयोग कर रहे हैं, तो आप कुछ प्रबंधित करने के लिए परिणाम को सुरक्षित रूप से छोटा कर सकते हैं। एक हस्ताक्षर की आवश्यकता होगी कि अधिक महत्वपूर्ण डेटा "कुंजी" का हिस्सा हो, क्योंकि यह संपूर्ण एन्क्रिप्टेड MD5 हस्ताक्षर होगा। यदि आपने इसे छोटा कर दिया है, तो यह सत्यापन चरण तोड़ देगा। – tylerl

0

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

आम तौर पर, मैंने एक बहुत ही सरल प्रणाली बनाने का अभ्यास अपनाया है जो ईमानदार लोगों को ईमानदार रखता है। कोई भी जो वास्तव में आपके सॉफ़्टवेयर को चुरा लेना चाहता है उसे किसी भी डीआरएम सिस्टम के आसपास एक रास्ता मिल जाएगा।

अतीत में मैंने सी ++ परियोजनाओं के लिए आर्मडिलो (अब सॉफ्टवेयर पासपोर्ट) का उपयोग किया है। मैं वर्तमान में सी # परियोजनाओं के लिए XHEO का उपयोग कर रहा हूं।

1

हम इसे सरल रखते हैं: प्रत्येक लाइसेंस डेटा को एक एक्सएमएल (पढ़ने और प्रबंधित करने में आसान) में स्टोर करें, पूरे एक्सएमएल का हैश बनाएं और उसके बाद इसे उपयोगिता (स्वयं और सरल) के साथ क्रिप्ट करें।

यह भी सही से दूर है, लेकिन यह कुछ समय तक पकड़ सकता है।

1

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

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

यदि आप लोगों के लिए पैसे का भुगतान करने के लायक हैं।

2

जिस कंपनी के लिए मैंने काम किया वह वास्तव में usb dongle का उपयोग करता था।यह आसान था क्योंकि:

  • हमारे सॉफ्टवेयर भी है कि यूएसबी स्टिक
  • कार्यक्रम केवल अगर यह (अद्वितीय) हार्डवेयर कुंजी पाया चल पाएंगे पर स्थापित किया गया था (किसी भी मानक USB कुंजी है, तो तुम नहीं है , किसी भी छड़ी करना होगा)
  • यह एक कंप्यूटर तक ही सीमित नहीं था, कुछ खास खरीदने के लिए है, लेकिन एक और सिस्टम पर स्थापित किया जा सकता है वांछित अगर

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

8

हम एक भी घटना के बिना साल के लिए my company पर निम्नलिखित कलन विधि का उपयोग किया है।

  1. कोड में इच्छित फ़ील्ड का निर्णय लें। जितना संभव हो बिट-पैक। उदाहरण के लिए, तिथियां "2007 से दिनों की संख्या" हो सकती हैं, और फिर आप 16-बिट्स से दूर हो सकते हैं।
  2. अतिरिक्त "चेकसम" फ़ील्ड जोड़ें। (आप देखेंगे कि एक सेकंड में क्यों।) इस फ़ील्ड का मान अन्य क्षेत्रों से पैक किए गए बाइट्स का चेकसम है। हम "एमडी 5 से पहले 32 बिट्स" का उपयोग करते हैं।
  3. एन्क्रिप्ट सब कुछ TEA का उपयोग कर। कुंजी के लिए, उस ग्राहक का उपयोग करें जो ग्राहक की पहचान करता है (जैसे कंपनी का नाम + व्यक्तिगत ईमेल पता), इस तरह यदि कोई इंटरवेब पर कोई कुंजी पोस्ट करना चाहता है तो उन्हें सादा पाठ में अपनी संपर्क जानकारी शामिल करनी होगी। कुछ समझदार रास्ते में एक स्ट्रिंग के लिए
  4. Convert हेक्स। आप सीधे हेक्स अंकों कर सकते हैं लेकिन कुछ लोग इसे कम स्पष्ट बनाने के लिए 16 वर्णों का एक अलग सेट चुनना पसंद करते हैं। इसमें डैश या नियमित रूप से कुछ भी शामिल है, इसलिए इसे फोन पर पढ़ना आसान है।

डिक्रिप्ट करने के लिए, हेक्स को स्ट्रिंग में परिवर्तित करें और TEA के साथ डिक्रिप्ट करें। लेकिन फिर यह अतिरिक्त कदम है: फ़ील्ड के अपने स्वयं के चेकसम की गणना करें (चेकसम फ़ील्ड को अनदेखा करें) और दिए गए चेकसम की तुलना करें। यह वह चरण है जो कुंजी कुंजी के साथ छेड़छाड़ नहीं करता है।

कारण यह है कि टीईए पूरी तरह से बिट्स को मिश्रित करता है, इसलिए यदि एक बिट भी बदल जाता है, तो अन्य सभी बिट्स टीईए डिक्रिप्शन के दौरान समान रूप से बदल सकते हैं, इसलिए चेकसम पास नहीं होगा।

इस hackable है? बेशक! लगभग सबकुछ है, लेकिन यह लागू करने के लिए पर्याप्त और सरल है।

यदि संपर्क जानकारी टाइप करना पर्याप्त नहीं है, तो "नोड आईडी" के लिए एक फ़ील्ड शामिल करें और इसे मैक पते पर लॉक करें या जैसा कि आप सुझाव देते हैं।

0

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

यदि ऐसा नहीं होता है, तो मैं एक व्यावसायिक उत्पाद के साथ जा रहा लगता है कि जाने के लिए रास्ता है। हां, उन्हें हैक किया जा सकता है, लेकिन उस व्यक्ति के लिए जो इसे पूरी तरह से हैक करने के लिए दृढ़ संकल्पित है, यह संभावना है कि उन्होंने कभी भुगतान नहीं किया होगा।

हम इस्तेमाल किया है: http://www.aspack.com/asprotect.aspx

हम भी उनके एसडीके उत्पाद में एक समारोह कॉल हमें एक मशीन के लिए एक विशिष्ट आईडी देता है कि का उपयोग करें।

अच्छी कंपनी हालांकि स्पष्ट रूप से मूल अंग्रेजी बोलने वाले नहीं हैं क्योंकि उनके पहले उत्पाद को "AsPack" कहा जाता था।

15

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

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

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

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

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

4

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

Obligatory अस्वीकरण & प्लग: जिस कंपनी की सह-स्थापना की गई कंपनी OffByZero Cobalt licensing solution उत्पन्न करती है।तो शायद यह आपको यह सुनकर आश्चर्यचकित नहीं करेगा कि मैं आपकी मूल दक्षताओं पर ध्यान केंद्रित करने के लिए अपने लाइसेंसिंग आउटसोर्सिंग की सलाह देता हूं, &।

गंभीरता से, यह सामान सही होने के लिए काफी मुश्किल है, & इसे गलत होने का परिणाम काफी खराब हो सकता है। यदि आप कम मात्रा में उच्च मूल्य वाले हैं, तो कुछ पाइरेटेड प्रतियां आपके राजस्व को गंभीर रूप से खराब कर सकती हैं, & यदि आप उच्च मात्रा वाले कम कीमत वाले हैं तो मज़ेदार & प्रतिष्ठा के लिए अपने सॉफ़्टवेयर को क्रैक करने के लिए वेरेज़ d00dz के लिए प्रोत्साहन है।

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

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

  • एक अच्छा तीसरे पक्ष के लाइसेंस प्रणाली
  • काली मिर्च गुंजाइश निहित चेकों के साथ अपने कोड (जैसे कोई भी fIsLicensed की तरह वैश्विक चर मिलता है, नहीं है कोड है कि सुविधा को लागू करता है) नेट या जावा कोड के मामले में
  • काम गंभीर कहानियो के पास एक सुविधा की स्थिति की जाँच
1

मैं अलग उत्पादों है कि लाइसेंस पीढ़ी करते हैं और के एक नंबर का उपयोग किया है मैंने अपना खुद का समाधान बनाया है लेकिन यह नीचे आता है अब आपको सड़क पर और नीचे सबसे लचीलापन देगा।

विषय है कि आप अपनी खुद की पैदा लाइसेंस चाबियाँ हैं के लिए पर ध्यान देना चाहिए ...

हेक्स formating, अण्डाकार वक्र क्रिप्टोग्राफी, और इस तरह एईएस/क्रिप्ट, डेस, ब्लोफिश, आदि के रूप में एन्क्रिप्शन के लिए एल्गोरिदम के किसी भी लाइसेंस कुंजी बनाने के लिए ये बहुत अच्छे हैं।

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

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

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

मैंने अंत में लाइसेंस वॉल्ट उत्पाद चुना क्योंकि मुझे इसे दूसरों की तुलना में बहुत सस्ता मिल जाएगा और यह मुझे पेशकश करने के लिए और अधिक था क्योंकि हम .NET 3.5 में अपना अधिकांश काम करते हैं।

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