सादे पाठ के रूप में क्रेडेंशियल्स भेजने के अलावा बेसिक प्रमाणीकरण से डाइजेस्ट प्रमाणीकरण कैसे भिन्न होता है?
सादे पाठ के रूप में क्रेडेंशियल्स भेजने के अलावा बेसिक प्रमाणीकरण से डाइजेस्ट प्रमाणीकरण कैसे भिन्न होता है?
जवाबों:
मुख्य अंतर यह है कि इसे प्लेनटेक्स्ट के तार में उपयोगकर्ता नाम और पासवर्ड भेजने की आवश्यकता नहीं है। यह रिप्ले-हमलों के लिए भी प्रतिरक्षा है, क्योंकि यह सर्वर से एक बार की संख्या का उपयोग करता है।
सर्वर क्लाइंट को एक बार उपयोग करने वाला नंबर (एक नॉनस) देता है जो इसे उपयोगकर्ता नाम, दायरे, पासवर्ड और यूआरआई अनुरोध के साथ जोड़ता है। क्लाइंट उन सभी क्षेत्रों को MD5 हैशिंग विधि के माध्यम से हैश कुंजी बनाने के लिए चलाता है।
यह इस हैश कुंजी को सर्वर और उपयोगकर्ता नाम के साथ भेजता है ताकि प्रमाणित करने का प्रयास किया जा सके।
सर्वर-साइड उसी विधि का उपयोग हैश को उत्पन्न करने के लिए किया जाता है, केवल ब्राउज़र में टाइप किए गए पासवर्ड का उपयोग करने के बजाय सर्वर अपने उपयोगकर्ता DB से उपयोगकर्ता के लिए अपेक्षित पासवर्ड को देखता है। यह इस उपयोगकर्ता नाम के लिए संग्रहीत पासवर्ड को देखता है, एक ही एल्गोरिथ्म के माध्यम से चलता है और इसकी तुलना क्लाइंट द्वारा भेजे गए से करता है। यदि वे मेल खाते हैं तो पहुंच प्रदान की जाती है, अन्यथा यह 401 अनधिकृत (कोई लॉगिन या विफल लॉगिन) या 403 निषिद्ध (एक्सेस अस्वीकृत) को वापस भेज सकता है।
RFC2617 में डाइजेस्ट ऑथेंटिकेशन को मानकीकृत किया गया है । विकिपीडिया पर इसका एक अच्छा अवलोकन है :
आप इसे इस तरह से सोच सकते हैं:
क्रेडेंशियल्स का एक हैश तार पर भेजा जाता है।
HA1 = MD5(username:realm:password)
क्रेडेंशियल के हैश HA1 प्राप्त करने का एकमात्र तरीका पासवर्ड जानना है। सर्वर HA1 जानता है, लेकिन पासवर्ड नहीं है जो इसे उत्पन्न करता है। यदि HA1 एक हमलावर के लिए जाना जाता था, तो यह सिस्टम में मिल सकता है। इसलिए इसे तार के नीचे नहीं भेजा जाता है। ऐसा करने से पहले नॉन पर आधारित एक और हैश किया जाता है, और यह सर्वर पर की गई समान गणना से सहमत होना चाहिए। इस प्रकार, जब तक सर्वर HA1 को निजी रखता है तब तक सिस्टम सुरक्षित रहता है।