JP4809616B2 - 媒体コンテンツを保護する方法およびシステム - Google Patents

媒体コンテンツを保護する方法およびシステム Download PDF

Info

Publication number
JP4809616B2
JP4809616B2 JP2005067120A JP2005067120A JP4809616B2 JP 4809616 B2 JP4809616 B2 JP 4809616B2 JP 2005067120 A JP2005067120 A JP 2005067120A JP 2005067120 A JP2005067120 A JP 2005067120A JP 4809616 B2 JP4809616 B2 JP 4809616B2
Authority
JP
Japan
Prior art keywords
playback application
component
media playback
content protection
status
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2005067120A
Other languages
English (en)
Other versions
JP2005304000A (ja
Inventor
エム.アルコフ ジェームズ
ジェイ.エストロープ ステファン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005304000A publication Critical patent/JP2005304000A/ja
Application granted granted Critical
Publication of JP4809616B2 publication Critical patent/JP4809616B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/02Constructional features of telephone sets
    • H04M1/04Supports for telephone transmitters or receivers
    • H04M1/05Supports for telephone transmitters or receivers specially adapted for use on head, throat or breast
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 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]
    • 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/4104Peripherals receiving signals from specially adapted client devices
    • H04N21/4122Peripherals 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 or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • 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 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
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Acoustics & Sound (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Otolaryngology (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Storage Device Security (AREA)
  • Circuits Of Receivers In General (AREA)

Description

本発明は、媒体コンテンツを保護する方法およびシステムに関する。
データストリーム(data stream)の形態(form)を有するオーディオデータおよび/またはビデオデータなどを提供するコンテンツプロバイダや、そのようなデータをレンダリング(render)するためのアプリケーションを提供するアプリケーション供給者などの業者は、そのようなデータが無許可の者によって特定され、使用され、またはその他の方法でレンダリングされないように保護したいと望む場合が多い。そのような保護が望まれるのは、一般には、データが何らかの保護された形態で何らかのタイプの可読媒体上に存在する点から、そのようなデータを取り扱い、またはその他の方法で処理する一連のコンポーネントに沿って、当該データをディスプレイやスピーカなどの装置に供給する物理的な出力コネクタとそれらの装置自体の両方に至り、それらを含む範囲である。
例えば、図1を検討してみる。図1には、保護されたコンテンツ(protected content)12、例えば圧縮または暗号化されたコンテンツを受け入れ、処理することができる例示のシステム10がハイレベルで示されている。この例では、保護されたコンテンツ12は、パーソナルコンピュータなどの民生用デバイス14に供給される。この民生用デバイス内では、一般にはアプリケーション16が例えばデクリプションコンポーネント(decryption component)18を使用してコンテンツを解読し、デコーダコンポーネント(decoder component)20を使用してコンテンツを復号(decode)または伸張(decompress)することによって、保護コンテンツ(protected content)を処理する。コンテンツは、復号された後で、一般には何らかの処理を受けることができ、その後、処理されたコンテンツはレンダラーコンポーネント(renderer component)22に送られ、レンダラーコンポーネント22は、当該データがディスプレイ24(ビデオデータの場合)および/またはスピーカ26(オーディオデータの場合)などの装置に確実に送られるようにする。
このシステムでは、データは、ディスプレイやスピーカなどの適切なハードウェア装置に送られるように、PCI/AGPバスなどの何らかのタイプのバスを経由しなければならず、その後、物理コネクタを通過し、S―VideoケーブルやDVIケーブルなどのケーブルを通らなければならない。
例えば、コンテンツが民生用デバイス14内で解読(decrypt)され、ディスプレイやスピーカなどの出力デバイスに供給されるときコンテンツを保護するために、長年にわたり様々なタイプのコンテンツ保護方式および技術が開発され、使用されてきた。このような保護方式および技術は、多様なオーディオデータおよびビデオデータのタイプと同じ程、様々である。さらに、おそらく最も重要なのは、現在、アプリケーションがこのような多様なタイプのコンテンツ保護方式および技術の集りの「挙動(behavior)」を安全に制御する方法がないことである。
具体的には、最終的(ultimately)にハードウェアデバイスでレンダリング(render)されることになるデータを処理するコンポーネントの連鎖(chain of components)を考えてみる。当業者ならわかるように、データとそれに付随するアプリケーションからの通信情報とが連鎖(chain)内にある間に、当該データと通信情報とに接触またはその他の方法でアクセスするコンポーネントの様々な層がある。例えば、アプリケーションは一般には、データをレンダリングするハードウェアと直接には通信しない。通常は、アプリケーションが通信するユーザモードのソフトウェアスタックがあり、次に、実際にハードウェアと通信する、ユーザモードソフトウェアスタックの下のカーネルモードのドライバスタックがある。事実上、連鎖(chain)内にあるこれらコンポーネントのうちのいずれも、この連鎖に沿って通過するデータおよび/または通信情報に対して実際に改竄を加えることができる。
したがって、本発明の目的は、あるアプリケーションからその下流にあるコンポーネントに向かって流れる通信およびデータの両方に対して、セキュアチャネルを提供することにある。
概要
保護コンテンツ(protected content)プレイバックアプリケーション(playback application)を実行するコンピュータなどの装置と、モニタ、フラットパネルLCD、テレビジョンなどの付随するディスプレイのグラフィックドライバなどの関連付けられたドライバとの間の、セキュア通信チャネル(secure data channel)、および、実施形態によっては、セキュアデータチャネルを確立することによって、媒体コンテンツの保護を可能にするプロトコルを使用する方法およびシステムに関する。また、様々な実施形態は、物理コネクタを介してディスプレイなどの装置に出力されるデータにコンテンツ保護を適用すべきであることを通知するというコンテンツ提供者およびアプリケーション供給者にとっての必要に対処することを対象としている。
以下で説明する様々な実施形態は、ユーザモードプレイバックアプリケーション(user mode playback application)からグラフィクスドライバなどのドライバにコマンドを安全に渡し、ドライバからユーザモードアプリケーションにステータス情報(status information)を安全に返す手段を提供する。以下で説明する実施形態では、セキュア通信チャネルが確立された後は、ユーザモードアプリケーションは、関連するドライバに指示して、コンピュータとディスプレイとの間の物理コネクタに対するコンテンツ出力保護をイネーブルにさせることができる。セキュアチャネルセッション(secure channel session)の排他性によって、保護コンテンツがコンピュータからディスプレイに伝送される間に攻撃者が保護コンテンツを記録するのを防ぐことができる。
以下の説明において、これら様々な実施形態の説明は、別々の互いに関連する二筋に沿って進められる。具体的には、「アプリケーションからダウンストリームコンポーネントに至るセキュアチャネルの確立のためのプロトコル」と題する項では、本発明のプロトコルについて説明する。このプロトコルは、任意の利用可能なシステムと共に使用されることを意図したものであり、必ずしも特定の1つのシステムまたはオペレーティングシステムに拘束されるものではない。「Windows(登録商標)オペレーティングシステム上でのプロトコルの実施例」と題する項では、当該プロトコルについて、Windows(登録商標)オペレーティングシステムに係わる実装という文脈で説明する。この説明は、特に、特定の1つの実装と、当該特定の実装に付随する設計上の配慮の一部を例示することを意図したものである。
アプリケーションからダウンストリームコンポーネントに至るセキュアチャネルの確立
のためのプロトコル
以下の説明では、アプリケーションが、媒体コンテンツ出力を保護するために、複数の可能なコンテンツ保護技術のうちのいずれの技法を適用すべきか、さらに、それらのコンテンツ保護技術のうちの少なくとも一部をどのように適用すべきかを通知することができるように、アプリケーションから様々なダウンストリームコンポーネントまでのセキュアシグナリング機構(secure signaling mechanism)を提供するために使用可能な、少なくともいくつかの実施形態について説明する。さらに、様々なタイプのコンテンツ保護(content protection)をイネーブルにし、設定(configure)するという概念(notion)に基づき、実施形態のうちの少なくとも一部は、媒体出力(media output)を保護するために使用されるコンテンツ保護技術(content protection technology)の「タイプ(type)」について問わない。これは、本明細書に記載のシステムおよびプロトコルが、多くの異なるタイプの現在および将来のコンテンツ保護技術に柔軟に適応可能であり、それらの技法と共に使用されるという点で有利である。
本発明のプロトコルが使用可能な典型的なシステムの概要の一例として、民生用デバイス(consumer device)200の形態のコンピューティングシステムを示す図2を検討してみる。民生用デバイス200は、保護媒体コンテンツをレンダリングするために使用可能な任意の適合するタイプの民生用デバイスとすることができる。そのような装置の一例は、パーソナルコンピュータである。他のタイプの装置としては、パーソナルビデオレコーダ(PVR)装置、デジタルビデオレコーダ(DVR)装置などがある。
民生用デバイス200は、保護媒体コンテンツ供給源(protected media content source)から保護媒体コンテンツを入手することができるプレイバックアプリケーション(playback application)202と、保護媒体コンテンツの処理を容易にするシステムソフトウェア204と、処理された媒体コンテンツを、媒体コンテンツがユーザのためにレンダリング(render)される関連出力デバイス(associated output device)212に何らかのタイプの物理コネクタ(physical connector)210を介して供給するハードウェア208(ビデオカードなど)にインターフェースするために使用される、ドライバソフトウェア(driver software)206(または関連付けられたハードウェアのソフトウェア表現)とを備える。出力デバイスの例としては、前述のように、ディスプレイデバイスあるいはスピーカがある。
プレイバックアプリケーションと物理コネクタとの間の連鎖(chain)を構成することができる多種多様なものがあることが当業者なら間違いなくので、本明細書の説明、少なくとも本項の説明では、プレイバックアプリケーション、システムソフト、ドライバソフトウェア、およびハードウェアの「タイプ」は特に関係がない。したがって、以下の説明は特定の1つのタイプのシステムに限定されることを意図したものではない。
ここで例示し、説明する実施形態では、物理コネクタ210と出力デバイス212との間で媒体コンテンツを保護するために使用することができるコンテンツ保護技術は様々ある。例えば、当業者ならわかるように、様々なコンテンツ保護のタイプとしては、アナログコンテンツ保護(Analog Content Protection:ACP)、コピー生成管理システム−アナログ(Copy Generation Management System−Analog:CGMS−A)、および高帯域デジタルコンテンツ保護(High−bandwidth Digital Content Protection:HDCP)などがある。本図では、これらの様々なタイプのコンテンツ保護技術(content protection technology)が214に示してある。
本明細書に記載の実施形態によると、アプリケーション202と、1つまたは複数のダウンストリームコンポーネント(downstream component)との間にセキュアリンク(secure link)またはセキュアチャネルが確立される。図の例では、2本の異なるセキュアチャネルが示されているが、いずれかのタイプの1本のチャネルを実現すればよい。具体的には、一実施形態では、アプリケーション202とドライバ206との間にセキュア通信チャネル216が確立される。他の実施形態では、アプリケーション202とハードウェア208との間にセキュアチャネル218が確立される。
ここで例示し、説明する実施形態では、チャネル216は主としてアプリケーションとドライバとの通信に使用することができる。そのような通信としては、アプリケーションとドライバとの間の「コマンド(command)」、「ステータスリクエスト(status request)」、およびそれに対応する「状況(status)」などを含めることができる。チャネル218は、この種の通信だけでなく、オーディオデータやビデオデータなどの実際の媒体データをハードウェアに供給するためにも使用することができる。
本明細書の文脈では、「コマンド(command)」とは命令(instruction)のことであり、他にも特徴があるなかで特に以下の特徴を備えることができる。まず、コマンドは、ハードウェア208の構成に変更を加え、またはその他の方法で影響を与えることができる。これに代えて、またはこれに加えて、コマンドは、媒体コンテンツを何らかの特定の方法で処理するようにハードウェアに指示することができる。
「ステータスリクエスト」とは、ハードウェアから2組の情報を実質的に取り出すことができる。第1に、ステータスリクエストは、アプリケーションからダウンストリームコンポーネントに送られたコマンドに関する情報を取り出すことができる。例えば、アプリケーションが何らかのタスク、例えば特定のタイプのコンテンツ保護技術の設定などを実行するコマンドを送った場合、そのタスクが実行されたか否かに関する情報を、対応するステータスリクエストによって取り出すことができる。第2に、ステータスリクエストは、コマンドが送られたか否かには必ずしも関連しない情報を取り出すことができる。例えば、ステータスリクエストは、特定の装置に固有のものである場合もある追加のハードウェア構成情報、例えば使用されている物理コネクタのタイプを取り出すことができる。このようなステータスリクエストは、特定の物理コネクタのためのハードウェアによってどのコンテンツ保護技術がサポートされているかを特定するためにも使用することができる。例えば、物理コネクタはDVIコネクタとすることができるが、グラフィックスハードウェアにHDCPサポートがない場合がある。したがって、アプリケーションは、ビデオデータのダウンサンプル版または低解像度版を再生するか、または、場合によってはビデオデータをまったく再生しないという高度な選択を行うことができる。
セキュアチャネルの確立
本明細書で例示し、説明する実施形態では、一方向信頼モデル(one-way trust model)および鍵トランスポートプロトコル(key transport protocol)を使用することにより、通信連鎖(communication chain)の2つの終端(endpoint)間の信頼(trust)を確立(establish)する。当業者ならわかるように、鍵トランスポートの使用にはいくつかの利点がある。第1に、鍵トランスポートでは、エントロピの生成は信頼を確立する側に任せられる。この場合はアプリケーション202に任せられる。第2に、鍵トランスポートでは、「パススルー(pass through)」と呼ばれるものの実行が可能になる。パススルーによって、グラフィックスハードウェアまでの連鎖全体を通してコンテンツデータの暗号化を可能にすることができる。当業者ならわかるように、これによって、グラフィックスハードウェアはコンテンツデータを解読し、コンテンツデータを対応するサーフェスに復号し、コンテンツデータを処理して表示部に送ることができる。
チャネル216を例にとると、例えば公開鍵基盤(Public Key Infrastructure:PKI)技法(technique)を使用することにより、アプリケーション202とドライバソフトウェア206との間に一方向認証チャネル(one-way authenticated channel)が確立される。具体的には、この例では、アプリケーション202とドライバソフトウェア206との間にデータ保全鍵(data integrity key)の形態のチャネル鍵(channel key)が設定される。チャネル鍵が設定された後は、コマンドとステータスメッセージを暗号化されていない状態で受け渡しすることができ、データ保全鍵を使用してメッセージ認証コード(message authentication code)すなわちMACを作成することができる。
例えば、図3と共に以下の例について述べる。ダウンストリームコンポーネントとの信頼(trust)を確立するために、アプリケーション202はまず、ドライバソフトウェア206を呼び出し、ドライバソフトウェアから、ハードウェア208(図2)に関連付けられた乱数rGHとデジタル証明書(digital certificate)CertGHとを受け取る。アプリケーション202がデジタル証明書CertGHを受け取ると、アプリケーションは証明書を処理してデジタル証明書上の署名が信用できる実体によって付与されたものであることを検証し、ドライバソフトウェア206(チャネル216使用の場合)またはグラフィクスハードウェア208(チャネル218使用の場合)の公開鍵(PGH)を取り出す。これで、公開鍵PGHはアプリケーションによってデータを暗号化するために使用することができ、当該データは、ドライバソフトウェアまたはグラフィクスハードウェアによって安全に保管されている対応する秘密鍵によってのみ解読されることができる。以上の処理によって、アプリケーションとドライバソフトウェアの間に信頼が確立される。
信頼(trust)が確立(establish)されると、アプリケーションは鍵トランスポート(key transport)を設定(set up)することができる。この例では、アプリケーション202は、ドライバソフトウェアによって提供された乱数rGHと、データ保全鍵kDI(セッション鍵(session key)とも呼ぶ)と、ランダム開始ステータスシーケンス番号(random starting status sequence number)(status_start)と、ランダム開始コマンドシーケンス番号(command_start)とを連結(concatenate)し、ドライバソフトウェアの公開鍵PGHを使用してこれらの値の連結(concatenation)を暗号化(encrypt)し、暗号化されたデータ(encrypted data)をドライバソフトウェア206に送る。以上の処理によって、アプリケーションとドライバソフトウェアとの間で使用されるセッション鍵が設定される。ランダム開始ステータスシーケンス番号(status_start)とランダム開始コマンドシーケンス番号(command_start)は、特定のメッセージが失われた場合に、当該メッセージがステータスリクエストまたは報告された状況(開始ステータスシーケンス番号の場合)であるか、コマンド(開始コマンドシーケンス番号の場合)であるかを確認するために使用され、所定のメッセージ受信側はそのことを特定することができる。具体的には、アプリケーションによってコマンドが送られるたびに、ランダム開始コマンドシーケンス番号が1ずつ増分される。同様に、ステータスメッセージが送られるたびに、送信側は、開始ステータスシーケンス番号を1ずつ増分する。受信側では、メッセージの受信先が、シーケンス番号が順番に現れているか否かを調べるだけで、メッセージが失われていないか否かを確認することができる。欠落したシーケンス番号がある場合、それに関連付けられたメッセージが失われており、適切な処置をとることができる。このようにして、ランダム開始シーケンス番号によってメッセージの保全性と順序を確保することができる。
一実施例では、上記の処理として以下の表に示す値と内容を使用することができる。
Figure 0004809616
処理のこの時点で、アプリケーションとドライバソフトウェアとの間にセキュアチャネルが確立される。次に、本発明のプロトコルの2つの部分であるコマンドプロトコル(command protocol)とステータスプロトコル(status protocol)とについて説明する。
コマンドプロトコル
本プロトコルのコマンド部分は、ハードウェア208(図2)などのシステムのハードウェアがアプリケーションによって指示されてオンになることを可能にし、場合によっては、HDCPやCGMS−Aなどの特定のコンテンツ保護技術を設定することを可能にする。ここで例示し、説明する実施形態では、コマンドメッセージは、データセクション(data section)とメッセージ認証コードセクション(message authentication code section)またはMACセクション(MAC section)の2つの部分を有するエンベロープ(envelope)に入れられる。
ここで例示し、説明する実施形態では、コマンドメッセージのデータセクションには、コマンドとそれに関連付けられたコマンドシーケンス番号が入れられる。メッセージ認証コードセクションまたはMACセクションには、コマンドとそれに関連付けられたコマンドシーケンス番号との、鍵付きハッシュ(keyed hash)とみなせるものが入れられる。鍵付きハッシュを生成するために使用される鍵は、上述のデータ保全鍵kDIである。
一例として、図4を説明する。図4には、アプリケーション202がドライバソフトウェア206に以下の形式のコマンドメッセージを送る様子が示されている。
Command,MACkDI(Command)
ここで、メッセージの「Command」部(portion)は、アプリケーションからの関連付けられたコマンドだけなく、関連付けられたコマンドシーケンス番号も含む。メッセージの「MACkDI(Command)」部は、アプリケーションによって計算された「Command」部のMACを含む。ドライバソフトウェア206は、コマンドメッセージを受け取ると、取り決められたセッション鍵kDIを使用してメッセージのコマンド部に対してMACアルゴリズムを実行することができる。コマンドメッセージのコマンド部に対してMACアルゴリズムが実行された後は、ドライバソフトウェアはその値をコマンドメッセージで受け取ったMAC値と比較することができる。2つの値が合致する場合、コマンドメッセージの保全性(integrity)が確立されている。
一実施例では、上記の処理で以下の表に示す値と内容を使用することができる。
Figure 0004809616
ステータスプロトコル
ここで例示し、説明する実施形態では、ステータスメッセージは、データセクションとメッセージ認証コードセクションまたはMACセクションの2つの部分を有するエンベロープに入れられる。この実施例では、メッセージの送信側は、セッション鍵kDIとそれに対応するMACアルゴリズムとを使用して状況データのMACを計算する。
ステータスプロトコルをどのように実現(implement)するのかを示す一例として、図5を説明する。図5では、アプリケーション202が以下の形式でステータス情報(status information)の要求を行う。
APP,StatusRequest
ここで、rAPPはアプリケーションによって生成された乱数であり、「StatusRequest」はステータス情報を求める実際の要求である。ドライバソフトウェア206は、アプリケーションからステータスリクエストを受け取るとそれに応答して、ステータス情報が適切であるか否かを確認し、そのステータス情報を適切な状況シーケンス番号と共にエンベロープのデータセクションに入れる。さらに、ドライバソフトウェアは、アプリケーションから提供された乱数と共にステータス情報のMACも計算する。次に、以下の形式でステータスメッセージがアプリケーションに戻される。
APP,Status,MACkDI(rAPP,Status)
ここで「Status」は、ステータス情報だけでなく状況シーケンス番号も含む。メッセージのMACkDI(rAPP,Status)部は、アプリケーションによって提供された乱数とステータス情報のMACを含む。アプリケーションは、このステータスメッセージを受け取ると、乱数とステータス情報とに対してMACアルゴリズムを実行することによって乱数とステータス情報のMACを計算することができ、その後、その値をメッセージのMACkDI(rAPP,Status)部内の値と比較することができる。これにより、アプリケーションはステータスメッセージが正当なものであることを確認することができる。次に、アプリケーションはメッセージの内容を使用することにより、ステータスメッセージが正しい順序になっていることを(シーケンス番号によって)検証することができ、ステータス情報がアプリケーションによって前に送られたステータスリクエストに関するものであることを(乱数rAPPによって)確認することができる。
一実施例では、上記の処理で以下の表に示す値と内容を使用することができる。
Figure 0004809616
方法の例
図6は、一実施形態による方法のステップを示す。この方法は、任意の適合するハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せと共に実装することができる。さらに、ソフトウェア実装によっては、この方法の態様を、1つまたは複数のコンピュータ可読媒体上に存在し、実行されて本明細書に記載の方法を実行するコンピュータ可読命令として実施することができる。この実施例では、例示の方法は2つの部分に分けられ、一方を「アプリケーション」と標示(label)し、他方を「ダウンストリームコンポーネント」と標示する。これは、以下に説明する動作をいずれの部分が実行するかを示すためである。したがって、「アプリケーション」という標示で記載する動作はアプリケーションによって実行され、「ダウンストリームコンポーネント」という標示で記載する動作は、アプリケーションの下流にあるコンポーネントによって実行される。一実施例では、ダウンストリームコンポーネントは、媒体データを処理するドライバソフトウェア、または対応するハードウェアのソフトウェア表現とすることができる。他の実施例では、ダウンストリームコンポーネントはハードウェアコンポーネント自体とすることができる。
以下で説明する方法を実施することができるシステムの一例を、前述の図2〜図5と共に例示し、説明する。特許請求対象の主旨および範囲から逸脱することなく、他のシステムも使用可能であることを理解されたい。
ステップ600において、プレイバックアプリケーションから、下流のコンポーネントに関連付けられた公開鍵を確認する。これがどのように行われることができるかを示す例は、上記に記載されている。ステップ602において、公開鍵を使用することにより、プレイバックアプリケーションとダウンストリームコンポーネントとの間にセキュアチャネルを確立する。ステップ600とステップ602とが組み合わさって、プレイバックアプリケーションとダウンストリームコンポーネントとの間に信頼を確立する。この信頼をどように確立することができるかを示す一例は、図3と共に前述されている。当然ながら、特許請求対象の主旨および範囲から逸脱することなく、他の方法も使用可能である。
ステップ604において、セキュアチャネルを使用することにより、ダウンストリームコンポーネントにコマンドメッセージを送る。任意の適合するコマンドメッセージ構造を使用することができるが、一例は図4と共に上記で示してある。さらに、任意の適合および/または適切なタイプのコマンドを、アプリケーションからダウンストリームコンポーネントに送ることができる。一実施例では、送ることができるコマンドは、システムによって処理される媒体コンテンツまたはデータを保護するために特定のタイプのコンテンツ保護技術をイネーブルにするようにダウンストリームコンポーネントに指示する。
ステップ606において、セキュアチャネルを介してコマンドメッセージを受け取る。このステップは、コマンドメッセージが送られるダウンストリームコンポーネントによって行われる。次に、ステップ608において、コマンドメッセージの保全性を検証する。コマンドメッセージの保全性を検証するために任意の適合する方法を使用することができるが、一例は図4と共に上記に示すものである。コマンドメッセージの保全性が検証されると、ステップ610において、コマンドメッセージに含まれる対応するコマンドを実行する。
ステップ612において、セキュアチャネルを使用してダウンストリームコンポーネントにステータスリクエストを送る。任意の適合するタイプのステータスリクエスト構造を使用することができるが、一例は図5と共に上記で示したものである。ステップ614において、セキュアチャネルを介してステータスリクエストを受け取り、ステップ616において、それに応答してステータスメッセージを作成し、セキュアチャネルを使用してアプリケーションにそのステータスメッセージを送る。任意の適合するステータスメッセージ構造を使用することができるが、一例は図5と共に上記に示すものである。
ステップ618において、セキュアチャネルを介してステータスメッセージを受け取り、ステップ620でステータスメッセージの保全性を検証する。ステータスメッセージの保全性を検証するために任意の適合する方法を使用することができるが、一例は上記に示すものである。
Windows(登録商標)オペレーティングシステム上でのプロトコルの実施例
システムの概要
図7の700は、上述のセキュアチャネルプロトコルを実施するために使用可能なシステム全体を示す。以下の説明において、本実施例のプロトコルを「証明付き出力保護プロトコル(Certified Output Protection Protocol)」または「COPP」と呼ぶ。本実施例では、ストリーミング媒体用のアーキテクチャであるMicrosoft(登録商標)DirectShow(登録商標)を一例として使用する。当業者ならわかるように、Microsoft(登録商標)DirectShow(登録商標)は、マルチメディアストリームの高品質の再生を行うことができ、Advanced Streaming Format(ASF)、Motion Picture Experts Group(MPEG)、Audio−Video Interleaved(AVI)、MPEG Audio Layer−3、WAVファイルを含めて、広範囲の形式に対応している。
ストリーミングビデオおよびオーディオデータに必要なスループットを達成するために、DirectShow(登録商標)はMicrosoft(登録商標)DirectDraw(登録商標)およびMicrosoft(登録商標)DirectSound(登録商標)を使用することにより、システムのサウンドカードおよびグラフィクスカードにデータを効率的に供給する。DirectDraw(登録商標)は、当業者ならわかるように、ソフトウェア設計者がディスプレイメモリ、ハードウェアブリッタ、ハードウェアオーバレイ、およびフリッピングサーフェスを直接操作することができるようにする、DirectX(登録商標)の表示コンポーネントである。DirettDraw(登録商標)は、直接32ビットパスで、装置固有の表示機能への装置に依存しないアクセスを可能にする。Windows(登録商標)の64ビット版には64ビットパスもある。DirectDraw(登録商標)は、Windows(登録商標)グラフィクスデバイスインターフェース(graphics device interface:GDI)またはデバイスインデペンデントビットマップ(device−independent bitomap:DIB)エンジンを介さずにディスプレイカードに直接アクセスするドライバにおいて重要な機能を呼び出す。
DirectShow(登録商標)では、タイムスタンプ付き媒体サンプルのマルチメディアデータをカプセル化することによって同期を実現する。多様な媒体源、形式およびハードウェアデバイスを扱うために、Directshow(登録商標)は、「フィルタ」と呼ばれるオペレーティングシステムコンポーネントを組み合わせ、整合させて多様な事例に対応させることができるモジュラアーキテクチャを使用する。本実施例では、これらのフィルタを組み合わせてフィルタグラフ704とすることができ、このフィルタグラフ704は、マルチメディアデータをハードウェアデバイスによって処理させ、レンダリングさせるためにプレイバックアプリケーション702によって使用される。
この実施例において、フィルタグラフ(filter graph)704は、媒体コンテンツを読み取るソースフィルタ706と、そのコンテンツを伸張(decompress)するデコーダ708(例えばWMVまたはMPEG2デコーダ)とを含む。ビデオレンダリング(video rendering)コンポーネント710は、伸張されたコンテンツ(decompressed content)またはデータを受け取り、そのコンテンツをレンダリングするハードウェアを判断する。この特定の実施例では、VMR7(DirectXバージョン7SDK用に作成されたVideo Mixing Rendererバージョン7)とVMR9(DirectXバージョン9SDK用に作成されたVideo Mixing Renderバージョン9)コンポーネントという使用可能な2つの異なるタイプのレンダラーコンポーネントがある。
本実施例では、ユーザモードDirectDraw(登録商標)部712を備えるが、これは、DirectDraw(登録商標)アプリケーションによってロードされ、呼び出されるシステム提供ダイナミックリンクライブラリ(DLL)である。このコンポーネントは、当業者にはわかるように、ハードウェアエミュレーションを行い、様々なDirectDraw(登録商標)オブジェクトを管理し、表示メモリと表示管理サービスを提供する。
さらに、カーネルモードDirectDraw(登録商標)部714も備える。これは、win32k.sysと一体の一部である。カーネルモード部714は、カーネルモードディスプレイドライバによってロードされるシステム提供グラフィクスエンジンである。このコンポーネントは、ドライバのためのパラメータ検証を行い、それによってより堅固なドライバの実施を容易にする。DirectDraw(登録商標)グラフィクスドライバ716も備える。これは、典型的にはサードパーティハードウェア供給業者によって実施される。
動作時、保護コンテンツは一般に、それに関連付けられた何らかのポリシーのセットを有する。これらのポリシーによって、関連付けられたコンテンツがレンダリングされる際に使用されるコンテンツ保護のタイプおよびレベルを設定することができる。例えば、コンテンツがDVIコネクタを介して再生出力される場合、ポリシーによって、HDCPをイネーブルにする必要があることを設定したり、またはコンテンツが再生されないように設定することができる。
本実施例では、アプリケーション702はコンテンツに関連付けられたポリシーを認識している。実際には、ソースフィルタ706が、コンテンツに関連付けられたポリシーを特定し、アプリケーションに通知する機能を果たすコンポーネントを含むことができる。
ユーザモードアプリケーションプログラムインターフェース(API)
ポリシー(policy)が抽出(extract)され、ポリシーの意味が特定されると、システム700は、まず、当該特定のシステムでポリシーが実施可能であるか否かを判断する。これは、この特定の実施例では、ビデオレンダリングコンポーネント710によってエクスポーズ(expose)されるIAMCertifiedOutputProtectionと呼ぶユーザモードアプリケーションプログラムインターフェース(API)を介して行われる。一実施形態によると、IAMCertifiedOutputProtectionインターフェースは、アプリケーションによって呼び出されることができる以下のメソッドから成る。
Figure 0004809616
Figure 0004809616
Figure 0004809616
上記の例において、AMCOPPCommand構造は、アプリケーションがダウンストリームコンポーネントにコマンドを送るために使用するデータ構造であり、図4に示すような交換で使用される。AMCOPPStatusInput構造は、アプリケーションがステータスリクエストを行うために使用するデータ構造であり、図5の左側に示すもののような交換で使用される。AMCOPPStatusOutput構造は、グラフィクスドライバがアプリケーションにステータス情報を返すために使用するデータ構造であり、図5の右側に示すもののような交換で使用される。
カーネルモードDDI(DX−VA)
DX−VA証明付き出力保護プロトコル(Certified Output Protection Protocol:COPP)は、プレイバックアプリケーション702などのユーザモードアプリケーションからグラフィクスドライバ716などのドライバにコマンドを渡し、ドライバからユーザモードアプリケーションに状況を返す手段となる。前述のように、コマンドと状況が流れるチャネルは保護されている。
この特定の実施態様では、コンテンツ出力保護プロトコルは、以下に詳述するDX−VA COPPデバイスを使用する。以下の説明では、以下の用語を使用する。
・ ビデオストリーム:ビデオストリームは、表示ビデオフレームを含む主要イメージデータである。ビデオストリームからの画素は常に透明であり、ピクセル単位のアルファデータを含まない。
・ ビデオサブストリーム:ビデオサブストリームは、合成ビデオフレームの表示の前にビデオストリームのサンプルと合成する必要がある補助イメージデータのチャネルである。ビデオサブストリームの例としては、NTSCクローズドキャプションイメージ、DVDサブピクチャイメージ、PALテレテックスイメージなどがある。ビデオサブストリームの他の特性は、限られた色範囲とピクセル単位アルファ情報を含むことである。
・ ビデオセッション:ビデオセッションは、ビデオストリームと、場合によっては、コンピュータに接続された出力デバイス上に表示される前にビデオストリームと組み合わされる1つまたは複数のビデオサブストリームから成る。コンピュータ上では一度に複数のアクティブなビデオセッションが存在することができ、また、1つのプロセス内で複数のアクティブなビデオセッションが存在することができる。
・ DX−VA COPPデバイス:コンテンツ出力保護プロトコルを介したコマンドとステータスリクエストの受領をサポートする新規なDX−VAデバイス。
・ コネクタ:グラフィクスハードウェアとディスプレイとの物理出力接続。
・ 保護タイプ:コネクタを介して受け渡しされる信号に適用することができる保護のタイプ。1つのコネクタに複数のタイプの保護を適用することができる。
・ 保護レベル:コネクタを介して受け渡しされる信号に適用することができる保護のレベル。この値は保護タイプに依存する。例えばHDCPのように、保護レベルが「オン」と「オフ」の2タイプしかない保護タイプもある。
設計の概要
本実施形態によると、DX−VA COPPデバイスと呼ぶ単一のコンポーネントが各ビデオセッションごとに作成される。図7の例では、ドライバ716と共に2つの例示のDX−VA COPPデバイスが図示されている。DX−VA COPPデバイスは、COPPコマンドおよびステータスリクエストのエンドポイントである。さらに、DX−VA COPPデバイスは、物理コネクタの保護設定を仮想化することができる。1つの物理コネクタが複数のコンテンツ保護タイプをサポートすることもできる。例えば、S−Videoコネクタはアナログコンテンツ保護と、CGMS−A Line20保護およびCGMS−A Line21保護をサポートすることができる。COPPデバイスがドライバによってどのように実施可能であるかを示す一例を、本明細書の後掲のCOPPサンプルデバイスドライバコードによって示す。
図示および説明する本実施形態では、各DX−VA COPPデバイスは、コンピュータ上で複数のビデオセッションがアクティブになっているときに適切に動作するように構成される。この場合、異なるプロセスがCOPPを介して出力ディスプレイアダプタの設定を試みるため、ドライバ716はCOPP DX−VAでデバイスの複数のインスタンスを作成するように求められる。本実施例では、ドライバ716によってDX−VA COPPデバイスの2つのインスタンスが作成されている。
ローカル(local)およびグローバル(global)参照カウント(reference counts)
ドライバ716は、コンテンツ保護をサポートする物理コネクタごとに、各タイプおよび各レベルのグローバル参照カウントを維持する必要がある。ここで例示し、説明する本実施形態では、ドライバ716はこのグローバルステートを維持するグローバルステート部(global state component)を備える。
ビデオセッションのためにCOPP DX−VAデバイスが作成される場合、当該デバイスは各保護タイプの各保護レベルについてローカル参照カウントを含む必要がある。これは、各デバイス内部の現行保護レベル部によって示される。保護タイプのデフォルトレベルカウンタは値1に設定されなければならず、当該タイプの他のすべての保護レベルカウンタは値ゼロに設定されなければならない。
ビデオセッションが特定の保護タイプに新しい保護レベルを設定すると、現行保護レベルの参照カウントが減分され、新しい保護レベルの参照カウントが増分される。これに対応する変更が、グローバル参照レベルカウンタにも加えられる。
グローバルレベルカウンタ(global level counter)のいずれかが変化するたびに、ドライバは当該コネクタのすべてのカウンタを調べ、保護レベルが、ゼロより大きい値の最高レベルカウンタに対応するレベルに確実に設定されるようにする必要がある。本実施例では、1つの関連付けられたコネクタについて、レベルAとレベルBの2つの異なる保護レベルがある。グローバルステート部は、当該物理コネクタにレベルB保護が適用されることを示していることに注目されたい。したがって、当該物理コネクタに適用可能な保護レベルのうちでレベルBがより高い。DX−VA COPPデバイス2が終了した場合、グローバルステート部は、物理コネクタに保護レベルAを適用する。これがどのようにして行われるかを、後で例示するコードサンプルで示す。
グローバル参照カウンタがゼロより大きい間は、出力コネクタにコンテンツ保護を適用する必要がある。グローバル参照カウンタがゼロになると直ちに、出力コネクタのコンテンツ保護が解除されなければならない。ドライバがDestroyDevice呼び出しを受け取るたびに、デバイスのローカル参照カウンタの現行レベル分だけグローバル参照カウンタが減分されなければならない。コネクタ保護は、当該コネクタのグローバル参照カウンタがゼロになった場合にのみ解除されなければならない。
DestroyDeviceは、デバイスがゼロより大きいローカル参照カウンタを有する間、呼び出し可能であることに留意されたい。その一例は、ユーザモードプロセスが異常終了した場合である。
ビデオセッションの初期設定(initialization)
ここで例示し、記載する本実施形態では、ビデオセッションは特定の物理出力コネクタと結びつけられる。ビデオセッションは、ディスプレイドライバレベルで、以下のステップによって初期設定される。
・ GetMoCompGuidsが呼び出されて、ドライバが出力コネクタについてDX−VA COPPデバイスをサポートするか否かを判断する。
・ ドライバが出力コネクタについてDX−VA COPPデバイスをサポートしないとすれば、CreateMoCompが呼び出され、DX−VA COPPデバイスを作成する。
・ RenderMoCompがDXVA_COPPGetCertificateLengthFnCode関数コードと共に呼び出され、当該セッションに使用されるべき可変長グラフィクスハードウェア証明書の長さが決定される。
・ RenderMoCompがDXVA_COPPKeyExchangeFnCode関数コードと共に呼び出され、ドライバにビデオセッションアプリケーション証明証を渡す。ドライバは、128ビットの秘密鍵と、その可変長グラフィクスハードウェア証明書のコピーを返す。
・ 最後に、RenderMoCompがDXVA_COPPSequenceStartFnCode関数コードと共に呼び出され、ビデオセッションが32ビットのコマンドシーケンス開始コードおよび32ビットの状況シーケンス開始コードで開始されたことを示す。
個々のDX−VARenderMoComp関数コードの詳細を、以下に示す。
デバイス喪失条件の処理(handling device lost condition)
特定のビデオセッションのために出力コンテンツ保護(output content protection)がイネーブル(enable)になっているときに、以下の条件によってドライバのDestroyMoCompエントリポイントが呼び出される。
・ 表示モードの変化
・ Windows(登録商標)デスクトップへのモニタの着脱
・ 全画面DOSボックスになる場合
・ DDrawまたはD3D排他モードアプリケーションの開始
・ ファーストユーザスイッチング(fast user switching)
・ Windows(登録商標)デスクトップへのモニタの追加または削除
・ ワークステーションのロックまたはWindows(登録商標)XPプロフェッショナル版上でのAlt−Ctrl−Delキーの押下
・ 「リモートデスクトップ接続(remote desktop connection)」によるワークステーションへの接続
・ 節電モード、例えば「サスペンド(suspend)」または「ハイバネート(hibernate)」に入る場合
・ 予期せぬアプリケーション終了、例えば「ページ障害(page fault)」
これが起こると、ドライバは、破棄されるデバイスの現行ローカル保護レベルカウント分だけグローバル保護レベルカウントを減分する必要がある。変更されたグローバル保護レベルは検査される必要があり、出力コネクタに適用された保護はそれに応じて調整されなければならない。
DX−VAコマンド
以下では、グラフィクスドライバ、具体的には個々のDX−VA COPPデバイスによってサポートされるいくつかのコマンドまたは関数について説明する。
COPPOpenVideoSession
この関数は、特定のビデオセッションのために使用されるCOPP DX−VAデバイスを初期設定する。
Figure 0004809616
COPPCloseVideoSession
この関数は、ビデオセッションに使用されているCOPP DX−VAデバイスを終了させる。
Figure 0004809616
ビデオセッションによって適用されている出力保護がある間、この関数が呼び出されることが可能である。ドライバは、当該DX−VA COPPデバイスの保護設定を解除し、それに応じて大域保護設定を調整する必要がある。
COPPGetCertificateLength
これは、新たに作成されたCOPP DX−VAデバイスが受け取る最初の関数呼び出しである。これは、ビデオレンダラーコンポーネント710が、グラフィクスハードウェアによって使用されている証明書のバイト単位の長さを問い合わせるために使用される。ドライバは、DD_RENDERMOCOMPDATA構造のlpOutputDataフィールドで正しい長さを返さなければならない。
Figure 0004809616
COPPKeyExchange
これは、新たに作成されたCOPP DX−VAデバイスが2番目に受け取る関数呼び出しである。ドライバは、グラフィクスハードウェアの可変長デジタル証明書を返さなければならない。DD_RENDERMOCOMPDATA構造のlpOutDataフィールドが、DXVA_COPPKeyExchangeOutput構造を指す。DXVA_COPPVariableLengthDataフィールドに、前のCOPPGetCertificateLength DXVAコマンドで示された証明書の所要スペースが入れられる。
Figure 0004809616
Figure 0004809616
COPPSequenceStart
これは、DX−VA COPPデバイスが受け取る3番目の関数呼び出しである。ドライバは、グラフィックハードウェアの公開鍵で暗号化された、128ビットのランダムデータ保全セッション鍵と、32ビットのランダム開始ステータスシーケンス番号と、32ビットのランダム開始コマンドシーケンス番号との連結(concatenation)を受け取る。ドライバは、COPPKeyExchange関数呼び出しを受け取る前にこの関数呼び出しを受け取った場合、または後続のCOPPSequenceStart呼び出しを受け取った場合、E_UNEXPECTEDを返さなければならない。
Figure 0004809616
COPPCommand
COPPコマンドは、DX−VA COPPデバイスに関連付けられた物理コネクタの保護レベルを変更するビデオセッションからの命令を含むことができる。ドライバは、前述のように、すべて同じ物理コネクタを介するコンテンツを再生する複数のビデオセッションをサポートすることができなければならない。
Figure 0004809616
Figure 0004809616
ドライバは、COPPKeyExchange関数呼び出しまたはCOPPSequenceStart関数呼び出しを受け取る前にこの関数呼び出しを受け取った場合、E_UNEXPECTEDを返さなければならない。また、ドライバは、ドライバに渡されたパラメータが、使用されている所定の物理コネクタにとって有効であることを確認する必要がある。COPPCommandで渡されたパラメータのうちの1つまたは複数のパラメータが有効でない場合、ドライバは、E_INVALIDARGを返さなければならない。
以下の表に、本実施形態によりドライバが受け取ることができるDX−VA COPPコマンドのセットを示す。
Figure 0004809616
COPPQueryStatus
COPPQueryStatusは、使用されている物理コネクタ、当該物理コネクタを介して伝送されるコンテンツに適用可能な保護のタイプ、当該物理コネクタ上でアクティブになっている現行保護レベルに関する情報を取り出す、ビデオセッションからの要求である。呼び出しの順序に関する同じ制約がこの場合も適用される。ドライバは、当該ビデオセッションについてCOPPKeyExchange呼び出しまたはCOPPSequenceStart呼び出しを受け取る前にこの呼び出しを受け取った場合、E_UNEXPECTEDを返さなければならない。
Figure 0004809616
以下の表に、本実施形態によりドライバが受け取ることができるDX−VAステータスリクエストのセットを示す。
Figure 0004809616
Figure 0004809616
Figure 0004809616
ユーザモードAPIのDDIマッピング
この特定の実施形態例では、また、Windows(登録商標)オペレーティングシステム用DDI基盤との適合性のために、本明細書で上述したAPIは、DirectDrawおよびDirectX VA用の既存のDDIに「マップ」されなければならない。当業者ならわかるように、このようなマッピング操作は、カーネルモードコンポーネントに大幅な変更を加える必要をなくすのに有用である。したがって、本項および以下の説明では、DirectDrawおよびDX−VAの既存DDICOPPインターフェースマッピングについて説明する。
DX−VA DDIはそれ自体、「DX−VAコンテナ(container)」と[DX−VAデバイス」という2つの機能グループに分かれている。DX−VAコンテナDDIグループの目的は、表示ハードウェアに含まれる様々なDX−VAデバイスの数と機能を判断することである。したがって、この実施例では、DX−VAドライバは1つのコンテナしか持つことができないが、複数のDX−VAデバイスに対応することができる。
この項の他の部分では、前述のインターフェースがどのようにDX−VAデバイスDDIにマップされるかについて説明する。他のDX−VA DDIとは異なる、COPPデバイスはビデオメモリサーフェスをまったく参照しないことに留意されたい。
ユーザ−モードコンポーネントからのDDI呼び出し
ビデオレンダリングコンポーネント710(図7)などのユーザモードコンポーネントからDDIを使用するステップの順序は以下の通りである。
1.GetMoCompGuidsを呼び出して、ドライバによってサポートされているDX−VAデバイスのリストを入手する。
2.CreateMoCompを呼び出して、ビデオセッションのためのCOPPデバイスを設定する。COPPデバイスGUIDは以下のように定義される。
DEFINE_GUID(DXVA_COPPDevice,
0xd2457add,0x8999,0x45ed,0x8a,0x8a,0xd1,0xaa,0x04,0x7b,0xa4,0xd5);
3.次に、ビデオレンダリングコンポーネントは、要求されるCOPP操作のタイプに応じて異なる関数パラメータ値を使用してCOPPデバイスのRenderMocompを呼び出す。
4.ビデオレンダリングコンポーネントがそれ以上COPP操作を行う必要がない場合、DestroyMocCompを呼び出す。
5.ドライバは、COPPデバイスによって使用されていた資源を解放する。
COPPOpenVideoSession
このメソッドは、DD_MOTIONCOMPACALLBACKS構造のCreateMoCompメソッドに直接マップする。GUIDはCOPPDeviceGUIDであり、pUncompDataはデータを含まない(すべてゼロ)の構造を指し、pDataはNULLを指す。
ドライバが圧縮ビデオ(compressed video)の高速復号(accelerated decoding)をサポートする場合、ビデオレンダリングコンポーネントは、ドライバを呼び出して2つのDX−VAデバイスを作成することを理解されたい。一方は、DirectXVAビデオデコーディング仕様によって規定されている実際のビデオデコーディング作業を行うデバイスであり、他方は出力コネクタに、コンテンツ出力保護プロトコルによる保護を適用するためにのみ使用されるデバイスである。
例:CreateMoCompのCOPPOpenVideoSessionへのマッピング
以下のサンプルコードによって、ドライバがCreateMoComp DDI呼び出しをCOPPOpenVideoSessionにマップする方法を示す。このサンプルコードは、CreteMoComp関数がCOPPにどのように使用されるかのみを示すものである。ドライバがMPEG−2ビデオストリームなど他のDX−VA機能をサポートする場合、以下のサンプルコードを拡張して、追加のDX−VA GUIDの処理を組み込むことができる。
Figure 0004809616
Figure 0004809616
例:GetMoCompGuidの実施
CreateMoCompDDI関数に加えて、ドライバはDD_MOTIONCOMPCALLBACKS構造のGetMoCompGuidsメソッドも実施する必要がある。以下のサンプルコードは、ドライバでこの機能を実施する1つの可能な方法を示す。
Figure 0004809616
COPPGetCertificateLength
このメソッドは、D_MOTIONCOMPCALLBACKS構造のRenderMoCompメソッドに直接マップし、以下の通りである。
・ dwNumBuffersはゼロである。
・ lpBufferInfoはNULLである。
・ dwFunctionはDXVA_COPPGetCertificateLengthFnCodeと定義される。
・ lpInputDataはNullである。
・ lpOutputDataは単一のDWORDを指す。
COPPに使用されるDX−VAデバイスの場合、RenderMoCompはBeginMoCompFrameもEndMoCompFrameも呼び出さずに呼び出されることに留意されたい。
例:RenderMoCompのCOPPGetCertificateLengthへのマッピング
以下のサンプルコードは、ドライバがRenderMoComp DDI呼び出しをどのようにCOPPGetCertificateLengthにマップする必要があるかを示す。このサンプルコードは、RenderMoComp関数がCOPP制御に使用される方法のみを示している。ドライバが、MEPEG−2ビデオストリームなどのDX−VA機能をサポートする場合、このサンプルコードを拡張して追加のDX−VA GUIDの処理を組み込むことができる。
Figure 0004809616
Figure 0004809616
COPPKeyExchange
このメソッドは、D_MOTIONCOMPCALLBACKS構造のRenderMoCompメソッドに直接マップし、以下の通りである。
・ dwNumBuffersはゼロである。
・ lpBufferInfoはNULLである。
・ dwFunctionはDXVA_COPPKeyExchangeFnCodeと定義される。
・ lpInputDataはNULLである。
・ lpOutputDataはDXVA_COPPKeyExchangeOutputデータ構造を指す。
COPPに使用されるDX−VAデバイスの場合、RenderMoCpmpは、BeginMoCompFrameもEndMoCompFrameも呼び出さずに呼び出されることに留意されたい。
例:RenderMoCompのCOPPKeyExchangeへのマッピング
以下のサンプルコードは、ドライバがRenderMoComp DDI呼び出しをどのようにCOPPKeyExchangeにマップする必要があるかを示す。このサンプルコードは、RenderMoComp関数がCOPP制御に使用される方法のみを示している。ドライバが、MPEG−2ビデオストリームなど他のDX−VA機能をサポートする場合、このサンプルコードを拡張して追加のDX−VA GUIDの処理を組み込むことができる。
Figure 0004809616
COPPSequenceStart
このメソッドは、D_MOTIONCOMPCALLBACKS構造のRenderMoCompメソッドに直接マップし、以下の通りである。
・ dwNunmBuffersはゼロである。
・ lpBufferInfoはNULLである。
・ dwFunctionはDXVA_COPPSequenceStartFnCodeと定義される。
・ lpInputDataはDXVA_COPPSignatureデータ構造を指す。
・ lpOutputDataはNULLである。
COPPに使用されるDX−VAデバイスの場合、RenderMoCompはBeginMoCompFrameもEndMoCompFrameも呼び出さずに呼び出されることに留意されたい。
例:RenderMoCompのCOPPSequenceStartへのマッピング
以下のサンプルコードは、ドライバがRenderMoCompのDDIをどのようにCOPPSequenceStartにマップする必要があるかを示す。サンプルコードは、RenderMoComp関数がCOPP制御に使用される方法のみを示している。ドライバが、MPEG−2ビデオストリームなど他のDX−VA機能をサポートする場合、サンプルコードを拡張して追加のDX−VA GUIDの処理も組み込むことができる。
Figure 0004809616
COPPCommand
このメソッドは、D_MOTIONCOMPCALLBACKS構造のRenderMoCompメソッドに直接マップし、以下の通りである。
・ dwNumBuffersはゼロである。
・ lpBufferInfoはNULLである。
・ dwFunctionはDXVA_COPPCommandFnCodeと定義される。
・ lpInputDataはDXVA_COPPCommandデータ構造を指す。
・ lpOutputDataはNULLである。
COPPに使用されるDX−VAデバイスの場合、RenderMoCompはBeginMoCompFrameもEndMoCompFrameも呼び出さずに呼び出されることに留意されたい。
例:RenderMoCompのCOPPCommandへのマッピング
以下のサンプルコードは、ドライバがRenderMoComp DDI呼び出しをどのようにCOPPCommandにマップする必要があるかを示す。このサンプルコードは、RenderMoComp関数がCOPP制御に使用される方法のみを示している。ドライバがMPEG−2ビデオストリームなど他のDX−VA機能をサポートする場合、このサンプルコードを拡張して追加のDX−VA GUIDの処理を組み込むことができる。
Figure 0004809616
COPPQueryStatus
このメソッドは、D_MOTIONCOMPCALLBACKS構造のRenderMoCompメソッドに直接マップし、以下の通りである。
・ dwNumBuffersはゼロである。
・ lpBufferInfoはNULLである。
・ dwFunctionはDXVA_COPPQueryStatusFnCodeと定義される。
・ lpInputDataはDXVA_COPPStatusInputデータ構造を指す。
・ lpOutputDataはDXVA_COPPStatusOutputデータ構造を指す。
COPPに使用されるDX−VAの場合、RenderMoCompはBeginMoCompFrameもEndMoCompFrameも呼び出さずに呼び出されることに留意されたい。
例:RenderMoCompのCOPPQueryStatusへのマッピング
以下のサンプルコードは、ドライバがRenderMoCompのDDI呼び出しをどのようにCOPPQueryStatusにマップする必要があるかを示す。このサンプルコードは、RenderMoComp関数がCOPP制御に使用される方法のみを示している。ドライバがMPEG−2ビデオストリームなど他のDX−VA機能をサポートする場合、このサンプルコードを拡張して追加のDX−VA GUIDの処理を組み込むこともできる。
Figure 0004809616
Figure 0004809616
COPPCloseVideoSession
このメソッドは、DD_MOTIONCOMPCALLBACKS構造のDestroyMoCompメソッドに直接マップする。
例:DestroyMoCompのCOPPCloseVideoSessionへのマッピング
以下のサンプルコードは、ドライバがDestroyMoComp DDIをどのようにCOPPCloseVideoSessionにマップする必要があるかを示す。このサンプルコードは、DestroyMocComp関数がCOPPデバイスに使用される方法のみを示している。ドライバがMPEG−2ビデオストリームなど他のDX−VA機能をサポートする場合、このサンプルコードを拡張して追加のDX−VA GUIDの処理を組み込むこともできる。
Figure 0004809616
Figure 0004809616
結論
上述の様々な実施形態は、保護コンテンツプレイバックアプリケーションを実行するコンピュータなどの装置と、モニタ、フラットパネルLCD、テレビジョンなどの関連付けられたディスプレイデバイスのグラフィクスドライバなどの関連付けられたドライバとの間に、セキュア通信チャネル、および、実施形態によっては、セキュアデータチャネルを確立することによって、媒体コンテンツの保護を可能にする。様々な実施形態によれば、コンピュータとそのディスプレイデバイスを物理的にリンクする出力アダプタを保護されたビデオ経路のためのゲートウェイとして使用することによって、媒体出力にコンテンツ保護を適用する必要があることを通知するというコンテンツ提供業者およびアプリケーション供給業者にとっての必要性に対処することができる。
また、様々な実施形態によれば、ユーザモードプレイバックアプリケーションからグラフィクスドライバなどのドライバに安全にコマンドを渡し、ドライバからユーザモードアプリケーションに状況を安全に返す手段を提供する。本明細書に記載の実施形態によれば、セキュア通信チャネルを確立し、ユーザモードアプリケーションが、関連付けられたドライバに対して、コンピュータとディスプレイデバイスとの間の物理コネクタに対するコンテンツ出力保護をイネーブルにするように指示することができる。
なお、各種実施形態について、構造上の特徴および/または方法ステップとして特有の用語で説明したが、特許請求の範囲で規定されている本発明は、記載されている特定の特徴またはステップに必ずしも限定されない。これらの特定の特徴およびステップは、請求の範囲に記載されている発明を実施する好ましい態様として開示されているものである。
媒体コンテンツを処理することができるシステムを示すハイレベルブロック図である。 本発明の一実施形態による保護プロトコルの態様を例示するために使用されるシステムを示すブロック図である。 本発明の一実施形態による保護プロトコルの態様を示すブロック図である。 本発明の一実施形態による保護プロトコルの態様を示すブロック図である。 本発明の一実施形態による保護プロトコルの態様を示すブロック図である。 本発明の一実施形態による方法を示すフローチャートである。 本発明の一実施例を実現するためのシステム例を示すブロック図である。
符号の説明
12 保護コンテンツ
18 デクリプションコンポーネント
20 デコーダコンポーネント
22 レンダラーコンポーネント
24 ディスプレイ
26 スピーカ
202 プレイバックアプリケーション
204 システムソフトウェア
206 ドライバソフトウェア
208 ハードウェア(ビデオカード)
210 物理コネクタ
212 出力デバイス
214 コンテンツ保護技術のタイプ
702 プレイバックアプリケーション
704 フィルタグラフ
706 ソースフィルタ
708 デコーダ
710 ビデオレンダリングコンポーネント
716 グラフィクスドライバ

Claims (46)

  1. 媒体プレイバックアプリケーションと、前記媒体プレイバックアプリケーションの下流にあるダウンストリームコンポーネントとの間にセキュア通信チャネルを確立するステップと、
    前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションが前記ダウンストリームコンポーネントに対して、物理コネクタを介して提供される媒体コンテンツを保護するための複数の異なるタイプのコンテンツ保護技術のうちの1つまたは複数をイネーブルするように指示することを少なくとも可能にするステップと、
    を含むことを特徴とする方法。
  2. 前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションが前記ダウンストリームコンポーネントに対して、前記異なるタイプのコンテンツ保護技術のうちの1つまたは複数のコンテンツ保護技術を適用する方法について保護タイプごとの保護レベルを指示することを可能にするステップをさらに含む、ことを特徴とする請求項1記載の方法。
  3. 前記ダウンストリームコンポーネントはソフトウェアコンポーネントを含む、ことを特徴とする請求項1記載の方法。
  4. 前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションが前記ダウンストリームコンポーネントに対してステータス情報を要求することを可能にするステップをさらに含む、ことを特徴とする請求項1記載の方法。
  5. 前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションが前記ダウンストリームコンポーネントからステータス情報を要求することを可能にするステップと、
    前記セキュア通信チャネルを使用することにより、前記ダウンストリームコンポーネントからステータス情報を受け取るステップと、
    をさらに含むことを特徴とする請求項1記載の方法。
  6. 前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションが前記ダウンストリームコンポーネントからステータス情報を要求することを可能にするステップと、
    前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションによって以前に送られた命令に関係するステータス情報を前記ダウンストリームコンポーネントから受け取るステップと、
    をさらに含むことを特徴とする請求項1記載の方法。
  7. 前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションが前記ダウンストリームコンポーネントからステータス情報を要求することを可能にするステップと、
    前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションによって以前に送られた命令に関係しないステータス情報を前記ダウンストリームコンポーネントから受け取るステップと、
    をさらに含むことを特徴とする請求項1記載の方法。
  8. 請求項1記載の方法を実施する1つまたは複数のコンピュータ可読命令を有する、ことを特徴とするコンピュータ可読媒体。
  9. 請求項8のコンピュータ可読媒体に記載の1つまたは複数のコンピュータ可読命令を実施する、ことを特徴とするコンピュータシステム。
  10. 1つまたは複数のコンピュータ可読媒体と、
    前記媒体に記憶されているソフトウェアコンポーネントであって、
    媒体プレイバックアプリケーションとのセキュア通信チャネルを確立し、
    前記セキュア通信チャネルを使用して前記媒体プレイバックアプリケーションから命令を受け取り、物理コネクタを介して提供される媒体コンテンツを保護するための複数の異なるタイプのコンテンツ保護技術のうちの1つまたは複数のコンテンツ保護技術をイネーブルにし、
    前記1つまたは複数のコンテンツ保護技術のうちの少なくとも一部について実行する命令を受け取るように構成されたソフトウェアコンポーネントと、
    を含むことを特徴とするシステム。
  11. 前記ソフトウェアコンポーネントはソフトウェアドライバを含む、ことを特徴とする請求項10記載のシステム。
  12. 前記ソフトウェアコンポーネントは、さらに、前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションからステータスリクエストを受け取るように構成されている、ことを特徴とする請求項10記載のシステム。
  13. 前記ソフトウェアコンポーネントは、さらに、前記セキュア通信チャネルを使用することにより前記媒体プレイバックアプリケーションからステータスリクエストを受け取るように構成され、前記ソフトウェアコンポーネントは、さらに、前記セキュア通信チャネルを使用することにより前記媒体プレイバックアプリケーションに対してステータス情報を送るように構成されている、ことを特徴とする請求項10記載のシステム。
  14. 前記ソフトウェアコンポーネントは、さらに、前記セキュア通信チャネルを使用することにより前記媒体プレイバックアプリケーションからステータスリクエストを受け取るように構成され、前記ソフトウェアコンポーネントは、さらに、前記セキュア通信チャネルを使用することにより前記媒体プレイバックアプリケーションにステータス情報を送るように構成され、前記ステータス情報は前記媒体プレイバックアプリケーションから以前に受け取られた命令に関係する、ことを特徴とする請求項10記載のシステム。
  15. 前記ソフトウェアコンポーネントは、さらに、前記セキュア通信チャネルを使用することにより前記媒体プレイバックアプリケーションからステータスリクエストを受け取るように構成され、前記ソフトウェアコンポーネントは、さらに、前記セキュア通信チャネルを使用することにより前記媒体プレイバックアプリケーションにステータス情報を送るように構成され、前記ステータス情報は前記媒体プレイバックアプリケーションから以前に受け取られた命令に関係しない、ことを特徴とする請求項10記載のシステム。
  16. 請求項10に記載のシステムを実施する、ことを特徴とするコンピューティングシステム。
  17. 媒体プレイバックアプリケーションとダウンストリームコンポーネントとの間に信頼を確立するステップと、
    前記ダウンストリームコンポーネントに関連付けられた公開鍵を使用することにより、前記ダウンストリームコンポーネントによって提供される乱数と、
    データ保全鍵と、
    1つまたは複数の開始番号とを暗号化することによって、
    前記媒体プレイバックアプリケーションと前記ダウンストリームコンポーネントとの間にセキュアチャネルを確立するステップと、
    前記暗号化されたデータを前記ダウンストリームコンポーネントに送るステップと、
    前記セキュアチャネルを使用することにより、コマンドを含むデータセクションと前記コマンドを認証するために使用可能なデータを含む認証セクションとを備えたコマンドメッセージを前記ダウンストリームコンポーネントに送るステップと、
    前記セキュアチャネルを使用することにより前記ダウンストリームコンポーネントからステータス情報を要求するステップと、
    前記セキュアチャネルを使用することにより、ステータス情報を含むデータセクションと前記ステータス情報を認証するために使用可能なデータを含む認証セクションとを備えたステータスメッセージを、前記ダウンストリームコンポーネントから受け取るステップと、
    を含むことを特徴とする方法。
  18. 前記1つまたは複数の開始番号は、開始ステータスシーケンス番号と開始コマンドシーケンス番号とを含み、これらの番号はステータスメッセージまたはコマンドメッセージが失われたか否かをそれぞれ確認するために使用可能である、ことを特徴とする請求項17記載の方法。
  19. 前記セキュアチャネルを使用することにより前記ダウンストリームコンポーネントからステータス情報を要求するステップは、前記ステータス情報の要求と共に乱数を送ることを含み、前記ステータスメッセージの前記認証セクションは、前記乱数に関連付けられたデータを含む、ことを特徴とする請求項17記載の方法。
  20. 前記コマンドメッセージおよび前記ステータスメッセージの前記認証セクションは、前記データ保全鍵を使用することにより処理されたデータを含む、ことを特徴とする請求項17記載の方法。
  21. 前記コマンドメッセージは、前記ダウンストリームコンポーネントに対して、物理コネクタを介して提供される媒体コンテンツを保護するための複数の異なるタイプのコンテンツ保護技術のうちの1つまたは複数のコンテンツ保護技術をイネーブルにするように指示するコマンドを含む、ことを特徴とする請求項17記載の方法。
  22. 前記ダウンストリームコンポーネントはソフトウェアドライバを含む、ことを特徴とする請求項17記載の方法。
  23. 請求項17記載の方法を実施するコンピュータ可読命令を有する、ことを特徴とするコンピュータ可読媒体。
  24. 請求項23記載の1つまたは複数のコンピュータ可読媒体を有する、ことを特徴とするコンピューティングシステム。
  25. 前記セキュアチャネルを使用することにより、保護された媒体コンテンツを前記ダウンストリームコンポーネントに提供するステップをさらに含む、ことを特徴とする請求項17記載の方法。
  26. 1つまたは複数のコンピュータ可読媒体と、
    前記媒体上に常駐しているソフトウェアコンポーネントであって、
    媒体プレイバックアプリケーションとの信頼を確立し、
    該ソフトウェアコンポーネントに関連付けられた公開鍵を前記媒体プレイバックアプリケーションに提供し、さらに前記公開鍵を使用することにより暗号化された暗号データを前記媒体プレイバックアプリケーションから受け取ることとによって、前記媒体プレイバックアプリケーションとのセキュアチャネルを確立し、
    ここで、前記暗号データは、
    該ソフトウェアコンポーネントによって以前に提供された乱数と、
    データ保全鍵と、
    1つまたは複数の開始番号とを含んでおり、
    前記セキュアチャネルを使用することにより、コマンドを含むデータセクションと、前記コマンドを認証するために使用可能なデータを含む認証セクションとを有するコマンドメッセージを前記媒体プレイバックアプリケーションから受け取り、
    前記セキュアチャネルを使用することにより、前記媒体プレイバックアプリケーションからステータスリクエストを受け取り、
    前記セキュアチャネルを使用することにより、ステータス情報を含むデータセクションと、前記ステータス情報を認証するために使用可能なデータを含む認証セクションとを有するステータスメッセージを前記媒体プレイバックアプリケーションに送るように構成されたソフトウェアコンポーネントと、
    を具備したことを特徴とするシステム。
  27. 前記1つまたは複数の開始番号は、開始ステータスシーケンス番号と開始コマンドシーケンス番号とを含み、これらの番号はステータスメッセージまたはコマンドメッセージが失われたか否かをそれぞれ確認するために使用可能である、ことを特徴とする請求項26記載のシステム。
  28. 前記コマンドメッセージおよび前記ステータスメッセージの前記認証セクションは、前記データ保全鍵を使用することにより処理されたデータを含む、ことを特徴とする請求項26記載のシステム。
  29. 前記コマンドメッセージは、前記ソフトウェアコンポーネントに対して、物理コネクタを介して提供される媒体コンテンツを保護するための複数の異なるタイプのコンテンツ保護技術のうちの1つまたは複数のコンテンツ保護技術をイネーブルするように指示するコマンドを含む、ことを特徴とする請求項26記載のシステム。
  30. 前記コマンドメッセージは、前記ソフトウェアコンポーネントに対して、物理コネクタを介して提供される媒体コンテンツを保護するための複数の異なるタイプのコンテンツ保護技術のうちの1つまたは複数のコンテンツ保護技術をイネーブルするように指示するコマンドを含み、前記ソフトウェアコンポーネントは、複数の異なるタイプのコンテンツ保護技術をイネーブルするように構成されている、ことを特徴とする請求項26記載のシステム。
  31. 請求項26に記載のシステムを実施する、ことを特徴とするコンピューティングシステム。
  32. コンピュータ可読媒体上に組み込まれたアプリケーションプログラムインターフェース(API)を有するコンピュータプログラムであって、
    媒体プレイバックアプリケーションによって呼び出し可能であり、前記媒体プレイバックアプリケーションとソフトウェアドライバコンポーネントとの間に信頼を確立する第1のメソッドと、
    前記媒体プレイバックアプリケーションによって呼び出し可能であり、前記媒体プレイバックアプリケーションと前記ソフトウェアドライバコンポーネントとの間にセッション鍵を設定する第2のメソッドと、
    前記媒体プレイバックアプリケーションによって呼び出し可能であり、前記ソフトウェアドライバコンポーネントに対して、物理コネクタを介して提供される媒体コンテンツを保護するための複数の異なるタイプのコンテンツ保護技術のうちの1つまたは複数のコンテンツ保護技術をイネーブルするように指示する第3のメソッドと、
    前記媒体プレイバックアプリケーションによって呼び出し可能であり、前記ソフトウェアドライバコンポーネントに対してステータス情報を要求する第4のメソッドと、
    を含むことを特徴とするコンピュータプログラム。
  33. 前記第1のメソッドは、前記ソフトウェアドライバによって生成された乱数、および、デジタル証明書を返される、ことを特徴とする請求項32記載のコンピュータプログラム。
  34. 前記第2のメソッドは、グラフィクスハードウェアによって提供された乱数と、1つまたは複数のセッション鍵と、開始ステータスシーケンス番号と、開始コマンドシーケンス番号の暗号化された連結を提供する、ことを特徴とする請求項32記載のコンピュータプログラム。
  35. 前記APIは、ビデオレンダリングコンポーネントによって顕示される、ことを特徴とする請求項32記載のコンピュータプログラム。
  36. デバイスドライバを呼び出してコンテンツ保護デバイスのインスタンスを作成するステップであって、該コンテンツ保護デバイスの各々は、個々のビデオセッションに関連付けられており、かつ、該コンテンツ保護デバイスの各々は、該コンテンツ保護デバイスにコマンドおよびステータスリクエストを送ることができるプレイバックアプリケーションとの通信のエンドポイントとして機能する、ステップと、
    コンテンツを保護するために適用されるコンテンツ保護の各タイプおよび各レベルに対するグローバル参照カウントを、前記デバイスドライバと共に、維持するステップと、
    前記コンテンツ保護デバイスを介して適用されるコンテンツ保護の各タイプおよび各レベルに対するローカル参照カウントを、少なくとも1つのコンテンツ保護デバイスと共に、維持するステップと、
    前記コンテンツ保護のタイプまたはレベルの変化に従って、前記グローバル参照カウントおよび前記ローカル参照カウントを調整するステップと、
    を具備したことを特徴とする方法。
  37. 1つまたは複数のコンピュータ可読媒体と、
    前記コンピュータ可読媒体上に組み込まれているソフトウェアドライバコードであって、該ソフトウェアドライバコードは、個々のビデオセッションに関連付けられている複数のコンテンツ保護デバイスを実現するように構成されており、コマンドおよびステータスリクエストをコンテンツ保護デバイスに送ることができるプレイバックアプリケーションとの通信のためのエンドポイントとして機能する、前記コンピュータ可読媒体上に組み込まれているソフトウェアドライバコードと、
    を具備したコンピュータデバイスであって、
    前記ソフトウェアドライバコードは、
    ドライバが所与の出力コネクタのためのコンテンツ保護デバイスをサポートするか否かを判断するために呼び出すことができる第1のメソッドと、
    関連付けられたコンテンツ保護デバイスを作成するために呼び出すことができる第2のメソッドと、
    グラフィクスハードウェア証明書に関連した長さを判断し、ビデオセッションを開始させるために呼び出すことができる第3のメソッドとを含み、
    前記コンテンツ保護デバイスの各々は、
    グラフィクスハードウェア証明書の長さを問い合わせる第1のメソッドと、
    可変長のグラフィクスハードウェアデジタル証明書を返す第2のメソッドと、
    前記グラフィクスハードウェアに関連付けられた公開鍵を使用することにより暗号化された、データ保全セッション鍵と開始ステータスシーケンス番号と開始コマンドシーケンス番号の連結を受け取る第3のメソッドと、
    前記コンテンツ保護デバイスに関連付けられた物理コネクタ上のコンテンツ保護を変更するためのコマンドを受け取る第4のメソッドと、
    使用されている物理コネクタと、前記物理コネクタを介して伝送されるコンテンツに適用することができる保護のタイプと、前記物理コネクタ上でアクティブになっている現行保護レベルとに関する情報を問い合わせる第5のメソッドとを含んだ、呼び出し可能メソッドをサポートする、
    ことを特徴とするコンピュータデバイス。
  38. 前記コンテンツ保護デバイスの第1のメソッドは、前記ソフトウェアドライバコードの第3のメソッドに直接マップする、ことを特徴とする請求項37記載のコンピュータデバイス。
  39. 前記コンテンツ保護デバイスの第2のメソッドは、前記ソフトウェアドライバコードの第3のメソッドに直接マップする、ことを特徴とする請求項37記載のコンピュータデバイス。
  40. 前記コンテンツ保護デバイスの第3のメソッドは、前記ソフトウェアドライバコードの第3のメソッドに直接マップする、ことを特徴とする請求項37記載のコンピュータデバイス。
  41. 前記コンテンツ保護デバイスの第4のメソッドは、前記ソフトウェアドライバコードの第3のメソッドに直接マップする、ことを特徴とする請求項37記載のコンピュータデバイス。
  42. 前記コンテンツ保護デバイスの第5のメソッドは、前記ソフトウェアドライバコードの第3のメソッドに直接マップする、ことを特徴とする請求項37記載のコンピュータデバイス。
  43. 媒体プレイバックアプリケーションと、前記媒体プレイバックアプリケーションの下流にあるコンポーネントとの間にセキュア通信チャネルを確立する手段と、
    前記セキュア通信チャネルを使用することにより、前記媒体プレイバックアプリケーションが前記下流にあるコンポーネントに対して、物理コネクタを介して提供される媒体コンテンツを保護するための複数の異なるタイプのコンテンツ保護技術のうちの1つまたは複数のコンテンツ保護技術をイネーブルにするように指示することを少なくとも可能にする手段と、
    を具備したことを特徴とするシステム。
  44. 前記下流にあるコンポーネントはソフトウェアコンポーネントを含む、ことを特徴とする請求項43記載のシステム。
  45. 前記下流にあるコンポーネントはハードウェアコンポーネントを含む、ことを特徴とする請求項43記載のシステム。
  46. 前記下流にあるコンポーネントはグラフィクスハードウェアコンポーネントを含む、ことを特徴とする請求項43記載のシステム。
JP2005067120A 2004-03-11 2005-03-10 媒体コンテンツを保護する方法およびシステム Active JP4809616B2 (ja)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
JP2005304000A JP2005304000A (ja) 2005-10-27
JP4809616B2 true JP4809616B2 (ja) 2011-11-09

Family

ID=34887641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005067120A Active JP4809616B2 (ja) 2004-03-11 2005-03-10 媒体コンテンツを保護する方法およびシステム

Country Status (5)

Country Link
US (2) US7703141B2 (ja)
EP (1) EP1582962B1 (ja)
JP (1) JP4809616B2 (ja)
KR (1) KR101099311B1 (ja)
CN (2) CN101859358B (ja)

Families Citing this family (40)

* 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
US20060242406A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Protected computing 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
US8438645B2 (en) 2005-04-27 2013-05-07 Microsoft Corporation Secure clock with grace periods
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
US9363481B2 (en) * 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
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
EP2198626A4 (en) * 2007-11-01 2012-02-08 Lg Electronics Inc METHOD FOR DATA PROCESSING AND IPTV RECEIVING DEVICE
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
CN102160357B (zh) * 2008-09-16 2014-03-12 艾利森电话股份有限公司 通信网络中的密钥管理
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
WO2013147908A1 (en) * 2012-03-31 2013-10-03 Intel Corporation Methods and systems for cryptographic access control of video
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
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
US9363255B2 (en) 2014-06-04 2016-06-07 Sonos, Inc. Cloud queue playhead
US20150355818A1 (en) 2014-06-04 2015-12-10 Sonos, Inc. Continuous Playback Queue
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
US10448066B2 (en) * 2014-09-25 2019-10-15 Blackberry 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
FR3046000B1 (fr) * 2015-12-21 2018-02-16 Oberthur Technologies Procede de reception de donnees au sein d'une entite electronique et entite electronique associee
CN108124731A (zh) * 2017-12-22 2018-06-08 兰溪市沉默生物科技有限公司 一种盆栽环保基质的制备方法
US10819526B2 (en) * 2018-02-19 2020-10-27 Microsoft Technology Licensing, Llc Identity-based certificate authority system architecture
KR101996333B1 (ko) * 2018-04-04 2019-07-04 이니텍(주) 사물 인터넷 장치와의 통신을 위한 키 교환 및 인증 방법과 그 방법을 이용한 메시지 송수신 방법

Family Cites Families (13)

* 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 情報信号伝送方法、情報信号伝送システム、情報信号送信装置および情報信号受信装置
US7340055B2 (en) * 1999-12-02 2008-03-04 Sanyo Electric Co., Ltd. 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
US7069590B1 (en) 2000-02-17 2006-06-27 Microsoft Corporation System and method for protecting data streams in hardware components
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4809616B2 (ja) 媒体コンテンツを保護する方法およびシステム
TWI269169B (en) Methods and systems for cryptographically protecting secure content
JP4807925B2 (ja) グラフィックシステムのコンポーネント認証方法およびシステム
TWI358932B (en) Packet based high definition high-bandwidth digita
US20050195205A1 (en) Method and apparatus to decode a streaming file directly to display drivers
US9665740B1 (en) Method and system for cryptographically securing a graphics system
JP2014089644A (ja) プロセッサ、プロセッサ制御方法及び情報処理装置
US10803903B2 (en) Method for capturing and recording high-definition video and audio output as broadcast by commercial streaming service providers
CN108881801B (zh) 视频会议的码流传输方法、系统、电子设备、存储介质
CN109168085B (zh) 一种设备客户端视频流硬件保护方法
TWI390408B (zh) 晶片組防護卸載引擎
JP4904728B2 (ja) コンテンツ配信システム、クライアント端末、プログラム及び記録媒体
JP2002281017A (ja) コンテンツ保護装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110428

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110720

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110812

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110819

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140826

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4809616

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250