다음을 통해 공유


PlayReady 버전 4.5의 새로운 기능

이 페이지에는 PlayReady 버전 4.4와 PlayReady 버전 4.5 간의 가장 중요한 변경 내용에 대한 개요가 포함되어 있습니다.

PlayReady 버전 4.5의 일반 변경 내용

PlayReady 서버 배포 인증서를 사용한 챌린지 암호화

이전 버전의 PlayReady에서 라이선스 취득 및 기타 클라이언트 문제는 항상 고정된 공개 키로 개인 정보로 암호화됩니다. PlayReady 4.5부터 지원 서버와만 통신하도록 코딩된 클라이언트는 Microsoft에서 서버 라이선스 사용자에게 발급된 PlayReady 서버 배포 인증서를 사용하여 문제를 개인 정보로 암호화할 수 있습니다. 그런 다음 PlayReady 서버 SDK는 고정 프라이빗 키 대신 PlayReady 서버 SDK 애플리케이션에서 전달한 해당 프라이빗 키로 챌린지의 암호를 해독합니다.

라이선스 서버 시간

이전 버전의 PlayReady에서 보안 시간 기능을 사용하려면 일반적으로 클라이언트 애플리케이션이 로컬 시계를 설정하는 데 사용되는 시간을 얻기 위해 별도의 보안 시간 서버와 통신해야 했습니다. PlayReady 4.5부터 지원 서버와만 통신하도록 코딩된 클라이언트는 라이선스 취득 중에 PlayReady Server SDK에서 제공하는 시간을 대신 사용할 수 있습니다. 자세한 내용은 PlayReady 신뢰할 수 있는 시계를 참조하세요.

키 Exchange

라이선스 획득 프로토콜을 사용하여 PlayReady 클라이언트와 서버는 이제 PlayReady를 사용하여 키 자체가 보호되는 임의의 애플리케이션 제공 데이터를 암호화, 암호 해독, 서명 및 확인하는 데 사용할 수 있는 임의의 키를 교환할 수 있습니다. 클라이언트가 SL3000인 경우 키 자체는 신뢰할 수 있는 실행 환경으로 보호됩니다. 자세한 내용은 PlayReady 키 Exchange 참조하세요.

워터마크 정책

PlayReady 규정 준수 규칙에 정의된 대로 워터마킹 신호 명시적 디지털 비디오 출력 제한 사용을 간소화하기 위해 기능이 추가되었습니다.

PlayReady Server SDK 버전 4.5의 변경 내용

일반 서버 변경 내용

키 Exchange 라이선스를 사용하여 라이선스를 취득하는 동안 클라이언트에 임의의 키를 제공할 수 있습니다.

클라이언트에서 제공하는 경우 지원되는 워터마크 기술은 PlayReady 서버 SDK 애플리케이션에 노출됩니다. 이렇게 하면 PlayReady 규정 준수 규칙에 정의된 워터마킹 신호 명시적 디지털 비디오 출력 제한의 사용이 간소화됩니다.

서버 API 설명서 변경 내용

PlayReady Server SDK의 .NET Standard 버전에 대한 새 서버 API 설명서가 만들어지고 게시되었습니다. .NET Standard SDK로 마이그레이션하는 것이 좋습니다.

PlayReady 설명서 팩에 포함된 PlayReady.chm 파일의 서버 API 설명서는 PlayReady 서버 SDK의 레거시 .NET Framework 버전에만 적용됩니다. 이 설명서는 이제 더 이상 사용되지 않는 것으로 간주되며 PlayReady 4.0 이후 업데이트되지 않았으며 향후 업데이트를 받지 않습니다.

두 SDK의 대부분의 API는 동일하므로 .NET Standard 설명서는 대부분의 용도로 충분해야 합니다. 그러나 클래스, 인터페이스 및 메서드가 다른 몇 가지 중요한 차이점이 있습니다.

