2010-08-01 12 views
6

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

  1. सामान्य में, आवेदन इस तरह से फटा जा रहा है, मैं कैसे स्वीकार करने के लिए एक एल्गोरिथ्म लेखन शुरू कर सकते हैं की परवाह किए बिना एक निश्चित सीरियल या स्ट्रिंग या संयोजन। (उदाहरण के लिए यह सही बात है? उदाहरण: पहला नंबर 3-9 से है, दूसरा दूसरा होना चाहिए - 3, जबकि तीसरा नंबर दूसरा * होना चाहिए .... + जो भी ... ??)

  2. इंटरनेट से निपटने के बिना चोरी से डेस्कटॉप एप्लिकेशन की सुरक्षा के लिए सबसे अच्छा तरीका क्या है। क्या यह एल्गोरिदम है (इसे रिवर्स इंजीनियर के लिए कठिन बनाना), एप्लिकेशन को कहीं भी इंस्टॉल करने के बाद स्रोत कोड को देखने से बचाएं ?? ... ??

पुनश्च: शायद यह है कि मैं अपने विकास भाषा के रूप में जावा का उपयोग कर रहा उल्लेख करने के लिए लायक है। धन्यवाद

उत्तर

2
  1. ऐसा लगता है जैसे आप public-key cryptography दृष्टिकोण से लाभ हो सकता। यह आप इस मुद्दे पर कुछ विस्तार दे सकता है

    • ए आप पढ़ सकते हैं this thread here on SO? है:

    • यह दो उप अंक में बांटा जा सकता है।

    • बी। जैसा कि @ जका ने कहा, जावा बाइट कोड से मानव पठनीय कोड का उत्पादन करने के लिए यह एक बड़ी चुनौती नहीं है (मैंने जो पढ़ा है)। आप an obfuscator के माध्यम से अपना कोड चला सकते हैं जिससे किसी के लिए मानव पठनीय कोड उत्पन्न करना मुश्किल हो जाता है, लेकिन अगर कोई वास्तव में आपका कोड पढ़ना चाहता है, तो वे लगभग हमेशा एक रास्ता खोज लेंगे। इसका मुकाबला करने का सबसे अच्छा तरीका है कि मैंने जो एसओ थ्रेड से लिंक किया है, उसमें सलाह लेना: किसी के लिए चोरी करने के लिए किसी के लिए अपना ऐप खरीदने में आसान बनाना।

(संपादित करने के बाद वह जावा उपयोग कर रहा है कहा गया है)

+0

यह संकलित है। जावा डेस्कटॉप एप्लिकेशन। –

+0

@ शेर, मेरे उत्तर को अपडेट किया गया। – labratmatt

+0

धारावाहिक संख्या पीढ़ी के लिए सार्वजनिक कुंजी क्रिप्टो के साथ समस्या यह है कि यह अविश्वसनीय रूप से लंबे कोड बनाता है जो उपयोगकर्ता के प्रवेश के लिए मुश्किल हैं। यदि बेस 32 एन्कोड किया गया है तो एक 1024-बिट कुंजी लगभग 200 अक्षरों की लंबाई उत्पन्न करेगी। यह मानव धारणा के मुद्दों के लिए भी खाता नहीं है जैसे गलत (1) और एल (लोअरकेस एल)। –

0

सुझाव: कि लाइसेंस प्राप्त-केवल सुविधा प्रदान करता है आवेदन के हिस्से को एनक्रिप्ट। उपयोगकर्ता को कोड के उस हिस्से का उपयोग करने के लिए खरीद पर प्रदान की जाने वाली एक कुंजी की आवश्यकता होती है।

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

1

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

संपादित करें: labratmatt तेजी से सार्वजनिक-निजी कुंजी जवाब :)

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

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

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

वाणिज्यिक सॉफ्टवेयर बहुत से FLEXNET, कुंडी, Wibu कुंजी

0

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

+0

सुनिश्चित करें कि मैं उस पर विचार करूंगा –

0

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

ऐसी प्रणालियों के आपूर्तिकर्ता के रूप में हमारे पास घोषित करने के लिए स्व-रुचि है, लेकिन हमारे पास डेटा भी है - हम कई कंपनियां देखते हैं जो डेवलपर में अपना विश्वास डालते हैं, जो कहते हैं कि वे एक लाइसेंसिंग सिस्टम को एक साथ रख सकते हैं, फिर बाद में वे हमारे पास वापस आओ क्योंकि उन्होंने कभी भी ऐसा नहीं किया जो उन्हें चाहिए था। (मेरा) इस अनुच्छेद के मुद्दों पर फैलता: http://knol.google.com/k/dominic-haigh/issues-to-consider-before-building-your/2zijsseqiutxo/6#

0

https://superuser.com/questions/14224/how-to-explain-drm-cannot-work/14254#14254

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

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

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