하드웨어 DRM

이 항목에서는 PlayReady 하드웨어 기반 DRM(디지털 권한 관리)을 UWP(유니버설 Windows 플랫폼) 앱에 추가하는 방법에 대한 개요를 제공합니다.

참고 항목

하드웨어 기반 PlayReady DRM은 Windows 및 비 Windows 디바이스(예: TV 세트, 휴대폰 및 태블릿)를 비롯한 다양한 디바이스에서 지원됩니다. Windows 디바이스가 PlayReady 하드웨어 DRM을 지원하려면 Windows 10을 실행하고 지원되는 하드웨어 구성이 있어야 합니다.

점점 더 많은 콘텐츠 공급자가 앱에서 높은 가치의 콘텐츠를 재생할 수 있는 권한을 부여하기 위해 하드웨어 기반 보호로 전환하고 있습니다. 이러한 요구를 충족하기 위해 암호화 코어의 하드웨어 구현에 대한 강력한 지원이 PlayReady에 추가되었습니다. 이 지원을 통해 여러 디바이스 플랫폼에서 고화질(1080p) 및 초고화질(UHD) 콘텐츠를 안전하게 재생할 수 있습니다. 키 자료(프라이빗 키, 콘텐츠 키 및 해당 키를 파생하거나 잠금 해제하는 데 사용되는 기타 키 자료 포함) 및 암호 해독된 압축 및 압축되지 않은 비디오 샘플은 하드웨어 보안을 활용하여 보호됩니다.

Windows TEE 구현

이 항목에서는 Windows 10에서 TEE(신뢰할 수 있는 실행 환경)를 구현하는 방법에 대한 간략한 개요를 제공합니다.

Windows TEE 구현에 대한 세부 정보는 이 문서의 범위를 벗어납니다. 그러나 표준 포팅 키트 TEE 포트와 Windows 포트 간의 차이점에 대해 간략하게 설명하면 도움이 될 것입니다. Windows는 OEM 프록시 계층을 구현하고 직렬화된 PRITEE 함수 호출을 Windows Media Foundation 하위 시스템의 사용자 모드 드라이버로 전송합니다. 결국 Windows TrEE(신뢰할 수 있는 실행 환경) 드라이버 또는 OEM의 그래픽 드라이버로 라우팅됩니다. 이러한 방법 중 하나에 대한 세부 정보는 이 문서의 범위를 벗어났습니다. 다음 다이어그램에서는 Windows 포트에 대한 일반적인 구성 요소 상호 작용을 보여 줍니다. Windows PlayReady TEE 구현을 개발하려는 경우 WMLA@Microsoft.com에 연락할 수 있습니다.

windows tee component diagram

하드웨어 DRM 사용에 대한 고려 사항

이 항목에서는 하드웨어 DRM을 사용하도록 설계된 앱을 개발할 때 고려해야 할 항목의 간략한 목록을 제공합니다. PlayReady DRM에서 설명한 대로 Windows 10용 PlayReady HWDRM을 사용하여 모든 출력 보호는 Windows TEE 구현 내에서 적용되며 출력 보호 동작에 몇 가지 결과가 있습니다.

  • 압축되지 않은 디지털 비디오 270에 대한 OPL(출력 보호 수준) 지원: Windows 10용 PlayReady HWDRM은 다운 해상도를 지원하지 않으며 HDCP가 사용되도록 적용합니다. HWDRM의 고화질 콘텐츠에는 OPL이 270보다 큰 것이 좋습니다(필수는 아니지만). 또한 라이선스(Windows 10의 HDCP 버전 2.2)에서 HDCP 형식 제한을 설정하는 것이 좋습니다.
  • SWDRM(소프트웨어 DRM)와 달리 출력 보호는 최소 지원 모니터를 기반으로 모든 모니터에 적용됩니다. 예를 들어 사용자에게 모니터 중 하나가 HDCP를 지원하고 다른 하나는 연결되지 않는 두 개의 모니터가 연결되어 있는 경우 콘텐츠가 HDCP를 지원하는 모니터에서만 렌더링되더라도 라이선스에 HDCP가 필요한 경우 재생이 실패합니다. 소프트웨어 DRM에서 콘텐츠는 HDCP를 지원하는 모니터에서만 렌더링되는 한 재생됩니다.
  • 콘텐츠 키 및 라이선스에서 다음 조건을 충족하지 않는 한 HWDRM은 클라이언트에서 사용하고 보안을 보장하지 않습니다.
    • 비디오 콘텐츠 키에 사용되는 라이선스의 최소 보안 수준 속성은 3000이어야 합니다.
    • 오디오는 비디오와 다른 콘텐츠 키로 암호화해야 하며 오디오에 사용되는 라이선스의 최소 보안 수준 속성은 2000이어야 합니다. 또는 오디오를 명확하게 남겨둘 수 있습니다.

