2009-02-17 18 views
7

मैं एक ऐप पर काम कर रहा हूं जिसे मैं कुछ दिन बेचना चाहता हूं - जल्द ही बाद में! मैं इसे बचाने के लिए एक उचित सरल धारावाहिक संख्या योजना विकसित करना चाहता हूं।एक साधारण सीरियल नंबर जेनरेटर/सत्यापनकर्ता के विकास के लिए एक अच्छा तरीका क्या है?

  • एक साधारण संख्या/अक्षर संयोजन से अधिक नहीं 25-30 अक्षरांकीय अक्षर लंबी (लगता है माइक्रोसॉफ्ट उत्पाद कुंजी)
  • किसी भी व्यक्तिगत जानकारी के भाग के रूप (कोई ईमेल पता की तरह) में प्रवेश के लिए उपयोगकर्ता की आवश्यकता नहीं है सत्यापन

मैं इस बारे में सोच रहा हूं (बहुत कम) बिट, और मुझे लगता है कि सार्वजनिक कुंजी क्रिप्टोग्राफी शुरू करने के लिए एक अच्छी जगह है। मैं एक स्ट्रिंग उत्पन्न कर सकता हूं जो लाइसेंस की पहचान करता है (जैसे एसकेयू + सादा ओले 'अभिन्न सीरियल नंबर), हैश इसे, एन्क्रिप्ट करें, और सीरियल नंबर + पहचानकर्ता को 25 अंकों (या तो) अल्फान्यूमेरिक कुंजी में एन्कोड करें। ऐप फिर एक सीरियल नंबर और "हस्ताक्षर" में कुंजी को डीकोड करेगा, एक पहचानकर्ता हैश उत्पन्न करेगा, संबंधित सार्वजनिक कुंजी का उपयोग करके "हस्ताक्षर" को डिक्रिप्ट करेगा और जेनरेट किए गए पहचानकर्ता हैश के खिलाफ इसकी तुलना करेगा।

अनिवार्य रूप से, उत्पाद कुंजी में डेटा के दो टुकड़े होते हैं: उपयोगकर्ता का दावा करने वाला सीरियल नंबर प्लस के हस्ताक्षर के साथ प्रोग्राम उस दावे को सत्यापित करने के लिए उपयोग कर सकता है। मुझे नहीं पता कि 25 अल्फान्यूमेरिक वर्ण (जो 120 बिट्स के यथार्थवादी कुल के लिए प्रत्येक 5 बिट्स को एन्कोड करते हैं) यह सब कुछ के लिए पर्याप्त है। लेकिन, यह क्रिप्टोग्राफिक रूप से सुरक्षित नहीं होना चाहिए, बस पर्याप्त है कि कोड आसानी से अनुमानित नहीं हैं। मैं छोटी कुंजी लंबाई और छोटे हैंश के साथ ठीक हूँ।

जहां तक ​​कार्यान्वयन के रूप में चला जाता है, एप्लिकेशन मैक ओएस एक्स के लिए ऑब्जेक्टिव-सी में लिखा है, लेकिन दिया कितना आसान है कोको क्षुधा में कोड इंजेक्षन करने के लिए है, मैं शायद सत्यापन कोड सीधे सी

में लिखेंगे

उत्तर

9

मैं किसी भी मजबूत क्रिप्टोग्राफी का उपयोग नहीं करता, क्योंकि आपको प्रोग्राम में इसे किसी भी तरह से डिक्रिप्ट करना है, जिससे किगेंस बनाना या कम से कम दरार करना आसान है।

मैं निम्नलिखित करता हूं - कहें, 25 अंक संख्या लें। अब जैसे, कुछ नियम जोड़ें: - संख्या 31 द्वारा भाज्य होना चाहिए - यह शुरू करने और अंतिम अक्षर साथ समाप्त होना चाहिए ...

हमेशा इन नियमों का उपयोग कुंजी उत्पन्न। 20 नियम या अधिक (अधिक बेहतर) का प्रयोग करें। ऐप को तैनात करते समय, नियमों की छोटी संख्या का उपयोग करें, उदा। 10 यह जांचने के लिए कि कुंजी वैध है या नहीं। इन नियमों को तब अलग किया जाएगा और keygen बनाने के लिए उपयोग किया जाएगा।

प्रत्येक अपडेट पर उन नियमों में से एक को सक्षम करें जिन्हें आपने पहले उपयोग नहीं किया था। यदि नियम सही तरीके से चुने जाते हैं, तो आप keygens द्वारा उत्पन्न अधिकांश कुंजी अक्षम कर देंगे।

+0

क्रिप्टोग्राफी कैसे क्रैक करना आसान बनाता है? कुंजी की जांच करने के लिए मैं जिस भी विधि का उपयोग करता हूं उसे क्रैक किया जा सकता है, तो क्रिप्टोग्राफी को और अधिक कमजोर बनाता है? आप उन संख्याओं के लिए जनरेटर कैसे लिखेंगे जो कि कई नियमों का अनुपालन करते हैं? ऐसा लगता है कि करना मुश्किल होगा। – Alex

+0

@Alex: क्रिप्टोग्राफिक एल्गोरिदम आमतौर पर मानक पुस्तकालयों में लागू होते हैं (आपको कभी भी क्रिप्टो के अपने कार्यान्वयन को तब तक नहीं शुरू करना चाहिए जबतक कि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं।)। आपके कोड में निजी कुंजी है, इसलिए क्रैकर्स को केवल उसको प्राप्त करने की आवश्यकता है, कोड को इंजीनियर करने की आवश्यकता नहीं है। – bh213

1

मुझे @ bh213 की विधि पसंद है, हालांकि यह आपके सीरियल नंबर नियमों को अपडेट करते समय कुंजी-जेन्स को ठीक होने से रोकने नहीं जा रहा है।

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

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

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

+0

कोई भी जो क्रैक प्रतिलिपि का उपयोग कर सॉफ़्टवेयर की समीक्षा करता है वह शायद ऐसे व्यक्ति का नहीं है जो ग्राहकों को वैसे भी आकर्षित करेगा, है ना? लेकिन तुम सही हो किसी भी योजना को बाधित किया जाएगा। यह जीवन का एक तथ्य है।मैं ईमानदार ग्राहकों को अनावश्यक रूप से बोझ न करने की कोशिश कर रहा हूं। – Alex

1

रेडबीर्ड 0x0A सही है, सीडी-कुंजी ईमानदार ग्राहकों को ईमानदार रखने के लिए हैं। एक keygen खोजने के लिए बस अपने उत्पाद को खरीदने के लिए थोड़ा मुश्किल होना चाहिए।

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

एक धारावाहिक योजना बहुत आसान हो सकता है:

  1. एक बड़े धारावाहिक जगह है (25 अल्फा न्यूमेरिक के बारे में 10 है, लेकिन सिर्फ एक सीरियल फ़ाइल का उपयोग और एक कुंजी के लिए 80 वर्ण x 16 पंक्तियों करना 10)
  2. की जगह कुछ नियम 100 गुना वैध सीरियल नंबर स्थान को कम करने का चयन करें क्या आपको लगता है आप अपनी सोची में बेच देंगे सपने

अपने उत्पाद एक है ऑनलाइन घटक (जैसे गेम में मल्टीप्लेयर ऑनलाइन है), आप क्रिप्टोग्राफिक रूप से मजबूत यादृच्छिक संख्या जेनरेटर (नियम आधारित कुंजी का सबसेट चुनने के लिए, धारावाहिक जांचने के लिए उत्पाद का उपयोग नियम, अंतिम अंतिम धारावाहिक सूची का उपयोग करने के लिए) का उपयोग कर वैध सीरियल नंबरों को और कम कर सकते हैं। । जब आपका उत्पाद आपके सर्वर से सेवा का अनुरोध करता है, तो सर्वर धारावाहिक की जांच कर सकता है।

+0

नहीं, कोई ऑनलाइन घटक नहीं है। मैं लाइसेंस फ़ाइल रूट नहीं जाना चाहता क्योंकि यह बहुत बोझिल लगता है। मुझे लगता है कि एक कुंजी वह है जो लोग परिचित हैं और सबसे आसान भी हैं। जैसा कि आपने कहा था, इसे क्रैक करने के बजाय इसे खरीदने के लिए आसान होना चाहिए। – Alex

1

सभी नियम कस्टम विकसित या एन्क्रिप्शन आधारित पाया जा सकता है और क्रैक किया जा सकता है। इस बारे में सोचें कि आप किसके लिए अपना आवेदन बना रहे हैं। मेरे कई उत्पाद व्यवसायों के लिए हैं इसलिए वे या तो इसे खरीदने जा रहे हैं या वे नहीं करेंगे। वे आम तौर पर अपने नेटवर्क पर एक हैक किए गए संस्करण को चलाने के लिए नहीं जा रहे हैं। एक keygen की तलाश करने वाले लोग आपके उत्पाद को खरीदने की संभावना नहीं रखते हैं। आप बस यह सुनिश्चित करना चाहते हैं कि आप अपने ग्राहक को इस बिंदु पर परेशान न करें जहां वे अब आपके ऐप को खरीदना नहीं चाहते हैं।

कहा जा रहा है कि, मैंने एईएस एन्क्रिप्शन के आधार पर अपने अनुप्रयोगों में उपयोग करने के लिए इस तरह की चीज के लिए एक लाइब्रेरी लिखी है। मैं इसे $ 25 के लिए बेच रहा हूं, और यह आपके सीरियल नंबर को अद्वितीय बनाने के लिए पासफ्रेज़ और नमक का उपयोग करता है। आप रुचि रखते हैं, तो आप इसे यहाँ पा सकते हैं: http://simpleserials.com

0

sigpipe.macromates.com पर एक ब्लॉग पोस्ट बताया गया हो कि आप एक सीरियल नंबर की जाँच के लिए निजी/सार्वजनिक कुंजी क्रिप्टो का उपयोग नहीं है। यह सत्यापित कर सकता है कि उपयोगकर्ता और Serialnumber मैच। (हस्ताक्षर/सत्यापित करें)। मैं निश्चित रूप से सुनिश्चित करने के लिए, कुछ नमक जोड़ना होगा।

चूंकि यह पोस्ट 2004 से है, तो आपको keylength.com पर अनुशंसित कीलेंथ पर विचार करना चाहिए।

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