보호된 미디어 경로

이 항목에서는 보호된 환경, 미디어 상호 운용성 게이트웨이, 해지 및 갱신이라는 세 가지 상호 관련된 topics 대해 설명합니다.

  • PE(보호된 환경)는 보호된 콘텐츠가 보호된 방식으로 Windows Vista에서 들어오고 통과하도록 하는 일련의 기술입니다. 보호된 환경 내의 모든 구성 요소는 신뢰할 수 있으며 프로세스는 변조로부터 보호됩니다.
  • PMP(보호된 미디어 경로)는 보호된 환경에서 실행되는 실행 파일입니다.
  • PE의 신뢰할 수 있는 구성 요소가 손상되면 적법한 프로세스 후에 해지됩니다. 그러나 Microsoft는 사용할 수 있게 되면 최신 신뢰할 수 있는 버전의 구성 요소를 설치하는 갱신 메커니즘을 제공합니다.

보호된 미디어 구성 요소에 대한 코드 서명에 대한 자세한 내용은 Windows Vista의 보호된 미디어 구성 요소에 대한 코드 서명을 참조하세요.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

보호된 환경

콘텐츠 보호에는 콘텐츠 소유자 또는 공급자의 의도와 일치하지 않는 방식으로 콘텐츠를 사용할 수 없도록 하는 여러 기술이 포함됩니다. 이러한 기술에는 복사 보호, 링크 보호, 조건부 액세스 및 DRM(디지털 권한 관리)이 포함됩니다. 각각의 기초는 신뢰입니다. 콘텐츠에 대한 액세스는 해당 콘텐츠에 할당된 사용 약관을 준수하는 소프트웨어 구성 요소에만 부여됩니다.

보호된 콘텐츠에 대한 위협을 최소화하기 위해 Windows Vista 및 Media Foundation Software를 사용하면 보호된 환경에서 신뢰할 수 있는 코드를 실행할 수 있습니다. PE는 콘텐츠 불법 복제에 대한 보호를 강화하도록 설계된 구성 요소, 지침 및 도구 집합입니다.

PE를 보다 면밀히 검사하기 전에 최소화하도록 설계된 위협을 이해하는 것이 중요합니다. 사용자 모드 프로세스에서 미디어 애플리케이션을 실행한다고 가정합니다. 애플리케이션은 디코더와 같은 미디어 플러그 인을 포함하는 다양한 DLL(동적 링크 라이브러리)에 연결됩니다. 다른 프로세스도 사용자 모드에서 실행되고 다양한 드라이버가 커널에 로드됩니다. 트러스트 메커니즘이 없는 경우 다음과 같은 위협이 존재합니다.

  • 애플리케이션은 보호된 미디어에 직접 액세스하거나 프로세스 메모리를 해킹할 수 있습니다.
  • 플러그 인은 콘텐츠에 직접 액세스하거나 프로세스 메모리를 해킹할 수 있습니다.
  • 다른 프로세스는 직접 또는 코드를 삽입하여 미디어 프로세스 메모리를 해킹할 수 있습니다.
  • 커널 드라이버는 미디어 프로세스 메모리를 해킹할 수 있습니다.
  • 콘텐츠는 보호되지 않는 매체를 통해 시스템 외부로 전송될 수 있습니다. (링크 보호는 이 위협을 완화하도록 설계되었습니다.)

보호된 환경 디자인

보호된 환경은 미디어 애플리케이션과 별도의 보호된 프로세스에서 실행됩니다. Windows Vista의 보호된 프로세스 기능은 다른 프로세스가 보호된 프로세스에 액세스하지 못하도록 합니다.

