2009-03-14 13 views
20

के लिए कार्यान्वयन मैं सी में एक छोटा सा एप्लीकेशन लागू कर रहा हूं, जिसे मैं बाद में उचित मूल्य के लिए शेयरवेयर के रूप में बेचना चाहता हूं। यह 30-दिवसीय परीक्षण के साथ शुरू होगा, जिसे मैं पहले से ही निश्चित रूप से निश्चित करता हूं कि इसे कैसे कार्यान्वित किया जाए।उत्पाद कुंजी

हालांकि, मेरे पास समस्या यह है कि मुझे यह सुनिश्चित नहीं है कि उत्पाद कुंजी सत्यापन को कैसे कार्यान्वित किया जाए। मेरे मन में यह है कि ग्राहक मेरे वेबपृष्ठ पर साइन अप कर सकता है (थोड़ी देर के लिए उत्पाद की कोशिश करने के बाद), उत्पाद के लिए भुगतान करें, और aaaaa-bbbbb-ccccc-ddddd-eeeee के रूप में उत्पाद कुंजी प्राप्त करें। -मेल (या शायद मेरी वेबसाइट पर अपनी प्रोफ़ाइल के माध्यम से उपलब्ध)। अभी तक कोई समस्या नहीं है। उसके बाद वह मेरे ऐप में उचित कुंजी फ़ील्ड में कुंजी छोड़ देता है और बूम ऐप पंजीकृत है।

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

तो मुझे लगता है कि आरएसए जाने का रास्ता होगा? लेकिन क्या आरएसए बहुत लंबी चाबियां नहीं बनाता है (ऊपर से आवश्यक 25 वर्णों से कम से कम लंबा)?

another thread में मैंने पढ़ा है कि कुछ उत्पाद उत्पाद की पीढ़ी/सत्यापन के लिए एन्क्रिप्शन का भी उपयोग नहीं करेंगे, बल्कि इसके बजाय कुछ चेक "जैसे 2. और 17 वर्ण जोड़ें और यह कुल x होना चाहिए"।

यहां जाने का सबसे तेज़, आसान और सबसे सुरक्षित तरीका क्या है? :-) कोड नमूने चीनी होंगे!

सादर,

सेबस्टियन

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

उत्तर

30

सममित एल्गोरिदम सीमित हैं, जिसमें किसी भी नौसिखिया क्रैकर को डिस्सेबलर के साथ आपकी कुंजी मिल सकती है (या एल्गोरिदम एक उत्पन्न करने के लिए उपयोग किया जाता है) और "कीजेन" बनाते हैं।

इस कारण से, असममित क्रिप्टोलॉजी जाने का रास्ता है। एक कंपनी कभी कभी,

  • उपयोगकर्ता आप से एक लाइसेंस खरीदता है तो आप उपयोगकर्ता और/या उनके पर्यावरण (आमतौर पर, यह सिर्फ एक पूरा नाम है के बारे में कुछ की पहचान जानकारी इकट्ठा: मूल आधार कुछ इस तरह है भी)।
  • आप इस जानकारी का 128-बिट एमडी 5 हैश बनाते हैं।
  • 128-बिट Elliptic Curve क्रिप्टो का उपयोग करके, सर्वर पर निजी कुंजी का उपयोग करके इस हैश को एन्क्रिप्ट करें।
  • 128-बिट सिफर टेक्स्ट को 25-वर्ण वाली स्ट्रिंग के रूप में दर्शाया जा सकता है जिसमें अक्षरों और अंकों (पठनीयता के लिए अलग-अलग डैश) शामिल हैं। ध्यान दें कि 26 अक्षर + 10 अंक = 36 अलग-अलग मान, और वह 36^25> 2^128।
  • उपयोगकर्ता इस उत्पाद कुंजी को आपके पंजीकरण संवाद में टाइप करता है। क्लाइंट सॉफ़्टवेयर इसे 128-बिट नंबर (16 बाइट्स) में परिवर्तित करता है, यह निर्णय देता है कि आपके ईसी क्रिप्टो की सार्वजनिक कुंजी का उपयोग करके, और परिणाम को उपयोगकर्ता की व्यक्तिगत जानकारी के MD5 हैश में तुलना करता है, जो पंजीकरण के लिए उपयोग किए जाने वाले मिलान से मेल खाना चाहिए ।

