2011-04-11 10 views
15

कौन सा मार्ग लेने के लिए, क्या पक्ष और विपक्ष, जो अधिक सुरक्षित है ..डेटा एन्क्रिप्शन और सी # में प्रमुख प्रबंधन

1) एईएस कुंजी जेनरेट करें, इसके साथ डेटा एन्क्रिप्ट और फिर आरएसए के साथ एईएस कुंजी एन्क्रिप्ट , एन्क्रिप्टेड डेटा और एन्क्रिप्टेड एईएस कुंजी को एक फ़ाइल और आरएसए कीपैयर को एक कुंजीकंटर में सेव करें।

2) या, डेटा एन्क्रिप्ट करने के लिए और एक फ़ाइल में सहेजें और फिर एन्ट्रापी क्या मैं कहीं ProtectedData.Protect() के साथ प्रयोग किया स्टोर .. (शायद allso आरएसए के साथ एन्क्रिप्ट KeyContainer को आरएसए कुंजी युग्म की दुकान DPAPI ProtectedData वर्ग का उपयोग और डेटा के साथ फ़ाइल में एन्क्रिप्टेड एन्ट्रॉपी?)

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

उत्तर

4

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

यदि केवल एक सर्वर को डेटा तक पहुंच की आवश्यकता होगी, तो DPAPI आपके उद्देश्यों के लिए पर्याप्त होना चाहिए। सुरक्षा उपयोगकर्ता के क्रेडेंशियल्स द्वारा प्रदान की जाती है, जो इस संदर्भ में आपके एप्लिकेशन स्टैक को चलाने वाले प्रमाण-पत्र होंगे। आप सुरक्षा को बढ़ाने के लिए अपने आवेदन में हार्डकोडेड एक अतिरिक्त एन्ट्रॉपी (या 'नमक') प्रदान कर सकते हैं ताकि यह अकेले अंतिम उपयोगकर्ता प्रमाण-पत्रों पर निर्भर न हो। इसे कार्यान्वित करना आसान है और आपको निर्यात/आयात कुंजी के साथ सौदा करने की आवश्यकता नहीं है।

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

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

1

मैंने अतीत में डीपीएपीआई का उपयोग किया है और यह काफी सरल था। आरएसए कीपैयर मेरे लिए काफी मैनुअल दिखता है। आप उपयोगकर्ता/मशीन स्तर के आधार पर डीपीएपीआई सुरक्षा का उपयोग कर सकते हैं।

MSDN link on DPAPI

1

DPAPI एक महत्वपूर्ण यह है कि मशीन के लिए या यहाँ तक कि मशीन पर उपयोगकर्ता के लिए बाध्य है के लिए डिक्रिप्शन प्रतिबंधित करता है।

एईएस और आरएसए के साथ

आप ऐसा कोई प्रतिबंध नहीं है ... आप भी एक पूरी तरह से अलग मंच पर डिक्रिप्ट कर सकता है + यहाँ आप जानते हैं कि कैसे प्रणाली काम करता है ... इसके विपरीत में DPAPI को

आप करेंगे शायद this

1

क्षमा करें, लेकिन आपके प्रश्न में आपके प्रश्न पर अच्छा उत्तर देने के लिए पर्याप्त जानकारी नहीं है। आपको अपने आवेदन की वास्तुकला और डेटा की संरचना के बारे में और अधिक जानकारी देना है।

क्या एप्लिकेशन उपयोगकर्ता संदर्भ में Windows सेवा या EXE अनुप्रयोग चल रहा है? डेटा का मालिक कौन है, जिसे आप एन्क्रिप्ट करना चाहते हैं: एप्लिकेशन, उपयोगकर्ता? क्या डेटा उपयोगकर्ताओं के बीच साझा किया जाता है? क्या आप स्थानीय हार्ड डिस्क पर या सर्वर पर (मिश्रित पर) डेटा को सहेजते हैं?क्या आप उपयोगकर्ता प्रोफ़ाइल के हिस्से के रूप में डेटा को सहेजते हैं?

सबसे महत्वपूर्ण सवाल यह है: जहां आप कुंजी पकड़ने की योजना बना रहे हैं? समस्या यह है कि कुंजी आपके घर की कुंजी की तरह है: आप चाहते हैं कि केवल आप (या आपके करीबी दोस्तों) की कुंजी तक पहुंच हो, लेकिन कोई और नहीं। फिर भी किसी को ताला के पास कहीं भी कुंजी मिल सकती है: दरवाजे पर लेटे हुए चटाई के नीचे। कोई ऐसा इसलिए करता है क्योंकि एक और समस्या है: कुंजी खो जाने पर क्या किया जाना चाहिए? सभी प्रश्न "कुंजी प्रबंधन" का हिस्सा हैं।

DPAPI 10 साल से अधिक है। इसका सबसे अधिक फायदा यह है कि यह उपयोगकर्ता द्वारा स्वामित्व वाली कुंजी को सहेजने में मदद करता है, ताकि उपयोगकर्ता स्वचालित रूप से कुंजी रख सके और roaming profiles के उपयोग के मामले में नेटवर्क पर किसी अन्य कंप्यूटर पर एन्क्रिप्टेड डेटा को डिक्रिप्ट किया जा सके। यदि आपके पास समान आवश्यकताएं हैं तो डीपीएपीआई आपको फायदे दे सकता है।

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

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