2012-07-30 30 views
6

मैं सुनिश्चित नहीं हूं समान प्रश्न (मैं किसी भी नहीं मिल रहा सकता है) से पहले कहा गया है, लेकिन यह आदमी-इन-मध्य हमले से क्लाइंट/सर्वर की रक्षा के लिए संभव है?क्या स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करते समय मैन-इन-द-बीच हमले को रोकना संभव है?

मैं सर्वर के साथ संवाद करने के लिए एक क्लाइंट एप्लिकेशन लिख रहा हूं। संचार एसएसएलवी 3 आधारित होगा। मैं सर्वर के स्वयं-हस्ताक्षरित प्रमाणपत्रों के साथ ठीक हूं, लेकिन उसी सर्वर नाम में एक ही स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करने वाले किसी और के बारे में चिंतित हूं और इसे होने का नाटक करता हूं। मेरा ग्राहक एप्लिकेशन OpenSSL लाइब्रेरी का उपयोग करता है। [क्लाइंट और सर्वर बहाव आधारित हैं, अगर यह कोई फर्क पड़ता है]। क्या मैं स्व-हस्ताक्षरित प्रमाणपत्रों के लिए समर्थन बनाए रखने के साथ-साथ ऐसे हमले से बच सकता हूं?

+1

यदि आपके एप्लिकेशन को मौजूदा क्लाइंट/सर्वर के साथ संगत होने की आवश्यकता नहीं है, तो आप सीधे टीएलएस 1.x (अपने पुस्तकालयों द्वारा उच्चतम समर्थित) पर जा सकते हैं और यदि आप कर सकते हैं तो एसएसएल 3.0 छोड़ सकते हैं। – Bruno

+0

@ ब्रूनो धन्यवाद। अभी के लिए टीएलएस के लिए नहीं जा सकते हैं। सर्वर एसएसएलवी 3 का उपयोग करता है। –

उत्तर

12

हां।

संक्षेप में, एक स्वयं हस्ताक्षरित प्रमाण पत्र केवल सीए प्रमाणपत्र से अधिक असुरक्षित होता है जब ग्राहक अग्रिम में प्रमाणपत्र नहीं जानता है और इसलिए यह सत्यापित करने का कोई तरीका नहीं है कि सर्वर यह कहता है कि यह है।

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

एसएसएल को प्रमाण पत्र प्राधिकरण के साथ या बिना सुरक्षित रखने के महत्वपूर्ण भाग हैं;

  • सर्वर निजी कुंजी (और सीए के मामले में, इसकी सभी जड़ों की निजी कुंजी) गुप्त रखी जाती है।
  • ग्राहक सर्वर प्रमाणपत्र (या इसके CA रूट) को जानता है।
+0

मेरे मामले में संभावित समाधान की तरह दिखता है। इसलिए, यहां तक ​​कि यदि 'मैन-इन-द-बीच' मेरे 'असली' सर्वर के समान प्रमाण पत्र (विशिष्ट होने के लिए सार्वजनिक कुंजी) प्रस्तुत करता है, तो यह क्लाइंट से डेटा डिक्रिप्ट नहीं कर सकता क्योंकि इसमें 'असली' नहीं होगा सर्वर की निजी कुंजी, है ना? –

+0

@ तुषारसुदेक बिल्कुल, प्रमाण पत्र किसी के लिए इसका उपयोग नहीं है जिसके पास निजी कुंजी नहीं है। –

+0

धन्यवाद!यही वह है जिसकी तलाश में मैं हूं –

1

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

बेशक, "आपकी निजी कुंजी को अच्छी तरह से सुरक्षित करना" बिल्कुल छोटा नहीं है। जब आप "Verisign" प्रमाण पत्र के लिए भुगतान करते हैं, तो आप प्रमाण पत्र बनाने के लिए अपने सॉफ़्टवेयर के लिए भुगतान नहीं कर रहे हैं - आप उन सुरक्षा बलों के लिए भुगतान कर रहे हैं जिनके पास वे इमारत की रक्षा कर रहे हैं जिसमें निजी कुंजी संग्रहीत की जाती हैं।

4

आप सर्वर के प्रमाणपत्र को हार्ड-कोड कर सकते हैं और जो भी प्राप्त करते हैं उसके विरुद्ध तुलना कर सकते हैं।

या बेहतर अभी तक, CA द्वारा हस्ताक्षरित एक CA प्रमाण पत्र और सर्वर प्रमाणपत्र बनाएं। सीए ग्राहक पर भरोसा है (फिर से इसे अपने आवेदन में हार्डकोडिंग करके) और सीए प्रमाण पत्र का उपयोग कर प्राप्त सर्वर प्रमाणपत्र प्रमाणित करें।

+0

(मैन्युअल कॉन्फ़िगरेशन सख्त हार्ड-कोडिंग के बजाय भी काम कर सकता है।) – Bruno

+0

@ ब्रूनो वास्तव में। लेकिन यह उपयोगकर्ताओं के जीवन को बनाता है और थोड़ा अधिक जटिल समर्थन करता है, इसलिए मुझे स्वयं निर्मित सीए दृष्टिकोण पसंद है। –