2012-06-07 13 views
7

मैं दो बातों के साथ इस सवाल प्रस्तावना के लिए तो मैं सीमित कर सकते हैं चाहते हैं, जहां मेरे वास्तविक सवाल यह है:एंड्रॉइड का ऐप/हस्ताक्षर सत्यापन कैसे काम करता है?

क) मैंने पहले सॉफ्टवेयर देव किया है, हालांकि एंड्रॉयड

ख के लिए कभी नहीं) मैं परिचित हूँ पीकेआई और एन्क्रिप्शन और हैशिंग और डिजिटल हस्ताक्षर और ब्ला ब्ला ब्ला

कहा जा रहा है कि मुझे एंड्रॉइड निर्माता कहां और कैसे एंड्रॉइड सत्यापित करता है, इस बारे में अधिक जानकारी को ट्रैक करने में परेशानी हो रही है। मैंने बहुत सारी जानकारी सुनी है इसलिए मैं वर्कफ़्लो का बेहतर विचार प्राप्त करने के लिए संश्लेषित करने की कोशिश कर रहा हूं।

मुझे पता है कि प्रत्येक ऐप डेवलपर को अपनी निजी/सार्वजनिक कुंजी जोड़ी मिलती है और वे एपीके को हराकर अपने ऐप्स पर हस्ताक्षर करते हैं (SHA-1 के साथ अधिकांश समय अगर मुझे गलत नहीं लगता है) और वहां आप जाते हैं। आप इसे अपलोड करते हैं और (मुझे विश्वास है) सार्वजनिक कुंजी एपीके के अंदर मेटा आईएनएफ में जाती है। मैं इतना समझता हूं।

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

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

+0

जब आप एपीके पर हस्ताक्षर करते हैं तो आपको निजी पासवर्ड प्रदान करना होगा। तो किसी के लिए "किसी और के रूप में" ऐप पोस्ट करने के लिए उन्हें अपनी कीस्टोर/कुंजी फ़ाइलों और पासवर्ड तक पहुंच की आवश्यकता होगी। और बाजार से जुड़े Google खाते तक पहुंच। – FoamyGuy

+0

@ टिम: मुझे लगता है कि वह पूछ रहा है: किसी और को अपनी कुंजीपटल बनाने और स्वयं हस्ताक्षरित प्रमाणपत्र बनाने से रोकने के लिए क्या है जो इसमें "फ़्यूमिटज़" भी कहता है। क्या यह किसी भी तरह से किसी खाते से जुड़ा हुआ है? –

उत्तर

9

संक्षेप में, एंड्रॉइड और Google Play अनिवार्य रूप से इस बारे में परवाह नहीं करता कि वास्तविक प्रमाणपत्र में क्या है। Google Play वास्तव में इसे मान्य करेगा, और जांचें कि यह 30 साल या उससे अधिक के लिए मान्य है, लेकिन वे वास्तव में प्रमाण में वास्तविक जानकारी (कम से कम वर्तमान में, AFAIK) का उपयोग नहीं करते हैं। आप सीएन में अपना नाम/कंपनी का नाम इस्तेमाल कर सकते हैं, लेकिन कोई भी इसे मान्य नहीं करेगा, और उपयोगकर्ता इस जानकारी को बिल्कुल नहीं देख पाएंगे। क्या एंड्रॉयड करता है:

  • जांच हस्ताक्षर यकीन APK
  • के साथ छेड़छाड़ नहीं की गई है फिर ऐप्स का वर्तमान में स्थापित संस्करण से एक के लिए एक बाइनरी ब्लॉब के रूप में गायन प्रमाण पत्र तुलना बनाने के लिए यह सुनिश्चित करने के लिए कि दो संस्करणों को एक ही कुंजी/प्रमाण पत्र (उदाहरण के लिए, एक ही व्यक्ति/कंपनी द्वारा) पर हस्ताक्षर किए गए हैं
  • यदि आप साझा किए गए उपयोग या दो या दो से अधिक हस्ताक्षर अनुमतियों का उपयोग कर उपयोग कर रहे हैं तो यह अनुमति लागू करने के लिए वही काम करता है क्षुधा।

तो, अपने प्रश्न का उत्तर देने के लिए, कोई आसानी से आपके नाम के साथ प्रमाणपत्र बना सकता है, लेकिन एंड्रॉइड और Google Play वास्तव में परवाह नहीं करता है। जब तक उनके पास आपकी निजी कुंजी नहीं है, वे एक ऐप हस्ताक्षर उत्पन्न करने में सक्षम नहीं होंगे जो आपके जैसा ही है और इस प्रकार वे आपके ऐप को ओवरराइट/अपडेट नहीं कर पाएंगे, या कोई विशेष अनुमति नहीं दे पाएंगे ।

+0

तो, क्या इसका मतलब यह है कि यदि एक ही सार्वजनिक-निजी कुंजी जोड़ी के साथ दो प्रमाणपत्रों का उपयोग करते हैं लेकिन अलग-अलग विषय नाम हैं, तो वे दोनों मान्य होंगे? असल में जब मैं अपनी निजी कुंजी के साथ अपने ऐप पर हस्ताक्षर करता हूं, तो क्या मेरा विवरण विषय नाम आदि जैसे कहीं भी खाते में लिया जाता है? – Ashwin

+2

यह वास्तविक 'विवरण' (सर्टिफिकेट डीएन, सीरियल नंबर इत्यादि) की परवाह नहीं करता है, लेकिन केवल प्रमाणपत्रों को बाइनरी ब्लब्स के रूप में तुलना करता है। चूंकि वे अलग हैं, इसलिए आप मूल रूप से प्रमाणपत्र 1 के साथ हस्ताक्षरित ऐप को अपडेट नहीं कर सकते हैं, जिसमें प्रमाण 2 के साथ हस्ताक्षरित एक अन्य है। –

+0

यह कहकर "यह वास्तविक 'विवरण' (प्रमाणपत्र डीएन, सीरियल नंबर इत्यादि) की परवाह नहीं करता है," क्या आपका मतलब है कि उन विवरणों का कभी भी उपयोग नहीं किया जाता है? क्योंकि आखिरकार आपने खुद को "बाइनरी ब्लब्स के रूप में प्रमाण पत्र की तुलना" की तुलना में बताया - इसका मतलब है कि यह प्रमाणपत्र विवरण को ध्यान में रखता है। – Ashwin