Поделиться через


Шифрование содержимого PlayReady

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

Замечание

См. глоссарий для терминов и определений шифрования.

Основы шифрования

Криптография симметричного ключа — самый простой тип шифрования. С помощью шифрования симметричного ключа тот же ключ используется для шифрования содержимого и расшифровки его. Алгоритмы симметричного ключа обычно небольшие и быстрые. Как правило, основная часть любой задачи шифрования обрабатывается некоторой формой шифрования симметричного ключа.

Криптография открытого ключа, напротив, использует опубликованный открытый ключ для шифрования и другого, секрета, закрытого ключа для расшифровки. Таким образом, если пользователь "A" предоставляет пользователю "B" открытый ключ, B может шифровать содержимое для A без каких-либо других сведений. Независимо от того, как передается содержимое, только A сможет прочитать его. Перехватчики содержимого не имеют закрытого ключа (секретный ключ) и не могут расшифровать сообщение. Так как открытый ключ доступен, любой пользователь может зашифровать для A, но только A может расшифровать. Для шифрования открытых ключей требуются вычислительные сложные алгоритмы.

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

Коды проверки подлинности одноключных сообщений (OMAC) — это код проверки подлинности сообщения, созданный на основе блочного шифра. Существует два алгоритма OMAC, OMAC1 и OMAC2.

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

Алгоритмы шифрования PlayReady

Симметричные алгоритмы

Поддерживаются следующие режимы шифрования AES:

  • Режим AES 128 CTR — системы PlayReady могут защищать файлы и потоки, в которых образцы шифруются в полном объеме или где шифруются только образцы в паттерне в режиме CTR. К ним относятся общие режимы шифрования cenc (общая схема шифрования) и "cens" (общая схема шифрования с использованием шаблона незашифрованных или зашифрованных байтов), которые определены в ISO/IEC 23001-7.

  • Режим AES 128 CBC — системы PlayReady, начиная с версии 4.0, могут защищать файлы и потоки, полностью или частично зашифрованные с помощью ключа содержимого AES 128, в режиме CBC. К ним относятся общие режимы шифрования cbc1 и cbcs, как определено в iso/IEC 23001-7, и любой другой формат, зашифрованный с помощью ключа содержимого AES 128 в режиме CBC.

Замечание

Системы PlayReady с версиями 1.X, 2.X и 3.X могут защищать файлы, зашифрованные в режиме CTR (общий режим шифрования cenc). 'cens' не поддерживается. Системы PlayReady с версией 4.0 и выше могут защищать файлы, зашифрованные в режиме CTR (общие режимы шифрования cenc) и в режиме CBC (общие режимы шифрования cbcs). Другие режимы "cens" и "cbc1" не поддерживаются.

Алгоритмы ECC

Системы Microsoft PlayReady используют ECC (криптографию эллиптической кривой) для шифрования ключей содержимого и подписывания сообщений протокола.

  • Алгоритм ECC ElGamal — используется для зашифрованных ключей содержимого.
  • ECDSA (алгоритм цифровой подписи эллиптической кривой) — используется для подписывания сообщений, применимых в протоколах PlayReady.
  • NIST — системы Microsoft PlayReady используют стандартные алгоритмы NIST для шифрования ECC, где применимо, и в настоящее время используется эллиптическая кривая P-256.

Алгоритмы подписывания

Для подписывания лицензий, временных ключей или данных системы PlayReady используют AES OMAC1, что эквивалентно CMAC (код проверки подлинности на основе шифров) и стало рекомендацией NIST в мае 2005 года. Ключи создаются случайным образом, но данные хэшируются с SHA256, а затем хэш подписан с помощью ECC256.

Вопросы времени выполнения и производительности

При активации воспроизведения содержимого клиент PlayReady должен выполнить некоторые действия, прежде чем начать начальное воспроизведение. Это включает поиск лицензии, привязки или интерпретации лицензии, расшифровки ключа содержимого и, наконец, подготовки к расшифровке содержимого. Привязка лицензии к определённому контенту через стек PlayReady Client занимает время, и эта операция необходима перед началом расшифровки и отображения контента. Это означает, что время привязки лицензии влияет на время первого кадра при запуске воспроизведения или разрыв между треками. Разработчик клиента, а также разработчик приложений может рассмотреть возможность оптимизации кода для проблем со средой выполнения и производительности, чтобы сократить время до первого кадра и разрешить воспроизведение без пробелов.

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

Когда время расшифровать содержимое, закрытый ключ клиента используется для расшифровки симметричного ключа из лицензии. Только клиент, к которому привязана лицензия, может извлечь симметричный ключ.

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

Для приложений или устройств, которые ограничены ресурсами, запуск требует значительного времени и ресурсов. Однако после завершения ресурсы освобождаются, расшифровка может эффективно продолжаться, и требуется мало циклов ЦП или системных ресурсов.