또한 HWDRM을 사용할 때 다음 항목을 고려해야 합니다.

  • PMP(보호된 미디어 프로세스)는 지원되지 않습니다.
  • Windows Media 비디오(VC-1이라고도 함)는 지원되지 않습니다(하드웨어 DRM 재정의 참조).
  • 영구 라이선스에는 여러 GPU(그래픽 처리 장치)가 지원되지 않습니다.

여러 GPU가 있는 컴퓨터에서 영구 라이선스를 처리하려면 다음 시나리오를 고려하세요.

  1. 고객은 통합 그래픽 카드 사용하여 새 컴퓨터를 구입합니다.
  2. 고객은 하드웨어 DRM을 사용하는 동안 영구 라이선스를 획득하는 앱을 사용합니다.
  3. 이제 영구 라이선스가 해당 그래픽 카드 하드웨어 키에 바인딩됩니다.
  4. 그런 다음 고객은 새 그래픽 카드 설치합니다.
  5. 해시된 데이터 저장소(HDS)의 모든 라이선스는 통합 비디오 카드 바인딩되지만, 이제 고객은 새로 설치된 그래픽 카드 사용하여 보호된 콘텐츠를 재생하려고 합니다.

하드웨어에서 라이선스의 암호를 해독할 수 없기 때문에 재생이 실패하지 않도록 하기 위해 PlayReady는 발생하는 각 그래픽 카드 별도의 HDS를 사용합니다. 이로 인해 PlayReady는 PlayReady에 일반적으로 이미 라이선스가 있는 콘텐츠(즉, 소프트웨어 DRM의 경우 또는 하드웨어 변경이 없는 경우 PlayReady에서 라이선스를 다시 가져올 필요가 없음)에 대한 라이선스 취득을 시도하게 됩니다. 따라서 앱이 하드웨어 DRM을 사용하는 동안 영구 라이선스를 획득하는 경우 최종 사용자가 그래픽 카드 설치(또는 제거)하는 경우 해당 라이선스가 효과적으로 "손실"되는 경우를 처리할 수 있어야 합니다. 이는 일반적인 시나리오가 아니므로 클라이언트/서버 코드에서 하드웨어 변경을 처리하는 방법을 파악하는 대신 하드웨어 변경 후 콘텐츠가 더 이상 재생되지 않을 때 지원 호출을 처리하도록 결정할 수 있습니다.

하드웨어 DRM 재정의

이 섹션에서는 재생되는 콘텐츠가 하드웨어 DRM을 지원하지 않는 경우 HWDRM(하드웨어 DRM)을 재정의하는 방법을 설명합니다.

기본적으로 하드웨어 DRM은 시스템에서 지원하는 경우 사용됩니다. 그러나 일부 콘텐츠는 하드웨어 DRM에서 지원되지 않습니다. 이 중 한 가지 예는 칵테일 콘텐츠입니다. 또 다른 예로 H.264 및 HEVC 이외의 비디오 코덱을 사용하는 콘텐츠가 있습니다. 또 다른 예로 HEVC 콘텐츠를 들 수 있는데, 일부 하드웨어 DRM은 HEVC를 지원하지만 일부는 지원하지 않습니다. 따라서 콘텐츠를 재생하려는 경우 하드웨어 DRM이 해당 시스템에서 지원하지 않는 경우 하드웨어 DRM을 옵트아웃할 수 있습니다.

