एक मजबूत नाम (एक .snk फ़ाइल में संग्रहीत कीपैयर) के साथ साइन इन करना (अन्य उपयोगों के बीच) protect against forging assemblies के लिए है।एक मजबूत नाम के साथ हस्ताक्षर कैसे असेंबली के एक सेट फोर्जिंग के खिलाफ रक्षा करता है?
उदाहरण के लिए: मैं अपनी असेंबली को एक मजबूत नाम से हस्ताक्षरित करता हूं, तो कुछ अन्य डेवलपर मेरी असेंबली का उपयोग करते हैं और इसलिए उनकी असेंबली में मेरा मुख्य संदर्भ है, जो कि मेरे कीपैयर की सार्वजनिक कुंजी का उल्लेख करता है। कुछ उपयोगकर्ता डेवलपर असेंबली और मेरी असेंबली स्थापित करते हैं और खुशी से उस डेवलपर के कोड का उपयोग करते हैं। यदि कोई और मेरा असेंबली बनाने की कोशिश करता है जो मेरे संस्करण की तरह दिखता है और उपयोगकर्ता को यह विश्वास दिलाता है कि यह "इंस्टॉल करने योग्य अपडेट" है, तो जाली असेंबली लोड नहीं होगी क्योंकि मैं अपने कीपैयर को नियंत्रित करता हूं और जाली असेंबली एक ही कीपर के साथ हस्ताक्षरित नहीं है । ठीक है।
लेकिन क्या एक दुर्भावनापूर्ण पार्टी को मेरी असेंबली और अन्य डेवलपर की निर्भर असेंबली और उन्हें "शिपिंग" दोनों को रोकने से रोकता है? वे मेरी असेंबली और डेवलपर की असेंबली को पकड़ते हैं, दोनों को छेड़छाड़ करते हैं, जो भी कुंजी के साथ मेरी असेंबली के जाली संस्करण पर हस्ताक्षर करते हैं, फिर निर्भर असेंबली के जाली संस्करण में इसका एक संदर्भ जोड़ें, इसे भी साइन करें और फिर दोनों को शिप करें। मेरा मतलब है कि दुर्भावनापूर्ण रूप से "शिपिंग" दो असेंबली एक असेंबली "शिपिंग" से कहीं अधिक कठिन नहीं होनी चाहिए।
मजबूत नामों के साथ हस्ताक्षर कैसे कई असेंबली फोर्जिंग के खिलाफ सुरक्षा करता है?
ठीक है, असेंबली भी मजबूत है। उस स्ट्रिंग को खींचते रहें और आप EXE पर समाप्त हो जाएंगे। यदि हमलावर भी इसे प्रतिस्थापित कर सकता है तो मजबूत नामों का उपयोग करने में कोई बिंदु नहीं बचा है। –
@ हंस पासेंट: मुझे लगता है कि आप सही हैं।क्या आप इसे उत्तर के रूप में जोड़ सकते हैं? – sharptooth