(57)【要約】【課題】不良ソフトウェアが、データを不正に入手できない方法およびシステムを提供する。【解決手段】ピクセルデータ処理チェーン内で、プログラムアクセス不能なポイントでデータの暗号解読を行う。【選択図】　　　　図６
2004062885.tif 000002
【特許請求の範囲】
【請求項１】
ビデオカード上の暗号化されたビデオデータを提供することと、
データ処理のうちで、暗号解読されたビデオデータへのプログラム的アクセスがないポイントで、前記暗号化されたビデオデータを暗号解読することと
を含むことを特徴とする方法。
【請求項２】
前記暗号解読の動作が、前記ビデオカード上のディスプレイコンバータへの前記暗号解読されたビデオデータの供給に先立って実行されることを特徴とする請求項１に記載の方法。
【請求項３】
前記暗号解読の動作が、前記ビデオカード上のＲＡＭＤＡＣへの前記暗号解読されたビデオデータの供給に先立って実行されることを特徴とする請求項１に記載の方法。
【請求項４】
前記暗号解読の動作が、前記ビデオカード上のハードウェアデクリプタによって実行されることを特徴とする請求項１に記載の方法。
【請求項５】
前記暗号解読の動作が、ビデオカードＧＰＵと前記ビデオカード上のＲＡＭＤＡＣとの中間のデクリプタによって実行されることを特徴とする請求項１に記載の方法。
【請求項６】
１つまたは複数のコンピュータによって実行される場合に、前記１つまたは複数のコンピュータに請求項１に記載の方法を実施させることを特徴とする１つまたは複数の組のコンピュータ可読命令。
【請求項７】
ビデオカード上の暗号化されたビデオデータを提供する手段と、
前記ビデオカード上で前記暗号化されたビデオデータを暗号解読する手段と、
前記暗号解読されたビデオデータへのソフトウェアアクセスを拒否する手段と
を含むことを特徴とするシステム。
【請求項８】
前記暗号化されたビデオデータを提供する手段は、ストリーム暗号を含むことを特徴とする請求項７に記載のシステム。
【請求項９】
前記暗号化されたビデオデータを提供する手段は、ブロック暗号を含むことを特徴とする請求項７に記載のシステム。
【請求項１０】
前記暗号解読する手段は、前記ビデオカード上のハードウェアデクリプタを含むことを特徴とする請求項７に記載のシステム。
【請求項１１】
モニタ上でレンダリングされるビデオデータを処理するグラフィックスプロセッサユニットと、
前記グラフィックスプロセッサユニットによって処理されるか処理されたデータを保持する、前記グラフィックスプロセッサユニットに関連して動作可能なメモリと、
ディジタルデータを、前記データを前記モニタ上でレンダリングする際に使用される信号に変換するディスプレイコンバータと、
前記ディスプレイコンバータに供給するためにピクセルデータを暗号解読するように構成されたデクリプタであって、前記デクリプタが、プログラム的アクセスがないデータ処理ポイントに配置される、デクリプタと
を含むことを特徴とするシステム。
【請求項１２】
前記メモリは、前記モニタ上でレンダリングされるデータを含むプライマリサーフェスを含み、前記プライマリサーフェスは、暗号化されたデータを配置することができる１つまたは複数のセキュア領域を含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
暗号解読機能を前記デクリプタに分け与えるように構成された前記ビデオカード上の制御プロセッサをさらに含むことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記制御プロセッサは、暗号化されたピクセルデータを暗号解読するために前記デクリプタに供給することができる１つまたは複数の鍵を管理する鍵マネージャを含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記制御プロセッサおよび前記デクリプタに通信的にリンクされるセキュアチャネルをさらに含むことを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記制御プロセッサは、前記ビデオカード上の別の集積回路チップを含むことを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記デクリプタは、前記ビデオカード上の別のコンポーネントを含むことを特徴とする請求項１１に記載のシステム。
【請求項１８】
ビデオカード上の、モニタ上でレンダリングされるビデオデータを処理するプロセッサ手段と、
前記ビデオカード上の、前記プロセッサ手段によって処理されるか処理されたデータを保持する、前記プロセッサ手段に関連して動作可能なメモリ手段と、
前記ビデオカード上の、ディジタルデータを、前記モニタ上で前記データをレンダリングするのに使用される信号に変換するコンバータ手段と、
前記ビデオカード上の、前記コンバータ手段に供給されるピクセルデータを暗号解読するデクリプタ手段と、
前記ビデオカード上の、１つまたは複数のソフトウェアアプリケーションによる暗号解読されたピクセルデータへのアクセスを拒否する手段と
を含むことを特徴とするシステム。
【請求項１９】
ビデオカードと、
その一部はモニタ上でレンダリングされるデータを含むプライマリサーフェスを含む、前記ビデオカード上のメモリと、
暗号化されたピクセルデータを保管する、前記プライマリサーフェス上の１つまたは複数のセキュア領域と、
前記１つまたは複数の領域に関連し、前記暗号化されたピクセルデータを暗号解読できるようにするように構成された少なくとも１つの鍵と
を含むことを特徴とするシステム。
【請求項２０】
個々のセキュア領域は、前記モニタ上で設けることができるセキュアウィンドウに対応することを特徴とする請求項１９に記載のシステム。
【請求項２１】
個々のセキュア領域は、個別に関連する鍵を有することを特徴とする請求項１９に記載のシステム。
【請求項２２】
それぞれは異なる鍵を有する複数のセキュア領域はあることを特徴とする請求項２１に記載のシステム。
【請求項２３】
関連する鍵を使用して前記暗号化されたピクセルデータを暗号解読するように構成された、前記ビデオカード上のデクリプタをさらに含むことを特徴とする請求項１９に記載のシステム。
【請求項２４】
前記デクリプタは、暗号解読されたピクセルデータへのプログラム的アクセスはない処理ポイントで前記暗号化されたピクセルデータを暗号解読することを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記デクリプタは、ハードウェアデクリプタを含むことを特徴とする請求項２３に記載のシステム。
【請求項２６】
前記ビデオカードは、認証可能であることを特徴とする請求項１９に記載のシステム。
【請求項２７】
前記ビデオカードは、認証に使用することができるディジタル証明書を含むことを特徴とする請求項２６に記載のシステム。
【請求項２８】
前記ビデオカードは、認証に関するチャレンジに応答するように構成されることを特徴とする請求項２６に記載のシステム。
【請求項２９】
前記ビデオカードは、１つまたは複数のセキュアアプリケーションとの通信を暗号化する鍵を含むことを特徴とする請求項１９に記載のシステム。
【請求項３０】
ビデオカードのメモリ内でプライマリサーフェスの１つまたは複数のセキュア領域を定義することと、
前記１つまたは複数のセキュア領域に保管されるピクセルデータを暗号化する際に使用するのに適する少なくとも１つの鍵を、前記１つまたは複数のセキュア領域に関連付けることと、
前記少なくとも１つの鍵を用いてピクセルデータを暗号化することと、
前記暗号化されたピクセルデータを前記１つまたは複数のセキュア領域に供給することと
を含むことを特徴とする方法。
【請求項３１】
前記１つまたは複数のセキュア領域は、形状において長方形であることを特徴とする請求項３０に記載の方法。
【請求項３２】
前記鍵は、ストリーム暗号を用いて暗号化するのに使用することができる鍵を含むことを特徴とする請求項３０に記載の方法。
【請求項３３】
前記鍵は、ブロック暗号を用いて暗号化するのに使用することができる鍵を含むことを特徴とする請求項３０に記載の方法。
【請求項３４】
前記定義する動作は、複数のセキュア領域を定義し、
関連付ける前記動作は、異なる鍵を各セキュア領域に関連付ける
ことを特徴とする請求項３０に記載の方法。
【請求項３５】
暗号化する前記動作が、前記１つまたは複数のセキュア領域に範囲を制限されるストリーム暗号を使用して実行されることを特徴とする請求項３０に記載の方法。
【請求項３６】
１つまたは複数のコンピュータによって実行される時に、前記１つまたは複数のコンピュータに請求項３０に記載の方法を実施させることを特徴とする１つまたは複数の組のコンピュータ可読命令。
【請求項３７】
ビデオカードのメモリ内でプライマリサーフェスの１つまたは複数のセキュア領域を定義する手段と、
前記１つまたは複数のセキュア領域に保管されるピクセルデータを暗号化する際に使用するのに適する少なくとも１つの鍵を、前記１つまたは複数のセキュア領域に関連付ける手段と、
前記少なくとも１つの鍵を用いてピクセルデータを暗号化する手段と、
前記暗号化されたピクセルデータを前記１つまたは複数のセキュア領域に供給する手段と
を含むことを特徴とするシステム。
【請求項３８】
ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供することと、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供することと、
前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読するのに前記鍵を使用することと
を含むことを特徴とする方法。
【請求項３９】
前記鍵を使用する動作は、前記暗号化されたデータへのプログラム的アクセスはない処理ポイントで起こることを特徴とする請求項３８に記載の方法。
【請求項４０】
前記鍵を提供する動作が、前記ビデオカード上の制御プロセッサによって実行されることを特徴とする請求項３８に記載の方法。
【請求項４１】
前記暗号化されたデータを暗号解読するのに前記鍵を使用する動作が、前記ビデオカード上のハードウェアデクリプタによって実行されることを特徴とする請求項３８に記載の方法。
【請求項４２】
前記暗号化されたデータを暗号解読するのに前記鍵を使用する動作が、前記セキュア領域のジオメトリを推論することができる前記ビデオカード上のデクリプタによって実行されることを特徴とする請求項３８に記載の方法。
【請求項４３】
ディスプレイスクリーンでのレンダリングのために前記暗号解読されたデータをディスプレイコンバータに供給することをさらに含むことを特徴とする請求項３８に記載の方法。
【請求項４４】
複数の異なるセキュア領域はあり、前記鍵を提供する動作は、各セキュア領域に関連する前記鍵を供給することを特徴とする請求項３８に記載の方法。
【請求項４５】
複数の異なるセキュア領域はあり、前記鍵を提供する動作は、複数の鍵を供給することを含み、各セキュア領域は、異なる鍵に関連することを特徴とする請求項３８に記載の方法。
【請求項４６】
暗号解読するのに前記鍵を使用する動作が、ストリーム暗号を使用して実行されることを特徴とする請求項３８に記載の方法。
【請求項４７】
暗号解読するのに前記鍵を使用する動作が、範囲を制限されたストリーム暗号を使用して実行されることを特徴とする請求項３８に記載の方法。
【請求項４８】
暗号解読するのに前記鍵を使用する動作が、ブロック暗号を使用して実行されることを特徴とする請求項３８に記載の方法。
【請求項４９】
１つまたは複数のコンピュータによって実行される場合に、前記１つまたは複数のコンピュータに請求項３８に記載の方法を実施させることを特徴とする１つまたは複数の組のコンピュータ可読命令。
【請求項５０】
ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供する手段と、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供する手段と、
前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読するのに前記鍵を使用する手段と
を含むことを特徴とするシステム。
【請求項５１】
ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供することであって、前記セキュア領域は関連するジオメトリを有する、提供することと、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供することと、
前記セキュア領域のジオメトリについて、前記ビデオカード上のデクリプタに知らせることと、
前記デクリプタに前記鍵を提供することと、
前記デクリプタを用いて、前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読することと
を含むことを特徴とする方法。
【請求項５２】
ディスプレイモニタに表示され、前記セキュア領域に関連するウィンドウが前記ディスプレイモニタ上の異なる位置へドラッグアンドドロップされることに応答して、知らせる前記動作が実行されることを特徴とする請求項５１に記載の方法。
【請求項５３】
１つまたは複数のコンピュータによって実行される場合に、前記１つまたは複数のコンピュータに請求項５１に記載の方法を実施させることを特徴とする１つまたは複数の組のコンピュータ可読命令。
【請求項５４】
ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供することと、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供することと、
前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読するのに前記鍵を使用することと、
前記データのいずれかが修正されたかどうかを検出することと
を含むことを特徴とする方法。
【請求項５５】
前記検出する動作が、暗号化されないデータがディスプレイモニタにレンダリングされる前に実行されることを特徴とする請求項５４に記載の方法。
【請求項５６】
前記検出する動作が、前記暗号化されたデータに関連する認証情報を使用して実行されることを特徴とする請求項５４に記載の方法。
【請求項５７】
前記認証情報は、所定のピクセルが所定の値を有することを要求されるセキュアデータフォーマットを含むことを特徴とする請求項５６に記載の方法。
【請求項５８】
前記検出する動作が、暗号化されないデータのハッシュについてのハッシュ計算を使用して実行されることを特徴とする請求項５４に記載の方法。
【請求項５９】
通知が、暗号化する実体に、セキュアチャネルを介して返されることを特徴とする請求項５４に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ビデオカードを使用してデータを処理する方法およびシステムに関する。
【０００２】
【従来の技術】
通常、コンピュータに常駐するコンテンツは、コンテンツを盗むか変更することを望む個人によって攻撃される可能性がある。１例として、映画スタジオのようなコンテンツ製作者またはウェブでコンテンツを公開するユーザなどを考慮されたい。通常、これらの個人は、ユーザがどのようにしてそれを見ることができるかに関する制限を有するビデオコンテンツを公開する。このコンテンツは、通常は、パーソナルコンピュータなどのコンピュータで表示するかレンダリングすることができる。不徳な個人および組織がそのようなビデオコンテンツを盗むか他の形態で不正に入手することを試みることによって、毎年膨大な時間、労力、および金銭が費やされる。さらに、個人が取引、たとえば銀行取引を行えるようにする電子商取引ソフトウェアの場合を考慮してほしい。ユーザが再検討し操作するためにディスプレイモニタに表示されるデータが、ユーザのコンピュータで実行される不良ソフトウェアアプリケーションによって攻撃される可能性がある。すなわち、不良なプログラムまたはデバイスが、パーソナルコンピュータなどのコンピュータでコンテンツが受信された後に、そのコンテンツを不適当に入手することを試みることができ、しばしば実際に試みる。
【０００３】
コンテンツセキュリティに関する１つの解決策に、さまざまなソフトウェアベースのディジタル著作権管理（ｄｉｇｉｔａｌ　ｒｉｇｈｔｓ　ｍａｎａｇｅｍｅｎｔ、ＤＲＭ）ソリューションを含めることができる。ここでの問題は、ソフトウェアレンダリングを行うソフトウェアベースの耐タンパで「観察が困難な」ＤＲＭシステムが、どれほどよいかと言うことではなく、最終的に、ビットがビデオカードに書き出され、その位置から他のソフトウェアによって「見る」ことができ、コピーさえできることである。これによって、脆弱性の１領域が提示される。したがって、ビデオコンテンツを処理するビデオカードを、ソフトウェア攻撃の対象にすることができる。
【０００４】
図１に、通常のコンピュータのポートに挿入されるバスコネクタ１０２を含む例示的なビデオ（またはグラフィックス）カード１００を示す。ビデオカード１００には、モニタに接続されるケーブルを受けるモニタコネクタ１０４（たとえば１５ピンプラグ）も含まれる。ビデオカード１００に、ビデオイメージをＬＣＤモニタ、フラットパネルモニタ、および類似物に送るのに使用することができるディジタルビデオアウトソケット１０６を含めることができる。
【０００５】
現代のビデオカードは、４つの主要コンポーネントすなわち、グラフィックスプロセッサユニット（ＧＰＵ）１０８、ビデオメモリ１１０、ランダムアクセスメモリディジタル−アナログ変換器（ＲＡＭＤＡＣ）１１２、および、ビデオＢＩＯＳ１１４に含めることができるドライバソフトウェアからなる。
【０００６】
ＧＰＵ１０８は、解像度、カラーデプス、およびモニタスクリーン上のイメージのレンダリングに関連するすべての要素のすべての態様を制御する専用グラフィックス処理チップである。コンピュータの中央処理装置またはＣＰＵ（図示せず）は、ドローイング命令およびデータの組を送り、これらが、グラフィックスカードのプロプラエタリドライバによって解釈され、カードのＧＰＵ１０８によって実行される。ＧＰＵ１０８は、ビットマップ転送およびペイント、ウィンドウのサイズ変更および再位置決め、線描、フォントのスケーリング、およびポリゴン描画などの動作を実行する。ＧＰＵ１０８は、システムのＣＰＵで実行されるソフトウェアよりはるかに高い速度でこれらのタスクをハードウェアで処理するように設計される。ＧＰＵは、フレームデータをフレームバッファ（またはオンボードのビデオメモリ１１０）に書き込む。ＧＰＵによって、システムのＣＰＵの作業負荷が大幅に減らされる。
【０００７】
ビデオイメージを保持するメモリを、フレームバッファとも称し、このメモリは、通常はビデオカード自体の上で実施される。この例では、フレームバッファが、ビデオカード上でメモリ１１０の形で実施される。早期のシステムでは、ビデオメモリが標準ＤＲＡＭで実施された。しかし、このメモリは、データの消失を避けるために継続的なデータのリフレッシュを必要とし、このリフレッシュ処理中に変更することができない。その結果は、特に現代のグラフィックスカードが必要とする非常に高いクロックスピードで、性能が大きく劣化することである。
【０００８】
ビデオカード自体でビデオメモリを実施することの長所は、特定のタスクにカスタマイズできることであり、実際に、これが、下記の新しいメモリ技術の増殖をもたらした。
【０００９】
・ビデオＲＡＭ（ＶＲＡＭ）：書込と読取を同時に行うことができる、特殊なタイプの二重ポートＤＲＡＭ。通常のＤＲＡＭよりはるかに低い頻度のリフレッシュを必要とし、その結果、性能がはるかに高い。
【００１０】
・ウィンドウＲＡＭ（ＷＲＡＭ）：Ｍａｔｒｏｘ社のＭｉｌｌｅｎｎｉｕｍカードで使用され、やはり二重ポート式であり、普通のＶＲＡＭよりわずかに高速に動作することができる。
【００１１】
・ＥＤＯ　ＤＲＡＭ：ＤＲＡＭより高い帯域幅を提供し、通常のＤＲＡＭより高い速度でクロッキングでき、読取／書込サイクルがより効率的に管理される。
【００１２】
・ＳＤＲＡＭ：ＥＤＯ　ＲＡＭに似ているが、メモリおよびグラフィックスチップが、データのラッチに使用される共通のクロックで動作し、ＳＤＲＡＭが通常のＥＤＯ　ＲＡＭより高速に動作できるようになるポイントが異なる。
【００１３】
・ＳＧＲＡＭ：ＳＤＲＡＭと同一であるが、ブロック書込およびビット単位書込もサポートし、これによって、これらの拡張された特徴をサポートするグラフィックスチップでよりよい性能を示す。
【００１４】
・ＤＲＤＲＡＭ：Ｄｉｒｅｃｔ　ＲＤＲＡＭは、完全に新規の、通常のＤＲＡＭに対する２０倍の性能向上が約束される汎用メモリアーキテクチャである。
【００１５】
いくつかの設計で、グラフィックス回路がマザーボード自体に統合され、フレームバッファのためにシステムのＲＡＭの一部が使用される。これを、「統合メモリアーキテクチャ（ｕｎｉｆｉｅｄ　ｍｅｍｏｒｙ　ａｒｃｈｉｔｅｃｔｕｒｅ）」と称し、これは、コスト削減だけの理由から使用され、低いグラフィックス性能につながる可能性がある。
【００１６】
ビデオメモリフレームバッファ内の情報は、ディジタルビットマップとして保管された、スクリーンに現れる物のイメージである。しかし、ビデオメモリにはディジタル情報が含まれるが、その出力媒体（モニタ）で、アナログ信号が使用される場合がある。アナログ信号は、「オン」信号または「オフ」信号以上のものを必要とする。というのは、アナログ信号は、電子銃がモニタの前面を横におよび下に走査する際に、電子銃をどこで、いつ、どの強度で光らせなければならないかを判定するのに使用されるからである。これは、下で説明するように、ＲＡＭＤＡＣ１１２が効果を示すところである。一部のＲＡＭＤＡＣは、ＬＣＤモニタなどのディジタルディスプレイ用のディジタルビデオインターフェース（ｄｉｇｉｔａｌ　ｖｉｄｅｏ　ｉｎｔｅｒｆａｃｅ、ＤＶＩ）出力もサポートする。そのような構成では、ＲＡＭＤＡＣが、内部ディジタル表現を、ディジタルディスプレイによって理解されるフォーマットに変換する。
【００１７】
ＲＡＭＤＡＣは、内部ディジタルデータを、ディスプレイによって理解されるフォーマットに変換するので、「ディスプレイコンバータ」の役割を演ずる。
【００１８】
ビデオカードにインストールされるビデオメモリの総量が、特定の解像度に必要でない場合があるが、余分のメモリは、しばしば、ＧＰＵ１０８の情報をキャッシングするのに使用される。たとえば、一般的に使用されるグラフィカルアイテム（テキストフォントおよびアイコンまたはイメージなど）のキャッシングによって、グラフィックスサブシステムが、新しい文字が書き込まれるたびにまたはアイコンが移動されるたびにこれらをロードする必要がなくなり、これによって性能が改善される。キャッシングされたイメージは、ＧＰＵによって提示されるイメージのシーケンスをキューに入れるのに使用することができ、これによって、他のタスクを実行するためにＣＰＵが解放される。
【００１９】
毎秒何回も、ＲＡＭＤＡＣ１１２は、ビデオメモリの内容を読み取り、信号に変換し、その信号を、ビデオケーブルを介してモニタに送る。アナログディスプレイの場合に、通常は、ＣＲＴが色の完全なスペクトルを作成するのに使用する３原色のそれぞれについて１つのディジタル−アナログ変換器（ＤＡＣ）がある。ディジタルディスプレイの場合に、ＲＡＭＤＡＣは、出力デバイスによって解釈され、表示される単一のＲＧＢデータストリームを出力する。所期の結果は、単一ピクセルの色を作るのに必要な正しい混合である。ＲＡＭＤＡＣ１１２が情報を変換できる速度、およびＧＰＵ１０８自体の設計によって、グラフィックスカードがサポートできるリフレッシュレートの範囲が指示される。ＲＡＭＤＡＣ１１２によって、その内部アーキテクチャに依存して、所与の解像度で使用可能な色の数も指示される。
【００２０】
バスコネクタ１０２は、ビデオカードに接続するのに使用される１つまたは複数のバスをサポートすることができる。たとえば、Ａｃｃｅｌｅｒａｔｅｄ　Ｇｒａｐｈｉｃｓ　Ｐｏｒｔ（ＡＧＰ）バスによって、ビデオカードからシステムメモリに直接にアクセスできるようにすることができる。直接メモリアクセスは、ピーク帯域幅をＰｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスより数倍高速にするのに役立つ。これによって、ビデオカードのＧＰＵがシステムメモリにアクセスしている間に、システムのＣＰＵが他のタスクを実行できるようにすることができる。
【００２１】
動作中に、オンボードビデオメモリに含まれるデータを、コンピュータのシステムメモリに供給することができ、それがシステムのメモリの一部であるかのように管理することができる。これには、コンピュータのメモリマネージャが使用する仮想メモリ管理技法などが含まれる。さらに、システムのメモリに含まれるデータが、ビデオカードでのグラフィックス動作に必要な場合に、そのデータを、バス（ＰＣＩバスまたはＡＧＰバスなど）を介してビデオカードに送り、オンボードビデオメモリ１１０に保管することができる。そこで、上で説明したように、ＧＰＵ１０８によってデータにアクセスし、操作することができる。
【００２２】
【発明が解決しようとする課題】
本発明は、データを保護する方法およびシステムの提供に関連する懸念から生じた。具体的に言うと、本発明は、ソフトウェア攻撃、特にユーザの計算機で実行される不良アプリケーションによって行われる攻撃に耐える方法およびシステムを提供することに関連する懸念から生じた。
【００２３】
本発明の目的は、ホストコンピュータで実行されるソフトウェアにセキュアチャネルを供給する方法およびシステムを提供することである。
【００２４】
【課題を解決するための手段】
この方法およびシステムは、ホストコンピュータで実行される不良ソフトウェアがデータを不正に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに対する解決策を提供する。いくつかの実施形態で、機密に保つことができる（信頼されないソフトウェアアプリケーションがディスプレイスクリーンからそのデータを読み取ることができないという点で）ピクセルデータを提供することができる。さらに、他の実施形態では、ピクセルデータが不適当に操作されたかどうかを検出することによって、ピクセルデータの保全性を保つことができる。
【００２５】
さまざまな実施形態が暗号解読エンジンに基づいており、これは暗号解読されたピクセルデータへのプログラム的アクセスを拒否するように、ビデオカード上に配置され、ビデオ処理チェーンの非常に後の方に位置する。
【００２６】
【発明の実施の形態】
例示的コンピュータシステム
図２に、下で説明するシステムおよび関連する方法を実施することができる、適切なコンピューティング環境２００の例を示す。
【００２７】
コンピューティング環境２００が、適切なコンピューティング環境の１つの例にすぎず、媒体処理システムの使用の範囲または機能性に関する制限を暗示することを意図されていないことを諒解されたい。また、コンピューティング環境２００を、例示的コンピューティング環境２００に図示された任意のコンポーネントまたはその組合せに関する依存性または要件を有するものと解釈してもならない。
【００２８】
さまざまな説明される実施形態は、多数の他の汎用または特殊目的のコンピューティング環境またはコンピューティング構成と共に動作することができる。媒体処理システムと共に使用するのに適する可能性がある周知のコンピューティングシステム、コンピューティング環境、および／またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドデバイス、ラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、および類似物が含まれるが、これに制限はされない。
【００２９】
ある実施形態では、システムおよび関連する方法を、プログラムモジュールなどの、コンピュータによって実行されるコンピュータ実行可能命令の全般的な文脈で説明することもできる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。実施形態を、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリストレージデバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
【００３０】
図２に示された例の実施形態によれば、コンピューティングシステム２００は、１つまたは複数のプロセッサまたは処理ユニット２０２、システムメモリ２０４、および、システムメモリ２０４を含むさまざまなシステムコンポーネントをプロセッサ２０２に結合するバス２０６を含むものとして図示されている。
【００３１】
バス２０６は、メモリバスまたはメモリコントローラ、周辺バス、ａｃｃｅｌｅｒａｔｅｄ　ｇｒａｐｈｉｃｓ　ｐｏｒｔ、および、さまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む複数のタイプのバスアーキテクチャの任意の１つまたは複数を表すことが意図されている。制限ではなく例として、そのようなアーキテクチャに、Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ　ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、およびメザニンバスとも称するＰｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バスが含まれる。
【００３２】
コンピュータ２００には、通常は、さまざまなコンピュータ可読媒体が含まれる。そのような媒体は、コンピュータ２００によってローカルにおよび／またはリモートにアクセス可能なすべての使用可能な媒体とすることができ、これには、揮発性媒体および不揮発性媒体と、取外し可能媒体および取外し不能媒体の両方が含まれる。
【００３３】
図２では、システムメモリ２０４に、ランダムアクセスメモリ（ＲＡＭ）２１０などの揮発性の形および／または読取専用メモリ（ＲＯＭ）２０８の形の不揮発性メモリの形のコンピュータ可読媒体が含まれる。起動中などにコンピュータ２００内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）２１２が、ＲＯＭ２０８に保管される。ＲＡＭ２１０には、通常は、処理ユニット２０２から即座にアクセス可能および／または処理ユニット２０２によって現在操作されるデータおよび／またはプログラムモジュールが含まれる。
【００３４】
コンピュータ２００に、さらに、他の取外し可能／取外し不能の、揮発性／不揮発性のコンピュータ記憶媒体を含めることができる。例としてのみ、図２に、取外し不能不揮発性磁気媒体（図示せず、通常は「ハードドライブ」と称する）から読み取り、これに書き込むハードディスクドライブ２２８、取外し可能不揮発性磁気ディスク２３２（たとえば「フロッピディスク」）から読み取り、これに書き込む磁気ディスクドライブ２３０、および、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光学媒体などの取外し可能不揮発性光ディスク２３６から読み取り、これに書き込む光ディスクドライブ２３４を示す。ハードディスクドライブ２２８、磁気ディスクドライブ２３０、および光ディスクドライブ２３４は、それぞれ、１つまたは複数のインターフェース２２６によってバス２０６に接続される。
【００３５】
ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ２００の、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供する。本明細書で説明する例示的環境では、ハードディスク２２８、取外し可能磁気ディスク２３２、および取外し可能光ディスク２３６が使用されるが、磁気カセット、フラッシュメモリカード、ディジタル多用途ディスク、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、および類似物などの、コンピュータによってアクセス可能なデータを保管することができる他のタイプのコンピュータ可読媒体も、例示的オペレーティング環境で使用できることが、当業者によって諒解されなければならない。
【００３６】
複数のプログラムモジュールを、ハードディスク２２８、磁気ディスク２３２、光ディスク２３６、ＲＯＭ２０８、またはＲＡＭ２１０に保管することができ、このプログラムモジュールには、制限ではなく例として、オペレーティングシステム２１４、１つまたは複数のアプリケーションプログラム２１６（たとえば、マルチメディアアプリケーションプログラム２２４）、他のプログラムモジュール２１８、およびプログラムデータ２２０が含まれる。ユーザは、キーボード２３８およびポインティングデバイス２４０（たとえば「マウス」）などの入力デバイスを介してコンピュータ２００にコマンドおよび情報を入力することができる。他の入力デバイスに、オーディオ／ビデオ入力デバイス２５３、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信用パラボラアンテナ、シリアルポート、スキャナ、または類似物（図示せず）を含めることができる。これらおよび他の入力デバイスは、バス２０６に結合された入力インターフェース２４２を介して処理ユニット２０２に接続されるが、パラレルポート、ゲームポート、またはｕｎｉｖｅｒｓａｌ　ｓｅｒｉａｌ　ｂｕｓ（ＵＳＢ）などの他のインターフェース構造およびバス構造によって接続することができる。
【００３７】
モニタ２５６または他のタイプのディスプレイデバイスも、ビデオアダプタまたはビデオ／グラフィックスカード２４４などのインターフェースを介してバス２０６に接続される。モニタのほかに、パーソナルコンピュータには、通常は、スピーカおよびプリンタなど、出力周辺インターフェース２４６を介して接続することができる他の周辺出力デバイス（図示せず）が含まれる。
【００３８】
コンピュータ２００は、リモートコンピュータ２５０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ２５０に、コンピュータに関して本明細書で説明する要素および特徴の多くまたはすべてを含めることができる。
【００３９】
図２からわかるように、コンピューティングシステム２００は、ローカルエリアネットワーク（ＬＡＮ）２５１および一般的な広域ネットワーク（ＷＡＮ）２５２を介してリモートデバイス（たとえばリモートコンピュータ２５０）に通信的に結合される。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
【００４０】
ＬＡＮネットワーキング環境で使用される場合に、コンピュータ２００は、適切なネットワークインターフェースまたはネットワークアダプタ２４８を介してＬＡＮ２５１に接続される。ＷＡＮネットワーキング環境で使用される場合に、コンピュータ２００に、通常は、モデム２５４またはＷＡＮ２５２を介する通信を確立する他の手段が含まれる。モデム２５４は、内蔵または外付けとすることができるが、ユーザ入力インターフェース２４２または他の適当な機構を介してシステムバス２０６に接続することができる。
【００４１】
ネットワーク化された環境では、パーソナルコンピュータ２００に関して図示されたプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに保管することができる。制限ではなく例として、図２に、リモートコンピュータ２５０のメモリデバイスに常駐するものとしてリモートアプリケーションプログラム２１６を示す。図示され説明されたネットワーク接続が、例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用することができることを諒解されたい。
【００４２】
概要
本明細書で説明するさまざまな方法およびシステムは、ホストコンピュータで実行されるソフトウェアにセキュアチャネルを供給することを対象とする。この方法およびシステムは、ホストコンピュータで実行される不良ソフトウェアが、データを不正に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに対する解決策を提供する。
【００４３】
さまざまな実施形態によって、データを、ユーザが対話するためにディスプレイスクリーンにセキュアにレンダリングできるセキュア実行環境を提供することができる。説明される実施形態は、他の特性のうちでも、下記の特性の一方または両方を実施することができる。
【００４４】
第１の特性は、たとえばビデオカードに存在するピクセルデータなどのデータを、機密に保つことができることである。これは、信頼されないソフトウェアアプリケーション（または不良アプリケーション）が、ディスプレイスクリーンまたはビデオメモリからデータを読み取れないことを意味する。機密性態様は、ビデオデータまたはピクセルデータをレンダリングする場合に、そのコンピュータで動作する「クラッキングツール（ｃｒａｃｋｉｎｇ　ｔｏｏｌ）」がビデオデータを読み取れない形でそのビデオデータをビデオカードに送ることができることが望ましいので、ディジタルワークプレースアリーナ（ｄｉｇｉｔａｌ　ｗｏｒｋｐｌａｃｅ　ａｒｅｎａ）で有用である。たとえば、ユーザが、暗号化された形でビデオデータを受信できるようにするセキュア電子メールプログラムで作業していると考えられたい。さまざまな実施形態によって、不良アプリケーションがデータにアクセスできる危険性なしに、ディスプレイスクリーンにデータをレンダリングできるようにすることができる。
【００４５】
第２の特性は、保全性である。これは、基本的に、信頼されないソフトウェア（不良ソフトウェア）が、ディスプレイの一部に表示されるデータを操作できることが望まれないことを意味する。たとえば、ユーザが、自分のコンピュータで実行されるソフトウェアを介してある実体に１０ドル支払う手配をする電子商取引の設定を考えられたい。ユーザは、単純に、自分のディスプレイスクリーンに表示されるウィンドウに金額をタイプすることができる。しかし、不良アプリケーションが、「１０ドル」を「１０００ドル」に変更することが可能である。理解できるように、これは望ましくなく、ユーザは、意図したものより高額の支払いを許可したことになる。
【００４６】
さらに、ある信頼されないソフトウェアが、何らかの形でデータを不適切に操作する場合に、これが行われたことを知らせることができることが望ましい。したがって、下で説明する実施形態の一部で、データ操作を検出できる手段を提供する。
【００４７】
例示的実施形態
下で説明する実施形態は、セキュアビデオ出力すなわち、ソフトウェア攻撃を許さないビデオ出力の提供を対象とする。さまざまな実施形態で、全スクリーンの保護が排除されるのではないが、スクリーン領域そのものの全体ではなく、ユーザのディスプレイスクリーン上の領域（すなわちウィンドウ）に選択的に適用できるウィンドウベースの保護を提供することができる。セキュアビデオ出力は、通常は、信頼されないソフトウェアによって読み取ることができない。この挙動によって、プレミアムコンテンツ（たとえば、ビデオ、書籍）などのコンテンツの保護ならびにさまざまな一般的な電子商取引アプリケーションおよびセキュリティアプリケーションが提供される。
【００４８】
さらに、さまざまな実施形態で、信頼されないダイアログによって隠す（部分的にまたは完全にのいずれか）ことが可能ではないいわゆるセキュアダイアログを提供することができる。この挙動は、一般の電子商取引トランザクションの文脈で最も有用である。
【００４９】
下で説明する実施形態は、セキュアビデオ出力を提供する暗号ベースの解決策である。さまざまな実施形態の長所は、実施形態が、通常は実施が簡単であり、既存のソフトウェアアーキテクチャに対する影響を事実上有しないことである。
【００５０】
これから説明する実施形態のいくつかは、暗号解読エンジンに基づいており、これはビデオカード上に配置され、ビデオ処理チェーンの非常に後の方に位置する。本明細書で説明する例では、実施形態の多くの態様が、ハードウェアで実施され、他の態様は、ファームウェアおよびソフトウェアでも実施することができる。
【００５１】
発明的実施形態の望ましい特徴は、ユーザのディスプレイスクリーンに表示されるさまざまなデータが、暗号化されることである。したがって、データを盗むことを対象とする攻撃は、暗号化されたデータが盗まれることだけをもたらす。暗号化技法は、盗まれた暗号化されたデータが、暗号解読が数学的に実行不可能になるように使用することができる。さらに、暗号化されたデータの暗号解読は、処理チェーン内の、表示される暗号解読されたビットへのプログラム的アクセスがなくなる点で行われる。すなわち、暗号解読されたビットへのソフトウェアアクセスがなく、その結果、ユーザのコンピュータで実行される不良ソフトウェアが、暗号解読されたビットにアクセスできなくなる。
【００５２】
一実施形態では、デクリプタ（ｄｅｃｒｙｐｔｏｒ）が、ビデオカード上に置かれ、ＧＰＵとディスプレイコンバータ（たとえばＲＡＭＤＡＣ）の中間に配置される。デクリプタは、ハードウェアで実施されることが望ましく、ビデオカードがフレームバッファをディスプレイコンバータにラスタ変換している際に「リアルタイム」で暗号化されたデータを処理することができる。
【００５３】
例示的アーキテクチャ
図３に、一実施形態による例示的なビデオ（またはグラフィックス）カード３００を示す。カード３００には、通常のコンピュータのポートに挿入されるバスコネクタ３０２が含まれる。ビデオカード３００には、モニタに接続されるケーブルを受けるモニタコネクタ３０４（たとえば１５ピンプラグ）も含まれる。ビデオカード３００に、ビデオイメージをディジタルディスプレイおよび類似物に送るのに使用することができるディジタルビデオアウト（たとえばＤＶＩ）ソケット３０６を含めることができるが、これは必要ではない。
【００５４】
図１のビデオカードと同様に、ビデオカード３００には、グラフィックス処理ユニット（ＧＰＵ）３０８、ビデオメモリ３１０、ディスプレイコンバータまたはランダムアクセスメモリディジタル−アナログ変換器（ＲＡＭＤＡＣ）３１２、およびビデオＢＩＯＳ３１４に含めることができるドライバソフトウェアが含まれる。
【００５５】
ＧＰＵ３０８は、解像度、カラーデプス、およびモニタスクリーン上のイメージのレンダリングに関連するすべての要素のすべての態様を制御する専用グラフィックス処理チップである。メモリコントローラ（時々ＧＰＵに統合される）が、ビデオカードのメモリを管理する。コンピュータの中央処理装置またはＣＰＵ（図示せず）は、ドローイング命令およびデータの組を送り、これらが、グラフィックスカードのプロプラエタリドライバによって解釈され、カードのＧＰＵ３０８によって実行される。ＧＰＵ３０８は、ビットマップ転送およびペイント、ウィンドウのサイズ変更および再位置決め、線描、フォントのスケーリング、およびポリゴン描画などの動作を実行する。ＧＰＵは、フレームデータをフレームバッファ（またはオンボードのビデオメモリ３１０）に書き込むことができる。
【００５６】
ビデオメモリフレームバッファ内の情報は、ディジタルビットマップとして保管された、スクリーンに現れるもののイメージである。ＲＡＭＤＡＣ３１２は、上で説明したように、ディジタルビットマップを、モニタでのレンダリングに使用できる形に変換するのに使用される。
【００５７】
これらのコンポーネントのほかに、この実施形態では、ビデオカード３００に、メモリコントローラ３１６、および、鍵マネージャ３１９を含めることができる制御プロセッサ３１８が含まれる。ビデオカードには、デクリプタ３２０も含まれる。これらのコンポーネントは、適切なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで実施することができる。
【００５８】
メモリコントローラ３１６は、ビデオカード上のデータを受け取り、ビデオメモリ３１０内のデータを管理する。メモリコントローラは、ビデオカードとシステムメモリの間のデータ転送の管理の責任も負うことができる。
【００５９】
制御プロセッサ３１８が設けられ、制御プロセッサ３１８に、鍵マネージャ３１９を含めることができる。制御プロセッサは、ビデオカード上で行われる暗号機能を編成する責任を負うことができる。たとえば、制御プロセッサ３１８は、専用バスまたはセキュアチャネルを介して、デクリプタ３２０と通信して、セキュリティの理由から暗号化されたピクセルデータを正しく暗号解読するのに必要な暗号解読機能をデクリプタに持たせることができる。制御プロセッサ３１８は、鍵マネージャ３１９を介して、関連するピクセルデータの暗号化および暗号解読に関連する鍵を管理することができる。いくつかの実施形態で、制御プロセッサを、ビデオカード上の別の集積回路チップとして実施することができる。
【００６０】
デクリプタ３２０は、関連するピクセルデータを暗号解読するように構成されるか、構成可能である。たとえば、下で詳細に説明するように、保護されなければならないデータを、暗号化し、モニタでのイメージのレンダリングにＲＡＭＤＡＣ３１２によって使用されるデータを含むビデオカードのメモリのいわゆる「プライマリサーフェス」またはデスクトップサーフェスの部分を含むセキュア領域に書き込むことができる。暗号化されたイメージは、プライマリサーフェスにコピーされる前に、ビデオメモリ内の一時位置にコピーすることができる。制御プロセッサ３１８は、データの暗号化に使用される暗号化鍵をセットすることができ、暗号化されたピクセルデータの暗号解読に使用するために暗号解読鍵をデクリプタ３２０に供給することができる。データが暗号解読されたならば、そのデータを、さらなる処理のためにＲＡＭＤＡＣに渡すことができる。
【００６１】
デクリプタが、別のコンポーネントとして図示されているが、効果的にデクリプタとして動作するように、ＲＡＭＤＡＣに適当な暗号解読機能性を与えることができることを諒解し、理解されたい。
【００６２】
動作中に、セキュアなまたは信頼されるソフトウェアアプリケーション３２２によって、デクリプタ３２０とそのソフトウェアアプリケーションの間の共用鍵をセットアップすることができる。このソフトウェアアプリケーションは、その後、その鍵を使用して、メモリ（ビデオメモリ３１０またはシステムメモリのいずれか）に保管することができる暗号化されたピクセルデータを生成することができる。
【００６３】
通常は、ピクセルデータをプライマリサーフェスまたはフレームバッファの保護された領域に書き込むことができる２つの異なる形がある。第１に、ピクセルデータを、メモリコントローラが準備する「ｍｏｖｅ」動作を介してフレームバッファに直接に書き込むことができる。第２に、アプリケーション（セキュアアプリケーション３２２など）が、システムメモリ内で保護されるピクセルデータを組み立てることができ、このピクセルデータは、システムメモリ内で暗号化される。システムメモリ内の暗号化されたデータは、最終的に、暗号解読およびレンダリングのためにプライマリサーフェスにコピーされる。
【００６４】
制御プロセッサは、ピクセルデータをＲＡＭＤＡＣ３１２に送る前（またはモニタにレンダリングする前）にそのデータを暗号解読するのにどの鍵を使用するかをデクリプタ３２０が知っていることを保証することができる。
【００６５】
したがって、この例では、１つまたは複数の鍵を信頼される実体の間で共用できるようにする機構がある。データは、ビデオカード上で暗号化し、データ処理チェーンのある点（ポイント）で暗号解読することができ、その結果、ディスプレイモニタにレンダリングされなければならない暗号化されないデータが、ソフトウェア攻撃を許さなくなる。プライマリサーフェスの保護された領域から暗号化されたデータを読み取ることを試みる信頼されない実体または不良の実体は、それにとって効果的に役に立たない暗号化されたデータだけを読み取る。さらに、これは、ＶＲＡＭメモリが仮想メモリ管理技法を介してシステムメモリにマッピングされる場合にも成り立つ。したがって、プライマリサーフェスの保護された領域内にあると思われるデータが、ビデオカード上にあるか、またはシステムのメモリにマッピングされるかのいずれであれ、そのデータは、暗号化され、したがって保護される。
【００６６】
セキュアウィンドウ
一実施形態では、１つまたは複数のセキュアウィンドウが設けられ、これを使用して、ユーザのディスプレイスクリーンに機密データを表示することができる。ユーザのディスプレイスクリーン上のセキュアウィンドウは、ビデオカードのメモリ（または、仮想メモリ管理技法が使用される場合に、システムメモリ）内のプライマリサーフェスのセキュア領域に関連し、対応する。例として、図４を検討されたい。
【００６７】
この図には、ビデオカードのプライマリサーフェスの概略表現が、全般的に４００に示されている。プライマリサーフェス４００には、暗号化されないデータを含む領域４０２（陰付き）と、暗号化されたデータを含む１つまたは複数の領域が含まれる。この特定の例では、２つの例示的なセキュア領域４０４および４０６に、暗号化されたデータを含めることができる。各セキュア領域の対応するセキュアウィンドウが、それぞれ４０４ａおよび４０６ａに示されている。
【００６８】
この実施形態では、デクリプタ３２０（図３）が、領域４０２内のピクセルデータのすべてを、修正（すなわち暗号化）なしで渡すように構成される。すなわち、領域４０２に存在するデータは暗号化されないので、デクリプタ３２０がそのデータを暗号解読する必要がない。しかし、デクリプタは、領域４０４および４０６に存在する暗号化されたデータを暗号解読する。
【００６９】
領域４０４および４０６内のピクセルデータは、セキュア領域に関連する鍵を使用して、デクリプタによって暗号解読することができる。いくつかの実施形態では、単一の鍵を、すべてのセキュア領域に関連付けることができる。他の実施形態では、各セキュア領域が、それ自体の関連する鍵を有することができる。セキュア領域ごとに別の鍵を有する理由の１つが、あるセキュア領域が、他のセキュア領域にアクセスできるあるアプリケーションに関連しない場合があることである。たとえば、セキュア電子メールアプリケーションが、あるセキュア領域に関連し、そのセキュア領域に暗号化された電子メールが存在すると仮定する。また、電子商取引アプリケーションが、異なるセキュア領域に関連すると仮定する。電子メールアプリケーションが、電子商取引アプリケーションに関連するセキュア領域にアクセスできる理由は、実際にはない。それでも、セキュア領域のすべてについて１つの鍵だけがある場合には、おそらくは、あるセキュア領域にアクセスできるすべてのアプリケーションが、他のすべてのセキュア領域にアクセスすることができる。したがって、セキュア領域ごとに異なる鍵を設けることによって、各セキュア領域へのアクセスが、アクセスを有することができなければならないアプリケーションだけに制限される。
【００７０】
その代わりに、別の実施形態では、中央の実体（「ミキサ」または「コンポジタ」）が、複数の領域をとり、それらを、ディスプレイハードウェアによって暗号解読される共通鍵にトランスクリプトすることができる。各アプリケーションが、コンポジタ実体を信頼しなければならない。
【００７１】
図５は、一実施形態による暗号化方法のステップを説明する流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【００７２】
ステップ５００では、プライマリサーフェスの１つまたは複数のセキュア領域を定義する。領域に、任意の適当な形状およびサイズを含めることができる。上の例では、セキュア領域が、長方形の形状である。領域は、ディスプレイスクリーンにレンダリングされた場合にディスプレイスクリーン全体を占めるのに必要な寸法より小さい寸法であることが望ましい。ステップ５０２で、プライマリサーフェスの個々のセキュア領域に、少なくとも１つの鍵を関連付ける。１つまたは複数の鍵を使用して、セキュア領域に存在するピクセルデータを暗号化し、および／または暗号解読することができる。ステップ５０４では、１つまたは複数の鍵を使用してピクセルデータを暗号化する。このステップは、信頼されるシステムソフトウェア、ファームウェア、および／またはハードウェアによって実施することができる。たとえば、アプリケーション３２２などのセキュアアプリケーションが、ピクセルデータの暗号化を引き起こすことができる。ステップ５０６では、暗号化されたピクセルデータを、プライマリサーフェスのセキュア領域に書き込むか他の形で移動する。ピクセルデータを暗号化したならば、基礎となる暗号解読されたピクセルデータが、窃盗から保護されることに留意されたい。
【００７３】
図６は、一実施形態による暗号解読方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【００７４】
ステップ６００で、ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを供給する。ステップ６０２で、セキュア領域に関連する鍵を供給する。このステップは、制御プロセッサ３１８（図３）によって実施することができる。たとえば、制御プロセッサによって、暗号化されたピクセルデータの暗号解読に使用するために、デクリプタに１つまたは複数の鍵を供給することができる。ステップ６０４で、鍵を使用して、プライマリサーフェスのセキュア領域内の暗号化されたデータを暗号解読する。このステップは、デクリプタ３２０（図３）によって実施することができる。ピクセルデータ処理チェーン内で、暗号解読が行われる点（ポイント）が、プログラム的にアクセス不能であることに留意されたい。したがって、暗号解読されたピクセルデータは、ソフトウェア攻撃から保護される。ステップ６０６で、暗号解読されたデータを、さらなる処理のためにディスプレイコンバータに供給し、このさらなる処理に、ユーザのディスプレイスクリーンへのピクセルデータのレンダリングが含まれる。
【００７５】
実施形態の例
一実施形態では、暗号化および暗号解読を、公開鍵（ｐｕｂｌｉｃ　ｋｅｙ）ベースのエンジンを使用して行うことができる。制御プロトコルを用いて、セキュリティアプリケーションなどのソフトウェアが、コマンドを暗号化された形で制御プロセッサ３１８（図３）に送ることができ、コマンドが実行されたことを保証するために暗号の知識を受け取ることができるようにすることができる。
【００７６】
適切なコマンドセットならばどれでも使用することができる。例として、下記のコマンド（またはこれらに類似するコマンド）を使用することができる。
・ＧｅｔＰＫ（）　デバイス公開暗号鍵を返す
・ＳｅｔＳｅｃ（）　セキュア領域の形状およびその領域形状の暗号化鍵をセットする。
・ＣｌｅａｒＳｅｃ（）　領域の暗号化をクリアする
【００７７】
いくつかの実施形態で、デクリプタ３２０は、セキュア領域のジオメトリを推論することができ、その結果、領域内の暗号化されたピクセルデータを暗号解読できるようになる。もう１つの実施形態では、デクリプタに、ジオメトリについて知らせることができる。これは、たとえば、セキュアウィンドウが、ユーザのディスプレイスクリーンの異なる位置にドラッグアンドドロップされる場合に有用になる可能性がある。たとえば、ＧＰＵ３０８が、ジオメトリプロセッサ（特に図示せず）を実施することができ、このジオメトリプロセッサが、プライマリサーフェスのセキュア領域およびこれらの領域に関連するさまざまなセキュリティデータのリストを維持する。セキュリティデータには、領域のｘおよびｙ座標、領域の幅および高さの寸法、および特定の領域に関連する鍵を含めることができる。デクリプタ３２０は、このセキュリティデータについて通知を受けることができ、その結果、ピクセルデータの処理を開始する場合に、特定のピクセルがこれらの領域の１つに属し、暗号解読を必要とするかどうか、または、特定のピクセルデータをＲＡＭＤＡＣにそのまま渡さなければならないかどうかを知る。セキュアウィンドウが移動される場合に、ジオメトリプロセッサが、セキュリティウィンドウの新しい座標についてデクリプタに通知することができる。
【００７８】
１つの例のアーキテクチャでは、公開鍵および制御機能性を、オンボードフラッシュメモリ（「スマートカード」に類似する）を有する別個の外部デバイスにモジュール化することができる。逆に、デクリプタ３２０を、ＧＰＵシリコンに組み込む（すなわち、ＧＰＵと共に集積する）ことができる。その場合に、制御プロセッサ３１８が、暗号解読鍵をＧＰＵに直接に渡すことができる。ソフトウェア攻撃を防ぐさらなる防止手段として、制御プロセッサ３１８とＧＰＵ３０８の間に専用バスを設けることができる。
【００７９】
動作中に、制御プロセッサ３１８を、セキュアソフトウェア／ハードウェアによって認証することができ、制御プロセッサ３１８が、「このセキュア領域の暗号化鍵にｘをセットする」などの暗号化されたコマンドを受け取ることができる。制御プロセッサは、コマンドが正しく実行されたことを保証するために、暗号応答を返すことができる。
【００８０】
暗号化鍵を使用して、ビデオデータをセキュア領域にレンダリングすることができる。この例では、敵対するコードがこの暗号化されたデータを読み取ることが可能である場合がある。しかし、そのようなコードによって読み取られるすべてのデータが、暗号化され、効果的に、敵対するコードにとって役に立たない。いくつかの実施形態で、敵対コードが、暗号化されたデータを修正することが可能である場合がある。しかし、修正された暗号化されたデータは、ディスプレイスクリーンにレンダリングされた場合に、論理的に文脈から外れて見えるデータに暗号解読される。たとえば、そのようなデータは、ディスプレイスクリーンにレンダリングされる場合に、ランダムノイズ／グレイ出力に見える可能性がある。この種の攻撃は、最も疑いなくユーザによって認められる。
【００８１】
さらに、認証情報を使用することによって、ピクセルデータが敵対するコードによって修正されたかどうかを確認することができ、ユーザが、それについて知らされる。１つの例として、下記を検討されたい。ある数のビット毎ピクセル、たとえば２４ビット／ピクセルを構成するために、セキュアデータフォーマットを要求することができる。２４ビット／ピクセルのうち、８ビットが、必ず０の値になることを要求することができる。デクリプタは、非準拠ピクセルを紫で点滅させるように構成することができ、攻撃があったことを制御プロセッサに通知することができる。
【００８２】
さらに、他の技法を使用して、ピクセルデータが不適当に修正された場合に、そのような修正を検出できることを保証することができる。１つの例として、下記を検討されたい。ハッシュを、レンダリングされる各ピクセルに関連するピクセルデータについて計算することができる。ピクセルデータがディスプレイコンバータ（たとえばＲＡＭＤＡＣ３１２）によって処理される際に、ディスプレイコンバータが、ピクセルデータのハッシュを計算し、計算されたハッシュを、そのピクセルデータについて前に計算されたハッシュと比較することができる。不適当なデータ修正があった場合には、ハッシュ比較によって、それが起きたことが示される。
【００８３】
例示的暗号化技法
さまざまな暗号化技法を使用して、プライマリサーフェスのセキュア領域に存在するピクセルデータが、暗号化され、その後、デクリプタによって正しく暗号解読されることを保証することができる。２つの例示的な暗号化技法を下で説明するが、他の技法を、請求される対象の趣旨および範囲から逸脱せずに使用することができる。
【００８４】
使用することができる第１の暗号化技法は、ストリーム暗号（ｓｔｒｅａｍ　ｃｉｐｈｅｒ）である。ストリーム暗号は、通常は、ソフトウェアで非常に高速であり、ハードウェアで実施が非常に簡単である。ストリーム暗号は、通常は平文の小さい単位、通常はビットを操作する、対称暗号アルゴリズムの１種である。ストリーム暗号では、鍵ストリーム（ｋｅｙｓｔｒｅａｍ）と称するもの（鍵として使用されるビットのシーケンス）を生成する。暗号化は、通常はビット単位のＸＯＲ演算を用いて、鍵ストリームを平文またはビットと組み合わせることによって達成される。鍵ストリームの生成は、平文および暗号文と独立にして、同期式ストリーム暗号（ｓｙｎｃｈｒｏｎｏｕｓ　ｓｔｒｅａｍ　ｃｉｐｈｅｒ）と称するものをもたらすことができ、あるいは、データおよびその暗号化に依存するものとすることができ、この場合には、ストリーム暗号を、自己同期式（ｓｅｌｆ−ｓｙｎｃｈｒｏｎｉｚｉｎｇ）と呼ぶ。ほとんどのストリーム暗号設計が、同期式ストリーム暗号に関するものである。同一のストリーム暗号を使用して、暗号化されたデータを暗号解読することができる。
【００８５】
ストリーム暗号を、プライマリサーフェスのセキュア領域内のデータだけを暗号解読する形で、プライマリサーフェス全体に対して実行することができる。しかし、これは、ストリーム暗号がプライマリサーフェス全体に対して実行されるのではなく、セキュア領域だけに対して実行されることだけが必要なので、最良の選択ではない。したがって、ストリーム暗号が実行される範囲を制限し、その結果、範囲が、１つまたは複数のセキュア領域の境界だけを用いて定義されるようにすることができる。制限された範囲のストリーム暗号を実施するのに望ましい形は、ディスプレイのリフレッシュごとに、セキュア領域の左上ピクセルなど、ストリーム暗号の開始位置を定義することである。その後、ストリーム暗号を、セキュア領域の右下ピクセルが処理されるまでセキュア領域内で実行することができる。
【００８６】
例として、図７を検討されたい。図７では、プライマリサーフェス７００に、暗号化されないピクセルデータが存在する領域７０２と、暗号化されるピクセルデータ（ストリーム暗号を用いて暗号化される）が存在するセキュア領域７０４が含まれる。適当に範囲を制限されたストリーム暗号を用いると、ストリーム暗号を、左上ピクセルに示された位置から開始して、右下ピクセルに示された位置で終わるように、実行することができる。暗号化されたデータを暗号解読する場合には、デクリプタ（デクリプタ３２０など）に、ストリーム暗号の開始位置および停止位置の座標について通知することができる。この実施形態のよい特性の１つが、セキュア領域に関連するセキュアウィンドウが、別の位置にドラッグアンドドロップされる場合（これによって信頼されないソフトウェアが呼び出されて、ウィンドウを移動する可能性がある）に、暗号化動作を、新しい位置で行い続けることができることである。これを実施するためには、暗号化するエンティティに、セキュアウィンドウ（したがって、プライマリサーフェスのセキュア領域）の新しい座標について通知し、その結果、暗号化するエンティティが、新しい位置でその暗号化処理を実行できるようにするだけでよい。同様に、デクリプタ３２０にも、その位置について通知することができ、その結果、デクリプタが、暗号化されたピクセルデータを暗号解読する正しい位置でストリーム暗号を実行できるようになる。
【００８７】
エンクリプタ（ｅｎｃｒｙｐｔｏｒ）は、複数のフレームにまたがってストリーム暗号を継続できるようにすることができ、これによって、差分攻撃（ｄｉｆｆｅｒｅｎｔｉａｌ　ａｔｔａｃｋ）をより困難にする。ストリーム暗号の鍵は、フレームの各グループの後に変更することができる。鍵の数を減らすために、鍵の固定された配列を、使用に先立ってネゴシエートすることができる。エンクリプタは、フレームのグループごとに異なる鍵を選択しながら、鍵の配列をサイクルすることができる。
【００８８】
使用することができる第２の暗号化技法は、ブロック暗号である。ブロック暗号は、対称鍵暗号アルゴリズムのうちで、平文のデータまたはビット（暗号化されていないテキストまたはビット）の固定長ブロックを、同一の長さの暗号文（暗号化されたテキストまたはビット）のブロックに変換するタイプのアルゴリズムである。この変換は、ユーザが供給する秘密鍵の動作の下で行われる。暗号解読は、同一の秘密鍵を使用して、暗号文ブロックに逆変換を適用することによって実行される。固定長を、ブロックサイズと呼び、多くのブロック暗号で、ブロックサイズが６４ビットである。近い将来に、プロセッサがより洗練されるので、ブロックサイズが１２８ビットに増やされる。
【００８９】
上で説明した２つの暗号化技法のうちで、ストリーム暗号は、ブロック暗号よりはるかに高速なので、望ましい選択である。
【００９０】
認証
いくつかの実施形態で、認証技法を使用して、ビデオカードの保全性および同一性を保証することができる。ビデオカードと相互作用するセキュアソフトウェアアプリケーションの重要な目標が、１）アプリケーションが、ビデオカードをエミュレートするソフトウェアではなく、ビデオカードと実際に通信していることと、（２）アプリケーションが、ピクセルデータのレンダリングに関連する事前に定義されたルールに従うか準拠するビデオカードと実際に通信していることとを、信頼性のある形でアプリケーションが認証できることである。
【００９１】
認証技法は、２つの異なる形、たとえば、暗号証明（ｃｒｙｐｔｏｇｒａｐｈｉｃ　ｃｅｒｔｉｆｉｃａｔｉｏｎ）および他の通信プロトコルを介して、実施することができる。
【００９２】
暗号証明は、証明された鍵およびディジタル証明書を備えたビデオカードの作成に関する。その鍵および証明書を使用して、ビデオカードが、セキュアソフトウェアアプリケーションとの暗号会話にかかわることができる。たとえば、ディジタル証明書を使用して、ビデオカードを認証することができ、証明された鍵を使用して、セキュアアプリケーションに対して行われる通信を暗号化することができる。暗号証明を実施するために、各ビデオカードが、信頼される実体によって製造される別のセキュリティＩＣチップを有することができる。暗号証明技法は、周知であり、当業者によって理解される。したがって、簡潔にするために、暗号証明は、本明細書ではこれ以上詳細に説明しない。
【００９３】
認証のもう１つの手段は、セキュアアプリケーションとビデオカードの間で確立されるセキュアプロトコルに関連するものとすることができる。セキュアプロトコルを用いると、アプリケーションが、有効なビデオカードと通信していることの保証を有することができるようにすることができる。たとえば、信頼されるアプリケーションが、ビデオカードにチャレンジを発行して、それ自体を識別し、カードが、それが信頼されるビデオカードであることの応答を用いて応答することができる。さまざまな既知のセキュアプロトコル技法を使用することができる。
【００９４】
上で説明した実施形態によって、複数の長所が提供される。まず、データ（ビデオカード上およびビデオカード外の両方）がソフトウェア攻撃から保護されることを保証できる技法がもたらされる。保護は、ビデオカードのプライマリサーフェスに存在するデータを暗号化するのに使用することができる暗号化技法の形で提供される。暗号解読を、データ処理パイプライン内の、ソフトウェアアクセスのない点で行うことができる。したがって、不良ソフトウェアによる読取攻撃のすべてで、暗号化され、本質的に役に立たないデータが作られる。したがって、ピクセルデータを、機密に保つことができる。さらに、さまざまな技法によって、データの保全性を保てるようになる。すなわち、データ修正攻撃の場合に、さまざまな検出方法を使用して、適当な通知（アプリケーション通知とユーザ通知の両方）が生成されることを保証することができる。さらに、特定のジオメトリによって識別されるプライマリサーフェスのセキュア領域を定義できるようにすることによって、利益が達成される。
【００９５】
ピクセルごとの補助機能性
いくつかの実施形態で、個々のピクセルの粒度での機能性を提供することが望ましい可能性がある。たとえば、プライマリサーフェスのセキュア領域は、通常はオーバーラップしない。しかし、いくつかの場合に、ユーザが、ウィンドウをディスプレイ上で移動し、その結果、それらをオーバーラップさせることを望む場合がある。オーバーラップする領域によって、暗号化機能および暗号解読機能を実行するコンポーネントの設計に、追加の設計検討事項が注入される可能性がある。
【００９６】
１例として、図８を検討されたい。図８には、ユーザが見るであろうものなどのディスプレイスクリーンが、全般的に８００に示されている。セキュアウィンドウ８０２が設けられ、さらに、非セキュアウィンドウ８０４が、セキュアウィンドウの右下角とオーバーラップして、オーバーラップ領域８０６が定義されるものとして示されている。このような状況から生じる可能性がある問題の１つは、下記のようなものである。領域８０６には、ビデオカードのプライマリサーフェスで実施される場合に、暗号化されたデータが含まれない。しかし、セキュアウィンドウ８０２に対応する隣接する領域には、暗号化されたデータが含まれる。これを考慮に入れる調整が行われない場合には、デクリプタが、オーバーラップ領域８０６に関連するピクセルデータを暗号解読する場合がある。このピクセルデータは、それから始めるべき暗号化されたピクセルデータではないので、このデータの暗号解読によって、誤ったデータが作られる。
【００９７】
したがって、これから説明する実施形態では、ピクセルごとの機能性を可能にする方法およびシステムを提供する。１つの例では、ピクセルごとのセキュリティを提供することができる。
【００９８】
図９に、ピクセルデータの概略表現を、全般的に９００に示す。この例では、ピクセルデータに、３２ビットのデータが含まれる。赤（Ｒ）、緑（Ｇ）、および青（Ｂ）の値が、それぞれ８ビットとして示される。図示のピクセルデータには３２ビット毎ピクセルが含まれるが、ピクセルデータに、これより多数または少数のビット毎ピクセルを含めることができることに留意されたい。この例では、８ビットが残され、これを本明細書で「補助」と呼ぶことに留意されたい。メモリアクセスをより効率的にするために、ＧＰＵは、データを、２のべきの倍数である塊で読み込むことを好む。したがって、２４ビットデータは、３２ビットブロックとして読み取られ、８ビットが、しばしば「未使用」で残されるが、必ず読み取られ、「使用される」ビットと共に書き込まれる。これらの補助ビットを再利用して、ディスプレイスクリーンにレンダリングされる個々のピクセルに関連して実施することができるさまざまな補助機能を指定することができる。補助機能の例には、アルファ情報または透過性情報、デプス情報、領域識別情報、またはカラーキー情報（他のデータによって置換される領域を示すための）を、制限なしに含めることができる。
【００９９】
他の一般的なビデオフォーマットでは、２４または３２ビット毎ピクセルではなく、１６ビット毎ピクセルが使用される。たとえば、ＲＧＢデータを、５ビット毎ピクセルとして保管し、単一ビットを未使用のままにすることができ、このビットを使用して、２つの補助機能を指定することができる。
【０１００】
補助機能性を実施する形の１つが、補助機能性を参照または指定する、テーブル９０２などのテーブルを設けることである。たとえば、特定の補助機能に８ビットを使用することによって、２５６個までの補助機能を指定できるようにすることができる。したがって、ピクセルデータが処理される場合に、補助機能に関するピクセルデータのビットを処理して、さまざまな補助機能にアクセスし、実施することができる。
【０１０１】
図１０は、一実施形態による方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【０１０２】
ステップ１０００で、定義された数のビット毎ピクセルを有するピクセルデータを提供する。図９の例では、３２ビット毎ピクセルがある。しかし、任意の適切な数のビット毎ピクセルを使用することができる。ステップ１００２で、ピクセルデータの１つまたは複数のビットを使用して、補助機能を指定する。図９の例では、８ビットを使用して、いわゆる「アルファチャネル」（第４の「未使用の」チャネル）の使用を介して補助機能を指定する。アルファチャネルの８ビットを使用することによって、２５６個の別々の補助機能が指定される。ステップ１００４で、ビットを処理して、補助機能にアクセスする。このステップは、補助ビットの値を、テーブル９０２（図９）などの補助機能テーブルへのインデックスとして使用することによって実施することができる。このテーブルは、個々の値について、特定のピクセルのピクセルデータに関して実施することができる補助機能を参照する。テーブル９０２の参照は、補助機能を実施するソフトウェアコードへのポインタとすることができ、あるいは、補助機能自体の一部または全体を含めることができる。ステップ１００６で、補助機能を実施する。
【０１０３】
機能０でヌル機能が指定される場合には、古いアプリケーションが、新しい補助機能を使用する新しいスキームと自動的に互換になる。
【０１０４】
ピクセルごとのセキュリティ
ピクセルデータの補助ビットを使用して、ピクセルレベルで暗号解読機能性を提供することができる。たとえば、保護されることが望まれるピクセルデータを保持するのに使用されるプライマリサーフェスのセキュア領域があると仮定する。このピクセルデータを、暗号化鍵を使用して、ピクセルレベルで暗号化することができる。暗号化されたピクセルデータの補助ビットによって、ピクセルデータの暗号解読に使用することができる暗号解読鍵が指定されると仮定する。たとえば、ピクセルごとの補助機能テーブル１１００を示す図１１を検討されたい。この図では、テーブルの各値が、特定の鍵に関連する。たとえば、値「１」は、「鍵１」に関連し、値「２」は、「鍵２」に関連するなどである。したがって、補助ピクセルデータから、特定の鍵がピクセルデータに関連することが示される場合に、デクリプタは、関連する鍵にアクセスし、その鍵を使用してピクセルデータ（通常は０）を暗号解読することができる。補助ピクセルデータによって、ピクセルデータが暗号化されないことを示す値を保持することもできる。この場合には、デクリプタが、単純に、関連するピクセルデータを、さらなる処理のためにディスプレイコンバータに渡し、アプリケーションからの暗号化されていないデータを、新しいスキームにシームレスに統合できるようになる。
【０１０５】
ピクセルごとの鍵テーブルは、関連する暗号化されたピクセルデータを暗号解読するのに使用することができる個々の鍵を保持することができ、あるいは、関連する暗号化されたピクセルデータを暗号解読するのに使用することができる鍵への参照を保持することができる。
【０１０６】
このテーブルは、アルファ値など、副（非セキュリティ）補助関連データを保持することもできる。これによって、セキュリティと補助チャネルの前の元々の使用との間の、値の選択的な再利用が可能になる。たとえば、値１から３を、鍵を指定するのに使用することができ（それ自体のアルファ値を有する）、値０および４から２５５を、その元々のアルファ値を指定するのに使用可能とすることができる。
【０１０７】
図１２は、一実施形態による方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【０１０８】
ステップ１２００で、個々のピクセルに関連するピクセルデータを暗号化する。有利なことに、暗号化を、ピクセルレベルで行うことができる。このステップは、任意の適切な形で実施することができる。たとえば、セキュアアプリケーションが、ピクセルデータを暗号化させることができる。その代わりに、他のプロセスを使用して、ピクセルデータを暗号化することができ、その例は、上で示した。ステップ１２０２で、補助データをピクセルデータに関連付ける。この補助データによって、ピクセルデータの暗号解読に使用することができる１つまたは複数の暗号解読鍵が指定される。いくつかの場合に、補助データに、ピクセルデータを含むビットの部分が含まれるので（たとえばアルファチャネル）、補助データにピクセルデータ自体が含まれるとみなすことができる。ステップ１２０４で、関連する補助データを含むピクセルデータを受け取る。このステップは、たとえば、適切に構成されたデクリプタによって実施することができる。ステップ１２０６で、ピクセルデータが暗号解読を必要とするかどうかを判定する。このステップは、補助データを検査することによって実施することができる。補助データに、暗号解読機能性に関連する値が含まれる場合には、暗号解読が必要である。暗号解読が必要な場合には、ステップ１２０８で、補助データを使用して、ピクセルデータの暗号解読鍵にアクセスする。このステップは、テーブル１１００などのテーブルを維持し、そのテーブルを使用して適当な暗号解読鍵にアクセスすることによって、実施することができる。ステップ１２１０で、暗号解読鍵を使用してピクセルデータを暗号解読する。その一方で、ステップ１２０６で、暗号解読が必要でないと判定される場合には、ステップ１２１２で、データを暗号解読しない。このステップは、補助データに特定の値（たとえば０）を割り当て、その値を使用して、暗号解読が必要でないことを示すことによって、実施することができる。その後、データを、さらなる処理のためにディスプレイコンバータに渡すことができる。
【０１０９】
選択的なピクセルごとの暗号化の利益の１つが、アプリケーションが非長方形の暗号化領域を指定できることである。長方形領域内の暗号化されない各ピクセルを、ヌル暗号化機能（インデックス０）によって指定することができる。
【０１１０】
副テーブル
上で説明したテーブルのほかに、いわゆる副テーブルを設けて、ピクセルデータを処理する場合に有用な追加情報を含めることができる。例として、副ピクセルテーブル１３００が示されている図１３を検討されたい。この例では、プライマリサーフェスのセキュア領域内の各ピクセルが、このテーブル内に関連するエントリを有する。したがって、「ピクセル」列によって、プライマリサーフェスのセキュア領域内の特定のピクセルが識別される。この例では、テーブル１３００に、「プロセスＩＤ」列が含まれ、この列は、特定の領域を「所有」するプロセスまたはエンティティを識別するのに使用することができる。この列は、たとえば、特定のピクセルデータへのアクセスを、アクセスを有しなければならないエンティティだけに制限するのに使用することができる。
【０１１１】
データ保全性
さらにまたはその代わりに、テーブル１３００を、ピクセルデータの保全性を検証するのに使用することができる。たとえば、暗号化されないピクセルデータのハッシュを計算し、テーブル１３００の「期待されるハッシュ」列に保管することができる。その後、ピクセルデータが、たとえばデクリプタによって暗号解読される場合に、暗号解読されたピクセルデータの別のハッシュを計算し、「現在のハッシュ」列に置くことができる。期待されるハッシュを現在のハッシュと比較することによって、セキュアアプリケーションまたはデクリプタが、ピクセルデータのいずれかが操作または変更されたかどうかを確認することができる。たとえば、不良アプリケーションが、暗号化されないピクセルデータを成功裡に操作した場合に、ハッシュ比較から、これが行われたことが示される。その一方で、不良アプリケーションが、暗号化されたピクセルデータを操作した場合には、データが、異なる形で暗号解読される。その場合には、現在のハッシュが、暗号解読されたデータについて計算される場合に、現在のハッシュが、最も確実に、期待されるハッシュと有利に匹敵しない。暗号解読ハードウェアは、データが危うくされたことについてアプリケーション（またはアプリケーションの代わりのエージェント）に通知することができる。この通知は、暗号化する実体へのセキュアチャネルを介して行うことができる。
【０１１２】
他の技法を使用して、セキュア領域内のデータの保全性を保証することができる。たとえば、攻撃者が、なんらかの理由でピクセルごとのアドレス可能性を有し、したがって、ピクセルデータ（補助データを含む）を操作できる可能性がある。この状況に対処するために、すべてのセキュア領域について、補助データが、データの暗号解読を引き起こす値になることを強制するプロセスを実施することができる。したがって、これによって、たとえば、データを、それが暗号解読されないようにする値に変更することによって補助データを攻撃する不良アプリケーションの影響が最小になる。
【０１１３】
ピクセルごとの補助機能性（ピクセルごとのセキュリティを含む）の長所のいくつかに、関連するテーブル（たとえば鍵テーブル）が比較的小さく、キャッシング可能であることが、制限なしに含まれる。さらに、補助データに、ビットのうちでピクセルデータに既に割り当てられた部分（たとえばアルファチャネル）が含まれる場合に、追加のビデオ帯域幅は不要である。さらに、アルファ値は、アルファチャネルが補助機能性をサポートするのに使用されない場合に、まだ使用することができる。さらに、ピクセルごとの、フレームごとの鍵制御によって、複雑な鍵推移を可能にすることができる。すなわち、鍵を、フレームごとにサイクルすることができ、これによって、ビデオ再生中に鍵を切り替える場合の問題を減らすことができる。上の技法は、非ＲＧＢデータ、デスクトップへの直接メモリコピー、およびビデオオーバーレイと共に使用することもできる。
【０１１４】
最後に、領域が移動される場合に、補助暗号化インデックスが、ビデオデータと共に移動され、暗号化情報が、完全に同期化され、追加のハードウェア変更を必要としないことが保証される。
【０１１５】
結論
上で説明したさまざまな方法およびシステムによって、ホストコンピュータで実行されるソフトウェアのためのセキュアチャネルが与えられ、ホストコンピュータで実行される不良ソフトウェアがデータを不適切に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに関する解決策が提供される。発明的技法を介して、処理され、ユーザのディスプレイでレンダリングされるビデオデータを、機密に保つことができ、多くの場合に、データの保全性を保護することができる。
【０１１６】
本発明を、構造的特徴および／または方法ステップに固有の言語で説明したが、請求項で定義される発明が、必ずしも説明した特定の特徴またはステップに制限されないことを理解されたい。そうではなく、特定の特徴およびステップは、請求される発明を実施する好ましい形として開示されるものである。
【図面の簡単な説明】
【図１】コンピュータシステムで使用されることを意図された例示的なビデオカードまたはグラフィックスカードのさまざまなコンポーネントを示すブロック図である。
【図２】説明される実施形態による、ビデオカードを使用することができる例示的なコンピュータシステムのブロック図である。
【図３】一実施形態による例示的なビデオカードまたはグラフィックスカードのさまざまなコンポーネントを示すブロック図である。
【図４】セキュア領域および非セキュア領域を有する例示的プライマリサーフェスを示すブロック図である。
【図５】一実施形態による方法のステップを示す流れ図である。
【図６】一実施形態による方法のステップを示す流れ図である。
【図７】セキュア領域および非セキュア領域を有する例示的プライマリサーフェスを示すブロック図である。
【図８】オーバーラップするウィンドウを有するディスプレイスクリーンを示すブロック図である。
【図９】例示的なピクセルデータおよび関連する補助機能テーブルを示す図である。
【図１０】一実施形態による方法のステップを示す流れ図である。
【図１１】一実施形態による例示的なピクセルごとのキーテーブルを示す図である。
【図１２】一実施形態による方法のステップを示す流れ図である。
【図１３】一実施形態による例示的テーブルを示す図である。
【符号の説明】
３００　ビデオカード
３０２　バスコネクタ
３０４　モニタコネクタ
３０６　ディジタルビデオアウトソケット
３０８　グラフィックス処理ユニット（ＧＰＵ）
３１０　ビデオメモリ
３１２　ランダムアクセスメモリディジタル−アナログ変換器（ＲＡＭＤＡＣ）
３１４　ビデオＢＩＯＳ
３１６　メモリコントローラ
３１８　制御プロセッサ
３１９　鍵マネージャ
３２０　デクリプタ
３２２　セキュアソフトウェアアプリケーション
【図１】
2004062885.tif 000003
【図２】
2004062885.tif 000004
【図３】
2004062885.tif 000005
【図４】
2004062885.tif 000006
【図５】
2004062885.tif 000007
【図６】
2004062885.tif 000008
【図７】
2004062885.tif 000009
【図８】
2004062885.tif 000010
【図９】
2004062885.tif 000011
【図１０】
2004062885.tif 000012
【図１１】
2004062885.tif 000013
【図１２】
2004062885.tif 000014
【図１３】
2004062885.tif 000015