सॉफ़्टवेयर लाइसेंस कुंजियाँ कैसे बनाई जाती हैं?


361

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


8
+1 दिलचस्प सवाल, शायद एक उत्तरदाता आगे पढ़ने के लिए इस विषय पर कुछ अच्छे संसाधनों के लिंक पोस्ट कर सकता है? कृपया :)
याकूब

44
सभी DRM योजनाएं अनिवार्य रूप से अस्पष्ट योजनाएं हैं, क्योंकि प्रोग्राम को चलाने के लिए आवश्यक सभी कोड और डेटा उपयोगकर्ता को प्रदान किए गए हैं। पैचिंग को मुश्किल बनाने के लिए योजना को मनमाने ढंग से बाधित किया जा सकता है, लेकिन यह निश्चित है कि किसी भी जांच से बचने के लिए कोड को पैच किया जा सकता है।
कैफे

5
सीडी कुंजियाँ वास्तव में अस्पष्टता के माध्यम से सुरक्षा हैं। उन्हें बनाने के कई तरीके हैं, लेकिन सभी जरूरी प्रोग्राम में कुछ रहस्य को एम्बेड करने पर निर्भर करते हैं जो कुंजी को सत्यापित करने के लिए आवश्यक हैं।
निक जॉनसन

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

4
मैं किसी दिन एक ऐप बनाना चाहूंगा जहां मुझे इस बारे में चिंता करनी होगी, बचपन के सपने। वेब ऐप्स इसे काट नहीं सकते हैं।
ज़्नार्कस

जवाबों:


268

पुराने स्कूल की सीडी कीज़ के लिए, यह सिर्फ एक एल्गोरिथ्म बनाने की बात थी जिसके लिए सीडी कीज़ (जो किसी भी प्रकार की स्ट्रिंग हो सकती है) को जेनरेट करना आसान है और सत्यापित करना आसान है, लेकिन अमान्य-सीडी के लिए मान्य सीडी-कीज़ का अनुपात -keys इतना छोटा है कि बेतरतीब ढंग से अनुमान लगाने के लिए सीडी की चाबियाँ आपको एक वैध एक होने की संभावना नहीं है।

इसे करने के लिए प्रोत्साहन:

Starcraft और अर्ध-जीवन दोनों ने एक ही चेकसम का उपयोग किया, जहां 13 वें अंक ने पहले 12 को सत्यापित किया। इस प्रकार, आप पहले 12 अंकों के लिए कुछ भी दर्ज कर सकते हैं, और 13 वें (केवल 10 संभावनाएं) का अनुमान लगा सकते हैं, जिससे कुख्यात हो सकता है1234-56789-1234

सत्यापन के लिए एल्गोरिथ्म सार्वजनिक है, और कुछ इस तरह दिखता है:

x = 3;
for(int i = 0; i < 12; i++)
{
    x += (2 * x) ^ digit[i];
}
lastDigit = x % 10;

यह करने के लिए सही तरीका है

Windows XP काफी जानकारी लेता है, इसे एन्क्रिप्ट करता है, और एक स्टिकर पर अक्षर / संख्या एन्कोडिंग डालता है। इसने MS को आपकी कुंजी को सत्यापित करने और एक ही समय में उत्पाद-प्रकार (गृह, व्यावसायिक, आदि) प्राप्त करने की अनुमति दी । इसके अतिरिक्त, इसके लिए ऑनलाइन सक्रियण की आवश्यकता है।
पूर्ण एल्गोरिथ्म बल्कि जटिल है, लेकिन जर्मनी में प्रकाशित इस (पूरी तरह कानूनी!) पेपर में अच्छी तरह से उल्लिखित है ।

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

इसे करने के लिए वास्तविक सुधार:

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

  1. एक बहुत बड़ी क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या उत्पन्न करें।
  2. इसे हमारे डेटाबेस में संग्रहीत करें और इसे कार्ड पर प्रिंट करें।

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

ऑनलाइन सेवाओं के लिए, उपरोक्त योजना का उपयोग करने का कोई कारण नहीं है; किसी और चीज का उपयोग करने से समस्याएं हो सकती हैं


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

