Остальные части
Как уже было сказано ранее, системы условного доступа разрабатываются разными компаниями. Время от времени производители могут менять форматы передачи данных и/или внутренние механизмы их хранения и обработки, реализуя таким образом различные версии своей системы условного доступа, обычно (но не обязательно) совместимые (или частично совместимые) с предыдущими версиями. Для правильного дешифрования программ приёмник должен правильно декодировать команды условного доступа, а для этого он должен уметь определять используемую провайдером систему условного доступа и её версию.
Кроме того, одну и ту же систему условного доступа могут одновременно использовать разные провайдеры, и данные от "своего" провайдера тоже надо как-то отличать.
В приёмнике условный доступ реализуется обычно двумя функциональными блоками: модулем условного доступа (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:
Здесь мы видим четыре потока 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:
Для конкретной программы дескрипторов условного доступа (и соответствующих потоков ECM) становится больше. Это логично, ECM-пакетов передаётся значительно больше, чем EMM, и чтобы снять с CAM дополнительную нагрузку по программной фильтрации подходящих пакетов, потоки разных провайдеров передаются с разными PID'ами.
Для данной программы указаны ECM-потоки для провайдеров 02000, 02261, 02001, 00740, 02091 в системе Viaccess, а также по одному потоку для систем Irdeto и Seca (Mediaguard). Для Seca идентификатор провайдера занимает 16 бит, и в данном случае равен 0068. Для Irdeto, как и в CAT, дополнительных данных нет, CAM может фильтровать пакеты по их содержимому.
Как уже было сказано ранее, системы условного доступа разрабатываются разными компаниями. Время от времени производители могут менять форматы передачи данных и/или внутренние механизмы их хранения и обработки, реализуя таким образом различные версии своей системы условного доступа, обычно (но не обязательно) совместимые (или частично совместимые) с предыдущими версиями. Для правильного дешифрования программ приёмник должен правильно декодировать команды условного доступа, а для этого он должен уметь определять используемую провайдером систему условного доступа и её версию.
Кроме того, одну и ту же систему условного доступа могут одновременно использовать разные провайдеры, и данные от "своего" провайдера тоже надо как-то отличать.
В приёмнике условный доступ реализуется обычно двумя функциональными блоками: модулем условного доступа (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: