2011-12-06 11 views
13

मैंने कई लेखों में देखा है कि यह लिखा गया है कि विलंब हस्ताक्षर और असेंबली के लिए मजबूत नाम इसे हाई-जैक से रोकता है।.net में देरी हस्ताक्षर और मजबूत नाम क्या हैं?

इसका क्या अर्थ है?

केवल एक चीज जो मुझे पता है वह एक मजबूत नाम के बिना है, आप जीएसी में एक असेंबली स्थापित नहीं कर सकते हैं। तो मान लीजिए कि मेरे पास एक मजबूत नाम के बिना असेंबली है, क्या यह हाई-जैकड हो सकता है?

कोई मेरे संदेह को स्पष्ट करता है।

उत्तर

31

एमएसडीएन पर इसके बारे में बहुत सारी जानकारी है; उदाहरण के लिए:

मजबूत नामकरण एक सरल पहचान चिह्न के साथ अपने विधानसभा मुद्रांकन का एक तरीका यह है कि बाद में इस्तेमाल किया जा सकता मान्य करने के लिए है कि यह बाद से संशोधित नहीं किया गया है: Strong Naming, और Delay Signing

मूल विचार संक्षेप में प्रस्तुत करना इसे तैनात किया गया था। मजबूत नाम मूल रूप से असेंबली के नाम, संस्करण, और डेवलपर के लिए अद्वितीय "मजबूत नाम कुंजी" का हैश है। मजबूत नाम असेंबली के संदर्भ कठोर सत्यापन के माध्यम से जाते हैं जो गैर-दृढ़ता वाले नामों के संदर्भ में होते हैं; विशेष रूप से, मजबूत नामित संदर्भों को संस्करण संख्याओं से मेल खाना चाहिए, और मजबूत नाम हैश का मिलान होना चाहिए।

यह आपके कार्यक्रमों में संभावित सुरक्षा कमजोरियों के दो आम स्रोतों से बचने में मदद करता है:

  1. एक दुर्भावनापूर्ण उपयोगकर्ता एक ही फ़ाइल नाम के साथ एक अलग विधानसभा के साथ अपने कार्यक्रम में एक विधानसभा की जगह है, लेकिन जो दुर्भावनापूर्ण कोड है, और अपने प्रोग्राम को लोड करने और निष्पादित करने के लिए आश्वस्त करता है।
  2. एक दुर्भावनापूर्ण उपयोगकर्ता आपके प्रोग्राम में एक असेंबली के एक अलग संस्करण के साथ एक असेंबली को प्रतिस्थापित करता है, लेकिन जिसे बाद में तय की गई बग ज्ञात हैं।

मजबूत नाम प्रक्रिया इन दोनों कार्यों को अस्वीकार कर देगी क्योंकि मजबूत नाम डेटा मेल नहीं खाएगा। यही कारण है कि जीएसी में असेंबली मजबूत नामित होनी चाहिए: वे इतनी सर्वव्यापी उपयोग कर रहे हैं, वे अन्यथा इस तरह के अपहरण के लिए प्रमुख लक्ष्य बनाएंगे।

हालांकि, ध्यान दें मजबूत नाम बिल्कुल कुछ भी नहीं प्रकाशक की पहचान सत्यापित करने के लिए कि। कोई भी माइक्रोसॉफ्ट होने का दावा करने वाली दृढ़ता से नामित असेंबली प्रकाशित कर सकता है और उस दावे को खारिज करने के लिए मजबूत नाम में कुछ भी नहीं है। पहचान सत्यापित करना प्रमाणीकरण डिजिटल हस्ताक्षर का काम है, जो मजबूत नामकरण से अलग हैं। दोनों अक्सर एक साथ उपयोग किए जाते हैं, लेकिन वे ऑर्थोगोनल अवधारणाएं हैं।

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

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