डीआरएम

Android डीआरएम एचएएल का आइकॉन

इस दस्तावेज़ में, Android डिजिटल राइट मैनेजमेंट (डीआरएम) फ़्रेमवर्क और ऐसे इंटरफ़ेस के बारे में बताता है जिन्हें डीआरएम प्लगिन के लिए लागू करना ज़रूरी है. इस दस्तावेज़ में इनका इस्तेमाल नहीं किया जा सकता सुरक्षा के ऐसे नियमों या अनुपालन के नियमों के बारे में बताएं जिन्हें डीआरएम के तहत तय किया जा सकता है स्कीम.

फ़्रेमवर्क

Android प्लैटफ़ॉर्म, एक्सटेंसिबल डीआरएम फ़्रेमवर्क उपलब्ध कराता है. इससे ऐप्लिकेशन, लाइसेंस के हिसाब से अधिकार से सुरक्षित कॉन्टेंट को मैनेज करते हैं कॉन्टेंट से जुड़ी पाबंदियां. DRM फ़्रेमवर्क, कई DRM के साथ काम करता है स्कीम; डिवाइस बनाने वाली कंपनी पर निर्भर करता है कि किसी डिवाइस पर कौनसी डीआरएम स्कीम काम करती हैं. DRM फ़्रेमवर्क, ऐप्लिकेशन डेवलपर और उनके लिए यूनिफ़ाइड इंटरफ़ेस उपलब्ध कराता है डीआरएम ऑपरेशन की जटिलता को छिपाता है. डीआरएम फ़्रेमवर्क ऑपरेशन मोड का इस्तेमाल करना होगा. डीआरएम स्कीम, लाइसेंस मेटाडेटा के हिसाब से इस्तेमाल के लिए मुश्किल मॉडल. डीआरएम फ़्रेमवर्क, डीआरएम के कॉन्टेंट और लाइसेंस के बीच संबंध बनाता है और अधिकारों के मैनेजमेंट का काम देखता है. इससे मीडिया प्लेयर को डीआरएम से सुरक्षित कॉन्टेंट से अलग किया जा सकता है या असुरक्षित कॉन्टेंट. MediaDrm देखें सुरक्षित मीडिया स्ट्रीम को डिक्रिप्ट करने के लिए कुंजियां पाएं.

Android डीआरएम एचएएल अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इमेज 1a. डीआरएम हार्डवेयर ऐब्स्ट्रक्शन Android 11 से पहले वाले वर्शन पर लेयर बनाएं
Android डीआरएम एचएएल पोस्ट R
पहली इमेज. डीआरएम हार्डवेयर ऐब्स्ट्रक्शन Android 11 और उसके बाद के वर्शन वाला लेयर

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

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

भवन निर्माण

डीआरएम फ़्रेमवर्क को इस तरह डिज़ाइन किया गया है कि यह लागू करने पर ध्यान न दे और विशिष्ट डीआरएम स्कीम के लागू होने की जानकारी को स्कीम के हिसाब से बना DRM प्लगिन. डीआरएम फ़्रेमवर्क में, मैनेज करने के लिए आसान एपीआई शामिल होते हैं डीआरएम के जटिल ऑपरेशन, लाइसेंस हासिल करना, डिवाइस का प्रावधान करना, DRM सामग्री और उसके लाइसेंस को संबद्ध करें, और अंत में DRM सामग्री को डिक्रिप्ट करें.

Android DRM फ़्रेमवर्क को दो आर्किटेक्चर लेयर में लागू किया जाता है:

  • डीआरएम फ़्रेमवर्क एपीआई, जो Android के ज़रिए ऐप्लिकेशन पर सार्वजनिक तौर पर उपलब्ध है ऐप्लिकेशन फ़्रेमवर्क.
  • एक नेटिव कोड DRM फ़्रेमवर्क, जो डीआरएम प्लगिन (एजेंट) के लिए इंटरफ़ेस दिखाता है अलग-अलग डीआरएम स्कीम के लिए, अधिकारों का मैनेजमेंट और डिक्रिप्शन मैनेज करने के लिए.
Android डीआरएम फ़्रेमवर्क
इमेज 2a. Android 11 से पहले के वर्शन के लिए डीआरएम फ़्रेमवर्क
Android डीआरएम फ़्रेमवर्क
इमेज 2b. Android 11 में शुरू होने वाला डीआरएम फ़्रेमवर्क

Android की जानकारी देखें मीडिया डीआरएम और ज़्यादा जानकारी के लिए, Android Media Cookie पर जाएं.

डीआरएम प्लगिन

