COPP 개요

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

COPP(Certified Output Protection Protocol)를 사용하기 위해 애플리케이션에서 수행해야 하는 기본 단계는 다음과 같습니다.

드라이버의 인증서 체인 가져오기

  1. 비디오 혼합 렌더러(VMR-7 또는 VMR-9) 또는 EVR( 고급 비디오 렌더러 필터)을 사용하여 비디오를 렌더링하는 DirectShow 재생 그래프를 빌드합니다.
  2. IAMCertifiedOutputProtection 인터페이스에 대한 VMR을 쿼리합니다.
  3. IAMCertifiedOutputProtection::KeyExchange를 호출합니다. 이 메서드는 드라이버의 2048비트 RSA 공개 키를 포함하는 인증서 체인과 함께 드라이버에서 128비트 난수를 반환합니다.

인증서 체인 유효성 검사

  1. 인증서 체인의 유효성을 검사합니다. 인증서 체인이 유효하지 않으면 중지합니다.
  2. CRL(인증서 해지 목록)을 확인합니다. 인증서 체인의 인증서가 해지 목록에 표시되면 중지합니다.
  3. 인증서 체인에서 RSA 공개 키를 가져옵니다.

COPP 세션 초기화

  1. 128비트 AES 세션 키를 생성합니다. 이 키는 데이터에 서명하고 서명된 데이터가 변조되지 않았는지 확인하는 데 사용됩니다.
  2. 두 개의 암호화 보안 32비트 난수를 생성합니다. 첫 번째는 상태 시퀀스 번호이고 두 번째는 명령 시퀀스 번호입니다. 애플리케이션이 명령 또는 상태 요청을 보낼 때마다 해당 시퀀스 번호를 증가시키고 COPP 명령 또는 요청 데이터에 이 숫자를 포함합니다.
  3. 그래픽 드라이버, AES 세션 키, 상태 시퀀스 번호 및 명령 시퀀스 번호의 128비트 난수를 연결합니다. 드라이버의 공개 키를 사용하여 이 바이트 배열을 암호화하고 결과를 IAMCertifiedOutputProtection::SessionSequenceStart에 전달합니다.

COPP 명령 및 상태 요청 보내기

  1. IAMCertifiedOutputProtection::P rotectionStatus를 호출하여 사용 가능한 보호 유형 및 기타 정보를 쿼리합니다.
  2. IAMCertifiedOutputProtection::P rotectionCommand를 호출하여 원하는 보호 수준을 설정합니다.
  3. 현재 로컬 보호 수준을 주기적으로 쿼리합니다. 로컬 보호 수준이 예기치 않게 변경되거나 문제가 감지되면 재생을 중지합니다.

COPP(Certified Output Protection Protocol) 사용