2011-09-06 15 views
5

मैं WINAPI का उपयोग कर विंडोज मशीन पर लॉग-इन उपयोगकर्ता के पासवर्ड का उपयोग करके दिए गए डेटा को एन्क्रिप्ट करना चाहता हूं। मैं एक फ़ंक्शन ढूंढ रहा हूं जो टोकन (या ऐसा कुछ) का उपयोग करता है लेकिन मुझे कोई नहीं मिला।उपयोगकर्ता के पासवर्ड का उपयोग करके एन्क्रिप्ट करना

क्या कोई जानता है कि यह कैसे करें?

धन्यवाद! :-)

+1

बस इस स्पष्ट करना: आप अंततः डेटा आप सही को एनक्रिप्ट कर रहे हैं ठीक करने के लिए सक्षम होना चाहते हैं? आप उपयोगकर्ता के पासवर्ड को स्टोर करने की कोशिश नहीं कर रहे हैं, लेकिन एन्क्रिप्शन कुंजी प्राप्त करने के लिए इसका उपयोग करने के लिए, है ना? –

+0

बिल्कुल सही! – TCS

उत्तर

3

मैं इस सवाल का जवाब पहले लिखा था, लेकिन फिर, फिर से विचार के बाद से मैं पहले DPAPI की प्रतिक्रिया नहीं मिली है। हालांकि, कुछ और विचारों पर, मैं निम्नलिखित राय देना चाहता हूं। यहां महत्वपूर्ण प्रस्ताव यह है कि यह सब आपकी आवश्यकताओं पर निर्भर करता है। दो परस्पर विरोधी संभावनाओं दिमाग में आते हैं:

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

  2. आप एक उद्यम आईटी प्रबंधक हैं और सभी कर्मचारियों को कड़े पट्टा पर हैं। आप चाहते हैं कि वे अपने वर्कफ़्लो के हिस्से के रूप में व्यावसायिक डेटा एन्क्रिप्ट करें ताकि वे एक दूसरे के डेटा को न देख सकें, लेकिन व्यवस्थापक खुशी से सभी के डेटा पढ़ सकते हैं।

यदि आप स्थिति में हैं (2), तो अब पढ़ना बंद करें और डीपीएपीआई के साथ जाएं, जो उस मामले के लिए उपयुक्त है। यदि आप परिदृश्य (1) पसंद करते हैं, तो नीचे मेरा मूल उत्तर पढ़ें।


शायद यह एक अच्छा विचार नहीं है। यहां बताया गया है:

वास्तविक पासवर्ड सिस्टम पर संग्रहीत नहीं किया जाएगा (जब तक आपके पास Windows 3.11 या ऐसा कुछ न हो)। इसके बजाए, पासवर्ड का केवल एक हैश संग्रहीत किया जाएगा, और लॉगिन समय पर उपयोगकर्ता द्वारा दर्ज किया गया पासवर्ड धोया गया है और संग्रहीत हैश की तुलना में है।

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

संक्षेप में, नहीं। उपयोगकर्ता को अपने डेटा के लिए एक समर्पित, ताजा पासवर्ड के लिए पूछें और केवल इसके लिए इसका इस्तेमाल करें।

+0

आप डीपीएपीआई का उपयोग कर सकते हैं और अभी भी उपयोगकर्ता को समर्पित पासवर्ड के लिए पूछ सकते हैं। CryptProtectData में वैकल्पिक एन्ट्रॉपी पैरामीटर यही है। –

+0

हां, लेकिन ओपी विशेष रूप से लॉगिन पासवर्ड का उपयोग करना चाहता है। अनुमोदित, आप (1) के कार्यान्वयन के रूप में डीपीएपीआई का उपयोग कर सकते हैं। –

+0

सहमत हुए। और मुझे अपना अंतिम अनुच्छेद पर कुछ जोर देना चाहिए: ** समर्पित ** पासवर्ड मांगें, लॉगऑन पासवर्ड नहीं, और यह स्पष्ट करें। कृपया उपयोगकर्ताओं को उनके मौजूदा पासवर्ड टाइप करने के लिए प्रशिक्षित न करें जहां कहीं भी पूछा जाए। –

7

Windows Data Protection API आपको जो चाहिए उसे लगता है। CryptProtectData and CryptUnprotectData फ़ंक्शंस वर्तमान उपयोगकर्ता के लॉगऑन प्रमाण-पत्रों का उपयोग करके एन्क्रिप्शन निष्पादित करता है।

+0

मैं सोच रहा हूं: सिस्टम पर एक व्यवस्थापक सिस्टम पर किसी भी उपयोगकर्ता द्वारा संरक्षित "असुरक्षित" डेटा के लिए पर्याप्त जानकारी पुनर्प्राप्त कर सकता है? लेख कहता है कि प्रमाण पत्र अनिवार्य रूप से सिर्फ एक पासवर्ड हैश है। –

+0

@ केरेक: यह लॉगऑन प्रमाण-पत्रों का उपयोग करता है। वैकल्पिक एन्ट्रॉपी पैरामीटर अच्छी तरह से वैकल्पिक है। एक व्यवस्थापक किसी का प्रतिरूपण कर सकता है, लेकिन डीपीएपीआई प्रतिरूपण के तहत काम नहीं करता है (मुझे इसके कारण पहले इसका उपयोग करना छोड़ देना था)। इसे काम करने के लिए जोड़ा जा सकता है, लेकिन यह कुछ प्रयास करता है। –

+0

मेरा मतलब थोड़ा अधिक निम्न स्तर है: चूंकि एन्क्रिप्शन पासवर्ड के हैश का उपयोग करके कुछ सुप्रसिद्ध सिफर है, इसलिए एक व्यवस्थापक सिस्टम से सभी हैंश को पुनः प्राप्त कर सकता है और ब्लॉब्स को सीधे डिक्रिप्ट कर सकता है, न? –

0

अपने स्वयं के लॉगिन एल्गोरिदम को डिजाइन करने के बजाय केर्बेरोस (लिनक्स-आधारित प्रमाणीकरण सर्वर, या केर्बेरोस का उपयोग कर अन्य सर्वर)/एलडीएपी फ्रेमवर्क (विंडोज सर्वर) का उपयोग करें।

विंडोज प्लेटफ़ॉर्म एसडीके & तृतीय-पक्ष पुस्तकालयों में इन ढांचे के साथ कनेक्टर हैं। करबरोस के बारे में MSDN में

अधिक जानकारी: http://msdn.microsoft.com/en-us/library/ff649429.aspx

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