डेवलपर विकल्प सुरक्षित करना

एंड्रॉइड संगतता परिभाषा दस्तावेज़ के अनुसार, ओईएम को ऐप विकास को सक्षम करने का एक तरीका प्रदान करना होगा। हालाँकि, कारों के भीतर मोबाइल जैसे डेवलपर विकल्प प्रदान करने से वे कारें हमले के प्रति संवेदनशील हो जाती हैं। डेवलपर विकल्पों तक पहुंच अब एक प्रमाणित क्रिप्टोग्राफ़िक टोकन तंत्र का उपयोग करके OEM द्वारा गेट की जा सकती है। विशेष रूप से, एक OEM यह कर सकता है:

  • पहले बूट से पहले वांछित डिफ़ॉल्ट प्रतिबंध सेट करें।
  • यदि पसंदीदा हो तो क्रिप्टो टोकन के साथ डेवलपर्स को सुरक्षित रूप से अधिकृत करें।
  • डेवलपर के प्रमाणित और अधिकृत होने के बाद प्रतिबंध परिवर्तन लागू करें।

यह आलेख एक संदर्भ कार्यान्वयन का वर्णन करता है जिसमें एक डिबगिंग प्रतिबंध नियंत्रक ऐप और एक दूरस्थ टोकन जारीकर्ता एंडपॉइंट शामिल है।

शब्दावली

शब्दावली के अतिरिक्त, इस लेख में इन शब्दों का उपयोग किया गया है:

  • JSON वेब सिग्नेचर (JWS), RFC 7515 में परिभाषित
  • राष्ट्रीय मानक एवं प्रौद्योगिकी संस्थान (एनआईएसटी)

डिज़ाइन

OEM JSON वेब सिग्नेचर (JWS) टोकन (RFC7515) के साथ डेवलपर्स को अधिकृत कर सकते हैं। संदर्भ कार्यान्वयन में, एक्सेस टोकन ओईएम द्वारा जारी किए जाते हैं और प्रतिबंध नियंत्रक ऐप द्वारा उपभोग किए जाते हैं। एक्सेस टोकन को रीप्ले हमलों और जाली टोकन का विरोध करने के लिए डिज़ाइन किया गया है।

चित्र 1. डिज़ाइन

एकीकरण और विन्यास

ओईएम को पहले बूट पर वांछित डिफ़ॉल्ट प्रतिबंध निर्दिष्ट करना होगा। यह AOSP फ्रेमवर्क में डिफ़ॉल्ट को ओवरराइड करने के लिए कई स्थिर संसाधन ओवरले के साथ किया जाता है।

उदाहरण के लिए, हेडलेस सिस्टम उपयोगकर्ता के लिए डिफ़ॉल्ट प्रतिबंधों को config_defaultFirstUserRestrictions स्ट्रिंग के साथ frameworks/base/core/res/res/values/config.xml में कॉन्फ़िगर किया जा सकता है:

<!-- User restrictions set when the first user is created.
         Note: Also update appropriate overlay files. -->
    <string-array translatable="false" name="config_defaultFirstUserRestrictions">
        <item>no_debugging_features</item>
    </string-array>

ड्राइवरों, यात्रियों और मेहमानों के लिए डिफ़ॉल्ट प्रतिबंधों frameworks/base/core/res/res/xml/config_user_types.xml में कॉन्फ़िगर किया जा सकता है। एक OEM ओवरले कर सकता है| ये स्ट्रिंग क्रमशः प्रत्येक प्रकार के उपयोगकर्ता पर डिफ़ॉल्ट प्रतिबंध सेट करती हैं, उदाहरण के लिए:

<user-types>
    <full-type name="android.os.usertype.full.SECONDARY" >
        <default-restrictions no_debugging_features="true"/>
    </full-type>
    <full-type name="android.os.usertype.full.GUEST" >
        <default-restrictions no_debugging_features="true"/>
    </full-type>
</user-types>

AOSP में निम्नलिखित स्थान पर एक संदर्भ कार्यान्वयन प्रदान किया गया है:

packages/apps/Car/DebuggingRestrictionController

परिक्षण

Google अनुशंसा करता है कि OEM संदर्भ कार्यान्वयन से शुरू करें और वहीं से आगे बढ़ें।

  1. ओवरले फ़ाइलों में वांछित प्रतिबंधों को कॉन्फ़िगर करने के बाद, AAOS संकलित करें और परिभाषित प्रवाह को मान्य करें। अपनी एक्सेस सेटिंग्स को सत्यापित करने के लिए संदर्भ ऐप और स्थानीय JWS सक्षम सेवा का उपयोग करें।
  2. अपनी JWS सक्षम क्लाउड सेवा (वैकल्पिक) का उपयोग करने के लिए सिस्टम को कॉन्फ़िगर करें। सत्यापित करें कि आप अपनी बैकएंड सेवा पर वांछित प्रवाह देख रहे हैं।