2012-01-24 12 views
7

मेरे पास एक वेबसाइट है जो उपयोगकर्ता अपना व्यक्तिगत डेटा जमा करते हैं, और मैं एईएस -256 का उपयोग करके इन डेटा को एन्क्रिप्ट करने की सोच रहा हूं और उनके पासवर्ड को उस एन्क्रिप्शन के लिए एक कुंजी के रूप में उपयोग किया जाता है और फिर मैं एन्क्रिप्टेड डेटा को एक mysql डेटाबेस में संग्रहीत करता हूं। ..एन्क्रिप्शन के बाद एईएस -256 कुंजी कैसे बदलें?

अब उपयोगकर्ता अपने पासवर्ड को परिवर्तित करता है कि कैसे मैं एन्क्रिप्टेड डेटा

मैं तो पुराने कुंजी तो यह पुन: एन्क्रिप्ट एक साथ के साथ अपने डेटा डिक्रिप्ट डेटाबेस से सभी डेटा इकट्ठा करना चाहिए की कुंजी बदल जाएगा नई कुंजी?

उत्तर

13

जब आप अपना पासवर्ड बदलते हैं तो आपको उपयोगकर्ता के सभी डेटा को फिर से एन्क्रिप्ट करने की आवश्यकता नहीं होती है।

किसी उपयोगकर्ता के डेटा को एन्क्रिप्ट करने के लिए एक गुप्त कुंजी उत्पन्न करें; इसे "सामग्री एन्क्रिप्शन कुंजी" कहें। उपयोगकर्ता के पासवर्ड से एक कुंजी प्राप्त करें; इसे "कुंजी एन्क्रिप्शन कुंजी" कहते हैं। "कुंजी एन्क्रिप्शन कुंजी" का उपयोग करके "सामग्री एन्क्रिप्शन कुंजी" एन्क्रिप्ट करें। एन्क्रिप्टेड कुंजी को नमक के साथ और मुख्य व्युत्पन्न के लिए उपयोग किए जाने वाले पुनरावृत्तियों की संख्या के साथ स्टोर करें।

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

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

यदि आप नमक का उपयोग करते हैं, भले ही आप नमक का उपयोग न करें, भले ही आप अभी तक एक अखंड एल्गोरिदम का उपयोग न करें। आपको हजारों बार हैशिंग ऑपरेशन दोहराना होगा। अधिकांश प्लेटफार्मों पर यह (सही ढंग से) करने के लिए पुस्तकालय हैं। पासवर्ड से एक गुप्त कुंजी बनाने के लिए एक कुंजी व्युत्पन्न एल्गोरिदम (पीकेकेडीएफ 2, पीकेसीएस # 5 से) का उपयोग करें।

इस अवधारणा पर विचार करने के the draft for password-based S/MIME encryption.

+0

एन्क्रिप्टेड कुंजी कहाँ संग्रहित की जाएगी? एप्लिकेशन सर्वर पर, या डेटाबेस सर्वर पर भौतिक भंडारण में स्मृति में? – dimiguel

+0

@dimgl बैकअप के साथ कुछ विश्वसनीय, लगातार भंडारण में संग्रहीत। निश्चित रूप से स्मृति में नहीं। जब तक आप परवाह नहीं करते हैं कि सामग्री को बिजली आउटेज द्वारा अपरिवर्तनीय रूप से नष्ट कर दिया गया है। – erickson

0

मूर्खतापूर्ण है।

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

+0

मुझे 256 बाइट देने के लिए उनका पासवर्ड होगा, फिर इसे एन्क्रिप्शन –

+0

ठीक से उपयोग करें, तो कुंजी बनाने के लिए आपका प्रारूप क्या है? –

3

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

एक चीज जो आप कर सकते हैं वह प्रत्येक उपयोगकर्ता की फ़ाइलों को एक यादृच्छिक कुंजी से एन्क्रिप्ट करता है, फिर उस कुंजी को हैश + नमकीन पासवर्ड से एन्क्रिप्ट करें। यदि उपयोगकर्ता पासवर्ड बदलता है, तो आपको केवल कुंजी को फिर से एन्क्रिप्ट करना होगा।

2

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

यह कैसे काम करता है?

  • आप यादृच्छिक रूप से जनरेट कुंजी के साथ उपयोगकर्ता यू के लिए डेटा डी एन्क्रिप्ट, कश्मीर यू, डी
  • आप एन्क्रिप्ट कुंजी कश्मीर यू, डी एक अलग कुंजी K1 यू, कश्मीर एक यादृच्छिक नमक से उत्पन्न, एस 1 यू (जो आप का रिकॉर्ड रखते हैं) और उपयोगकर्ता का पासवर्ड P1 यू साथ (जिसे आप ट्रैक कर सकते हैं या नहीं भी कर सकते हैं)। एन्क्रिप्टेड कुंजी E1 यू है।
  • आप एस 1 यू और के 1 यू, के स्टोर करते हैं जब उपयोगकर्ता अपने डेटा तक पहुंचना चाहता है।
  • उपयोगकर्ता यू अपने डेटा का उपयोग करना चाहता है, तो वे आप अपने पासवर्ड, P1 यू साथ प्रदान करते हैं और आप यू एस 1 ऊपर देखो और पुनर्जीवित K1 यू, कश्मीर कि डेटा से, और का उपयोग करें कि ई 1 डिक्रिप्ट करने के लिए यू, आपको K यू, डी एक बार फिर दे रहा है, जिसके साथ आप अपना वास्तविक डेटा डिक्रिप्ट करते हैं।
  • आप सुनिश्चित करते हैं कि जब आप सही पासवर्ड सही करते हैं तो पता लगा सकते हैं कि यदि उपयोगकर्ता गलत पासवर्ड टाइप करते हैं तो आप द्विआधारी गड़बड़ी नहीं करते हैं।

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

अविवेक के स्तर के साथ

, आप अभी भी (P1 यू) (यू P2 ) अपने पुराने पासवर्ड के लिए उपयोगकर्ता और उनके नए पासवर्ड का संकेत है और उन्हें मान्य है, लेकिन आप केवल डिक्रिप्ट करने के लिए ई 1 यू है और फिर इसे एक नए कुंजी के 2 यू, के के साथ एक नए नमक एस 2 यू और नया पासवर्ड पी 2 यू से उत्पन्न किया गया है। आपको एन्क्रिप्टेड डेटा को बिल्कुल स्पर्श नहीं करना है।

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

केविन केनान द्वारा "Cryptography in the Database: The Last Line of Defense" में कुछ विचारों पर यह एक हल्का बदलाव है। Kn यू, के कुंजी एक केईके, एक कुंजी-एन्क्रिप्टिंग कुंजी के उदाहरण हैं। आप पुस्तक में प्रमुख परिवारों के बारे में भी पढ़ सकते हैं, जो एन्क्रिप्टेड डेटा के प्रबंधन में मदद करेंगे।

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