2009-10-01 15 views
5

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

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

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

+1

पासवर्ड – helloandre

उत्तर

4

Key strengthening पर यह आलेख आपकी सहायता कर सकता है। असल में आप कुंजी को मजबूत (पासवर्ड में से अधिक एन्ट्रॉपी) बनाना चाहते हैं और पासवर्ड से अपना व्युत्पन्न विश्वसनीय समय लेना चाहते हैं।

+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। – Charles

1

ठीक है, के रूप में अपने पद सामान्य है, मुझे कुछ सामान्य बातें राज्य करते हैं:

  1. MD5, एस एच ऐ 0, SHA-1 सभी टूटी हैश हैं, और आप किसी भी क्रिप्टोग्राफिक के लिए उपयोग नहीं करना चाहिए उद्देश्य, SHA-2 का उपयोग करें।

  2. आपको आम तौर पर पासवर्ड से प्राप्त कुंजी प्राप्त करने के लिए जाने-माने और दस्तावेज दृष्टिकोण का उपयोग करना चाहिए (आप यह नहीं बताते कि कौन सी भाषा है, कृपया कहें कि आप किसका उपयोग कर रहे हैं)।

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

+1

नमक 1. एमडी 5 में भेद्यता मेरे उद्देश्यों के लिए कोई फर्क नहीं पड़ता क्योंकि मैं केवल एक चर-लंबाई स्ट्रिंग के एक कुंजी बाहर निकालने के लिए इसका उपयोग कर रहा हूँ।यदि किसी विरोधी को कभी भी हैश प्राप्त होता है, तो गेम वैसे भी खत्म हो जाता है क्योंकि यह सब कुछ गुप्त था। जहां तक ​​मुझे पता है, टकराव के हमले यहां खेल मैदान में प्रवेश नहीं करते हैं। 2. यही वह है जो मैं उपरोक्त प्रश्न पूछकर करने की कोशिश कर रहा हूं। :) प्रोग्रामिंग भाषा कोई फर्क नहीं पड़ता क्योंकि यह सिद्धांत का सवाल है, कार्यान्वयन नहीं। लेकिन अगर आप केवल उत्सुक हैं, तो मैं पाइथन का उपयोग कर रहा हूं। 3. यह वही है जो मैं यहां करने की कोशिश कर रहा हूं। :) – Charles

+0

दोस्त, मुझे नहीं लगता कि आप जो पढ़ रहे हैं उसे पढ़ रहे हैं। :) – Charles

+0

चार्ल्स, रेशमी सही है। उल्लेख किया गया हैश का उपयोग न करें। यदि आप उन प्रश्नों से पूछ रहे हैं जो आप हैं, तो आप एक समझौता किए गए हैश फ़ंक्शन के प्रभावों को समझ नहीं पाते हैं (मैं दावा नहीं कर रहा हूं कि मैं या तो करता हूं)। जाओ http://www.daemonology.net/blog/2009-06-11- क्रिप्टोग्राफिक- राइट-answers.html – lambacck

0

आपके नए प्रश्न का उत्तर यह है: आपको निश्चित रूप से कुंजी उत्पन्न करने के लिए पीबीकेडीएफ 2 जैसे कुछ का उपयोग करना चाहिए।

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

क्या मैं सच में की सिफारिश कि तुम और एक खिलौना के रूप में उपयोग नहीं कुछ तुम सच के बारे में परवाह की रक्षा के लिए है। यदि आप सुरक्षा विशेषज्ञ नहीं हैं, तो आप गलतियां करने जा रहे हैं, यहां तक ​​कि विशेषज्ञ (और उनमें से बहुत से) गलतियां करते हैं: http://www.sslshopper.com/article-ssl-and-tls-renegotiation-vulnerability-discovered.html

+0

युक्तियों के लिए धन्यवाद। मैंने इस सवाल को उठाने के बाद बहुत अधिक शोध किया और पीबीकेडीएफ 2 को लागू करने के लिए समाप्त हो गया। अधिकांश भारी भारोत्तोलन व्यक्तियों द्वारा लिखे गए पुस्तकालयों द्वारा किया जाता है जो स्वयं से ज्यादा चालाक होते हैं। उस तरफ, मुझे कहीं और शुरू करने की ज़रूरत है और यह सुनिश्चित करने का बेहतर तरीका है कि मेरा प्रोग्राम सही है (उम्मीद है कि) मेरे अपने डेटा को सुरक्षित रखने के लिए सही है? मैं यहां अपने स्वयं के समाधान को चलाने के जोखिमों से अवगत हूं और उन्हें पूरी तरह से स्वीकार करता हूं। अगर मैं प्रोजेक्ट पूरा करता हूं, तो मुझे इसे ओपन सोर्स सॉफ़्टवेयर के रूप में रिलीज़ करने की उम्मीद है ताकि अन्य लोग कोड की जांच कर सकें, फिक्स जोड़ सकें, और संभवतः सार्वजनिक रूप से मेरे काम को अपमानित कर सकें। :) – Charles

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

  • कोई संबंधित समस्या नहीं^_^