सिस्टम शुरू होने पर, डीआरएम फ़्रेमवर्क एचएएल इंस्टेंस/सेवाओं (.rc फ़ाइलों में बताया गया है) के लिए स्कैन करता है और प्लगिन मिल जाते हैं. मीडिया DRM सर्वर (mediadrmserver) बनाता है CryptoHal और DrmHal, दोनों ऑब्जेक्ट. इसके बाद, CryptoHal और DrmHal प्लगिन को वेंडर- खास तरह से लागू करना.

प्लग इन को बाइंड किए गए एचएएल लागू करने चाहिए. बाइंडराइज़्ड एचएएल Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल), इसकी मदद से, एचएएल को फिर से बनाए बिना फ़्रेमवर्क को बदला जा सकता है.

प्लगिन, वेंडर या एसओसी बनाने वाले बनाते हैं. इन्हें चालू करने के लिए, /vendor वाले हिस्से में रखा जाता है डिवाइस. Android 13 या उसके बाद के वर्शन के साथ लॉन्च होने वाले सभी डिवाइसों में, बाइंड किए गए एचएएल की सुविधा काम करनी चाहिए का इस्तेमाल किया जा सकता है.

लागू करना

Android 13 के लिए रिलीज़ किए गए GMS और AOSP वाले डिवाइसों में एआईडीएल इंटरफ़ेस का इस्तेमाल करना ज़रूरी है.

प्लगिन की मदद से, नए डीआरएम फ़्रेमवर्क एपीआई लागू करने के लिए:

  1. डिवाइस की बिल्ड फ़ाइलों में प्लगिन सेवा जोड़ें.
  2. डिवाइस मेनिफ़ेस्ट अपडेट करें.
  3. SELinux अनुमतियां जोड़ें.
  4. /vendor से कम की .rc फ़ाइल बनाएं.
  5. प्लग इन लागू करें.

IDrmPlugin.aidl के हर वर्शन में एपीआई के बारे में बताया गया है, ICryptoPlugin.aidl, IDrmFactory.aidl, और ICryptoFactory.aidl

aidl/PLATFORM_ROOT/hardware/interfaces/drm/

डिवाइस की बिल्ड फ़ाइलों में प्लगिन सेवा जोड़ें

उदाहरण के लिए, एआईडीएल इंटरफ़ेस सपोर्ट जोड़ने के लिए, VENDOR DEVICE/device.mk फ़ाइल में android.hardware.drm-service.* पैकेज:


  PRODUCT_PACKAGES += \
    android.hardware.drm-service.clearkey \
    android.hardware.drm-service.widevine

डिवाइस मेनिफ़ेस्ट अपडेट करें

डिवाइस की vendor manifest.xml फ़ाइल में ये एंट्री शामिल होनी चाहिए:

  <hal format="aidl">
    <name>android.hardware.drm</name>
    <version>STABLE AIDL VERSION</version>
      <fqname>ICryptoFactory/clearkey</fqname>
      <fqname>IDrmFactory/clearkey</fqname>
      <fqname>ICryptoFactory/widevine</fqname>
      <fqname>IDrmFactory/widevine</fqname>
  </hal>

STABLE AIDL वर्शन, हर AIDL API रिलीज़ का वर्शन नंबर होता है. उदाहरण के लिए, 1, 2. इसके अलावा, हम vintf_फ़्रैगमेंट.

SELinux अनुमतियां जोड़ें

  1. VENDOR DEVICE/sepolicy/vendor/file.te
    में जोड़ें
    type mediadrm_vendor_data_file, file_type, data_file_type;
  2. VENDOR DEVICE/sepolicy/vendor/file_contexts
    में जोड़ें
        /vendor/bin/hw/android\.hardware\.drm-service\.clearkey  u:object_r:hal_drm_clearkey_exec:s0
    /data/vendor/mediadrm(/.*)? u:object_r:mediadrm_vendor_data_file:s0
  3. device/sepolicy/vendor/hal_drm_clearkey.te
    में जोड़ें
        vndbinder_use(hal_drm_clearkey)
        allow hal_drm_clearkey servicemanager:binder { call transfer };
        allow hal_drm_clearkey hal_drm_service:service_manager add;
        allow hal_drm_clearkey { appdomain -isolated_app }:fd use;
        get_prop(ramdump, public_vendor_default_prop)
        

/वेंडर के तहत आरसी फ़ाइल बनाएं

किसी सेवा के लॉन्च होने पर, .rc फ़ाइल में की जाने वाली कार्रवाइयों की जानकारी मिलती है.

