
تقدّم هذه الصفحة نظرة عامة على إطار عمل إدارة الحقوق الرقمية (DRM) في Android، و تعرِض الواجهات التي يجب أن ينفذها مكوّن DRM الإضافي. لا تصف هذه الصفحة قواعد الصلابة أو قواعد الامتثال التي قد يتم تحديدها من خلال مخطّط إدارة الحقوق الرقمية.
Framework
توفّر منصة Android إطار عمل قابل للتوسيع لإدارة الحقوق الرقمية يتيح للتطبيقات إدارة المحتوى المحمي بموجب حقوق الطبع والنشر وفقًا لقيود الترخيص المرتبطة بالمحتوى. يتيح إطار عمل إدارة الحقوق الرقمية العديد من خطط إدارة الحقوق الرقمية، وتحدِّد الشركة المصنّعة للجهاز خطط إدارة الحقوق الرقمية التي يتيحها الجهاز. يقدّم إطار عمل إدارة الحقوق الرقمية واجهة موحّدة لمطوّري التطبيقات ويغطّي تعقيد عمليات إدارة الحقوق الرقمية. يقدّم إطار عمل إدارة الحقوق الرقمية وضع تشغيل متسقًا للمحتوى المحمي وغير المحمي. يمكن أن تحدِّد مخطّطات إدارة الحقوق الرقمية نماذج استخدام معقدة حسب البيانات الوصفية للترخيص. يقدّم إطار عمل إدارة الحقوق الرقمية العلاقة بين المحتوى الخاضع لإدارة الحقوق الرقمية والترخيص، ويتولى إدارة الحقوق. يتيح ذلك فصل مشغّل الوسائط عن المحتوى المحمي بموجب إدارة الحقوق الرقمية أو غير المحمي. راجِع MediaDrm للصف للحصول على مفاتيح لفك تشفير أحداث بث الوسائط المحمية.
يعرض الشكل 1 طبقة استخراج الأجهزة لنظام إدارة الحقوق الرقمية قبل الإصدار 11 من Android، ويعرض الشكل 2 الطبقة في الإصدار 11 من Android والإصدارات الأحدث:
الشكل 1: طبقة تجريد الأجهزة لإدارة الحقوق الرقمية قبل Android 11
الشكل 2: طبقة تجريد الأجهزة لنظام إدارة الحقوق الرقمية (DRM) اعتبارًا من Android 11
إنّ توفّر محتوى رقمي غني مهم للمستخدمين على الأجهزة الجوّالة. لجعل المحتوى متاحًا على نطاق واسع، يحتاج مطوّرو تطبيقات Android و ناشرو المحتوى الرقمي إلى تنفيذ إدارة الحقوق الرقمية بشكلٍ متسق ومتوافق مع المنظومة المتكاملة لنظام Android. لإتاحة هذا المحتوى الرقمي على أجهزة Android و ضمان توفّر نظام إدارة حقوق رقمية واحد على الأقل على جميع الأجهزة، تقدّم Google نظام إدارة حقوق رقمية بدون رسوم ترخيص على أجهزة Android المتوافقة. يتم دمج المكوّن الإضافي لإدارة الحقوق الرقمية مع إطار عمل إدارة الحقوق الرقمية في Android، ويمكنه استخدام الحماية المستندة إلى الأجهزة لتأمين المحتوى المدفوع ومعلومات اعتماد المستخدمين.
تعتمد حماية المحتوى التي يوفّرها المكوّن الإضافي لإدارة الحقوق الرقمية على ميزات الأمان و حماية المحتوى في النظام الأساسي للأجهزة. يجب أن تشمل إمكانات الجهاز من الأجهزة ميزة "التشغيل الآمن للأجهزة" لأجل إنشاء سلسلة ثقة في الأمان وحماية مفاتيح التشفير. يجب أن تتضمّن إمكانات حماية المحتوى في الجهاز حماية اللقطات التي تم فك تشفيرها في الجهاز وحماية المحتوى من خلال آلية حماية موثوق بها للإخراج. لا تتوفّر كل ميزات أمان وحماية المحتوى المذكورة أعلاه في بعض منصات الأجهزة. لا يتم تنفيذ الأمان مطلقًا في مكان واحد في الحزمة، بل يعتمد بدلاً من ذلك على دمج الأجهزة والبرامج والخدمات. إنّ الجمع بين وظائف أمان الأجهزة وأحد أنظمة التشغيل المُعزَّلة والآمنة لمعالجة وظائف الأمان هو أمر بالغ الأهمية لتوفير جهاز آمن.
هندسة معمارية
تم تصميم إطار عمل إدارة الحقوق الرقمية ليكون مستقلاً عن التنفيذ، ويقدّم تمثيلاً مجردًا لتفاصيل تنفيذ مخطط إدارة الحقوق الرقمية المحدّد في أحد الإضافات الخاصة بمخطط إدارة الحقوق الرقمية. يتضمّن إطار عمل إدارة الحقوق الرقمية واجهات برمجة تطبيقات بسيطة لمعالجة عمليات إدارة الحقوق الرقمية المعقدة، والحصول على التراخيص، وإعداد الجهاز، وربط محتوى إدارة الحقوق الرقمية بترخيصه، وأخيراً فك تشفير محتوى إدارة الحقوق الرقمية.
يتم تنفيذ إطار عمل إدارة الحقوق الرقمية (DRM) في طبقتَين معماريتَين:
- واجهة برمجة تطبيقات إطار عمل إدارة الحقوق الرقمية (DRM)، والتي يتم الكشف عنها للتطبيقات من خلال إطار عمل تطبيق Android
- إطار عمل إدارة الحقوق الرقمية (DRM) للرمز البرمجي الأصلي، الذي يعرِض واجهة لمكونات DRM الإضافية (العوامل) لإدارة الحقوق وفك التشفير لمخطّطات إدارة الحقوق الرقمية المختلفة
يعرض الشكل 3 إطار عمل إدارة الحقوق الرقمية قبل الإصدار 11 من Android، ويعرض الشكل 4 الإطار في الإصدار 11 من Android والإصدارات الأحدث:
الشكل 3: إطار عمل إدارة الحقوق الرقمية قبل Android 11
الشكل 4: إطار عمل إدارة الحقوق الرقمية بدءًا من Android 11
اطّلِع على MediaDrm وMediaCrypto لمزيد من التفاصيل.
مكونات إدارة الحقوق الرقمية الإضافية
عند بدء تشغيل النظام، يبحث إطار عمل إدارة الحقوق الرقمية عن خدمات HAL ومثيلاتها (الموضّحة في ملفات .rc
) ويرصد المكوّنات الإضافية. ينشئ خادم إدارة الحقوق الرقمية للوسائط (mediadrmserver
) كلاً من كائنَي CryptoHal
وDrmHal
.
بعد ذلك، تستدعي CryptoHal
وDrmHal
الإضافات باستخدام عمليات تنفيذ خاصة بالمورّد.
يجب أن تنفِّذ المكونات الإضافية واجهات HAL المرتبطة. تستخدم واجهات HAL المُجمَّعة باستخدام Binder لغة تعريف واجهة Android (AIDL)، مما يسمح باستبدال إطار العمل بدون الحاجة إلى إعادة إنشاء واجهات HAL.
ينشئ المورّدون أو صانعو المنظومة على الرقاقة (SOC) المكونات الإضافية ويضعونها في قسم /vendor
على
الجهاز. يجب أن تكون جميع الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث متوافقة مع واجهات برمجة التطبيقات لHAL المُجمَّعة مكتوبة
بلغة AIDL.
التنفيذ
لتنفيذ واجهات برمجة تطبيقات جديدة لإطارات عمل إدارة الحقوق الرقمية من خلال مكوّن إضافي:
- أضِف خدمة المكوّن الإضافي إلى ملفات إنشاء الجهاز.
- عدِّل بيان الجهاز.
- أضِف أذونات SELinux.
- أنشئ ملف
.rc
ضمن/vendor
. - نفِّذ المكوّن الإضافي.
يتم تحديد واجهات برمجة التطبيقات في كل إصدار من 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>
يشير الإصدار الثابت من لغة تعريف واجهة نظام Android إلى رقم إصدار كل إصدار من واجهة برمجة التطبيقات AIDL (على سبيل المثال، 1 و2).
بدلاً من ذلك، ننصحك باستخدام vintf_fragments
.
إضافة أذونات SELinux
- إضافة أذونات إلى
VENDOR DEVICE/sepolicy/vendor/file.te
:
type mediadrm_vendor_data_file, file_type, data_file_type;
- إضافة أذونات إلى
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 - إضافة أذونات إلى
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 Init Language للاطّلاع على التفاصيل.
تنفيذ المكوّن الإضافي
- نفِّذ نقطة الدخول
main()
فيservice.cpp
من plugin service. - نفِّذ
ICryptoPlugin
وIDrmPlugin
ICryptoFactory
وIDrmFactory
. - نفِّذ واجهات برمجة التطبيقات الجديدة في المكوّن الإضافي.
تفاصيل المكوّن الإضافي لإدارة الحقوق الرقمية
ينفّذ مورّدو مكوّنات DRM الإضافية DrmFactory
وCryptoFactory
و
مكوّن DRM الإضافي.
فئة DrmFactory
تبحث فئة DrmHal
عن خدمات المكوّنات الإضافية المسجّلة لإدارة الحقوق الرقمية وتُنشئ
المكوّنات الإضافية المقابلة التي تتوافق مع مخطّط تشفير معيّن من خلال فئةDrmFactory
.
IDrmFactory
هي نقطة الدخول الرئيسية للتفاعل مع HAL لنظام إدارة الحقوق الرقمية (DRM) لدى المورّد
من خلال طريقة createPlugin
. استخدِم هذه الطريقة لإنشاء
مثيلات IDrmPlugin
.
::ndk::ScopedAStatus getSupportedCryptoSchemes( std::vector<::aidl::android::hardware::drm::Uuid>* _aidl_return);
getSupportedCryptoSchemes
يعرض قائمة بخطط التشفير المتوافقة
لمثيل AIDL DRM HAL. يحدِّد هذا التسلسل ما إذا كان بإمكان مصنع المكوّنات الإضافية إنشاء
مكوّنات إضافية لإدارة الحقوق الرقمية تتوافق مع مخطّط تشفير معيّن، والذي يتم تحديده باستخدام معرّف UUID:
::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);
تحدّد هذه التسلسلات ما إذا كان بإمكان مصنع المكونات الإضافية إنشاء مكونات إضافية لإدارة الحقوق الرقمية متوافقة مع
تنسيق حاوية وسائط معيّن يحدّده mimeType
:
::ndk::ScopedAStatus isContentTypeSupported(const std::string& in_mimeType, bool* _aidl_return);
تُنشئ هذه التسلسلية مكوّنًا إضافيًا لإدارة الحقوق الرقمية لنظام التشفير المحدّد بالمعرّف الفريد العالمي (UUID):
::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);
فئة CryptoFactory
تبحث فئة CryptoHal
عن خدمات المكوّنات الإضافية المسجّلة لإدارة الحقوق الرقمية وتُنشئ
المكوّنات الإضافية المقابلة التي تتوافق مع مخطّط تشفير معيّن من خلال فئةCryptoFactory
.
يحدِّد هذا التسلسل ما إذا كان بإمكان مصنع التشفير إنشاء مكوّنات إضافية لتشفير تتوافق مع مخطّط تشفير معيّن، والذي يتم تحديده باستخدام معرّف UUID:
::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);
واجهات برمجة تطبيقات مكوّنات DRM الإضافية
يتمّ تحديد واجهات برمجة التطبيقات فيhardware/interfaces/drm/aidl/aidl_api/android.hardware.drm/
VERSION/android/hardware/drm/IDrmPlugin.aidl
. يمكن العثور على ملف
IDrmPlugin.h
المقابل في out/Soong
بعد عملية الإنشاء.