2.0 Шифрование
2.1 Обзор шифрования
Поскольку каждый зашифрованный потоковый тип, защищенный блок идентифицируется, по которому выполняется процесс защиты. Защищенный блок аудиопотока обычно является кадром аудио; защищенные блоки видео H.264 являются организацией определенных типов Модулей Network Adaptation Layer (NAL). Метод шифрования, определенный этой спецификацией, защищает определенные непрерывные разделы аудиопотока или видеопотока в защищенных блоках.
Каждый раздел содержит целое число 16-байтовых блоков, шифрующихся с помощью режима AES 128 Cipher Block Chaining (CBC), как указано в NIST Специальная 800-38A Публикация. Сцепление блоков шифра происходит в каждом защищенном блоке, и вектор инициализации должен быть сброшен к его исходному значению в начале каждого нового защищенного блока.
В видеоданных после того должны быть зашифрованы первый 16-байтовый блок раздела и каждый десятый блок.
В аудиоданных должны быть зашифрованы все 16-байтовые блоки.
2.2 Видеопотоки H.264
H.264 (AVC), видео кодирование ISO/IEC 14496-10 должно использоваться для видео, когда эта спецификация в действии. Поточное шифрование выполняется в каждом модуле NAL в форме потока байтов, использование запускает коды, как детализировано в Приложении B ISO/IEC 14496-10.
Модули NAL типа 1 и типа 5 должны быть зашифрованы к этой спецификации; другие типы модуля NAL не должны быть зашифрованы. Перечисление 1-1 показывает формат модуля NAL, содержащего зашифрованные данные.
Шифрование перечисления 1-1 модулей NAL
Encrypted_NAL_Unit () { |
NAL_unit_type_byte // 1 byte |
unencrypted_leader // 31 bytes |
while (bytes_remaining() > 16) { |
protected_block_one_in_ten // 16 bytes |
} |
unencrypted_trailer // 1-16 bytes |
} |
Каждый модуль NAL формируется с примененным предотвращением эмуляции кода запуска. Предыдущий код запуска не является частью защищенного блока и не шифруется.
Байт, содержащий nal_unit_type
значение, плюс 31 байт, следующий, не шифруется. Следующий непрерывный раздел данных защищен. Размер, в байтах, защищенного раздела должен быть кратным числом 16 и может быть 0; поэтому, если модуль NAL имеет 48 или меньше байтов, что полностью не шифруется модуль NAL.
Защищенный раздел использует 10%-е шифрование пропуска. Каждый 16-байтовый блок зашифрованных данных сопровождается девятью 16-байтовыми блоками незашифрованных данных. В конце модуля NAL, существуют между 1 и 16 незашифрованными запаздывающими байтами, включительно. Если какой-либо блок шифруется (потому что длина Модуля NAL составляет 48 байтов или больше), запустите, предотвращение эмуляции кода должно снова быть применено по всему Модулю NAL, включая незашифрованные разделы.
Для шифрования потока H.264 сначала запустите с потока байтов, имевшего, запускают примененное предотвращение эмуляции кода. Типы 1 и 5 NAL, имеющие длину, больше, чем 48 байтов, должны быть защищены, как определено выше, и затем для тех Модулей NAL только, запуститься, предотвращение эмуляции кода должно быть повторно применено по всему Модулю NAL.
Для дешифрования потока H.264 модули NAL типа 1 и типа 5 должны быть идентифицированы и незащищены. Для каждого модуля NAL или типа, запустите, предотвращение эмуляции кода должно быть удалено, если длина Модуля NAL не составляет 48 байтов или меньше. Тогда зашифрованный раздел Модуля NAL должен быть расположен, и данные в том разделе должны быть дешифрованы. (Получающийся поток битов может тогда быть обработан стандартным декодером H.264.)
2.3 Аудиопотоки
2.3.1 Общий
Технология шифрования, определенная этой спецификацией, поддерживает два формата аудио: Усовершенствованное кодирование звука (AAC) ISO/IEC 14496-3 и аудио AC 3 (раньше Dolby Digital) ETSI TS 102 366 v1.2.1.
2.3.2 Аудио AAC
Защищенный блок AAC является аудио кадром, включающим заголовок Audio Data Transport Stream (ADTS), как показано в Перечислении 1-2.
Шифрование перечисления 1-2 аудио кадров AAC
Encrypted_AAC_Frame () { |
ADTS_Header // 7 or 9 bytes |
unencrypted_leader // 16 bytes |
while (bytes_remaining() >= 16) { |
protected_block // 16 bytes |
} |
unencrypted_trailer // 0-15 bytes |
} |
Заголовок ADTS, который может быть 7 или 9 байтов длиной плюс первые 16 байтов кадра после него, не шифруется. Следующий непрерывный раздел данных шифруется. Размер, в байтах, зашифрованного раздела должен быть целочисленным кратным числом 16 и является возможно нулем. AAC структурируют концы с от 0 до 15 незашифрованных байтов. Запустите предотвращение эмуляции кода не выполняется на зашифрованном кадре.
2.3.3 Аудио AC 3
Защищенный блок AC 3 является полным аудио кадром (a syncframe()
столь же определенный в ETSI TS 102 366 v1.2.1), как показано в Перечислении 1-3.
Шифрование перечисления 1-3 кадров аудио AC 3
Encrypted_AC3_Frame () { |
unencrypted_leader // 16 bytes |
while (bytes_remaining() >= 16) { |
protected_block // 16 bytes |
} |
unencrypted_trailer // 0-15 bytes |
} |
Первые 16 байтов, начиная с syncframe()
заголовок, не шифруются. Следующий непрерывный раздел данных шифруется. Кадр AC 3 заканчивается от 0 до 15 незашифрованных байтов. Запустите предотвращение эмуляции кода не выполняется на зашифрованной части кадра.
2.3.4 Аудио информация об установке
2.3.4.1 Введение
Когда поток шифруется в соответствии с этой спецификацией, незашифрованная аудио информация установки должна быть предоставлена. Информационный формат установки с обратным порядком байтов показан в Перечислении 1-4.
Информационный формат установки перечисления 1-4
audio_setup_information() { |
audio_type // 4 bytes |
priming // 2 bytes |
version // 1 byte |
setup_data_length // 1 byte |
setup_data // setup_data_length |
} |
Первое поле является 32-разрядным идентификатором формата, сопровождаемым 16-разрядным полем воспламенения и 8-разрядным полем версии. Это сопровождается специфичными для формата данными: сначала 8-разрядное значение, содержащее длину, в байтах, специфичных для формата данных и затем самих специфичных для формата данных в массиве байтов. Информация об установке должна быть упакована без дополнения выравнивания. Размер информации об установке составляет 8 байтов плюс размер специфичных для формата данных.
Значения поля:
audio_type
— как определено в следующих разделах; идентифицирует тип данных установки, которые переносят.priming
— набор к 0x0000 для AC 3. Поскольку AAC получают это значение от кодера, с помощью Apple, кодирующего API. Если кодер не-Apple используется и не обеспечивает значение воспламенения, набор к 0x0000. (Это может привести к неправильной аудио/видео синхронизации, если кодер имеет различное значение воспламенения, чем значение, предоставленное для декодера AAC, когда представляется содержание.)version
— набор к 0x01.setup_data_length
— число байтов в следующих данных установки.setup_data
— специфичная для формата информация, как определено в следующих разделах.
2.4.3.2 Установка AAC
Идентификаторы формата:
AAC-LC | ‘zaac’ |
AAC-HEv1 | ‘zach’ |
AAC-HEv2 | ‘zacp’ |
Специфичная для формата информация об установке AAC AudioSpecificConfig()
значение, как определено в Разделе 1.6.2.1 из ISO/IEC 14496-3. (Обратите внимание на то, что это значение вызывают DecoderSpecificInfo
в MPEG 4).
2.4.3.3 Установка AC 3
Идентификатор формата: ‘zac3’
AC 3 специфичная для формата информация об установке составляет первые 10 байтов аудиоданных ( syncframe()
). Это включает syncinfo()
структура и начальная часть bsi()
структура, как определено в 5.3.1 и 5.3.2 из ETSI TS 102 366 v1.2.1.
2.4.3.4 Элементарная потоковая установка
Идентификатор формата: ‘PRIV’
В элементарных потоках аудио информацию об установке переносят в Частном Кадре ID3, как определено в версии 2.4.0 тега ID3. Идентификатор владельца com.apple.streaming.audioDescription
.
2.4.3.5 Транспортная потоковая установка
Идентификатор формата: ‘apad’
В транспортных потоках аудио информацию об установке переносят в a registration_descriptor()
, как определено в ISO/IEC 13818-1, разделы 2.6.8 и 2.6.9 и Таблица 2-45.
2.4 Другие потоковые типы
Потоковые типы кроме аудио или видео не шифруются.