يقدّم إطار عمل أنظمة الوصول المشروط للوسائط (Media CAS) واجهات برمجة تطبيقات قياسية لتشغيل خدمات الوصول المشروط (CA) على مجموعة من أجهزة التلفزيون الرقمي، بما في ذلك أنظمة الكابل الرقمي والأنظمة الأرضية والأنظمة الفضائية وأنظمة IPTV. يعمل الإطار مع إطار عمل إدخال Android TV وإطار عمل أداة استقبال Android TV، لتوفير واجهات برمجة تطبيقات Java التي يتمّ استدعاؤها من تطبيق "خدمة إدخال التلفزيون" (TIS).
في ما يلي الأهداف الرئيسية لـ Media CAS:
- توفير واجهة برمجة تطبيقات Java عامة وإطار عمل مكوّنات إضافية أصلية يمكن استخدامه من قِبل المطوّرين التابعين لجهات خارجية والمصنّعين الأصليّين للأجهزة لتفعيل ميزة إدارة الحقوق الرقمية للبث التلفزيوني في Android
- توفير إطار عمل لخدمات إدارة المحتوى (CAS) ضمن Android يتيح لمصنّعي المعدّات الأصلية للأجهزة التلفزيونية (ATV) التفاعل مع مجموعة متنوعة من مورّدي خدمات إدارة المحتوى (CAS) بطريقة متّسقة
- إتاحة استخدام مزوّدي خدمة إدارة الهوية وإمكانية الوصول (CAS) المتعدّدين التابعين لجهات خارجية باستخدام المكوّنات الإضافية الأصلية قد تستخدِم مكوّنات CAS الإضافية بروتوكولات الشبكة الخاصة بالمورّد وتنسيقات رسائل إدارة الإذن (EMM)/رسائل التحكّم في الإذن (ECM) وبرامج فك التشفير.
- إتاحة الأمان على مستوى الأجهزة، مثل أنظمة إدارة مفاتيح التشفير
- أن تتيح بيئة تنفيذ موثوقة، مثل TrustZone
الإعدادات المتوافقة
ضبط موالف الأجهزة
إذا كانت الأجهزة مسؤولة عن فك ترميز بث MPEG ونقله، يقدّم إطار عمل Tuner بيانات PSI (معلومات خاصة ببرنامج الوصول المشروط) إلى تطبيق TIS من أجل التفاعل مع أجهزة ضبط القنوات التلفزيونية المستندة إلى الأجهزة.
تشمل بيانات 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). إذا كان التطبيق يستخدِم إطار عمل MediaExtractor، يمكنه تفويض إدارة جلسة CAS، مثل فتح جلسة ومعالجة EMM/ECM، إلى إطار العمل MediaExtractor. بعد ذلك، يضبط MediaExtractor جلسة CAS باستخدام واجهة برمجة التطبيقات المضمّنة مباشرةً.
بخلاف ذلك، يتحمّل التطبيق مسؤولية استخراج بيانات PSI ذات الصلة بإدارة الحقوق الرقمية و ضبط جلسة إدارة الخدمات الموحّدة للمحتوى باستخدام واجهات برمجة تطبيقات Java لنظام إدارة الخدمات الموحّدة للمحتوى (Media CAS) (على سبيل المثال، عندما يستخدم التطبيق برنامج تحليل MPEG2-TS الخاص به).
الشكل 2: إعداد إدخال IPTV وCAS وجهاز فك التشفير باستخدام إطار العمل MediaExtractor
في سيناريو أداة استخراج البرامج، تتطلّب أداة الاستخراج عنصرًا لفك التشويش يستند إلى البرامج أو الأجهزة لكل مقطع صوتي مشوَّش، بغض النظر عمّا إذا كان المقطع الصوتي يتطلّب برامج فك تشفير آمنة. ويعود ذلك إلى السبب التالي.
- إذا لم تكن الأغنية تتطلّب فك ترميز آمنًا، يزيل المستخرج التشويش عن
وحدة الوصول لمحو ذاكرات التخزين المؤقت ويستخرج العيّنات كما لو كانت من مجرى
بث واضح. بهذه الطريقة، لا يحتاج
MediaCodec
إلى المشاركة في عملية فك التشويش. إذا كانت الأغنية تتطلّب فك ترميز آمنًا، قد يحتاج المستخرج إلى أداة فك تشفير. ويحدث ذلك عندما يتم تشويش بث النقل على مستوى حزمة النقل، حيث يتم تشويش عنوان بث المحتوى الأساسي المُعبَّأ (PES). يجب أن يصل المستخرج إلى عنوان PES لإرسال معلومات معيّنة إلى مسار الإرسال (على سبيل المثال، الطابع الزمني لعرض).
لا يستخدم المستخرج أداة فك التشويش إذا كان بث النقل مشوَّشًا على مستوى حزمة PES، حيث يتم ترك رأس PES واضحًا. ومع ذلك، لا يمكن تأكيد وقت تشويش المحتوى إلى أن تصل الحزمة المشوشة فعليًا. للتبسيط، نفترض أنّه يتم استخدام جهاز فك التشويش إذا تبيّن أنّ المقطع الصوتي مشفَّر استنادًا إلى جدول ربط البرامج (PMT).
قيود ضبط البرامج
عندما يتطلب المقطع الصوتي فك ترميز آمنًا، يجب أن يكون مفكّك التشويش حذيفًا عند السماح لعملية فك تشويش بالوصول إلى ملف تخزين مؤقت شفّاف. بما أنّ فك ترميز الصوت غير الآمن مطلوب، إذا كان فك ترميز الفيديو يتطلّب برامج فك ترميز آمنة، يجب تشويشه في جلسة مختلفة عن الجلسة التي يتم فيها تشويش الصوت. يجب أن يُرسِل تنسيق ECM للجلسة إشارة إلى المكوّن الإضافي بأنّه يجب استخدام وحدة فك ترميز آمنة.
بدلاً من ذلك، يجب أن يتمكّن المكوّن الإضافي من ربط مفتاح بسياسة الأمان بشكل موثوق. بخلاف ذلك، يمكن للتطبيق الحصول بسهولة على إطارات الفيديو باستخدام أداة فك تشفير الصوت.
حتى عندما تتطلّب الجلسة وحدة فك ترميز آمنة، قد يُطلب منها إخراج كمية صغيرة من البيانات لمحو ذاكرة التخزين المؤقت من قِبل المستخرج لمعالجة عنوان PES. لمنع تطبيق ضار من جعل المكوّن الإضافي يعرض وحدة الوصول بالكامل، يجب أن يفكّك المكوّن الإضافي الحمولة النقلية لضمان أن تبدأ الحمولة برأس PES لنوع البث المناسب. بخلاف ذلك، من المفترض أن يرفض المكوّن الإضافي الطلب.
تسلسل ضبط إعدادات هيئة إصدار الشهادات
عند ضبط القناة على قناة جديدة، تسجّل وحدة TIS لتلقّي وصفي CA وECM وEMM من إطار عمل PSI Tuner. يحتوي وصف هيئة إصدار الشهادات على معرّف نظام هيئة إصدار الشهادات، الذي يحدّد بشكل فريد مورِّدًا معيّنًا لهيئة إصدار الشهادات وبيانات أخرى خاصة بالمورِّد. يُجري TIS طلب بحث في Media CAS لتحديد ما إذا كان هناك مكوّن إضافي لـ CAS يمكنه معالجة واصف مرجع التصديق.
الشكل 3: ضبط محتوى CAS
إذا كان معرّف نظام مرجع التصديق متوافقًا، يتم إنشاء مثيل لـ Media CAS وتقديم البيانات الخاصة بالمورّد من وصف مرجع التصديق إلى المكوّن الإضافي. بعد ذلك، يتم فتح جلسات جديدة في Media CAS لمعالجة بثّي الصوت والفيديو. تتلقّى الجلسات التي تم فتحها حديثًا عناصر إدارة المحتوى الإلكتروني (ECM) وإدارة الخدمات الجوّالة للمؤسسات (EMM) للمكوّن الإضافي.
مثال على مسار المكوّن الإضافي لخدمات المصادقة في جامعة شيكاغو
تُرسِل TIS عناصر إدارة المحتوى إلى المكوّن الإضافي لخدمات إدارة المحتوى (CAS) باستخدام واجهات برمجة تطبيقات Media CAS API. يحتوي ECM
على كلمة التحكّم المشفَّرة، والتي يجب فك تشفيرها
باستخدام معلومات من إدارة الخدمات الجوّالة للمؤسسات (EMM). يحدِّد المكوّن الإضافي لخدمات إدارة المحتوى (CAS) كيفية الحصول على
إدارة الخدمات الجوّالة للمؤسسات (EMM) لمادة العرض استنادًا إلى المعلومات الخاصة بالمورّد في وصف
إدارة المحتوى (CA)، والتي تقدّمها طريقة setPrivateData()
.
قد يتم عرض خدمات إدارة الخدمات الجوّالة (EMM) أثناء عرض المحتوى أو خارج نطاق العرض باستخدام
طلب شبكة بدأه مكوّن CA الإضافي. يستخدم TIS طريقة processEMM()
لإرسال أي خدمات إدارة خدمات جوّالة للمؤسسات (EMM) ضمن النطاق إلى المكوّن الإضافي لمرجع التصديق.
إذا كان طلب الشبكة مطلوبًا للحصول على إدارة الخدمات الجوّالة للمؤسسات (EMM)، يكون المكوّن الإضافي لمرجع التصديق هو المسؤول عن تنفيذ معاملة الشبكة مع خادم الترخيص.
الشكل 4: مثال على مكوّن إضافي لخدمات إدارة الهوية وإمكانية الوصول (CAS) لمعالجة إدارة الخدمات الجوّالة للمؤسسات (EMM) وإدارة المحتوى الإلكتروني (ECM)
عند تلقّي رسالة إدارة الخدمات الجوّالة (EMM)، يحلّل مكوّن CA الإضافي الرسالة للحصول على المفتاح المشفَّر لفك تشفير كلمة التحكّم. قد يتم تحميل مفتاح EMM المشفَّر وكلمة التحكّم المشفَّرة في سلم مفاتيح أو بيئة موثوق بها لتنفيذ فك تشفير كلمة التحكّم وإزالة التشويش عن بث المحتوى بعد ذلك.
واجهة برمجة التطبيقات Media CAS Java API
تحتوي Media CAS Java API على الطرق التالية.
عرض قائمة بجميع مكوّنات 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. يمكن أن تأتي البيانات الخاصة من وصف مرجع التصديق أو جدول الوصول المشروط أو من مصادر خارج النطاق. ولا يرتبط ذلك بجلسة معيّنة.
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();
أرسِل حدث جلسة إلى نظام CA. تنسيق الحدث خاص بالمخطّط وغير واضح للإطار.
void Session#sendSessionEvent(int event, int arg, @Nullable byte[] data);