(57)【特許請求の範囲】
【請求項１】
コンピューティング装置のプロセッサを経て、サンドボックス環境内のドキュメントを、当該サンドボックス環境において実行されるアプリケーションによる使用のために、受け取る段階と、
前記ドキュメントをパーサに渡し、パーサが前記サンドボックス環境の外部のリソースに対するリファレンスを前記ドキュメントにおいて見出してリファレンスのリストを生成するようにする段階と、
前記リファレンスのリストをベリファイアに渡し、ベリファイアが、前記リファレンスのリスト内のリファレンスに関連するどのリソースが所定のサンドボックス基準を満たすかを検証して、検証されたリファレンスのリストを生成するようにする段階と、
前記サンドボックス環境内部のリソースとして前記検証されたリファレンスのリストに関連する前記リソースを含むように前記アプリケーションのために前記サンドボックス環境を拡張して、前記アプリケーションのためのされたサンドボックス環境を生成する段階と、
を含む方法。
【請求項２】
前記検証されたリファレンスのリストに基づいて前記拡張されたサンドボックス環境にドキュメントをロードする段階を更に含む、請求項１に記載の方法。
【請求項３】
前記拡張されたサンドボックス環境は、前記検証されたリファレンスのリストに関連するリソースへのアクセスを前記アプリケーションに与える、請求項２に記載の方法。
【請求項４】
前記サンドボックス環境は、規定の制約のある１組のコンピューティングリソース内で動作するためにアクセスを前記アプリケーションに与える、請求項１から３のいずれかに記載の方法。
【請求項５】
前記規定の制約のある１組のコンピューティングリソースは、リファレンスのリストを含む、請求項４に記載の方法。
【請求項６】
プロセッサと、
非一時的コンピュータ読み取り可能な記憶媒体であって、
サンドボックス環境の外部のリソースに対するリファレンスのリストをコーディネーターから受け取り、リファレンスのリストは、前記サンドボックス環境において実行されるアプリケーションによる使用のために前記サンドボックス環境内部のドキュメントから抽出されたものであり、
前記リファレンスのリスト内のリファレンスにより示されたどのリソースが所定のサンドボックス基準を満たすかを検証して、検証されたリファレンスのリストを生成し、及び
前記アプリケーションのために前記サンドボックス環境を拡張して、拡張されたサンドボックス環境内部のリソースとして前記検証されたリファレンスのリストによって示されたリソースを含むようにする、
ことを含むステップを遂行するように前記プロセッサをコントロールするインストラクションを記憶している記憶媒体と、
を備えたシステム。
【請求項７】
前記リソースを検証することは、実際のリソースフォーマットを前記所定のサンドボックス基準によって特定される予想されるリソースフォーマットと比較することを含む、請求項６に記載のシステム。
【請求項８】
前記予想されるリソースフォーマットは、ドキュメントのフォーマットに一致する、請求項７に記載のシステム。
【請求項９】
前記予想されるリソースフォーマットは、ドキュメントのフォーマットとは異なる、請求項７に記載のシステム。
【請求項１０】
前記各リソースを検証することは、さらに、各リソースをオープンし、そして実際のシステムの振舞いを予想されるシステムの振舞いと比較することを含む、請求項６に記載のシステム。
【請求項１１】
コンピューティング装置によって実行されるときに、そのコンピューティング装置がサンドボックス環境にリファレンスを保存するようにさせるインストラクションを記憶する非一時的コンピュータ読み取り可能な記憶媒体において、前記インストラクションは、
サンドボックス環境内で実行されるアプリケーションによる使用のためのリファレンスを含む前記サンドボックス環境内部のドキュメントをコーディネーターへ渡し、
前記コーディネーターを経てパーサへ前記ドキュメントを渡し、パーサは、前記サンドボックス環境の外部のリソースへの前記ドキュメントにおけるリファレンスを見出して、リファレンスのリストを生成し、
前記リファレンスのリストを、前記コーディネーターを経てベリファイアへ渡し、ベリファイアは、前記リファレンスのリストにおけるリファレンスにより指されたどのリソースが所定のサンドボックス基準を満たすかを検証して、検証されたリファレンスのリストを生成し、及び
前記アプリケーションのためのサンドボックス環境を拡張して、当該拡張されたサンドボックス環境内部のリソースとして前記検証されたリファレンスのリストによって指されたリソースを含むようにする、
ことを含む、非一時的コンピュータ読み取り可能な記憶媒体。
【請求項１２】
前記パーサは、個々のサンドボックス環境で動作する、請求項１１に記載の非一時的コンピュータ読み取り可能な記憶媒体。
【請求項１３】
前記個々のサンドボックス環境は、前記パーサが前記ドキュメントのみにアクセスするのを許す、請求項１２に記載の非一時的コンピュータ読み取り可能な記憶媒体。
【請求項１４】
前記ベリファイアは、個々のサンドボックス環境で動作する、請求項１１から１３のいずれかに記載の非一時的コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータセキュリティに関するもので、より詳細には、サンドボックス環境に使用するためにドキュメントのリファレンスを保存することに関する。
【０００２】
関連出願の相互参照：本出願は、参考としてここにそのまま援用される２０１１年６月３日に出願された“SYSTEM AND METHOD FOR PRESERVING REFERENCES IN SANDBOXES”と題する米国特許出願第１３／１５３，２７４号の優先権を主張するものである。
【背景技術】
【０００３】
コンピュータセキュリティは、コンピュータ世界の重要な観点である。通信、娯楽、運輸、金融及び医療を含む多数の異なる産業は、コンピュータに依存している。コンピュータセキュリティは、コンピュータへの攻撃を検出し防止することによってこれらの重要なコンピューティングシステムを保護することを含む。攻撃者は、パスワードを盗んだり、サービス拒絶攻撃を発生したり、ウイルスやワームのような悪いソフトウェアを配布したり、等の異なる仕方でコンピューティングシステムを害する。
【０００４】
コンピューティングシステムをこれらの攻撃から保護することは、挑戦的で且つ絶えず変化するタスクである。パスワードを頻繁に変えることをユーザに要求することから複雑な暗号アルゴリズムをコンピューティングシステムに使用することまで、コンピューティングシステムを保護する沢山の方法が存在する。コンピューティングシステムを保護する１つの方法は、潜在的に悪いプログラムからコンピューティングシステムを保護するためにコンピュータプログラムをサンドボックスに入れることである。サンドボックスとは、実行中のコンピュータプログラムを他のプログラム及び／又はコンピューティングリソースから分離するために使用されるメカニズムである。あるセキュアなコンピューティングシステムは、信頼性のないプログラム又は信頼性のない当事者により配布されたプログラムをサンドボックスにおいて実行する。サンドボックス制約は、コンピュータプログラムがアクセスできるリソースを制限する。サンドボックス環境の一例は、Ａｄｏｖｅ（登録商標）Ｆｌａｓｈ（登録商標）又はＭｉｃｒｏｓｏｆｔ（登録商標）Ｓｉｌｖｅｒｌｉｇｈｔ（登録商標）のようなバーチャルマシン又はインタープリターで実行されるアプレットである。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ポータブルドキュメントフォーマット（ＰＤＦ）又はＡｐｐｌｅ（登録商標）Ｑｕｉｃｋｔｉｍｅ（登録商標）のような交換フォーマットで記憶されるドキュメントは、他のファイルに対する埋め込み型リファレンスを含む。コンピューティングシステムは、そのようなファイルを信頼しないときには、その信頼性のないファイルにアクセスするアプリケーションをサンドボックスに入れる。サンドボックスに入れられたアプリケーションでそれらのドキュメントがオープンされると、コンピューティングシステムによりそのサンドボックスに入れられたアプリケーションに課せられた制約のため、アプリケーションは、他のファイルに対するリファレンスに従うことができない。サンドボックスに入れられたアプリケーションにおいて他のドキュメントに対するリファレンスにアクセスできないことは、ユーザにとってフラストレーションとなる。経験のないユーザは、単に諦めるしかなく、コンピューティングプラットホームに悪い印象をもつが、経験のある又は技術的に覚えのあるユーザは、サンドボックスを回避することを試み、潜在的に重大なセキュリティを不注意にも傷つけることがある。ドキュメントに含まれたリファレンスから付加的な情報を望むユーザは、サンドボックスに入れられたアプリケーションにおいてそれらのリファレンスにアクセスする術がない。
【課題を解決するための手段】
【０００６】
本発明の付加的な特徴及び効果は、以下の説明に開示され、そして一部分は、その説明から明白であり、又はここに開示する原理を実施することにより学習することができる。本発明の特徴及び効果は、特許請求の範囲に特に指摘された手段及びその組み合わせによって実現され得られる。本発明のこれら及び他の特徴は、以下の説明及び特許請求の範囲から完全に明らかとなり、又はここに述べる原理を実施することにより学習することができる。
【０００７】
サンドボックスにリファレンスを保存するためのシステム、方法、及び非一時的コンピュータ読み取り可能な記憶媒体が開示される。この方法を実施するシステムは、サンドボックス環境で使用するためにＰＤＦのようなドキュメントを受け取る。このシステムは、ドキュメントをコーディネーターへ通し、コーディネーターは、次いで、ドキュメントをパーサ（Parser）へ通す。パーサは、他のリソースに対するリファレンスをドキュメントにおいて識別し、そしてリファレンスのリストをコーディネーターに返送する。次いで、コーディネーターは、リファレンスのリストをベリファイアへ通すと共に、任意であるが、オリジナルドキュメントの形式を指示する他のパラメータ、リファレンスのリストを取り扱うための望ましいセキュリティ及び／又は信頼性レベル、ユーザアカウント、等を通す。ベリファイアは、各リファレンスに関連した各リソースを検証し、そして検証されたリファレンスのリストをコーディネーターへ返送する。ベリファイアは、リファレンスファイルフォーマットが予想される形式のものであり及び／又はコンピューティングシステムがファイルオープン時に予想されるように振舞うときにリファレンスを検証することができる。ベリファイアは、リファレンスのリストによりリンクされたリソースの他の属性をチェックする。例えば、ベリファイアは、リソースが適切にサインされたこと、リソースのチェック和、リソースのファイル属性、及び／又はリソースが信頼され、予想され及び／又は本物であることを示す他の特性を確認することができる。ベリファイアは、検証されたリファレンスのリストをコーディネーターへ返送し、コーディネーターは、次いで、検証されたリファレンスのリストをアプリケーションへ通す。アプリケーションは、次いで、検証されたリファレンスのリストに基づいてサンドボックス環境を変更して、オリジナルドキュメントに加えて検証されたリファレンスを含む変更されたサンドボックス環境を生じるか、又は検証されたリファレンスにより指示されたリソースへのアクセスを与える。
【０００８】
１つの実施形態において、このシステムは、コーディネーターを使用せずにドキュメントをパーサへ直接通過させる。パーサは、他のリソースに対するリファレンスをドキュメントにおいて見出し、そしてリファレンスのリストを出力する。このシステムは、コーディネーターを使用せずにリファレンスのリストをベリファイアに直接通す。ベリファイアは、各リファレンスに関連した各リソースを検証し、そして検証されたリファレンスのリストを出力する。ベリファイアは、検証されたリファレンスのリストをアプリケーションへ直接通し、次いで、アプリケーションは、オリジナルドキュメントに加えて検出されたリファレンスを含むようにサンドボックス環境を拡張する。この実施形態では、コーディネーターが利用されず、むしろ、アプリケーションは、パーサ及びベリファイアと直接通信する。潜在的にあまりセキュアでないが、サンドボックスにリファレンスを保存するこの変更型解決策は、元の解決策より簡単であり、具現化のためには好都合である。
【０００９】
本発明の前記及び他の効果及び特徴がどのように得られるか説明するため、前記で簡単に述べた原理を、添付図面に示す特定の実施形態を参照して、詳細に説明する。添付図面は、本発明の規範的な実施形態を示すに過ぎず、それ故、本発明の範囲を限定するものではないことを理解した上で、本発明の原理を、添付図面の使用により更に特別に且つ詳細に説明する。
【図面の簡単な説明】
【００１０】
【図１】規範的なシステム実施形態を示す。
【図２】コーディネーターを含む第１の規範的な、信頼性のあるサービスシステム実施形態を示す。
【図３】リファレンスが埋め込まれたドキュメントを見るための規範的な非変更型サンドボックス環境を示す。
【図４】リファレンスが埋め込まれたドキュメントを見るための規範的な変更型サンドボックス環境を示す。
【図５】リファレンス保存方法の実施形態を示す。
【図６】サンドボックス環境に使用するためにドキュメントにおいてリファレンスをパースし検証するための規範的なシステムアーキテクチャーを示す。
【図７】規範的なサンドボックス環境を示す。
【図８】検証されたリファレンス及び非検証リファレンスを示す規範的な変更型サンドボックス環境を示す。
【図９】コーディネーターなしの第２の規範的な、信頼性のあるサービスシステム実施形態を示す。
【発明を実施するための形態】
【００１１】
本発明の種々の実施形態を以下に詳細に説明する。特定の具現化について述べるが、これは、例示に過ぎないことを理解されたい。当業者であれば、本発明の精神及び範囲から逸脱せずに他のコンポーネント及び構成も使用できることが認識されよう。
【００１２】
本発明は、サンドボックス二リファレンスを保存する必要性に向けられる。サンドボックス環境に使用するためにドキュメントのリファレンスを保存するシステム、方法及び非一時的コンピュータ読み取り可能な媒体について開示する。概念を実施するのに使用される図１の基本的な汎用システム又はコンピューティング装置の簡単な前置き説明をここで行う。それに続いて、サンドボックスにリファレンスを保存する詳細な説明を行う。先ず、図１を参照する。
【００１３】
図１を参照すれば、規範的なシステム１００は、汎用コンピューティング装置１００を含むもので、これは、処理ユニット（ＣＰＵ又はプロセッサ）１２０と、リードオンリメモリ（ＲＯＭ）１４０及びランダムアクセスメモリ（ＲＡＭ）１５０のようなシステムメモリ１３０を含む種々のシステムコンポーネントをプロセッサ１２０に結合するシステムバス１１０とを備えている。システム１００は、プロセッサ１２０に直結されるか、その付近にあるか又はその一部分として一体化された高速メモリのキャッシュ１２２を備えている。システム１００は、メモリ１３０及び／又は記憶装置１６０からのデータを、プロセッサ１２０により素早くアクセスするためにキャッシュ１２２へコピーする。このように、キャッシュは、データを待機する間のプロセッサ１２０の遅延を回避する性能向上を与える。これら及び他のモジュールは、種々のアクションを遂行すべくプロセッサ１２０をコントロールすることができ又はコントロールするように構成される。他のシステムメモリ１３０も使用することができる。メモリ１３０は、異なる性能特性をもつ多数の異なる形式のメモリを含む。本発明のシステムは、２つ以上のプロセッサ１２０を伴うコンピューティング装置で動作することもできるし、又は大きな処理能力を与えるように一緒にネットワーク化されたコンピューティング装置のグループ又はクラスターで動作することもできることが明らかであろう。プロセッサ１２０は、汎用のプロセッサを含み、そしてモジュール１  １６２、モジュール２  １６４及びモジュール３  １６６のようなハードウェアモジュール又はソフトウェアは、プロセッサ１２０と、ソフトウェアインストラクションが実際のプロセッサ設計へ合体された特殊目的プロセッサとをコントロールするように構成される。プロセッサ１２０は、本質的に、多数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュ、等を含む完全自蔵型のコンピューティングシステムである。マルチコアプロセッサは、対称的でもよいし、非対称的でもよい。
【００１４】
システムバス１１０は、種々のバスアーキテクチャーのいずれかを使用するメモリバス又はメモリコントローラ、周辺バス、及びローカルバスを含む多数の形式のバス構造体のいずれでもよい。ＲＯＭ１４０等に記憶された基本的入力／出力（ＢＩＯＳ）は、始動中等に、コンピューティング装置１００内の要素間に情報を転送する上で助けとなる基本的ルーチンを与える。コンピューティング装置１００は、更に、ハードディスクドライブ、磁気ディスクドライブ、光学的ディスクドライブ、テープドライブ、等の記憶装置１６０を備えている。記憶装置１６０は、プロセッサ１２０をコントロールするためのソフトウェアモジュール１６２、１６４、１６６を備えている。他のハードウェア又はソフトウェアモジュールも意図される。記憶装置１６０は、ドライブインターフェイスによってシステムバス１１０に接続される。ドライブ及びそれに関連するコンピュータ読み取り可能な記憶媒体は、コンピューティング装置１００のためのコンピュータ読み取り可能なインストラクション、データ構造体、プログラムモジュール及び他のデータの不揮発性記憶を与える。１つの態様では、特定の機能を遂行するハードウェアモジュールは、その機能を実行するためにプロセッサ１２０、バス１１０、ディスプレイ１７０、等の必要なハードウェアコンポーネントに関連して非一時的コンピュータ読み取り可能な媒体に記憶されたソフトウェアコンポーネントを含む。基本的なコンポーネントは、当業者に知られており、装置１００が小型のハンドヘルドコンピューティング装置か、デスクトップコンピュータか又はコンピュータサーバーかといった装置の形式に基づき適当な変更が意図される。
【００１５】
ここに述べる規範的な実施形態は、ハードディスク１６０を使用するが、当業者であれば、コンピュータによりアクセスできるデータを記憶する他の形式のコンピュータ読み取り可能な媒体、例えば、磁気カセット、フラッシュメモリカード、デジタル多様性ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）１５０、リードオンリメモリ（ＲＯＭ）１４０、ビット流を含むケーブル又はワイヤレス信号、等も、この規範的オペレーティング環境に使用できることが明らかであろう。非一時的コンピュータ読み取り可能な記憶媒体は、特に、エネルギー、キャリア信号、電磁波、及び信号それ自体のような媒体を含む。
【００１６】
ユーザがコンピューティング装置１００と相互作用できるようにするために、入力装置１９０は、多数の入力メカニズム、例えば、スピーチ用のマイクロホン、ジェスチャー又はグラフィック入力用のタッチ感知スクリーン、キーボード、マウス、モーション入力、スピーチ、等を表わす。又、出力装置１７０は、当業者に知られた多数の出力メカニズムの１つ以上である。ある場合には、マルチモードシステムは、ユーザがコンピューティング装置１００と通信するための多数の形式の入力を与えることができるようにする。通信インターフェイス１８０は、一般的に、ユーザ入力及びシステム出力を支配し管理する。特定のハードウェア構成で動作することに制約はなく、それ故、ここに述べる基本的特徴は、それらが開発されるときの改良されたハードウェア又はファームウェア構成と容易に置き換えることができる。
【００１７】
説明を明瞭にするために、ここに示すシステム実施形態は、「プロセッサ」又はプロセッサ１２０として表された機能的ブロックを含む個々の機能的ブロックを含むものとして提示される。これらのブロックが表わす機能は、共有又は専用ハードウェアの使用を通して与えられ、そのハードウェアは、汎用プロセッサで実行されるソフトウェアと同等のものとして動作する特設のプロセッサ１２０のような、ソフトウェア及びハードウェアを実行することのできるハードウェアを含むが、これに限定されない。例えば、図１に示した１つ以上のプロセッサの機能は、単一の共有プロセッサ又は複数のプロセッサにより与えることができる。（「プロセッサ」という語の使用は、ソフトウェアを実行できるハードウェアを排他的に指すものと解釈されてはならない。）ここに示す実施形態は、マイクロプロセッサ及び／又はデジタル信号プロセッサ（ＤＳＰ）ハードウェア、以下に述べるオペレーションを遂行するソフトウェアを記憶するリードオンリメモリ（ＲＯＭ）１４０、及び結果を記憶するためのランダムアクセスメモリ（ＲＡＭ）１５０を含む。超大規模集積（ＶＬＳＩ）のハードウェア実施形態、及び汎用ＤＳＰ回路と組み合わされるカスタムＶＬＳＩ回路も設けられる。
【００１８】
種々の実施形態の論理的オペレーションは、（１）汎用コンピュータ内のプログラマブル回路で実行される一連のコンピュータ実施ステップ、オペレーション又は手順、（２）特別使用のプログラマブル回路で実行される一連のコンピュータ実施ステップ、オペレーション又は手順、及び／又は（３）プログラマブル回路内の相互接続されたマシンモジュール又はプログラムエンジンとして具現化される。図１に示すシステム１００は、ここに示す方法の全部又は一部分を実施してもよく、ここに示すシステムの一部分でもよく、及び／又はここに示す非一時的コンピュータ読み取り可能な記憶媒体のインストラクションに基づいて動作してもよい。そのような論理的オペレーションは、モジュールのプログラミングに基づき特定の機能を遂行するようにプロセッサ１２０を制御するよう構成されたモジュールとして具現化される。例えば、図１は、プロセッサ１２０をコントロールするように構成されたモジュールである３つのモジュールＭｏｄ１  １６２、Ｍｏｄ２  １６４、及びＭｏｄ３  １６６を示す。これらのモジュールは、記憶装置１６０に記憶されそしてランタイムにＲＡＭ１５０又はメモリ１３０へロードされるか、この技術で知られたように、他のコンピュータ読み取り可能なメモリ位置に記憶される。
【００１９】
コンピューティングシステムの幾つかのコンポーネントについて述べたが、サンドボックス環境においてドキュメントのリファレンスを取り扱うことを説明する。図２は、サンドボックスにリファレンスを保存するための３つ組の信頼性あるサービスを示す。３つ組の信頼性あるサービスは、リファレンス保存プロセスを整合するコーディネーター２０２と、他のリソースに対する埋め込み型リファレンスを含むドキュメントをパースするパーサ２０４と、他のリソースに対する各埋め込み型リファレンスを検証するベリファイア２０６である。コーディネーター、パーサ及びベリファイアは、信頼性があると考えられ、各サービスがアクセスできるリソースに制約を課すそれ自身の個々のサンドボックス内で各々動作する。ＰＤＦ又はクイックタイムムービーフォーマットのような交換フォーマットで記憶されたドキュメントは、他のリソースに対する埋め込み型リファレンスを含み、ここで、リファレンスは、ファイル経路である。そのようなドキュメントがサンドボックスアプリケーションにおいてオープンされると、システムは、リファレンスに従うことができない。というのは、サンドボックスは、サンドボックス環境の外部にあるリファレンスされたリソースへのアクセスを許さないからである。埋め込み型リファレンスがドキュメント内にあるときには、サンドボックスに入れられたアプリケーションは、リファレンスが内部であるから、リスースにアクセスすることができる。内部リソースは、サンドボックスの拡張を要求せず、従って、パーサは、単にそれらを無視し、及び／又はベリファイアは、それをスキップすることができる。しかしながら、ドキュメントがそれ自身を指すリンクを含むというありそうもない場合には、システムは、そのリンクに対するサンドボックスも任意に拡張することができる。ここに述べるリファレンス保存プロセスでは、サンドボックスに入れられたアプリケーションが検証されたリファレンスにアクセスするのを許す。
【００２０】
図３は、初期サンドボックス環境に対して制約が課せられたアプリケーションにおいてオープンされたリファレンス記憶ドキュメントを示し、図４は、変更型サンドボックス環境に対して制約が課せられたアプリケーションにおいてオープンされたドキュメントを示す。アプリケーション３０２は、サンドボックス環境の外部にあるリソース３０４にアクセスすることはできない。というのは、コンピューティングシステムがサンドボックス内のアプリケーションに制約を課するからである。しかしながら、内部リファレンス３１０は、外部の検証されないリソースへのアクセスを要求しないので、異なる仕方で処理される。信頼性のあるサービスがドキュメントのリファレンスを保存するプロセスを遂行した後に、アプリケーションは、サンドボックスが信頼性あるサービスにより検証されたリソースを含むように、サンドボックス環境を変更し又は拡張する。変更されたサンドボックス環境においてドキュメント４０６にアクセスするユーザは、検証されたリファレンス４０８のファイル１、ファイル２、及びファイル３にアクセスすることができる。システムは、リファレンス保存プロセスを、リソースへのリファレンスで、ローカルに、又はインターネット上のリソースへのリファレンスのようにネットワーク接続を経て遂行することができる。
【００２１】
図５は、規範的な方法実施形態を示す。明瞭化のため、方法は、方法を実施するように構成された図１に示す規範的なシステム１００に関して説明する。ここに述べるステップは、規範的なものであり、あるステップを除外し、追加し又は変更する組み合わせを含めて、任意の組み合わせで具現化することができる。方法を実施するシステム１００は、サンドボックス環境に使用するためのドキュメントを受け取り（５０２）、ドキュメントをパーサへ通過させ、ドキュメントのリファレンスを見出してリファレンスのリストを作成し（５０４）、リファレンスのリストをベリファイアへ通過させ、リファレンスを検証して、検証されたリファレンスのリストを作成する（５０６）。次いで、システム１００は、検証されたリファレンスのリストに基づきサンドボックス環境を変更する（５０８）。ドキュメントは、ＰＤＦ及びクイックタイムドキュメントのように、他のリソースに対するリファレンスを含むコンピュータファイル又は複数のファイルであるが、それらの特定のフォーマットに限定されない。サンドボックス環境を要求するドキュメントは、信頼性のないソースからのドキュメント、又はおそらく改竄されたドキュメントであり、或いはシステムは、全てのドキュメントがリファレンス保存プロセスを受けることを要求することができる。システムは、特定形式の全てのドキュメントをサンドボックス環境に入れることができる。特定アプリケーション又はオペレーティングシステム設定は、ファイルにアクセスするときにサンドボックスを使用すべきかどうかの判断に影響を及ぼす。ファイルそれ自体は、そのファイルをサンドボックスにおいて使用すべきかどうか指示するフラグ又はタグを含むことができる。ドキュメントの他のリソースに対するリファレンスは、他のコンピュータファイルに対するリファレンスであるか、或いはドキュメント内の他のファイル又はリソースに対するリファレンスである。リファレンスは、オリジナルドキュメントと同じフォーマットでもよいし又は異なるフォーマットでもよい。例えば、ＰＤＦフォーマットのオリジナルドキュメントは、他のＰＤＦファイルに対するリファレンス、或いはユーザ、アプリケーション、コーディネーター又はベリファイアにより指定される他のファイルフォーマット、例えば、エクセル又はワードを含む。システム１００は、例えば、クイックタイムファイルフォーマットで記憶されたドキュメントしかＡＶＩのような他のビデオフォーマットにアクセスできないことを要求する。
【００２２】
図６は、サンドボックスにリファレンスを保存することを示す。アプリケーション６０２は、コーディネーター６０４へドキュメントを送り、コーディネーターは、リソースに対するリファレンスの検証を整合する。コーディネーター６０４は、ドキュメントをパーサ６０６へ通過させ、パーサは、他のリソースに対するリファレンスをドキュメントにおいて見出して、リファレンスのリストを作成する（５０４）。パーサ６０６は、セキュリティのためにそれ自身のサンドボックス内で動作し、パーサは、ドキュメント以外の他のリソースにも又はコーディネーターから通過されたドキュメントの部分にもアクセスすることができない。パーサ６０６は、ドキュメントをパースして他のファイルに対するリファレンスを見出し、そしてドキュメントに見出されたリファレンスのリストを作成する。例えば、パーサ６０６は、ドキュメント又は画像へのリンクについてＨＴＭＬをパースし、特定のタグ又はデータについてＸＭＬをパースし、又は他のリソースに対するリファレンスについてポータブルドキュメントフォーマット（ＰＤＦ）をパースする。パーサ６０６は、リファレンスのリストをコーディネーター６０４へ送り、コーディネーターは、次いで、パーサにより出力されたリファレンスのリスト検証するためにベリファイア６０８へリファレンスのリストを送る（５０６）。
【００２３】
又、ベリファイアは、それ自身のサンドボックスにおいて動作して、潜在的に悪い又は有害なコンピュータファイルをオープンしてもコンピューティングシステムに害が及ばないようにする。パーサ及び／又はベリファイアをそれら自身のサンドボックス環境で実行することで、リソースが脅威を含むか又は安全でない場合にも、コンピューティングシステムの残り部分を保護することができる。サンドボックス環境では、ウイルスが自由にローミングするが、システムは、サンドボックス外部でのアクションを許さず、従って、システムの残り部分を保護する。
【００２４】
ベリファイア６０８は、リファレンスのリストにおいて各リソース又はファイルをオープンし、そして実際のシステムの振舞いを、予想されるシステムの振舞いと比較する。又、ベリファイアは、ファイルが予想されるファイル形式であることも検証する。例えば、システム１００は、特定のドキュメントのリファレンスのリストにおける全てのリファレンスがＰＤＦファイルであることを要求する。ベリファイアは、ファイル名の拡張をチェックし及び／又はファイルをオープンすることにより、リスト内の全てのリファレンスがＰＤＦファイルであることを検証する。ベリファイアは、リファレンスのどんな観点を検証すべきか、リファレンスをそのように検証するか、そしてリファレンスを検証するときにどんな寛容度（もしあれば）を適用すべきかに関してコーディネーター６０４からパラメータ及び／又はインストラクションを受け取る。例えば、ベリファイアは、各リソースがオープンされたときにシステムの振舞いを観察し、そしてその振舞いを、予想されるシステムの振舞いと比較する。ベリファイアは、プログラムをクラッシュするように、予想通りに遂行しないリファレンスは検証しない。１つの変形例において、ベリファイアは、リファレンスにより指示された特定の経路にファイルが存在することを単にチェックする。ベリファイアは、それがリファレンスのリストの検証を完了すると、検証されたリファレンスのリストをコーディネーター６０４へ返送し、次いで、コーディネーターは、検証されたリファレンスのリストをアプリケーション６０２へ返送する。アプリケーションは、ドキュメントのオリジナルサンドボックスを、検証されたリファレンスのリストに基づいて拡張し（５０８）、変更型サンドボックス環境生成する。変更型サンドボックス環境は、ベリファイアにより検証されたリファレンスのリストに関連したリソースへのアクセスを含み及び／又はそれを与える。
【００２５】
図７は、サンドボックスに入れられたアプリケーションでオープンされる規範的なファイルを示す。システムは、サンドボックスに入れられたアプリケーション７０２でファイルｗｅａｔｈｅｒ．ｐｄｆをオープンする。この天気ファイルは、ｔｏｒｎａｄｏｅｓ．ｐｄｆ７０４、ｗｉｎｄ．ｄｏｃｘ７０６、ｔｓｕｎａｍｉ＿ｗａｒｎｉｎｇ．ｐｄｆ７０８、及びｔｅｍｐｅｒａｔｕｒｅ．ｘｌｓｘ７１０に対する埋め込み型リファレンスを含む。サンドボックス環境は、アプリケーションが埋め込み型リファレンスにアクセスするのを許さず、これは、埋め込み型リファレンスへのアクセスを試みるユーザの側にフラストレーションを招く。サンドボックスアプリケーション内のリファレンスへのアクセスを許すことは、ドキュメントプロバイダーよりも付加的な情報を希望するユーザにとって有益である。
【００２６】
図８は、ドキュメントのリファレンスを抽出し、パースし、検証し、そしてサンドボックス環境を拡張した後のシステムを示す。アプリケーションは、ファイルｗｅａｔｈｅｒ．ｐｄｆをコーディネーターへ送り、コーディネーターは、次いで、そのファイルをパーサへ送る。パーサは、サンドボックス環境においてファイルをオープンし、リソースに対する埋め込み型リファレンスを見出し、リソースは、この例では、ファイルｔｏｒｎａｄｏｅｓ．ｐｄｆ７０４、ｗｉｎｄ．ｄｏｃｘ７０６、ｔｓｕｎａｍｉ＿ｗａｒｎｉｎｇ．ｐｄｆ７０８、及びｔｅｍｐｅｒａｔｕｒｅ．ｘｌｓｘ７１０である。パーサは、これらのファイルに対する埋め込み型リファレンスのリストを発生し、そしてリファレンスのリストをコーディネーターへ送る。コーディネーターは、リファレンスのリストをベリファイア６０８へ送り、ベリファイアは、それ自身のサンドボックス環境において動作する。ベリファイアは、各ファイルのファイルフォーマットが予想されたフォーマットであることをチェックし、及び／又は付加的な検証測定を遂行する。例えば、ベリファイアが特定ドキュメントのＰＤＦファイルしか検証しないことをシステムが要求する場合には、システムは、各ファイルがＰＤＦフォーマットであることをチェックする。ベリファイアは、例えば、ＰＤＦファイルだけを検証するか、又はＰＤＦ及び「マイクロソフトワード」ファイルを検証するインストラクションを受け取る。この例では、システムは、ベリファイアがＰＤＦファイルだけを検証することを要求する。又、ベリファイアは、リファレンスのリストにおける各ファイルをオープンし、そしてシステムの振舞いを観察する。システムが予想通りに振舞い、そしてファイルフォーマットが予想される形式である場合には、ベリファイアは、ファイルを検証することができる。ベリファイアは、検証されたリファレンスのリストをコーディネーターへ送信し、このケースでは、検証されたリファレンスのリストは、ファイルｔｏｒｎａｄｏｅｓ．ｐｄｆ８０４及びｔｓｕｎａｍｉ＿ｗａｒｎｉｎｇ．ｐｄｆ８０８である。ファイルｗｉｎｄ．ｄｏｃｘ８０６及びｔｅｍｐｅｒａｔｕｒｅ．ｘｌｓｘ８１０は、予想されるファイル形式、この例では、ＰＤＦではないので、検証されたリファレンスのリストには含まれない。コーディネーターは、検証されたリファレンスのリストをアプリケーションへ送る。アプリケーションは、検証されたリファレンスｔｏｒｎａｄｏｅｓ．ｐｄｆ８０４及びｔｓｕｎａｍｉ＿ｗａｒｎｉｎｇ．ｐｄｆ８０８を含む変更型サンドボックス８１２を生成するようにサンドボックス７１２を拡張する。ファイルｗｉｎｄ．ｄｏｃｘ８０６及びｔｅｍｐｅｒａｔｕｒｅ．ｘｌｓｘ８１０は、ベリファイアによりコーディネーターへ送られる検証されたリファレンスのリストに含まれないので、変更型サンドボックスの内部には許されない。変更型サンドボックス８１２の内部のアプリケーション８０２は、ここで、検証されたリファレンスｔｏｒｎａｄｏｅｓ．ｐｄｆ８０４及びｔｓｕｎａｍｉ＿ｗａｒｎｉｎｇ．ｐｄｆ８０８へアクセスすることができる。
【００２７】
ユーザの観点から、ｔｏｒｎａｄｏｅｓ．ｐｄｆ８０４又はｔｓｕｎａｍｉ＿ｗａｒｎｉｎｇ．ｐｄｆ８０８へのｗｅａｔｈｅｒ．ｐｄｆのリンクをクリックすることは、透過的である。ユーザは、これらファイルへのリンクをクリックすることができ、これらリソースは変更型サンドボックス８１２にあるので、システムは、それらをオープンさせることができる。しかしながら、ユーザがｗｉｎｄ．ｄｏｃｘ８０６又はｔｅｍｐｅｒａｔｕｒｅ．ｘｌｓｘ８１０へのリンクをクリックすると、システムは、そのリソースをオープンさせる要求を拒絶する。例えば、システムは、サンドボックスの外部のリソースにアクセスする要求を単に無視する。或いは又、システムは、望ましいリソースにアクセスできないことを述べるエラーメッセージをユーザに提示する。システムは、おそらくベリファイアから返送されるコード又はメッセージに基づいて、望ましいリソースになぜアクセスできないかを述べるメッセージをユーザに提示する。更に、システムは、この情報及び／又は他の情報をユーザに提示し、アクセスできないリソースへのアクセスを与えるために変更型サンドボックス環境を拡張すべきかどうかユーザに促す。
【００２８】
１つの態様では、ドキュメントにおいてリファレンスされる他のリソースを含むようにサンドボックス環境を拡張又は変更する一部分として、システムは、変更型サンドボックスにおいてアクセスできない他のリソースの一時的バックアップコピーをセーブする。このように、悪いコードが変更型サンドボックス環境においてどうにか実行されてリソースを変更しても、システムは、一次的なバックアップコピーへ戻ることができる。
【００２９】
別の実施形態では、システム１００は、図９に示すように、コーディネーターを使用せずに、サンドボックスにリファレンスを保存する。サンドボックス環境にあるアプリケーション９０２は、埋め込み型リファレンスを有するドキュメントの全部又は一部分をパーサ９０４へ送る。パーサ９０４は、ドキュメントのリファレンスを見出し、そしてリファレンスのリストを出力する。パーサ９０４は、リファレンスのリストをベリファイア９０６へ直接送る。ベリファイア９０６は、リファレンスのリストにおける少なくとも１つのリファレンスを検証し、そして検証されたリファレンスのリストを発生する。検証されたリファレンスのリストは、０、１又はそれより多くのリファレンスを含む。ベリファイア９０６は、検証されたリファレンスのリストをアプリケーション９０２へ送り、アプリケーションは、次いで、少なくとも１つの検証されたリファレンスがリストに含まれる場合に変更型サンドボックス環境を生成するようにサンドボックスを拡張する。サンドボックス環境は、検証されたリファレンスを含むように拡張される。セキュリティを犠牲に、サンドボックスにリファレンスを保存するこの変更型解決策は、コーディネーターの使用を必要としない簡単且つ潜在的に実施が容易なスキームである。コーディネーターは、リソースに実際にタッチしない唯一のプロセスである。コーディネーターは、ドキュメントをパースすることもないし、外部リソースの点検を試みることもない。それ故、コーディネーターは、悪用の標的になり難いプロセスである。従って、コーディネーターは、悪用や他の攻撃の危険性が低く、セキュリティに関連していてもいなくてもよい特別なチェックを遂行することができる。
【００３０】
ユーザの経験及び／又は知覚される性能に関連した１つの態様では、サンドボックスに使用するためにドキュメントを処理するとき、システムは、ユーザがドキュメントを素早くロードして見ることができるようにリファレンスをパース又は検証する前に先ずドキュメントを非変更型サンドボックスにロードすることができる。次いで、ユーザがドキュメントを見ている間に、システムは、バックグランドにおいてドキュメントをパースし及び検証し、そしてそのパース及び検証されたリファレンスに基づいてサンドボックス環境を拡張することができる。これは、リファレンスによって指示されたリソースへの遅延アクセスを与えながら、ドキュメントが素早くロードされたとユーザに知覚させる。システムは、バックグランドにおいてバッチモードで又は一度に１つづつ、リファレンスをパースし検証することができる。例えば、バッチモードでは、システムは、ドキュメントから全てのリファレンスをパースし、全てのリファレンスを検証し、次いで、サンドボックス環境を適宜に拡張する。或いは又、システムが１つのリファレンスをパースするや否や、ベリファイアがそのリファレンスを検証し、そしてシステムがその単一のリファレンスについてサンドボックス環境を拡張する間に、パーサが他のリファレンスをサーチし続けてもよい。両方のケースにおいて、サンドボックス環境は、先ずドキュメントを見るためにロードされ、次いで、サンドボックス環境は、ドキュメントをロードした後に、ユーザがドキュメントをナビゲートし、それを見、又はそれにアクセスする間に、バックグランドにおいて拡張され又は変更される。
【００３１】
又、本発明の範囲内の実施形態は、コンピュータ実行可能なインストラクション又はデータ構造を搬送するか又はそれらが記憶された有形の及び／又は非一時的なコンピュータ読み取り可能な記憶媒体も包含する。そのような非一時的なコンピュータ読み取り可能な記憶媒体は、上述した特殊目的のプロセッサの機能的設計を含めて、汎用の又は特殊目的のコンピュータによりアクセスできる任意の入手可能な媒体である。例えば、これに限定されないが、そのような非一時的なコンピュータ読み取り可能な媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、又は他の光学的ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、或いはコンピュータ実行可能なインストラクション、データ構造又はプロセッサチップ設計の形態で望ましいプログラムコード手段を搬送し又は記憶するのに使用できる他の媒体を含む。ネットワーク又は別の通信接続（ハードワイヤード、ワイヤレス又はその組み合わせ）を経てコンピュータへ情報が転送され又は供給されるときに、コンピュータは、その接続をコンピュータ読み取り可能な媒体として適切に見る。従って、このような接続は、コンピュータ読み取り可能な媒体と適切に呼ばれる。上述したものの組み合わせも、コンピュータ読み取り可能な媒体の範囲内に包含されねばならない。
【００３２】
コンピュータ実行可能なインストラクションは、例えば、汎用コンピュータ、特殊目的コンピュータ、又は特殊目的処理装置が、ある機能又は機能グループを遂行するようにさせるインストラクション及びデータを含む。又、コンピュータ実行可能なインストラクションは、サンドのみ又はネットワーク環境においてコンピュータにより実行されるプログラムモジュールも含む。一般的に、プログラムモジュールは、特定のタスクを遂行し又は特定のアブストラクトデータ形式を具現化するルーチン、プログラム、コンポーネント、データ構造、オブジェクト、特殊目的プロセッサの設計に固有の機能、等を含む。コンピュータ実行可能なインストラクション、関連データ構造、及びプログラムモジュールは、ここに開示する方法のステップを実行するためのプログラムコード手段の一例を表わす。そのような実行可能なインストラクション又はそれに関連したデータ構造の特定のシーケンスは、そのようなステップで記述される機能を具現化するための対応するアクションの一例を表わす。
【００３３】
当業者であれば、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能な消費者向け電子装置、ネットワークＰＣ、マイクロコンピュータ、メインフレームコンピュータ、等を含めて、多数の形式のコンピュータシステム構成を伴うネットワークコンピューティング環境において本発明の他の実施形態も具現化できることが明らかであろう。又、それらの実施形態は、通信ネットワークを通して（ハードワイヤードリンク、ワイヤレスリンク又はその組み合わせにより）リンクされたローカル及びリモート処理装置によってタスクが遂行される分散型のコンピューティング環境でも具現化される。分散型のコンピューティング環境では、プログラムモジュールは、ローカル及びリモートの両メモリ記憶装置に配置される。
【００３４】
上述した種々の実施形態は、例示のためのもので、本発明の範囲をそれに限定するものではない。例えば、ここに述べた原理は、サンドボックス方法を使用してコンピューティングシステムを保護するいかなるアプリケーションにも適用することができる。当業者であれば、ここに図示して説明した規範的実施形態及び応用例に従わずに且つ本発明の精神及び範囲から逸脱せずに、ここに述べた原理に対してなされる種々の修正及び変更が容易に理解されよう。
【符号の説明】
【００３５】
１００：コンピューティング装置
１１０：バス
１２０：プロセッサ
１２２：キャッシュ
１３０：メモリ
１４０：リードオンリメモリ（ＲＯＭ）
１５０：ランダムアクセスメモリ（ＲＡＭ）
１６０：記憶装置
１６２、１６４、１６６：ソフトウェアモジュール
１７０：ディスプレイ
１８０：通信インターフェイス
１９０：入力装置
２０２：コーディネーター
２０４：パーサ
２０６：ベリファイア
３０２：アプリケーション
３０４：リソース
３１０：リファレンス
４０６：ドキュメント
４０８：リファレンス
６０２：アプリケーション
６０４：コーディネーター
６０６：パーサ
６０８：ベリファイア
【図１】
0005748905.tif 000002
【図２】
0005748905.tif 000003
【図３】
0005748905.tif 000004
【図４】
0005748905.tif 000005
【図５】
0005748905.tif 000006
【図６】
0005748905.tif 000007
【図７】
0005748905.tif 000008
【図８】
0005748905.tif 000009
【図９】
0005748905.tif 000010