إدارة الحقوق الرقمية

رمز HAL لإدارة الحقوق الرقمية لنظام التشغيل Android

ويقدم هذا المستند نظرة عامة على إطار عمل إدارة الحقوق الرقمية في Android تعرض واجهات برمجة التطبيقات التي يجب أن ينفذها المكوّن الإضافي لإدارة الحقوق الرقمية. لا يتضمن هذا المستند وصف قواعد المتانة أو قواعد الامتثال التي قد يتم تحديدها بواسطة إدارة الحقوق الرقمية .

إطار العمل

يوفر نظام Android الأساسي إطار عمل DRM قابلاً للتوسع يتيح تدير التطبيقات المحتوى المحمي بموجب الحقوق وفقًا للترخيص القيود المرتبطة بالمحتوى. يتيح إطار عمل إدارة الحقوق الرقمية العديد من إعدادات إدارة الحقوق الرقمية المخططات لمخططات إدارة الحقوق الرقمية التي يتوافقها الجهاز مع الشركة المصنّعة للجهاز. يوفر إطار عمل إدارة الحقوق الرقمية واجهة موحدة لمطوّري التطبيقات لإخفاء تعقيد عمليات إدارة الحقوق الرقمية. يوفر إطار عمل إدارة الحقوق الرقمية (DRM) إطار عمل متسقًا للمحتوى المحمي وغير المحمي. يمكن أن تحدد مخططات إدارة الحقوق الرقمية نماذج استخدام معقدة من خلال البيانات الوصفية للترخيص. يوفر إطار عمل إدارة الحقوق الرقمية ارتباطًا بين محتوى إدارة الحقوق الرقمية والترخيص، ويتولى إدارة الحقوق. يؤدي هذا إلى تمكين استبعاد مشغل الوسائط من المحتوى المحمي بموجب إدارة الحقوق الرقمية أو المحتوى غير المحمي. الاطّلاع على MediaDrm لكي يحصل الصف على مفاتيح فك تشفير مجموعات بث الوسائط المحمية.

برنامج إدارة الحقوق الرقمية (HAL) لإدارة الحقوق الرقمية لنظام Android
الشكل 1(أ). تجريد أجهزة إدارة الحقوق الرقمية طبقة قبل Android 11
مشاركة HAL لإدارة الحقوق الرقمية لنظام Android
الشكل 1(ب). تجريد أجهزة إدارة الحقوق الرقمية الطبقة تبدأ في Android 11

يُعد توفُّر المحتوى الرقمي الوافي أمرًا مهمًا للمستخدمين الذين يستخدمون الأجهزة الجوّالة. إلى وإتاحة المحتوى الخاص بهم على نطاق واسع، ومطوري Android والمحتوى الرقمي يجب أن يستخدم الناشرون طريقة تنفيذ إدارة الحقوق الرقمية بشكل متّسق على نظام Android المشروع. ولإتاحة ذلك المحتوى الرقمي على أجهزة Android ضمان توفر إدارة الحقوق الرقمية (DRM) واحدة على الأقل عبر جميع الأجهزة، توفر Google إدارة الحقوق الرقمية بدون رسوم ترخيص على أجهزة Android المتوافقة المكون الإضافي لإدارة الحقوق الرقمية مدمج في إطار عمل إدارة الحقوق الرقمية لنظام التشغيل Android ويمكن أن يستخدم حماية مستندة إلى الأجهزة لتأمين المحتوى المميز وبيانات اعتماد المستخدم.

