database साधारण पासवर्ड एन्क्रिप्शन




language-agnostic passwords (12)

यदि आप MD5 या SHA1 का उपयोग करते हैं तो इंद्रधनुष तालिका हैक्स से बचने के लिए नमक का उपयोग करें

सी # में यह आसान है:

MD5CryptoServiceProvider hasher = new MD5CryptoServiceProvider();
string addSalt = string.Concat( "ummm salty ", password );
byte[] hash = hasher.ComputeHash( Encoding.Unicode.GetBytes( addSalt ) );

डेटाबेस में पासवर्ड की सुरक्षा के लिए एक अच्छी, सरल एन्क्रिप्शन योजना क्या है? मुझे जरूरी कुछ भी ज़रूरत नहीं है जो अति सुरक्षित है और न ही मुझे कुछ भी बिजली की जरूरत है, लेकिन ये चीजें अच्छे होंगी मुख्य रूप से, मुझे बस कुछ ऐसा करना चाहिए जो बिना धीमी या असुरक्षित होने के बिना कार्यान्वित करना आसान हो।


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



नमक के साथ उपरोक्त सुझाए गए SHA-1 जैसे एक यूनि-डायरेक्टिव हैश एल्गोरिथम का उपयोग करना आवश्यक है। अधिक जानकारी के लिए मैं इस साइट का सुझाव दूंगा। इसमें कुछ नमूना कोड / कार्यान्वयन शामिल हैं http://www.obviex.com/samples/hash.aspx


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

अधिक जानकारी: पासवर्ड हैशिंग ठीक से कैसे करें I


गैर-प्रतिवर्ती एन्क्रिप्शन के लिए मैं निश्चित रूप से SHA256 या SHA1 के साथ जाना होगा एमडी 5 में काफी टकराव होते हैं और बहुत से प्रयास इसे तोड़ने में लगाए गए हैं, इसलिए उपयोग करने के लिए अच्छा नहीं है



यदि आप अपने समाधान के भविष्य के सबूत चाहते हैं, तो मैं SHA256 या SHA512 की सिफारिश करता हूं क्रिप्टोग्राफिक geekworld एमडी 5 के बारे में चिंतित हो रही है, और थोड़ा हद तक, SHA1।

या, यदि आप कर सकते हैं, तो SHA-3 की प्रतीक्षा करें


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

इससे हमें एक सफ़ेदेशन के लिए हमारे नमकीन और रेखांकित पासवर्ड भंडारण योजना पर बैठने और परिवर्तित करने और आसान एकीकरण के लिए कुछ अलग भाषा के कार्यान्वयन प्रदान करने के लिए मजबूर किया।

हमने इसे थोड़े समय में सुरक्षित हैशड पासवर्ड या एफएसएचपी बुलाया। इसे पायथन, रूबी, PHP5 में कार्यान्वित किया और इसे सार्वजनिक डोमेन पर जारी किया। Http://github.com/bdd/fshp पर गेटहब पर खपत, कांटेदार, flamed या थूक करने के लिए उपलब्ध

एफएसएचपी एक नमकीन होता है, यह हैरेपी पासवर्ड हैशिंग कार्यान्वयन है।

डिजाइन सिद्धांत आरएफसी 2898 (उर्फ: पीकेएसएस # 5: पासवर्ड-आधारित क्रिप्टोग्राफी विनिर्देश संस्करण 2.0) में पीबीकेडीएफ 1 विनिर्देश के समान है एफएसएचपी ने नमक की लंबाई, पुनरावृत्तियों की संख्या और एसएचए-1 और एसएचए -2 के भीतर अंतर्निहित क्रिप्टोग्राफ़िक हैश फ़ंक्शन को चुनने की अनुमति दी है (256, 384, 512) प्रत्येक आउटपुट की शुरुआत में स्व-परिभाषित मेटा उपसर्ग को यह पोर्टेबल बना देता है जबकि उपभोक्ता को अपना पासवर्ड स्टोरेज सुरक्षा बेसलाइन चुनना पड़ता है।

सुरक्षा :

डिफ़ॉल्ट एफएसएचपी 1 एसएचए -256 हैशिंग के 40 9 9 पुनरावृत्तियों के साथ 8 बाइट लवण का उपयोग करता है। - 8 बाइट नमक में 2 ^ 64 के साथ आवश्यक स्थान को गुणा करके इंद्रधनुष तालिका में अबाधित प्रहार होता है। - 40 9 6 पुनरावृत्तों के कारण क्रूर बल के हमलों के कारण काफी महंगे होते हैं - इस रिहाई के समय कम से कम 2 ^ 128 संचालनों के कम्प्यूटेशनल प्रयास के साथ टकराव देखने के लिए SHA-256 के खिलाफ कोई ज्ञात हमले नहीं हैं।

कार्यान्वयन:

  • पायथन: 2.3.5 (डब्लू / हैएचएलबी), 2.5.1, 2.6.1 के साथ परीक्षण किया गया
  • रूबी: 1.8.6 के साथ परीक्षण किया गया
  • PHP5: 5.2.6 के साथ परीक्षण किया गया

लापता भाषा क्रियान्वयन बनाने या मौजूदा लोगों को पॉलिश करने के लिए हर कोई स्वागत से ज्यादा है

बेसिक ऑपरेटिंग (पायथन के साथ) :

>>> fsh = fshp.crypt('OrpheanBeholderScryDoubt')
>>> print fsh
{FSHP1|8|4096}GVSUFDAjdh0vBosn1GUhzGLHP7BmkbCZVH/3TQqGIjADXpc+6NCg3g==
>>> fshp.validate('OrpheanBeholderScryDoubt', fsh)
True

क्रिप्ट को अनुकूलित करना:

चलो हमारे पासवर्ड हैशिंग योजना को कमजोर करते हैं। - डिफ़ॉल्ट की लंबाई 8 से 2 तक नमक की लंबाई घटाएं। - मूलभूत 4096 से 10 तक चलना दौर को घटाएं। - शैल -1 के साथ एफएसएचपी0 को अंतर्निहित हैश एल्गोरिथ्म के रूप में चुनें।

>>> fsh = fshp.crypt('ExecuteOrder66', saltlen=2, rounds=10, variant=0)
>>> print fsh
{FSHP0|2|10}Nge7yRT/vueEGVFPIxcDjiaHQGFQaQ==

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


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


जैसा कि एमके कहते हैं, SHA1 या MD5 एसएचए 2 के साथ मानक हैं।

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

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

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







passwords