मैंने इस समस्या से संबंधित दस्तावेज़ों के टन पढ़े हैं, लेकिन मुझे अभी भी सभी टुकड़े एक साथ नहीं मिल सकते हैं, इसलिए मैं कुछ प्रश्न पूछना चाहूंगा।
सबसे पहले मैं संक्षेप में प्रमाणीकरण प्रक्रिया का वर्णन करूंगा क्योंकि मैं इसे समझता हूं, क्योंकि मुझे उस संबंध में गलती हो सकती है: एक ग्राहक एक कनेक्शन शुरू करता है, जो एक सर्वर सार्वजनिक कुंजी, कुछ मेटाडेटा और एक के डिजिटल हस्ताक्षर के साथ प्रतिक्रिया करता है। विश्वसनीय प्राधिकारी। तब क्लाइंट निर्णय लेता है यदि वह सर्वर पर भरोसा करता है, तो सार्वजनिक कुंजी के साथ कुछ यादृच्छिक सत्र कुंजी को एन्क्रिप्ट करता है और इसे वापस भेजता है। यह सत्र कुंजी केवल सर्वर पर संग्रहीत निजी कुंजी के साथ डिक्रिप्ट की जा सकती है। सर्वर ऐसा करता है और फिर HTTPS सत्र शुरू होता है।
इसलिए, अगर मैं ऊपर सही हूं, तो सवाल यह है कि इस तरह के परिदृश्य में मानव-मध्य हमला कैसे हो सकता है? मेरा मतलब है, भले ही कोई व्यक्ति सार्वजनिक कुंजी के साथ सर्वर (जैसे www.server.com) प्रतिक्रिया को स्वीकार करता है और मेरे पास यह सोचने के लिए कुछ साधन हैं कि वह www.server.com है, वह अभी भी मेरे सत्र कुंजी को डिक्रिप्ट नहीं कर पाएगा निजी कुंजी के बिना।
पारस्परिक प्रमाणीकरण के बारे में बोलते हुए, क्या यह क्लाइंट पहचान के बारे में सर्वर विश्वास के बारे में है? मेरा मतलब है, ग्राहक पहले से ही सुनिश्चित हो सकता है कि वह सही सर्वर के साथ संचार कर रहा है, लेकिन अब सर्वर यह पता लगाना चाहता है कि ग्राहक कौन है, सही है?
और अंतिम प्रश्न पारस्परिक प्रमाणीकरण के विकल्प के बारे में है। यदि मैं वर्णित स्थिति में एक ग्राहक के रूप में कार्य करता हूं, तो क्या होगा अगर मैं एसएसएल सत्र स्थापित होने के बाद HTTP हेडर में एक लॉगिन / पासवर्ड भेजता हूं? जैसा कि मैंने इसे देखा, इस जानकारी को इंटरसेप्ट नहीं किया जा सकता क्योंकि कनेक्शन पहले से ही सुरक्षित है और सर्वर मेरी पहचान के लिए इस पर भरोसा कर सकता है। क्या मै गलत हु? पारस्परिक प्रमाणीकरण की तुलना में इस तरह के दृष्टिकोण के डाउनसाइड क्या हैं (केवल सुरक्षा मुद्दे महत्वपूर्ण हैं, कार्यान्वयन जटिलता नहीं)?