2008-09-25 6 views
132

एक एसएसके फ़ाइल क्या है? मुझे पता है कि यह के लिए खड़ा है, लेकिन यह क्या है और यह कैसे काम करता है इसके सभी स्पष्टीकरण मेरे सिर पर चला जाता है।के लिए एक एसएसके क्या है?

क्या कोई दृढ़ स्पष्टीकरण है कि दृढ़ता से नामित कुंजी का उपयोग कैसे किया जाता है और यह कैसे काम करता है?

उत्तर

194

.snk फ़ाइल strong name to a .NET assembly लागू करने के लिए उपयोग की जाती है। इस तरह एक मजबूत नाम

एक साधारण पाठ नाम, संस्करण संख्या, और संस्कृति के बारे में जानकारी के होते हैं ( यदि) एक सार्वजनिक कुंजी और डिजिटल हस्ताक्षर प्लस।

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

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

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

लेख "The Secrets of Strong Naming"। इन अवधारणाओं को और विस्तार से समझाते हुए एक उत्कृष्ट काम है। चित्रों के साथ।

+2

क्या इसका मतलब यह है कि जब आप एक पीएफएक्स के साथ एक असेंबली पर हस्ताक्षर करते हैं, तो यह वास्तव में इसका उपयोग करता है। जब भी यह संकलित होता है तो फ्लाई पर एसएनके। – Patrick

+5

@ पैट्रिक संख्या, वह [प्रमाणीकरण हस्ताक्षर] है (http://technet.microsoft.com/en-us/library/cc750035.aspx) जो, यह भी साबित करता है कि फ़ाइल हस्ताक्षर और चेक के बीच संशोधित नहीं की गई थी, मजबूत नाम आवश्यकताओं को पूरा नहीं करता है। समस्या यह है कि प्रमाणीकरण को असेंबली के विश्वास की एक श्रृंखला की आवश्यकता नहीं होती है, जिसके लिए मजबूत नामकरण की आवश्यकता होती है ताकि आप Authenticode एक असेंबली पर हस्ताक्षर कर सकें जो गैर मजबूत नामित/हस्ताक्षरित असेंबली पर निर्भर करता है। –

+1

आप बस स्नैप को बंद कर सकते हैं और इसे किसी अन्य के साथ बदल सकते हैं .. मुझे एक वास्तविक परिदृश्य नहीं पता है जहां यह उपयोगी है .. यह मूल रूप से हमारे प्रमुख जोड़े हैं जिन्हें आप उस पर विश्वास नहीं बना सकते – Ibrahim

4

ए। एसएनके फ़ाइल फ्रेमवर्क उपयोगिता सेट में स्न उपयोगिता द्वारा उत्पादित "कुंजी" का एक सतत संस्करण है। फिर आप इस फ़ाइल का उपयोग अपनी असेंबली को 'डिजिटल हस्ताक्षर' करने के लिए करते हैं। यह एक 2-भाग कुंजी है .. निजी-सार्वजनिक कुंजी संयोजन। कुंजी का सार्वजनिक हिस्सा प्रकाशित किया गया है यानी सभी को ज्ञात है। निजी हिस्सा केवल आपको, घटक/ऐप डेवलपर के लिए जाना जाता है और इस तरह से रखा जाना है।

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

22

एक the.Net दुनिया में SNK फ़ाइल अपने संकलित युग्मक हस्ताक्षर करने के लिए प्रयोग किया जाता है। , तो इसमें कुछ बातें होती हैं करने के लिए अनुमति देता है:

  1. आप GAC (ग्लोबल विधानसभा कैश) में विधानसभा रजिस्टर कर सकते हैं।असल में आप एक ही मशीन पर कई प्रतियों को बनाए रखने के बिना इसे कई स्थानों से संदर्भित कर सकते हैं)।
  2. आप अपने द्विआधारीयों को अन्य बाइनरी के भीतर से भी उपयोग कर सकते हैं जिन पर हस्ताक्षर किए गए हैं (यह हस्ताक्षरित असेंबली के संबंध में व्यवहार का एक अजीब वायरल प्रकार है)।
  3. आपकी असेंबली को आसानी से द्वारा संशोधित नहीं किया जा सकता है तृतीय पक्ष जिनके पास एसएनके फ़ाइल तक पहुंच नहीं है, कम से कम सुरक्षा प्रदान करते हैं।

मैं कैसे BizTalk सर्वर काम करता है से परिचित नहीं हूँ, इसलिए मुझे नहीं लगता कि मैं क्या विशिष्ट प्रयोजन वे कहते हैं कि पर्यावरण के भीतर की सेवा पर ज्यादा प्रकाश डाल सकती है।

आशा है कि यह कुछ हद तक सहायक होगा।

7

.snk फ़ाइल को असेंबली पर हस्ताक्षर करने के लिए वैश्विक असेंबली कैश (जीएसी) में जोड़ने में सक्षम होने के लिए उपयोग किया जाता है।

.snk फ़ाइल में आपकी कुंजी के लिए सार्वजनिक और निजी टोकन शामिल हैं। जब आप उस कुंजी के साथ कुछ डेटा (या बाइनरी) पर हस्ताक्षर करना चाहते हैं, तो डेटा पर चेकसम की गणना की जाती है, जिसे तब निजी टोकन से एन्क्रिप्ट किया जाता है। एन्क्रिप्टेड चेकसम को तब डेटा में जोड़ा जाता है। कोई भी चेकसम को डिक्रिप्ट करने के लिए आपकी कुंजी से सार्वजनिक टोकन का उपयोग कर सकता है और इसकी गणना करने के लिए गणना की गई चेकसम पर इसकी तुलना कर सकता है कि हस्ताक्षरित डेटा छेड़छाड़ नहीं किया गया है।

आप http://en.wikipedia.org/wiki/Public-key_cryptography पर सार्वजनिक कुंजी क्रिप्टोग्राफ़ी के बारे में अधिक पढ़ सकते हैं।

3

एक .snk फ़ाइल का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि कोई और आपके स्थान पर स्वयं की असेंबली नहीं फिसल सकता है। यह एन्क्रिप्शन/डिक्रिप्शन कुंजी की एक जोड़ी प्रदान करता है।

जब एक .snk फ़ाइल किसी असेंबली पर हस्ताक्षर करने के लिए उपयोग की जाती है, तो हैशकोड मान को असेंबली फ़ाइल से गणना की जाती है और निजी कुंजी का उपयोग करके एन्क्रिप्ट किया जाता है। उस एन्क्रिप्टेड "डाइजेस्ट" को एसएसके फ़ाइल से सार्वजनिक कुंजी के साथ असेंबली पर लगाया जाता है।

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

बिज़टॉक सर्वर के संदर्भ में, जो भी आपके बिज़टॉक समाधान द्वारा उपयोग की जाने वाली किसी भी कस्टम असेंबली का निर्माण करता है, उसे असेंबली पर हस्ताक्षर करने के लिए एक .snk फ़ाइल का उपयोग करने की आवश्यकता होगी ताकि BizTalk सर्वर इसे GAC में लोड कर सके और इसका उपयोग कर सके।

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