다음은 두 SDK 간의 일반적인 차이점입니다.

  1. .NET Standard SDK는 .NET Framework SDK에서 클래스를 사용하는 여러 위치에서 인터페이스를 사용합니다.

  2. 애플리케이션에서 구현하는 .NET Standard SDK 처리기 인터페이스는 .NET Framework SDK에서 동기 메서드를 사용하는 비동기 메서드를 사용합니다. 따라서 .Net Standard SDK 처리기 인터페이스 API 이름은 "Async"라는 단어로 끝나고 클래스가 처리기 인터페이스 메서드와 관련된 클래스 대신 Task<> 클래스를 반환합니다.

  3. .NET Standard SDK는 전송에 구애받지 않습니다. 따라서 애플리케이션에 직접 제공되는 HTTP 컨텍스트는 없습니다. ASP.NET Core 사용하는 경우 ASP.NET Core 설명서, 특히 IHttpContextAccessor 인터페이스를 참조하세요.

  4. .NET Standard SDK는 패키징 콘텐츠 프로토콜을 지원하지 않습니다(예: IPackagingDataAcquisitionHandler가 없음). 이 기능은 PlayReady 4.6에서 복원됩니다.

PlayReady 4.5의 특정 차이점에 대한 전체 목록은 다음과 같습니다. 이 목록에는 .NET Standard SDK에만 존재하는 기능이 포함되지 않으며 복원될 제거된 모든 패키징 클래스도 나열되지 않습니다.

 

.NET Framework 클래스 또는 인터페이스 .NET Standard 동급 차이점
ProtocolChallengeContext 클래스 IProtocolChallengeContext 인터페이스 HttpRequest Request 속성은 위에서 설명한 대로 .NET Framework SDK에만 있습니다.
ProtocolChallenge 클래스 IProtocolChallenge 인터페이스 없음
IDeleteLicenseHandler 인터페이스 동일 ProcessDeleteLicenseDataAsync는 위에서 설명한 대로 .NET Framework SDK에서 동기적입니다.
DeleteLicenseDataChallenge 클래스 IDeleteLicenseDataChallenge 인터페이스 없음
IDomainHandler 인터페이스 동일 HandleJoinDomainAsync 및 HandleLeaveDomainAsync는 위에서 설명한 대로 .NET Framework SDK에서 동기적입니다.
JoinDomainChallenge 클래스 IDomainChallenge 및 IJoinDomainChallenge 인터페이스 정적 JoinDomainChallenge.GenerateDomainKeyPair 메서드가 .NET Standard SDK에 없습니다. 이 기능의 손실은 DomainCertificateBuilder에 정적 메서드로 추가하여 PlayReady 4.6에서 수정되는 버그입니다.
LeaveDomainChallenge 클래스 ILeaveDomainChallenge 인터페이스 없음
ILicenseAcknowledgementHandler 인터페이스 동일 HandleLicenseAcknowledgementAsync는 위에서 설명한 대로 .NET Framework SDK에서 동기적입니다.
LicenseAcknowledgementChallenge 클래스 ILicenseAcknowledgementChallenge 인터페이스 없음
ILicenseAcquisitionHandler 인터페이스 동일 HandleLicenseAcquisitionAsync는 위에서 설명한 대로 .NET Framework SDK에서 동기적입니다.
LicenseChallenge 클래스 ILicenseChallenge 인터페이스 없음
IMeteringHandler 인터페이스 동일 GetMeteringCertificateAsync 및 ProcessMeteringDataAsync는 위에서 설명한 대로 .NET Framework SDK에서 동기적입니다.
MeteringCertificateChallenge 클래스 IMeteringCertificateChallenge 인터페이스 없음
ProcessMeteringDataChallenge 클래스 IProcessMeteringDataChallenge 인터페이스 없음
ISecureStopHandler 인터페이스 동일 ProcessSecureStopDataAsync는 위에서 설명한 대로 .NET Framework SDK에서 동기적입니다.
SecureStopDataChallenge 클래스 ISecureStopDataChallenge 인터페이스 ISecureStop2Handler를 사용하는 GetSecureStopData 메서드 오버로드는 .NET Framework SDK에만 존재합니다. 대신 .NET Standard SDK는 다른 처리기와 마찬가지로 이 처리기를 로드합니다.
ISecureStopHandler2 인터페이스 동일 GetSecureStop2AESKeyAsync는 위에서 설명한 대로 .NET Framework SDK에서 동기적입니다.
PlayReadyServerAuthorization 클래스 동일 클래스의 메서드는 .NET Framework SDK 및 .NET Standard SDK의 인스턴스에서 정적입니다.