تعتمد حماية المحتوى التي يوفرها المكوّن الإضافي لإدارة الحقوق الرقمية على أمان إمكانات حماية المحتوى في النظام الأساسي للأجهزة الأساسية. تشير رسالة الأشكال البيانية ينبغي أن تتضمن إمكانات معدّات الجهاز تشغيل آمن للأجهزة إنشاء سلسلة من الثقة من خلال الأمان وحماية مفاتيح التشفير. يجب أن تتضمن إمكانات حماية المحتوى في الجهاز حماية الإطارات غير المشفّرة في الجهاز وحماية المحتوى من خلال إخراج موثوق به آلية حماية البيانات. لا تدعم بعض الأنظمة الأساسية للأجهزة كل ما سبق ميزات الأمان وحماية المحتوى. لا يتم تنفيذ الأمان مطلقًا في مكان واحد في المكدس، ولكن بدلاً من ذلك يعتمد على تكامل الأجهزة، والبرامج والخدمات. يؤدي الجمع بين وظائف أمان الأجهزة وآلية تشغيل موثوق بها ونظام تشغيل آمن منعزل للتعامل مع الأمان والوظائف أمرًا بالغ الأهمية لتوفير جهاز آمن.

هندسة معمارية

تم تصميم إطار عمل إدارة الحقوق الرقمية بحيث يتوافق مع عملية التنفيذ استخلاص تفاصيل تنفيذ مخطط إدارة الحقوق الرقمية المحدد في المكوّن الإضافي DRM الخاص بالمخطط. يتضمن إطار عمل إدارة الحقوق الرقمية واجهات برمجة تطبيقات بسيطة يمكن التعامل معها وعمليات إدارة الحقوق الرقمية المعقدة والحصول على التراخيص وتوفير الأجهزة ربط محتوى DRM وترخيصه، وأخيرًا فك تشفير محتوى DRM.

يتم تنفيذ إطار إدارة الحقوق الرقمية لنظام التشغيل Android في طبقتين معماريتين:

  • هي واجهة برمجة تطبيقات خاصة بإطار عمل إدارة الحقوق الرقمية (DRM)، والتي يتم عرضها للتطبيقات من خلال نظام التشغيل Android. إطار عمل التطبيق.
  • إطار عمل أصلي لإدارة الحقوق الرقمية (DRM) يعرض واجهة للمكونات الإضافية لإدارة الحقوق الرقمية (الوكلاء) إدارة الحقوق وفك تشفيرها في أنظمة إدارة الحقوق الرقمية المختلفة
إطار عمل إدارة الحقوق الرقمية (DRM) لنظام التشغيل Android
الشكل 2أ إطار عمل DRM قبل Android 11
إطار عمل إدارة الحقوق الرقمية (DRM) لنظام التشغيل Android
الشكل 2ب. إطار عمل DRM بدءًا من Android 11

الاطّلاع على Android Media DRM و يمكنك الاطّلاع على تشفير وسائط Android لمعرفة المزيد من التفاصيل.

المكونات الإضافية لإدارة الحقوق الرقمية

عند بدء تشغيل النظام، يفحص إطار عمل إدارة الحقوق الرقمية (DRM) مثيلات/خدمات HAL (الموضّح في ملفات .rc ). ويتم اكتشاف المكوّنات الإضافية. إنشاء خادم إدارة الحقوق الرقمية للوسائط (mediadrmserver) العنصرَين CryptoHal وDrmHal. CryptoHal وDrmHal بعد ذلك يتصلان بالمكونات الإضافية التي تتضمن السمة بواسطة المورّد عمليات تنفيذ محددة.

يجب أن تنفِّذ المكوّنات الإضافية طبقة تجريد الأجهزة (HALs) مجمَّعة. تستخدم طبقة تجريد الأجهزة (HALs) القابلة للدمج لغة تعريف واجهة Android (AIDL)، مما يسمح باستبدال إطار العمل دون الحاجة إلى إعادة إنشاء HALs.

يُنشئ المورّدون أو صنّاع SOC (المكوّنات الإضافية) المكوّنات الإضافية ويتم وضعها في قسم /vendor على الجهاز. يجب أن تتوافق جميع الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث مع بروتوكولات HALs مكتوبة. بلغة AIDL.

التنفيذ

يجب أن يستخدم إصدار أجهزة GMS وAOSP لنظام التشغيل Android 13 واجهة AIDL.

لتنفيذ واجهات برمجة تطبيقات أُطر عمل إدارة الحقوق الرقمية الجديدة من خلال مكوّن إضافي:

  1. إضافة خدمة المكوّنات الإضافية إلى ملفات إصدار الجهاز
  2. تعديل بيان الجهاز
  3. أضِف أذونات SELinux.
  4. أنشئ ملف .rc ضمن /vendor.
  5. نفِّذ المكون الإضافي.

