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


Шифрование содержимого 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 требует времени для привязки лицензии к части содержимого, и эта операция требуется перед началом расшифровки и отрисовки содержимого. Это означает, что время привязки лицензии влияет на время первого кадра при запуске воспроизведения или разрыв между дорожками. Разработчику клиента, а также разработчику приложений может потребоваться оптимизировать код для проблем со средой выполнения и производительности, сократить время до первого кадра и разрешить воспроизведение без пробелов.

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

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

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

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