2009-06-18 21 views
5

क्या उपयोगकर्ता अनुरोध कर सकते हैं कि पासवर्ड हैश मान के रूप में संग्रहीत किया गया हो तो उनका पासवर्ड स्वयं को ईमेल किया जा सकता है?पासवर्ड पुनर्प्राप्त करते समय पासवर्ड हैश मान

क्या उचित जानकारी के साथ हैश मान को स्पष्ट टेक्स्ट मान में परिवर्तित करने का कोई तरीका है (& आपको कौन सी जानकारी चाहिए)?

यदि किसी उपयोगकर्ता के पास एक ही पासवर्ड हैश वैल्यू दो साइटों पर संग्रहीत है, तो क्या उनके पासवर्ड दोनों साइटों के लिए समान होंगे?

उत्तर

28

यदि आप केवल पासवर्ड के हैश को संग्रहीत कर रहे हैं, तो नहीं। ... और आपको केवल अपने पासवर्ड के ठीक से नमकीन हैश को स्टोर करना चाहिए, वैसे भी।

पासवर्ड रीसेट तंत्र उचित विकल्प हैं।

+6

+1 एसएएलटी के उपयोग को याद दिलाने के लिए पासवर्ड है ... –

+1

नमक के उचित उपयोग के लिए नीचे मेरा उत्तर देखें ... नमक भंडारण इसे उपयोग करने के उद्देश्य को हरा देता है .. – jrista

+11

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

7

संक्षेप में, नहीं। अधिकांश हैशिंग एल्गोरिदम के साथ, आप एक ही आउटपुट के साथ कई इनपुट प्राप्त कर सकते हैं। पासवर्ड रीसेट विकल्प प्रदान करना अक्सर बेहतर होता है।

10

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

यदि आपका पासवर्ड सुरक्षित हैशिंग सिस्टम में सुरक्षित रूप से संग्रहीत है, तो एक प्रदाता कभी भी आपको अपना पासवर्ड ईमेल करने में सक्षम नहीं होना चाहिए, अगर आप इसे भूल जाते हैं तो आपको अपना पासवर्ड रीसेट करना होगा।

3

विभिन्न प्रकार के हैशिंग एल्गोरिदम हैं। कुछ दूसरों की तुलना में अधिक सुरक्षित हैं। एमडी 5 एक लोकप्रिय है, लेकिन असुरक्षित है। एसएचए-परिवार एल्गोरिदम का एक और अधिक सुरक्षित सेट है।

परिभाषा के अनुसार, हैश एक ही तरीका है। इसे उलट नहीं किया जा सकता है।

http://en.wikipedia.org/wiki/Sha-1

+0

सादा SHA-1/2 एक बुरा विचार है। आपको नमक की आवश्यकता है, और हैशिंग को धीमा करने के लिए कुछ चाहिए। पीबीकेडीएफ 2, बीक्रिप्ट, स्क्रिप मानक विकल्प हैं। – CodesInChaos

+0

सहमत हैं, मैं आमतौर पर इन दिनों केवल bcrypt का उपयोग करता हूं, लेकिन किसी भी तरह से सवाल वास्तव में हैश को उलटने के बारे में था जो असंभव है। (और ज्ञात हैश की लुकअप टेबल का उपयोग करना हैश को उलटने जैसा नहीं है।) –

3

अगर कोई स्पष्ट-पाठ पासवर्ड ठीक करने के लिए एक आसान तरीका था, वहाँ पासवर्ड के साथ शुरू करने के लिए hashing का कोई मतलब नहीं होगा। उस बिंदु पर आप बस बेस 64 या ROT13 भी हो सकते हैं। (ऐसा मत करो!)

जैसा कि अन्य लोगों ने उल्लेख किया है, अन्य पासवर्ड रिकवरी विधियों का उपयोग करें। साफ़-पाठ पासवर्ड तक पहुंचने के लिए वास्तव में कोई अच्छा कारण नहीं है।

यदि दो साइट्स पर हैश समान है, तो उपयोगकर्ता की संभावना दोनों में एक ही पासवर्ड है। 100% गारंटी नहीं है, हालांकि, हैश टकराव हो सकता है, लेकिन यह बेहद असंभव है।

+2

और अधिक संभावना है कि न तो साइट नमक जोड़ती है। –

-1

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

+6

"और नमक भी भंडारित करते हैं, तो आप पहले स्थान पर नमक रखने के उद्देश्य को हरा रहे हैं।" - यह गलत है। आपको नमक को स्टोर करना होगा, और यदि आप नहीं करते हैं तो आप हैश को मान्य नहीं कर सकते हैं। नमक को स्टोर करने के लिए कोई सुरक्षा नकारात्मक नहीं है - यह केवल लुकअप हमलों को हराने के लिए है। – frankodwyer

+2

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

+0

सभी व्यावहारिकता में, अधिकांश प्रोग्रामर डेटाबेस में लवण नहीं डालते हैं, क्योंकि अगर किसी को डेटाबेस तक पहुंच प्राप्त होती है और हैश है, तो उनके पास नमक भी होगा। नमक अक्सर ऐप कोड में रहते हैं। एक और विचार गणना किए गए नमक का उपयोग करना है, जैसे कि उपयोगकर्ता द्वारा शामिल होने पर आधारित नमक। – marr75

2

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

सबसे अच्छा तरीका, जो कई साइटें उपयोग करते हैं, यह "पासवर्ड रीसेट" बटन बनाने के लिए है जहां आप अपना उपयोगकर्ता नाम और ईमेल दर्ज करते हैं, और यदि वे मेल खाते हैं, तो यह आपको यादृच्छिक पासवर्ड भेजता है और आपको लॉगिन पेज का लिंक देता है और आप अपने यादृच्छिक पासवर्ड से लॉगिन कर सकते हैं और अपना पासवर्ड बदल सकते हैं।

0

ऐसा करने के लिए आप क्षेत्रों के साथ एक मॉडल होना चाहिए:

Hashed_password 
Salt 

और तुम विधि उपयोगकर्ता पता करने के लिए पासवर्ड (यहाँ मैं SHA1 का उपयोग करें) हैश करने के लिए तो फिर आप अपने नियंत्रक में परिभाषित कर सकते हैं की जरूरत है:

def self.encrypted_password(password, salt) 
    string_to_hash = password + "wibble" + salt 
    Digest::SHA1.hexdigest(string_to_hash) 
end 

इसके बाद आप तुलना कर सकते हैं:

user.Hashed_password == encrypted_password(password, user.salt) 

सच का मतलब था टी "पासवर्ड" उपयोगकर्ता के लिए पासवर्ड "उपयोगकर्ता"

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