KR101099311B1 - 미디어 컨텐츠를 보호하기 위한 방법 및 시스템 - Google Patents

미디어 컨텐츠를 보호하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101099311B1
KR101099311B1 KR1020050020623A KR20050020623A KR101099311B1 KR 101099311 B1 KR101099311 B1 KR 101099311B1 KR 1020050020623 A KR1020050020623 A KR 1020050020623A KR 20050020623 A KR20050020623 A KR 20050020623A KR 101099311 B1 KR101099311 B1 KR 101099311B1
Authority
KR
South Korea
Prior art keywords
delete delete
downstream component
playback application
media playback
hardware
Prior art date
Application number
KR1020050020623A
Other languages
English (en)
Other versions
KR20060044315A (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
Priority to US10/798,688 priority Critical
Priority to US10/798,688 priority patent/US7703141B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060044315A publication Critical patent/KR20060044315A/ko
Application granted granted Critical
Publication of KR101099311B1 publication Critical patent/KR101099311B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers; Analogous equipment at exchanges
    • H04M1/02Constructional features of telephone sets
    • H04M1/04Supports for telephone transmitters or receivers
    • H04M1/05Supports for telephone transmitters or receivers adapted for use on head, throat, or breast
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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
    • 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/41Structure of client; Structure of client peripherals
    • H04N21/4104Structure of client; Structure of client peripherals using peripherals receiving signals from specially adapted client devices
    • H04N21/4122Structure of client; Structure of client peripherals using peripherals receiving signals from specially adapted client devices additional display device, e.g. video projector
    • 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, synchronizing decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or inside the home ; Interfacing an external card to be used in combination with the client device
    • H04N21/4367Establishing a secure communication between the client and a peripheral device or smart card
    • 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, synchronizing 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, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video stream decryption
    • 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, synchronizing decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R1/00Details of transducers, loudspeakers or microphones
    • H04R1/10Earpieces; Attachments therefor ; Earphones; Monophonic headphones
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R5/00Stereophonic arrangements
    • H04R5/033Headphones for stereophonic communication
    • H04R5/0335Earpiece support, e.g. headbands or neckrests

Abstract

여러 실시예들은 보안 통신 채널, 및 몇몇 실시예에서는 보호된 컨텐츠 재생 어플리케이션을 실행하는 컴퓨팅 장치와 같은 장치와 모니터, 플랫 패널 LCD, 텔레비전 등의 관련 디스플레이 장치의 그래픽 드라이버 등의 관련 드라이버와 같은 하류측 컴포넌트 간에 보안 데이터 채널을 설정하여, 미디어 컨텐츠 보호를 가능하게 하는 프로토콜을 이용하는 방법 및 시스템을 제공한다.
보안 통신 채널, 재생 어플리케이션, 드라이버 소프트웨어, 미디어 컨텐츠 보호, 물리적 커넥터

Description

미디어 컨텐츠를 보호하기 위한 방법 및 시스템{METHODS AND SYSTEMS FOR PROTECTING MEDIA CONTENT}

도 1은 미디어 컨텐츠를 처리할 수 있는 시스템의 하이 레벨 블럭도.

도 2는 일 실시예에 따른 보호 프로토콜의 형태를 설명하는 데에 이용되는 시스템의 블럭도.

도 3은 본 발명의 일 실시예에 따른 보호 프로토콜의 양태를 설명하는 블럭도.

도 4는 본 발명의 일 실시예에 따른 보호 프로토콜의 양태를 설명하는 블럭도.

도 5는 본 발명의 일 실시예에 따른 보호 프로토콜의 양태를 설명하는 블럭도.

도 6은 본 발명의 일 실시예에 따른 방법의 단계들을 설명하는 흐름도.

도 7은 구현예에 관련하여 시스템 예를 설명하는 블럭도.

<도면의 주요 부분에 대한 간단한 설명>

200 : 가전 기기

202 : 재생 어플리케이션

204 : 시스템 소프트웨어

206 : 드라이버 소프트웨어

208 : 하드웨어

210 : 물리적 커넥터

212 : 출력 장치

702 : 재생 어플리케이션

704 : 필터 그래프

706 : 소스 필터

708 : 디코더

710 : 비디오 렌더링 컴포넌트

712 : DirectDraw® 컴포넌트

714 : Win32k.sys

716 : 그래픽 드라이버

본 발명은 미디어 컨텐츠를 보호하기 위한 방법 및 시스템에 관한 것이다.

데이터 스트림의 형태로 오디오 및/또는 비디오 데이터를 제공하는 것과 같은 컨텐츠 제공자, 이런 데이터를 렌더링(rendering)하는 어플리케이션을 제공하는 어플리케이션 벤더 등은 종종 데이터가 승인받지 않은 개체 (entity)에 의해 확인되거나 이용되거나 아니면 렌더링 (rendering)되지 않고 보호되길 원한다. 이런 보호는 통상적으로 이런 데이터를 취급하거나 아니면 처리하게 되는 컴포넌트의 체인을 따라서, 데이터가 몇몇 보호 형태로 그리고 몇몇 유형의 판독 가능한 매체 상에 존재하는 지점으로부터, 디스플레이나 스피커와 같은 장치에 데이터를 제공하는 물리적 출력 커넥터와, 또한 이들 장치 자체에까지도 요망되고 있다.

일 예로서, 보호된 컨텐츠(12), 예를 들어, 압축 및 암호화된 컨텐츠가 수신 및 처리될 수 있는 예시의 시스템(10)을 하이 레벨 도시하는 도 1을 고찰한다. 이 예에서, 보호된 컨텐츠(12)는 퍼스널 컴퓨터와 같은 가전 기기(14) 내에 제공되어 있다. 가전 기기 내에서, 어플리케이션(16)은 통상적으로 예를 들어, 컨텐츠를 해독하는 해독 컴포넌트(18) 및 컨텐츠를 디코드하거나 압축 해체하는 디코더 컴포넌트(20)를 이용하여 보호된 컨텐츠를 처리한다. 일단 컨텐츠가 디코드되면, 이는 통상적으로 몇 가지 처리를 거칠 수 있으며, 그 후에 처리된 컨텐츠는 렌더러 (renderer) 컴포넌트(22)에 제공되고 이것은 다음에 데이터가 디스플레이(24) (비디오 데이터인 경우) 및/또는 스피커(26) (오디오 데이터인 경우) 등의 장치에 제공되는 것을 확실히 한다.

이 시스템에서, 데이터가 디스플레이나 스피커와 같은 적당한 하드웨어 장치에 보내지게 하기 위해서, 데이터는 PCI/AGP 버스와 같은 몇몇 유형의 버스를 통과해야만 하고 다음에, 물리적 커넥터를 통해 그리고 S-비디오 케이블이나 DVI 케이블과 같은 케이블을 거쳐 이동해야 한다.

시간이 지날수록, 예를 들어 컨텐츠가 가전 기기(14) 내에서 해독된 다음에 디스플레이나 스피커와 같은 출력 장치에 제공될 때, 컨텐츠를 보호하기 위해서 여 러 다른 유형의 컨텐츠 보호 방법과 기술들이 개발되어 이용되고 있다. 이들 보호 방법 및 기술들은 여러 종류의 오디오 및 비디오 데이터 만큼이나 다양하다. 부가하여, 가장 중요한 것은 오늘날 어플리케이션이 이들 여러 다른 유형의 컨텐츠 보호 방법 및 기술들 모두의 동작을 안전하게 제어할 방법이 없다는 것이다.

더욱 상세하게, 하드웨어 장치 상에서 마지막으로 렌더링되는 데이터를 처리하는 컴포넌트의 체인을 고찰해 보자. 당업자에게는 잘 이해되는 바와 같이, 데이터와 관련 통신이 체인 내에 있는 동안 어플리케이션으로부터의 이 데이터와 통신에 접촉하거나 아니면 억세스하고 있는 다른 층의 컴포넌트가 있게 된다. 예를 들어, 어플리케이션은 통상 데이터를 렌더링하는 하드웨어에 직접 통신하지 않는다. 이보다는 통상적으로 어플리케이션이 통신하는 유저 모드에 소프트웨어 스택, 그리고 하드웨어와 실제로 통신하는 유저 모드 소프트웨어 스택 아래의 커널 모드에는 드라이버 스택이 있게 된다. 실상 체인 내의 이들 컴포넌트 중의 임의의 것은 체인을 따라 통과되고 있는 데이터 및/또는 통신을 실제로 변경할 수 있다.

따라서, 본 발명은 통신 및 데이터 둘 다가 어플리케이션에서 하류측 컴포넌트로 흐르게 하는 보안 채널을 제공하는 것과 관련하여 안출된 것이다.

개론

여러 실시예들은 보안 통신 채널, 및 몇몇 실시예에서는 보호된 컨텐츠 재생 어플리케이션을 실행하는 컴퓨터 등의 장치와 모니터, 플랫 패널 LCD, 텔레비전 등 의 관련 디스플레이 장치의 그래픽 드라이버와 같은 관련 드라이버 간에 보안 데이터 채널을 설정하여 미디어 컨텐츠 보호를 가능하게 하는 프로토콜을 이용하는 방법 및 시스템에 관한 것이다. 여러 실시예들은 컨텐츠 제공자 및 어플리케이션 벤더가 물리적 커넥터를 통해 디스플레이 장치와 같은 장치에 출력되는 데이터에 컨텐츠 보호가 적용되어야 한다고 신호를 보낼 필요성을 해결하는 데에 관한 것이다.

후술되는 실시예들은 유저 모드 재생 어플리케이션으로부터 그래픽 드라이버 등의 드라이버에 커맨드를 안전하게 전달하고, 드라이버로부터 다시 유저 모드 어플리케이션에 상태 정보를 안전하게 보내주기 위한 수단을 제공한다. 후술되는 실시예에서, 일단 보안 통신 채널이 설정되면, 유저 모드 어플리케이션은 관련 드라이버에게 컴퓨터와 디스플레이 장치 간의 물리적 커넥터 상에서의 컨텐츠 출력 보호를 가능하게 하도록 명령할 수 있다. 보안 채널 세션의 배타성은 컴퓨터로부터 디스플레이로 전송되는 중에 칩입자가 보호된 컨텐츠를 레코드하는 것을 방지할 수 있다.

이하에서, 여러 실시예들에 대한 설명은 두 개의 개별되지만 관련된 라인을 따라 이루어진다. 특히, "어플리케이션으로부터 하류측 컴포넌트로 보안 채널을 설정하기 위한 프로토콜"로 표제된 아래 섹션에서, 본 발명의 프로토콜에 대한 설명이 제공된다. 이 프로토콜은 어느 적합한 시스템에 관련해서나 이용되기 위한 것으로 반드시 어느 하나의 특정 시스템이나 운용 시스템에만 적합한 것이 아니다. "Window® 운용 시스템 상의 프로토콜의 구현예"로 표제된 섹션에서, 프로토콜에 대한 설명은 Window® 운용 시스템과 관련하는 구현의 컨텍스트에서 제공된다. 이 설명은 무엇보다도 하나의 특정 구현예 및 이 특정 구현예와 관련되는 설계 고려 항목중 일부를 설명하고자 하는 것이다.

어플리케이션으로부터 하류측 컴포넌트로 보안 채널을 설정하기 위한 프로토콜

이하에서는, 어플리케이션이 다수의 컨텐츠 보호 기술 중 어느 것이 적용되어야 하는지, 이들 컨텐츠 보호 기술들 중 적어도 몇 개가 미디어 출력을 보호하기 위해 어떻게 적용되어야 하는지를 통신할 수 있도록 어플리케이션으로부터 여러 하류측 컴포넌트에 보안 시그널링 방법을 제공하는 데에 이용될 수 있는 적어도 몇몇 실시예가 기술된다. 부가하여, 여러 유형의 컨텐츠 보호를 가능하게 하고 구성한다는 개념에 의거하여, 적어도 몇몇 실시예들은 미디어 출력을 보호하는 데에 이용되는 컨텐츠 보호 기술의 유형과 관련하여 불가지론적이다. 상술한 시스템과 프로토콜은 이하 명백하게 되는 바와 같이, 적응적 유연성을 가지며 많은 다른 유형의 현재와 미래의 컨텐츠 보호 기술과 관련하여 이용될 수 있다는 장점이 있다.

본 발명의 프로토콜이 이용될 수 있는 통상의 시스템의 개괄적 예로서, 가전 기기(200)의 형태인 컴퓨팅 장치를 나타내는 도 2를 고찰한다. 가전 기기(200)는 보호된 미디어 컨텐츠를 렌더링하는 데에 이용될 수 있는 임의의 적당한 유형의 가전 기기로 이루어질 수 있다. 이런 장치의 일 예가 퍼스널 컴퓨터이다. 다른 유형의 장치로는 퍼스널 비디오 레코더 (PVR) 장치, 디지털 비디오 레코더 (DVR) 장치 등이 포함된다.

가전 기기(200)는 보호된 미디어 컨텐츠 소스로부터 보호된 미디어 컨텐츠를 취득할 수 있는 재생 어플리케이션(202), 보호된 미디어 컨텐츠의 처리를 원활히 하는 시스템 소프트웨어(204), 및 몇몇 유형의 물리적 커넥터(210)를 통해 처리된 미디어 컨텐츠를 미디어 컨텐츠가 유저에게 렌더링되게 하는 관련 출력 장치(212)에 제공하는 하드웨어(208) (비디오 카드 등)와 인터페이스하는 데에 이용되는 드라이버 소프트웨어(206) (또는 관련 하드웨어의 소프트웨어 표현)를 포함한다. 출력 장치의 예들은 상술한 바와 같이, 디스플레이 장치 및 스피커를 포함한다.

이하 설명의 목적으로, 적어도 이 섹션에서는, 당업자라면 재생 어플리케이션과 물리적 커넥터 간의 체인을 구성할 수 있는 많은 다양한 여러 유형의 개체가 있다는 것을 확실히 이해하는 바와 같이, 재생 어플리케이션, 시스템 소프트웨어, 드라이버 소프트웨어 및 하드웨어의 유형은 특정하게 관련되는 것은 아니다. 이와 같이, 이 설명은 하나의 특정 유형의 시스템에만 제한하고자 하는 것이 아니다.

이 설명 및 기재된 실시예에서는, 물리적 커넥터(210)와 출력 장치(212) 사이에 미디어 컨텐츠를 보호하는 데에 이용될 수 있는 여러 다른 유형의 컨텐츠 보호 기술이 있다. 예를 들어, 여러 컨텐츠 보호 유형은 당업자가 이해할 수 있는 바와 같이, 아날로그 컨텐츠 보호 (ACP), 카피 형성 관리 시스템 - 아날로그 (CGMS-A) 및 고대역폭 디지털 컨텐츠 보호 (HDCP)를 포함할 수 있다. 이 도면에서, 이들 여러 다른 유형의 컨텐츠 보호 기술을 214로 나타낸다.

여기에 기재한 실시예에 따르며, 보안 링크나 채널은 어플리케이션(202)과 하나 이상의 하류측 컴포넌트 사이에 설정된다. 이 설명된 예에서는, 두 유형 중 하나의 채널만이 구현되어야 하지만, 두 개의 다른 보안 채널을 설명한다. 특히, 일 실시예에서, 보안 통신 채널(216)은 어플리케이션(202)과 드라이버 소프트웨어(206) 사이에 설정된다. 다른 실시예에서는, 보안 채널(218)이 어플리케이션(202)과 하드웨어(208) 사이에 설정된다.

도시되고 설명된 실시예에서, 채널(216)은 어플리케이션과 드라이버 사이의 통신에 주로 이용될 수 있다. 이런 통신은 어플리케이션과 드라이버 간의 커맨드, 상태 요청 및 관련 상태의 통신을 포함할 수 있다. 채널(218)은 이 유형의 통신 뿐만 아니라, 오디오 및 비디오 데이터 등의 실제 미디어 데이터를 하드웨어에 제공하는 데에도 이용될 수 있다.

이 명세서의 컨텍스트에서, 커맨드는 명령으로서 다른 특성 중에서도 다음의 특성을 가질 수 있다. 먼저, 커맨드는 하드웨어(208)의 컨피규레이션을 변경하거나 아니면 이에 영향을 줄 수 있다. 다르게 또는 부가하여, 커맨드는 하드웨어에게 몇몇 특정한 방법으로 미디어 컨텐츠를 처리하도록 신호를 보낼 수 있다.

상태 요청은 하드웨어로부터 두 세트의 정보를 효율적으로 검색할 수 있다. 먼저, 상태 요청은 어플리케이션으로부터 하류측 컴포넌트로 송신된 커맨드에 속하는 정보를 검색할 수 있다. 예를 들어, 어플리케이션이 몇몇 태스크 - 예를 들어 특정 유형의 컨텐츠 보호 기술을 세트하는 것 - 를 실행하도록 커맨드를 송신하면, 관련 상태 요청은 이 태스크가 실행되었는지에 대한 정보를 검색할 수 있다. 두번째로, 상태 요청은 커맨드가 송신되었는지의 여부에 반드시 관련될 필요가 없는 정보를 검색할 수 있다. 예를 들어, 상태 요청은 특정 장치에 내재할 수 있는 부가의 하드웨어 컨피규레이션 정보, 예를 들어 이용되고 있는 물리적 커넥터의 유형을 검색할 수 있다. 이런 상태 요청은 또한 어느 컨텐츠 보호 기술이 특정한 물리적 커넥터에 대한 하드웨어로 지원되는지를 확인하는 데에 이용될 수 있다. 예를 들어, 물리적 커넥터는 DVI 커넥터일 수 있지만, 그래픽 하드웨어의 HDCP 지원은 없을 수 있다. 이와 같이, 어플리케이션은 다운 샘플링되거나 저 해상도 버전의 비디오 데이터를 재생하거나 형편에 따라서는 비디오 데이터를 전혀 재생하지 않는 현명한 선택을 행할 수 있다.

보안 채널의 설정

이 도시되고 설명된 실시예에서, 단방향 트러스트 (trust) 모델 및 키 전송 프로토콜은 통신 체인의 두 종단점 사이에 트러스트를 설정하는 데에 이용된다. 키 전송을 이용하게 되면 당업자라면 잘 이해되는 바와 같이, 두 가지 장점이 수반된다. 먼저, 키 전송에서, 엔트로피 (entropy)를 형성할 책임은 트러스트를 설정하는 개체 - 여기서는 어플리케이션(202) - 에게 남겨진다. 둘째로, 키 전송은 "패스-스루 (pass through)"로 불리는 것을 행하는 능력을 제공한다. 패스-스루는 컨텐츠 데이터가 그래픽 하드웨어로의 체인을 따른 모든 방식으로 암호화되게 할 수 있다. 이것은 다음에 당업자라면 잘 이해되는 바와 같이, 그래픽 하드웨어가 컨텐츠 데이터를 해독하고, 컨텐츠 데이터를 관련 표면으로 디코드한 다음에, 디스플레이 상에서 컨텐츠 데이터를 처리할 수 있게 한다.

일 예로 채널(216)을 이용하여, 예를 들어, 공개 키 인프라스트럭쳐 (PKI) 기술을 이용하여 어플리케이션(202)과 드라이버 소프트웨어(206) 사이에 단방향 인증 채널을 설정한다. 더욱 구체적으로, 이 예에서는, 데이터 무결성 키 (integrity key)의 형태의 채널 키가 어플리케이션(202)과 드라이버 소프트웨어(206) 사이에 설정된다. 일단 채널 키가 설정되면, 커맨드와 상태 메시지는 암호화되지 않고 전달될 수 있으며 메시지 인증 코드나 MAC은 데이터 무결성 키로 형성될 수 있다.

일 예로, 도 3과 관련하여 이를 고찰한다. 하류측 컴포넌트와 트러스트를 설정하기 위해서, 어플리케이션(202)은 먼저 드라이버 소프트웨어(206)를 호출하여 드라이버 소프트웨어로부터 난수 rGH 및 하드웨어(28)와 관련되는 디지털 인증서 CertGH를 수신한다 (도 2). 어플리케이션(202)이 디지털 인증서 CertGH를 수신할 때, 어플리케이션은 이 인증을 처리하여 디지털 인증서에 대한 시그내쳐가 트러스트 개체에 의해 제공된 것을 증명하고 드라이버 소프트웨어(206) (이 경우 채널(216)이 이용됨)와 그래픽 하드웨어(208) (이 경우 채널(218)이 이용됨)의 공개 키 (PGH)를 검색한다. 공개 키 PGH는 이제 드라이버 소프트웨어나 그래픽 하드웨어에 의해 보안 유지되는 관련 개인 키에 의해서만 해독될 수 있는 데이터를 암호화하도록 어플리케이션에 의해 이용될 수 있다. 방금 설명한 프로세스는 어플리케이션과 드라이버 소프트웨어 사이에 트러스트를 설정한다.

트러스트가 설정된 후에, 어플리케이션은 이제 키 전송을 셋업할 수 있다. 이 예에서, 어플리케이션(202)은 드라이버 소프트웨어에 의해 제공된 난수 rGH, 데이터 무결성 키 kDI (또한 세션 키로도 불림), 임의의 시작 상태 시퀀스 번호 (status_start) 및 임의의 시작 커맨드 시퀀스 번호 (command_start)를 파일 병합 (concatenate)하여, 이 파일 병합 값을 드라이버 소프트웨어의 공개 키 PGH를 이용하여 암호화하고, 이 암호화된 데이터를 드라이버 소프트웨어(206)에 보낸다. 방금 설명한 프로세스는 어플리케이션과 드라이버 소프트웨어 간에 이용되는 세션 키를 설정한다. 임의의 시작 상태 시퀀스 번호 (status_start) 및 임의의 시작 커맨드 시퀀스 번호 (command_start)는 특정 메시지가 손실된 경우, 메시지가 상태 요청 또는 보고된 상태 (시작 상태 시퀀스 번호인 경우), 또는 커맨드 (시작 커맨드 시퀀스 번호의 경우)이든지간에, 의도한 메시지 수신기가 이 사실을 확인할 수 있는 것을 확실히 하는 데에 이용된다. 더욱 구체적으로, 커맨드가 어플리케이션에 의해 송신될 때 마다, 임의의 시작 커맨드 시퀀스 번호는 하나씩 인크리멘트된다. 유사하게, 상태 메시지가 송신될 때 마다, 송신 개체는 시작 상태 시퀀스 번호를 하나씩 인크리멘트한다. 수신단에서, 메시지의 수신기는 시퀀스 번호가 순서데로 발생했는지를 알도록 간단히 체크하여 메시지가 손실되었는지를 확인할 수 있다. 분실된 시퀀스 번호가 있으면, 관련 메시지가 손실된 것으로 적당한 동작을 취할 수 있다. 이런 식으로, 임의의 시작 시퀀스 번호는 메시지의 무결성과 순서를 확실히 한다.

일 예로, 바로 아래 표 1에서 나타낸 값과 설명을 이 기술한 프로세스에서 이용할 수 있다.

설명 rGH 그래픽 드라이버에 의해 형성된 임의의 32비트 난수 CertGH 그래픽 하드웨어의 가변 길이 디지털 인증서 PGH(rGH, kDI,
status_start, command_start)`
그래픽 하드웨어의 공개 키로 암호화된 그래픽 드라이버로부터의 32비트 난수, 128비트 임의의 데이터 무결성 세션 키, 32비트 임의의 시작 상태 시퀀스 번호 및 32비트 임의의 시작커맨드 시퀀스 번호의 파일 병합. 이 값은 2048비트의 길이이다.

이 시점의 프로세스에서, 어플리케이션과 드라이버 소프트웨어 사이에 보안 채널이 설정된다. 바로 아래에서는, 본 발명의 프로토콜의 두 부분 - 커맨드 프로토콜과 상태 프로토콜에 대한 설명이 이어진다.

커맨드 프로토콜

프로토콜의 커맨드 부는 하드웨어(208) (도 2)와 같은 시스템의 하드웨어가 어플리케이션에 의해 HDCP 또는 CGMS-A등의 특정 컨텐츠 보호 기술을 턴온하고 어떤 인스턴스에서는 컨피규어하라는 명령을 받을 수 있도록 한다. 이 설명된 실시예에서, 커맨드 메시지는 두 섹션: 데이터 섹션 및 메시지 인증 코드나 MAC 섹션을 갖는 엔벨로프에 포함된다.

이 설명된 실시예에서, 커맨드 메시지의 데이터 섹션은 커맨드 및 관련 커맨드 시퀀스 번호를 포함한다. 메시지 인증 코드나 MAC 섹션은 커맨드와 관련 커맨드 시퀀스 번호의 키 해쉬 (keyed hasy)로서 고려될 수 있는 것을 포함한다. 키 해쉬를 만드는 데에 이용되는 키는 상술한 데이터 무결성 키 kDI이다.

일 예로, 어플리케이션(202)이 드라이버 소프트웨어(206)에 다음 형태의 커맨드 메시지를 송신하고 있는 것이 도시된 도 4를 참조한다:

Command, MACkDI(Command)

여기서, 메시지의 "Command" 부분은 어플리케이션으로부터의 관련 커맨드 뿐만 아니라, 관련 커맨드 시퀀스 번호도 포함한다. 메시지의 "MACkDI(Command)" 부분은 어플리케이션에 의해 연산된 "Command" 부분의 MAC를 포함한다. 드라이버 소프트웨어(206)가 커맨드 메시지를 수신하면, 드라이버 소프트웨어는 협상된 세션 키 kDI를 이용하여 메시지의 커맨드 부분에 대해 MAC 알고리즘을 실행할 수 있다. 일단 MAC 알고리즘이 커맨드 메시지의 커맨드 부분에 대해 실행되면, 드라이버 소프트웨어는 이 값을 커맨드 메시지에서 수신된 MAC 값과 비교할 수 있다. 두 개의 값이 호의적으로 비교되면, 이 때 커맨드 메시지의 무결성이 성립되게 된다.

일 예에서, 아래 표 2에 기재된 값과 설명을 방금 설명한 프로세스에서 이용할 수 있다.

설명 Command 가변 길이 커맨드 데이터 MACkDI(Command) 데이터 무결성 세션 키 kDI를 이용한 커맨드 데이터와 커맨드 시퀀스 번호의 128비트 MAC

상태 프로토콜

도시되고 설명된 실시예에서, 상태 메시지는 두 섹션: 데이터 섹션과 메시지 인증 코드나 MAC 섹션을 갖는 엔벨로프에 포함된다. 이 예에서, 메시지 송신기는 세션 키 kDI와 관련 MAC 알고리즘을 이용하여 상태 데이터의 MAC를 연산한다.

상태 프로토콜이 구현될 수 있는 방법에 대한 일 예로, 도 5를 참조한다. 여기서 어플리케이션(202)은 다음 형태의 상태 정보에 대한 요청을 행한다:

rAPP, Status Request

여기서 rAPP는 어플리케이션에 의해 형성된 난수이고 "Status Request"는 상태 정보의 실제 요청이다. 어플리케이션으로부터 상태 요청을 수신한 것에 응답하여, 드라이버 소프트웨어(206)는 어느 상태 정보든지 적합한 것을 확인하여 적당한 상태 시퀀스 번호와 함께 상태 정보를 엔벨로프의 데이터 섹션에 공급한다. 부가하여, 드라이버 소프트웨어는 또한 어플리케이션에 의해 제공된 난수와 함께 상태 정보의 MAC를 연산한다. 상태 메시지는 다음에 다음 형태로 어플리케이션에 다시 제공된다:

rAPP, Status, MACkDI(rAPP, Status)

여기서 "Status"는 상태 정보만이 아니라, 상태 시퀀스 번호도 포함한다. 메시지의 MACkDI(rAPP, Status) 부분은 어플리케이션에 의해 제공되는 난수와 상태 정보의 MAC를 포함한다. 어플리케이션이 상태 메시지를 수신하면, 이것은 난수와 상태 정보에 대해 MAC 알고리즘을 실행하여 난수와 상태 정보의 MAC을 연산한 다음에 이 값을 메시지의 MACkDI(rAPP, Status) 섹션의 값과 비교할 수 있다. 이를 행함으로써, 어플리케이션은 상태 메시지가 진짜인 것을 확인할 수 있다. 다음에 어플리케이션은 메시지의 컨텐츠를 이용하여 상태 메시지가 (시퀀스 번호에 의해) 적당한 시퀀스에 있는지와 상태 정보가 (난수 rAPP에 의해) 어플리케이션에 의해 이미 송신된 상태 요청에 속한다는 것을 증명할 수 있다.

일 예에서, 바로 아래 표 3에서 기재한 값과 설명을 방금 설명한 프로세스에서 이용할 수 있다.

설명 rAPP 어플리케이션에 의해 형성된 128비트 난수 Status 가변 길이의 상태 데이터 MACkDI(rAPP, Status) 데이터 무결성 세션 키 kDI를 이용하여 어플리케이션에 의해 제공된 상태 데이터, 상태 시퀀스 번호 및 난수의 128비트 MAC

예시의 모델

도 6은 일 실시예 따른 방법의 단계를 설명한다. 이 방법은 어떤 적합한 하드웨어, 소프트웨어, 펌웨어나 그 조합에 관련해서도 구현될 수 있다. 부가하여, 몇몇 소프트웨어 구현시에, 이 방법의 형태는 하나 이상의 컴퓨터 판독 가능 매체에 존재하며 설명된 방법을 행하도록 실행되는 컴퓨터 판독 가능 명령으로서 구현될 수 있다. 이 예에서, 설명된 방법은 두 부분으로 분리되는데 - 그 중 하나는 "어플리케이션"이, 다른 것은 "하류측 컴포넌트"가 라벨 붙여져 있다. 이것은 어느 개체가 설명되고 있는 것에 대한 동작을 실행하는지를 나타내기 위한 것이다. 따라서, 라벨 "어플리케이션" 아래에 나타나는 동작들은 어플리케이션에 의해 실행되고, 라벨 "하류측 컴포넌트" 아래에 나타나는 동작들은 어플리케이션의 하류측에 존재하는 컴포넌트에 의해 실행되는 것이다. 일 실시예에서, 하류측 컴포넌트는 드라이버 소프트웨어나 미디어 데이터를 처리하는 관련 하드웨어의 소프트웨어 표현을 포함할 수 있다. 다른 실시예에서, 하류측 컴포넌트는 하드웨어 컴포넌트 자체로 이루어질 수도 있다.

설명되고 있는 것에 대한 방법을 구현할 수 있는 일 예시의 시스템을 상기한 도 2 내지 도 5를 참조하여 도시 및 설명한다. 그 외 시스템이 청구 요지의 정신과 영역에서 벗어나지 않고 이용될 수 있다는 것이 이해될 것이다.

단계 600은 재생 어플리케이션에서 하류측인 컴포넌트와 관련되는 공개 키를 확인하다. 이것이 행해지는 방법의 예는 위에 제공되어 있다. 단계 602는 공개 키를 이용하여 재생 어플리케이션과 하류측 컴포넌트 간에 보안 채널을 설정한다. 단계 600 및 602는 함께 재생 어플리케이션과 하류측 컴포넌트 간의 트러스트를 설정한다. 이 트러스트가 설정되는 방법의 일 예를 상기 도 3과 관련하여 기재했다. 물론 청구 요지의 정신 및 영역에서 벗어나지 않고 다른 방법을 이용할 수 있다.

단계 604는 보안 채널을 이용하여 하류측 컴포넌트에 커맨드 메시지를 송신한다. 도 4와 관련하여 일 예만이 제공되고 있지만 적당한 커맨드 메시지 구조는 어느 것이나 이용될 수 있다. 부가하여, 적당한 유형의 커맨드라면 어느 것이나 어플리케이션으로부터 하류측 컴포넌트에 송신될 수 있다. 일 실시예에서, 송신될 수 있는 커맨드는 하류측 컴포넌트에게 특정 유형의 컨텐츠 보호 기술이 시스템에 의해 처리되는 미디어 컨텐츠나 데이터를 보호할 수 있도록 명령한다.

단계 606은 보안 채널을 통해 커맨드 메시지를 수신한다. 이 단계는 커맨드 메시지가 송신되는 하류측 컴포넌트에 의해 실행된다. 단계 608은 커맨드 메시지의 무결성을 증명한다. 도 4와 관련하여 일 예만을 제공하고 있지만 어떤 적합한 방법이라도 커맨드 메시지의 무결성을 증명하는 데에 이용될 수 있다. 단계 610은 일단 커맨드 메시지의 무결성이 증명되면, 커맨드 메시지에 포함된 관련 커맨드를 구현한다.

단계 612는 보안 채널을 이용하여 하류측 컴포넌트에 상태 요청을 송신한다. 도 5에 관련해서는 단지 일 예만이 제공되고 있으며, 어떠한 적합한 유형의 상태 요청 구조도 이용될 수 있다. 단계 614는 보안 채널을 거쳐 상태 요청을 수신하고 단계 616은 이에 응답하여 보안 채널을 이용하여 상태 메시지를 준비하고 이 메시지를 어플리케이션에 송신한다. 도 5와 관련해서 단지 일 예만이 제공되고 있지만 적합한 상태 메시지 구조라면 어느 것이나 이용될 수 있다.

단계 618은 보안 채널을 통해 상태 메시지를 수신하고 단계 620은 상태 메시지의 무결성을 증명한다. 단지 일 예만이 제공되고 있지만, 어떤 적합한 방법이라도 상태 메시지의 무결성을 증명하는 데에 이용될 수 있다.

Window® 운용 시스템 상에서의 프로토콜의 구현예

시스템 개론

도 7은 상술한 보안 채널 프로토콜을 구현하는 데에 이용될 수 있는 700으로 나타낸 시스템을 도시한다. 이하에서 본 발명의 프로토콜은 인증된 출력 보호 프로토콜 또는 "COPP"로 언급된다. 이 예에서, 미디어를 스트리밍 (streaming)하기 위한 아키텍쳐인 Microsoft® DirectShow®를 일 예로 이용한다. 당업자라면 잘 이해되는 바와 같이, Microsoft® DirectShow®는 고 품질의 멀티미디어 스트림의 재생을 제공하고 어드밴스드 스트리밍 포맷 (ASF), 모션 픽처 엑스퍼트 그룹 (MPEG), 오디오 비디오 인터리브드 (AVI), MPEG 오디오 레이어-3 (MP3) 및 WAV 파일을 포함하는 각종 포맷을 지원한다.

비디오 및 오디오 데이터를 스트리밍하는 데에 필요한 처리율을 성취하기 위해서, DirectShow®는 Microsoft® DirectDraw® 및 Microsoft® DirectSound®를 이용하여 시스템의 사운드와 그래픽 카드에 데이터를 효율적으로 렌더링하게 한다. DirectDraw®는 당업자라면 잘 이해되는 바와 같이, 소프트웨어 디자이너가 디스플레이 메모리, 하드웨어 블리터 (blitter), 하드웨어 오버레이 (overlay), 및 플리핑(flipping) 표면을 직접 조작할 수 있게 하는 DirectX®의 디스플레이 컴포넌트이다. DirectDraw®은 직접적인 32비트 경로에서 장치에 특정적인 디스플레이 기능에 대한 장치에 독립적인 억세스를 제공한다. 64 비트 경로는 또한 64비트 버전의 Windows®에 존재한다. DirectDraw®는 Window® 그래픽 장치 인터페이스 (GDI) 또는 장치에 독립적인 비트맵 (DIB) 엔진의 중재 없이, 디스플레이 카드에 직접 억세스하는 드라이버의 중요 함수를 호출한다.

DirectShow®에서, 시각 표시된 (time-stamped) 미디어 샘플에 멀티미디어 데이터를 인캡슐화하여 동기화를 성취한다. 각종 다른 여러 미디어 소스, 포맷 및 하드웨어 장치를 취급하기 위해서, DirectShow®는 필터로 불리는 운용 시스템 컴포넌트를 믹싱 및 매칭하여 많은 다른 시나리오에 대한 지원을 제공하는 모듈러 아키텍쳐를 이용한다. 이 설명된 예에서, 이들 필터는 재생 어플리케이션(702)에 의해 이용되는 필터 그래프(704)에 조립되어 멀티미디어 데이터가 하드웨어 장치에 의해 처리 및 렌더링되게 할 수 있다.

이 특정 예에서, 필터 그래프(704)는 미디어 컨텐츠를 판독하는 소스 필터(706) 및 컨텐츠를 압축 해제하는 디코더(708) (예를 들어, WMV 또는 MPEG-2 디코더)를 포함한다. 비디오 렌더링 컴포넌트(710)는 압축 해제된 컨텐츠 또는 데이터를 수신하여, 컨텐츠가 렌더링되게 되는 하드웨어로 이해한다. 이 특정 예에서는, 이용될 수 있는 두 개의 다른 유형의 렌더링 컴포넌트 - VMR7 (DirectX 버전 7 SDK에 기록된 비디오 믹싱 렌더러 버전 7) 및 VMR9 (DirectX 버전 9 SDK에 기록된 비디오 믹싱 렌더러 버전 9)가 있다.

이 도시된 예에서는, 유저 모드 DirectDraw® 컴포넌트(712)가 제공되며 이는 DirectDraw® 어플리케이션에 의해 로딩되어 호출되는 시스템 공급 동적 링크 라이브러리 (Dynamic-link library; DLL)이다. 이 컴포넌트는 당업자에 의해 잘 이해되는 바와 같이, 하드웨어 에뮬레이션을 제공하고, 여러 DirectDraw® 오브젝트를 관리하고, 디스플레이 메모리 및 디스플레이 관리 서비스를 제공한다.

부가하여, 커널 모드 DirectDraw® 컴포넌트(714)가 제공되며 이는 win32k.sys와 일체하는 부분이다. 커널 모드 컴포넌트(714)는 커널 모드 디스플레이 드라이버에 의해 로딩되는 시스템 공급 그래픽 엔진이다. 이 컴포넌트는 드라이버에게 대해 파라미터 검증을 실행하고, 이로써 더욱 강건한(robust)한 드라이버를 구현하기가 용이해진다. DirectDraw® 그래픽 드라이버(716)가 제공되며 이는 통상적으로 제3자 하드웨어 벤더에 의해 구현된다.

동작시, 보호된 컨텐츠는 통상 이것과 관련되는 몇 세트의 폴리시(policy)를 갖는다. 폴리시는 관련 컨텐츠가 렌더링될 때 이용되게 되는 컨텐츠 보호의 유형과 레벨을 설정할 수 있다. 예를 들어, 컨텐츠가 DVI 커넥터를 통해 재생되기로 되어 있으면, HDCP를 인에이블해야 하거나 컨텐츠를 재생하지 않을 것이라는 폴리시가 설정될 수 있다.

본 예에서, 어플리케이션(702)은 컨텐츠와 관련되는 폴리시를 알고 있다. 실제로, 소스 필터(706)는 컨텐츠와 관련되는 폴리시를 확인한 다음에 어플리케이션에게 알리는 책임을 갖는 컴포넌트를 포함할 수 있다.

유저 모드 어플리케이션 프로그램 인터페이스 (API)

일단 폴리시가 추출되고 폴리시의 함축 의미가 확인되면, 시스템(700)은 먼저 폴리시가 이 특정 시스템에서 실시될 수 있는지를 확인한다. 이 특정예에서, 이것이 달성되는 방법은, 비디오 렌더링 컴포넌트(710)에 의해 노출되는 IAMCertifiedOutputProtection으로 불리는 유저 모드 어플리케이션 프로그램 인터페이스 (API)에 의한 것이다. 일 실시예에 따르면, IAMCertifiedOutputProtection 인터페이스는 어플리케이션에 의해 호출될 수 있는 다음의 메소드로 이루어진다.

Figure 112005013051155-pat00001

Figure 112005013051155-pat00002

상기 예에서, AMCOPPCommand 구조는 어플리케이션이 하류측 컴포넌트에 커맨드를 송신하기 위해 이용하는 데이터 구조로서 도 4에 도시된 것과 교환하여 이용된다. AMCOPPStatusInput 구조는 어플리케이션이 상태 요청을 행하기 위해 이용하는 데이터 구조로서 도 5의 좌측 상에 도시된 것과 교환하여 이용된다. AMCOPPStatusOutput 구조는 그래픽 드라이버가 어플리케이션에 다시 상태 정보를 제공하기 위해 이용하는 데이터 구조로서 도 5의 우측 상에 도시된 것과 교환하여 이용될 수 있다.

커널 모드 DDI(DX-VA)

DX-VA 인증 출력 보호 프로토콜 (COPP)은 재생 어플리케이션(702)과 같은 유저 모드 어플리케이션으로부터 그래픽 드라이버(716)와 같은 드라이버에 명령을 전달하고, 드라이버로부터 유저 모드 어플리케이션에 다시 상태를 보내주기 위한 수단을 제공한다. 주지한 바와 같이, 커맨드와 상태가 흐르는 채널은 보호된다.

이 특정 구현시, 컨텐츠 출력 보호 프로토콜은 이하 더욱 상세히 설명되는 DX-VA COPP를 이용한다. 아래 설명에서는 다음의 용어를 이용한다:

·비디오 스트림: 비디오 스트림은 표시된 비디오 프레임을 구성하는 주요 화상 데이터이다. 비디오 스트림으로부터의 화소는 항상 오페이크 (opaque)하며 어떤 화소당 알파 데이터도 포함하지 않는다.

·비디오 서브스트림: 비디오 서브스트림은 조합된 비디오 프레임의 디스플레이 이전에 비디오 스트림으로부터의 샘플로 구성될 필요가 있는 보조 화상 데이터의 채널이다. 비디오 서브 스트림의 예는 NTSC 폐쇄 캡션 화상, DVD 서브 픽쳐 화상 및 PAL 텔레텍스트 화상이다. 비디오 서브 스트림의 다른 특성은 제한된 컬러 범위와 화소당 알파 정보를 포함한다는 것이다.

·비디오 세션: 비디오 세션은 비디오 스트림 및 비디오 스트림과 조합되는 가능한 하나 이상의 비디오 서브 스트림으로 구성되고 나서 컴퓨터에 접속된 출력 장치 상에 표시된다. 특정 시간에 컴퓨터 상에는 몇개의 비디오 세션이 동작 중일 수 있으며, 또한 단일의 프로세스 내에 몇개의 비디오 세션이 동작하고 있을 수 있다.

·DX-VA COPP 장치: 컨텐츠 출력 보호 프로토콜을 통한 커맨드와 상태 요청의 수신을 지원하는 새로운 DX-VA 장치.

·커넥터: 그래픽 하드웨어와 디스플레이 장치 간의 물리적 출력 접속.

·보호 유형: 커넥터를 통과하고 있는 신호에 적용되는 보호의 유형으로; 하나 이상의 유형의 보호가 단일의 커넥터에 적용될 수 있다.

·보호 레벨: 커넥터를 통과하고 있는 신호에 적용되는 보호의 레벨. 이 값은 보호 유형에 따라 달라지는데 - 몇몇 보호 유형, 예를 들어 HDCP는 두개의 보호 레벨, 즉 "온"과 "오프"만을 갖는다.

디자인 개론

이 실시예에 따르면, DX-VA COPP로 알려진 하나의 컴포넌트가 각 비디오 세션에 대해 형성된다. 도 7에서, 두 개의 예시의 DX-VA COPP 장치가 드라이버(716) 내에 도시되어 있다. DX-VA COPP 장치는 COPP 커맨드 및 상태 요청의 종단점을 나타낸다. 부가하여, DX-VA COPP 장치는 물리적 커넥터의 보호 세팅을 실제화할 수 있다. 단일의 물리적 커넥터는 다수의 컨텐츠 보안 유형을 지원하는 것이 가능하다. 예를 들어, S-Video 커넥터는 아날로그 컨텐츠 보호 및 CGMS-A Line20 보호 및 CGMS-A Line21 보호도 지원할 수 있다. 이 명세서에서 나중에 설명되는 COPP 샘플 장치 드라이버 코드는 COPP 장치가 드라이버에 의해 구현되는 방법의 일 예를 나타낸다.

설명된 실시예에서, 각 DX-VA COPP 장치는 다수의 비디오 세션이 컴퓨터 상에서 동작중일 때 적당히 동작하도록 구성된다. 이 경우, 여러 프로세스가 COPP를 통해 출력 디스플레이 어댑터 세팅을 구성하려고 할 때 드라이버(716)에게 DX-VA COPP 장치의 다수의 인스턴스를 형성하도록 요구한다. 본 예에서, DX-VA COPP 장치의 두 인스턴스는 드라이버(716)에 의해 형성된다.

로컬 및 글로벌 참조 카운트

드라이버(716)는 컨텐츠 보호를 지원하는 각 물리적 커넥터의 각 유형과 각 레벨에 대한 글로벌 참조 카운트를 보유한다. 이 설명된 실시예에서, 드라이버(716)는 이 글로벌 상태를 보유하는 글로벌 상태 컴포넌트를 포함한다.

COPP DX-VA 장치가 비디오 세션에 대해 형성되면, 이 장치는 각 보호 레벨에서 각 보호 유형에 대한 로컬 참조 카운트를 포함해야 한다. 이것은 각 장치 내의 현재 보호 레벨 컴포넌트에 의해 표시된다. 보호 유형의 디폴트 레벨 카운터는 값 1로 세트되고, 이 유형의 그 외 모든 보호 레벨 카운터는 값 0으로 세트되어야 한다.

비디오 세션이 특정 보호 유형에 대해 새로운 보호 레벨을 세트할 때, 현재 보호 레벨의 참조 카운트는 디크리멘트되고 새로운 보호 레벨의 참조 카운트는 인크리멘트된다. 글로벌 참조 레벨 카운터에 대응하여 변경이 행해진다.

글로벌 레벨 카운터가 변경될 때 마다, 드라이버는 이 커넥터에 대한 모든 카운터를 조사하여 보호 레벨이 0 보다 더 큰 값을 갖는 최고 레벨 카운터와 대응하는 레벨로 세트되는 것을 확실케 해야 한다. 본 예에서, 관련 물리적 커넥터에는 두 개의 다른 보호 레벨 - 레벨 A 및 레벨 B가 있다. 글로벌 상태 컴포넌트는 레벨 B 보호가 물리적 커넥터에 적용된 것을 나타내는 것에 주지해라. 이와 같이, 레벨 B는 물리적 커넥터에 적용될 수 있는 더 고위의 보호 레벨이다. DX-VA COPP 장치(2)가 종료하면, 글로벌 상태 컴포넌트는 물리적 커넥터에 보호 레벨 A를 적용하게 된다. 아래 예시의 코드 샘플은 이것이 어떻게 행해지는지를 설명해준다.

글로벌 참조 카운터가 0 보다 더 큰 동안에, 출력 커넥터에 컨텐츠 보호를 적용해야 한다. 글로벌 참조 카운터가 0이 되자마자 출력 커넥터에서 컨텐츠 보호를 제거해야 한다. 드라이버가 DestroyDevice 호출을 수신할 때 마다, 글로벌 참조 카운터는 장치 로컬 참조 카운터의 현재 레벨 만큼 디크리멘트되어야 한다. 그 커넥터에 대한 글로벌 참조 카운터가 제로가 되면 커넥터 보호는 제거되어야 한다.

DestroyDevice는 장치가 여전히 0보다 더 큰 로컬 참조 카운터를 갖는 동안 호출될 수 있으며, 이의 일 예는 유저 모드 프로세스가 비정상적으로 종료되는 경우가 될 수 있다.

비디오 세션 초기화

이 기재된 실시예에서, 비디오 세션은 특정 물리적 출력 커넥터에 연결되어 있다. 디스플레이 드라이버 레벨에서의 비디오 세션은 다음의 단계에 의해 초기화된다:

·GetMoCompGuids는 드라이버가 출력 커넥터의 DX-VA COPP를 지원하는지를 결정하기 위해 호출된다.

·드라이버가 출력 커넥터에 대해 DX-VA COPP 장치를 지원한다고 가정하면 CreateMoComp는 DX-VA COPP 장치를 형성하도록 호출된다.

·RenderMoComp는 이 세션에 이용되어야 하는 가변 길이의 그래픽 하드웨어 인증서의 길이를 결정하기 위해 DXVA_COPPGetCertificateLengthFnCode 함수 코드로 호출된다.

·RenderMoComp는 비디오 세션 어플리케이션 인증을 드라이버에 전달하기 위해 DXVA_COPPKeyExchangeFnCode 함수 코드로 호출된다. 드라이버는 128비트 개인 키 및 그 가변 길이의 그래픽 하드웨어 인증서의 카피를 보내준다.

·마지막으로, RenderMoComp는 비디오 세션이 32비트 커맨드 시퀀스 시작 코드와 32비트 상태 시퀀스 시작 코드로 시작한 것을 나타내도록 DXVA_COPPSeqeunceStartFnCode 함수 코드로 호출된다.

개별의 DX-VA RenderMoComp 함수 코드에 대한 상세 사항을 이하 제공한다.

취급 장치의 손실 조건

출력 컨텐츠 보호가 특정 비디오 세션에 대해 여전히 기능되고 있는 동안 다음의 조건에 의해 드라이버의 DestroyMoComp 엔트리 지점이 호출되게 된다:

·디스플레이 모드 변경;

·Window® 데스크톱에서 모니터의 착탈;

·풀스크린 DOS 박스에 들어감;

·DDraw 또는 D3D 배타적 모드 어플리케이션 시작;

·패스트 유저 스위칭;

·Window® 데스크톱에서 모니터를 부가하거나 제거;

·Window® XP 프로페셔널 에디션에서 워크스테이션을 로킹 (locking)하거나 Alt-Ctrl-Del를 누름;

·"리모트 데스크톱 커넥션"을 통해 워크스테이션에 부착;

·절전 모드, 예를 들어, "서스펜드 (suspend)" 또는 "하이버네이트 (hibernate)"에 들어감

·예기치 못한 어플리케이션 종료, 예를 들어 "페이지 폴트"

이것이 발생하면 드라이버는 글로벌 보호 레벨 카운트를 파손되고 있는 장치의 현재 로컬 보호 레벨 카운트만큼 디크리멘트한다. 이 변경된 글로벌 보호 레벨이 조사되고 이에 따라 출력 커넥터에 적용되는 보호가 조정되어야 한다.

DX-VA 커맨드

이하에서는 그래픽 드라이버 및 더욱 특히는 개별의 DX-VA COPP 장치에 의해 지원되는 다수의 커맨드나 함수를 설명한다.

COPPOpenVideoSession

이 함수는 특정 비디오 세션에 대해 이용되고 있는 COPP DX-VA 장치를 초기화한다.

Figure 112005013051155-pat00003

COPPCloseVideoSession

이 함수는 비디오 세션에 이용되고 있는 COPP DX-VA 장치를 종료한다.

Figure 112005013051155-pat00004

이 함수는 비디오 세션에 의해 출력 보호가 여전히 제공되고 있는 중에 호출되는 것이 가능하다. 드라이버는 이 DX-VA COPP 장치의 보호 세팅을 행하고 이에 따라 글로벌 보호 세팅을 조정해야 한다.

COPPGetCertificateLength

이것은 새로 형성된 COPP DX-VA 장치가 수신하게 되는 제1 함수 호출이다. 이것은 비디오 렌더링 컴포넌트(710)에 의해 이용되어 그래픽 하드웨어에 의해 이용되는 인증의 길이 (바이트)를 질의한다. 드라이버는 DD_RENDERMOCOMPDATA 구조의 lpOutputData 필드의 정확한 길이를 보내주어야 한다.

Figure 112005013051155-pat00005

COPPKeyExchange

이것은 새로 형성된 COPP DX-VA 장치가 수신하게 되는 제2 함수 호출이다. 드라이버는 그래픽 하드웨어의 가변 길이 디지털 인증서를 보내야 한다. DD_RENDERMOCOMPDATA 구조의 lpOutputData 필드는 DXVA_COPPKeyExchangeOutput 구조를 가리키며; DXVA_COPPVariableLengthData 필드는 이전의 COPPGetCertificateLength DXVA 커맨드에서 나타낸 바와 같은 인증에 필요한 공간양을 갖게 된다.

Figure 112005013051155-pat00006

COPPSequenceStart

이것은 DX-VA COPP 장치가 수신하게 되는 제3 함수 호출이 된다. 드라이버는 그래픽 하드웨어의 공개 키로 암호화된 128비트 랜덤 데이터 무결성 세션 키, 32비트 랜덤 시작 상태 시퀀스 번호, 및 32비트 랜덤 시작 커맨드 시퀀스 번호의 파일 병합을 수신하게 된다. 드라이버는 이 함수 호출을 수신한 후에 COPPKeyExchange 함수 호출을 수신하거나 후속 COPPSequenceStart 호출을 수신하면 E_UNEXPECTED를 보내주어야 한다.

Figure 112005013051155-pat00007

COPPCommand

COPP 커맨드는 DX-VA COPP 장치와 관련되는 물리적 커넥터 상의 보호 레벨을 변경하기 위한 비디오 세션으로부터의 커맨드를 포함할 수 있다. 드라이버는 위에서 언급한 바와 같이, 동일한 물리적 커넥터를 통해 컨텐츠를 재생하는 다수의 비디오 세션 모두를 지원할 수 있어야 한다.

Figure 112005013051155-pat00008

드라이버는 이 함수 호출을 수신한 후에 COPPKeyExchange 또는 COPPSequenceStart 함수 호출을 수신하게 되면 E_UNEXPECTED를 보내주어야 한다. 또한, 드라이버는 여기에 전달된 파라미터가 이용되고 있는 임의의 물리적 커넥터에 대해 유효한 것을 확실케 한다. 드라이버는 COPPCommand에서 전달된 파라미터 중 하나 이상이 유효하지 않은 경우 E_INVALIDARG를 보내주어야 한다.

아래 표 4는 드라이버가 본 실시예에 따라서 참조하기로 되어 있는 DX-VA COPP 커맨드의 세트 리스트이다.

GUID CommandData 파라미터의 해석 설명 DXVA_COPPSetProtectionLevel
9bb9327c-4eb5-4727-
9f00b42b0919c0da
DXVA_COPPSetProtectionLevelCmdData
ProtType 멤버 변수의 유효 값은:
COPP_ProtectionType_ACP
COPP_ProtectionType_CGMSA
COPP_ProtectionType_HDCP
특정 보호 유형을 특정 보호 레벨로 세트

정의된 COPP 커맨드

COPPQueryStatus

COPPQueryStatus는 이용되고 있는 물리적 커넥터에 대한 정보, 물리적 커넥터를 통해 전송되고 있는 컨텐츠에 대해 적용될 수 있는 보호의 유형, 및 물리적 커넥터 상에서 동작중인 현재 보호 레벨을 검색하기 위한 비디오 세션으로부터의 요청이다. 호출의 순서에 대한 동일한 제한이 여기에도 적용되는데: 드라이버는 이 호출을 이 VideoSession의 COPPKeyExchange 또는 COPPSequenceStart 호출 이전에 수신한 경우 E_UNEXPECTED를 보내주어야 한다.

Figure 112005013051155-pat00009

아래 표 5는 드라이버가 본 실시예에 따라서 참조하기로 되어 있는 DX-VA 상태 요청의 세트 리스트이다.

GUID 입력 데이터 보내진 데이터 설명 DXVA_COPPQuery
ConnectorType

81d0bfd5-6afe-48c2-
99c0-95a08f97c5da
없음 rAPP(GUID 16바이트) 플러스
DWORD(4바이트)
COPP_ConnectorType_Unknown
COPP_ConnectorType_VGA
COPP_ConnectorType_SVideo
COPP_ConnectorType_CompositeVideo
COPP_ConnectorType_ComponentVideo
COPP_ConnectorType_DVI
COPP_ConnectorType_HDMI
COPP_ConnectorType_LVDS
비디오 세션이 현재 이용하고 있는 물리적 커넥터의 유형을 식별한 값을 보냄.
DXVA_COPPQuery
ProtectionType

38f2a801-9a6c-
48bb-9107-b6696e6f1797
없음 rAPP(GUID 16바이트) 플러스
DWORD(4바이트)
COPP_ProtectionType_Unknown
COPP_ProtectionType_None
COPP_ProtectionType_ACP
COPP_ProtectionType_CGMSA
COPP_ProtectionType_HDCP

물리적 커넥터에 대해 이용 가능한 보호 메커니즘을 보냄.

이들 값은 다수의 보호 유형이 물리적 커넥터에 대해 지원되는 경우 함께 "or'ed"될 수 있음.
DXVA_COPPQuery
LocalProtectionLevel

b2075857-3eda-
4d5d-88db-
748f8c1a0549
DWORD (4바이트)
-필요로 하는 보호 유형을 식별

COPP_ProtectionType_ACP
COPP_ProtectionType_CGMSA
COPP_ProtectionType_HDCP
rAPP(GUID 16바이트) 플러스
2×DWORD (8바이트)

제1 DWORD는 특정한 보호 유형의 보호 레벨을 식별하고, 보내진 실제 값은 이 커넥터에 대한 보호 유형에 따라 달라진다.

제2 DWORD는 컴퓨터와 디스플레이 장치 간의 접속의 무결성을 식별한다. 보내진 값은: COPP_LinkActive
COPP_LinkLost 중 하나일 수 있다.
비디오 세션에 대해 현재 세트된 보호 레벨을 보냄.
DXVA_COPPQuery
GlobalProtectionLevel

1957210a-7766-452a-b99a-d27aed54f03a
DWORD(4바이트)
-필요로 하는 보호 유형을 식별함

COPP_ProtectionType_ACP
COPP_ProtectionType_CGMSA
COPP_ProtectionType_HDCP
rAPP(GUID 16바이트) 플러스
2×DWORD (8바이트)

제1 DWORD는 특정한 보호 유형의 보호 레벨을 식별하고, 보내진 실제 값은 이 커넥터에 대한 보호 유형에 따라 달라진다.

제2 DWORD는 컴퓨터와 디스플레이 장치 간의 접속의 무결성을 식별한다. 보내진 값은: COPP_LinkActive
COPP_LinkLost 중 하나일 수 있다.
물리적 커넥터에 대해 현재 세트된 보호 레벨을 보냄.

정의된 COPP 상태 요청

유저 모드 API의 DDI 매핑

이 특정 구현예에서, Window® 운용 시스템의 DDI 인프라스트럭쳐와의 호환을 위해, 이 명세서에서 상술한 API는 DirectDraw 및 DirectXVA에 대한 기존의 DDI에 "매핑"되어야 한다. 이들 매핑 동작은 당업자라면 이해되는 바와 같이, 커널 모드 컴포넌트를 상당히 변경해야 할 필요성을 없애준다. 따라서, 이 섹션과 아래 섹션에서는 기존의 DirectDraw 및 DX-VA DDI에 대한 COPP 인터페이스 매핑을 설명한다.

DX-VA DDI 자체는 두 가지 기능 그룹: "DX-VA 컨테이너" 및 "DX-VA 장치"로 분리된다. DX-VA 컨테이너 DDI 그룹의 목적은 디스플레이 하드웨어에 의해 포함되는 여러 DX-VA 장치의 개수와 용량을 결정하는 것이다. 따라서, 이 구현예에서, DX-VA 드라이버는 하나의 컨테이너만을 가지지만, 복수의 DX-VA 장치를 지원할 수 있다.

이 섹션의 나머지 부분에서는 상술한 인터페이스가 DX-VA 장치 DDI에 매핑되는 방법을 기술한다. 다른 DX-VA DDI와 달리, COPP 장치는 어느 비디오 메모리 표면도 전혀 참조하지 않는다는 점에 유의해야 한다.

유저 모드 컴포넌트로부터 DDI 호출

비디오 렌더링 컴포넌트(710; 도 7)와 같은 유저 모드 컴포넌트로부터 DDI를 이용하는 단계의 순서는 다음과 같다:

1. GetMoCompGuids를 호출하여 드라이버에 의해 지원된 DX-VA 장치의 리스트를 얻는다.

2. CreateMocomp를 호출하여 비디오 세션에 대해 COPP 장치를 설정하고, 여기서 COPP 장치 GUID는 다음과 같이 정의된다:

Figure 112005013051155-pat00010

3. 비디오 렌더링 컴포넌트는 다음에 요청되고 있는 COPP 동작의 유형에 따라서 함수 파라미터 값을 다양하게 하여 COPP 장치의 RenderMocomp를 호출한다.

4. 비디오 렌더링 컴포넌트가 더이상 COPP 동작을 실행할 필요가 없을 때, DestroyMocomp를 호출한다.

5. 드라이버는 COPP 장치에 의해 이용되는 리소스를 해제한다.

COPPOpenVideoSession

이 메소드는 DD _ MOTIONCOMPCALLBACKS 구조의 CreateMoComp 메소드에 직접 매핑되고, 여기서 GUID는 COPP 장치 GUID이고, pUncompData는 어떤 데이터도 포함하지 않는 구조 (모두 0)를 가리키며, pData는 NULL을 가리킨다.

드라이버가 압축 비디오의 가속 디코딩을 지원하는 경우, 비디오 렌더링 컴포넌트는 드라이버를 호출하여 두 개의 DX-VA 장치를 형성하게 된다는 것이 이해될 것이다 - 하나는 DirectX VA 비디오 디코딩 사양으로 정의되는 바와 같은 실제 비디오 디코딩 작업을 실행하는 것이고, 다른 하나는 컨텐츠 출력 보호 프로토콜에 이어서 출력 커넥터에 보호를 적용하기 위해 이용되는 것이다.

예: COPPOpenVideoSession에 CreateMoComp를 매핑

바로 아래 제공한 샘플 코드는 드라이버가 CreateMoComp DDI 호출을 COPPOpenVideoSession의 호출에 매핑하는 메소드를 나타낸다. 샘플 코드는 CreateMoComp 함수가 COPP에 이용되는 메소드만을 나타낸다. 드라이버가 MPEG-2 비디오 스트림을 디코딩하는 것과 같은 다른 DX-VA 함수을 지원하는 경우, 아래 샘플 코드는 부가의 DX-VA GUIDs의 처리를 포함하게 확장될 수 있다.

Figure 112005013051155-pat00011

예: GetMoCompGuids의 구현

CreateMoComp DDI 함수에 부가하여, 드라이버는 또한 DD_MOTIONCOMPCALLBACKS 구조의 GetMoCompGuids 메소드를 실현해야 한다. 다음의 샘플 코드는 당신의 드라이버에서 이 함수를 구현하는 하나의 가능한 메소드를 나타낸다.

Figure 112005013051155-pat00012

COPPGetCertificateLength

이 메소드는 D_ MOTIONCOMPCALLBACKS 구조의 RenderMoComp 메소드에 직접 매핑되고, 여기서:

·dwNumBuffers는 0이다.

·lpBufferInfo는 NULL이다.

·dwFunctionDXVA_COPPGetCertificateLengthFnCode로 정의된다.

·lpInputData는 NULL이다.

·lpOutputData는 단일의 DWORD를 가리킨다.

COPP에 이용되는 DX-VA에 대해서, RenderMoCompBeginMoCompFrame 또는 EndMoCompFrame을 호출하지 않고 호출된다.

예: RenderMoComp를 COPPGetCertificateLength에 매핑

아래 샘플 코드는 드라이버가 RenderMoComp DDI 호출을 COPPGetCertificateLength의 호출에 매핑하는 메소드를 나타낸다. 샘플 코드는 RenderMoComp 함수가 COPP 제어에 이용되는 메소드를 나타낼 뿐이다. 드라이버가 MPEG-2 비디오 스트림을 디코딩하는 것과 같은 다른 DX-VA 함수를 지원하는 경우, 샘플 코드는 부가의 DX-VA GUIDs의 처리를 포함하도록 확장될 수 있다.

Figure 112005013051155-pat00013

COPPKeyExchange

이 메소드는 D_ MOTIONCOMPCALLBACKS 구조의 RenderMoComp 메소드에 직접 매핑되고, 여기서:

·dwNumBuffers는 0이다.

·lpBufferInfo는 NULL이다.

·dwFunctionDXVA_COPPKeyExchangeFnCode로 정의된다.

·lpInputData는 NULL이다.

·lpOutputData는 DXVA_COPPKeyExchangeOutput 데이터 구조를 가리킨다.

COPP에 이용되는 DX-VA에 대해서, RenderMoCompBeginMoCompFrame 또는 EndMoCompFrame를 호출하지 않고 호출되는 것에 유의해라.

예: RenderMoComp를 COPPKeyExchange에 매핑

아래 샘플 코드는 드라이버가 RenderMoComp DDI 호출을 COPPKeyExchange의 호출에 매핑하는 메소드를 나타낸다. 샘플 코드는 RenderMoComp 함수가 COPP 제어에 이용되는 메소드를 나타낼 뿐이다. 드라이버가 MPEG-2 비디오 스트림을 디코딩하는 것과 같은 다른 DX-VA 함수를 지원하는 경우, 샘플 코드는 부가의 DX-VA GUIDs의 처리를 포함하도록 확장될 수 있다.

Figure 112005013051155-pat00014

COPPSequenceStart

이 메소드는 D_ MOTIONCOMPCALLBACKS 구조의 RenderMoComp 메소드에 직접 매핑되고, 여기서:

·dwNumBuffers는 0이다.

·lpBufferInfo는 NULL이다.

·dwFunctionDXVA_COPPSequenceStartFnCode로 정의된다.

·lpInputData는 DXVA_COPPSignature 데이터 구조를 가리킨다.

·lpOutputData는 NULL이다.

COPP에 이용되는 DX-VA에 대해서, RenderMoCompBeginMoCompFrame 또는 EndMoCompFrame를 호출하지 않고 호출되는 것에 유의해라.

예: RenderMoComp를 COPPSequenceStart에 매핑

아래 샘플 코드는 드라이버가 RenderMoComp DDI 호출을 COPPSequenceStart의 호출에 매핑하는 메소드를 나타낸다. 샘플 코드는 RenderMoComp 함수가 COPP 제어에 이용되는 메소드를 나타낼 뿐이다. 드라이버가 MPEG-2 비디오 스트림을 디코딩하는 것과 같은 다른 DX-VA 함수를 지원하는 경우, 샘플 코드는 부가의 DX-VA GUIDs의 처리를 포함하도록 확장될 수 있다.

Figure 112005013051155-pat00015

COPPCommand

이 메소드는 D_ MOTIONCOMPCALLBACKS 구조의 RenderMoComp 메소드에 직접 매핑되고, 여기서:

· dwNumBuffers는 0이다.

·lpBufferInfo는 NULL이다.

·dwFunctionDXVA_COPPCommandFnCode로 정의된다.

·lpInputData는 DXVA_COPPCommand 데이터 구조를 가리킨다.

·lpOutputData는 NULL이다.

COPP에 이용되는 DX-VA에 대해서, RenderMoCompBeginMoCompFrame 또는 EndMoCompFrame를 호출하지 않고 호출되는 것에 유의해라.

예: RenderMoComp를 COPPCommand에 매핑

아래 샘플 코드는 드라이버가 RenderMoComp DDI 호출을 COPPCommand의 호출에 매핑하는 메소드를 나타낸다. 샘플 코드는 RenderMoComp 함수가 COPP 제어에 이용되는 메소드를 나타낼 뿐이다. 드라이버가 MPEG-2 비디오 스트림을 디코딩하는 것과 같은 다른 DX-VA 함수를 지원하는 경우, 샘플 코드는 부가의 DX-VA GUIDs의 처리를 포함하도록 확장될 수 있다.

Figure 112005013051155-pat00016

COPPQueryStatus

이 메소드는 D_ MOTIONCOMPCALLBACKS 구조의 RenderMoComp 메소드에 직접 매핑되고, 여기서:

·dwNumBuffers는 0이다.

·lpBufferInfo는 NULL이다.

·dwFunction은 DXVA_COPPQueryStatusFnCode로 정의된다.

·lpInputData는 DXVA_COPPStatusInput 데이터 구조를 가리킨다.

·lpOutputData는 DXVA_COPPStatusOutput 데이터 구조를 가리킨다.

COPP에 이용되는 DX-VA에 대해서, RenderMoCompBeginMoCompFrame 또는 EndMoCompFrame를 호출하지 않고 호출되는 것에 유의해라.

예: RenderMoComp를 COPPQueryStatus

아래 샘플 코드는 드라이버가 RenderMoComp DDI 호출을 COPPQueryStatus의 호출에 매핑하는 메소드를 나타낸다. 샘플 코드는 RenderMoComp 함수가 COPP 제어에 이용되는 메소드를 나타낼 뿐이다. 드라이버가 MPEG-2 비디오 스트림을 디코딩하는 것과 같은 다른 DX-VA 함수를 지원하는 경우, 샘플 코드는 부가의 DX-VA GUIDs의 처리를 포함하도록 확장될 수 있다.

Figure 112005013051155-pat00017

COPPCloseVideoSession

이 메소드는 DD _ MOTIONCOMPCALLBACKS 구조의 DestroyMoComp 메소드에 직접 매핑된다.

예: DestroyMoComp를 COPPCloseVideoSession

아래 샘플 코드는 드라이버가 DestroyMoComp DDI 호출을 COPPCloseVideoSession의 호출에 매핑하는 메소드를 나타낸다. 샘플 코드는 DestroyMoComp 함수가 COPP 제어에 이용되는 메소드를 나타낼 뿐이다. 드라이버가 MPEG-2 비디오 스트림을 디코딩하는 것과 같은 다른 DX-VA 함수를 지원하는 경우, 샘플 코드는 부가의 DX-VA GUIDs의 처리를 포함하도록 확장될 수 있다.

Figure 112005013051155-pat00018

상술한 여러 실시예들은 보안 통신 채널, 및 어떤 실시예에서는, 보호된 컨텐츠 재생 어플리케이션을 실행하는 컴퓨터와 같은 장치와 모니터, 플랫 패널 LCD, 텔레비젼 등의 관련 디스플레이 장치의 그래픽 드라이버와 같은 관련 드라이버 간에 보안 데이터 채널을 설정함으로써, 미디어 컨텐츠 보호를 가능하게 한다. 여러 실시예들은 컴퓨터와 그 디스플레이 장치를 보호된 비디오 경로의 게이트웨이로서 물리적으로 링크하는 출력 어댑터를 이용하여 컨텐츠 제공자와 어플리케이션 벤더가 컨텐츠 보호를 미디어 출력에 적용해야 한다고 신호를 보내야 할 필요성을 해결해 준다.

여러 실시예는 유저 모드 재생 어플리케이션으로부터 그래픽 드라이버 같은 드라이버에 커맨드를 보안하여 전달하고, 다시 드라이버로부터 유저 모드 어플리케이션에 상태를 보안하여 보내주기 위한 수단을 제공한다. 상술한 실시예들은 보안 통신 채널을 설정하여 유저 모드 어플리케이션으로 하여금 관련 드라이버에게 컴퓨터와 디스플레이 장치 간의 물리적 커넥터에 대해 컨텐츠 출력 보호를 가능하게 하도록 명령하는 것을 가능하게 한다.

본 발명은 구조적 특성 및/또는 방법적 단계에 대해 특정한 언어로 기재되었지만, 청구범위에서 정의되는 발명은 반드시 이 기재된 특정한 특성이나 단계에만 제한되는 것이 아니라는 것이 이해될 것이다. 그보다는 이 특정한 특성 및 단계들은 특허청구범위를 구현하기 위한 바람직한 형태로서 개시되고 있다.

Claims (46)

  1. 가전 기기(consumer device)의 미디어 재생 어플리케이션에 의해, 상기 미디어 재생 어플리케이션으로부터의 하류측 컴포넌트에 관련된 공개 키(public key)를 이용하여, 상기 미디어 재생 어플리케이션과 상기 하류측 컴포넌트 간에 보안 통신 채널을 설정하는 단계 - 상기 이용은 상기 미디어 재생 어플리케이션과 상기 하류측 컴포넌트 간에 트러스트(trust)를 설정함 - ;
    상기 가전 기기에 의해, 다수의 서로 다른 유형의 컨텐츠 보호 기술 중 하나 이상의 컨텐츠 보호 기술이 물리적 커넥터를 통해 출력 장치에 제공되는 미디어 컨텐츠를 보호할 수 있도록, 상기 미디어 재생 어플리케이션이 상기 보안 통신 채널을 이용하여 커맨드(command)로 상기 하류측 컴포넌트에게 명령할 수 있게 하는 단계;
    상기 가전 기기의 상기 미디어 재생 어플리케이션에 의해, 상기 보안 통신 채널을 이용하여 상기 하류측 컴포넌트로부터 상태 정보를 요청하는 단계;
    상기 가전 기기의 상기 하류측 컴포넌트에 의해 그리고 상태 요청에 기초하여, 상기 하류측 컴포넌트가 상기 커맨드 및 상기 상태 요청의 무결성을 증명한 후에 상기 하나 이상의 컨텐츠 보호 기술이 특정한 물리적 커넥터에 대한 하드웨어에 의해 지원되는지의 여부를 확인하는 단계; 및
    상기 가전 기기의 상기 미디어 재생 어플리케이션에 의해 그리고 상기 보안 통신 채널을 통해 상기 하류측 컴포넌트로부터 수신된 상기 확인 및 상태 정보에 기초하여, 상기 하나 이상의 컨텐츠 보호 기술이 상기 특정한 물리적 커넥터에 대한 하드웨어에 의해 완전히 지원되지(wholly supported) 않는 경우 상기 미디어 컨텐츠의 제한된 버전을 재생하는 것을 선택하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 보안 통신 채널을 이용하여, 상기 서로 다른 유형의 컨텐츠 보호 기술 중 하나 이상의 컨텐츠 보호 기술을 적용하는 방법에 관하여 상기 미디어 재생 어플리케이션이 상기 하류측 컴포넌트에게 명령할 수 있게 하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 하류측 컴포넌트는 소프트웨어 컴포넌트를 포함하는 방법.
  4. 제1항에 있어서, 상기 보안 통신 채널을 이용하여, 상기 하류측 컴포넌트로부터 상태 정보를 수신하는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 상태 정보는 상기 미디어 재생 어플리케이션에 의해 이전에 송신된 명령어들에 관련되는 방법.
  6. 제1항에 있어서, 상기 상태 정보는 상기 미디어 재생 어플리케이션에 의해 이전에 송신된 명령어들에 관련되지 않는 방법.
  7. 하나 이상의 프로세서를 갖는 가전 기기;
    상기 가전 기기의 미디어 재생 어플리케이션과 상기 미디어 재생 어플리케이션으로부터의 하류측 컴포넌트 간에 보안 통신 채널을 설정하기 위해, 상기 미디어 재생 어플리케이션에 의해, 상기 하류측 컴포넌트에 관련된 공개 키를 이용하는 수단 - 상기 이용하는 수단은 상기 미디어 재생 어플리케이션과 상기 하류측 컴포넌트 간에 트러스트(trust)를 설정함 - ;
    상기 가전 기기에 의해, 다수의 서로 다른 유형의 컨텐츠 보호 기술 중 하나 이상의 컨텐츠 보호 기술이 물리적 커넥터를 통해 출력 장치에 제공되는 미디어 컨텐츠를 보호할 수 있도록, 상기 미디어 재생 어플리케이션이 상기 보안 통신 채널을 이용하여 커맨드로 상기 하류측 컴포넌트에게 명령할 수 있게 하는 수단;
    상기 가전 기기의 상기 미디어 재생 어플리케이션에 의해, 상기 보안 통신 채널을 이용하여 상기 하류측 컴포넌트로부터 상태 정보를 요청하는 수단;
    상기 가전 기기의 상기 하류측 컴포넌트에 의해 그리고 상태 요청에 기초하여, 상기 하류측 컴포넌트가 상기 커맨드 및 상기 상태 요청의 무결성을 증명한 후에 상기 하나 이상의 컨텐츠 보호 기술이 특정한 물리적 커넥터에 대한 하드웨어에 의해 지원되는지의 여부를 확인하는 수단; 및
    상기 가전 기기의 상기 미디어 재생 어플리케이션에 의해 그리고 상기 보안 통신 채널을 통해 상기 하류측 컴포넌트로부터 수신된 상기 확인 및 상태 정보에 기초하여, 상기 하나 이상의 컨텐츠 보호 기술이 상기 특정한 물리적 커넥터에 대한 하드웨어에 의해 완전히 지원되지 않는 경우 상기 미디어 컨텐츠의 제한된 버전을 재생하는 것을 선택하는 수단
    을 포함하는 시스템.
  8. 제7항에 있어서, 상기 하류측 컴포넌트는 소프트웨어 컴포넌트를 포함하는 시스템.
  9. 제7항에 있어서, 상기 하류측 컴포넌트는 하드웨어 컴포넌트를 포함하는 시스템.
  10. 제7항에 있어서, 상기 하류측 컴포넌트는 그래픽 하드웨어 컴포넌트를 포함하는 시스템.
  11. 제1항에 있어서, 상기 출력 장치는 비디오 디스플레이 또는 오디오 스피커인 방법.
  12. 제7항에 있어서, 상기 확인에 기초하여, 상기 하나 이상의 컨텐츠 보호 기술이 상기 특정한 물리적 커넥터에 대한 하드웨어에 의해 완전히 지원되지 않는 경우, 상기 미디어 컨텐츠를 재생하지 않는 것을 선택하는 수단을 더 포함하는 시스템.
  13. 제1항에 있어서, 상기 확인에 기초하여, 상기 하나 이상의 컨텐츠 보호 기술이 상기 특정한 물리적 커넥터에 대한 하드웨어에 의해 완전히 지원되지 않는 경우, 상기 미디어 컨텐츠를 재생하지 않는 것을 선택하는 단계를 더 포함하는 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
KR1020050020623A 2004-03-11 2005-03-11 미디어 컨텐츠를 보호하기 위한 방법 및 시스템 KR101099311B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US10/798,688 2004-03-11
US10/798,688 US7703141B2 (en) 2004-03-11 2004-03-11 Methods and systems for protecting media content

Publications (2)

Publication Number Publication Date
KR20060044315A KR20060044315A (ko) 2006-05-16
KR101099311B1 true KR101099311B1 (ko) 2011-12-26

Family

ID=34887641

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050020623A KR101099311B1 (ko) 2004-03-11 2005-03-11 미디어 컨텐츠를 보호하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (2) US7703141B2 (ko)
EP (1) EP1582962B1 (ko)
JP (1) JP4809616B2 (ko)
KR (1) KR101099311B1 (ko)
CN (2) CN1677920B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9848218B2 (en) 2013-01-28 2017-12-19 Samsung Electronics Co., Ltd. Source device, content providing method using the source device, sink device and controlling method of the sink device

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370212B2 (en) 2003-02-25 2008-05-06 Microsoft Corporation Issuing a publisher use license off-line in a digital rights management (DRM) system
US8074287B2 (en) * 2004-04-30 2011-12-06 Microsoft Corporation Renewable and individualizable elements of a protected environment
KR101049129B1 (ko) * 2004-07-30 2011-07-15 엘지전자 주식회사 케이블 방송 수신기 및 그의 상태 정보 처리 방법
KR101092438B1 (ko) * 2004-08-05 2011-12-13 엘지전자 주식회사 케이블 방송 수신기 및 그의 진단 방법
US8347078B2 (en) 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US8725646B2 (en) 2005-04-15 2014-05-13 Microsoft Corporation Output protection levels
US9436804B2 (en) 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
US20060242406A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Protected computing environment
US9363481B2 (en) * 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US8438645B2 (en) 2005-04-27 2013-05-07 Microsoft Corporation Secure clock with grace periods
US20060265758A1 (en) 2005-05-20 2006-11-23 Microsoft Corporation Extensible media rights
US8139768B2 (en) * 2006-01-19 2012-03-20 Microsoft Corporation Encrypting content in a tuner device and analyzing content protection policy
US8302200B2 (en) * 2007-04-27 2012-10-30 Tl Digital Systems L.L.C. Protected intra-system interconnect for digital rights management in electrical computers and digital data processing systems
US7934083B2 (en) * 2007-09-14 2011-04-26 Kevin Norman Taylor Configurable access kernel
US8059820B2 (en) * 2007-10-11 2011-11-15 Microsoft Corporation Multi-factor content protection
US20100262961A1 (en) * 2007-10-30 2010-10-14 Lg Electronics Inc. Method and system for downloading software
JP5266330B2 (ja) * 2007-11-01 2013-08-21 エルジー エレクトロニクス インコーポレイティド データ処理方法及びiptv受信デバイス
US8046586B1 (en) * 2007-12-14 2011-10-25 Nvidia Corporation Method and system for determining the compliance of encrypted and non-encrypted display outputs
US8291501B2 (en) * 2008-02-08 2012-10-16 Cheng Holdings, Llc Validation of protected intra-system interconnects for digital rights management in electrical computers and digital data processing systems
BRPI0919215A2 (pt) * 2008-09-16 2015-12-08 Ericsson Telefon Ab L M método e servidor de gerenciamento de chave, dispositivos de origem e de destino para uso em uma rede de comunicação, programa de computador, e, produto de programa de computador
JP2011188111A (ja) * 2010-03-05 2011-09-22 Sony Corp 通信端末装置、ネットワーク機器、通信システム、および通信方法
US9767840B2 (en) * 2011-08-18 2017-09-19 Apple Inc. Securing protected content during video playback
CN102522100A (zh) * 2011-11-29 2012-06-27 邹中奇 一种视频学习系统及处理方法
US8874926B1 (en) * 2012-03-08 2014-10-28 Sandia Corporation Increasing security in inter-chip communication
EP2832102B1 (en) * 2012-03-31 2018-10-31 Intel Corporation Methods and systems for cryptographic access control of video
US9740886B2 (en) 2013-03-15 2017-08-22 Sony Interactive Entertainment Inc. Enhanced security for hardware decoder accelerator
US10142108B2 (en) * 2013-06-17 2018-11-27 Qube Cinema, Inc. Copy protection scheme for digital audio and video content authenticated HDCP receivers
CN104092690B (zh) * 2014-07-15 2017-03-01 金亚科技股份有限公司 流媒体的回看媒体流带宽控制系统及方法
US9430619B2 (en) * 2014-09-10 2016-08-30 Microsoft Technology Licensing, Llc Media decoding control with hardware-protected digital rights management
CA2962573A1 (en) * 2014-09-25 2016-03-31 Good Technology Holdings Limited Retrieving media content
US10103872B2 (en) 2014-09-26 2018-10-16 Intel Corporation Securing audio communications
US9742780B2 (en) * 2015-02-06 2017-08-22 Microsoft Technology Licensing, Llc Audio based discovery and connection to a service controller
CN108124731A (zh) * 2017-12-22 2018-06-08 兰溪市沉默生物科技有限公司 一种盆栽环保基质的制备方法
KR101996333B1 (ko) * 2018-04-04 2019-07-04 이니텍(주) 사물 인터넷 장치와의 통신을 위한 키 교환 및 인증 방법과 그 방법을 이용한 메시지 송수신 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1258092B1 (en) 2000-02-17 2011-11-23 Microsoft Corporation System and method for protecting data streams in hardware components

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812930A (en) * 1996-07-10 1998-09-22 International Business Machines Corp. Information handling systems with broadband and narrowband communication channels between repository and display systems
US5825879A (en) * 1996-09-30 1998-10-20 Intel Corporation System and method for copy-protecting distributed video content
JP2001075870A (ja) * 1999-09-02 2001-03-23 Sony Corp 情報信号伝送方法、情報信号伝送システム、情報信号送信装置および情報信号受信装置
EP1237324A4 (en) * 1999-12-02 2008-12-10 Sanyo Electric Co Memory card and data distribution system using it
US7353209B1 (en) 2000-01-14 2008-04-01 Microsoft Corporation Releasing decrypted digital content to an authenticated path
US20020057795A1 (en) * 2000-11-10 2002-05-16 Spurgat Jeffrey Jonathan Content protection through the audio and video decrypting and decoding device
US7499545B1 (en) * 2001-02-05 2009-03-03 Ati Technologies, Inc. Method and system for dual link communications encryption
US7131004B1 (en) * 2001-08-31 2006-10-31 Silicon Image, Inc. Method and apparatus for encrypting data transmitted over a serial link
US7203310B2 (en) * 2001-12-04 2007-04-10 Microsoft Corporation Methods and systems for cryptographically protecting secure content
US7296154B2 (en) * 2002-06-24 2007-11-13 Microsoft Corporation Secure media path methods, systems, and architectures
US7233666B2 (en) * 2003-05-29 2007-06-19 Intel Corporation Method and apparatus for increasing the entropy of a pseudorandom number
US7584353B2 (en) * 2003-09-12 2009-09-01 Trimble Navigation Limited Preventing unauthorized distribution of media content within a global network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1258092B1 (en) 2000-02-17 2011-11-23 Microsoft Corporation System and method for protecting data streams in hardware components

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9848218B2 (en) 2013-01-28 2017-12-19 Samsung Electronics Co., Ltd. Source device, content providing method using the source device, sink device and controlling method of the sink device
US20180027267A1 (en) 2013-01-28 2018-01-25 Samsung Electronics Co., Ltd. Source device, content providing method using the source device, sink device and controlling method of the sink device
US10298972B2 (en) 2013-01-28 2019-05-21 Samsung Electronics Co., Ltd. Source device, content providing method using source device, sink device and controlling method of the sink device

Also Published As

Publication number Publication date
US20050204163A1 (en) 2005-09-15
EP1582962A3 (en) 2006-05-17
CN1677920B (zh) 2011-01-19
KR20060044315A (ko) 2006-05-16
US20100161985A1 (en) 2010-06-24
CN1677920A (zh) 2005-10-05
EP1582962A2 (en) 2005-10-05
EP1582962B1 (en) 2019-08-07
CN101859358B (zh) 2013-08-21
CN101859358A (zh) 2010-10-13
JP4809616B2 (ja) 2011-11-09
US7703141B2 (en) 2010-04-20
US8397069B2 (en) 2013-03-12
JP2005304000A (ja) 2005-10-27

Similar Documents

Publication Publication Date Title
US10349103B2 (en) Systems and methods for systems and methods for securely streaming media content
US10362018B2 (en) Downloadable security and protection methods and apparatus
EP3053335B1 (en) Transmitting display management metadata over hdmi
US9003558B1 (en) Allowing degraded play of protected content using scalable codecs when key/license is not obtained
US9948994B2 (en) Transmission of digital audio signals using an internet protocol
US9418209B2 (en) Systems and methods for manipulating sensitive information in a secure mobile environment
JP5390000B2 (ja) セキュア・メディア・パスのシステム
US8800059B2 (en) System and method for processing and protecting content
US8579202B2 (en) Smart card-based browsing system and smart card-based browsing method and smart card for the same
US9462308B2 (en) Audiovisual distribution network
EP2357555B1 (en) Virtual user interface
US9635373B2 (en) System and method for low bandwidth display information transport
US20180262546A1 (en) Media Acceleration for Virtual Computing Services
EP2274907B1 (en) Method and system for deciphering media content stream
US9424215B2 (en) USB based virtualized media system
US8813166B2 (en) System and method for transferring a partially viewed media content file
US7565530B2 (en) Source device and method for controlling output to sink device according to each content
US7783701B2 (en) System and method for provisioning universal stateless digital and computing services
JP5797267B2 (ja) データストリームの部分暗号化のためのメカニズム
US7873839B2 (en) Method of and apparatus for reproducing information, and security module
JP5306206B2 (ja) 交換可能なパーソナリティアダプタを備えた自動再構成可能なマルチメディアシステム
US8253860B2 (en) System, method and devices for HDMI transmission using a commonly supported media format
CN101517975B (zh) 通过将互联网协议电视和家庭网络互相连接来发送/接收内容的方法和设备
RU2461054C2 (ru) Ацдс-совместимое устройство, способ и программа установки соединения ацдс
US7502470B2 (en) Method and apparatus for content protection within an open architecture system

Legal Events

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

Payment date: 20141117

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181115

Year of fee payment: 8