إطار عمل 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 من أجل التوافق مع أجهزة استقبال التلفزيون المستندة إلى الأجهزة.

تتضمّن بيانات معلومات الحماية الشخصية المشروطة واصفات الوصول المشروط، ووحدات التحكّم في التشفير (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 ذات الصلة بنظام CA وإعداد جلسة CAS باستخدام واجهات برمجة تطبيقات Media CAS Java (على سبيل المثال، عندما يستخدم التطبيق محلّل MPEG2-TS الخاص به).

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

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

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

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

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

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

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

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

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

تسلسل ضبط CA

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

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

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

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

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

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

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

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

مخطّط بياني لمثال على نظام CAS

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

عند تلقّي رسالة إدارة الحقوق الإلكترونية (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 لنظام 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);
    
  • أرسِل البيانات الخاصة بنظام هيئة التصديق. يمكن أن تأتي البيانات الخاصة من واصف مرجع التصديق أو جدول الوصول الشرطي أو مصادر خارج النطاق. لا يرتبط هذا الإجراء بجلسة معيّنة.

    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);