यदि आप डेटा एन्क्रिप्ट करते हैं तो आपको खुद से पूछना चाहिए कि इसे कौन डिक्रिप्ट करेगा। यदि आप एक असममित एन्क्रिप्शन सिस्टम (जैसे RSA) का उपयोग करते हैं तो एन्क्रिप्शन सार्वजनिक कुंजी का उपयोग करता है और डिक्रिप्शन संबंधित निजी कुंजी का उपयोग करता है; "असमानता" इस तथ्य से आती है कि निजी कुंजी को सार्वजनिक कुंजी से पुनर्गणना नहीं किया जा सकता है (हालाँकि दोनों कुंजियाँ गणितीय रूप से एक साथ जुड़ी हुई हैं)।
असममित एन्क्रिप्शन में ओवरहेड होता है। पहली टिप्पणी यह है कि इस तरह के एन्क्रिप्शन में कुछ यादृच्छिक हिस्सा होना चाहिए, क्योंकि हर कोई एन्क्रिप्ट कर सकता है (सार्वजनिक कुंजी है, हाँ, सार्वजनिक):यदि एन्क्रिप्शन प्रक्रिया नियतात्मक है, तो कोई भी सभी संभावित एसएसएन को एन्क्रिप्ट कर सकता है (इसमें एक से कम हैं उनमें से अरब, जो एक आधुनिक कंप्यूटर के लिए वास्तव में एक छोटी संख्या है) और एन्क्रिप्टेड मानों से मेल खाते हैं। इसलिए, एन्क्रिप्शन के दौरान कुछ यादृच्छिक जोड़ा जाना चाहिए, और एन्क्रिप्टेड एसएसएन सादा पाठ एसएसएन से बड़ा है।
ज्ञात असममित एन्क्रिप्शन सिस्टम गणितीय संरचनाओं का उपयोग करते हैं जिनकी अपनी लागत होती है। मूल रूप से, आरएसए एन्क्रिप्शन सिस्टम के लिए, "काफी मजबूत" कुंजी के साथ, एक एन्क्रिप्टेड संदेश की लंबाई कम से कम 128 बाइट्स होगी। कुछ एन्क्रिप्शन सिस्टम बेहतर करते हैं; अकादमिक शोध के कठिन रास्तों से चिपके रहते हुए, मैं इसे 41 बाइट्स में कर सकता था (NIST K-163 अण्डाकार वक्र पर El-Gamal के साथ)। छोटा कठिन लगता है।
तो इसमें कोई आश्चर्य की बात नहीं है कि किसी दिए गए डेटाबेस सिस्टम में डिफ़ॉल्ट रूप से ऐसी सुविधा शामिल नहीं होगी।
आपकी समस्या के लिए, आपको पहले जितना हो सके स्पष्ट रूप से परिभाषित (और लिखना) चाहिए:
- वह कौन सा डेटा है जिसे आप सुरक्षित रखना चाहते हैं
- डेटा कौन इनपुट करता है
- जो डेटा वापस पढ़ने वाला है
और उसके बाद ही आपको खुद से पूछना चाहिए कि क्या एन्क्रिप्शन उसके लिए एक उचित उपकरण है। एन्क्रिप्शन तब अच्छा होता है जब अनुमानित हमलावर कच्चे, संग्रहीत डेटा पर अपना हाथ पा सकता है। इसका मतलब है कि हमलावर ने ऑपरेटिंग सिस्टम सुरक्षा को दरकिनार कर दिया है। उस समय, ऑपरेटिंग सिस्टम जो कुछ भी जानता है, हमलावर भी जानता है। यदि डेटाबेस को किसी मशीन पर होस्ट किया गया है और एक इंटरफ़ेस है जिसके माध्यम से डिक्रिप्टेड SSN प्राप्त किया जा सकता है, तो वह मशीन "जानती है" कि डेटा कैसे प्राप्त किया जाए, और ऐसा ही हमलावर करता है ... दूसरी ओर, यदि होस्ट मशीन ऑपरेटिंग सिस्टम को पर्याप्त लचीला माना जाता है, तो एन्क्रिप्शन की बिल्कुल भी आवश्यकता नहीं लगती है।
डेटाबेस पर सममित एन्क्रिप्शन एक कमजोर समस्या का समाधान कर सकता है, जिसमें हमलावर को बाद में हार्डडिस्क की एक प्रति प्राप्त होती है . होस्ट सिस्टम सममित एन्क्रिप्शन कुंजी जानता है, लेकिन यह इसे केवल RAM में जानता है। हार्डडिस्क चोरी करने वाले हमलावर के पास वह चाबी नहीं होगी।