서버 API 변경 내용

이것은 단지 개요일 뿐입니다. 자세한 내용은 서버 API 설명서를 참조하세요 .

라이선스가 추가되지 않은 경우 LicenseResponse.GetLicenses 메서드는 이제 null 대신 빈 배열을 반환합니다.

다음 클래스와 열거형이 추가되었습니다.

  • AdvancedLicense 클래스(abstract, Inherits from License) - MediaLicense의 하위 집합 기존 속성 및 메서드가 이 클래스로 이동되었으며 MediaLicense는 이제 AbstractLicense에서 상속됩니다. MediaLicense를 사용하기 위해 애플리케이션을 변경할 필요가 없습니다.
  • KeyExchangeLicense 클래스(AdvancedLicense에서 상속됨) - 라이선스 취득 중에 클라이언트에 임의의 키를 제공하는 라이선스를 만드는 데 사용됩니다.
  • KeyExchangeRight 클래스(오른쪽에서 상속) - KeyExchange 라이선스에 대한 키 및 허용되는 사용을 지정하는 데 사용됩니다.
  • KeyExchangeAlgorithm 열거형 - KeyExchange 라이선스에서 키에 허용되는 사용량을 지정하는 데 사용됩니다.
  • WatermarkVendor 클래스 - 클라이언트의 지원되는 워터마크 기술을 애플리케이션에 노출하는 데 사용됩니다.
  • LicenseServerTimeCertificate 클래스 - 라이선스 획득 응답에서 반환된 라이선스 서버 시간에 서명하기 위한 인증서를 포함하는 데 사용됩니다.

다음은 개별 클래스에 추가되었습니다.

  • PlayReadyHeader 클래스는 헤더가 스트림당 키에 대한 지원을 나타내는지 여부와 라이선스를 명시적으로 요청하는지 여부를 표시합니다.
  • ContentKeyType 열거형은 KeyExchange 값을 추가합니다.
  • 인증서 클래스는 인증서의 다이제스트 및 발급자 공개 키를 노출하는 바이트 배열 속성을 추가합니다.
  • 라이선스 클래스는 라이선스의 고유 ID를 노출하는 guid 속성과 라이선스에 추가된 권한을 반환하는 IEnumerable<Right> 속성을 추가합니다.
  • LicenseChallengeTeeAPIs 열거형은 모든 새 PK 4.5 TEE API에 대한 값을 추가합니다.
  • LicenseChallengeReeFeatures 열거형은 LicenseServerTime 및 KeyExchange에 대한 값을 추가합니다.
  • LicenseChallenge 클래스는 클라이언트가 지원하는 KeyExchangeAlgorithm 목록, 클라이언트가 지원하는 WatermarkVendors, 클라이언트의 TEE 및 REE의 PK 버전(동일하거나 같지 않을 수 있음) 및 클라이언트에 현재 LicenseServerTime이 필요한지 여부를 추가합니다.
  • LicenseResponse 클래스는 라이선스 획득 응답에서 반환된 라이선스 서버 시간에 서명하는 데 사용되는 인증서를 설정하기 위한 LicenseServerTimeCertificate 속성을 추가합니다.
  • ExplicitOutputRestrictionsConstants 클래스는 워터마크 및 InternalScreenOnly에 대한 상수를 추가합니다. 이러한 GUID에 대한 자세한 내용은 PlayReady 준수 규칙을 참조하세요.

