November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Monday, November 3rd, 2008 04:57 pm
Остальные части

Как уже было сказано ранее, системы условного доступа разрабатываются разными компаниями. Время от времени производители могут менять форматы передачи данных и/или внутренние механизмы их хранения и обработки, реализуя таким образом различные версии своей системы условного доступа, обычно (но не обязательно) совместимые (или частично совместимые) с предыдущими версиями. Для правильного дешифрования программ приёмник должен правильно декодировать команды условного доступа, а для этого он должен уметь определять используемую провайдером систему условного доступа и её версию.

Кроме того, одну и ту же систему условного доступа могут одновременно использовать разные провайдеры, и данные от "своего" провайдера тоже надо как-то отличать.

В приёмнике условный доступ реализуется обычно двумя функциональными блоками: модулем условного доступа (Conditional Access Module, CAM) и security processor'ом (смарт-картой). Процессоры в смарт-картах существенно менее производительные, чем в CAM, поэтому одна из задач CAM - убрать ненужную нагрузку с процессора смарт-карты, в частности, не передавать в неё пакеты, которые она заведомо не сможет обработать, а также не передавать в неё пакеты, которые уже передавались ранее, и результат обработки которых известен.

Для различения систем условного доступа, их версий, и данных, передаваемых различными провайдерами, используется несколько параметров.

В первую очередь - собственно идентификатор системы условного доступа, CA_system_ID, 16-битовая переменная, указываемая в CAT и PMT. Диапазоны идентификаторов систем условного доступа централизованно распределяются DVB-консорциумом. Первоначально они выдавались довольно большими блоками - по 256 штук на разработчика, потом по 16 штук, в последнее время вообще по одному.

В одном транспортном поток могут одновременно присутствовать данные от нескольких систем условного доступа. И для одной программы данные могут тоже передаваться в нескольких системах условного доступа. Это называется Simulcrypt (от слова simultaneous - одновременный).

В CAT (Conditional Access Table), единой на весь поток с транспондера, указываются идентификаторы используемых в этом потоке систем условного доступа в сочетании с PID'ами соответствующих потоков EMM (Entitlement Management Messages).

В PMT (Program Map Table) каждой программы указываются идентификаторы используемых для этой программы систем условного доступа в сочетании с PID'ами соответствующих потоков ECM (Entitlement Control Messages).

Разработчики, получившие несколько идентификаторов, могут использовать для разных версий своей системы разные идентификаторы. Получившие только один идентификатор - не могут и вынуждены использовать другие методы:

- во-первых, в дескрипторах условного доступа в составе CAT и PMT стандартом предусмотрено [необязательное] поле приватных данных, в которых может указываться произвольная дополнительная информация;

- во-вторых, в разных версиях системы условного доступа может применяться разный формат собственно EMM и ECM-пакетов (специфические поля, по которым можно различить пакеты от разных версий);

- в-третьих, идентификаторы провайдеров. Строго говоря, они идентифицируют не провайдера, а конкретную систему условного доступа конкретной версии и набор смарт-карт, умеющих с ней работать и содержащих соответствующие ключи. Один провайдер может одновременно использовать несколько идентификаторов (то есть, несколько наборов смарт-карт, управляемых по отдельности).

Идентификаторы провайдеров обычно занимают 16-24 бита и могут указываться в поле приватных данных в составе CAT и PMT, а также в самих EMM и ECM.

При инициализации CAM проводит консультацию со вставленной в него смарт-картой и выясняет, какие системы условного доступа, каких версий и для каких провайдеров она поддерживает.

После настройки на очередной канал CAM читает CAT и PMT и определяет, какие системы условного доступа, каких версий и для каких провайдеров присутствуют в потоке. Сопоставив эти данные с параметрами карты, он определяет, с какими PID'ами передаются потенциально подходящие для этой карты ECM- и EMM-пакеты, и устанавливает в своём демультиплексоре фильтры для их получения из общего потока. Кроме того, в зависимости от системы условного доступа, CAM может проверять дополнительную информацию из самих EMM- и ECM-пакетов, прежде чем отправлять их в карту.

Поскольку некоторые пакеты повторяются, CAM может кэшировать их содержимое вместе с ответами карты, и не отправлять повторно уже обработанные пакеты.

В частности, ECM передаются обычно несколько раз в секунду, а содержимое их меняется обычно раз в 5-10 секунд. Если карта уже успешно обработала ECM и выдала дешифрованные CW, то отправлять в неё другие точно такие же пакеты бессмысленно - она вернёт точно те же CW.

Примерно так же дело обстоит с EMM - успешно обработанный пакет не имеет смысла повторно отправлять в карту, хотя одинаковые EMM обычно передаются значительно реже, чем ECM.

Поскольку каждый конкретный аудио- и видеопоток в составе программы в каждый момент времени может скрэмблироваться только одним ключом (CW), очевидно, что ECM-пакеты от всех систем условного доступа, используемых в данной программе, должны содержать этот самый одинаковый CW.

Возможность использования в одной программе нескольких систем условного доступа имеет дополнительный побочный эффект: провайдеры могут менять систему условного доступа постепенно, без перерывов в приёме.

Происходит это так: сначала в мультиплексированный поток добавляются ECM и EMM для новой системы условного доступа или новой её версии, а в CAT и PMT - дескрипторы со ссылками на их PIDы. Затем постепенно заменяется соответствующее оборудование у пользователей - смарт-карты и, при необходимости, также CAM-модули и/или ресиверы. Некоторые ресиверы обладают возможностью получения новых версий управляющей программы прямо из потока данных с транспондера, и некоторые провайдеры эту возможность активно используют. После того, как все абоненты переведены на новую систему условного доступа, старая отключается - из потока удаляются EMM и ECM, а из CAT и PMT удаляются соответствующие дескрипторы.

Примеры CAT и PMT с несколькими системами условного доступа одновременно.

CAT:
------------------------------------------------------------
SECT-Packet: 00000001   PID: 1 (0x0001), Length: 80 (0x0050)
------------------------------------------------------------

PID:  1 (0x0001)  [= assigned for: ISO 13818-1 Conditional Access Table (CAT)]

Guess table from table id...
CAT-decoding....
Table_ID: 1 (0x01)  [= Conditional Access Table (CAT)]
section_syntax_indicator: 1 (0x01)
Section_length: 77 (0x004d)
Version_number: 5 (0x05)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 22 (0x16)
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 151 (0x0097)
        Private Data:
              0000:  13 01 20 14 03 00 74 00  14 03 02 09 10 14 03 02
              0010:  49 00

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 27 (0x1b)
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 153 (0x0099)
        Private Data:
              0000:  13 01 20 14 03 00 7c 00  14 03 02 00 00 14 03 02
              0010:  00 10 14 03 02 26 10

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 1281 (0x0501)
        Private Data:
              0000:  13 01 20

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 4 (0x04)
        CA_system_ID: 1540 (0x0604)  [= Irdeto]
        CA_PID: 1280 (0x0500)

CRC: 2676349955 (0x9f85dc03)
==========================================================

Здесь мы видим четыре потока EMM: три от системы Viaccess производства France Telecom [разных версий] c PID'ами, соответственно, 151, 153 и 1281, и один поток системы Irdeto (PID 1280).

Небольшое лирическое отступление: для передачи и хранения разнородных данных переменной длины часто применяется система кодирования TLV (tag-length-value): сначала идёт идентификатор типа данных (tag), затем длина (length), затем собственно данные (value) указанной длины. Эта же система используется во многих системах условного доступа как в составе EMM и ECM, так и вне их. В частности, в полях приватных данных в CAT и PMT.

В вышеприведённом примере данные из первого дескриптора условного доступа можно интерпретировать так:

tag: 13 length: 01 value: 20
tag: 14 length: 03 value: 00 74 00

tag: 14 length: 03 value: 02 09 10
tag: 14 length: 03 value: 02 49 00

Тэг 14 обозначает идентификатор провайдера (Provider ID), к которому относится данный дескриптор условного доступа. В Viaccess идентификаторы провайдера 20-битовые, в данном случае 00740, 02090 и 02490.

Второй дескриптор условного доступа относится, соответственно, к провайдерам 007c0, 02000, 02001 и 02261.

Для третьего дескриптора Viaccess и для Irdeto никаких дополнительных данных нет.

PMT:
------------------------------------------------------------
SECT-Packet: 00000001   PID: 115 (0x0073), Length: 139 (0x008b)
------------------------------------------------------------

PID:  115 (0x0073)

Guess table from table id...
PMT-decoding....
Table_ID: 2 (0x02)  [= Program Map Table (PMT)]
section_syntax_indicator: 1 (0x01)
Section_length: 136 (0x0088)
Program_number: 105 (0x0069)
Version_number: 6 (0x06)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
PCR PID: 125 (0x007d)
Program_info_length: 110 (0x006e)

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 15 (0x0f)
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 170 (0x00aa)
        Private Data:
              0000:  10 01 00 13 01 20 14 03  02 00 08

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 15 (0x0f)
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 178 (0x00b2)
        Private Data:
              0000:  10 01 00 13 01 20 14 03  02 26 18

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 15 (0x0f)
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 179 (0x00b3)
        Private Data:
              0000:  10 01 00 13 01 20 14 03  02 00 18

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 15 (0x0f)
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 166 (0x00a6)
        Private Data:
              0000:  10 01 00 13 01 20 14 03  00 74 08

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 4 (0x04)
        CA_system_ID: 1540 (0x0604)  [= Irdeto]
        CA_PID: 165 (0x00a5)

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 15 (0x0f)
        CA_system_ID: 1280 (0x0500)  [= France Telecom (Viaccess)]
        CA_PID: 175 (0x00af)
        Private Data:
              0000:  10 01 00 13 01 20 14 03  02 09 18

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        descriptor_length: 17 (0x11)
        CA_system_ID: 256 (0x0100)  [= Canal Plus (Seca/MediaGuard)]
        CA_PID: 173 (0x00ad)
        Private Data:
              0000:  00 68 ff 00 00 00 01 00  00 00 00 0c 21

Stream_type loop: 

    Stream_type: 2 (0x02)  [= ITU-T Rec. H.262 | ISO/IEC 13818-2 Video | ISO/IEC 11172-2 constr. parameter video stream]
    Elementary_PID: 125 (0x007d)
    ES_info_length: 3 (0x0003)

            MPEG-DescriptorTag: 17 (0x11)  [= STD_descriptor]
            descriptor_length: 1 (0x01)
            leak_valid_flag: 1 (0x01)


    Stream_type: 3 (0x03)  [= ISO/IEC 11172 Audio]
    Elementary_PID: 135 (0x0087)
    ES_info_length: 0 (0x0000)

CRC: 3272874006 (0xc3141816)
==========================================================

Для конкретной программы дескрипторов условного доступа (и соответствующих потоков ECM) становится больше. Это логично, ECM-пакетов передаётся значительно больше, чем EMM, и чтобы снять с CAM дополнительную нагрузку по программной фильтрации подходящих пакетов, потоки разных провайдеров передаются с разными PID'ами.

Для данной программы указаны ECM-потоки для провайдеров 02000, 02261, 02001, 00740, 02091 в системе Viaccess, а также по одному потоку для систем Irdeto и Seca (Mediaguard). Для Seca идентификатор провайдера занимает 16 бит, и в данном случае равен 0068. Для Irdeto, как и в CAT, дополнительных данных нет, CAM может фильтровать пакеты по их содержимому.
Tags:

Reply

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting