Обзор COPP (Content Output Protection Protocol)
[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Ниже приведены основные действия, которые приложение должно выполнять для использования протокола СЕРТИФИЦИРОВАННОЙ защиты выходных данных (COPP).
Получите цепочку сертификатов драйвера
- Создайте граф воспроизведения DirectShow, который выводит видео с использованием рендерера видео (Video Mixing Renderer — VMR-7 или VMR-9) или фильтра расширенного рендерера видео (Enhanced Video Renderer — EVR) .
- Запросите VMR для интерфейса IAMCertifiedOutputProtection.
- Вызов IAMCertifiedOutputProtection::KeyExchange. Этот метод возвращает 128-разрядное случайное число из драйвера, а также цепочку сертификатов, содержащую 2048-разрядный открытый ключ RSA драйвера.
Валидировать цепочку сертификатов
- Проверьте цепочку сертификатов. Если цепочка сертификатов недействительна, остановитесь.
- Проверьте список отзыва сертификатов (CRL). Если любой из сертификатов в цепочке сертификатов находится в списке отзыва, остановитесь.
- Получите открытый ключ RSA из цепочки сертификатов.
Инициализация сеанса COPP
- Создайте 128-разрядный ключ сеанса AES. Этот ключ используется для подписывания данных и проверки того, что подписанные данные не были изменены.
- Создайте два криптографически безопасных 32-разрядных случайных чисел. Первое — номер последовательности состояния, а второй — номер последовательности команд. Каждый раз, когда приложение отправляет команду или запрос состояния, он увеличивает соответствующий порядковый номер и включает это число в команду COPP или данные запроса.
- Конкатенируйте 128-битное случайное число из графического драйвера, ключ сеанса AES, номер последовательности состояния и номер последовательности команды. Зашифруйте этот массив байтов с помощью открытого ключа драйвера и передайте результат в IAMCertifiedOutputProtection::SessionSequenceStart.
Отправлять команды и запросы состояния КОПП
- Сделайте запрос доступных типов защиты и другой информации путем вызова IAMCertifiedOutputProtection::ProtectionStatus.
- Задайте требуемые уровни защиты с помощью вызова IAMCertifiedOutputProtection::ProtectionCommand.
- Периодически запрашивать текущий локальный уровень защиты. Остановите воспроизведение, если локальный уровень защиты неожиданно изменится или обнаружится проблема.
Связанные разделы