إطار عمل CAS

يوفّر إطار عمل أنظمة الوصول المشروط إلى الوسائط (Media CAS) واجهات برمجة تطبيقات (API) عادية تتيح خدمات الوصول المشروط (CA) على مجموعة من أجهزة التلفزيون الرقمي، بما في ذلك أنظمة الكابل الرقمي والأقمار الصناعية والأنظمة الأرضية وأنظمة IPTV. يتوافق إطار العمل مع إطار عمل Android TV Input وإطار عمل Android TV Tuner، ما يوفّر واجهات برمجة تطبيقات Java يتم استدعاؤها من تطبيق TV Input Service (TIS).

في ما يلي الأهداف الرئيسية لنظام Media CAS.

  • توفير واجهة برمجة تطبيقات Java عامة وإطار عمل إضافي أصلي يمكن للمطوّرين التابعين لجهات خارجية ومصنّعي المعدات الأصلية استخدامهما لتوفير نظام CAS للتلفزيون المباشر على Android
  • توفير إطار عمل لنظام CAS ضمن Android يتيح لمصنّعي أجهزة ATV الأصليين إمكانية التشغيل التفاعلي مع مجموعة متنوعة من مورّدي نظام CAS بطريقة متسقة
  • إتاحة استخدام العديد من مورّدي CAS التابعين لجهات خارجية من خلال مكوّنات إضافية أصلية قد تستخدم مكوّنات CAS الإضافية بروتوكولات شبكة خاصة بمورّد معيّن، وتنسيقات رسائل إدارة الحقوق (EMM) أو رسائل التحكّم في الحقوق (ECM)، وأجهزة فك التشفير.
  • إتاحة استخدام أجهزة الأمان، مثل سلالم المفاتيح
  • توفير بيئات تنفيذ موثوقة (TEE) مثل TrustZone

الإعدادات المتوافقة

إعداد موالف الأجهزة

إذا كان الجهاز مسؤولاً عن إزالة تداخل تدفق نقل MPEG وفك تشفيره، يوفّر إطار عمل Tuner بيانات معلومات الخدمة الخاصة بالبرنامج (PSI) الخاصة بالوصول المشروط إلى تطبيق TIS من أجل التوافق مع أجهزة استقبال التلفزيون المستندة إلى الأجهزة.

تتضمّن بيانات PSI للوصول المشروط واصفات الوصول المشروط، ووحدات التحكّم في التشفير (ECM)، ووحدات إدارة الحقوق الرقمية (EMM). تتيح هذه البُنى لبرنامج CAS الإضافي الحصول على المفاتيح اللازمة لفك تشفير بث المحتوى.

مخطّط لإعدادات جهاز التوليف.

الشكل 1. إعداد موالف الأجهزة

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

إعدادات البرامج

قبل الإصدار 11 من نظام التشغيل Android، كان بإمكان إطار عمل Media CAS معالجة المحتوى المستند إلى البرامج، مثل IPTV من البث المتعدد/البث الأحادي عبر IP. تتولّى TIS إنشاء عنصر Media CAS Java وتوفيره بشكل صحيح.

قد يستخدم التطبيق MediaExtractor أو أدوات تحليل أخرى بتنسيق MPEG2-TS لاستخراج بيانات PSI ذات الصلة بنظام الوصول المشروط، مثل واصفات نظام الوصول المشروط ورسائل التحكّم في الوصول ورسائل إدارة الحقوق. إذا كان التطبيق يستخدم إطار عمل MediaExtractor، يمكنه تفويض إدارة جلسة CAS، مثل فتح جلسة ومعالجة رسائل EMM/ECM، إلى إطار عمل MediaExtractor. بعد ذلك، يضبط MediaExtractor جلسة CAS باستخدام واجهة برمجة التطبيقات الأصلية مباشرةً.

بخلاف ذلك، يكون التطبيق مسؤولاً عن استخراج بيانات معلومات تحديد هوية المشاهد (PSI) ذات الصلة بنظام CAS وإعداد جلسة CAS باستخدام واجهات برمجة تطبيقات Media CAS Java (على سبيل المثال، عندما يستخدم التطبيق محلّل MPEG2-TS الخاص به).

مخطّط لإعدادات موالف القنوات