18
हे, मैं कभी भी 1234-56789-1234Starcraft की कुंजी के बारे में नहीं जानता था , लेकिन मुझे याद है कि कीपैड पर मुक्का मारकर और फिर से प्रयास करने में केवल "ब्रूट फोर्स" को लगभग पांच मिनट लगे।
चिह्नित करें

18
मुझे अतीत में कुछ Microsoft उत्पाद भी याद हैं, जो आपको 111-1111111 को वैध सीडीडीआई (विजुअल स्टूडियो 6.0) के रूप में उपयोग करने की अनुमति देते हैं
हैनसन

25
1234-56789-1234 के बारे में कभी नहीं पता था। इसके बजाय, हमने तेरह तेरह का इस्तेमाल किया! 3333333333333
एरिकटीज

33
ऑनलाइन सक्रियण के साथ समस्या यह है कि प्रकाशक के व्यवसाय से बाहर जाने पर हम सभी खराब हो जाते हैं। कृपया ऐसा न करें। ऐसा होता है, और किसी दिन Microsoft को भी हो सकता है / होगा।
ब्रैड

56

जब मैंने मूल रूप से यह उत्तर लिखा था तो यह एक धारणा के तहत था कि यह सवाल लाइसेंस कुंजियों के 'ऑफ़लाइन' सत्यापन के संबंध में था। अधिकांश अन्य उत्तर ऑनलाइन सत्यापन को संबोधित करते हैं, जिसे संभालना काफी आसान है (अधिकांश तर्क सर्वर साइड किए जा सकते हैं)।

ऑफ़लाइन सत्यापन के साथ सबसे कठिन बात यह सुनिश्चित करना है कि आप बड़ी संख्या में अनूठे लाइसेंस कुंजी उत्पन्न कर सकते हैं, और फिर भी एक मजबूत एल्गोरिथ्म बनाए रख सकते हैं जो आसानी से समझौता नहीं करता है (जैसे कि एक साधारण चेक अंक)

मैं गणित में बहुत अच्छी तरह से वाकिफ नहीं हूं, लेकिन इसने मुझे चौंका दिया कि ऐसा करने का एक तरीका एक गणितीय फ़ंक्शन का उपयोग करना है जो कि एक ग्राफ है

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

यहां छवि विवरण दर्ज करें

एक उदाहरण के रूप में, हम इस ग्राफ को प्लॉट करेंगे, चार अंक लेंगे और "0, -500; 100; -300; 200; -100; 100,600" के रूप में एक स्ट्रिंग में एनकोड करेंगे।

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

आवेदन फिर इस प्रक्रिया को उलट सकता है (आधार 32 को वास्तविक संख्या, डिक्रिप्ट, बिंदुओं को डिकोड कर सकता है) और फिर उन बिंदुओं में से प्रत्येक की जांच हमारे गुप्त ग्राफ पर है।

इसकी कोड की एक छोटी सी राशि है जो बहुत बड़ी संख्या में विशिष्ट और मान्य कुंजी उत्पन्न करने की अनुमति देती है

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


6
नहीं, एरिक यह नहीं होगा। X एक पूर्णांक है और Y फ़ंक्शन का फर्श है।
जोशुआ

यह विपरीत नहीं है कि पुराने पूर्व जीपीएस उपग्रह नेविगेशन ने कैसे काम किया! youtube.com/watch?v=BBOsQBuCJfs
ब्राड

34

आंशिक कुंजी सत्यापन पर tis लेख देखें जो निम्नलिखित आवश्यकताओं को शामिल करता है:

  • लाइसेंस कुंजी को टाइप करने के लिए काफी आसान होना चाहिए।

  • हमें चोरी के क्रेडिट कार्ड से चार्जबैक या खरीद के मामले में लाइसेंस कुंजी को ब्लैकलिस्ट (निरस्त) करने में सक्षम होना चाहिए।

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

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

  • महत्वपूर्ण: एक वैध उपयोगकर्ता के लिए यह संभव नहीं होना चाहिए कि गलती से एक अवैध कुंजी टाइप करें जो काम करने के लिए प्रकट होगा लेकिन टाइपोग्राफिक त्रुटि के कारण भविष्य के संस्करण में विफल हो जाएगा।


21

मुझे कोई अनुभव नहीं है कि लोग वास्तव में सीडी कीज़ उत्पन्न करने के लिए क्या करते हैं, लेकिन (यह मानकर कि आप ऑनलाइन सक्रियण के मार्ग से नीचे नहीं जाना चाहते हैं) यहाँ कुछ तरीके हैं जिनसे एक कुंजी बनायी जा सकती है:

  • आवश्यकता है कि संख्या (कहना) 17 से विभाज्य हो। अनुमान लगाने के लिए, यदि आपके पास कई कुंजियों तक पहुंच है, लेकिन अधिकांश संभावित तार अमान्य होंगे। इसी तरह की आवश्यकता होगी कि कुंजी का चेकसम ज्ञात मूल्य से मेल खाता हो।

  • यह आवश्यक है कि कुंजी के पहले आधे हिस्से को, जब ज्ञात मूल्य के साथ समेटा जाए, तो कुंजी के दूसरे भाग तक नीचे की ओर राख। बेहतर है, लेकिन कार्यक्रम में अभी भी कुंजी को उत्पन्न करने के साथ-साथ उन्हें सत्यापित करने के लिए आवश्यक सभी जानकारी शामिल है।

  • एक निजी मान के साथ एन्क्रिप्ट (कुंजी के साथ) एक ज्ञात मान + गैर उत्पन्न करें। यह संबंधित सार्वजनिक कुंजी का उपयोग करके डिक्रिप्ट करके और ज्ञात मूल्य को सत्यापित करके सत्यापित किया जा सकता है। कार्यक्रम में अब कुंजी को सत्यापित किए बिना कुंजी को सत्यापित करने के लिए पर्याप्त जानकारी है।

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


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

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

@ BCS: क्षमा करें, मुझे सार्वजनिक कुंजी क्रिप्टो का उपयोग करने के बारे में स्पष्ट होना चाहिए था।
एंड्रयू आइलेट

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

सार्वजनिक-कुंजी क्रिप्टो के साथ समस्या कुंजी है (और इसलिए धारावाहिक) लंबे समय तक होना चाहिए। 512-बिट आरएसए कीपर इन दिनों क्रैक करना मुश्किल नहीं है। WinXP की कुंजियों (5 अक्षरांकीय अक्षर के 5 समूहों) जो एन्ट्रापी की केवल 128 बिट, लेकिन अभी भी एक दर्द है में टाइप करने के साथ तुलना करें।
finnw

17

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

आजकल उनका मुख्य उपयोग मल्टीप्लेयर घटक के लिए है, जहां एक सर्वर सीडी कुंजी को सत्यापित कर सकता है। उसके लिए, यह महत्वहीन है कि इसे कितनी सुरक्षित रूप से उत्पन्न किया गया था क्योंकि यह "लुकअप जो कुछ भी पारित हो गया है और जो पहले से ही कोई और इसका उपयोग कर रहा है" की जाँच करता है।

कहा जा रहा है, आप दो लक्ष्यों को प्राप्त करने के लिए एक अल्गोरिथम का उपयोग करना चाह सकते हैं:

  • किसी प्रकार का चेकसम है। यह आपके इंस्टॉलर को "कुंजी मान्य प्रतीत नहीं होता" संदेश प्रदर्शित करने की अनुमति देता है, केवल टाइपोस का पता लगाने के लिए (इंस्टॉलर में इस तरह के एक चेक को जोड़ने का वास्तव में मतलब है कि कुंजी जनरेटर लिखना तुच्छ है क्योंकि हैकर के पास वह सभी कोड है जिसकी उसे आवश्यकता नहीं है। चेक और पूरी तरह से सर्वर-साइड सत्यापन पर निर्भर करता है, जो आपके कानूनी ग्राहकों को परेशान करने के जोखिम पर चेक को निष्क्रिय कर देता है, जो यह नहीं समझते हैं कि सर्वर अपनी सीडी की को स्वीकार नहीं करता है क्योंकि उन्हें टाइपो के बारे में पता नहीं है)
  • पात्रों की एक सीमित सबसेट के साथ काम करें। एक सीडी कुंजी में टाइप करने की कोशिश कर रहा है और अनुमान लगा रहा है "क्या यह एक 8 या बी है? 1 या एक I? एक Q या O या 0 है?" - गैर-अस्पष्ट चार्ट / अंकों के सबसेट का उपयोग करके आप उस भ्रम को समाप्त करते हैं।

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


