मुझे यकीन नहीं है कि एन्क्रिप्शन में MySQL बिल्ड का उपयोग करना आपकी समस्या का सबसे अच्छा समाधान होगा।
PHP का M_CRYPT पैकेज को काफी अच्छा माना जाता है और यह आपको एल्गोरिथम चुनने की सुविधा देता है जो आपकी आवश्यकताओं के लिए सबसे उपयुक्त है।
अपनी कुंजी को किसी अन्य सर्वर पर संग्रहीत करने का एक बड़ा फायदा है:कुंजी उसी मशीन पर नहीं है जिस पर एन्क्रिप्टेड डेटा है। इसलिए जब तक हमलावर के पास समझौता की गई मशीन पर पर्याप्त नियंत्रण नहीं है, वे कुंजी तक नहीं पहुंच सकते हैं।
यदि हमलावर मशीन पर पूर्ण नियंत्रण प्राप्त कर लेता है, तो डेटा संग्रहीत किया जाता है, तो सबसे अधिक संभावना है कि वे क्वेरी करने में सक्षम होंगे कुंजी के लिए वेब-सेवा।
हालांकि, कुंजी को एक मशीन से दूसरी मशीन में स्थानांतरित करने से एक नया क्षेत्र खुल जाता है जिसे सुरक्षित करने की आवश्यकता होती है। संभवत:अधिक कुंजी और अधिक एन्क्रिप्शन परतें शामिल हैं, जिससे गलतियों की संभावना बढ़ जाती है।
दूसरा विकल्प वेबसर्वर स्टार्ट अप पर पासवर्ड दर्ज करना है और इसे केवल मेमोरी में रखना है।
संभावित समाधान
यदि कोई समाधान नियोजित देखा जाता है जो वेब एक्सेस वाले उपयोगकर्ताओं के लिए फ़ाइलों को एन्क्रिप्ट करने के लिए निम्न विधि का उपयोग करता है (मैं आपके पर्यावरण के बारे में निश्चित नहीं हूं, लेकिन यह सहायक हो सकता है):
- उपयोगकर्ता बनाने पर, नए उपयोगकर्ता को एक लंबी यादृच्छिक कुंजी असाइन की जाती है।
- यह यादृच्छिक कुंजी उपयोगकर्ता रिकॉर्ड में एक एन्क्रिप्टेड कॉलम में संग्रहीत है।
(केवल इस कॉलम को एन्क्रिप्ट किया गया है ताकि शेष रिकॉर्ड के प्रदर्शन को प्रभावित न किया जा सके! ) - यादृच्छिक-कुंजी कॉलम का एन्क्रिप्शन 1 मास्टर पासवर्ड के साथ किया जाता है, जो एक फ़ाइल या मेमोरी में संग्रहीत होता है। स्मृति में। )
(एक और तरीका यह होगा कि उपयोगकर्ता को पासवर्ड दर्ज करने दें और उसका उपयोग रैंडम-कुंजी कॉलम को एन्क्रिप्ट/डिक्रिप्ट करने के लिए करें, लेकिन मुझे यकीन नहीं है कि इससे सुरक्षा बढ़ेगी या घटेगी ) - हर दस्तावेज़ जिसे एन्क्रिप्ट करने की आवश्यकता होती है, उस उपयोगकर्ता के लिए यादृच्छिक-कुंजी के साथ एन्क्रिप्ट किया जाता है और फिर डिस्क पर संग्रहीत किया जाता है।
- दस्तावेज़ फ़ाइल-सिस्टम में न्यूनतम अनुमतियों के साथ संग्रहीत किए जाते हैं।
इस दृष्टिकोण के लाभ हैं:
1. यादृच्छिक-कुंजी डेटाबेस में एन्क्रिप्ट की गई है। तो आपके पास अभी भी एन्क्रिप्टेड कॉलम के संयोजन में डेटाबेस-सर्वर की अतिरिक्त सुरक्षा है।2। दस्तावेजों को अलग-अलग चाबियों के साथ संग्रहीत किया जाता है, यदि हमलावर एक कुंजी पकड़ लेता है, तो दस्तावेजों के केवल एक हिस्से से समझौता किया जाता है।
हालांकि:
यदि हमलावर मास्टर पासवर्ड पकड़ लेता है और उपयोगकर्ता-तालिका तक पढ़ने की पहुंच रखता है, तो पूरा सिस्टम एक बार फिर टूट जाता है।