KR102363264B1 - 하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어 - Google Patents

하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어 Download PDF

Info

Publication number
KR102363264B1
KR102363264B1 KR1020177009729A KR20177009729A KR102363264B1 KR 102363264 B1 KR102363264 B1 KR 102363264B1 KR 1020177009729 A KR1020177009729 A KR 1020177009729A KR 20177009729 A KR20177009729 A KR 20177009729A KR 102363264 B1 KR102363264 B1 KR 102363264B1
Authority
KR
South Korea
Prior art keywords
media data
layer
metadata
data
encrypted
Prior art date
Application number
KR1020177009729A
Other languages
English (en)
Other versions
KR20170056613A (ko
Inventor
용준 우
샴 사드화니
새무얼 제이 웬커
브라이언 피 에반스
하니 파라그
루시아 다르사
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20170056613A publication Critical patent/KR20170056613A/ko
Application granted granted Critical
Publication of KR102363264B1 publication Critical patent/KR102363264B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/109Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/84Protecting input, output or interconnection devices output devices, e.g. displays or monitors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video stream decryption
    • H04N21/44055Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video stream decryption by partially decrypting, e.g. decrypting a video stream that has been partially encrypted
    • G06F2221/0797
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4627Rights management associated to the content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

하드웨어 보호된 디지털 권한 관리(DRM) 시스템들의 분야에서의 혁신들이 제시된다. 예를 들어, 하드웨어 보호된 DRM 시스템은 신뢰할 수 있는 계층과 신뢰할 수 없는 계층을 포함한다. 신뢰할 수 없는 계층에서, 제어 모듈은 암호화된 미디어 데이터를 포함하는 소스 미디어 데이터를 수신한다. 제어 모듈은 미디어 데이터에 관한 메타데이터를 처리한다. 어쩌면 신뢰할 수 있는 계층에 있는 모듈에 의해 노출되는, 메타데이터가 신뢰할 수 없는 계층 내에서 불투명(opaque)하지 않다. 신뢰할 수 있는 계층에서, 키 데이터를 사용하여, 모듈은, 소스 미디어 데이터로부터의 암호화된 미디어 데이터 또는 그의 전사된(transcripted) 버전일 수 있는, 암호화된 미디어 데이터를 복호화한다. 신뢰할 수 있는 계층에 있는 모듈은 복호화된 미디어 데이터를 디코딩한다. 신뢰할 수 없는 계층에 있는 호스트 디코더는, 신뢰할 수 없는 계층 내에서 복호화된 미디어 데이터 또는 키 데이터를 노출시키는 일 없이, 신뢰할 수 있는 계층에서의 디코딩, 렌더링 및/또는 디스플레이의 적어도 일부 양태들을 관리하기 위해 메타데이터를 사용한다.

Description

하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어{MEDIA DECODING CONTROL WITH HARDWARE-PROTECTED DIGITAL RIGHTS MANAGEMENT}
디지털 미디어 데이터의 재생은 스마트폰, 태블릿 컴퓨터, 개인용 컴퓨터, 게임 콘솔, 및 셋톱 박스와 같은 디바이스들 상에서 흔한 특징으로 되었다. 디지털 미디어 데이터의 배포 및 재생이 보다 보편화됨에 따라, 미디어 데이터를 비인가된(unauthorized) 복제, 배포 및 재생으로부터 보호하기 위해 다양한 디지털 권한 관리(digital rights management)(DRM)가 개발되었다. 전형적으로, DRM 시스템은, 인가된 당사자만이 미디어 데이터를 재생할 수 있도록, 미디어 데이터를 보호하기 위해 암호화를 사용한다. 인가된 당사자는 그러면 미디어 데이터를 재생을 위해 복호화하는 데 DRM 시스템을 사용할 수 있다. 암호화 이전에, 미디어 데이터는, 미디어 데이터의 비트 레이트를 감소시키기 위해, 압축되거나 인코딩될 수 있다. 그러한 경우, 미디어 데이터는, 복호화 이후 그러나 재생 이전에, 압축해제되거나 디코딩된다.
종종, DRM 시스템의 관심의 초점은 재생 디바이스에서 행해지는 동작들인데, 그 이유는 재생 디바이스가 복호화된 미디어 데이터가 가장 취약할 수 있는 곳이기 때문이다. 일부 DRM 시스템들에서, 재생 디바이스에서, 미디어 소스는 암호화된 미디어 데이터를 보호된 미디어 프로세스(보호된 미디어 파이프라인이라고도 불리움)에 제공한다. 미디어 소스는 신뢰할 수 없지만, 보호된 미디어 프로세스는 운영 체제에 의해, 미디어 재생 소프트웨어를 난독화하는 것 등에 의해, 기타에 의해 제공되는 보장들을 통해 안전한(secure) 것으로 이해된다. 이 아키텍처에서, 암호화된 미디어 데이터는 미디어 소스에 "불투명(opaque)"하다. 즉, 미디어 소스에 대해, 암호화에 의해 제공되는 안전성으로 인해, 암호화된 미디어 데이터는 (암호화가 크랙(crack)되지 않는 한) 비인가된 당사자에 의해 이해될 수 없다. 다른 한편으로, 이 아키텍처에서 복호화 이후에, 암호화된 미디어 데이터는 더 이상 불투명하지 않다 - 그것이 보호된 미디어 프로세스 내의 다양한 스테이지들에서 액세스가능하다 -.
보호된 미디어 프로세스가 비인가된 액세스, 복제, 배포, 재생 등에 대한 어떤 수준의 안전성을 제공하지만, 그것은 디바이스의 자원들에 대한 액세스를 가지는 소프트웨어에 의해 제공되는 보장들에 의존한다. 그렇지만, 그 소프트웨어가 손상될 수 있다. 예를 들어, 소프트웨어가 악의적인 사용자에 의해 해킹되거나 다른 방식으로 제어될 수 있다. 상세하게는, 보호된 미디어 프로세스에서 복호화기에 의해 생성된 "평문의(clear)" 미디어 데이터는 가로채기(interception)에 취약하고, 소프트웨어에 의해서만 보호되는 키들이 악용에 취약할 수 있다.
일부 유형들의 미디어 데이터(예컨대, 저품질 비디오 콘텐츠, 오래된 비디오 콘텐츠)의 경우에, 미디어 데이터의 소유자 또는 제공자에 대해 전형적인 소프트웨어 보호된 DRM 시스템에 의해 제공되는 보장들로 충분할 수 있다. 다른 유형들의 미디어 데이터(예컨대, 고품질 또는 고해상도 비디오 콘텐츠, 새로 출시한 것(new release))의 경우에, 이러한 보장들이 미디어 데이터가 안전하다는 충분한 수준의 확신을 소유자/제공자에게 제공하지 않을 수 있다. 이 때문에, 미디어 데이터의 일부 소유자들/제공자들은 하드웨어 보호된 DRM 시스템에 의해 제공되는 보장들을 추구한다. 일반적으로, 하드웨어 보호된 DRM 시스템에서, 키들 및 복호화된 미디어 데이터가 하드웨어 레벨 및/또는 안전한 펌웨어 레벨(secure firmware level)(운영 체제 아래에 있는 계층)에서 보호된다. 하드웨어 레벨 및 안전한 펌웨어 레벨은 소프트웨어 프로세스들에 의해 액세스가능하지 않다. 미디어 플레이어, 미디어 디코더 또는 운영 체제와 같은 소프트웨어는 신뢰할 수 없다. 이와 같이, 소프트웨어는 하드웨어 보호된 키들 및 복호화된 미디어 데이터에 액세스할 수 없다. 그 대신에, 키들 및 미디어 데이터가 암호화된 형태에서만 신뢰할 수 없는 소프트웨어에 의해 이용가능하고, 따라서 신뢰할 수 없는 소프트웨어에 대해 불투명하다. 하드웨어 보호된 DRM 시스템들이 소프트웨어 보호된 DRM 시스템들보다 더 나은 안전성 보장들을 제공하는 경향이 있지만, 그들은 유연하지 않을 수 있다. 상세하게는, 소프트웨어 제어된(software-controlled) 미디어 디코딩의 유연성이 하드웨어 보호 DRM 시스템들에서는 상실되거나 저해(hamper)된다.
요약하면, 상세한 설명은 하드웨어 보호된 디지털 권한 관리(DRM) 시스템들의 분야에서의 혁신들을 제시한다. 예를 들어, 하드웨어 보호된 DRM 시스템은, 복호화되어야 하는 암호화된 미디어 데이터를 포함하는, 소스 미디어 데이터를 처리한다. 하드웨어 보호된(hardware-protected) DRM 시스템의 신뢰할 수 없는 계층(untrusted layer)에서, 호스트 디코더는, 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층(trusted layer)에서 일어나는, 미디어 데이터의 디코딩, 렌더링 및/또는 디스플레이의 양태들을 관리하기 위해 미디어 데이터에 관한 메타데이터를 사용한다. 이러한 방식으로, 신뢰할 수 없는 계층에 있는 호스트 디코더는, 신뢰할 수 없는 계층 내에서 복호화된 미디어 데이터 또는 키 데이터를 노출시키는 일 없이, 신뢰할 수 있는 계층에서의 디코딩, 렌더링 및/또는 디스플레이의 다양한 양태들을 유연하게 관리할 수 있다.
본원에 기술되는 혁신들의 일 양태에 따르면, 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층에서, 제어 모듈은 암호화된 미디어 데이터("제1 암호화된 미디어 데이터", 예컨대, 하나 이상의 암호화된, 인코딩된 미디어 샘플들)를 포함하는 소스 미디어 데이터를 수신한다. 제어 모듈은 미디어 데이터에 관한 메타데이터를 처리한다. 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하지 않고, 제어 모듈 및/또는 신뢰할 수 있는 계층에 의해 노출될 수 있다. 신뢰할 수 없는 계층에 있는 호스트 디코더는 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층에서의 디코딩, 렌더링 및/또는 디스플레이의 적어도 일부 양태들을 관리하기 위해 메타데이터를 사용한다. 디코딩, 렌더링 및 디스플레이는, 제1 암호화된 미디어 데이터에 기초하는, 제2 암호화된 미디어 데이터의 신뢰할 수 있는 계층에서의 복호화에 뒤따른다(예컨대, 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터 또는 신뢰할 수 있는 계층에서 생성된 그의 전사된(transcrypted) 버전이다).
본원에 기술되는 혁신들의 다른 양태에 따르면, 하드웨어 보호된 DRM 시스템은 암호화된 미디어 데이터("제1 암호화된 미디어 데이터")를 처리한다. 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층에서, 모듈은 암호화된 미디어 데이터("제2 암호화된 미디어 데이터")를 키 데이터를 사용하여 복호화한다. 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터 또는 그의 전사된 버전일 수 있다. 신뢰할 수 있는 계층에 있는 모듈은 이어서 복호화된 미디어 데이터를 디코딩한다. 미디어 데이터에 관한 메타데이터는 신뢰할 수 있는 계층에서의 디코딩, 렌더링 및/또는 디스플레이의 적어도 일부 양태들을, 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층으로부터, 관리하는 데 사용된다. 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하지 않다.
본원에 기술되는 다양한 혁신들은 방법의 일부로서, 방법을 수행하도록 구성된 컴퓨팅 시스템의 일부로서, 또는 컴퓨팅 시스템으로 하여금 방법을 수행하게 하기 위한 컴퓨터 실행가능 명령어들을 가지는 유형적 컴퓨터 판독가능 매체의 일부로서 구현될 수 있다. 다양한 혁신들이 결합하여 또는 개별적으로 사용될 수 있다. 본원에 기술되는 바와 같이, 각종의 다른 특징들 및 장점들이 본 혁신들 내에 포함될 수 있다. 본 발명의 전술한 목적들, 특징들 및 장점들 그리고 다른 목적들, 특징들 및 장점들이, 첨부 도면들을 참조하여 계속되는, 이하의 발명을 실시하기 위한 구체적인 내용으로부터 보다 명백하게 될 것이다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 특징들 또는 필수적인 특징들을 언급하는 것으로 의도되어 있지도 않고, 청구된 발명 요지의 범주를 제한하기 위해 사용되는 것으로 의도되어 있지도 않다.
도 1은 일부 기술된 실시예들이 구현될 수 있는 예시적인 컴퓨팅 시스템의 블록도.
도 2 및 도 3은 일부 기술된 실시예들이 구현될 수 있는, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 아키텍처들을 나타낸 블록도.
도 4는 신뢰할 수 없는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 일반화된 기법을 나타내는 플로우차트.
도 5는 신뢰할 수 있는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 일반화된 기법을 나타내는 플로우차트.
도 6a 및 도 6b는 신뢰할 수 없는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 기법을 나타내는 플로우차트.
도 7a 및 도 7b는 신뢰할 수 있는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 기법을 나타내는 플로우차트.
도 8은 하드웨어 보호된 DRM에 의한 비디오 디코딩 제어의 일부 예시적인 구현들에서 슬라이스 헤더 파라미터들을 위한 데이터 구조체에 대한 의사 코드 목록을 나타낸 도면.
상세한 설명은 하드웨어 보호된 디지털 권한 관리(DRM) 시스템들의 분야에서의 혁신들을 제시한다. 예를 들어, 하드웨어 보호된 DRM 시스템은 신뢰할 수 있는 계층과 신뢰할 수 없는 계층을 포함한다. 하드웨어 보호된 DRM 시스템은, 복호화되어야 하는 암호화된 미디어 데이터를 포함하는, 소스 미디어 데이터를 처리한다. 신뢰할 수 없는 계층에서, 호스트 디코더는, 신뢰할 수 있는 계층에서 일어나는, 미디어 데이터의 디코딩, 렌더링 및/또는 디스플레이의 양태들을 관리하기 위해 미디어 데이터에 관한 메타데이터를 사용한다. 호스트 디코더는 신뢰할 수 있는 계층에서 디코딩하도록 구성된 특수 목적 디코딩 하드웨어 또는 그래픽 하드웨어를 제어하거나 구동하는 신뢰할 수 있는 계층에 있는 임의의 소프트웨어 또는 다른 기능일 수 있다. 이러한 방식으로, 신뢰할 수 없는 계층에 있는 호스트 디코더는, 신뢰할 수 없는 계층 내에서 복호화된 미디어 데이터 또는 키 데이터를 노출시키는 일 없이, 신뢰할 수 있는 계층에서의 디코딩, 렌더링 및/또는 디스플레이의 다양한 양태들을 유연하게 관리할 수 있다.
본원에 기술되는 예들에서, 상이한 도면들에서의 동일한 참조 번호들은 동일한 컴포넌트 또는 모듈을 가리킨다. 컨텍스트에 따라, 주어진 컴포넌트 또는 모듈은 상이한 유형의 정보를 입력으로서 받고 그리고/또는 상이한 유형의 정보를 출력으로서 생성할 수 있다.
보다 일반적으로, 본원에 기술되는 예들에 대한 다양한 대안들이 가능하다. 예를 들어, 본원에 기술되는 방법들 중 일부가 기술된 방법 동작들의 순서를 변경하는 것에 의해, 특정의 방법 동작들을 분할, 반복 또는 생략하는 것에 의해 변경될 수 있다. 상이한 실시예들이 기술된 혁신들 중 하나 이상을 사용한다. 본원에 기술되는 혁신들 중 일부는 배경 기술에서 살펴본 문제점들 중 하나 이상을 해결한다. 전형적으로, 주어진 기법/도구가 이러한 문제점들 모두를 해결하지는 않는다.
I. 예시적인 컴퓨팅 시스템.
도 1은 기술된 혁신들 중 몇몇이 구현될 수 있는 컴퓨팅 시스템(100)의 일반화된 예를 나타내고 있다. 혁신들이 미디어 복호화 및 디코딩을 위해 구성된 특수 목적 컴퓨팅 시스템들을 비롯한, 다양한 컴퓨팅 시스템들에서 구현될 수 있기 때문에, 컴퓨팅 시스템(100)은 용도 또는 기능의 범주에 관한 어떤 제한을 암시하는 것으로 의도되어 있지 않다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 적어도 하나의 처리 유닛들(1, 10) 및 메모리(120)를 포함한다. 처리 유닛들(1, 10)은 컴퓨터 실행가능 명령어들을 실행한다. 처리 유닛은 CPU(central processing unit) 또는 임의의 다른 유형의 프로세서일 수 있다. 다중 처리 시스템(multi-processing system)에서는, 처리 능력을 증가시키기 위해 다수의 처리 유닛들이 컴퓨터 실행가능 명령어들을 실행한다. 유형적 메모리(tangible memory)(120)는 처리 유닛(들)에 의해 액세스가능한, 휘발성 메모리(예컨대, 레지스터, 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 어떤 조합일 수 있다. 메모리(120)는, 처리 유닛(들)에 의해 실행하기에 적당한 컴퓨터 실행가능 명령어들의 형태로, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한(신뢰할 수 없는 계층에서의 동작들을 위한) 하나 이상의 혁신들을 구현하는 소프트웨어(190)를 저장한다.
컴퓨팅 시스템(100)은 또한 미디어 복호화 및 미디어 디코딩을 위한 신뢰할 수 있는(trusted) 시스템들을 포함한다. 도 1에서, 신뢰할 수 있는 SoC(system on a chip)(130)는 안전한 미디어 복호화를 위한 하드웨어와 펌웨어를 포함한다. 신뢰할 수 있는 SoC(130)는 복호화기 로직(132), 하나 이상의 보호된 버퍼(들)(134) 및 메모리(136)를 포함한다. 복호화기 로직(132)은 안전한 미디어 복호화를 구현하도록 특별히 설계되거나 구성된, 집적 회로(예컨대, ASIC(application specific integrated circuit) DSP(digital signal processor)와 같은 ASIC, GPU(graphics processing unit), 또는 FPGA(field programmable gate array)와 같은 PLD(programmable logic device))에 의해 구현될 수 있다. 보호된 버퍼(들)(134)는 복호화(그리고, 전사된 미디어 데이터(transcrypted media data)에 대해, 어쩌면 암호화)에서 사용되는 키들은 물론, 평문의(복호화된) 미디어 데이터를 저장할 수 있다. 메모리(136)는 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한(신뢰할 수 있는 계층에서의 동작들을 위한) 하나 이상의 혁신들을 구현하는 소프트웨어(190)(여기서, 펌웨어)를 저장한다.
다른 신뢰할 수 있는 SoC(140)는 디코더 로직(142), 하나 이상의 보호된 버퍼(들)(144) 및 메모리(146)를 포함한다. 디코더 로직(142)은 안전한 미디어 디코딩을 구현하도록 특별히 설계되거나 구성된, 집적 회로(예컨대, ASIC DSP와 같은 ASIC, GPU, 또는 FPGA와 같은 PLD)에 의해 구현될 수 있다. 보호된 버퍼(들)(144)는 디코딩된 미디어 데이터(즉, 미디어 샘플들)를 저장할 수 있다. 메모리(146)는 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한(신뢰할 수 없는(untrusted) 계층에서의 동작들을 위한) 하나 이상의 혁신들을 구현하는 소프트웨어(190)(여기서, 펌웨어)를 저장한다.
대안적으로, 미디어 복호화를 위한 신뢰할 수 있는 SoC(130)와 미디어 디코딩을 위한 신뢰할 수 있는 SoC(140)가 단일의 SoC로서 결합될 수 있다. 또는, 미디어 복호화를 위한 신뢰할 수 있는 SoC(130)와 미디어 디코딩을 위한 신뢰할 수 있는 SoC(140)가 특정 컴포넌트들(예컨대, 보호된 버퍼(들)(134/144))을 공유할 수 있다. 신뢰할 수 있는 계층 및/또는 신뢰할 수 없는 계층에서의 드라이버들의 하나 이상의 계층들(도시되지 않음)은 컴퓨팅 시스템(100)의 신뢰할 수 있는 SoC(들)와 다른 컴포넌트들 사이의 상호작용들을 중재할 수 있다.
컴퓨팅 시스템은 부가의 특징들을 가질 수 있다. 예를 들어, 컴퓨팅 시스템(100)은 저장소(180), 하나 이상의 입력 디바이스들(150), 하나 이상의 출력 디바이스들(160), 및 하나 이상의 네트워크 인터페이스 디바이스들(170)을 포함한다. 버스, 제어기, 또는 네트워크와 같은 상호연결 메커니즘(도시되지 않음)은 컴퓨팅 시스템(100)의 컴포넌트들을 상호연결시킨다. 전형적으로, OS 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(100)에서 실행 중인 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 시스템(100)의 컴포넌트들의 활동들을 조율한다.
유형적 저장소(180)는 이동식 또는 비이동식일 수 있고, 정보를 저장하는 데 사용될 수 있고 컴퓨팅 시스템(100) 내에서 액세스될 수 있는, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 임의의 다른 매체를 포함한다. 저장소(180)는, 처리 유닛(들)에 의해 실행하기에 적당한 컴퓨터 실행가능 명령어들의 형태로, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한(신뢰할 수 없는 계층에서의 동작들을 위한) 하나 이상의 혁신들을 구현하는 소프트웨어(190)를 저장한다.
입력 디바이스(들)(150)는 컴퓨팅 시스템(100)에 입력을 제공하는 키보드, 마우스, 펜, 또는 트랙볼과 같은 터치 입력 디바이스, 음성 입력 디바이스, 스캐닝 디바이스, 터치스크린, 또는 다른 디바이스일 수 있다. 출력 디바이스(들)(160)는 컴퓨팅 시스템(100)으로부터의 출력을 제공하는 디스플레이, 프린터, 스피커, CD 라이터(CD-writer), 또는 다른 디바이스일 수 있다.
네트워크 인터페이스 디바이스(들)(170)는 통신 매체를 통한 다른 컴퓨팅 엔터티와의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 명령어들 또는 다른 데이터와 같은 정보를 피변조 데이터 신호로 전달(convey)한다. 피변조 데이터 신호는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경된 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광학, RF, 또는 다른 반송파를 사용할 수 있다.
혁신들이 일반적으로 컴퓨터 판독가능 매체와 관련하여 기술될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용가능한 유형적 매체이다. 제한이 아닌 예로서, 컴퓨팅 시스템(100)에서, 컴퓨터 판독가능 매체는 메모리(120, 136, 146), 저장소(180), 및 상기한 것들 중 임의의 것의 조합들을 포함한다.
혁신들이 일반적으로 컴퓨팅 시스템에서 실제 또는 가상의 타겟 프로세서 상에서 실행되는, 모듈들에 포함된 것과 같은, 컴퓨터 실행가능 명령어들과 관련하여 기술될 수 있다. 일반적으로, 모듈들은 특정의 작업들을 수행하거나 특정의 추상 데이터 형식들을 구현하는 루틴, 프로그램, 라이브러리, 객체, 클래스, 컴포넌트, 데이터 구조 등을 포함한다. 모듈들의 기능이 다양한 실시예들에서 원하는 바에 따라 모듈들 간에 결합되거나 분할될 수 있다. 모듈들에 대한 컴퓨터 실행가능 명령어들은 로컬 또는 분산 컴퓨팅 시스템 내에서 실행될 수 있다.
용어들 "시스템" 및 "디바이스"는 본원에서 서로 바꾸어 사용될 수 있다. 문맥이 명백히 달리 나타내지 않는 한, 어느 용어도 컴퓨팅 시스템 또는 디바이스의 유형에 대한 어떤 제한을 암시하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 디바이스는 로컬이거나 분산되어 있을 수 있고, 본원에 기술되는 기능을 구현하는 소프트웨어를 갖는 하드웨어 및/또는 특수 목적 하드웨어의 임의의 조합을 포함할 수 있다.
제시를 위해, 발명을 실시하기 위한 구체적인 내용은 컴퓨팅 시스템에서의 컴퓨터 동작들을 기술하기 위해 "결정한다", "전달(pass)한다" 및 "사용한다"와 같은 용어들을 사용한다. 이 용어들은 컴퓨터에 의해 수행되는 동작들에 대한 상위 레벨 추상화(high-level abstraction)이고, 사람에 의해 수행되는 행동들과 혼동되어서는 안된다. 이 용어들에 대응하는 실제 컴퓨터 동작들은 구현에 따라 다르다. 예를 들어, 용어 "전달한다"는, 데이터가 값에 의해 전달되든 참조에 의해 전달되든, 데이터가 함수 호출에서의 파라미터, 메시지, 이벤트, 또는 어떤 다른 메커니즘(예컨대, 데이터를 버퍼 또는 메모리에 저장하는 것 및 버퍼/메모리에 대한 포인터, 핸들(handle), 참조(reference) 등을 교환하는 것)을 사용하여 전달되든, 그리고 데이터가 2개의 컴포넌트들 사이에서 직접 전달되거나, 데이터를 재포맷팅(reformat)하거나 다른 방식으로 변환할 수 있는, 하나 이상의 중간 컴포넌트들을 통해 전달되든 관계없이, 컴퓨팅 시스템의 2개의 컴포넌트들 사이에서 데이터를 전달(convey)하는 임의의 방식을 나타낸다.
II. 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 아키텍처
이 섹션은 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 아키텍처들을 기술한다. 일반적으로, 하드웨어 보호된 DRM 시스템에서, 키들 및 복호화된 미디어 데이터는, 소프트웨어 프로세스들에 의해 액세스가능하지 않은, 하드웨어 레벨 및/또는 안전한 펌웨어 레벨에서 보호된다. 상위 레벨에서, 하드웨어 보호된 DRM 시스템은 신뢰할 수 있는 계층과 신뢰할 수 없는 계층을 포함한다.
신뢰할 수 있는 계층(신뢰할 수 있는 세상, 안전한 계층 또는 안전한 세상이라고도 불리움)은 미디어 데이터에 대해 신뢰할 수 있는 것으로 가정되는 기능을 포함한다. 신뢰할 수 있는 계층에서, 개인 키, 암호화된 미디어 데이터에 대한 원래 콘텐츠 키, 전사된 미디어 데이터 등에 대한 세션 키 등과 같은 암호화/복호화 키, 그리고 평문의(복호화된, 어쩌면 디코딩된) 미디어 데이터가 액세스가능하다. 예를 들어, 신뢰할 수 있는 계층에 대해, 하드웨어 보호된 DRM 시스템은 복호화 및/또는 디코딩을 위해 구성된 하나 이상의 집적 회로들, 하나 이상의 집적 회로들을 제어하기 위한 펌웨어 명령어들을 저장하는 메모리, 및 복호화된 미디어 데이터, 디코딩된 미디어 데이터(즉, 미디어 샘플들), 및 복호화를 위해 사용되는 키들을 저장하기 위한 보호된 버퍼들을 포함한다. 이 하드웨어/펌웨어에 의해, 신뢰할 수 있는 계층은 키들 및 평문의 미디어 데이터가 안전하게 저장될 수 있는 안전한 실행 환경을 제공한다. 또는, 다른 예로서, 신뢰할 수 있는 계층에 대해, 하드웨어 보호된 DRM 시스템은 (신뢰할 수 있는 계층에서의 복호화를 위한 임의의 특수 목적, 별도의 하드웨어를 갖지 않는 범용 CPU 및 메모리를 사용하지만, 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이의 전환들은 하드웨어 관리된다. 이 모델에서는, 신뢰할 수 있는 계층에 대한 처리에서 특별히 서명된 펌웨어 명령어들만이 로딩되고 실행될 수 있다. 보다 일반적으로, 신뢰할 수 있는 계층에 대해, 하드웨어 보호된 DRM 시스템은 신뢰할 수 있는 계층에서 실행 중이거나 안전한 모드에서 실행 중인 임의의 유형의 처리 유닛(범용 CPU를 포함함)을 사용할 수 있다. 신뢰할 수 있는 계층이 복호화 또는 미디어 디코딩을 위한 특수 하드웨어를 포함할 수 있지만, 그럴 필요는 없다. 오히려, 범용 CPU 상에서 실행 중인 소프트웨어가 복호화 및/또는 미디어 디코딩을 위해 사용될 수 있지만, 미디어 디코딩이 아주 계산 집중적일 수 있다.
신뢰할 수 없는 계층(신뢰할 수 없는 세상, 안전하지 않은 계층 또는 안전하지 않은 세상이라고도 불리움)은 미디어 데이터에 대해 신뢰할 수 없는 것으로 가정되는 기능을 포함한다. 신뢰할 수 없는 계층은 사용자 모드 컴포넌트들은 물론 커널 모드 컴포넌트들을 포함할 수 있다. 신뢰할 수 없는 계층에서는, 암호화/복호화 키들 및 평문의 미디어 데이터가 액세스가능하지 않다(즉, 그들이 분리로 인해 물리적으로 액세스될 수 없거나 암호화로 인해 이해될 수 없다). 예를 들어, 신뢰할 수 없는 계층에 대해, 하드웨어 보호된 DRM 시스템은 하나 이상의 인터페이스들을 거쳐 신뢰할 수 있는 계층과 상호작용하지만 (물리적 분리로 인해 또는 미디어 데이터의 암호화로 인해) 보호된 버퍼들에 있는 키들 또는 평문의(복호화된) 미디어 데이터에 액세스할 수 없는 운영 체제 및/또는 애플리케이션들의 하나 이상의 모듈들을 포함한다. 키들 및 미디어 데이터가 신뢰할 수 없는 계층 내에서 완전히 액세스가능하지 않거나, 그들이 신뢰할 수 없는 계층 내에서 암호화된 형태로 이용가능할 뿐이다.
하드웨어 보호된 DRM 시스템의 아키텍처는 구현에 의존한다. 도 2는 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 아키텍처(200)를, 상위 레벨에서, 나타내고 있다. 아키텍처(200)는 신뢰할 수 없는 계층과 신뢰할 수 있는 계층을 포함한다. 도 2에서, 신뢰할 수 있는 계층은, DRM 로직(250), 디코딩 로직(260) 및 하나 이상의 보호된 버퍼들(270)을 비롯한, 보호된 하드웨어 및 펌웨어로 이루어져 있다. 신뢰할 수 없는 계층은 소스(210), 제어 모듈(220), 호스트 디코더(230) 및 렌더러(240)를 포함한다. 신뢰할 수 있는 계층에서 비롯되는 불투명한 메타데이터(224) 및 신뢰할 수 없는 계층(및/또는 신뢰할 수 있는 계층)에서 비롯될 수 있는 다른 평문의(clear) 메타데이터(226)(즉, 암호화되지 않은 그리고 신뢰할 수 없는 계층 내에서 액세스가능하고 해석가능한, "평문으로 된" 메타데이터)를 포함한, 다양한 유형들의 메타데이터가 신뢰할 수 없는 계층의 제어 모듈(220)을 통과한다. 메타데이터(224, 226)는, 호스트 디코더(230)가 디코딩, 렌더링 및/또는 디스플레이의 양태들을 제어하기 위해 평문의 메타데이터(226)를 사용하고 불투명한 메타데이터(224)를 신뢰할 수 있는 계층으로 전달할 때까지, 신뢰할 수 없는 계층을 통해 통해 흐른다.
신뢰할 수 없는 계층에서, 소스(210)는 소스 미디어 데이터(212)를 제어 모듈(220)에 제공한다. 소스(210)는 네트워크 연결 또는 저장소로부터의 소스 미디어 데이터(212)를 제공하는 디멀티플렉서 또는 다른 컴포넌트일 수 있다. 소스 미디어 데이터(212)는 암호화된 미디어 데이터(221), 예컨대, 하나 이상의 암호화된, 인코딩된 미디어 샘플들을 포함한다. 예를 들어, 소스 미디어 데이터(212)는, 적어도 부분적으로 암호화되는 데이터 단위들을 포함하는, 비디오 비트스트림 또는 오디오 비트스트림과 같은 기본 스트림(elementary stream)이다. 소스 미디어 데이터(212)는 또한, 평문의 메타데이터(226)의 적어도 일부를 제공할 수 있는, 암호화되지 않은 미디어 데이터를 포함할 수 있다. 예를 들어, 소스 미디어 데이터(212)는 복호화에서 사용되는 초기화 벡터에 관한 데이터, 복호화를 위한 라이선스/콘텐츠 키를 식별해주는 키 식별자 값, 비디오 디코딩 파라미터들, 및 데이터 단위 길이들 및 유형들을 포함할 수 있다.
제어 모듈(220)은 소스 미디어 데이터(212)를 소스(210)로부터 수신한다. 미디어 처리 파이프라인에서, 제어 모듈(220)은 복호화기 모듈에 의해 보통 차지되는 자리를 점유하지만, 복호화를 수행하지 않거나 복호화된 미디어 데이터를 취급하지 않는다. 그 대신에, 제어 모듈(220)은 소스 미디어 데이터(212) 내의 암호화되지 않은 데이터로부터 평문의 메타데이터(226)를 파싱하거나 다른 방식으로 추출한다. 예를 들어, 평문의 메타데이터(226)에 대해, 제어 모듈(220)은 (시퀀스 파라미터 세트(sequence parameter set)(SPS), 픽처 파라미터 세트(picture parameter set)(PPS), 특정 슬라이스 헤더 파라미터들, 또는 비디오 디코딩에 대한 다른 파라미터들과 같은) 미디어 디코딩 파라미터들, 데이터 단위들에 관한 정보(네트워크 추상화 계층(network abstraction layer)(NAL) 단위들의 길이들 및 유형들 등) 및/또는, 각자의 데이터 단위들에 대한 암호화되지 않은 분량들과 암호화된 분량들을 표시하는, 서브샘플 매핑 데이터(sub-sample mapping data)를 파싱한다. 평문의 메타데이터(226)는 또한, 소스 미디어 데이터(212)로부터 파싱되는, 보조 향상 정보(supplemental enhancement information)(SEI) 메시지들을 포함할 수 있다.
도 2에서의 신뢰할 수 있는 계층에서, DRM 로직(250)은 하드웨어와 펌웨어로 구현되고, 제어 모듈(220)의 DRM 컴포넌트들이 실행될 수 있는 하드웨어 보호된, 안전한 실행 환경을 제공한다. DRM 로직(250)은 복호화를 위해 사용될 하나 이상의 키들을 결정한다. 예를 들어, DRM 로직(250)은 라이선스 서버로부터 안전한 방식으로 키(들)를 받는다. 라이선스 서버로부터, DRM 로직(250)은 또한 키(들)를 어떻게 사용해야 하는지, 어떤 부가의 보호 대책들이 적용되어야 하는지, 키(들)가 언제 만료되는지 및/또는 키(들)의 사용에 관한 다른 조건들을 좌우하는 정책 데이터를 받을 수 있다. 라이선스 서버에 의해 서명될 수 있는, 정책 데이터는 신뢰할 수 있는 계층에서 시행될 수 있다. 예를 들어, 정책 데이터는 (1) 만료 시각/날짜, 콘텐츠가 n번째 재생(예컨대, 첫 번째 재생) 이후에 만료될 것이라는 규칙, 또는 재생 횟수 제한과 같은 시간 기반 제한; (2) 콘텐츠 보호가 출력 링크 상에서 적용되어야 하는지와 같은 출력 보호; 및/또는 (3) 디코딩된 미디어 데이터가 아날로그 출력 또는 무선 링크와 같은 특정 유형의 출력으로 출력될 수 있는지에 대한 정책을 포함할 수 있다.
상이한 미디어 샘플들(또는 비디오 프레임들)이 상이한 키들을 가질 수 있거나 동일한 키를 사용할 수 있다. (그들이 동일한 키를 가지면, 상이한 미디어 샘플들이 복호화를 위해 사용되는 상이한 초기화 벡터들을 가질 수 있다.) 도 2에서, DRM 로직(250)은 키 데이터를 불투명한 메타데이터(224)로서 다시 신뢰할 수 없는 계층에 전달한다. 불투명한 메타데이터(224)는 신뢰할 수 있는 계층 내에서만 액세스가능한 다른 정보(메모리 장소에 대한 핸들, 또는 정책 데이터 등)를 포함할 수 있다. 대안적으로, 키 데이터가 신뢰할 수 없는 계층에 다시 전달되지 않고, 그 대신에 신뢰할 수 있는 계층 내의 다른 컴포넌트(예컨대, 디코딩 로직(260))로 전달된다.
도 2에 도시된 바와 같이, 제어 모듈(220)은 또한 암호화된 미디어 데이터(221)를 신뢰할 수 있는 계층으로 전달할 수 있고, DRM 로직(250)은 이어서 암호화된 미디어 데이터(221)를 수신할 수 있다. 미디어 디코딩을 제어하기 위해 신뢰할 수 없는 계층에서 사용되는 일부 파라미터들(비디오 디코딩에 대한 특정 슬라이스 헤더 데이터 등) 및 다른 파라미터들(SEI 메시지들 등)이 소스 미디어 데이터(220) 내에 암호화되어 있을 수 있다. 이 경우에, 그에게 전달되는 암호화된 미디어 데이터(221)로부터, DRM 로직(250)은 이러한 파라미터들을 복호화하고 그들을 평문의 메타데이터(226)의 일부로서 다시 제어 모듈(220)로 전달한다.
암호화된 미디어 데이터(221)가 신뢰할 수 있는 계층으로 전달될 때, DRM 로직(250)은 또한 암호화된 미디어 데이터(221)를 전사(transcrypt)할 수 있다. 이 경우에, DRM 로직(250)은 암호화된 미디어 데이터(221)를 원래 콘텐츠 키(들)를 사용하여 복호화하고, 미디어 데이터를 하나 이상의 세션 키들을 사용하여 재암호화하여, 암호화된 미디어 데이터(222)를 생성한다. 전사 이후에, DRM 로직(250)은 (불투명한 메타데이터(224)에서) 암호화된 미디어 데이터(222)를 새로운 세션 키(들)와 함께 제어 모듈(220)로 전달한다. 이 경우에, 키 데이터는 암호화된 미디어 데이터(221)의 전사에서 사용되는 세션 키(들)를 포함한다. 대안적으로, 전사 이후에, DRM 로직(250)은, 암호화된 미디어 데이터(222)를 호스트 디코더(230)로 전달하는 일 없이, 암호화된 미디어 데이터(222)를, 디코딩 로직(260)에 의해 액세스가능한 버퍼로 전달한다. 또는, 전사를 수행하는 일 없이, DRM 로직(250)은 암호화된 미디어 데이터(221) 또는 복호화된 미디어 데이터를, 디코딩 로직(260)에 의해 액세스가능한 버퍼로 전달한다.
도 2에서, 신뢰할 수 없는 계층에서, 제어 모듈(220)은 불투명한 메타데이터(224), 평문의 메타데이터(226) 및 암호화된 미디어 데이터(222)를 호스트 디코더(230)로 전달한다. 호스트 디코더(230)로 전달된 암호화된 미디어 데이터(222)는 소스 미디어 데이터(212) 내의 암호화된 미디어 데이터(221)와 동일(전사가 사용되지 않은 경우)하거나 상이(전사가 사용되는 경우)할 수 있다. 또는(앞서 살펴본 바와 같이), 암호화된 미디어 데이터(222)가 (예컨대, 전사 이후의 암호화된 미디어 데이터(222)가 신뢰할 수 있는 계층 내에서 전달되기 때문에, 또는 암호화된 미디어 데이터(221) 또는 복호화된 미디어 데이터가 DRM 로직(250)에 의해 신뢰할 수 있는 계층 내에서 전달되기 때문에) 호스트 디코더(230)를 우회할 수 있다.
일부 예시적인 구현들에서, 호스트 디코더(230)는 소프트웨어 기반 호스트 비디오 디코더이다. 대안적으로, 호스트 디코더(230)가 오디오 디코더, 영상 디코더 또는 다른 유형의 미디어 디코더이다. 일반적으로, 호스트 디코더(230)는 디코딩 로직(260)에서의 디코딩을 위해 구성된 특수 목적 디코딩 하드웨어 또는 그래픽 하드웨어를 제어하거나 구동하는 소프트웨어 및/또는 펌웨어이다. 전형적으로, 디코딩 로직(260) 내의 특수 목적 디코딩 하드웨어 또는 그래픽 하드웨어는 적어도 일부 공통의 간단한 계산 집중적인 디코딩 동작들(역 주파수 변환 동작들, 보간 동작들, 및 루프 필터링 동작들 등)을 수행하지만, 다른 보다 복잡한 디코딩 동작들(엔트로피 디코딩 등)을 지원할 수도 있다. 호스트 디코더(230)는 알고리즘적으로 복잡할 수 있는, 비트스트림 파싱과 같은, 상위 레벨 동작들을 수행한다. 디코딩 동작들의 이러한 분할은, 알고리즘적 복잡성을 호스트 디코더(230)로 이동시키면서, 디코딩 로직(260)의 디코딩 하드웨어/그래픽 하드웨어를 간단하게 유지하는 데 도움을 줄 수 있다. 신뢰할 수 없는 계층에서 호스트 디코더(230)에 의해 수행되는 정확한 동작들과 신뢰할 수 있는 계층에서 디코딩 로직(260)에 의해 수행되는 정확한 동작들은 구현에 의존한다.
도 2에서, 호스트 디코더(230)는 불투명한 메타데이터(224) 및 암호화된 미디어 데이터(222)를 복호화 및 디코딩을 위해 신뢰할 수 있는 계층으로 전달한다. 불투명한 메타데이터(224) 및 암호화된 미디어 데이터(222)는 디코딩 가속 인터페이스를 거쳐 전달될 수 있다. 예를 들어, 디코딩 가속 인터페이스는 DXVA(DirectX Video Acceleration) 인터페이스 또는 다른 가속 인터페이스일 수 있다. 대안적으로, 호스트 디코더(230)는 불투명한 메타데이터(224)만을 인터페이스를 거쳐 전달하거나(암호화된 미디어 데이터가 호스트 디코더(230)에 제공되지 않은 경우), 암호화된 미디어 데이터(222)만을 인터페이스를 거쳐 전달하거나(불투명한 메타데이터가 호스트 디코더(230)에 제공되지 않은 경우), 불투명한 메타데이터와 암호화된 미디어 데이터 중 어느 것도 인터페이스를 거쳐 전달하지 않는다.
디코딩과 동시에, 호스트 디코더(230)는, 호스트 디코더(230)에 불투명한 암호화된 미디어 데이터 내의 파라미터들을 고려함이 없이, 디코딩, 렌더링 및/또는 디스플레이의 다양한 양태들을 제어하기 위해 평문의 메타데이터(226)를 사용한다. 예를 들어, 호스트 디코더(230)는 비디오 디코딩 동안 픽처 버퍼들 및 자원 이용을 관리하기 위해 평문의 메타데이터(226)를 사용하는 반면, 신뢰할 수 있는 계층 내의 특수 목적 비디오 디코딩 하드웨어 또는 가속 하드웨어는 실제의 비디오 디코딩 동작들 대부분을 수행한다. 비디오 디코딩 동작들은 H.264/AVC 표준, H.265/HEVC 표준, SMPTE 421M(VC-1) 표준, VPx 포맷, 또는 다른 포맷 또는 표준을 따를 수 있다. 이와 같이, 예를 들어, 신뢰할 수 없는 계층에 있는 소프트웨어 기반 호스트 비디오 디코더는, 복호화된 비디오 데이터를 신뢰할 수 없는 계층에 있는 호스트 디코더(230) 또는 다른 컴포넌트들에 노출시키는 일 없이, 비디오 디코딩 가속 인터페이스를 통해 비디오 디코딩의 다양한 양태들을 관리한다. 또는, 호스트 오디오 디코더, 영상 디코더 또는 다른 유형의 미디어 디코더는, 인터페이스를 통해, 미디어 디코딩, 렌더링 및/또는 디스플레이의 양태들을 이와 유사하게 제어한다.
도 2에서의 신뢰할 수 있는 계층에서, 디코딩 로직(260)은 하드웨어와 펌웨어로 구현될 수 있다. 도 2에서, 디코딩 로직(260)은 암호화된 미디어 데이터(222) 및 불투명한 메타데이터(224)를 호스트 디코더(230)로부터 수신한다. 복호화 로직(250)과 협력하여, 디코딩 로직(260)은 불투명한 메타데이터(224)로부터 암호화된 미디어 데이터(222)를 복호화하는 데 사용되는 키(들)를 결정하고, 암호화된 미디어 데이터(222)를 복호화한다. 디코딩 로직(260)은 복호화되었지만 여전히 인코딩되어 있는 미디어 데이터를 디코딩하여, 디코딩된 미디어 데이터(즉, 미디어 샘플들)를 생성한다. 디코딩된 미디어 데이터(예컨대, 디코딩된 비디오 프레임들)는 보호된 버퍼(들)(270)에 저장된다. 대안적으로, 암호화된 미디어 데이터(222) 및/또는 키 데이터가 DRM 로직(250)에 의해 제공되고, 이어서 복호화되며 디코딩된다. 또는, 복호화된 미디어 데이터가 DRM 로직(250)에 의해 제공되고, 이어서 디코딩 로직(260)에 의해 디코딩된다.
보호된 버퍼(들)(270)에서, 디코딩된 미디어 데이터가 신뢰할 수 있는 계층에 있는 컴포넌트들에 의해 액세스될 수 있다. 그렇지만, (물리적 분리 또는 재암호화로 인해) 디코딩된 미디어 데이터가 신뢰할 수 없는 계층에 있는 호스트 디코더(230) 또는 다른 컴포넌트들에 의해 액세스될 수 없다. 예를 들어, 신뢰할 수 없는 계층으로부터, 신뢰할 수 없는 계층에 있는 호스트 디코더(230) 또는 다른 컴포넌트는 보호된 버퍼(들)(270)로부터 판독할 수 없거나 보호된 버퍼(들)(270)에 기입할 수 없다. 그 대신에, 신뢰할 수 없는 계층으로부터, 신뢰할 수 없는 계층에 있는 호스트 디코더(230) 또는 다른 컴포넌트는 명령들을 보호된 버퍼(들)(270)로 송신한다. 예를 들어, 호스트 디코더(230)는 디코딩된 미디어 데이터를 갖는 적절한 버퍼들에 대한 핸들들(232)을 사용하여 디코딩된 미디어 데이터에 대한 동작들(예컨대, 픽처의 출력, 픽처의 삭제, 픽처의 스케일링, 픽처의 회전, 다수의 픽처들을 합성하는 것)을 명시할 수 있다. 신뢰할 수 없는 계층에서, 호스트 디코더(230)는, 출력을 위해 디코딩된 미디어 데이터에 대해 수행할 동작들을 이와 유사하게 명시할 수 있는, 핸들들(232)을 렌더러(240)로 전달한다. 호스트 디코더(230)는 또한 (예컨대, 캡션 텍스트(captioning text)를 위해, 프레이밍 정보(framing information)를 위해) 디스플레이 모듈에 의해 이용가능한 평문의 메타데이터(226) 내에 SEI 메시지들을 작성할 수 있다.
도 2가 DRM 로직(250), 디코딩 로직(260) 및 보호된 버퍼(들)(270)를 개별적인 것으로 나타내고 있지만, DRM 로직(250), 디코딩 로직(260) 및 보호된 버퍼(들)(270)가 단일의 컴포넌트(예컨대, 단일의 SoC)의 일부일 수 있다.
도 3은 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 아키텍처(300)의 부가 상세들을 나타내고 있다. 도 2와 비교하여, 도 3은 신뢰할 수 없는 계층의 제어 모듈(220) 및 호스트 디코더(230), 신뢰할 수 있는 계층의 DRM 로직(250) 및 디코딩 로직(260), 그리고 신뢰할 수 없는 계층 및 신뢰할 수 있는 계층에 있는 드라이버들에 대한 부가 상세들을 나타내고 있다. 이는 또한 비디오에 대한 디코딩 제어에 특유한 상세들을 나타내고 있다. 또한, 도 3은, 세션 키들을 사용한 미디어 데이터의 전사에 따른, 하드웨어 보호된 DRM 시스템을 통한 불투명한 메타데이터(224) 및 암호화된 미디어 데이터(221, 222)의 특정의 흐름을 나타내고 있다.
도 3에서, 제어 모듈(220)은, 암호화된 미디어 데이터(221)는 물론 암호화되지 않은 미디어 데이터를 포함하는, 소스 미디어 데이터(212)를 수신한다. 도 3에서, 소스 미디어 데이터(212)는 NAL 단위들을 포함하는 기본 비디오 스트림을 포함한다. 예를 들어, NAL 단위들은 H.264/AVC 표준, H.265/HEVC 표준, 또는 다른 표준 또는 포맷에 따라 포맷팅된다. NAL 단위들은, SPS 데이터, PPS 데이터 및 슬라이스 헤더 파라미터들과 같은, 비디오 디코딩 파라미터들은 물론, 슬라이스 데이터 및 보조 향상 정보(SEI) 메시지들을 포함한다.
제어 모듈(220)은 소스 미디어 데이터(212)로부터 어떤 평문의 메타데이터(226)를 추출한다. 상세하게는, 제어 모듈(220)은 SPS 데이터 및/또는 PPS 데이터(302), NAL 단위 유형들 및 길이들(304) 그리고, 각자의 NAL 단위들에 대한 암호화되지 않은 분량들 및 암호화된 분량들을 표시하는, 서브샘플 매핑 데이터(306)를 추출할 수 있다. 예를 들어, 슬라이스 NAL 단위의 일부(시작 코드, NAL 단위 유형을 포함하는 NAL 단위 헤더 등)는 암호화되지 않을 수 있는 반면, 슬라이스 NAL 단위의 다른 부분(슬라이스 데이터 등)은 암호화된다. NAL 단위에 대한 서브샘플 매핑 데이터(306)는 NAL 단위의 얼마만큼이 평문의 데이터인지와 얼마만큼이 암호화된 데이터인지를 표시한다.
상위 레벨에서, 신뢰할 수 없는 계층과 신뢰할 수 있는 계층 사이의 상호작용들은, 도 3에서 단계 A, 단계 B 및 단계 C로 나타내어져 있는, 3개의 단계들을 포함한다. 단계 A에서, 제어 모듈(220)은 신뢰할 수 있는 계층에 키 데이터(312)에 대한 요청(311)을 한다. 도 3에서, 요청(311)은 복호화 드라이버들(310, 330)의 계층들을 통해 신뢰할 수 있는 계층에 있는 DRM 로직(250)으로 전달된다. 도 3에서, 신뢰할 수 없는 계층에 있는 복호화 드라이버(들)(310)는 사용자 모드 드라이버들이지만, 대안적으로, 복호화 드라이버(들)(310) 중 하나 이상은 신뢰할 수 없는 계층에 있는 커널 모드 드라이버이다. 요청(311)은 또한 DRM 로직(250)에 도달하기 전에 신뢰할 수 있는 계층에 있는 복호화 드라이버들(330)의 하나 이상의 계층들을 통과한다.
DRM 로직(250)은 복호화를 위해 사용될 하나 이상의 키들을 결정하고, 키 데이터(312)를 불투명한 메타데이터(224)의 일부로서 다시 신뢰할 수 없는 계층으로 전달한다. 예를 들어, DRM 로직(250)은 키(들)를 결정하는 키 슬롯 관리 로직을 포함한다. 복호화를 위해 사용될 키(들)는 (암호화된 미디어 데이터(222)가 소스 미디어 데이터(212) 내의 암호화된 미디어 데이터(221)인 경우) 원래 콘텐츠 키들일 수 있다. 또는, 복호화를 위해 사용될 키(들)는 (암호화된 미디어 데이터(221)가 암호화된 미디어 데이터(222)를 생성하기 위해 전사되는 경우) 세션 키(들)일 수 있다. 키 데이터(312)는 복호화를 위해 사용될 키(들)의 암호화된 버전들, 이러한 키(들)를 명시하는 토큰, 또는 이러한 키(들)를 저장하는 안전한 장소에 대한 핸들일 수 있다. 예를 들어, 키 데이터(312)는 (전사에서 사용되는) 세션 키의 암호화된 버전, 이러한 세션 키를 나타내는 토큰, 이러한 세션 키를 저장하는 안전한 장소에 대한 핸들, 원래 콘텐츠 키의 암호화된 버전(전사가 사용되지 않는 경우), 이러한 원래 콘텐츠 키를 나타내는 토큰, 또는 이러한 원래 콘텐츠 키를 저장하는 안전한 장소에 대한 핸들일 수 있다. 원래 콘텐츠 키 또는 세션 키의 암호화된 버전은 신뢰할 수 있는 계층 내의 상이한 컴포넌트들에 의해 공유되는 대칭 키를 사용하여, 또는 신뢰할 수 있는 계층 내의 상이한 컴포넌트들 간에 다른 방식으로 공유되는 키에 의해 암호화될 수 있다.
단계 B에서, 제어 모듈(220)은 암호화된 미디어 데이터(221)의 적어도 일부를 신뢰할 수 있는 계층으로 전달한다. 암호화된 미디어 데이터(221)는 신뢰할 수 없는 계층에 있는 복호화 드라이버(들)(310) 및 신뢰할 수 있는 계층에 있는 복호화 드라이버(들)(330)를 통해 신뢰할 수 있는 계층에 있는 DRM 로직(250)으로 전달된다. 어떤 경우에, 평문의 메타데이터(226)의 일부일 비디오 디코딩 파라미터들(특정 슬라이스 헤더 파라미터들(314) 등)은 소스 미디어 데이터(212) 내에 암호화되어 있다. DRM 로직(250)은 이러한 비디오 디코딩 파라미터들을 추출하기 위해 암호화된 미디어 데이터(221)를 복호화할 수 있다. DRM 로직(250)은 추출된 평문의 메타데이터(226)(도 3에서, 선택된 슬라이스 헤더 파라미터들(314))를 다시 제어 모듈(220)로 전달한다. NAL 단위 유형들 및 길이들(304)과 같은 다른 파라미터들은 또한 소스 미디어 데이터(212) 내에 암호화되어 있을 수 있고, 따라서 DRM 로직(250)에 의해 추출될 수 있다. 대안적으로, 비디오 디코딩 파라미터들이 DRM 로직(250)의 제어 하에서 GPU 또는 다른 디코딩 하드웨어에 의해 추출될 수 있고, 이어서 다시 제어 모듈(220)로 전달될 수 있다. 예를 들어, 비디오 디코딩 파라미터들은 DRM 로직(250)의 제어 하에서 공급업체 특정 드라이버(vendor-specific driver)에 의해 추출될 수 있다.
도 3의 예에서, DRM 로직(250)은 또한 암호화된 미디어 데이터(221)를 전사할 수 있다. 그러한 경우, DRM 로직(250)은 인코딩된 미디어 데이터(221)를 (예컨대, 라이선스 서버로부터 획득된) 하나 이상의 원래 콘텐츠 키들을 사용하여 정책 데이터에 따라 복호화하고, 미디어 데이터를 하나 이상의 세션 키들을 사용하여 재암호화하여, 암호화된 미디어 데이터(222)를 생성한다. 이 경우에, 키 데이터(312)는 세션 키(들)를 명시한다. DRM 로직(250)은 암호화된 미디어 데이터(222)를 제어 모듈(220)로 전달한다. 또는, DRM 로직(250)은, 신뢰할 수 없는 계층에 있는 제어 모듈(220) 및 호스트 디코더(230)를 우회하여, 암호화된 미디어 데이터(222)를 디코딩 로직(260)으로 전달한다. 전사는 각자의 NAL 단위들 내의 암호화되지 않은 데이터 및 암호화된 데이터의 분량들을 변경할 수 있고, 이 경우에 제어 모듈(220)은 서브샘플 매핑 데이터(306)를 업데이트한다.
신뢰할 수 없는 계층에서, 제어 모듈(220)은 불투명한 메타데이터(224) 및 평문의 메타데이터(226)를 호스트 디코더(230)로 전달한다. 다시 제어 모듈(220)로 전달되면, 제어 모듈(220)은 또한 암호화된 미디어 데이터(222)를 호스트 디코더(230)로 전달한다. 예를 들어, 불투명한 메타데이터(224) 및/또는 평문의 메타데이터(226)가 암호화된, 인코딩된 미디어 샘플들에 대한 메타데이터 속성들로서 전달된다.
단계 C에서, 호스트 디코더(230)는, 키 데이터(312)를 포함하는, 불투명한 메타데이터(224)를 복호화에서 사용하기 위해 신뢰할 수 있는 계층으로 전달한다. 호스트 디코더(230)는 또한 암호화된 미디어 데이터(222)를, 그에 제공되는 경우, 복호화 및 디코딩을 위해 신뢰할 수 있는 계층으로 전달한다. 도 3에서, 불투명한 메타데이터(224) 및 암호화된 미디어 데이터(222)는 디코딩 드라이버들(320)의 하나 이상의 계층들을 통해 신뢰할 수 있는 계층에 있는 디코딩 로직(260)으로 전달된다. 예를 들어, 디코딩 드라이버(들)(320)는 DXVA 인터페이스의 일부 또는 다른 사용자 모드 드라이버들이다. 불투명한 메타데이터(224) 및 암호화된 미디어 데이터(222)는 또한 디코딩 로직(260)에 도달하기 전에 신뢰할 수 있는 계층에 있는 드라이버들(도시되지 않음)의 하나 이상의 계층들을 통과할 수 있다. 키 데이터(312) 및 다른 불투명한 메타데이터(224)에 부가하여, 호스트 디코더(230)는 복호화 동안 사용된 다른 데이터(예컨대, 초기화 벡터 데이터, 키 데이터(312)의 설명)를 디코딩 로직(260)으로 전달할 수 있다.
디코딩 로직(260)은 불투명한 메타데이터(224) 및 암호화된 미디어 데이터(222)를 수신한다. 복호화 로직(250)과 협력하여, 디코딩 로직(260)은 키 데이터(312)로부터 암호화된 미디어 데이터(222)를 복호화하는 데 사용된 키(들)를 결정한다. 예를 들어, 키 데이터(312)가 토큰일 때, 디코딩 로직(260)은 복호화기 로직(250)에 토큰을 포함하는 요청(362)을 한다. 복호화기 로직(250)은 토큰을 사용하여 키(364)(원래 콘텐츠 키 또는 세션 키)를 결정하고, 키(364)를 다시 디코딩 로직(260)으로 전달한다. 또는, 키 데이터(312)가 암호화된 키일 때, 디코딩 로직(260)은 복호화기 로직(250)에 암호화된 키를 포함하는 요청(362)을 한다. 복호화기 로직(250)은 키(364)를 복호화하고, 키(364)를 다시 디코딩 로직(260)으로 전달한다. 이어서, 복호화기 로직(220)과 협력하여, 디코딩 로직(260)은 암호화된 미디어 데이터(222)를 정책 데이터(존재하는 경우)에 따른 방식으로 복호화하기 위해 키(364)를 사용한다.
디코딩 로직(260)은 복호화되었지만 여전히 인코딩되어 있는 미디어 데이터를 디코딩하여, 디코딩된 미디어 데이터를 생성한다. 그와 동시에, 신뢰할 수 없는 계층에서, 호스트 디코더(230)는, 호스트 디코더(230)에 불투명한 암호화된 미디어 데이터(222) 내의 파라미터들을 고려함이 없이, 디코딩, 렌더링 및/또는 디스플레이의 다양한 양태들을 제어하기 위해 평문의 메타데이터(226)를 사용한다. 예를 들어, 호스트 디코더(230)는, 비디오 디코딩 동안 픽처 버퍼들 및 자원 이용을 관리하기 위해, SPS 데이터 및/또는 PPS 데이터(302), NAL 단위 유형들 및 길이들(304) 그리고 특정 슬라이스 헤더 파라미터들(314)을 사용한다.
III. 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 예시적인 기법들.
도 4는 신뢰할 수 없는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 일반화된 기법(400)을 나타내고 있다. 도 5는 신뢰할 수 있는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 대응하는 일반화된 기법(500)을 나타내고 있다.
도 4를 참조하면, 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층에서, 제어 모듈은 암호화된 미디어 데이터("제1 암호화된 미디어 데이터", 예컨대, 하나 이상의 암호화된, 인코딩된 미디어 샘플들)를 포함하는 소스 미디어 데이터를 수신한다(410). 제1 암호화된 미디어 데이터는 신뢰할 수 없는 계층 내에서 불투명하다.
제어 모듈은 미디어 데이터에 관한 메타데이터를 처리한다(420). 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하지 않다(즉, 이러한 메타데이터는 "평문으로" - 암호화되지 않음 - 되어 있고, 따라서 신뢰할 수 없는 계층 내에서 액세스가능하고 해석가능함). 제어 모듈은 소스 미디어 데이터로부터 평문의 메타데이터의 적어도 일부를 파싱할 수 있다. 제어 모듈은 또한 평문의 메타데이터의 적어도 일부를 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층으로부터 수신할 수 있다. (이 경우에, 제어 모듈은 소스 미디어 데이터의 적어도 일부를 신뢰할 수 있는 계층으로 전달할 수 있고, 신뢰할 수 있는 계층은 소스 미디어 데이터의 적어도 일부를 수신하고, 평문의 메타데이터의 적어도 일부를 결정하며, 평문의 메타데이터의 적어도 일부를 신뢰할 수 없는 계층으로 전달한다.) 예를 들어, 평문의 메타데이터는 미디어 디코딩 파라미터들(적어도 일부 SPS 파라미터들(모든 SPS 파라미터들, 또는 그의 서브셋), 적어도 일부 PPS 파라미터들(모든 PPS 파라미터들, 또는 그의 서브셋), 적어도 일부 슬라이스 헤더 파라미터들(모든 슬라이스 헤더 파라미터들, 또는 그의 서브셋), 또는 비디오 디코딩을 위한 다른 파라미터들 등), 데이터 단위들에 관한 정보(길이들, 유형들 등), 및/또는, 각자의 데이터 단위들에 대한 암호화되지 않은 분량들 및 암호화된 분량들을 표시하는, 서브샘플 매핑 데이터를 포함할 수 있다. 대안적으로, 평문의 메타데이터는 다른 유형들의 미디어 디코딩 파라미터들, 데이터 단위들에 관한 정보 및/ 서브샘플 매핑 데이터를 포함할 수 있다.
도 5를 참조하면, 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층에서, 모듈은 암호화된 미디어 데이터("제2 암호화된 미디어 데이터")를 키 데이터를 사용하여 복호화한다(530). 키 데이터가 제2 암호화된 미디어 데이터를 복호화하기 위해 사용될 키(원래 콘텐츠 키, 세션 키)의 암호화된 버전이면, 모듈은 그것을 사용하기 전에 키를 복호화한다. 또는, 키 데이터가 제2 암호화된 미디어 데이터를 복호화하기 위해 사용될 키를 나타내는 토큰이면, 모듈은 토큰을 사용하여 키를 결정하고, 이어서 제2 암호화된 미디어 데이터의 복호화를 위해 키를 사용한다. 또는, 키 데이터가 키를 저장하는 안전한 장소에 대한 핸들이면, 모듈은 안전한 장소로부터 키를 복원한다. 제2 암호화된 미디어 데이터는 (소스 미디어 데이터로부터의) 제1 암호화된 미디어 데이터 또는 (신뢰할 수 없는 계층으로부터 제1 암호화된 미디어 데이터를 수신하고 제1 암호화된 미디어 데이터를 세션 키를 사용하여 제2 암호화된 미디어 데이터로 전사하는, 신뢰할 수 있는 계층에서 이전에 발생된) 그의 전사된 버전일 수 있다. 신뢰할 수 있는 계층에 있는 모듈은 이어서 복호화된 미디어 데이터를 디코딩한다(540).
하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층에서, 모듈은 제1 암호화된 미디어 데이터에 대한 정책 데이터를 수신할 수 있다. 예를 들어, 모듈은 처음에 정책 데이터를, 제1 암호화된 미디어 데이터에 대한 키 데이터를 제공하기도 하는, 라이선스 서버로부터 수신하고, 나중에 그것을 불투명한 메타데이터(224)의 일부로서 또는 어떤 다른 방식으로 수신할 수 있다. 정책 데이터는 키(들)를 어떻게 사용해야 하는지, 어떤 부가의 보호 대책들이 적용되어야 하는지, 키(들)가 언제 만료되는지 및/또는 키(들)의 사용에 관한 다른 조건들을 좌우할 수 있다. 예를 들어, 정책 데이터는 (1) 만료 시각/날짜, 콘텐츠가 n번째 재생(예컨대, 첫 번째 재생) 이후에 만료될 것이라는 규칙, 또는 재생 횟수 제한과 같은 시간 기반 제한; (2) 콘텐츠 보호가 출력 링크 상에서 적용되어야 하는지와 같은 출력 보호; 및/또는 (3) 디코딩된 미디어 데이터가 아날로그 출력 또는 무선 링크와 같은 특정 유형의 출력으로 출력될 수 있는지에 대한 정책을 포함할 수 있다. 정책 데이터는 라이선스 서버에 의해 서명될 수 있고, 이 경우에 모듈은 서명을 검증한다. 모듈은 이어서 복호화 동안 정책 데이터를 시행한다.
도 4로 돌아가서, 신뢰할 수 없는 계층에 있는 호스트 디코더는 신뢰할 수 있는 계층에서의 디코딩(540), 렌더링 및/또는 디스플레이의 적어도 일부 양태들을 관리하기 위해 메타데이터를 사용한다(440).
일부 구현들에서, 호스트 디코더에 의해 사용되는 평문의 메타데이터 이외에, 다른 메타데이터(예컨대, 키 데이터, 공유된 메모리 장소에 대한 핸들)가 또한 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이에서 교환되고, 여기서 다른 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하다. 예를 들어, 신뢰할 수 있는 계층에 있는 모듈은 제2 암호화된 미디어 데이터의 복호화를 위한 키 데이터를 포함하는 다른 불투명한 메타데이터를 결정하고, 다른 불투명한 메타데이터를 신뢰할 수 없는 계층으로 전달한다. 제어 모듈은 다른 불투명한 메타데이터를 신뢰할 수 있는 계층으로부터 수신한다. 제어 모듈은 다른 불투명한 메타데이터(키 데이터를 포함함)를 호스트 디코더로 전달하고, 호스트 디코더는 그것을, 제2 암호화된 미디어 데이터의 복호화에서 사용하기 위해, 신뢰할 수 있는 계층으로 전달한다. 신뢰할 수 있는 계층에 있는 모듈은 신뢰할 수 없는 계층으로부터 다른 메타데이터를 수신하고 제2 암호화된 미디어 데이터의 복호화를 위해 그것을 사용한다. 이와 유사하게, 다른 불투명한 메타데이터는, 평문의 미디어 데이터 또는 암호화된 미디어 데이터를 저장할 수 있는, 신뢰할 수 있는 계층에 있는 공유된 메모리 장소에 대한 핸들(신뢰할 수 없는 계층 내에서 불투명함)을 포함할 수 있다. 이 경우에, 제어 모듈은 불투명한 핸들을 수신하고 그것을 호스트 디코더로 전달하며, 호스트 디코더는 복호화 및/또는 디코딩에서 사용하기 위해 그것을 신뢰할 수 있는 계층으로 전달한다. 또는, 불투명한 메타데이터는 정책 데이터를 포함할 수 있다. 다른 구현들에서, 이러한 다른 불투명한 메타데이터가 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이에서 교환되지 않는다.
도 6a 및 도 6b는 신뢰할 수 없는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 보다 상세한 예시적인 기법(600)을 나타내고 있다. 도 7a 및 도 7b는 신뢰할 수 있는 계층의 관점에서, 하드웨어 보호된 DRM에 의한 미디어 디코딩 제어를 위한 대응하는 예시적인 기법(700)을 나타내고 있다. 도 4 및 도 5와 비교하여, 도 6a, 도 6b, 도 7a 및 도 7b는 세션 키들을 사용한 미디어 데이터의 전사에 따른, 하드웨어 보호된 DRM 시스템 내에서의 불투명한 메타데이터의 특정의 흐름을 나타내고 있다.
도 6a를 참조하면, 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층에서, 제어 모듈은 암호화된 미디어 데이터("제1 암호화된 미디어 데이터", 예컨대, 하나 이상의 암호화된, 인코딩된 미디어 샘플들)를 포함하는 소스 미디어 데이터를 수신한다(610). 제1 암호화된 미디어 데이터는 신뢰할 수 없는 계층 내에서 불투명하다.
도 7a를 참조하면, 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층에서, 모듈(도 2 또는 도 3에서의 DRM 로직(250) 등)은 암호화된 미디어 데이터("제2 암호화된 미디어 데이터")의 복호화를 위해 사용될 키 데이터를 포함하는 메타데이터("제1 메타데이터")를 결정한다(710). 키 데이터는, 예를 들어, 제2 암호화된 미디어 데이터를 복호화하는 데 사용될 키의 암호화된 버전 또는 이러한 키를 나타내는 토큰 또는 핸들일 수 있다. 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터 또는 그의 전사된 버전일 수 있다. 제1 메타데이터는 또한 정책 데이터를 포함할 수 있다.
신뢰할 수 있는 계층에 있는 모듈은 제1 메타데이터를 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층으로 전달한다(720). 신뢰할 수 있는 계층에 있는 모듈은 또한 제2 암호화된 미디어 데이터를 신뢰할 수 없는 계층으로 전달할 수 있다. 상세하게는, 제2 암호화된 미디어 데이터가 제1 암호화된 미디어 데이터의 전사된 버전일 때, 신뢰할 수 있는 계층에 있는 모듈은 제1 암호화된 미디어 데이터를 신뢰할 수 없는 계층으로부터 수신하고, 제1 암호화된 미디어 데이터를 제2 암호화된 미디어 데이터로 전사하며, 이어서 제2 암호화된 미디어 데이터를 신뢰할 수 없는 계층으로 전달할 수 있다. 또는, 신뢰할 수 있는 계층에 있는 모듈은 제2 암호화된 미디어 데이터를, 복호화 및 디코딩을 위해, 신뢰할 수 있는 계층에 있는 다른 모듈로 전달할 수 있다.
도 6a로 돌아가서, 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층으로부터, 제어 모듈은 제1 메타데이터를 수신한다(620). 살펴본 바와 같이, 이 제1 메타데이터는 제2 암호화된 미디어 데이터의 복호화를 위한 키 데이터를 포함한다. 제1 메타데이터 및 제2 암호화된 미디어 데이터는 신뢰할 수 없는 계층 내에서 불투명하다.
신뢰할 수 없는 계층에서, 제어 모듈은 또한 신뢰할 수 없는 계층 내에서 불투명하지 않은 메타데이터("제2 메타데이터")를 처리할 수 있다. 예를 들어, 제2 메타데이터가 소스 미디어 데이터에 암호화되어 있지 않는 한, 제어 모듈은 소스 미디어 데이터로부터 제2 메타데이터의 적어도 일부를 파싱할 수 있다. 또는, 제어 모듈은 소스 미디어 데이터의 적어도 일부를 신뢰할 수 있는 계층으로 전달할 수 있다. 이 경우에, 신뢰할 수 있는 계층에 있는 모듈(예컨대, DRM 로직)은 신뢰할 수 없는 계층으로부터 소스 미디어 데이터의 적어도 일부를 수신하고, 소스 미디어 데이터로부터 제2 메타데이터의 적어도 일부를 결정하며, 이어서 이러한 제2 메타데이터를 신뢰할 수 없는 계층으로 전달할 수 있다. 신뢰할 수 있는 계층에 있는 모듈은 이어서 제2 메타데이터의 일부를 신뢰할 수 있는 계층으로부터 다시 수신한다. 제2 메타데이터는 미디어 디코딩 파라미터들(SPS의 적어도 일부, PPS의 적어도 일부, 적어도 일부 슬라이스 헤더 파라미터들, 또는 비디오 디코딩에 대한 다른 파라미터들 등), 데이터 단위들에 관한 정보(길이들, 유형들 등), 및 서브샘플 매핑 데이터를 포함할 수 있다.
도 6a를 참조하면, 제어 모듈은 제1 (불투명한) 메타데이터 및 제2 (평문의) 메타데이터를 신뢰할 수 없는 계층에 있는 호스트 디코더로 전달한다(630). 제2 암호화된 미디어 데이터가 신뢰할 수 없는 계층에 있는 제어 모듈로 전달된 경우, 제어 모듈은 또한 제2 암호화된 미디어 데이터를 호스트 디코더로 전달할 수 있다. 도 6b를 참조하면, 호스트 디코더는, 정책 데이터에 따라, 제2 암호화된 미디어 데이터의 복호화에서 사용하기 위해 제1 메타데이터(키 데이터를 포함함)를 신뢰할 수 있는 계층으로 전달할 수 있다. 그것에 제공되면, 호스트 디코더는 또한 제2 암호화된 미디어 데이터를, 정책 데이터에 따라, 키 데이터를 사용하여 복호화하기 위해, 그리고 복호화된 미디어 데이터를 디코딩하기 위해, 신뢰할 수 있는 계층으로 전달할 수 있다.
도 7b를 참조하면, 신뢰할 수 있는 계층에 있는 모듈(예컨대, 도 2 또는 도 3에서의 디코딩 로직(260))은 신뢰할 수 없는 계층으로부터 제1 메타데이터(키 데이터를 포함함)를 수신한다(730). 신뢰할 수 있는 계층에 있는 모듈은 또한 제2 암호화된 미디어 데이터를 (호스트 디코더로부터 또는 다른 방식으로) 수신한다. 신뢰할 수 있는 계층에 있는 모듈은 이어서 제2 암호화된 미디어 데이터를 키 데이터를 사용하여 복호화한다(740). 키 데이터가 제2 암호화된 미디어 데이터를 복호화하기 위해 사용될 키(원래 콘텐츠 키, 세션 키)의 암호화된 버전이면, 모듈은 그것을 사용하기 전에 키를 복호화한다. 또는, 키 데이터가 제2 암호화된 미디어 데이터를 복호화하기 위해 사용될 키를 나타내는 토큰이면, 모듈은 토큰을 사용하여 키를 결정하고, 이어서 제2 암호화된 미디어 데이터의 복호화를 위해 키를 사용한다. 또는, 키 데이터가 키를 저장하는 안전한 장소에 대한 핸들이면, 모듈은 안전한 장소로부터 키를 복원하고, 이어서 제2 암호화된 미디어 데이터의 복호화를 위해 키를 사용할 수 있다. 신뢰할 수 있는 계층에 있는 모듈은 또한 그가 (호스트 디코더로부터 제1 메타데이터의 일부로서, 또는 다른 방식으로) 수신하는 정책 데이터를 시행할 수 있다. 모듈은 이어서 복호화된 미디어 데이터를 디코딩한다(750).
신뢰할 수 없는 계층에서, 호스트 디코더는 디코딩 동안 픽처들 및/또는 자원들을 관리하기 위해 제2 메타데이터를 사용할 수 있다. 도 6b를 참조하면, 제2 메타데이터를 신뢰할 수 있는 계층으로 전달하기보다는, 호스트 디코더는 복호화된 미디어 데이터의 디코딩, 렌더링 및/또는 디스플레이의 다양한 양태들을 관리하기 위해 제2 메타데이터를 사용한다(650).
IV. 하드웨어 보호된 DRM에 의한 비디오 디코딩 제어의 예시적인 구현들
이 섹션은 하드웨어 보호된 DRM에 의한 비디오 디코딩 제어의 일부 예시적인 구현들에서의 아키텍처들, 메타데이터 및 인터페이스 호출들의 예들을 기술한다.
A. 하드웨어 레벨 안전성의 양태들.
일부 예시적인 구현들에서, 하드웨어 보호된 DRM 시스템은 하드웨어 레벨 안전성을 제공한다. 즉, 미디어 데이터가 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층에서의 하드웨어 기반 보장들을 사용하여 보호된다. 신뢰할 수 있는 계층에 있는 하드웨어/펌웨어의 특징들이 인터페이스를 통해 노출된다. 인터페이스를 구현하는, 다양한 함수들은 인터페이스를 통한 호출들을 하드웨어/펌웨어의 특징들에 연결한다. 인터페이스 구현 및 하드웨어/펌웨어(다함께, "DRM 하드웨어/펌웨어 구현")는 모두 합하여 하드웨어 보호된 DRM에 대한 안전한 실행 환경(신뢰할 수 있는 실행 환경이라고도 불리움)을 제공한다.
DRM 하드웨어/펌웨어 구현의 다양한 양태들을 통해 하드웨어 레벨 안전성이 제공된다. 예를 들어, 개인 키들, 원래 콘텐츠 키들 및 세션 키들이 DRM 하드웨어/펌웨어 구현을 평문으로 빠져나가지 않는다. 즉, 키들은 암호화된 형태로만 DRM 하드웨어/펌웨어 구현을 빠져나간다. 신뢰할 수 없는 계층에서, 암호화된 키들은 불투명한 데이터로서 취급된다 - DRM 하드웨어/펌웨어 구현만이 키들의 포맷을 이해한다 -. 이와 유사하게, 해당되는 경우, 평문의(복호화된) 미디어 데이터는 DRM 하드웨어/펌웨어 구현 내부에 머물러 있고 (예컨대, 디코딩을 위해, 렌더링을 위해) DRM 하드웨어/펌웨어 구현의 컴포넌트들 사이에서만 전달된다. 미디어 데이터에 대한 이 제한이 일부 유형들의 미디어 데이터(예컨대, 비디오)에는 적용될 수 있지만, 다른 유형들의 미디어 데이터(예컨대, 오디오)에는 적용되지 않을 수 있다.
DRM 하드웨어/펌웨어 구현 내부의 메모리의 내용이 신뢰할 수 없는 계층의 컴포넌트들에 의해 액세스가능하지 않다. 보다 일반적으로, 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이의 격리가 DRM 하드웨어/펌웨어 구현에 의해 시행된다. 이 격리는 물리적으로 분리된 메모리(예컨대, 상이한 칩들 상의 메모리)를 사용하는 것에 의해 또는 하드웨어 보호된 방식으로 암호화를 사용하는 것에 의해 구현될 수 있다.
DRM 하드웨어/펌웨어 구현은 다양한 유형들의 암호화/복호화 방식들 및 키들 중 임의의 것을 사용할 수 있다. 예를 들어, DRM 하드웨어/펌웨어 구현은 대칭 암호화/복호화를 위해 128-비트 AES를 사용하고 비대칭 암호화/복호화를 위해 256-비트 ECC를 사용한다. DRM 하드웨어/펌웨어 구현의 인터페이스는 새로운 유형들의 암호화/복호화 방식들 및 키들을 허용할 수 있다. 이와 같이, DRM 하드웨어/펌웨어 구현은, 암호화 및 복호화에 적절한 함수들이 추가되는 한, 상이한 키 크기들 및 암호화/복호화 방식들을 지원할 수 있다.
DRM 하드웨어/펌웨어 구현에서, 키 데이터는 "키 블로브(key blob)"를 사용하여 표현될 수 있다. 키 블로브는 암호화 또는 복호화를 위해 사용될 키에 대한 데이터를 포함하는 데이터 구조체이다. 키 블로브들이 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이에서 전달될 수 있지만, 키 블로브는 전형적으로 신뢰할 수 없는 계층 내에서 불투명하다.
DRM 하드웨어/펌웨어 구현은 복호화 및/또는 디코딩을 위해 구성된 하나 이상의 집적 회로들, 하나 이상의 집적 회로들을 제어하기 위한 펌웨어 명령어들을 저장하는 메모리, 및 복호화된 미디어 데이터, 디코딩된 미디어 데이터, 및 복호화를 위해 사용되는 키들을 저장하기 위한 보호된 버퍼들을 포함할 수 있다. 대안적으로, 신뢰할 수 있는 계층에 대해, 하드웨어 보호된 DRM 시스템은 복호화를 위한 임의의 특수 목적, 별도의 하드웨어를 갖지 않는 범용 CPU 및 메모리를 사용할 수 있지만, 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이의 전환들은 하드웨어 관리되고, 신뢰할 수 있는 계층에 대한 처리에서 특별히 서명된 펌웨어 명령어들만이 메모리에 로딩되고 실행될 수 있다. 예를 들어, 하드웨어 보호된 DRM 시스템은 ARM® TrustZone® 기술의 한 버전을 사용한다. 보다 일반적으로, 신뢰할 수 있는 계층에 대해, 하드웨어 보호된 DRM 시스템은 신뢰할 수 있는 계층에서 실행 중이거나 안전한 모드에서 실행 중인 임의의 유형의 처리 유닛(범용 CPU를 포함함)을 사용할 수 있다. 신뢰할 수 있는 계층이 복호화 또는 미디어 디코딩을 위한 특수 하드웨어를 포함할 수 있지만, 그럴 필요는 없다.
B. 예시적인 아키텍처들.
신뢰할 수 없는 계층 내에서, 제어 모듈(220)은 복호화 드라이버들(310)의 하나 이상의 계층들에 대해 호출을 할 수 있다. 적어도 하나의 이러한 드라이버(310)는 복호화 동작들에 대한 호출들을 제어 모듈(220)로부터 수신한다. 적어도 하나의 이러한 드라이버(310)는 신뢰할 수 있는 계층에 대한 인터페이스에 대해 호출을 한다.
DRM 하드웨어/펌웨어 구현은 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이의 인터페이스를, 2개의 계층들 사이의 전송 메커니즘에 관계없이, 노출시킨다. 예를 들어, 다양한 유형들의 파라미터들이, 임의의 적절한 전송 메커니즘을 사용하여, 사용자 모드에서(신뢰할 수 없는 계층에서) 실행 중인 소프트웨어와 신뢰할 수 있는 계층에서 실행 중인 펌웨어 사이의 경계를 거쳐 전달될 수 있다.
신뢰할 수 있는 계층에 대해, DRM 하드웨어/펌웨어 구현은, 인터페이스 구현 계층 및 하드웨어/펌웨어 계층을 비롯한, 몇 개의 기능 계층들을 포함한다. 인터페이스 구현 계층은 신뢰할 수 없는 계층에 인터페이스를 노출시킨다. 일반적으로, 인터페이스는 DRM 하드웨어/펌웨어 구현 내의 복호화 및 디코딩을 위한 다양한 최상위 함수들은 물론, 정책 시행을 위한 최상위 함수들을 포함한다. 예를 들어, 인터페이스는 (a) 복호화에 대한 컨텍스트를 할당(allocate)/해제(free)하고, (b) 키들과 같은 디바이스 자산(device asset)들을 초기화하며(예컨대, 데이터에 서명하는 것, 디바이스 키들을 검사하는 것), (c) 로컬 프로비저닝(local provisioning)(키들, 라이선스 인증서들 및 다른 자산들을 로컬적으로 획득하는 것)을 사용하여 키를 발생시키거나 라이선스를 처리하고, (d) 콘텐츠를 복호화하고 재생하며(이하에서 기술되는 설정 함수(setup function) 및 이하에서 기술되는 전처리 함수(preprocessing function)를 포함함), 그리고/또는 (e) 다른 동작들을 수행하는 함수들을 포함한다. 인터페이스 구현은 인터페이스에 의해 노출되는 최상위 함수들을 구현한다.
인터페이스의 최상위 함수들은 차례로 복호화 하드웨어/펌웨어 또는 디코딩 하드웨어/펌웨어에 의해 노출되는 함수들을 호출할 수 있다. 인터페이스의 최상위 함수들과 하드웨어/펌웨어에 의해 노출되는 함수들 사이의 매핑은 직접적(1:1 매핑)이거나 보다 복잡(예컨대, 하나의 최상위 함수가 하드웨어/펌웨어에 의해 노출되는 다수의 함수들을 호출함)할 수 있다. 예를 들어, 복호화 하드웨어/펌웨어는 (a) 신뢰할 수 있는 계층에서의 컨텍스트를 할당/해제하고, (b) 신뢰할 수 있는 계층 내의 메모리를 할당/해제하며, (c) 키 블로브를 관리하고(예컨대, 데이터를 할당, 해제, 그의 소유권을 이전, 데이터를 복사하는 것), (d) 키를 할당/해제/도출하며, (e) 저장하기 위해 키를 래핑(wrap)/언래핑(unwrap)하고, (f) 디지털 서명으로 서명하며/디지털 서명을 검증하며, (g) 데이터를 암호화/복호화/전사하고, (h) 로컬 프로비저닝을 용이하게 하며, (i) 원격 프로비저닝(원격 서버를 사용하여 키들, 라이선스 인증서들 및 다른 자산들을 획득하는 것)을 용이하게 하고, 그리고/또는 (j) 다른 동작들을 수행하는 함수들을 노출시키고 구현한다.
C. 예시적인 메타데이터 속성들.
도 3의 아키텍처(300)의 일부 예시적인 구현들에서, 하기의 메타데이터 속성들이 제어 모듈(220)로부터 호스트 디코더(230)로 전달되는 암호화된 비디오 프레임에 첨부(attach)된다.
제1 속성("KeyInfoID 속성")은 비디오 프레임에 대해 적용되는 GUID(globally unique identifier)이다. 이는 평문의 메타데이터(226)의 일 예이다. GUID는 비디오 프레임에 대해 사용될 하드웨어 보호된 DRM에 대한 식별자(예컨대, 키 식별자, 라이선스 식별자, 콘텐츠 키/정책 쌍)를 표시한다. 제어 모듈(220)이 KeyInfoID 속성에 대한 GUID를 시작(originate)한다. 호스트 디코더(230)는 KeyInfoID 속성을 추출하고 그것을 (예컨대, 비디오 프레임의 복호화 및 디코딩을 시작하기 위해 함수가 호출될 때 전달되는 데이터 구조체의 일부로서) 디코딩 드라이버(들)(320)에 제공할 수 있으며, 디코딩 드라이버(들)(320)는 KeyInfoID 속성을 신뢰할 수 있는 계층으로 전달한다.
제2 속성("KeyInfo 속성")은 비디오 프레임에 대해 적용되는 키 데이터(312)를 포함한다. 이는 불투명한 메타데이터(224)의 일 예이다. KeyInfo 속성은 비디오 프레임에 대해 사용될 하드웨어 보호된 DRM에 대한 키 슬롯, 키 식별자, 암호화된 키 등에 관한 상세들을 포함한다. 제어 모듈(220)은 신뢰할 수 있는 계층에 의해 제공되는 불투명한 데이터를 사용하여 암호화된 비디오 프레임에 대한 KeyInfo 속성을 설정한다. 예를 들어, KeyInfo 속성은, 이하에서 기술되는 바와 같이, 설정 함수에 대한 호출로부터 반환되는 구현 특정 키 데이터 블로브를 포함하도록 설정될 수 있다. 호스트 디코더(230)는 KeyInfo 속성을 추출하고 그것을 (예컨대, 비디오 프레임의 복호화 및 디코딩을 시작하기 위해 함수가 호출될 때 전달되는 데이터 구조체의 일부로서) 디코딩 드라이버(들)(320)에 제공할 수 있으며, 디코딩 드라이버(들)(320)는 KeyInfo 속성을 신뢰할 수 있는 계층으로 전달한다.
제3 속성("VideoDecryptor 속성")은 비디오 프레임에 대해 적용되는 인터페이스 포인터이다. 이는 평문의 메타데이터(226)의 일 예이다. 이는, 하드웨어 보호된 DRM을 사용할 때, 비디오 프레임을 프레임을 복호화/디코딩하는 데 사용되는 컨텍스트 정보와 연관시킨다. 제어 모듈(220)은 VideoDecryptor 속성을 시작하고 설정한다. 호스트 디코더(230)는 VideoDecryptor 속성을 추출하고 그것을 사용하여 비디오 프레임 제출 동안의 컨텍스트 정보를 결정하고, 컨텍스트 정보를 (예컨대, 비디오 프레임의 복호화 및 디코딩을 시작하기 위해 함수가 호출될 때 전달되는 데이터 구조체의 일부로서) 디코딩 드라이버(들)(320)에 제공한다.
제4 속성("SubSample_Mapping 속성")은 서브샘플 매핑 데이터(306)를 포함한다. 예를 들어, 서브샘플 매핑 데이터(306)는 비디오 프레임의 NAL 단위들에 대해 적용되는 바이트 범위 값들의 배열을 포함하고, 여기서 2개 마다의 바이트 범위 값들은 쌍을 이룬다. 바이트 범위 값들은 DWORD(32-비트 값) 또는 어떤 다른 유형의 값일 수 있다. 쌍에서의 첫 번째 값은 NAL 단위 내의 평문의 바이트들의 수를 표시하고, 쌍에서의 두 번째 값은 NAL 단위 내의 암호화된 바이트들의 수를 표시한다. 쌍의 어느 하나의 값이 0일 수 있지만, 전형적인 시나리오들에서 쌍에 대해 값들 둘 다가 결코 0은 아니다(쌍을 2개의 0 값들로 인코딩하는 것이 가능할 수 있지만, 낭비적일 것이다). 이와 같이, SubSample_Mapping 속성에 대한 바이트 값들의 배열은, NAL 단위 전체가 복호화되거나, NAL 단위 전체가 복호화되지 않거나, NAL 단위가 부분적으로 복호화될 가능성을 비롯하여, 소스 미디어 데이터(212)에서 어느 범위들의 바이트들을 복호화해야 하는지 그리고 어느 범위들의 바이트들을 복호화하지 않아야 하는지를 표시한다. 대안적으로, SubSample_Mapping 속성에 대한 상이한 데이터 구조체는 각자의 데이터 단위들에 대한 평문의 영역들 및 암호화된 영역들을 표시하는 값들을 저장한다. SubSample_Mapping 속성은 평문의 메타데이터(226)의 일 예이다. 제어 모듈(220)은, 제어 모듈(220)에 의해 소스 미디어 데이터(212)로부터 파싱되는 값들에 어쩌면 기초하여, SubSample_Mapping 속성을 설정한다. 그렇지만, 암호화된 미디어 데이터(222)가 전사되었으면, 바이트 범위들의 값들이 변했을 수 있다. 이 경우에, 제어 모듈(220)은 SubSample_Mapping 속성의 값들을 그에 따라 업데이트할 수 있다. 호스트 디코더(230)는 SubSample_Mapping 속성을 추출하고 바이트 범위 값들을 (예컨대, 암호화된 미디어 데이터(222)를 전달하기 위해 함수가 호출될 때 전달되는 데이터 구조체의 일부로서) 디코딩 드라이버(들)(320)로 전달할 수 있다.
제5 속성("ClearSliceHeaderData 속성")은 비디오 프레임에 대해 적용되는 선택된 슬라이스 헤더 파라미터들(314)을 포함한다. 이는 평문의 메타데이터(226)의 일 예이다. 제어 모듈(220)은 ClearSliceHeaderData 속성을 설정한다. 선택된 슬라이스 헤더 파라미터들(314)이 소스 미디어 데이터(212) 내에 암호화되어 있지 않으면, 제어 모듈(220)은 소스 미디어 데이터(212)로부터 선택된 슬라이스 헤더 파라미터들(314)을 파싱(그리고 검증)할 수 있다. 그렇지 않은 경우, 신뢰할 수 있는 계층에 있는 하나 이상의 컴포넌트들은 암호화된 미디어 데이터(221)로부터 선택된 슬라이스 헤더 파라미터들(314)을 파싱(그리고 검증)하고 - 어쩌면 공급업체 특정 드라이버를 사용하여 선택된 슬라이스 헤더 파라미터들(314)을 파싱(그리고 검증)하고 -, 선택된 슬라이스 헤더 파라미터들(314)을 제어 모듈(220)에 반환할 수 있다. 예를 들어, ClearSliceHeaderData 속성은 도 8의 목록(800)에 나타낸 선택된 슬라이스 헤더 파라미터들(314)의 조합을 포함한다. 도 8에서, SliceHeader 구조체는 슬라이스 헤더의 길이 dSliceHeaderLen(단위: 바이트), 및 그에 뒤이은 dSliceHeaderLen 바이트의 슬라이스 헤더 데이터를 포함한다. 슬라이스 헤더 태그들의 세트는 SliceHeaderSet 구조체에 연속적으로 직렬화되어 있다. 호스트 디코더(230)는 ClearSliceHeaderData 속성으로부터 선택된 슬라이스 헤더 파라미터들(314)을 추출하고, 디코딩의 양태들(예컨대, 픽처 버퍼 관리, 자원 관리)을 제어하기 위해 선택된 슬라이스 헤더 파라미터들(314)을 사용할 수 있다.
제6 속성("NALULengthInfo 속성")은 비디오 프레임에 대한 소스 미디어 데이터(212) 내의 NAL 단위들의 길이들을 표시하는 데이터를 포함한다. 제7 속성("NALUTypes 속성")은 비디오 프레임에 대한 NAL 단위들의 유형들을 표시하는 데이터를 포함한다. 이 속성들은 평문의 메타데이터(226)의 예들이다. 제어 모듈(220)은 NALULengthInfo 속성 및 NALUTypes 속성을 설정한다. NAL 단위 유형들/길이들(304)이 소스 미디어 데이터(212) 내에 암호화되어 있지 않으면, 제어 모듈(220)은 (예컨대, 프레임 주사 동안) 소스 미디어 데이터(212)로부터 NAL 단위 유형들/길이들(304)을 파싱(그리고 검증)할 수 있다. 그렇지 않은 경우, 신뢰할 수 있는 계층에 있는 하나 이상의 컴포넌트들은 암호화된 미디어 데이터(221)로부터 NAL 단위 유형들/길이들(304)을 파싱(그리고 검증)하고 - 어쩌면 공급업체 특정 드라이버를 사용하여 NAL 단위 유형들/길이들(304)을 파싱(그리고 검증)하고 -, NAL 단위 유형들/길이들(304)을 제어 모듈(220)에 반환할 수 있다. 호스트 디코더(230)는 NALULengthInfo 속성 및 NALUTypes 속성으로부터 값들을 추출하고, 디코딩의 양태들(예컨대, 픽처 버퍼 관리, 자원 관리)을 제어하기 위해 추출된 값들을 사용할 수 있다.
NAL 단위에 대한 NAL 단위 길이는 NAL 단위에 대한 시작 코드(있는 경우) 및 NAL 단위 유형을 고려한다. NALULengthInfo 속성은 비디오 프레임에서의 NAL 단위당 DWORD를 포함할 수 있다. 예를 들어, 비디오 프레임에 대한 5개의 NAL 단위들(보조 단위 구분기호(auxiliary unit delimiter)(9 바이트), SPS(25 바이트), PPS(10 바이트), 제1 슬라이스 데이터(50K) 및 제2 슬라이스 데이터(60K)를 포함함)에 대해, NALULengthInfo 속성은 값들 9, 25, 10, 50K 및 60K를 갖는 5개의 DWORD들을 포함한다. NALUTypes 속성은 비디오 프레임의 각자의 NAL 단위들에 대한 NAL 단위 유형 바이트들을 포함한다. H.264/AVC 비디오에 대해, 하나의 NAL 단위 유형은, 구문 요소들 forbidden_zero_bit, nal_ref_idc, 및 nal_unit_type를 포함하는, 1 바이트이다.
제8 속성("SPSPPSData 속성")은 비디오 프레임 내의 NAL 단위들에 대한 SPS 데이터 및/또는 PPS 데이터(302)를 포함한다. SPS 데이터 및/또는 PPS 데이터(302)는 그들이 소스 미디어 데이터(212)에서 나오는 바로 그 순서로 SPSPPSData 속성에 표현된다. 포맷은 4-바이트(DWORD) 길이, 및 그에 뒤이은, 각각의 SPS NAL 단위 또는 PPS NAL 단위에 대한, SPS 또는 PPS 데이터이다. 예를 들어, 레이아웃은 DWORD 내의 값 10, SPS에 대한 10 바이트의 데이터, DWORD 내의 값 5, 및 PPS에 대한 5 바이트의 데이터일 수 있고, 총 4+10+4+5=23 바이트일 수 있다. SPSPPSData 속성은 평문의 메타데이터(226)의 일 예이다. 제어 모듈(220)은 SPSPPSData 속성을 설정한다. SPS/PPS 데이터(302)가 소스 미디어 데이터(212) 내에 암호화되어 있지 않으면, 제어 모듈(220)은 (예컨대, 프레임 주사 동안) 소스 미디어 데이터(212)로부터 SPS/PPS 데이터(302)를 파싱(그리고 검증)할 수 있다. 그렇지 않은 경우, 신뢰할 수 있는 계층에 있는 하나 이상의 컴포넌트들은 암호화된 미디어 데이터(221)로부터 SPS/PPS 데이터(302)를 파싱(그리고 검증)하고 - 어쩌면 공급업체 특정 드라이버를 사용하여 SPS/PPS 데이터(302)를 파싱(그리고 검증)하고 -, SPS/PPS 데이터(302)를 제어 모듈(220)에 반환할 수 있다. 호스트 디코더(230)는 SPSPPSData 속성으로부터 SPS/PPS 데이터(302)를 추출하고, 디코딩의 양태들(예컨대, 픽처 버퍼 관리, 자원 관리)을 제어하기 위해 추출된 값들을 사용할 수 있다.
제9 속성("SampleID 속성")은 하드웨어 보호된 DRM을 사용할 때 비디오 프레임의 복호화 동안 사용되는 데이터(예컨대, 초기화 벡터)를 포함한다. 이는 평문의 메타데이터(226)의 일 예이지만, 복호화에서 사용하기 위해 디코딩 로직(260)으로(그리고 DRM 로직(250)으로) 전달될 수 있다. 제어 모듈(220)은, 제어 모듈(220)에 의해 소스 미디어 데이터(212)로부터 파싱되는 값에 어쩌면 기초하여, 비디오 프레임에 대한 SampleID 속성을 설정한다. 초기화 벡터가, 예를 들어, 컨테이너 포맷의 구문 요소로서 제공될 수 있다. 그렇지만, 암호화된 미디어 데이터(222)가 전사되었으면, SampleID 속성에 대한 값이 변했을 수 있다. 이 경우에, 제어 모듈(220)은 SampleID 속성의 값을 그에 따라 업데이트할 수 있다. 호스트 디코더(230)는 SampleID 속성을 추출하고 추출된 값을 (예컨대, 암호화된 미디어 데이터(222)를 전달하기 위해 함수가 호출될 때 전달되는 데이터 구조체의 일부로서) 디코딩 드라이버(들)(320)로 전달할 수 있다.
호스트 디코더(230)는 비디오 프레임의 디코딩의 양태들을 제어할 때 암호화된 미디어 데이터(222)를 고려하지 않는데, 그 이유는 암호화된 미디어 데이터(222)가 신뢰할 수 없는 계층 내에서 불투명하기 때문이다. 그렇지만, 호스트 디코더(230)는 하기의 4개의 메타데이터 속성들 - 슬라이스 헤더 파싱을 위해 사용되는 SPS/PPS 데이터(302)를 갖는 SPSPPSData 속성(비디오 프레임에 대해 존재하는 경우), 슬라이스 헤더 파라미터들(314)을 갖는 ClearSliceHeaderData, 그리고 슬라이스 NAL 단위들을 찾아내고 위치확인하기 위한 NALUTypes 및 NALULengthInfo - 을 고려할 수 있다.
D. 예시적인 함수 호출들.
도 3의 아키텍처(300)의 일부 예시적인 구현들에서, 하기의 함수들은 암호화된 비디오 데이터를 복호화하고 디코딩할 때 호출될 수 있다.
1. 단계 A - 키 데이터의 생성.
제어 모듈(220)이 새로운 암호화된 미디어 데이터(221)를 만날 때, 제어 모듈(220)은 새로운 키에 대해 사용하기 위한 키 슬롯을 준비할 수 있다(예컨대, 도 3에서의 단계 A를 참조). 예를 들어, 제어 모듈(220)은 하드웨어 키를 초기화하기 위해 복호화 드라이버(들)(310) 중 하나의 복호화 드라이버의 함수를 호출한다(키 데이터(312)에 대한 요청(311)의 예). 함수 호출은 신뢰할 수 있는 계층에 있는 복호화 드라이버(들)(330) 및 DRM 로직(250)에 의해 제공되는 안전한 실행 환경으로 새어나가서, 복호화 드라이버(들)(330) 중 하나의 복호화 드라이버에 구현된 "설정" 함수에 대한 호출에 도달한다.
설정 함수는 복호화 방식으로 콘텐츠를 복호화할 수 있고 주어진 라이선스 키 블로브에 바인딩되어 있는 라이선스 체인(license chain)을 받는다. 함수는 콘텐츠 복호화가 일어나기에 충분한 데이터(키 데이터(312)를 포함함)를 반환한다. 다양한 입력 인수(input argument)들은 키 데이터(312)를 생성할 때 사용될 수 있는 콘텐츠 키 데이터, 라이선스 데이터, 정책 데이터 및 구현 특정 데이터(개인 데이터)를 제공할 수 있다. 입력/출력 인수는 신뢰할 수 있는 실행 환경 컨텍스트를 제공할 수 있다. 설정 함수는 복호화를 위해 호출자(caller)에 의해 요청되는 모드를 명시하는 인수를 입력으로서 받을 수 있다. 설정 함수는 복호화를 위해 사용될 모드를 명시하는 인수를 출력으로서 제공할 수 있다. 출력 인수는 어떤 경우에 적절한 키 식별자를 갖는 콘텐츠를 (재생을 위해) 복호화하기 위해 사용되는 키에 대한 콘텐츠 복호화 키 블로브를 제공할 수 있다. 다른 출력 인수는 오프로딩된 복호화(offloaded decryption)를 위해 사용되는 구현 특정 키 데이터 블로브(키 데이터 블로브의 예)를 제공할 수 있다. 구현 특정 키 데이터 블로브는 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층 내에서 불투명하다.
전반적으로, 설정 함수는 다양한 입력 인수들에 대한 서명들을 파싱하고 검증하며, 체크섬들을 검증하고, 라이선스들에 대한 날짜들을 검증하며(하드웨어 보호된 DRM이 시계를 포함하는 경우), 안전성 레벨들을 검증하고, 요청된 복호화 모드가 지원된다는 것을 검증한다. 설정 함수는 콘텐츠 복호화 키를 작성하기 위해 라이선스들로부터 부가 데이터를 파싱하고, 콘텐츠 복호화 키를 작성하고 서명하며, 콘텐츠 복호화 키 및 사용된 모드를 반환한다. 설정 함수는 또한 구현 특정 키 데이터 블로브(키 데이터(312)의 예)를 작성하고 그것을 반환한다.
제어 모듈(220)은 설정 함수로부터 출력된 구현 특정 키 데이터 블로브를 수신한다. 제어 모듈(220)은 구현 특정 키 데이터 블로브를 주어진 콘텐츠 키/정책에 연계된 각각의 암호화된 비디오 프레임에 대한 KeyInfo 속성(상기 참조)으로서 첨부한다. 구현에 따라, 구현 특정 키 데이터 블로브는 소스 미디어 데이터(212) 내의 암호화된 미디어 데이터(221)를 복호화하는 데 사용될 원래 콘텐츠 키, 그의 전사된 버전을 복호화하는 데 사용될 세션 키, 또는 그 키들 중 하나를 표현하는 토큰 또는 핸들일 수 있다.
2. 단계 B - 메타데이터의 추출, 전사.
제어 모듈(220)이 암호화된 미디어 데이터(221)를 신뢰할 수 있는 계층으로 전달할 때, 제어 모듈(220)은 선택된 슬라이스 헤더 파라미터들(314)(그리고 어쩌면 평문의 메타데이터(226)에 포함될 다른 파라미터들)의 추출 및/또는 전사를 요청할 수 있다. 예를 들어, 제어 모듈(220)로부터 안전한 실행 환경에 대한 호출은 복호화 드라이버(들)(330) 중 하나의 복호화 드라이버에 구현된 "전처리" 함수에 대한 호출에 도달한다. 전처리 함수에서, 선택된 슬라이스 헤더 파라미터들(314)이 부분적으로 또는 전체적으로 암호화된 프레임으로부터 파싱되고, 암호화된 미디어 데이터(221)가 전사될 수 있다. 일반적으로, 전처리 함수로부터 출력으로서 반환되는 값들이, 제어 모듈(220)에 의해 호스트 디코더(230)로 전달될 수 있는, 비디오 프레임 또는 비디오 프레임의 메타데이터 속성들에 포함된다.
전처리 함수에 대해, 입력 인수들은, 설정 함수에 의해, 각각, 반환된 콘텐츠 복호화 키 블로브 및 구현 특정 키 데이터 블로브(키 데이터(312)의 예)를 제공할 수 있다. 입력/출력 인수는 신뢰할 수 있는 실행 환경 컨텍스트를 제공할 수 있다. 전처리 함수는 복호화를 위해 사용되는 초기화 벡터를 표시하는 인수를 입력으로서 받고 (전사 이후에) 초기화 벡터에 대한 업데이트된 값 또는 (그렇지 않은 경우) 초기화 벡터에 대한 초기 값을 포함하는 인수를 반환할 수 있다. 전처리 함수는 또한 서브샘플 매핑 데이터(306)를 포함하는 인수를 입력으로서 받고, (콘텐츠가 전사된 경우) 새로운 또는 수정된 서브샘플 매핑 데이터(306) 또는 (그렇지 않은 경우) 원래의 서브샘플 매핑 데이터(306)를 포함하는 인수를 반환할 수 있다. 전처리 함수는, 암호화된 미디어 데이터(221)의 전부 또는 암호화된 미디어 데이터(221)의 단지 일부일 수 있는, 복호화될 암호화된 바이트들을 입력으로서 받을 수 있다. (슬라이스 헤더 파라미터들(314)의 추출을 위해, NAL 단위 유형들 및 시작 코드들을 사용하여 신뢰할 수 없는 계층에서 식별된 슬라이스 NAL 단위들의 초기 부분들이, 서브샘플 매핑 데이터와 함께, 전달될 수 있다.) 출력으로서, 전처리 함수는 (콘텐츠가 전사된 겨우) 전사된 바이트들 또는 (그렇지 않은 경우) 원래 값들을 반환할 수 있다. 출력 인수는 암호화된 미디어 데이터(221)로부터 추출된 슬라이스 헤더 파라미터들(314)을 포함할 수 있다. 다른 출력 인수는 암호화 및 복호화 동안 사용된 불투명한 프레임 데이터(있는 경우) 또는 비어 있는 자리 표시자(placeholder)를 포함할 수 있다.
전반적으로, 전처리 함수에서, 복호화 드라이버(들)(330) 중 하나는, 자체적으로 또는 DRM 로직(250)과 협력하여, 다양한 입력 인수들에 대한 서명들을 파싱 및 검증하고, 수신된 암호화된 미디어 데이터(221)를 주어진 서브샘플 매핑 데이터(306) 및 초기화 벡터를 사용하여 보호된 버퍼에서 평문의 미디어 데이터로 복호화하며, 슬라이스 헤더(들)를 위치확인하고 선택된 슬라이스 헤더 파라미터들(314)을 추출하기 위해 인코딩된 비디오 프레임을 파싱한다. 복호화 드라이버(들)(330) 중 하나 또는 DRM 로직(250)의 제어 하에서, 슬라이스 헤더(들)를 위치확인하고 슬라이스 헤더 파라미터들(314)을 추출하기 위해 GPU 또는 다른 디코딩 하드웨어가 사용될 수 있다. 복호화 드라이버(330) 및/또는 DRM 로직(250)은, 전사가 명시되어 있는 경우, 미디어 데이터를 전사하고, 암호화된(전사된) 미디어 데이터(222)는 물론 수정된 서브샘플 매핑 데이터(306)를 반환한다. 전처리 함수는 또한 임의의 업데이트된 불투명한 메타데이터 그리고 (평문으로) 선택된 슬라이스 헤더 파라미터들(314)를 반환한다.
예를 들어, H.264/AVC 표준에 따라 포맷팅된 슬라이스 NAL 단위의 슬라이스 헤더에 대한 선택된 슬라이스 헤더 파라미터들(314)을 추출하기 위해, 복호화 드라이버(330) 및/또는 DRM 로직(250)은 임의의 에뮬레이션 방지 바이트(emulation prevention byte)(정의된 패턴의 바이트들 내의 0x03 바이트)를 제거하고, first_mb_in_slice 구문 요소에 대한 선두 비트(leading bit)들을 제거하며, direct_spatial_mv_pred 플래그 요소부터 pred_weight_table() 구조체의 끝까지의 구문 요소들에 대한 비트들을 제거하고, cabac_init_idc 구문 요소 이후의 슬라이스 헤더 내의 구문 요소들에 대한 비트들을 제거한다. 나머지 구문 요소들 - 슬라이스 유형, PPS 식별자, 프레임 번호, IDR 픽처 식별자, POC(picture order count) 정보, 및 dec_ref_pic_marking() 구조체를 포함함 - 은 디코딩의 양태들을 관리히는 데 유용하고 전형적으로 슬라이스 헤더당 몇 바이트를 소비할 수 있다. 도 8의 예에서, 추출된, 선택된 슬라이스 헤더 파라미터들(314)은 SliceHeader 구조체의 필드 SliceHeaderBytes에 저장된다. 대안적으로, 복호화 드라이버(330) 및/또는 DRM 로직(250)은 슬라이스 NAL 단위의 슬라이스 헤더의 어떤 다른 서브셋을, 슬라이스 헤더 파라미터들(314)로서, 추출하고 반환할 수 있다.
3. 단계 C - 비디오 디코딩 제어.
호스트 디코더(230)는 키 데이터(312), 다른 불투명한 메타데이터(224) 및 암호화된 미디어 데이터(222)를 해석할 수 없다. 그 대신에, 호스트 디코더(230)는 디코딩, 렌더링 및/또는 디스플레이의 다양한 양태들을 관리하기 위해 평문의 메타데이터(226)를 사용한다. 일반적으로, 호스트 디코더(230)는 메타데이터 속성들로부터 복호화 파라미터들(어쩌면 불투명함)을 추출하고 복호화 파라미터들 중 적어도 일부(불투명한 파라미터들을 포함함)를 디코딩 드라이버(들)(320)로 전달할 수 있다. 호스트 디코더(230), 또는 디코딩 드라이버(들)(320) 중 하나는 복호화 세션을 생성하고, 복호화 세션에 대한 참조 및 복호화 파라미터들을 포함하도록 데이터 구조체를 채우며, 데이터 구조체를 신뢰할 수 있는 계층으로 전달할 수 있다.
호스트 디코더(230)는 또한 비디오 디코딩 파라미터들을 메타데이터 속성들로부터 추출하고, 디코딩된 픽처 버퍼로부터의 픽처의 출력, 디코딩된 픽처 버퍼로부터의 픽처의 삭제 및/또는 디코딩, 렌더링 및/또는 디스플레이의 다른 양태들을 제어하기 위해, 비디오 디코딩 파라미터들을 사용한다.
E. 상이한 구현들에서의 미디어 데이터 및 키 데이터의 흐름을 보여주는 예들.
상이한 예시적인 구현들에서, 하드웨어 보호된 DRM 시스템을 통한 미디어 데이터 및 키 데이터의 흐름이 상이할 수 있다.
제1 접근법 세트에서, 하드웨어 보호된 DRM 시스템은 안전한 공유 메모리를 포함한다. 신뢰할 수 있는 계층 내의 컴포넌트들(예컨대, DRM 로직(250), GPU 또는 디코딩 로직(260)에 대한 다른 디코딩 하드웨어)은 안전한 공유 메모리에 직접 액세스할 수 있다. 신뢰할 수 없는 계층 내의 컴포넌트들(예컨대, 제어 모듈(220), 호스트 디코더(230))은 안전한 공유 메모리에 직접 액세스할 수 없다. 신뢰할 수 있는 계층에서의 암호화된 미디어 데이터(221, 222)의 복호화 이후에, 평문의(복호화된) 미디어 데이터가 (GPU/디코딩 하드웨어에 의해 액세스가능한) 안전한 공유 메모리에 평문의 형태로 저장될 수 있다.
구체적으로는, 제어 모듈(220)은 암호화된 미디어 데이터(221)를 신뢰할 수 있는 계층으로 전달한다. 신뢰할 수 있는 계층에서, 암호화된 미디어 데이터(221)는, 신뢰할 수 있는 계층 내에서 평문인, 원래 콘텐츠 키를 사용해 복호화된다. 선택된 슬라이스 헤더 파라미터들(314)이 추출되고 구조체에 추가되며, 이 구조체가 평문의 메타데이터(226)의 일부로서 반환된다. 평문의(복호화된) 미디어 데이터는, GPU 또는 다른 디코딩 하드웨어에 의한 디코딩을 위해, 안전한 공유 메모리로 전달된다. 선택된 슬라이스 헤더 파라미터들(314) 및 다른 평문의 메타데이터(226)가 신뢰할 수 없는 계층에서 디코딩, 렌더링 및/또는 디스플레이의 양태들을 제어하기 위해 사용될 수 있다.
예를 들어, 안전한 공유 메모리는 신뢰할 수 있는 계층 내의 컴포넌트들(DRM 로직(250) 및 디코딩 로직(260)을 포함함)에 기본적으로 알려져 있다. 기본적인 안전한 공유 메모리는 저장된 평문의 미디어 데이터에 할당된, 고정된, 전역 BIOS 할당된 버퍼(fixed, global BIOS-allocated buffer)일 수 있거나, 어떤 다른 유형의 안전한 공유 메모리(예컨대, 다이 상에 물리적으로 위치되어 있는 특별한 RAM - 또는 SRAM -)일 수 있다. 이 경우에, 평문의 미디어 데이터가 안전한 공유 메모리로 직접 복사된다.
또는, 다른 예로서, 안전한 공유 메모리가 신뢰할 수 있는 계층에 있는 컴포넌트(예컨대, DRM 로직(250) 또는 복호화 드라이버(들)(330) 중 하나)에 의해 할당된다. 그 컴포넌트는 GPU 또는 다른 디코딩 하드웨어를 위한 메모리 내부의 공간을 할당하고, 평문의 미디어 데이터를 할당된 공간으로 복사할 수 있다. 그 컴포넌트는 이어서 불투명한 핸들을 (예컨대, 불투명한 메타데이터(224)의 일부로서) 신뢰할 수 없는 계층으로 전달할 수 있고, 그 불투명한 핸들은 (예컨대, 호스트 디코더(230)로부터) 다시 신뢰할 수 있는 계층으로 전달된다.
또는, 다른 예로서, 안전한 공유 메모리가 신뢰할 수 없는 계층에 있는 컴포넌트에 의해 할당된다. 신뢰할 수 없는 계층에 있는 컴포넌트는 GPU 또는 다른 디코딩 하드웨어를 위한 메모리 내부의 공간을 할당하고, 할당된 공간에 대한 불투명한 핸들을 수신하며, 불투명한 핸들을 다시 신뢰할 수 있는 계층에 있는 컴포넌트(예컨대, DRM 로직(250) 또는 복호화 드라이버(들)(330) 중 하나)로 전달할 수 있다. 신뢰할 수 있는 계층에 있는 컴포넌트는 평문의 미디어 데이터를 핸들에 의해 참조되는 할당된 공간으로 복사할 수 있다. (평문의 미디어 데이터를 복사하기 전에, 신뢰할 수 있는 계층에 있는 컴포넌트는 할당된 공간이 실제로 안전하다는 것을 검증할 수 있다.) 신뢰할 수 없는 계층에 있는 컴포넌트는 이어서 불투명한 핸들을 디코딩 로직(260)에 대한 GPU 또는 다른 디코딩 하드웨어로 전달한다.
제2 접근법 세트에서, 하드웨어 보호된 DRM 시스템은 안전한 공유 메모리를 갖지 않는다. 신뢰할 수 있는 계층에서의 암호화된 미디어 데이터(221, 222)의 복호화 이후에, 평문의(복호화된) 미디어 데이터가 하나 이상의 세션 키들을 사용하여 재암호화되고 암호화된(여기서, 전사된) 형태로 GPU/디코딩 하드웨어로 전달된다.
구체적으로는, 제어 모듈(220)은 암호화된 미디어 데이터(221)를 신뢰할 수 있는 계층으로 전달한다. 신뢰할 수 있는 계층에서, 암호화된 미디어 데이터(221)는, 신뢰할 수 있는 계층 내에서 평문인, 원래 콘텐츠 키를 사용해 복호화된다. 선택된 슬라이스 헤더 파라미터들(314)이 추출되고 구조체에 추가되며, 이 구조체가 평문의 메타데이터(226)의 일부로서 반환된다. (전사를 위한) 세션 키는 DRM 로직(250)과 디코딩 로직(260) 사이에서 결정된다. 세션 키는 사전 설정되거나 복호화 세션 동안 설정될 수 있다(그리고 키 데이터(312)로서 교환됨). 평문의 미디어 데이터가 (전사를 위한) 세션 키를 사용하여 재암호화된다. 안전하지 않은 공유 메모리가 존재하면, 전사된 미디어 데이터는, 세션 키를 사용한 복호화 및 GPU 또는 다른 디코딩 하드웨어에 의한 디코딩을 위해, 안전하지 않은 공유 메모리로 전달된다. 선택된 슬라이스 헤더 파라미터들(314) 및 다른 평문의 메타데이터가 신뢰할 수 없는 계층에서 디코딩, 렌더링 및/또는 디스플레이의 양태들을 제어하기 위해 사용될 수 있다.
예를 들어, 안전하지 않은 공유 메모리는 신뢰할 수 있는 계층 내의 컴포넌트들에 기본적으로 알려져 있다. 기본적인 안전하지 않은 공유 메모리는 전사된 미디어 데이터를 저장하기 위해 할당된, 고정된, 전역 BIOS 할당된 버퍼일 수 있거나, 어떤 다른 유형의 안전하지 않은 공유 메모리일 수 있다. 이 경우에, 전사된 미디어 데이터가 안전하지 않은 공유 메모리로 직접 복사된다.
또는, 다른 예로서, 안전하지 않은 공유 메모리가 신뢰할 수 있는 계층에 있는 컴포넌트(예컨대, DRM 로직(250) 또는 복호화 드라이버(들)(330) 중 하나)에 의해 할당된다. 그 컴포넌트는 GPU 또는 다른 디코딩 하드웨어를 위한 메모리 내부의 공간을 할당하고, 전사된 미디어 데이터를 할당된 공간으로 복사할 수 있다. 그 컴포넌트는 이어서 불투명한 핸들을 (예컨대, 불투명한 메타데이터(224)의 일부로서) 신뢰할 수 없는 계층으로 전달할 수 있고, 그 불투명한 핸들은 (예컨대, 호스트 디코더(230)로부터) 다시 신뢰할 수 있는 계층으로 전달된다.
또는, 다른 예로서, 안전하지 않은 공유 메모리가 신뢰할 수 없는 계층에 있는 컴포넌트에 의해 할당된다. 신뢰할 수 없는 계층에 있는 컴포넌트는 GPU 또는 다른 디코딩 하드웨어를 위한 메모리 내부의 공간을 할당하고, 할당된 공간에 대한 불투명한 핸들을 수신하며, 불투명한 핸들을 다시 신뢰할 수 있는 계층에 있는 컴포넌트(예컨대, DRM 로직(250) 또는 복호화 드라이버(들)(330) 중 하나)로 전달할 수 있다. 신뢰할 수 있는 계층에 있는 컴포넌트는 전사된 미디어 데이터를 핸들에 의해 참조되는 할당된 공간으로 복사할 수 있다. 신뢰할 수 없는 계층에 있는 컴포넌트는 이어서 불투명한 핸들을 디코딩 로직(260)에 대한 GPU 또는 다른 디코딩 하드웨어로 전달한다.
그렇지 않은 경우(안전하지 않은 공유 메모리가 존재하지 않는 경우), 전사된 미디어 데이터는 신뢰할 수 없는 계층(예컨대, 제어 모듈(220))으로 전달되고 이어서 (예컨대, 호스트 디코더(230)에 의해) 다시 신뢰할 수 있는 계층으로 전달된다.
제3 접근법 세트에서, 하드웨어 보호된 DRM 시스템은 (제1 접근법 세트에서와 같이) GPU 또는 다른 디코딩 하드웨어에 의해 액세스가능한 안전한 공유 메모리를 포함하지만, (평문의 미디어 데이터 대신에) 원래 콘텐츠 키가 제1 접근법 세트에서 기술된 전송 메커니즘들(예컨대, 기본적인 안전한 공유 메모리, 신뢰할 수 있는 컴포넌트에 의한 안전한 공유 메모리의 할당, 또는 신뢰할 수 없는 컴포넌트에 의한 안전한 공유 메모리의 할당) 중 하나를 사용하여 안전한 공유 메모리를 통해 전달된다. 소스 미디어 데이터(212) 내의 암호화된 미디어 데이터(221)는 호스트 디코더(230)로 전달되고, 호스트 디코더(230)는 그것을, 원래 콘텐츠 키를 사용하는 복호화를 위해, 신뢰할 수 있는 계층으로(GPU 또는 다른 디코딩 하드웨어로) 전달한다. 이 경우에, GPU 또는 다른 디코딩 하드웨어는 암호화된 미디어 데이터(221)의 복호화를 원래 콘텐츠 키를 사용하여 수행할 수 있다. 평문의 메타데이터(226)가 신뢰할 수 없는 계층에서 디코딩, 렌더링 및/또는 디스플레이의 양태들을 제어하기 위해 여전히 사용된다.
제4 접근법 세트에서, 하드웨어 보호된 DRM 시스템은 (제2 접근법 세트에서와 같이) GPU 또는 다른 디코딩 하드웨어에 의해 액세스가능한 안전한 공유 메모리를 갖지 않지만, (전사된 미디어 데이터 대신에) 암호화된 원래 콘텐츠 키가 제2 접근법 세트에서 기술된 메커니즘들(예컨대, 기본적인 안전하지 않은 공유 메모리, 신뢰할 수 있는 컴포넌트에 의한 안전하지 않은 공유 메모리의 할당, 신뢰할 수 없는 컴포넌트에 의한 안전하지 않은 공유 메모리의 할당, 또는 신뢰할 수 없는 계층으로/으로부터의 전달) 중 하나를 사용하여 전달된다. 소스 미디어 데이터(212) 내의 암호화된 미디어 데이터(221)는 호스트 디코더(230)로 전달되고, 호스트 디코더(230)는 그것을, 원래 콘텐츠 키를 사용하는 복호화를 위해, 신뢰할 수 있는 계층으로(GPU 또는 다른 디코딩 하드웨어로) 전달한다. 이 경우에, GPU 또는 다른 디코딩 하드웨어는, 원래 콘텐츠 키의 복호화 이후에, 암호화된 미디어 데이터(221)의 복호화를 원래 콘텐츠 키를 사용하여 수행할 수 있다. 평문의 메타데이터(226)가 신뢰할 수 없는 계층에서 디코딩, 렌더링 및/또는 디스플레이의 양태들을 제어하기 위해 여전히 사용된다.
V. 혁신적 특징들.
이하에 제시되는 청구항에 부가하여, 본원에 기술되는 혁신적 특징은 이하의 것을 포함하지만, 이들로 제한되지 않는다.
# 특징
A1. 컴퓨팅 시스템으로서, 하드웨어 보호된 디지털 권한 관리(DRM) 시스템의 신뢰할 수 없는 계층에,
제1 암호화된 미디어 데이터를 포함하는 소스 미디어 데이터를 수신하는 수단;
미디어 데이터에 관한 메타데이터를 처리하는 수단 - 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하지 않음 -; 및
신뢰할 수 없는 계층에 있는 호스트 디코더에 의해, 하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층에서의 디코딩, 렌더링 및/또는 디스플레이의 적어도 일부 양태들을 관리하기 위해 메타데이터를 사용하는 수단 - 디코딩, 렌더링 및 디스플레이는 제1 암호화된 미디어에 기초하여 제2 암호화된 미디어 데이터의 신뢰할 수 있는 계층에서의 복호화에 뒤따름 - 을 포함하는, 컴퓨팅 시스템.
B1. 컴퓨팅 시스템으로서, 하드웨어 보호된 디지털 권한 관리(DRM) 시스템의 신뢰할 수 있는 계층에,
키 데이터를 사용하여 제2 암호화된 미디어 데이터를 복호화하는 수단 - 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터에 기초함 -; 및
복호화된 미디어 데이터를 디코딩하는 수단 - 미디어 데이터에 관한 메타데이터는 디코딩, 렌더링 및/또는 디스플레이의 적어도 일부 양태들을, 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층으로부터, 관리하는 데 사용되고, 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하지 않음 - 을 포함하는, 컴퓨팅 시스템.
C1. 방법으로서, 하드웨어 보호된 디지털 권한 관리(DRM) 시스템의 신뢰할 수 없는 계층에서,
제1 암호화된 미디어 데이터를 포함하는 소스 미디어 데이터를 수신하는 단계;
하드웨어 보호된 DRM 시스템의 신뢰할 수 있는 계층으로부터 제1 메타데이터를 수신하는 단계 - 제1 메타데이터는 제2 암호화된 미디어 데이터의 복호화를 위한 키 데이터를 포함하고, 제1 메타데이터는 신뢰할 수 없는 계층 내에서 불투명함 -;
(a) 제1 메타데이터 및 (b) 신뢰할 수 없는 계층 내에서 불투명하지 않은 제2 메타데이터를 신뢰할 수 없는 계층에 있는 호스트 디코더로 전달하는 단계를 포함하는, 방법.
C2. C1의 방법으로서, 하드웨어 보호된 DRM 시스템은,
신뢰할 수 있는 계층에 대해, (a) 복호화 및/또는 디코딩을 위해 구성된 하나 이상의 집적 회로들, (b) 하나 이상의 집적 회로들을 제어하기 위한 펌웨어 명령어들을 저장하는 메모리, 및 (c) 복호화된 미디어 데이터를 저장하는 보호된 버퍼들을 포함하고;
신뢰할 수 없는 계층에 대해, 하나 이상의 인터페이스들을 거쳐 신뢰할 수 있는 계층과 상호작용하지만 보호된 버퍼들에 있는 복호화된 미디어 데이터에 액세스할 수 없는 운영 체제 및/또는 애플리케이션들의 하나 이상의 모듈들을 포함하는, 방법.
C3. C1의 방법으로서, 신뢰할 수 있는 계층에 대해, 하드웨어 보호된 DRM 시스템은 복호화를 위한 특수 목적 하드웨어를 갖지 않는 범용 CPU 및 메모리를 사용하고, 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이의 전환들이 하드웨어 관리되며, 신뢰할 수 있는 계층에 대한 처리에서 서명된 펌웨어 명령어들만이 메모리에 로딩되고 실행될 수 있는, 방법.
C4. C1의 방법으로서, 제1 암호화된 미디어 데이터는 하나 이상의 암호화된, 인코딩된 미디어 샘플들을 포함하는, 방법.
C5. C1의 방법으로서, 본 방법은 신뢰할 수 없는 계층에서, 소스 미디어 데이터로부터 제2 메타데이터의 적어도 일부를 파싱하는 단계 - 제2 메타데이터는 (a) 시퀀스 파라미터 세트의 적어도 일부, (b) 픽처 파라미터 세트 단위의 적어도 일부, (c) 데이터 단위들의 길이들, (d) 데이터 단위들의 유형들, (e) 데이터 단위들의 적어도 일부에 대한 적어도 일부 슬라이스 헤더 파라미터들, (f) 디코딩을 위해 사용될 다른 파라미터들, 및 (g) 데이터 단위들에 대한 서브샘플 매핑 데이터 - 서브샘플 매핑 데이터는 각자의 데이터 단위들에 대한 암호화되지 않은 분량들 및 암호화된 분량들을 표시함 - 중 하나 이상을 포함하는, 방법.
C6. C1의 방법으로서, 본 방법은, 신뢰할 수 없는 계층에서,
소스 미디어 데이터의 적어도 일부를 신뢰할 수 있는 계층으로 전달하는 단계; 및
신뢰할 수 있는 계층으로부터 제2 메타데이터의 적어도 일부를 수신하는 단계 - 제2 메타데이터는 적어도 일부 데이터 단위들에 대한 적어도 일부 슬라이스 헤더 파라미터들을 포함함 - 를 추가로 포함하는, 방법.
C7. C1의 방법으로서, 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터인, 방법.
C8. C1의 방법으로서, 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터의 전사된 버전이고, 전사된 버전은 신뢰할 수 있는 계층에서 제1 암호화된 미디어 데이터를 사용하여 생성된, 방법.
C9. C1의 방법으로서, 키 데이터는 (a) 제2 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 키의 암호화된 버전, 또는 (b) 제2 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 키를 나타내는 토큰 또는 핸들인, 방법.
C10. C1의 방법으로서, 본 방법은, 호스트 디코더에 의해,
제2 암호화된 미디어 데이터의 복호화에서 사용하기 위해, 키 데이터를 포함하는, 제1 메타데이터를 신뢰할 수 있는 계층으로 전달하는 단계; 및
복호화된 미디어 데이터의 디코딩, 렌더링 및/또는 디스플레이의 적어도 일부 양태들을 관리하기 위해 제2 메타데이터를 사용하는 단계를 추가로 포함하는, 방법.
D1. 제1 암호화된 미디어 데이터를 처리하는 방법으로서, 하드웨어 보호된 디지털 권한 관리(DRM) 시스템의 신뢰할 수 있는 계층에서,
제2 암호화된 미디어 데이터의 복호화를 위한 키 데이터를 포함하는 제1 메타데이터를 결정하는 단계; 및
제1 메타데이터를 하드웨어 보호된 DRM 시스템의 신뢰할 수 없는 계층으로 전달하는 단계 - 제1 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하고, 제2 메타데이터는 신뢰할 수 없는 계층 내에서 불투명하지 않음 - 를 포함하는, 방법.
D2. D1의 방법으로서, 하드웨어 보호된 DRM 시스템은,
신뢰할 수 있는 계층에 대해, (a) 복호화 및/또는 디코딩을 위해 구성된 하나 이상의 집적 회로들, (b) 하나 이상의 집적 회로들을 제어하기 위한 펌웨어 명령어들을 저장하는 메모리, 및 (c) 복호화된 미디어 데이터를 저장하는 보호된 버퍼들을 포함하고;
신뢰할 수 없는 계층에 대해, 하나 이상의 인터페이스들을 거쳐 신뢰할 수 있는 계층과 상호작용하지만 보호된 버퍼들에 있는 복호화된 미디어 데이터에 액세스할 수 없는 운영 체제 및/또는 애플리케이션들의 하나 이상의 모듈들을 포함하는, 방법.
D3. D1의 방법으로서, 신뢰할 수 있는 계층에 대해, 하드웨어 보호된 DRM 시스템은 복호화를 위한 특수 목적 하드웨어를 갖지 않는 범용 CPU 및 메모리를 사용하고, 신뢰할 수 있는 계층과 신뢰할 수 없는 계층 사이의 전환들이 하드웨어 관리되며, 신뢰할 수 있는 계층에 대한 처리에서 서명된 펌웨어 명령어들만이 메모리에 로딩되고 실행될 수 있는, 방법.
D4. D1의 방법으로서, 본 방법은
신뢰할 수 없는 계층으로부터 제1 메타데이터를 수신하는 단계;
제2 암호화된 미디어 데이터를 키 데이터를 사용하여 복호화하는 단계; 및
복호화된 미디어 데이터를 디코딩하는 단계 - 제2 메타데이터는 디코딩, 렌더링 및/또는 디스플레이의 적어도 일부 양태들을 관리하는 데 사용됨 - 를 추가로 포함하는, 방법.
D5. D1의 방법으로서, 본 방법은
소스 미디어 데이터의 적어도 일부를 신뢰할 수 없는 계층으로부터 수신하는 단계;
수신된 소스 미디어 데이터로부터 제2 메타데이터의 적어도 일부를 결정하는 단계; 및
제2 메타데이터의 적어도 일부를 신뢰할 수 없는 계층으로 전달하는 단계를 추가로 포함하는, 방법.
D6. D5의 방법으로서, 제2 메타데이터는 적어도 일부 데이터 단위들에 대한 적어도 일부 슬라이스 헤더 파라미터들을 포함하는, 방법.
D7. D1의 방법으로서, 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터인, 방법.
D8. D1의 방법으로서, 제2 암호화된 미디어 데이터는 제1 암호화된 미디어 데이터의 전사된 버전이고, 본 방법은, 신뢰할 수 있는 계층에서,
제1 암호화된 미디어 데이터를 신뢰할 수 없는 계층으로부터 수신하는 단계; 및
제1 암호화된 미디어 데이터를 제2 암호화된 미디어 데이터로 전사하는 단계를 추가로 포함하는, 방법.
D9. D1의 방법으로서, 키 데이터는 제2 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 키의 암호화된 버전이고, 본 방법은, 신뢰할 수 있는 계층에서,
키를 복호화하는 단계를 추가로 포함하는, 방법.
D10. D1의 방법으로서, 키 데이터는 제2 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 키를 나타내는 토큰이고, 본 방법은, 신뢰할 수 있는 계층에서,
상기 토큰을 사용하여 키를 결정하는 단계를 추가로 포함한다.
개시된 발명의 원리들이 적용될 수 있는 많은 가능한 실시예들을 바탕으로, 예시된 실시예들이 본 발명의 바람직한 예들에 불과하고 본 발명의 범주를 제한하는 것으로서 해석되어서는 안된다는 것을 잘 알 것이다. 오히려, 본 발명의 범주는 이하의 청구항들에 의해 한정된다. 따라서, 이 청구항들의 범주 및 사상 내에 속하는 모든 것을 본 발명으로서 청구한다.

Claims (27)

  1. 프로그래밍된 컴퓨팅 시스템이 이에 의해 미디어 디코딩 제어를 수행하게 하기 위한 컴퓨터 실행가능 명령어들을 저장하는 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리에 있어서, 상기 미디어 디코딩 제어는, 하드웨어로 보호되는(hardware-protected) 디지털 권한 관리(digital rights management; "DRM") 시스템의 비신뢰 계층(untrusted layer)에서,
    제1의 암호화된 미디어 데이터를 포함하는 소스 미디어 데이터를 수신하는 것;
    상기 소스 미디어 데이터로부터 제1 메타데이터를 파싱(parsing)하는 것;
    상기 소스 미디어 데이터의 적어도 일부를 상기 하드웨어로 보호되는 DRM 시스템의 신뢰 계층에 패싱(passing)하는 것;
    상기 신뢰 계층 내의 상기 패싱된 소스 미디어 데이터로부터 제2 메타데이터의 결정 후 상기 신뢰 계층으로부터 상기 제2 메타데이터를 수신하는 것 - 상기 제2 메타데이터는 상기 비신뢰 계층 내에서 불투명(opaque)하지 않음 - ; 및
    상기 비신뢰 계층 내의 호스트 디코더(host decoder)로, 상기 신뢰 계층에서의 디코딩, 렌더링 및 디스플레이 중 적어도 하나의 적어도 일부 양태(aspect)들을 관리하기 위해 상기 제1 메타데이터 및 상기 제2 메타데이터를 사용하는 것 - 상기 디코딩, 상기 렌더링 및 상기 디스플레이는, 상기 제1의 암호화된 미디어 데이터에 기초하여 제2의 암호화된 미디어 데이터의 상기 신뢰 계층에서의 복호화(decryption)에 이어짐 -
    을 포함하는 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  2. 제1항에 있어서, 상기 하드웨어로 보호되는 DRM 시스템은,
    상기 신뢰 계층에 대한, (a) 복호화 및 디코딩 중 적어도 하나에 대해 적응(adapt)된 하나 이상의 집적 회로, (b) 상기 하나 이상의 집적 회로를 제어하기 위한 펌웨어 명령어들을 저장하는 메모리, 및 (c) 복호화된 미디어 데이터를 저장하기 위한 보호되는 버퍼들; 및
    상기 비신뢰 계층에 대한, 하나 이상의 인터페이스를 거쳐 상기 신뢰 계층과 상호작용하지만 상기 보호되는 버퍼들 내의 상기 복호화된 미디어 데이터에 액세스할 수 없는 운영 체제 및 애플리케이션들 중 적어도 하나의 하나 이상의 모듈
    을 포함하는 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  3. 제1항에 있어서, 상기 하드웨어로 보호되는 DRM 시스템은, 상기 신뢰 계층에 대해, 복호화를 위한 특수 목적 하드웨어 없이 범용 중앙 프로세싱 유닛 및 메모리를 사용하고, 상기 신뢰 계층과 상기 비신뢰 계층 사이의 전환(transition)들은 하드웨어로 관리되며(hardware-managed), 서명된(signed) 펌웨어 명령어들만이 상기 메모리에 로딩가능하고 상기 신뢰 계층에서의 프로세싱을 위해 실행가능한 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  4. 제1항에 있어서, 상기 제1 메타데이터는, (a) 시퀀스 파라미터 세트(sequence parameter set)의 적어도 일부, (b) 픽처 파라미터 세트 유닛(picture parameter set unit)의 적어도 일부, (c) 데이터 유닛들의 길이들, (d) 상기 데이터 유닛들의 유형들, (e) 상기 데이터 유닛들의 적어도 일부에 대한 적어도 일부 슬라이스 헤더 파라미터(slice header parameter)들, (f) 상기 디코딩을 위해 사용될 다른 파라미터들, 및 (g) 상기 데이터 유닛들에 대한 서브샘플 매핑 데이터(sub-sample mapping data) 중 하나 이상을 포함하고, 상기 서브샘플 매핑 데이터는 각각의 상기 데이터 유닛들에 대한 암호화되지 않은 분량(amounts) 및 암호화된 분량을 표시하는 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  5. 제1항에 있어서,
    상기 제2 메타데이터는 적어도 일부 데이터 유닛들에 대한 적어도 일부 슬라이스 헤더 파라미터들을 포함하는 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  6. 제1항에 있어서, 상기 제2의 암호화된 미디어 데이터는 상기 제1의 암호화된 미디어 데이터인 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  7. 제1항에 있어서, 상기 제2의 암호화된 미디어 데이터는 상기 제1의 암호화된 미디어 데이터의 전사된 버전(transcrypted version)이고, 상기 전사된 버전은 상기 제1의 암호화된 미디어 데이터를 사용하여 상기 신뢰 계층에서 생성된 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  8. 제1항에 있어서, 상기 미디어 디코딩 제어는,
    상기 신뢰 계층으로부터 다른 메타데이터를 수신하는 것 - 상기 다른 메타데이터는 상기 제2의 암호화된 미디어 데이터의 복호화를 위한 키 데이터(key data)를 포함하고, 상기 다른 메타데이터는 상기 비신뢰 계층 내에서 불투명함 - ;
    상기 키 데이터를 포함하는 상기 다른 메타데이터를 상기 제2의 암호화된 미디어 데이터의 복호화에 사용하기 위해 상기 신뢰 계층에 패싱하는 것
    을 더 포함하는 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  9. 제8항에 있어서, 상기 키 데이터는, (a) 상기 제2의 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 키의 암호화된 버전, 또는 (b) 상기 제2의 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 상기 키를 나타내는 토큰(token) 또는 핸들(handle)인 것인, 하나 이상의 컴퓨터 판독가능 디바이스 또는 컴퓨터 판독가능 메모리.
  10. 복호화 및 디코딩 중 적어도 하나를 위해 적응된 메모리 및 하나 이상의 집적 회로를 포함하는 장치에 있어서, 상기 메모리는, 상기 장치가 제1의 암호화된 미디어 데이터에 대한 미디어 디코딩 제어를 수행하게 하기 위한 컴퓨터 실행가능 명령어들을 저장하고, 상기 미디어 디코딩 제어는, 하드웨어로 보호되는 디지털 권한 관리("DRM") 시스템의 신뢰 계층에서,
    상기 하드웨어로 보호되는 DRM 시스템의 비신뢰 계층으로부터 적어도 일부 소스 미디어 데이터를 수신하는 것 - 상기 적어도 일부 소스 미디어 데이터는 상기 제1의 암호화된 미디어 데이터를 포함하고, 상기 소스 미디어 데이터는 또한 상기 비신뢰 계층에서 파싱된 제1 메타데이터를 포함함 - ;
    상기 수신된 소스 미디어 데이터로부터 제2 메타데이터를 결정하는 것;
    상기 제2 메타데이터를 상기 비신뢰 계층에 패싱하는 것 - 상기 제1 메타데이터 및 상기 제2 메타데이터는 상기 비신뢰 계층 내에서 불투명하지 않음 - ;
    키 데이터를 사용하여 제2의 암호화된 미디어 데이터를 복호화하는 것 - 상기 제2의 암호화된 미디어 데이터는 상기 제1의 암호화된 미디어 데이터에 기초함 - ; 및
    상기 복호화된 미디어 데이터를 디코딩하는 것 - 상기 제1 메타데이터 및 상기 제2 메타데이터는 상기 비신뢰 계층으로부터, 상기 디코딩, 렌더링 및 디스플레이 중 적어도 하나의 적어도 일부 양태들을 관리하기 위해 사용됨 -
    을 포함하는 것인, 메모리 및 하나 이상의 집적 회로를 포함하는 장치.
  11. 제10항에 있어서, 상기 미디어 디코딩 제어는 상기 신뢰 계층에서,
    상기 제1의 암호화된 미디어 데이터에 대한 정책 데이터(policy data)를 수신하는 것; 및
    상기 정책 데이터를 시행(enforce)하는 것을 더 포함하는 것인, 장치.
  12. 제10항에 있어서, 상기 미디어 디코딩 제어는,
    상기 키 데이터를 포함하는 다른 메타데이터를 결정하는 것;
    상기 다른 메타데이터를 상기 비신뢰 계층에 패싱하는 것 - 상기 다른 메타데이터는 상기 비신뢰 계층 내에서 불투명함 - ; 및
    상기 비신뢰 계층으로부터 상기 다른 메타데이터를 수신하는 것을 더 포함하는 것인, 장치.
  13. 제10항에 있어서, 상기 제2 메타데이터는 적어도 일부 데이터 유닛들에 대한 적어도 일부 슬라이스 헤더 파라미터들을 포함하는 것인, 장치.
  14. 제10항에 있어서, 상기 제2의 암호화된 미디어 데이터는 상기 제1의 암호화된 미디어 데이터인, 장치.
  15. 제10항에 있어서, 상기 제2 암호화된 미디어 데이터는 상기 제1 암호화된 미디어 데이터의 전사된 버전이고, 상기 미디어 디코딩 제어는 상기 신뢰 계층에서,
    상기 비신뢰 계층으로부터 상기 제1의 암호화된 미디어 데이터를 수신하는 것; 및
    상기 제1의 암호화된 미디어 데이터를 상기 제2의 암호화된 미디어 데이터에 전사하는 것을 더 포함하는 것인, 장치.
  16. 제10항에 있어서, 상기 키 데이터는 상기 제2의 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 키의 암호화된 버전이고, 상기 미디어 디코딩 제어는 상기 신뢰 계층에서,
    상기 키를 복호화하는 것을 더 포함하는 것인, 장치.
  17. 제10항에 있어서, 상기 키 데이터는 상기 제2의 암호화된 미디어 데이터를 복호화하기 위해 사용가능한 키를 나타내는 토큰이고, 상기 미디어 디코딩 제어는 상기 신뢰 계층에서,
    상기 토큰을 사용하여 상기 키를 결정하는 것을 더 포함하는 것인, 장치.
  18. 방법에 있어서, 하드웨어로 보호되는 디지털 권한 관리("DRM") 시스템의 비신뢰 계층에서,
    상기 비신뢰 계층 내의 제어 모듈에서, 제1의 암호화된 미디어 데이터를 포함하는 소스 미디어 데이터를 수신하는 단계;
    상기 제어 모듈에서, 상기 하드웨어로 보호되는 DRM 시스템의 신뢰 계층으로부터 제1 메타데이터를 수신하는 단계 - 상기 제1 메타데이터는 제2의 암호화된 미디어 데이터의 복호화를 위한 키 데이터를 포함하고, 상기 제1 메타데이터는 상기 비신뢰 계층 내에서 불투명함 - ;
    상기 제어 모듈로, (a) 상기 제1 메타데이터 및 (b) 상기 비신뢰 계층 내에서 불투명하지 않은 제2 메타데이터를 상기 비신뢰 계층 내의 호스트 디코더에 패싱하는 단계;
    상기 호스트 디코더로, 상기 키 데이터를 포함하는 상기 제1 메타데이터를 상기 제2의 암호화된 미디어 데이터의 복호화에 사용하기 위해 상기 비신뢰 계층에 패싱하는 단계; 및
    상기 호스트 디코더로, 상기 복호화된 미디어 데이터의 디코딩, 렌더링 및 디스플레이 중 적어도 하나의 적어도 일부 양태들을 관리하기 위해 상기 제2 메타데이터를 사용하는 단계
    를 포함하는, 방법.
  19. 제18항에 있어서, 상기 제2의 암호화된 미디어 데이터는, (a) 상기 제1의 암호화된 미디어 데이터, 또는 (b) 상기 제1의 암호화된 미디어 데이터의 전사된 버전이고, 상기 전사된 버전은 상기 제1의 암호화된 미디어 데이터를 사용하여 상기 신뢰 계층에서 생성된 것인, 방법.
  20. 신뢰 계층 및 비신뢰 계층을 포함하는, 하드웨어로 보호되는 디지털 권한 관리("DRM") 시스템에 있어서, 상기 하드웨어로 보호되는 DRM 시스템은,
    상기 신뢰 계층에 대한, (a) 복호화 및 디코딩 중 적어도 하나에 대해 적응된 하나 이상의 집적 회로, (b) 상기 하나 이상의 집적 회로를 제어하기 위한 펌웨어 명령어들을 저장하는 메모리, 및 (c) 복호화된 미디어 데이터를 저장하기 위한 보호되는 버퍼들; 및
    상기 비신뢰 계층에 대한, 하나 이상의 인터페이스를 거쳐 상기 신뢰 계층과 상호작용하지만 상기 보호되는 버퍼들 내의 상기 복호화된 미디어 데이터에 액세스할 수 없는 운영 체제 및 애플리케이션들 중 적어도 하나의 하나 이상의 모듈 - 상기 하나 이상의 모듈은 제어 모듈 및 호스트 디코더를 포함함 -
    을 포함하고, 상기 하드웨어로 보호되는 DRM 시스템은 상기 비신뢰 계층에서, 미디어 디코딩 제어를 수행하도록 구성되고, 상기 미디어 디코딩 제어는,
    상기 제어 모듈로, 제1의 암호화된 미디어 데이터를 포함하는 소스 미디어 데이터를 수신하는 것;
    상기 제어 모듈로, 상기 미디어 데이터에 관한 메타데이터를 프로세싱하는 것 - 상기 메타데이터는 상기 비신뢰 계층 내에서 불투명하지 않음 - ; 및
    상기 호스트 디코더로, 상기 신뢰 계층에서의 디코딩, 렌더링 및 디스플레이 중 적어도 하나의 적어도 일부 양태들을 관리하기 위해 상기 메타데이터를 사용하는 것 - 상기 디코딩, 상기 렌더링 및 상기 디스플레이는 상기 제1의 암호화된 미디어 데이터에 기초하여 제2의 암호화된 미디어 데이터의 상기 신뢰 계층에서의 복호화에 이어짐 - 을 포함하는 것인, 하드웨어로 보호되는 DRM 시스템.
  21. 제20항에 있어서, 상기 미디어 디코딩 제어는 상기 비신뢰 계층에서,
    상기 제어 모듈로, 상기 소스 미디어 데이터의 적어도 일부를 상기 신뢰 계층에 패싱하는 것; 및
    상기 제어 모듈로, 상기 신뢰 계층으로부터 상기 메타데이터의 적어도 일부를 수신하는 것 - 상기 신뢰 계층으로부터 수신된 상기 메타데이터의 적어도 일부는 적어도 일부 데이터 유닛들에 대한 적어도 일부 슬라이스 헤더 파라미터들을 포함함 - 을 더 포함하는 것인, 시스템.
  22. 제20항에 있어서, 상기 제2의 암호화된 미디어 데이터는 상기 제1의 암호화된 미디어 데이터의 전사된 버전이고, 상기 전사된 버전은 상기 제1의 암호화된 미디어 데이터를 사용하여 상기 신뢰 계층에서 생성된 것인, 시스템.
  23. 제20항에 있어서, 상기 미디어 디코딩 제어는 상기 비신뢰 계층에서,
    상기 제어 모듈로, 상기 신뢰 계층으로부터 다른 메타데이터를 수신하는 것 - 상기 다른 메타데이터는 상기 제2의 암호화된 미디어 데이터의 복호화를 위한 키 데이터를 포함하고, 상기 다른 메타데이터는 상기 비신뢰 계층 내에서 불투명함 - ; 및
    상기 키 데이터를 포함하는 상기 다른 메타데이터를 상기 제2의 암호화된 미디어 데이터의 복호화에 사용하기 위해 상기 신뢰 계층에 패싱하는 것을 더 포함하는 것인, 시스템.
  24. 방법에 있어서, 하드웨어로 보호되는 디지털 권한 관리("DRM") 시스템의 신뢰 계층에서,
    제1의 암호화된 미디어 데이터를 포함하는 소스 미디어 데이터를 수신하는 단계;
    상기 미디어 데이터에 관한 메타데이터를 프로세싱하는 단계 - 상기 메타데이터는 비신뢰 계층 내에서 불투명하지 않음 - ; 및
    상기 비신뢰 계층 내의 호스트 디코더로, 상기 하드웨어로 보호되는 DRM 시스템의 신뢰 계층에서의 디코딩, 렌더링 및 디스플레이 중 적어도 하나의 적어도 일부 양태들을 관리하기 위해 상기 메타데이터를 사용하는 단계 - 상기 디코딩, 상기 렌더링 및 상기 디스플레이는 상기 제1의 암호화된 미디어 데이터에 기초하여 제2의 암호화된 미디어 데이터의 상기 신뢰 계층에서의 복호화에 이어지고, 상기 하드웨어로 보호되는 DRM 시스템은, 상기 신뢰 계층에 대해, 복호화를 위한 특수 목적 하드웨어 없이 범용 중앙 프로세싱 유닛 및 메모리를 사용하고, 상기 신뢰 계층과 상기 비신뢰 계층 사이의 전환들은 하드웨어로 관리되며, 서명된 펌웨어 명령어들만이 상기 메모리에 로딩가능하고 상기 신뢰 계층에서의 프로세싱을 위해 실행가능함 -
    를 포함하는, 방법.
  25. 제24항에 있어서, 상기 비신뢰 계층에서,
    상기 소스 미디어 데이터의 적어도 일부를 상기 신뢰 계층에 패싱하는 단계; 및
    상기 신뢰 계층으로부터 상기 메타데이터의 적어도 일부를 수신하는 단계 - 상기 신뢰 계층으로부터 수신된 상기 메타데이터의 적어도 일부는 적어도 일부 데이터 유닛들에 대한 적어도 일부 슬라이스 헤더 파라미터들을 포함함 - 를 더 포함하는, 방법.
  26. 제24항에 있어서, 상기 제2의 암호화된 미디어 데이터는 상기 제1의 암호화된 미디어 데이터의 전사된 버전이고, 상기 전사된 버전은 상기 제1의 암호화된 미디어 데이터를 사용하여 상기 신뢰 계층에서 생성된 것인, 방법.
  27. 제24항에 있어서, 상기 비신뢰 계층에서,
    상기 신뢰 계층으로부터 다른 메타데이터를 수신하는 단계 - 상기 다른 메타데이터는 상기 제2의 암호화된 미디어 데이터의 복호화를 위한 키 데이터를 포함하고, 상기 다른 메타데이터는 상기 비신뢰 계층 내에서 불투명함 - ;
    상기 키 데이터를 포함하는 상기 다른 메타데이터를 상기 제2의 암호화된 미디어 데이터의 복호화에 사용하기 위해 상기 신뢰 계층에 패싱하는 단계를 더 포함하는, 방법.
KR1020177009729A 2014-09-10 2015-09-10 하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어 KR102363264B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/482,840 2014-09-10
US14/482,840 US9430619B2 (en) 2014-09-10 2014-09-10 Media decoding control with hardware-protected digital rights management
PCT/US2015/049264 WO2016040536A1 (en) 2014-09-10 2015-09-10 Media decoding control with hardware-protected digital rights management

Publications (2)

Publication Number Publication Date
KR20170056613A KR20170056613A (ko) 2017-05-23
KR102363264B1 true KR102363264B1 (ko) 2022-02-14

Family

ID=54207737

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177009729A KR102363264B1 (ko) 2014-09-10 2015-09-10 하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어

Country Status (5)

Country Link
US (1) US9430619B2 (ko)
EP (1) EP3191994B1 (ko)
KR (1) KR102363264B1 (ko)
CN (1) CN107004070B (ko)
WO (1) WO2016040536A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4370800B2 (ja) * 2003-04-21 2009-11-25 ヤマハ株式会社 音楽コンテンツ利用装置及びプログラム
FR3030827B1 (fr) 2014-12-19 2017-01-27 Stmicroelectronics (Grenoble 2) Sas Procede et dispositif de traitement securise de donnees cryptees
US10395013B2 (en) 2016-05-11 2019-08-27 Stmicroelectronics Sa Method and device for enhancing the protection of a signal, in particular a multimedia signal, against a malicious attack
FR3052009B1 (fr) 2016-05-31 2018-06-01 Stmicroelectronics Sa Procede et dispositif d'amelioration de la protection d'un signal multimedia contre une attaque malveillante.
US10402566B2 (en) * 2016-08-01 2019-09-03 The Aerospace Corporation High assurance configuration security processor (HACSP) for computing devices
US11032589B1 (en) * 2016-08-09 2021-06-08 Google Llc Methods, systems, and media for ensuring consumption of portions of media content
US10944572B2 (en) * 2017-01-02 2021-03-09 Western Digital Technologies, Inc. Decryption and variant processing
US10565354B2 (en) * 2017-04-07 2020-02-18 Intel Corporation Apparatus and method for protecting content in virtualized and graphics environments
EP3416397B1 (en) * 2017-06-13 2020-02-26 Liberty Global Europe Holding B.V. Method and device for secure video processing
CN107659818A (zh) * 2017-09-28 2018-02-02 福州瑞芯微电子股份有限公司 一种视频解码装置
EP3467697A1 (en) * 2017-10-06 2019-04-10 Nagravision S.A. Masking technique
CN108235152B (zh) * 2018-03-07 2020-10-27 北京视博数字电视科技有限公司 Drm应用系统和drm私有数据的传递方法
CN108848051B (zh) * 2018-04-27 2021-01-05 北京奇艺世纪科技有限公司 应用数据的获取方法和装置
US10715310B2 (en) * 2018-05-07 2020-07-14 Qualcomm Incorporated Method and apparatus for decrypting data blocks of a pattern-encrypted subsample
DE112018007779T5 (de) * 2018-06-29 2021-04-01 Intel Corporation Virtuellspeicherdienste für client-computing-geräte
US11263328B2 (en) * 2018-09-13 2022-03-01 Vmware, Inc. Encrypted log aggregation
FR3087066B1 (fr) * 2018-10-05 2022-01-14 Commissariat Energie Atomique Methode de transchiffrement a faible latence de calcul
CN110969264B (zh) * 2019-12-11 2022-08-02 支付宝(杭州)信息技术有限公司 模型训练方法、分布式预测方法及其系统
FR3106909B1 (fr) * 2020-01-31 2022-02-18 St Microelectronics Grenoble 2 Circuit intégré configuré pour réaliser des opérations de chiffrement symétrique avec protection de clé secrète
US20210240801A1 (en) * 2020-02-03 2021-08-05 Arris Enterprises Llc Digital rights management system resource manager
KR20220059730A (ko) 2020-11-03 2022-05-10 삼성전자주식회사 Drm 패키지를 이용한 신경망 모델의 구동 방법 및 이를 이용한 데이터 처리 방법
CN114189713A (zh) * 2021-12-21 2022-03-15 杭州当虹科技股份有限公司 一种内容加密的方法
WO2023135420A1 (en) * 2022-01-12 2023-07-20 V-Nova International Ltd Secure enhancement decoding implementation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110299680A1 (en) 2010-06-08 2011-12-08 Balaji Vembu Methods and Apparatuses for Securing Playback Content
US20120173877A1 (en) 2011-01-05 2012-07-05 Ramesh Pendakur Method and apparatus for building a hardware root of trust and providing protected content processing within an open computing platform

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7158953B1 (en) * 2000-06-27 2007-01-02 Microsoft Corporation Method and system for limiting the use of user-specific software features
US6985591B2 (en) 2001-06-29 2006-01-10 Intel Corporation Method and apparatus for distributing keys for decrypting and re-encrypting publicly distributed media
US7421411B2 (en) * 2001-07-06 2008-09-02 Nokia Corporation Digital rights management in a mobile communications environment
US7130911B2 (en) 2002-02-11 2006-10-31 Intel Corporation Method for monitoring unauthorized access to data stored in memory buffers
US7296154B2 (en) 2002-06-24 2007-11-13 Microsoft Corporation Secure media path methods, systems, and architectures
US7353402B2 (en) * 2002-06-28 2008-04-01 Microsoft Corporation Obtaining a signed rights label (SRL) for digital content and obtaining a digital license corresponding to the content based on the SRL in a digital rights management system
EP1795991A1 (en) 2002-07-30 2007-06-13 Fujitsu Limited Method and apparatus for reproducing information using a security module
US7251328B2 (en) 2003-01-14 2007-07-31 General Instrument Corporation System for secure decryption of streaming media using selective decryption of header information and decryption of reassembled content
WO2004070585A2 (en) 2003-01-31 2004-08-19 Kaleidescape, Inc. Detecting collusion among multiple recipients of fingerprinted information
US9342662B2 (en) 2003-09-16 2016-05-17 Media Rights Technologies, Inc. Method and system for controlling video media
US7703141B2 (en) * 2004-03-11 2010-04-20 Microsoft Corporation Methods and systems for protecting media content
US7665143B2 (en) 2005-05-16 2010-02-16 Microsoft Corporation Creating secure process objects
US7978848B2 (en) 2007-01-09 2011-07-12 Microsoft Corporation Content encryption schema for integrating digital rights management with encrypted multicast
US8688991B1 (en) 2007-06-01 2014-04-01 Adobe Systems Incorporated Media player embodiments and secure playlist packaging
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
US9788018B2 (en) 2008-06-30 2017-10-10 Microsoft Technology Licensing, Llc Error concealment techniques in video decoding
CN101626371B (zh) * 2008-07-07 2014-04-30 华为技术有限公司 许可的处理方法及装置
US8837908B2 (en) 2009-01-06 2014-09-16 Cyberlink Corp. Systems and methods for performing secure playback of media content
US8640261B2 (en) * 2009-10-26 2014-01-28 France Telecom Method and client agent for monitoring the use of protected content
US8768078B2 (en) 2010-04-07 2014-07-01 Apple Inc. Intelligent media decoding
US8457311B1 (en) 2010-04-27 2013-06-04 Adobe Systems Incorporated Protecting video as it is decoded by a codec
US8724696B2 (en) 2010-09-23 2014-05-13 Vmware, Inc. System and method for transmitting video and user interface elements
US8904190B2 (en) 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
KR20120089980A (ko) 2011-01-12 2012-08-16 엘지전자 주식회사 복수개의 그래픽 데이터 처리가 가능한 오퍼레이팅 시스템을 탑재하고 있는 멀티미디어 디바이스 및 그 제어 방법
US8532290B2 (en) 2011-03-04 2013-09-10 Netflix, Inc. Content playback APIS using encrypted streams
US9202024B2 (en) 2011-05-02 2015-12-01 Inside Secure Method for playing digital contents projected with a DRM (digital rights management) scheme and corresponding system
US20120284804A1 (en) 2011-05-02 2012-11-08 Authentec, Inc. System and method for protecting digital contents with digital rights management (drm)
US20140208441A1 (en) 2011-07-01 2014-07-24 Nokia Corporation ` Software Authentication
US9088805B2 (en) 2012-02-08 2015-07-21 Vixs Systems, Inc. Encrypted memory device and methods for use therewith
US11349699B2 (en) 2012-08-14 2022-05-31 Netflix, Inc. Speculative pre-authorization of encrypted data streams

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110299680A1 (en) 2010-06-08 2011-12-08 Balaji Vembu Methods and Apparatuses for Securing Playback Content
US20120173877A1 (en) 2011-01-05 2012-07-05 Ramesh Pendakur Method and apparatus for building a hardware root of trust and providing protected content processing within an open computing platform

Also Published As

Publication number Publication date
KR20170056613A (ko) 2017-05-23
WO2016040536A1 (en) 2016-03-17
CN107004070A (zh) 2017-08-01
US9430619B2 (en) 2016-08-30
US20160070887A1 (en) 2016-03-10
CN107004070B (zh) 2020-06-26
EP3191994B1 (en) 2019-11-27
EP3191994A1 (en) 2017-07-19

Similar Documents

Publication Publication Date Title
KR102363264B1 (ko) 하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어
JP5532291B2 (ja) プロセッサのバーチャルマシン内で機密コンテンツをセキュアに処理するための方法及び装置
EP2580704B1 (en) Methods and apparatuses for securing playback content comprising sensitive and non-sensitive data
US9152577B2 (en) Security central processing unit management of a transcoder pipeline
US9342666B2 (en) Providing security support for digital rights management in different formats
US8638935B2 (en) System and method for key space division and sub-key derivation for mixed media digital rights management content
US10303857B2 (en) Providing access to content
US20140314233A1 (en) Protected media decoding using a secure operating system
CN110073357B (zh) 解密和变体处理
KR20130007659A (ko) 가상화를 이용한 비디오 컨텐츠 보호
CN104951706B (zh) 用于存储内容的方法和装置
US9823869B2 (en) System and method of protecting data in dynamically-allocated regions of memory
US9292708B2 (en) Protection of interpreted source code in virtual appliances
US9665696B1 (en) Protecting content with initialization vector manipulation
KR20130024024A (ko) 컴퓨팅 시스템, 및 상기 컴퓨팅 시스템을 동작하기 위한 방법
CA3067087C (en) Method and device for secure video processing
Mohanty et al. Media data protection during execution on mobile platforms–A review
Del Pino et al. Secure video player for mobile devices integrating a watermarking-based tracing mechanism
KR20120043528A (ko) 컨텐츠 drm 적용 방법 및 장치
Feller et al. Application Scenarios

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant