(57)【特許請求の範囲】
【請求項１】
グラフィック処理ユニット、メモリ制御装置、及び複数のメモリ部分からなるビデオ・メモリを備えたビデオ・カードにおいて、第１の保護レベルを有する第１のメモリ部分に格納されたデータを、第２の保護レベルを有する第２のメモリ部分に提供する方法であって、
前記グラフィック処理ユニットが、第１のメモリ部分に格納されたデータを読み出し、読みだされたデータを操作し、出力データを作成するステップと、
前記メモリ制御装置が、前記第１の保護レベルと前記第２の保護レベルの情報を取得し、前記第１の保護レベルと前記第２の保護レベルとが等価であるか否かを判定し、判定結果を出力するステップと、
前記第１の保護レベルと前記第２の保護レベルとが等価である場合に、前記グラフィック処理ユニットが、前記メモリ制御装置より出力された判定結果に基づき、前記作成された出力データを前記第２のメモリ部分に格納するステップと
を備えることを特徴とする方法。
【請求項２】
前記第１および第２のメモリ部分に関連付けられた暗号鍵によって、保護レベルが定義されることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１および第２のメモリ部分に関連付けられたアクセス制御リストによって、保護レベルが定義されることを特徴とする請求項１に記載の方法。
【請求項４】
前記グラフィック処理ユニットにより作成された出力データは、前記第１のメモリ部分に格納されたデータとは異なることを特徴とする請求項１に記載の方法。
【請求項５】
コンピュータに請求項１〜４の何れか１項に記載のステップを実行させるためのプログラムを記憶したコンピュータ読み取り可能な記録媒体。
【請求項６】
ディスプレイにレンダリングされることになるデータを処理するためのグラフィック処理ユニット（ＧＰＵ）と、
前記ＧＰＵによって処理されるべきまたは処理されたデータを保持するために動作可能に前記ＧＰＵに関連付けられたビデオ・カード・メモリと、
第１の保護レベルを有する第１のメモリ部分に格納されたデータを、第２の保護レベルを有する第２のメモリ部分に提供するよう構成されたメモリ制御装置とを備え、
前記グラフィック処理ユニットが、第１のメモリ部分に格納されたデータを読み出し、読みだされたデータを操作して、出力データを作成し、
前記メモリ制御装置が、前記第１の保護レベルと前記第２の保護レベルの情報を取得し、前記第１の保護レベルと前記第２の保護レベルとが等価であるか否かを判定して、判定結果を出力し、
前記第１の保護レベルと前記第２の保護レベルとが等価である場合に、前記グラフィック処理ユニットが、前記メモリ制御装置より出力された判定結果に基づき、前記作成された出力データを前記第２のメモリ部分に格納することを特徴とするビデオ・カード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ・カードを使用してビデオ・データを処理するための方法およびシステムに関し、より詳細にはセキュア（正常なビデオ・データの取出し防止機能付き）ビデオ・カード方法およびシステムに関する。
【背景技術】
【０００２】
一般に、映画スタジオなどのコンテンツ作者またはＷｅｂ上にコンテンツを発表するユーザは、どのようなユーザがそれを見ることができるかについて制限を有するビデオ・コンテンツを発表することになる。このコンテンツは一般に、パーソナル・コンピュータなどのコンピュータ上で表示またはレンダリングすることができる。こうしたビデオ・コンテンツを盗み、または他の方法で不当に取得しようとする不道徳な個人または組織によって、毎年莫大な時間、努力、および金額が費やされている。
【０００３】
攻撃するそのポイントの１つが、こうしたビデオ・コンテンツが表示されたり、またはレンダリングされたりするコンピュータである。すなわち、不正なプログラムまたはデバイス（rogue programs or devices）は、ビデオ・コンテンツがパーソナル・コンピュータなどのコンピュータ上でいったん受け取られた後で、これを不当に取得することが可能であり、しばしばそれを試行する。コンピュータ構成要素の中でもとりわけ、ビデオ・コンテンツを処理するビデオ・カード、および／またはビデオ・カードとの間でビデオ・コンテンツを移送するバスに対して、この攻撃が行われる傾向がある。
【０００４】
図１は、典型的なコンピュータ上のポートに挿入するバス・コネクタ１０２を含むビデオ（またはグラフィック）カード１００の一例を示す図である。ビデオ・カード１００はまた、モニタに接続するケーブルを受け入れるモニタ・コネクタ１０４（たとえば１５ピンプラグ）を含む。ビデオ・カード１００は、ビデオ画像をＬＣＤおよびフラット・パネル・モニタなどに送信するために使用可能なデジタル・ビデオ出力ソケット１０６を含むことができる。
【０００５】
現代のビデオ・カードは、グラフィック処理ユニット（ＧＰＵ）１０８、ビデオ・メモリ１１０、ランダム・アクセス・メモリ・デジタル／アナログ変換器（ＲＡＭＤＡＣ）１１２、およびビデオＢＩＯＳ１１４に格納できるドライバ・ソフトウェアという、４つの主構成要素からなる。
【０００６】
ＧＰＵ１０８は、解像度、色の濃さ、およびモニタ・スクリーン上への画像のレンダリングに関連付けられたすべての要素、のすべての面を制御する専用のグラフィック処理チップである。コンピュータの中央処理ユニットすなわちＣＰＵ（図示せず）は描画命令およびデータのセットを送信し、これらがグラフィック・カードが専有するドライバ（graphics card's proprietary driver）によって解釈（interpret）され、カードのＧＰＵ１０８によって実行される。ＧＰＵ１０８は、ビットマップの転送およびペインティング、ウィンドウのサイズ変更および再位置決め、描線（line drawing）、フォントの拡大縮小（font scaling）、ならびに多角形描画（polygon drawing）などのオペレーションを実行する。ＧＰＵ１０８は、システムのＣＰＵでのソフトウェアの実行よりもはるかに速い速度でこれらのタスクをハードウェア上で処理するように設計されている。次にＧＰＵは、フレーム・データをフレーム・バッファ（またはオンボード・ビデオ・メモリ１１０）に書き込む。ＧＰＵは、システムのＣＰＵの作業負荷を大幅に削減する。
【０００７】
ビデオ画像を保持するメモリはフレーム・バッファとも呼ばれ、通常はビデオ・カードそれ自体に実装される。この例では、フレーム・バッファはビデオ・カード上にメモリ１１０の形で実装される。初期のシステムは、ビデオ・メモリを標準ＤＲＡＭで実装していた。しかしこれは、データが失われることがないようにデータを絶え間なくリフレッシュし続けることを必要とし、このリフレッシュ・プロセス中は変更することができない。その結果、特に現代のグラフィック・カードが要求する超高速のクロック・スピードでは、性能が著しく低下することになる。
【０００８】
ビデオ・カードそれ自体の上にビデオ・メモリを実装することの利点は、それ特有のタスク向けにカスタマイズできることであり、実際、これによって次のような新しいメモリ技術が普及する結果となった。  
−ビデオＲＡＭ（ＶＲＡＭ）：特殊タイプのデュアル・ポートＤＲＡＭであり、読取りと書込みを同時に実行できる。必要とするリフレッシュ頻度は、通常のＤＲＡＭに比べてはるかに少なく、その結果、かなりの性能を発揮する。  
−Ｗｉｎｄｏｗｓ（登録商標）ＲＡＭ（ＷＲＡＭ）：Ｍａｔｒｏｘ  Ｍｉｌｌｅｎｎｉｕｍカードとして使用されるように、これもデュアル・ポートであり、従来のＶＲＡＭよりもわずかに早く実行することができる。  
−ＥＤＯ  ＤＲＡＭ：ＤＲＡＭよりも高い帯域幅を提供し、通常のＤＲＡＭよりも高くクロックすることが可能であり、読取り／書込みサイクルをより効率良く管理することができる。  
−ＳＤＲＡＭ：データのラッチに使用される共通クロックでメモリおよびグラフィック・チップが動作し、ＳＤＲＡＭを正規のＥＤＯ  ＲＡＭよりも高速に動作できるようにすることを除いて、ＥＤＯ  ＲＡＭと同様である。  
−ＳＧＲＡＭ：ＳＤＲＡＭと同様であるが、ブロック書込みおよびビットごと書込みもサポートしており、これがこれらの拡張機能をサポートするグラフィック・チップの性能を向上させる。  
−ＤＲＤＲＡＭ：ダイレクトＲＤＲＡＭは、従来のＤＲＡＭの２０倍の性能向上を約束する、まったく新しい汎用メモリ・アーキテクチャである。
【０００９】
設計によっては、グラフィック回路をマザー・ボードそれ自体中に集積し、フレーム・バッファ用にシステムのＲＡＭの一部を使用するものがある。これは「ＵＭＡ（unified memory architecture）」と呼ばれ、コスト削減のためだけに使用され、グラフィックス性能を低下させる可能性がある。
【００１０】
ビデオ・メモリ・フレーム・バッファ内の情報は、デジタル・ビットマップとして格納された、スクリーン上に表示される画像（image）である。しかし、ビデオ・メモリがデジタル情報を含むのに対して、その出力媒体であるモニタはアナログ信号を使用することがある。アナログ信号は、モニタ前面を横断し下方に走査されるように電子銃を発射しなければならない場所、時点、および強度を決定するのに使用されるので、アナログ信号は単なる「オン」信号または「オフ」信号以上のものを必要とする。そこで、ＲＡＭＤＡＣ１１２が以下のように動作を開始する。ＲＡＭＤＡＣはＬＣＤモニタなどのデジタル・ディスプレイ用のデジタル・ビデオ・インターフェース（ＤＶＩ）出力もサポートする。こうした構成では、ＲＡＭＤＡＣは内部デジタル表現をデジタル・ディスプレイが理解可能な形式に変換する。
【００１１】
ＲＡＭＤＡＣは、内部デジタル・データをディスプレイが理解する形式に変換するため、「ディスプレイ変換器」の役割を果たす。
【００１２】
特定解像度にはビデオ・カードにインストールされたビデオ・メモリ量のすべてを必要とはしない場合もあるが、ＧＰＵ１０８に向けられた情報をキャッシュするために余分なメモリが使用されることが多い。たとえば、テキスト・フォントおよびアイコンまたは画像などの通常使用されるグラフィカル・アイテムをキャッシュすることによって、新しい文字が書き込まれる、またはアイコンが移動するたびにグラフィック・サブ・システムがこれらをロードする必要がなくなり、それにより性能が向上する。キャッシュされた画像はＧＰＵによって提示されるべき画像のシーケンスを待ち行列に入れるのに使用することが可能であり、それによって他のタスクを実行するためにＣＰＵが解放される。
【００１３】
ＲＡＭＤＡＣ１１２は、１秒間に何回もビデオ・メモリのコンテンツを読み取り、これを信号に変換してビデオ・ケーブルを介してモニタに送信する。アナログ・ディスプレイの場合、典型的には、完全な色のスペクトルを作成するためにＣＲＴが使用する３原色のそれぞれについて１つのデジタル−アナログ変換器（ＤＡＣ）がある。デジタル・ディスプレイの場合、ＲＡＭＤＡＣは、出力デバイスによって解釈および表示される単一のＲＧＢデータストリームを出力する。意図された結果は、１つのピクセルの色を作成するために必要な正しい混合である。ＲＡＭＤＡＣ１１２が情報を変換できる速度およびＧＰＵ１０８それ自体の設計が、グラフィック・カードがサポート可能なリフレッシュ速度の範囲を指示する。ＲＡＭＤＡＣ１１２は、内部アーキテクチャに応じて所与の解像度で使用可能な色の数も指示する。
【００１４】
バス・コネクタ１０２は、ビデオ・カードとの接続に使用される１つまたは複数のバスをサポートすることができる。たとえば、ＡＧＰ（Accelerated Graphics Port）バスは、ビデオ・カードがシステム・メモリにダイレクトにアクセスできるようにするものである。ダイレクト・メモリ・アクセスは、ピーク帯域幅をＰＣＩ（Peripheral Component Interconnect）バスの何倍も高くするのに役立つ。これによって、ビデオ・カードのＧＰＵがシステム・メモリにアクセスする間に、システムのＣＰＵは他のタスクを実行できるようになる。
【００１５】
オペレーション時には、オンボード・ビデオ・メモリに格納されたデータをコンピュータのシステム・メモリに提供し、システムのメモリの一部であるかのように管理することができる。これには、コンピュータのメモリ管理が使用する仮想メモリの管理技法などが含まれる。さらに、システムのメモリに格納されたデータがビデオ・カードでのグラフィック・オペレーションに必要な場合、データはバス（ＰＣＩまたはＡＧＰバスなどの）を介してビデオ・カードに送信し、オンボード・ビデオ・メモリ１１０に格納することができる。そこで、前述のようにＧＰＵ１０８を介してデータにアクセスし操作することができる。
【００１６】
システム・メモリからビデオ・カード上のビデオ・メモリにデータが転送される場合、およびその逆の場合、ＰＣＩバスに接続されたＰＣＩデバイスは転送時のデータを「聞き取る（listen）」ことができる。さらにＰＣＩバスは、ビデオ・メモリがあたかもシステム・メモリ同様に存在しているかのように、残りのシステムに対して「見える」ようにする。その結果、ＰＣＩデバイスはＰＣＩバスを獲得し、ビデオ・メモリのコンテンツを他のデバイスに完全にコピーすることができる。ＰＣＩデバイスが着信ビデオと同期されている場合は、潜在的にはすべてのコンテンツを取り込むことができる。
【００１７】
コンテンツがビデオ・カードのビデオ・メモリ内にいったん入ると、コンテンツを保護する以前のオプションは２つある。
【００１８】
第１に、ビデオ・メモリはアクセス可能のままとすることができるが、コンテンツは保護された暗号化形式で格納されるため、不正デバイスおよびアプリケーションが解釈ことはできない。これによってデータの読取りは防止されるが、データを暗号化形式で継続的に維持することも必要である。ビデオ・カード（すなわちＧＰＵ）がデータを処理しようとする場合、読取り時に自動的に復号、処理し、ビデオ・メモリに再書込みするたびに再暗号化しなければならない。ビデオ・データでは、圧縮解除されたデータは表示するだけで毎秒３００ｍｂ（メガビット）以上を必要とする可能性がある。したがって、暗号器／復号器はこれらの高いデータ・レートで動作する必要がある。典型的には、いくつかのビデオ・ストリームが単一の出力ストリームに処理されることになる。たとえば、ピクチャ・イン・ピクチャ（ＰＩＰ）またはマルチ・チャネル・ディスプレイは、８つのチャネルを単一のディスプレイに混合する。これには、毎秒３００ｍｂ（合計毎秒約２．４ギガ・バイト）で動作する８つの同時復号器および１つの暗号器が必要となる。したがって、この方法（approach）は計算要件が高度なことからあまり望ましくない。
【００１９】
第２に、ビデオ・メモリのコンテンツまたはデータを単にアクセス不能にすることができる。これは典型的には、ビデオ・メモリが物理メモリにマッピングされている（すなわち正規のシステム・メモリであるかのように見える）ため、ＰＣＩおよびＡＧＰバスの設計により不可能である。したがって、ビデオ・メモリは任意のＰＣＩデバイスにアクセス可能であり、その後これがＰＣＩバスを取得してＣＰＵが知ることなくデータ転送を実行することができる。したがって、メモリ制御装置（またはＧＰＵ）が、そのメモリにアクセスしているものを確実には特定できないことから、この方法（approach）はあまり望ましくない。
【００２０】
したがって、正常なビデオ（あるいはグラフィック）データの取出し防止機能のあるビデオ処理システムおよび方法（secure video processing systems and methods）の提供に関連付けられた問題から本発明が生まれた。
【発明の概要】
【発明が解決しようとする課題】
【００２１】
本発明は、このような問題に鑑みてなされたもので、その目的とするところはビデオまたはグラフィック・カード上で使用するように意図されたデータ、およびビデオまたはグラフィック・カード上で処理されたデータ、を保護するための方法およびシステム、すなわち、正常なビデオ（あるいはグラフィック）データの取出し防止機能のあるビデオ処理システムおよび方法（secure video processing systems and methods）を提供することにある。
【課題を解決するための手段】
【００２２】
様々な実施形態で、ビデオ・カードとコンピュータ・システムとの間のバス（たとえばＰＣＩまたはＡＧＰバス）にデータが提供されるときには常に、そのデータが暗号化されるように、ビデオ・カードによって使用されるように意図されたデータは選択的に暗号化されることが可能である。たとえば、データがビデオ・カード上のメモリからシステムのメモリに移動される場合（たとえばシステム物理メモリにマッピングされる場合）およびその逆の場合には、データは、暗号化形式であり、要するに保護される。
【００２３】
ビデオ・カード上でグラフィック処理ユニット（ＧＰＵ）によって処理するために、暗号化データがシステムのメモリからビデオ・カードに転送される場合、暗号化データは復号されてビデオ・カードの保護メモリ内に配置されることができる。
【００２４】
一実施形態では、ビデオ・カードは保護された複数のメモリ部分を有する。暗号／復号鍵ペアが保護されたそれぞれのメモリ部分に関連付けられている。暗号化データがビデオ・カード上で受け取られると、そのデータは、復号されたデータが書き込まれる保護されたメモリ部分に関連付けられた復号鍵を使用して自動的に復号される。その後ＧＰＵは、復号されたデータに基づいて自由に動作できる。データが、保護されていないメモリ部分または物理的にビデオ・カード上にないメモリに移動される場合、データは関連付けられた暗号鍵を使用して暗号化され、その後に移動することができる。データは、それが転送されるときに暗号化することができるため、暗号化された画像全体を送信するまでキャッシュしておく必要はない。
【００２５】
他の実施形態では、暗号化されたデータはビデオ・カード上に受け取られ、保護されていないメモリ部分に配置される。その後データは、ビデオ・カード上のメモリの保護されている部分に復号されることができる。その後復号されたデータは、ＧＰＵによって動作可能となる。ビデオ・カードのメモリの保護されていない部分、またはたとえばシステム・メモリ内のビデオ・カードから離れたところにデータが移動される場合、データを再暗号化することができる。
【００２６】
したがって、データが攻撃の対象となる可能性のあるバス（たとえば、ＰＣＩバスまたはＡＧＰバス）上に配置されるときには常にデータが暗号化され、その結果、データが保護されることを確実にすることにより、様々な実施形態がデータを保護することができる。
【図面の簡単な説明】
【００２７】
【図１】コンピュータ・システム内で使用することが意図された例示的なビデオまたはグラフィック・カードの様々な構成要素を示す構成図である。
【図２】記載された実施形態に従ったビデオ・カードを使用することができる例示的なコンピュータ・システムを示す構成図である。
【図３】一実施形態に従った方法のステップを示す流れ図である。
【図４】一実施形態に従った方法のステップを示す流れ図である。
【図５】一実施形態に従った例示的なビデオまたはグラフィックの様々な構成要素を示す構成図である。
【図６】図５のビデオ・カードの様々な構成要素を示す構成図である。
【図７】一実施形態に従った方法のステップを示す流れ図である。
【図８】記載された実施形態の一定の態様を理解するのに役立つ構成図である。
【図９】一実施形態に従った方法のステップを示す流れ図である。
【図１０】一実施形態に従ったビデオ・カードの様々な構成要素を示す構成図である。
【発明を実施するための形態】
【００２８】
コンピュータ・システムの例
図２は、以下に記載したシステムおよび関連する方法が実施可能な好適なコンピューティング環境２００の一例を示す図である。
【００２９】
コンピューティング環境２００は、好適なコンピューティング環境の一例に過ぎず、メディア処理システム（media processing system）の使用範囲または機能に関して、どんな制限をも示唆するように意図されてはいない。さらにコンピューティング環境２００は、例示的なコンピューティング環境２００に示された任意の一構成要素またはその組合せに関するどんな依存性または要件をも有するものとしても解釈されるべきではない。
【００３０】
記載された様々な実施形態は、他の多数の汎用または特定用途向けコンピューティング・システム環境または構成で動作可能である。メディア処理システムで使用するのに好適な可能性のあるよく知られたコンピューティング・システム、環境、および／または構成の例には、パーソナル・コンピュータ、サーバ・コンピュータ、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベース・システム、セットトップボックス、プログラム可能大衆消費電子製品、ネットワークＰＣ、ミニ・コンピュータ、メイン・フレーム・コンピュータ、上記システムまたはデバイスのうちいずれかを含む分散コンピューティング環境などが含まれるが、これらに限定されるものではない。
【００３１】
一定の実施態様では、システムおよび関連方法を、コンピュータによって実施されるプログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテキストで首尾良く記載することができる。一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データ・タイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。実施形態は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラム・モジュールは、メモリ記憶デバイスを含むローカルとリモートの両方のコンピュータ記憶媒体に配置することができる。
【００３２】
図２に示された実施形態の例によれば、コンピューティング・システム２００は、１つまたは複数の処理装置または処理ユニット２０２、システム・メモリ２０４、およびシステム・メモリ２０４を含む様々なシステム構成要素を処理装置２０２に結合するバス２０６を備えるように示される。
【００３３】
バス２０６は、様々なバス・アーキテクチャのうちのいずれかを使用する、メモリバスまたはメモリ制御装置、周辺バス、ＡＧＰ（Accelerated Graphics Port）、および処理装置バスまたはローカル・バスを含む、任意のいくつかのタイプのバス構造のうちの１つまたは複数を表すように意図されている。たとえば、こうしたアーキテクチャには、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびメザニン・バスとしても知られるＰＣＩ（Peripheral Component Interconnects）バスが含まれるが、これらに限定されるものではない。
【００３４】
コンピュータ２００は、典型的には様々なコンピュータ読取り可能媒体を含む。こうした媒体は、コンピュータ２００によってローカルおよび／またはリモートにアクセス可能な任意の使用可能媒体であってよく、揮発性および不揮発性、取外し可能および取外し不能の、両方の媒体を含む。
【００３５】
図２では、システム・メモリ２０４に、ランダム・アクセス・メモリ（ＲＡＭ）２１０などの揮発性メモリ形式、および／または読取り専用メモリ（ＲＯＭ）２０８などの不揮発性メモリ形式の、コンピュータ読取り可能媒体が含まれる。起動時などにコンピュータ２００の要素間で情報を転送するのに役立つ基本ルーチンを収容する基本入力／出力システム（ＢＩＯＳ）２１２は、ＲＯＭ２０８に格納される。ＲＡＭ２１０は典型的には、即時アクセス可能な、かつ／または処理ユニット２０２によって現在動作中の、データおよび／またはプログラム・モジュールを収容する。
【００３６】
コンピュータ２００は、他の取外し可能／取外し不能、揮発性／不揮発性のコンピュータ記憶媒体をさらに含むことができる。単なる例として、図２では、取外し不能な不揮発性磁気媒体（図示されておらず、典型的には「ハード・ドライブ」と呼ばれる）からの読取りおよびこれへの書込み用のハード・ディスク・ドライブ２２８、取外し可能な不揮発性磁気ディスク２３２（たとえば「フロッピー（登録商標）ディスク」）からの読取りおよびこれへの書き込み用の磁気ディスク・ドライブ２３０、ならびにＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学式媒体などの取外し可能な不揮発性光ディスク２３６からの読取りおよびこれへの書込み用の光ディスク・ドライブ２３４が示されている。ハード・ディスク・ドライブ２２８、磁気ディスク・ドライブ２３０、および光ディスク・ドライブ２３４は、それぞれ１つまたは複数のインターフェース２２６によってバス２０６に接続される。
【００３７】
ドライブおよびそれらの関連付けられたコンピュータ読取り可能媒体は、コンピュータ読取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ２００用の他のデータの不揮発性記憶装置を提供する。本明細書に記載された例示的環境ではハード・ディスク２２８、取外し可能磁気ディスク２３２、および取外し可能光ディスク２３６を使用しているが、当分野の技術者であれば、磁気カセット、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）などの、コンピュータがアクセス可能なデータを格納できる他のタイプのコンピュータ読取り可能媒体が、例示的なオペレーティング環境でも使用可能であることを理解されたい。
【００３８】
たとえば、オペレーティング・システム２１４、１つまたは複数のアプリケーション・プログラム２１６（たとえばマルチ・メディア・アプリケーシ２２４）、他のプログラム・モジュール２１８、およびプログラム・データ２２０などを含むがこれらに限定されることのない、いくつかのプログラム・モジュールは、ハード・ディスク２２８、磁気ディスク２３２、光ディスク２３６、ＲＯＭ２０８、またはＲＡＭ２１０に格納することができる。ユーザは、キーボード２３８およびポインティング・デバイス２４０（「マウス」など）などの入力デバイスを介して、コンピュータ２００にコマンドおよび情報を入力することができる。他の入力デバイスには、オーディオ／ビデオ入力デバイス２５３、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送用アンテナ、シリアル・ポート、スキャナなど（図示せず）が含まれる。これらおよび他の入力デバイスは、バス２０６に結合された入力インターフェース２４２を介して処理ユニット２０２に接続されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することもできる。
【００３９】
モニタ２５６または他のタイプのディスプレイ・デバイスも、ビデオ・アダプタまたはビデオ／グラフィック・カード２４４などのインターフェースを介してバス２０６に接続される。パーソナル・コンピュータは、モニタに加えて、出力周辺インターフェース２４６を介して接続可能なスピーカおよびプリンタなどの他の周辺出力デバイス（図示せず）も含む。
【００４０】
コンピュータ２００は、リモート・コンピュータ２５０などの１つまたは複数のリモート・コンピュータへの論理接続を使用する、ネットワーク化された環境で動作することができる。リモート・コンピュータ２５０は、コンピュータに関して本明細書に記載された多くのまたはすべての要素および機能を含むことができる。
【００４１】
図２に示されるように、コンピューティング・システム２００は、ローカル・エリア・ネットワーク（ＬＡＮ）２５１および一般的なワイド・エリア・ネットワーク（ＷＡＮ）２５２を介して、リモート・デバイス（たとえばリモート・コンピュータ２５０）に通信可能なように結合される。こうしたネットワーキング環境は、事務所や会社規模のコンピュータ・ネットワーク、イントラ・ネット、およびインターネットで普及している。
【００４２】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ２００は好適なネットワーク・インターフェースまたはアダプタ２４８を介してＬＡＮ２５１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ２００は典型的にはモデム２５４またはＷＡＮ２５２を介して通信を確立するための他の手段を含む。内蔵または外付けが可能なモデム２５４は、ユーザ入力インターフェース２４２または他の適切な機構を介してシステム・バス２０６に接続することができる。
【００４３】
ネットワーク化された環境では、パーソナル・コンピュータ２００に関して記載されたプログラム・モジュールまたはその一部を、リモート・メモリ記憶デバイスに格納することができる。たとえば図２では、リモート・アプリケーション・プログラム２１６がリモート・コンピュータ２５０のメモリ・デバイス上に常駐しているとして示されているが、これに限定されるものではない。図示および記載されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立する他の手段も使用可能であることを理解されよう。
【００４４】
（概要）
以下に記載する実施形態では、ビデオ・カードによって使用されることが意図されたデータを、データがビデオ・カードとコンピュータ・システムとの間のバス（たとえばＰＣＩまたはＡＧＰバス）上に提供されるときには常に暗号化されるように、暗号化することができる。バスを獲得するスヌーピング・デバイスまたは不正アプリケーション（snooping devises or rogue applications）がその暗号化されていない形式のデータにアクセスできないという理由から、これは有利である。したがって、データがビデオ・カードのビデオ・メモリからシステムのメモリへ移動される場合（たとえば、システムの物理メモリにマッピングされる場合）およびその逆の場合、そのデータは、暗号化形式であり、要するに保護される。
【００４５】
グラフィック処理ユニット（ＧＰＵ）によって処理するために、システムのメモリからビデオ・カードに転送されるときに、暗号化されたデータは復号されてビデオ・カード上の保護されたメモリ内に配置することができる。したがってＧＰＵは、暗号化されていないデータに基づいてオペレーションを実行することが可能であり、これはＧＰＵが実行するのに最も適したものである。
【００４６】
以下に記載する実施形態では、ビデオ・カードとコンピュータ・システムとの間のバス上を移動するときには常にデータを暗号化することによって、データを保護することに対処する、２つの特定の実施態様について説明する。具体的に記載された実施形態は単なる例であって、記載された主題の精神および範囲を逸脱することなく特定の実施態様の変形態様が実行可能であることを理解されよう。
【００４７】
図３は、一実施形態に従った方法のステップを示す流れ図である。この方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで実施することができる。この特定の例では、方法は、データがビデオ・カードからシステムまたはシステム・メモリに移動するときに実行される例示的な処理ステップを示すものである。
【００４８】
ステップ３００は、ビデオ・カード上で、暗号化されていないデータを提供する。このデータは、典型的には、ビデオ・カードのＧＰＵによって処理されたデータであり、ビデオ・カードのメモリに提供される。ステップ３０２は、ビデオ・カード上で暗号化されていないデータを暗号化する。このステップは、システムのメモリにデータを転送するようにという要求に応答して実施することができる。たとえば、ＣＰＵは、データをビデオ・カードからシステムのメモリに移動させる命令を送信することができる。あるいはＧＰＵは、データをこれ以上必要としないため、システムのメモリへの転送を開始するように決定することができる。データは、任意の好適な暗号化技法を使用して、ビデオ・カード上で暗号化することができる。次にステップ３０４は、ビデオ・カードとシステムの間のバスを介して暗号化されたデータを送信する。例示的なバスはＰＣＩバスおよびＡＧＰバスであってよい。ステップ３０６は、暗号化されたデータをシステム・メモリに提供する。
【００４９】
上記のプロセスでは、ビデオ・カードからシステムのメモリに移動するデータは暗号化されている、したがって、バスを獲得しデータを盗むかまたはコピーしようとするスヌーピング・デバイスまたは不正アプリケーションは、スヌーピング・デバイスまたは不正アプリケーションにとって復号することが数学的に不可能な暗号化されたデータのみを受け取ることになる。
【００５０】
図４は、一実施形態に従った方法のステップを示す流れ図である。この方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実施することができる。この特定の例では、方法は、データがシステムまたはシステム・メモリからビデオ・カードに移動されるときに実行される例示的な処理ステップを示すものである。
【００５１】
ステップ４００は、システム・メモリ内にデータを提供する。こうしたデータは、典型的にはビデオ・カードによって処理のために使用されるデータである。データは、暗号化されたデータまたは暗号化されていないデータのどちらかとして、システム・メモリに提供することができる。ステップ４０２は、（システム・メモリ内で暗号化されていない場合に）データを暗号化し、システム・メモリとビデオ・カードの間のバスにデータを送信することができる。このステップは、ビデオ・カード上でデータを処理するという希望に応答して実施することができる。ステップ４０４は、ビデオ・カード上の暗号化されたデータを受け取る。次にステップ４０６は、ビデオ・カード上の暗号化されたデータを復号し、ステップ４０８はＧＰＵによる処理のために復号されたデータをビデオ・メモリに提供する。
【００５２】
上記のプロセスでは、システムのメモリからビデオ・カードに移動するデータは暗号化されている、したがって、バスを獲得してデータを盗むかまたはコピーしようとするスヌーピング・デバイスまたは不正アプリケーションは、スヌーピング・デバイスまたは不正アプリケーションにとって復号することが数学的に不可能な暗号化されたデータのみを受け取ることになる。
【００５３】
例示的な第１のビデオ・カード実施形態
図５は、一実施形態に従った例示的なビデオ（またはグラフィック）カード５００を示す図である。カード５００には、典型的なコンピュータ上のポート内に嵌め込むバス・コネクタ５０２が含まれる。ビデオ・カード５００は、モニタに接続するケーブルを受け入れるモニタ・コネクタ５０４（たとえば１５ピンプラグ）も含む。ビデオ・カード５００は、ビデオ画像をデジタル・ディスプレイなどに送信するために使用できるデジタル・ビデオ出力（たとえばＤＶＩ）ソケット５０６を含むことができるが、必ずしも必要ではない。
【００５４】
図１のビデオ・カードと同様に、ビデオ・カード５００はグラフィック処理ユニット（ＧＰＵ）５０８、ビデオ・メモリ５１０、ランダム・アクセス・メモリ・デジタル／アナログ変換器（ＲＡＭＤＡＣ）５１２、およびビデオＢＩＯＳ  ５１４に含めることのできるドライバ・ソフトウェアを備える。
【００５５】
ＧＰＵ５０８は、解像度、色の濃さ、およびモニタ・スクリーン上での画像のレンダリングに関連付けられたすべての要素、のすべての面を制御する専用のグラフィック処理チップである。メモリ制御装置（ＧＰＵに集積される場合がある）は、ビデオ・カード上のメモリを管理する。コンピュータの中央処理ユニットすなわちＣＰＵ（図示せず）は描画命令およびデータのセットを送信し、これらがグラフィック・カードが専有するドライバ（graphics card's proprietary driver）によって解釈（interpret）され、カードのＧＰＵ５０８によって実行される。ＧＰＵ５０８は、ビットマップの転送およびペインティング、ウィンドウのサイズ変更および再位置決め、描線、フォントの拡大縮小、ならびに多角形描画などのオペレーションを実行する。次にＧＰＵは、フレーム・データをフレーム・バッファ（またはオンボード・ビデオ・メモリ５１０）に書き込むことができる。
【００５６】
ビデオ・メモリ・フレーム・バッファ内の情報は、デジタル・ビットマップとして格納された、画面上に表示される画像である。ＲＡＭＤＡＣ５１２は、前述のようにモニタ上でのレンダリング用に使用できる形式へのデジタル・ビットマップの変換に使用される。
【００５７】
これらの構成要素に加えて、この実施形態では、ビデオ・カード５００は、メモリ制御装置５１６および鍵マネージャ５１８を備える。ビデオ・カードは、復号器５２０も含むことができる。これらの構成要素は任意の好適なハードウェア、ソフトウェア、ファームウェアまたはそれらの組合せで実施することができる。
【００５８】
メモリ制御装置５１６はビデオ・カード上の暗号化されたデータを受け取り、このデータを保護ビデオ・メモリ５１０の保護された領域または一部に復号する。これで復号されたデータはＧＰＵ５０８によって動作可能な状態になる。メモリ制御装置は、ビデオ・カード上でのデータ転送が、保護された領域または保護についてある程度の互換性保護を有する領域間で実行されることを確実にする責務も負うことができる。すなわち、ビデオ・カード上でのデータ処理中にしばしばＧＰＵ５０８はビデオ・メモリ内のデータに対して（たとえば、混合オペレーション（blending operation）を実行することによって）操作することがあり、その結果生じたデータは異なるビデオ・メモリ位置に書き込まれることになる。この場合、そのビデオ・メモリ位置は、保護されていないかまたは異なるレベルで保護されるビデオ・メモリの領域であるかも知れない。この例においては、メモリ制御装置は、ビデオ・カード内でのデータ転送が暗号化されていないデータの保護を確実にする態様で実施されることを、保証することができる。これが如何に実行されるかについての例が、以下でより詳細に説明される。
【００５９】
鍵マネージャ５１８は、ビデオ・カード上のデータの暗号化および復号に使用される暗号鍵および復号鍵を制御する。一実施態様では、鍵マネージャ５１８は個別のチップを備える。鍵マネージャ５１８はメモリ制御装置と通信可能なようにリンクされ、様々な暗号鍵／復号鍵を使用してメモリ制御装置をプログラムすることができる。鍵マネージャ５１８とメモリ制御装置５１６との間の通信は、鍵マネージャがメモリ制御装置をプログラムできる唯一のエンティティであることを確実にするように、暗号化された認証済みの通信チャネルを介して、有利に、実行される。
【００６０】
ビデオ・カード５００は、データを復号するように構成されるかまたは構成可能な復号器５２０も含むことができる。たとえば、ビデオ・カード上で暗号化されていないデータを、保護されていないメモリ領域に書き込むことができる場合がある。たとえば、こうしたデータは、いわゆる「主表面」またはデスクトップ表面に書き込むことが可能であり、モニタ上での画像のレンダリングをするために、ＲＡＭＤＡＣ５１２によって使用されるデータを収容する。この場合、暗号化されていないデータが攻撃の対象とならないように保護されることが望ましい。したがって、データが保護されたメモリ領域から保護されていないメモリ領域に移動される場合、メモリ制御装置５１６はデータを暗号化することができる。この例では、鍵マネージャ５１８は、どの鍵が保護されていないメモリ領域内にある暗号化されたデータに関連付けられているかを追跡し、これを識別する。暗号化されたデータがＲＡＭＤＡＣ５１２に提供されることになる場合、次に鍵マネージャは、復号器５２０に対して、暗号化されたデータを復号するのにどの鍵を使用するかを指示することができる。次いで暗号化されたデータが復号器５２０に提供されて復号された後、その後の処理のためにＲＡＭＤＡＣ５１２に提供される。
【００６１】
あるいは、復号器を除去することが可能であり、ＲＡＭＤＡＣ５１２が復号機能を実行するように構成することが可能である。この場合、鍵マネージャ５１８はＲＡＭＤＡＣに対して、復号を実行するのにどの鍵を使用するかを指示することができる。
【００６２】
図６は、一実施形態にしたがって、ビデオ・カード５００（図５）の選択された構成要素を、６００で一般的により詳細に示す図である。ここでは、メモリ制御装置５１６は、暗号化されたデータをバス（この例ではＰＣＩまたはＡＧＰのいずれか）から受け取り、そのデータをビデオ・メモリ５１０に復号するように構成された、復号モジュール６０２を備える。さらに、メモリ保護テーブル６０４および等価決定テーブル（Equivalent Decision Table）６０６が提供される。
【００６３】
この例では、メモリ保護テーブル６０４は、暗号／復号鍵ペアをビデオ・メモリ５１０の個々の部分に関連付けるエントリを格納するテーブル部分６０４ａを含む。たとえば、暗号／復号鍵ペアＥ1／Ｄ1はメモリ部分６０８に関連付けられ、暗号／復号鍵ペアＥ2／Ｄ2はメモリ部分６１０に関連付けられるという具合である。ビデオ・メモリ内の復号されたデータがビデオ・カードから離れたシステム・メモリに書き込まれることになる場合、またはビデオ・カード上のデータがバス（ＰＣＩまたはＡＧＰバス）を介して提供されることになるその他のいずれかの場合には、ＣＰＵは、テーブル部分６０４ａ内の暗号鍵のうち１つを使用してそのデータが暗号化される処理を実行させることができる。その結果、暗号化されたデータがバス上に配置され、たとえばシステム・メモリに提供される。メモリ制御装置５１６がシステム・メモリからたとえば鍵Ｅ1で暗号化されている暗号化されたデータを受け取る場合、復号モジュール６０２は関連付けられた復号鍵Ｄ1の所在位置を突き止めて、その復号鍵Ｄ1を使用して、このデータをメモリ部分６０８に復号することができる。
【００６４】
ビデオ・メモリ５１０の保護部分はいくつか存在することができる。この例では、６０８−６１４と指定された４つの保護部分が存在する。これらの保護された部分にある暗号化されていないデータは、ＧＰＵ５０８（図５）によって通常の方法で処理することができる。ビデオ・メモリの保護された部分は、アクセス制御リストによって保護することができる。たとえば、メモリ保護テーブル６０４は、ビデオ・メモリの様々な部分についてアクセス制御リストを定義することができるテーブル部分６０４ｂを含む。ビデオ・メモリの各部分は、その関連付けられたアクセス制御リスト内で、どのエンティティがメモリ部分にアクセスできるかを定義しておくことができる。したがって、各メモリ部分のアクセス制御リストに格納された以外のエンティティによってどんなアクセスが試行されても、メモリ制御装置によって許可されることはない。
【００６５】
ビデオ・メモリ５１０は、保護されていない部分を含むことができることにも留意されたい。この例では、部分６１６−６２４が保護されていない。したがって、これらのメモリ部分に関連付けられた暗号／復号鍵ペアはない。
【００６６】
図７は、一実施形態に従った方法のステップを示す流れ図である。この方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの中で実施することができる。図示された例では、この方法は、図６に関連して記載されたようなシステムの少なくとも一部で、実施することができる。
【００６７】
ステップ７００は１つまたは複数の鍵ペアを提供する。それぞれの鍵ペアは、暗号鍵および関連付けられた復号鍵を備える。ステップ７０２は鍵ペアをビデオ・メモリの個々の部分に関連付ける。任意の好適な方法を使用して、鍵ペアとビデオ・メモリ部分とを関連付けることができる。図６の例では、複数の異なるエントリを有するメモリ保護テーブルが使用される。個々のテーブル・エントリは特定の鍵ペアに対応しており、各テーブル・エントリはビデオ・メモリの一部に関連付けられる。
【００６８】
ステップ７０４は鍵ペアの暗号鍵を使用して、暗号化されていないデータを暗号化する。たとえば、ビデオ・メモリ内の暗号化されていないデータがシステム・メモリに書き込まれることになる場合、ＣＰＵは、データが存在しているビデオ・メモリ部分に関連付けられた暗号鍵を使用してそのデータが暗号化される処理を実行させることができる。その後ステップ７０６は、暗号化されたデータをバスを介してたとえばシステム・メモリに送信する。
【００６９】
ステップ７０８はステップ７０２に続くものであり、鍵ペアの復号鍵を使用して、暗号化されたデータを復号する。たとえば、データが暗号鍵を使用して暗号化された後、システムのメモリに提供されると想定する。その暗号化されたデータをＧＰＵが必要とする場合、データはＣＰＵによってビデオ・カードに送信することができる。暗号化されたデータを受け取ると、メモリ制御装置は、データの暗号化に使用された暗号鍵に関連付けられた復号鍵の所在位置を突き止め、その復号鍵を使用してデータを復号することができる。その後ステップ７１０は、データを、復号鍵に関連付けられた関連するビデオ・メモリ部分に提供することができる。この方法では、データが１つまたは複数のシステム・バスを介して提供されることになる場合には必ず、データは保護されることになる。
【００７０】
等価決定テーブル６０６（図６）は、ビデオ・カードのメモリ５１０内でのデータ転送がデータの保護を維持する態様で実行されることを確実にするために提供され、メモリ制御装置５１６によって使用される。
【００７１】
一例として、図８について考察する。ＧＰＵがビデオ・カード上のデータを処理する場合、データをあるメモリ位置から別の位置へ移動させることが多い。たとえば、ＧＰＵが混合オペレーションを実行する場合、ビデオ・カード上の２つの異なるメモリ部分からデータを取り出し、このデータを混合した後に得られる混合済みのデータをビデオ・メモリのすべて合わせて異なる部分に書き込むことができる。これはＧＰＵオペレーション８００によって図に示されている。ここでは、ＧＰＵが２つの入力と１つの出力を有するオペレーションを実行していると想定する。入力はそれぞれがビデオ・メモリの保護された部分に格納されたデータに対応する。この例では、入力のうち１つが暗号鍵Ｅ1に関連付けられたビデオ・メモリの保護された部分に格納されており、他方の入力が暗号鍵Ｅ2に関連付けられたビデオ・メモリの保護された部分に格納されている（したがってＥ1およびＥ2入力）。オペレーションがいったん実行されると、得られた出力データは、暗号鍵Ｅ4に関連付けられたビデオ・メモリの保護された部分に格納されることになる。ここで、ＧＰＵがこのようなメモリ転送を実行する場合は必ず、メモリ制御装置５１６は、データがどこから入力し、どこに送付されて格納されるかを識別するのを確実にする。次にメモリ制御装置は、データに与えられている保護のレベルに関して、出力データが格納されることになるビデオ・メモリの部分が、その構成要素であるデータの入力元であるメモリ部分によって与えられる保護との整合性があることを確実にするためにチェックを行う。
【００７２】
この例では保護の整合性は、入力データが格納されるメモリ部分に関連付けられた鍵が、出力データを保持することになるメモリ部分に関連付けられた鍵と同じかまたは等価であることを確認することによって実現することができる。この例では、等価性は、メモリ部分に関連付けられた制限（restriction）、すなわちその個々のメモリ部分のいずれもが同じ保護レベルであるか、に基づいて決定することができる。たとえば２つの異なるコンテンツの部分を有する２つの異なるプログラムがある場合は、鍵は、等価でない可能性がある。たとえば、それぞれのコンテンツが異なる鍵で暗号化されていれば、その鍵に関連付けられたプログラムはコンテンツを共用することができない。この例では、暗号鍵は等価ではない。
【００７３】
様々なメモリ部分に関連付けられた鍵の等価性を確認する方法の１つが、テーブル６０６などの等価決定テーブルを使用する方法である。ここでは、テーブルはそれぞれの鍵に関するエントリを収容するマトリックスを定義する。マトリックス・セルの１つにある「Ｘ」は、鍵が等価であることを示すものである。たとえば、第１に鍵Ｅ1を見ると、この鍵はＥ1、Ｅ2、およびＥ4と等価である。したがって、図６で最もよく示されているように、データはメモリ部分６０８、６１０、および６１４の間で自由に転送することができる。ただし、鍵Ｅ1は鍵Ｅ3と等価ではない。したがって、データをメモリ部分６０８からメモリ部分６１２に転送することはできない。図８の例では、入力データはメモリ部分６０８および６１０から発生し、得られるデータはメモリ部分６１４に格納されることになるため、等価性は問題ではなくオペレーションは実施可能である。
【００７４】
図９は、一実施形態に従った方法のステップを示す流れ図である。この方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実施することができる。図示された例では、方法は、図６に関連して記載されたようなシステムの少なくとも一部で実施することができる。
【００７５】
ステップ９００は、ビデオ・カード上のビデオ・メモリ部分からデータを読み取る。このステップはＧＰＵによって実施することができる。ステップ９０２は、データが読み取られたビデオ・メモリ部分に関連付けられた鍵ペアを記録する。このステップは、メモリ制御装置によって実施することができる。ステップ９０４は、記録された鍵ペアが、ＧＰＵのオペレーションから得られた出力データの宛先として供されることになるビデオ・メモリ部分に関連付けられた鍵ペアと等価であるかどうかを確認する。鍵ペアが等価であれば、ステップ９０６はその出力データをビデオ・メモリの宛先部分に提供する。他方で、鍵ペアが等価でなければ、ステップ９０８は等価の鍵ペアを有するビデオ・メモリ宛先部分を見つけるか、あるいはおそらくステップ９１０がブランク・データを指定されたメモリ宛先に出力する。
【００７６】
例示的な第２のビデオ・カード実施形態
図１０は、他の実施形態に従った例示的なビデオ（またはグラフィック）カード１０００を示す図である。ここでは、図の一部が「ビデオ・カード」と指定されており、図の一部が「システム」と指定されている。こうした表記は、ビデオ・カードおよびシステム上にそれぞれ常駐する構成要素を指定することを意図するものである。図の「システム」側にはＣＰＵ１００２およびシステム・メモリ１００４が含まれる。システム・メモリ１００４内には、ビデオ・カード１０００で使用することが意図されたデータ１００６があることにも留意されたい。
【００７７】
この実施形態では、システム・メモリ１００４に存在するデータ１００６は暗号化されていない。ＣＰＵ１００２は、データがバスを介してビデオ・カードに送信されるときには必ずこれを暗号化するように構成される。こうしたことは、典型的には「暗号化メモリ転送」として知られるＣＰＵオペレーションによって達成される。したがって、暗号化されたデータはビデオ・メモリ５１０の保護されていない部分６２４に配置されることになる。この例では、データは暗号鍵Ｅ1を使用してＣＰＵによって暗号化される可能性がある。
【００７８】
ＧＰＵ５０８は暗号化されていないデータを処理するように構成されていることを想起されたい。したがって、ＧＰＵ５０８がビデオ・メモリ５１０の保護されていない部分にある暗号化されたデータを処理しようとすると、データを復号する必要がある。この実施形態では、ＧＰＵ５０８は、図では復号モジュール６０２で表される復号機能を収容する。鍵マネージャ５１８はＧＰＵ５０８と通信可能なようにリンクされ、適切な復号鍵を使用してＧＰＵをプログラムすることができる。もちろん、鍵マネージャとＧＰＵとの間の通信は、認証済みリンクを介して実行することができる。
【００７９】
したがって、ＧＰＵがビデオ・メモリ内の暗号化されたデータ１００６に対して動作しようとする場合、暗号化されたデータにアクセスして、これをビデオ・メモリの保護された部分、すなわちここでは保護された部分６１４に復号することができる。復号は、「復号メモリ転送」として知られるオペレーションを介して実施することができる。これで、このデータおよび他のデータはビデオ・メモリの保護された部分に入り、ＧＰＵは通常の方法でこれに対して自由に動作することができる。
【００８０】
この実施形態では、メモリ制御装置５１６は、アクセス制御リスト（具体的には図示せず）を介してビデオ・メモリの保護された部分へのアクセスを制御することによって、メモリ保護を実施することができる。したがって、ＧＰＵ５０８（またはその一部分）などのエンティティが保護されたビデオ・メモリ部分にアクセスしようとする場合は常に、メモリ制御装置５１６を介したアクセスが得られることになる。アクセス制御リストには、データの有する保護の種類およびこれにアクセスできるエンティティを記載することができる。たとえば、アクセス制御リストは、ＧＰＵのどの部分が、保護されたメモリにアクセスできるか、および、保護されたメモリを「所有」し、その結果アクセスを得る１つまたは複数のアプリケーションを定義することができる。
【００８１】
次に、ビデオ・メモリの保護された部分にあるデータがビデオ・メモリの保護されていない部分に移動する場合は、これを暗号化することができる。たとえば、メモリ部分６１４にあるデータが、保護されていないメモリ部分６２０（この例では、レンダリングのためにＲＡＭＤＡＣによって処理されることになるデスクトップ表面に対応する）に移動することになると仮定する。ＧＰＵ５０８は、メモリ制御装置５１６を介して保護されたメモリ部分にアクセスし、暗号化メモリ転送オペレーションを実行して、メモリ部分６２０にデータを暗号化することができる。暗号化されたデータが処理のためにＲＡＭＤＡＣに提供される場合、鍵マネージャ５１８は復号器５２０と通信し、メモリ部分６２０にある暗号化されたデータを復号するために復号器に適切な復号鍵を提供することができる。データを復号した後、復号器５２０は通常の方法で処理のためにＲＡＭＤＡＣにデータを提供することができる。
【００８２】
メモリ制御装置５１６は、等価決定テーブル（具体的には指定せず）を備えることに留意されたい。このテーブルは、概念上は図６および図８に関連して論じたテーブルと同様である。ただし、ここでは、ビデオ・メモリ５１０のそれぞれのメモリ部分に関連付けられたアクセス制御リストが、データがそれらの間で転送されるときに等価であることを確実にするのに、このテーブルは使用される。たとえば、メモリ部分６１４にあるデータがメモリ部分６２０に転送されるものと想定する。したがって、この例では、メモリ部分６１４に関連付けられたアクセス制御リストとメモリ部分６２０に関連付けられたアクセス制御リストとが等価であることを確実にするように、メモリ制御装置５１６は、チェックする。等価であれば、データ転送が実行される。
【００８３】
結論
上記で説明してきた様々な実施形態は、ビデオ・カードによって使用されるように意図されているデータは、そのデータがビデオ・カードとコンピュータ・システムとの間のバス（たとえばＰＣＩまたはＡＧＰバス）に提供されるときは常に暗号化されるように、暗号化されることができることを確実にするものである。したがって、バスを獲得するスヌーピング・デバイスまたは不正アプリケーションはデータにアクセスすることができず、その暗号化されていない形でのデータを盗むことができない。したがって、システムのビデオ・カードによって処理されることになるコンテンツに別のレベルの保護を提供することができる。
【００８４】
以上、本発明について、構造的特徴および／または方法論的ステップに特有の言語で述べてきたが、特許請求の範囲で定義されている本発明は、必ずしも記載された特有の特徴またはステップに限定されるものでないことを理解されよう。むしろ、特有の特徴およびステップは、記載の発明を実施する好ましい形態として開示されたものである。
【符号の説明】
【００８５】
１００、５００    ビデオ（またはグラフィック）カード
１０２、５０２    バス・コネクタ
１０４、５０４    モニタ・コネクタ
１０６、５０６    デジタル・ビデオ出力ソケット
１０８、５０８    グラフィック処理ユニット（ＧＰＵ）
１１０、５１０    オンボード・ビデオ・メモリ
１１２、５１２    ＲＡＭＤＡＣ
１１４、５１４    ビデオＢＩＯＳ
５１６    メモリ制御装置
５１８    鍵マネージャ
５２０    復号器
６０２    復号モジュール
６０４    メモリ保護テーブル
６０６    等価決定テーブル
１００２    システム側ＣＰＵ
１００４    システム・メモリ
【図１】
0004804565.tif 000002
【図２】
0004804565.tif 000003
【図３】
0004804565.tif 000004
【図４】
0004804565.tif 000005
【図５】
0004804565.tif 000006
【図６】
0004804565.tif 000007
【図７】
0004804565.tif 000008
【図８】
0004804565.tif 000009
【図９】
0004804565.tif 000010
【図１０】
0004804565.tif 000011