मैं सुरक्षा पर कुछ लेखों को obfuscation द्वारा पढ़ने की सलाह देता हूं, जो अनिवार्य रूप से आप प्राप्त करने की कोशिश कर रहे हैं (कम से कम यह है कि सभी सिफारिशें क्या कह रही हैं) और आखिरकार सुरक्षित नहीं हैं।
हालांकि, आईओएस की सैंडबॉक्सिंग सुरक्षा का पहला और सबसे प्रभावी रूप है।
दूसरा, इनपुट सत्यापन आपके ऐप की अगली सबसे महत्वपूर्ण सुरक्षा सुविधा होगी। एन्क्रिप्शन को पूरा करने का मतलब कुछ भी नहीं है यदि आप अपने सभी इनपुट (उपयोगकर्ता टाइप की गई जानकारी से, किसी योजना के माध्यम से ऐप लॉन्च करने के लिए नेटवर्क प्रतिक्रियाओं) को मान्य नहीं करते हैं।
अंत में, सुरक्षित एन्क्रिप्शन, जहां यह आवश्यक है, केवल तभी सुरक्षित है जब आप कट्टर नहीं करते हैं (या अपनी हार्ड कोडिंग को खराब करते हैं)। mprivat सही है, आपको उपयोगकर्ता द्वारा उत्पन्न डेटा (एक लॉगिन), एक सार्वजनिक कुंजी एन्क्रिप्शन (इसलिए केवल गैर-शामिल निजी कुंजी डिक्रिप्ट कर सकता है) या सर्वर साइड एन्क्रिप्शन का उपयोग करने की आवश्यकता होगी जो एसएसएल का परिवहन के लिए उपयोग करता है।
मैं यह भी कहूंगा कि यदि आपका सुरक्षित डेटा केवल उस डिवाइस पर बनाए रखा जाना है जिसे आप कीचेन एपीआई का उपयोग करते हैं, और विशेष रूप से सुनिश्चित करें कि आप उस फॉर्म का उपयोग करते हैं जिसके लिए उपयोगकर्ता को पुनर्प्राप्ति के लिए लॉग इन करने की आवश्यकता होती है ।
यदि आपके पास डेटा है जो आप डिवाइस पर एन्क्रिप्ट कर रहे हैं जो डिवाइस और किसी अन्य डिवाइस (सर्वर की तरह) पर डिक्रिप्ट किया गया है, तो आपके पास मौलिक वास्तुशिल्प दोष है। यह काफी महत्वपूर्ण है कि एन्क्रिप्शन-डिक्रिप्शन केवल क्लाइंट-क्लाइंट (उर्फ, उपयोगकर्ता का डिवाइस केवल) या क्लाइंट-सर्वर (जो सर्वर के लिए उपयोगकर्ता डिवाइस या उपयोगकर्ता डिवाइस पर सर्वर हो सकता है) हो। कमजोरियों में दो परिणामों को मिलाकर। क्लाइंट-क्लाइंट बनाम क्लाइंट-सर्वर के लिए एक अलग एन्क्रिप्शन का उपयोग करके, मैं विशेष रूप से वही एन्क्रिप्शन तंत्र का अर्थ हूं (और कभी-कभी आवश्यक)। http://www.amazon.com/gp/aw/d/0735617228
अच्छी तरह से मैं नहीं कर सकते कुंजी के रूप में जानकारी लॉगिन का उपयोग, बहुत अच्छा होगा, हालांकि :) मैं कई स्थिर कुंजी है, जो hardcoded किया जाएगा की जरूरत है:
यहाँ एक जो लोग सुरक्षित कोड लिखने के लिए की आवश्यकता होगी, कर रहे हैं के लिए अवश्य पढ़ें है। .. लेकिन यह वास्तव में एक अच्छा समाधान हो सकता है - यदि बीमार को 5 चाबियाँ पसंद हैं, तो उनमें से 4 को एन्क्रिप्ट किया जाएगा और मुझे उन्हें पहली कुंजी के साथ डिक्रिप्ट करना होगा और केवल तभी वे क्रिप्टिंग के लिए वैध कुंजी बन जाएंगे ... कोई भी नहीं संकलित कोड में उन चाबियाँ मिलने पर भी असली चाबियाँ मिलेंगी ... धन्यवाद!:) –
यदि आप वास्तव में भद्दा हैं कि आपकी हार्डकोड की गई कुंजियां पढ़ी जा सकती हैं, तो विकल्पों में से एक भी आपकी रूपांतरित कुंजी को स्टोर करना होगा। फिर संग्रहीत कुंजी को वास्तविक कुंजी में बदलने के लिए एक विधि है। उदाहरण के लिए, एक मामूली परिवर्तन रिवर्स स्ट्रिंग होगा। तो यदि आपकी कुंजी एबीसी है, तो आप सीबीए को हार्डकोड करेंगे और हर बार जब आप अपनी कुंजी का उपयोग करना चाहते हैं तो रिवर्स विधि को कॉल करें। बेशक, असली ऐप में, आप बस कुछ विपरीत से थोड़ा अधिक जटिल चाहते हैं। बस एक अतिरिक्त विचार ... – mprivat
बिल्कुल ... ऐसा कुछ वास्तव में ठोस लगता है ... और मैं पागल नहीं हूं, मुझे नहीं लगता कि यह एक बड़ी समस्या है, लेकिन मुझे इसे काम में करना है और वे पागल हैं :) एक बार फिर धन्यवाद! –