보호된 프로세스를 만들 때 핵심 커널 구성 요소는 신뢰할 수 없는 구성 요소 및 플러그 인을 식별하여 보호된 환경에서 로드를 거부할 수 있도록 합니다. 신뢰할 수 있는 구성 요소는 Microsoft에서 적절하게 서명한 구성 요소입니다. 또한 커널은 로드되는 모듈을 추적하여 신뢰할 수 없는 모듈이 로드되는 경우 보호된 환경에서 보호된 콘텐츠의 재생을 중지할 수 있도록 합니다. 커널 구성 요소가 로드되기 전에 커널이 신뢰할 수 있는지 여부를 확인합니다. 그렇지 않은 경우 PE에 이미 있는 신뢰할 수 있는 구성 요소는 보호된 콘텐츠 처리를 거부합니다. 이를 위해 PE 구성 요소는 커널을 사용하여 주기적으로 암호화된 핸드셰이크를 수행합니다. 신뢰할 수 없는 커널 모드 구성 요소가 있으면 핸드셰이크가 실패하고 PE에 신뢰할 수 없는 구성 요소가 있음을 나타냅니다.

신뢰할 수 있는 구성 요소가 손상되면 적법한 프로세스 후에 해지할 수 있습니다. Microsoft는 사용 가능한 경우 신뢰할 수 있는 최신 버전을 설치하는 갱신 메커니즘을 제공합니다.

보호된 미디어 경로

PMP(보호된 미디어 경로)는 Media Foundation의 기본 PE 실행 파일입니다. 타사 콘텐츠 보호 메커니즘을 지원하려면 PMP를 확장할 수 있습니다.

PMP는 제3자가 제공하는 콘텐츠를 포함하여 모든 콘텐츠 보호 시스템을 사용하여 Media Foundation 원본의 보호된 콘텐츠 및 관련 정책을 허용합니다. 싱크가 원본에서 지정한 정책을 준수하는 한 모든 Media Foundation 싱크에 콘텐츠를 보냅니다. 또한 신뢰할 수 있는 한 타사 변환을 포함하여 원본과 싱크 간의 변환을 지원합니다.

PMP는 미디어 애플리케이션에서 격리된 보호된 프로세스에서 실행됩니다. 애플리케이션에는 PMP와 명령 및 제어 메시지를 교환할 수 있는 기능만 있지만, PMP에 전달된 후에는 콘텐츠에 액세스할 수 없습니다. 다음 다이어그램에서는 이 프로세스를 보여 줍니다.

보호된 미디어 경로 다이어그램

음영 상자는 타사에서 제공할 수 있는 구성 요소를 나타냅니다. 보호된 프로세스 내에서 만든 모든 구성 요소는 서명되고 신뢰할 수 있어야 합니다.

애플리케이션은 보호된 프로세스 내에 미디어 세션의 instance 만들고 프로세스 경계를 넘어 인터페이스 포인터를 마샬링하는 프록시 미디어 세션에 대한 포인터를 받습니다.

미디어 원본은 여기에 표시된 대로 애플리케이션 프로세스 내에서 또는 보호된 프로세스 내에서 만들 수 있습니다. 미디어 원본이 애플리케이션 프로세스 내에서 만들어지면 원본은 보호된 프로세스에서 자체 프록시를 만듭니다.

디코더 및 미디어 싱크와 같은 다른 모든 파이프라인 구성 요소는 보호된 프로세스에서 만들어집니다. 이러한 개체가 애플리케이션에 대한 사용자 지정 인터페이스를 노출하는 경우 인터페이스를 마샬링하는 DCOM 프록시/스텁을 제공해야 합니다.

파이프라인을 통해 흐르는 보호된 콘텐츠에 대한 정책을 적용하기 위해 PMP는 ITA(입력 신뢰 기관), 출력 신뢰 기관(OTA) 및 정책 개체의 세 가지 유형의 구성 요소를 사용합니다. 이러한 구성 요소는 콘텐츠를 사용할 수 있는 권한을 부여하거나 제한하고 HDCP(고대역폭 디지털 콘텐츠 보호)와 같이 콘텐츠를 재생할 때 사용해야 하는 링크 보호를 지정하기 위해 함께 작동합니다.

입력 신뢰 기관