यह बिल्कुल बुनियादी विचार है। अधिक जानकारी और स्रोत कोड के लिए, Product Keys Based on Elliptic Curve Cryptography देखें।

+0

इंफोस के लिए बहुत बहुत धन्यवाद। मान लीजिए कि मैं किसी कारण से ईईसी का उपयोग नहीं कर सकता .... आरएसए 25-वर्ण कुंजी विधि के लिए खुद को उधार नहीं देगी, क्योंकि आरएसए कुंजी की लंबाई 1024 बिट्स की न्यूनतम लंबाई है, है ना? – Sebastian

+0

आरएसए * केवल 384 बिट्स हो सकता है, लेकिन यह उपयोगकर्ता द्वारा दर्ज की गई कुंजी के लिए अभी भी बहुत लंबा है। यहां तक ​​कि यदि आप ऊपरी- और निचले मामले को अलग करते हैं (62 बुद्धिमान वर्णों को उत्पन्न करते हैं), तो आपको 65-लंबाई वाली कुंजी होना चाहिए। और 384 बिट्स पर आरएसए * बहुत * कमजोर है, इसलिए आपकी निजी कुंजी को किसी भी तरह से समझौता किया जाएगा। –

+1

मुझे यहां ईसीसी का निःशुल्क कार्यान्वयन दिखाई देता है: http://www.codeproject.com/KB/security/Elliptic_Curves.aspx। मैंने यह देखने के लिए जांच नहीं की है कि यह कितना अच्छा है। थोड़ा खुदाई निश्चित रूप से दूसरों को बदल देगा। यहां एक बहुत सस्ता है: http://ellipter.com/। –

1

यदि आप बस एक समाधान खरीदते हैं तो जीवन आसान है।

http://www.kagi.com/kagisolutions/index.php

Kagi आप भुगतान लेने के लिए अनुमति देता है और वे आपको कुंजी प्रबंधन में मदद।

+0

नहीं, क्षमा करें, कोई विकल्प नहीं। ऐप का अनुमानित मूल्य 4.99 € है और उस मूल्य सीमा में किसी उत्पाद के लिए कागी की फीस अधिक है। – Sebastian

+1

इसका सबसे मजेदार हिस्सा यह है कि कागी अब मौजूद नहीं है। – dimiguel

0

एक लड़के ने ब्लॉग किया है कि उसने पंजीकरण संख्याओं के सवाल को कैसे संभाला है। उनकी ब्लॉग प्रविष्टियों में से एक Generating Unique Registration Numbers है।

0

हाँ, आरएसए और एईएस दो बहुत अलग बातें हैं:

  • आरएसए सार्वजनिक कुंजी क्रिप्टोग्राफी, एक सार्वजनिक कुंजी और एक निजी कुंजी शामिल है, और काफी धीमी है। प्राथमिक उपयोग एक सममित एन्क्रिप्शन सत्र कुंजी का एक सुरक्षित विनिमय स्थापित करना है।
  • एईएस सममित एन्क्रिप्शन है, जो तेज़ और सुरक्षित है।

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

ध्यान दें कि आपको प्रत्येक ग्राहक के लिए एक ही कुंजी वितरित करने की आवश्यकता नहीं है। आप कुछ पंजीकरण जानकारी का हैश उत्पन्न कर सकते हैं और एक्सओआर इसे किसी और चीज़ के साथ उत्पन्न कर सकते हैं (एक निश्चित सत्र कुंजी, शायद)। इसे ग्राहक को भेजें, और प्रोग्राम एक ही हैश उत्पन्न कर सकता है और एक्सओआर मूल कुंजी को उत्पन्न करने के लिए आपके द्वारा भेजा गया कुंजी होगा।

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

0

आप यह Code Project आलेख देख सकते हैं। यह उस मशीन के मैक पते के आधार पर सॉफ़्टवेयर कुंजी के कार्यान्वयन का वर्णन करता है जहां सॉफ़्टवेयर निष्पादित किया जाता है। विधि आदर्श नहीं है, क्योंकि ऑटूर स्वयं स्वीकार करता है, और यह जो कुछ आप ढूंढ रहे हैं उससे थोड़ा अलग है, लेकिन शायद यह आपकी मदद कर सकता है।

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