(57)【特許請求の範囲】
【請求項１】
スクリプトを実行するためのスクリプトエンジン手段を伴うランタイム環境を有するデータ処理システムであって、
前記スクリプトエンジン手段は、パブリックスクリプトエンジンとプライベートスクリプトエンジンとを実装し、
前記ランタイム環境は、前記スクリプトが当該システムでの予め決められたリソースへのアクセスを要求しない場合には、前記パブリックスクリプトエンジンにより実行される前記スクリプトをもつように構成され、
前記ランタイム環境は、前記スクリプトが前記予め決められたリソースへのアクセスを要求する場合には、前記プライベートスクリプトエンジンにより実行される前記スクリプトをもつように構成され、
前記プライベートスクリプトエンジンだけが、前記スクリプトが前記予め決められたリソースにアクセスすることを可能にするインタフェースをもち、
前記スクリプトエンジン手段は、前記プライベートスクリプトエンジンが、当該データ処理システムの外部のサーバに対する通信がユーザ又は前記ランタイム環境により承認されない限り、前記パブリックスクリプトエンジン又は前記サーバにデータを通信することを阻止するように構成される、データ処理システム。
【請求項２】
前記スクリプトエンジン手段は、前記パブリックスクリプトエンジンとして動作する第１のスクリプトエンジンと、前記プライベートスクリプトエンジンとして動作する第２のスクリプトエンジンとを有する、請求項１に記載のデータ処理システム。
【請求項３】
前記スクリプトエンジン手段は、第１のモードに設定されたときに前記パブリックスクリプトエンジンとして動作し、第２のモードに設定されたときに前記プライベートスクリプトエンジンとして動作する、設定可能なスクリプトエンジンを有する、請求項１に記載のデータ処理システム。
【請求項４】
前記ランタイム環境は、ブラウザ、Java Virtual Machine及びオペレーティングシステムのうち少なくとも１つを有する、請求項１に記載のデータ処理システム。
【請求項５】
請求項１に記載のデータ処理システムで使用するスクリプトエンジン手段を伴う、ランタイム環境。
【請求項６】
前記データ処理システムの操作可能な使用の間、実行時に、請求項１に記載のランタイム環境を実装するように構成された、コンピュータで実行可能な命令を有する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スクリプトを実行するためのスクリプトエンジン手段をもつランタイム環境を有するデータ処理システム、スクリプトエンジン手段を有するランタイム環境、コンピュータで実行可能な命令を有するコンピュータプログラムプロダクト、及び、実行制御指示を含むスクリプトを表すデータ構造に関する。
【背景技術】
【０００２】
ネットワーク化された電子デバイスの使用は、ますます普及するようになってきた。ホームネットワークの分野において、リモートユーザインタフェースは、UPnP（Universal Plug and Play）ネットワークにおける消費者向け電子（CE；Consumer Electronics）デバイスに対して提供される。リモートユーザインタフェースは、ユーザが、UPnPホームネットワークを介して他のUPnPデバイス上のアプリケーションを遠隔で制御することを可能にし、ユーザが、インターネットに接続されたCEデバイスを用いてインターネットサービスとインタラクトすることも可能にする。斯様なインターネットサービスの一例は、ユーザが動画等のコンテンツ情報をダウンロードすることができるサービスである。UPnPのより詳細な背景については、例えば国際公開第２００５／００２１３９号を参照されたい。
【０００３】
多数のインターネットサービス提供者、異なるタイプのサービス及び多数の消費者向けデバイス供給者が含まれることを考慮すると、ユーザに対して最良の体験を提供するために、通信プロトコル及びユーザインタフェースを可能な限り標準化することが好ましい。
【０００４】
一の斯様な規格は、CEA-2014（Web4CEとしても知られている）、Consumer Electronics Association（CEA）規格である。例えば、"Web4CE: Accessing Web-based Applications on Consumer Devices", W. Dees and P. Shrubsole, WWW 2007/ Poster Paper, Topic: Systems, pp.1303-1304を参照されたい。この規格は、UPnPネットワーク及びインターネット上のリモートユーザインタフェースに対して、ウェブベースのプロトコルとCE-HTMLと呼ばれるXHTMLベースのコンテンツフォーマットとを指定している。CE-HTMLは、Javascript 1.5, XHTML 1.0及びCSS TV Profile 1.0のような共通のオープンインターネット言語に基づいている。CE-HTMLは、インタラクティブサービスのためのスクリプト記述の意味及びコンテンツフォーマットを指定し、これらのサービスを主催及びレンダリングするブラウザ環境を規定している。CE-HTMLの現在のバージョンの標準化は、主に２つの標準化、即ちConsumer Electronics Association（CEA）とOpen IPTV Forum（OIPF）とに向かって進められる。CEA-2014は、２つの主要なアプリケーションをもっている。第一に、これは、消費者が、UPnPホームネットワークを介して他のUPnPデバイス上のアプリケーションを遠隔で制御することを可能にする。第二に、これは、消費者が、インターネットに接続された消費者向けデバイスを用いてインターネットサービス又はウェブベースのアプリケーションとインタラクトすることを可能にする。ユーザインタラクションは、CEA-2014に準拠したブラウザ、例えばMedia Adaptor、テレビ又は携帯電話を含むデバイスのリモコン装置、キー又はタッチスクリーンを用いて行われ得る。
【０００５】
典型的には、ウェブブラウザは、HTMLフォーマットにおける電子文書をレンダリングするために用いられるが、特別な目的の言語のホストは、HTML文書に組み込まれた実行可能なコンテンツを介してブラウザの動作を制御するように開発されている。実行可能なコンテンツは、例えばブラウザに対する双方向性及び自動化を追加する。これらの特別な目的の言語の例は、一見Javaに似ている多目的手順スクリプト言語であるECMAScript、スタイルメタデータがコンテンツから抽出されることを可能とするCSS（Cascading style sheets）、HTMLの代替手段としての、スタイルメタデータと組み合わせてコンテンツに対して用いられ得るXML、及び、XMLコンテンツを新たな形式に変換する提示言語であるXSLTである。反応性のユーザの主観的印象を向上させるためにスクリプト記述するXML及びJavaScriptの組み合わせを含むこれらの技術が発展している。Document Object Model規格は、全てのブラウザが、予測可能な態様で同一のJavaScriptに応答することを保証する（情報元；Wikipedia）。更に、ブラウザ環境は、Adobe Flashのような、外国のコンテンツを表示するため、及び／又は、このコンテンツとインタラクトするためにプラグインにより拡張され得る。外国のコンテンツは、視覚的又は非視覚的なものであってもよく、スクリプトエンジンにより用いられ得るスクリプトAPIを提供してもよい。従って、ウェブブラウザは、ウェブアプリケーションのための、及び、例えばサーバからダウンロードされた電子文書に組み込まれたスクリプトを実行するための、クライアント側ランタイム環境を提供する。スクリプトのより詳細な背景については、例えば国際公開２００６／１０６４１４号を参照されたい。
【０００６】
電子文書に組み込まれたスクリプトは、文書がダウンロードされるシステムを改ざんするために、又は、システムのユーザに関するプライバシーに敏感な情報を取得するために、文書提供者により悪用され得る。即ち、ダウンロードされた文書において受信されたスクリプトを実行することは、システムのセキュリティ及びユーザのプライバシーを妨害し得る。
【０００７】
論文"Secure Web scripting", V. Anupam and A. Mayer, Internet Computing IEEE Vol.2, issue 6, Nov/Dec 1998, pp. 46-55は、明示的セキュリティモデルについて述べている。提案されたモデルは、モジラ（Mozilla）ブラウザソースコードにおけるJavaScriptに対して実装されている。これは、"安全な"インタープリタにより実現され、３つの構成要素、即ち、アクセス制御、状況の独立性及びトラストマネジメントに基づいている。アクセス制御は、或るスクリプトがユーザのコンピュータ上のどのデータにアクセスすることができるか、及び、どのモードにおいてアクセスすることができるかを規制する。状況の独立性は、異なる状況において（例えば、異なるブラウザウインドウにおいて同時に、又は、同一のブラウザウインドウにおいて連続的に）実行する２つのスクリプトは、それぞれ他のデータに自由にアクセスすることはできない。トラストマネジメントは、異なる状況において同時に実行するスクリプトの間において信用がどのように確立され終了するかを規制する。異なるユーザは、異なる度合いのプライバシー及びセキュリティを要求し、これは、ウェブサーバとインタラクトするときに異なる度合いのフレキシビリティに置き換える。これらの違いは、異なった、ユーザ選択されたセキュリティポリシーで表現される。選択されたセキュリティポリシーは、スクリプトに対してパッド入りセル（padded cell）に対して与えられる。名前空間を、アクセスできない、読み取り専用及び書き込み可能なアイテムに分割することにより、アクセス制御は、スクリプトがブラウザ及びウインドウに関連したデータの部分にのみアクセスすることを保証し、これは、閲覧している間、ユーザプライバシーを危険にさらさない。また、セキュリティポリシーは、外部インタフェースへのアクセスを規制する。更に、状況の独立性は、異なる状況においてスクリプト間に"隠されたチャンネル"が存在しないことを保証する。例えば、書込み可能なアイテムが状況の変化に渡って持続した場合には（現時点ではJavaScriptに当てはまる）、これは、共同ウェブサイトにアクセス可能な（非持続性ではあるが）ユーザ不可視の"cookie"として用いられ得る。或るウインドウの第１の状況においてユーザにより（例えばこの状況のHTML文書に或るフォームを書き込むことにより）与えられたデータは、第２の状況が第１の状況のアクセス制御リスト（ACL；access control list）内にある場合には、第２の状況におけるスクリプトに対してのみ利用可能である。しかしながら、これらのスクリプトは、任意の他の状況においては、このデータにアクセスすることはできない。
【０００８】
国際公開第２００６／１０６４１４号は、スクリプトオブジェクトでのドメインセキュリティについて述べている。この公報は、スクリプトオブジェクトでのドメインセキュリティを与える方法を開示している。この方法は、第１の所有者による第１のスクリプトオブジェクトが第２の所有者による第２のスクリプトオブジェクトへのアクセスを試みるときに例外を生成するステップと、第２のスクリプトオブジェクトへのアクセス権の付与に関する問い合わせを行う、第２の所有者に対する対話を生成するステップと、第２のスクリプトオブジェクトに対して第１のスクリプトオブジェクトのアクセス権を付与するかどうかの命令を実行するステップとを含む。この命令は、第２の所有者に対する生成された対話に応答する。"所有者"という用語に関して、電子文書の所有者は、この文書を発行したドメインである。ローカルソース（例えばクライアントデータベース又はファイル）を表す任意のオブジェクトの所有者は、ローカルユーザである。知られているように、この状況の範囲内の例外は、ソフトウェア命令の実行の通常フローを変える条件の発生である。例外を取り扱うように設計されたコンピュータコードは、"例外ハンドラ"と呼ばれる。
【０００９】
国際公開第２００５／０３１５６８号は、ウェブブラウザにより同一のユーザインタフェースにおけるリモート及びローカルのサービス及び情報を提示することに関する。ウェブブラウザは、ECMAScriptエンジンを含む。このエンジンは、ECMAScript拡張ライブラリを介してデバイスネイティブな環境と通信するECMAScript拡張モジュール（core JavaScript言語の標準化されたバージョン）により拡張される。これは、ECMAScript環境が、ネイティブコード（JavaにおけるJNI；Java Native Interfaceのようなもの）において実行される新たなクラス及び方法で拡張されることを可能にする。ECMAScriptエンジン及びECMAScript拡張モジュールは、潜在的に任意のソフトウェアプラットフォーム上のウェブブラウザの型に条件付きでコンパイルされ得る。ウェブブラウザの型が有効にされたECMAScript拡張機能で生成されると、ECMAScript環境は、特別に書かれたECMAScript拡張ライブラリを許可ファイルとともに電子デバイス上の或るディレクトリに配置することにより拡張され得る。許可ファイルは、どのウェブページがこれらの拡張にアクセスするかを指定する。このファイルは、セキュリティ上の理由のためにも重要である。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
CE企業、ネットワークオペレータ及びサービス提供者は、IPTV（Internet Protocol Television）及びインタラクティブウェブベースサービスを、接続されたテレビに行わせるための規格を現在開発している。この状況の範囲内において、発明者らは、インターネット上のサービス提供者により提供されたサービスがホームネットワーク内のUPnPデバイスを実際に制御することを可能にするという状況を考慮した。発明者らは、プライバシーの問題を特に考慮した。
【課題を解決するための手段】
【００１１】
これらの見識に基づいて、発明者らは、権限が与えられたときに第三者サービスがホームネットワーク機能だけを制御することを保証するためにセキュリティシステムを導入することを提言している。更に、発明者らは、第三者サービスがホームネットワーク内のデバイスとのインタラクションを通じてプライバシーに敏感な情報を取得するために悪用することを避けることにより、エンドユーザのプライバシーが維持されることを保証することを提言している。
【００１２】
それ故、発明者らは、ランタイム環境モデル、例えば、ブラウザ、オペレーティングシステム若しくはJava Virtual Machine、又は、既存のランタイム環境モデルに対する変更を用いることを提案しており、これは、セキュリティ及びプライバシーの双方の関心に対処し、これは、CE-HTMLを介してUPnPデバイスの制御に対して指定された要件の全セットに適合し、（第三者）サービス提供者からのスクリプトによりホームネットワーク内のUPnPデバイスの制御をサポートする。
【００１３】
本発明の一実施形態は、以下の特性を実現するためにデュアルスクリプトエンジンにより（又は２つの異なるモードをもつスクリプトエンジンの２つの別個のインスタンスにより）ブラウザを与えることに基づいている。（XMLHttpRequestスクリプトオブジェクトを含む）現在主流のブラウザのスクリプトエンジンの全機能を実装し、パブリックスクリプトエンジンからプライベートスクリプトエンジンに（例えば文字列として符号化されたスクリプトを含む）データを通信するためにスクリプトサポートを与えるパブリックスクリプトエンジンが与えられる。プライベートスクリプトエンジンは、現在主流のブラウザのスクリプトエンジンの全機能を実装するために与えられ、これは、更に、ホームネットワーク内のUPnPデバイスを制御するために前述したスクリプトAPIのようなプライバシーに敏感な機能にアクセスするために用いられ得る拡張スクリプトAPIをサポートする。プライベートスクリプトエンジンは、パブリックスクリプトエンジンとのデータ通信のためのスクリプトサポートを与えず、例えばホームネットワークの外部の未承認のサービスに対してXMLHttpRequest要求を禁止することにより、ホームネットワークの外部の共用ストレージ、他のプログラム又は未承認のサービスに対する通信を阻止する。一方のスクリプトエンジンから他方へのイベントの伝播はない。
【００１４】
ホームネットワークの外部にあるサーバへの通信の承認は、ユーザによるイベント毎の承認、並びに／又は、ランタイム環境のデベロッパ／デプロイヤ及び／若しくはユーザによる事前（例えばサーバ毎、ドメイン毎等）の承認に基づいて生ずる。事前の承認は、ランタイム環境の構成により（例えばプライベートスクリプトエンジンからのデータ通信に対する制限から除外されるサーバ又はサーバドメインのローカルに又は遠隔に格納されたリストを維持することにより）取得され得るか、又は、ユーザに関連付けられたセキュリティプロファイル若しくは認証、外部サーバ、及び／若しくは、スクリプトが取得されたデータソースから間接的に導出され得る。
【００１５】
より詳細には、本発明の一実施形態は、スクリプトを実行するためのスクリプトエンジン手段を伴うランタイム環境を有するデータ処理システム、例えばホームネットワークに関する。ランタイム環境は、例えば、ブラウザ、Java Virtual Machine、オペレーティングシステム等を有する。スクリプトエンジン手段は、パブリックスクリプトエンジン及びプライベートスクリプトエンジンを実装する。ランタイム環境は、スクリプトがそのシステムでの予め決められたリソースに対するアクセスを要求しない場合にはパブリックスクリプトエンジンにより実行されるスクリプトをもち、スクリプトが予め決められたリソースに対するアクセスを要求する場合にはプライベートスクリプトエンジンにより実行されるスクリプトをもつ。予め決められたリソースは、例えば、通常のブラウザサンドボックス又はUPnPホームネットワークの範囲外にあるデータ処理システムのハードディスクドライブ又は他のメインメモリ上のデータを有する。プライベートスクリプトエンジンだけが、スクリプトが予め決められたリソースにアクセスすることを可能にするためのインタフェース（例えば、スクリプトアプリケーションプログラムインタフェース又はAPI）をもつ。スクリプトエンジン手段は、通信が承認されていない限り、又は、一般的な通信においてはサーバに対して承認されていない限り、プライベートスクリプトエンジンがパブリックスクリプトエンジン又はデータ処理システムの外部のサーバにデータを通信することを阻止するように構成されている。一方のスクリプトエンジンから他方へのイベントの伝播はない。
【００１６】
従って、スクリプトがパブリックスクリプトエンジンにより実行された場合には、スクリプトは適切なAPIをもたないのでリソースにアクセスすることができない。スクリプトがプライベートスクリプトエンジンにより実行された場合には、スクリプトは、予め決められたリソースにアクセスする。しかしながら、スクリプトは、承認されない限り、例えば、これらの目的のための適切なインタフェースを欠く結果として、又は、未承認の外部サーバと通信するためにこれらのインタフェースを用いるための要求の否認の結果として、予め決められたリソースから導出されたデータがパブリックスクリプトエンジン又は外部サーバに対して通信することをもたらし得ない。結果として、予め決められたリソースでのデータのプライバシーが保証される。
【００１７】
本発明の一実施形態において、スクリプトエンジン手段は、前述された関連する特性とともにそれぞれ利用可能な２つのスクリプトエンジンをもつことにより、パブリックスクリプトエンジン及びプライベートスクリプトエンジンを実装する。例えば、プライベートスクリプトエンジンは、XHTML及びCSSをサポートする例えばブラウザに対するプラグインとして、及び、未承認の外部サーバ、共用ストレージ、又は、パブリックスクリプトエンジンにデータを送信するための任意のインタフェースを欠く特別なプライベートECMAScriptエンジンインスタンスとして実装され得る。ブラウザのECMAScriptエンジンは、パブリックスクリプトエンジンとして機能し得る。知られているように、プラグインは、APIを既存のソフトウェアに追加するために用いられ得る。代わりに、スクリプトエンジン手段は、２つの動作モード、即ちパブリックモード及びプライベートモードのうち一方に選択的に設定可能なスクリプトエンジンを有する。パブリックモードでは、スクリプトエンジンは、パブリックスクリプトエンジンである場合のように動作し、プライベートモードでは、スクリプトエンジンは、プライベートスクリプトエンジンである場合のように動作する。
【００１８】
スクリプトを実行させるためにパブリック又はプライベートスクリプトエンジンのうちどちらを選択するかの処理は、種々の態様において実装され得る。
【００１９】
第１の態様において、スクリプトは、プライベートスクリプトエンジン上で実行されるものであるかどうかを示すファイルネーム拡張子をもつ。ファイルネーム拡張子は、ランタイム環境により解釈され、その後すぐに、ランタイム環境は、プライベート及びパブリックスクリプトエンジンのうちどちらが呼び出されるかを決定する。例えば、スクリプトは、スクリプトのファイルネーム拡張子を含むパスにより、HTMLファイルにおいて参照される。スクリプトがJavascriptである場合には、スクリプトは、スクリプトが実行される必要がある状況に依存して、ファイルネーム拡張子".js"又は".xjs"を有し得る。ファイルネーム拡張子が".js"の場合には、ランタイム環境は、パブリックスクリプトエンジンがこのスクリプトを実行するためのものであるようにこれを解釈する。ファイルネーム拡張子が".xjs"の場合には、ランタイム環境は、プライベートスクリプトエンジンがこのスクリプトを実行するためのものであるようにこれを解釈する。
【００２０】
第２の態様において、スクリプトは、プライベートスクリプトエンジンがスクリプトを実行するために呼び出されることを特定する明示的ステートメントをもつ他の実行可能なファイルに組み込まれるか、又は、このファイルにより参照される。明示的ステートメントは、スクリプトを解釈するためにどのスクリプトエンジンが用いられるかを特定するタイプ属性をもつ宣言ステートメント、例えばXHTMLスクリプトエレメント、又は、専用の手続きステートメント、例えばスクリプト内の"switchToPrivateMode()"若しくは"privateScript.run(script)"を有し得る。
【００２１】
第３の態様において、スクリプトは、組み込まれたか又は参照されたスクリプトを実行するためにプライベートスクリプトエンジンの起動を黙示的に要求する他の実行可能なファイル内のステートメントに組み込まれるか、又はこのステートメントにより参照される。このステートメントは、例えば予め決められたリソースに関連付けられたMIMEタイプを特定するHTML<object>エレメントであり得る。例えば、UPnPホームネットワークの制御に関連付けられたランタイム環境プラグインがMIMEタイプ"application/upnpcontrol"により識別されると仮定すると、このMIMEタイプのHTMLオブジェクトエレメントを含む実行可能なファイルは、組み込まれたか又は参照されたスクリプトがプライベートスクリプトエンジンにおいて実行されるべきことを黙示的に特定する。プライベートスクリプトエンジンを呼び出す必要性を黙示的に特定する他のタイプのステートメントは、プライベートスクリプトエンジンの状況においてのみサポートされる機能又は方法に対する要求を有する。例えば、"readHDDContents()"がプライベートエンジンにより予め決められたリソースに対してのみサポートされていると仮定すると、ファイル内のステートメント"readHDDContents"の発生は、プライベートエンジン内のファイルを更に実行するための要求を黙示的に伝える。
【００２２】
本発明の前記実施形態は、データ処理システムに関する。これらの実施形態は、装置メーカー、ＰＣ製造業者、セットトップボックス製造業者等に商業的に関連する。
【００２３】
本発明の他の実施形態は、斯様なデータ処理システムで使用するスクリプトエンジン手段をもつランタイム環境に関する。ランタイム環境は、例えば、ブラウザ、オペレーティングシステム又はJava Virtual Machineを有する。斯様な実施形態は、ソフトウェア提供者に商業的に関連する。
【００２４】
本発明の他の実施形態は、実行されると、データ処理システムの操作可能な使用の間においてランタイム環境を実行するように構成されるコンピュータ実行可能な命令を有するコンピュータプログラムプロダクトに関する。このソフトウェアは、半導体メモリ（例えばUSBスティック）、又は光ディスクのようなデータ担体上に供給され得る。また、このソフトウェアは、インターネットを介してダウンロードされたものとして供給されてもよい。
【００２５】
本発明の更に他の実施形態は、前記データ処理システムで実行されるスクリプトを表すデータ構造に関する。知られているように、データ構造は、特定のデータ処理機能をサポートするように設計されたデータエレメント間の物理的又は論理的関係を示す。この意味では、本発明におけるスクリプトは、データ構造を表す。本発明のデータ構造は、スクリプトを実行するためにパブリックスクリプトエンジンとプライベートスクリプトエンジンとの間で選択可能な実行制御指示を含む。前記で特定されたように、実行制御指示は、例えばスクリプトのファイルネーム拡張子、プライベートスクリプトエンジンで実行されるべきスクリプトが組み込まれた他の実行可能なファイル内の明示的ステートメント、又は、プライベートスクリプトエンジン内の組み込まれたか若しくは参照されたスクリプトを実行する必要性を黙示的に伝える他の実行可能なファイル内のステートメントに含まれる。この実施形態は、データ処理システムでプライバシーに敏感なリソースにアクセスするスクリプトの提供者に商業的に関連する。
【００２６】
本発明は、例により、添付図面を参照して、更に詳細に説明される。
【図面の簡単な説明】
【００２７】
【図１】本発明におけるシステムのブロック図である。
【発明を実施するための形態】
【００２８】
ウェブブラウザは、典型的には、HTMLフォーマットにおける電子文書をレンダリングするために用いられるが、特別な目的の言語のホストが、HTMLページ内に組み込まれた実行可能なコンテンツを介してブラウザの動作を制御するように開発されている。実行可能なコンテンツは、例えば双方向性及び自動化をブラウザに追加する。これらの特別な目的の言語の例は、一見Javaに類似している多目的手続きスクリプト言語であるECMAScript、スタイルメタデータがコンテンツから抽出されることを可能とするCSS（Cascading style sheets）、HTMLの代替手段としてスタイルメタデータと組み合わせてコンテンツに対して用いられ得るXML、XMLコンテンツを新たな形式に変換する提示言語であるXSLTである。反応性のユーザの主観的印象を向上させるためにスクリプト記述するXML及びJavaScriptの組み合わせを含むこれらの技術が発展してきた。Document Object Model規格は、全てのブラウザが、予測可能な態様で同一のJavaScriptに応答することを保証する（情報元；Wikipedia）。従って、ウェブブラウザは、ウェブアプリケーションのための、及び、例えばサーバからダウンロードされた電子文書に組み込まれたスクリプトを実行するための、クライアント側の環境を提供する。スクリプトのより詳細な背景については、例えば前述した国際公開２００６／１０６４１４号を参照されたい。
【００２９】
HTML文書に組み込まれたスクリプトは、文書がダウンロードされたシステムを改ざんするため、又は、そのシステムのユーザに関するプライバシーに敏感な情報を取得するために、文書提供者により悪用され得る。
【００３０】
図１は、本発明におけるシステム１００のブロック図である。システム１００は、ここではクライアント１０２とも呼ばれるデータ処理システム１０２、及び、データネットワーク１０８を介してのサーバ１０６とのデータ通信のためのネットワークインタフェース１０４を有する。クライアント１０２は、例えば、パーソナルコンピュータ、セットトップボックス、ホームネットワーク等である。クライアント１０２は、ランタイム環境１１０、例えば、ブラウザ、オペレーティングシステム又はJava Virtual Machineを有する。ランタイム環境１１０は、スクリプトを実行するためのスクリプトエンジン手段をもつ。例えば、ランタイム環境１１０はブラウザを有し、スクリプトは、例えばサーバ１０６により供給されるか又はUSBスティック若しくはPCを介して供給される電子HTML文書において受信される。スクリプトエンジン手段は、パブリックスクリプトエンジン１１２及びプライベートスクリプトエンジン１１４を実装する。ランタイム環境１１０は、スクリプトが、クライアント１０２での予め決められたリソース、例えばハードディスクドライブ（HDD）１２４又はUPnPホームネットワーク１２６上の通常の（ブラウザ）サンドボックスの範囲外のデータへのアクセスを要求しない場合に、パブリックスクリプトエンジン１１２により実行されるスクリプトをもつように構成される。ランタイム環境１１０は、スクリプトが予め決められたリソース１２４又は１２６へのアクセスを要求する場合には、プライベートスクリプトエンジン１１４により実行されるスクリプトをもつように構成される。以下で述べられるように、この選択的な実行を実装する幾つかの手法が存在するが、差し当たり、ランタイム環境１１０が構成されると仮定する。
【００３１】
スクリプトが、通常の（ブラウザ）サンドボックスの範囲外のHDD１２４又はUPnPホームネットワーク１２６上のデータへのアクセスを要求しない場合には、スクリプトは、スクリプトエンジン１１２により実行される。例えば、ブラウザにおいてレンダリングされるウェブページにおけるウェブリソースのアニメーションを特定するスクリプトは、この目的のためにHDD１２４又はUPnPホームネットワーク１２６へのアクセスを要求しない。
【００３２】
スクリプトは、通常の（ブラウザ）サンドボックスの範囲外のHDD１２４上のデータ又はUPnPホームネットワーク１２６上のデータへのアクセスを要求する場合には、スクリプトは、プライベートスクリプトエンジン１１４により実行される。例えば、スクリプトは、ホームネットワーク内のUPnPメディアサーバ上に格納されたマルチメディアコンテンツをスキャン及び管理する。
【００３３】
パブリックスクリプトエンジン１１２は、HDD１２４上の通常のブラウザサンドボックスの範囲外のデータとインタラクトするソフトウェアアプリケーション１２２、又は、UPnPホームネットワーク１２６とインタラクトするUPnPコントロールポイント１２８、に対するインタフェース、例えばスクリプトアプリケーションプログラムインタフェース（API）をもたない。これに対し、プライベートスクリプトエンジン１１４は、HDD１２４にアクセス可能なソフトウェアアプリケーション１２２に対するスクリプトAPI１２０とUPnPホームネットワーク１２６にアクセス可能なスクリプトAPI１３０とをもつ。プライベートスクリプトエンジン１１４は、サーバ１０６に対する通信が承認されない限り、サーバ１０６とのデータ通信を阻止し、これに対し、パブリックスクリプトエンジンは、この区別を行わない通信インタフェース（図示省略）をもつ。
【００３４】
ホームネットワークの外部にあるサーバに対する通信の承認は、ユーザによるイベント毎の承認、並びに／又は、ランタイム環境のユーザ及び／若しくはデベロッパ／デプロイヤによる事前（例えばサーバ毎、ドメイン毎等）の承認に基づいて発生し得る。事前の承認は、ランタイム環境の設定により（例えば、プライベートスクリプトエンジンからのデータ通信に対する制限を免除されるサーバ又はサーバドメインのローカル又は遠隔に格納されたリストを維持することにより）取得され得るか、又は、スクリプトが取得されたユーザ、外部サーバ及び／若しくはデータソースに関連付けられたセキュリティプロファイル若しくは証明から間接的に導出され得る。
【００３５】
図１の略図は、パブリックスクリプトエンジン１１２及びプライベートスクリプトエンジン１１４が別個のスクリプトエンジンとして実装される状況を示している。例えば、プライベートエンジン１１４は、XHTML及びCSSをサポートする、例えばブラウザに対するプラグイン、並びに、外部サーバ１０６に対する未承認のデータ通信を阻止するとともにcookiesのような共有ストレージに対してデータを通信するための任意のインタフェースを欠く特別なプライベートECMAScriptエンジンインスタンスとして実装され、又は、パブリックスクリプトエンジン１１２に実装される。ブラウザのECMAScriptエンジンは、パブリックスクリプトエンジン１１２として機能し得る。知られているように、プラグインは、APIを既存のソフトウェアに追加するために用いられ得る。完全性のために、cookiesは、同一のドメインから生じるサービスのための（ブラウザ）サンドボックスの範囲内の固定共有ストレージと見なされる。
【００３６】
本発明の一実施形態において、ランタイム環境１１０により受信されたスクリプトは、ランタイム環境が、例えばスクリプトのファイルネーム拡張子又はスクリプトの分析により、スクリプトを実行するために用いられるべき、スクリプトエンジン１１２及び１１４のうち適切な一方のスクリプトエンジンを決定し得る場合を除いて、デフォルトのパブリックスクリプトエンジン１１２が実行されることによりルーティングされる。パブリックスクリプトエンジン１１２は、例えばスクリプトがプライベートスクリプトエンジン１１４における実行を要求する明示的ステートメントを含む場合には、プライベートスクリプトエンジン１１４にスクリプトを条件付きで転送するように構成される。ランタイム環境１１０は、ファイルネーム拡張子を解釈し、これに基づき、スクリプトエンジン１１２及び１１４のうちどちらのスクリプトエンジンにおいてスクリプトが実行されるべきかを決定する。
【００３７】
例えば、スクリプトは、HTMLファイルにおいて、スクリプトのファイルネーム拡張子を含むパスにより参照される。スクリプトがJavascriptである場合には、スクリプトは、ファイル拡張子".js"又は".xjs"を有し得る。ファイルネーム拡張子が".js"である場合には、ランタイム環境１１０は、パブリックスクリプトエンジン１１２がこのスクリプトを実行するためのものであることを決定する。ファイルネーム拡張子が".xjs"である場合には、ランタイム環境１１０は、プライベートスクリプトエンジン１１４がスクリプトを実行すべきものとしてこれを解釈し、実行されるべきプライベートスクリプトエンジン１１４にスクリプトを転送する。ランタイム環境１１０は、（前にダウンロードされた.jsファイルを含む）HTMLファイルに含まれ、及び／又は、このHTMLファイルにより参照される全てのスクリプトがパブリックスクリプトエンジン１１２の代わりにプライベートスクリプトエンジン１１４において実行されるような切り替えモードに対するトリガとしてこれを用い得る。
【００３８】
他の例において、スクリプトは、組み込まれたスクリプトを実行するためにプライベートスクリプトエンジン１１２が呼び出されるべきことを特定する明示的ステートメントをもつ他のスクリプトに組み込まれる。パブリックスクリプトエンジン１１２は、他のスクリプトを実行し、遅かれ早かれ明示的ステートメントに達する。パブリックスクリプトエンジン１１２は、エンジン１１２とエンジン１１４との間の一方向インタフェース（図示省略）を介して明示的ステートメントを実行すると、前述したように、組み込まれたスクリプトを一方向インタフェースを介してプライベートスクリプトエンジン１１４に転送するように構成される。即ち、プライベートスクリプトエンジンは、プライベートスクリプトエンジン１１４にデータを通信することを可能にするが、プライベートスクリプトエンジン１１４は、パブリックスクリプトエンジン１１４にデータを通信することはできない。スクリプトエンジン１１２及び１１４間の一方向データ通信インタフェースは、プラグインにデータを送信するためにパブリックスクリプトエンジン１１２においてスクリプトが実行するのを可能にするデータ通信手法でプラグインインタフェースを拡張することにより実装され得る。
【００３９】
更に他の例として、スクリプトを表す（オブジェクト指向プログラミングコンテクストにおける）オブジェクトがそのタイプ又はクラスにより特定される。スクリプトにおいて宣言されたタイプは、これがHDD１２４を用いるか又はUPnPホームネットワーク１２６を用いるかを示す。スクリプトがUPnPホームネットワーク１２６で実行されるべきか又はUPnPホームネットワーク１２６に対するAPI１３０を用いるべきアプリケーションであることを前記タイプが示す場合には、パブリックスクリプトエンジン１１２は、スクリプトを実行させるように、スクリプトを一方向インタフェースを介してプライベートスクリプトエンジン１１４に転送する。これは、タイプ又はクラスがプライバシーに敏感であるように予め決められるか又は予め設定され、それ故、組み込まれたか又は参照されたスクリプトを実行するためにプライベートスクリプトエンジン１１４の起動を黙示的に要求するためである。このステートメントは、例えば、予め決められたリソースに関連付けられたMIMEタイプを特定するHTMLオブジェクトエレメントであり得る。例えば、UPnPホームネットワークの制御に関連付けられたランタイム環境プラグインがMIMEタイプ"application/upnpcontrol"により識別されると仮定すると、このMIMEタイプのHTML<object>エレメントを含む実行可能なファイルは、組み込まれたか又は参照されたスクリプトがプライベートスクリプトエンジン１１４において実行されるべきことを特定する。プライベートスクリプトエンジン１１４を呼び出す必要性を黙示的に特定する他のタイプのステートメントは、プライベートスクリプトエンジン１１４の状況においてのみサポートされる機能又は手法に対する要求を有する。例えば、"readHDDContents()"がプライベートエンジン１１４による予め決められたリソース上でのみサポートされると仮定すると、ファイルにおけるステートメント"readHDDContents"の発生は、プライベートスクリプトエンジン１１４におけるファイルの更に実行する必要性を黙示的に伝える。
【００４０】
従って、スクリプトエンジン１１２及び１１４のデータ通信機能の特定により、斯様な通信が承認されない限り、クライアント１０２のリソース１２４又は１２６に存在するプライバシーに敏感なデータは、例えばサーバ１０６から取り出されブラウザ１１０においてレンダリングされた電子HTML文書において、外部のサプライヤにより提供されたスクリプトを介してサーバ１０６に開示され得なくなる。スクリプトがエンジン１１２により実行される場合には、予め決められたリソース１２４及び１２６に対するアクセスは存在しない。スクリプトがエンジン１１４により実行される場合には、スクリプトは、予め決められたリソース１２４及び１２６にアクセスする。しかしながら、この目的のためのインタフェースが、承認されたサーバにのみに通信を制限するという事実により、リソース１２４及び１２６から取り出されたデータをサーバ１０６に通信するための手法は、斯様な通信が承認されない限り存在しない。
【００４１】
前記の例においては、スクリプトエンジン１１２及び１１４は、２つの別個のエンジンとして実装された。代替手段として、スクリプトエンジン１１２及び１１４は、２つの動作可能なモード、即ち、パブリックモード及びプライベートモードのうち一方に選択的に設定可能な単一のスクリプトエンジンにより実装される。パブリックモードでは、スクリプトエンジンは、これがパブリックスクリプトエンジン１１２であったかのように動作し、プライベートモードでは、スクリプトエンジンは、これがプライベートスクリプトエンジン１１４であったかのように動作する。第２の代替手段は、同一のスクリプトエンジンの論理的に別個のインスタンスとしてパブリックスクリプトエンジン１１２及びプライベートスクリプトエンジン１１４を実装することである。一例として、異なるドメインから生ずる、スクリプトに対する異なる許可の付与をサポートするセキュリティシステムをもつランタイム環境１１０としての主流のブラウザの使用を仮定する。そして、パブリックスクリプトエンジン１１２は、プライベートスクリプトエンジン１１４に向かう一方向通信インタフェースの追加を伴う、ブラウザの通常のスクリプトエンジンとして実装され得る。プライベートスクリプトエンジン１１４は、プライベートスクリプトエンジン１１４において実行されることが要求されるスクリプトが、外部のスクリプトが生じたドメインに関わらず特定のドメインのコンテクストの範囲内で実際に実行されるように、ブラウザのスクリプトエンジンを設定することにより実装され得る。このドメインの範囲内において実行するスクリプトは、ブラウザプラグインを介して予め決められたリソースを制御するための特権が与えられるが、パブリックスクリプトエンジン１１２、又は、サーバ１０６のような、データ処理システム１０２の外部のサーバにデータを通信することは、斯様な通信が承認されない限り阻止される。
【図１】
0005676477.tif 000002