2013-01-17 11 views
15

कई लोगों की तरह - मैं एक साझा codebase (Windows स्टोर + Android + MonoTouch + [बाद में] WP8) के साथ एप्लिकेशन को विकसित कर रहा हूँ।क्या मोनोड्रॉइड के माध्यम से एंड्रॉइड में बॉक्स से बाहर कोई सुरक्षित भंडारण है?

साथ ही, कई ऐप्स के साथ, मेरे पास स्थानीय राज्य है कि मुझे इस ऐप के लिए जारी रखने की आवश्यकता है।

मैं संग्रहीत जानकारी का एक टुकड़ा हस्ताक्षरित उपयोगकर्ता के लिए प्रमाणीकरण टोकन है। विंडोज स्टोर प्लेटफार्म पर मैंने टोकन के सहायक डेटा (उपयोगकर्ता नाम और जारी की गई तारीख) और वास्तविक टोकन मान के लिए PasswordVault के लिए रोमिंग सेटिंग्स (ApplicationData.Current.RoamingSettings) के मिश्रण के साथ इसका संग्रहण लागू किया है। इस प्रकार टोकन ओएस-स्तरीय आत्मनिरीक्षण से संरक्षित है, क्योंकि यह ओएस द्वारा एन्क्रिप्ट किया गया है।

अब मैं अपने मोनोड्रॉइड बिल्ड के लिए एक ही इंटरफ़ेस को कार्यान्वित कर रहा हूं, और मैं प्लेटफॉर्म द्वारा प्रदान किए गए किसी भी तरीके से नहीं देख सकता, डेटा को संग्रहीत करने के लिए जो केवल मेरे एप्लिकेशन द्वारा डिक्रिप्ट किया जा सकता है - उसी तरह पासवर्ड स्टोर ऐप्स के लिए वॉल्ट का उपयोग किया जा सकता है।

नतीजतन, पल में, मैं बस Android.Content.ISharedPreferences इंटरफ़ेस Application.Context.GetSharedPreferences विधि के माध्यम से उपयोग कर रहा हूँ पढ़ सकते हैं और इन मूल्यों को लिखने के लिए।

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

अंत में यह, दुनिया के अंत नहीं है अगर मैं इस डेटा को एन्क्रिप्ट नहीं कर सकते हैं के बाद से टोकन है समय-सीमित वैसे भी - लेकिन यह अच्छा होगा अगर मैं वास्तव में यह ठीक सेकर सकता है!

उत्तर

0

हो सकता है कि इस here से उद्धृत आप मदद कर सकते हैं:

एंड्रॉयड पक्ष OOB पर सार्वजनिक एपीआई में समर्थित नहीं है तो बातें मुश्किल हो। मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि हनीकॉम्ब 3.2 में ब्लूज़ स्टैक नहीं है जो आधिकारिक तौर पर ओओबी बॉन्डिंग का समर्थन करता है, लेकिन Google के पास कोडिंग कार्यान्वयन है। मुझे विश्वास है क्योंकि यदि आप ब्लूटूथ एडाप्टर और ब्लूटूथ डिवाइस के लिए जिंजरब्रेड स्रोत कोड देखते हैं कक्षाएं आप OOB तरीके उपलब्ध लेकिन प्रलेखित एपीआई के माध्यम से संपर्क में नहीं देख सकते हैं।

ये विधियां अभी भी सार्वजनिक हैं ताकि आप उन्हें प्रतिबिंब के माध्यम से कॉल कर सकें। प्रतिबिंब का उपयोग करके आप कक्षा में सभी विधि हस्ताक्षर भी प्राप्त कर सकते हैं। इस तरह मैंने यह पाया कि मेरे पास मेरे लिए कौन सी विधियां थीं।

सावधान रहें कि कई दस्तावेज नहीं हैं और यह स्पष्ट नहीं है कि कुछ क्या करते हैं। महत्वपूर्ण होते टिप्पणी बनाने के लिए की readOutOfBandData() अनुकूलक वर्ग और setDeviceOutOfandData() डिवाइस कक्षा में कर रहे हैं।

+0

ओह उफ़! 'ओओबी' से मेरा मतलब है 'बॉक्स से बाहर'! I.e वहाँ एक मंच है जो बॉक्स से उपलब्ध एन्क्रिप्टेड स्टोरेज के लिए तंत्र प्रदान करता है :-)। प्रश्न शीर्षक बदलना होगा ... –

+0

; ओ) ठीक है, मुझे गलत समझा। –

1

आप और कीचेन एपीआई से प्रमाणपत्र का उपयोग Cipher API साथ डेटा को एन्क्रिप्ट (एपीआई स्तर 14 के बाद में उपलब्ध) Keychain API के संयोजन के साथ इसका इस्तेमाल कर सकते हैं।

लें ध्यान दें: के लिए एंड्रॉयड सुरक्षा अवलोकन दस्तावेज़ अनुसार, इसकी कोई गारंटी नहीं है अगर डिवाइस निहित है: http://source.android.com/tech/security/index.html#rooting-of-devices

+0

हाँ उपकरणों की rooting संभावित रूप से एक सुरक्षा बिंदु से सिरदर्द है; जैसा कि कस्टम रोम की स्थापना है (यह एक कस्टम रोम बनाने के लिए अपेक्षाकृत सरल है जो उपयोगकर्ता डेटा पर स्नूप करता है)। हालांकि, उपयोगकर्ता उस जोखिम को अपने जोखिम पर करता है (मुझे निश्चित रूप से है!) यह दिलचस्प है, मुझे यह देखना होगा कि क्या कोई डिवाइस-विशिष्ट प्रमाणपत्र उपयोग किया जा सकता है या नहीं। –

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