JP2005504365A - 安全なデータの入出力を維持する方法及びシステム - Google Patents
安全なデータの入出力を維持する方法及びシステム Download PDFInfo
- Publication number
- JP2005504365A JP2005504365A JP2003504221A JP2003504221A JP2005504365A JP 2005504365 A JP2005504365 A JP 2005504365A JP 2003504221 A JP2003504221 A JP 2003504221A JP 2003504221 A JP2003504221 A JP 2003504221A JP 2005504365 A JP2005504365 A JP 2005504365A
- Authority
- JP
- Japan
- Prior art keywords
- data
- video display
- valid data
- buffer
- invalid
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2147—Locking files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Arrangements For Transmission Of Measured Signals (AREA)
- Digital Computer Display Output (AREA)
Abstract
Description
【0001】
発明の背景
(発明の分野)
本発明は、コンピュータに基づいた環境においてデータのセキュリティを維持する方法及びシステムに関し、更に詳しくは、マウスやキーボードなどの入力装置から入力される際、並びに、例えば、オーディオ又はビデオ手段などを通じて出力される際に、データのセキュリティを維持する方法及びシステムに関するものである。
【背景技術】
【0002】
(背景情報)
パーソナルコンピュータシステムが無線又は有線ネットワーク及び/又はインターネットなどの相互接続ネットワークを通じて別のコンピュータシステムに普遍的に接続されている世界においては、セキュリティの概念が、益々、その重要性を増している。これまで多くの企業や団体は、例えば、ネットワーク通信によってパーソナル(クライアント)コンピュータシステムからサーバーコンピュータシステムにデータを転送する際などのセキュリティ問題に取り組んでおり、この結果、例えば、ローカルエリアネットワーク(LAN)上には、通常、ファイアウォールが配置され、相互接続ネットワーク世界の残りの部分と、そのLAN上のコンピュータシステム間の境界を形成している。更には、データ通信路のセキュリティを確保するべく、広く使用されている暗号化技法が、それらのデータ転送に対して、しばしば適用されている。
【発明の開示】
【0003】
しかしながら、データを通信チャネルを介して暗号化された形態でサーバーマシンに送信している一方で、依然として、クライアントコンピュータシステム自体には、その上に有効な形態でしばしば保存される貴重なデータに関する問題点が残されたままになっている。例えば、インターネットによって物品を購入しようとするユーザーは、ウェブサイトに接続しログインした後に、物品を購入するべく、彼/彼女のクレジットカード情報を提供する。この場合に、ウェブサイト(及びクライアントマシン上のクライアントブラウザ)は、安全な通信レイヤ(例:SSL(Secure Socket Layer)プロトコル)を使用するクレジットカード情報の転送をサポート可能であるものの、クレジットカード情報は、クライアントコンピュータシステムの表示装置に表示するべく、一定の期間にわたって有効なデータとして保存されたままの状態で現実に存在することになる。この結果、そのデータの保存期間が短いものであったとしても、認可されていない「ハッカー」は、(ファイアウォールによって締め出されていなかったり、クライアントコンピュータシステム上に不正なアプリケーションをインストールしていた場合には)、精緻なメカニズムを使用して、この保存データにアクセスすることができる。従って、クライアントマシン上のデータを保護する技法の提供に対するかつてないほどに大きなニーズが存在しているのである。
【0004】
(簡単な発明の概要)
本発明による実施例は、違法なプロセス、アプリケーション、又はマシンが、認可されていない方法によってデータを取得しようとする試みを禁止及び/又は防止するべく、クライアントコンピュータシステム上における入出力の際のデータセキュリティを向上させるコンピュータに基づいた方法及びシステムを提供する。尚、本明細書におけるこの「データ」という用語には、グラフィック、テキスト、オーディオ、ビデオ、入力信号、出力信号など、なんらかの目的のために転送又は保存されるコンピュータシステム内のデジタルビット又はアナログ信号が含まれる。実施例においては、複数の難読化技法と、これらの難読化技法を使用して、認可されていないデータ受信者/閲覧者による有効なデータの受信/閲覧を禁止するセキュリティ機能が拡張されたシステムレベルのドライバが提供される。これらの難読化技法をセキュリティ機能拡張ドライバと共に使用すれば、認可されていない受領者/閲覧者は、常に無効なデータを受信/閲覧するようになり、結果的に、認可されていないハッカーからの有効なデータに対するアクセスを禁止することができる。難読化技法の中には、それ自体が様々なレベルのセキュリティを提供するものが存在する。
【0005】
本明細書におけるこの「難読化(obfuscation)」という用語は、適切な権限を有さない場合の有効なデータの参照、捕捉、処理、又は変更を困難にし、認可されていない方法によってアクセスした際に、有効なデータが無効なデータとして表示されるように、有効なデータを変形又は隠蔽するメカニズム又は技法を指している。これらの難読化技法は、対象となる実行環境に応じて、ソフトウェア、ハードウェア、又はファームウェアとして実装可能である。
【0006】
実施例の中には、難読化されたデータが、例えば、すべて黒又はすべて白などの不透明な色、パターン、ランダムなビットマップ、ノイズ、マスク処理されたデータ、画像、企業のロゴ、又は広告を有するものが存在する。データのタイプに応じて、その他のタイプの難読化も可能である。
【0007】
表示装置及びその他のタイプの表示記憶装置上においてデータを安全に表示するべく、この難読化技法には、「コピーアウト(copy−out)」、「置換と回復(replace and restore)」、及び「定位置置換(in−place replacement)」が含まれている。これらの技法は、有効なデータを表示するべく難読化データをどこで(どのように)逆難読化(de−obfuscation)するか、及びデータをどこで(どのように)再難読化(re−obfuscation)するか、を指定するものである。技法の中には、フレームバッファと関連してオーバーレイバッファ又はマスクバッファを利用し難読化プロセスを実現するものも存在する。その他の技法においては、ビデオカード上の既存の標準的なラスター演算又はオーバーレイ演算ロジックを活用している。そして、その他の実施例においては、その他のタイプの記憶装置におけるコンテンツのスケジューリングに、これらの難読化技法を適用している。
【0008】
実施例の中には、セキュリティ機能拡張ドライバ(SED:Security Enhanced Driver)が、文字化け情報又はノイズと混在した形態でのデータの提示から、データの暗号化に至るまで、様々な程度及びレベルのセキュリティを実装するものが存在する。これらのSEDを様々な難読化技法と共に使用することにより、データの難読化に使用したもの、その方法、及びデータのソースを判定することができる。これらのSEDは、データの難読化と逆難読化(及び再難読化)をスケジューリングする責任を負っている。
【0009】
一実施例においては、ビデオ表示メモリ内に保存されているフレームバッファの各部分のコンテンツをスケジューリングするべく、セキュリティ機能を拡張したディスプレイドライバ(SEDD:Security Enhanced Display Driver)が提供されている。このような一実施例においては、ビデオディスプレイ上の安全な領域にデータを表示する要求は、SEDDに対して行われる。これに応答し、SEDDは、対応するフレームバッファの安全な部分を割り当てると共に、表示装置への映写に必要とされ且つその他のタスクからの安全な部分に対するアクセス(読み取り又は書き込み)がロックアウトされている場合にのみ、有効なデータが安全な部分に存在するように、この安全な部分のデータコンテンツをスケジューリングする。SEDDは、使用する難読化技法に応じて、安全な部分に保存されているデータの逆難読化及び再難読化の実行を要する時点を判定する。
【0010】
その他の実施例においては、マウス、キーボード、又はその他のポインティング装置などの入力装置用にセキュリティ機能拡張ドライバが提供される。これらのSEDは、入力装置から到来する入力データを直接捕捉し、安全な入力データが要求されている場合に、そのデータを難読化形態に変形し、この変形したデータを要求元のコードに転送するべく機能する。一方、安全なデータの受信が認可されていないタスク用に入力データが受信された場合には、その入力データは、標準的な入力スタックを介して標準のオペレーティングシステムの入力ドライバに転送される。
【0011】
これらの実施例の中には、その他のコードよりも先にSEDがデータを捕捉できるように、SEDがドライバ処理シーケンスの先頭にインストールされているものが存在する。実施例の中には、これらの先頭フックのセキュリティを確実なものにするべく、監視及び/又は見張り番サービスを生成するものが存在する。
【0012】
更にその他の実施例においては、システム内で提供される様々なレベルのセキュリティを表示するべく、様々な技法が提供される。これらの技法の中には、セキュリティのソースに関する情報を提示するものも存在する。スクロールバーやタイトルなどの標準的なユーザーインターフェイス要素を操作する技法、並びに入力フォーカスが1つの領域から別のセキュリティ領域に移動した際に、カーソルの表示形態を自動的に変更する技法も存在する。
【0013】
(発明の詳細な説明)
本発明の実施例によれば、認可されていない方法によってデータを取得しようとする違法なプロセス、アプリケーション、又はマシンによる試みを禁止及び/又は防止するべく、クライアントコンピュータシステムにおける入出力の際のデータセキュリティを向上させるコンピュータに基づいた方法及びシステムが提供される。尚、本明細書におけるこの「データ」という用語には、グラフィック、テキスト、オーディオ、ビデオ、入力信号、出力信号などのなんらかの目的のために転送又は保存されるコンピュータシステム内のデジタルビット又はアナログ信号が含まれている。実施例においては、複数の難読化技法と、これらの難読化技法を使用して、認可されていないデータ受信者/閲覧者が有効なデータを受信/閲覧することを禁止するセキュリティ機能が拡張された(通常、システムレベルの)ドライバを提供している。これらの難読化技法をセキュリティ機能拡張ドライバと共に使用することにより、認可されていない受領者/閲覧者が、常に無効なデータを受信/閲覧するようになり、結果的に、認可されていないハッカーが有効なデータにアクセスすることを禁止することができる。難読化技法の中には、それ自体が様々なレベルのセキュリティを提供するものが存在している。
【0014】
本明細書におけるこの「難読化(obfuscation)」という用語は、適切な権限を有さない場合の有効なデータの参照、捕捉、処理、又は変更を困難にし、認可されていない方法によってアクセスした際に、有効なデータが無効なデータとして表示されるように、有効なデータを変形又は隠蔽するメカニズム又は技法を指している(尚、「難読化」という用語は、理解できないように描画することを意味している)。これらの難読化技法は、対象の実行環境に応じて、ソフトウェア、ハードウェア、又はファームウェアとして実装可能である。標準的な暗号化技法も難読化の1つのタイプであるが、有効な形態と無効な形態間におけるデータの変形や、有効なデータ内におけるノイズデータの一時的及び動的な移動などを含む様々なその他の技法を採用することができる。従って、本発明による方法及びシステムは、データの認可されていないハッキングと取得を防止するための多数の技法について記述するものである。尚、本明細書において使用するこの「ハッキング」という用語は、データの捕捉或いはデータ又はアクセスパターンの監視を行うなんらかの技法を使用するあらゆるタイプの違法及び/又は認可されていないデータの使用又は閲覧を意味するものである。
【0015】
セキュリティ機能拡張ドライバ(SED:Security Enhanced Driver)は、単純な文字化け情報又はノイズと混在したデータの保存或いは提示から、データの暗号化、更には、認可されていないコードがデータを無効なものとして感知又は受信するようにするなどの様々な程度及びレベルのセキュリティを実装する。いずれの場合にも、各セキュリティ機能拡張ドライバが目的とするところは、認可されていない「クライアント」(コード、ユーザー、ハードウェアなど)に対して、難読化された(従って、無効な)データとして有効なデータを保存し且つ提示することである。本発明の一実施例においては、セキュリティ機能拡張ドライバには、セキュリティ機能拡張(ビデオ)ディスプレイドライバ(SEDD:Security Enhanced (video) Display Driver)、ポインティングタイプの入力装置(又は、x、y座標入力装置)にとって一般的に有用な技法であるセキュリティ機能拡張マウスドライバ(SEMD:Security Enhanced Mouse Driver)、セキュリティ機能拡張キーボードドライバ(SEKD:Security Enhanced Keyboard Driver)、及びセキュリティ機能拡張オーディオドライバ(SEAD:Security Enhanced Audio Driver)が含まれている。以下のいくつかの小節においては、これらのドライバ及び適用可能な付随する難読化技法のそれぞれについて説明する。尚、当業者であれば、本明細書に記述されている技法、方法、及びシステムを使用し、その他のタイプの入出力装置用のその他のドライバを同様に設計及び/又は実装可能であることを認識するであろう。
【0016】
図1は、本発明の実施例によって提供されるセキュリティ機能拡張ドライバを含む標準的なコンピュータアーキテクチャの抽象化レイヤを示すブロックダイアグラム例である。この図1においては、多くのコンピュータシステムと同様に、カーネルとオペレーティングシステムのデバイスドライバ(マウス、キーボード、ディスプレイ、オーディオ、及びネットワークドライバなど)を含むオペレーティングシステムレイヤ101がソフトウェア実行アーキテクチャの基部に存在している。このオペレーティングシステムレイヤ101は、マウス110、キーボード120、ディスプレイ130、ネットワークインターフェイスカード140などのハードウェア及び/又ハードウェアインターフェイスカードと直接通信している。当業者であれば、このようなシステム内には、図示されてはいないが、(オーディオプレーヤー及び関連するオペレーティングシステムのオーディオドライバを含む)その他のハードウェア及びその他のドライバも存在し得ることを認識するであろう。これらのオペレーティングシステムのデバイスドライバ上においては、その他の(通常、上位レベルの)ドライバソフトウェア102がハードウェアの更に複雑な抽象化を実行し、アプリケーションレイヤ104及びアプリケーションソフトウェアライブラリ203に提供している。ドライバソフトウェア102には、ウィンドウインターフェイス(即ち、WindowsオペレーティングシステムのGDIなどのディスプレイインターフェイス)によって提供されるマウス及びキーボードインタフェイスなどのアプリケーションによる入出力の受信及び処理を支援するインターフェイスと関数のライブラリが含まれている。アプリケーションAPI103は、オブジェクト指向のアプリケーションコードにおいてサブクラス化可能な再利用可能オブジェクトなどの更にハイレベルな抽象化をアプリケーション104にしばしば提供している。そして、その他のすべてのレイヤの上位に位置する最上位レベルにおいては、通常、(デスクトップ)アプリケーション104が可動しており、それぞれのレイヤを順番に通じて通信し、ハードウェアとの入出力を処理している。本発明の実施例の中には、好ましいことに、コンピュータシステムの最下位レイヤにおいて入出力の安全な処理を十分に制御できるよう、セキュリティ機能拡張ドライバ(SED)406がオペレーティングシステムのデバイスドライバ405とハードウェア間に位置するものが存在する。
【0017】
認可されたクライアントにのみ有効なデータを確保するという方式でデータの難読化を実装するには、通常、それぞれのSEDは、システムの一部(ビデオカード上のフレームバッファの一部などのリソース)をロックアウトするためのなんらかのタイプのメカニズムを具備する必要がある。オペレーティングシステムタスク(プロセス、スレッド、なんらかのタイプのコードなど)のスケジューリングにおいてドライバに「優先順位」を付与するメカニズムは、オペレーティングシステム(カーネル又はその他のプロセススケジューラ)ごとに異なるため、SEDを、そのシステムにおける「第1レベルのドライバ」に設定するメカニズムを実装することがしばしば必要となる。即ち、その入力又は出力を「フック」するドライバが、オペレーティングシステムのドライバ(図1におけるOSのデバイスドライバ105)などのその他のドライバ又はコードよりも先にデータを取得できるようにするメカニズムが存在する必要があるのである。1つの方法は、SEDをシステムレベルのドライバとして実装し、このドライバを(そのタイプの、或いは、場合によっては、イベント処理ドライバチェーン全体における)行列の第1ドライバとして格納するべくシステムを初期化すると共に、SEDの位置とセキュリティを監視する「見張り番」プロセスを提供する方法である。ドライバを先頭にインストールする技法と、この「先頭」という用語が意味するものは、オペレーティングシステムごとに異なるが、当業者には、オペレーティングシステムごとにドライバを先頭にインストールする方法は明らかであろう。尚、Windows9x及びWindowsNTファミリーを使用する実装例については、「SEDの先頭へのインストールと見張り番による監視」という名称の節において説明する。
【0018】
これらの難読化技法とセキュリティ機能拡張ドライバを補完するべく、本発明による方法及びシステムによれば、システム内の様々なセキュリティレベルを表示する様々な技法も提供されている。これらの技法の画面表面例については、図24〜図25に関連して提供及び説明する。尚、当業者であれば、セキュリティを表示するその他の技法が可能であり機能的にも等価であることを認識するであろう。
【0019】
(ビデオコンテンツの安全な保存と表示)
ビデオコンテンツは、通常、様々なレベル及びシナリオのハッキングに対して脆弱である。図2は、通常のコンピュータシステムにおいてデータを表示装置に転送する方法を示すブロックダイアグラム例である。図2において、オペレーティングシステム及びアプリケーション201は、オペレーティングシステムのディスプレイインターフェイス202(通常、Windowオペレーティングシステム環境におけるGDIなどのグラフィックライブラリ)と通信し「デスクトップキャンバス」(オペレーティングシステムがユーザーインターフェイスのために制御している表示装置220の領域のビットマップ表現)を描画する(このビットマップは、通常、ランダムアクセスシステムメモリ(RAM)に保存されており、OSのメカニズムによってアプリケーションから隠蔽されている)。次いで、オペレーティングシステム(OS)のディスプレイドライバは、このビットマップをカード上に存在するビデオ表示メモリ203(例:VRAM)内に保存するべく、ビデオカードに送信する。描画されることになるこのビットマップは、通常、フレームバッファ204と呼ばれるVRAMの指定部分に、静的ビットマップとして保存される。OSのユーザーインターフェイスが使用するこの表示装置220(画面)の部分(通常、「デスクトップ」と呼ばれているもの)に対応するフレームバッファ204の領域は、フレームバッファ204全体の一部分であってもよい。即ち、オペレーティングシステム204(及びアプリケーション)は、ディスプレイ220の表示可能領域の全体を使用しない場合がある。このオペレーティングシステム204が使用するディスプレイ220の部分は、通常、1024x768(ピクセル)領域などの解像度座標で表示される周知のビデオモードによって記述並びに設定される(尚、(しばしば「物理的オーバースキャン」と呼ばれるものによって)表示装置の使用方法を拡張する(即ち、OSユーザーインターフェイスとOSがアクセス不能な表示領域間で表示装置を共有する)アプリケーション及び技法については、「表示面上の相補型ユーザーインターフェイスを制御する方法及びシステム(Method and System for Controlling a Complementary User Interface on a Display Surface)」という名称の2000年11月28日付けで出願された共有米国特許出願公開第09/726,202号明細書、2000年1月25日付けで発行された「オーバースキャンユーザーインターフェイス(Overscan User Interface)」という名称の米国特許第6,018,332号明細書、2001年12月11日付けで発行された「セカンダリユーザーインターフェイス(Secondary User Interface)」という名称の米国特許第6,330,010号明細書、及びその他の関連特許明細書に詳述されている)。VRAM203は、ビデオカード(及びビデオドライバ)により、その他のタイプの情報を保存するためにも使用される。即ち、現在では、先進的なビデオカードを有する一般的なPC環境において、VRAM203内に、1つ又は複数の「オーバーレイ」バッファ205を存在することができる。これらのカードには、グラフィック処理ユニット(GPU)がフレームバッファ204からディスプレイ220にビットをコピーアウトする際に、GPU(又は、VRAM203から表示画面220へのデータ転送の責任を負っているその他の要素)がオーバーレイバッファ205のビットを「オーバーレイ」できるようにする先進的なロジックが提供されている。カードの中には、「AND」及び「XOR」演算からその他のタイプの百分率演算にまで及ぶ複雑なロジックを使用し、オーバーレイビットをフレームバッファ204の対応するビットと合成するものも存在する(GPUにより、例えば、フレームバッファ204のビットx、yの70%と、オーバーレイバッファ205のビットw、zの30%を合成可能であり、これは、しばしばα合成と呼ばれている)。このようなカードは、しばしば、GPU以外のコードに、このVRAM203の1つの領域をVRAM203のその他の領域と合成するビットマップ演算子を提供しており、これらを「ラスター演算」と呼ぶことにする。
【0020】
データは、システムレベルのコード(ソフトウェア及びハードウェアビデオドライバ、並びにビデオカードと直接通信する方法を知っているその他のコード(例:Direct−X及びDirectDraw)など)がアクセス可能なVRAM203の領域内に保存されている際には(この状態は、表示装置220上にデータを表示する場合に、一般的なものである)、悪質なプログラムによるハッキングに対して脆弱である。図3は、ディスプレイのハッキングを実行する方法を示すブロックダイアグラム例である。図3において、オペレーティングシステムのメモリ(RAM)301は、図2で説明したように、デスクトップキャンバスを表すビットマップを保持している。この時点で、トロイの木馬アプリケーション320は、(RAM内において、デスクトップキャンバスを見つける方法を知っている場合には)、デスクトップキャンバスのコピーにアクセスし、ネットワーク又はその他のデータ通信路を介して、ハッカーのコンピュータ321などのその他のコンピュータにそのコピーを転送することができる(このアプリケーション320は、通常、認可されていない検出不能な方法によってクライアントコンピュータシステム上に注入されているため、「トロイの木馬」と呼ばれる)。このような認可されていないアクセスを回避する1つの方法は、オペレーティングシステムが、このビットマップを難読化された形態で保存しておき、VRAM302内に保存するべくビデオカードに送信する際に、逆難読化(又は、非難読化)する方法である。尚、この「逆難読化(又は、非難読化)」という用語は、データの難読化に使用するのとは逆のプロセスを意味するべく使用されている。従って、例えば、XOR演算をマスクに適用することによって難読化されたデータに対する同一マスクによるXOR演算の適用などの暗号化されたデータの解読は、1つの逆難読化プロセスである。
【0021】
データがVRAM302内に保存された後にも、データは、例えば、Direct−Xなどのライブラリを使用してビデオカードと直接通信する不正なアプリケーション322などの認可されていないクライアントによる違法なコピー又は閲覧に対して、依然として脆弱である。即ち、GPUがデータを表示装置303上に映写するためにビデオカードがVRAM内に有効なデータを保存する必要がある限り、データは、常にハッキングの危険性に直面しているのである。本発明による方法及びシステムにおいては、システムのより低いレベルにおいて、このタイプのハッキングを防止するべく、セキュリティ機能が拡張されたディスプレイドライバを提供する。即ち、これらの機能拡張されたドライバは、ビデオカード及び表示メカニズムと関連して一時的に保存されている指定データを保護する技法をサポートしている。
【0022】
図4は、フレームバッファ内に保存されているデータへの認可されていないアクセスを防止するべく、セキュリティ機能拡張ディスプレイドライバの一例によって使用される一般的な技法を示すブロックダイアグラム例である。この図には、図3に示されているものと同一のコンポーネントとハッキングを試みるメカニズムが示されているが、更なるコンポーネントであるセキュリティ機能拡張ディスプレイドライバ(SEDD:Security Enhanced Display Driver)が追加されている。このSEDDは、VRAM402内のフレームバッファの指定領域(全体であってもよい)内に保存されているデータに対して難読化技法を適用するべく動作し、この結果、不正なアプリケーション422などの認可されていないアプリケーションがフレームバッファ402からデータをコピーアウトするべく試みた場合にも、SEDDによって難読化されていることから、そのデータは無効なデータとなる。但し、SEDDによってフレームバッファ402の(1つ又は複数の)各部分が難読化されるため、有効な(即ち、難読化されていない)データを効率よく表示するためには、SEDD404は、表示装置403上での正しい表示のためにGPUが有効なデータを必要とした際に有効なデータをコピーアウトできるよう、データを一時的に逆難読化する必要がある。即ち、基本的に、SEDD404は、フレームバッファのコンテンツの「スケジューラ」プロセスとして機能し、フレームバッファが有効なデータ及び無効なデータを保持する時点、有効/無効なデータをフレームバッファ内において配置する場所、及びフレームバッファ内の領域に配置するべく使用する有効/無効なデータを保存しておく場所を制御するのである。このSEDDには、図6〜図9を参照して説明するものなどのデータを難読化及び逆難読化するための様々なメカニズムを内蔵可能である。
【0023】
一実施例においては、SEDDは、アプリケーション(又は、その他のコード)が表示装置上の領域を「安全な領域」として定義できるようにする機能をサポートしている。そのシステムに実装されているセキュリティレベルに応じて、SEDDは、安全な領域に対して、そのセキュリティレベルを保証可能である。例えば、最高のセキュリティレベルが提供されておれば、SEDDは、安全な領域に有効なデータが表示されている際に、フレームバッファのその有効なデータを、いずれの認可されていないプロセスも閲覧又は捕捉できないようにする。このシナリオの場合には、ユーザーは、表示画面上でデータを閲覧できるが、安全な領域は、(スケジューラ及びドライバプロセス以外の)すべてのコードに対して難読化された状態で表示される。
【0024】
図5は、セキュリティ機能拡張ディスプレイドライバの一例によって提供されるビデオ表示メモリ(VRAM)の指定された安全な部分を示すブロックダイアグラム例である。このVRAM506は、表示装置501上に表示されるフレームバッファの部分(この場合には、フレームバッファ全体)に対応した形態で示されている。この例においては、フレームバッファ507は、表示装置501上の1024x768ピクセルの領域として示されている。表示装置501上には、2つの指定された安全な領域503及び504と関連して、ネイティブのデスクトップ表示領域502(オペレーティングシステムが制御するユーザーインターフェイス)が示されている。VRAMのフレームバッファ507内の対応する各部分には、フレームバッファの安全な部分511及び512と関連してネイティブデスクトップ部分510が示されている。その他のコードに対しては、安全な部分511及び512は難読化された状態で表示される(これらの部分は、斜交平行線によって示されている)。又、VRAM506内には、安全なドライバ領域508やオーバーレイバッファ509などのその他の保存場所も存在している。安全なドライバ領域508には、SEDDが使用する様々なバッファが保存されるが、この領域は、標準的なOS及びプログラミング手段(即ち、「malloc」関数)によって割り当てるのではなく、ビデオカードから明示的に要求するものであるため、SEDDは、そのアクセスを十分に制御可能である。図には、その他のVRAM508内における有効なデータ(有効なデータバッファ(VDB:Valid Data Buffer))と暗号化又はマスク処理された有効なデータ(安全なデータバッファ(SDB:Secure Data Buffer))を保持する各バッファと、マスクバッファ(MB(Mask Buffer))の存在が示されている。
【0025】
1つ又は複数の安全な領域の定義が完了すると、SEDDは、フレームバッファ(FB)のコンテンツを適切にスケジューリングする。要約すれば、SEDDは、GPUが読み取りを必要とする際には、ディスプレイ上の安全な領域に対応するFBの安全な部分のコンテンツが有効なデータとなり(さもなければ、GPUはその他の手段によって有効なデータを取得する)、その他の(有効且つ実際的な意味においての)すべての時点においては、安全な部分のコンテンツが難読化されたデータになるようにする。尚、SEDDに関連して使用される様々な難読化及び逆難読化法について、図6〜図9を参照して説明するが、当業者であれば、これらの方法のその他の様々な変形、及び今後開発されるであろう新しい方法がSEDDと共に動作可能であって、それらも本発明に属するものと考えられ、以下に説明するものは、あくまでも例として提供されていることを認識するであろう。又、当業者であれば、提示されている個々の「ケース」は、説明の利便のためにそのように編成されているものであって、実際の機能の実装や構成と類似している場合もあり、そうではない場合もあることを理解するであろう。
【0026】
第1の難読化/逆難読化技法は、「コピーアウト」という名称であり、これは、要約すれば、表示装置上に映写するべく、「コピーアウト」の時点(GPUがフレームバッファの安全な部分をディスプレイ上の対応する安全な場所にコピーする時点)で有効なデータをSEDDが提供することに由来している。図6は、「コピーアウト」逆難読化技法に関連して使用される難読化技法を示すブロックダイアグラム例である。この「コピーアウト」法によれば、安全な部分内のデータは無効なものである。従って、決定的な時点で有効なデータをフレームバッファ内に挿入すると共に、その他の時点で無効なデータを回復するという複雑なスケジューリング技法は必ずしも使用されていない(これらの複雑なスケジューリング技法については、図10〜図17を参照して後程説明する)。具体的には、有効なデータを表示装置に伝達する際に、フレームバッファ(FB)から直接コピーアウトするのではなく、その代わりに、好ましくは、映写の前にオーバーレイバッファをフレームバッファと合成するためにビデオカード(GPU)が使用する既存の技法を使用し、フレームバッファ内の難読化されたデータをオーバーレイバッファ内のデータと合成する。
【0027】
考慮を要する2つのケースが存在している。即ち、第1のケースである「ケース1」においては、フレームバッファ601は、安全な部分605内に無効なデータを格納しており、有効なデータは、別のバッファ602内に保存されている。その他のデータ(これらは、有効なデータとして示されている)は、安全な部分には指定されていないフレームバッファの領域内に保存されている。SEDDは、FBデータが表示装置603にコピーアウトされる際に、バッファ602内の有効なデータを使用して安全な部分605のコンテンツを「上書き」する。このバッファ602は、オーバーレイバッファとフレームバッファのコンテンツの直接的なラスタ演算による合成をサポートしているシステムの場合には、オーバーレイバッファであってよい。更に、このオーバーレイバッファは、(例えば、安全な部分605内に保存された、ノイズを有する)有効なデータの暗号化バージョンを格納することができる。後者の場合には、補助的な場所に解読キーを保存する。尚、当業者であれば、オーバーレイバッファ(ビデオカード及びシステムサポートメカニズム用)と呼んではいるが、VRAMの別の場所に保存されている有効なデータバッファ(VDB)や安全なデータバッファ(SDB)などのその他のバッファをラスタ演算による合成に使用できることを認識するであろう。一方、第2のケースである「ケース2」においては、安全な部分606内に保存されている無効なデータは、有効なデータの暗号化又はマスク処理されたバージョンであり、この有効なデータのマスク処理されたバージョンを逆マスク処理するのに使用する暗号化キー又はマスクが別のバッファ604に保存されている。このバッファ604内に保存されているキー又はマスクを使用し、安全な場所606内に保存されているデータを解読するか、或いはラスタ演算(ROP)を使用し、バッファ604に保存されているマスクと安全な部分606内に保存されているデータを合成することにより、コピーアウト時点で有効なデータを「生成」するのである。以上の第1及び第2ケース間の主な相違点は、その他のバッファ(602又は604)内に保存されているデータが、有効なデータであるか、或いは、その他の(キー又はマスク)データであるか、という点にある。当業者であれば、「マスク」という単語を「キー」という用語と相互交換可能に使用する者が存在することを認識するであろう。本明細書においても、これらの用語は相互交換可能である。
【0028】
図7は、コピーアウト逆難読化技法の変形を示すブロックダイアグラム例である。この技法は、図6の「コピーアウト」技法と組み合わせてフレームバッファの安全な部分を部分的に難読化するのに有用である。具体的には、図7には、表示する準備が整っている安全な部分(本明細書においては、「フレーム」と呼ぶ)を有するVRAM700が示されている。図6に示されているように安全な部分の全体を難読化するのではなく、安全な部分を、例えば、3つのサブ部分にサブ分割し、これらのサブ部分の中の1つを、有効なデータによって上書きするか、或いは、有効なデータを生成するための難読化領域(図6のケース1及びケース2)として取り扱う技法を使用する。図示の例においては、ビデオカードに(SEDDを介して)オペレーティングシステムから送信される有効なデータ(表示するフレーム)は、VRAMに保存される前に、3つのサブ部分にサブ分割されている。この有効なデータの第1のサブ部分704は、フレームバッファの第1のサブ部分707に読み込まれ、有効なデータの中間のサブ部分705は、オーバーレイバッファ702内に保存され、最後のサブ部分706は、フレームバッファの第3のサブ部分709内に有効なデータとして保存される。そして、フレームバッファの中間のサブ部分708内には、(なんらのソースから取得したなんらかのフォーマットの望ましいコンテンツからなる)難読化データを保存する。図7の下端部分には、GPUがオーバーレイバッファとフレームバッファの各部分の組み合わせを使用して表示装置上に映写する有効なデータを生成する方法が示されている。
【0029】
第2の難読化/逆難読化法は、「置換と回復」という名称であり、これは、要約すれば、SEDDが、表示装置上での映写の直前に(又は、映写中に)(即ち、GPUがFBの安全な部分をディスプレイ上の対応する安全な領域にコピーする時点で)、フレームバッファの安全な部分内に保存されている無効なデータを有効なデータによって置換することによって有効なデータを提供すると共に、FBの安全な部分がGPUによって映写された後に(或いは、その最中に)無効なデータを回復することによって難読化データを提供することに由来している(この逆難読化及び再難読化の正確なタイミングは、1回のデータの処理単位が、ピクセル、走査線、及びブロックのいずれであるかに応じて変化する)。図8は、この「置換と回復」逆難読化法との関連で使用される難読化技法を示すブロックダイアグラム例である。図8において、フレームバッファ801は、(当初)、FBの安全な部分802内に難読化されたデータを格納している。その他のデータ(これらは、有効なデータとして示されている)は、安全な部分に指定されてはいないフレームバッファの領域内に保存されている。この場合にも、考慮を要する2つのケースが存在しており、それらの相違点は、フレームバッファの安全な部分に対応する有効なデータを有効なデータとして保存するか(例:有効なデータバッファ(VDB)内)、或いは、「有効」なデータのフレームバッファ内へのコピーインの前に解読又は逆マスク処理されることになる暗号化又はマスク処理されたデータとして保存するか(例:安全なデータバッファ(SDB)内)である。
【0030】
具体的には、「ケース3」においては、有効なデータは、有効なデータバッファ(VDB)803内に保存されており、マスクバッファ(MB)804内には、難読化データ(即ち、例えば、FBの安全な部分のコンテンツの難読化に使用されるマスクなどのデータ)が保存されている(これらのバッファは、システムに好都合であり且つ意図するセキュリティを満足する場合に常に保存可能であることを想起されたい)。SEDDは、映写のために安全な部分のコンテンツが有効なものになっていることを要する時点以前の適切な時点において、VDB803から有効なデータをコピーインする。そして、有効なデータが読み取られ、映写のためにディスプレイにコピーアウトされた後に(又は、その最中に)、SEDDは、FBの安全な部分802を再難読化するべく、マスクバッファ804から無効なデータをコピーインする。尚、マスクバッファ804から取得するべく示されてはいるが、当業者であれば、この無効なデータは、システム操作、マシン命令、又はビットの組をオンにしたり(すべて黒)ビットをクリアしたり(すべて白)するその他の手段を含む様々な方法によって生成可能であることを認識するであろう。図示されているように、この難読化データを有効なデータのマスク処理バージョンによって形成する場合には、マスクをMB804内に保存し、これをROPを使用して安全な部分802内に保存されているコピーイン済みの有効なデータに適用することにより、新規に難読化データを再生成することができる。或いは、この代わりに、難読化データが、ロゴ、広告、又はランダムなビットパターンなどの無効なデータである場合には、マスクバッファ802内の無効なデータをそのままフレームバッファにコピーインすればよい。
【0031】
「ケース4」においては、有効なデータは、安全なデータバッファ(SDB)805内に、更に安全な形態で保存される(例:暗号化又はマスク処理されたデータとして保存される)。この暗号化又はマスク処理されたデータは、(難読化データであるため)、難読化データによってフレームバッファ内の有効なデータを置換する際に、FBの安全な部分にコピーインする無効なデータとして使用される。そして、マスクバッファ(MB)804内には、SDB805内に保存されている安全なデータを解読又は逆マスク処理するためにSEDDが使用するべく、マスク又はキーが保存される。従って、SEDDは、安全な部分802のコンテンツが映写のために有効なものになっていることを要する時点以前の適切な時点において、MB804のキー又はマスクをSDB805内に保存されている安全なデータに適用(解読又は逆マスク処理)することにより、SDB805からコピーインする有効なデータを生成し、その結果物(有効なデータ)をFB802の安全な部分にコピーアウトする。同様に、安全な部分802内に保存されている有効なデータが読み取られ、映写(又は、その他の目的)のためにコピーアウトされた後に、SEDDは、FB802の安全な部分を再難読化するべく、SDB805から無効なデータ(有効なデータの暗号化又はマスク処理された形態)をコピーインする。
【0032】
第3の難読化/逆難読化アプローチは、「定位置置換」という名称であり、これは、要約すれば、SEDDが、表示装置上での映写の直前に(GPUがFBの安全な部分をディスプレイ上の対応する安全な領域にコピーする時点で)、定位置に存在する無効なデータを操作することにより、フレームバッファの安全な部分内の有効なデータを提供し、次いで、この定位置に存在する有効なデータを操作(トグル)して再度無効なデータを生成することにより、無効なデータを提供することに由来している。図9は、この「定位置置換」逆難読化法に関連して使用される難読化法を示すブロックダイアグラム例である。図9において、フレームバッファ901は、(当初)、FBの安全な部分902内に難読化されたデータを格納している。この難読化データは、有効なデータの暗号化又はマスク処理された形態などの有効なデータの安全なバージョンである。従って、このFBの安全な部分902内に保存されている難読化データから有効なデータを生成するべく(データを逆難読化するべく)、SEDDは、マスクバッファ(MB)904に保存されている適切なキー又はマスクを適用し、データを適宜に解読又は逆マスク処理する。図8を参照して説明した「置換と回復」アプローチと同様に、SEDDは、適切な時点で逆難読化又は再難読化を実行し、有効なデータの映写を可能にすると共に、その他のコードが安全な部分802に対応する有効なデータにアクセスできないようにする。
【0033】
図8及び図9に関係して説明したように、SEDDは、映写に使用する有効なデータとセキュリティのための無効なデータを調整するべく、フレームバッファの安全な部分内に保存されているデータの逆難読化及び再難読化をスケジューリングする必要がある。図10は、セキュリティ機能拡張ディスプレイドライバの一例によるフレームバッファコンテンツの難読化及び逆難読化のスケジューリングを示す例示図である。この図10に示されているグラフは、表示装置上での映写のために電子銃がフレームバッファのデータを走査する(通常、一度に1ラインを走査する)のに要する時間をフレームバッファメモリ内のアドレス位置に関連付けたものである。表示画面上の第1のラインの走査に戻る直前に、ディスプレイの走査の終了点に到達すると、銃から垂直帰線消去信号が送出される。銃が右下隅から左上隅の走査の開始点まで再度移動するのに要する時間を垂直帰線期間と呼ぶ(尚、これは、従来使用されている「点滅」する画面の場合であり、先進的な技術の場合には、この時間は実質的に検出不能である)。銃が特定の速度(通常、単位はヘルツである)で描画するシステムの場合には、この時間を算出することができる。
【0034】
(0,0)点が画面の開始点(左上隅)であることに留意されたい。現実には、オペレーティングシステム及びその他のコードが使用する表示画面の実際の部分は、画面の合計量よりも小さい。又、ディスプレイに走査するデータソースとして使用されるフレームバッファ内の相対的な開始点も(0,0)と表記するが、これは必ずしもフレームバッファにおいて利用可能な第1のアドレス位置ではないことを理解されたい。
【0035】
銃は、特定の速度で走査線を映写する(移動する)。SEDDは、銃が点Aに到達する時点を判断する必要がある。この点Aは、フレームバッファ(メモリ)の指定された安全な部分に対応するディスプレイ上の指定された安全な領域の始まりに銃が到達する(開始点(0,0)でのVB信号の終わりから起算した)時点を表している。この点Aにおいては、FBの安全な部分内のデータは、有効なデータになっている必要がある。一方、点Bは、銃がディスプレイ上の指定された安全な領域の走査の終わりに到達する相対的な時点を表しており、フレームバッファの安全な部分の終わりに対応するものである。FBの安全な部分内のデータは、その他のコード(フレームバッファコンテンツのスケジューリングに使用されるSEDDコード以外のコード)が有効なデータを閲覧及び捕捉できないように、この点Bまでに難読化されたデータになっている必要がある。現実には、表示の開始点から走査を開始するためのVB期間やコードを読み込んでプロセスやスレッドなどを起動する時間を含むシステムの待ち時間と(場合によっては、解読を含む)逆難読化の実行に要する時間のため、SEDDは、点Aにおいて必要とされるものよりも以前の時点において、フレームバッファの指定された安全な部分に保存されているデータの逆難読化処理を開始する必要がある。点Cは、この時間Δを表している。当業者であれば、これらの点A、B、及びCの値は、システムに大きく依存していることを理解するであろう。点A及びBについては、VB信号のポーリングによるか、或いはVBイベントをサポートするイベント駆動型システムの場合には、VBイベントを受信し、点A及び点Bに到達するのに要する時間を(銃の移動速度から)算出することによって判定可能である。しかしながら、点C(時間Δ)は、通常、システムの待ち時間と使用する難読化及び逆難読化技法に基づいて経験的に判定する。通常、点Cは、次のようになる。
【0036】
点A(単位:時間)−システムの待ち時間−逆難読化プロセスの時間 (1)
【0037】
当業者であれば、スケジューリングの観点から点Bまでにデータを再難読化するために様々な多くの技法を使用可能であることを認識するであろう。例えば、再難読化プロセスは、一度に、走査線、ピクセル、又はメモリブロックを単位として実行可能である。従って、プロセスは、ある間隔をおいて銃に追随すればよい。一実施例においては、図17に関係して後述するように、ディスプレイ上に映写するべく安全な領域を読み取った直後に、再難読化を実行している。
【0038】
又、有効なデータがフレームバッファの安全な部分内に存在している際に、その他のコードがこの有効なデータにアクセスすることを防止するべく、決定的な期間内において、その他のコードをロックアウトするなんらかのプロセス/スレッドのロックメカニズムを採用する必要である。図12〜図17に関連して後述する実施例においては、制御を渡す前に、リアルタイムの優先順位が最高のスレッドを使用して有効なデータをコピーインすると共にデータを再難読化している。当業者であれば、その他のメカニズムも使用可能であり、且つシステムが提供するセキュリティレベルは、そのロックメカニズムのロック能力に対応したものになることを認識するであろう。
【0039】
図11は、フレームバッファ全体又はその一部の難読化及び逆難読化のタイミングをスケジューリングするのに使用可能な代替難読化/逆難読化法を示すブロックダイアグラム例である。フレームバッファ1100は、それぞれ難読化されたデータ及び有効なデータを格納した状態にある一連の領域(例:1101〜1104)であると見なすことができる。SEDDがフレームバッファ1100内を移動するのに伴い、SEDDは、3つのグループからなる領域を前進することになり、この結果、ある一時点においては、表示のためにコピーアウトされる有効なデータを格納する領域1103、逆難読化プロセスにあるデータを格納する領域1102(1103の直前)、及び再難読化プロセスにあるデータを格納する領域1104(1103の直後)が存在することになる。当業者であれば、セキュリティの向上を実現するべく、この場合にもやはりプロセス/スレッドスケジューリングのロックを、例えば、1103などの有効なデータが存在する領域について適宜にアサート及び放棄する必要があることを認識するであろう。但し、この場合には、領域の場所やサイズなどのパラメータが変化しているため、外部のコードにとっては、フレームバッファの状態は十分に予測不能なものになっている。
【0040】
図12〜図17は、表示装置上において安全な領域を実装するべく、SEDDの各部分がフレームバッファ内のコンテンツのスケジューリングを実現する方法の一実施例を示している。一例として、図10を参照して説明したスケジューリングのシナリオを使用する。又、以下の説明においては、技法の完全な理解を可能にするべく、データフォーマットやコードシーケンスなどの多数の個別の詳細項目について記述している。しかしながら、当業者であれば、本発明の実施例は、本明細書に記述されているいくつかの特定の詳細項目なしに、或いは、コードフローの順序やコードフローの機能別の編成法に関連する変更などのその他の特定の詳細項目によっても実施可能であることを認識するであろう。更に、特定のパラメータを入力及び出力パラメータとして記述しているが、個々の実装に応じて、より少ない、又はより多くの、或いは別のパラメータを内蔵可能である。
【0041】
要約すれば、まず、通常、アプリケーション又はオペレーティングシステムレベルにおいて、表示装置上に安全な領域を生成し安全な方法によってその領域内にデータを描画することが要求される。そして、SEDDは、この要求を処理し、施行されているスケジューリング計画(例:図10及び図11)と、使用する難読化及び逆難読化法に従って、フレームバッファのコンテンツをスケジューリングすることになる。
【0042】
図12は、安全な表示領域における描画を要求するアプリケーションレベルのルーチン例のフローチャート例である。このAPI(”CreateSecureDisplayRegion”という名称である)は、所望する場所を入力として取得し、有効なデータを保存するためのビデオカード上の安全な領域(例:有効なデータバッファ)の標識、割り当てられた安全なFBの場所のインジケータ、及びこの安全な領域のインスタンスの識別に使用する識別子を返す。まず、段階1201において、APIは、通常、デジタル署名などの当技術分野において周知の標準的な技術を使用し、要求者を認証する。そして、段階1202において、APIは、要求されている安全な領域が利用可能であるかどうかを判定し、利用可能な場合には、段階1204に進み、そうでなければ、エラーを返す。一実施例においては、表示するデータの完全性と正確性を保証するべく、安全な領域は、別の安全な領域内のFBの場所とオーバーラップ(干渉)することができない。しかしながら、当業者であれば、その他の実施例も可能であることを認識するであろう。段階1203において、APIは、要求者に対して様々な戻り値を設定することにより、安全な領域を割り当てる。尚、この代わりに、ドライバ(SEDD)レベルにおいて、この割り当て段階を実行することも可能である。段階1204において、APIはSEDDを起動し、この割り当てられた領域上で難読化を開始し、その後に戻る。一実施例においては、このドライバは、標準的なデバイスドライバである「ioctl」メカニズムによって起動される(このメカニズムによれば、ドライバは、標準的及び特殊なエントリポイントを設定することができる)。
【0043】
ドライバを起動すると、複数の段階が実行されるが、これらは、使用しているオペレーティングシステムによって左右され、特に、受信可能なイベント(信号)と利用可能なタスク(プロセス/スレッドなど)のロックメカニズムによって左右される。図13及び図14は、それぞれ、システムが垂直帰線(VB)イベントの登録をサポートしているかどうか、或いは、ポーリング(スピンロック)技法を使用する必要があるかどうか、に基づいた難読化を開始するためのioctlエントリポイントの実施例である。
【0044】
図13は、真のマルチタスクハードウェアイベント駆動型システムにおいて、安全な表示領域の難読化を制御するセキュリティ機能拡張ディスプレイドライバの一例におけるインターフェイスを示すフローチャート例である。要約すれば、このドライバコードは、難読化の開始のために電子銃が位置することを要する場所を判定して、フレームバッファ内のその場所にVBエベントを登録し、そのVBイベントが受信された際に、安全な部分を逆難読化及び再難読化するリアルタイムスレッドを生成する。具体的には、まず、段階1301において、このコードは、「難読化の開始」プロセスに対応するエントリポイントにおいて既にドライバが起動されているかどうかを判定し、起動されている場合には、段階1302に進み、さもなければ、段階1307に進む。段階1302において、ドライバコードは、対応するAPIによってまだ実行されていない場合に、ディスプレイ上の安全な領域に対応するフレームバッファの安全な部分を割り当てる。そして、段階1303において、コードは、逆難読化プロセスを開始するためのフレームバッファ内のVB_event_start位置(時間)と再難読化プロセスを開始するためのフレームバッファ内のVB_event_end位置(時間)を判定する(即ち、待ち時間や再難読化などについて調節されたフレームバッファ内の安全な部分の開始位置に対応するVBイベントの仕様(前述の等式1を参照されたい)と終わりに対応するVBイベントの仕様を判定する)。尚、このVB_event_startとVB_event_endを判定するプロセスについては、図16を参照して後程説明する。段階1304において、ドライバコードは、VB_event_startの時点にVBイベントを登録した上で、このイベントの通知を待つ。そして、段階1305及び1306において、VBイベントが通知されると、ドライバコードは、リアルタイム難読化制御スレッドを起動する。そして、このスレッドが戻ると、その他のタスクが表示を描画できるように、その他のタスクに制御を渡し、ドライバは、次の信号又はioctlまで(即ち、VBイベントが発生するまで)待機する。尚、リアルタイム難読化制御スレッドについては、図17を参照して説明する。
【0045】
アプリケーション(又は、オペレーティングシステム)は、実装に応じて、難読化プロセスを明示的に停止させたり(これにより、安全な領域を破壊する)、既に割り当てられている安全な領域内に提示するデータを単純に変更したり、或いは、これら両方の組み合わせを実行することができる。「難読化の停止」ioctlエントリポイントは、安全な領域の難読化プロセスを停止するためのインターフェイスである。段階1307において、受信したioctlが「難読化の停止」を要求するものであった場合には、段階1308において、ドライバコードは、リアルタイムスレッド(現在、動作中である場合)に対して、終了(し、安全な部分を難読化)するように通知する。尚、別個の「DestroySecureDisplayRegion」API(図示されてはいない)を使用して「難読化の停止」ioctlを起動する場合には、このAPIにより、VDB及びその他の関連するデータのクリーンアップを実行する必要がある。
【0046】
ここでは、主に1つの指定された安全な領域用のドライバコードの実装に関連する例について説明しているが、当業者であれば、ルックアップテーブルなどの標準的なプログラミング技法を使用したり、要求者ごとに1つのリアルタイム難読化制御スレッド(RTOCスレッド)を起動したり、或いは、これらに類似のメカニズムを使用することにより、これらの技法を複数の要求者及び複数の安全な領域に拡張可能であることを認識するであろう。複数の安全な領域をサポートする場合には、ドライバコードは、それぞれの安全な領域ごとに別個のVBイベントを登録し、それぞれについてRTOCスレッドを生成可能である(別の方法としては、関連するVBイベントのリストをRTOCに送信することもできる)。
【0047】
図14は、代替オペレーティングシステム環境において、非イベント駆動型の方法によって安全な表示領域の難読化を制御するためのセキュリティ機能拡張ディスプレイドライバの一例におけるインターフェイスを示すフローチャート例である。要約すれば、このドライバコードは、難読化を開始するために電子銃が位置することを要する場所を判定し、フレームバッファの安全な部分の逆難読化を開始する時期を判定するべくVB信号+算出されたVB_event_start時間にスピンロックすると共に、安全な部分を逆難読化及び再難読化するリアルタイムスレッド(図13において使用されているものと同一のスレッド)を生成する。尚、当業者であれば、より細かな刻みのロック法を使用可能であることを認識するであろう。具体的には、有効なデータをFB内にコピーする前に逆難読化に必要なデータの処理を実行するべく、まず、非リアルタイムスレッドを生成可能である。その後、リアルタイムスレッドは、再難読化プロセスにおいて有効なデータのコピーインを実行するためにのみ生成する(即ち、このリアルタイムスレッドは、図10におけるほぼ点Aから点Bまでの処理のためにのみ使用される)。
【0048】
具体的には、段階1401において、このドライバコードは、「難読化の開始」プロセスに対応するエントリポイントにおいてドライバが既に起動されているかどうかを判定し、起動されている場合には、段階1403に進み、さもなければ、段階1404に進む。段階1402において、ドライバコードは、対応するAPIによってまだ実行されていない場合に、ディスプレイ上の安全な領域に対応するフレームバッファの安全な部分を割り当てる。そして、段階1403において、ドライバコードは、(非リアルタイムの)タイミング及び同期スレッドを起動し、VB信号がVB_event_startに対応する時点を判定するイベント処理をエミュレートする。次いで、このタイミング及び同期スレッドがリアルタイム難読化制御スレッドを直接起動する(或いは、段階1401の後に、これが行われる(この方法は、示されてはいない))。その後、ドライバコードは、次の信号又はioctlイベントを待つ。そして、段階1404において、受信されたioctlが「難読化の停止」を要求するものであった場合には、段階1405において、ドライバコードは、リアルタイムスレッド(現在、動作中である場合)に対して終了(し、安全な部分を難読化)するように通知する(この場合にも、別個のAPIを使用して「難読化の停止」ioctlを起動する場合には、そのAPIにより、VDB及びその他の関連するデータのクリーンアップを実行するべきである)。
【0049】
図15は、図14の代替オペレーティングシステム環境においてフレームバッファコンテンツのスケジューリングの制御に使用する垂直帰線タイミング及び同期スレッドを示すフローチャート例である。このスレッドは、図14の段階1403において呼び出されるものである。前述のように、このスレッドの主な目的は、その他の方法において、VB信号+時間Δ(又は、対応するフレームバッファ位置)の特定のタイミング/位置などのハードウェアイベントを通知する能力を有するオペレーティングシステムから提供されるものをシミュレートすることにある。まず、段階1501において、このタイミング及び同期スレッド(TSスレッド)は、逆難読化プロセスを開始するためのフレームバッファ内のVB_event_start位置(時間)と再難読化プロセスを開始するためのフレームバッファ内のVB_event_end位置(時間)を判定する(即ち、待ち時間や逆難読化などに対して調節された(前述の等式1を参照されたい)フレームバッファ内の安全な場所の開始位置に対応するVB(この場合には、シミュレートされた)「イベント」の仕様と、終わりに対応するVB「イベント」仕様を判定する)。尚、このVB_event_startとVB_event_endを判定するプロセスについては、図16を参照して後程説明する。そして、段階1502において、TSスレッドは、判定されたVB_event_startにスピンロックし(ポーリング及び待機し)、これがヒットした場合に、段階1503において、リアルタイム難読化制御スレッド(RTOCスレッド)を起動する。このスピンロックは、VB信号をポーリングし、VB+VB_event_startの時点において切れるようにタイマーを設定することにより(又は、その他の等価なメカニズムにより)、実現可能である。尚、リアルタイム難読化制御スレッドについては、図17を参照して説明する。RTOCスレッドが戻ると、その他のタスクが表示に描画できるように、制御はその他のタスクに渡され、TSスレッドは、段階1502において、別のスピンロックプロセスを開始し、次のVB_event_startのタイミングをポーリングし待機する。尚、複数の安全な領域をサポートする場合には、TSスレッドは、それぞれの安全な領域ごとに、別個のVBイベントをシミュレートすることができる。そして、いずれかの時点において、「終了」信号を受信すると(段階1504)、TSスレッドは、段階1505において、RTOCスレッドに対して終了(し、フレームバッファの安全な部分を再難読化)ように通知する。
【0050】
図16は、フレームバッファコンテンツのスケジューリングの制御に使用する垂直帰線とVRAMアドレス間の相関を判定するためのコードを示すフローチャート例である。前述のように、使用する技法はシステムによって左右されるが、基本的な考え方は、どの時点でVB信号が発生するか(ディスプレイの右下隅において、逆難読化を開始するべきVB_event_startに到達するのにどれだけの時間を所要するか(図10の点Aを参照されたい)と、再難読化を開始するべき時点であるVB_event_endに到達するのにどれだけの時間を所要するか)を判定することである(再難読化の時点は、前述のように、使用する技法(一度に処理する単位が、ピクセル、走査線、又はブロックのいずれであるか)に応じて、もっと早く開始される可能性がある)。まず、段階1601において、このコードは、安全な領域の逆難読化を終了する必要がある時点(図10の点A)を判定する。例えば、この時点は、走査速度(例:80mhz)と走査線の数から走査線当たりの速度を算定し、フレームバッファの安全な部分の始まりに対応する走査線の位置を算出することにより、算出可能である。そして、段階1602において、使用される逆難読化に解読(又は、逆マスク処理)が使用されている場合には、コードは、段階1603に進み、解読(又は、逆マスク処理)に必要な追加の時間を考慮して、VB_event_startを算出する。一方、解読(又は、逆マスク処理)を使用しない場合には、段階1604において、システムの待ち時間などにより、VB_event_startを算出する。前述のように、これらの値は、好ましくは、システム初期化プロセスにおいて経験的に判定する必要がある。段階1605において、このコードは、安全な部分の終わりまで走査するのに必要とされる時間の長さを算出し、それをVB_event_startに加算することにより(即ち、これを時間差として追跡することにより)、VB_event_endを判定する。
【0051】
図17は、有効及び無効なデータをフレームバッファに供給するべく、セキュリティ機能拡張ディスプレイドライバによって使用されるリアルタイム難読化制御スレッドを示すフローチャート例である。SEDDは、有効なデータを表示する必要がある場合に、このリアルタイム難読化制御スレッド(RTOCスレッド)を使用し、その他のプロセスタスクをロックアウトする。前述のように、オペレーティングシステムとハードウェア環境に応じて、その他の等価なプロセスロック又はリソース(フレームバッファもリソースである)ロックメカニズムを使用可能である。本実施例においては、すべてのその他のプロセス/タスクが有効にロックアウトされるよう、このRTOCスレッドを、その時点でのシステムにおける優先順位が最高のタスクとすることを意図している。従って、このRTOCスレッドは、有効なデータが読み込まれ、安全な部分が再難読化されると、すぐに迅速に動作し、制御を渡すことが好ましい。
【0052】
まず、段階1701において、このRTOCスレッドは、解読/逆マスク処理が必要かどうかを判定し、これが必要な場合には、段階1702に進み、必要でない場合には、段階1703に進む。無論、段階1702においては、SEDDが使用する難読化技法に応じて、RTOCスレッドは、解読又は逆マスク処理によって有効なデータを生成し、この値にインジケータを設定する(pValidData)。そして、段階1703においては、有効なデータが既に利用可能な状態であるため、RTOCスレッドは、例えば、VDBに保存されている有効なデータを使用する。そして、段階1704において、RTOCスレッドは、対象の有効なデータをフレームバッファの安全な部分にコピーインする。段階1705において、RTOCスレッドは、VB_event_endまで待機し(時間がまだ過ぎていない場合)、次いで、段階1706において、使用されている難読化技法により、フレームバッファの安全な部分を再難読化する(例えば、図8〜図9を参照されたい)。そして、RTOCスレッドの処理における(不定の)ある時点において、このスレッドは、難読化を終了させる信号を受信する。この場合に、RTOCは、好ましくは、段階1706を実行し、フレームバッファの安全な部分が難読化データを格納するようにする。
【0053】
(キーボード、マウス、及びその他のポインティング装置入力の安全な保存と表示)
図18は、入力データのハッキングを実行する方法を示すブロックダイアグラム例である。この図は、例えば、キーボード、マウス、及びその他のポインティング装置入力などのあらゆるタイプの入力に対応することを意味している。図18において、入力が入力装置1801から適切なオペレーティングシステムのデバイスドライバ1802に送信されると、その入力は、適切な入力「スタック」(入力を処理及び伝達するべく設計されたコード)によって処理される。この入力スタックによる処理の一環として、要求元のアプリケーションに入力を送信するべく、通常、アプリケーション入力ライブラリ1803が提供する入力ルーチンに、入力は転送される。この間に、入力データは、データを取得するべくデータを監視すると共に/又はデータ入力内のパターンを探している探知型のアプリケーションに対して脆弱である。
【0054】
図19は、入力データに対する認可されていないアクセスを防止するべく、セキュリティ機能が拡張されたマウスドライバなどのセキュリティ機能拡張入力ドライバによって使用される一般的な技法を示すブロックダイアグラム例である。この図には、図18に示されているものと同一のコンポーネントが示されているが、更なるコンポーネントであるセキュリティ機能拡張マウスドライバ(SEMD:Security Enhanced Mouse Driver)1905を有している。このSEMDは、安全なドライバであり、安全な入力の提供を所望するアプリケーション又はその他のコード1906によって起動される。SEMDは、好ましくは、オペレーティングシステムドライバを含むその他のコンポーネントが入力を捕捉するチャンスを獲得する前に、ハードウェアから入力を最初にフックするべく先頭にインストールする。尚、ドライバを先頭のドライバとしてインストールする方法とドライバがその位置に安全に留まるようにする監視メカニズムの詳細については、図23及び関連する本文を参照して後程説明する。要約すれば、SEMD(又はその他の安全な入力ドライバ)は、入力装置からデータを捕捉し、それが、安全な入力を要求した認可されたアプリケーション(アプリケーション1906など)によって要求されたものであるかどうかを判定し、そうである場合には、その入力を安全な方法により、認可されているアプリケーションに送信し、さもなければ、その入力を標準的なオペレーティングシステムのドライバに転送する。
【0055】
図20は、入力データに対する認可されていないアクセスを防止するべく、セキュリティ機能が拡張された入力ドライバの一例によって使用される難読化技法を示すフローチャート例である。図20において、例えば、マウス又はキーボードドライバなどの入力ドライバは、(通常、「読み取り」要求の結果として、アプリケーション又はオペレーティングシステムの要求に基づいて)、次の入力イベントまで待機する。そして、段階2001において、そのようなイベントが受信されると、ドライバは、段階2002に進み、「セキュリティにおいて認可された」要求者が読み取り命令を発行しているかどうかを判定し、そうである場合には、段階2004に進み、さもなければ、段階2003に進む。本明細書においては、この「セキュリティにおいて認可された要求者」とは、好ましくは、安全な入力が望ましいことを安全な入力ドライバに対して明確に通知したアプリケーション又はその他のコードである。要求者は、まず、安全な入力ドライバに登録し、それ以降は、標準的な認証メカニズムを使用して、その要求者を認証することができる。段階2003において、このドライバコードは、その認可されている要求者が(更なるセキュリティ対策を生成するべく)難読化された入力が望ましい旨を指定しているかどうかを判定し、これを指定している場合には、段階2006に進み、指定していなければ、段階2005に進む。段階2005において、セキュリティにおいて認可されている要求者に入力を転送するべく、安全な入力を処理する安全なドライバ又はライブラリによって提供される入力「翻訳」スタックに、入力が渡される。この入力翻訳スタックは、通常、例えば、キーボード入力の場合には、キーコードから文字を判定する。一方、難読化が要求されている場合には、段階2006において、入力ドライバは、実装又は指定されている難読化技法を使用し、入力コードを難読化する。入力コードは、例えば、表示出力の難読化とかなり類似した方法により、暗号化、並びにノイズやパターンなどのマスクとブール演算によって合成可能である。そして、段階2007において、安全な入力ドライバコードは、この難読化された入力コードを入力翻訳スタックに伝達する(このスタックは、入力コードの難読化に使用されたものとは逆の技法を使用して入力コードを逆難読化するべくコーディングされている)。
【0056】
(オーディオコンテンツの安全な保存と表示)
図21は、オーディオデータのハッキングを実行する方法を示すブロックダイアグラム例である。スピーカ2104上で再生するべく、オーディオがオペレーティングシステムのメモリ2101からサウンドカード2103上のメモリに送信された際に、サウンドカードのメモリ2103上に保存されている間、オーディオデータは、探知型のアプリケーション2106などの悪質なコードに対して脆弱である。又、ストリーミングオーディオを取り扱うアプリケーションの場合には、オペレーティングシステム(又は、その他のアプリケーションライブラリ)は、オーディオを一時的にオーディオバッファ2102内にバッファ処理する。このバッファ処理されたオーディオデータ202も、認可されていない探知型のアプリケーション2205などによるハッキングに対して脆弱である。
【0057】
図22は、オーディオデータに対する認可されていないアクセスを防止するべく、セキュリティ機能が拡張されたオーディオドライバの一例によって使用される難読化技法を示すフローチャート例である。この図には、図21と同一のコンポーネントが示されているが、更なるコンポーネントであるセキュリティ機能拡張オーディオドライバ(SEAD:Security Enhanced Audio Driver)2207を有している。このSEADは、安全なドライバであり、安全なオーディオ出力を所望する認可されたアプリケーション又はその他のコード2208によって起動される。
【0058】
一実施例において、SEADは、SEADの固有の方法によってオーディオのシーケンシングに使用するバッファを選択することにより、オーディオバッファ2202のプールのコンテンツを難読化する。例えば、数字のランダム又は擬似ランダムシーケンスを使用し、デジタル形態のオーディオ信号の蓄積に使用するバッファを選択することができる。そして、バッファの利用方法を追跡する試みを混乱させるべく、使用されていないバッファ内に正解以外の選択肢情報を配置する。オーディオをデジタル形態で次のソフトウェアコンポーネントに伝達した際に、オーディオを難読化するSEADの使用がそのコンポーネントに対して認可されておれば、オーディオ情報は、適切なソースバッファを判定するための同一の数字のランダム又は擬似ランダムなシーケンスを使用してオーディオバッファ2202から抽出される。そして、そのオーディオが不要になると、バッファは、利用可能なバッファプールに戻る(或いは、任意選択により、その中に正解以外の選択肢情報が配置される)。
【0059】
SEADは、例えば、オーディオに対してなんらかの操作「F」を実行してデータの暗号化或いはなんらかの符号化又はマスク処理を実行することにより、カードに送信されたオーディオデータを難読化するべく実装することも可能である(この操作「F」は、サウンドカードによって左右され、その他の形態の暗号化と同様に、対応する解読のための逆操作を有している)。アナログオーディオ信号に変換するべく、オーディオをサウンドカードに提示する際に、SEADは、サウンドカード上に存在する付加的なソフトウェア(例:特定のサウンドカード上に存在するDSP)に対して逆難読化を実行するように指示する。これは、特定のサウンドカード上において、エコライザ及びサウンドプロセッサコードを生成し、リバーブ、シンフォニーホール、又はその他の特殊効果に類似した方法によって逆難読化コードを処理することにより、実現可能である。
【0060】
更に、SEADがオーディオ情報のストリームを受信したり、或いは、受信元のセキュリティにおいて認可されたソフトウェアが、オーディオ情報のストリームをSEADに転送する場合には、SEADが安全な方法によってオーディオを解読できるように、そのデジタルオーディオ情報のデジタル表現を安全なドライバに固有の方法によって事前に難読化又は暗号化することが可能である。例えば、そのシステムが使用可能な形態に、のフォーマットを符号化又は符号変換する。オーディオストリームのソースは、MP3ファイル又はストリーム、ストリーミングサーバー、或いはその他の符号化されたデジタルオーディオソースなどの従来のソースから導出される。これらの符号化されたオーディオソースの解読方法に関する知識を有する受信元の安全なソフトウェアは、オーディオのプレーンな「テキスト」がデジタルの形態でシステム内に存在することのないように、オーディオストリームをSEADの内部難読化フォーマットにレンダリングする。
【0061】
(SEDの先頭へのインストールと見張り番による監視)
ドライバが入力及び/又は出力にアクセス可能な時点を制御する機能は、特にセキュリティ機能拡張ドライバにとって重要である。それぞれのオペレーティングシステムは、そのオペレーティングシステムごとに、その他のすべてのドライバよりも前に(或いは、そのタイプのすべてのドライバ(例:ハードディスクドライバ)よりも前に)、特定のドライバがアクセスできるようにするメカニズムを提供している。Windows9xオペレーティングシステムに類似のオペレーティングシステムにおいては、イベント処理は「チェーン」で実行されており、ドライバは、それらがいつシステム内に読み込まれるかに応じて、チェーンの様々な部分内にインストールされる。
【0062】
例えば、Windows9xオペレーティングシステムの入力イベント処理は、通常、次のように進行する。
【0063】
・ハードウェアイベントが発生する(マウス又はキーボードの動作(マウスの移動又はキーの押下))。
【0064】
・VxDスタイルの(仮想)デバイスドライバ(又は、システムレベルのドライバ)が、ハードウェアからの入力を検出して読み取り、イベントをハードウェア仮想化レイヤに送信する。
【0065】
・仮想化レイヤは、このドライバイベント入力を、そのイベントに対して登録されているデバイスハンドラのリストに順次送信する(この際に、それぞれのデバイスハンドラは、データを処理するか、或いは処理することなく返して、チェーンの次のデバイスハンドラがデータを処理できるようにする)。
【0066】
・ドライバイベントは、ハンドラによって処理されるか、或いは、それに対して登録されているアプリケーションに送信される。
【0067】
本発明による技法をWindows9xオペレーティングシステムと関連して使用する場合には、関連するドライバをそれぞれの入力装置用のハンドラチェーンにおける最上位(最初)のイベントハンドラとしてインストールすることにより、(特に)入力SEDを最適且つ安全なものすることができる。更に、後述するように、定期的にハンドラの位置を検証するべく、見張り番プロセスを起動する。図23は、Windows9xオペレーティングシステム環境及び関連する監視プロセスにおいて、SEDを先頭のドライバとしてインストールするブロックダイアグラム例である。
【0068】
WindowsNTファミリーのオペレーティングシステムの場合には、入力イベント処理は別のモデルに準拠しており、例えば、これらのシステムにおける入力イベント処理は、通常、次のように進行する。
【0069】
・ハードウェア割込みサービスルーチン(ISR)が迅速に動作してデータを収集し、IRP I/O要求パケットを生成する。
【0070】
・ISRは、ハードウェアインターフェイスと装置に関する知識を格納しているミニポートに、これを供給する。
【0071】
・データが抽出され、ポートドライバに伝達される(ポートドライバは、通常、I/Oドライバ当たり1つ存在している)。ポートドライバがプロセスを更に抽象化し、IRPに対して更なる処理を実行する。
【0072】
・次いで、データがクラスドライバに伝達される。これは、例えば、マウスクラス及びキーボードクラスである。これらは、Windowsオペレーティングシステムの標準的なマウス及びキーボードクラスである。
【0073】
・クラスドライバの上位に位置しているのは、フィルタドライバであり、フィルタドライバは、入力を最初に受信し、それを既存のシステムに伝達するかどうかを判定可能である。
【0074】
例えば、MicrosoftのWindows OSの場合には、カーネルドライバが、自分自身をレジストリの上位フィルタキー内に追加し、キーイベントの受信を所望することを表すことができる。
【0075】
以上のNT OSのI/Oの読み込みと処理に関するシーケンスを使用し、一実施例においては、SEDをクラスドライバとして生成することができる。この場合、SEDは、レジストリの上位フィルタ内に値を配置し、自分自身が入力フォーカスをOSシステム内において有していることを示す。この実施例においては、SEDは、クラスドライバから直接I/O要求パケットを受信するフィルタドライバの最初のものになると共に、自身がレジストリにおける最初のフィルタになるようにする必要がある。
【0076】
Windows9xとNTにおいてセキュリティを監視する見張り番サービスを実装する概念は、類似しているが、実装は、それぞれのオペレーティングシステムのドライバモデルに準拠するべく異なるものになる。ドライバのイベントデータをチェック及び/又は処理する最初の機能としてSEDのフィルタリング(及び、潜在的には、難読化)機能を挿入することにより、SEDは、マウス、キーボード、及びその他の入力装置の有効性とセキュリティを確保することができる(安全な環境用にデータを処理するか、或いは、通常のメカニズムによってデータをオペレーティングシステムに返すことができる)。当業者であれば、ドライバモデルが既知であり、且つSEDフィルタリング機能が適切に挿入可能であるならば、その他のオペレーティングシステム環境においても、類似の技法を開発可能であることを認識するであろう。
【0077】
又、当業者であれば、これらの技法を使用する際には、マウス及びキーボード装置は区別されないことを認識するであろう。これらのデバイスドライバは、本明細書の観点では、いずれも類似の方法で動作する。又、これらの技術は、トラックボール、デジタルタブレット、コードレスキーボード、コードレスマウス、数字キーパッド、タッチパッド、又はその他のポインタ又はキーに基づいた入力装置においても実装可能である。
【0078】
Windows9xの一実装例においては、タイマとして機能するSEDセキュリティサービスがインストールされる。このSEDセキュリティサービスは、起動の際に、標準的なメカニズムであるIOCTL()を使用し、SEDドライバに対する通信路を確立する。このIOCTL経路を介し、SEDセキュリティサービスは、SEDに対して、SEDがマウス及びキーボードのイベント処理ハンドラチェーンにおける第1の(最上位の)デバイスハンドラの位置に存在していることを検証するように通知する。そして、そのようになっていない場合には、SEDは、SEDハンドラを第1の位置に再度登録するべく試みる。そして、この試みに失敗した場合には、エラーメッセージが登録され、この段階で、そのシステムは、難読化目的には安全ではないと見なされることになる。
【0079】
安全ではない環境が検出された場合には、イベント(例:アプリケーション固有のイベント)がその環境内を伝播し、すべての関連するアプリケーションに対して通知する。例えば、2000年11月28日付けで出願された「表示面上の相補型ユーザーインターフェイスを制御する方法及びシステム(Method and System for Controlling a complementary User Interface on a Display Surface)」という名称の米国特許出願公開第09/726,202号明細書に記述されているxSides環境においては、xSidesイベントが伝播し、安全な入力機能に依存しているすべてのxSidesアプリケーションに対して、それらの装置(例:マウス及びキーボード装置)が、もはや安全とは見なされないことを通知する。このセキュリティの変化については、好ましくは、(「ビデオコンテンツの安全な保存と表示」という名称の節において前述したように)、安全な領域に表示されるアイコンにより、ユーザーに対しても伝達される。この目的に使用する一般的なビットマップは、施錠された又は施錠されていない南京錠である。
【0080】
セキュリティサービスによる連続的なセキュリティの検証チェックが実行されるように、SEDセキュリティサービスに対する見張り番として機能させるべく、SEDセキュリティ見張り番という名称の第2のサービスを起動する。このセキュリティ見張り番の目的は、セキュリティサービスに対して双方向の通信経路を確立することにある(この経路により、2つのサービス間でメッセージが送受信される)。これらのメッセージは、「わたしは生存している」又はピングメカニズムとして機能し、それぞれのサービスに対して、もう一方のサービスが正常に機能していることを通知する。任意の期間内に、1つのサービスが、もう一方のサービスからメッセージを受信できない場合には、受信側のサービスは、もう一方のサービスを再起動させるべく試みることになる。
【0081】
そして、受信側のサービスが、もう一方のサービスを再起動できない場合には、そのシステムは、難読化目的には安全ではないと見なされ、前述のものと同様のセキュリティサービスに関する通知がユーザーに対して行われる。
【0082】
Windows NTファミリーのオペレーティングシステム用のセキュリティサービスも、基本的には、Windows9xバージョン用のものと同一である。但し、1つの相違点は、検証する値が、ハンドラチェーンではなく、入力装置(例:マウスやキーボード)用のI/O完了構造におけるコールバック関数ポインタであるという点である。これは、関数ポインタの比較によって実行される。SEDコールバック関数が、I/O完了構造においてポイントされているコールバック関数でない場合には、それを置換する試みが実行されることになる。そして、コールバック関数の関数ポインタをSEDのバージョンに変更できない場合には、好ましくは、このWindows NTの技法においても、Windows9xのケースで説明した失敗モード(即ち、安全/非安全の通知)を利用可能である。
【0083】
基本的なSEDセキュリティ見張り番サービスは、Windows9x環境におけると同様に、Windows NT環境においても動作する。
【0084】
フックの状態を検証すると共に、SEDが変更されていないことを検証するべく、更なる見張り番サービス(又は、既存のサービスの拡張)を利用可能である。NTの一実装例においては、2つの異なるシステムレジストリエントリ内に対象を登録する2つの別個のプロセスを含んでいる。そして、それらが同期していない場合に、この見張り番サービスは、それを通知するか、或いは、正しくないほうのレジストリエントリを自動的に修復する。これら2つのレジストリエントリは、レジストリエントリが変更されていないことを見張り番サービスが検証するのに十分な状態を有している。これは、例えば、アプリケーションのチェックサム、証明書、又は署名を、その署名と別の既知の値のXOR、或いは最初のものとは別のメカニズムによって導出された署名と共に、見張り番自体のレジストリエントリ内に保存することによって実現する。見張り番は、レジストリエントリが変更された際に起動し、それらのエントリがその時点で正しいかどうかを検証する。そして、正しくない場合には、正しい値を判定し、それらを置換する。(1)レジストリ内に保存されている署名、(2)見張り番自体、(3)署名を導出したソフトウェア、及び(4)見張り番自体を検証するソフトウェアのすべてが有効に見えるように変更される可能性は低いため、このメカニズムのみを(或いは、その他の対策と組み合わせて)使用し、侵入やソフトウェアコードの変更を判定可能である。
【0085】
(ユーザーインターフェイスにおけるセキュリティの表示)
前述のように、難読化法とセキュリティ機能拡張ドライバを補完するべく、本発明の方法及びシステムにおいては、システム内のセキュリティの様々なレベルを表示する様々な技法が提供される。ウェブブラウザのようなアプリケーションなどの既存のシステムでは、セキュリティ又はセキュリティレベルに関する基本的なグラフィク表示が提供されている。例えば、MicrosoftのInternet Explorerは、ブラウザ下端のステータスバー領域に位置する「南京錠」の表示を使用し、現在、ウェブサイトが、安全な又は安全ではない通信プロトコル(通常、SSLやHTTPSなどの技術形態である)を使用していることをユーザーに対して示している。図24は、既存のソフトウェアアプリケーションにおいて使用されているセキュリティを通知する南京錠を示す画面表示例である。
【0086】
本発明のセキュリティ機能拡張ドライバの場合には、表示されたデスクトップ、ウィンドウ、又は代替表示領域などの表示装置上の安全な領域が、表示カーソルを使用し、ユーザーに対してその領域のセキュリティレベルを直感的に通知することができるメカニズムを提供している。具体的には、領域に関連付けられたセキュリティレベルの色値を表示カーソルに継承させる属性値を、それぞれの安全な領域に関連付けており、自動的に(或いは、ユーザーによって)、カーソルが1つの表示領域から、より高い又はより低いセキュリティレベルを有する別の表示領域に移動すると、カーソルの色及び/又は表現が適切な値に変化する。例えば、ユーザーが、安全ではないWindowsデスクトップ表示領域内から、xSides社(xSides Corporation)が開発したものなどの代替表示技術によって生成された代替表示領域内にカーソルを移動させると、カーソルの色が白から赤に変わったり、或いは標準的なWindowsの矢印カーソルから金色の鍵の表示に変化するのである。
【0087】
同様に、この表示メカニズムは、それぞれが異なる固有の機能又はセキュリティ値を有する複数の安全な(又は、安全ではない)領域が表示装置上に表示された環境においても使用可能である。それぞれの領域に関連付けられているセキュリティ値については、標準的なMicrosoft Windows APIルーチンであるSetCursor()などのメカニズムを使用して問い合わせることができる。このSetCursor()ルーチンの戻り値には、アプリケーションが特定の領域に関連付けられているセキュリティレベルを識別するのに必要な情報が格納される。
【0088】
この表示メカニズムは、セキュリティ表示の手段として、カーソルを使用することに限定されるものではない。当業者であれば、デスクトップ表示、又はデスクトップ表示の内外の領域におけるその他のコンポーネントにより、ユーザーに対してセキュリティレベル及び機能を通知可能であることを認識するであろう。安全なデスクトップを読み込む場合には、その安全なデスクトップのウィンドウにおける視覚的又は聴覚的な変化によってエンドユーザーがそのセキュリティレベルを識別可能な属性をそのデスクトップ内に格納することができる。例えば、安全なデスクトップは、それに関連付けられたデスクトップ表示の隅に配置されたロック又はキーを有することができる。又、別のセキュリティレベルに関連付けられた場合に、デスクトップに対して、異なる諧調度の色を付与することもできよう。ウィンドウ、代替表示、又は任意の安全な領域は、セキュリティレベルに関連付けられた有色の境界線を含むこともできる。或いは、ウィンドウ、代替表示、又は安全な領域のセキュリティレベルに応じて、例えば、取り囲んでいる境界の幅やパターンを変化させ、鎖のような外観にすることもできる。又、任意選択により、例えば、黒と黄色の斜めのストライプバーなどの追加の装飾を領域の上部や近傍、又はその内部に配置するなど、ウィンドウ、表示、又は領域に対する変更や追加に関するその他の実装も使用可能である。更なる選択肢は、スクロールバーなどの標準的なユーザーインターフェイス要素の装飾の外観を、別の形状、パターン、色、又はこれらの組み合わせに変更することである。これらに加えて(或いは、以上のバリエーションの組み合わせにおいて)、特定のウィンドウ又は領域に関連付けられているソフトウェアが提供するセキュリティレベルを示すべく、タイトルバー、キャプション、又はナビゲーションアイコンに対する変更も使用可能である。これらの変更は、タイトルバーのキャプションを別の色で描画したり、ウィンドウのナビゲーションアイコン上に数値又はその他のシンボルを表示するのと同じくらいに簡単である。図25は、セキュリティレベルを判定するためのカーソルの使用と、セキュリティの表示に使用されるウィンドウ上のその他の表現を示す画面表示例である。当業者であれば、その他の類似の技法を内蔵可能であることを認識するであろう。
【0089】
セキュリティがソフトウェアの複数の「エージェンシー」又はインスタンスによって提供又は保証される場合には、そのセキュリティ保証のソースを知ることは、ユーザーにとって有益である。システムは、タイトルバー内、タイトルバーの上、ステータスバー内、又はその他の比較的固定された場所に、セキュリティの提供者を示す持続的なテキストを提供するか、或いは、ボップアップ表示、「ツールチップ」表示、或いは表示装置のウィンドウ又は安全な領域のその他の領域における一時的なテキスト表示などの持続的ではない方法によって提供者を示しつつ、前述のメカニズムのいずれかにより、セキュリティレベルを示すことが好ましい。尚、この一時的なテキスト表示は、定期的に、或いは、セキュリティ状態内への進入やテキスト又はマウスカーソルのセキュリティアイコン上への移動などのなんらかの外部イベントにより、トリガすることができる。
【0090】
以上のことから、本明細書においては、例示を目的として本発明の特定の実施例について説明しているが、本発明の精神と範囲を逸脱することなく、様々な変更が可能であることが理解されよう。例えば、当業者であれば、これらの安全なデータの入出力の方法及びシステムは、本明細書において明示的に説明されているもの以外のその他のタイプの記憶装置及び入力装置、並びにその他のタイプのデータ(ストリーム化されているもの、及びそうではないもの)にも適用可能であることを認識するであろう。例えば、フレームバッファ内のデータの難読化に使用する難読化法は、その他のタイプの記憶装置の難読化にも拡張可能である。更には、本明細書に記載されているセキュリティ機能拡張ドライバに関連して説明したものに類似の技法を使用してこれらの実施例を拡張し、それらの記憶装置にコンテンツのスケジューリングを提供することもできる。
【図面の簡単な説明】
【0091】
【図1】本発明の実施例によって提供されるセキュリティ機能拡張ドライバを含む標準的なコンピュータアーキテクチャの抽象化レイヤを示すブロックダイアグラム例である。
【図2】通常のコンピュータシステムにおける表示装置に対するデータの転送方法を示するブロックダイアグラム例である。
【図3】ディスプレイのハッキングを実行する方法を示するブロックダイアグラム例である。
【図4】フレームバッファ内に保存されているデータに対する認可されていないアクセスを防止するべく、セキュリティ機能拡張ディスプレイドライバの一例によって使用される一般的な技法のブロックダイアグラム例である。
【図5】セキュリティ機能拡張ディスプレイドライバの一例によって提供されるビデオ表示メモリ(VRAM)の指定された安全な部分を示すブロックダイアグラム例である。
【図6】「コピーアウト」逆難読化技法との関連で使用される難読化技法を示すブロックダイアグラム例である。
【図7】コピーアウト逆難読化技法の変形を示すブロックダイアグラム例である。
【図8】「置換と回復」逆難読化技法との関連で使用される難読化技法を示すブロックダイアグラム例である。
【図9】「定位置置換」逆難読化技法との関連で使用される難読化技法を示すブロックダイアグラム例である。
【図10】セキュリティ機能拡張ディスプレイドライバの一例によるフレームバッファコンテンツの難読化及び逆難読化のスケジューリングを示す例示図である。
【図11】フレームバッファ全体の難読化及び逆難読化のタイミングをスケジューリングするのに使用可能な代替難読化/逆難読化法を示すブロックダイアグラム例である。
【図12】安全な表示領域における描画を要求するアプリケーションレベルのルーチンの一例を示すフローチャート例である。
【図13】真のマルチタスクハードウェアイベント駆動型システムにおいて、安全な表示領域の難読化を制御するセキュリティ機能拡張ディスプレイドライバの一例におけるインターフェイスを示すフローチャート例である。
【図14】代替オペレーティングシステム環境において、非イベント駆動型の方法による安全な表示領域の難読化を制御するセキュリティ機能拡張ディスプレイドライバの一例におけるインターフェイスを示すフローチャート例である。
【図15】図14の代替オペレーティングシステム環境におけるフレームバッファコンテンツのスケジューリングの制御に使用する垂直帰線タイミング及び同期スレッドを示すフローチャート例である。
【図16】フレームバッファコンテンツのスケジューリングの制御に使用する垂直帰線とVRAMアドレス間の相関を判定するコードを示すフローチャート例である。
【図17】有効及び無効なデータをフレームバッファに供給するセキュリティ機能拡張ディスプレイドライバが使用するリアルタイム難読化制御スレッドを示すフローチャート例である。
【図18】入力データのハッキングを実行する方法を示すブロックダイアグラム例である。
【図19】入力データに対する認可されていないアクセスを防止するべく、セキュリティ機能拡張マウスドライバなどのセキュリティ機能が拡張された入力ドライバによって使用される一般的な技法を示すブロックダイアグラム例である。
【図20】入力データに対する認可されていないアクセスを防止するセキュリティ機能拡張キーボードドライバの一例によって使用される難読化技法を示すフローチャート例である。
【図21】オーディオデータのハッキングを実行する方法を示すブロックダイアグラム例である。
【図22】オーディオデータに対する認可されていないアクセスを防止するセキュリティ機能拡張オーディオドライバの一例によって使用される難読化技法を示すフローチャート例である。
【図23】Windows9xオペレーティングシステム環境及び関連する監視プロセスにおける先頭ドライバとしてのセキュリティ機能拡張ドライバのインストールを示すブロックダイアグラム例である。
【図24】既存のソフトウェアアプリケーションにおいて使用されているセキュリティを表示する南京錠を示す画面表示例である。
【図25】セキュリティレベルを判定するためのカーソルの使用法とセキュリティの表示に使用するウィンドウ上のその他の表示を示す画面表示例である。
Claims (55)
- ビデオ表示システムのビデオ表示装置上において、有効なデータの安全な表示を確保するコンピュータシステムにおける方法であって、前記ビデオ表示システムは、前記ビデオ表示装置上に表示するデータを保存するビデオ表示メモリを有しており、
前記ビデオ表示メモリのコンテンツをスケジューリングする段階であって、前記有効なデータは、前記ビデオ表示装置上での表示のために必要とされる際に利用可能となると共に、前記スケジューリングの外部に位置するコードは、前記ビデオ表示メモリにおいては、無効なデータにのみアクセス可能となるように、前記ビデオ表示メモリのコンテンツをスケジューリングする段階を有する方法。 - 前記無効なデータは、前記有効なデータを、難読化されたデータ、暗号化されたデータ、及びマスク処理されたデータの中の少なくとも1つに変形し、該変形したデータを前記ビデオ表示メモリ内に保存することによって生成される請求項1記載の方法。
- 前記無効なデータは、ガベージデータ、ビットマップ、又は不透明な単色領域の中の少なくとも1つである請求項1記載の方法。
- 前記ビットマップは企業のロゴである請求項3記載の方法。
- 前記領域は黒である請求項3記載の方法。
- 前記ビットマップは広告である請求項3記載の方法。
- 前記領域は、前記ビデオ表示装置の全体である請求項1記載の方法。
- 前記有効なデータは、前記ビデオ表示装置上の領域内に表示され、前記領域は、前記ビデオ表示メモリ内の場所の組に対応し、
前記有効なデータをオーバーレイバッファ内に保存する段階と、
無効なデータを前記ビデオ表示メモリ内の前記対応する場所の組内に保存する段階と、
を更に有する請求項1記載の方法。 - 前記ビデオ表示装置上に前記有効なデータを表示する際に、前記有効なデータを前記オーバーレイバッファから前記ビデオ表示装置にコピーアウトする段階を更に有する請求項8記載の方法。
- 前記ビデオ表示メモリ内の前記対応する場所の組内に保存されている前記無効なデータは、ガベージデータ、ビットマップ、及び不透明な単色領域の中の少なくとも1つである請求項8記載の方法。
- 前記ビットマップは企業のロゴである請求項10記載の方法。
- 前記領域は黒である請求項10記載の方法。
- 前記有効なデータは、前記ビデオ表示装置上の領域内に表示され、前記領域は、前記ビデオ表示メモリ内の場所の組に対応し、
オーバーレイバッファ内に無効なデータを保存する段階と、
前記ビデオ表示メモリ内の前記対応する場所の組内に無効なデータを保存する段階と、
前記オーバーレイバッファ内に保存されている前記無効なデータが前記ビデオ表示装置上の前記領域にコピーアウトされる際に、前記オーバーレイバッファ内に保存されている前記無効なデータを有効なデータに変形させる段階と、
を更に有する請求項1記載の方法。 - 前記オーバーレイバッファ内に保存されている前記無効なデータは、前記有効なデータの暗号化された形態である請求項13記載の方法。
- 前記オーバーレイバッファ内に保存されている前記無効なデータの前記変形段階は、前記無効なデータが前記ビデオ表示装置にコピーアウトされる際に前記無効なデータを解読する段階を有する請求項14記載の方法。
- 前記ビデオ表示メモリ内の前記対応する場所の組内に保存されている前記無効なデータは、ガベージデータ、ビットマップ、及び不透明な単色領域の中の少なくとも1つである請求項13記載の方法。
- 前記ビットマップは企業のロゴである請求項13記載の方法。
- 前記領域は黒である請求項16記載の方法。
- 前記ビデオ表示メモリ内の前記対応する場所の組内に、前記有効なデータを暗号化されたデータとして保存する段階と、
前記スケジューリングの外部に位置するコードが前記暗号化されたデータにのみアクセス可能となるように、前記ビデオ表示装置上に表示される際に前記ビデオ表示メモリ内の前記対応する場所の組内の前記暗号化されたデータを解読する段階と、
を更に有する請求項1記載の方法。 - 前記ビデオ表示システムは、前記ビデオ表示装置上の領域内に前記有効なデータを表示するべく、前記ビデオ表示メモリからデータを前記ビデオディスプレイにコピーするグラフィックプロセッサを有しており、
前記領域に対応する前記ビデオ表示メモリの部分内に無効なデータを保存する段階と、
前記グラフィックプロセサが前記領域に対応する前記ビデオ表示メモリの前記部分にアクセスする際に、
前記部分から前記無効なデータを取得する段階と、
前記データを前記ビデオ表示メモリから前記ビデオディスプレイにコピーする一環として、前記無効なデータを有効なデータに変形し、これにより、前記有効なデータを前記ビデオ表示装置上に表示する段階と、
を更に有する請求項1記載の方法。 - 前記無効なデータは、前記有効なデータの暗号化された形態であり、前記無効なデータの変形段階は、前記無効なデータを解読する段階を有する請求項20記載の方法。
- 前記無効なデータは、ラスタ演算を適用して前記有効なデータをマスクと合成することによって生成され、前記無効なデータから有効なデータへの変形段階は、ラスター演算を適用して前記無効なデータをマスクと合成する段階を有する請求項20記載の方法。
- 前記ラスタ演算は、XOR演算であり、前記有効なデータに適用される前記マスクは、前記無効なデータに適用される前記マスクと同一である請求項22記載の方法。
- スケジューリングプロセスによって実行され、前記有効なデータは、前記ビデオ表示装置上の領域内に表示され、前記領域は、前記ビデオ表示メモリの一部分に対応し、
前記領域に対応する前記ビデオ表示メモリの前記部分内に無効なデータを保存する段階と、
前記スケジューリングプロセス以外のプロセスが前記部分にアクセスすることを許容しない排他的なロックメカニズムの下に、前記ビデオ表示メモリの前記部分において、前記保存されている無効なデータを有効なデータに一時的に変形する段階と、
を更に有する請求項1記載の方法。 - 前記保存されている無効なデータを変形する段階は、解読する段階、マスクを使用して前記保存されている無効なデータにラスタ演算を適用する段階、及びバッファから有効なデータをコピーする段階の中の1つを有する請求項24記載の方法。
- 前記バッファはオーバーレイバッファである請求項25記載の方法。
- 前記バッファは、前記領域に対応する前記部分ではない前記ビデオ表示メモリの別の領域である請求項25記載の方法。
- 前記バッファは安全且つ有効なデータバッファである請求項25記載の方法。
- 前記排他的ロックメカニズムは、オペレーティングシステムによって提供されるプロセス間ロックメカニズムである請求項24記載の方法。
- 前記排他的ロックメカニズムは、前記スケジューリングプロセスをリアルタイムの優先プロセスとすることによって実現される請求項24記載の方法。
- 前記コンピュータシステムは、制御された順序によってデバイスドライバにアクセスを許容するオペレーティングシステムを有しており、前記順序は第1のドライバを有し、前記排他的ロックメカニズムは、前記スケジューリングを実装する表示ドライバを前記第1のドライバとすることによって実現される請求項24記載の方法。
- 前記ビデオ表示システムは、複数のタイムスライスにおいて、データを前記ビデオ表示メモリから前記ビデオディスプレイにコピーするグラフィックプロセッサを有しており、前記有効なデータは、前記ビデオ表示装置上の領域内に表示され、前記領域は、前記ビデオ表示メモリの一部分に対応し、
前記領域に対応する前記ビデオ表示メモリの前記部分内に無効なデータを保存する段階と、
前記グラフィックプロセッサが前記領域内の前記有効なデータの表示に対応する前記ビデオ表示メモリの前記部分にアクセスした際には、前記グラフィックプロセッサは前記有効なデータを取得し、前記グラフィックプロセッサが前記ビデオ表示メモリの前記部分にアクセスしていない場合には、前記部分が前記無効なデータを格納するように、タイムスライスにおいて、前記ビデオ表示メモリ内の前記無効なデータを前記有効なデータと置換する段階と、
を更に有する請求項1記載の方法。 - 前記無効なデータは、前記タイムスライスにおいて、前記ビデオ表示メモリ内で前記無効なデータを有効なデータに一時的に変形することにより、有効なデータと置換される請求項32記載の方法。
- 前記変形段階は、解読段階とラスタ演算を適用する段階の中の1つである請求項33記載の方法。
- 前記変形段階は、XORラスタ演算を使用してマスクバッファを前記無効なデータに適用する請求項33記載の方法。
- 前記無効なデータは、オーバーレイバッファから有効なデータをコピーした後に前記タイムスライス後に前記無効なデータを回復することにより、有効なデータと置換される請求項32記載の方法。
- 前記回復段階は、マスクバッファから無効なデータをコピーすることによって実行される請求項36記載の方法。
- 前記無効なデータは、前記有効なデータを格納する安全なバッファから有効なデータをコピーした後に前記タイムスライスの後に前記無効なデータを回復することにより、有効なデータと置換される請求項32記載の方法。
- 前記回復段階は、マスクバッファから無効なデータをコピーすることによって実行される請求項38記載の方法。
- 前記有効なデータは、ビデオ表示メモリの安全な領域内に保存される請求項38記載の方法。
- 前記有効なデータバッファは、前記ビデオ表示システムの一部としては存在していないコンピュータシステムメモリの安全な領域内に保存される請求項38記載の方法。
- 前記有効なデータバッファには、前記スケジューリングを制御するコードのみがアクセス可能である請求項38記載の方法。
- 請求項32記載の方法。
- 前記無効なデータは、ガベージデータ、ビットマップ、及び不透明な単色領域の中の少なくとも1つである請求項32記載の方法。
- 前記無効なデータは、前記有効なデータを、難読化されたデータ、暗号化されたデータ、及びマスク処理されたデータの中の少なくとも1つに変形し、該変形したデータを前記ビデオ表示メモリの前記部分内に無効なデータとして保存することにより、生成される請求項32記載の方法。
- ビデオ表示システムのビデオ表示装置上に安全な表示領域を提供するコンピュータシステムにおける方法であって、前記ビデオ表示システムは、前記ビデオ表示装置上に表示されるデータを保存するビデオ表示メモリを有しており、
前記安全な表示領域に対応する安全なデータ保存場所として前記ビデオ表示メモリの一部分を予約する段階と、
前記安全な表示領域内に有効なデータを表示する要求を受信する段階であって、前記要求は前記有効なデータの標識を含んでいる段階と、
安全なデータバッファ内に、前記指示された有効なデータを保存する段階と、
前記予約した部分内に保存されているデータが表示のために前記ビデオ表示装置にコピーアウトされる時点から既定の期間だけ前の時点まで、前記ビデオ表示メモリの前記予約した部分内に無効なデータを保存する段階と、
を有する方法。 - 前記既定の期間の開始時点において、前記ビデオ表示メモリの前記予約した部分内に保存されている前記無効なデータを前記安全なデータバッファからの有効なデータと置換する段階を更に有する請求項46記載の方法。
- 前記予約した部分内に保存されている前記データが前記ビデオディスプレイにコピーアウトされた後に、前記ビデオ表示メモリの前記予約した領域内に前記無効なデータを再度保存する段階を更に有する請求項47記載の方法。
- 前記安全なデータバッファは、前記ビデオ表示メモリの前記予約した部分内に前記有効なデータを暗号化されたデータとして保存することによって実装される請求項46記載の方法。
- 前記安全なデータバッファは、前記ビデオ表示メモリ内の領域、前記コンピュータシステム内のランダムアクセスメモリの一部分、及び前記ビデオ表示装置を制御するビデオカード上に存在する第2メモリの中の1つである請求項46記載の方法。
- 前記ビデオ表示メモリは、前記ビデオ表示装置上に表示されるデータを保存するフレームバッファを有しており、前記安全なデータバッファは、前記フレームバッファの一部分である請求項46記載の方法。
- 前記有効なデータは、前記安全なデータバッファ内に保存される前に難読化される請求項51記載の方法。
- 前記有効なデータは、前記安全なデータバッファ内に保存される前に難読化される請求項46記載の方法。
- 難読化は、前記有効なデータの暗号化と、前記有効なデータ及びマスクに対するラスタ演算の適用と、の中の少なくとも1つによって実行される請求項53記載の方法。
- 前記マスクは、暗号化キー、企業のロゴ、パターン、広告、及び黒い領域の中の少なくとも1つを有するビットマップである請求項54記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29727301P | 2001-06-08 | 2001-06-08 | |
PCT/US2002/018457 WO2002101526A2 (en) | 2001-06-08 | 2002-06-10 | Method and system for maintaining secure data input and output |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005504365A true JP2005504365A (ja) | 2005-02-10 |
JP2005504365A5 JP2005504365A5 (ja) | 2006-01-12 |
Family
ID=23145597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003504221A Pending JP2005504365A (ja) | 2001-06-08 | 2002-06-10 | 安全なデータの入出力を維持する方法及びシステム |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1402334B1 (ja) |
JP (1) | JP2005504365A (ja) |
AT (1) | ATE328316T1 (ja) |
DE (1) | DE60211900T2 (ja) |
WO (1) | WO2002101526A2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005108223A (ja) * | 2003-09-26 | 2005-04-21 | Arm Ltd | 安全保護データと非安全保護データとを出力データ・ストリームの中にマージするデータ処理装置とデータ処理方法 |
JP2008262259A (ja) * | 2007-04-10 | 2008-10-30 | Sky Kk | 情報漏洩防止システム |
JP2013535068A (ja) * | 2010-06-28 | 2013-09-09 | ナブテック ビー.ヴイ. | ページ化更新プロトコルの方法および装置 |
WO2021206452A1 (ko) * | 2020-04-08 | 2021-10-14 | 삼성전자 주식회사 | 보안 데이터 처리 방법 및 이를 지원하는 전자 장치 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2388726B1 (en) | 2010-05-18 | 2014-03-26 | Kaspersky Lab, ZAO | Detection of hidden objects in a computer system |
US20210312080A1 (en) * | 2018-08-28 | 2021-10-07 | Visa International Service Association | Methodology to obfuscate sensitive information in mobile application background snapshot |
CN113553162A (zh) * | 2021-08-09 | 2021-10-26 | 湖南酷陆网络科技有限公司 | 一种环卫云平台程序运行定时任务管理系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381347A (en) * | 1992-12-21 | 1995-01-10 | Microsoft Corporation | Method and system for displaying images on a display device using an offscreen video memory |
DE69422324T2 (de) * | 1993-03-29 | 2000-07-27 | Koninklijke Philips Electronics N.V., Eindhoven | Speicherarchitektur mit Fenstern zum Bildkompilieren |
US5881287A (en) * | 1994-08-12 | 1999-03-09 | Mast; Michael B. | Method and apparatus for copy protection of images in a computer system |
US5838380A (en) * | 1994-09-30 | 1998-11-17 | Cirrus Logic, Inc. | Memory controller for decoding a compressed/encoded video data frame |
US5646651A (en) * | 1994-12-14 | 1997-07-08 | Spannaus; John | Block mode, multiple access multi-media/graphics memory |
US5936616A (en) * | 1996-08-07 | 1999-08-10 | Microsoft Corporation | Method and system for accessing and displaying a compressed display image in a computer system |
US5825879A (en) * | 1996-09-30 | 1998-10-20 | Intel Corporation | System and method for copy-protecting distributed video content |
US5961617A (en) * | 1997-08-18 | 1999-10-05 | Vadem | System and technique for reducing power consumed by a data transfer operations during periods of update inactivity |
WO1999047990A1 (en) * | 1998-03-16 | 1999-09-23 | Gateway 2000, Inc. | Electronic privacy screen and viewer |
US6519702B1 (en) * | 1999-01-22 | 2003-02-11 | Sun Microsystems, Inc. | Method and apparatus for limiting security attacks via data copied into computer memory |
-
2002
- 2002-06-10 EP EP02741979A patent/EP1402334B1/en not_active Expired - Lifetime
- 2002-06-10 DE DE60211900T patent/DE60211900T2/de not_active Expired - Lifetime
- 2002-06-10 WO PCT/US2002/018457 patent/WO2002101526A2/en active IP Right Grant
- 2002-06-10 AT AT02741979T patent/ATE328316T1/de not_active IP Right Cessation
- 2002-06-10 JP JP2003504221A patent/JP2005504365A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005108223A (ja) * | 2003-09-26 | 2005-04-21 | Arm Ltd | 安全保護データと非安全保護データとを出力データ・ストリームの中にマージするデータ処理装置とデータ処理方法 |
JP4571468B2 (ja) * | 2003-09-26 | 2010-10-27 | エイアールエム リミテッド | 安全保護データと非安全保護データとを出力データ・ストリームの中にマージするデータ処理装置とデータ処理方法 |
JP2008262259A (ja) * | 2007-04-10 | 2008-10-30 | Sky Kk | 情報漏洩防止システム |
JP2013535068A (ja) * | 2010-06-28 | 2013-09-09 | ナブテック ビー.ヴイ. | ページ化更新プロトコルの方法および装置 |
US9792381B2 (en) | 2010-06-28 | 2017-10-17 | Here Global B.V. | Method and apparatus for a paged update protocol |
WO2021206452A1 (ko) * | 2020-04-08 | 2021-10-14 | 삼성전자 주식회사 | 보안 데이터 처리 방법 및 이를 지원하는 전자 장치 |
US11550963B2 (en) | 2020-04-08 | 2023-01-10 | Samsung Electronics Co., Ltd. | Method of processing secure data and electronic device supporting the same |
Also Published As
Publication number | Publication date |
---|---|
EP1402334A2 (en) | 2004-03-31 |
ATE328316T1 (de) | 2006-06-15 |
EP1402334B1 (en) | 2006-05-31 |
DE60211900D1 (de) | 2006-07-06 |
WO2002101526A2 (en) | 2002-12-19 |
DE60211900T2 (de) | 2006-10-12 |
WO2002101526A3 (en) | 2003-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8370646B2 (en) | Method and system for maintaining secure data input and output | |
USRE40702E1 (en) | Method for securing video images | |
US6931597B1 (en) | Indications of secured digital assets | |
US8738929B2 (en) | Auxiliary functionality for pixel data | |
US7206940B2 (en) | Methods and systems providing per pixel security and functionality | |
US6922693B1 (en) | Method and system for copy protection of images displayed on a computer monitor | |
US7761706B2 (en) | Method for controlling access to protected content | |
US8380937B2 (en) | System for preventing unauthorized acquisition of information and method thereof | |
US7181603B2 (en) | Method of secure function loading | |
US20110239125A1 (en) | Using multiple display servers to protect data | |
EP2075725A2 (en) | Securing content for playback | |
EP1526424A2 (en) | Providing a graphical user interface in a system with a high-assurance execution environment | |
JP2004129227A (ja) | 情報再生装置、セキュアモジュールおよび情報再生方法 | |
JP2005504365A (ja) | 安全なデータの入出力を維持する方法及びシステム | |
JP2007188307A (ja) | データファイル監視装置 | |
JP2004240748A (ja) | 出力データ処理装置およびプログラム | |
KR20040000348A (ko) | 비디오 카드 출력을 보호하기 위한 시스템 및 방법 | |
Hussain et al. | Preventing the capture of sensitive information | |
JP2003196159A (ja) | 情報の不正使用を防止する情報配布方法とそのための装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050610 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050610 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070731 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080108 |