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

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

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

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

शब्दावली

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

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

डिज़ाइन

ओईएम डेवलपर्स को 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>

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

packages/apps/Car/DebuggingRestrictionController

परिक्षण

Google अनुशंसा करता है कि ओईएम संदर्भ कार्यान्वयन के साथ शुरू करें और वहीं से निर्माण करें।

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