PlayReady 디바이스 포팅 키트 버전 4.5의 변경 내용

일반 디바이스 포팅 키트 변경 내용

  • 전체 PlayReady 디바이스 포팅 키트가 MICROSOFT SAL(소스 코드 주석 언어) 2.0으로 업데이트되었습니다.
  • Microsoft 내부 구현에서만 사용되는 지원되지 않는 일부 코드 경로는 혼동을 제거하고 컴파일 시간과 이진 크기를 줄이기 위해 제거되었습니다. 이 영역의 추가 개선 사항은 향후 릴리스에 포함될 예정입니다.
  • 기본 컴파일러 및 컴퓨터 아키텍처에서 지원되는 경우 이제 네이티브 128비트 정수 형식을 사용하여 ECC256의 기본 구현을 가속화할 수 있습니다.
  • SHA256 HMAC 알고리즘의 기본 구현이 추가되었습니다.

디바이스 포팅 키트 API 변경 내용

이것은 단지 개요일 뿐입니다. 자세한 내용은 PlayReady 디바이스 포팅 키트 의 연결된 코드 주석에 제공된 API 설명서를 참조하세요.

이제 DRM_CDMI_SetServercertificate 라이선스 취득 및 기타 클라이언트 문제를 암호화하기 위해 PlayReady Server 배포 인증서를 사용하여 호출할 수 있습니다. 함수는 이 시나리오에서 Drm_AppContext_SetProperty 전달합니다. 기존 사용량은 그대로 유지됩니다.

다음 공용 함수가 추가되었습니다.

  • Drm_AppContext_SetProperty
  • Drm_KeyExchange_Prepare
  • Drm_KeyExchange_Perform
  • Drm_KeyExchange_Close

다음 구조가 추가되었습니다.

  • DRM_DGP_REE_FEATURE_LIST_4_5
  • DRM_DGP_TEE_API_LIST_4_5

다음 TEE API가 추가되었습니다.

  • DRM_TEE_BASE_GetSystemTime2
  • DRM_TEE_LICPREP_PackageKey2
  • DRM_TEE_LICENSESERVERTIME_ProcessResponseData
  • DRM_TEE_DECRYPT_PrepareToDecrypt2
  • DRM_TEE_LICGEN_CompleteLicense2
  • DRM_TEE_KEYEXCHANGE_Prepare
  • DRM_TEE_KEYEXCHANGE_Perform

다음 OEM TEE API가 추가되었습니다.

  • OEM_TEE_BASE_ECC256_SetKey
  • OEM_TEE_CRYPTO_SHA256_HMAC_VerifyMAC
  • OEM_TEE_CRYPTO_SHA256_HMAC_CreateMAC
  • OEM_TEE_PERSISTENTSTORAGE_Read
  • OEM_TEE_PERSISTENTSTORAGE_Write
  • OEM_TEE_GetSupportedWatermarkVendors

다음 OEM TEE API는 기능 변경 없이 이름이 바뀌었습니다.

이전 이름 새 이름
OEM_TEE_DECRYPT_UnshuffleScalableContentKeys OEM_TEE_BASE_UnshuffleScalableContentKeys
OEM_TEE_DECRYPT_CalculateContentKeyPrimeWithAES128Key OEM_TEE_BASE_CalculateContentKeyPrimeWithAES128Key
OEM_TEE_DECRYPT_DeriveScalableKeyWithAES128Key OEM_TEE_BASE_DeriveScalableKeyWithAES128Key
OEM_TEE_DECRYPT_InitUplinkXKey OEM_TEE_BASE_InitUplinkXKey
OEM_TEE_DECRYPT_UpdateUplinkXKey OEM_TEE_BASE_UpdateUplinkXKey
OEM_TEE_DECRYPT_DecryptContentKeysWithDerivedKeys OEM_TEE_BASE_DecryptContentKeysWithDerivedKeys
OEM_TEE_DECRYPT_EnforcePolicy OEM_TEE_POLICY_Enforce