الشكل 2. إعدادات إدخال IPTV ونظام CAS وأداة فك التشفير باستخدام إطار عمل MediaExtractor

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

  • إذا لم يكن المسار يتطلّب فك تشفير آمن، يزيل برنامج الاستخراج التشفير من وحدة الوصول لمحو المخازن المؤقتة ويستخرج العيّنات كما لو كانت من بث غير مشفّر. بهذه الطريقة، لن تحتاج MediaCodec إلى المشاركة في عملية فك التشفير.
  • إذا كان المسار يتطلّب فك تشفير آمن، قد يظل المستخرِج بحاجة إلى أداة فك تشفير. يحدث ذلك عندما يتم تشويش بث النقل على مستوى حزمة النقل، حيث يتم تشويش عنوان حزمة البث الأساسي (PES). يحتاج برنامج الاستخراج إلى الوصول إلى عنوان حزمة PES من أجل إرسال معلومات معيّنة إلى الأجهزة الأخرى (مثل الطابع الزمني للعرض التقديمي).

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

قيود إعدادات البرامج

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

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

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

تسلسل ضبط CA

عند الانتقال إلى قناة جديدة، يسجّل وحدة نظام معلومات النقل (TIS) لتلقّي واصفات نظام الوصول المشروط (CA) ورموز التحكّم في التشفير (ECM) ورموز إدارة الاستحقاق (EMM) من إطار عمل PSI Tuner. يحتوي واصف نظام الوصول المشروط على معرّف نظام الوصول المشروط، الذي يحدّد بشكل فريد مورّدًا معيّنًا لنظام الوصول المشروط وبيانات أخرى خاصة بالمورّد. تطلب خدمة TIS من نظام CAS الخاص بالوسائط تحديد ما إذا كانت هناك إضافة CAS يمكنها التعامل مع واصف CA.

مخطّط بياني لضبط محتوى CAS

الشكل 3. ضبط محتوى CAS

إذا كان معرّف نظام CA متوافقًا، يتم إنشاء مثيل من Media CAS ويتم توفير البيانات الخاصة بالمورّد من واصف CA إلى المكوّن الإضافي. بعد ذلك، يتم فتح جلسات جديدة في Media CAS للتعامل مع بث الصوت والفيديو. تتلقّى الجلسات التي تم فتحها حديثًا "إحالات ناجحة مكتملة" و"إحالات ناجحة مكتملة" للمكوّن الإضافي.

مثال على تدفّق المكوّن الإضافي CAS

توفّر خدمة TIS رسائل ECM إلى المكوّن الإضافي CAS باستخدام واجهات برمجة تطبيقات Media CAS. تحتوي رسالة ECM على كلمة التحكّم المشفّرة التي يجب فك تشفيرها باستخدام معلومات من رسالة EMM. تحدّد إضافة CAS طريقة الحصول على نظام إدارة خدمات جوّالة للمؤسسات (EMM) للأصل استنادًا إلى معلومات خاصة بالمورّد في واصف CA، والذي يتم توفيره من خلال طريقة setPrivateData().

يمكن تسليم رسائل إدارة الحقوق الرقمية المضمّنة في المحتوى في نطاق بث المحتوى أو خارجه باستخدام طلب شبكة يبدأه البرنامج الإضافي الخاص بنظام CA. تستخدم TIS طريقة processEMM() لتسليم أي رسائل EMM داخل النطاق إلى المكوّن الإضافي CA.

إذا كان الحصول على إدارة التنقّل في المؤسسة (EMM) يتطلّب طلبًا من الشبكة، يكون البرنامج المساعد الخاص بمرجع التصديق مسؤولاً عن تنفيذ معاملة الشبكة مع خادم الترخيص.

مخطّط لنظام CAS كمثال

الشكل 4. مثال على مكوّن CAS الإضافي لمعالجة إدارة الخدمات الجوّالة للمؤسسات وإدارة المحتوى في المؤسسات

عند تلقّي رسالة إدارة الحقوق (EMM)، يحلّلها البرنامج المساعد لنظام CA للحصول على المفتاح المشفّر من أجل فك تشفير كلمة التحكّم. قد يتم تحميل مفتاح EMM المشفّر وكلمة التحكّم المشفّرة في سلسلة مفاتيح أو بيئة موثوق بها لتنفيذ فك تشفير كلمة التحكّم ثم فك تشفير حزمة المحتوى.

Media CAS Java API

يحتوي Media CAS Java API على الطرق التالية.

  • تعرض هذه السمة قائمة بجميع إضافات مرجع التصديق المتاحة على الجهاز.

    class MediaCas.PluginDescriptor {
      public String getName();
      public int getSystemId();
    }
    static PluginDescriptor[] enumeratePlugins();
    
  • إنشاء مثيل Media CAS لنظام CA المحدّد وهذا يعني أنّ إطار عمل 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);
    
  • إرسال حدث إلى نظام مرجعي معتمد يكون تنسيق الحدث خاصًا بالمخطط وغير شفاف للإطار.

    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 الخاصة من واصف 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);