2013-11-15 12 views
5

के लिए मास्टर पासवर्ड कैसे और कहां स्टोर किया जाए, मैं एक छोटे जावा डेस्कटॉप एप्लिकेशन पर काम कर रहा हूं जो उपयोगकर्ताओं को .db फ़ाइल पर पासवर्ड संग्रहीत करता है। जब उपयोगकर्ता एक नया डेटाबेस बनाता है, तो उपयोगकर्ता को उस डेटाबेस या ट्विटर पासवर्ड तक पहुंचने के लिए उस डेटाबेस के लिए एक मास्टर पासवर्ड बनाना होगा, जिसे वे स्टोर करना चुन सकते हैं। मेरा सवाल यह है कि, मैं सुरक्षित पासवर्ड को कहां और कैसे सुरक्षित रखूं?जावा डेस्कटॉप एप्लिकेशन

मेरा विचार मास्टर पासवर्ड एन्क्रिप्ट करना था और इसे संग्रहीत करने से पहले नमक जोड़ना था, फिर पासवर्ड को एन्क्रिप्टेड टेक्स्ट फ़ाइल या .db फ़ाइल पर संग्रहीत करना था, फिर जब उपयोगकर्ता किसी डेटाबेस को एक्सेस करने का प्रयास करता है तो उसे पढ़ें। मैं सिर्फ इस बारे में मार्गदर्शन की तलाश कर रहा हूं कि यह एक अच्छा विचार है, या यदि कोई बेहतर विकल्प है।

p.s एप्लिकेशन एक डेस्कटॉप एप्लिकेशन वेब अनुप्रयोग नहीं है।

तरह का संबंध

+0

एन्क्रिप्टिंग के बजाय, यह हैश ... मैं एन्क्रिप्शन के बजाय हैश का उपयोग करने के लिए और अधिक सुरक्षित महसूस करता हूं। – codeMan

+0

@codeMan Mhmm, और आप इस हैश को कैसे प्राप्त करते हैं? SHA एन्क्रिप्शन – Cruncher

+0

है इसके लिए बहुत सी उपयोगिता कक्षाएं हैं, बस एक हैशिंग एल्गोरिदम पर निर्णय लें और इसका उपयोग करें। उदाहरण के लिए एमडी 5 – codeMan

उत्तर

1

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

एक क्रिप्टोग्राफिक हैश की महत्वपूर्ण विशेषताओं में से एक है कि एक मूल्य hashing हमेशा का उत्पादन करेगा एक ही hash.The SHA-2 (256) हमेशा होगा की "जल्दी भूरी लोमड़ी आलसी कुत्ते पर कूदता" हैश एक हैश d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 उत्पन्न करता है - जबकि उस हैश को लेने का कोई तरीका नहीं है और यह निर्धारित करता है कि इंद्रधनुष तालिका के साथ एक हैकर क्या है, यह देख सकता है कि यह किस प्रकार से मेल खाता है (यही कारण है कि कमजोर पासवर्ड, यहां तक ​​कि जब भी धोया जाता है तब भी कमजोर होता है, हर इंद्रधनुष दुनिया में टेबल के लिए हैश होने जा रहा है)।

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

नमकीन हैश आपको स्टोर करना चाहिए (हालांकि/जहां भी आपके आवेदन के लिए समझ में आता है) और इसके खिलाफ जांच करें। इसलिए, यदि उपयोगकर्ता पहले कोई खाता आप से उत्पन्न होने वाला:

  1. (इस तरह के SHA-2 के रूप में एक टक्कर मुक्त क्रिप्टोग्राफिक हैश का उपयोग कर,) पासवर्ड वे चुनते हैं लेने के लिए और जोड़ने नमक
  2. यह हैश
  3. दुकान परिणाम

उपयोगकर्ता के लिए लॉग इन करने के लिए आप होगा प्रयास करता है:

  1. में पासवर्ड वे इनपुट ले लॉगिन फार्म और क्या आप

संग्रहीत किया है, तो यह समान वे गलत पासवर्ड दर्ज किया है, अगर यह एक ही है नहीं है करने के लिए नमक

  • हैश यह
  • तुलना जोड़ने क्या आप जानते हैं कि वे सही में प्रवेश किया पासवर्ड और आप उन्हें लॉग इन कर सकते हैं।

  • +0

    धन्यवाद @exupery .. क्या आपके पास कोई विचार है कि जिस पर संग्रहीत पासवर्ड वाले फ़ाइल को संग्रहीत किया जाना चाहिए? और फ़ाइल का प्रारूप क्या होना चाहिए ताकि मैं फ़ाइल को एन्क्रिप्ट कर सकूं? – adebesin

    +0

    यदि आप ट्विटर और फेसबुक पासवर्ड स्टोर करने के लिए आवेदन कर रहे हैं (जैसा कि आपका प्रश्न बताता है) तो आपको वास्तव में उन्हें स्टोर नहीं करना चाहिए क्योंकि इसकी आवश्यकता नहीं है; आप अपने एपीआई (और इस प्रकार ओएथ के माध्यम से उनके साथ प्रमाणीकरण संभाल सकते हैं) का उपयोग कर सकते हैं (और चाहिए)। यदि आप सुरक्षित रूप से पासवर्ड स्टोर करने का प्रयास करने जा रहे हैं तो याद रखना महत्वपूर्ण है कि कोई पूर्ण सुरक्षा नहीं है। फ़ाइल प्रारूप कोई फर्क नहीं पड़ता है और आपको आकस्मिक पर्यवेक्षक से बचाने के लिए डेटा को निश्चित रूप से एन्क्रिप्ट और/या obfuscate करना चाहिए, लेकिन यदि मशीन से समझौता किया गया है (और उपयोगकर्ता) को उस डेटा से समझौता किया जाना चाहिए। – Exupery

    +1

    धन्यवाद, मैं ओथ में देख रहा हूं, यह अधिक सुरक्षित लगता है – adebesin

    0

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

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