ITA는 신뢰할 수 있는 미디어 원본에 의해 생성되며 다음과 같은 여러 기능을 수행합니다.

  • 콘텐츠를 사용할 권한을 지정합니다. 권한에는 콘텐츠를 재생하고, 디바이스로 전송하는 등의 권한이 포함될 수 있습니다. 승인된 출력 보호 시스템의 순서가 지정된 목록과 각 시스템에 대한 해당 출력 정책을 정의합니다. ITA는 이 정보를 정책 개체에 저장합니다.
  • 콘텐츠의 암호를 해독하는 데 필요한 암호 해독기를 제공합니다.
  • 보호된 환경에서 커널 모듈을 사용하여 신뢰를 설정하여 ITA가 신뢰할 수 있는 환경 내에서 실행되고 있는지 확인합니다.

ITA는 보호된 콘텐츠를 포함하는 개별 스트림과 연결됩니다. 스트림에는 하나의 ITA만 있을 수 있으며 ITA의 instance 하나의 스트림에만 연결할 수 있습니다.

출력 신뢰 기관

OTA는 신뢰할 수 있는 출력과 연결됩니다. OTA는 재생 또는 복사와 같이 신뢰할 수 있는 출력이 콘텐츠에서 수행할 수 있는 작업을 노출합니다. 해당 역할은 ITA에 필요한 하나 이상의 출력 보호 시스템을 적용하는 것입니다. OTA는 ITA에서 제공하는 정책 개체를 쿼리하여 적용해야 하는 보호 시스템을 결정합니다.

정책 개체

정책 개체는 ITA의 콘텐츠 보호 요구 사항을 캡슐화합니다. 정책 엔진에서 OTA와 콘텐츠 보호 지원을 협상하는 데 사용됩니다. OTA는 정책 개체를 쿼리하여 현재 콘텐츠의 각 출력에 적용해야 하는 보호 시스템을 결정합니다.

PMP에서 개체 만들기

PMP(보호된 미디어 경로)에 개체를 만들기 위해 IMFMediaSource는 지정된 입력 IStream 형식을 사용하여 IMFPMPHostApp::ActivateClassById를 호출합니다.

