2011-01-17 13 views
8

मेरे पास एक सी ++ विंडोज ऐप है। मैं अपने इंस्टॉलर और मेरे निष्पादन योग्य पर हस्ताक्षर करता हूं, लेकिन मैं वर्तमान में अपने डीएलएल (जैसे zlib1.dll) पर हस्ताक्षर नहीं करता हूं। उन पर हस्ताक्षर करने के लिए यह एक बड़ा सौदा नहीं है, लेकिन क्या कोई यह समझा सकता है कि लाभ क्या है? उदाहरण के लिए, क्या मेरा प्रोग्राम एवी या फ़ायरवॉल सॉफ़्टवेयर के लिए अलग दिखाई देगा यदि इसकी सभी निर्भरताओं पर हस्ताक्षर किए गए हैं? क्या उपयोगकर्ताओं को कोई अलग चेतावनी मिल जाएगी?क्या मुझे अपने डीएलएल पर हस्ताक्षर करना चाहिए?

+0

क्यों साइन इन नहीं करें? आपने प्रमाण पत्र के लिए पहले ही भुगतान कर लिया है - इसलिए निर्माण के दौरान उन्हें साइन इन करने में केवल कुछ सेकंड लगते हैं। इसे क्यों छोड़ें? – Tim

+1

टिम, मैं शायद वैसे भी ऐसा करने जा रहा हूं, मैं मुख्य रूप से केवल उत्सुक हूं कि प्रभाव क्या है। – twk

उत्तर

6

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

+5

निहित लिंकिंग के बारे में क्या? क्या उस सेटिंग में हस्ताक्षर को सत्यापित करने का कोई तरीका है, या क्या सभी डीएलएल लोड को स्पष्ट लिंकिंग में परिवर्तित करना आवश्यक है (यानी लोड लाइब्रेरीएक्स कॉल)? –

+1

महान सवाल, ब्रेंट। मुझे जवाब जानना अच्छा लगेगा। – twk

+1

मुझे नहीं लगता कि अंतर्निहित लिंक वाले डीएलएस के लिए हस्ताक्षर सत्यापित करना संभव है क्योंकि आपके कोड में आने से पहले डीएलएस लोड हो जाएंगे। हालांकि, मुझे एक ऐसे उत्पाद के बारे में पता है जो स्पष्ट रूप से हस्ताक्षर को सत्यापित करने के लिए स्पष्ट रूप से लिंक करता है । – 341008