(57)【要約】  ウェブブラウザ内のコンピュータプログラムコードによって制限された動作を実行するための技術を提供し、非明示的又は明示的な承諾を受け取った場合、コードが、制限された動作を呼び出すことを許可される。このような技術は、コンピュータプログラムコードコンポーネントのリスク格付けを生成するステップを含むことができ、コンポーネントは、少なくとも１つの制限されたシステム動作を実行するとともに制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するための少なくとも１つのコンポーネント動作を含み、この入力要求メッセージは、コンポーネント動作のリスク格付け及び記述を含む。プログラムコードは、ウェブブラウザプラグインを呼び出すウェブページに関連するスクリプトコードを含むことができ、このスクリプトコードがさらに、制限されたシステム動作を呼び出す。コードは、ウェブブラウザを介してユーザから入力を受け取ったこと応答して、制限されたシステム動作を呼び出すことができ、この入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための承諾を非明示的に認める。【選択図】図１Ａ
2011514996.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの制限されたシステム動作の実行を引き起こす少なくとも１つのコンポーネント動作を含むコンピュータプログラムコードコンポーネントの、該コンポーネント又は該コンポーネントに関連する記述がそれによって署名されるデジタル証明書に基づくリスク格付けを生成するステップと、
前記コンポーネント動作の記述を生成するステップと、
前記少なくとも１つの制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するステップと、
を含み、前記入力要求メッセージが、前記リスク格付け及び前記コンポーネント動作の記述を含む、
ことを特徴とするコンピュータにより実行される方法。
【請求項２】
リスク格付けを生成するステップが、前記コンピュータプログラムコードコンポーネントの実行を引き起こすためのコンピュータプログラムスクリプトコードを含むウェブページを受け取ることに応答して行われる、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記リスク格付けが、最高リスクレベル及び最低リスクレベルを含む少なくとも２つのリスクレベルを含む、
ことを特徴とする請求項１に記載の方法。
【請求項４】
許可の入力要求メッセージをユーザに表示するステップが、ウェブブラウザが前記スクリプトコードに関連するウェブページを受け取ったこと応答して実行されるコンピュータプログラムスクリプトコードによる最初の前記コンポーネントの参照に応答して行われる、
ことを特徴とする請求項１に記載の方法。
【請求項５】
前記コンピュータプログラムコードコンポーネントが、前記ウェブブラウザが前記スクリプトコードに関連するウェブページを受け取ったこと応答して実行されるコンピュータプログラムスクリプトコードによるウェブブラウザ内のプラグイン実行の呼び出しに応答して実行するためのものである、
ことを特徴とする請求項１に記載の方法。
【請求項６】
許可の入力要求メッセージをユーザに表示するステップが、少なくとも１つの制限されたシステム動作に対応する指定された許可を表示するステップを含むことができ、前記指定された許可が、前記制限されたシステム動作を実行するための前提条件として前記エンドユーザにより承諾される、
ことを特徴とする請求項１に記載の方法。
【請求項７】
ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするためのコンピュータにより実行される方法であって、
サーバコンピュータにおいて、前記制限されたシステム動作を呼び出すための少なくとも１つのコンポーネント動作を有する少なくとも１つのコンポーネントを含むコンピュータプログラムコードを前記クライアントコンピュータに提供するステップを含み、
前記コンピュータプログラムコードが前記コンポーネントインプリメンテーションをさらに含み、該インプリメンテーションは、前記制限されたシステム動作を実行するための前記ユーザからの許可の入力要求メッセージを表示させるとともに、さらに前記ユーザから許可を受け取ったことに応答して、前記制限されたシステム動作を呼び出せしめるように動作可能であり、
前記入力要求メッセージが、前記コンポーネントに関連するリスク格付け及び前記コンポーネント動作に基づく、
ことを特徴とするコンピュータにより実行される方法。
【請求項８】
前記入力要求メッセージが、前記コンポーネントに関連するリスク格付けを含む、
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記プログラムコードがウェブブラウザプラグインを含む、
ことを特徴とする請求項７に記載の方法。
【請求項１０】
前記コンポーネントが、複数のリスク層から選択されたリスク層に関連付けられ、前記リスク格付けが、前記リスク層に基づく短いフレーズを含む、
ことを特徴とする請求項７に記載の方法。
【請求項１１】
前記リスクインジケータが、前記コンポーネントにより提供される少なくとも１つの動作に基づくフレーズを含む、
ことを特徴とする請求項７に記載の方法。
【請求項１２】
前記コンポーネントが、インプリメンテーション機能及び該インプリメンテーション機能を記述するインターフェイス定義を含む、
ことを特徴とする請求項７に記載の方法。
【請求項１３】
前記入力要求メッセージが、前記コンピュータの出力装置上に許可の要求を表示する、
ことを特徴とする請求項７に記載の方法。
【請求項１４】
前記ユーザから許可を受け取るステップが、前記ユーザから前記コンピュータの入力装置を介して肯定的応答を受け取るステップを含む、
ことを特徴とする請求項７に記載の方法。
【請求項１５】
前記コンポーネントに関連する署名局の証明書を受け取るステップをさらに含み、前記リスク格付けが前記証明書にさらに基づく、
ことを特徴とする請求項７に記載の方法。
【請求項１６】
前記制限されたシステム動作が、ファイルへのアクセス、ネットワークへのアクセス、ディスプレイ装置へのアクセス、又はこれらの組み合わせを含む、
ことを特徴とする請求項７に記載の方法。
【請求項１７】
ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするためのコンピュータにより実行される方法であって、
サーバコンピュータにおいて前記クライアントコンピュータにコンピュータプログラムコードを提供するステップを含み、
前記プログラムコードが、前記制限されたシステム動作を呼び出すための少なくとも１つのコンポーネント動作を有する少なくとも１つのコンポーネントを含み、
前記コードが、ウェブ文書に関連するスクリプトコードによる前記コンポーネントの呼び出しに応答して前記ウェブブラウザにより実行されるためのものであり、
前記コードが、前記ウェブブラウザを介してユーザから入力を受け取ったこと応答して前記制限されたシステム動作を呼び出し、前記入力が、前記動作の実行に関連するアクションを引き起こすためのものであり、前記アクションが、前記動作を実行するための承諾を非明示的に認める、
ことを特徴とするコンピュータにより実行される方法。
【請求項１８】
前記アクションが、前記動作を実行する際の少なくとも１つのステップを含む、
ことを特徴とする請求項１７に記載の方法。
【請求項１９】
ウェブブラウザによるウェブページの受け取りに応答して実行されるコンピュータプログラムスクリプトコードからのコンポーネント動作の呼び出しを受け取るステップを含み、前記コンポーネントが、制限されたシステム動作の実行を引き起こすように動作可能な少なくとも１つのコンポーネント動作を含み、
ウェブブラウザを介してユーザから入力を受け取ったこと応答して、前記コンポーネント動作が前記制限されたシステム動作の実行を引き起こせるようにするステップをさらに含み、前記入力が、前記動作の実行に関連するアクションを引き起こすためのものであり、前記アクションが、前記動作を実行するための許可の明示的な承諾ではなく、前記アクションが、前記動作を実行するための許可を非明示的に承諾する、
ことを特徴とするコンピュータにより実行される方法。
【請求項２０】
ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするためのコンピュータにより実行される方法であって、
コンポーネント動作の呼び出しに応答して、制限されたシステム動作を実行するためのユーザからの許可の入力要求メッセージの表示を引き起こすステップと、
前記ユーザから許可を受け取ったことに応答して、前記制限されたシステム動作を呼び出すステップと、
を含み、前記入力要求メッセージが、前記コンポーネント動作が動作するオブジェクト又はサービスを示す、
ことを特徴とするコンピュータにより実行される方法。
【請求項２１】
セキュリティ制限された動作を実行するためにコンピュータプログラムコードをウェブブラウザ内で実行できるようにするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体であって、前記命令が、
インターフェイスと、該インターフェイスの少なくとも一部を実現するネイティブ言語インプリメンテーションとを含むコンポーネントをコンピュータネットワークを介して前記ウェブブラウザに提供することを含み、
前記インプリメンテーションは、前記ウェブブラウザ内の前記プラグインコードによる前記インターフェイスの呼び出しに応答して、前記ネイティブ言語インプリメンテーションを呼び出すように動作可能であり、
前記ネイティブ言語インプリメンテーションは、前記動作を実行する許可の入力要求メッセージをユーザに表示するとともに、前記ユーザから許可を受け取ったことに応答して前記動作をさらに呼び出すように動作可能であり、
前記入力要求メッセージが、前記コンポーネントに関連するリスクインジケータに基づくとともに前記コンポーネントに関連する少なくとも１つの許可要件にさらに基づき、前記入力要求メッセージが、前記許可要件に関連する動作の記述を含み、該記述が、前記コンポーネントの少なくとも１つのアプリケーション固有の特徴を示す、
ことを特徴とするコンピュータ可読媒体。
【請求項２２】
前記コンポーネントに関連する署名局の証明書を受け取るステップをさらに含み、前記リスクインジケータが、前記証明書及び前記動作に基づく、
ことを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
前記セキュリティ制限されたネイティブオペレーティングシステム動作が、ファイルへのアクセス、ネットワークへのアクセス、ディスプレイ装置へのアクセス、又はこれらの組み合わせを含む、
ことを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２４】
ウェブページに関連するブラウザベースのプログラムコードを有効にして、ブラウザホストコンピュータのネイティブオペレーティングシステムリソースに選択的にアクセスするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体であって、前記方法が、
前記制限されたシステム動作にアクセスするために、前記ブラウザホストコンピュータのユーザから許可を受け取ったことに応答して前記ブラウザホストコンピュータ上の制限されたシステム動作を実行するように動作可能なインプリメンテーション機能と、前記ブラウザベースのプログラムコードが前記インプリメンテーション機能を呼び出せるようにするインターフェイスとを含むコンポーネントを受け取るステップと、
前記ブラウザベースのプログラムコードによる前記インターフェイスの呼び出しに応答して、前記制限されたシステム動作を実行する許可の入力要求メッセージを前記ユーザに表示するステップと、
前記ユーザから肯定応答を受け取ったことに応答して、前記インプリメンテーション機能を呼び出して前記制限されたシステム動作を実行するステップと、
を含むことを特徴とするコンピュータ可読媒体。
【請求項２５】
コンピュータにより実行可能なコードを含むコンピュータ可読媒体であって、前記コンピュータにより実行可能なコードが、
前記コンピュータにより実行可能なコードのコンポーネントを実行する許可の入力要求メッセージを表示するためのものであり、前記入力要求メッセージが、前記コンポーネントに関連するリスクインジケータに基づくとともに前記コンポーネントに関連する少なくとも１つの許可要件にさらに基づき、前記入力要求メッセージが、許可要件に関連する動作の記述を含み、該記述が、少なくとも１つのアプリケーション固有の特徴を示し、前記コンピュータにより実行可能なコードがさらに、
前記ユーザから前記入力要求メッセージに対する肯定応答を受け取ったことに応答して、前記コンポーネントに対して許可を認めて前記許可要件により指定される動作を実行するためのものである、
ことを特徴とするコンピュータ可読媒体。
【請求項２６】
プロセッサと、
前記プロセッサに結合されたメモリと、
前記メモリに提供されるとともに、前記プロセッサにより、サーバコンピュータにおいて前記クライアントコンピュータにコンピュータプログラムコードを提供するように実行可能なプログラム命令と、
を含むシステムであって、
前記プログラムコードが、前記制限されたシステム動作を呼び出すための少なくとも１つのコンポーネント動作を有する少なくとも１つのコンポーネントを含み、
前記コードが、ウェブ文書に関連するスクリプトコードによる前記コンポーネントの呼び出しに応答して前記ウェブブラウザにより実行するためのものであり、
前記コードが、前記ウェブブラウザを介してユーザから入力を受け取ったことに応答して前記制限されたシステム動作を呼び出すように動作可能であり、前記入力が、前記動作の実行に関連するアクションを引き起こすためのものであり、前記アクションが、前記動作を実行するための承諾を非明示的に認める、
ことを特徴とするシステム。
【請求項２７】
前記アクションは、前記動作を実行する際の少なくとも１つのステップを含む、
ことを特徴とする請求項２６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願との相互参照）
本出願は、２００８年３月２日に出願された「ネイティブオペレーティングシステム機能にセキュアにアクセスするブラウザベースのアプリケーション及びインターフェイス」という出願番号第６１／０６７，８７２号の利益を主張するものであり、該特許出願はその全体が引用により本明細書に組み入れられる。
【０００２】
本出願は、一般に、制限された実行環境において、ユーザが提供するコンピュータプログラムコードを実行することに関し、より具体的には、ウェブブラウザなどのセキュリティを制限された実行環境において、ユーザが提供するコンピュータプログラムコンポーネントの配布及び実行を可能にすることに関する。
【背景技術】
【０００３】
ウェブブラウザ内でコンピュータプログラムコードを実行するための技術が周知である。ウェブページは、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（商標）ブラウザ、Ｍｏｚｉｌｌａ（登録商標）  Ｆｉｒｅｆｏｘ（登録商標）ブラウザなどのブラウザ内でユーザにページを表示する際に実行されるＪａｖａＳｃｒｉｐｔ（商標）などの言語のコードを含むことができる。Ｊａｖａ（登録商標）言語、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｊｓｃｒｉｐｔ（登録商標）言語、及びＭｉｃｒｏｓｏｆｔ（登録商標）  Ｃ＃（登録商標）言語などのプログラミング言語で実装されるコードをウェブサイトなどのインターネットサーバからダウンロードし、ウェブブラウザにより実行することができる。Ａｄｏｂｅ（登録商標）  Ｆｌａｓｈ（登録商標）スクリプト又はポータブルドキュメントフォーマット（ＰＤＦ）文書などのいくつかの種類のコード又はデータは、ブラウザ自体がこれらをサポートすることはできず、すなわち実行することはできないが、このような特殊なファイルタイプをサポートするプラグインでブラウザを拡張することができる。プラグインとは、例えばブラウザ（又は他のアプリケーション）によって呼び出されるコンピュータプログラムコードモジュールのことであり、ブラウザの機能を使用して情報を表示したり、入力を受け取ったり、ネットワークを介してデータを転送したりなどを行うことができる。プラグインは特殊な機能を提供し、通常、プラグインに関連する種類のウェブコンテンツを受け取ったことに応答して起動される（ディスクからロードされブラウザにより初期化される）。プラグインはＣ又はＣ＋＋などのプログラミング言語で実装され、これに対してブラウザがプラグインアプリケーションプログラミングインターフェイス（ＡＰＩ）を提供する。インターネットからダウンロードされたコードが、ファイルにアクセスしたりリモートコンピュータへのネットワーク接続を開いたりなどのセンシティブなシステム動作を行うことを防ぐセキュアな環境でブラウザにより実行されるＪａｖａＳｃｒｉｐｔなどのスクリプトコードとは異なり、プラグインを実装するコードは、通常、コンピュータのプロセッサにより実行できるネイティブコードである。このようなネイティブコードは、ブラウザにより実行されるスクリプトコードと同じレベルのセキュリティ制限を受けず、センシティブなシステム動作を行うことができ、この結果、無許可のデータアクセス又はシステムセキュリティ違反が行われる可能性がある。従って、未知の又は信頼できないソースからのプラグインの使用は妨げられ、ユーザがよく知らないベンダによって提供されるプラグインを使用する可能性は低い。さらに、ブラウザプラグインの作成は比較的困難であり、いくつかの理由からコストがかかる。例えば、セキュリティ問題を識別して解決する必要がある。さらに、多くのブラウザは、使用するのが比較的困難なプラットフォーム固有のプログラミング言語をプラグイン開発に使用しており、（ＭｉｃｒｏｓｏｆｔＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム、Ａｐｐｌｅ（登録商標）ＭａｃＯＳオペレーティングシステム、Ｌｉｎｕｘ（登録商標）オペレーティングシステムなどの）個々のプラットフォームの種類ごとにプラットフォーム固有のプラグインのバージョンが作成され配信されてプラットフォームによりサポートされており、Ｗｉｎｄｏｗｓ対応のＩｎｔｅｒｎｅｔ  Ｅｘｐlｏｒｅｒ、Ｗｉｎｄｏｗｓ対応のＦｉｒｅＦｏｘ、ＭａｃＯＳ対応のＦｉｒｅＦｏｘ、及びＭａｃＯＳ対応のＳａｆａｒｉ（登録商標）ブラウザなどの個々のプラットフォームによりサポートされる個々のブラウザの種類ごとにブラウザ固有のプラグインのバージョンを作成して配信することが必要となり得る。
【０００４】
上述したように、コンピュータのリソースへのアクセスを制限されていないプログラムコードにより潜在的な損害が引き起こされる可能性があるため、ウェブブラウザにより実行されるコードには、特にこのコードが未知の又は信頼できないサーバからのものである場合、セキュリティ制限が課せられる。例えば、多くのウェブブラウザは、ファイル、ネットワーク、オペレーティングシステムインターフェイス、記憶装置、及びその他のリソースにアクセスするためのダウンロードされるコードの能力に制限を加える。ダウンロードしたコードなどの、クライアントコンピュータ上でブラウザにより実行されるコードは、ファイルを削除したり、システムリソースを不正に使用したり、コンピュータに記憶された情報を取り出したり、セキュリティの脆弱性を求めてコンピュータを検索したり、センシティブ情報に対する要求をユーザに提示（フィッシング）したり、コンピュータにウィルスをインストールしたり、コンピュータを使用して他のコンピュータを攻撃したり又は他のコンピュータにウィルスを広げたりする可能性があるので、これらのコードはより厳しいセキュリティを受ける。従って、Ｉｎｔｅｒｎｅｔ  Ｅｘｐlｏｒｅｒなどのウェブブラウザは、ユーザが許可を認めない限り、信頼できないサーバからのコードを実行できないようにしている。
【０００５】
Ｊａｖａアプレット、ＡｃｔｉｖｅＸ（登録商標）コントロール、及びＦｉｒｅｆｏｘの拡張機能などの、ダウンロードされたコードを実行するための多くの既存のブラウザベースのランタイム環境は、あらゆるシステムリソースの実行及びアクセスに対してユーザに包括的許可を求める。ＡｃｔｉｖｅＸコントロールとは、ウェブページがアクセスを受け、すなわちウェブサーバ１００からダウンロードされた場合に、ウェブページに組み込んでＩｎｔｅｒｎｅｔ  Ｅｘｐlｏｒｅｒにより実行することができるコンピュータプログラムコードモジュールのことである。ＡｃｔｉｖｅＸコントロールなどのコードがウェブページの一部としてダウンロードされ、これをＩｎｔｅｒｎｅｔ  Ｅｘｐlｏｒｅｒブラウザ内で実行しようと試みた場合、ブラウザはユーザに警告メッセージを表示して、ユーザがそのコントロールの実行を明確に許可又は承認しない限り、或いは他の例では、ユーザが、そのサーバ又はそのサーバのネットワークドメインからのコードの実行を明確に許可しない限りコントロール全体の実行が阻止される。ユーザがコントロールの実行を承認すると、コントロールが広い範囲のシステムリソースにアクセスできるようになる。
【０００６】
Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）オペレーティングシステムなどの他の既存のランタイム環境は、ユーザにファイルを読み取るための許可などを求めることにより、エンドユーザにはほとんど重要でないレベルのセキュリティ精度を提供する。Ｊａｖａなどのいくつかのプログラミング言語は、ダウンロードしたコードスクリプトが、デジタル署名された証明書などのセキュリティクレデンシャル情報を使用してコンピュータ上の制限されたリソースにアクセスできるようにする。しかしながら、ダウンロードしたコードのセキュリティクレデンシャルはユーザにさらされ、ユーザは多くの場合このクレデンシャルを保持し、例えば失効時にこれらを更新し、またこれらを機密にしておく責任を負う。さらに、使用される（ＪａｖａＳｃｒｉｐｔ又はＪａｖａなどの）ウェブプログラミング言語は専用装置などの特定のシステムリソースへの接点を有していないので、たとえ許可が有効であっても、これらの言語で書かれたプログラムにこれらのリソースを利用することはできない。このようなリソースには、Ｃ＋＋などの「ネイティブ」なプログラミング言語を介してアクセスすることができるが、ネイティブ言語とウェブプログラミング言語との間の通信は複雑であり、既存のウェブプログラミングフレームワークは、ネイティブプログラムをブラウザベースのウェブアプリケーションに統合するための機能を提供していない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
これらのセキュリティ制限は、システムリソースアクセス及びその他の機能の面でネイティブアプリケーションにより提供されるユーザインターフェイスに匹敵するリッチユーザインターフェイスを提供する、既存のウェブプログラミングフレームワーク内で開発されたアプリケーションの能力を低下させる。既存のフレームワークは、複雑な基本セキュリティ機能を提供し、アプリケーション開発者にセキュリティを確実にするという負担をかける。従って、セキュリティセンシティブなシステムリソースに安全かつセキュアにアクセスするウェブアプリケーションをプログラマーが迅速かつ容易に開発できるようにするプログラミングフレームワークを実現することが望ましいであろう。
【課題を解決するための手段】
【０００８】
一般に、第１の態様では、本発明は、少なくとも１つの制限されたシステム動作の実行を引き起こす少なくとも１つのコンポーネント動作を含むコンピュータプログラムコードコンポーネントの、コンポーネント又はコンポーネントに関連する記述がそれによって署名されるデジタル証明書に基づくリスク格付けを生成するステップと、コンポーネント動作の記述を生成するステップと、少なくとも１つの制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するステップとを含むコンピュータにより実行される方法を特徴とし、この入力要求メッセージは、リスク格付け及びコンポーネント動作の記述を含む。
【０００９】
本発明の実施形態は、以下の特徴の１又はそれ以上を含むことができる。リスク格付けを生成するステップは、コンピュータプログラムコードコンポーネントの実行を引き起こすためのコンピュータプログラムスクリプトコードを含むウェブページを受け取ることに応答するものであってもよい。リスク格付けは、最高リスクレベル及び最低リスクレベルを含む少なくとも２つのリスクレベルのうちの１つとすることができる。ユーザに許可の入力要求メッセージを表示するステップは、ウェブブラウザがスクリプトコードに関連するウェブページを受け取ること応答して実行されるコンピュータプログラムスクリプトコードによる最初のコンポーネントの参照に応答して行うことができる。コンピュータプログラムコードコンポーネントは、ウェブブラウザがスクリプトコードに関連するウェブページを受け取ったこと応答して実行されるコンピュータプログラムスクリプトコードによるウェブブラウザ内のプラグイン実行の呼び出しに応答して実行するためのものであってもよい。ユーザに許可の入力要求メッセージを表示するステップは、少なくとも１つの制限されたシステム動作に対応する指定された許可を表示するステップを含むことができ、エンドユーザがこの指定された許可を、制限されたシステム動作を実行するための前提条件として承諾することができる。
【００１０】
一般に、第２の態様では、本発明は、ウェブブラウザベースのコードが、クライアントコンピュータ上で制限されたシステム動作を実行できるようにするコンピュータにより実行される方法を特徴とする。この方法は、サーバコンピュータにおいて、制限されたシステム動作を呼び出すための少なくとも１つのコンポーネント動作を有する少なくとも１つのコンポーネントを含むコンピュータプログラムコードをクライアントコンピュータに提供するステップを含み、コンピュータプログラムコードはコンポーネントインプリメンテーションをさらに含むことができ、このインプリメンテーションは、制限されたシステム動作を実行するためのユーザからの許可の入力要求メッセージをを表示するためのものであるとともに、さらにユーザからの許可を受け取ったことに応答して、制限されたシステム動作を呼び出すためのものであり、この入力要求メッセージは、コンポーネントに関連するリスク格付け及びコンポーネント動作に基づく。入力要求メッセージは、コンポーネントに関連するリスク格付けを含むことができる。プログラムコードはウェブブラウザプラグインであってもよい。複数のリスク層から選択したリスク層にコンポーネントを関連付けることができ、リスク格付けは、このリスク層に基づく短いフレーズであってもよい。リスクインジケータは、コンポーネントにより提供される少なくとも１つの動作に基づくフレーズを含むことができる。コンポーネントは、インプリメンテーション機能及びこのインプリメンテーション機能を記述するインターフェイス定義を含むことができる。入力要求メッセージは、コンピュータの出力装置に許可を求める要求を表示することができる。ユーザからの許可を受け取るステップは、クライアントコンピュータの入力装置を介してユーザから肯定的な応答を受け取るステップを含むことができる。方法は、コンポーネントに関連する署名局の証明書を受け取るステップをさらに含むことができ、リスク格付けは、この証明書にさらに基づくことができる。制限されたシステム動作は、ファイルへのアクセス、ネットワークへのアクセス、ディスプレイ装置へのアクセス、又はこれらの組み合わせを含むことができる。
【００１１】
一般に、第３の態様では、本発明は、ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするコンピュータにより実行される方法を特徴とする。本方法は、サーバコンピュータにおいてコンピュータプログラムコードをクライアントコンピュータに提供するステップを含み、このプログラムコードは、制限されたシステム動作を呼び出すための少なくとも１つのコンポーネント動作を有する少なくとも１つのコンポーネントを含み、コードは、ウェブ文書に関連するスクリプトコードによるコンポーネントの呼び出しに応答してウェブブラウザが実行するためのものであり、コードは、ウェブブラウザを介してユーザから入力を受け取ったことに応答して制限されたシステム動作を呼び出し、この入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための承諾を非明示的に認める。アクションは、動作を実行する際の少なくとも１つのステップを含むことができる。
【００１２】
一般に、第４の態様では、本発明は、ウェブブラウザがウェブページを受け取ったことに応答して実行されるコンピュータプログラムスクリプトコードからコンポーネント動作の呼び出しを受け取るステップを含むコンピュータにより実行される方法を特徴とし、コンポーネントは、制限されたシステム動作の実行を引き起こす少なくとも１つのコンポーネント動作を含み、ウェブブラウザを介してユーザから入力を受け取ったことに応答して、コンポーネント動作が制限されたシステム動作の実行を引き起こすようにすることができ、入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための許可を明示的に認めるものではなく、アクションは、動作を実行するための許可を非明示的に認める。
【００１３】
一般に、第５の態様では、本発明は、ウェブブラウザベースのコードがクライアントコンピュータ上で制限されたシステム動作を実行できるようにするコンピュータにより実行される方法を特徴とする。この方法は、コンポーネント動作の呼び出しに応答して、ユーザからの許可を要求するための入力要求メッセージを表示することにより制限されたシステム動作を実行するようにするステップと、ユーザから許可を受け取ったことに応答して、制限されたシステム動作を呼び出すステップとを含み、上記入力要求メッセージは、コンポーネント動作を動作させるオブジェクト又はサービスを意味する。
【００１４】
一般に、第６の態様では、本発明は、セキュリティ制限された動作を実行するために、ウェブブラウザ内でコンピュータプログラムコードを実行できるようにするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体を特徴とし、この命令は、インターフェイスと、インターフェイスの少なくとも一部を実現するネイティブ言語インプリメンテーションとを含むコンポーネントをコンピュータネットワークを介してウェブブラウザに提供するためのものであり、このインプリメンテーションは、ウェブブラウザ内のプラグインコードによるインターフェイスの呼び出しに応答してネイティブ言語インプリメンテーションを呼び出すためのものであり、このネイティブ言語インプリメンテーションは、動作を実行する許可の入力要求メッセージをユーザに表示するとともに、さらにユーザから許可を受け取ったことに応答して動作を呼び出すためのものであり、この入力要求メッセージは、コンポーネントに関連するリスクインジケータに基づくとともにコンポーネントに関連する少なくとも１つの許可要件にさらに基づき、またこの入力要求メッセージは、許可要件に関連する動作の記述を含み、この記述は、コンポーネントの少なくとも１つのアプリケーション固有の特徴を示す。
【００１５】
本発明の実施形態は、以下の特徴の１又はそれ以上を含むことができる。コンピュータ可読媒体は、コンポーネントに関連する署名局の証明書を受け取るためのコンピュータにより実行可能な命令をさらに含むことができ、上記リスクインジケータは、この証明書及び動作に基づく。セキュリティ制限されたネイティブオペレーティングシステム動作は、ファイルにアクセスし、ネットワークにアクセスし、ディスプレイ装置にアクセスし、又はこれらの組み合わせを行うことができる。
【００１６】
一般に、第７の態様では、本発明は、ウェブページに関連するブラウザベースのプログラムコードが、ブラウザホストコンピュータのネイティブオペレーティングシステムリソースに選択的にアクセスできるようにするためのコンピュータにより実行可能な命令を含むコンピュータ可読媒体を特徴とする。この方法は、インプリメンテーション機能と、ブラウザベースのプログラムコードがこのインプリメンテーション機能を呼び出せるようにするインターフェイスとを含むコンポーネントを受け取るステップを含み、このインプリメンテーション機能は、ブラウザホストコンピュータのユーザから許可を受け取ったことに応答してブラウザホストコンピュータ上で制限されたシステム動作を実行して制限されたシステム動作にアクセスし、方法はさらに、ブラウザベースのプログラムコードによるインターフェイスの呼び出しに応答して、制限されたシステム動作を実行する許可の入力要求メッセージをユーザに表示するステップと、ユーザから肯定的な応答を受け取ったことに応答してインプリメンテーション機能を呼び出して制限されたシステム動作を実行するステップとを含む。
【００１７】
一般に、第８の態様では、本発明は、コンピュータにより実行可能なコードのコンポーネントを実行する許可の入力要求メッセージを表示するためのコンピュータにより実行可能なコードを含むコンピュータ可読媒体を特徴とし、この入力要求メッセージは、コンポーネントに関連するリスクインジケータに基づくとともに、コンポーネントに関連する少なくとも１つの許可要件にさらに基づき、またこの入力要求メッセージは、許可要件に関連する動作の記述を含み、この記述は、少なくとも１つのアプリケーション固有の特徴を示し、ユーザから入力要求メッセージに対する肯定的な応答を受け取ったことに応答して、コンポーネントが許可要件により指定された動作を実行するための許可を認める。
【００１８】
一般に、第９の態様では、本発明は、プロセッサと、プロセッサに結合されたメモリと、メモリに提供されるとともに、プロセッサにより、サーバコンピュータにおいてクライアントコンピュータにコンピュータプログラムコードを提供するように実行可能なプログラム命令とを含むシステムを特徴とし、このプログラムコードは、制限されたシステム動作を呼び出すための少なくとも１つのコンポーネント動作を有する少なくとも１つのコンポーネントを含み、コードは、ウェブ文書に関連するスクリプトコードによるコンポーネントの呼び出しに応答してウェブブラウザが実行するためのものであり、コードは、ウェブブラウザを介してユーザから入力を受け取ったことに応答して制限されたシステム動作を呼び出すためのものであり、この入力は、動作の実行に関連するアクションを引き起こすためのものであり、このアクションは、動作を実行するための承諾を非明示的に認める。
【００１９】
同じ部分を同じ数字によって示すことができる添付図面の図に関連して行う以下の説明を参照することにより、本出願を最も良く理解することができる。
【図面の簡単な説明】
【００２０】
【図１Ａ】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図１Ｂ】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図１Ｃ】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図１Ｄ】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図１Ｅ】本発明の実施形態によるウェブブラウザ内でコンポーネントを実行するためのシステムを示す図である。
【図２】本発明の実施形態によるコンポーネントに関する情報を示す図である。
【図３】本発明の実施形態によるコンポーネントを実行する許可を要求する入力要求メッセージを示す図である。
【図４】本発明の実施形態によるファイルアップロードコンポーネントを示す図である。
【図５】本発明の実施形態によるファイルアップロードコンポーネントを示す図である。
【図６】本発明の実施形態における処理機能を実現するために使用できる代表的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００２１】
以下の説明は、当業者が本発明を実施及び使用できるようにするために提供し、特定の用途及びこれらの要件との関連において提供するものである。当業者には、実施形態に対する様々な修正が容易に明らかになるであろうし、本明細書で定義される一般原理を、本発明の思想及び範囲から逸脱することなく他の実施形態及び用途に適用することもできる。さらに、以下の説明では、説明を目的として数多くの詳細を示している。しかしながら、当業者であれば、これらの特定の詳細を使用せずに本発明を実施できることを理解するであろう。その他の場合、本発明の説明を不必要な詳細によって曖昧にしないために、公知の構造及び装置についてはブロック図形式で示している。従って、本発明は、図示の実施形態に限定されることを意図するものではなく、本明細書に開示する原理及び特徴と一致する最も広い範囲を許容すべきものである。
【００２２】
本発明は、特定の実施形態及び例図に関連して説明しているが、当業者であれば、本発明が、説明する実施形態又は図に限定されるものではないことを理解するであろう。当業者であれば、必要に応じてハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせを使用して様々な実施形態の動作を実現できることを理解するであろう。例えば、ソフトウェア、ファームウェア、又は配線論理の制御下でプロセッサ又はその他のデジタル回路を使用していくつかの処理を実行することができる。（記載する機能を実施する技術の当業者であれば理解するであろうが、本明細書における「論理」という用語は、固定ハードウェア、プログラマブル論理及び／又はこれらの適当な組み合わせを意味する。）ソフトウェア及びファームウェアをコンピュータ可読媒体に記憶することができる。当業者には周知のように、アナログ回路を使用してその他のいくつかの処理を実施することができる。また、本発明の実施形態では、メモリ又はその他の記憶装置、並びに通信コンポーネントを使用することができる。
【００２３】
図１Ａ〜図１Ｅは、本発明の実施形態によるウェブブラウザ１０４内のコンポーネント１４８を実行するためのプラットフォームを示す図である。図１Ａは、プラットフォームの機能ユニットの全体的な図を示しており、図１Ｂ〜図１Ｅは、特定の機能ユニットのより詳細な図を示している。コンポーネント１４８は、例えば、通常はＪａｖａＳｃｒｉｐｔ（商標）などのウェブベースのコードが利用できないサービスを提供する、ウェブブラウザ１０４内のコンピュータプログラムコードモジュールであってもよい。これらのサービスは、例えば、ドラッグアンドドロップ動作、テキストトゥスピーチ動作、及びその他の制限された又はネイティブシステム動作及びリソース１３０を含む。ソフトウェア開発者は、コンポーネントにより提供される１又はそれ以上の動作を指定するインターフェイス１６２、及びその動作のインプリメンテーション１６４を定義することにより、追加コンポーネント１４８を追加することができる。コンポーネントの例としてＦｌｉｃｋｒＵｐｌｏａｄｅｒコンポーネントが挙げられ、このコンポーネントは、ユーザのコンピュータからのファイルを、ＦｌｉｃｋｒＵｐｌｏａｄｅｒコンポーネントによってウェブブラウザ１０４内に提供されるユーザインターフェイス領域にドラッグアンドドロップすることにより、Ｆｌｉｃｋｒ（登録商標）オンラインフォトシェアリングサービスに画像をアップロードするためのドラッグアンドドロップユーザインターフェイスを提供する。他のコンポーネント例として、テキストトゥスピーチコンポーネント及び（ＩｍａｇｅＡｌｔｅｒという名前の）画像処理コンポーネントが挙げられる。ウェブサーバからウェブページの一部としてダウンロードされたＪａｖａＳｃｒｉｐｔコードなどの、ユーザが提供するブラウザベースのプログラムコード１０７がコンポーネント１４８を利用できるようになる。プラグインインターフェイス１０８及びデーモン１４０を含む図１Ａのプラットフォーム例は、このようなブラウザベースのプログラムコードがコンポーネント１４８を使用できるようにする。コンポーネント１４８は、ウェブブラウザ１０４内で利用できないはずの機能を提供するので、コンポーネント１４８は、ウェブページ１０６が利用できるエンドユーザマシン１０２の機能セットを拡張する。コンポーネントにより提供される機能は、有害な悪用を受ける可能性のある制限されたシステム動作及びリソースを使用することが多いので、コンポーネントがこれらの制限された動作及びリソースを、エンドユーザが明示的又は非明示的に承認する方法で使用することを確実にするための効果的なセキュリティ対策が必要とされる。
【００２４】
システム１０２に含まれるコンポーネント実行論理１４０は、コアサービス１４２と、Ｃプロバイダインターフェイス及びＲｕｂｙ（商標）インタープリテッドプログラミング言語プロバイダインターフェイスなどのコンポーネントプロバイダインターフェイス１４６とを提供する。本明細書ではＣ及びＲｕｂｙについて説明するが、コンポーネントプロバイダインターフェイス１４６は、Ｃ＋＋、Ｊａｖａなどのその他の言語をサポートすることもできる。コンポーネント実行論理１４０は、少なくとも１つのコンポーネント１６０を含むコンポーネントセット１４８を含む。個々のコンポーネントは、（単複の）インプリメンテーション機能１６４及びこの（単複の）インプリメンテーション機能１６４を記述する（単複の）インターフェイス定義１６２を含む。このインターフェイス定義は、例えば、コンポーネント１６０が提供してインプリメンテーション１６４が実装する（単複の）動作の名前及びパラメータを記述するＪＳＯＮマニフェストファイルであってもよい。１つの例では、（単複の）インプリメンテーション機能１６４が、ブラウザホストコンピュータのユーザから（単複の）動作の許可を受け取った場合、ブラウザホストコンピュータ１０２上で（単複の）制限されたシステム動作を実行する。すなわち、このインプリメンテーション機能はユーザに、ファイル又はネットワーク接続を開いたり、ネットワーク接続を介して通信したり、又はプリンタ、ボイスシンセサイザ又は記憶装置などのシステムリソースにアクセスしたりなどの機能の実行時に行われる、特定の制限された又はセキュリティセンシティブな動作を承認するよう入力要求メッセージを表示する。個々のインプリメンテーション機能は、適当なレベルのセキュリティ入力要求メッセージの粒度を選択することができる。例えば、インプリメンテーション機能は、個々のファイルアクセス、全てのファイルアクセス、又はウェブブラウザセッション時間中のファイルアクセスなどに関してユーザに入力要求メッセージを表示することができる。当業者には公知のように、ネイティブコードを使用して（単複の）インプリメンテーション機能の少なくとも一部を実行することができる。
【００２５】
制限されたシステム動作は、例えばネイティブ機能（すなわち、Ｃ又はＣ＋＋などの言語から呼び出すことができ、ネイティブ機能に直接アクセスしないＲｕｂｙなどの言語でコンポーネント１４８を実装できるという理由で通常はコンポーネント１４８が直接利用できない機能）であってもよい。ネイティブ機能は、場合によってはユーザ又はエンドユーザマシン１０２に関連するユーザのログインクレデンシャル又はデジタル証明書を提供してユーザの識別情報及びアクセス許可を確立することにより、システムリソースにアクセスする。ネイティブ機能は、例えば出力装置上に情報を表示し、及び／又は入力装置から情報を受け取り、或いはドラッグアンドドロップ、テキストトゥスピーチ、ファイルブラウジングなどのオペレーティングシステム固有の機能を実行することができる。ネイティブ機能は、磁気ディスク、光ディスク、半導体ベースメモリなどに記憶されたデータにアクセスすることができる。
【００２６】
このような制限されたシステム動作には、機械レベルの命令にコンパイルされたＣ又はＣ＋＋などの言語のコードなどのネイティブコードによってしかアクセスすることができない。Ｊａｖａ、ＪａｖａＳｃｒｉｐｔ、及びＲｕｂｙなどのウェブブラウザ内で通常サポートされているプログラミング言語は、いくつかのネイティブオペレーティングシステム又はハードウェア機能にアクセスするための機能を有しておらず、或いは、たとえ言語がこの機能を有していたとしても、このような機能への制限のないアクセスによって引き起こされるセキュリティリスクに起因して、機能がウェブブラウザ１０４によって無効にされることが多い。プラグインインターフェイス１０８は、コンポーネント実行論理１４０を提供することにより、（ウェブサーバ１００からダウンロードされた、ユーザが提供するＪａｖａＳｃｒｉｐｔコードなどの）ブラウザベースのコード１０７がこのような制限された機能にアクセスできるようにし、開発者はこのコンポーネント実行論理１４０により、いくつかの一般的な機能に関して、開発者が提供するコンポーネントインプリメンテーション１６４のネイティブコード部分を介して、又は内蔵されたネイティブコードを介してこのような機能にアクセスするコンポーネント１４８を実装できるようになる。１つの例では、プラグインインターフェイス１０８が、ＡｃｔｉｖｅＸ又はＮＰＡＰＩなどのブラウザプラグインアプリケーションプログラミングインターフェイス（ＡＰＩ）を介してウェブブラウザ１０４とやりとりするブラウザプラグインである。制限された動作の呼び出しをエンドユーザが承認していることを検証するためのセキュアなユーザ入力要求メッセージなどのセキュリティチェックをコンポーネントインプリメンテーション１６４に含めることにより、或いは、制限された機能を呼び出す前に、コンポーネントインプリメンテーション１６４及び／又はプラグイン共通ライブラリ１１７によって、エンドユーザが（ＩＲＣ接続を開くための許可などの）特定の種類の許可を利用できるように要求することにより、ブラウザベースのプログラムコード１０７、並びに（ネイティブ及び非ネイティブコード部分を両方含む）コンポーネント１４８は、許可されていない制限されたシステム動作を使用できないようにされる。
【００２７】
コアインターフェイス１４４は、ユーザインターフェイスドラッグアンドドロップ、ファイルアクセス、セキュアなユーザ入力要求メッセージ、テキストトゥスピーチ、及びＧＰＳインターフェイスなどのオペレーティングシステム又はハードウェア機能にアクセスするためのネイティブインプリメンテーションを含む。これらの事前に定めたネイティブインプリメンテーションにＪａｖａＳｃｒｉｐｔ及びＲｕｂｙなどの共通言語からアクセスするための内蔵型、すなわち事前に定義されたコンポーネントが提供される。コンポーネント１４８は、ドラッグアンドドロップ、ファイルアクセス、セキュアなユーザ入力要求メッセージ、テキストトゥスピーチ、ＧＰＳなどのためのコンポーネントのような事前に定義されたコンポーネントを含む。
【００２８】
１つの例では、配信サーバ１５０からインターネットなどのコンピュータネットワークを介してモジュールを受け取るインストレーションデーモン１７０により、プラグインインターフェイス１０８、コアサービス１４２、及びコンポーネント１４８を含むシステムモジュールがエンドユーザマシン１０２にインストールされる（すなわち、実行のために利用できるようになる）。インストレーションデーモン１７０はユーザによりインストールされ、これが、ユーザのマシン１０２にシステムモジュールをインストールするために使用するユーザのアクセスクレデンシャルを受け継ぐ。システムモジュールは、ユーザのアクセスクレデンシャルを受け継ぎこれらのクレデンシャルを使用して、ネイティブコードを実行し制限されたシステム動作にアクセスする。
【００２９】
ウェブブラウザ１０４は、ウェブサーバ１００から受け取ったウェブページ１０６を含む。ウェブページは、ユーザが提供するＪａｖａＳｃｒｉｐｔコード１０７を含み、又はこれを参照することができる。ＪａｖａＳｃｒｉｐｔコード１０７はブラウザベースのコード例であり、これは、呼び出し可能な、すなわちウェブブラウザ１０４によって呼び出すことができるコンピュータプログラムコードということもできる。ウェブブラウザ１０４はまた、ブラウザ固有のプラグインＡＰＩ１１６とやりとりするために汎用ブラウザプラグインＡＰＩ１１４を使用するプラグインインターフェイス１０８も含み、これがさらに、汎用ブラウザプラグインＡＰＩ１１４をブラウザ１０４にインターフェイス接続するためにブラウザコア１１８とやりとりする。プラグインアダプタレイヤ１１２は、（ＪａｖａＳｃｒｉｐｔなどの）ユーザが提供するスクリプトコード１０７と、通常はウェブブラウザ１０４によってウェブページ１０６に提供されるスクリプティング言語コード実行環境で利用できない制限されたシステム動作を呼び出すことができる（Ｃ又はＣ＋＋などの）ネイティブコードプラグイン共通ライブラリ１１７とやりとりする（これもＪａｖａＳｃｒｉｐｔなどの）汎用ブラウザプラグインＡＰＩとの間のインターフェイスを提供する。プラグインアダプタ１１２は、例えば、ブラウザベースのプログラムコード１０７からのコンポーネント呼び出し命令に応答して呼び出される。汎用ブラウザプラグインＡＰＩ１１４により、例えばユーザのＪａｖａＳｃｒｉｐｔ１０７に結果又は通知を提供するコールバック呼び出しの形でプラグインアダプタ１１２を逆に呼び出すことができる。
【００３０】
コア論理１４０は、上述したような１又はそれ以上の言語固有のコンポーネントプロバイダインターフェイス１４６を含む。デーモン、すなわちバックグラウンドで及び／又は特定のユーザに関係なく実行され、１又はそれ以上のプラグインインターフェイス１０８と通信する処理としてコンポーネント実行論理１４０を実装することができる。コア論理デーモン１４０は、デーモンが初期化された場合、又はコンポーネント１６０に対する要求を受け取った場合などにコンポーネント１４８の各々ごとにインターフェイス及びインプリメンテーションをロードする。コンポーネントインプリメンテーションは、（Ｃ言語コンポーネントのためのダイナミックライブラリオープンコール、或いはＲｕｂｙコンポーネントのための適当なＲｕｂｙロード動作のような）コンポーネント１６４を記述する言語の必要に応じて、動的ローディング又はリンキング処理を使用してロードされる。個々のコンポーネントプロバイダインターフェイス１４６は、プラグインアダプタ１１２からコンポーネント呼び出し要求を受け取る。１つの例では、コンポーネント呼び出し要求は、ブラウザ処理の一部であるプラグインアダプタ１１２から、コア論理デーモン処理１４０の一部であるコアサービス１４２のコアインターフェイス１４４へのプロセス間通信を介した送信に適するコンポーネント呼び出し命令のシリアル化バージョンである。コアインターフェイス１４４は、シリアル化した呼び出し命令を、対応するコンポーネント１６０の適当なインプリメンテーション機能を呼び出すコンポーネントプロバイダインターフェイス１４６へ転送し、この場合、コンポーネント呼び出し要求内で機能及びコンポーネントが指定される。１つの例では、プロバイダインターフェイス論理１４６が、動作の完了に応答してブラウザホストコンピュータのユーザからの許可を取り消すことができる。別の例では、プロバイダインターフェイス論理が、ブラウザベースのプログラムコードに関連するネットワークセッションの終了に応答してブラウザホストコンピュータのユーザからの許可を取り消すことができる。
【００３１】
プロバイダインターフェイス１４６は、プラグインアダプタ論理にインターフェイス定義を伝えることができる。タイプのイントロスペクションを提供するＲｕｂｙなどの言語では、ユーザにより提供されるコンポーネントインプリメンテーションからインターフェイス定義を自動的に取得することができる。プラグインアダプタ１１２は、インターフェイス定義をコンポーネントから受信することができる。
【００３２】
プロバイダインターフェイス１４６は、配信サーバ１５０、記憶装置、又はその他のデータソースから、（単複の）コンポーネント１４８をロードすることができる。（単複の）コンポーネント１４８は、例えば共有ライブラリであってもよく、またインターフェイス定義、インターフェイスのインプリメンテーション、及びインターフェイスの文書化を含むパッケージであってもよい。（単複の）コンポーネント１４８は、いずれかの信頼できるエンティティにより提供することができる。インプリメンテーションにより、システムリソース上のあらゆる動作の実行前にユーザ許可が求められ、これが受け取られていることが確実である場合、個々のコンポーネント１４８の動作は実質的にセキュアである（すなわち、セキュリティ違反を生じる可能性があるいずれのシステムリソースにもアクセスしない）。ユーザが提供するＪａｖａＳｃｒｉｐｔは、通常は入力要求メッセージに対して応答を行うことができないので、ユーザに入力要求メッセージが表示されている限りコンピュータ１０２上で悪意ある行為を実行できなくなる。
【００３３】
インプリメンテーション機能は結果を提供することができ、この場合プロバイダインターフェイス論理及びプラグインアダプタ論理が、ブラウザベースのプログラムコードに結果を伝達すなわち転送する。すなわち、（単複の）コンポーネント１４８からユーザが提供するＪａｖａＳｃｒｉｐｔへ応答を返すことができる。
【００３４】
特定のコンポーネントを署名した証明書及びコンポーネントに関する全ての関連情報に応じて、コンポーネントの実行を許可することのリスクについての重要な理解をエンドユーザに提供することができる。コンポーネントがウェブページによって要求される場合、システムはコンポーネント記述を取得する。これらの記述には署名があっても又は無くてもよい。無署名のコンポーネントは「匿名」であり、「サンドボックス」コンポーネントとして実行される。署名されたコンポーネントのリスクは、これらがそれによって署名された証明書に基づいて動的かつセキュアに決定される。この段階的アプローチは、セキュアコンポーネントの分散開発を可能にする。コンポーネントにより提供された動作を実行するための許可を求める入力要求メッセージがユーザに提示される。ユーザに提示される入力要求メッセージの種類及び性質は、コンポーネントのリスク及び特定のコンポーネント動作に基づく。
【００３５】
上述したように、コンポーネントに関して「リスク格付け」を生成して、ユーザがユーザのコンピュータ上でコンポーネントを実行できるかどうかを判定できるようにすることができる。リスク格付けは、コンポーネントを署名した証明書及びコンポーネントに関するその他の情報に基づく。コンポーネントを署名した証明書は、コンポーネントのプロバイダを、コンポーネントがオフィシャルコンポーネントであると考えられる場合には信頼できる権威あるエンティティとして、又は信頼できる権威が（発行者などの）コンポーネントプロバイダの識別情報が正しいことを保証する場合にはサードパーティコンポーネントとして、又は信頼できる権威がコンポーネントプロバイダについて知っている場合には独立コンポーネントとして、又は信頼できる権威がコンポーネントのインストレーション又は実行に対して警告する場合には匿名のコンポーネントとして識別する。ユーザがコンポーネントを実行するための許可を求められた場合、このリスク格付けがユーザに伝えられる。１つの例では、コンポーネントにより提供される１又はそれ以上の動作が呼び出された場合、コンポーネントが実行する特定の制限されたシステム動作を実行するための許可を求める要求の形でリスク格付けがユーザに表示される。１つの例では、ブラウザがスクリプトコードを含むウェブページを受け取ったこと応答して初期化を行うことができる場合、コンポーネントの初期化に応答して許可を求める要求が表示され、スクリプトコードは、コンポーネントの（方法、手順、又は機能などの）動作を呼び出す記述を含む。別の例では、コンポーネント動作の実行前に、スクリプトコードによる特定の動作の呼び出しに応答して許可を求める要求が表示される。
【００３６】
１つの例では、リスク格付けが、低リスクから高リスクまでの範囲に及ぶ複数のリスク層内の層に対応する。層化したリスク格付けシステムを提供して、ユーザが特定のコンポーネントを使用する際に発動すべき警告のレベルを指示する。１つの例では、複数の層の個々の１層が上述したようなリスク格付けに対応し、すなわちリスクが、コンポーネントを署名した証明書に基づく。ファイル読み取りなどの制限された動作を実行するために特定のリソースへのアクセスを必要とするコンポーネントにより、ユーザに入力要求メッセージが提示される。入力要求メッセージは、コンポーネントのリスクによって変化する。例えば「非常に低いリスク」などのリスクに基づく短いフレーズとして、又は例えば「コンピュータに記憶されているピクチャを消去又は上書きする非常に低いリスク」などの、リスク及びコンポーネントが呼び出すことを予想する動作に基づくより詳細なフレーズとしてユーザにリスクを提示することができる。
【００３７】
１つの例では、４つのリスク層が設けられ、コンポーネントを層の１つに関連付けることができる。リスク格付けを層の各々に関連付けることができる。
2011514996.tif 000003
【００３８】
このシステムは、コンポーネントのセキュアな外部オーサリングを提供する。信頼できる権威は「ゲートキーパー」の役目を果たし、これらの様々なエンティティに署名証明書を発行する。特定のコンポーネントを署名した証明書及びこのコンポーネントを記述する関連情報に応じて、コンポーネントのリスクの重要な記述を生成してユーザに提示することができる。すなわち、リスクレベルは証明書の信頼度に基づき、信頼度の高い証明書のリスクが最も低い。
【００３９】
１つの例では、ウェブページ内のスクリプトコードによってコンポーネントが呼び出される場合のようにコンポーネントが使用される場合にコンポーネント記述が取得される。これらの記述には署名があっても又は無くてもよい。無署名のコンポーネントは「匿名」であり、保護された「サンドボックス」環境で実行される。署名入りコンポーネントのリスクレベルは、コンポーネントがそれによって署名された証明書に基づいて動的かつセキュアに決定される。この段階的アプローチは、分散したコンポーネント開発を可能にする。さらに、ハイリスクなクラスのコンポーネントの実行をデフォルトで許可しないようにすることができ、これにより平均的ユーザに対するリスクを最小にする一方で、コンポーネント開発者がほとんどの種類のシステムリソースを使用できるようにする。
【００４０】
１つの例では、コンポーネント許可オブジェクトを提供して、許可オブジェクトに関連する特定の動作を実行するための許可を表す。コンポーネント許可は、名前及び記述を含む。例えば、チャットサーバに接続するための許可を表す許可ＣｏｎｎｅｃｔＴｏＣｈａｔＳｅｒｖｅｒは、「ＩＲＣ（チャット）ホストへの接続を行う」という関連する記述を有することができる。コンポーネント許可は、チャットサーバへの接続などのアプリケーション固有の動作のようなユーザにとって重要な動作を表す。同様に、コンポーネント許可の記述は、ユーザにとって重要であるという観点から許可を記述するものであり、例えば、「ＩＲＣ（チャット）ホストへの接続を行う」の方が、「ネットワーク接続を開く」又は「６６６７〜７００２の範囲のポートでネットワーク接続を開く」よりも重要である。「ＩＲＣ（チャット）ホスト」という記述部分は、ＩＲＣ又はチャットホストなどのアプリケーション固有の機能を示す。ポート６６６７〜７００２をリストする記述は、アプリケーションについて記載するものでなければ特定のアプリケーションを示すことはなく、従ってアプリケーション固有の機能を示すものではない。
【００４１】
１つの例では、許可オブジェクトに関する要件をセキュリティセンシティブなコンポーネント動作に関連付けることができ、このコンポーネントは、コンポーネントの初期化中又は初期処理中に上述したＣｏｎｎｅｃｔＴｏＣｈａｔＳｅｒｖｅｒ許可のような対応する許可オブジェクトを取得することを求めることができる。コンポーネントを実行すべき場合、動作を呼び出すための許可を求める。本明細書の他の箇所で説明するようなセキュアなユーザ入力要求メッセージを使用してユーザに入力要求メッセージを表示することにより、動作に必要な許可オブジェクトを取得することができる。ユーザが、行うべき動作を記述する入力要求メッセージに対して肯定的な「はい」で応答した場合、動作を呼び出すための許可がユーザに与えられる。別の例では、ユーザが、セキュアなユーザ入力要求メッセージと置き換えることができる関連するデジタル証明書を有することにより、ユーザに動作を呼び出すための許可を与えることができる。この動作を、必要な最大リスクレベルに関連付けることにより、動作の必要な最大リスクレベル以下のリスクレベルを有する証明書を有するユーザが動作を実行できるようにすることができる。
【００４２】
例えば、チャットコンポーネントは、チャットサーバへのネットワーク接続を開く「ｃｏｎｎｅｃｔ」という名前の動作を含むことができる。チャットコンポーネントは、Ｒｕｂｙなどの１つの言語で部分的に、そしてＣなどの第２のネイティブ言語で部分的に実装することができる。ネイティブ言語を実装することは、オペレーティングシステムネットワーク接続機能を直接呼び出すことを含むことができ、この場合、ネイティブ言語を実装することによりユーザに関連する許可の存在がチェックされ、この許可は、ＣｏｎｎｅｃｔＴｏＣｈａｔＳｅｒｖｅｒ許可などのネットワーク接続機能のような実行すべき動作に対応する。（ユーザに関連するような）許可が存在する場合、ネイティブインプリメンテーションは、オペレーティングシステムネットワーク接続機能を呼び出す。許可が存在しない場合、インプリメンテーションは、セキュアなユーザ入力のユーザインターフェイスを呼び出し、「ネットワークを介してチャットサーバと通信する許可を与えますか？このアクションのリスクレベルは低いです。」というような入力要求メッセージをユーザに提示する。この入力は、実行すべきアクションを記述するフレーズを含み、このアクションは、上記の例ではチャットサーバへのネットワーク接続を設定するための「接続」動作であるコンポーネント動作の観点から記述される。入力要求メッセージは、チャットサーバとの通信などのコンポーネント動作の観点から求められる許可を記述する。入力要求メッセージは、低などのリスクレベルを記述する。入力要求メッセージは、コンポーネントのユーザにとってそれほど重要でないサーバ「ａ．ｂ．ｃｏｍ」のポート７０００への接続のような基本的なオペレーティングシステム機能の意味とは対照的に、コンポーネント動作の意味論的な意味の観点から動作を記述する。
【００４３】
図２は、本発明の実施形態によるコンポーネントのメタデータ情報を示す例示的な図である。図２はコンポーネント例２００のプロパティを示しており、コンポーネント名２０２（ＩｍａｇｅＡｌｔｅｒ）、タイプ２０４（独立型）、バージョン２０６（１．０．１）、コアレット（すなわち、コンポーネント）ＡＰＩバージョン２０８（３）、記述２１０（「画像をローカルに変更しＨＴＴＰを介して供給するためのＩｍａｇｅＭａｇｉｃｋに基づくコアレット」）、及び動作仕様２１４及び文書２１６を含むインターフェイス仕様２１２を含む。インターフェイス仕様２１２は、図１Ａのコンポーネント実行論理１４０によって使用され、（インターフェイス仕様２１２により指定されるような）インターフェイス及びインプリメンテーションをコンポーネント１４８として登録する。１つの例では、コンポーネント実行論理１４０が、個々の動作名及びパラメータタイプをインターフェイス仕様２１２から抽出することにより、コンポーネントのインターフェイスを決定することができる。インプリメンテーションは、例えば、ネイティブオペレーティングシステム機能にアクセスするあらゆる部分の（Ｃ＋＋などの言語による）ネイティブインプリメンテーションを含む、ソース、オブジェクト、又はバイトコード形式のＲｕｂｙなどの言語で実装されるプログラムコードを含むことができる。登録されると、コンポーネントのインターフェイスにより提供される動作をブラウザベースのコード１０７が使用できるようになる。この例では、インターフェイス２１２がテキストフォーマットで指定され、Ａｌｔｅｒという名前の単一の動作を含む。インターフェイス仕様の例として、
Ａｌｔｅｒ（＜ｐａｔｈ＞ｆｉｌｅ，＜ｉｎｔｅｇｅｒ＞ｍａｘｗｉｄｔｈ，＜ｉｎｔｅｇｅｒ＞ｍａｘｈｅｉｇｈｔ，＜ｉｎｔｅｇｅｒ＞ｒｏｔａｔｉｏｎ，＜ｓｔｒｉｎｇ＞ｑｕａｌｉｔｙ，＜ｌｉｓｔ＞ｅｆｆｅｃｔｓ，＜ｓｔｒｉｎｇ＞ｆｏｒｍａｔがある。
【００４４】
インターフェイス仕様２１２の形の追加エントリをメタデータに追加することにより、インターフェイスに追加動作を含めることができる。文書２１４は、例示的なＡｌｔｅｒ動作の記述、すなわち「画像を変更し、結果にアクセスできるローカルホストＵＲＬを戻す」を提供する。文書２１４は、統合開発環境などの開発ツールにおいて使用するために自動的に変換することができる。
【００４５】
図３は、本発明の実施形態によるコンポーネントを実行するための許可を求める、ウェブブラウザに表示される入力要求メッセージを示す図である。図３は、ホストコンピュータ（この例では、ｂｒｏｗｓｅｒｐｌｕｓ．ｙａｈｏｏ．ｃｏｍ）がユーザのコンピュータ上で新しいサービス（すなわち、コンポーネント）を使用及び起動するための許可を求めている旨の入力要求メッセージを表示する入力要求メッセージダイアログボックス３００を示している。この入力要求メッセージはユーザに、求められる許可のリスト３０２を承認前に慎重に見直すように求める。求められる許可３０２は、ディスプレイデスクトップ通知許可３０４及びダウンロード及び起動サービス許可３０６を含む。ディスプレイデスクトップ通知許可は、許可３０４の記述の隣に表示するチェックマークによって示すように、既にユーザにより許可されている。ダウンロード及び起動許可３０６は、通知サービスがデスクトップ通知を配信するためのサービスであることを記載する通知サービス記述３０８を含む、ダウンロード及び起動されるサービスに関するさらなる詳細を含む。拒否ボタン３１０は、ダウンロード及び起動に対する許可を拒否するためにユーザが選択することができる。許可ボタン３１２は、ダウンロード及び起動サービスを実行できるようにするために選択することができる。ブラウザベースのコードによりコンポーネントが呼び出された場合、ユーザの定義したコンポーネントのために同様の入力要求メッセージを表示することができる。
【００４６】
図４及び図５は、本発明の実施形態によるファイルアップロードコンポーネントの例図である。ファイルアップロードコンポーネント４００は、エリア４１０にピクチャファイルをドラッグアンドドロップできるようにする。その後、コンポーネントによりファイルがＦｌｉｃｋｒ（登録商標）にアップロードされる。図５は、ピクチャディレクトリからアップロードされたピクチャ５１０を示している。インターフェイスは、ピクチャのサイズを変更するための変換５３０を適用するためのコンポーネント５２０も含む。これらのコンポーネントは、ユーザのコンピュータ上に（ＩｍａｇｅＭａｇｉｃｋライブラリなどの）ローカル動作を呼び出してウェブブラウザ内からのピクチャを処理する。
【００４７】
１つの例では、コンポーネントが見つからない場合、コンポーネント実行論理１４０が、あらゆる数の配信サーバに問い合わせを行い、依存関係の解決を含めてコンポーネントを見つけてこれを取り出す。コンポーネント１４８はバージョン化され、すなわちバージョン番号に関連付けられ、別のコンポーネントにより、又はエンドユーザマシン１０２のレベルで、プラグインインターフェイス１０８によりコンポーネントバージョンを要求することができる。１つの例では、コンポーネント１４８が、メジャーバージョン番号、マイナーバージョン番号、及びミクロバージョン番号を含むバージョンに関連付けられて２．０．１などのバージョンを形成する。コンポーネントは、例えば、コンポーネント自体を記述する名前と組み合わせたコンポーネントプロバイダのインターネットドメイン名によって指定される一意の名前を有する。従って、コンポーネント名の例は、「ｃｏｍ．ｖｅｎｄｅｒ．ＩｍａｇｅＡｌｔｅｒ」となる。バージョン指示子は、メジャー及びマイナー、又はメジャー、マイナー、及びミクロ番号を含むことができる。バージョン指示子内に存在する全ての数字がコンポーネントバージョン内の対応する数字と同じである場合、コンポーネントバージョンはバージョン指示子と一致する。１つの例では、コンポーネントに対する要求を満たす方法を決定する際に３つのリストが考えられ、これらは、エンドユーザマシン１０２上で利用可能なアップデート（優先順位１）、インストールされているコンポーネント（優先順位２）、及び配信サーバ１５０などの、ネットワークから利用可能なコンポーネント（優先順位３）である。
【００４８】
本発明の実施形態により、セキュリティメカニズムが提供される。セキュリティメカニズムは、セキュアなユーザ入力要求メッセージ、非明示的な承諾、及びセキュアなリソース表現を含む。１つの態様では、セキュアなユーザ入力要求メッセージが、実行される特定の動作を記述する入力要求メッセージを有するダイアログボックスを表示することを含む。入力要求メッセージは、コンポーネントが機能するオブジェクト又はサービスの種類を示す少なくとも１つのコンポーネント固有の用語を使用して動作を記述する。例えば、「写真へのアクセスを許可せよ」という入力要求メッセージは「写真」という用語に言及しており、これは写真へのアクセスを許可するためのコンポーネントがその上で動作する種類のオブジェクトである。別の例として、「インスタントメッセージングを介したアクセスを許可せよ」という入力要求メッセージは「インスタントメッセージング」という用語に言及しており、これはインスタントメッセージングへのアクセスを許可するためのコンポーネントがその上で動作する種類のサービスである。１つの例では、コンポーネント固有の用語の方が、コンポーネントが呼び出す（単複の）基本的なオペレーティングシステム機能の記述よりも具体的である。例えば、読み取り許可を与えるためのオペレーティングシステムレベルの動作は、いずれかの特定のアプリケーション又はコンポーネントオブジェクト又はサービスとは無関係に、読み取り許可に関する一般的な記述を有する。
【００４９】
本発明の実施形態によれば、非明示的な承諾セキュリティ機能が、動作を実行するための許可を求める明示的な要求に対する反応ではないユーザアクションに応答して、ユーザが動作を実行するための肯定的な承諾を暗示する。非明示的な承諾の例として、リスクがありそうな動作の開始ポイントであるファイルを指定するために、ユーザがコンピュータとやりとりする。コンポーネントはこのやりとりを、ユーザが制限されたシステム動作などの動作をファイル上で実行するための承諾であると解釈することができる。同様に、他のリソースタイプでは、ユーザがコンポーネントのユーザインターフェイスと特定の方法でやりとりすることに応答して、リソースタイプへのアクセスを制御するコンポーネントにより、ユーザがリソースタイプに動作を実行できるようになる。例えば、ユーザのユーザインターフェイスコンポーネントなどとのやりとりは、動作を実行するための許可をユーザが非明示的に承諾することを意味する。例えば、ウェブページを表示するブラウザアプリケーション内にファイルをドラッグするというユーザ動作は、ウェブページに関連するコードが指定されたファイルに対して動作する（例えば、読み取る又は書き込む）ことができるという非明示的な承諾を提供する。
【００５０】
別の例では、システムがコンテキスト内ダイアログを表示して、例えば、コンポーネントが要求するユーザ名及びログインクレデンシャルを提供することができる。この入力は、信頼できないウェブページ１０６の制御外のプラグイン共通ライブラリ１１７によって表示され、この場合、「Ｆｌｉｃｋｒにログインする」のような動作を実行する許可の入力要求メッセージをユーザに表示するのではなく、クレデンシャルの取得をフローに統合することができる。この場合、ユーザは、特定のウェブサイトを使用しながらＦｌｉｃｋｒクレデンシャルを与えることを拒否することができ、エンドユーザによる知的支出は少ない。しかしながら、最終的な結果は同じことであり、ユーザは、動作を承認することをウェブページの制御外で直接求められる。
【００５１】
非明示的な承諾は、複数のユーザインタラクションステップを単一のステップにまとめることを可能にする。非明示的な承諾を使用することで、ユーザは、動作を実行するための許可を明示的に求められなくなる。代わりに、動作を実行するための許可のユーザの承諾がユーザの動作から推測されるようになる。非明示的な承諾は、ウェブインタラクションのセキュリティ及び使い易さを向上させる。Ｆｌｉｃｋｒアップロードの例では、例えばフローは以下のようになる。非明示的な承諾を使用しなければ、（１）ユーザが、ＦｌｉｃｋｒにアップロードはするがＦｌｉｃｋｒの製品ではないページを訪問し、（２）ユーザが、ＦｌｉｃｋｒページにリダイレクトされてＦｌｉｃｋｒに許可を行い、（３）ユーザがＦｌｉｃｋｒに対する承認を完了し、（４）ユーザがＦｌｉｃｋｒページのウィンドウを閉じて元のページに戻り、ボタンをクリックすることにより認証を完了する。
【００５２】
非明示的な承諾を使用すれば、同じ認証フローがより少ないステップで行われ、（１）ユーザが、ＦｌｉｃｋｒにアップロードはするがＦｌｉｃｋｒの製品ではないページを訪問し、（２）元のページの制御外でＦｌｉｃｋｒに対する承認を処理する「セキュアダイアログ」がページ上に現れ、（３）ユーザがクレデンシャルを入力してｏｋをクリックし、及び（４）元のページは自動的に通知される。非明示的な承諾では、元のページ上でボタンをクリックして認証が完了したことを示すという第１のフローの最終ステップが不要となる。さらに、その後のＦｌｉｃｋｒサービスのアクセスによって、ユーザのクレデンシャルを自動的にＦｌｉｃｋｒに提供できるようになり、ログインが失効している場合にユーザが再度クレデンシャルを提供する必要がなくなる。クレデンシャルは、Ｆｌｉｃｋｒコンポーネントによりセキュアかつ内密に保持される。
【００５３】
Ｆｌｉｃｋｒログインの例では、コンポーネントが、Ｆｌｉｃｋｒへのログインなどのログインクレデンシャルを求める動作を実行するための許可を求める。ウェブページが、Ｆｌｉｃｋｒを承認するための機能を呼び出す。ページの制御外で、（コンポーネント１４８内に示すＦｌｉｃｋｅｒＵｐｌｏａｄｅｒなどの）Ｆｌｉｃｋｒアクセスコンポーネントの指示でコアサービス１４２により、クレデンシャル及び承認要求の送信に関する指示が行われる。承認要求の完了時に、ウェブページは、「承認」、「ユーザが承認を拒否」、又は「承認失敗（クレデンシャルが不良）」とすることができる戻り値を受け取る。ウェブページは、認証が行われるサイトに関するユーザのクレデンシャル（例えば、ログイン名及びパスワード）にアクセスできないので、セキュリティが拡張される。
【００５４】
別の例では、ウェブアクセス可能カメラ（ｗｅｂｃａｍ）とやりとりするために、明示的な承諾を使用して、（１）ユーザが、ウェブカム機能を提供するウェブページを訪問し、（２）ユーザが、「ウェブカムから写真を撮る」ボタンをクリックし、（３）ユーザがウェブページの制御外で、写真を撮る許可の入力要求メッセージを表示され、及び（４）ユーザが「取り込み」ボタンをクリックして写真を撮る。非明示的な承諾を使用すれば、同じウェブカムとのやりとりがより少ないステップで行われ、（１）ユーザが、ウェブカムのページを訪問し、（２）現在のウェブカムビューを表示するダイアログがユーザに提示され（このダイアログは、ウェブページの制御外にある）、（３）ユーザが、「取り込み」ボタンをクリックするこれにより、ウェブサイトがウェブカムを使用するための非明示的な承諾を認める。本発明の実施形態によれば、このユーザインタラクションによりセキュアなリソース表現が生成され、これにセキュアなリソース識別子としてのＪａｖａＳｃｒｉｐｔコードでアクセスできるようになる。識別子は、ファイルなどの特定のリソースに関連付けられ、これを（ＪａｖａＳｃｒｉｐｔなどの）ブラウザベースのコードによって変更することはできない。１つの態様では、識別子が、参照できるランダムな一意の数字であるが、これを変更して異なるファイル又はその他のリソースを示すことはできない。ファイル選択の有効期間はページの有効期間に基づくので、識別子は、ブラウザによってページが閉じられた後に無効になる。
【００５５】
コンポーネントインプリメンテーションは、ウェブページ上の（ＪａｖａＳｃｒｉｐｔなどの）ブラウザベースのコードとは無関係にエンドユーザに入力要求メッセージを表示する。従って、コンポーネントコードは、許可の承諾（肯定的）又は拒否（否定的）などの、エンドユーザにより提供される応答に制約される。１つの態様では、記憶された情報にアクセスし、又はこれを削除することができ、或いはネットワーク接続を使用することができるようなセキュリティセンシティブであり得るあらゆる動作が潜在的なセキュリティリスクであり、セキュアなユーザ入力要求メッセージにより、又は１つの例では、動作に対応する証明書検証済み許可オブジェクトを検証することによりこれらの動作を保護すべきである。
【００５６】
１つの例では、ホワイトリスト機能を提供して、特定のウェブサイト上の特定のコンポーネント又はこの特定のバージョンの実行を有効又は無効にすることができる。ホワイトリストエントリは、サイトが特定のコンポーネントを使用できるようにする。配信サーバ１５０が、コンポーネントの使用を許可されたドメインのホワイトリスト、（削除などの）消去のためのコンポーネントのブラックリスト、及び消去のプラットフォームバージョンのブラックリストを含む署名された配信ファイルを配信する。例えば、バージョン１．０．１のコンポーネントにバグがあると分かっている場合、ブラックリスト機能を使用して、バージョン１．０．１を今後実行できないようにすることができる。ホワイトリスト機能は、ユーザにより制御することができる。例えば、音楽サイトは、曲をユーザのＡｐｐｌｅ  ｉＴｕｎｅｓ（登録商標）音楽プレーヤディレクトリに直接インポートするためのコンポーネントを使用することができる。このコンポーネントは、インポートを一回許可するか、毎回許可するか、或いは許可しないかをユーザに訊ねることができる。
【００５７】
１つの例では、図１Ａのプラグインインターフェイスプラットフォーム１０８を使用するクライアントが、コンポーネント及び／又はその特定のバージョンを消去するためのブラックリスト機能を含む。クライアントは、許可バンドルを含むデジタル署名されたバンドルをダウンロードする。このダウンロードは、サーバから受信したメッセージに応答して特定の時間に、又は定期的に、或いはその他の時間に行うことができる。許可バンドルは、消去される１又はそれ以上のコンポーネントと、これに対応するバージョンとをリストする取り消しリストを含む。取り消しリスト上のあらゆるインストール済みコンポーネントが消去され、あらゆるその後の消去されたコンポーネントを再インストールしようとする試みがうまくいかなくなる。プラグインインターフェイスプラットフォーム１０８は、取り消しリスト内の指定されたエントリにより、これ自体が遠隔で無効にされる。
【００５８】
新しいバージョンのコンポーネントを適宜利用可能にすることができる。エンドユーザマシン１０２にインストールできるコンポーネントの数が多いので、インストールしたコンポーネントを全て最新に保つことは、パフォーマンスに悪影響を与え、及び／又はリソースを過剰に消費する可能性がある。ユーザが、コンポーネントを使用するサイトを訪問すると、サイトは、コンポーネント名、バージョン、及びマイナーバージョントリプレットなどのコンポーネント要件を要件記述として表す。完全な要件が、最後に要求されたものと共に記憶される。アップデートチェックが、期限が過ぎた要件記述を定期的に消去し、残りの現在の要件を満たすとともに現在マシン１０２にインストールされているより新しいバージョンのコンポーネントであるコンポーネントに関して配信サーバをチェックする。例えば、実行中のコンポーネントを停止することなく、あらゆるこのような新しいバージョンがバックグラウンドでダウンロードされ、アップデートキャッシュに記憶される。その後、ウェブブラウザ１０４が、利用可能なキャッシュ済みのアップデートにより提供された要件を表すサイトを訪問した場合、ユーザは、ダウンロードしたアップデートをインストールする許可の入力要求メッセージを表示される。例えば、現在の要件を満たすために使用されておらず長時間にわたって使用されていないコンポーネントを見つけることにより、期限を過ぎたコンポーネントを識別して削除することができる。これらのコンポーネントはマシン１０２から悪影響を最小にして消去される。
【００５９】
図６は、本発明の実施形態で処理機能を実現するために使用できる代表的なコンピュータシステム６００を示している。例えば、クライアント及びサーバにおいてこの種のコンピュータシステムを使用することができる。当業者であれば、他のコンピュータシステム又はアーキテクチャを使用して本発明を実施する方法を理解するであろう。コンピュータシステム６００は、例えば、デスクトップ、ラップトップ又はノートブックコンピュータ、（ＰＤＡ、携帯電話、パームトップなどの）ハンドヘルドコンピュータ装置、メインフレーム、サーバ、クライアント、又は所与のアプリケーション又は環境に望ましい又は適当とすることができるようなその他のあらゆる種類の専用又は汎用コンピューティング装置を表すことができる。コンピュータシステム６００は、プロセッサ６０４などの１又はそれ以上のプロセッサを含むことができる。例えば、マイクロプロセッサ、マイクロコントローラ又はその他の制御論理などの汎用又は専用処理エンジンを使用してプロセッサ６０４を実現することができる。この例では、プロセッサ６０４が、バス６０２又はその他の通信媒体に接続される。
【００６０】
コンピュータシステム６００はまた、ランダムアクセスメモリ（ＲＡＭ）、又は情報及びプロセッサ６０４により実行される命令を記憶するためのその他の動的メモリなどのメインメモリ６０８を含むこともできる。メインメモリ６０８はまた、プロセッサ６０４により実行される命令の実行中に一時的変数又はその他の中間情報を記憶するためにも使用することができる。同様に、コンピュータシステム６００は、読み出し専用メモリ（「ＲＯＭ」）、又は静的情報及びプロセッサ６０４のための命令を記憶するための、バス６０２に結合されたその他の静的記憶装置を含むことができる。
【００６１】
コンピュータシステム６００はまた情報記憶システム６１０を含むこともでき、この情報記憶システム６１０は、例えば、メディアドライブ６１２及び取り外し可能記憶インターフェイス６２０を含むことができる。メディアドライブ６１２は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、光ディスクドライブ、ＣＤ又はＤＶＤドライブ（Ｒ又はＲＷ）、又はその他の取り外し可能又は固定メディアドライブなどの固定又は取り外し可能記憶媒体をサポートするためのドライブ又はその他のメカニズムを含むことができる。記憶媒体６１８は、例えば、ハードディスク、フロッピーディスク、磁気テープ、光ディスク、ＣＤ又はＤＶＤ、或いはメディアドライブ６１２によって読み取られ書き込まれるその他の固定又は取り外し可能媒体を含むことができる。これらの例が示すように、記憶媒体６１８は、内部に特定のコンピュータソフトウェア又はデータを記憶するコンピュータ可読記憶媒体を含むことができる。
【００６２】
代替の実施形態では、情報記憶システム６１０が、コンピュータプログラム又は他の命令又はデータをコンピュータシステム６００内にロードできるようにするためのその他の同様のコンポーネントを含むことができる。このようなコンポーネントは、例えば、プログラムカートリッジ及びカートリッジインターフェイスなどの取り外し可能記憶ユニット６２２及びインターフェイス６２０、取り外し可能メモリ（例えば、フラッシュメモリ又はその他の取り外し可能メモリモジュール)及びメモリスロット、及びソフトウェア及びデータを取り外し可能記憶ユニット６１８からコンピュータシステム６００へ転送できるようにするその他の取り外し可能記憶ユニット６２２及びインターフェイス６２０を含むことができる。
【００６３】
コンピュータシステム６００はまた、通信インターフェイス６２４を含むこともできる。通信インターフェイス６２４を使用して、コンピュータシステム６００と外部装置との間でソフトウェア及びデータを転送できるようにすることができる。通信インターフェイス６２４の例として、モデム、（イーサネット（登録商標）又はその他のＮＩＣカードなどの）ネットワークインターフェイス、（ＵＳＢポートなどの）通信ポート、ＰＣＭＣＩＡスロット及びカードなどを挙げることができる。通信インターフェイス６２４を介して転送されるソフトウェア及びデータは、通信インターフェイス６２４が受信できる電子、電磁、光又はその他の信号とすることができる形の信号である。これらの信号は、チャネル６２８を介して通信インターフェイス６２４に提供される。このチャネル６２８は信号を運ぶことができ、無線媒体、電線又はケーブル、光ファイバ、又はその他の通信媒体を使用して実現することができる。チャネルのいくつかの例として、電話回線、携帯電話リンク、ＲＦリンク、ネットワークインターフェイス、ローカル又はワイドエリアネットワーク、及びその他の通信チャネルが挙げられる。
【００６４】
本文書では、「コンピュータプログラム製品」、「コンピュータ可読媒体」、及び同様の用語を、一般に、例えばメモリ６０８、記憶装置６１８、又は記憶ユニット６２２などの媒体を示すために使用することができる。これらの及びその他の形のコンピュータ可読媒体が、プロセッサ６０４により使用される１又はそれ以上の命令を記憶することに関与して、プロセッサが特定の動作を実行するようにすることができる。一般に、（コンピュータプログラムの形又はその他のグループの形でグループ化することができる）「コンピュータプログラムコード」と呼ばれるこのような命令は、実行時に、コンピュータシステム６００が本発明の実施形態の特徴又は機能を実行できるようにする。コードは、特定の動作をプロセッサに直接行わせることができ、これを行うようコンパイルすることができ、及び／又はこれを行うために、他のソフトウェア要素、ハードウェア要素、及び／又は（標準的な機能を実行するためのライブラリなどの）ファームウェア要素と組み合わせることができる。
【００６５】
ソフトウェアを使用して要素が実現される実施形態では、例えば、取り外し可能記憶ドライブ６１４、ドライブ６１２又は通信インターフェイス６２４を使用して、ソフトウェアをコンピュータ可読媒体に記憶し、これをコンピュータシステム６００にロードすることができる。制御論理（この例では、ソフトウェア命令又はコンピュータプログラムコード）は、プロセッサ６０４によって実行された場合、プロセッサ６０４に本明細書で説明するような本発明の機能を実行させる。
【００６６】
説明を明確にするために、上記の説明は、本発明の実施形態を異なる機能ユニット及びプロセッサに関して説明していることが理解されよう。しかしながら、本発明から逸脱することなく、異なる機能ユニット、プロセッサ又はドメイン間であらゆる適当な機能の分散を使用できることが理解されよう。例えば、別個のプロセッサ又はコントローラにより実行されるように示している機能を、同じプロセッサ又はコントローラにより実行することができる。従って、特定の機能ユニットへの言及は、厳密な論理的又は物理的構造又は組織を示すものではなく、説明する機能を提供するための適当な手段への言及としてのみ理解すべきである。
【００６７】
いくつかの実施形態に関して本発明について説明したが、本発明は、本明細書に示す特定の形に限定されることを意図されるものではない。むしろ、本発明の範囲は、特許請求の範囲によってのみ限定される。さらに、特定の実施形態に関して特徴について説明したように思われるが、当業者であれば、説明した実施形態の様々な特徴を本発明に基づいて組み合わせることができることを理解するであろう。
【００６８】
さらに、個々にリストしてはいるものの、複数の手段、要素又は方法ステップを、例えば単一のユニット又はプロセッサによって実行することができる。また、個々の特徴が異なる請求項に含まれることがあるが、場合によってはこれらを有利に組み合わせることができ、異なる請求項に含まれるということにより、特徴を組み合わせることが実現可能及び／又は有利でないことを意味するものではない。また、特徴を１つのカテゴリの請求項に含むということが、このカテゴリへの限定を意味するわけではなく、むしろ必要に応じてこれらの特徴を他の請求項のカテゴリにも等しく適用することができる。
【００６９】
さらに、当業者であれば、本発明の思想及び範囲から逸脱することなく様々な修正及び変更を行うことができることが理解されよう。本発明は、上述した例示的な詳細により限定すべきものではなく、特許請求の範囲に基づいて定義すべきものである。
【００７０】
上記ではいくつかの例示的な実施形態のみについて詳細に説明したが、当業者であれば、本発明の新規の教示及び利点から著しく逸脱することなく、例示的な実施形態における多くの修正を考え得ることを容易に理解するであろう。従って、このような修正は全て本発明の範囲内に含まれることが意図されている。
【図１Ａ】
2011514996.tif 000004
【図１Ｂ】
2011514996.tif 000005
【図１Ｃ】
2011514996.tif 000006
【図１Ｄ】
2011514996.tif 000007
【図１Ｅ】
2011514996.tif 000008
【図２】
2011514996.tif 000009
【図３】
2011514996.tif 000010
【図４】
2011514996.tif 000011
【図５】
2011514996.tif 000012
【図６】
2011514996.tif 000013
【国際調査報告】
2011514996.tif 000014
2011514996.tif 000015