説明

セキュアなブラウザベースのアプリケーション

ウェブブラウザ内のコンピュータプログラムコードによって制限された動作を実行するための技術を提供し、非明示的又は明示的な承諾を受け取った場合、コードが、制限された動作を呼び出すことを許可される。このような技術は、コンピュータプログラムコードコンポーネントのリスク格付けを生成するステップを含むことができ、コンポーネントは、少なくとも1つの制限されたシステム動作を実行するとともに制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するための少なくとも1つのコンポーネント動作を含み、この入力要求メッセージは、コンポーネント動作のリスク格付け及び記述を含む。プログラムコードは、ウェブブラウザプラグインを呼び出すウェブページに関連するスクリプトコードを含むことができ、このスクリプトコードがさらに、制限されたシステム動作を呼び出す。コードは、ウェブブラウザを介してユーザから入力を受け取ったこと応答して、制限されたシステム動作を呼び出すことができ、この入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための承諾を非明示的に認める。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願との相互参照)
本出願は、2008年3月2日に出願された「ネイティブオペレーティングシステム機能にセキュアにアクセスするブラウザベースのアプリケーション及びインターフェイス」という出願番号第61/067,872号の利益を主張するものであり、該特許出願はその全体が引用により本明細書に組み入れられる。
【0002】
本出願は、一般に、制限された実行環境において、ユーザが提供するコンピュータプログラムコードを実行することに関し、より具体的には、ウェブブラウザなどのセキュリティを制限された実行環境において、ユーザが提供するコンピュータプログラムコンポーネントの配布及び実行を可能にすることに関する。
【背景技術】
【0003】
ウェブブラウザ内でコンピュータプログラムコードを実行するための技術が周知である。ウェブページは、Microsoft(登録商標) Internet Explorer(商標)ブラウザ、Mozilla(登録商標) Firefox(登録商標)ブラウザなどのブラウザ内でユーザにページを表示する際に実行されるJavaScript(商標)などの言語のコードを含むことができる。Java(登録商標)言語、Microsoft(登録商標) Jscript(登録商標)言語、及びMicrosoft(登録商標) C#(登録商標)言語などのプログラミング言語で実装されるコードをウェブサイトなどのインターネットサーバからダウンロードし、ウェブブラウザにより実行することができる。Adobe(登録商標) Flash(登録商標)スクリプト又はポータブルドキュメントフォーマット(PDF)文書などのいくつかの種類のコード又はデータは、ブラウザ自体がこれらをサポートすることはできず、すなわち実行することはできないが、このような特殊なファイルタイプをサポートするプラグインでブラウザを拡張することができる。プラグインとは、例えばブラウザ(又は他のアプリケーション)によって呼び出されるコンピュータプログラムコードモジュールのことであり、ブラウザの機能を使用して情報を表示したり、入力を受け取ったり、ネットワークを介してデータを転送したりなどを行うことができる。プラグインは特殊な機能を提供し、通常、プラグインに関連する種類のウェブコンテンツを受け取ったことに応答して起動される(ディスクからロードされブラウザにより初期化される)。プラグインはC又はC++などのプログラミング言語で実装され、これに対してブラウザがプラグインアプリケーションプログラミングインターフェイス(API)を提供する。インターネットからダウンロードされたコードが、ファイルにアクセスしたりリモートコンピュータへのネットワーク接続を開いたりなどのセンシティブなシステム動作を行うことを防ぐセキュアな環境でブラウザにより実行されるJavaScriptなどのスクリプトコードとは異なり、プラグインを実装するコードは、通常、コンピュータのプロセッサにより実行できるネイティブコードである。このようなネイティブコードは、ブラウザにより実行されるスクリプトコードと同じレベルのセキュリティ制限を受けず、センシティブなシステム動作を行うことができ、この結果、無許可のデータアクセス又はシステムセキュリティ違反が行われる可能性がある。従って、未知の又は信頼できないソースからのプラグインの使用は妨げられ、ユーザがよく知らないベンダによって提供されるプラグインを使用する可能性は低い。さらに、ブラウザプラグインの作成は比較的困難であり、いくつかの理由からコストがかかる。例えば、セキュリティ問題を識別して解決する必要がある。さらに、多くのブラウザは、使用するのが比較的困難なプラットフォーム固有のプログラミング言語をプラグイン開発に使用しており、(MicrosoftWindows(登録商標)オペレーティングシステム、Apple(登録商標)MacOSオペレーティングシステム、Linux(登録商標)オペレーティングシステムなどの)個々のプラットフォームの種類ごとにプラットフォーム固有のプラグインのバージョンが作成され配信されてプラットフォームによりサポートされており、Windows対応のInternet Explorer、Windows対応のFireFox、MacOS対応のFireFox、及びMacOS対応のSafari(登録商標)ブラウザなどの個々のプラットフォームによりサポートされる個々のブラウザの種類ごとにブラウザ固有のプラグインのバージョンを作成して配信することが必要となり得る。
【0004】
上述したように、コンピュータのリソースへのアクセスを制限されていないプログラムコードにより潜在的な損害が引き起こされる可能性があるため、ウェブブラウザにより実行されるコードには、特にこのコードが未知の又は信頼できないサーバからのものである場合、セキュリティ制限が課せられる。例えば、多くのウェブブラウザは、ファイル、ネットワーク、オペレーティングシステムインターフェイス、記憶装置、及びその他のリソースにアクセスするためのダウンロードされるコードの能力に制限を加える。ダウンロードしたコードなどの、クライアントコンピュータ上でブラウザにより実行されるコードは、ファイルを削除したり、システムリソースを不正に使用したり、コンピュータに記憶された情報を取り出したり、セキュリティの脆弱性を求めてコンピュータを検索したり、センシティブ情報に対する要求をユーザに提示(フィッシング)したり、コンピュータにウィルスをインストールしたり、コンピュータを使用して他のコンピュータを攻撃したり又は他のコンピュータにウィルスを広げたりする可能性があるので、これらのコードはより厳しいセキュリティを受ける。従って、Internet Explorerなどのウェブブラウザは、ユーザが許可を認めない限り、信頼できないサーバからのコードを実行できないようにしている。
【0005】
Javaアプレット、ActiveX(登録商標)コントロール、及びFirefoxの拡張機能などの、ダウンロードされたコードを実行するための多くの既存のブラウザベースのランタイム環境は、あらゆるシステムリソースの実行及びアクセスに対してユーザに包括的許可を求める。ActiveXコントロールとは、ウェブページがアクセスを受け、すなわちウェブサーバ100からダウンロードされた場合に、ウェブページに組み込んでInternet Explorerにより実行することができるコンピュータプログラムコードモジュールのことである。ActiveXコントロールなどのコードがウェブページの一部としてダウンロードされ、これをInternet Explorerブラウザ内で実行しようと試みた場合、ブラウザはユーザに警告メッセージを表示して、ユーザがそのコントロールの実行を明確に許可又は承認しない限り、或いは他の例では、ユーザが、そのサーバ又はそのサーバのネットワークドメインからのコードの実行を明確に許可しない限りコントロール全体の実行が阻止される。ユーザがコントロールの実行を承認すると、コントロールが広い範囲のシステムリソースにアクセスできるようになる。
【0006】
Microsoft Windows Vista(登録商標)オペレーティングシステムなどの他の既存のランタイム環境は、ユーザにファイルを読み取るための許可などを求めることにより、エンドユーザにはほとんど重要でないレベルのセキュリティ精度を提供する。Javaなどのいくつかのプログラミング言語は、ダウンロードしたコードスクリプトが、デジタル署名された証明書などのセキュリティクレデンシャル情報を使用してコンピュータ上の制限されたリソースにアクセスできるようにする。しかしながら、ダウンロードしたコードのセキュリティクレデンシャルはユーザにさらされ、ユーザは多くの場合このクレデンシャルを保持し、例えば失効時にこれらを更新し、またこれらを機密にしておく責任を負う。さらに、使用される(JavaScript又はJavaなどの)ウェブプログラミング言語は専用装置などの特定のシステムリソースへの接点を有していないので、たとえ許可が有効であっても、これらの言語で書かれたプログラムにこれらのリソースを利用することはできない。このようなリソースには、C++などの「ネイティブ」なプログラミング言語を介してアクセスすることができるが、ネイティブ言語とウェブプログラミング言語との間の通信は複雑であり、既存のウェブプログラミングフレームワークは、ネイティブプログラムをブラウザベースのウェブアプリケーションに統合するための機能を提供していない。
【発明の概要】
【発明が解決しようとする課題】
【0007】
これらのセキュリティ制限は、システムリソースアクセス及びその他の機能の面でネイティブアプリケーションにより提供されるユーザインターフェイスに匹敵するリッチユーザインターフェイスを提供する、既存のウェブプログラミングフレームワーク内で開発されたアプリケーションの能力を低下させる。既存のフレームワークは、複雑な基本セキュリティ機能を提供し、アプリケーション開発者にセキュリティを確実にするという負担をかける。従って、セキュリティセンシティブなシステムリソースに安全かつセキュアにアクセスするウェブアプリケーションをプログラマーが迅速かつ容易に開発できるようにするプログラミングフレームワークを実現することが望ましいであろう。
【課題を解決するための手段】
【0008】
一般に、第1の態様では、本発明は、少なくとも1つの制限されたシステム動作の実行を引き起こす少なくとも1つのコンポーネント動作を含むコンピュータプログラムコードコンポーネントの、コンポーネント又はコンポーネントに関連する記述がそれによって署名されるデジタル証明書に基づくリスク格付けを生成するステップと、コンポーネント動作の記述を生成するステップと、少なくとも1つの制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するステップとを含むコンピュータにより実行される方法を特徴とし、この入力要求メッセージは、リスク格付け及びコンポーネント動作の記述を含む。
【0009】
本発明の実施形態は、以下の特徴の1又はそれ以上を含むことができる。リスク格付けを生成するステップは、コンピュータプログラムコードコンポーネントの実行を引き起こすためのコンピュータプログラムスクリプトコードを含むウェブページを受け取ることに応答するものであってもよい。リスク格付けは、最高リスクレベル及び最低リスクレベルを含む少なくとも2つのリスクレベルのうちの1つとすることができる。ユーザに許可の入力要求メッセージを表示するステップは、ウェブブラウザがスクリプトコードに関連するウェブページを受け取ること応答して実行されるコンピュータプログラムスクリプトコードによる最初のコンポーネントの参照に応答して行うことができる。コンピュータプログラムコードコンポーネントは、ウェブブラウザがスクリプトコードに関連するウェブページを受け取ったこと応答して実行されるコンピュータプログラムスクリプトコードによるウェブブラウザ内のプラグイン実行の呼び出しに応答して実行するためのものであってもよい。ユーザに許可の入力要求メッセージを表示するステップは、少なくとも1つの制限されたシステム動作に対応する指定された許可を表示するステップを含むことができ、エンドユーザがこの指定された許可を、制限されたシステム動作を実行するための前提条件として承諾することができる。
【0010】
一般に、第2の態様では、本発明は、ウェブブラウザベースのコードが、クライアントコンピュータ上で制限されたシステム動作を実行できるようにするコンピュータにより実行される方法を特徴とする。この方法は、サーバコンピュータにおいて、制限されたシステム動作を呼び出すための少なくとも1つのコンポーネント動作を有する少なくとも1つのコンポーネントを含むコンピュータプログラムコードをクライアントコンピュータに提供するステップを含み、コンピュータプログラムコードはコンポーネントインプリメンテーションをさらに含むことができ、このインプリメンテーションは、制限されたシステム動作を実行するためのユーザからの許可の入力要求メッセージをを表示するためのものであるとともに、さらにユーザからの許可を受け取ったことに応答して、制限されたシステム動作を呼び出すためのものであり、この入力要求メッセージは、コンポーネントに関連するリスク格付け及びコンポーネント動作に基づく。入力要求メッセージは、コンポーネントに関連するリスク格付けを含むことができる。プログラムコードはウェブブラウザプラグインであってもよい。複数のリスク層から選択したリスク層にコンポーネントを関連付けることができ、リスク格付けは、このリスク層に基づく短いフレーズであってもよい。リスクインジケータは、コンポーネントにより提供される少なくとも1つの動作に基づくフレーズを含むことができる。コンポーネントは、インプリメンテーション機能及びこのインプリメンテーション機能を記述するインターフェイス定義を含むことができる。入力要求メッセージは、コンピュータの出力装置に許可を求める要求を表示することができる。ユーザからの許可を受け取るステップは、クライアントコンピュータの入力装置を介してユーザから肯定的な応答を受け取るステップを含むことができる。方法は、コンポーネントに関連する署名局の証明書を受け取るステップをさらに含むことができ、リスク格付けは、この証明書にさらに基づくことができる。制限されたシステム動作は、ファイルへのアクセス、ネットワークへのアクセス、ディスプレイ装置へのアクセス、又はこれらの組み合わせを含むことができる。
【0011】
一般に、第3の態様では、本発明は、ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするコンピュータにより実行される方法を特徴とする。本方法は、サーバコンピュータにおいてコンピュータプログラムコードをクライアントコンピュータに提供するステップを含み、このプログラムコードは、制限されたシステム動作を呼び出すための少なくとも1つのコンポーネント動作を有する少なくとも1つのコンポーネントを含み、コードは、ウェブ文書に関連するスクリプトコードによるコンポーネントの呼び出しに応答してウェブブラウザが実行するためのものであり、コードは、ウェブブラウザを介してユーザから入力を受け取ったことに応答して制限されたシステム動作を呼び出し、この入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための承諾を非明示的に認める。アクションは、動作を実行する際の少なくとも1つのステップを含むことができる。
【0012】
一般に、第4の態様では、本発明は、ウェブブラウザがウェブページを受け取ったことに応答して実行されるコンピュータプログラムスクリプトコードからコンポーネント動作の呼び出しを受け取るステップを含むコンピュータにより実行される方法を特徴とし、コンポーネントは、制限されたシステム動作の実行を引き起こす少なくとも1つのコンポーネント動作を含み、ウェブブラウザを介してユーザから入力を受け取ったことに応答して、コンポーネント動作が制限されたシステム動作の実行を引き起こすようにすることができ、入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための許可を明示的に認めるものではなく、アクションは、動作を実行するための許可を非明示的に認める。
【0013】
一般に、第5の態様では、本発明は、ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするコンピュータにより実行される方法を特徴とする。この方法は、コンポーネント動作の呼び出しに応答して、ユーザからの許可を要求するための入力要求メッセージを表示することにより制限されたシステム動作を実行するようにするステップと、ユーザから許可を受け取ったことに応答して、制限されたシステム動作を呼び出すステップとを含み、上記入力要求メッセージは、コンポーネント動作を動作させるオブジェクト又はサービスを意味する。
【0014】
一般に、第6の態様では、本発明は、セキュリティ制限された動作を実行するために、ウェブブラウザ内でコンピュータプログラムコードを実行できるようにするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体を特徴とし、この命令は、インターフェイスと、インターフェイスの少なくとも一部を実現するネイティブ言語インプリメンテーションとを含むコンポーネントをコンピュータネットワークを介してウェブブラウザに提供するためのものであり、このインプリメンテーションは、ウェブブラウザ内のプラグインコードによるインターフェイスの呼び出しに応答してネイティブ言語インプリメンテーションを呼び出すためのものであり、このネイティブ言語インプリメンテーションは、動作を実行する許可の入力要求メッセージをユーザに表示するとともに、さらにユーザから許可を受け取ったことに応答して動作を呼び出すためのものであり、この入力要求メッセージは、コンポーネントに関連するリスクインジケータに基づくとともにコンポーネントに関連する少なくとも1つの許可要件にさらに基づき、またこの入力要求メッセージは、許可要件に関連する動作の記述を含み、この記述は、コンポーネントの少なくとも1つのアプリケーション固有の特徴を示す。
【0015】
本発明の実施形態は、以下の特徴の1又はそれ以上を含むことができる。コンピュータ可読媒体は、コンポーネントに関連する署名局の証明書を受け取るためのコンピュータにより実行可能な命令をさらに含むことができ、上記リスクインジケータは、この証明書及び動作に基づく。セキュリティ制限されたネイティブオペレーティングシステム動作は、ファイルにアクセスし、ネットワークにアクセスし、ディスプレイ装置にアクセスし、又はこれらの組み合わせを行うことができる。
【0016】
一般に、第7の態様では、本発明は、ウェブページに関連するブラウザベースのプログラムコードが、ブラウザホストコンピュータのネイティブオペレーティングシステムリソースに選択的にアクセスできるようにするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体を特徴とする。この方法は、インプリメンテーション機能と、ブラウザベースのプログラムコードがこのインプリメンテーション機能を呼び出せるようにするインターフェイスとを含むコンポーネントを受け取るステップを含み、このインプリメンテーション機能は、ブラウザホストコンピュータのユーザから許可を受け取ったことに応答してブラウザホストコンピュータ上で制限されたシステム動作を実行して制限されたシステム動作にアクセスし、方法はさらに、ブラウザベースのプログラムコードによるインターフェイスの呼び出しに応答して、制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するステップと、ユーザから肯定的な応答を受け取ったことに応答してインプリメンテーション機能を呼び出して制限されたシステム動作を実行するステップとを含む。
【0017】
一般に、第8の態様では、本発明は、コンピュータにより実行可能なコードのコンポーネントを実行する許可の入力要求メッセージを表示するためのコンピュータにより実行可能なコードを含むコンピュータ可読媒体を特徴とし、この入力要求メッセージは、コンポーネントに関連するリスクインジケータに基づくとともに、コンポーネントに関連する少なくとも1つの許可要件にさらに基づき、またこの入力要求メッセージは、許可要件に関連する動作の記述を含み、この記述は、少なくとも1つのアプリケーション固有の特徴を示し、ユーザから入力要求メッセージに対する肯定的な応答を受け取ったことに応答して、コンポーネントが許可要件により指定された動作を実行するための許可を認める。
【0018】
一般に、第9の態様では、本発明は、プロセッサと、プロセッサに結合されたメモリと、メモリに提供されるとともに、プロセッサにより、サーバコンピュータにおいてクライアントコンピュータにコンピュータプログラムコードを提供するように実行可能なプログラム命令とを含むシステムを特徴とし、このプログラムコードは、制限されたシステム動作を呼び出すための少なくとも1つのコンポーネント動作を有する少なくとも1つのコンポーネントを含み、コードは、ウェブ文書に関連するスクリプトコードによるコンポーネントの呼び出しに応答してウェブブラウザが実行するためのものであり、コードは、ウェブブラウザを介してユーザから入力を受け取ったことに応答して制限されたシステム動作を呼び出すためのものであり、この入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための承諾を非明示的に認める。
【0019】
同じ部分を同じ数字によって示すことができる添付図面の図に関連して行う以下の説明を参照することにより、本出願を最も良く理解することができる。
【図面の簡単な説明】
【0020】
【図1A】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図1B】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図1C】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図1D】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図1E】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図2】本発明の実施形態によるコンポーネントに関する情報を示す図である。
【図3】本発明の実施形態によるコンポーネントを実行する許可を要求する入力要求メッセージを示す図である。
【図4】本発明の実施形態によるファイルアップロードコンポーネントを示す図である。
【図5】本発明の実施形態によるファイルアップロードコンポーネントを示す図である。
【図6】本発明の実施形態における処理機能を実現するために使用できる代表的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0021】
以下の説明は、当業者が本発明を実施及び使用できるようにするために提供し、特定の用途及びこれらの要件との関連において提供するものである。当業者には、実施形態に対する様々な修正が容易に明らかになるであろうし、本明細書で定義される一般原理を、本発明の思想及び範囲から逸脱することなく他の実施形態及び用途に適用することもできる。さらに、以下の説明では、説明を目的として数多くの詳細を示している。しかしながら、当業者であれば、これらの特定の詳細を使用せずに本発明を実施できることを理解するであろう。その他の場合、本発明の説明を不必要な詳細によって曖昧にしないために、公知の構造及び装置についてはブロック図形式で示している。従って、本発明は、図示の実施形態に限定されることを意図するものではなく、本明細書に開示する原理及び特徴と一致する最も広い範囲を許容すべきものである。
【0022】
本発明は、特定の実施形態及び例図に関連して説明しているが、当業者であれば、本発明が、説明する実施形態又は図に限定されるものではないことを理解するであろう。当業者であれば、必要に応じてハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせを使用して様々な実施形態の動作を実現できることを理解するであろう。例えば、ソフトウェア、ファームウェア、又は配線論理の制御下でプロセッサ又はその他のデジタル回路を使用していくつかの処理を実行することができる。(記載する機能を実施する技術の当業者であれば理解するであろうが、本明細書における「論理」という用語は、固定ハードウェア、プログラマブル論理及び/又はこれらの適当な組み合わせを意味する。)ソフトウェア及びファームウェアをコンピュータ可読媒体に記憶することができる。当業者には周知のように、アナログ回路を使用してその他のいくつかの処理を実施することができる。また、本発明の実施形態では、メモリ又はその他の記憶装置、並びに通信コンポーネントを使用することができる。
【0023】
図1A〜図1Eは、本発明の実施形態によるウェブブラウザ104内のコンポーネント148を実行するためのプラットフォームを示す図である。図1Aは、プラットフォームの機能ユニットの全体的な図を示しており、図1B〜図1Eは、特定の機能ユニットのより詳細な図を示している。コンポーネント148は、例えば、通常はJavaScript(商標)などのウェブベースのコードが利用できないサービスを提供する、ウェブブラウザ104内のコンピュータプログラムコードモジュールであってもよい。これらのサービスは、例えば、ドラッグアンドドロップ動作、テキストトゥスピーチ動作、及びその他の制限された又はネイティブシステム動作及びリソース130を含む。ソフトウェア開発者は、コンポーネントにより提供される1又はそれ以上の動作を指定するインターフェイス162、及びその動作のインプリメンテーション164を定義することにより、追加コンポーネント148を追加することができる。コンポーネントの例としてFlickrUploaderコンポーネントが挙げられ、このコンポーネントは、ユーザのコンピュータからのファイルを、FlickrUploaderコンポーネントによってウェブブラウザ104内に提供されるユーザインターフェイス領域にドラッグアンドドロップすることにより、Flickr(登録商標)オンラインフォトシェアリングサービスに画像をアップロードするためのドラッグアンドドロップユーザインターフェイスを提供する。他のコンポーネント例として、テキストトゥスピーチコンポーネント及び(ImageAlterという名前の)画像処理コンポーネントが挙げられる。ウェブサーバからウェブページの一部としてダウンロードされたJavaScriptコードなどの、ユーザが提供するブラウザベースのプログラムコード107がコンポーネント148を利用できるようになる。プラグインインターフェイス108及びデーモン140を含む図1Aのプラットフォーム例は、このようなブラウザベースのプログラムコードがコンポーネント148を使用できるようにする。コンポーネント148は、ウェブブラウザ104内で利用できないはずの機能を提供するので、コンポーネント148は、ウェブページ106が利用できるエンドユーザマシン102の機能セットを拡張する。コンポーネントにより提供される機能は、有害な悪用を受ける可能性のある制限されたシステム動作及びリソースを使用することが多いので、コンポーネントがこれらの制限された動作及びリソースを、エンドユーザが明示的又は非明示的に承認する方法で使用することを確実にするための効果的なセキュリティ対策が必要とされる。
【0024】
システム102に含まれるコンポーネント実行論理140は、コアサービス142と、Cプロバイダインターフェイス及びRuby(商標)インタープリテッドプログラミング言語プロバイダインターフェイスなどのコンポーネントプロバイダインターフェイス146とを提供する。本明細書ではC及びRubyについて説明するが、コンポーネントプロバイダインターフェイス146は、C++、Javaなどのその他の言語をサポートすることもできる。コンポーネント実行論理140は、少なくとも1つのコンポーネント160を含むコンポーネントセット148を含む。個々のコンポーネントは、(単複の)インプリメンテーション機能164及びこの(単複の)インプリメンテーション機能164を記述する(単複の)インターフェイス定義162を含む。このインターフェイス定義は、例えば、コンポーネント160が提供してインプリメンテーション164が実装する(単複の)動作の名前及びパラメータを記述するJSONマニフェストファイルであってもよい。1つの例では、(単複の)インプリメンテーション機能164が、ブラウザホストコンピュータのユーザから(単複の)動作の許可を受け取った場合、ブラウザホストコンピュータ102上で(単複の)制限されたシステム動作を実行する。すなわち、このインプリメンテーション機能はユーザに、ファイル又はネットワーク接続を開いたり、ネットワーク接続を介して通信したり、又はプリンタ、ボイスシンセサイザ又は記憶装置などのシステムリソースにアクセスしたりなどの機能の実行時に行われる、特定の制限された又はセキュリティセンシティブな動作を承認するよう入力要求メッセージを表示する。個々のインプリメンテーション機能は、適当なレベルのセキュリティ入力要求メッセージの粒度を選択することができる。例えば、インプリメンテーション機能は、個々のファイルアクセス、全てのファイルアクセス、又はウェブブラウザセッション時間中のファイルアクセスなどに関してユーザに入力要求メッセージを表示することができる。当業者には公知のように、ネイティブコードを使用して(単複の)インプリメンテーション機能の少なくとも一部を実行することができる。
【0025】
制限されたシステム動作は、例えばネイティブ機能(すなわち、C又はC++などの言語から呼び出すことができ、ネイティブ機能に直接アクセスしないRubyなどの言語でコンポーネント148を実装できるという理由で通常はコンポーネント148が直接利用できない機能)であってもよい。ネイティブ機能は、場合によってはユーザ又はエンドユーザマシン102に関連するユーザのログインクレデンシャル又はデジタル証明書を提供してユーザの識別情報及びアクセス許可を確立することにより、システムリソースにアクセスする。ネイティブ機能は、例えば出力装置上に情報を表示し、及び/又は入力装置から情報を受け取り、或いはドラッグアンドドロップ、テキストトゥスピーチ、ファイルブラウジングなどのオペレーティングシステム固有の機能を実行することができる。ネイティブ機能は、磁気ディスク、光ディスク、半導体ベースメモリなどに記憶されたデータにアクセスすることができる。
【0026】
このような制限されたシステム動作には、機械レベルの命令にコンパイルされたC又はC++などの言語のコードなどのネイティブコードによってしかアクセスすることができない。Java、JavaScript、及びRubyなどのウェブブラウザ内で通常サポートされているプログラミング言語は、いくつかのネイティブオペレーティングシステム又はハードウェア機能にアクセスするための機能を有しておらず、或いは、たとえ言語がこの機能を有していたとしても、このような機能への制限のないアクセスによって引き起こされるセキュリティリスクに起因して、機能がウェブブラウザ104によって無効にされることが多い。プラグインインターフェイス108は、コンポーネント実行論理140を提供することにより、(ウェブサーバ100からダウンロードされた、ユーザが提供するJavaScriptコードなどの)ブラウザベースのコード107がこのような制限された機能にアクセスできるようにし、開発者はこのコンポーネント実行論理140により、いくつかの一般的な機能に関して、開発者が提供するコンポーネントインプリメンテーション164のネイティブコード部分を介して、又は内蔵されたネイティブコードを介してこのような機能にアクセスするコンポーネント148を実装できるようになる。1つの例では、プラグインインターフェイス108が、ActiveX又はNPAPIなどのブラウザプラグインアプリケーションプログラミングインターフェイス(API)を介してウェブブラウザ104とやりとりするブラウザプラグインである。制限された動作の呼び出しをエンドユーザが承認していることを検証するためのセキュアなユーザ入力要求メッセージなどのセキュリティチェックをコンポーネントインプリメンテーション164に含めることにより、或いは、制限された機能を呼び出す前に、コンポーネントインプリメンテーション164及び/又はプラグイン共通ライブラリ117によって、エンドユーザが(IRC接続を開くための許可などの)特定の種類の許可を利用できるように要求することにより、ブラウザベースのプログラムコード107、並びに(ネイティブ及び非ネイティブコード部分を両方含む)コンポーネント148は、許可されていない制限されたシステム動作を使用できないようにされる。
【0027】
コアインターフェイス144は、ユーザインターフェイスドラッグアンドドロップ、ファイルアクセス、セキュアなユーザ入力要求メッセージ、テキストトゥスピーチ、及びGPSインターフェイスなどのオペレーティングシステム又はハードウェア機能にアクセスするためのネイティブインプリメンテーションを含む。これらの事前に定めたネイティブインプリメンテーションにJavaScript及びRubyなどの共通言語からアクセスするための内蔵型、すなわち事前に定義されたコンポーネントが提供される。コンポーネント148は、ドラッグアンドドロップ、ファイルアクセス、セキュアなユーザ入力要求メッセージ、テキストトゥスピーチ、GPSなどのためのコンポーネントのような事前に定義されたコンポーネントを含む。
【0028】
1つの例では、配信サーバ150からインターネットなどのコンピュータネットワークを介してモジュールを受け取るインストレーションデーモン170により、プラグインインターフェイス108、コアサービス142、及びコンポーネント148を含むシステムモジュールがエンドユーザマシン102にインストールされる(すなわち、実行のために利用できるようになる)。インストレーションデーモン170はユーザによりインストールされ、これが、ユーザのマシン102にシステムモジュールをインストールするために使用するユーザのアクセスクレデンシャルを受け継ぐ。システムモジュールは、ユーザのアクセスクレデンシャルを受け継ぎこれらのクレデンシャルを使用して、ネイティブコードを実行し制限されたシステム動作にアクセスする。
【0029】
ウェブブラウザ104は、ウェブサーバ100から受け取ったウェブページ106を含む。ウェブページは、ユーザが提供するJavaScriptコード107を含み、又はこれを参照することができる。JavaScriptコード107はブラウザベースのコード例であり、これは、呼び出し可能な、すなわちウェブブラウザ104によって呼び出すことができるコンピュータプログラムコードということもできる。ウェブブラウザ104はまた、ブラウザ固有のプラグインAPI116とやりとりするために汎用ブラウザプラグインAPI114を使用するプラグインインターフェイス108も含み、これがさらに、汎用ブラウザプラグインAPI114をブラウザ104にインターフェイス接続するためにブラウザコア118とやりとりする。プラグインアダプタレイヤ112は、(JavaScriptなどの)ユーザが提供するスクリプトコード107と、通常はウェブブラウザ104によってウェブページ106に提供されるスクリプティング言語コード実行環境で利用できない制限されたシステム動作を呼び出すことができる(C又はC++などの)ネイティブコードプラグイン共通ライブラリ117とやりとりする(これもJavaScriptなどの)汎用ブラウザプラグインAPIとの間のインターフェイスを提供する。プラグインアダプタ112は、例えば、ブラウザベースのプログラムコード107からのコンポーネント呼び出し命令に応答して呼び出される。汎用ブラウザプラグインAPI114により、例えばユーザのJavaScript107に結果又は通知を提供するコールバック呼び出しの形でプラグインアダプタ112を逆に呼び出すことができる。
【0030】
コア論理140は、上述したような1又はそれ以上の言語固有のコンポーネントプロバイダインターフェイス146を含む。デーモン、すなわちバックグラウンドで及び/又は特定のユーザに関係なく実行され、1又はそれ以上のプラグインインターフェイス108と通信する処理としてコンポーネント実行論理140を実装することができる。コア論理デーモン140は、デーモンが初期化された場合、又はコンポーネント160に対する要求を受け取った場合などにコンポーネント148の各々ごとにインターフェイス及びインプリメンテーションをロードする。コンポーネントインプリメンテーションは、(C言語コンポーネントのためのダイナミックライブラリオープンコール、或いはRubyコンポーネントのための適当なRubyロード動作のような)コンポーネント164を記述する言語の必要に応じて、動的ローディング又はリンキング処理を使用してロードされる。個々のコンポーネントプロバイダインターフェイス146は、プラグインアダプタ112からコンポーネント呼び出し要求を受け取る。1つの例では、コンポーネント呼び出し要求は、ブラウザ処理の一部であるプラグインアダプタ112から、コア論理デーモン処理140の一部であるコアサービス142のコアインターフェイス144へのプロセス間通信を介した送信に適するコンポーネント呼び出し命令のシリアル化バージョンである。コアインターフェイス144は、シリアル化した呼び出し命令を、対応するコンポーネント160の適当なインプリメンテーション機能を呼び出すコンポーネントプロバイダインターフェイス146へ転送し、この場合、コンポーネント呼び出し要求内で機能及びコンポーネントが指定される。1つの例では、プロバイダインターフェイス論理146が、動作の完了に応答してブラウザホストコンピュータのユーザからの許可を取り消すことができる。別の例では、プロバイダインターフェイス論理が、ブラウザベースのプログラムコードに関連するネットワークセッションの終了に応答してブラウザホストコンピュータのユーザからの許可を取り消すことができる。
【0031】
プロバイダインターフェイス146は、プラグインアダプタ論理にインターフェイス定義を伝えることができる。タイプのイントロスペクションを提供するRubyなどの言語では、ユーザにより提供されるコンポーネントインプリメンテーションからインターフェイス定義を自動的に取得することができる。プラグインアダプタ112は、インターフェイス定義をコンポーネントから受信することができる。
【0032】
プロバイダインターフェイス146は、配信サーバ150、記憶装置、又はその他のデータソースから、(単複の)コンポーネント148をロードすることができる。(単複の)コンポーネント148は、例えば共有ライブラリであってもよく、またインターフェイス定義、インターフェイスのインプリメンテーション、及びインターフェイスの文書化を含むパッケージであってもよい。(単複の)コンポーネント148は、いずれかの信頼できるエンティティにより提供することができる。インプリメンテーションにより、システムリソース上のあらゆる動作の実行前にユーザ許可が求められ、これが受け取られていることが確実である場合、個々のコンポーネント148の動作は実質的にセキュアである(すなわち、セキュリティ違反を生じる可能性があるいずれのシステムリソースにもアクセスしない)。ユーザが提供するJavaScriptは、通常は入力要求メッセージに対して応答を行うことができないので、ユーザに入力要求メッセージが表示されている限りコンピュータ102上で悪意ある行為を実行できなくなる。
【0033】
インプリメンテーション機能は結果を提供することができ、この場合プロバイダインターフェイス論理及びプラグインアダプタ論理が、ブラウザベースのプログラムコードに結果を伝達すなわち転送する。すなわち、(単複の)コンポーネント148からユーザが提供するJavaScriptへ応答を返すことができる。
【0034】
特定のコンポーネントを署名した証明書及びコンポーネントに関する全ての関連情報に応じて、コンポーネントの実行を許可することのリスクについての重要な理解をエンドユーザに提供することができる。コンポーネントがウェブページによって要求される場合、システムはコンポーネント記述を取得する。これらの記述には署名があっても又は無くてもよい。無署名のコンポーネントは「匿名」であり、「サンドボックス」コンポーネントとして実行される。署名されたコンポーネントのリスクは、これらがそれによって署名された証明書に基づいて動的かつセキュアに決定される。この段階的アプローチは、セキュアコンポーネントの分散開発を可能にする。コンポーネントにより提供された動作を実行するための許可を求める入力要求メッセージがユーザに提示される。ユーザに提示される入力要求メッセージの種類及び性質は、コンポーネントのリスク及び特定のコンポーネント動作に基づく。
【0035】
上述したように、コンポーネントに関して「リスク格付け」を生成して、ユーザがユーザのコンピュータ上でコンポーネントを実行できるかどうかを判定できるようにすることができる。リスク格付けは、コンポーネントを署名した証明書及びコンポーネントに関するその他の情報に基づく。コンポーネントを署名した証明書は、コンポーネントのプロバイダを、コンポーネントがオフィシャルコンポーネントであると考えられる場合には信頼できる権威あるエンティティとして、又は信頼できる権威が(発行者などの)コンポーネントプロバイダの識別情報が正しいことを保証する場合にはサードパーティコンポーネントとして、又は信頼できる権威がコンポーネントプロバイダについて知っている場合には独立コンポーネントとして、又は信頼できる権威がコンポーネントのインストレーション又は実行に対して警告する場合には匿名のコンポーネントとして識別する。ユーザがコンポーネントを実行するための許可を求められた場合、このリスク格付けがユーザに伝えられる。1つの例では、コンポーネントにより提供される1又はそれ以上の動作が呼び出された場合、コンポーネントが実行する特定の制限されたシステム動作を実行するための許可を求める要求の形でリスク格付けがユーザに表示される。1つの例では、ブラウザがスクリプトコードを含むウェブページを受け取ったこと応答して初期化を行うことができる場合、コンポーネントの初期化に応答して許可を求める要求が表示され、スクリプトコードは、コンポーネントの(方法、手順、又は機能などの)動作を呼び出す記述を含む。別の例では、コンポーネント動作の実行前に、スクリプトコードによる特定の動作の呼び出しに応答して許可を求める要求が表示される。
【0036】
1つの例では、リスク格付けが、低リスクから高リスクまでの範囲に及ぶ複数のリスク層内の層に対応する。層化したリスク格付けシステムを提供して、ユーザが特定のコンポーネントを使用する際に発動すべき警告のレベルを指示する。1つの例では、複数の層の個々の1層が上述したようなリスク格付けに対応し、すなわちリスクが、コンポーネントを署名した証明書に基づく。ファイル読み取りなどの制限された動作を実行するために特定のリソースへのアクセスを必要とするコンポーネントにより、ユーザに入力要求メッセージが提示される。入力要求メッセージは、コンポーネントのリスクによって変化する。例えば「非常に低いリスク」などのリスクに基づく短いフレーズとして、又は例えば「コンピュータに記憶されているピクチャを消去又は上書きする非常に低いリスク」などの、リスク及びコンポーネントが呼び出すことを予想する動作に基づくより詳細なフレーズとしてユーザにリスクを提示することができる。
【0037】
1つの例では、4つのリスク層が設けられ、コンポーネントを層の1つに関連付けることができる。リスク格付けを層の各々に関連付けることができる。

