يوفّر إطار عمل أنظمة الوصول المشروط للوسائط (Media CAS) واجهات برمجة تطبيقات قياسية لتفعيل خدمات الوصول المشروط (CA) على مجموعة من أجهزة التلفزيون الرقمي، بما في ذلك الكابلات الرقمية والأقمار الصناعية والأنظمة الأرضية وأنظمة IPTV. ويعمل هذا الإطار مع إطار عمل إدخال Android TV وإطار عمل Android TV Tuner مع توفير واجهات برمجة تطبيقات Java التي تم استدعاؤها من تطبيق "خدمة إدخال التلفزيون" (TIS).
في ما يلي الأهداف الرئيسية لـ Media CAS:
- توفير Java API علنية وإطار عمل مكوّنات إضافية أصلية يمكن استخدامه من قِبل المطوّرين الخارجيين والمصنّعين الأصليين للأجهزة لتفعيل ميزة إدارة الحقوق الرقمية للبث التلفزيوني في Android
- توفير إطار عمل CAS في Android يتيح للمصنّعين الأصليين للأجهزة المتوافقة مع ATV إمكانية العمل مع مجموعة متنوعة من موردي CAS بطريقة متسقة.
- دعم العديد من مورّدي خدمات CAS التابعين لجهات خارجية باستخدام المكوّنات الإضافية الأصلية. قد تستخدم المكوّنات الإضافية لخدمات CAS بروتوكولات الشبكة الخاصة بالمورّد وتنسيقات رسائل إدارة الاستحقاق (EMM)/رسائل التحكّم في الاستحقاق (ECM) وأدوات فك ترميز المحتوى.
- أن تتيح أمان الأجهزة، مثل سلالم المفاتيح
- دعم بيئات التنفيذ الموثوق بها (TEEs)، مثل TrustZone.
الإعدادات المتاحة
ضبط موالف الأجهزة
إذا كان الجهاز مسؤولاً عن فك تعدد إرسال بث نقل بيانات MPEG وفك ترميزه، يوفر إطار عمل التوليف بيانات الوصول المشروط إلى معلومات البرنامج (PSI) للتوافق مع موالف التلفزيون المستند إلى الأجهزة.
تشمل بيانات PSI للوصول المشروط أوصاف CA وECM وEMM. تتيح هذه التركيبات للمكوّن الإضافي CAS الحصول على المفاتيح اللازمة لفك تشفير عمليات بث المحتوى.
الشكل 1: إعداد أداة ضبط الأجهزة
قد تحتوي إعدادات الأجهزة على طبقة TEE، مثل TrustZone، كما هو موضّح في الشكل 1. في حال عدم توفّر طبقة TEE، يمكن لمكوّن إضافي لعملاء CAS التفاعل مع خدمات تسلسل مفاتيح التشفير للأجهزة التي يوفّرها النظام الأساسي. بسبب الاختلافات الخاصة بالمورّد في هذه الواجهات، لا تُطبّق Media CAS معيارًا لها.
ضبط البرنامج
قبل الإصدار 11 من نظام Android، كان لا يزال بإمكانك استخدام إطار عمل Media CAS لمعالجة المحتوى المستنِد إلى البرامج، مثل IPTV من IP البث المتعدد/البث المباشر إلى مستخدم واحد. يتحمّل تطبيق TIS مسؤولية إنشاء مثيل لعنصر Java في Media CAS و إعداده بشكل صحيح.
قد يستخدم التطبيق MediaExtractor أو أدوات تحليل أخرى لتنسيق MPEG2-TS لاستخراج بيانات PSI ذات الصلة بإدارة الحقوق الرقمية (CA)، مثل أوصاف إدارة الحقوق الرقمية ورسائل التحكّم في النسخ (ECM) ورسائل التحكّم في البث (EMM). إذا كان التطبيق يستخدم إطار العمل Mediasnippetor، يمكنه تفويض إدارة جلسة CAS، مثل فتح جلسة ومعالجة إدارة الخدمات الجوّالة للمؤسسات (EMM) أو ECM، إلى إطار العمل Mediaأداةor. بعد ذلك، يضبط MediaExtractor جلسة إدارة الحقوق الرقمية باستخدام واجهة برمجة التطبيقات المضمّنة مباشرةً.
بخلاف ذلك، يتحمّل التطبيق مسؤولية استخراج بيانات PSI ذات الصلة بإدارة الحقوق الرقمية و ضبط جلسة إدارة الخدمات الموحّدة للمحتوى باستخدام واجهات برمجة تطبيقات Java لنظام إدارة الخدمات الموحّدة للمحتوى (Media CAS) (على سبيل المثال، عندما يستخدم التطبيق برنامج تحليل MPEG2-TS الخاص به).
الشكل 2: تهيئة إدخال IPTV وبرنامج CAS وفك ترميز المحتوى باستخدام إطار عمل Media تعليق
في عملية استخراج البرامج، تتطلّب أداة الاستخراج برنامجًا أو كائنًا أداة فك ترميز المحتوى المستنِد إلى الأجهزة لكل مسار مشفَّر، بغض النظر عمّا إذا كان المسار يستدعي برامج فك ترميز آمنة. ويعود ذلك إلى السبب التالي.
- إذا كان المسار لا يتطلب فك تشفير آمن، تعمل أداة الاستخراج على فك ترميز وحدة الوصول لإزالة الموارد الاحتياطية واستخراج العينات كما لو كانت من تدفق واضح. بهذه الطريقة، لن يحتاج
MediaCodec
إلى المشاركة في عملية الترميز. إذا كانت الأغنية تتطلّب فك ترميز آمنًا، قد يحتاج المستخرج إلى أداة فك تشفير. ويحدث ذلك عندما يتم تشويش بث النقل على مستوى حزمة النقل، حيث يتم تشويش عنوان بث المحتوى الأساسي المُعبَّأ (PES). وتحتاج أداة الاستخراج إلى الوصول إلى عنوان مؤتمر خبراء المنتجات لمعالجة بعض المعلومات (على سبيل المثال، الطابع الزمني للعرض التقديمي).
لا تستخدم أداة فك ترميز المحتوى أداة فك الترميز إذا كان مصدر بيانات عملية النقل مشفَّرًا على مستوى حزمة PES، حيث يتم ترك عنوان PES واضحًا. وتجدر الإشارة إلى أنه ليس من الممكن تأكيد وقت حدوث خلط الأوراق حتى يصل الحزمة المشفَّرة الفعلية. للتبسيط، افترض أنه سيتم استخدام أداة فك ترميز المسار إذا تم تحديد أن المسار مشفَّر بناءً على جدول تعيين البرنامج (PMT).
قيود ضبط البرامج
عندما يتطلّب المقطع الصوتي فك ترميز آمنًا، يجب أن يكون جهاز فك التشويش حذيفًا عند السماح لعملية فك التشويش بالوصول إلى ملف تخزين مؤقت شفّاف. نظرًا لأن فك ترميز الصوت غير الآمن مطلوب، إذا كان فك ترميز الفيديو يتطلب برامج فك ترميز آمنة، يجب تشفيره في جلسة مختلفة عن الصوت. يجب أن يُرسِل عنصر التحكّم في إدارة الحقوق (ECM) للجلسة إشارة إلى المكوّن الإضافي بأنّه يجب استخدام وحدة فك ترميز آمنة.
بدلاً من ذلك، يجب أن يتمكن المكوّن الإضافي من ربط مفتاح بسياسة الأمان بشكل موثوق. بخلاف ذلك، يمكن للتطبيق الحصول بسهولة على إطارات الفيديو باستخدام أداة فك تشويش الصوت.
حتى عندما تتطلّب الجلسة وحدة فك ترميز آمنة، قد يُطلب منها إخراج كمية صغيرة من البيانات لمحو ذاكرة التخزين المؤقت من قِبل المستخرج لمعالجة عنوان PES. ولمنع تطبيق ضار من أن يعيد المكوّن الإضافي وحدة الوصول بالكامل، يحتاج المكوّن الإضافي إلى تحليل حمولة النقل للتأكّد من بدء الحمولة بعنوان PES لنوع البث المناسب. بخلاف ذلك، من المفترض أن يرفض المكوّن الإضافي الطلب.
تسلسل ضبط إعدادات CA
عند ضبط الإعدادات لتشغيل قناة جديدة، تسجّل وحدة TIS لتلقّي وصفي CA وECM وEMM من إطار عمل PSI Tuner. يحتوي واصف هيئة إصدار الشهادات (CA) على معرّف نظام CA، الذي يعرّف بشكل فريد مورّد هيئة إصدار الشهادات (CA) المحدد والبيانات الأخرى الخاصة بالمورّد. يستعلم TIS من CAS للوسائط لتحديد ما إذا كان هناك مكون إضافي لـ CAS يمكنه التعامل مع واصف CA.
الشكل 3. ضبط محتوى CAS
إذا كان معرّف نظام مرجع التصديق متوافقًا، يتم إنشاء مثيل لـ Media CAS وتقديم البيانات الخاصة بالمورّد من وصف مرجع التصديق إلى المكوّن الإضافي. بعد ذلك، يتم فتح جلسات جديدة في Media CAS للتعامل مع عمليات بث الصوت والفيديو. ستتلقّى الجلسات التي تم فتحها حديثًا "إدارة الشؤون التجارية والعقود" و"إدارة الخدمات الجوّالة للمؤسسات" للمكوّن الإضافي.
نموذج تدفق المكوّن الإضافي CAS
توفّر منصة TIS إطارات إدارة الشؤون التجارية والعقود (ECM) إلى المكوّن الإضافي CAS باستخدام واجهات برمجة تطبيقات Media CAS. يحتوي ملف ECM
على كلمة التحكّم المشفَّرة، والتي يجب فك تشفيرها
باستخدام معلومات من إدارة الخدمات الجوّالة للمؤسسات (EMM). يحدد المكوّن الإضافي CAS كيفية الحصول على إدارة الخدمات الجوّالة للمؤسسات (EMM) لمادة العرض استنادًا إلى المعلومات الخاصة بالمورّد في أداة وصف مرجع التصديق، والتي يتم توفيرها من خلال طريقة setPrivateData()
.
قد يتم عرض خدمات إدارة الخدمات الجوّالة (EMM) أثناء عرض المحتوى أو خارج نطاق العرض باستخدام
طلب شبكة بدأه مكوّن CA الإضافي. يستخدم TIS طريقة processEMM()
لإرسال أي خدمات إدارة خدمات جوّالة للمؤسسات (EMM) ضمن النطاق إلى المكوّن الإضافي لمرجع التصديق.
إذا كان طلب الشبكة مطلوبًا للحصول على خدمة إدارة الخدمات الجوّالة للمؤسسات (EMM)، يكون المكوّن الإضافي لمصدر الشهادة مسؤولاً عن تنفيذ معاملة الشبكة مع خادم ترخيص.
الشكل 4: مثال على مكوّن إضافي لخدمات إدارة الهوية وإمكانية الوصول (CAS) لمعالجة إدارة الخدمات الجوّالة للمؤسسات (EMM) وإدارة المحتوى الإلكتروني (ECM)
عند استلام إدارة الخدمات الجوّالة للمؤسسات (EMM)، يحلّلها المكوّن الإضافي لمصدر الشهادة للحصول على المفتاح المشفر لفك تشفير كلمة التحكم. قد يتم تحميل مفتاح إدارة الخدمات الجوّالة للمؤسسات (EMM) المشفّر وكلمة التحكم المشفَّرة في سلم رئيسي أو بيئة موثوق بها لإجراء فك تشفير كلمة التحكّم ووصف بث المحتوى لاحقًا.
Media CAS Java API
تحتوي واجهة برمجة تطبيقات Java Media CAS على الطرق التالية.
اسرد جميع المكونات الإضافية المتاحة لهيئة إصدار الشهادات (CA) على الجهاز.
class MediaCas.PluginDescriptor { public String getName(); public int getSystemId(); } static PluginDescriptor[] enumeratePlugins();
إنشاء مثيل Media CAS لنظام مرجع تصديق محدد وهذا يعني أنّه يمكن لإطار عمل Media CAS التعامل مع أنظمة CAS متعددة في الوقت نفسه.
MediaCas(int CA_system_id); MediaCas(@NonNull Context context, int casSystemId, @Nullable String tvInputServiceSessionId, @PriorityHintUseCaseType int priorityHint);
سجِّل مستمع أحداث واسمح للتطبيق بتحديد معالِج يتم استخدام ملفه الدائري.
interface MediaCas.EventListener { void onEvent(MediaCas, int event, int arg, byte[] data); void onSessionEvent(@NonNull MediaCas mediaCas, @NonNull Session session, int event, int arg, @Nullable byte[] data); void onPluginStatusUpdate(@NonNull MediaCas mediaCas, @PluginStatus int status, int arg); void onResourceLost(@NonNull MediaCas mediaCas); } void setEventListener(MediaCas.EventListener listener, Handler handler);
أرسِل البيانات الخاصة لنظام CA. يمكن أن تأتي البيانات الخاصة من واصف CA أو جدول الوصول المشروط أو من مصادر النطاق. ولا يرتبط ذلك بجلسة معيّنة.
void setPrivateData(@NonNull byte[] data);
معالجة حزمة إدارة الخدمات الجوّالة للمؤسسات (EMM)
void processEmm(@NonNull byte[] data, int offset, int length);
أرسِل حدثًا إلى نظام CA. يرتبط تنسيق الحدث بالمخطط وغير مضمون لإطار العمل.
void sendEvent(int event, int arg, @Nullable byte[] data);
ابدأ عملية توفير من النوع المحدَّد لنظام CA. عندما يشترك جهاز في خدمة تلفزيون مدفوع لأول مرة، يجب أولاً إدارته على خادم إدارة الخدمات (CAS). تقديم مجموعة من المَعلمات ذات الصلة بالجهاز لإعداده
void provision(String provisionString);
إعادة تحميل الأذونات عندما يشترك مستخدم في قناة جديدة (على سبيل المثال، من خلال الردّ على إعلان أو إضافة قناة في دليل البرامج الإلكتروني (EPG))، يجب أن يتمكّن التطبيق من إرسال إشعار إلى عملاء CA لإعادة تحميل مفاتيح الأذونات.
void refreshEntitlements(int refreshType);
أغلِق كائن Media CAS.
void close();
افتح جلسة.
Session openSession(); Session openSession(@SessionUsage int sessionUsage, @ScramblingMode int scramblingMode);
إغلاق جلسة تم فتحها سابقًا.
void Session#close();
قدِّم البيانات الخاصة لوحدة التحكّم في الوصول (CA) من وصف وحدة التحكّم في الوصول في جدول البرامج (PMT)، والذي يمكن أن يكون من قسم معلومات البرنامج أو قسم معلومات ES، إلى جلسة إدارة الخدمات (CAS).
void Session#setPrivateData(@NonNull byte[] sessionId, @NonNull byte[] data);
معالجة حزمة ECM لجلسة
void Session#processEcm(@NonNull byte[] data, int offset, int length);
الحصول على معرّف الجلسة
byte[] Session#getSessionId();
إرسال حدث جلسة إلى نظام مرجع تصديق يكون تنسيق الحدث خاصًا بالمخطط وغير شفاف على إطار العمل.
void Session#sendSessionEvent(int event, int arg, @Nullable byte[] data);