إطار عمل CAS

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

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

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

الإعدادات المتاحة

إعداد أداة ضبط الأجهزة

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

تتضمن بيانات مؤشر PSI للوصول المشروط أدوات وصف CA، وحسابات ECM، وEMMs. هذه تمكّن الهياكل للمكون الإضافي CAS من الحصول على المفاتيح اللازمة لفك تشفير عمليات بث المحتوى.

مخطّط بياني لإعداد أداة ضبط الأجهزة

الشكل 1. إعداد أداة ضبط الأجهزة

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

ضبط البرنامج

قبل الإصدار Android 11، كان لا يزال من الممكن أن يظل إطار عمل Media CAS تُستخدم لمعالجة المحتوى المستند إلى البرامج، مثل IPTV من بروتوكول الإنترنت البث المتعدد/الأحادي يكون تطبيق TIS مسؤولاً عن إنشاء مثيل وحلّ المشاكل لتوفير كائن Java لـ Media CAS.

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

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

مخطّط بياني لإعدادات الموالف.

الشكل 2. إعداد إدخال IPTV وCAS وفك ترميز المحتوى باستخدام إطار العمل "أداة استخراج الوسائط"

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

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

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

قيود تهيئة البرنامج

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

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

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

تسلسل توليف هيئة إصدار الشهادات (CA)

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

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

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

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

نموذج تدفق المكوّن الإضافي CAS

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

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

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

مخطّط بياني يُظهر مثالاً على شهادة CAS.

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

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

واجهة برمجة تطبيقات Media CAS Java

تحتوي واجهة برمجة تطبيقات 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);
    
  • بدء عملية توفير من النوع المحدّد لمصدر الشهادة . عندما يشترك جهاز في خدمة تلفزيون مدفوعة في يحتاج إلى توفير المتطلبات اللازمة لخادم CAS لأول مرة أولاً. توفير مجموعة من المَعلمات ذات الصلة للجهاز لتوفير المتطلبات اللازمة

    void provision(String provisionString);
    
  • إعادة تحميل الأذونات عندما يشترك مستخدِم في قناة جديدة (مثلاً، من خلال الرد على إعلان أو بإضافة قناة على دليل البرامج الإلكتروني (EPG)، يجب على التطبيق أن يتمكنوا من إبلاغ عملاء مرجع التصديق بإعادة تحميل مفاتيح الاستحقاق.

    void refreshEntitlements(int refreshType);
    
  • أغلِق كائن Media CAS.

    void close();
    
  • افتح جلسة.

    Session openSession();
    Session openSession(@SessionUsage int sessionUsage, @ScramblingMode int scramblingMode);
    
  • إغلاق جلسة تم فتحها سابقًا.

    void Session#close();
    
  • قدّم بيانات خاصة بهيئة إصدار الشهادات (CA) من أداة وصف مرجع التصديق في PMT، والتي يمكن أن تكون بدءًا من "معلومات البرنامج" أو قسم "معلومات اللغة الإسبانية" إلى جلسة 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);