यहां जाएं: ज़्यादा जानकारी के लिए, Android Init Language सबमिट करें.

प्लग इन लागू करें

  1. प्लग इन के service.cpp में main() एंट्री पॉइंट लागू करें सेवा.
  2. ICryptoPlugin, IDrmPlugin, ICryptoFactory और IDrmFactory.
  3. प्लग इन में नए एपीआई लागू करें.

डीआरएम प्लगिन के बारे में जानकारी

डीआरएम प्लगिन वेंडर, DrmFactory, CryptoFactory, और DRM प्लगिन.

ड्रमफ़ैक्ट्री

DrmHal क्लास, रजिस्टर की गई डीआरएम प्लगिन सेवाओं और स्ट्रक्चर की खोज करती है मिलते-जुलते प्लगिन जो DrmFactory के ज़रिए दी गई क्रिप्टो स्कीम के साथ काम करते हों क्लास.

किसी वेंडर के डीआरएम एचएएल से इंटरैक्ट करने के लिए, IDrm तौर पर इस्तेमाल होने वाला मुख्य प्लैटफ़ॉर्म होता है बनाने के लिए प्लगिन का इस्तेमाल करें. createप्लग इन एपीआई का इस्तेमाल, IDrmप्लग इन इंस्टेंस बनाने के लिए किया जाता है.

::ndk::ScopedAStatus getSupportedCryptoSchemes(
    std::vector<::aidl::android::hardware::drm::Uuid>* _aidl_return);

getsupported क्रिप्टोScheme, इस्तेमाल किए जा सकने वाले क्रिप्टो स्कीम की सूची दिखाता है AIDL drm HAL इंस्टेंस के लिए.

::ndk::ScopedAStatus isCryptoSchemeSupported(
    const ::aidl::android::hardware::drm::Uuid& in_uuid,
    const std::string& in_mimeType,
    ::aidl::android::hardware::drm::SecurityLevel in_securityLevel,
    bool* _aidl_return);

इससे पता चलता है कि प्लगिन फ़ैक्ट्री, ऐसे डीआरएम प्लगिन बना पा रहा है या नहीं जो यूयूआईडी की मदद से तय की गई किसी क्रिप्टो स्कीम को जोड़ना.

::ndk::ScopedAStatus isContentTypeSupported(const std::string& in_mimeType,
    bool* _aidl_return);

इससे पता चलता है कि प्लगिन फ़ैक्ट्री, ऐसे डीआरएम प्लगिन बना पा रहा है या नहीं जो mimeType में तय किया गया मीडिया कंटेनर फ़ॉर्मैट.

::ndk::ScopedAStatus createPlugin(
    const ::aidl::android::hardware::drm::Uuid& in_uuid,
    const std::string& in_appPackageName,
    std::shared_ptr<::aidl::android::hardware::drm::IDrmPlugin>* _aidl_return);

यूयूआईडी की तय की हुई क्रिप्टो स्कीम के लिए डीआरएम प्लगिन बनाता है.

क्रिप्टोफ़ैक्ट्री

CryptoHal क्लास, रजिस्टर की गई डीआरएम प्लगिन सेवाओं और स्ट्रक्चर की खोज करती है मिलते-जुलते प्लगिन जो CryptoFactory के ज़रिए दी गई क्रिप्टो स्कीम के साथ काम करते हों क्लास.

::ndk::ScopedAStatus isCryptoSchemeSupported(
    const ::aidl::android::hardware::drm::Uuid& in_uuid,
    bool* _aidl_return);

यह नीति तय करती है कि क्या क्रिप्टो फ़ैक्ट्री यूयूआईडी की मदद से तय की गई क्रिप्टो स्कीम दी जाती है.

::ndk::ScopedAStatus createPlugin(
    const ::aidl::android::hardware::drm::Uuid& in_uuid,
    const std::vector<uint8_t>& in_initData,
    std::shared_ptr<::aidl::android::hardware::drm::ICryptoPlugin>* _aidl_return);

इससे पता चलता है कि प्लगिन फ़ैक्ट्री, ऐसे क्रिप्टो प्लगिन बना पा रहा है या नहीं जो यूयूआईडी की मदद से तय की गई क्रिप्टो स्कीम दी जाती है.

DRM प्लग इन API

एपीआई की जानकारी hardware/interfaces/drm/aidl/aidl_api/android.hardware.drm/ VERSION/android/hardware/drm/IDrmPlugin.aidl में दी गई है. संबंधित बिल्ड पूरा होने के बाद, IDrmPlugin.h फ़ाइल out/Soong में मिल सकती है.