Format: (All DWORD values are serialized in little-endian order)
[GUID (content protection system guid, obtained from Windows.Media.Protection.MediaProtectionSystemId)]
[DWORD (track count, use the actual track count even if all tracks are encrypted using the same data, note that zero is invalid)]
[DWORD (next track ID, use -1 if all remaining tracks are encrypted using the same data)]
[DWORD (next track's binary data size)]
[BYTE* (next track's binary data)]
{ Repeat from "next track ID" above for each stream }

정책 협상 개요

PMP에서 보호된 콘텐츠를 처리하기 전에 충족해야 하는 세 가지 기본 요구 사항이 있습니다. 먼저 보호된 콘텐츠는 신뢰할 수 있는 출력으로만 보내야 합니다. 둘째, 허용된 작업만 스트림에 적용해야 합니다. 셋째, 승인된 출력 보호 시스템만 스트림을 재생하는 데 사용해야 합니다. 정책 엔진은 ITA와 OTA 간에 조정하여 이러한 요구 사항이 충족되도록 합니다.

프로세스를 이해하는 가장 쉬운 방법은 WMDRM(Windows Media Digital Rights Management)으로 보호되는 ASF(Advanced System Format) 콘텐츠를 재생하는 데 필요한 단계를 식별하는 간소화된 예제를 안내하는 것입니다.

사용자가 플레이어 애플리케이션을 시작하고 보호된 오디오 스트림과 보호된 비디오 스트림이 있는 ASF 파일을 열면 다음 단계를 수행해야 합니다.

  1. 애플리케이션은 ASF 미디어 원본 및 PMP(보호된 미디어 경로) 세션을 만듭니다. Media Foundation은 PMP 프로세스를 만듭니다.
  2. 애플리케이션은 오디오 렌더러에 연결된 오디오 원본 노드와 향상된 EVR(비디오 렌더러)에 연결된 비디오 원본 노드가 포함된 부분 토폴로지를 만듭니다. 렌더러의 경우 애플리케이션은 렌더러를 직접 만들지 않습니다. 대신 애플리케이션은 보호되지 않는 프로세스에서 활성화 개체라고 하는 개체를 만듭니다. PMP는 활성화 개체를 사용하여 보호된 프로세스에서 렌더러를 만듭니다. (활성화 개체에 대한 자세한 내용은 활성화 개체를 참조하세요.)
  3. 애플리케이션은 PMP 세션에서 부분 토폴로지를 설정합니다.
  4. PMP 세션은 토폴로지를 직렬화하고 보호된 프로세스의 PMP 호스트에 전달합니다. PMP 호스트는 토폴로지를 정책 엔진으로 보냅니다.
  5. 토폴로지 로더는 ITA 에서 IMFInputTrustAuthority::GetDecrypter 를 호출하고 해당 원본 노드의 바로 다운스트림에 암호 해독기를 토폴로지로 삽입합니다.
  6. 토폴로지 로더는 암호 해독기 노드의 오디오 및 비디오 디코더 다운스트림을 삽입합니다.
  7. 정책 엔진은 삽입된 노드를 검사하여 IMFTrustedOutput 인터페이스를 구현하는지 여부를 확인합니다. EVR과 오디오 렌더러는 모두 PMP 외부에서 데이터를 보내기 때문에 IMFTrustedOutput을 구현합니다.
  8. 각 ITA는 보호된 환경 커널 모듈을 사용하여 암호화 핸드셰이크를 수행하여 보호된 프로세스 내에서 실행 중임을 확인합니다.
  9. 각 스트림에 대해 정책 엔진은 ITA에서 정책 개체를 가져오고 OTA에 전달하여 정책을 협상합니다. OTA는 지원하는 보호 시스템 목록을 제공하며 정책 개체는 올바른 설정과 함께 적용해야 하는 보호 시스템을 나타냅니다. 그런 다음 OTA는 이러한 설정을 적용합니다. 이렇게 할 수 없는 경우 콘텐츠가 차단됩니다.

해지 및 갱신

신뢰할 수 있는 구성 요소가 손상되었거나 처음 신뢰할 수 있는 사용권 계약을 위반하는 것으로 확인되면 해지될 수 있습니다. 더 신뢰할 수 있는 최신 버전의 구성 요소를 설치하기 위한 갱신 메커니즘이 있습니다.

신뢰할 수 있는 구성 요소는 암호화 인증서를 사용하여 서명됩니다. Microsoft는 해지된 구성 요소를 식별하는 GRL(전역 해지 목록)을 게시합니다. GRL은 신뢰성을 보장하기 위해 디지털 서명됩니다. 콘텐츠 소유자는 정책 메커니즘을 통해 GRL의 현재 버전이 사용자의 컴퓨터에 있는지 확인할 수 있습니다.

프리미엄 비디오 콘텐츠를 볼 때 암호 해독되고 압축되지 않은 프레임은 물리적 커넥터를 통해 디스플레이 디바이스로 이동합니다. 콘텐츠 공급자는 물리적 커넥터를 가로질러 이동할 때 이 시점에서 비디오 프레임을 보호해야 할 수 있습니다. HDCP(디지털 콘텐츠 보호) High-Bandwidth DPCP(DisplayPort Content Protection)를 비롯한 다양한 보호 메커니즘이 있습니다. 비디오 OTA는 OPM( 출력 보호 관리자 )을 사용하여 이러한 보호를 적용합니다. 출력 보호 관리자는 그래픽 드라이버에 명령을 보내고 그래픽 드라이버는 정책에 필요한 링크 보호 메커니즘을 적용합니다.

비디오 ota와 opm 간의 관계를 보여 주는 다이어그램입니다.

미디어 파운데이션 정보

미디어 파운데이션 아키텍처

GPU 기반 콘텐츠 보호

출력 보호 관리자

PMP 미디어 세션