अच्छी ग्राहक सेवा द्वारा आसानी से हल किया गया - बॉक्स शॉट + खरीद का प्रमाण = अवैध उपयोगकर्ता, दूसरा उपयोगकर्ता एक्सेस दें।
अलेक्जेंड्रपस


10

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

अनिवार्य रूप से कुछ प्रकार के गैर-पत्र और एक निश्चित हस्ताक्षर हैं।

उदाहरण के लिए: 0001-123456789

जहां 0001 आपका नॉन है और 123456789 आपका निश्चित हस्ताक्षर है।

फिर अपनी सीडी कुंजी प्राप्त करने के लिए अपनी निजी कुंजी का उपयोग करके इसे एन्क्रिप्ट करें जो कुछ इस तरह है: ABCDEF9876543210

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

यह तब किसी को अनुमान लगाने से रोकता है कि गैर-0002 के लिए सीडी कुंजी क्या है क्योंकि उनके पास निजी कुंजी नहीं है।

केवल प्रमुख पक्ष यह है कि आपकी CD कुंजियाँ निजी / सार्वजनिक कुंजी 1024-बिट आकार में उपयोग करते समय काफी लंबी होंगी। आपको एक गैर-लंबी अवधि भी चुनने की आवश्यकता है ताकि आप एक तुच्छ जानकारी को एन्क्रिप्ट नहीं कर रहे हैं।

पक्ष यह है कि यह विधि "सक्रियण" के बिना काम करेगी और आप ईमेल पते या लाइसेंसधारी नाम जैसी चीजों का उपयोग गैर के रूप में कर सकते हैं।


1
कृपया ध्यान दें कि मेरा उदाहरण आपकी कुंजी की लंबाई को कम करके आंकता है। इन योजनाओं के लिए आम तौर पर बेस 64 एन्कोडिंग और कॉपी / पेस्ट तैनाती की आवश्यकता होती है, लेकिन उन चाबियों का अनुमान लगाना असंभव है जो एक मशीन से बंधे नहीं हैं और उन्हें सक्रियण की आवश्यकता नहीं है (दो प्रकार के ग्राहकों के लिए बहुत महत्वपूर्ण चीजें)
userx

3
आरएसए का उपयोग करने के बजाय, आप एलिप्टिक कर्व्स का उपयोग कर सकते हैं। वे छोटी कुंजी का उपयोग करते हैं, और उनकी ब्लॉक लंबाई छोटी होती है। विकी पढ़ना, ऐसा लगता है कि एक 256 बिट ईसीसी के रूप में सुरक्षित एईएस 128 के रूप में है
xanatos

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

@xanatos, 256 बिट अभी भी हाथ से टाइप करने के लिए बहुत लंबा है। WinXP द्वारा उपयोग की जाने वाली 25-वर्ण कुंजियों पर विचार करें - उनके पास एंट्रॉपी के केवल 128 बिट्स हैं।
फाइन

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

9

मुख्य प्रणाली में कई गुण होने चाहिए:

  • बहुत कम कुंजियाँ मान्य होनी चाहिए
  • मान्य कुंजियों को व्युत्पन्न नहीं किया जाना चाहिए यहां तक ​​कि उपयोगकर्ता के पास सब कुछ है।
  • एक सिस्टम पर एक वैध कुंजी दूसरे पर एक वैध कुंजी नहीं है।
  • अन्य

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

संभावित मुद्दों में शामिल है कि आप व्यावहारिक रूप से किसी भी चीज़ पर हस्ताक्षर करने की पेशकश कर रहे हैं, इसलिए आपको यह मानने की आवश्यकता है कि कोई चुने हुए सादे पाठ और / या चुने हुए सिफरटेक्स हमलों को चलाएगा । प्रदान किए गए सीरियल नंबर की जाँच करके और अमान्य लोगों से अनुरोध को संभालने से इनकार करने के साथ-साथ किसी दिए गए s / n से एक अंतराल में दिए गए प्रश्नों की संख्या से अधिक को संभालने से इनकार किया जा सकता है (2 प्रति वर्ष कहें)

