(57)【特許請求の範囲】
【請求項１】
コンピュータ装置における実行環境で実行される第１のプロセスによって、実行環境コマンドキューにおけるコマンドを識別するステップであって、前記コマンドは前記実行環境で実行される第２のプロセスからであり且つセキュアデータに対するアクションを示し、識別することは前記第２のプロセスのプロセスＩＤ又は前記コマンドにおけるパス名に基づき、識別することは、
前記実行環境が実行のために前記実行環境コマンドキューから前記コマンドを取得する前に行われ、且つ
前記実行環境コマンドキューにおいてセキュア記憶場所に関係付けられるエントリを識別することを含むステップと、
前記コマンドが前記実行環境コマンドキューに残っている間に、前記アクション及びユーザ認証情報に基づいて前記コマンドが許可されるかどうかを決定するステップであって、決定することは、
コマンド又はユーザ認証情報に関係付けられる１つ以上のルールを含むアクセスルールデータストアにアクセスすること、及び
前記コマンド及び前記１つ以上のルールに基づいて前記コマンドが許可されるかどうかを決定することを含むステップと、
前記コマンドが許可されないとの決定に応じて、前記第１のプロセスによって、前記実行環境が実行のために前記実行環境コマンドキューから前記コマンドを取得する前に前記コマンドキューから前記コマンドを除去するステップであって、除去することは前記実行環境が前記コマンドを実行することを防ぐステップと
を含む、方法。
【請求項２】
前記セキュア記憶場所は、コンピュータ可読媒体の個別にマウント可能なパーティションを含む、請求項１に記載の方法。
【請求項３】
前記実行環境は、オペレーティングシステムを含む、請求項１に記載の方法。
【請求項４】
前記実行環境は、アプリケーションサーバを含む、請求項１に記載の方法。
【請求項５】
前記実行環境は、仮想マシンを含む、請求項１に記載の方法。
【請求項６】
前記コマンドが許可されるとの決定に応じて、前記実行環境コマンドキューから前記コマンドを除去しないステップを更に含む、請求項１に記載の方法。
【請求項７】
前記コマンドは、保存コマンド、名前を付けて保存コマンド、開くコマンド、移動コマンド、名前の変更コマンド、印刷コマンド、コピーコマンド、切り取りコマンド、貼り付けコマンド、Ｅメールコマンド、スクリーンショットコマンド、名前の変更コマンド、又は共有コマンドの少なくとも１つを含む、請求項１に記載の方法。
【請求項８】
非一時的なコンピュータ可読媒体と、
前記非一時的なコンピュータ可読媒体と通信するプロセッサと
を備え、前記プロセッサは、
コンピュータ装置における実行環境で実行される第１のプロセスによって、前記実行環境で実行される他のプロセスからのコマンドを識別するために実行環境コマンドキューを監視することであって、前記コマンドの少なくとも１つはセキュアデータに対するアクションを示し、識別することは前記他のプロセスのプロセスＩＤ又は前記コマンドにおけるパス名に基づき、識別することは、
前記実行環境が実行のために前記実行環境コマンドキューから前記コマンドを取得する前に行われるように構成され、且つ
前記実行環境コマンドキューにおいてセキュア記憶場所に関係付けられるエントリを識別することを含むこと、
少なくとも１つのコマンドが許可されるかどうかを決定するために１つ以上のアクセスルールにアクセスすること、
前記少なくとも１つのコマンド及び前記１つ以上のルールに基づいて前記少なくとも１つのコマンドが許可されるかどうかを決定すること、及び
前記コマンドが許可されないとの決定に応じて、前記実行環境が実行のために前記実行環境コマンドキューから前記コマンドを取得する前に前記コマンドキューから前記コマンドを除去することであって、除去することは前記実行環境が前記コマンドを実行することを防ぐこと
を行うように構成される、装置。
【請求項９】
前記プロセッサは、
前記コマンドキューにおいてセキュア記憶場所に関係付けられるエントリを識別し、且つ
前記エントリに基づいてソフトウェアアプリケーションを識別する
ように更に構成される、請求項８に記載の装置。
【請求項１０】
前記プロセッサは、前記セキュア記憶場所に関するコンピュータ可読媒体上のパスを識別するように更に構成される、請求項９に記載の装置。
【請求項１１】
前記セキュア記憶場所は、コンピュータ可読媒体の個別にマウント可能なパーティションを含む、請求項９に記載の装置。
【請求項１２】
前記実行環境は、オペレーティングシステム、アプリケーションサーバ、又は仮想マシンの１つを含む、請求項８に記載の装置。
【請求項１３】
前記プロセッサは、前記コマンドが許可される場合に前記コマンドキューから前記コマンドを除去しないように更に構成される、請求項８に記載の装置。
【請求項１４】
前記コマンドは、保存コマンド、名前を付けて保存コマンド、開くコマンド、移動コマンド、名前の変更コマンド、印刷コマンド、コピーコマンド、切り取りコマンド、貼り付けコマンド、Ｅメールコマンド、スクリーンショットコマンド、名前の変更コマンド、又は共有コマンドの少なくとも１つを含む、請求項８に記載の装置。
【請求項１５】
実行環境においてプロセッサによって実行可能な監視ソフトウェア及びアクセスルールソフトウェアを含むプログラムコードを備える非一時的なコンピュータ可読媒体であって、前記監視ソフトウェアは、
前記実行環境で実行される他のプロセスからのコマンドを識別するために実行環境コマンドキューを監視すること、
前記他のプロセスの中の１つのプロセスＩＤ又は前記コマンドにおけるパス名に基づいてセキュアデータに対するアクションを示すコマンドを識別することであって、識別することは、
前記実行環境が実行のために前記実行環境コマンドキューから前記コマンドを取得する前に行われるように構成され、且つ
前記実行環境コマンドキューにおいてセキュア記憶場所に関係付けられるエントリを識別することを含むこと、
前記コマンドが許可されるかどうかを決定するための要求を前記アクセスルールソフトウェアに送信すること、及び
前記コマンドが許可されないことを示す前記要求に対する応答に応じて、前記実行環境が実行のために前記実行環境コマンドキューから前記コマンドを取得する前に前記コマンドキューから前記コマンドを除去することであって、除去することは前記実行環境が前記コマンドを実行することを防ぐこと
を行うように構成され、
前記アクセスルールソフトウェアは、
コマンド又はユーザ認証情報に関係付けられる１つ以上のルールを記憶するように構成されるアクセスルールデータストアにアクセスすること、
前記要求に関係付けられるコマンドが許可されるかどうかを決定するための要求を受信すること、
各要求及び前記１つ以上のルールに基づいて前記コマンドが許可されるかどうかを決定すること、及び
前記各要求に対する応答メッセージを送信すること
を行うように構成される、非一時的なコンピュータ可読媒体。
【請求項１６】
前記監視ソフトウェアは、
前記コマンドキューにおいてセキュア記憶場所に関係付けられるエントリを識別し、且つ
前記エントリに基づいて前記コマンドを識別する
ように更に構成される、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項１７】
前記セキュア記憶場所は、コンピュータ可読媒体の個別にマウント可能なパーティションを含む、請求項１６に記載の非一時的なコンピュータ可読媒体。
【請求項１８】
前記セキュアデータは、セキュア記憶場所内に記憶されているデータを含み、前記監視ソフトウェアは、前記コマンドを識別するために、前記コマンドキューにおいて前記セキュアデータへのアクセスを試行するプロセスのプロセス識別子に関係付けられるエントリを識別するように更に構成される、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項１９】
前記実行環境は、オペレーティングシステム、アプリケーションサーバ、又は仮想マシンの１つを含む、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項２０】
前記監視ソフトウェアは、前記コマンドが許可されるとの決定に応じて、前記コマンドキューから前記コマンドを除去しないように更に構成される、請求項１５に記載の非一時的なコンピュータ可読媒体。
【請求項２１】
前記コマンドは、保存コマンド、名前を付けて保存コマンド、開くコマンド、移動コマンド、名前の変更コマンド、印刷コマンド、コピーコマンド、切り取りコマンド、貼り付けコマンド、Ｅメールコマンド、スクリーンショットコマンド、名前の変更コマンド、又は共有コマンドの少なくとも１つを含む、請求項１５に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、データセキュリティに関し、より詳細には、信頼できない装置においてデータを保護することに関する。
【０００２】
［関連出願の参照］
本出願は、２０１５年１月２日に提出され、“Ｓｅｃｕｒｉｎｇ  Ｄａｔａ  Ｏｎ  Ｕｎｔｒｕｓｔｅｄ  Ｄｅｖｉｃｅｓ”と題された米国特許出願第１４／５８８，７７９号への優先権を主張し、その全体は参照により本明細書に援用される。
【背景技術】
【０００３】
機密情報が保存され得る状況でますます多くのラップトップ、タブレット及びスマートフォン等の携帯型電子装置が使用されている。例えば、ユーザはスマートフォンで会社のＥメールを送受信する場合が有り、又はリモートネットワーク接続等を介してタブレット装置で企業内文書にアクセスし、これを編集して保存する場合が有る。更に、「個人所有機器の持ち込み（ｂｒｉｎｇ  ｙｏｕｒ  ｄｅｖｉｃｅ）」又はＢＹＯＤ規定と一般に呼ばれている規定の下で仕事に使用される装置をユーザ自身が提供することがますます一般的になってきている。しかしながら、このようなＢＹＯＤ規定の下で使用される装置は、従来は特定のセキュリティ機能が使用可能な会社の装置をユーザに提供していたＩＴ（ｉｎｆｏｒｍａｔｉｏｎ  ｔｅｃｈｎｏｌｏｇｙ）部門にセキュリティリスクを提示する。
【発明の概要】
【０００４】
信頼できない装置においてデータを保護するための様々な例が記載される。例示の方法の１つは、ソフトウェアアプリケーションからセキュアデータにアクセスするためのコマンドを識別するステップと、ソフトウェアアプリケーション及びユーザ認証情報に基づいてコマンドが許可されるかどうかを決定するステップと、コマンドが許可されないと決定することに応じて、コマンドキューからコマンドを除去するステップとを含む。
【０００５】
例示の装置の１つは、非一時的なコンピュータ可読媒体と、非一時的なコンピュータ可読媒体と通信するプロセッサとを備え、プロセッサは、第１のプロセスによって、他のプロセスからのコマンドを識別するためにコマンドキューを監視し、少なくとも１つのコマンドはセキュアデータに対するアクションを示し、少なくとも１つのコマンドが許可されるかどうかを決定するための１つ以上のアクセスルールにアクセスし、コマンドが許可されないとの決定に応じて、コマンドキューからコマンドを除去するように構成される。
【０００６】
例示の非一時的なコンピュータ可読媒体の１つは、プログラムコードを含み、プログラムコードは、プロセッサによって実行可能な監視ソフトウェアを含み、監視ソフトウェアは、他のプロセスからのコマンドを識別するためにコマンドキューを監視し、セキュアデータに対するアクションを示すコマンドを識別し、コマンドが許可されるかどうかを決定するための要求を送信し、且つコマンドが許可されないことを示す要求に応じて、コマンドキューからコマンドを除去するように構成される。
【０００７】
こうした例示は、本開示の範囲を限定又は定義するために言及されるのではなく、その理解を支援するための例示を提供するものである。詳細な説明において例示が検討されており、そこには更なる説明が提供されている。様々な例によってもたらされる利点は、本明細書を吟味することにより更に理解され得る。
【図面の簡単な説明】
【０００８】
本明細書に組み込まれてその一部を構成する添付の図面は、１つ以上の所定の例示を示しており、例示の説明と共に、所定の例示の原理及び実装を説明する役割を果たす。
【図１】信頼できない装置においてデータを保護するための例示のシステムを示す。
【図２】信頼できない装置においてデータを保護するための例示のコンピュータ装置を示す。
【図３】信頼できない装置においてデータを保護するための例示のシステムを示す。
【図４】信頼できない装置においてデータを保護するための例示の方法を示す。
【図５】信頼できない装置においてデータを保護するための例示の方法を示す。
【図６】信頼できない装置においてデータを保護するための例示のシステムを示す。
【図７】信頼できない装置においてデータを保護するためにプロセスＩＤを記録するための例示のデータ構造を示す。
【発明を実施するための形態】
【０００９】
本明細書の例示は信頼できない装置においてデータを保護することに関連して記載される。当業者であれば、以下の記載は例示目的であり、如何なる限定も意図していないことを理解するであろう。次に、添付の図面に示された例示的な実装が詳細に参照される。同じ参照記号が同じ又は同様の項目を参照するために図面及び以下の記載を通じて使用される。
【００１０】
明確のため、本明細書に記載の例示の定型的な特徴の全てが示され且つ記載されているわけではない。勿論、このような実際の実装の開発において、アプリケーション及びビジネス関連の制約の遵守等の多くの実装固有の決定が開発者固有の目的を達成するために行われなければならず、こうした固有の目的は実装ごとに又は開発者ごとに変化することが理解されるであろう。
【００１１】
［信頼できない装置においてデータを保護するための例示の方法］
信頼できない装置においてデータを保護するための方法の例示の１つにおいて、ユーザはタブレットコンピュータを使用して、リモート企業ドキュメントサーバに保存されているワードプロセッシングドキュメントにアクセスする。タブレットは、ドキュメントをダウンロードして、それをタブレット内のフラッシュメモリ装置におけるセキュアパーティションに保存する。次に、ユーザはタブレットにおいてワードプロセッシングアプリケーションを実行し、メニューを使用してファイル「開く」コマンドを実行し、ファイルナビゲーションダイアログウインドウを使用してセキュアパーティション内のダウンロードされたドキュメントまで進む。ドキュメントを見つけた後で、ユーザは、「ＯＫ」ボタンをクリックして、アプリケーションにドキュメントを開かせる。
【００１２】
ユーザが「ＯＫ」をクリックすると、アプリケーションは、開かれるドキュメントに関するファイルパス名及びファイル名を含むコマンドをアプリケーションプログラミングインターフェース（「ＡＰＩ」）を介してオペレーティングシステム（「ＯＳ」）に発行する。例えば、アプリケーションは、ＯＳ．ＦｉｌｅＯｐｅｎと呼ばれるオペレーティングシステムＡＰＩコマンドを実行し、“ｚ：￥ｓｅｃｕｒｅ￥ｄｏｃｓ￥ｂｕｓｉｎｅｓｓｐｌａｎ．ｄｏｃ”等のファイルに関するパス名及びファイル名をパラメータとして提供する。ＡＰＩコマンドは、ＯＳによってファイルを開くために実行されるエントリをコマンドキューに生成させる。この場合、ＯＳはマルチタスクＯＳであるので、ＯＳ自体の複数の側面を含む、広範な異なるスレッド及びプロセスからコマンドを受信する。従って、ＯＳは、後で実行するためにコマンドキュー内に受信したコマンドをキューに入れる。この場合、ＯＳは、受信したファイルを「開く」コマンド及びパス名及びファイル名を実行のためにコマンドキューに入れる。
【００１３】
しかしながら、この例示では、ユーザのタブレットは、セキュアパーティション内に位置するデータに対して実行されようとするコマンドを監視するソフトウェアアプリケーションを実行している。監視ソフトウェアは、セキュアパーティション内のパス名を含む任意のコマンドを識別するためにＯＳのコマンドキュー内のイベントを監視する。この例示では、監視ソフトウェアは、“ｚ：￥ｓｅｃｕｒｅ”を含むターゲットパス名を有するＯＳのコマンドキュー内のイベントをチェックする。従って、ＯＳがパス名“ｚ：￥ｓｅｃｕｒｅ￥ｄｏｃｓ”を有する「開く」コマンドに関するキューに対して新しいコマンドを生成するとき、監視ソフトウェアは、対応イベントを識別して、対応コマンド、この例示では、「開く」がこのファイルに関してソフトウェアアプリケーションに対して及びこのファイルに関してユーザに対して許可されたコマンドであるかどうかを決定する。この例示では、ユーザはファイルにアクセスする許可を有していないので、監視ソフトウェアはそれが実行される前にコマンドキューから対応するイベントを削除する。更に、試行されたコマンドが承認されなかったことの通知を生成してユーザに表示し、試行された「開く」コマンド、ドキュメントのパス名及びファイル名、アクションを行おうとしたユーザ、コマンドが実行を許可されなかったことの試行の結果を示すエントリを生成して監視ソフトウェアの監査ログに記憶する。
【００１４】
ユーザは、間違ったドキュメントを選択したことに気付いて、第２のドキュメント“ｄｏｃ２．ｄｏｃ”をセキュアパーティションにダウンロードする。次に、ユーザは、ワードプロセッシングアプリケーションを使用して第２のドキュメントを開けようとする。ワードプロセッシングアプリケーションは、再びＯＳのＡＰＩを呼び出して、パス名及びファイル名“ｚ：￥ｓｅｃｕｒｅ￥ｄｏｃｓ￥ｄｏｃ２．ｄｏｃ”を「開く」コマンドに渡す。ＯＳは、識別されたファイルを開くためにコマンドキューにエントリを生成する。再び、監視ソフトウェアは、セキュアパーティションに対するパス名“ｚ：￥ｓｅｃｕｒｅ”に基づいてエントリを識別して、ソフトウェアアプリケーション及びユーザがこのドキュメントを開くことを許可されているかどうかを決定する。この場合、ユーザはワードプロセッシングアプリケーションでファイルを開くことを承認されているので、監視ソフトウェアはコマンドキューからエントリを削除せず、ＯＳがコマンドを実行することを許可する。次に、監視ソフトウェアは、ドキュメントを開いてプロセスＩＤ、ドキュメントに関する情報（例えば、ファイル名及びパス）、並びにドキュメント及びユーザに関係付けられるアクセスルールへの参照を含むレコードをデータ構造に記憶するソフトウェアアプリケーションのインスタンスに対するプロセス識別子（「プロセスＩＤ」）を取得する。更に、監視ソフトウェアは、ユーザの名前、ファイル名、及び実行されたコマンド、この場合は「開く」を含むファイルを開くことに成功したことを示すエントリを監査ログに生成する。次に、ソフトウェアアプリケーションは、ドキュメントを開いて、それをユーザに提示する。
【００１５】
次に、ユーザは、タブレットに挿入されているリムーバブルフラッシュメモリ装置にドキュメントを保存したいと判断して、ワードプロセッシングアプリケーション内のメニューシステムからコマンド「名前を付けて保存」を選択して、「名前を付けて保存」コマンドの宛先としてリムーバブルフラッシュメモリ装置を選択する。ワードプロセッシングアプリケーションは、ＡＰＩ関数ＯＳ．ＦｉｌｅＳａｖｅＡｓを呼び出して、ドキュメントに対する宛先パス名及びファイル名を提供し、ＯＳは、「名前を付けて保存」コマンドに対するエントリをコマンドキューに生成する。
【００１６】
この場合、監視ソフトウェアは、コマンドキューにおいてソフトウェアアプリケーションのインスタンスのプロセスＩＤを識別し且つプロセスＩＤに対応するコマンドを解析することにより、ドキュメントの「名前を付けて保存」の試行を検出する。この場合、監視ソフトウェアは、ユーザ及びドキュメントに対する対応するアクセスルールを識別するためにデータ構造を解析する。次に、監視ソフトウェアは、ユーザがセキュアな場所の外側の場所に対して「名前を付けて保存」操作を行うのに十分な許可を有しているかどうかを決定するためにアクセスルールにアクセスする。この場合、監視ソフトウェアは、ユーザが十分な許可を有していないことを決定して、コマンドキューから「名前を付けて保存」コマンドに対応するエントリを削除する。前述同様に、監視ソフトウェアは、試行された操作が許可されなかったことの通知を生成してユーザに表示し、試行されたコマンド、パス名及びファイル名、並びにユーザの名前を示すエントリを監査ログに生成する。
【００１７】
この例示では、監視ソフトウェアは、ドキュメントへの不正アクセス又はセキュアパーティション外へのセキュアデータの不正な移動の何れかを許可し得る他のタイプのコマンドも監視することが可能である。例えば、監視ソフトウェアは、「保存」、「名前を付けて保存」、「コピー」、「移動」、「共有」及び「名前の変更」等のファイルレベルの操作、「印刷」、「切り取り」、「コピー」、「貼り付け」等のコンテンツレベルの操作、Ｅメール操作（例えば、Ｅメールにセキュアファイルを添付すること）等の他のアプリケーション固有の操作、並びにスクリーンショット又はスクリーン記録機能等の他のアプリケーション又はオペレーティングシステムによって実行され得る又は「読み出し専用」、「読み書き」を反映するためのファイル許可又は他のタイプの許可を変更する他の操作を検出し且つ妨げることが可能である。信頼できない装置におけるデータの保護の例は、個別のソフトウェアアプリケーションの動作に影響を与えるアプリケーション「ラッパー」を提供する必要なく信頼できない装置におけるデータ保護を含み得る。その代わり、様々な例は、装置上のソフトウェアアプリケーション及びオペレーティングシステムと共にユーザにもセキュアデータに対する透過的なセキュリティを効果的に提供し得る。
【００１８】
上記の例示は異なるソフトウェアアプリケーションの使用を検討している。しかしながら、この詳細な説明の他の部分は一般的な用語「プロセス」を参照してもよい。ソフトウェアアプリケーションは、コンピュータシステムにおけるプロセスを実行してもよい。例えば、ワードプロセッシングソフトウェアアプリケーションが立ち上げられるとき、実行中のワードプロセッシングソフトウェアアプリケーションはプロセスと呼ばれてもよい。このような例では、明確のため、プロセスは「第１の」プロセス及び「第２の」プロセスと呼ばれてもよい。ラベル「第１の」及び「第２の（及び「第３の」等）は、順番を示すことを意図しているのではなく、単に異なるプロセスを互いに区別することを意図している。例えば、複数の異なるソフトウェアアプリケーションがマルチタスクオペレーティングシステム等の文脈内でコンピュータシステム上で実質的に同時に実行されている場合、各ソフトウェアアプリケーションは別個のプロセスであってもよく、このようなラベルを使用して参照されていてもよい。例えば、先に検討された監視ソフトウェアは、ワードプロセッシングソフトウェアアプリケーションプロセスとは別個の異なるプロセスとして実行され、従って、監視ソフトウェアは「第１のプロセス」と呼ばれ、ワードプロセッシングソフトウェアアプリケーションは「第２のプロセス」と呼ばれてもよい。更に、一部のプロセスは、互いから部分的に又は完全に独立して動作し得る１つ以上の実行「スレッド」を含んでもよい。このようなスレッドは、典型的には、単一のプロセスの一部であるが、プロセスによって行われる異なるタスクを表してもよい。全体におけるプロセス及びスレッドという用語の参照は、一般に、こうした概念を参照し、又は当業者に一般に理解される概念を参照する。
【００１９】
信頼できない装置におけるデータの保護の他の例は、以下により詳細に記載される。
【００２０】
次に図１を参照すると、図１は信頼できない装置においてデータを保護するための例示のシステム１００を示す。例示のシステム１００は、ネットワーク１２０を介してドキュメントサーバ１３０及び管理サーバ１３２と通信する携帯型コンピュータ装置１１０及びデスクトップコンピュータ１１２を含む。ドキュメントサーバ１３０はデータストア１４０と通信しており、コンピュータ装置１１０及びデスクトップコンピュータ１１２に利用可能なファイルを保持するように構成される。管理サーバ１３２は、アクセスポリシーを確立して装置１１０、１１２に提供するように構成される。ネットワーク１２０は、インターネット、クラウド型ネットワーク、イントラネット、ローカルエリアネットワーク、無線ローカルエリアネットワーク、ワイドエリアネットワーク、マイクロ波ネットワーク、衛星ネットワーク、総合デジタル通信網、セルラネットワーク、及びこれらの若しくは他のタイプのネットワークの組み合わせ等の任意の適切なネットワークであてもよい。
【００２１】
コンピュータ装置１１０及びデスクトップコンピュータ１１２の各々は、各装置１１０、１１２におけるデータを保護するように構成される監視ソフトウェアをインストールしており且つ実行する。監視ソフトウェアは、構成パラメータと通信してそれを受信し、サーバ１３０からセキュアデータにアクセスするための認証情報にアクセスする。更に、装置１１０、１１２の各々は、セキュアデータを記憶するように確立された記憶場所を有するように構成される。この例示のシステム１００において、装置１１０、１１２の各々は、セキュアデータを記憶するように確立されたファイルシステムパーティションを有するコンピュータ可読媒体を有する。ファイルシステムパーティションは、コンピュータ可読媒体に対するパーティションテーブルにおいて別個に確立されるように構成され、ファイルシステムから独立してマウント及びアンマウントされてもよい。一部の例では、セキュアパーティションは、異なる物理媒体に存在してもよい。
【００２２】
サーバ１３０は、企業ドキュメントシステム等のドキュメントレポジトリを管理するように構成される。サーバ１３０は、承認ユーザがドキュメントレポジトリにログインして、ドキュメントレポジトリ内に保存された１つ以上のドキュメントにアクセスすることを可能にする。ドキュメントレポジトリ内のドキュメントはデータストア１４０に保存され、コンピュータ装置１１０又はデスクトップコンピュータ１１２等の装置から受信した要求に応答してサーバ１３０によってアクセスされてもよい。
【００２３】
管理サーバ１３２は、ドキュメントレポジトリの承認ユーザに関するセキュリティポリシー情報を保持する。例えば、管理サーバ１３２は、ユーザごとに又はユーザの１つ以上のグループに対して、どのファイルにユーザがアクセスし得るか及び各ファイル又はファイルのグループに関してユーザがどの操作を行うことが許可されているかを示す構成設定を保持する。管理サーバ１３２は、ドキュメントレポジトリに接続しようとするときに各装置におけるセキュリティポリシー情報を監査して、必要であればセキュリティポリシー情報を更新する。更に、管理サーバ１３２は、装置１１０、１１２におけるセキュア記憶場所に対するセキュリティ鍵情報を生成する。これは以下でより詳細に記載される。
【００２４】
次に図２を参照すると、図２は信頼できない装置においてデータを保護するための例示のコンピュータ装置２００を示す。図２に示された例示的なコンピュータ装置２００はタブレット装置であるが、一部の例では、コンピュータ装置２００はスマートフォン、デスクトップコンピュータ、ラップトップコンピュータ又は他の適切なコンピュータ装置であってもよい。例示的なコンピュータ装置２００は、タッチセンサ式ディスプレイ２１０、電子プロセッサ２３０、メモリ２４０、記憶媒体２５０、ネットワークインターフェース２６０及び通信バス２７０を備える。プロセッサ２３０は、メモリ２４０にアクセスし、メモリ２４０内に記憶されたプログラムコードを実行し、メモリ２４０にデータを読み書きするように構成される。また、プロセッサ２３０は、メモリ２４０にデータをロードするために記憶媒体２５０にアクセスし、又はメモリから記憶媒体２５０にデータを記憶するように構成される。プロセッサ２３０は、図１に示されたネットワーク１２０等の１つ以上の通信ネットワークにアクセスして、（複数の）ネットワークに接続される他の装置と通信するためにネットワークインターフェース２６０を使用するように更に構成される。
【００２５】
記憶媒体２５０は、１つ以上のファイルシステム及び１つ以上のデータファイルを保持するように構成される。適切なタイプの記憶媒体の例は、この詳細な説明において後でより詳細に記載される。しかしながら、この例示では、記憶媒体２５０は、２つのファイルシステムパーティションを有するように構成されたフラッシュメモリ装置を含む。第１のパーティション（「プライマリパーティション」）が装置２００のオペレーティングシステム及び他のデータファイルを保存するように構成され、第２のパーティション（「セキュアパーティション」）がドキュメントレポジトリから受信したデータファイルを保存するように構成される。
【００２６】
この例示では、装置２００は、最初にブートしてオペレーティングシステムのファイルシステムの一部としてプライマリパーティションをマウントする。更に、装置２００は、ブートしている間、以下でより詳細に記載される監視ソフトウェアを実行する。装置２００は、ブートされると、オペレーティングシステムと、ワードプロセッシング、スプレッドシート、ウェブブラウジング及び他のアプリケーション等の様々なソフトウェアアプリケーションと、ユーザデータファイルを含む様々なデータファイルとを保存するプライマリパーティションを使用して動作する。この例示では、監視ソフトウェアは、セキュアパーティションをマウント及びアンマウントするように構成される。
【００２７】
この例示及びこの詳細な説明の他の場所において用語「マウント」が使用されているが、所定のオペレーティングシステム内の利用可能な「マウント」ユーティリティの使用を意味することを意図していないことに留意されたい。  その代わり、用語「マウント」及び関連用語「アンマウント」は、この明細書全体にわたってファイルシステムを取り付ける又は取り外すプロセスに関する一般用語として使用されている。用語「マウント」、「取り付け」、「アンマウント」及び「取り外し」は、このプロセスを参照するために交換可能に使用されてもよい。
【００２８】
次に図３を参照すると、図３は信頼できない装置においてデータを保護するためのシステム３００の例示的な構造図形を示す。この例示では、図形は、図２に示されたコンピュータ装置２００等の例示的なコンピュータ装置の構成を表す。この例は図２のコンピュータ装置２００に関して記載されているが、任意の適切なコンピュータ装置が使用されてもよい。この例示では、ソフトウェアアプリケーション３１０、３１２は、セキュアパーティション３３５に保存されたデータファイルにアクセスし且つ操作しようとする。
【００２９】
システム３００は、コンピュータ装置内で実行される信頼できない装置におけるデータを保護するためのサブシステム３４０を含む。システム３００は、サブシステム３４０と共に１つ以上のソフトウェアアプリケーション３１０、３１２、オペレーティングシステム３３０及びセキュアパーティション３６０を含む。サブシステム３４０は、監視ソフトウェア３４２、アクセスルールデータストア３４４、監査ログ３４５、セキュリティソフトウェア３４６、及びファイル同期ソフトウェア３４８を含む。
【００３０】
ソフトウェアアプリケーション３１０、３１２は、コンピュータ装置２００によって実行され、コンピュータ装置２００に保存されたデータファイルにアクセスするように構成される。例えば、ソフトウェアアプリケーション３１０がワードプロセッシングアプリケーションである場合、ソフトウェアアプリケーション３１０はユーザがコンピュータ装置におけるドキュメントを作成、修正及び保存することを可能にする。そうするために、ソフトウェアアプリケーション３１０は、記憶媒体におけるデータファイルを作成、修正及び保存するためにＯＳのＡＰＩ関数等を呼び出すためにオペレーティングシステム３３０と相互作用する。ソフトウェアアプリケーション３１０がＯＳのＡＰＩ関数を呼び出すと、関数は、オペレーティングシステムの「実行」ブロック３３４として示されるオペレーティングシステムによって後で実行するためのＯＳのコマンドキュー３３２にコマンドを挿入する。実行ブロック３３４がコマンドを実行すると、ファイルを開く又はファイルへの変更を保存する等、データファイルを操作するために記憶媒体にアクセスしてもよい。
【００３１】
サブシステム３４０は、セキュアパーティション３６０へのアクセスを管理するためにオペレーティングシステムと並行して動作する。この例示では、上記のように、コンピュータ装置が最初に電力投入されるか又はブートされると、コンピュータ装置２００は、オペレーティングシステム３３０を立ち上げると共に、監視ソフトウェア３４２及びセキュリティソフトウェア３４６を含むサブシステム３４０も立ち上げる。この例示では、セキュリティソフトウェア３４６は、まだ存在してい場合、セキュアパーティション３６０を作成するように構成される。一例では、セキュリティソフトウェア３４６は、セキュアパーティション３６０のために記憶装置に関するパーティションテーブルに新しいエントリを生成し、暗号化パーティションを生成する。
【００３２】
セキュアパーティション３６０が既に存在している場合、セキュリティソフトウェアは、オペレーティングシステム３３０にアクセスできるようにセキュアパーティション３６０にアクセスしてマウントする。
【００３３】
この例示の検討はオペレーティングシステムに言及しているが、他の例示はオペレーティングシステム以外のアプリケーション環境を利用してもよい。一例は、基本となるオペレーティングシステムの上で実行されるアプリケーションサーバ環境を使用する。このような例では、監視ソフトウェア３４２は、その代わりに、オペレーティングシステムではなくアプリケーションサーバ環境に対してコマンドキューを監視してもよい。一部の例では、監視ソフトウェア３４２は、アプリケーションサーバ環境に関するコマンドキュー及びオペレーティングシステムに関するコマンドキューを監視してもよい。
【００３４】
コンピュータシステムで実行される１つ以上の仮想マシン等、実行環境の更なるレイヤ化又は実行環境の並列実行も考えられる。このような例では、各仮想マシンは、異なるオペレーティングシステム及び監視ソフトウェアを実行してもよい。一部の例では、監視ソフトウェアは、基本となるオペレーティングシステムソフトウェアと仮想マシンの相互作用の各々を監視してもよい。
【００３５】
この例示では、セキュアパーティション３６０は、コンピュータ装置２００内の記憶媒体２５０で確立される専用パーティションである。セキュアパーティション３６０は、ディスクパーティション化機能、例えば、「ｆｄｉｓｋ」を使用して記憶媒体に対して最初に構築されている。更に、セキュリティシステム３４６は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）又はＴｗｏｆｉｓｈ機構等の鍵型暗号化を使用してセキュアパーティションを暗号化するように構成される。一部の例では、同じデータに連続して適用されるＡＥＳ、Ｔｗｏｆｉｓｈ及びＳｅｒｐｅｎｔ機構等の複数の暗号化機構がカスケード式に利用されてもよい。従って、セキュアパーティション３６０にデータが保存される場合、それは暗号化フォーマットで保存される。後で、ソフトウェアアプリケーションが暗号化ファイルへのアクセスを要求するとき、暗号化バージョンのファイルがソフトウェアアプリケーションに提供される。
【００３６】
セキュリティソフトウェア３４６は、セキュアパーティション３６０上の暗号化データへのアクセスを制御し、アクセスルールデータストア３４４内のルールを保持及び更新するように構成される。この例示では、装置２００がブートした後で、ユーザはユーザ名及びパスワード等の認証情報をセキュリティソフトウェア３４６に提供することを求められる。生成されたアクセスコードを使用する２要素認証等の他のタイプの認証が使用されてもよい。ユーザが許容できる認証情報を提供した後で、セキュリティソフトウェア３４６はセキュアパーティション３６０をマウントして、セキュアパーティション３６０上のデータにアクセスするために暗号鍵を取得するためにリモートサーバ３５０へのアクセスを試行する。例えば、コンピュータ装置２００は、会社のドキュメントレポジトリ内のファイルにアクセスするために会社の従業員によって使用されるラップトップであってもよい。
【００３７】
次に、セキュリティソフトウェア３４６は、暗号鍵を取得するために会社のサーバ３５０へのアクセスを試行する。この例示では、セキュリティソフトウェア３４６が会社のサーバ３５０と接続すると、セキュリティソフトウェア３４６はユーザのアクセス認証情報をサーバ３５０に提供する。次に、サーバ３５０は、セキュリティソフトウェア３４６によって使用される暗号鍵にアクセスするか又は生成する。一例では、サーバ３５０は、５０４ビット鍵を生成し、鍵をハッシュし、ハッシュされた鍵をコンピュータ装置２００に送信する。セキュリティソフトウェア３４６がサーバ３５０にアクセスできない場合、それは既存の有効な暗号鍵を有するかどうかを決定してもよい。例えば、暗号鍵は、セキュリティソフトウェア３４６によって無効にされる期限が切れる前に、４８時間等の所定期間の間使用可能であってもよい。
【００３８】
この例示では、セキュリティソフトウェア３４６は、無効にする前に最大で４８時間まで暗号鍵を保持するように構成される。しかしながら、更に、セキュリティソフトウェアは４時間ごとにサーバ３５０から新しい鍵を要求するようにも構成される。新しい鍵を取得すると、セキュアパーティションは新しい鍵を使用して再暗号化され、これは結果として古い鍵を無効にする。４８期間を再開することに加えて、４時間ごとに新しい鍵を使用する効果は、不正なエンティティによって危険に晒された以前の鍵を有していた装置を再びセキュアにするのに役立ち得るということである。しかし、コンピュータ装置２００がサーバ３５０と通信したままである限り、そして承認されたユーザがセキュリティソフトウェアにログインされている限り、セキュアパーティション３６０に保存されている（ユーザに承認された）データファイルに無期限のアクセスを有するであろう。しかしながら、コンピュータ装置２００がサーバ３５０から切断されると、ユーザはデータファイルへのアクセスを失う前に最大で４８時間までセキュアパーティションにアクセスし続けてもよい。こうした期間は単なる例として提供されているのであって、異なる鍵リフレッシュ及び鍵満了期間が確立され得ることも明白である。一部の例では、異なるタイプのファイルは、異なる鍵リフレッシュ又は鍵満了期間を有してもよい。例えば、高機密ドキュメントは、低機密ドキュメントよりも短い鍵満了期間を有してもよい。一部の例では、各ドキュメントは、それ自体の関連する鍵リフレッシュ又は満了期間を有してもよい。
【００３９】
更に、セキュリティソフトウェア３４６はユーザに対するアクセスルールの更新をチェックし、何か見つかれば、アクセスルールをダウンロードしてアクセスルールデータストア３４４に保存する。アクセスルールは、ユーザ固有、装置固有、ファイル固有、アプリケーション固有又はデータファイルへのアクセスを制御するように定義され得る他のタイプのルールを含んでもよい。例えば、ユーザは会社のファイルレポジトリ内で利用可能な所定のファイルへのアクセスのみを有していてもよく、一組のユーザルールは、ユーザがセキュアパーティション３６０に保存されたデータファイルを開くか又は他のやり方でアクセスするための許可を有しているかどうかを示す情報を含んでもよい。従って、ユーザがデータファイルを開こうとするとき、監視ソフトウェア３４２は、アクセスルール３４４をチェックし、ユーザ及びデータファイルに関係付けられるルールを識別し、コマンドキューからコマンドを削除することによりファイルを「開く」コマンドが実行されることを防ぐ。また、この例示では、監視ソフトウェア３４２は、許可されなかったコマンド及びコマンドを試行したユーザ、試行の日時、ファイル名又はパス等の他の関連情報を示すために監査ログ３４５にエントリを追加する。監査ログ３４５は、サーバ３５０に送信されてもよく、又はサーバ３５０によって要求されてもよい。例えば、監査ログ３４５は、サーバ３５０に毎日送信されてもよい。一部の例では、監査ログ３４５はサーバ３５０に保存されてもよく、コンピュータ装置２００はログ３４５へのエントリのためにサーバ３５０に監査ログメッセージを送信してもよい。
【００４０】
一部の例では、アクセスルールは、データストア内のレコードとして保存されてもよい。例えば、アクセスルールに対する適切な例示のレコードは、以下の情報を含んでもよい。
【００４１】
【表１】
0006263675.tif 000002
【００４２】
このようなアクセスルールは、“ｊｓｍｉｔｈ”というユーザ、及び“ｄｏｃｓ”ディレクトリにおけるセキュアパーティション（“／ｓｅｃｕｒｅ”）内に保存されている“ｄｏｃｕｍｅｎｔ．ｄｏｃ”という識別ファイルに関連する。この例示では、ルールは、このドキュメント及びこのユーザに許可されている「コピー」アクションに特有のものである。従って、監視ソフトウェアが“ｄｏｃｕｍｅｎｔ．ｄｏｃ”ファイル及び“ｊｓｍｉｔｈ”に関係付けられるプロセスＩＤによって試行されている「コピー」アクションを検出すると、システムは、アクセスルールにアクセスし、ユーザ、ファイル及びアクションに関係付けられるルールを見つけ、且つルールに従ってアクションを許可するべきかどうかを決定する。
【００４３】
上記のレコードは、例示として提供されているのであって、このようなレコード（又は複数のレコード）の全ての変形を示したり又は異なる態様によるレコード内に保存される情報の網羅的な又は必要なリストであることを意図していない。
【００４４】
１つ以上のレコードは、サーバ３５０から取得されてもよく、又はサーバ３５０から取得された情報に基づいてコンピュータ装置２００において作成され且つ保存されてもよい。
【００４５】
この例示では、サブシステム３４０はファイル同期ソフトウェア３４８を含む。ファイル同期ソフトウェア３４８は、図３においてドキュメント記憶装置３５２として示されたドキュメントレポジトリ（又は複数のレポジトリ）から１つ以上のデータファイルを取得し、それに変更された又は新しいファイルをプッシュするように構成される。例えば、会社は、ドキュメントを編集し、印刷し、Ｅメールし又は他のやり方で使用するために、ユーザが新しいドキュメントを作成し且つレポジトリの中に又はレポジトリからドキュメントをチェックすることを可能にする企業ドキュメントレポジトリを保持してもよい。ユーザがリモートでドキュメントレポジトリに利用可能なドキュメントにアクセスできるようにするために、ドキュメントレポジトリは、仮想プライベートネットワーク（“ＶＰＮ”）等を介してドキュメントレポジトリに直接アクセスを提供してもよい。しかしながら、本開示の例によれば、ファイル同期ソフトウェア３４８は、ドキュメント記憶装置３５２からドキュメントを取得して、コンピュータ装置上のセキュアパーティション３６０内のドキュメントのローカルコピーを保存してもよい。更に、ファイル同期ソフトウェア３４８は、新しい又は修正されたドキュメントをドキュメント記憶装置３５２にプッシュしてもよい。一部の例では、ファイル同期ソフトウェア３４８又はサブシステム３４０の他の態様は、ドキュメント記憶装置３４８に関してチェックイン／チェックアウト機能を提供してもよく、これは別のユーザが同じドキュメントを同時に開いて編集せずにユーザがドキュメントを開いて編集することを可能にしてもよい。
【００４６】
ファイル同期ソフトウェア３４８は、ドキュメント記憶装置３５２から１つ以上の組のドキュメントを取得してもよい。次に、ファイル同期ソフトウェア３４８は、１つ以上の組のドキュメントを解析して、セキュアパーティションに存在しないドキュメントを識別する。何らかの見つからないドキュメントを識別した後で、ファイル同期ソフトウェア３４８は、見つからないドキュメントのコピーを取得して、セキュアパーティション３６０内に保存する。一部の例では、ファイル同期ソフトウェア３４８は、セキュアパーティション３６０に保存されたドキュメントがドキュメント記憶装置３５２に記憶されたバージョンとは異なるかどうかを決定する。
【００４７】
例えば、ファイル同期ソフトウェア３４８は、セキュアパーティション上の１つ以上のドキュメントのハッシュ値を生成してドキュメント記憶装置３５２において対応するドキュメントと比較してもよい。セキュアパーティション上のファイルのハッシュ値がドキュメント記憶装置３５２におけるバージョンとは異なる場合、ファイル同期ソフトウェア３４８は、セキュアパーティションからドキュメント記憶装置３５２にドキュメントのコピーをプッシュするかどうか、又はドキュメント記憶装置３５２からドキュメントのコピーを取得してセキュアパーティション３６０上のコピーを置換するかどうかを決定する。このような決定を行うために、ファイル同期ソフトウェア３４８は、セキュアパーティション上のファイルの最も最近の修正の日付又は時間をドキュメント記憶装置３５２内のファイルの最も最近の修正の日付又は時間と比較してもよい。次に、ファイル同期ソフトウェア３４８は、最も最近修正されたバージョンを他の場所にコピーしてもよい（例えば、最近修正されたバージョンをセキュアパーティションからドキュメント記憶装置にコピーする）。一部の例では、上記のように、ファイル同期ソフトウェア３４８（又はサブシステム３４０）は、ドキュメント記憶装置３５２からドキュメントをチェックアウトするように構成されてもよい。後でドキュメントにチェックインするとき、ファイル同期ソフトウェア３４８は、ドキュメント記憶装置３５２における当時存在したコピーを置換するためにそのバージョンをセキュアパーティションからドキュメント記憶装置３５２にコピーしてもよい。
【００４８】
しかしながら、一部の例では、サブシステム３４０は、ドキュメント記憶装置３５２からドキュメントをチェックアウトできなくてもよい。従って、別のユーザがドキュメント記憶装置における同じドキュメントのコピーを編集するのと同時にコンピュータ装置のユーザ２００がセキュアパーティション３６０上のドキュメントのコピーを編集することが可能である。このような場合、ファイル同期ソフトウェア３４８は、２つのバージョンのドキュメントが「フォーク（ｆｏｒｋ）」したことを決定してもよく、従って、ファイル同期ソフトウェア３４８は、ドキュメント記憶装置３５２における新しいドキュメントとしてセキュアパーティション３６０からドキュメント記憶装置にファイルをコピーしてもよい。「フォーク」することは、単に、同じソースドキュメントから２つ（以上）の異なるドキュメントを生成することを意味する。一部の例では、ファイル同期ソフトウェア３４８又はサブシステム３４０は、新しい「フォーク」したドキュメントが元のドキュメントに関連することの指示を記憶してもよい。
【００４９】
次に図４を参照すると、図４は信頼できない装置においてデータを保護するための例示の方法４００を示す。図４の方法４００は、図２に示されたコンピュータ装置２００及び図３に示された例示的なシステム３００に関して記載される。しかしながら、例示的な方法は、このようなコンピュータ装置２００又はこのような例示的なシステム３００に限定されない。  むしろ、任意の適切な装置又はシステムが利用されてもよい。この例示では、方法４００はブロック４１０で開始する。
【００５０】
ブロック４１０において、セキュリティソフトウェア３４６は、セキュアパーティション３６０に対する暗号鍵を取得する。セキュアパーティションが存在しない場合、セキュリティソフトウェア３４６は、セキュアパーティション３６０として使用される新しいパーティションを記憶媒体２５０上に作成する。一部の態様では、暗号鍵を取得するために、セキュリティソフトウェア３４６は、既知の鍵サーバのネットワークアドレスに関係付けられるレコードにアクセスして、暗号鍵に対する要求を１つ以上の鍵サーバに送信する。一部の態様では、セキュリティソフトウェア３４６は、暗号鍵に対する特定の要求ではなく、コンピュータ装置２００が動作していることを示すために、サーバ３５０等のサーバに「ハートビート」又は他のメッセージを送信してもよい。コンピュータ装置２００からの要求に応答して、又は異なるメッセージ又はデータを受信することに応答して、鍵サーバ（又は他のサーバ）は、暗号鍵を生成して装置に送信する。一部の態様では、鍵サーバは、暗号鍵に関する、有効生存期間（ｔｉｍｅ−ｔｏ−ｌｉｖｅ）又は有効期限若しくは時間を示す構成情報も提供する。一部の態様では、コンピュータ装置２００は、１つ以上の暗号鍵と共に使用される有効生存期間パラメータを事前設定されていてもよく、又はユーザ若しくは管理者から有効生存期間パラメータを取得してもよい。
【００５１】
一部の態様では、複数のユーザに関係付けられるファイルは、各ユーザに関係付けられるユーザ自身の暗号鍵を有してもよく、上記のようにリフレッシュされてもよい。例えば、セキュリティソフトウェア３４８は、ユーザごとに暗号鍵を保持してもよく、ユーザの１人以上の集合又はグループに対する暗号鍵を保持してもよい。一部の例では、このような集合又はグループは、複数のユーザが同じ１つの又は複数のファイルへのアクセスを取得するときに動的に決定されてもよい。２人以上のユーザが同じファイルにアクセスし得ることを決定すること等により、新しい集合又はグループが確立されると、セキュリティソフトウェア３４８は、集合に対する暗号鍵を要求し、以下でより詳細に検討されるように、新しい鍵に対する１つ以上のタイマ又は有効時間を別々に保持してもよい。
【００５２】
一部の態様では、サーバ３５０は、暗号鍵をコンピュータ装置２００に送信する前に、ＳＨＡ−１、ＳＨＡ−２又はＳＨＡ−３等の暗号学的ハッシュ関数を使用して暗号鍵を暗号化する。
【００５３】
暗号鍵を取得した後で、方法４００はブロック４２０に進む。
【００５４】
ブロック４２０において、セキュリティソフトウェア３４８は、取得した暗号鍵を使用してセキュアパーティションを暗号化する。この例示では、セキュリティソフトウェア３４８は、ＡＥＳ、ＴｗｏＦｉｓｈ及びＳｅｒｐｅｎｔ機構を含むカスケード式暗号化機構を利用するために暗号鍵を使用し、ＸＴＳ（ＸＥＸ（ＸＯＲ−ｅｎｃｒｙｐｔ−ＸＯＲ）−ｂａｓｅｄ  ｔｗｅａｋｅｄ−ｃｏｄｅｂｏｏｋ  ｍｏｄｅ  ｗｉｔｈ  ｃｉｐｈｅｒｔｅｘｔ  ｓｔｅａｌｉｎｇ）方式を使用する。他の例では、暗号鍵は、セキュアパーティションを暗号化するための他の適切な暗号方式が使用されてもよい。一部の例では、コンピュータ装置２００は、マイクロソフトのＥｎｃｒｙｐｔｉｎｇ  Ｆｉｌｅ  Ｓｙｓｔｅｍ等の１つ以上の暗号化ファイルシステムをサポートし且つ使用するように構成されるＯＳを利用してもよい。  更に、セキュアパーティションがマウントされていない場合、セキュリティソフトウェア３４６は、セキュアパーティションをコンピュータ装置のファイルシステムにマウントしてもよく、又は後の時間になるまでマウントするのを延期してもよい。
【００５５】
一部の例では、セキュリティソフトウェア３４６は、異なる暗号鍵を使用してセキュアパーティション３６０の異なる部分の暗号化を生成してもよい。例えば、複数の異なるユーザが異なる時間にコンピュータ装置にアクセスし得る場合、セキュリティソフトウェア３４６は、暗号鍵を使用してアクティブユーザのファイルを暗号化してもよいが、そのカギを使用して他のユーザのファイルを暗号化しなくてもよい。従って、各ユーザは、同時にアクティブになり得る又は互いから独立して満了し得る自身の暗号鍵（又は複数の暗号鍵）を有してもよく、各ユーザのファイルはユーザ自身の暗号鍵を使用して暗号化されてもよい。
【００５６】
例えば、２人のユーザが、コンピュータ装置２００にアクセスしてもよい。コンピュータ装置２００は、ユーザがファイルにアクセスするためにセキュアパーティション３６０上の異なるサブディレクトリ構造に各ユーザを割り当ててもよい。第１のユーザがコンピュータ装置２００にログインすると、コンピュータ装置２００は、暗号鍵を取得して、新しい暗号鍵を使用して第１のユーザのファイルを暗号化するが、セキュアパーティション上の他のファイルは処理しない。第１のユーザが仕事をするとき、暗号鍵は上記のように周期的にリフレッシュされてもよい。後で、第１のユーザがログオフすると、セキュリティソフトウェア３４８は、それが満了するまでユーザの暗号鍵を保持する。そうしている間に第２のユーザがログインする。コンピュータ装置２００は、第２の暗号鍵を取得して、第２のユーザのファイルを暗号化する。この場合も先と同様に、第２のユーザが仕事をするとき、暗号鍵は上記のように周期的にリフレッシュされてもよい。後になって第２のユーザがログオフして、第１のユーザが再びログインする。コンピュータ装置は、第１のユーザに関係付けられる暗号鍵が有効なままであるかどうかを決定する。そうであれば、それはセキュアパーティション３６０上のユーザのファイルへのアクセスを可能にする。有効ではない場合、セキュリティソフトウェア３４６は、新しい暗号鍵を要求して、その新しい暗号鍵を使用してユーザのファイルを暗号化する。異なる例は、１人以上のユーザによってこのような暗号方式を使用してもよい。
【００５７】
セキュアパーティションが暗号化された後で、方法はブロック４３０に進む。
【００５８】
ブロック４３０において、ファイル同期ソフトウェア３４８は、セキュアパーティションに保存されたファイルをドキュメント記憶装置３５２に記憶されたファイルと同期する。この例示では、ファイル同期ソフトウェア３４８は、セキュアパーティション３６０とドキュメント記憶装置３５２との間で同期するファイルを示すレコードを保持する。例えば、ファイル同期ソフトウェア３４８は、ユーザが過去３０日（又は他の事前設定若しくはユーザ設定可能な期間）の間にドキュメント記憶装置３５２にアクセスした全てのドキュメントのリストをドキュメント記憶装置３５２から受信し、コンピュータ装置２００上でユーザによって作成された新しいドキュメントに関するエントリをリストに追加してもよい。
【００５９】
セキュアパーティション３６０とドキュメント記憶装置３５２との間で１つ以上のファイルを同期するために、ファイル同期ソフトウェア３４８は、ドキュメント記憶装置３５２に記憶されていないセキュアパーティション３６０上に記憶された１つ以上のファイルを識別して、こうした１つ以上のファイルをドキュメント記憶装置３５２にコピーしてもよい。また、ファイル同期ソフトウェア３４８は、セキュアパーティション３６０内に存在しないドキュメント記憶装置３５２に記憶された１つ以上のファイルを識別し、ドキュメント記憶装置３５２から１つ以上のファイルのコピーを取得してセキュアパーティション３６０に保存してもよい。また、ファイル同期ソフトウェア３４８は、セキュアパーティション３６０及びドキュメント記憶装置３５２の両方に保存されたファイルのバージョンを解析して、異なるバージョンのファイルが各場所に保存されている場合を決定してもよい。次に、ファイル同期ソフトウェア３４８は、どのバージョンがより最近であるかを決定して、古いバージョンを新しいバージョンのファイルで上書きしようとしてもよい。一部の例では、ファイル同期ソフトウェア３４８は、古いバージョンのファイルを新しいバージョンで上書きしなくてもよいが、代わりに両方のバージョンを保持して同期してもよい。例えば、コンピュータ装置２００のユーザがセキュアパーティション３６０におけるドキュメントを編集する場合、ファイル同期ソフトウェア３４８は、編集されたドキュメントをドキュメント記憶装置３５２にコピーして、それが以前のドキュメントの新しいバージョンとして記憶されることを示してもよい。
【００６０】
一部の例では、ファイル同期ソフトウェア３４８は、単一のサブディレクトリ又はサブディレクトリのグループ等のセキュアパーティションの一部だけを同期するように構成されてもよい。例えば、コンピュータ装置２００を利用する各ユーザは、同期されたファイルが保持されるサブディレクトリを割り当てられ且つ指定されてもよい。従って、ファイル同期ソフトウェア３４８は、コンピュータ装置２００にログインしているユーザに関するファイルのみを同期してもよい。このような特徴は、セキュアパーティション３６０をドキュメント記憶装置３５２と同期するためにプロセス及び帯域幅要求を減らし得る。
【００６１】
セキュアパーティションの同期が開始された後で、方法４００はブロック４４０に進む。
【００６２】
ブロック４４０において、セキュリティソフトウェア３４８は、セキュアパーティション３６０へのアクセスを可能にする。例えば、セキュリティソフトウェア３４８は、アクセスを可能にするためにセキュアパーティション３６０をマウントしてもよい。一部の態様では、セキュリティソフトウェア３４８は、セキュアパーティション３６０内に保存された１つ以上のファイルに対応するアイコン又は他のグラフィカル要素を提供するグラフィカルユーザインターフェースを提供してもよい。一部の態様では、セキュリティソフトウェア３４８は、一旦マウントされると、セキュアパーティション３６０へのアクセスを有効にするために何らかの肯定ステップを取る必要がなくてもよい。
【００６３】
セキュリティソフトウェア３４８がセキュアパーティション３６０へのアクセスを可能にした後で、方法４００はブロック４５０に進む。
【００６４】
ブロック４５０において、セキュリティソフトウェア３４８は、１つ以上の暗号鍵をリフレッシュするかどうかを決定する。この例では、セキュリティソフトウェア３４８は、暗号鍵の満了に関係付けられる１つ以上の期間を識別する。例えば、暗号鍵は、それに関係付けられる２つの期間、リフレッシュ期間及び満了期間を有してもよい。セキュリティソフトウェア３４８は、暗号鍵に対する開始時間を決定してもよく、これは鍵が取得された時間、鍵が最初に使用された時間、セキュアパーティションが暗号化された時間、又は何らかの他の時間に基づいてもよい。次に、セキュリティソフトウェア３４８は、経過時間を決定して、経過時間を２つの期間と比較する。何れの時間も経過していない場合、リフレッシュは不要であり、方法はブロック４４０に戻り、ユーザはセキュアパーティション３６０にアクセスし続けてもよい。リフレッシュ期間が経過したか又は満了期間が経過した場合、方法４００は、以下でより詳細に記載されるブロック４５０に進む。場合によっては、リフレッシュタイマが実行されてもよく、セキュア装置は新しい暗号鍵を取得できず、従って、セキュリティソフトウェア３４８は満了時間もチェックしてもよい。満了時間に適合した場合、方法はブロック４５０にも進む。
【００６５】
一部の例では、鍵がアクティブになっている間に経過時間を決定するのではなく、セキュリティソフトウェア３４８は、鍵に対する１つ以上の満了時間を確立してもよい。従って、セキュリティソフトウェア３４８は、鍵が満了したか又はリフレッシュされる必要があるかどうかを決定するために（複数の）満了時間によって現在の時間をチェックし得る。例えば、セキュリティソフトウェア３４８は、鍵に関する２つの満了時間を保持してもよい。第１の満了時間がリフレッシュ時間であり、一方で第２のリフレッシュ時間が満了時間である。何れかの時間に適合するか又は超えた場合、方法４００はブロック４６０に進む。一部の例では、リフレッシュ時間は、満了時間よりも早くてもよい。
【００６６】
一部の例では、セキュリティソフトウェア３４８は、暗号鍵に対して単一のタイマのみを保持してもよく、タイマが経過するか又は適合した場合、方法４００はブロック４５０に進む。更に、一部の例では、セキュリティソフトウェア３４８は、同じコンピュータ装置２００を使用する２人のユーザを有する例において上記のように複数の暗号鍵を保持してもよい。一部のこのような例では、セキュリティソフトウェア３４８は、暗号鍵ごとに別個のリフレッシュ又は満了時間又はタイマを保持してもよく、又は全ての暗号鍵若しくは２つの組み合わせに対して単一の時間／タイマを保持してもよい。例えば、一例では、セキュリティソフトウェア３４８は、暗号鍵ごとに個別のリフレッシュ時間を保持してもよいが、全ての暗号鍵が満了する単一の満了タイマを保持してもよい。
【００６７】
上記のように、複数のユーザが、コンピュータ装置２００にアクセスしてもよい。このような例では、セキュリティソフトウェア３４８は、ユーザごとに異なる暗号鍵を保持する。第１のユーザがコンピュータ装置にログインしている場合、セキュリティソフトウェア３４８は、第１のユーザに関係付けられる暗号鍵のみをリフレッシュすることを試行してもよいが、セキュリティソフトウェア３４８は、異なるユーザに関係付けられる暗号鍵が満了しているかどうかを決定するために更にチェックしてもよく、従って、アクティブユーザの暗号鍵がリフレッシュされる必要がない場合であっても、方法はブロック４６０に進んでもよい。このような例では、（複数の）非アクティブユーザに関する暗号鍵は、セキュアパーティションの一部を暗号化するためにのみ使用されてもよく、従って、（複数の）非アクティブユーザの（複数の）暗号鍵が満了しても、アクティブユーザの暗号鍵はアクティブなままであり、アクティブユーザがセキュアパーティションにアクセスし続けることを許可してもよい。
【００６８】
暗号鍵がリフレッシュされることをセキュリティソフトウェア３４８が決定する場合、方法４００はブロック４６０に進み、そうでない場合、方法４００はブロック４４０に戻る。
【００６９】
ブロック４６０において、セキュリティソフトウェア３４８は、新しい暗号鍵を取得するために鍵サーバが利用可能であるかどうかを決定する。この例示では、セキュリティソフトウェア３４８は、サーバ３５０と通信することを試行する。セキュリティソフトウェア３４８がサーバ３５０と通信することができる場合、方法４００は、セキュリティソフトウェアが上記のように新しい暗号鍵を取得するブロック４１０に戻る。セキュリティソフトウェア３４８がサーバ３５０と通信することができない場合、セキュリティソフトウェア３４８は適切な代替の又はバックアップサーバと通信することを試行してもよい。セキュリティソフトウェア３４８がこのような適切な代替の又はバックアップサーバと通信することができる場合、方法４００は、セキュリティソフトウェア３４８が上記のように新しい暗号鍵を取得するブロック４１０に戻る。しかしながら、セキュリティソフトウェア３４８が適切なサーバと通信することができない場合、方法はブロック４７０に進む。
【００７０】
ブロック４７０において、セキュリティソフトウェア３４８は、暗号鍵が満了したかどうかを決定する。この例示では、セキュリティソフトウェア３４８は、暗号鍵に対する満了期間が経過したかどうかを決定する。上記のように、セキュリティソフトウェア３４８は、暗号鍵に対するリフレッシュ期間及び満了期間を保持する。満了期間が経過していない場合、方法はブロック４４０に戻る。しかしながら、満了期間が経過している場合、方法はブロック４７２に進む。他の例では、多くの暗号鍵の１つのみが満了していてもよい。例えば、セキュリティソフトウェア３４８が複数の異なるユーザに対して異なる暗号鍵を保持しており、アクティブユーザに対してだけ暗号鍵をリフレッシュする場合、あるユーザに対する暗号鍵がリフレッシュされる一方で、他のユーザに対する暗号鍵が満了してもよい。
【００７１】
ブロック４７２において、セキュリティソフトウェア３４８は、セキュアパーティション３６０へのアクセスを無効にする。この例示では、満了期間は、暗号鍵が非常に長期間にわたり使用されていることを示し、新しい暗号鍵が取得されていないので、セキュリティソフトウェア３４８はセキュアパーティション３６０へのアクセスを無効にする。この例示では、セキュリティソフトウェア３４８は、新しい暗号鍵が取得されるまで暗号鍵へのアクセスを無効にすることにより、及び開いているファイルを閉じることを除いてセキュアパーティションに向けられる全てのアプリケーションコマンドを拒否することにより、セキュアパーティション３６０へのアクセスを無効にする。一部の例では、セキュリティソフトウェア３４８は、新しい暗号鍵が取得されるまでそれへのアクセスを防ぐためにセキュアパーティション３６０をアンマウントしてもよい。或いは、一部の例では、複数のユーザの各々が異なる暗号鍵を有している場合、あるユーザの暗号鍵が満了し得る一方で、別のはリフレッシュされるままである。このような例では、セキュリティソフトウェア３４８は、満了した鍵に関係付けられるセキュアパーティション３６０における任意のディレクトリ又はファイルへのアクセスを無効にする。或いは、ファイルが複数のユーザに関係付けられる場合、セキュリティソフトウェア３４８は、あるユーザにファイルへのアクセスを許可しているが、ファイルに関係付けられるユーザのアクセスルールを無効にすること等によりファイルへのアクセスを妨げてもよい。アクセスルールは、図５に関連して以下により詳細に検討される。
【００７２】
セキュアパーティション３６０へのアクセスが無効にされた後で、方法は、鍵サーバとの通信を試行するためにブロック４６０に戻る。
【００７３】
上記の例示の方法４００は特定の順番に従って進行するように記載されているが、一部の態様では、ステップの順番は異なる順序で行われてもよく、又は複数のステップが同時に行われてもよい。従って、図４又は図４に示された例示の方法４００の対応する記載を検討する場合に特定のステップの順序が示唆されるべきではない。
【００７４】
次に図５を参照すると、図５は信頼できない装置においてデータを保護するための例示の方法５００を示す。図５の方法５００は、図２に示されたコンピュータ装置２００及び図３に示された例示的なシステム３００に関して記載される。しかしながら、例示的な方法は、このようなコンピュータ装置２００又はこのような例示的なシステム３００に限定されない。  むしろ、任意の適切な装置又はシステムが利用されてもよい。この例示では、方法５００はブロック５１０で開始する。
【００７５】
ブロック５１０において、監視ソフトウェア３４２はコマンドキュー３３２にアクセスする。この例示では、コンピュータ装置２００は、（単一の又は複数のスレッドプロセスを含む）他のプロセスとして実行される複数のアプリケーションが、情報の表示、ファイルへのアクセス及びコンピュータ装置２００への入力の提供等の様々な機能を行うためにＯＳによって提供されるＡＰＩ関数にアクセスすることを可能にするＯＳを実行する。アプリケーションがＡＰＩ関数を呼び出す場合、ＡＰＩ関数は、コマンドを生成して、実行するためにコマンドをＯＳのコマンドキューに挿入する。経時的に、ＯＳはキュー内のコマンドを実行し、最終的に新しく挿入されたコマンドに到達してそれを実行する。
【００７６】
図３に示された例では、監視ソフトウェア３４２は、コマンドキュー３３２にアクセスし、キュー３３２内のコマンドにアクセスする。コマンドキュー３３２にアクセスするために、監視ソフトウェア３４２は、コマンドキュー３３２を監視するために十分なアクセス権を提供されるようにＯＳのドライバレベルにおけるプロセスとして実行される。典型的にはコマンドキュー３３２は、ユーザによって実行されたソフトウェアアプリケーションがコマンドキュー３３２にアクセスするための十分な特権を有さないように実行されるが、一部の例では特別なアクセス権が要求されない場合、監視ソフトウェア３４２は追加の特権無しでコマンドキュー３３２にアクセスしてもよい。他の態様では、監視ソフトウェア３４２は、十分なアクセス権で動作するように特別に構成されなくてもよいが、監視ソフトウェア３４２にスーパーユーザ特権を提供するために“ｓｕｄｏ”等のコマンドを使用することにより、十分なアクセス権を与えるように実行されてもよい。監視ソフトウェア３４２がコマンドキュー３３２にアクセスできない場合、監視ソフトウェア３４２は、セキュリティソフトウェア３４８にメッセージを送信するか又は情報を渡してもよく、次にそれは、セキュアパーティションをアンマウントするか又は全ての暗号鍵を満了させること等によりセキュアパーティション３６０へのアクセスを無効にしてもよい。
【００７７】
監視ソフトウェア３４２がコマンドキューにアクセスした後で、方法５００はブロック５２０に進む。
【００７８】
ブロック５２０において、監視ソフトウェア３４２はコマンドキュー３３２内のコマンドを識別する。
【００７９】
次に図６を参照すると、信頼できない装置においてデータを保護するための例示のシステムが示されている。この例示では、監視ソフトウェア３４２は、監視ソフトウェア３４２がアクセスしているコマンドキュー３３２内の位置を示すためにコマンドキュー３３２へのポインタ３４３を確立する。この例示では、コマンドキュー３３２はキューであるので、コマンド６１０−６１６は最下位６０２から最上位６０１にキューに挿入された順序で実行され、従ってポインタ３４３の特定の位置に対して、監視ソフトウェア３４２は、新しいコマンドが追加されるコマンドキュー３３２の最上位６０１に向かって一方向にのみコマンドにアクセスする。一部の態様では、コマンドキューは、異なる構造を有してもよく、又は例えば、より優先度の高いコマンド、例えば、割り込みハンドラから発行されるコマンドを収容するために複数のコマンドキューを含んでもよく、又はキュー構造を含まなくてもよい。このような態様では、コマンド構造へのアクセスは、その構造に従って変化してもよいが、それに従って監視されてもよい。
【００８０】
監視ソフトウェア３４２は、最初に立ち上げられると、この例示では、コマンドキュー３３２の最下位にポインタ３４３を設定し、キュー３３２にコマンドがある場合はコマンド６１０を解析する。更に、最初に立ち上げられると、監視ソフトウェア３４２は、セキュアパーティション３６０においてコマンドの実行を試行するプロセスを記録するためのデータ構造を構築する。データ構造は、コマンドキュー３３２内のコマンドが許可されるべきかどうかを監視ソフトウェア３４２が決定することを可能にする０以上のレコードを含む。コマンドを識別するために、監視ソフトウェア３４２は、ポインタ３４３によって指定されているコマンド読み込み、コマンドのプロセスＩＤを識別する。次に監視ソフトウェア３４２は、プロセスＩＤに関するデータ構造を検索する。プロセスＩＤが見つかれば、コマンドは識別され、方法５００はブロック５３０に進む。しかしながら、一部の態様では、監視ソフトウェア３４２は、セキュリティソフトウェア３４８又はファイル同期ソフトウェア３４６等、監視を免除されているプロセスＩＤを識別するレコードも保持してもよい。免除されるプロセスＩＤが識別される場合、監視ソフトウェア３４２は、ポインタ３４３をコマンドキュー３３２内の次のコマンド、例えば、コマンド６１１に移動させる。更に、一部の例では、データ構造内のレコードは、レコードが免除プロセスＩＤに関係付けられているかどうかについての指示を含んでもよい。例えば、ファイル同期ソフトウェア３４６は、所定の時間に免除されているが、他の時間には免除されていなくてもよい。例えば、セキュリティソフトウェア３４８は、全ての暗号鍵が満了していることを決定する場合、それが非免除であることを示すためにファイル同期ソフトウェア３４６のプロセスＩＤの状態を監視ソフトウェア３４２に変更させることにより、ファイルが同期することを防いでもよい。
【００８１】
監視ソフトウェア３４２がコマンドのプロセスＩＤに関するデータ構造においてレコードを見つけられない場合、監視ソフトウェア３４２は、パス名等のセキュアパーティション３６０に関係付けられるデータに関してコマンドを検索する。例えば、セキュアパーティションを含むパス名がコマンド内に位置している場合、監視ソフトウェア３４２はコマンドを識別し、方法５００はブロック５３０に進む。更に、監視ソフトウェア３４２はそのデータ構造に関する新しいレコードを生成して、プロセスＩＤ並びにアクセスされたファイルのパス及びファイル名等、コマンドに関係付けられる情報を記憶する。従って、将来のコマンドに対して、監視ソフトウェア３４２は、パス又はファイル名を検索するのではなくプロセスＩＤに基づいてレコードを見つけてもよい。
【００８２】
一部の態様では、コマンドキュー３３２におけるコマンドは、スクリーンショットコマンド等のセキュアパーティションに直接的に関係付けられないプロセスＩＤに関係付けられなくてもよい。このようなコマンドは、セキュアパーティションにおけるデータにアクセスしているプロセス以外のプロセスによって発行されてもよい。例えば、ユーザがセキュアパーティションに保存されているドキュメントの一部を示すワードプロセッシングプログラムスクリーンのスクリーンショットを撮ることを試行する場合、スクリーンショット機能のプロセスＩＤは、ワードプロセッシングプログラムのプロセスＩＤとは異なってもよい。しかしながら、このような場合、スクリーンショットに関するコマンドキュー３３２内のコマンドは、典型的には、スクリーンショットが撮られているアクティブウインドウによるプロセスのプロセスＩＤを含む。従って、監視ソフトウェア３４２は、別のプロセスＩＤによって参照されているプロセスＩＤに関してコマンドキュー３３２内のコマンドを検索してもよい。スクリーンショットプロセスＩＤがワードプロセッシングプログラムに関するプロセスＩＤを参照していることを監視ソフトウェア３４２が識別する場合、監視ソフトウェア３４２はコマンドを識別してもよい。
【００８３】
この例示では、監視ソフトウェア３４２は、毎ミリ秒等、事前定義されたレートでコマンドキュー３３２にアクセスし、これはユーザ又は管理者プリファレンスに従って構成され得る。しかしながら、一部の態様では、他のレートが使用されてもよく、又は他のトリガが利用されてもよい。例えば、新しいアプリケーションの起動は、コマンドキュー３３２にアクセスすることを監視ソフトウェア３４２に引き起こしてもよく、又は監視ソフトウェア３４２は、コマンドキュー３３２をチェックするために新しいコマンドがコマンドキュー３３２に入力される毎に行われる割り込み等のイベントを確立してもよい。
【００８４】
図７を次に参照すると、図７は信頼できない装置においてデータを保護するためにプロセスＩＤを記録するための例示のデータ構造を示している。データ構造７００は、コマンドキューにおけるコマンドを識別するために使用され得る０以上のレコード７１０を保存するように構成される。この例示では、各レコードは、プロセスＩＤ、ユーザＩＤ、アプリケーション、パス、及びファイル名に関するフィールドを含む。プロセスＩＤは、ＯＳによって実行されるソフトウェアアプリケーションのインスタンスに割り当てられるプロセスＩＤである。一部の例では、データ構造は、スレッドＩＤを記録してもよい。ユーザＩＤは、プロセスを「所有」するユーザに関係付けられる識別子である。殆どのＯＳにおいて、１人のユーザのみがコンピュータ装置にログインしている場合であっても、プロセスは、異なるサービス又はＯＳ自体等、異なる「ユーザ」によって立ち上げられてもよく、従って、異なるユーザＩＤを有してもよい。この例では、ユーザＩＤ「１０３」はユーザ「ｊｓｍｉｔｈ」に対応し、一方でユーザＩＤ「１００」はＯＳに対応する。「アプリケーション」フィールドは、プロセスＩＤに関係付けられるアプリケーションの名前である。「パス」フィールドは、対応するプロセスＩＤによってアクセスされているドキュメントのパスであり、「ファイル名」フィールドは、対応するプロセスＩＤによってアクセスされているドキュメントの名前である。この例示では、監視ソフトウェア３４２によって識別されている５つのプロセスが有り、４つはユーザＩＤ「１０３」によって立ち上げられており、１つは（ユーザＩＤ「１００」を有する）ＯＳによって立ち上げられている。従って、監視ソフトウェア３４２は、コマンドキュー３３２内のコマンドを解析するとき、それがセキュアパーティションに関連するのでコマンドが識別されるべきかどうかを決定するためにデータ構造７００をチェックすることができる。
【００８５】
この例示では、データ構造７００はレコードのソートされていない連結リストとして記憶されてもよいが、一部の例では、異なるタイプのデータ構造が使用されてもよい。例えば、ハッシュテーブル、リレーショナルデータベース、オブジェクトデータベース、ソートされたリスト、又は他の適切なデータ構造が使用されてもよい。
【００８６】
監視ソフトウェア３４２がセキュアパーティションに関係付けられるデータを見つけられない場合、監視ソフトウェアは、ポインタ３４３をコマンドキュー３３２内の次のコマンドに移動させる。次に、監視ソフトウェアは、次のコマンド６１１が識別されるべきかどうかを決定するために処理を再び繰り返す。
【００８７】
監視ソフトウェア３４２がコマンドを識別した後で、方法５００はブロック５３０に進む。方法５００はブロック５３０に進んでもよいが、次のコマンド、例えば、コマンド６１１に関してブロック５２０における機能を実質的に同時に行ってもよいことに留意されたい。例えば、一部の例では、監視ソフトウェア３４２は方法の残りのステップ５３０、５４０、５４２、５５０、５６０を行うために新しいスレッドを作成してもよく、監視ソフトウェアのメインスレッドはコマンドキュー内の次のコマンドに移動する。
【００８８】
ブロック５３０において、監視ソフトウェア３４２はアクセスルール３４４にアクセスする。この例示では、アクセスルール３４４はデータストアに記憶され、これはデータベース、メモリ内データ構造又はアクセスルール３４４を保持するための他の適切な構造であってもよい。この例示では、監視ソフトウェア３４２は、最初に、識別されたコマンドに関係付けられるパス及びファイル名を識別する。例えば、ブロック５２０に関して先に検討されたように、監視ソフトウェア３４２は、セキュアパーティション３６０に関係付けられるプロセスＩＤを記録するデータ構造を保持する。監視ソフトウェア３４２は、プロセスＩＤに関係付けられるファイル名にアクセスし且つ取得して、ファイル名に関係付けられる１つ以上のアクセスルールに関してアクセスルールを検索する。一例では、アクセスルール３４４はリレーショナルデータベースに記憶され、監視ソフトウェア３４２は、レコード内のファイル名が監視ソフトウェアのデータ構造内のレコードからのファイル名に一致する任意のレコードに対するＳＱＬ（ｓｅａｒｃｈ  ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）クエリを生成する。
【００８９】
複数のレコードが返される場合、識別されたコマンドに関係付けられるユーザＩＤに関係付けられる任意のものを識別するために返されたレコードを検索する。例えば、複数のユーザが、同じファイルに対して異なるアクセスルールを有してもよい。従って、監視ソフトウェア３４２は、ファイル及びユーザの双方に対して適切なアクセスルールを識別しなくてはならない。一部の例では、同じユーザに関する異なるアプリケーションに対して異なるアクセスルールが存在してもよい。このような場合、監視ソフトウェア３４２は、ファイル、ユーザ、及び識別されたコマンドに関係付けられるアプリケーションに関係付けられるレコードを識別するために返されたレコードを更に洗練してもよい。一部の例では、適用するアクセスルールを識別するために他の基準が利用されてもよい。
【００９０】
一部の例では、複数のアクセスルールがコマンドに等しく適用可能であることが起こり得る。このような例では、監視ソフトウェア３４２は、識別されたコマンドに対して最も制限的なルールを有するアクセスルールを使用する。例えば、識別されたコマンドが「印刷」コマンドであり、２つのアクセスルールの両方がアプリケーションであるが、一方が印刷を禁止し、他方が印刷を許可している場合、監視ソフトウェア３４２は、識別されたコマンドに対してアクセスルールを比較して、ルールが対立する場合、コマンドを禁止するアクセスルールを選択する。しかしながら、一部の例では、監視ソフトウェア３４２は、複数のアクセスルールの相対年齢を決定して、最も新しいアクセスルールを選択することが可能であり、これは最近のアクセスルールの変化を反映するか、又は過去のルールに対する例外を表してもよい。
【００９１】
一部の例では、管理者又は他のユーザは、監視ソフトウェア３４２が２つ以上のアクセスルール間の対立をどのように取り扱うかを構成し得る。例えば、管理者は、実行されるコマンドに基づいて対立解消ルールを確立してもよい。一例では、管理者は、最も制限的なアクセスルールを選択するために、コマンド「移動」、「コピー」、「貼り付け」、「名前の変更」、「名前を付けて保存」、「上書き保存」、及び「Ｅメール」に対する対立を解消するように監視ソフトウェア３４２を構成してもよく、一方でコマンド「開く」及び「印刷」は最も制限的でないアクセスルールを利用してもよい。このような対立解消スキームは、ユーザがドキュメントを開いて閲覧することを可能にするが、それを編集すること又はセキュアパーティションからファイルを移動することを許可しなくてもよい。即ち、このような対立解消スキームは、何らかの読み出し専用アクセスをファイルに提供してもよい。
【００９２】
一部の態様では、アクセスルール３４４は、デフォルトルール及びユーザ固有ルールを含んでもよい。従って、コマンドに対するルールの検索は、常に２つのアクセスルール、デフォルトルール及びユーザ固有ルールを返してもよい。このような場合、監視ソフトウェア３４２は、存在する場合、ユーザ固有ルールを常に使用し、そうでなければデフォルトルールを使用してもよい。代替的に、ファイルに対するアクセスルールが見つからない場合、監視ソフトウェア３４２は、もし存在すれば、デフォルトルールを検索して適用するか、又はアクセスルールが見つからない場合は単純に全てのコマンドを拒絶してもよい。
【００９３】
一部の例では、監視ソフトウェア３４２は、アクセスルールに直接的にアクセスしなくてもよいが、代わりに、識別されたコマンドが許可されるかどうかを決定する、アクセスルールプロセス等の別のプロセスにメッセージを送信してもよい。例えば、監視ソフトウェア３４２は、コマンドを識別して、コマンドの少なくとも一部を含むメッセージを第２のプロセスに送信してもよい。次に、第２のプロセスは、メッセージの受信に応じて、識別されたコマンドに関係付けられるアクセスルールを識別するためにアクセスルールデータストアにアクセスする。
【００９４】
監視ソフトウェア３４２が識別されたコマンドに関係付けられるアクセスルールを識別した後で、方法５００はブロック５４０に進む。
【００９５】
ブロック５４０において、監視ソフトウェア３４２は、識別されたルールによって識別されたコマンドが実行されることが許可されるかどうかを決定する。コマンドが許可されるかどうかを決定するために、監視ソフトウェア３４２は、識別されたコマンドに関係付けられる許可を有する識別されたルール内のフィールドを識別する。例えば、識別されたコマンドが「開く」コマンドである場合、監視ソフトウェア３４２は、「開く」コマンドに関する許可に対応する識別されたルール内のフィールドを識別する。この例示では、許可を有するフィールドはバイナリ値を有している。即ち、コマンドの許可又は不許可であってもよい。しかしながら、一部の例では、１つ以上のフィールドが異なる種類の値を有してもよい。例えば、フィールドは、所定の回数だけ特定の動作を許可してもよい。例えば、ユーザは最大で５回までファイルを開くことを許可されてもよい。一部の例では、アクセスルールフィールドは、コマンドがフィールドに記憶されている日付又は時間より前に（又はその日付又は時間で）行われ得るが、日付又は時間の後に許可されないように日付又は時間を含んでもよい。更なる変形も可能であってもよい。
【００９６】
一部の例では、上記のように、監視ソフトウェア３４２がコマンドが許可されるかどうかを決定するために第２のプロセスと通信する場合、第２のプロセスは、コマンドが許可されるかどうかを示す応答を生成して監視ソフトウェア３４２に送信してもよい。例えば、第２のプロセスは、監視ソフトウェアから受信したメッセージに対応する値を含む応答メッセージを生成してもよい。これは、識別されたコマンドのプロセスＩＤを含み、コマンドが許可されるかどうかを示す値を含んでもよい。次に、第２のプロセスは、監視ソフトウェア３４２に応答メッセージを送信してもよい。
【００９７】
識別されたコマンドが許可されることを監視ソフトウェア３４２が決定する場合、方法５００はブロック５４２に進む。
【００９８】
ブロック５４２において、監視ソフトウェア３４２は、識別されたコマンドに関して更なるアクションを取らない。この例示では、監視ソフトウェア３４２は、アクセスルールに少なくとも部分的に基づいて識別されたコマンドが許可されることを決定しており、従って、ＯＳによってコマンドが実行されることを許可する。一部の例では、監視ソフトウェア３４２は、識別されたコマンドが検出されたこと、対応するルールが識別されたこと、及び識別されたコマンドが許可されたことを示すエントリを監査ログ３４５に生成してもよい。先に検討された例等の一部の例では、監視ソフトウェア３４２は、ドキュメントに対して特定のコマンドが行われ得る回数に関係付けられる値をデクリメントする等、アクセスルールを更新してもよい。
【００９９】
ブロック５４２における任意の処理が完了した後で、方法５００は、監視ソフトウェアが次のコマンドを識別するブロック５２０に戻る。
【０１００】
ブロック５４０において、識別されたコマンドが許可されないことを監視ソフトウェア３４２が決定する場合、方法５００はブロック５５０に進む。
【０１０１】
ブロック５５０において、監視ソフトウェア３４２はコマンドキュー３３２から識別されたコマンドを削除する。この例示では、コマンドキュー３３２は、コマンドが挿入される循環バッファを使用して提供される。循環は、新しいコマンドがキューの末尾に追加され且つ実行されるコマンドがキューの先頭から取られるように、キューの先頭及びキューの末尾に対するポインタを含む。新しいコマンドがキューに追加されると、末尾ポインタはインクリメントされ、バッファの最後に到達すると、バッファの最初への地点に設定される。同様に、コマンドが実行されると、先頭ポインタはインクリメントされ、末尾ポインタのように、バッファの最後に到達すると、バッファの最初への地点に設定される。
【０１０２】
循環バッファからコマンドを削除するために、監視ソフトウェア３４２は、ＯＳが循環バッファ内のエントリに到達するときに動作が行われないようにコマンドキュー内への「動作無し」又は類似のエントリを代用してもよく、又は監視ソフトウェア３４２は、先頭ポインタがそれに到達するときにそれが実行されないように、コマンドが実行されたことを示すために識別されたコマンド内の値を変化させてもよい。識別されたコマンドが末尾ポインタの場所に隣接する場所に有る場合、監視ソフトウェア３４２は、コマンドキューに挿入された次のコマンドが不許可コマンドを上書きするように単純に末尾ポインタを移動させてもよい。一部の例では、監視ソフトウェア３４２は、「動作無し」又は類似のコマンドでコマンドを上書きし、次のコマンドが「動作無し」コマンドを上書きするように末尾ポインタを移動させてもよい。このような態様は、新しいコマンドが不許可コマンドを上書きする前に先頭ポインタが末尾ポインタに到達する際の潜在的な競合条件を排除することができる。一部の例において、不許可コマンドが先頭ポインタに直接隣接する場合、監視ソフトウェア３４２は、不許可コマンドをスキップするように先頭ポインタを調節してもよい。
【０１０３】
一部の例では、コマンドキュー３３２は、連結リスト又は二重連結リスト等の異なるデータ構造を使用してもよい。このような例示では、監視ソフトウェア３４２は、リスト内のノードを削除してもよく、２つのリストノードデータ構造が互いをポイントし、それによって削除されたノードをバイパスするように、削除されたノードに隣接して２つのリストノードデータ構造におけるポインタを修正してもよい。一部の例では、コマンドキュー３３２は、異なるタイプのデータ構造に保存されてもよく、このような例示では適切な削除方策が利用されてもよい。
【０１０４】
コマンドキュー３３２から識別されたコマンドを削除することに加えて、監視ソフトウェア３４２は、監査ログ３４５にエントリを追加してもよい。例えば、監視ソフトウェア３４２は、日時スタンプ、ユーザ名、ファイル名、識別されたコマンド及びアプリケーション名を有するエントリを追加してもよい。
【０１０５】
一部の例では、監視ソフトウェア３４２がコマンドキュー３３２から識別されたコマンドを削除した後で、方法５００は、追加コマンドを解析するためにブロック５２０に戻る。一部の例では、上記のように、監視ソフトウェア３４２は、識別されたコマンドが許可されるべきかどうかを決定するためにスレッドを立ち上げてもよい。このような例示では、コマンドキュー３３２から識別されたコマンドを削除した後で、スレッドが終了されてもよい。一部の例では、方法はブロック５６０に進んでもよい。
【０１０６】
ブロック５６０において、監視ソフトウェア３４２は、試行されたコマンドが不許可であったことの通知をユーザに提供する。監視ソフトウェア３４２がコマンドキュー３３２から識別されたコマンドを削除するとき、ユーザに通知が提供されない限り、コマンドは単純に実行されず、ユーザはバグ又は何らかの他のエラーによるものではないことを認識しないかもしれない。従って、一部の例では、ユーザに通知が提供されてもよい。例えば、監視ソフトウェア３４２は、不許可コマンドを示すダイアログボックスと共にユーザがコマンドの実行を承認されていないことを示すメッセージを生成して表示してもよい。一部の例では、コマンドが不許可であり実行されなかったことを示すために聴覚、視覚、触覚又は他の通知がユーザに提供されてもよい。
【０１０７】
監視ソフトウェア３４２が通知を提供した後で、方法５００は、次のコマンドを識別するためにブロック５２０に戻る。一部の例では、上記のように、監視ソフトウェア３４２は、識別されたコマンドが許可されるべきかどうかを決定するためにスレッドを立ち上げてもよい。このような例では、ユーザに通知を提供した後で、スレッドが終了されてもよい。
【０１０８】
一部の例では、図５の方法５００は、図４の例示的な方法４００と並行して又は併せて実行されてもよい。図４の例示的な方法４００は、上記のように、セキュアパーティション３６０へのアクセスを提供する一方で、図５の方法５００は、セキュアパーティション３６０内の異なるファイルに対して実行されるコマンドを制御してもよい。しかしながら、図５の例示的な方法５００は、図４とは独立して行われてもよく、図４の例示的な方法４００の実行は要求されない。更に、図４の例示的な方法４００は、図５の例示的な方法を実行せずに行われてもよい。しかしながら、方法４００、５００を両方とも実行することは、信頼できない装置においてデータを保護するために向上した利益をもたらし得る。
【０１０９】
本明細書に記載の方法及びシステムは様々な機械で実行するソフトウェアに関して記載されているが、方法及びシステムは、例えば、様々な方法を特別に実行するためのＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）等の特別に構成されたハードウェアとして実装されてもよい。例えば、例示は、デジタル電子回路で、又はコンピュータハードウェア、ファームウェア、ソフトウェア若しくはこれらの組み合わせで実装され得る。一例では、装置は、１つ又は複数のプロセッサを含んでもよい。プロセッサは、プロセッサに結合されるＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）等のコンピュータ可読媒体を備える。プロセッサは、メモリに記憶されたコンピュータ実行可能プログラム命令を実行する。例えば、画像を編集するために１つ以上のコンピュータプログラムを実行する。このようなプロセッサは、マイクロプロセッサ、ＤＳＰ（デジタル・シグナル・プロセッサ；ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＡＳＩＣ（特定用途向け集積回路；ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ；ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、及び状態機械を含む。このようなプロセッサは、ＰＬＣ（プログラマブル論理制御装置；  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｃｏｎｔｒｏｌｌｅｒ）、ＰＩＣ（割り込みコントローラ；ｐｒｏｇｒａｍｍａｂｌｅ  ｉｎｔｅｒｒｕｐｔ  ｃｏｎｔｒｏｌｌｅｒ）、ＰＬＤ（プログラマブル論理回路；ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、ＰＲＯＭ（プログラマブルＲＯＭ；ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＥＰＲＯＭ又はＥＥＰＲＯＭ（電気的プログラマブルＲＯＭ；ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、又は他の類似の装置等のプログラマブル電子装置を更に備えてもよい。
【０１１０】
このようなプロセッサは、媒体、例えば、プロセッサによって実行されると、プロセッサによって遂行又は支援される本明細書に記載のステップをプロセッサに実行させることができる命令を記憶し得るコンピュータ可読記憶媒体を備え、又はこれと通信してもよい。コンピュータ可読媒体の例は、限定されないが、プロセッサ、例えばウェブサーバのプロセッサにコンピュータ可読命令を提供することができる電子、光学、磁気又は他の記憶装置を含んでもよい。媒体の他の例は、限定されないが、フロッピーディスク、ＣＤ−ＲＯＭ、磁気ディスク、メモリチップ、ＲＯＭ、ＲＡＭ、ＡＳＩＣ、構成プロセッサ、全ての光学媒体、全ての磁気テープ若しくは他の磁気媒体、又はコンピュータプロセッサが読み取り可能な任意の他の媒体を含む。記載されたプロセッサ及び処理は、１つ以上の構造内に有ってもよく、１つ以上の構造を通じて分散されてもよい。プロセッサは、本明細書に記載の１つ以上の方法（又は方法の一部）を実行するためのコードを備えてもよい。
【０１１１】
一部の例の上記の説明は、例示及び説明のためにのみ示されているのであって、網羅的であること又は開示された厳密な形態に本開示を限定することは意図されていない。その多くの修正及び適合が、本開示の精神及び範囲から逸脱することなく当業者には明らかであろう。
【０１１２】
本明細書における一例又は実装への言及は、特定の機能、構造、操作、又は例と関連して記載される他の特徴が本開示の少なくとも１つの実装に含まれ得ることを意味する。本開示は、このように記載された特定の例又は実装に制限されない。明細書の様々な場所における「一例では」又は「ある例において」、「一実装では」又は「ある実装において」という句又はこれらの変形の出現は、必ずしも同じ例又は実装への言及ではない。任意の特定の機能、構造、操作、又は例示若しくは実装に関連する本明細書に記載の他の特徴は、他の機能、構造、操作、又は任意の他の例示若しくは実装に関して記載された他の特徴と組み合わされてもよい。
【要約】信頼できない装置においてデータを保護するための例示的な方法の１つは、第１のプロセスによって、コマンドキューにおけるコマンドを識別するステップであって、コマンドは第２のプロセスからであり且つセキュアデータに対するアクションを含むステップと、アクション及びユーザ認証情報に基づいてコマンドが許可されるかどうかを決定するステップと、コマンドが許可されないとの決定に応じて、第１のプロセスによって、コマンドキューからコマンドを除去するステップとを含む。【図１】
0006263675.tif 000003
【図２】
0006263675.tif 000004
【図３】
0006263675.tif 000005
【図４】
0006263675.tif 000006
【図５】
0006263675.tif 000007
【図６】
0006263675.tif 000008
【図７】
0006263675.tif 000009