2012-11-30 5 views
7

मैं .NET v4 की System.Security.Cryptography.ProtectedData() और UnprotectData() और DataProtectionSocope.LocalMachine स्कोप के साथ विधियों का उपयोग करने के विचार का परीक्षण कर रहा हूं यह सुनिश्चित करने के लिए कि एक फ़ाइल को केवल एक मशीन पर एन्क्रिप्ट/डिक्रिप्ट किया जा सके। यहाँ मैं क्या कर रहा हूँ के सामान्य विचार ...DPAPI और ProtectedData.Protect() .net 4 में डिस्क छवियों/क्लोन को कैसे संभालता है?

//Encrypt  
byte[] outBytes = ProtectedData.Protect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine); 
File.WriteAllBytes(fileOut, outBytes); 

//Decrypt  
byte[] outBytes = ProtectedData.Unprotect(File.ReadAllBytes(fileIn), null, DataProtectionScope.LocalMachine);    
File.WriteAllBytes(fileOut, outBytes); 

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

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

जाहिर है, मैं अपने लिए यह परीक्षण कर सकता हूं, लेकिन मेरे पास वास्तव में ऐसा करने के लिए संसाधन नहीं हैं और यह देखने के लिए अंतहीन खोज रहे हैं कि क्या कोई और वहां से पहले ही जवाब जान सकता है या नहीं। किसी भी सलाह की बहुत प्रशंसा की जाएगी!

उत्तर

4

मेरा उत्तर केवल DataProtectionScope.LocalMachine पर लागू होता है क्योंकि स्पष्ट रूप से DataProtectionScope.CurrentUser सक्रिय निर्देशिका या किसी अन्य रोमिंग स्रोत में संग्रहीत कुंजी का उपयोग करता है और स्पष्ट रूप से, डिज़ाइन, एक भौतिक कुंजी से बंधे नहीं है।

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

एक कंप्यूटर अपनी मशीन कुंजी को फिर से बना सकता है (और यह पुरानी कुंजी को भी संरक्षित कर सकता है ताकि पुराना डेटा अभी भी डिक्रिप्टेबल हो)। मुझे नहीं पता कि कुंजी को फिर से बनाने के लिए इसे कैसे प्राप्त किया जाए और फिर पुराने लोगों को हटा दें।

स्रोत: http://www.windows-server-answers.com/microsoft/Security-Cryptography/30350079/local-machine-masterkey-in-dpapi.aspx

0

अच्छा प्रश्न - इसके चारों ओर शिकार लगता है कि स्वामी कुंजी स्वतः ही हर सीए पुनर्जीवित कर रहा है 9 0 दिन Passcape.com पर बहुत अच्छा analysis है - डीपीएपीआई सुरक्षा का दिल सिस्टम की सिस्की से जुड़ा हुआ है जो सिस्टम हाइव के तहत रजिस्ट्री में संग्रहीत है।

क्योंकि एक apparently CryptProtectData उपयोग कर सकते हैं() एक क्लोन सिस्टम पर DPAPI मास्टर कुंजी ऐसा लगता है कि DPAPI सुरक्षा के लिए अपने यूज-केस एक सुरक्षा जोखिम का प्रतिनिधित्व करता है ताज़ा करने के लिए CRYPT_PROTECT_REGENERATE ध्वज के साथ कहते हैं।

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

इस प्रश्न को https://security.stackexchange.com/ पर बेहतर उत्तर मिलेगा ताकि आप वहां भी पूछ सकें।

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