मुझे कुछ चीजों को इंगित करना चाहिए: पहला, एक कुशल और दृढ़ हमलावर किसी भी और सभी सुरक्षा को उन हिस्सों में बायपास करने में सक्षम होगा, जिनके पास अप्रतिबंधित एक्सेस है ( यानी सीडी पर सब कुछ), आप उस खाते पर सबसे अच्छा कर सकते हैं। वैध पहुँच प्राप्त करने की तुलना में नाजायज पहुँच प्राप्त करना कठिन है। दूसरा, मैं कोई विशेषज्ञ नहीं हूं इसलिए इस प्रस्तावित योजना में गंभीर खामियां हो सकती हैं।


1

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

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

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


1

सीडी के सभी केवल संरक्षण एल्गोरिदम की नकल करते हैं जो ईमानदार उपयोगकर्ताओं को चोरी के खिलाफ कोई सुरक्षा प्रदान नहीं करते हैं।

"समुद्री डाकू" को केवल एक वैध सीडी और उसके एक्सेस कोड तक पहुंच की आवश्यकता होती है, वह फिर n प्रतियां बना सकता है और उन्हें वितरित कर सकता है।

इससे कोई फर्क नहीं पड़ता कि आप कोड को क्रिप्टोग्राफिक रूप से कितना सुरक्षित करते हैं, आपको इसे सादे पाठ में सीडी के साथ आपूर्ति करने की आवश्यकता है या एक वैध उपयोगकर्ता सॉफ़्टवेयर को सक्रिय नहीं कर सकता है।

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

पूरे अपने ग्राहकों के साथ विश्वास संबंध स्थापित करने के लिए बहुत आसान है!


0

आप ( https://www.nuget.org/packages/SystemSoulLicense/ ) इसका उपयोग करके अपने सॉफ़्टवेयर प्रोजेक्ट्स में बहुत आसानी से सिक्योर लाइसेंसिंग एपीआई का उपयोग और कार्यान्वयन कर सकते हैं , (आपको https: / से सुरक्षित लाइसेंस बनाने के लिए डेस्कटॉप एप्लिकेशन डाउनलोड करने की आवश्यकता है) / www.systemsoulsoftwares.com/ ) 1. सिस्टम हार्डवेयर (सीपीयू, मदरबोर्ड, हार्ड-ड्राइव) के आधार पर क्लाइंट सॉफ़्टवेयर के लिए अद्वितीय यूआईडी बनाता है (यूआईडी उस अनूठी प्रणाली के लिए निजी कुंजी के रूप में कार्य करता है) 2. क्लाइंट सिस्टम को एन्क्रिप्ट किए गए लाइसेंस स्ट्रिंग को बहुत आसानी से भेजने की अनुमति देता है, यह लाइसेंस स्ट्रिंग की पुष्टि करता है। और केवल उस विशेष प्रणाली पर काम करता है। 3. यह विधि सॉफ्टवेयर डेवलपर्स या कंपनी को सॉफ़्टवेयर / डेवलपर / वितरक सेवाओं / सुविधाओं / क्लाइंट के बारे में अधिक जानकारी संग्रहीत करने की अनुमति देती है। यह क्लाइंट सॉफ़्टवेयर सुविधाओं को लॉक करने और अनलॉक करने के लिए नियंत्रण प्रदान करता है, डेवलपर्स के लिए समय की बचत करता है। बदलते हुए फीचर्स के साथ एक ही सॉफ्टवेयर के लिए अधिक संस्करण बनाना। यह किसी भी संख्या के लिए ट्रायल संस्करण के बारे में भी ध्यान रखता है। 6. यह पंजीकरण समयरेखा की जाँच करता है। पंजीकरण के दौरान ऑनलाइन डेटटाइम चेक करके 7. यह डेवलपर्स के लिए सभी हार्डवेयर जानकारी 8 को अनलॉक करता है।इसमें सभी पूर्व-निर्माण और कस्टम फ़ंक्शन हैं जो डेवलपर अधिक जटिल सुरक्षित कोड बनाने के लिए लाइसेंस की हर प्रक्रिया तक पहुंच सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.