【0038】
このシステムは、コンポーネントのセキュアな外部オーサリングを提供する。信頼できる権威は「ゲートキーパー」の役目を果たし、これらの様々なエンティティに署名証明書を発行する。特定のコンポーネントを署名した証明書及びこのコンポーネントを記述する関連情報に応じて、コンポーネントのリスクの重要な記述を生成してユーザに提示することができる。すなわち、リスクレベルは証明書の信頼度に基づき、信頼度の高い証明書のリスクが最も低い。
【0039】
1つの例では、ウェブページ内のスクリプトコードによってコンポーネントが呼び出される場合のようにコンポーネントが使用される場合にコンポーネント記述が取得される。これらの記述には署名があっても又は無くてもよい。無署名のコンポーネントは「匿名」であり、保護された「サンドボックス」環境で実行される。署名入りコンポーネントのリスクレベルは、コンポーネントがそれによって署名された証明書に基づいて動的かつセキュアに決定される。この段階的アプローチは、分散したコンポーネント開発を可能にする。さらに、ハイリスクなクラスのコンポーネントの実行をデフォルトで許可しないようにすることができ、これにより平均的ユーザに対するリスクを最小にする一方で、コンポーネント開発者がほとんどの種類のシステムリソースを使用できるようにする。
【0040】
1つの例では、コンポーネント許可オブジェクトを提供して、許可オブジェクトに関連する特定の動作を実行するための許可を表す。コンポーネント許可は、名前及び記述を含む。例えば、チャットサーバに接続するための許可を表す許可ConnectToChatServerは、「IRC(チャット)ホストへの接続を行う」という関連する記述を有することができる。コンポーネント許可は、チャットサーバへの接続などのアプリケーション固有の動作のようなユーザにとって重要な動作を表す。同様に、コンポーネント許可の記述は、ユーザにとって重要であるという観点から許可を記述するものであり、例えば、「IRC(チャット)ホストへの接続を行う」の方が、「ネットワーク接続を開く」又は「6667〜7002の範囲のポートでネットワーク接続を開く」よりも重要である。「IRC(チャット)ホスト」という記述部分は、IRC又はチャットホストなどのアプリケーション固有の機能を示す。ポート6667〜7002をリストする記述は、アプリケーションについて記載するものでなければ特定のアプリケーションを示すことはなく、従ってアプリケーション固有の機能を示すものではない。
【0041】
1つの例では、許可オブジェクトに関する要件をセキュリティセンシティブなコンポーネント動作に関連付けることができ、このコンポーネントは、コンポーネントの初期化中又は初期処理中に上述したConnectToChatServer許可のような対応する許可オブジェクトを取得することを求めることができる。コンポーネントを実行すべき場合、動作を呼び出すための許可を求める。本明細書の他の箇所で説明するようなセキュアなユーザ入力要求メッセージを使用してユーザに入力要求メッセージを表示することにより、動作に必要な許可オブジェクトを取得することができる。ユーザが、行うべき動作を記述する入力要求メッセージに対して肯定的な「はい」で応答した場合、動作を呼び出すための許可がユーザに与えられる。別の例では、ユーザが、セキュアなユーザ入力要求メッセージと置き換えることができる関連するデジタル証明書を有することにより、ユーザに動作を呼び出すための許可を与えることができる。この動作を、必要な最大リスクレベルに関連付けることにより、動作の必要な最大リスクレベル以下のリスクレベルを有する証明書を有するユーザが動作を実行できるようにすることができる。
【0042】
例えば、チャットコンポーネントは、チャットサーバへのネットワーク接続を開く「connect」という名前の動作を含むことができる。チャットコンポーネントは、Rubyなどの1つの言語で部分的に、そしてCなどの第2のネイティブ言語で部分的に実装することができる。ネイティブ言語を実装することは、オペレーティングシステムネットワーク接続機能を直接呼び出すことを含むことができ、この場合、ネイティブ言語を実装することによりユーザに関連する許可の存在がチェックされ、この許可は、ConnectToChatServer許可などのネットワーク接続機能のような実行すべき動作に対応する。(ユーザに関連するような)許可が存在する場合、ネイティブインプリメンテーションは、オペレーティングシステムネットワーク接続機能を呼び出す。許可が存在しない場合、インプリメンテーションは、セキュアなユーザ入力のユーザインターフェイスを呼び出し、「ネットワークを介してチャットサーバと通信する許可を与えますか?このアクションのリスクレベルは低いです。」というような入力要求メッセージをユーザに提示する。この入力は、実行すべきアクションを記述するフレーズを含み、このアクションは、上記の例ではチャットサーバへのネットワーク接続を設定するための「接続」動作であるコンポーネント動作の観点から記述される。入力要求メッセージは、チャットサーバとの通信などのコンポーネント動作の観点から求められる許可を記述する。入力要求メッセージは、低などのリスクレベルを記述する。入力要求メッセージは、コンポーネントのユーザにとってそれほど重要でないサーバ「a.b.com」のポート7000への接続のような基本的なオペレーティングシステム機能の意味とは対照的に、コンポーネント動作の意味論的な意味の観点から動作を記述する。
【0043】
図2は、本発明の実施形態によるコンポーネントのメタデータ情報を示す例示的な図である。図2はコンポーネント例200のプロパティを示しており、コンポーネント名202(ImageAlter)、タイプ204(独立型)、バージョン206(1.0.1)、コアレット(すなわち、コンポーネント)APIバージョン208(3)、記述210(「画像をローカルに変更しHTTPを介して供給するためのImageMagickに基づくコアレット」)、及び動作仕様214及び文書216を含むインターフェイス仕様212を含む。インターフェイス仕様212は、図1Aのコンポーネント実行論理140によって使用され、(インターフェイス仕様212により指定されるような)インターフェイス及びインプリメンテーションをコンポーネント148として登録する。1つの例では、コンポーネント実行論理140が、個々の動作名及びパラメータタイプをインターフェイス仕様212から抽出することにより、コンポーネントのインターフェイスを決定することができる。インプリメンテーションは、例えば、ネイティブオペレーティングシステム機能にアクセスするあらゆる部分の(C++などの言語による)ネイティブインプリメンテーションを含む、ソース、オブジェクト、又はバイトコード形式のRubyなどの言語で実装されるプログラムコードを含むことができる。登録されると、コンポーネントのインターフェイスにより提供される動作をブラウザベースのコード107が使用できるようになる。この例では、インターフェイス212がテキストフォーマットで指定され、Alterという名前の単一の動作を含む。インターフェイス仕様の例として、
Alter(<path>file,<integer>maxwidth,<integer>maxheight,<integer>rotation,<string>quality,<list>effects,<string>formatがある。
【0044】
インターフェイス仕様212の形の追加エントリをメタデータに追加することにより、インターフェイスに追加動作を含めることができる。文書214は、例示的なAlter動作の記述、すなわち「画像を変更し、結果にアクセスできるローカルホストURLを戻す」を提供する。文書214は、統合開発環境などの開発ツールにおいて使用するために自動的に変換することができる。
【0045】
図3は、本発明の実施形態によるコンポーネントを実行するための許可を求める、ウェブブラウザに表示される入力要求メッセージを示す図である。図3は、ホストコンピュータ(この例では、browserplus.yahoo.com)がユーザのコンピュータ上で新しいサービス(すなわち、コンポーネント)を使用及び起動するための許可を求めている旨の入力要求メッセージを表示する入力要求メッセージダイアログボックス300を示している。この入力要求メッセージはユーザに、求められる許可のリスト302を承認前に慎重に見直すように求める。求められる許可302は、ディスプレイデスクトップ通知許可304及びダウンロード及び起動サービス許可306を含む。ディスプレイデスクトップ通知許可は、許可304の記述の隣に表示するチェックマークによって示すように、既にユーザにより許可されている。ダウンロード及び起動許可306は、通知サービスがデスクトップ通知を配信するためのサービスであることを記載する通知サービス記述308を含む、ダウンロード及び起動されるサービスに関するさらなる詳細を含む。拒否ボタン310は、ダウンロード及び起動に対する許可を拒否するためにユーザが選択することができる。許可ボタン312は、ダウンロード及び起動サービスを実行できるようにするために選択することができる。ブラウザベースのコードによりコンポーネントが呼び出された場合、ユーザの定義したコンポーネントのために同様の入力要求メッセージを表示することができる。
【0046】
図4及び図5は、本発明の実施形態によるファイルアップロードコンポーネントの例図である。ファイルアップロードコンポーネント400は、エリア410にピクチャファイルをドラッグアンドドロップできるようにする。その後、コンポーネントによりファイルがFlickr(登録商標)にアップロードされる。図5は、ピクチャディレクトリからアップロードされたピクチャ510を示している。インターフェイスは、ピクチャのサイズを変更するための変換530を適用するためのコンポーネント520も含む。これらのコンポーネントは、ユーザのコンピュータ上に(ImageMagickライブラリなどの)ローカル動作を呼び出してウェブブラウザ内からのピクチャを処理する。
【0047】
1つの例では、コンポーネントが見つからない場合、コンポーネント実行論理140が、あらゆる数の配信サーバに問い合わせを行い、依存関係の解決を含めてコンポーネントを見つけてこれを取り出す。コンポーネント148はバージョン化され、すなわちバージョン番号に関連付けられ、別のコンポーネントにより、又はエンドユーザマシン102のレベルで、プラグインインターフェイス108によりコンポーネントバージョンを要求することができる。1つの例では、コンポーネント148が、メジャーバージョン番号、マイナーバージョン番号、及びミクロバージョン番号を含むバージョンに関連付けられて2.0.1などのバージョンを形成する。コンポーネントは、例えば、コンポーネント自体を記述する名前と組み合わせたコンポーネントプロバイダのインターネットドメイン名によって指定される一意の名前を有する。従って、コンポーネント名の例は、「com.vender.ImageAlter」となる。バージョン指示子は、メジャー及びマイナー、又はメジャー、マイナー、及びミクロ番号を含むことができる。バージョン指示子内に存在する全ての数字がコンポーネントバージョン内の対応する数字と同じである場合、コンポーネントバージョンはバージョン指示子と一致する。1つの例では、コンポーネントに対する要求を満たす方法を決定する際に3つのリストが考えられ、これらは、エンドユーザマシン102上で利用可能なアップデート(優先順位1)、インストールされているコンポーネント(優先順位2)、及び配信サーバ150などの、ネットワークから利用可能なコンポーネント(優先順位3)である。
【0048】
本発明の実施形態により、セキュリティメカニズムが提供される。セキュリティメカニズムは、セキュアなユーザ入力要求メッセージ、非明示的な承諾、及びセキュアなリソース表現を含む。1つの態様では、セキュアなユーザ入力要求メッセージが、実行される特定の動作を記述する入力要求メッセージを有するダイアログボックスを表示することを含む。入力要求メッセージは、コンポーネントが機能するオブジェクト又はサービスの種類を示す少なくとも1つのコンポーネント固有の用語を使用して動作を記述する。例えば、「写真へのアクセスを許可せよ」という入力要求メッセージは「写真」という用語に言及しており、これは写真へのアクセスを許可するためのコンポーネントがその上で動作する種類のオブジェクトである。別の例として、「インスタントメッセージングを介したアクセスを許可せよ」という入力要求メッセージは「インスタントメッセージング」という用語に言及しており、これはインスタントメッセージングへのアクセスを許可するためのコンポーネントがその上で動作する種類のサービスである。1つの例では、コンポーネント固有の用語の方が、コンポーネントが呼び出す(単複の)基本的なオペレーティングシステム機能の記述よりも具体的である。例えば、読み取り許可を与えるためのオペレーティングシステムレベルの動作は、いずれかの特定のアプリケーション又はコンポーネントオブジェクト又はサービスとは無関係に、読み取り許可に関する一般的な記述を有する。
【0049】
本発明の実施形態によれば、非明示的な承諾セキュリティ機能が、動作を実行するための許可を求める明示的な要求に対する反応ではないユーザアクションに応答して、ユーザが動作を実行するための肯定的な承諾を暗示する。非明示的な承諾の例として、リスクがありそうな動作の開始ポイントであるファイルを指定するために、ユーザがコンピュータとやりとりする。コンポーネントはこのやりとりを、ユーザが制限されたシステム動作などの動作をファイル上で実行するための承諾であると解釈することができる。同様に、他のリソースタイプでは、ユーザがコンポーネントのユーザインターフェイスと特定の方法でやりとりすることに応答して、リソースタイプへのアクセスを制御するコンポーネントにより、ユーザがリソースタイプに動作を実行できるようになる。例えば、ユーザのユーザインターフェイスコンポーネントなどとのやりとりは、動作を実行するための許可をユーザが非明示的に承諾することを意味する。例えば、ウェブページを表示するブラウザアプリケーション内にファイルをドラッグするというユーザ動作は、ウェブページに関連するコードが指定されたファイルに対して動作する(例えば、読み取る又は書き込む)ことができるという非明示的な承諾を提供する。
【0050】
別の例では、システムがコンテキスト内ダイアログを表示して、例えば、コンポーネントが要求するユーザ名及びログインクレデンシャルを提供することができる。この入力は、信頼できないウェブページ106の制御外のプラグイン共通ライブラリ117によって表示され、この場合、「Flickrにログインする」のような動作を実行する許可の入力要求メッセージをユーザに表示するのではなく、クレデンシャルの取得をフローに統合することができる。この場合、ユーザは、特定のウェブサイトを使用しながらFlickrクレデンシャルを与えることを拒否することができ、エンドユーザによる知的支出は少ない。しかしながら、最終的な結果は同じことであり、ユーザは、動作を承認することをウェブページの制御外で直接求められる。
【0051】
非明示的な承諾は、複数のユーザインタラクションステップを単一のステップにまとめることを可能にする。非明示的な承諾を使用することで、ユーザは、動作を実行するための許可を明示的に求められなくなる。代わりに、動作を実行するための許可のユーザの承諾がユーザの動作から推測されるようになる。非明示的な承諾は、ウェブインタラクションのセキュリティ及び使い易さを向上させる。Flickrアップロードの例では、例えばフローは以下のようになる。非明示的な承諾を使用しなければ、(1)ユーザが、FlickrにアップロードはするがFlickrの製品ではないページを訪問し、(2)ユーザが、FlickrページにリダイレクトされてFlickrに許可を行い、(3)ユーザがFlickrに対する承認を完了し、(4)ユーザがFlickrページのウィンドウを閉じて元のページに戻り、ボタンをクリックすることにより認証を完了する。
【0052】
非明示的な承諾を使用すれば、同じ認証フローがより少ないステップで行われ、(1)ユーザが、FlickrにアップロードはするがFlickrの製品ではないページを訪問し、(2)元のページの制御外でFlickrに対する承認を処理する「セキュアダイアログ」がページ上に現れ、(3)ユーザがクレデンシャルを入力してokをクリックし、及び(4)元のページは自動的に通知される。非明示的な承諾では、元のページ上でボタンをクリックして認証が完了したことを示すという第1のフローの最終ステップが不要となる。さらに、その後のFlickrサービスのアクセスによって、ユーザのクレデンシャルを自動的にFlickrに提供できるようになり、ログインが失効している場合にユーザが再度クレデンシャルを提供する必要がなくなる。クレデンシャルは、Flickrコンポーネントによりセキュアかつ内密に保持される。
【0053】
Flickrログインの例では、コンポーネントが、Flickrへのログインなどのログインクレデンシャルを求める動作を実行するための許可を求める。ウェブページが、Flickrを承認するための機能を呼び出す。ページの制御外で、(コンポーネント148内に示すFlickerUploaderなどの)Flickrアクセスコンポーネントの指示でコアサービス142により、クレデンシャル及び承認要求の送信に関する指示が行われる。承認要求の完了時に、ウェブページは、「承認」、「ユーザが承認を拒否」、又は「承認失敗(クレデンシャルが不良)」とすることができる戻り値を受け取る。ウェブページは、認証が行われるサイトに関するユーザのクレデンシャル(例えば、ログイン名及びパスワード)にアクセスできないので、セキュリティが拡張される。
【0054】
別の例では、ウェブアクセス可能カメラ(webcam)とやりとりするために、明示的な承諾を使用して、(1)ユーザが、ウェブカム機能を提供するウェブページを訪問し、(2)ユーザが、「ウェブカムから写真を撮る」ボタンをクリックし、(3)ユーザがウェブページの制御外で、写真を撮る許可の入力要求メッセージを表示され、及び(4)ユーザが「取り込み」ボタンをクリックして写真を撮る。非明示的な承諾を使用すれば、同じウェブカムとのやりとりがより少ないステップで行われ、(1)ユーザが、ウェブカムのページを訪問し、(2)現在のウェブカムビューを表示するダイアログがユーザに提示され(このダイアログは、ウェブページの制御外にある)、(3)ユーザが、「取り込み」ボタンをクリックするこれにより、ウェブサイトがウェブカムを使用するための非明示的な承諾を認める。本発明の実施形態によれば、このユーザインタラクションによりセキュアなリソース表現が生成され、これにセキュアなリソース識別子としてのJavaScriptコードでアクセスできるようになる。識別子は、ファイルなどの特定のリソースに関連付けられ、これを(JavaScriptなどの)ブラウザベースのコードによって変更することはできない。1つの態様では、識別子が、参照できるランダムな一意の数字であるが、これを変更して異なるファイル又はその他のリソースを示すことはできない。ファイル選択の有効期間はページの有効期間に基づくので、識別子は、ブラウザによってページが閉じられた後に無効になる。
【0055】
コンポーネントインプリメンテーションは、ウェブページ上の(JavaScriptなどの)ブラウザベースのコードとは無関係にエンドユーザに入力要求メッセージを表示する。従って、コンポーネントコードは、許可の承諾(肯定的)又は拒否(否定的)などの、エンドユーザにより提供される応答に制約される。1つの態様では、記憶された情報にアクセスし、又はこれを削除することができ、或いはネットワーク接続を使用することができるようなセキュリティセンシティブであり得るあらゆる動作が潜在的なセキュリティリスクであり、セキュアなユーザ入力要求メッセージにより、又は1つの例では、動作に対応する証明書検証済み許可オブジェクトを検証することによりこれらの動作を保護すべきである。
【0056】
1つの例では、ホワイトリスト機能を提供して、特定のウェブサイト上の特定のコンポーネント又はこの特定のバージョンの実行を有効又は無効にすることができる。ホワイトリストエントリは、サイトが特定のコンポーネントを使用できるようにする。配信サーバ150が、コンポーネントの使用を許可されたドメインのホワイトリスト、(削除などの)消去のためのコンポーネントのブラックリスト、及び消去のプラットフォームバージョンのブラックリストを含む署名された配信ファイルを配信する。例えば、バージョン1.0.1のコンポーネントにバグがあると分かっている場合、ブラックリスト機能を使用して、バージョン1.0.1を今後実行できないようにすることができる。ホワイトリスト機能は、ユーザにより制御することができる。例えば、音楽サイトは、曲をユーザのApple iTunes(登録商標)音楽プレーヤディレクトリに直接インポートするためのコンポーネントを使用することができる。このコンポーネントは、インポートを一回許可するか、毎回許可するか、或いは許可しないかをユーザに訊ねることができる。
【0057】
1つの例では、図1Aのプラグインインターフェイスプラットフォーム108を使用するクライアントが、コンポーネント及び/又はその特定のバージョンを消去するためのブラックリスト機能を含む。クライアントは、許可バンドルを含むデジタル署名されたバンドルをダウンロードする。このダウンロードは、サーバから受信したメッセージに応答して特定の時間に、又は定期的に、或いはその他の時間に行うことができる。許可バンドルは、消去される1又はそれ以上のコンポーネントと、これに対応するバージョンとをリストする取り消しリストを含む。取り消しリスト上のあらゆるインストール済みコンポーネントが消去され、あらゆるその後の消去されたコンポーネントを再インストールしようとする試みがうまくいかなくなる。プラグインインターフェイスプラットフォーム108は、取り消しリスト内の指定されたエントリにより、これ自体が遠隔で無効にされる。
【0058】
新しいバージョンのコンポーネントを適宜利用可能にすることができる。エンドユーザマシン102にインストールできるコンポーネントの数が多いので、インストールしたコンポーネントを全て最新に保つことは、パフォーマンスに悪影響を与え、及び/又はリソースを過剰に消費する可能性がある。ユーザが、コンポーネントを使用するサイトを訪問すると、サイトは、コンポーネント名、バージョン、及びマイナーバージョントリプレットなどのコンポーネント要件を要件記述として表す。完全な要件が、最後に要求されたものと共に記憶される。アップデートチェックが、期限が過ぎた要件記述を定期的に消去し、残りの現在の要件を満たすとともに現在マシン102にインストールされているより新しいバージョンのコンポーネントであるコンポーネントに関して配信サーバをチェックする。例えば、実行中のコンポーネントを停止することなく、あらゆるこのような新しいバージョンがバックグラウンドでダウンロードされ、アップデートキャッシュに記憶される。その後、ウェブブラウザ104が、利用可能なキャッシュ済みのアップデートにより提供された要件を表すサイトを訪問した場合、ユーザは、ダウンロードしたアップデートをインストールする許可の入力要求メッセージを表示される。例えば、現在の要件を満たすために使用されておらず長時間にわたって使用されていないコンポーネントを見つけることにより、期限を過ぎたコンポーネントを識別して削除することができる。これらのコンポーネントはマシン102から悪影響を最小にして消去される。
【0059】
図6は、本発明の実施形態で処理機能を実現するために使用できる代表的なコンピュータシステム600を示している。例えば、クライアント及びサーバにおいてこの種のコンピュータシステムを使用することができる。当業者であれば、他のコンピュータシステム又はアーキテクチャを使用して本発明を実施する方法を理解するであろう。コンピュータシステム600は、例えば、デスクトップ、ラップトップ又はノートブックコンピュータ、(PDA、携帯電話、パームトップなどの)ハンドヘルドコンピュータ装置、メインフレーム、サーバ、クライアント、又は所与のアプリケーション又は環境に望ましい又は適当とすることができるようなその他のあらゆる種類の専用又は汎用コンピューティング装置を表すことができる。コンピュータシステム600は、プロセッサ604などの1又はそれ以上のプロセッサを含むことができる。例えば、マイクロプロセッサ、マイクロコントローラ又はその他の制御論理などの汎用又は専用処理エンジンを使用してプロセッサ604を実現することができる。この例では、プロセッサ604が、バス602又はその他の通信媒体に接続される。
【0060】
コンピュータシステム600はまた、ランダムアクセスメモリ(RAM)、又は情報及びプロセッサ604により実行される命令を記憶するためのその他の動的メモリなどのメインメモリ608を含むこともできる。メインメモリ608はまた、プロセッサ604により実行される命令の実行中に一時的変数又はその他の中間情報を記憶するためにも使用することができる。同様に、コンピュータシステム600は、読み出し専用メモリ(「ROM」)、又は静的情報及びプロセッサ604のための命令を記憶するための、バス602に結合されたその他の静的記憶装置を含むことができる。
【0061】
コンピュータシステム600はまた情報記憶システム610を含むこともでき、この情報記憶システム610は、例えば、メディアドライブ612及び取り外し可能記憶インターフェイス620を含むことができる。メディアドライブ612は、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光ディスクドライブ、CD又はDVDドライブ(R又はRW)、又はその他の取り外し可能又は固定メディアドライブなどの固定又は取り外し可能記憶媒体をサポートするためのドライブ又はその他のメカニズムを含むことができる。記憶媒体618は、例えば、ハードディスク、フロッピーディスク、磁気テープ、光ディスク、CD又はDVD、或いはメディアドライブ612によって読み取られ書き込まれるその他の固定又は取り外し可能媒体を含むことができる。これらの例が示すように、記憶媒体618は、内部に特定のコンピュータソフトウェア又はデータを記憶するコンピュータ可読記憶媒体を含むことができる。
【0062】
代替の実施形態では、情報記憶システム610が、コンピュータプログラム又は他の命令又はデータをコンピュータシステム600内にロードできるようにするためのその他の同様のコンポーネントを含むことができる。このようなコンポーネントは、例えば、プログラムカートリッジ及びカートリッジインターフェイスなどの取り外し可能記憶ユニット622及びインターフェイス620、取り外し可能メモリ(例えば、フラッシュメモリ又はその他の取り外し可能メモリモジュール)及びメモリスロット、及びソフトウェア及びデータを取り外し可能記憶ユニット618からコンピュータシステム600へ転送できるようにするその他の取り外し可能記憶ユニット622及びインターフェイス620を含むことができる。
【0063】
コンピュータシステム600はまた、通信インターフェイス624を含むこともできる。通信インターフェイス624を使用して、コンピュータシステム600と外部装置との間でソフトウェア及びデータを転送できるようにすることができる。通信インターフェイス624の例として、モデム、(イーサネット(登録商標)又はその他のNICカードなどの)ネットワークインターフェイス、(USBポートなどの)通信ポート、PCMCIAスロット及びカードなどを挙げることができる。通信インターフェイス624を介して転送されるソフトウェア及びデータは、通信インターフェイス624が受信できる電子、電磁、光又はその他の信号とすることができる形の信号である。これらの信号は、チャネル628を介して通信インターフェイス624に提供される。このチャネル628は信号を運ぶことができ、無線媒体、電線又はケーブル、光ファイバ、又はその他の通信媒体を使用して実現することができる。チャネルのいくつかの例として、電話回線、携帯電話リンク、RFリンク、ネットワークインターフェイス、ローカル又はワイドエリアネットワーク、及びその他の通信チャネルが挙げられる。
【0064】
本文書では、「コンピュータプログラム製品」、「コンピュータ可読媒体」、及び同様の用語を、一般に、例えばメモリ608、記憶装置618、又は記憶ユニット622などの媒体を示すために使用することができる。これらの及びその他の形のコンピュータ可読媒体が、プロセッサ604により使用される1又はそれ以上の命令を記憶することに関与して、プロセッサが特定の動作を実行するようにすることができる。一般に、(コンピュータプログラムの形又はその他のグループの形でグループ化することができる)「コンピュータプログラムコード」と呼ばれるこのような命令は、実行時に、コンピュータシステム600が本発明の実施形態の特徴又は機能を実行できるようにする。コードは、特定の動作をプロセッサに直接行わせることができ、これを行うようコンパイルすることができ、及び/又はこれを行うために、他のソフトウェア要素、ハードウェア要素、及び/又は(標準的な機能を実行するためのライブラリなどの)ファームウェア要素と組み合わせることができる。
【0065】
ソフトウェアを使用して要素が実現される実施形態では、例えば、取り外し可能記憶ドライブ614、ドライブ612又は通信インターフェイス624を使用して、ソフトウェアをコンピュータ可読媒体に記憶し、これをコンピュータシステム600にロードすることができる。制御論理(この例では、ソフトウェア命令又はコンピュータプログラムコード)は、プロセッサ604によって実行された場合、プロセッサ604に本明細書で説明するような本発明の機能を実行させる。
【0066】
説明を明確にするために、上記の説明は、本発明の実施形態を異なる機能ユニット及びプロセッサに関して説明していることが理解されよう。しかしながら、本発明から逸脱することなく、異なる機能ユニット、プロセッサ又はドメイン間であらゆる適当な機能の分散を使用できることが理解されよう。例えば、別個のプロセッサ又はコントローラにより実行されるように示している機能を、同じプロセッサ又はコントローラにより実行することができる。従って、特定の機能ユニットへの言及は、厳密な論理的又は物理的構造又は組織を示すものではなく、説明する機能を提供するための適当な手段への言及としてのみ理解すべきである。
【0067】
いくつかの実施形態に関して本発明について説明したが、本発明は、本明細書に示す特定の形に限定されることを意図されるものではない。むしろ、本発明の範囲は、特許請求の範囲によってのみ限定される。さらに、特定の実施形態に関して特徴について説明したように思われるが、当業者であれば、説明した実施形態の様々な特徴を本発明に基づいて組み合わせることができることを理解するであろう。
【0068】
さらに、個々にリストしてはいるものの、複数の手段、要素又は方法ステップを、例えば単一のユニット又はプロセッサによって実行することができる。また、個々の特徴が異なる請求項に含まれることがあるが、場合によってはこれらを有利に組み合わせることができ、異なる請求項に含まれるということにより、特徴を組み合わせることが実現可能及び/又は有利でないことを意味するものではない。また、特徴を1つのカテゴリの請求項に含むということが、このカテゴリへの限定を意味するわけではなく、むしろ必要に応じてこれらの特徴を他の請求項のカテゴリにも等しく適用することができる。
【0069】
さらに、当業者であれば、本発明の思想及び範囲から逸脱することなく様々な修正及び変更を行うことができることが理解されよう。本発明は、上述した例示的な詳細により限定すべきものではなく、特許請求の範囲に基づいて定義すべきものである。
【0070】
上記ではいくつかの例示的な実施形態のみについて詳細に説明したが、当業者であれば、本発明の新規の教示及び利点から著しく逸脱することなく、例示的な実施形態における多くの修正を考え得ることを容易に理解するであろう。従って、このような修正は全て本発明の範囲内に含まれることが意図されている。

【特許請求の範囲】
【請求項1】
少なくとも1つの制限されたシステム動作の実行を引き起こす少なくとも1つのコンポーネント動作を含むコンピュータプログラムコードコンポーネントの、該コンポーネント又は該コンポーネントに関連する記述がそれによって署名されるデジタル証明書に基づくリスク格付けを生成するステップと、
前記コンポーネント動作の記述を生成するステップと、
前記少なくとも1つの制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するステップと、
を含み、前記入力要求メッセージが、前記リスク格付け及び前記コンポーネント動作の記述を含む、
ことを特徴とするコンピュータにより実行される方法。
【請求項2】
リスク格付けを生成するステップが、前記コンピュータプログラムコードコンポーネントの実行を引き起こすためのコンピュータプログラムスクリプトコードを含むウェブページを受け取ることに応答して行われる、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記リスク格付けが、最高リスクレベル及び最低リスクレベルを含む少なくとも2つのリスクレベルを含む、
ことを特徴とする請求項1に記載の方法。
【請求項4】
許可の入力要求メッセージをユーザに表示するステップが、ウェブブラウザが前記スクリプトコードに関連するウェブページを受け取ったこと応答して実行されるコンピュータプログラムスクリプトコードによる最初の前記コンポーネントの参照に応答して行われる、
ことを特徴とする請求項1に記載の方法。
【請求項5】
前記コンピュータプログラムコードコンポーネントが、前記ウェブブラウザが前記スクリプトコードに関連するウェブページを受け取ったこと応答して実行されるコンピュータプログラムスクリプトコードによるウェブブラウザ内のプラグイン実行の呼び出しに応答して実行するためのものである、
ことを特徴とする請求項1に記載の方法。
【請求項6】
許可の入力要求メッセージをユーザに表示するステップが、少なくとも1つの制限されたシステム動作に対応する指定された許可を表示するステップを含むことができ、前記指定された許可が、前記制限されたシステム動作を実行するための前提条件として前記エンドユーザにより承諾される、
ことを特徴とする請求項1に記載の方法。
【請求項7】
ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするためのコンピュータにより実行される方法であって、
サーバコンピュータにおいて、前記制限されたシステム動作を呼び出すための少なくとも1つのコンポーネント動作を有する少なくとも1つのコンポーネントを含むコンピュータプログラムコードを前記クライアントコンピュータに提供するステップを含み、
前記コンピュータプログラムコードが前記コンポーネントインプリメンテーションをさらに含み、該インプリメンテーションは、前記制限されたシステム動作を実行するための前記ユーザからの許可の入力要求メッセージを表示させるとともに、さらに前記ユーザから許可を受け取ったことに応答して、前記制限されたシステム動作を呼び出せしめるように動作可能であり、
前記入力要求メッセージが、前記コンポーネントに関連するリスク格付け及び前記コンポーネント動作に基づく、
ことを特徴とするコンピュータにより実行される方法。
【請求項8】
前記入力要求メッセージが、前記コンポーネントに関連するリスク格付けを含む、
ことを特徴とする請求項7に記載の方法。
【請求項9】
前記プログラムコードがウェブブラウザプラグインを含む、
ことを特徴とする請求項7に記載の方法。
【請求項10】
前記コンポーネントが、複数のリスク層から選択されたリスク層に関連付けられ、前記リスク格付けが、前記リスク層に基づく短いフレーズを含む、
ことを特徴とする請求項7に記載の方法。
【請求項11】
前記リスクインジケータが、前記コンポーネントにより提供される少なくとも1つの動作に基づくフレーズを含む、
ことを特徴とする請求項7に記載の方法。
【請求項12】
前記コンポーネントが、インプリメンテーション機能及び該インプリメンテーション機能を記述するインターフェイス定義を含む、
ことを特徴とする請求項7に記載の方法。
【請求項13】
前記入力要求メッセージが、前記コンピュータの出力装置上に許可の要求を表示する、
ことを特徴とする請求項7に記載の方法。
【請求項14】
前記ユーザから許可を受け取るステップが、前記ユーザから前記コンピュータの入力装置を介して肯定的応答を受け取るステップを含む、
ことを特徴とする請求項7に記載の方法。
【請求項15】
前記コンポーネントに関連する署名局の証明書を受け取るステップをさらに含み、前記リスク格付けが前記証明書にさらに基づく、
ことを特徴とする請求項7に記載の方法。
【請求項16】
前記制限されたシステム動作が、ファイルへのアクセス、ネットワークへのアクセス、ディスプレイ装置へのアクセス、又はこれらの組み合わせを含む、
ことを特徴とする請求項7に記載の方法。
【請求項17】
ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするためのコンピュータにより実行される方法であって、
サーバコンピュータにおいて前記クライアントコンピュータにコンピュータプログラムコードを提供するステップを含み、
前記プログラムコードが、前記制限されたシステム動作を呼び出すための少なくとも1つのコンポーネント動作を有する少なくとも1つのコンポーネントを含み、
前記コードが、ウェブ文書に関連するスクリプトコードによる前記コンポーネントの呼び出しに応答して前記ウェブブラウザにより実行されるためのものであり、
前記コードが、前記ウェブブラウザを介してユーザから入力を受け取ったこと応答して前記制限されたシステム動作を呼び出し、前記入力が、前記動作の実行に関連するアクションを引き起こすためのものであり、前記アクションが、前記動作を実行するための承諾を非明示的に認める、
ことを特徴とするコンピュータにより実行される方法。
【請求項18】
前記アクションが、前記動作を実行する際の少なくとも1つのステップを含む、
ことを特徴とする請求項17に記載の方法。
【請求項19】
ウェブブラウザによるウェブページの受け取りに応答して実行されるコンピュータプログラムスクリプトコードからのコンポーネント動作の呼び出しを受け取るステップを含み、前記コンポーネントが、制限されたシステム動作の実行を引き起こすように動作可能な少なくとも1つのコンポーネント動作を含み、
ウェブブラウザを介してユーザから入力を受け取ったこと応答して、前記コンポーネント動作が前記制限されたシステム動作の実行を引き起こせるようにするステップをさらに含み、前記入力が、前記動作の実行に関連するアクションを引き起こすためのものであり、前記アクションが、前記動作を実行するための許可の明示的な承諾ではなく、前記アクションが、前記動作を実行するための許可を非明示的に承諾する、
ことを特徴とするコンピュータにより実行される方法。
【請求項20】
ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするためのコンピュータにより実行される方法であって、
コンポーネント動作の呼び出しに応答して、制限されたシステム動作を実行するためのユーザからの許可の入力要求メッセージの表示を引き起こすステップと、
前記ユーザから許可を受け取ったことに応答して、前記制限されたシステム動作を呼び出すステップと、
を含み、前記入力要求メッセージが、前記コンポーネント動作が動作するオブジェクト又はサービスを示す、
ことを特徴とするコンピュータにより実行される方法。
【請求項21】
セキュリティ制限された動作を実行するためにコンピュータプログラムコードをウェブブラウザ内で実行できるようにするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体であって、前記命令が、
インターフェイスと、該インターフェイスの少なくとも一部を実現するネイティブ言語インプリメンテーションとを含むコンポーネントをコンピュータネットワークを介して前記ウェブブラウザに提供することを含み、
前記インプリメンテーションは、前記ウェブブラウザ内の前記プラグインコードによる前記インターフェイスの呼び出しに応答して、前記ネイティブ言語インプリメンテーションを呼び出すように動作可能であり、
前記ネイティブ言語インプリメンテーションは、前記動作を実行する許可の入力要求メッセージをユーザに表示するとともに、前記ユーザから許可を受け取ったことに応答して前記動作をさらに呼び出すように動作可能であり、
前記入力要求メッセージが、前記コンポーネントに関連するリスクインジケータに基づくとともに前記コンポーネントに関連する少なくとも1つの許可要件にさらに基づき、前記入力要求メッセージが、前記許可要件に関連する動作の記述を含み、該記述が、前記コンポーネントの少なくとも1つのアプリケーション固有の特徴を示す、
ことを特徴とするコンピュータ可読媒体。
【請求項22】
前記コンポーネントに関連する署名局の証明書を受け取るステップをさらに含み、前記リスクインジケータが、前記証明書及び前記動作に基づく、
ことを特徴とする請求項21に記載のコンピュータ可読媒体。
【請求項23】
前記セキュリティ制限されたネイティブオペレーティングシステム動作が、ファイルへのアクセス、ネットワークへのアクセス、ディスプレイ装置へのアクセス、又はこれらの組み合わせを含む、
ことを特徴とする請求項21に記載のコンピュータ可読媒体。
【請求項24】
ウェブページに関連するブラウザベースのプログラムコードを有効にして、ブラウザホストコンピュータのネイティブオペレーティングシステムリソースに選択的にアクセスするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体であって、前記方法が、
前記制限されたシステム動作にアクセスするために、前記ブラウザホストコンピュータのユーザから許可を受け取ったことに応答して前記ブラウザホストコンピュータ上の制限されたシステム動作を実行するように動作可能なインプリメンテーション機能と、前記ブラウザベースのプログラムコードが前記インプリメンテーション機能を呼び出せるようにするインターフェイスとを含むコンポーネントを受け取るステップと、
前記ブラウザベースのプログラムコードによる前記インターフェイスの呼び出しに応答して、前記制限されたシステム動作を実行する許可の入力要求メッセージを前記ユーザに表示するステップと、
前記ユーザから肯定応答を受け取ったことに応答して、前記インプリメンテーション機能を呼び出して前記制限されたシステム動作を実行するステップと、
を含むことを特徴とするコンピュータ可読媒体。
【請求項25】
コンピュータにより実行可能なコードを含むコンピュータ可読媒体であって、前記コンピュータにより実行可能なコードが、
前記コンピュータにより実行可能なコードのコンポーネントを実行する許可の入力要求メッセージを表示するためのものであり、前記入力要求メッセージが、前記コンポーネントに関連するリスクインジケータに基づくとともに前記コンポーネントに関連する少なくとも1つの許可要件にさらに基づき、前記入力要求メッセージが、許可要件に関連する動作の記述を含み、該記述が、少なくとも1つのアプリケーション固有の特徴を示し、前記コンピュータにより実行可能なコードがさらに、
前記ユーザから前記入力要求メッセージに対する肯定応答を受け取ったことに応答して、前記コンポーネントに対して許可を認めて前記許可要件により指定される動作を実行するためのものである、
ことを特徴とするコンピュータ可読媒体。
【請求項26】
プロセッサと、
前記プロセッサに結合されたメモリと、
前記メモリに提供されるとともに、前記プロセッサにより、サーバコンピュータにおいて前記クライアントコンピュータにコンピュータプログラムコードを提供するように実行可能なプログラム命令と、
を含むシステムであって、
前記プログラムコードが、前記制限されたシステム動作を呼び出すための少なくとも1つのコンポーネント動作を有する少なくとも1つのコンポーネントを含み、
前記コードが、ウェブ文書に関連するスクリプトコードによる前記コンポーネントの呼び出しに応答して前記ウェブブラウザにより実行するためのものであり、
前記コードが、前記ウェブブラウザを介してユーザから入力を受け取ったことに応答して前記制限されたシステム動作を呼び出すように動作可能であり、前記入力が、前記動作の実行に関連するアクションを引き起こすためのものであり、前記アクションが、前記動作を実行するための承諾を非明示的に認める、
ことを特徴とするシステム。
【請求項27】
前記アクションは、前記動作を実行する際の少なくとも1つのステップを含む、
ことを特徴とする請求項26に記載のシステム。

【図1A】
image rotate

【図1B】
image rotate

【図1C】
image rotate

【図1D】
image rotate

【図1E】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2011−514996(P2011−514996A)
【公表日】平成23年5月12日(2011.5.12)
【国際特許分類】
【出願番号】特願2010−549715(P2010−549715)
【出願日】平成21年2月23日(2009.2.23)
【国際出願番号】PCT/US2009/034833
【国際公開番号】WO2009/111195
【国際公開日】平成21年9月11日(2009.9.11)
【出願人】(501438485)ヤフー! インコーポレイテッド (200)
【Fターム(参考)】