मुझे कोर डेटा एन्क्रिप्शन के बारे में कोई प्रश्न है। मैं कोर डेटा SQLite डेटाबेस में कुछ संवेदनशील उपयोगकर्ता डेटा संग्रहीत कर रहा हूं। महत्वपूर्ण मान सभी ट्रांसफॉर्मबल हैं और मैं एईएस 256 का उपयोग एन्क्रिप्ट करने और उन्हें 'फ्लाई पर' डिक्रिप्ट करने के लिए कर रहा हूं, जिसमें प्रत्येक मूल्य के लिए एक व्यक्तिगत IV शामिल है। एन्क्रिप्शन कुंजी उपयोगकर्ता द्वारा चुने गए पासवर्ड का SHA512 हैश है। यह अब तक बहुत अच्छी तरह से काम करता है।कोर डेटा एन्क्रिप्शन
अब उपयोगकर्ता पासवर्ड के बारे में। जब उपयोगकर्ता ऐप लॉन्च करता है तो उसे अपने पासवर्ड के लिए कहा जाता है। पासवर्ड SHA512 के साथ धोया जा रहा है और आईओएस कीचेन में संग्रहीत किया जा रहा है। प्रत्येक लेखन या पढ़ने के संचालन के लिए NSValueTransformer को चाबी से पासवर्ड प्राप्त होगा। यदि ऐप बंद हो रहा है, तो मैं कीचेन से पासवर्ड हैश हटा देता हूं।
मेरे कोर डेटा डेटाबेस में मेरे पास एक विशेष इकाई है जिसमें यादृच्छिक संख्या है! = 0 क्योंकि यह केवल मूल्य है। यह जांचने के लिए कि क्या उपयोगकर्ता ने सही पासवर्ड दर्ज किया है, मैं इस इकाई को लाता हूं और संख्या पढ़ता हूं। अगर यह = है! 0, मुझे पता है कि पासवर्ड सही था क्योंकि जब डिक्रिप्शन एनएसवीएलयू ट्रांसफॉर्मर विफल रहता है तो हमेशा 0
अब मेरे वास्तविक प्रश्न: क्या आप इसे एन्क्रिप्शन पर एक अच्छा दृष्टिकोण मानेंगे? दर्ज पासवर्ड सही होने पर आप और कैसे परीक्षण करेंगे?
मैं थोड़ा चिंतित हूं कि ऐप चल रहा है, जबकि ऐप चल रहा है, जबकि चाबी हैश में पासवर्ड हैश को संग्रहीत करना सबकुछ धीमा कर देता है, क्योंकि NSValueTransformer को हर समय कीचेन तक पहुंचना पड़ता है। क्या पासवर्ड में हैश को स्मृति में रखने के लिए पर्याप्त रूप से सुरक्षित होगा, इसलिए ऐप बंद होने पर इसे हटा दिया जाएगा?
क्या आप "क्या यादृच्छिक रूप से जेनरेट की गई एन्क्रिप्शन कुंजी का उपयोग करते हैं जो आप पासवर्ड के आधार पर एक कुंजी एन्क्रिप्शन कुंजी के साथ एन्क्रिप्ट करते हैं" का उपयोग कर सकते हैं? मैं अपने कोर डेटा स्टोर के कुछ फ़ील्ड एन्क्रिप्ट करना चाहता हूं और एन्क्रिप्शन करने के लिए उपयोग करने के लिए एक कुंजी उत्पन्न करने के लिए एक सर्वोत्तम अभ्यास की तलाश में हूं। मैं मानता हूं कि इसे पासवर्ड पर आधारित करना समझ में नहीं आता है क्योंकि यह बदल सकता है। –