डेवलपर के लिए सेटिंग और टूल को सुरक्षित करना

Android कंपैटबिलिटी डेफ़िनिशन डॉक्यूमेंट के मुताबिक, ओईएम को ऐप्लिकेशन डेवलपमेंट की सुविधा चालू करने का तरीका देना होगा. हालांकि, मोबाइल की तरह डेवलपर के विकल्प उपलब्ध कराने से, कारें हैक होने की आशंका बढ़ जाती है. पुष्टि किए गए क्रिप्टोग्राफ़िक टोकन के तंत्र का इस्तेमाल करके, अब OEM, डेवलपर के विकल्पों का ऐक्सेस दे सकता है. खास तौर पर, OEM ये काम कर सकता है:

  • डिवाइस को पहली बार चालू करने से पहले, डिफ़ॉल्ट रूप से लागू होने वाली पाबंदियां सेट करें.
  • अगर आप चाहें, तो क्रिप्टो टोकन की मदद से डेवलपर को सुरक्षित तरीके से अनुमति दें.
  • डेवलपर की पुष्टि और अनुमति मिलने के बाद, पाबंदी में किए गए बदलाव लागू करें.

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

शब्दावली

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

  • JSON वेब सिग्नेचर (JWS), जिसकी जानकारी आरएफ़सी 7515 में दी गई है
  • नैशनल इंस्टिट्यूट ऑफ़ स्टैंडर्ड्स ऐंड टेक्नोलॉजी (एनआईएसटी)

डिज़ाइन

OEM, JSON वेब सिग्नेचर (JWS) टोकन (RFC7515) की मदद से, डेवलपर को अनुमति दे सकते हैं. रेफ़रंस लागू करने के तरीके में, ऐक्सेस टोकन OEM जारी करते हैं और पाबंदी कंट्रोल करने वाले ऐप्लिकेशन का इस्तेमाल करते हैं. ऐक्सेस टोकन, रीप्ले अटैक और फ़ोर्ज किए गए टोकन से बचाने के लिए डिज़ाइन किए गए हैं.

पहली इमेज. डिज़ाइन

इंटिग्रेशन और कॉन्फ़िगरेशन

OEM को पहले बूट पर, डिफ़ॉल्ट रूप से लागू होने वाली पाबंदियों के बारे में बताना होगा. ऐसा कई स्टैटिक रिसॉर्स ओवरले की मदद से किया जाता है, ताकि AOSP फ़्रेमवर्क में डिफ़ॉल्ट सेटिंग बदली जा सकें.

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

<!-- 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 की सुविधा वाली क्लाउड सेवा का इस्तेमाल करने के लिए, सिस्टम को कॉन्फ़िगर करें (ज़रूरी नहीं). पुष्टि करें कि आपकी बैकएंड सेवा पर, मनमुताबिक फ़्लो दिख रहा है.