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