يتم تحديد واجهات برمجة التطبيقات في كل إصدار من إصدارات IDrmPlugin.aidl، ICryptoPlugin.aidl، IDrmFactory.aidl، وICryptoFactory.aidl

aidl/PLATFORM_ROOT/hardware/interfaces/drm/

إضافة خدمة المكوّنات الإضافية إلى ملفات إصدار الجهاز

على سبيل المثال، لإضافة دعم واجهة AIDL، يجب أن يتضمّن ملف 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 (مثلاً 1 أو 2). أو بدلاً من ذلك، نقترح استخدام vintf_segments

إضافة أذونات 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 ضمن /vendor

ويحدِّد ملف .rc الإجراءات التي يجب اتّخاذها عند تشغيل خدمة.

عرض لغة الإعداد في Android للحصول على التفاصيل.

تنفيذ المكوّن الإضافي

  1. تنفيذ نقطة الدخول main() في service.cpp من المكوّن الإضافي خدمة ما.
  2. تنفيذ ICryptoPlugin وIDrmPlugin ICryptoFactory، وIDrmFactory.
  3. نفِّذ واجهات برمجة التطبيقات الجديدة في المكوّن الإضافي.

تفاصيل المكوّن الإضافي لإدارة الحقوق الرقمية

ينفذ موردو المكوّنات الإضافية لإدارة الحقوق الرقمية DrmFactory وCryptoFactory المكون الإضافي لإدارة الحقوق الرقمية

مصنع درم

تبحث الفئة DrmHal عن خدمات وإنشاءات مكونات إدارة الحقوق الرقمية المسجَّلة المكوّنات الإضافية المقابلة التي تتيح استخدام نظام تشفير مُعيَّن من خلال DrmFactory الصف.

IDrmمصانع هي نقطة الدخول الرئيسية للتفاعل مع نظام drm الأساسي للمورّد من خلال واجهة برمجة تطبيقات createplin. تُستخدم واجهة برمجة التطبيقات createplin لإنشاء مثيلات IDrmplin.

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

تعرض getsupportedCryptoSchemes قائمة بمخططات التشفير المتوافقة لمثيل HAL drm في AIDL.

::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);

يحدد ما إذا كان مصنع المكونات الإضافية قادرًا على إنشاء مكونات إضافية لإدارة الحقوق الرقمية متوافقة نظام تشفير مُعين، يتم تحديده بواسطة معرّف فريد عالمي (UUID).

::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);

تنشئ هذه الدالة مكوّنًا إضافيًا لإدارة الحقوق الرقمية لمخطط التشفير المحدّد من قِبل المعرّف الفريد العالمي (UUID).

كريبتو فاكتوري

تبحث الفئة CryptoHal عن خدمات وإنشاءات مكونات إدارة الحقوق الرقمية المسجَّلة المكوّنات الإضافية المقابلة التي تتيح استخدام نظام تشفير مُعيَّن من خلال CryptoFactory الصف.

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

يحدِّد هذا الإعداد ما إذا كان مصنع العملات المشفّرة قادرًا على إنشاء مكوّنات إضافية للتشفير تتيح استخدام مخطط التشفير المحدد، والذي يتم تحديده من خلال المعرّف الفريد العالمي (UUID).

::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);

يحدد ما إذا كان مصنع المكونات الإضافية قادرًا على إنشاء مكونات إضافية للتشفير تتيح مخطط التشفير المحدد، والذي يتم تحديده من خلال المعرّف الفريد العالمي (UUID).

واجهات برمجة التطبيقات للمكوّن الإضافي لإدارة الحقوق الرقمية

تم تحديد واجهات برمجة التطبيقات في hardware/interfaces/drm/aidl/aidl_api/android.hardware.drm/ VERSION/android/hardware/drm/IDrmPlugin.aidl. المقابل يمكن العثور على ملف IDrmPlugin.h في الخارج/بعد عملية الإنشاء.