JP2004062885A - ビデオカード出力を保護するシステムおよび方法 - Google Patents
ビデオカード出力を保護するシステムおよび方法 Download PDFInfo
- Publication number
- JP2004062885A JP2004062885A JP2003180212A JP2003180212A JP2004062885A JP 2004062885 A JP2004062885 A JP 2004062885A JP 2003180212 A JP2003180212 A JP 2003180212A JP 2003180212 A JP2003180212 A JP 2003180212A JP 2004062885 A JP2004062885 A JP 2004062885A
- Authority
- JP
- Japan
- Prior art keywords
- data
- key
- video card
- secure
- encrypted
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/84—Protecting input, output or interconnection devices output devices, e.g. displays or monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
【課題】不良ソフトウェアが、データを不正に入手できない方法およびシステムを提供する。
【解決手段】ピクセルデータ処理チェーン内で、プログラムアクセス不能なポイントでデータの暗号解読を行う。
【選択図】 図6
【解決手段】ピクセルデータ処理チェーン内で、プログラムアクセス不能なポイントでデータの暗号解読を行う。
【選択図】 図6
Description
【0001】
【発明の属する技術分野】
本発明は、ビデオカードを使用してデータを処理する方法およびシステムに関する。
【0002】
【従来の技術】
通常、コンピュータに常駐するコンテンツは、コンテンツを盗むか変更することを望む個人によって攻撃される可能性がある。1例として、映画スタジオのようなコンテンツ製作者またはウェブでコンテンツを公開するユーザなどを考慮されたい。通常、これらの個人は、ユーザがどのようにしてそれを見ることができるかに関する制限を有するビデオコンテンツを公開する。このコンテンツは、通常は、パーソナルコンピュータなどのコンピュータで表示するかレンダリングすることができる。不徳な個人および組織がそのようなビデオコンテンツを盗むか他の形態で不正に入手することを試みることによって、毎年膨大な時間、労力、および金銭が費やされる。さらに、個人が取引、たとえば銀行取引を行えるようにする電子商取引ソフトウェアの場合を考慮してほしい。ユーザが再検討し操作するためにディスプレイモニタに表示されるデータが、ユーザのコンピュータで実行される不良ソフトウェアアプリケーションによって攻撃される可能性がある。すなわち、不良なプログラムまたはデバイスが、パーソナルコンピュータなどのコンピュータでコンテンツが受信された後に、そのコンテンツを不適当に入手することを試みることができ、しばしば実際に試みる。
【0003】
コンテンツセキュリティに関する1つの解決策に、さまざまなソフトウェアベースのディジタル著作権管理(digital rights management、DRM)ソリューションを含めることができる。ここでの問題は、ソフトウェアレンダリングを行うソフトウェアベースの耐タンパで「観察が困難な」DRMシステムが、どれほどよいかと言うことではなく、最終的に、ビットがビデオカードに書き出され、その位置から他のソフトウェアによって「見る」ことができ、コピーさえできることである。これによって、脆弱性の1領域が提示される。したがって、ビデオコンテンツを処理するビデオカードを、ソフトウェア攻撃の対象にすることができる。
【0004】
図1に、通常のコンピュータのポートに挿入されるバスコネクタ102を含む例示的なビデオ(またはグラフィックス)カード100を示す。ビデオカード100には、モニタに接続されるケーブルを受けるモニタコネクタ104(たとえば15ピンプラグ)も含まれる。ビデオカード100に、ビデオイメージをLCDモニタ、フラットパネルモニタ、および類似物に送るのに使用することができるディジタルビデオアウトソケット106を含めることができる。
【0005】
現代のビデオカードは、4つの主要コンポーネントすなわち、グラフィックスプロセッサユニット(GPU)108、ビデオメモリ110、ランダムアクセスメモリディジタル−アナログ変換器(RAMDAC)112、および、ビデオBIOS114に含めることができるドライバソフトウェアからなる。
【0006】
GPU108は、解像度、カラーデプス、およびモニタスクリーン上のイメージのレンダリングに関連するすべての要素のすべての態様を制御する専用グラフィックス処理チップである。コンピュータの中央処理装置またはCPU(図示せず)は、ドローイング命令およびデータの組を送り、これらが、グラフィックスカードのプロプラエタリドライバによって解釈され、カードのGPU108によって実行される。GPU108は、ビットマップ転送およびペイント、ウィンドウのサイズ変更および再位置決め、線描、フォントのスケーリング、およびポリゴン描画などの動作を実行する。GPU108は、システムのCPUで実行されるソフトウェアよりはるかに高い速度でこれらのタスクをハードウェアで処理するように設計される。GPUは、フレームデータをフレームバッファ(またはオンボードのビデオメモリ110)に書き込む。GPUによって、システムのCPUの作業負荷が大幅に減らされる。
【0007】
ビデオイメージを保持するメモリを、フレームバッファとも称し、このメモリは、通常はビデオカード自体の上で実施される。この例では、フレームバッファが、ビデオカード上でメモリ110の形で実施される。早期のシステムでは、ビデオメモリが標準DRAMで実施された。しかし、このメモリは、データの消失を避けるために継続的なデータのリフレッシュを必要とし、このリフレッシュ処理中に変更することができない。その結果は、特に現代のグラフィックスカードが必要とする非常に高いクロックスピードで、性能が大きく劣化することである。
【0008】
ビデオカード自体でビデオメモリを実施することの長所は、特定のタスクにカスタマイズできることであり、実際に、これが、下記の新しいメモリ技術の増殖をもたらした。
【0009】
・ビデオRAM(VRAM):書込と読取を同時に行うことができる、特殊なタイプの二重ポートDRAM。通常のDRAMよりはるかに低い頻度のリフレッシュを必要とし、その結果、性能がはるかに高い。
【0010】
・ウィンドウRAM(WRAM):Matrox社のMillenniumカードで使用され、やはり二重ポート式であり、普通のVRAMよりわずかに高速に動作することができる。
【0011】
・EDO DRAM:DRAMより高い帯域幅を提供し、通常のDRAMより高い速度でクロッキングでき、読取/書込サイクルがより効率的に管理される。
【0012】
・SDRAM:EDO RAMに似ているが、メモリおよびグラフィックスチップが、データのラッチに使用される共通のクロックで動作し、SDRAMが通常のEDO RAMより高速に動作できるようになるポイントが異なる。
【0013】
・SGRAM:SDRAMと同一であるが、ブロック書込およびビット単位書込もサポートし、これによって、これらの拡張された特徴をサポートするグラフィックスチップでよりよい性能を示す。
【0014】
・DRDRAM:Direct RDRAMは、完全に新規の、通常のDRAMに対する20倍の性能向上が約束される汎用メモリアーキテクチャである。
【0015】
いくつかの設計で、グラフィックス回路がマザーボード自体に統合され、フレームバッファのためにシステムのRAMの一部が使用される。これを、「統合メモリアーキテクチャ(unified memory architecture)」と称し、これは、コスト削減だけの理由から使用され、低いグラフィックス性能につながる可能性がある。
【0016】
ビデオメモリフレームバッファ内の情報は、ディジタルビットマップとして保管された、スクリーンに現れる物のイメージである。しかし、ビデオメモリにはディジタル情報が含まれるが、その出力媒体(モニタ)で、アナログ信号が使用される場合がある。アナログ信号は、「オン」信号または「オフ」信号以上のものを必要とする。というのは、アナログ信号は、電子銃がモニタの前面を横におよび下に走査する際に、電子銃をどこで、いつ、どの強度で光らせなければならないかを判定するのに使用されるからである。これは、下で説明するように、RAMDAC112が効果を示すところである。一部のRAMDACは、LCDモニタなどのディジタルディスプレイ用のディジタルビデオインターフェース(digital video interface、DVI)出力もサポートする。そのような構成では、RAMDACが、内部ディジタル表現を、ディジタルディスプレイによって理解されるフォーマットに変換する。
【0017】
RAMDACは、内部ディジタルデータを、ディスプレイによって理解されるフォーマットに変換するので、「ディスプレイコンバータ」の役割を演ずる。
【0018】
ビデオカードにインストールされるビデオメモリの総量が、特定の解像度に必要でない場合があるが、余分のメモリは、しばしば、GPU108の情報をキャッシングするのに使用される。たとえば、一般的に使用されるグラフィカルアイテム(テキストフォントおよびアイコンまたはイメージなど)のキャッシングによって、グラフィックスサブシステムが、新しい文字が書き込まれるたびにまたはアイコンが移動されるたびにこれらをロードする必要がなくなり、これによって性能が改善される。キャッシングされたイメージは、GPUによって提示されるイメージのシーケンスをキューに入れるのに使用することができ、これによって、他のタスクを実行するためにCPUが解放される。
【0019】
毎秒何回も、RAMDAC112は、ビデオメモリの内容を読み取り、信号に変換し、その信号を、ビデオケーブルを介してモニタに送る。アナログディスプレイの場合に、通常は、CRTが色の完全なスペクトルを作成するのに使用する3原色のそれぞれについて1つのディジタル−アナログ変換器(DAC)がある。ディジタルディスプレイの場合に、RAMDACは、出力デバイスによって解釈され、表示される単一のRGBデータストリームを出力する。所期の結果は、単一ピクセルの色を作るのに必要な正しい混合である。RAMDAC112が情報を変換できる速度、およびGPU108自体の設計によって、グラフィックスカードがサポートできるリフレッシュレートの範囲が指示される。RAMDAC112によって、その内部アーキテクチャに依存して、所与の解像度で使用可能な色の数も指示される。
【0020】
バスコネクタ102は、ビデオカードに接続するのに使用される1つまたは複数のバスをサポートすることができる。たとえば、Accelerated Graphics Port(AGP)バスによって、ビデオカードからシステムメモリに直接にアクセスできるようにすることができる。直接メモリアクセスは、ピーク帯域幅をPeripheral Component Interconnect(PCI)バスより数倍高速にするのに役立つ。これによって、ビデオカードのGPUがシステムメモリにアクセスしている間に、システムのCPUが他のタスクを実行できるようにすることができる。
【0021】
動作中に、オンボードビデオメモリに含まれるデータを、コンピュータのシステムメモリに供給することができ、それがシステムのメモリの一部であるかのように管理することができる。これには、コンピュータのメモリマネージャが使用する仮想メモリ管理技法などが含まれる。さらに、システムのメモリに含まれるデータが、ビデオカードでのグラフィックス動作に必要な場合に、そのデータを、バス(PCIバスまたはAGPバスなど)を介してビデオカードに送り、オンボードビデオメモリ110に保管することができる。そこで、上で説明したように、GPU108によってデータにアクセスし、操作することができる。
【0022】
【発明が解決しようとする課題】
本発明は、データを保護する方法およびシステムの提供に関連する懸念から生じた。具体的に言うと、本発明は、ソフトウェア攻撃、特にユーザの計算機で実行される不良アプリケーションによって行われる攻撃に耐える方法およびシステムを提供することに関連する懸念から生じた。
【0023】
本発明の目的は、ホストコンピュータで実行されるソフトウェアにセキュアチャネルを供給する方法およびシステムを提供することである。
【0024】
【課題を解決するための手段】
この方法およびシステムは、ホストコンピュータで実行される不良ソフトウェアがデータを不正に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに対する解決策を提供する。いくつかの実施形態で、機密に保つことができる(信頼されないソフトウェアアプリケーションがディスプレイスクリーンからそのデータを読み取ることができないという点で)ピクセルデータを提供することができる。さらに、他の実施形態では、ピクセルデータが不適当に操作されたかどうかを検出することによって、ピクセルデータの保全性を保つことができる。
【0025】
さまざまな実施形態が暗号解読エンジンに基づいており、これは暗号解読されたピクセルデータへのプログラム的アクセスを拒否するように、ビデオカード上に配置され、ビデオ処理チェーンの非常に後の方に位置する。
【0026】
【発明の実施の形態】
例示的コンピュータシステム
図2に、下で説明するシステムおよび関連する方法を実施することができる、適切なコンピューティング環境200の例を示す。
【0027】
コンピューティング環境200が、適切なコンピューティング環境の1つの例にすぎず、媒体処理システムの使用の範囲または機能性に関する制限を暗示することを意図されていないことを諒解されたい。また、コンピューティング環境200を、例示的コンピューティング環境200に図示された任意のコンポーネントまたはその組合せに関する依存性または要件を有するものと解釈してもならない。
【0028】
さまざまな説明される実施形態は、多数の他の汎用または特殊目的のコンピューティング環境またはコンピューティング構成と共に動作することができる。媒体処理システムと共に使用するのに適する可能性がある周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドデバイス、ラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、および類似物が含まれるが、これに制限はされない。
【0029】
ある実施形態では、システムおよび関連する方法を、プログラムモジュールなどの、コンピュータによって実行されるコンピュータ実行可能命令の全般的な文脈で説明することもできる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。実施形態を、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリストレージデバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
【0030】
図2に示された例の実施形態によれば、コンピューティングシステム200は、1つまたは複数のプロセッサまたは処理ユニット202、システムメモリ204、および、システムメモリ204を含むさまざまなシステムコンポーネントをプロセッサ202に結合するバス206を含むものとして図示されている。
【0031】
バス206は、メモリバスまたはメモリコントローラ、周辺バス、accelerated graphics port、および、さまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む複数のタイプのバスアーキテクチャの任意の1つまたは複数を表すことが意図されている。制限ではなく例として、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびメザニンバスとも称するPeripheral Component Interconnects(PCI)バスが含まれる。
【0032】
コンピュータ200には、通常は、さまざまなコンピュータ可読媒体が含まれる。そのような媒体は、コンピュータ200によってローカルにおよび/またはリモートにアクセス可能なすべての使用可能な媒体とすることができ、これには、揮発性媒体および不揮発性媒体と、取外し可能媒体および取外し不能媒体の両方が含まれる。
【0033】
図2では、システムメモリ204に、ランダムアクセスメモリ(RAM)210などの揮発性の形および/または読取専用メモリ(ROM)208の形の不揮発性メモリの形のコンピュータ可読媒体が含まれる。起動中などにコンピュータ200内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)212が、ROM208に保管される。RAM210には、通常は、処理ユニット202から即座にアクセス可能および/または処理ユニット202によって現在操作されるデータおよび/またはプログラムモジュールが含まれる。
【0034】
コンピュータ200に、さらに、他の取外し可能/取外し不能の、揮発性/不揮発性のコンピュータ記憶媒体を含めることができる。例としてのみ、図2に、取外し不能不揮発性磁気媒体(図示せず、通常は「ハードドライブ」と称する)から読み取り、これに書き込むハードディスクドライブ228、取外し可能不揮発性磁気ディスク232(たとえば「フロッピディスク」)から読み取り、これに書き込む磁気ディスクドライブ230、および、CD−ROM、DVD−ROM、または他の光学媒体などの取外し可能不揮発性光ディスク236から読み取り、これに書き込む光ディスクドライブ234を示す。ハードディスクドライブ228、磁気ディスクドライブ230、および光ディスクドライブ234は、それぞれ、1つまたは複数のインターフェース226によってバス206に接続される。
【0035】
ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ200の、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供する。本明細書で説明する例示的環境では、ハードディスク228、取外し可能磁気ディスク232、および取外し可能光ディスク236が使用されるが、磁気カセット、フラッシュメモリカード、ディジタル多用途ディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、および類似物などの、コンピュータによってアクセス可能なデータを保管することができる他のタイプのコンピュータ可読媒体も、例示的オペレーティング環境で使用できることが、当業者によって諒解されなければならない。
【0036】
複数のプログラムモジュールを、ハードディスク228、磁気ディスク232、光ディスク236、ROM208、またはRAM210に保管することができ、このプログラムモジュールには、制限ではなく例として、オペレーティングシステム214、1つまたは複数のアプリケーションプログラム216(たとえば、マルチメディアアプリケーションプログラム224)、他のプログラムモジュール218、およびプログラムデータ220が含まれる。ユーザは、キーボード238およびポインティングデバイス240(たとえば「マウス」)などの入力デバイスを介してコンピュータ200にコマンドおよび情報を入力することができる。他の入力デバイスに、オーディオ/ビデオ入力デバイス253、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信用パラボラアンテナ、シリアルポート、スキャナ、または類似物(図示せず)を含めることができる。これらおよび他の入力デバイスは、バス206に結合された入力インターフェース242を介して処理ユニット202に接続されるが、パラレルポート、ゲームポート、またはuniversal serial bus(USB)などの他のインターフェース構造およびバス構造によって接続することができる。
【0037】
モニタ256または他のタイプのディスプレイデバイスも、ビデオアダプタまたはビデオ/グラフィックスカード244などのインターフェースを介してバス206に接続される。モニタのほかに、パーソナルコンピュータには、通常は、スピーカおよびプリンタなど、出力周辺インターフェース246を介して接続することができる他の周辺出力デバイス(図示せず)が含まれる。
【0038】
コンピュータ200は、リモートコンピュータ250などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ250に、コンピュータに関して本明細書で説明する要素および特徴の多くまたはすべてを含めることができる。
【0039】
図2からわかるように、コンピューティングシステム200は、ローカルエリアネットワーク(LAN)251および一般的な広域ネットワーク(WAN)252を介してリモートデバイス(たとえばリモートコンピュータ250)に通信的に結合される。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
【0040】
LANネットワーキング環境で使用される場合に、コンピュータ200は、適切なネットワークインターフェースまたはネットワークアダプタ248を介してLAN251に接続される。WANネットワーキング環境で使用される場合に、コンピュータ200に、通常は、モデム254またはWAN252を介する通信を確立する他の手段が含まれる。モデム254は、内蔵または外付けとすることができるが、ユーザ入力インターフェース242または他の適当な機構を介してシステムバス206に接続することができる。
【0041】
ネットワーク化された環境では、パーソナルコンピュータ200に関して図示されたプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに保管することができる。制限ではなく例として、図2に、リモートコンピュータ250のメモリデバイスに常駐するものとしてリモートアプリケーションプログラム216を示す。図示され説明されたネットワーク接続が、例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用することができることを諒解されたい。
【0042】
概要
本明細書で説明するさまざまな方法およびシステムは、ホストコンピュータで実行されるソフトウェアにセキュアチャネルを供給することを対象とする。この方法およびシステムは、ホストコンピュータで実行される不良ソフトウェアが、データを不正に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに対する解決策を提供する。
【0043】
さまざまな実施形態によって、データを、ユーザが対話するためにディスプレイスクリーンにセキュアにレンダリングできるセキュア実行環境を提供することができる。説明される実施形態は、他の特性のうちでも、下記の特性の一方または両方を実施することができる。
【0044】
第1の特性は、たとえばビデオカードに存在するピクセルデータなどのデータを、機密に保つことができることである。これは、信頼されないソフトウェアアプリケーション(または不良アプリケーション)が、ディスプレイスクリーンまたはビデオメモリからデータを読み取れないことを意味する。機密性態様は、ビデオデータまたはピクセルデータをレンダリングする場合に、そのコンピュータで動作する「クラッキングツール(cracking tool)」がビデオデータを読み取れない形でそのビデオデータをビデオカードに送ることができることが望ましいので、ディジタルワークプレースアリーナ(digital workplace arena)で有用である。たとえば、ユーザが、暗号化された形でビデオデータを受信できるようにするセキュア電子メールプログラムで作業していると考えられたい。さまざまな実施形態によって、不良アプリケーションがデータにアクセスできる危険性なしに、ディスプレイスクリーンにデータをレンダリングできるようにすることができる。
【0045】
第2の特性は、保全性である。これは、基本的に、信頼されないソフトウェア(不良ソフトウェア)が、ディスプレイの一部に表示されるデータを操作できることが望まれないことを意味する。たとえば、ユーザが、自分のコンピュータで実行されるソフトウェアを介してある実体に10ドル支払う手配をする電子商取引の設定を考えられたい。ユーザは、単純に、自分のディスプレイスクリーンに表示されるウィンドウに金額をタイプすることができる。しかし、不良アプリケーションが、「10ドル」を「1000ドル」に変更することが可能である。理解できるように、これは望ましくなく、ユーザは、意図したものより高額の支払いを許可したことになる。
【0046】
さらに、ある信頼されないソフトウェアが、何らかの形でデータを不適切に操作する場合に、これが行われたことを知らせることができることが望ましい。したがって、下で説明する実施形態の一部で、データ操作を検出できる手段を提供する。
【0047】
例示的実施形態
下で説明する実施形態は、セキュアビデオ出力すなわち、ソフトウェア攻撃を許さないビデオ出力の提供を対象とする。さまざまな実施形態で、全スクリーンの保護が排除されるのではないが、スクリーン領域そのものの全体ではなく、ユーザのディスプレイスクリーン上の領域(すなわちウィンドウ)に選択的に適用できるウィンドウベースの保護を提供することができる。セキュアビデオ出力は、通常は、信頼されないソフトウェアによって読み取ることができない。この挙動によって、プレミアムコンテンツ(たとえば、ビデオ、書籍)などのコンテンツの保護ならびにさまざまな一般的な電子商取引アプリケーションおよびセキュリティアプリケーションが提供される。
【0048】
さらに、さまざまな実施形態で、信頼されないダイアログによって隠す(部分的にまたは完全にのいずれか)ことが可能ではないいわゆるセキュアダイアログを提供することができる。この挙動は、一般の電子商取引トランザクションの文脈で最も有用である。
【0049】
下で説明する実施形態は、セキュアビデオ出力を提供する暗号ベースの解決策である。さまざまな実施形態の長所は、実施形態が、通常は実施が簡単であり、既存のソフトウェアアーキテクチャに対する影響を事実上有しないことである。
【0050】
これから説明する実施形態のいくつかは、暗号解読エンジンに基づいており、これはビデオカード上に配置され、ビデオ処理チェーンの非常に後の方に位置する。本明細書で説明する例では、実施形態の多くの態様が、ハードウェアで実施され、他の態様は、ファームウェアおよびソフトウェアでも実施することができる。
【0051】
発明的実施形態の望ましい特徴は、ユーザのディスプレイスクリーンに表示されるさまざまなデータが、暗号化されることである。したがって、データを盗むことを対象とする攻撃は、暗号化されたデータが盗まれることだけをもたらす。暗号化技法は、盗まれた暗号化されたデータが、暗号解読が数学的に実行不可能になるように使用することができる。さらに、暗号化されたデータの暗号解読は、処理チェーン内の、表示される暗号解読されたビットへのプログラム的アクセスがなくなる点で行われる。すなわち、暗号解読されたビットへのソフトウェアアクセスがなく、その結果、ユーザのコンピュータで実行される不良ソフトウェアが、暗号解読されたビットにアクセスできなくなる。
【0052】
一実施形態では、デクリプタ(decryptor)が、ビデオカード上に置かれ、GPUとディスプレイコンバータ(たとえばRAMDAC)の中間に配置される。デクリプタは、ハードウェアで実施されることが望ましく、ビデオカードがフレームバッファをディスプレイコンバータにラスタ変換している際に「リアルタイム」で暗号化されたデータを処理することができる。
【0053】
例示的アーキテクチャ
図3に、一実施形態による例示的なビデオ(またはグラフィックス)カード300を示す。カード300には、通常のコンピュータのポートに挿入されるバスコネクタ302が含まれる。ビデオカード300には、モニタに接続されるケーブルを受けるモニタコネクタ304(たとえば15ピンプラグ)も含まれる。ビデオカード300に、ビデオイメージをディジタルディスプレイおよび類似物に送るのに使用することができるディジタルビデオアウト(たとえばDVI)ソケット306を含めることができるが、これは必要ではない。
【0054】
図1のビデオカードと同様に、ビデオカード300には、グラフィックス処理ユニット(GPU)308、ビデオメモリ310、ディスプレイコンバータまたはランダムアクセスメモリディジタル−アナログ変換器(RAMDAC)312、およびビデオBIOS314に含めることができるドライバソフトウェアが含まれる。
【0055】
GPU308は、解像度、カラーデプス、およびモニタスクリーン上のイメージのレンダリングに関連するすべての要素のすべての態様を制御する専用グラフィックス処理チップである。メモリコントローラ(時々GPUに統合される)が、ビデオカードのメモリを管理する。コンピュータの中央処理装置またはCPU(図示せず)は、ドローイング命令およびデータの組を送り、これらが、グラフィックスカードのプロプラエタリドライバによって解釈され、カードのGPU308によって実行される。GPU308は、ビットマップ転送およびペイント、ウィンドウのサイズ変更および再位置決め、線描、フォントのスケーリング、およびポリゴン描画などの動作を実行する。GPUは、フレームデータをフレームバッファ(またはオンボードのビデオメモリ310)に書き込むことができる。
【0056】
ビデオメモリフレームバッファ内の情報は、ディジタルビットマップとして保管された、スクリーンに現れるもののイメージである。RAMDAC312は、上で説明したように、ディジタルビットマップを、モニタでのレンダリングに使用できる形に変換するのに使用される。
【0057】
これらのコンポーネントのほかに、この実施形態では、ビデオカード300に、メモリコントローラ316、および、鍵マネージャ319を含めることができる制御プロセッサ318が含まれる。ビデオカードには、デクリプタ320も含まれる。これらのコンポーネントは、適切なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで実施することができる。
【0058】
メモリコントローラ316は、ビデオカード上のデータを受け取り、ビデオメモリ310内のデータを管理する。メモリコントローラは、ビデオカードとシステムメモリの間のデータ転送の管理の責任も負うことができる。
【0059】
制御プロセッサ318が設けられ、制御プロセッサ318に、鍵マネージャ319を含めることができる。制御プロセッサは、ビデオカード上で行われる暗号機能を編成する責任を負うことができる。たとえば、制御プロセッサ318は、専用バスまたはセキュアチャネルを介して、デクリプタ320と通信して、セキュリティの理由から暗号化されたピクセルデータを正しく暗号解読するのに必要な暗号解読機能をデクリプタに持たせることができる。制御プロセッサ318は、鍵マネージャ319を介して、関連するピクセルデータの暗号化および暗号解読に関連する鍵を管理することができる。いくつかの実施形態で、制御プロセッサを、ビデオカード上の別の集積回路チップとして実施することができる。
【0060】
デクリプタ320は、関連するピクセルデータを暗号解読するように構成されるか、構成可能である。たとえば、下で詳細に説明するように、保護されなければならないデータを、暗号化し、モニタでのイメージのレンダリングにRAMDAC312によって使用されるデータを含むビデオカードのメモリのいわゆる「プライマリサーフェス」またはデスクトップサーフェスの部分を含むセキュア領域に書き込むことができる。暗号化されたイメージは、プライマリサーフェスにコピーされる前に、ビデオメモリ内の一時位置にコピーすることができる。制御プロセッサ318は、データの暗号化に使用される暗号化鍵をセットすることができ、暗号化されたピクセルデータの暗号解読に使用するために暗号解読鍵をデクリプタ320に供給することができる。データが暗号解読されたならば、そのデータを、さらなる処理のためにRAMDACに渡すことができる。
【0061】
デクリプタが、別のコンポーネントとして図示されているが、効果的にデクリプタとして動作するように、RAMDACに適当な暗号解読機能性を与えることができることを諒解し、理解されたい。
【0062】
動作中に、セキュアなまたは信頼されるソフトウェアアプリケーション322によって、デクリプタ320とそのソフトウェアアプリケーションの間の共用鍵をセットアップすることができる。このソフトウェアアプリケーションは、その後、その鍵を使用して、メモリ(ビデオメモリ310またはシステムメモリのいずれか)に保管することができる暗号化されたピクセルデータを生成することができる。
【0063】
通常は、ピクセルデータをプライマリサーフェスまたはフレームバッファの保護された領域に書き込むことができる2つの異なる形がある。第1に、ピクセルデータを、メモリコントローラが準備する「move」動作を介してフレームバッファに直接に書き込むことができる。第2に、アプリケーション(セキュアアプリケーション322など)が、システムメモリ内で保護されるピクセルデータを組み立てることができ、このピクセルデータは、システムメモリ内で暗号化される。システムメモリ内の暗号化されたデータは、最終的に、暗号解読およびレンダリングのためにプライマリサーフェスにコピーされる。
【0064】
制御プロセッサは、ピクセルデータをRAMDAC312に送る前(またはモニタにレンダリングする前)にそのデータを暗号解読するのにどの鍵を使用するかをデクリプタ320が知っていることを保証することができる。
【0065】
したがって、この例では、1つまたは複数の鍵を信頼される実体の間で共用できるようにする機構がある。データは、ビデオカード上で暗号化し、データ処理チェーンのある点(ポイント)で暗号解読することができ、その結果、ディスプレイモニタにレンダリングされなければならない暗号化されないデータが、ソフトウェア攻撃を許さなくなる。プライマリサーフェスの保護された領域から暗号化されたデータを読み取ることを試みる信頼されない実体または不良の実体は、それにとって効果的に役に立たない暗号化されたデータだけを読み取る。さらに、これは、VRAMメモリが仮想メモリ管理技法を介してシステムメモリにマッピングされる場合にも成り立つ。したがって、プライマリサーフェスの保護された領域内にあると思われるデータが、ビデオカード上にあるか、またはシステムのメモリにマッピングされるかのいずれであれ、そのデータは、暗号化され、したがって保護される。
【0066】
セキュアウィンドウ
一実施形態では、1つまたは複数のセキュアウィンドウが設けられ、これを使用して、ユーザのディスプレイスクリーンに機密データを表示することができる。ユーザのディスプレイスクリーン上のセキュアウィンドウは、ビデオカードのメモリ(または、仮想メモリ管理技法が使用される場合に、システムメモリ)内のプライマリサーフェスのセキュア領域に関連し、対応する。例として、図4を検討されたい。
【0067】
この図には、ビデオカードのプライマリサーフェスの概略表現が、全般的に400に示されている。プライマリサーフェス400には、暗号化されないデータを含む領域402(陰付き)と、暗号化されたデータを含む1つまたは複数の領域が含まれる。この特定の例では、2つの例示的なセキュア領域404および406に、暗号化されたデータを含めることができる。各セキュア領域の対応するセキュアウィンドウが、それぞれ404aおよび406aに示されている。
【0068】
この実施形態では、デクリプタ320(図3)が、領域402内のピクセルデータのすべてを、修正(すなわち暗号化)なしで渡すように構成される。すなわち、領域402に存在するデータは暗号化されないので、デクリプタ320がそのデータを暗号解読する必要がない。しかし、デクリプタは、領域404および406に存在する暗号化されたデータを暗号解読する。
【0069】
領域404および406内のピクセルデータは、セキュア領域に関連する鍵を使用して、デクリプタによって暗号解読することができる。いくつかの実施形態では、単一の鍵を、すべてのセキュア領域に関連付けることができる。他の実施形態では、各セキュア領域が、それ自体の関連する鍵を有することができる。セキュア領域ごとに別の鍵を有する理由の1つが、あるセキュア領域が、他のセキュア領域にアクセスできるあるアプリケーションに関連しない場合があることである。たとえば、セキュア電子メールアプリケーションが、あるセキュア領域に関連し、そのセキュア領域に暗号化された電子メールが存在すると仮定する。また、電子商取引アプリケーションが、異なるセキュア領域に関連すると仮定する。電子メールアプリケーションが、電子商取引アプリケーションに関連するセキュア領域にアクセスできる理由は、実際にはない。それでも、セキュア領域のすべてについて1つの鍵だけがある場合には、おそらくは、あるセキュア領域にアクセスできるすべてのアプリケーションが、他のすべてのセキュア領域にアクセスすることができる。したがって、セキュア領域ごとに異なる鍵を設けることによって、各セキュア領域へのアクセスが、アクセスを有することができなければならないアプリケーションだけに制限される。
【0070】
その代わりに、別の実施形態では、中央の実体(「ミキサ」または「コンポジタ」)が、複数の領域をとり、それらを、ディスプレイハードウェアによって暗号解読される共通鍵にトランスクリプトすることができる。各アプリケーションが、コンポジタ実体を信頼しなければならない。
【0071】
図5は、一実施形態による暗号化方法のステップを説明する流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0072】
ステップ500では、プライマリサーフェスの1つまたは複数のセキュア領域を定義する。領域に、任意の適当な形状およびサイズを含めることができる。上の例では、セキュア領域が、長方形の形状である。領域は、ディスプレイスクリーンにレンダリングされた場合にディスプレイスクリーン全体を占めるのに必要な寸法より小さい寸法であることが望ましい。ステップ502で、プライマリサーフェスの個々のセキュア領域に、少なくとも1つの鍵を関連付ける。1つまたは複数の鍵を使用して、セキュア領域に存在するピクセルデータを暗号化し、および/または暗号解読することができる。ステップ504では、1つまたは複数の鍵を使用してピクセルデータを暗号化する。このステップは、信頼されるシステムソフトウェア、ファームウェア、および/またはハードウェアによって実施することができる。たとえば、アプリケーション322などのセキュアアプリケーションが、ピクセルデータの暗号化を引き起こすことができる。ステップ506では、暗号化されたピクセルデータを、プライマリサーフェスのセキュア領域に書き込むか他の形で移動する。ピクセルデータを暗号化したならば、基礎となる暗号解読されたピクセルデータが、窃盗から保護されることに留意されたい。
【0073】
図6は、一実施形態による暗号解読方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0074】
ステップ600で、ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを供給する。ステップ602で、セキュア領域に関連する鍵を供給する。このステップは、制御プロセッサ318(図3)によって実施することができる。たとえば、制御プロセッサによって、暗号化されたピクセルデータの暗号解読に使用するために、デクリプタに1つまたは複数の鍵を供給することができる。ステップ604で、鍵を使用して、プライマリサーフェスのセキュア領域内の暗号化されたデータを暗号解読する。このステップは、デクリプタ320(図3)によって実施することができる。ピクセルデータ処理チェーン内で、暗号解読が行われる点(ポイント)が、プログラム的にアクセス不能であることに留意されたい。したがって、暗号解読されたピクセルデータは、ソフトウェア攻撃から保護される。ステップ606で、暗号解読されたデータを、さらなる処理のためにディスプレイコンバータに供給し、このさらなる処理に、ユーザのディスプレイスクリーンへのピクセルデータのレンダリングが含まれる。
【0075】
実施形態の例
一実施形態では、暗号化および暗号解読を、公開鍵(public key)ベースのエンジンを使用して行うことができる。制御プロトコルを用いて、セキュリティアプリケーションなどのソフトウェアが、コマンドを暗号化された形で制御プロセッサ318(図3)に送ることができ、コマンドが実行されたことを保証するために暗号の知識を受け取ることができるようにすることができる。
【0076】
適切なコマンドセットならばどれでも使用することができる。例として、下記のコマンド(またはこれらに類似するコマンド)を使用することができる。
・GetPK() デバイス公開暗号鍵を返す
・SetSec() セキュア領域の形状およびその領域形状の暗号化鍵をセットする。
・ClearSec() 領域の暗号化をクリアする
【0077】
いくつかの実施形態で、デクリプタ320は、セキュア領域のジオメトリを推論することができ、その結果、領域内の暗号化されたピクセルデータを暗号解読できるようになる。もう1つの実施形態では、デクリプタに、ジオメトリについて知らせることができる。これは、たとえば、セキュアウィンドウが、ユーザのディスプレイスクリーンの異なる位置にドラッグアンドドロップされる場合に有用になる可能性がある。たとえば、GPU308が、ジオメトリプロセッサ(特に図示せず)を実施することができ、このジオメトリプロセッサが、プライマリサーフェスのセキュア領域およびこれらの領域に関連するさまざまなセキュリティデータのリストを維持する。セキュリティデータには、領域のxおよびy座標、領域の幅および高さの寸法、および特定の領域に関連する鍵を含めることができる。デクリプタ320は、このセキュリティデータについて通知を受けることができ、その結果、ピクセルデータの処理を開始する場合に、特定のピクセルがこれらの領域の1つに属し、暗号解読を必要とするかどうか、または、特定のピクセルデータをRAMDACにそのまま渡さなければならないかどうかを知る。セキュアウィンドウが移動される場合に、ジオメトリプロセッサが、セキュリティウィンドウの新しい座標についてデクリプタに通知することができる。
【0078】
1つの例のアーキテクチャでは、公開鍵および制御機能性を、オンボードフラッシュメモリ(「スマートカード」に類似する)を有する別個の外部デバイスにモジュール化することができる。逆に、デクリプタ320を、GPUシリコンに組み込む(すなわち、GPUと共に集積する)ことができる。その場合に、制御プロセッサ318が、暗号解読鍵をGPUに直接に渡すことができる。ソフトウェア攻撃を防ぐさらなる防止手段として、制御プロセッサ318とGPU308の間に専用バスを設けることができる。
【0079】
動作中に、制御プロセッサ318を、セキュアソフトウェア/ハードウェアによって認証することができ、制御プロセッサ318が、「このセキュア領域の暗号化鍵にxをセットする」などの暗号化されたコマンドを受け取ることができる。制御プロセッサは、コマンドが正しく実行されたことを保証するために、暗号応答を返すことができる。
【0080】
暗号化鍵を使用して、ビデオデータをセキュア領域にレンダリングすることができる。この例では、敵対するコードがこの暗号化されたデータを読み取ることが可能である場合がある。しかし、そのようなコードによって読み取られるすべてのデータが、暗号化され、効果的に、敵対するコードにとって役に立たない。いくつかの実施形態で、敵対コードが、暗号化されたデータを修正することが可能である場合がある。しかし、修正された暗号化されたデータは、ディスプレイスクリーンにレンダリングされた場合に、論理的に文脈から外れて見えるデータに暗号解読される。たとえば、そのようなデータは、ディスプレイスクリーンにレンダリングされる場合に、ランダムノイズ/グレイ出力に見える可能性がある。この種の攻撃は、最も疑いなくユーザによって認められる。
【0081】
さらに、認証情報を使用することによって、ピクセルデータが敵対するコードによって修正されたかどうかを確認することができ、ユーザが、それについて知らされる。1つの例として、下記を検討されたい。ある数のビット毎ピクセル、たとえば24ビット/ピクセルを構成するために、セキュアデータフォーマットを要求することができる。24ビット/ピクセルのうち、8ビットが、必ず0の値になることを要求することができる。デクリプタは、非準拠ピクセルを紫で点滅させるように構成することができ、攻撃があったことを制御プロセッサに通知することができる。
【0082】
さらに、他の技法を使用して、ピクセルデータが不適当に修正された場合に、そのような修正を検出できることを保証することができる。1つの例として、下記を検討されたい。ハッシュを、レンダリングされる各ピクセルに関連するピクセルデータについて計算することができる。ピクセルデータがディスプレイコンバータ(たとえばRAMDAC312)によって処理される際に、ディスプレイコンバータが、ピクセルデータのハッシュを計算し、計算されたハッシュを、そのピクセルデータについて前に計算されたハッシュと比較することができる。不適当なデータ修正があった場合には、ハッシュ比較によって、それが起きたことが示される。
【0083】
例示的暗号化技法
さまざまな暗号化技法を使用して、プライマリサーフェスのセキュア領域に存在するピクセルデータが、暗号化され、その後、デクリプタによって正しく暗号解読されることを保証することができる。2つの例示的な暗号化技法を下で説明するが、他の技法を、請求される対象の趣旨および範囲から逸脱せずに使用することができる。
【0084】
使用することができる第1の暗号化技法は、ストリーム暗号(stream cipher)である。ストリーム暗号は、通常は、ソフトウェアで非常に高速であり、ハードウェアで実施が非常に簡単である。ストリーム暗号は、通常は平文の小さい単位、通常はビットを操作する、対称暗号アルゴリズムの1種である。ストリーム暗号では、鍵ストリーム(keystream)と称するもの(鍵として使用されるビットのシーケンス)を生成する。暗号化は、通常はビット単位のXOR演算を用いて、鍵ストリームを平文またはビットと組み合わせることによって達成される。鍵ストリームの生成は、平文および暗号文と独立にして、同期式ストリーム暗号(synchronous stream cipher)と称するものをもたらすことができ、あるいは、データおよびその暗号化に依存するものとすることができ、この場合には、ストリーム暗号を、自己同期式(self−synchronizing)と呼ぶ。ほとんどのストリーム暗号設計が、同期式ストリーム暗号に関するものである。同一のストリーム暗号を使用して、暗号化されたデータを暗号解読することができる。
【0085】
ストリーム暗号を、プライマリサーフェスのセキュア領域内のデータだけを暗号解読する形で、プライマリサーフェス全体に対して実行することができる。しかし、これは、ストリーム暗号がプライマリサーフェス全体に対して実行されるのではなく、セキュア領域だけに対して実行されることだけが必要なので、最良の選択ではない。したがって、ストリーム暗号が実行される範囲を制限し、その結果、範囲が、1つまたは複数のセキュア領域の境界だけを用いて定義されるようにすることができる。制限された範囲のストリーム暗号を実施するのに望ましい形は、ディスプレイのリフレッシュごとに、セキュア領域の左上ピクセルなど、ストリーム暗号の開始位置を定義することである。その後、ストリーム暗号を、セキュア領域の右下ピクセルが処理されるまでセキュア領域内で実行することができる。
【0086】
例として、図7を検討されたい。図7では、プライマリサーフェス700に、暗号化されないピクセルデータが存在する領域702と、暗号化されるピクセルデータ(ストリーム暗号を用いて暗号化される)が存在するセキュア領域704が含まれる。適当に範囲を制限されたストリーム暗号を用いると、ストリーム暗号を、左上ピクセルに示された位置から開始して、右下ピクセルに示された位置で終わるように、実行することができる。暗号化されたデータを暗号解読する場合には、デクリプタ(デクリプタ320など)に、ストリーム暗号の開始位置および停止位置の座標について通知することができる。この実施形態のよい特性の1つが、セキュア領域に関連するセキュアウィンドウが、別の位置にドラッグアンドドロップされる場合(これによって信頼されないソフトウェアが呼び出されて、ウィンドウを移動する可能性がある)に、暗号化動作を、新しい位置で行い続けることができることである。これを実施するためには、暗号化するエンティティに、セキュアウィンドウ(したがって、プライマリサーフェスのセキュア領域)の新しい座標について通知し、その結果、暗号化するエンティティが、新しい位置でその暗号化処理を実行できるようにするだけでよい。同様に、デクリプタ320にも、その位置について通知することができ、その結果、デクリプタが、暗号化されたピクセルデータを暗号解読する正しい位置でストリーム暗号を実行できるようになる。
【0087】
エンクリプタ(encryptor)は、複数のフレームにまたがってストリーム暗号を継続できるようにすることができ、これによって、差分攻撃(differential attack)をより困難にする。ストリーム暗号の鍵は、フレームの各グループの後に変更することができる。鍵の数を減らすために、鍵の固定された配列を、使用に先立ってネゴシエートすることができる。エンクリプタは、フレームのグループごとに異なる鍵を選択しながら、鍵の配列をサイクルすることができる。
【0088】
使用することができる第2の暗号化技法は、ブロック暗号である。ブロック暗号は、対称鍵暗号アルゴリズムのうちで、平文のデータまたはビット(暗号化されていないテキストまたはビット)の固定長ブロックを、同一の長さの暗号文(暗号化されたテキストまたはビット)のブロックに変換するタイプのアルゴリズムである。この変換は、ユーザが供給する秘密鍵の動作の下で行われる。暗号解読は、同一の秘密鍵を使用して、暗号文ブロックに逆変換を適用することによって実行される。固定長を、ブロックサイズと呼び、多くのブロック暗号で、ブロックサイズが64ビットである。近い将来に、プロセッサがより洗練されるので、ブロックサイズが128ビットに増やされる。
【0089】
上で説明した2つの暗号化技法のうちで、ストリーム暗号は、ブロック暗号よりはるかに高速なので、望ましい選択である。
【0090】
認証
いくつかの実施形態で、認証技法を使用して、ビデオカードの保全性および同一性を保証することができる。ビデオカードと相互作用するセキュアソフトウェアアプリケーションの重要な目標が、1)アプリケーションが、ビデオカードをエミュレートするソフトウェアではなく、ビデオカードと実際に通信していることと、(2)アプリケーションが、ピクセルデータのレンダリングに関連する事前に定義されたルールに従うか準拠するビデオカードと実際に通信していることとを、信頼性のある形でアプリケーションが認証できることである。
【0091】
認証技法は、2つの異なる形、たとえば、暗号証明(cryptographic certification)および他の通信プロトコルを介して、実施することができる。
【0092】
暗号証明は、証明された鍵およびディジタル証明書を備えたビデオカードの作成に関する。その鍵および証明書を使用して、ビデオカードが、セキュアソフトウェアアプリケーションとの暗号会話にかかわることができる。たとえば、ディジタル証明書を使用して、ビデオカードを認証することができ、証明された鍵を使用して、セキュアアプリケーションに対して行われる通信を暗号化することができる。暗号証明を実施するために、各ビデオカードが、信頼される実体によって製造される別のセキュリティICチップを有することができる。暗号証明技法は、周知であり、当業者によって理解される。したがって、簡潔にするために、暗号証明は、本明細書ではこれ以上詳細に説明しない。
【0093】
認証のもう1つの手段は、セキュアアプリケーションとビデオカードの間で確立されるセキュアプロトコルに関連するものとすることができる。セキュアプロトコルを用いると、アプリケーションが、有効なビデオカードと通信していることの保証を有することができるようにすることができる。たとえば、信頼されるアプリケーションが、ビデオカードにチャレンジを発行して、それ自体を識別し、カードが、それが信頼されるビデオカードであることの応答を用いて応答することができる。さまざまな既知のセキュアプロトコル技法を使用することができる。
【0094】
上で説明した実施形態によって、複数の長所が提供される。まず、データ(ビデオカード上およびビデオカード外の両方)がソフトウェア攻撃から保護されることを保証できる技法がもたらされる。保護は、ビデオカードのプライマリサーフェスに存在するデータを暗号化するのに使用することができる暗号化技法の形で提供される。暗号解読を、データ処理パイプライン内の、ソフトウェアアクセスのない点で行うことができる。したがって、不良ソフトウェアによる読取攻撃のすべてで、暗号化され、本質的に役に立たないデータが作られる。したがって、ピクセルデータを、機密に保つことができる。さらに、さまざまな技法によって、データの保全性を保てるようになる。すなわち、データ修正攻撃の場合に、さまざまな検出方法を使用して、適当な通知(アプリケーション通知とユーザ通知の両方)が生成されることを保証することができる。さらに、特定のジオメトリによって識別されるプライマリサーフェスのセキュア領域を定義できるようにすることによって、利益が達成される。
【0095】
ピクセルごとの補助機能性
いくつかの実施形態で、個々のピクセルの粒度での機能性を提供することが望ましい可能性がある。たとえば、プライマリサーフェスのセキュア領域は、通常はオーバーラップしない。しかし、いくつかの場合に、ユーザが、ウィンドウをディスプレイ上で移動し、その結果、それらをオーバーラップさせることを望む場合がある。オーバーラップする領域によって、暗号化機能および暗号解読機能を実行するコンポーネントの設計に、追加の設計検討事項が注入される可能性がある。
【0096】
1例として、図8を検討されたい。図8には、ユーザが見るであろうものなどのディスプレイスクリーンが、全般的に800に示されている。セキュアウィンドウ802が設けられ、さらに、非セキュアウィンドウ804が、セキュアウィンドウの右下角とオーバーラップして、オーバーラップ領域806が定義されるものとして示されている。このような状況から生じる可能性がある問題の1つは、下記のようなものである。領域806には、ビデオカードのプライマリサーフェスで実施される場合に、暗号化されたデータが含まれない。しかし、セキュアウィンドウ802に対応する隣接する領域には、暗号化されたデータが含まれる。これを考慮に入れる調整が行われない場合には、デクリプタが、オーバーラップ領域806に関連するピクセルデータを暗号解読する場合がある。このピクセルデータは、それから始めるべき暗号化されたピクセルデータではないので、このデータの暗号解読によって、誤ったデータが作られる。
【0097】
したがって、これから説明する実施形態では、ピクセルごとの機能性を可能にする方法およびシステムを提供する。1つの例では、ピクセルごとのセキュリティを提供することができる。
【0098】
図9に、ピクセルデータの概略表現を、全般的に900に示す。この例では、ピクセルデータに、32ビットのデータが含まれる。赤(R)、緑(G)、および青(B)の値が、それぞれ8ビットとして示される。図示のピクセルデータには32ビット毎ピクセルが含まれるが、ピクセルデータに、これより多数または少数のビット毎ピクセルを含めることができることに留意されたい。この例では、8ビットが残され、これを本明細書で「補助」と呼ぶことに留意されたい。メモリアクセスをより効率的にするために、GPUは、データを、2のべきの倍数である塊で読み込むことを好む。したがって、24ビットデータは、32ビットブロックとして読み取られ、8ビットが、しばしば「未使用」で残されるが、必ず読み取られ、「使用される」ビットと共に書き込まれる。これらの補助ビットを再利用して、ディスプレイスクリーンにレンダリングされる個々のピクセルに関連して実施することができるさまざまな補助機能を指定することができる。補助機能の例には、アルファ情報または透過性情報、デプス情報、領域識別情報、またはカラーキー情報(他のデータによって置換される領域を示すための)を、制限なしに含めることができる。
【0099】
他の一般的なビデオフォーマットでは、24または32ビット毎ピクセルではなく、16ビット毎ピクセルが使用される。たとえば、RGBデータを、5ビット毎ピクセルとして保管し、単一ビットを未使用のままにすることができ、このビットを使用して、2つの補助機能を指定することができる。
【0100】
補助機能性を実施する形の1つが、補助機能性を参照または指定する、テーブル902などのテーブルを設けることである。たとえば、特定の補助機能に8ビットを使用することによって、256個までの補助機能を指定できるようにすることができる。したがって、ピクセルデータが処理される場合に、補助機能に関するピクセルデータのビットを処理して、さまざまな補助機能にアクセスし、実施することができる。
【0101】
図10は、一実施形態による方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0102】
ステップ1000で、定義された数のビット毎ピクセルを有するピクセルデータを提供する。図9の例では、32ビット毎ピクセルがある。しかし、任意の適切な数のビット毎ピクセルを使用することができる。ステップ1002で、ピクセルデータの1つまたは複数のビットを使用して、補助機能を指定する。図9の例では、8ビットを使用して、いわゆる「アルファチャネル」(第4の「未使用の」チャネル)の使用を介して補助機能を指定する。アルファチャネルの8ビットを使用することによって、256個の別々の補助機能が指定される。ステップ1004で、ビットを処理して、補助機能にアクセスする。このステップは、補助ビットの値を、テーブル902(図9)などの補助機能テーブルへのインデックスとして使用することによって実施することができる。このテーブルは、個々の値について、特定のピクセルのピクセルデータに関して実施することができる補助機能を参照する。テーブル902の参照は、補助機能を実施するソフトウェアコードへのポインタとすることができ、あるいは、補助機能自体の一部または全体を含めることができる。ステップ1006で、補助機能を実施する。
【0103】
機能0でヌル機能が指定される場合には、古いアプリケーションが、新しい補助機能を使用する新しいスキームと自動的に互換になる。
【0104】
ピクセルごとのセキュリティ
ピクセルデータの補助ビットを使用して、ピクセルレベルで暗号解読機能性を提供することができる。たとえば、保護されることが望まれるピクセルデータを保持するのに使用されるプライマリサーフェスのセキュア領域があると仮定する。このピクセルデータを、暗号化鍵を使用して、ピクセルレベルで暗号化することができる。暗号化されたピクセルデータの補助ビットによって、ピクセルデータの暗号解読に使用することができる暗号解読鍵が指定されると仮定する。たとえば、ピクセルごとの補助機能テーブル1100を示す図11を検討されたい。この図では、テーブルの各値が、特定の鍵に関連する。たとえば、値「1」は、「鍵1」に関連し、値「2」は、「鍵2」に関連するなどである。したがって、補助ピクセルデータから、特定の鍵がピクセルデータに関連することが示される場合に、デクリプタは、関連する鍵にアクセスし、その鍵を使用してピクセルデータ(通常は0)を暗号解読することができる。補助ピクセルデータによって、ピクセルデータが暗号化されないことを示す値を保持することもできる。この場合には、デクリプタが、単純に、関連するピクセルデータを、さらなる処理のためにディスプレイコンバータに渡し、アプリケーションからの暗号化されていないデータを、新しいスキームにシームレスに統合できるようになる。
【0105】
ピクセルごとの鍵テーブルは、関連する暗号化されたピクセルデータを暗号解読するのに使用することができる個々の鍵を保持することができ、あるいは、関連する暗号化されたピクセルデータを暗号解読するのに使用することができる鍵への参照を保持することができる。
【0106】
このテーブルは、アルファ値など、副(非セキュリティ)補助関連データを保持することもできる。これによって、セキュリティと補助チャネルの前の元々の使用との間の、値の選択的な再利用が可能になる。たとえば、値1から3を、鍵を指定するのに使用することができ(それ自体のアルファ値を有する)、値0および4から255を、その元々のアルファ値を指定するのに使用可能とすることができる。
【0107】
図12は、一実施形態による方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0108】
ステップ1200で、個々のピクセルに関連するピクセルデータを暗号化する。有利なことに、暗号化を、ピクセルレベルで行うことができる。このステップは、任意の適切な形で実施することができる。たとえば、セキュアアプリケーションが、ピクセルデータを暗号化させることができる。その代わりに、他のプロセスを使用して、ピクセルデータを暗号化することができ、その例は、上で示した。ステップ1202で、補助データをピクセルデータに関連付ける。この補助データによって、ピクセルデータの暗号解読に使用することができる1つまたは複数の暗号解読鍵が指定される。いくつかの場合に、補助データに、ピクセルデータを含むビットの部分が含まれるので(たとえばアルファチャネル)、補助データにピクセルデータ自体が含まれるとみなすことができる。ステップ1204で、関連する補助データを含むピクセルデータを受け取る。このステップは、たとえば、適切に構成されたデクリプタによって実施することができる。ステップ1206で、ピクセルデータが暗号解読を必要とするかどうかを判定する。このステップは、補助データを検査することによって実施することができる。補助データに、暗号解読機能性に関連する値が含まれる場合には、暗号解読が必要である。暗号解読が必要な場合には、ステップ1208で、補助データを使用して、ピクセルデータの暗号解読鍵にアクセスする。このステップは、テーブル1100などのテーブルを維持し、そのテーブルを使用して適当な暗号解読鍵にアクセスすることによって、実施することができる。ステップ1210で、暗号解読鍵を使用してピクセルデータを暗号解読する。その一方で、ステップ1206で、暗号解読が必要でないと判定される場合には、ステップ1212で、データを暗号解読しない。このステップは、補助データに特定の値(たとえば0)を割り当て、その値を使用して、暗号解読が必要でないことを示すことによって、実施することができる。その後、データを、さらなる処理のためにディスプレイコンバータに渡すことができる。
【0109】
選択的なピクセルごとの暗号化の利益の1つが、アプリケーションが非長方形の暗号化領域を指定できることである。長方形領域内の暗号化されない各ピクセルを、ヌル暗号化機能(インデックス0)によって指定することができる。
【0110】
副テーブル
上で説明したテーブルのほかに、いわゆる副テーブルを設けて、ピクセルデータを処理する場合に有用な追加情報を含めることができる。例として、副ピクセルテーブル1300が示されている図13を検討されたい。この例では、プライマリサーフェスのセキュア領域内の各ピクセルが、このテーブル内に関連するエントリを有する。したがって、「ピクセル」列によって、プライマリサーフェスのセキュア領域内の特定のピクセルが識別される。この例では、テーブル1300に、「プロセスID」列が含まれ、この列は、特定の領域を「所有」するプロセスまたはエンティティを識別するのに使用することができる。この列は、たとえば、特定のピクセルデータへのアクセスを、アクセスを有しなければならないエンティティだけに制限するのに使用することができる。
【0111】
データ保全性
さらにまたはその代わりに、テーブル1300を、ピクセルデータの保全性を検証するのに使用することができる。たとえば、暗号化されないピクセルデータのハッシュを計算し、テーブル1300の「期待されるハッシュ」列に保管することができる。その後、ピクセルデータが、たとえばデクリプタによって暗号解読される場合に、暗号解読されたピクセルデータの別のハッシュを計算し、「現在のハッシュ」列に置くことができる。期待されるハッシュを現在のハッシュと比較することによって、セキュアアプリケーションまたはデクリプタが、ピクセルデータのいずれかが操作または変更されたかどうかを確認することができる。たとえば、不良アプリケーションが、暗号化されないピクセルデータを成功裡に操作した場合に、ハッシュ比較から、これが行われたことが示される。その一方で、不良アプリケーションが、暗号化されたピクセルデータを操作した場合には、データが、異なる形で暗号解読される。その場合には、現在のハッシュが、暗号解読されたデータについて計算される場合に、現在のハッシュが、最も確実に、期待されるハッシュと有利に匹敵しない。暗号解読ハードウェアは、データが危うくされたことについてアプリケーション(またはアプリケーションの代わりのエージェント)に通知することができる。この通知は、暗号化する実体へのセキュアチャネルを介して行うことができる。
【0112】
他の技法を使用して、セキュア領域内のデータの保全性を保証することができる。たとえば、攻撃者が、なんらかの理由でピクセルごとのアドレス可能性を有し、したがって、ピクセルデータ(補助データを含む)を操作できる可能性がある。この状況に対処するために、すべてのセキュア領域について、補助データが、データの暗号解読を引き起こす値になることを強制するプロセスを実施することができる。したがって、これによって、たとえば、データを、それが暗号解読されないようにする値に変更することによって補助データを攻撃する不良アプリケーションの影響が最小になる。
【0113】
ピクセルごとの補助機能性(ピクセルごとのセキュリティを含む)の長所のいくつかに、関連するテーブル(たとえば鍵テーブル)が比較的小さく、キャッシング可能であることが、制限なしに含まれる。さらに、補助データに、ビットのうちでピクセルデータに既に割り当てられた部分(たとえばアルファチャネル)が含まれる場合に、追加のビデオ帯域幅は不要である。さらに、アルファ値は、アルファチャネルが補助機能性をサポートするのに使用されない場合に、まだ使用することができる。さらに、ピクセルごとの、フレームごとの鍵制御によって、複雑な鍵推移を可能にすることができる。すなわち、鍵を、フレームごとにサイクルすることができ、これによって、ビデオ再生中に鍵を切り替える場合の問題を減らすことができる。上の技法は、非RGBデータ、デスクトップへの直接メモリコピー、およびビデオオーバーレイと共に使用することもできる。
【0114】
最後に、領域が移動される場合に、補助暗号化インデックスが、ビデオデータと共に移動され、暗号化情報が、完全に同期化され、追加のハードウェア変更を必要としないことが保証される。
【0115】
結論
上で説明したさまざまな方法およびシステムによって、ホストコンピュータで実行されるソフトウェアのためのセキュアチャネルが与えられ、ホストコンピュータで実行される不良ソフトウェアがデータを不適切に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに関する解決策が提供される。発明的技法を介して、処理され、ユーザのディスプレイでレンダリングされるビデオデータを、機密に保つことができ、多くの場合に、データの保全性を保護することができる。
【0116】
本発明を、構造的特徴および/または方法ステップに固有の言語で説明したが、請求項で定義される発明が、必ずしも説明した特定の特徴またはステップに制限されないことを理解されたい。そうではなく、特定の特徴およびステップは、請求される発明を実施する好ましい形として開示されるものである。
【図面の簡単な説明】
【図1】コンピュータシステムで使用されることを意図された例示的なビデオカードまたはグラフィックスカードのさまざまなコンポーネントを示すブロック図である。
【図2】説明される実施形態による、ビデオカードを使用することができる例示的なコンピュータシステムのブロック図である。
【図3】一実施形態による例示的なビデオカードまたはグラフィックスカードのさまざまなコンポーネントを示すブロック図である。
【図4】セキュア領域および非セキュア領域を有する例示的プライマリサーフェスを示すブロック図である。
【図5】一実施形態による方法のステップを示す流れ図である。
【図6】一実施形態による方法のステップを示す流れ図である。
【図7】セキュア領域および非セキュア領域を有する例示的プライマリサーフェスを示すブロック図である。
【図8】オーバーラップするウィンドウを有するディスプレイスクリーンを示すブロック図である。
【図9】例示的なピクセルデータおよび関連する補助機能テーブルを示す図である。
【図10】一実施形態による方法のステップを示す流れ図である。
【図11】一実施形態による例示的なピクセルごとのキーテーブルを示す図である。
【図12】一実施形態による方法のステップを示す流れ図である。
【図13】一実施形態による例示的テーブルを示す図である。
【符号の説明】
300 ビデオカード
302 バスコネクタ
304 モニタコネクタ
306 ディジタルビデオアウトソケット
308 グラフィックス処理ユニット(GPU)
310 ビデオメモリ
312 ランダムアクセスメモリディジタル−アナログ変換器(RAMDAC)
314 ビデオBIOS
316 メモリコントローラ
318 制御プロセッサ
319 鍵マネージャ
320 デクリプタ
322 セキュアソフトウェアアプリケーション
【発明の属する技術分野】
本発明は、ビデオカードを使用してデータを処理する方法およびシステムに関する。
【0002】
【従来の技術】
通常、コンピュータに常駐するコンテンツは、コンテンツを盗むか変更することを望む個人によって攻撃される可能性がある。1例として、映画スタジオのようなコンテンツ製作者またはウェブでコンテンツを公開するユーザなどを考慮されたい。通常、これらの個人は、ユーザがどのようにしてそれを見ることができるかに関する制限を有するビデオコンテンツを公開する。このコンテンツは、通常は、パーソナルコンピュータなどのコンピュータで表示するかレンダリングすることができる。不徳な個人および組織がそのようなビデオコンテンツを盗むか他の形態で不正に入手することを試みることによって、毎年膨大な時間、労力、および金銭が費やされる。さらに、個人が取引、たとえば銀行取引を行えるようにする電子商取引ソフトウェアの場合を考慮してほしい。ユーザが再検討し操作するためにディスプレイモニタに表示されるデータが、ユーザのコンピュータで実行される不良ソフトウェアアプリケーションによって攻撃される可能性がある。すなわち、不良なプログラムまたはデバイスが、パーソナルコンピュータなどのコンピュータでコンテンツが受信された後に、そのコンテンツを不適当に入手することを試みることができ、しばしば実際に試みる。
【0003】
コンテンツセキュリティに関する1つの解決策に、さまざまなソフトウェアベースのディジタル著作権管理(digital rights management、DRM)ソリューションを含めることができる。ここでの問題は、ソフトウェアレンダリングを行うソフトウェアベースの耐タンパで「観察が困難な」DRMシステムが、どれほどよいかと言うことではなく、最終的に、ビットがビデオカードに書き出され、その位置から他のソフトウェアによって「見る」ことができ、コピーさえできることである。これによって、脆弱性の1領域が提示される。したがって、ビデオコンテンツを処理するビデオカードを、ソフトウェア攻撃の対象にすることができる。
【0004】
図1に、通常のコンピュータのポートに挿入されるバスコネクタ102を含む例示的なビデオ(またはグラフィックス)カード100を示す。ビデオカード100には、モニタに接続されるケーブルを受けるモニタコネクタ104(たとえば15ピンプラグ)も含まれる。ビデオカード100に、ビデオイメージをLCDモニタ、フラットパネルモニタ、および類似物に送るのに使用することができるディジタルビデオアウトソケット106を含めることができる。
【0005】
現代のビデオカードは、4つの主要コンポーネントすなわち、グラフィックスプロセッサユニット(GPU)108、ビデオメモリ110、ランダムアクセスメモリディジタル−アナログ変換器(RAMDAC)112、および、ビデオBIOS114に含めることができるドライバソフトウェアからなる。
【0006】
GPU108は、解像度、カラーデプス、およびモニタスクリーン上のイメージのレンダリングに関連するすべての要素のすべての態様を制御する専用グラフィックス処理チップである。コンピュータの中央処理装置またはCPU(図示せず)は、ドローイング命令およびデータの組を送り、これらが、グラフィックスカードのプロプラエタリドライバによって解釈され、カードのGPU108によって実行される。GPU108は、ビットマップ転送およびペイント、ウィンドウのサイズ変更および再位置決め、線描、フォントのスケーリング、およびポリゴン描画などの動作を実行する。GPU108は、システムのCPUで実行されるソフトウェアよりはるかに高い速度でこれらのタスクをハードウェアで処理するように設計される。GPUは、フレームデータをフレームバッファ(またはオンボードのビデオメモリ110)に書き込む。GPUによって、システムのCPUの作業負荷が大幅に減らされる。
【0007】
ビデオイメージを保持するメモリを、フレームバッファとも称し、このメモリは、通常はビデオカード自体の上で実施される。この例では、フレームバッファが、ビデオカード上でメモリ110の形で実施される。早期のシステムでは、ビデオメモリが標準DRAMで実施された。しかし、このメモリは、データの消失を避けるために継続的なデータのリフレッシュを必要とし、このリフレッシュ処理中に変更することができない。その結果は、特に現代のグラフィックスカードが必要とする非常に高いクロックスピードで、性能が大きく劣化することである。
【0008】
ビデオカード自体でビデオメモリを実施することの長所は、特定のタスクにカスタマイズできることであり、実際に、これが、下記の新しいメモリ技術の増殖をもたらした。
【0009】
・ビデオRAM(VRAM):書込と読取を同時に行うことができる、特殊なタイプの二重ポートDRAM。通常のDRAMよりはるかに低い頻度のリフレッシュを必要とし、その結果、性能がはるかに高い。
【0010】
・ウィンドウRAM(WRAM):Matrox社のMillenniumカードで使用され、やはり二重ポート式であり、普通のVRAMよりわずかに高速に動作することができる。
【0011】
・EDO DRAM:DRAMより高い帯域幅を提供し、通常のDRAMより高い速度でクロッキングでき、読取/書込サイクルがより効率的に管理される。
【0012】
・SDRAM:EDO RAMに似ているが、メモリおよびグラフィックスチップが、データのラッチに使用される共通のクロックで動作し、SDRAMが通常のEDO RAMより高速に動作できるようになるポイントが異なる。
【0013】
・SGRAM:SDRAMと同一であるが、ブロック書込およびビット単位書込もサポートし、これによって、これらの拡張された特徴をサポートするグラフィックスチップでよりよい性能を示す。
【0014】
・DRDRAM:Direct RDRAMは、完全に新規の、通常のDRAMに対する20倍の性能向上が約束される汎用メモリアーキテクチャである。
【0015】
いくつかの設計で、グラフィックス回路がマザーボード自体に統合され、フレームバッファのためにシステムのRAMの一部が使用される。これを、「統合メモリアーキテクチャ(unified memory architecture)」と称し、これは、コスト削減だけの理由から使用され、低いグラフィックス性能につながる可能性がある。
【0016】
ビデオメモリフレームバッファ内の情報は、ディジタルビットマップとして保管された、スクリーンに現れる物のイメージである。しかし、ビデオメモリにはディジタル情報が含まれるが、その出力媒体(モニタ)で、アナログ信号が使用される場合がある。アナログ信号は、「オン」信号または「オフ」信号以上のものを必要とする。というのは、アナログ信号は、電子銃がモニタの前面を横におよび下に走査する際に、電子銃をどこで、いつ、どの強度で光らせなければならないかを判定するのに使用されるからである。これは、下で説明するように、RAMDAC112が効果を示すところである。一部のRAMDACは、LCDモニタなどのディジタルディスプレイ用のディジタルビデオインターフェース(digital video interface、DVI)出力もサポートする。そのような構成では、RAMDACが、内部ディジタル表現を、ディジタルディスプレイによって理解されるフォーマットに変換する。
【0017】
RAMDACは、内部ディジタルデータを、ディスプレイによって理解されるフォーマットに変換するので、「ディスプレイコンバータ」の役割を演ずる。
【0018】
ビデオカードにインストールされるビデオメモリの総量が、特定の解像度に必要でない場合があるが、余分のメモリは、しばしば、GPU108の情報をキャッシングするのに使用される。たとえば、一般的に使用されるグラフィカルアイテム(テキストフォントおよびアイコンまたはイメージなど)のキャッシングによって、グラフィックスサブシステムが、新しい文字が書き込まれるたびにまたはアイコンが移動されるたびにこれらをロードする必要がなくなり、これによって性能が改善される。キャッシングされたイメージは、GPUによって提示されるイメージのシーケンスをキューに入れるのに使用することができ、これによって、他のタスクを実行するためにCPUが解放される。
【0019】
毎秒何回も、RAMDAC112は、ビデオメモリの内容を読み取り、信号に変換し、その信号を、ビデオケーブルを介してモニタに送る。アナログディスプレイの場合に、通常は、CRTが色の完全なスペクトルを作成するのに使用する3原色のそれぞれについて1つのディジタル−アナログ変換器(DAC)がある。ディジタルディスプレイの場合に、RAMDACは、出力デバイスによって解釈され、表示される単一のRGBデータストリームを出力する。所期の結果は、単一ピクセルの色を作るのに必要な正しい混合である。RAMDAC112が情報を変換できる速度、およびGPU108自体の設計によって、グラフィックスカードがサポートできるリフレッシュレートの範囲が指示される。RAMDAC112によって、その内部アーキテクチャに依存して、所与の解像度で使用可能な色の数も指示される。
【0020】
バスコネクタ102は、ビデオカードに接続するのに使用される1つまたは複数のバスをサポートすることができる。たとえば、Accelerated Graphics Port(AGP)バスによって、ビデオカードからシステムメモリに直接にアクセスできるようにすることができる。直接メモリアクセスは、ピーク帯域幅をPeripheral Component Interconnect(PCI)バスより数倍高速にするのに役立つ。これによって、ビデオカードのGPUがシステムメモリにアクセスしている間に、システムのCPUが他のタスクを実行できるようにすることができる。
【0021】
動作中に、オンボードビデオメモリに含まれるデータを、コンピュータのシステムメモリに供給することができ、それがシステムのメモリの一部であるかのように管理することができる。これには、コンピュータのメモリマネージャが使用する仮想メモリ管理技法などが含まれる。さらに、システムのメモリに含まれるデータが、ビデオカードでのグラフィックス動作に必要な場合に、そのデータを、バス(PCIバスまたはAGPバスなど)を介してビデオカードに送り、オンボードビデオメモリ110に保管することができる。そこで、上で説明したように、GPU108によってデータにアクセスし、操作することができる。
【0022】
【発明が解決しようとする課題】
本発明は、データを保護する方法およびシステムの提供に関連する懸念から生じた。具体的に言うと、本発明は、ソフトウェア攻撃、特にユーザの計算機で実行される不良アプリケーションによって行われる攻撃に耐える方法およびシステムを提供することに関連する懸念から生じた。
【0023】
本発明の目的は、ホストコンピュータで実行されるソフトウェアにセキュアチャネルを供給する方法およびシステムを提供することである。
【0024】
【課題を解決するための手段】
この方法およびシステムは、ホストコンピュータで実行される不良ソフトウェアがデータを不正に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに対する解決策を提供する。いくつかの実施形態で、機密に保つことができる(信頼されないソフトウェアアプリケーションがディスプレイスクリーンからそのデータを読み取ることができないという点で)ピクセルデータを提供することができる。さらに、他の実施形態では、ピクセルデータが不適当に操作されたかどうかを検出することによって、ピクセルデータの保全性を保つことができる。
【0025】
さまざまな実施形態が暗号解読エンジンに基づいており、これは暗号解読されたピクセルデータへのプログラム的アクセスを拒否するように、ビデオカード上に配置され、ビデオ処理チェーンの非常に後の方に位置する。
【0026】
【発明の実施の形態】
例示的コンピュータシステム
図2に、下で説明するシステムおよび関連する方法を実施することができる、適切なコンピューティング環境200の例を示す。
【0027】
コンピューティング環境200が、適切なコンピューティング環境の1つの例にすぎず、媒体処理システムの使用の範囲または機能性に関する制限を暗示することを意図されていないことを諒解されたい。また、コンピューティング環境200を、例示的コンピューティング環境200に図示された任意のコンポーネントまたはその組合せに関する依存性または要件を有するものと解釈してもならない。
【0028】
さまざまな説明される実施形態は、多数の他の汎用または特殊目的のコンピューティング環境またはコンピューティング構成と共に動作することができる。媒体処理システムと共に使用するのに適する可能性がある周知のコンピューティングシステム、コンピューティング環境、および/またはコンピューティング構成の例には、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドデバイス、ラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、および類似物が含まれるが、これに制限はされない。
【0029】
ある実施形態では、システムおよび関連する方法を、プログラムモジュールなどの、コンピュータによって実行されるコンピュータ実行可能命令の全般的な文脈で説明することもできる。一般に、プログラムモジュールには、特定のタスクを実行するか特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。実施形態を、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリストレージデバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
【0030】
図2に示された例の実施形態によれば、コンピューティングシステム200は、1つまたは複数のプロセッサまたは処理ユニット202、システムメモリ204、および、システムメモリ204を含むさまざまなシステムコンポーネントをプロセッサ202に結合するバス206を含むものとして図示されている。
【0031】
バス206は、メモリバスまたはメモリコントローラ、周辺バス、accelerated graphics port、および、さまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む複数のタイプのバスアーキテクチャの任意の1つまたは複数を表すことが意図されている。制限ではなく例として、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびメザニンバスとも称するPeripheral Component Interconnects(PCI)バスが含まれる。
【0032】
コンピュータ200には、通常は、さまざまなコンピュータ可読媒体が含まれる。そのような媒体は、コンピュータ200によってローカルにおよび/またはリモートにアクセス可能なすべての使用可能な媒体とすることができ、これには、揮発性媒体および不揮発性媒体と、取外し可能媒体および取外し不能媒体の両方が含まれる。
【0033】
図2では、システムメモリ204に、ランダムアクセスメモリ(RAM)210などの揮発性の形および/または読取専用メモリ(ROM)208の形の不揮発性メモリの形のコンピュータ可読媒体が含まれる。起動中などにコンピュータ200内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)212が、ROM208に保管される。RAM210には、通常は、処理ユニット202から即座にアクセス可能および/または処理ユニット202によって現在操作されるデータおよび/またはプログラムモジュールが含まれる。
【0034】
コンピュータ200に、さらに、他の取外し可能/取外し不能の、揮発性/不揮発性のコンピュータ記憶媒体を含めることができる。例としてのみ、図2に、取外し不能不揮発性磁気媒体(図示せず、通常は「ハードドライブ」と称する)から読み取り、これに書き込むハードディスクドライブ228、取外し可能不揮発性磁気ディスク232(たとえば「フロッピディスク」)から読み取り、これに書き込む磁気ディスクドライブ230、および、CD−ROM、DVD−ROM、または他の光学媒体などの取外し可能不揮発性光ディスク236から読み取り、これに書き込む光ディスクドライブ234を示す。ハードディスクドライブ228、磁気ディスクドライブ230、および光ディスクドライブ234は、それぞれ、1つまたは複数のインターフェース226によってバス206に接続される。
【0035】
ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ200の、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供する。本明細書で説明する例示的環境では、ハードディスク228、取外し可能磁気ディスク232、および取外し可能光ディスク236が使用されるが、磁気カセット、フラッシュメモリカード、ディジタル多用途ディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、および類似物などの、コンピュータによってアクセス可能なデータを保管することができる他のタイプのコンピュータ可読媒体も、例示的オペレーティング環境で使用できることが、当業者によって諒解されなければならない。
【0036】
複数のプログラムモジュールを、ハードディスク228、磁気ディスク232、光ディスク236、ROM208、またはRAM210に保管することができ、このプログラムモジュールには、制限ではなく例として、オペレーティングシステム214、1つまたは複数のアプリケーションプログラム216(たとえば、マルチメディアアプリケーションプログラム224)、他のプログラムモジュール218、およびプログラムデータ220が含まれる。ユーザは、キーボード238およびポインティングデバイス240(たとえば「マウス」)などの入力デバイスを介してコンピュータ200にコマンドおよび情報を入力することができる。他の入力デバイスに、オーディオ/ビデオ入力デバイス253、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信用パラボラアンテナ、シリアルポート、スキャナ、または類似物(図示せず)を含めることができる。これらおよび他の入力デバイスは、バス206に結合された入力インターフェース242を介して処理ユニット202に接続されるが、パラレルポート、ゲームポート、またはuniversal serial bus(USB)などの他のインターフェース構造およびバス構造によって接続することができる。
【0037】
モニタ256または他のタイプのディスプレイデバイスも、ビデオアダプタまたはビデオ/グラフィックスカード244などのインターフェースを介してバス206に接続される。モニタのほかに、パーソナルコンピュータには、通常は、スピーカおよびプリンタなど、出力周辺インターフェース246を介して接続することができる他の周辺出力デバイス(図示せず)が含まれる。
【0038】
コンピュータ200は、リモートコンピュータ250などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ250に、コンピュータに関して本明細書で説明する要素および特徴の多くまたはすべてを含めることができる。
【0039】
図2からわかるように、コンピューティングシステム200は、ローカルエリアネットワーク(LAN)251および一般的な広域ネットワーク(WAN)252を介してリモートデバイス(たとえばリモートコンピュータ250)に通信的に結合される。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
【0040】
LANネットワーキング環境で使用される場合に、コンピュータ200は、適切なネットワークインターフェースまたはネットワークアダプタ248を介してLAN251に接続される。WANネットワーキング環境で使用される場合に、コンピュータ200に、通常は、モデム254またはWAN252を介する通信を確立する他の手段が含まれる。モデム254は、内蔵または外付けとすることができるが、ユーザ入力インターフェース242または他の適当な機構を介してシステムバス206に接続することができる。
【0041】
ネットワーク化された環境では、パーソナルコンピュータ200に関して図示されたプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに保管することができる。制限ではなく例として、図2に、リモートコンピュータ250のメモリデバイスに常駐するものとしてリモートアプリケーションプログラム216を示す。図示され説明されたネットワーク接続が、例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用することができることを諒解されたい。
【0042】
概要
本明細書で説明するさまざまな方法およびシステムは、ホストコンピュータで実行されるソフトウェアにセキュアチャネルを供給することを対象とする。この方法およびシステムは、ホストコンピュータで実行される不良ソフトウェアが、データを不正に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに対する解決策を提供する。
【0043】
さまざまな実施形態によって、データを、ユーザが対話するためにディスプレイスクリーンにセキュアにレンダリングできるセキュア実行環境を提供することができる。説明される実施形態は、他の特性のうちでも、下記の特性の一方または両方を実施することができる。
【0044】
第1の特性は、たとえばビデオカードに存在するピクセルデータなどのデータを、機密に保つことができることである。これは、信頼されないソフトウェアアプリケーション(または不良アプリケーション)が、ディスプレイスクリーンまたはビデオメモリからデータを読み取れないことを意味する。機密性態様は、ビデオデータまたはピクセルデータをレンダリングする場合に、そのコンピュータで動作する「クラッキングツール(cracking tool)」がビデオデータを読み取れない形でそのビデオデータをビデオカードに送ることができることが望ましいので、ディジタルワークプレースアリーナ(digital workplace arena)で有用である。たとえば、ユーザが、暗号化された形でビデオデータを受信できるようにするセキュア電子メールプログラムで作業していると考えられたい。さまざまな実施形態によって、不良アプリケーションがデータにアクセスできる危険性なしに、ディスプレイスクリーンにデータをレンダリングできるようにすることができる。
【0045】
第2の特性は、保全性である。これは、基本的に、信頼されないソフトウェア(不良ソフトウェア)が、ディスプレイの一部に表示されるデータを操作できることが望まれないことを意味する。たとえば、ユーザが、自分のコンピュータで実行されるソフトウェアを介してある実体に10ドル支払う手配をする電子商取引の設定を考えられたい。ユーザは、単純に、自分のディスプレイスクリーンに表示されるウィンドウに金額をタイプすることができる。しかし、不良アプリケーションが、「10ドル」を「1000ドル」に変更することが可能である。理解できるように、これは望ましくなく、ユーザは、意図したものより高額の支払いを許可したことになる。
【0046】
さらに、ある信頼されないソフトウェアが、何らかの形でデータを不適切に操作する場合に、これが行われたことを知らせることができることが望ましい。したがって、下で説明する実施形態の一部で、データ操作を検出できる手段を提供する。
【0047】
例示的実施形態
下で説明する実施形態は、セキュアビデオ出力すなわち、ソフトウェア攻撃を許さないビデオ出力の提供を対象とする。さまざまな実施形態で、全スクリーンの保護が排除されるのではないが、スクリーン領域そのものの全体ではなく、ユーザのディスプレイスクリーン上の領域(すなわちウィンドウ)に選択的に適用できるウィンドウベースの保護を提供することができる。セキュアビデオ出力は、通常は、信頼されないソフトウェアによって読み取ることができない。この挙動によって、プレミアムコンテンツ(たとえば、ビデオ、書籍)などのコンテンツの保護ならびにさまざまな一般的な電子商取引アプリケーションおよびセキュリティアプリケーションが提供される。
【0048】
さらに、さまざまな実施形態で、信頼されないダイアログによって隠す(部分的にまたは完全にのいずれか)ことが可能ではないいわゆるセキュアダイアログを提供することができる。この挙動は、一般の電子商取引トランザクションの文脈で最も有用である。
【0049】
下で説明する実施形態は、セキュアビデオ出力を提供する暗号ベースの解決策である。さまざまな実施形態の長所は、実施形態が、通常は実施が簡単であり、既存のソフトウェアアーキテクチャに対する影響を事実上有しないことである。
【0050】
これから説明する実施形態のいくつかは、暗号解読エンジンに基づいており、これはビデオカード上に配置され、ビデオ処理チェーンの非常に後の方に位置する。本明細書で説明する例では、実施形態の多くの態様が、ハードウェアで実施され、他の態様は、ファームウェアおよびソフトウェアでも実施することができる。
【0051】
発明的実施形態の望ましい特徴は、ユーザのディスプレイスクリーンに表示されるさまざまなデータが、暗号化されることである。したがって、データを盗むことを対象とする攻撃は、暗号化されたデータが盗まれることだけをもたらす。暗号化技法は、盗まれた暗号化されたデータが、暗号解読が数学的に実行不可能になるように使用することができる。さらに、暗号化されたデータの暗号解読は、処理チェーン内の、表示される暗号解読されたビットへのプログラム的アクセスがなくなる点で行われる。すなわち、暗号解読されたビットへのソフトウェアアクセスがなく、その結果、ユーザのコンピュータで実行される不良ソフトウェアが、暗号解読されたビットにアクセスできなくなる。
【0052】
一実施形態では、デクリプタ(decryptor)が、ビデオカード上に置かれ、GPUとディスプレイコンバータ(たとえばRAMDAC)の中間に配置される。デクリプタは、ハードウェアで実施されることが望ましく、ビデオカードがフレームバッファをディスプレイコンバータにラスタ変換している際に「リアルタイム」で暗号化されたデータを処理することができる。
【0053】
例示的アーキテクチャ
図3に、一実施形態による例示的なビデオ(またはグラフィックス)カード300を示す。カード300には、通常のコンピュータのポートに挿入されるバスコネクタ302が含まれる。ビデオカード300には、モニタに接続されるケーブルを受けるモニタコネクタ304(たとえば15ピンプラグ)も含まれる。ビデオカード300に、ビデオイメージをディジタルディスプレイおよび類似物に送るのに使用することができるディジタルビデオアウト(たとえばDVI)ソケット306を含めることができるが、これは必要ではない。
【0054】
図1のビデオカードと同様に、ビデオカード300には、グラフィックス処理ユニット(GPU)308、ビデオメモリ310、ディスプレイコンバータまたはランダムアクセスメモリディジタル−アナログ変換器(RAMDAC)312、およびビデオBIOS314に含めることができるドライバソフトウェアが含まれる。
【0055】
GPU308は、解像度、カラーデプス、およびモニタスクリーン上のイメージのレンダリングに関連するすべての要素のすべての態様を制御する専用グラフィックス処理チップである。メモリコントローラ(時々GPUに統合される)が、ビデオカードのメモリを管理する。コンピュータの中央処理装置またはCPU(図示せず)は、ドローイング命令およびデータの組を送り、これらが、グラフィックスカードのプロプラエタリドライバによって解釈され、カードのGPU308によって実行される。GPU308は、ビットマップ転送およびペイント、ウィンドウのサイズ変更および再位置決め、線描、フォントのスケーリング、およびポリゴン描画などの動作を実行する。GPUは、フレームデータをフレームバッファ(またはオンボードのビデオメモリ310)に書き込むことができる。
【0056】
ビデオメモリフレームバッファ内の情報は、ディジタルビットマップとして保管された、スクリーンに現れるもののイメージである。RAMDAC312は、上で説明したように、ディジタルビットマップを、モニタでのレンダリングに使用できる形に変換するのに使用される。
【0057】
これらのコンポーネントのほかに、この実施形態では、ビデオカード300に、メモリコントローラ316、および、鍵マネージャ319を含めることができる制御プロセッサ318が含まれる。ビデオカードには、デクリプタ320も含まれる。これらのコンポーネントは、適切なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで実施することができる。
【0058】
メモリコントローラ316は、ビデオカード上のデータを受け取り、ビデオメモリ310内のデータを管理する。メモリコントローラは、ビデオカードとシステムメモリの間のデータ転送の管理の責任も負うことができる。
【0059】
制御プロセッサ318が設けられ、制御プロセッサ318に、鍵マネージャ319を含めることができる。制御プロセッサは、ビデオカード上で行われる暗号機能を編成する責任を負うことができる。たとえば、制御プロセッサ318は、専用バスまたはセキュアチャネルを介して、デクリプタ320と通信して、セキュリティの理由から暗号化されたピクセルデータを正しく暗号解読するのに必要な暗号解読機能をデクリプタに持たせることができる。制御プロセッサ318は、鍵マネージャ319を介して、関連するピクセルデータの暗号化および暗号解読に関連する鍵を管理することができる。いくつかの実施形態で、制御プロセッサを、ビデオカード上の別の集積回路チップとして実施することができる。
【0060】
デクリプタ320は、関連するピクセルデータを暗号解読するように構成されるか、構成可能である。たとえば、下で詳細に説明するように、保護されなければならないデータを、暗号化し、モニタでのイメージのレンダリングにRAMDAC312によって使用されるデータを含むビデオカードのメモリのいわゆる「プライマリサーフェス」またはデスクトップサーフェスの部分を含むセキュア領域に書き込むことができる。暗号化されたイメージは、プライマリサーフェスにコピーされる前に、ビデオメモリ内の一時位置にコピーすることができる。制御プロセッサ318は、データの暗号化に使用される暗号化鍵をセットすることができ、暗号化されたピクセルデータの暗号解読に使用するために暗号解読鍵をデクリプタ320に供給することができる。データが暗号解読されたならば、そのデータを、さらなる処理のためにRAMDACに渡すことができる。
【0061】
デクリプタが、別のコンポーネントとして図示されているが、効果的にデクリプタとして動作するように、RAMDACに適当な暗号解読機能性を与えることができることを諒解し、理解されたい。
【0062】
動作中に、セキュアなまたは信頼されるソフトウェアアプリケーション322によって、デクリプタ320とそのソフトウェアアプリケーションの間の共用鍵をセットアップすることができる。このソフトウェアアプリケーションは、その後、その鍵を使用して、メモリ(ビデオメモリ310またはシステムメモリのいずれか)に保管することができる暗号化されたピクセルデータを生成することができる。
【0063】
通常は、ピクセルデータをプライマリサーフェスまたはフレームバッファの保護された領域に書き込むことができる2つの異なる形がある。第1に、ピクセルデータを、メモリコントローラが準備する「move」動作を介してフレームバッファに直接に書き込むことができる。第2に、アプリケーション(セキュアアプリケーション322など)が、システムメモリ内で保護されるピクセルデータを組み立てることができ、このピクセルデータは、システムメモリ内で暗号化される。システムメモリ内の暗号化されたデータは、最終的に、暗号解読およびレンダリングのためにプライマリサーフェスにコピーされる。
【0064】
制御プロセッサは、ピクセルデータをRAMDAC312に送る前(またはモニタにレンダリングする前)にそのデータを暗号解読するのにどの鍵を使用するかをデクリプタ320が知っていることを保証することができる。
【0065】
したがって、この例では、1つまたは複数の鍵を信頼される実体の間で共用できるようにする機構がある。データは、ビデオカード上で暗号化し、データ処理チェーンのある点(ポイント)で暗号解読することができ、その結果、ディスプレイモニタにレンダリングされなければならない暗号化されないデータが、ソフトウェア攻撃を許さなくなる。プライマリサーフェスの保護された領域から暗号化されたデータを読み取ることを試みる信頼されない実体または不良の実体は、それにとって効果的に役に立たない暗号化されたデータだけを読み取る。さらに、これは、VRAMメモリが仮想メモリ管理技法を介してシステムメモリにマッピングされる場合にも成り立つ。したがって、プライマリサーフェスの保護された領域内にあると思われるデータが、ビデオカード上にあるか、またはシステムのメモリにマッピングされるかのいずれであれ、そのデータは、暗号化され、したがって保護される。
【0066】
セキュアウィンドウ
一実施形態では、1つまたは複数のセキュアウィンドウが設けられ、これを使用して、ユーザのディスプレイスクリーンに機密データを表示することができる。ユーザのディスプレイスクリーン上のセキュアウィンドウは、ビデオカードのメモリ(または、仮想メモリ管理技法が使用される場合に、システムメモリ)内のプライマリサーフェスのセキュア領域に関連し、対応する。例として、図4を検討されたい。
【0067】
この図には、ビデオカードのプライマリサーフェスの概略表現が、全般的に400に示されている。プライマリサーフェス400には、暗号化されないデータを含む領域402(陰付き)と、暗号化されたデータを含む1つまたは複数の領域が含まれる。この特定の例では、2つの例示的なセキュア領域404および406に、暗号化されたデータを含めることができる。各セキュア領域の対応するセキュアウィンドウが、それぞれ404aおよび406aに示されている。
【0068】
この実施形態では、デクリプタ320(図3)が、領域402内のピクセルデータのすべてを、修正(すなわち暗号化)なしで渡すように構成される。すなわち、領域402に存在するデータは暗号化されないので、デクリプタ320がそのデータを暗号解読する必要がない。しかし、デクリプタは、領域404および406に存在する暗号化されたデータを暗号解読する。
【0069】
領域404および406内のピクセルデータは、セキュア領域に関連する鍵を使用して、デクリプタによって暗号解読することができる。いくつかの実施形態では、単一の鍵を、すべてのセキュア領域に関連付けることができる。他の実施形態では、各セキュア領域が、それ自体の関連する鍵を有することができる。セキュア領域ごとに別の鍵を有する理由の1つが、あるセキュア領域が、他のセキュア領域にアクセスできるあるアプリケーションに関連しない場合があることである。たとえば、セキュア電子メールアプリケーションが、あるセキュア領域に関連し、そのセキュア領域に暗号化された電子メールが存在すると仮定する。また、電子商取引アプリケーションが、異なるセキュア領域に関連すると仮定する。電子メールアプリケーションが、電子商取引アプリケーションに関連するセキュア領域にアクセスできる理由は、実際にはない。それでも、セキュア領域のすべてについて1つの鍵だけがある場合には、おそらくは、あるセキュア領域にアクセスできるすべてのアプリケーションが、他のすべてのセキュア領域にアクセスすることができる。したがって、セキュア領域ごとに異なる鍵を設けることによって、各セキュア領域へのアクセスが、アクセスを有することができなければならないアプリケーションだけに制限される。
【0070】
その代わりに、別の実施形態では、中央の実体(「ミキサ」または「コンポジタ」)が、複数の領域をとり、それらを、ディスプレイハードウェアによって暗号解読される共通鍵にトランスクリプトすることができる。各アプリケーションが、コンポジタ実体を信頼しなければならない。
【0071】
図5は、一実施形態による暗号化方法のステップを説明する流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0072】
ステップ500では、プライマリサーフェスの1つまたは複数のセキュア領域を定義する。領域に、任意の適当な形状およびサイズを含めることができる。上の例では、セキュア領域が、長方形の形状である。領域は、ディスプレイスクリーンにレンダリングされた場合にディスプレイスクリーン全体を占めるのに必要な寸法より小さい寸法であることが望ましい。ステップ502で、プライマリサーフェスの個々のセキュア領域に、少なくとも1つの鍵を関連付ける。1つまたは複数の鍵を使用して、セキュア領域に存在するピクセルデータを暗号化し、および/または暗号解読することができる。ステップ504では、1つまたは複数の鍵を使用してピクセルデータを暗号化する。このステップは、信頼されるシステムソフトウェア、ファームウェア、および/またはハードウェアによって実施することができる。たとえば、アプリケーション322などのセキュアアプリケーションが、ピクセルデータの暗号化を引き起こすことができる。ステップ506では、暗号化されたピクセルデータを、プライマリサーフェスのセキュア領域に書き込むか他の形で移動する。ピクセルデータを暗号化したならば、基礎となる暗号解読されたピクセルデータが、窃盗から保護されることに留意されたい。
【0073】
図6は、一実施形態による暗号解読方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0074】
ステップ600で、ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを供給する。ステップ602で、セキュア領域に関連する鍵を供給する。このステップは、制御プロセッサ318(図3)によって実施することができる。たとえば、制御プロセッサによって、暗号化されたピクセルデータの暗号解読に使用するために、デクリプタに1つまたは複数の鍵を供給することができる。ステップ604で、鍵を使用して、プライマリサーフェスのセキュア領域内の暗号化されたデータを暗号解読する。このステップは、デクリプタ320(図3)によって実施することができる。ピクセルデータ処理チェーン内で、暗号解読が行われる点(ポイント)が、プログラム的にアクセス不能であることに留意されたい。したがって、暗号解読されたピクセルデータは、ソフトウェア攻撃から保護される。ステップ606で、暗号解読されたデータを、さらなる処理のためにディスプレイコンバータに供給し、このさらなる処理に、ユーザのディスプレイスクリーンへのピクセルデータのレンダリングが含まれる。
【0075】
実施形態の例
一実施形態では、暗号化および暗号解読を、公開鍵(public key)ベースのエンジンを使用して行うことができる。制御プロトコルを用いて、セキュリティアプリケーションなどのソフトウェアが、コマンドを暗号化された形で制御プロセッサ318(図3)に送ることができ、コマンドが実行されたことを保証するために暗号の知識を受け取ることができるようにすることができる。
【0076】
適切なコマンドセットならばどれでも使用することができる。例として、下記のコマンド(またはこれらに類似するコマンド)を使用することができる。
・GetPK() デバイス公開暗号鍵を返す
・SetSec() セキュア領域の形状およびその領域形状の暗号化鍵をセットする。
・ClearSec() 領域の暗号化をクリアする
【0077】
いくつかの実施形態で、デクリプタ320は、セキュア領域のジオメトリを推論することができ、その結果、領域内の暗号化されたピクセルデータを暗号解読できるようになる。もう1つの実施形態では、デクリプタに、ジオメトリについて知らせることができる。これは、たとえば、セキュアウィンドウが、ユーザのディスプレイスクリーンの異なる位置にドラッグアンドドロップされる場合に有用になる可能性がある。たとえば、GPU308が、ジオメトリプロセッサ(特に図示せず)を実施することができ、このジオメトリプロセッサが、プライマリサーフェスのセキュア領域およびこれらの領域に関連するさまざまなセキュリティデータのリストを維持する。セキュリティデータには、領域のxおよびy座標、領域の幅および高さの寸法、および特定の領域に関連する鍵を含めることができる。デクリプタ320は、このセキュリティデータについて通知を受けることができ、その結果、ピクセルデータの処理を開始する場合に、特定のピクセルがこれらの領域の1つに属し、暗号解読を必要とするかどうか、または、特定のピクセルデータをRAMDACにそのまま渡さなければならないかどうかを知る。セキュアウィンドウが移動される場合に、ジオメトリプロセッサが、セキュリティウィンドウの新しい座標についてデクリプタに通知することができる。
【0078】
1つの例のアーキテクチャでは、公開鍵および制御機能性を、オンボードフラッシュメモリ(「スマートカード」に類似する)を有する別個の外部デバイスにモジュール化することができる。逆に、デクリプタ320を、GPUシリコンに組み込む(すなわち、GPUと共に集積する)ことができる。その場合に、制御プロセッサ318が、暗号解読鍵をGPUに直接に渡すことができる。ソフトウェア攻撃を防ぐさらなる防止手段として、制御プロセッサ318とGPU308の間に専用バスを設けることができる。
【0079】
動作中に、制御プロセッサ318を、セキュアソフトウェア/ハードウェアによって認証することができ、制御プロセッサ318が、「このセキュア領域の暗号化鍵にxをセットする」などの暗号化されたコマンドを受け取ることができる。制御プロセッサは、コマンドが正しく実行されたことを保証するために、暗号応答を返すことができる。
【0080】
暗号化鍵を使用して、ビデオデータをセキュア領域にレンダリングすることができる。この例では、敵対するコードがこの暗号化されたデータを読み取ることが可能である場合がある。しかし、そのようなコードによって読み取られるすべてのデータが、暗号化され、効果的に、敵対するコードにとって役に立たない。いくつかの実施形態で、敵対コードが、暗号化されたデータを修正することが可能である場合がある。しかし、修正された暗号化されたデータは、ディスプレイスクリーンにレンダリングされた場合に、論理的に文脈から外れて見えるデータに暗号解読される。たとえば、そのようなデータは、ディスプレイスクリーンにレンダリングされる場合に、ランダムノイズ/グレイ出力に見える可能性がある。この種の攻撃は、最も疑いなくユーザによって認められる。
【0081】
さらに、認証情報を使用することによって、ピクセルデータが敵対するコードによって修正されたかどうかを確認することができ、ユーザが、それについて知らされる。1つの例として、下記を検討されたい。ある数のビット毎ピクセル、たとえば24ビット/ピクセルを構成するために、セキュアデータフォーマットを要求することができる。24ビット/ピクセルのうち、8ビットが、必ず0の値になることを要求することができる。デクリプタは、非準拠ピクセルを紫で点滅させるように構成することができ、攻撃があったことを制御プロセッサに通知することができる。
【0082】
さらに、他の技法を使用して、ピクセルデータが不適当に修正された場合に、そのような修正を検出できることを保証することができる。1つの例として、下記を検討されたい。ハッシュを、レンダリングされる各ピクセルに関連するピクセルデータについて計算することができる。ピクセルデータがディスプレイコンバータ(たとえばRAMDAC312)によって処理される際に、ディスプレイコンバータが、ピクセルデータのハッシュを計算し、計算されたハッシュを、そのピクセルデータについて前に計算されたハッシュと比較することができる。不適当なデータ修正があった場合には、ハッシュ比較によって、それが起きたことが示される。
【0083】
例示的暗号化技法
さまざまな暗号化技法を使用して、プライマリサーフェスのセキュア領域に存在するピクセルデータが、暗号化され、その後、デクリプタによって正しく暗号解読されることを保証することができる。2つの例示的な暗号化技法を下で説明するが、他の技法を、請求される対象の趣旨および範囲から逸脱せずに使用することができる。
【0084】
使用することができる第1の暗号化技法は、ストリーム暗号(stream cipher)である。ストリーム暗号は、通常は、ソフトウェアで非常に高速であり、ハードウェアで実施が非常に簡単である。ストリーム暗号は、通常は平文の小さい単位、通常はビットを操作する、対称暗号アルゴリズムの1種である。ストリーム暗号では、鍵ストリーム(keystream)と称するもの(鍵として使用されるビットのシーケンス)を生成する。暗号化は、通常はビット単位のXOR演算を用いて、鍵ストリームを平文またはビットと組み合わせることによって達成される。鍵ストリームの生成は、平文および暗号文と独立にして、同期式ストリーム暗号(synchronous stream cipher)と称するものをもたらすことができ、あるいは、データおよびその暗号化に依存するものとすることができ、この場合には、ストリーム暗号を、自己同期式(self−synchronizing)と呼ぶ。ほとんどのストリーム暗号設計が、同期式ストリーム暗号に関するものである。同一のストリーム暗号を使用して、暗号化されたデータを暗号解読することができる。
【0085】
ストリーム暗号を、プライマリサーフェスのセキュア領域内のデータだけを暗号解読する形で、プライマリサーフェス全体に対して実行することができる。しかし、これは、ストリーム暗号がプライマリサーフェス全体に対して実行されるのではなく、セキュア領域だけに対して実行されることだけが必要なので、最良の選択ではない。したがって、ストリーム暗号が実行される範囲を制限し、その結果、範囲が、1つまたは複数のセキュア領域の境界だけを用いて定義されるようにすることができる。制限された範囲のストリーム暗号を実施するのに望ましい形は、ディスプレイのリフレッシュごとに、セキュア領域の左上ピクセルなど、ストリーム暗号の開始位置を定義することである。その後、ストリーム暗号を、セキュア領域の右下ピクセルが処理されるまでセキュア領域内で実行することができる。
【0086】
例として、図7を検討されたい。図7では、プライマリサーフェス700に、暗号化されないピクセルデータが存在する領域702と、暗号化されるピクセルデータ(ストリーム暗号を用いて暗号化される)が存在するセキュア領域704が含まれる。適当に範囲を制限されたストリーム暗号を用いると、ストリーム暗号を、左上ピクセルに示された位置から開始して、右下ピクセルに示された位置で終わるように、実行することができる。暗号化されたデータを暗号解読する場合には、デクリプタ(デクリプタ320など)に、ストリーム暗号の開始位置および停止位置の座標について通知することができる。この実施形態のよい特性の1つが、セキュア領域に関連するセキュアウィンドウが、別の位置にドラッグアンドドロップされる場合(これによって信頼されないソフトウェアが呼び出されて、ウィンドウを移動する可能性がある)に、暗号化動作を、新しい位置で行い続けることができることである。これを実施するためには、暗号化するエンティティに、セキュアウィンドウ(したがって、プライマリサーフェスのセキュア領域)の新しい座標について通知し、その結果、暗号化するエンティティが、新しい位置でその暗号化処理を実行できるようにするだけでよい。同様に、デクリプタ320にも、その位置について通知することができ、その結果、デクリプタが、暗号化されたピクセルデータを暗号解読する正しい位置でストリーム暗号を実行できるようになる。
【0087】
エンクリプタ(encryptor)は、複数のフレームにまたがってストリーム暗号を継続できるようにすることができ、これによって、差分攻撃(differential attack)をより困難にする。ストリーム暗号の鍵は、フレームの各グループの後に変更することができる。鍵の数を減らすために、鍵の固定された配列を、使用に先立ってネゴシエートすることができる。エンクリプタは、フレームのグループごとに異なる鍵を選択しながら、鍵の配列をサイクルすることができる。
【0088】
使用することができる第2の暗号化技法は、ブロック暗号である。ブロック暗号は、対称鍵暗号アルゴリズムのうちで、平文のデータまたはビット(暗号化されていないテキストまたはビット)の固定長ブロックを、同一の長さの暗号文(暗号化されたテキストまたはビット)のブロックに変換するタイプのアルゴリズムである。この変換は、ユーザが供給する秘密鍵の動作の下で行われる。暗号解読は、同一の秘密鍵を使用して、暗号文ブロックに逆変換を適用することによって実行される。固定長を、ブロックサイズと呼び、多くのブロック暗号で、ブロックサイズが64ビットである。近い将来に、プロセッサがより洗練されるので、ブロックサイズが128ビットに増やされる。
【0089】
上で説明した2つの暗号化技法のうちで、ストリーム暗号は、ブロック暗号よりはるかに高速なので、望ましい選択である。
【0090】
認証
いくつかの実施形態で、認証技法を使用して、ビデオカードの保全性および同一性を保証することができる。ビデオカードと相互作用するセキュアソフトウェアアプリケーションの重要な目標が、1)アプリケーションが、ビデオカードをエミュレートするソフトウェアではなく、ビデオカードと実際に通信していることと、(2)アプリケーションが、ピクセルデータのレンダリングに関連する事前に定義されたルールに従うか準拠するビデオカードと実際に通信していることとを、信頼性のある形でアプリケーションが認証できることである。
【0091】
認証技法は、2つの異なる形、たとえば、暗号証明(cryptographic certification)および他の通信プロトコルを介して、実施することができる。
【0092】
暗号証明は、証明された鍵およびディジタル証明書を備えたビデオカードの作成に関する。その鍵および証明書を使用して、ビデオカードが、セキュアソフトウェアアプリケーションとの暗号会話にかかわることができる。たとえば、ディジタル証明書を使用して、ビデオカードを認証することができ、証明された鍵を使用して、セキュアアプリケーションに対して行われる通信を暗号化することができる。暗号証明を実施するために、各ビデオカードが、信頼される実体によって製造される別のセキュリティICチップを有することができる。暗号証明技法は、周知であり、当業者によって理解される。したがって、簡潔にするために、暗号証明は、本明細書ではこれ以上詳細に説明しない。
【0093】
認証のもう1つの手段は、セキュアアプリケーションとビデオカードの間で確立されるセキュアプロトコルに関連するものとすることができる。セキュアプロトコルを用いると、アプリケーションが、有効なビデオカードと通信していることの保証を有することができるようにすることができる。たとえば、信頼されるアプリケーションが、ビデオカードにチャレンジを発行して、それ自体を識別し、カードが、それが信頼されるビデオカードであることの応答を用いて応答することができる。さまざまな既知のセキュアプロトコル技法を使用することができる。
【0094】
上で説明した実施形態によって、複数の長所が提供される。まず、データ(ビデオカード上およびビデオカード外の両方)がソフトウェア攻撃から保護されることを保証できる技法がもたらされる。保護は、ビデオカードのプライマリサーフェスに存在するデータを暗号化するのに使用することができる暗号化技法の形で提供される。暗号解読を、データ処理パイプライン内の、ソフトウェアアクセスのない点で行うことができる。したがって、不良ソフトウェアによる読取攻撃のすべてで、暗号化され、本質的に役に立たないデータが作られる。したがって、ピクセルデータを、機密に保つことができる。さらに、さまざまな技法によって、データの保全性を保てるようになる。すなわち、データ修正攻撃の場合に、さまざまな検出方法を使用して、適当な通知(アプリケーション通知とユーザ通知の両方)が生成されることを保証することができる。さらに、特定のジオメトリによって識別されるプライマリサーフェスのセキュア領域を定義できるようにすることによって、利益が達成される。
【0095】
ピクセルごとの補助機能性
いくつかの実施形態で、個々のピクセルの粒度での機能性を提供することが望ましい可能性がある。たとえば、プライマリサーフェスのセキュア領域は、通常はオーバーラップしない。しかし、いくつかの場合に、ユーザが、ウィンドウをディスプレイ上で移動し、その結果、それらをオーバーラップさせることを望む場合がある。オーバーラップする領域によって、暗号化機能および暗号解読機能を実行するコンポーネントの設計に、追加の設計検討事項が注入される可能性がある。
【0096】
1例として、図8を検討されたい。図8には、ユーザが見るであろうものなどのディスプレイスクリーンが、全般的に800に示されている。セキュアウィンドウ802が設けられ、さらに、非セキュアウィンドウ804が、セキュアウィンドウの右下角とオーバーラップして、オーバーラップ領域806が定義されるものとして示されている。このような状況から生じる可能性がある問題の1つは、下記のようなものである。領域806には、ビデオカードのプライマリサーフェスで実施される場合に、暗号化されたデータが含まれない。しかし、セキュアウィンドウ802に対応する隣接する領域には、暗号化されたデータが含まれる。これを考慮に入れる調整が行われない場合には、デクリプタが、オーバーラップ領域806に関連するピクセルデータを暗号解読する場合がある。このピクセルデータは、それから始めるべき暗号化されたピクセルデータではないので、このデータの暗号解読によって、誤ったデータが作られる。
【0097】
したがって、これから説明する実施形態では、ピクセルごとの機能性を可能にする方法およびシステムを提供する。1つの例では、ピクセルごとのセキュリティを提供することができる。
【0098】
図9に、ピクセルデータの概略表現を、全般的に900に示す。この例では、ピクセルデータに、32ビットのデータが含まれる。赤(R)、緑(G)、および青(B)の値が、それぞれ8ビットとして示される。図示のピクセルデータには32ビット毎ピクセルが含まれるが、ピクセルデータに、これより多数または少数のビット毎ピクセルを含めることができることに留意されたい。この例では、8ビットが残され、これを本明細書で「補助」と呼ぶことに留意されたい。メモリアクセスをより効率的にするために、GPUは、データを、2のべきの倍数である塊で読み込むことを好む。したがって、24ビットデータは、32ビットブロックとして読み取られ、8ビットが、しばしば「未使用」で残されるが、必ず読み取られ、「使用される」ビットと共に書き込まれる。これらの補助ビットを再利用して、ディスプレイスクリーンにレンダリングされる個々のピクセルに関連して実施することができるさまざまな補助機能を指定することができる。補助機能の例には、アルファ情報または透過性情報、デプス情報、領域識別情報、またはカラーキー情報(他のデータによって置換される領域を示すための)を、制限なしに含めることができる。
【0099】
他の一般的なビデオフォーマットでは、24または32ビット毎ピクセルではなく、16ビット毎ピクセルが使用される。たとえば、RGBデータを、5ビット毎ピクセルとして保管し、単一ビットを未使用のままにすることができ、このビットを使用して、2つの補助機能を指定することができる。
【0100】
補助機能性を実施する形の1つが、補助機能性を参照または指定する、テーブル902などのテーブルを設けることである。たとえば、特定の補助機能に8ビットを使用することによって、256個までの補助機能を指定できるようにすることができる。したがって、ピクセルデータが処理される場合に、補助機能に関するピクセルデータのビットを処理して、さまざまな補助機能にアクセスし、実施することができる。
【0101】
図10は、一実施形態による方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0102】
ステップ1000で、定義された数のビット毎ピクセルを有するピクセルデータを提供する。図9の例では、32ビット毎ピクセルがある。しかし、任意の適切な数のビット毎ピクセルを使用することができる。ステップ1002で、ピクセルデータの1つまたは複数のビットを使用して、補助機能を指定する。図9の例では、8ビットを使用して、いわゆる「アルファチャネル」(第4の「未使用の」チャネル)の使用を介して補助機能を指定する。アルファチャネルの8ビットを使用することによって、256個の別々の補助機能が指定される。ステップ1004で、ビットを処理して、補助機能にアクセスする。このステップは、補助ビットの値を、テーブル902(図9)などの補助機能テーブルへのインデックスとして使用することによって実施することができる。このテーブルは、個々の値について、特定のピクセルのピクセルデータに関して実施することができる補助機能を参照する。テーブル902の参照は、補助機能を実施するソフトウェアコードへのポインタとすることができ、あるいは、補助機能自体の一部または全体を含めることができる。ステップ1006で、補助機能を実施する。
【0103】
機能0でヌル機能が指定される場合には、古いアプリケーションが、新しい補助機能を使用する新しいスキームと自動的に互換になる。
【0104】
ピクセルごとのセキュリティ
ピクセルデータの補助ビットを使用して、ピクセルレベルで暗号解読機能性を提供することができる。たとえば、保護されることが望まれるピクセルデータを保持するのに使用されるプライマリサーフェスのセキュア領域があると仮定する。このピクセルデータを、暗号化鍵を使用して、ピクセルレベルで暗号化することができる。暗号化されたピクセルデータの補助ビットによって、ピクセルデータの暗号解読に使用することができる暗号解読鍵が指定されると仮定する。たとえば、ピクセルごとの補助機能テーブル1100を示す図11を検討されたい。この図では、テーブルの各値が、特定の鍵に関連する。たとえば、値「1」は、「鍵1」に関連し、値「2」は、「鍵2」に関連するなどである。したがって、補助ピクセルデータから、特定の鍵がピクセルデータに関連することが示される場合に、デクリプタは、関連する鍵にアクセスし、その鍵を使用してピクセルデータ(通常は0)を暗号解読することができる。補助ピクセルデータによって、ピクセルデータが暗号化されないことを示す値を保持することもできる。この場合には、デクリプタが、単純に、関連するピクセルデータを、さらなる処理のためにディスプレイコンバータに渡し、アプリケーションからの暗号化されていないデータを、新しいスキームにシームレスに統合できるようになる。
【0105】
ピクセルごとの鍵テーブルは、関連する暗号化されたピクセルデータを暗号解読するのに使用することができる個々の鍵を保持することができ、あるいは、関連する暗号化されたピクセルデータを暗号解読するのに使用することができる鍵への参照を保持することができる。
【0106】
このテーブルは、アルファ値など、副(非セキュリティ)補助関連データを保持することもできる。これによって、セキュリティと補助チャネルの前の元々の使用との間の、値の選択的な再利用が可能になる。たとえば、値1から3を、鍵を指定するのに使用することができ(それ自体のアルファ値を有する)、値0および4から255を、その元々のアルファ値を指定するのに使用可能とすることができる。
【0107】
図12は、一実施形態による方法のステップを示す流れ図である。この方法は、適切なハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。現在の例では、この方法を、少なくとも部分的に、適切に構成されたビデオカードによって実施することができ、そのビデオカードの例は、上で示した。
【0108】
ステップ1200で、個々のピクセルに関連するピクセルデータを暗号化する。有利なことに、暗号化を、ピクセルレベルで行うことができる。このステップは、任意の適切な形で実施することができる。たとえば、セキュアアプリケーションが、ピクセルデータを暗号化させることができる。その代わりに、他のプロセスを使用して、ピクセルデータを暗号化することができ、その例は、上で示した。ステップ1202で、補助データをピクセルデータに関連付ける。この補助データによって、ピクセルデータの暗号解読に使用することができる1つまたは複数の暗号解読鍵が指定される。いくつかの場合に、補助データに、ピクセルデータを含むビットの部分が含まれるので(たとえばアルファチャネル)、補助データにピクセルデータ自体が含まれるとみなすことができる。ステップ1204で、関連する補助データを含むピクセルデータを受け取る。このステップは、たとえば、適切に構成されたデクリプタによって実施することができる。ステップ1206で、ピクセルデータが暗号解読を必要とするかどうかを判定する。このステップは、補助データを検査することによって実施することができる。補助データに、暗号解読機能性に関連する値が含まれる場合には、暗号解読が必要である。暗号解読が必要な場合には、ステップ1208で、補助データを使用して、ピクセルデータの暗号解読鍵にアクセスする。このステップは、テーブル1100などのテーブルを維持し、そのテーブルを使用して適当な暗号解読鍵にアクセスすることによって、実施することができる。ステップ1210で、暗号解読鍵を使用してピクセルデータを暗号解読する。その一方で、ステップ1206で、暗号解読が必要でないと判定される場合には、ステップ1212で、データを暗号解読しない。このステップは、補助データに特定の値(たとえば0)を割り当て、その値を使用して、暗号解読が必要でないことを示すことによって、実施することができる。その後、データを、さらなる処理のためにディスプレイコンバータに渡すことができる。
【0109】
選択的なピクセルごとの暗号化の利益の1つが、アプリケーションが非長方形の暗号化領域を指定できることである。長方形領域内の暗号化されない各ピクセルを、ヌル暗号化機能(インデックス0)によって指定することができる。
【0110】
副テーブル
上で説明したテーブルのほかに、いわゆる副テーブルを設けて、ピクセルデータを処理する場合に有用な追加情報を含めることができる。例として、副ピクセルテーブル1300が示されている図13を検討されたい。この例では、プライマリサーフェスのセキュア領域内の各ピクセルが、このテーブル内に関連するエントリを有する。したがって、「ピクセル」列によって、プライマリサーフェスのセキュア領域内の特定のピクセルが識別される。この例では、テーブル1300に、「プロセスID」列が含まれ、この列は、特定の領域を「所有」するプロセスまたはエンティティを識別するのに使用することができる。この列は、たとえば、特定のピクセルデータへのアクセスを、アクセスを有しなければならないエンティティだけに制限するのに使用することができる。
【0111】
データ保全性
さらにまたはその代わりに、テーブル1300を、ピクセルデータの保全性を検証するのに使用することができる。たとえば、暗号化されないピクセルデータのハッシュを計算し、テーブル1300の「期待されるハッシュ」列に保管することができる。その後、ピクセルデータが、たとえばデクリプタによって暗号解読される場合に、暗号解読されたピクセルデータの別のハッシュを計算し、「現在のハッシュ」列に置くことができる。期待されるハッシュを現在のハッシュと比較することによって、セキュアアプリケーションまたはデクリプタが、ピクセルデータのいずれかが操作または変更されたかどうかを確認することができる。たとえば、不良アプリケーションが、暗号化されないピクセルデータを成功裡に操作した場合に、ハッシュ比較から、これが行われたことが示される。その一方で、不良アプリケーションが、暗号化されたピクセルデータを操作した場合には、データが、異なる形で暗号解読される。その場合には、現在のハッシュが、暗号解読されたデータについて計算される場合に、現在のハッシュが、最も確実に、期待されるハッシュと有利に匹敵しない。暗号解読ハードウェアは、データが危うくされたことについてアプリケーション(またはアプリケーションの代わりのエージェント)に通知することができる。この通知は、暗号化する実体へのセキュアチャネルを介して行うことができる。
【0112】
他の技法を使用して、セキュア領域内のデータの保全性を保証することができる。たとえば、攻撃者が、なんらかの理由でピクセルごとのアドレス可能性を有し、したがって、ピクセルデータ(補助データを含む)を操作できる可能性がある。この状況に対処するために、すべてのセキュア領域について、補助データが、データの暗号解読を引き起こす値になることを強制するプロセスを実施することができる。したがって、これによって、たとえば、データを、それが暗号解読されないようにする値に変更することによって補助データを攻撃する不良アプリケーションの影響が最小になる。
【0113】
ピクセルごとの補助機能性(ピクセルごとのセキュリティを含む)の長所のいくつかに、関連するテーブル(たとえば鍵テーブル)が比較的小さく、キャッシング可能であることが、制限なしに含まれる。さらに、補助データに、ビットのうちでピクセルデータに既に割り当てられた部分(たとえばアルファチャネル)が含まれる場合に、追加のビデオ帯域幅は不要である。さらに、アルファ値は、アルファチャネルが補助機能性をサポートするのに使用されない場合に、まだ使用することができる。さらに、ピクセルごとの、フレームごとの鍵制御によって、複雑な鍵推移を可能にすることができる。すなわち、鍵を、フレームごとにサイクルすることができ、これによって、ビデオ再生中に鍵を切り替える場合の問題を減らすことができる。上の技法は、非RGBデータ、デスクトップへの直接メモリコピー、およびビデオオーバーレイと共に使用することもできる。
【0114】
最後に、領域が移動される場合に、補助暗号化インデックスが、ビデオデータと共に移動され、暗号化情報が、完全に同期化され、追加のハードウェア変更を必要としないことが保証される。
【0115】
結論
上で説明したさまざまな方法およびシステムによって、ホストコンピュータで実行されるソフトウェアのためのセキュアチャネルが与えられ、ホストコンピュータで実行される不良ソフトウェアがデータを不適切に入手するか他の形で操作することを試みる攻撃モデルに対処し、それに関する解決策が提供される。発明的技法を介して、処理され、ユーザのディスプレイでレンダリングされるビデオデータを、機密に保つことができ、多くの場合に、データの保全性を保護することができる。
【0116】
本発明を、構造的特徴および/または方法ステップに固有の言語で説明したが、請求項で定義される発明が、必ずしも説明した特定の特徴またはステップに制限されないことを理解されたい。そうではなく、特定の特徴およびステップは、請求される発明を実施する好ましい形として開示されるものである。
【図面の簡単な説明】
【図1】コンピュータシステムで使用されることを意図された例示的なビデオカードまたはグラフィックスカードのさまざまなコンポーネントを示すブロック図である。
【図2】説明される実施形態による、ビデオカードを使用することができる例示的なコンピュータシステムのブロック図である。
【図3】一実施形態による例示的なビデオカードまたはグラフィックスカードのさまざまなコンポーネントを示すブロック図である。
【図4】セキュア領域および非セキュア領域を有する例示的プライマリサーフェスを示すブロック図である。
【図5】一実施形態による方法のステップを示す流れ図である。
【図6】一実施形態による方法のステップを示す流れ図である。
【図7】セキュア領域および非セキュア領域を有する例示的プライマリサーフェスを示すブロック図である。
【図8】オーバーラップするウィンドウを有するディスプレイスクリーンを示すブロック図である。
【図9】例示的なピクセルデータおよび関連する補助機能テーブルを示す図である。
【図10】一実施形態による方法のステップを示す流れ図である。
【図11】一実施形態による例示的なピクセルごとのキーテーブルを示す図である。
【図12】一実施形態による方法のステップを示す流れ図である。
【図13】一実施形態による例示的テーブルを示す図である。
【符号の説明】
300 ビデオカード
302 バスコネクタ
304 モニタコネクタ
306 ディジタルビデオアウトソケット
308 グラフィックス処理ユニット(GPU)
310 ビデオメモリ
312 ランダムアクセスメモリディジタル−アナログ変換器(RAMDAC)
314 ビデオBIOS
316 メモリコントローラ
318 制御プロセッサ
319 鍵マネージャ
320 デクリプタ
322 セキュアソフトウェアアプリケーション
Claims (59)
- ビデオカード上の暗号化されたビデオデータを提供することと、
データ処理のうちで、暗号解読されたビデオデータへのプログラム的アクセスがないポイントで、前記暗号化されたビデオデータを暗号解読することと
を含むことを特徴とする方法。 - 前記暗号解読の動作が、前記ビデオカード上のディスプレイコンバータへの前記暗号解読されたビデオデータの供給に先立って実行されることを特徴とする請求項1に記載の方法。
- 前記暗号解読の動作が、前記ビデオカード上のRAMDACへの前記暗号解読されたビデオデータの供給に先立って実行されることを特徴とする請求項1に記載の方法。
- 前記暗号解読の動作が、前記ビデオカード上のハードウェアデクリプタによって実行されることを特徴とする請求項1に記載の方法。
- 前記暗号解読の動作が、ビデオカードGPUと前記ビデオカード上のRAMDACとの中間のデクリプタによって実行されることを特徴とする請求項1に記載の方法。
- 1つまたは複数のコンピュータによって実行される場合に、前記1つまたは複数のコンピュータに請求項1に記載の方法を実施させることを特徴とする1つまたは複数の組のコンピュータ可読命令。
- ビデオカード上の暗号化されたビデオデータを提供する手段と、
前記ビデオカード上で前記暗号化されたビデオデータを暗号解読する手段と、
前記暗号解読されたビデオデータへのソフトウェアアクセスを拒否する手段と
を含むことを特徴とするシステム。 - 前記暗号化されたビデオデータを提供する手段は、ストリーム暗号を含むことを特徴とする請求項7に記載のシステム。
- 前記暗号化されたビデオデータを提供する手段は、ブロック暗号を含むことを特徴とする請求項7に記載のシステム。
- 前記暗号解読する手段は、前記ビデオカード上のハードウェアデクリプタを含むことを特徴とする請求項7に記載のシステム。
- モニタ上でレンダリングされるビデオデータを処理するグラフィックスプロセッサユニットと、
前記グラフィックスプロセッサユニットによって処理されるか処理されたデータを保持する、前記グラフィックスプロセッサユニットに関連して動作可能なメモリと、
ディジタルデータを、前記データを前記モニタ上でレンダリングする際に使用される信号に変換するディスプレイコンバータと、
前記ディスプレイコンバータに供給するためにピクセルデータを暗号解読するように構成されたデクリプタであって、前記デクリプタが、プログラム的アクセスがないデータ処理ポイントに配置される、デクリプタと
を含むことを特徴とするシステム。 - 前記メモリは、前記モニタ上でレンダリングされるデータを含むプライマリサーフェスを含み、前記プライマリサーフェスは、暗号化されたデータを配置することができる1つまたは複数のセキュア領域を含むことを特徴とする請求項11に記載のシステム。
- 暗号解読機能を前記デクリプタに分け与えるように構成された前記ビデオカード上の制御プロセッサをさらに含むことを特徴とする請求項11に記載のシステム。
- 前記制御プロセッサは、暗号化されたピクセルデータを暗号解読するために前記デクリプタに供給することができる1つまたは複数の鍵を管理する鍵マネージャを含むことを特徴とする請求項13に記載のシステム。
- 前記制御プロセッサおよび前記デクリプタに通信的にリンクされるセキュアチャネルをさらに含むことを特徴とする請求項13に記載のシステム。
- 前記制御プロセッサは、前記ビデオカード上の別の集積回路チップを含むことを特徴とする請求項13に記載のシステム。
- 前記デクリプタは、前記ビデオカード上の別のコンポーネントを含むことを特徴とする請求項11に記載のシステム。
- ビデオカード上の、モニタ上でレンダリングされるビデオデータを処理するプロセッサ手段と、
前記ビデオカード上の、前記プロセッサ手段によって処理されるか処理されたデータを保持する、前記プロセッサ手段に関連して動作可能なメモリ手段と、
前記ビデオカード上の、ディジタルデータを、前記モニタ上で前記データをレンダリングするのに使用される信号に変換するコンバータ手段と、
前記ビデオカード上の、前記コンバータ手段に供給されるピクセルデータを暗号解読するデクリプタ手段と、
前記ビデオカード上の、1つまたは複数のソフトウェアアプリケーションによる暗号解読されたピクセルデータへのアクセスを拒否する手段と
を含むことを特徴とするシステム。 - ビデオカードと、
その一部はモニタ上でレンダリングされるデータを含むプライマリサーフェスを含む、前記ビデオカード上のメモリと、
暗号化されたピクセルデータを保管する、前記プライマリサーフェス上の1つまたは複数のセキュア領域と、
前記1つまたは複数の領域に関連し、前記暗号化されたピクセルデータを暗号解読できるようにするように構成された少なくとも1つの鍵と
を含むことを特徴とするシステム。 - 個々のセキュア領域は、前記モニタ上で設けることができるセキュアウィンドウに対応することを特徴とする請求項19に記載のシステム。
- 個々のセキュア領域は、個別に関連する鍵を有することを特徴とする請求項19に記載のシステム。
- それぞれは異なる鍵を有する複数のセキュア領域はあることを特徴とする請求項21に記載のシステム。
- 関連する鍵を使用して前記暗号化されたピクセルデータを暗号解読するように構成された、前記ビデオカード上のデクリプタをさらに含むことを特徴とする請求項19に記載のシステム。
- 前記デクリプタは、暗号解読されたピクセルデータへのプログラム的アクセスはない処理ポイントで前記暗号化されたピクセルデータを暗号解読することを特徴とする請求項23に記載のシステム。
- 前記デクリプタは、ハードウェアデクリプタを含むことを特徴とする請求項23に記載のシステム。
- 前記ビデオカードは、認証可能であることを特徴とする請求項19に記載のシステム。
- 前記ビデオカードは、認証に使用することができるディジタル証明書を含むことを特徴とする請求項26に記載のシステム。
- 前記ビデオカードは、認証に関するチャレンジに応答するように構成されることを特徴とする請求項26に記載のシステム。
- 前記ビデオカードは、1つまたは複数のセキュアアプリケーションとの通信を暗号化する鍵を含むことを特徴とする請求項19に記載のシステム。
- ビデオカードのメモリ内でプライマリサーフェスの1つまたは複数のセキュア領域を定義することと、
前記1つまたは複数のセキュア領域に保管されるピクセルデータを暗号化する際に使用するのに適する少なくとも1つの鍵を、前記1つまたは複数のセキュア領域に関連付けることと、
前記少なくとも1つの鍵を用いてピクセルデータを暗号化することと、
前記暗号化されたピクセルデータを前記1つまたは複数のセキュア領域に供給することと
を含むことを特徴とする方法。 - 前記1つまたは複数のセキュア領域は、形状において長方形であることを特徴とする請求項30に記載の方法。
- 前記鍵は、ストリーム暗号を用いて暗号化するのに使用することができる鍵を含むことを特徴とする請求項30に記載の方法。
- 前記鍵は、ブロック暗号を用いて暗号化するのに使用することができる鍵を含むことを特徴とする請求項30に記載の方法。
- 前記定義する動作は、複数のセキュア領域を定義し、
関連付ける前記動作は、異なる鍵を各セキュア領域に関連付ける
ことを特徴とする請求項30に記載の方法。 - 暗号化する前記動作が、前記1つまたは複数のセキュア領域に範囲を制限されるストリーム暗号を使用して実行されることを特徴とする請求項30に記載の方法。
- 1つまたは複数のコンピュータによって実行される時に、前記1つまたは複数のコンピュータに請求項30に記載の方法を実施させることを特徴とする1つまたは複数の組のコンピュータ可読命令。
- ビデオカードのメモリ内でプライマリサーフェスの1つまたは複数のセキュア領域を定義する手段と、
前記1つまたは複数のセキュア領域に保管されるピクセルデータを暗号化する際に使用するのに適する少なくとも1つの鍵を、前記1つまたは複数のセキュア領域に関連付ける手段と、
前記少なくとも1つの鍵を用いてピクセルデータを暗号化する手段と、
前記暗号化されたピクセルデータを前記1つまたは複数のセキュア領域に供給する手段と
を含むことを特徴とするシステム。 - ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供することと、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供することと、
前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読するのに前記鍵を使用することと
を含むことを特徴とする方法。 - 前記鍵を使用する動作は、前記暗号化されたデータへのプログラム的アクセスはない処理ポイントで起こることを特徴とする請求項38に記載の方法。
- 前記鍵を提供する動作が、前記ビデオカード上の制御プロセッサによって実行されることを特徴とする請求項38に記載の方法。
- 前記暗号化されたデータを暗号解読するのに前記鍵を使用する動作が、前記ビデオカード上のハードウェアデクリプタによって実行されることを特徴とする請求項38に記載の方法。
- 前記暗号化されたデータを暗号解読するのに前記鍵を使用する動作が、前記セキュア領域のジオメトリを推論することができる前記ビデオカード上のデクリプタによって実行されることを特徴とする請求項38に記載の方法。
- ディスプレイスクリーンでのレンダリングのために前記暗号解読されたデータをディスプレイコンバータに供給することをさらに含むことを特徴とする請求項38に記載の方法。
- 複数の異なるセキュア領域はあり、前記鍵を提供する動作は、各セキュア領域に関連する前記鍵を供給することを特徴とする請求項38に記載の方法。
- 複数の異なるセキュア領域はあり、前記鍵を提供する動作は、複数の鍵を供給することを含み、各セキュア領域は、異なる鍵に関連することを特徴とする請求項38に記載の方法。
- 暗号解読するのに前記鍵を使用する動作が、ストリーム暗号を使用して実行されることを特徴とする請求項38に記載の方法。
- 暗号解読するのに前記鍵を使用する動作が、範囲を制限されたストリーム暗号を使用して実行されることを特徴とする請求項38に記載の方法。
- 暗号解読するのに前記鍵を使用する動作が、ブロック暗号を使用して実行されることを特徴とする請求項38に記載の方法。
- 1つまたは複数のコンピュータによって実行される場合に、前記1つまたは複数のコンピュータに請求項38に記載の方法を実施させることを特徴とする1つまたは複数の組のコンピュータ可読命令。
- ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供する手段と、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供する手段と、
前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読するのに前記鍵を使用する手段と
を含むことを特徴とするシステム。 - ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供することであって、前記セキュア領域は関連するジオメトリを有する、提供することと、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供することと、
前記セキュア領域のジオメトリについて、前記ビデオカード上のデクリプタに知らせることと、
前記デクリプタに前記鍵を提供することと、
前記デクリプタを用いて、前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読することと
を含むことを特徴とする方法。 - ディスプレイモニタに表示され、前記セキュア領域に関連するウィンドウが前記ディスプレイモニタ上の異なる位置へドラッグアンドドロップされることに応答して、知らせる前記動作が実行されることを特徴とする請求項51に記載の方法。
- 1つまたは複数のコンピュータによって実行される場合に、前記1つまたは複数のコンピュータに請求項51に記載の方法を実施させることを特徴とする1つまたは複数の組のコンピュータ可読命令。
- ビデオカードのプライマリサーフェスのセキュア領域内の暗号化されたデータを提供することと、
前記暗号化されたデータを暗号解読するのに使用することができる、前記セキュア領域に関連する鍵を提供することと、
前記プライマリサーフェスの前記セキュア領域内の前記暗号化されたデータを暗号解読するのに前記鍵を使用することと、
前記データのいずれかが修正されたかどうかを検出することと
を含むことを特徴とする方法。 - 前記検出する動作が、暗号化されないデータがディスプレイモニタにレンダリングされる前に実行されることを特徴とする請求項54に記載の方法。
- 前記検出する動作が、前記暗号化されたデータに関連する認証情報を使用して実行されることを特徴とする請求項54に記載の方法。
- 前記認証情報は、所定のピクセルが所定の値を有することを要求されるセキュアデータフォーマットを含むことを特徴とする請求項56に記載の方法。
- 前記検出する動作が、暗号化されないデータのハッシュについてのハッシュ計算を使用して実行されることを特徴とする請求項54に記載の方法。
- 通知が、暗号化する実体に、セキュアチャネルを介して返されることを特徴とする請求項54に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/178,804 US8155314B2 (en) | 2002-06-24 | 2002-06-24 | Systems and methods for securing video card output |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004062885A true JP2004062885A (ja) | 2004-02-26 |
Family
ID=27733938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003180212A Pending JP2004062885A (ja) | 2002-06-24 | 2003-06-24 | ビデオカード出力を保護するシステムおよび方法 |
Country Status (14)
Country | Link |
---|---|
US (2) | US8155314B2 (ja) |
EP (1) | EP1378809A3 (ja) |
JP (1) | JP2004062885A (ja) |
CN (1) | CN100350395C (ja) |
AU (1) | AU2003204378B2 (ja) |
BR (1) | BR0301721A (ja) |
CA (1) | CA2427367A1 (ja) |
MX (1) | MXPA03004371A (ja) |
MY (1) | MY140378A (ja) |
NO (1) | NO20032888L (ja) |
PL (1) | PL360330A1 (ja) |
RU (1) | RU2327215C2 (ja) |
TW (1) | TW200401234A (ja) |
ZA (1) | ZA200303552B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006526227A (ja) * | 2003-05-23 | 2006-11-16 | ワシントン ユニヴァーシティー | Fpgaデバイスを使用するインテリジェントデータ記憶および処理 |
KR101295879B1 (ko) * | 2009-08-19 | 2013-08-16 | 한국전자통신연구원 | 패스워드 해독 장치 및 그것의 패스워드 해독 방법 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0212308D0 (en) * | 2002-05-28 | 2002-07-10 | Symbian Ltd | Trusted user interface for a secure mobile wireless device |
US8155314B2 (en) | 2002-06-24 | 2012-04-10 | Microsoft Corporation | Systems and methods for securing video card output |
US7636857B2 (en) | 2004-05-24 | 2009-12-22 | Interdigital Technology Corporation | Data-mover controller with plural registers for supporting ciphering operations |
WO2006034713A1 (en) * | 2004-09-29 | 2006-04-06 | Sagem Denmark A/S | Secure display for atm |
US20070262138A1 (en) * | 2005-04-01 | 2007-11-15 | Jean Somers | Dynamic encryption of payment card numbers in electronic payment transactions |
US8190918B2 (en) * | 2006-11-13 | 2012-05-29 | Disney Enterprises, Inc. | Interoperable digital rights management |
US9268918B2 (en) | 2007-03-13 | 2016-02-23 | Nxp, B.V. | Encryption and decryption of a dataset in at least two dimensions |
US20090172331A1 (en) * | 2007-12-31 | 2009-07-02 | Balaji Vembu | Securing content for playback |
EP2368337A4 (en) * | 2008-12-24 | 2016-12-28 | Commonwealth Australia | DIGITAL VIDEO PROTECTION |
EP2432211B1 (en) * | 2009-05-11 | 2017-04-26 | Fujitsu Limited | Image encryption/decoding device, method, and program |
US9589159B2 (en) * | 2009-06-26 | 2017-03-07 | Intel Corporation | Creating secure communication channels between processing elements |
US20110252153A1 (en) * | 2010-04-09 | 2011-10-13 | Zvi Vlodavsky | Securely providing session key information for user consent to remote management of a computer device |
US8458788B2 (en) * | 2010-05-04 | 2013-06-04 | Synaptics Incorporated | System and method for authentication of input devices |
US8693687B2 (en) * | 2010-10-03 | 2014-04-08 | Himax Media Solutions, Inc. | Method and apparatus of processing three-dimensional video content |
WO2013101136A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Dual composite field advanced encryption standard memory encryption engine |
US20140067673A1 (en) * | 2012-09-05 | 2014-03-06 | Mads Lanrok | Trusted user interface and touchscreen |
CN103809671A (zh) * | 2012-11-09 | 2014-05-21 | 辉达公司 | 图形卡及用于其的基板和核心板 |
US20140320527A1 (en) * | 2013-04-30 | 2014-10-30 | Microsoft Corporation | Hardware glyph cache |
US9111123B2 (en) | 2013-06-28 | 2015-08-18 | International Business Machines Corporation | Firmware for protecting data from software threats |
US10769312B2 (en) * | 2015-10-06 | 2020-09-08 | Carnegie Mellon University | Method and apparatus for trusted display on untrusted computing platforms to secure applications |
JP6803385B2 (ja) * | 2015-12-09 | 2020-12-23 | 周興昌 | データ伝送方法及びデータ伝送装置 |
FR3048538B1 (fr) * | 2016-03-03 | 2018-11-09 | Ingenico Group | Procede d'execution et de traitement de donnees, dispositif et programme d'ordinateur correspondant |
CN107526562A (zh) * | 2017-08-17 | 2017-12-29 | 深圳市华星光电半导体显示技术有限公司 | 显示装置及其驱动方法 |
US20190057639A1 (en) * | 2017-08-17 | 2019-02-21 | Shenzhen China Star Optoelectronics Semiconductor Display Technology Co., Ltd. | Display device and driving method thereof |
US10909926B2 (en) * | 2018-05-08 | 2021-02-02 | Apple Inc. | Pixel circuitry and operation for memory-containing electronic display |
CN111125113B (zh) * | 2019-12-25 | 2020-09-15 | 中科三清科技有限公司 | 空气污染物数据的存储方法和装置 |
US11770385B2 (en) * | 2019-12-31 | 2023-09-26 | Paypal, Inc. | Systems and methods for malicious client detection through property analysis |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881287A (en) * | 1994-08-12 | 1999-03-09 | Mast; Michael B. | Method and apparatus for copy protection of images in a computer system |
US6064739A (en) * | 1996-09-30 | 2000-05-16 | Intel Corporation | System and method for copy-protecting distributed video content |
WO2002025416A2 (en) * | 2000-09-20 | 2002-03-28 | Intel Corporation | Method and apparatus to improve the protection of information presented by a computer |
US20020163522A1 (en) * | 2001-05-07 | 2002-11-07 | Porter Allen J.C. | Method and apparatus for maintaining secure and nonsecure data in a shared memory system |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12432A (en) * | 1855-02-27 | Henry | ||
CA1238427A (en) | 1984-12-18 | 1988-06-21 | Jonathan Oseas | Code protection using cryptography |
US4962533A (en) | 1989-02-17 | 1990-10-09 | Texas Instrument Incorporated | Data protection for computer systems |
GB8908399D0 (en) | 1989-04-13 | 1989-06-01 | British Telecomm | Optical fibre back plane |
HUT63931A (en) | 1990-04-27 | 1993-10-28 | Scandic Int Pty Ltd | Method and apparatus for validating active cards, as well as machine operating by said apparatus |
US5627987A (en) * | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
US5297206A (en) | 1992-03-19 | 1994-03-22 | Orton Glenn A | Cryptographic method for communication and electronic signatures |
US5321749A (en) | 1992-09-21 | 1994-06-14 | Richard Virga | Encryption device |
US5572235A (en) | 1992-11-02 | 1996-11-05 | The 3Do Company | Method and apparatus for processing image data |
US5577125A (en) * | 1993-06-14 | 1996-11-19 | International Business Machines Corporation | Graphical manipulation of encryption |
WO1995033239A1 (en) | 1994-05-26 | 1995-12-07 | The Commonwealth Of Australia | Secure computer architecture |
US5537467A (en) * | 1994-08-23 | 1996-07-16 | Bell Communications Research, Inc. | Method for forwarding a call to a temporarily utilized portable telephone |
DE69532434T2 (de) | 1994-10-27 | 2004-11-11 | Mitsubishi Corp. | Gerät für Dateiurheberrechte-Verwaltungssystem |
US5727062A (en) | 1995-07-06 | 1998-03-10 | Ritter; Terry F. | Variable size block ciphers |
US5859920A (en) * | 1995-11-30 | 1999-01-12 | Eastman Kodak Company | Method for embedding digital information in an image |
US5719937A (en) | 1995-12-06 | 1998-02-17 | Solana Technology Develpment Corporation | Multi-media copy management system |
JPH09259044A (ja) | 1996-03-21 | 1997-10-03 | Fuji Xerox Co Ltd | 機密保護機能付き情報処理装置および機密保護方法 |
US6055314A (en) | 1996-03-22 | 2000-04-25 | Microsoft Corporation | System and method for secure purchase and delivery of video content programs |
US5825877A (en) | 1996-06-11 | 1998-10-20 | International Business Machines Corporation | Support for portable trusted software |
GB9704638D0 (en) * | 1997-03-06 | 1997-04-23 | Lsi Logic Corp | Digital video broadcasting |
US6421733B1 (en) | 1997-03-25 | 2002-07-16 | Intel Corporation | System for dynamically transcoding data transmitted between computers |
US5898779A (en) * | 1997-04-14 | 1999-04-27 | Eastman Kodak Company | Photograhic system with selected area image authentication |
JPH10293722A (ja) | 1997-04-17 | 1998-11-04 | Taisei Corp | データ保護装置 |
US6064764A (en) * | 1998-03-30 | 2000-05-16 | Seiko Epson Corporation | Fragile watermarks for detecting tampering in images |
US6047342A (en) | 1998-03-31 | 2000-04-04 | Apple Computer, Inc. | PC processing card for decoding operations |
US6044187A (en) * | 1998-04-01 | 2000-03-28 | Duck; Gary S. | Multi-port fiber optical device |
US6424430B1 (en) * | 1998-04-06 | 2002-07-23 | Adobe Systems Incorporated | Rendering of objects on graphical rendering devices as clipped images |
KR100296958B1 (ko) * | 1998-05-06 | 2001-09-22 | 이석우 | 블록 데이터 암호화 장치 |
US7233619B1 (en) * | 1998-12-21 | 2007-06-19 | Roman Kendyl A | Variable general purpose compression for video images (ZLN) |
US6330624B1 (en) | 1999-02-09 | 2001-12-11 | International Business Machines Corporation | Access limiting to only a planar by storing a device public key only within the planar and a planar public key only within the device |
US20020012432A1 (en) | 1999-03-27 | 2002-01-31 | Microsoft Corporation | Secure video card in computing device having digital rights management (DRM) system |
CA2338634C (en) | 1999-05-28 | 2007-06-26 | Matsushita Electric Industrial Co., Ltd. | A semiconductor memory card, playback apparatus, recording apparatus, playback method, recording method, and computer-readable recording medium |
US6731756B1 (en) | 1999-06-21 | 2004-05-04 | Elisar Software Corporation, Inc. | Method for securing video images |
JP2001103280A (ja) | 1999-09-30 | 2001-04-13 | Canon Inc | 情報処理方法とその装置 |
GB9923804D0 (en) | 1999-10-08 | 1999-12-08 | Hewlett Packard Co | Electronic commerce system |
JP3725384B2 (ja) | 1999-11-24 | 2005-12-07 | 富士通株式会社 | 認証装置、認証方法及びその装置での処理をコンピュータに行なわせるためのプログラムを格納した記憶媒体 |
US7047305B1 (en) * | 1999-12-09 | 2006-05-16 | Vidiator Enterprises Inc. | Personal broadcasting system for audio and video data using a wide area network |
FR2806231B1 (fr) * | 2000-03-08 | 2004-10-15 | France Telecom | Procede de transmission d'informations avec controle d'acces en filigrane numerique et dispositifs de mise en oeuvre |
US6859832B1 (en) | 2000-10-16 | 2005-02-22 | Electronics For Imaging, Inc. | Methods and systems for the provision of remote printing services over a network |
JP4153653B2 (ja) | 2000-10-31 | 2008-09-24 | 株式会社東芝 | マイクロプロセッサおよびデータ保護方法 |
JP2002229859A (ja) | 2001-01-31 | 2002-08-16 | Toshiba Corp | ディスク記憶装置及び同装置に適用する認証方法 |
US7184546B2 (en) | 2001-02-13 | 2007-02-27 | Arkion S.L. | Method based on an algorithm capable of being graphically implemented to be used for the generation of filtering of data sequences and crytographic applications |
US6934389B2 (en) | 2001-03-02 | 2005-08-23 | Ati International Srl | Method and apparatus for providing bus-encrypted copy protection key to an unsecured bus |
US6848046B2 (en) | 2001-05-11 | 2005-01-25 | Intel Corporation | SMM loader and execution mechanism for component software for multiple architectures |
US7007025B1 (en) | 2001-06-08 | 2006-02-28 | Xsides Corporation | Method and system for maintaining secure data input and output |
US20030017846A1 (en) | 2001-06-12 | 2003-01-23 | Estevez Leonardo W. | Wireless display |
US6925180B2 (en) | 2001-09-27 | 2005-08-02 | Sony Corporation | PC card recorder |
US7594265B2 (en) | 2001-11-14 | 2009-09-22 | Ati Technologies, Inc. | System for preventing unauthorized access to sensitive data and a method thereof |
US7065651B2 (en) | 2002-01-16 | 2006-06-20 | Microsoft Corporation | Secure video card methods and systems |
US7206940B2 (en) | 2002-06-24 | 2007-04-17 | Microsoft Corporation | Methods and systems providing per pixel security and functionality |
US8155314B2 (en) | 2002-06-24 | 2012-04-10 | Microsoft Corporation | Systems and methods for securing video card output |
US7293178B2 (en) | 2002-12-09 | 2007-11-06 | Microsoft Corporation | Methods and systems for maintaining an encrypted video memory subsystem |
US7202875B2 (en) | 2005-04-22 | 2007-04-10 | Microsoft Corporation | Palette-based, multi-tint, named color methods and systems |
-
2002
- 2002-06-24 US US10/178,804 patent/US8155314B2/en not_active Expired - Fee Related
-
2003
- 2003-05-01 CA CA002427367A patent/CA2427367A1/en not_active Abandoned
- 2003-05-05 MY MYPI20031681A patent/MY140378A/en unknown
- 2003-05-08 ZA ZA200303552A patent/ZA200303552B/xx unknown
- 2003-05-08 EP EP03010393A patent/EP1378809A3/en not_active Withdrawn
- 2003-05-16 MX MXPA03004371A patent/MXPA03004371A/es active IP Right Grant
- 2003-05-20 TW TW092113653A patent/TW200401234A/zh unknown
- 2003-05-23 PL PL03360330A patent/PL360330A1/xx unknown
- 2003-05-26 AU AU2003204378A patent/AU2003204378B2/en not_active Expired - Fee Related
- 2003-05-27 BR BR0301721-4A patent/BR0301721A/pt not_active IP Right Cessation
- 2003-06-23 NO NO20032888A patent/NO20032888L/no not_active Application Discontinuation
- 2003-06-23 RU RU2003118753/09A patent/RU2327215C2/ru not_active IP Right Cessation
- 2003-06-24 CN CNB031452574A patent/CN100350395C/zh not_active Expired - Lifetime
- 2003-06-24 JP JP2003180212A patent/JP2004062885A/ja active Pending
-
2012
- 2012-03-02 US US13/411,272 patent/US8738929B2/en not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5881287A (en) * | 1994-08-12 | 1999-03-09 | Mast; Michael B. | Method and apparatus for copy protection of images in a computer system |
US6064739A (en) * | 1996-09-30 | 2000-05-16 | Intel Corporation | System and method for copy-protecting distributed video content |
WO2002025416A2 (en) * | 2000-09-20 | 2002-03-28 | Intel Corporation | Method and apparatus to improve the protection of information presented by a computer |
US20020163522A1 (en) * | 2001-05-07 | 2002-11-07 | Porter Allen J.C. | Method and apparatus for maintaining secure and nonsecure data in a shared memory system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006526227A (ja) * | 2003-05-23 | 2006-11-16 | ワシントン ユニヴァーシティー | Fpgaデバイスを使用するインテリジェントデータ記憶および処理 |
KR101295879B1 (ko) * | 2009-08-19 | 2013-08-16 | 한국전자통신연구원 | 패스워드 해독 장치 및 그것의 패스워드 해독 방법 |
Also Published As
Publication number | Publication date |
---|---|
AU2003204378B2 (en) | 2009-05-07 |
NO20032888L (no) | 2003-12-29 |
CA2427367A1 (en) | 2003-12-24 |
BR0301721A (pt) | 2004-08-24 |
RU2327215C2 (ru) | 2008-06-20 |
CN100350395C (zh) | 2007-11-21 |
MXPA03004371A (es) | 2005-02-14 |
PL360330A1 (en) | 2003-12-29 |
AU2003204378A1 (en) | 2004-01-15 |
EP1378809A2 (en) | 2004-01-07 |
MY140378A (en) | 2009-12-31 |
EP1378809A3 (en) | 2005-01-12 |
US20030235303A1 (en) | 2003-12-25 |
US8155314B2 (en) | 2012-04-10 |
ZA200303552B (en) | 2003-11-10 |
NO20032888D0 (no) | 2003-06-23 |
US8738929B2 (en) | 2014-05-27 |
CN1470998A (zh) | 2004-01-28 |
US20120166816A1 (en) | 2012-06-28 |
TW200401234A (en) | 2004-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7206940B2 (en) | Methods and systems providing per pixel security and functionality | |
US8738929B2 (en) | Auxiliary functionality for pixel data | |
KR101030354B1 (ko) | 그래픽 시스템에서 컴포넌트들의 인증을 위한 방법, 시스템, 컴퓨팅 디바이스, 및 컴퓨터 판독가능 매체 | |
US7293178B2 (en) | Methods and systems for maintaining an encrypted video memory subsystem | |
JP4522645B2 (ja) | セキュアコンテンツを暗号的に保護する方法およびシステム | |
JP4504623B2 (ja) | セキュア・ビデオ・カード方法およびシステム | |
CN113344764A (zh) | 安全图形处理器、处理器芯片、显示卡、装置、方法及存储介质 | |
KR20040000348A (ko) | 비디오 카드 출력을 보호하기 위한 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060621 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091201 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100420 |