يقدّم هذا المستند نظرة عامة على إطار عمل إدارة الحقوق الرقمية (DRM) لنظام التشغيل Android ويستعرض الواجهات التي يجب أن ينفذها المكوّن الإضافي لإدارة الحقوق الرقمية. لا يصف هذا المستند قواعد الصلابة أو قواعد الامتثال التي يمكن أن تحدّدها إحدى منصّات إدارة الحقوق الرقمية.
إطار العمل
توفّر منصة Android إطار عمل قابل للتوسيع لإدارة الحقوق الرقمية يتيح للتطبيقات إدارة المحتوى المحمي بموجب حقوق الطبع والنشر وفقًا لقيود الترخيص المرتبطة بالمحتوى. يتيح إطار عمل إدارة الحقوق الرقمية العديد من خطط إدارة الحقوق الرقمية، ويعود إلى الشركة المصنّعة للجهاز تحديد خطط إدارة الحقوق الرقمية التي يتيحها الجهاز. يوفر إطار عمل إدارة الحقوق الرقمية واجهة موحدة لمطوّري التطبيقات ويخفي تعقيد عمليات إدارة الحقوق الرقمية. يقدّم إطار عمل إدارة الحقوق الرقمية وضع تشغيل متسقًا للمحتوى المحمي وغير المحمي. يمكن أن تحدد مخططات إدارة الحقوق الرقمية نماذج استخدام معقدة من خلال البيانات الوصفية للترخيص. يقدّم إطار عمل إدارة الحقوق الرقمية العلاقة بين المحتوى الخاضع لإدارة الحقوق الرقمية والترخيص، ويتولى إدارة الحقوق. يتيح ذلك فصل مشغّل الوسائط عن المحتوى المحمي بموجب إدارة الحقوق الرقمية أو غير المحمي. راجِع MediaDrm للحصول على مفاتيح لفك تشفير أحداث بث الوسائط المحمية.
إنّ توفّر محتوى رقمي غني مهم للمستخدمين على الأجهزة الجوّالة. لجعل المحتوى متاحًا على نطاق واسع، يحتاج مطوّرو تطبيقات Android و ناشرو المحتوى الرقمي إلى تنفيذ إدارة الحقوق الرقمية بشكلٍ متسق ومتوافق مع المنظومة المتكاملة لنظام Android. لإتاحة هذا المحتوى الرقمي على أجهزة Android و ضمان توفّر نظام إدارة حقوق رقمية واحد على الأقل على جميع الأجهزة، تقدّم Google نظام إدارة حقوق رقمية بدون رسوم ترخيص على أجهزة Android المتوافقة. يتم دمج المكوّن الإضافي لإدارة الحقوق الرقمية مع إطار عمل إدارة الحقوق الرقمية في Android، ويمكنه استخدام الحماية المستندة إلى الأجهزة لتأمين المحتوى المدفوع ومعلومات اعتماد المستخدمين.
تعتمد حماية المحتوى التي يوفّرها مكوّن DRM الإضافي على إمكانات الأمان وحماية المحتوى في النظام الأساسي للأجهزة. ويجب أن تشتمل إمكانات الجهاز في الجهاز على تمهيد آمن للأجهزة لإنشاء سلسلة من الثقة والأمان وحماية مفاتيح التشفير. يجب أن تتضمّن إمكانات حماية المحتوى في الجهاز حماية اللقطات التي تم فك تشفيرها في الجهاز وحماية المحتوى من خلال آلية حماية موثوق بها للإخراج. لا تدعم كل الأنظمة الأساسية للأجهزة كل ميزات الأمان وحماية المحتوى المذكورة أعلاه. لا يتم تنفيذ الأمان مطلقًا في مكان واحد في الحزمة، بل يعتمد بدلاً من ذلك على دمج الأجهزة والبرامج والخدمات. لضمان توفير جهاز آمن، من الضروري الجمع بين وظائف أمان الأجهزة وآلية تشغيل موثوق بها ونظام تشغيل آمن ومنعزل للتعامل مع وظائف الأمان.
هندسة معمارية
تم تصميم إطار عمل إدارة الحقوق الرقمية ليكون مستقلاً عن التنفيذ ويطرح تفاصيل تنفيذ مخطط إدارة الحقوق الرقمية المحدّد في أحد الإضافات الخاصة بمخطط إدارة الحقوق الرقمية. يشتمل إطار عمل إدارة الحقوق الرقمية على واجهات برمجة تطبيقات بسيطة لمعالجة عمليات إدارة الحقوق المعقدة، والحصول على التراخيص، وتوفير الأجهزة، وربط محتوى إدارة الحقوق الرقمية وترخيصه، وأخيرًا فك تشفير محتوى إدارة الحقوق الرقمية.
يتم تنفيذ إطار عمل إدارة الحقوق الرقمية (DRM) في طبقتَين معماريتَين:
- واجهة برمجة تطبيقات إطار عمل إدارة الحقوق الرقمية، والتي يتم الكشف عنها للتطبيقات من خلال إطار عمل تطبيقات Android
- إطار عمل إدارة الحقوق الرقمية (DRM) للرمز البرمجي الأصلي، الذي يعرِض واجهة لمكونات DRM الملحقة (العوامل) لإدارة الحقوق وفك التشفير لمختلف مخططات إدارة الحقوق الرقمية
يمكنك الاطّلاع على Android Media DRM و Android Media Crypto للحصول على مزيد من التفاصيل.
مكونات إدارة الحقوق الرقمية الإضافية
عند بدء تشغيل النظام، يفحص إطار عمل إدارة الحقوق الرقمية (DRM) مثيلات/خدمات HAL (الموضّحة في ملفات .rc
)
ويتم اكتشاف المكوّنات الإضافية. ينشئ خادم إدارة الحقوق الرقمية للوسائط (mediadrmserver
) كلاً من كائنَي CryptoHal
وDrmHal
.
بعد ذلك، يُطلِب CryptoHal
وDrmHal
من المكوّنات الإضافية تنفيذات خاصة بالمورّد.
يجب أن تنفِّذ المكوّنات الإضافية طبقة تجريد الأجهزة (HALs) مجمَّعة. تستخدِم واجهات HAL المُجمَّعة باستخدام Binder لغة تعريف واجهة Android (AIDL)، مما يسمح باستبدال إطار العمل بدون الحاجة إلى إعادة إنشاء واجهات HAL.
ينشئ المورّدون أو صانعو المنظومة على الرقاقة (SOC) المكونات الإضافية ويضعونها في قسم /vendor
على
الجهاز. يجب أن تكون جميع الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث متوافقة مع واجهات برمجة التطبيقات لHAL المُجمَّعة المكتوبة
بلغة AIDL.
التنفيذ
يجب أن يستخدم إصدار حِزم Google Mobile Services (GMS) وAOSP لنظام التشغيل Android 13 واجهة 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>
STABLE AIDL VERSION هو رقم إصدار كل إصدار من واجهة برمجة التطبيقات 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 لمعرفة التفاصيل.
تنفيذ المكوّن الإضافي
- نفِّذ نقطة الدخول
main()
فيservice.cpp
من ملف plugin service. - نفِّذ
ICryptoPlugin
وIDrmPlugin
ICryptoFactory
وIDrmFactory
. - نفِّذ واجهات برمجة التطبيقات الجديدة في المكوّن الإضافي.
تفاصيل المكوّن الإضافي لإدارة الحقوق الرقمية
يستخدم موردو المكوّنات الإضافية لإدارة الحقوق الرقمية المكوّن الإضافي DrmFactory
وCryptoFactory
والمكون الإضافي لإدارة الحقوق الرقمية.
مصنع درم
تبحث فئة DrmHal
عن خدمات المكوّنات الإضافية المسجّلة لإدارة الحقوق الرقمية وتُنشئ
المكوّنات الإضافية المقابلة التي تتوافق مع مخطّط تشفير معيّن من خلال فئةDrmFactory
.
IDrmFactory هي نقطة الدخول الرئيسية للتفاعل مع HAL لنظام إدارة الحقوق الرقمية (DRM) الخاص بالمورّد من خلال واجهة برمجة التطبيقات createPlugin API. تُستخدَم واجهة برمجة التطبيقات createPlugin لإنشاء نُسخ من IDrmPlugin.
::ndk::ScopedAStatus getSupportedCryptoSchemes( std::vector<::aidl::android::hardware::drm::Uuid>* _aidl_return);
يعرض getSupportedCryptoSchemes قائمة بخطط التشفير المتوافقة لمثيل 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);
لتحديد ما إذا كان مصنع المكوّنات الإضافية قادرًا على إنشاء مكوّنات إضافية لإدارة الحقوق الرقمية تتوافق مع مخطّط تشفير معيّن، يتم تحديده باستخدام معرّف 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).
CryptoFactory
تبحث الفئة CryptoHal
عن خدمات المكوّنات الإضافية المسجَّلة لإدارة الحقوق الرقمية (DRM) وتنشئ مكوّنات إضافية متوافقة تتيح استخدام نظام تشفير معيّن من خلال الفئة 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.
واجهات برمجة تطبيقات مكوّنات DRM الإضافية
يتمّ تحديد واجهات برمجة التطبيقات فيhardware/interfaces/drm/aidl/aidl_api/android.hardware.drm/
VERSION/android/hardware/drm/IDrmPlugin.aidl
. يمكن العثور على ملف
IDrmPlugin.h
المقابل في out/Soong بعد عملية الإنشاء.