다음 예제에서는 하드웨어 DRM을 옵트아웃하는 방법을 보여줍니다. 전환하기 전에 이 작업을 수행해야 합니다. 또한 메모리에 PlayReady 개체가 없는지 확인합니다. 그렇지 않으면 동작이 정의되지 않습니다.

var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings.createContainer("PlayReady", Windows.Storage.ApplicationDataCreateDisposition.always);
localSettings.values["SoftwareOverride"] = 1;

하드웨어 DRM으로 다시 전환하려면 SoftwareOverride 값을 0으로 설정합니다.

모든 미디어 재생의 경우 MediaProtectionManager를 다음으로 설정해야 합니다.

mediaProtectionManager.properties["Windows.Media.Protection.UseSoftwareProtectionLayer"] = true;

하드웨어 DRM이 적용되는지, 소프트웨어 DRM이 적용되는지를 확인하는 가장 좋은 방법은 C:\Users\<username>\AppData\Local\Packages\<application name>\LocalCache\PlayReady\*를 확인하는 것입니다.

  • mspr.hds 파일이 있는 경우 소프트웨어 DRM에 있습니다.
  • 또 다른 *.hds 파일이 있으면 하드웨어 DRM이 적용되는 것입니다.
  • 전체 PlayReady 폴더를 삭제하고 테스트도 다시 시도할 수 있습니다.

하드웨어 DRM 유형 검색

이 섹션에서는 시스템에서 지원되는 하드웨어 DRM 유형을 검색하는 방법을 설명합니다.

PlayReadyStatics.CheckSupportedHardware 메서드를 사용하여 시스템에서 특정 하드웨어 DRM 기능을 지원하는지 여부를 확인할 수 있습니다. 예시:

bool isFeatureSupported = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.HEVC);

PlayReadyHardwareDRMFeatures 열거형에는 쿼리할 수 있는 하드웨어 DRM 기능 값의 유효한 목록이 포함되어 있습니다. 하드웨어 DRM이 지원되는지 확인하려면 쿼리에서 HardwareDRM 멤버를 사용합니다. 하드웨어가 HEVC(고효율 비디오 코딩)/H.265 코덱을 지원하는지 확인하려면 쿼리에서 HEVC 멤버를 사용합니다.

PlayReadyStatics.PlayReadyCertificateSecurityLevel 속성을 사용하여 클라이언트 인증서의 보안 수준을 가져와 하드웨어 DRM이 지원되는지 확인할 수도 있습니다. 반환된 인증서 보안 수준이 3000보다 크거나 같지 않으면 클라이언트가 개별화되거나 프로비전되지 않거나(이 속성이 0을 반환하는 경우) 하드웨어 DRM이 사용되지 않습니다(이 경우 이 속성은 3000보다 작은 값을 반환).

AES128CBC 하드웨어 DRM에 대한 지원 검색

Windows 10, 버전 1709부터 디바이스에서 AES128CBC 하드웨어 암호화에 대한 지원을 검색하려면 PlayReadyStatics.CheckSupportedHardware를 호출하고 열거 값 PlayReadyHardwareDRMFeatures.Aes128Cbc를 지정합니다. 이전 버전의 Windows 10에서 이 값을 지정하면 예외가 발생합니다. 이러한 이유로 열거 값이 있는지 확인하려면 ApiInformation.IsApiContractPresent를 호출하고 주요 계약 버전 5를 지정한 후 CheckSupportedHardware를 호출합니다.

bool supportsAes128Cbc = ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5);

if (supportsAes128Cbc)
{
    supportsAes128Cbc = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.Aes128Cbc);
}

참고 항목