(57)【特許請求の範囲】
【請求項１】
サーバ装置からネットワークを通じて提供されるスクリプトの実行環境を備えるコンピュータに、
所定のスクリプトをオブジェクト化又は／及び実行するに際し、前記サーバ装置から提供される秘匿実行制御スクリプトを読み込んで秘匿実行制御部を生成する手順と、
前記秘匿実行制御部が、前記サーバ装置から前記所定のスクリプトを取得し、前記所定のスクリプトを読み込んで所定のオブジェクトを生成する手順と、を実行させ、
前記所定のオブジェクトを生成する手順は、前記サーバ装置からＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプトを取得し、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトを生成する手順を含み、
前記ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトが、前記生成された所定のオブジェクトを実行する手順をさらに含むことを特徴とするスクリプト秘匿実行プログラム。
【請求項２】
サーバ装置からネットワークを通じて提供されるスクリプトの実行環境を備えるコンピュータに、
所定のスクリプトをオブジェクト化又は／及び実行するに際し、前記サーバ装置から提供される秘匿実行制御スクリプトを読み込んで秘匿実行制御部を生成する手順と、
前記秘匿実行制御部が、前記サーバ装置から前記所定のスクリプトを取得し、前記所定のスクリプトを読み込んで所定のオブジェクトを生成する手順と、を実行させ、
前記所定のオブジェクトを生成する手順は、
ＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプトを含む秘匿化処理読込スクリプトを取得し、前記秘匿実行制御部が、秘匿化処理読込部及びＸＭＬＨｔｔｐＲｅｑｕｅｓオブジェクトを生成する手順を含み、
前記ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトが、前記秘匿化処理読込部によって、前記サーバ装置からサーバ側公開鍵と秘匿化機能スクリプトを受信するとともに、秘匿化機能部を生成する手順と、
前記秘匿化機能部が、共通鍵を生成するとともに、前記サーバ側公開鍵で暗号化した前記共通鍵を前記サーバ装置に送信する手順と、
前記秘匿化機能部が、前記サーバ装置から前記共通鍵で暗号化された秘匿化対象スクリプトを取得し、前記共通鍵を用いて前記秘匿化対象スクリプトを復号して秘匿化対象オブジェクトを生成する手順と、
をさらに含むことを特徴とするスクリプト秘匿実行プログラム。
【請求項３】
スクリプトを実行するスクリプト実行環境を備えるコンピュータにネットワークを通じて前記スクリプトを提供するサーバ装置であって、
所定のスクリプトをオブジェクト化又は／及び実行する秘匿実行制御スクリプトを前記コンピュータに提供する秘匿実行制御機能提供部と、
前記秘匿実行制御スクリプトに基づいて前記コンピュータでオブジェクト化された秘匿実行制御部からの前記所定のスクリプトに対する取得要求に応答し、記憶部から対応する前記所定のスクリプトを抽出して前記コンピュータに提供するスクリプト生成部と、を有し、
前記スクリプト生成部は、前記秘匿実行制御部からのスクリプト取得要求に応答して、前記所定のスクリプト及び前記所定のスクリプトを実行するＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプトを前記コンピュータに提供し、
前記秘匿実行制御部によってオブジェクト化されたＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトからのＸＭＬＨｔｔｐＲｅｑｕｅｓｔに対して任意の文字列を返信するレスポンス返信部をさらに有することを特徴とするサーバ装置。
【請求項４】
スクリプトを実行するスクリプト実行環境を備えるコンピュータにネットワークを通じて前記スクリプトを提供するサーバ装置であって、
所定のスクリプトをオブジェクト化又は／及び実行する秘匿実行制御スクリプトを前記コンピュータに提供する秘匿実行制御機能提供部と、
前記秘匿実行制御スクリプトに基づいて前記コンピュータでオブジェクト化された秘匿実行制御部からの前記所定のスクリプトに対する取得要求に応答し、記憶部から対応する前記所定のスクリプトを抽出して前記コンピュータに提供するスクリプト生成部と、を有し、
前記スクリプト生成部は、前記秘匿実行制御部からのスクリプト取得要求に応答して、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプト及び秘匿化処理読込スクリプトを前記コンピュータに提供し、
前記秘匿化処理読込スクリプトに基づいて前記秘匿実行制御部でＸＭＬＨｔｔｐＲｅｑｕｅｓオブジェクトを介して実行される秘匿化処理読込部からのスクリプト取得要求に応答し、サーバ側公開鍵とともに秘匿化機能スクリプトを提供するスクリプト秘匿化機能提供部と、
前記秘匿化機能スクリプトに基づいて前記秘匿化処理読込部でオブジェクト化された秘匿化機能部により、前記サーバ側公開鍵で暗号化されたクライアント側共通鍵を受信して、対応するサーバ側秘密鍵で前記クライアント側共通鍵を復号する暗号処理部と、をさらに有し
前記暗号処理部は、
前記秘匿化機能部からのスクリプト取得要求に応答して、秘匿化対象スクリプトを前記クライアント側共通鍵で暗号化して提供することを特徴とするサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂブラウザ等で利用されるスクリプト（プログラム）の不正な解析や改ざん、漏洩を防止するスクリプト秘匿技術に関する。
【背景技術】
【０００２】
Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）、Ｎｅｔｓｃａｐｅ（登録商標）、Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ（登録商標）などのＷｅｂブラウザは、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｊｓｃｒｉｐｔ（登録商標）等のスクリプト言語で作成されたスクリプト（プログラム）の動作環境を備えており、該Ｗｅｂブラウザは、ＨＴＭＬ内に記述されたスクリプトを実行し、又は外部から取得するスクリプトを実行することで、Ｗｅｂページ（ＨＴＭＬ）を動的に書き換えたり、Ｗｅｂブラウザ上に表示されるＷｅｂページに動きを加えて表示することができる。
【０００３】
そして、ＪａｖａＳｃｒｉｐｔは、近年のＪａｖａＳｃｒｉｐｔライブラリ及びＪａｖａＳｃｒｉｐｔ開発環境の充実に伴い、Ｗｅｂページの使用感の向上（Ｗｅｂブラウザのリッチクライアント化）を実現させるための技術として再び注目を集めており、ＪａｖａＳｃｒｉｐｔ等のスクリプトを使用した付加価値の高いＷＥＢページが提供されている。
【０００４】
一方で、ＪａｖａＳｃｒｉｐｔ等のソースコードは、Ｗｅｂブラウザでの実行時に使用者側のコンピュータ（Ｗｅｂブラウザ）に動的に受け渡されるため、容易にソースコード自体を参照することができ、付加価値の高い機能を実現するスクリプトのソースコードが盗用されてしまう可能性があるという問題を有している。また、主に開発者用に使用されるＦｉｒｅｂｕｇ（登録商標）等のデバッガを使用することにより、容易にソースコード及び処理内容（処理データ）を参照することができ、第三者がスクリプトを解析及び改ざんして不正なスクリプト処理を実行させるなどの行為が問題となっている。
【０００５】
図２３は、従来のＪａｖａＳｃｒｉｐｔ等のスクリプトの実行過程を示した図であり、同図に示すように、スクリプトは、ＨＴＭＬ内に記述されたり、Ｗｅｂページを提供するＷｅｂサーバから動的に取得される（ｊｓファイルの取得）。そして、Ｗｅｂブラウザの機能として搭載されているＪａｖａＳｃｒｉｐｔ実行エンジン（ＪａｖａＳｃｒｉｐｔオブジェクト化機能）により動的にオブジェクト化され、実行される。
【０００６】
そして、従来は、スクリプト（ｊｓファイル）のダウンロード時のデータ通信をＨＴＴＰＳ通信プロトコルで行うことで、パケットキャプチャ等によるスクリプトの盗難、詐取を防止し、また、オブジェクト化されたスクリプトをメモリ等にキャッシュさせないｎｏ−ｃａｃｈｅ機能を使用することで、重要なスクリプトのソースコードの漏洩を防止していた。更には、スクリプトのソースコード中のスペースや改行コードを削除したり、変数名やメゾット名にその使われ方と関係のない名称を付けることで、スクリプトとしての認識を困難にする難読化技術も適用され、ソースコードの漏洩を防止していた。
【０００７】
しかしながら、上述した従来のスクリプト漏洩防止技術では、デバッガによるスクリプトの解析、改ざんに対しては、なお無防備であると言わざるを得ない。例えば、開発者用デバッガとして提供されるＦｉｒｅｂｕｇ（登録商標）は、ＨＴＭＬモニタリング機能、ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）モニタリング機能、Ｓｃｒｉｐｔモニタリング機能を有し、ＨＴＭＬソースコードを監視してＨＴＭＬ内に記述されたスクリプトソースコードや外部から取得するスクリプトファイル（ｊｓファイル）をデバッグモードで表示することができる。そして、スクリプトソースコードに対してブレイクポイントの挿入やステップ実行、スクリプトソースコードの編集、値の変更等を行うことができる（例えば、ｈｔｔｐｓ：／／ａｄｄｏｎｓ．ｍｏｚｉｌｌａ．ｏｒｇ／ｊａ／ｆｉｒｅｆｏｘ／ａｄｄｏｎ／１８４３参照）。
【０００８】
したがって、秘匿したいスクリプトに対して難読化技術を適用してもデバッガによりスクリプト（プログラム）の解析が行え、また、ＨＰＰＴＳ通信プロトコルでの通信後にＷｅｂブラウザが取得するスクリプトソースコードをモニタリングしてキャプチャすることができる。そのため、上述した従来のスクリプト漏洩防止技術では、デバッガによるスクリプトの解析、漏洩を依然として防止することができない。
【０００９】
また、Ｗｅｂサーバとクライアントコンピュータ間の通信データを、アプリケーションレベルで暗号化する技術もある。このようなアプリケーションレベルでの暗号化技術は、クライアントコンピュータが復号処理を行う際に利用する鍵を、デバッガによりキャプチャすることできる（例えば、デバッガでのステップ実行で共通鍵の情報（値）を参照することができる）。このため、従来の暗号化技術をそのまま適用しても、スクリプトの漏洩等を防止することができない。
【００１０】
また、特許文献１では、プログラムの制御が移行する際、メモリ等の記憶領域にロードされているデータを暗号化することでプログラムの改ざんや解析を防止する技術が提案されている。しかしながら、この技術は、予め実行オブジェクトが暗号化されているため、スクリプト言語のように、Ｗｅｂブラウザによる表示を実行した時に実行オブジェクトを動的に生成するスクリプト言語の場合には適用することができない。
【００１１】
【特許文献１】特開２００５−１００３７８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、上記課題に鑑みて成されたものであり、スクリプトの秘匿性を向上させたスクリプト動作環境を提供し、スクリプトの解析や改ざん、ソースコードの漏洩を防止することができるスクリプト秘匿実行プログラム及びサーバ装置を提供することを目的とする。
【００１３】
特に、デバッガでのデバッグ処理に対して、スクリプトの秘匿性を向上させ、スクリプトのソースコードの解析、改ざん、漏洩を防止することができるスクリプト秘匿実行プログラム及びサーバ装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の１つの側面としてのスクリプト秘匿実行プログラムは、サーバ装置からネットワークを通じて提供されるスクリプトの実行環境を備えるコンピュータに、所定のスクリプトをオブジェクト化又は／及び実行するに際し、サーバ装置から提供される秘匿実行制御スクリプトを読み込んで秘匿実行制御部を生成する手順と、上記秘匿実行制御部が、サーバ装置から上記所定のスクリプトを取得し、該所定のスクリプトを読み込んで所定のオブジェクトを生成する手順と、を実行させ、上記所定のオブジェクトを生成する手順は、サーバ装置からＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプトを取得し、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトを生成する手順を含み、上記スクリプト秘匿実行プログラムは、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトが、生成された所定のオブジェクトを実行する手順をさらに含むことを特徴とする。
【００１６】
また、本発明の他の側面としてのスクリプト秘匿実行プログラムは、サーバ装置からネットワークを通じて提供されるスクリプトの実行環境を備えるコンピュータに、所定のスクリプトをオブジェクト化又は／及び実行するに際し、サーバ装置から提供される秘匿実行制御スクリプトを読み込んで秘匿実行制御部を生成する手順と、上記秘匿実行制御部が、サーバ装置から上記所定のスクリプトを取得し、該所定のスクリプトを読み込んで所定のオブジェクトを生成する手順と、を実行させ、上記所定のオブジェクトを生成する手順は、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプトを含む秘匿化処理読込スクリプトを取得し、上記秘匿実行制御部が、秘匿化処理読込部及びＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトを生成する手順を含み、上記スクリプト秘匿実行プログラムは、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトが、秘匿化処理読込部によって、サーバ装置からサーバ側公開鍵と秘匿化機能スクリプトを受信するとともに、秘匿化機能部を生成する手順と、上記秘匿化機能部が、共通鍵を生成するとともに、サーバ側公開鍵で暗号化した共通鍵をサーバ装置に送信する手順と、上記秘匿化機能部が、サーバ装置から共通鍵で暗号化された秘匿化対象スクリプトを取得し、共通鍵を用いて秘匿化対象スクリプトを復号し、秘匿化対象オブジェクトを生成する手順と、をさらに含むことを特徴とする。
【００１７】
さらに、本発明の１つの側面としてのサーバ装置は、スクリプトを実行するスクリプト実行環境を備えるコンピュータにネットワークを通じてスクリプトを提供するサーバ装置であって、所定のスクリプトをオブジェクト化又は／及び実行する秘匿実行制御スクリプトをコンピュータに提供する秘匿実行制御機能提供部と、秘匿実行制御スクリプトに基づいて上記コンピュータでオブジェクト化された秘匿実行制御部からの上記所定のスクリプトに対する取得要求に応答し、記憶部から対応する上記所定のスクリプトを抽出してコンピュータに提供するスクリプト生成部と、を有し、上記スクリプト生成部は、秘匿実行制御部からのスクリプト取得要求に応答して、上記所定のスクリプト及び上記所定のスクリプトを実行するＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプトをコンピュータに提供し、秘匿実行制御部によってオブジェクト化されたＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトからのＸＭＬＨｔｔｐＲｅｑｕｅｓｔに対して任意の文字列を返信するレスポンス返信部をさらに有することを特徴とする。
【００１８】
また、本発明の他の側面としてのサーバ装置は、スクリプトを実行するスクリプト実行環境を備えるコンピュータにネットワークを通じてスクリプトを提供するサーバ装置であって、所定のスクリプトをオブジェクト化又は／及び実行する秘匿実行制御スクリプトをコンピュータに提供する秘匿実行制御機能提供部と、秘匿実行制御スクリプトに基づいて上記コンピュータでオブジェクト化された秘匿実行制御部からの上記所定のスクリプトに対する取得要求に応答し、記憶部から対応する上記所定のスクリプトを抽出してコンピュータに提供するスクリプト生成部と、を有し、上記スクリプト生成部は、秘匿実行制御部からのスクリプト取得要求に応答して、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔスクリプト及び秘匿化処理読込スクリプトをコンピュータに提供することができ、上記サーバ装置は、該秘匿化処理読込スクリプトに基づいて秘匿実行制御部でＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトを介して実行される秘匿化処理読込部からのスクリプト取得要求に応答し、サーバ側公開鍵とともに秘匿化機能スクリプトを提供するスクリプト秘匿化機能提供部と、上記秘匿化機能スクリプトに基づいて秘匿化処理読込部でオブジェクト化された秘匿化機能部により、サーバ側公開鍵で暗号化されたクライアント側共通鍵を受信して、対応するサーバ側秘密鍵でクライアント側共通鍵を復号する暗号処理部と、をさらに有することができる。そして、上記暗号処理部が、秘匿化機能部からのスクリプト取得要求に応答して、秘匿化対象スクリプトをクライアント側共通鍵で暗号化して提供することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、スクリプトの取得、オブジェクト化及び実行が、オブジェクト化された秘匿実行制御部を通じて遂行されるため、スクリプトの秘匿性を向上させたスクリプト動作環境を提供することができる。したがって、スクリプトの解析や改ざん、ソースコードの漏洩を防止することが可能となる。
【００２０】
すなわち、スクリプトの取得、オブジェクト化及び実行が、ブラウザ等のスクリプト実行環境でオブジェクト化された秘匿実行制御部によって遂行されるため、デバッガがスクリプトソースコードを認識することができず、ブレイクポイントの挿入等のデバッガ機能を無効化させることができる。このため、デバッガでのデバッグ処理に対するスクリプトの秘匿性を向上し、スクリプトのソースコードの解析、改ざん、漏洩を好適に防止することができる。
【発明を実施するための最良の形態】
【００２１】
本発明は、スクリプト言語で作成されたプログラム（スクリプト）の動作環境を備えたソフトウェアでのスクリプトソースコードの第３者への漏洩を防止し、スクリプトソースコードの解析や改ざん等を抑制するプログラム秘匿技術である。特に、ソースコードがクライアントコンピュータに受け渡され、動的にソースコードが読み込まれてオブジェクト化（処理部が生成）及び実行される際の、デバッガによる解析、改ざん等を無効化して該ソースコードの秘匿性を向上させる技術に関する。
【００２２】
ここで、スクリプトとは、機械語への変換作業を省略して簡単に実行できるようにした簡易プログラムであり、代表的な例としては、ＪａｖａＳｃｒｉｐｔ、ＪＳｃｒｉｐｔ等がある。また、該スクリプトが動作する環境を有するソフトウェアとしては、Ｗｅｂブラウザがある。ＪａｖａＳｃｒｉｐｔ、ＪＳｃｒｉｐｔ等は、ＷｅｂブラウザがＨＴＭＬだけでは実現できない様々な機能、例えば、ＨＴＭＬを新たに読み込まずに動的にページを書き換えたり、Ｗｅｂページに動きを加えて表示したり、対話性のあるＷｅｂページを表示するなどの機能を実現するプログラムとして、Ｗｅｂサーバ等から提供される。
【００２３】
ＪａｖａＳｃｒｉｐｔ、ＪＳｃｒｉｐｔ等のスクリプトは、Ｗｅｂブラウザなどのソフトウェアでスクリプトソースコードが読み込まれることで動的にオブジェクト化、すなわち、所定の処理部として生成され、自動的に又は任意のタイミングで実行されるプログラムである。通常、Ｗｅｂサーバから提供されるＷｅｂページにスクリプトソースコードが直接記述されたり、スクリプト処理時にＷｅｂブラウザがＷｅｂサーバから取得する形態で、Ｗｅｂブラウザを備えるクライアントコンピュータに提供される。そして、Ｗｅｂブラウザ（Ｗｅｂブラウザの機能として組み込まれているＪａｖａＳｃｒｉｐｔ実行エンジン等）がスクリプトソースコードを読み込むことにより、動的に所定の処理部として機能するプログラムとしてオブジェクト化され、実行される。
【００２４】
以下、ＪａｖａＳｃｒｉｐｔがＷｅｂブラウザに提供されて実行される実施形態を一例に、本発明のスクリプト秘匿方法について説明する。なお、本発明のスクリプト秘匿方法は、本明細書における実施形態に限定されず、スクリプトソースコードがクライアントコンピュータに受け渡され、ソフトウェアが動的にスクリプトソースコードを読み込んでオブジェクト（処理部）を生成するスクリプト処理全般に適用可能である。
【００２５】
なお、以下に説明する本発明の実施形態において、ＪａｖａＳｃｒｉｐｔ動作環境、ライブラリ、オブジェクト、メゾット等の詳細な説明については、従来のＪａｖａＳｃｒｉｐｔ技術を適用できるため、説明を省略するとともに、下記の説明において例示するソースコードは、従来のＪａｖａＳｃｒｉｐｔ技術に基づいて任意に変更・作成することができる。また、各処理部（オブジェクト）のスクリプトソースコードも、ＪａｖａＳｃｒｉｐｔ技術に基づいて任意に作成することができる。
【００２６】
（第１実施形態）
図１は、本発明の第１実施形態に係るスクリプト秘匿方法が適用されたＷｅｂシステムのネットワーク構成図である。本実施形態のＷｅｂシステムは、クライアントコンピュータである使用者装置２００とネットワークＮを通じて接続可能なサーバ装置（Ｗｅｂサーバ）１００と、ＪａｖａＳｃｒｉｐｔ（以下、スクリプトと称す）の動作環境を備えたＷｅｂブラウザがインストールされた使用者装置（クライアントコンピュータ）２００とで構成される。ネットットワークＮは、インターネット又は専用回線等の通信回線であり、使用者装置２００は、パーソナルコンピュータやＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）などの通信機能及び演算機能を備えた端末装置である。
【００２７】
ここで、本実施形態のスクリプト秘匿方法について説明する。本実施形態では、使用者装置２００のＷｅｂブラウザが遂行するスクリプト処理を、サーバ装置１００が提供する秘匿実行制御部により遂行する。従来は、Ｗｅｂブラウザの機能の一部として組み込まれたスクリプト処理部が、ＨＴＭＬソースコードに記述されたスクリプトソースコードを読み込み、若しくはサーバ装置１００から取得したスクリプトソースコードを読み込むことで、スクリプト（プログラム）をオブジェクト化し、対応する処理部を生成して実行していた。このため、デバッガのＨＴＭＬモニタリング機能やＳｃｒｉｐｔモニタリング機能により、スクリプト処理がキャプチャされ、デバッガによってスクリプトソースコードが表示され、表示されたスクリプトソースコードへのブレイクポイント挿入やステップ実行が可能であった。
【００２８】
これに対して本実施形態のスクリプト秘匿方法では、ブラウザが要求するスクリプト処理をＷｅｂブラウザ（スクリプト処理部）がスクリプトソースコードを読み込んでオブジェクト化及び実行するのではなく、Ｗｅｂブラウザは、サーバ装置１００から提供される秘匿実行制御スクリプトをオブジェクト化して秘匿実行制御部を生成し、生成された（オブジェクト化された）秘匿実行制御部が、要求されるスクリプト処理を遂行する。このように構成することで、デバッガのＨＴＭＬモニタリング機能やＳｃｒｉｐｔモニタリング機能よってスクリプト処理がキャプチャされずに、デバッガによるスクリプトソースコードの表示やソースコードへのブレイクポイント挿入を回避する。また、デバッガは、ＨＴＭＬモニタリング機能やＳｃｒｉｐｔモニタリング機能によってスクリプト処理をキャプチャできないため、ソースコードが表示されない状態でステップ実行が成されてもソースコードの秘匿化を図ることができる。
【００２９】
図２は、本実施形態のサーバ装置１００の構成ブロック図である。図２に示すように、本実施形態のサーバ装置１００は、ネットワークＮを通じた使用者装置２００との間の通信制御を行う通信制御部１１０、通信制御部１１０を介して受信した使用者装置２００からのＨＴＴＰリクエストに基づいたＨＴＴＰ処理を行うＨＴＴＰ処理部１２０と、Ｗｅｂ情報（ＨＴＭＬソースコード等）を格納するＷｅｂ情報格納部１３０と、サーバ装置１００全体の制御を司る制御部（ＣＰＵ）１４０と、記憶部（メモリ）１５０と、秘匿実行制御機能を提供する秘匿実行制御機能提供部１６０とを含んで構成される。
【００３０】
ＨＴＴＰ処理部１２０は、ハードウェア、若しくはＡｐａｃｈｅ（登録商標）等のＷｅｂサーバソフトウェアによって構成され、Ｗｅｂ情報格納部１３０からＷｅｂページ情報（ＨＴＭＬソースコード）を抽出及び生成し、通信制御部１１０を介して使用者装置２００にＷｅｂページを提供する。
【００３１】
秘匿実行制御機能提供部１６０は、使用者装置２００でのスクリプト処理やスクリプトソースコードをデバッガから保護する機能（秘匿実行制御部）を提供する。この秘匿実行制御機能提供部１６０は、使用者装置２００と非同期で通信を行い、使用者装置２００に秘匿実行制御スクリプト（秘匿実行制御部）を提供するとともに、Ｗｅｂページで提供される各種機能、すなわち、Ｗｅｂブラウザが要求する所定のスクリプトを提供する。
【００３２】
秘匿実行制御機能提供部１６０は、秘匿実行制御スクリプト提供部１６１、スクリプト生成部１６２、レスポンス返信部１６３及び記憶部１６４を含み、記憶部１６４は、秘匿実行制御スクリプト記憶部１６５、非同期実行スクリプト記憶部１６６、即時実行スクリプト記憶部１６７、非即時実行スクリプト記憶部１６８を含んで構成されている。秘匿実行制御機能提供部１６０は、ハードウェア又はソフトウェアによって構成され、ウェブアプリケーションの一機能として使用者装置２００に提供される。
【００３３】
秘匿実行制御スクリプト提供部１６１は、秘匿実行制御スクリプト記憶部１６５から秘匿実行制御スクリプト（ソースコード）を取得してＨＴＴＰ処理部１２０に提供する。ＨＴＴＰ処理部１２０は、使用者装置２００からのＨＴＴＰリクエストに対するＨＴＴＰ処理の任意のタイミングで、秘匿実行制御スクリプト提供部１６１から秘匿実行スクリプトを取得し、使用者装置２００のＷｅｂブラウザに提供する。秘匿実行制御スクリプト記憶部１６５は、秘匿実行制御スクリプトソースコードを保存し、秘匿実行制御スクリプト提供部１６１に提供する。
【００３４】
スクリプト生成部１６２は、秘匿実行制御スクリプト提供部１６１から提供された秘匿実行制御スクリプトをオブジェクト化して生成された秘匿実行制御部を通じて送信されるスクリプト要求に応答し、所定のスクリプトを生成して提供する。スクリプト生成部１６２は、スクリプトの生成処理において、非同期実行スクリプト記憶部１６６、即時実行スクリプト記憶部１６７及び非即時実行スクリプト記憶部１６８にそれぞれアクセスし、Ｗｅｂブラウザが要求するスクリプト、すなわち、Ｗｅｂブラウザからのスクリプト要求において指定された該当のスクリプトを取得し、送信用スクリプト（ソースコード）を生成する。また、スクリプト生成部１６２は、即時実行スクリプトが非同期実行スクリプトによって呼び出されて実行されるようにスクリプトを生成するが、この処理については、後述する。
【００３５】
即時実行スクリプト記憶部１６７は、使用者装置２００のＷｅｂブラウザからのスクリプト要求におけるスクリプトのうち、使用者装置２００がスクリプトを受信した際に自動的にオブジェクト化及び実行されるスクリプトを保持している。言い換えれば、秘匿実行制御スクリプトがオブジェクト化されて秘匿実行制御部が生成されて実行されるのと同時に実行されることが要求される即時実行オブジェクト（即時実行部）のスクリプトを保存している。例えば、Ｗｅｂページの更新とともに実行されるオブジェクトが即時実行オブジェクトである。
【００３６】
即時実行スクリプト記憶部１６７の構成例としては、図１１（ａ）に示すように、ファイル名とそのファイルの内容をリスト形式で保存するように構成することができる。この場合は、使用者装置２００の秘匿実行制御部がスクリプト生成部１６２に対して送信するスクリプト要求に、即時実行スクリプト記憶部１６７から取得するスクリプトのスクリプト名が指定されるように構成することができる。
【００３７】
非即時実行スクリプト記憶部１６８は、上述の即時実行スクリプトとは異なり、使用者装置２００のＷｅｂブラウザからのスクリプト要求におけるスクリプトのうち、使用者装置２００がスクリプトを受信した際に自動的にオブジェクト化はされるものの、実行されないスクリプトを保持している。言い換えれば、秘匿実行制御スクリプトがオブジェクト化されて秘匿実行制御部が生成されて実行されるのと同時にオブジェクト化され、例えば、ユーザアクション等に応答して任意に実行されるファンクション定義等の非即時実行オブジェクト（非即時実行部）のスクリプトを保存している。
【００３８】
非即時実行スクリプト記憶部１６８の構成例としては、図１１（ｂ）に示すように、ファイル名とそのファイルの内容をリスト形式で保存するように構成することができる。この場合も、即時実行スクリプトと同様に、使用者装置２００の秘匿実行制御部がスクリプト生成部１６２に対して送信するスクリプト要求に、即時実行スクリプト記憶部１６７から取得するスクリプトのスクリプト名が指定されるように構成することができる。
【００３９】
非同期実行スクリプト記憶部１６６は、非同期通信で所定のスクリプトを実行するための非同期実行スクリプトを保存している。この非同期実行スクリプトは、秘匿実行制御部によりオブジェクト化されて非同期実行部として生成され、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔ関数に基づいて上述の即時実行オブジェクトを実行する機能を有する。
【００４０】
レスポンス返信部１６３は、使用者装置２００からのＸＭＬＨｔｔｐＲｅｑｕｅｓｔに対して任意の文字列をレスポンスとして返信する機能を担う。
【００４１】
図３は、本実施形態の使用者装置２００の構成ブロック図であり、同図に示すように、本実施形態の使用者装置２００は、ネットワークＮを介したサーバ装置１００との通信制御を遂行する通信制御部２１０と、使用者装置２００全体の制御を司る制御部（ＣＰＵ）２２０と、記憶部（メモリ）２３０と、ディスプレイ２４１ａが接続される表示インターフェース２４０ａと、キーボード等の入力手段２４１ｂ、マウス等のポインティングデバイスである操作部２４２ｂが接続される外部インターフェース２４０ｂと、Ｗｅｂブラウザ等のブラウザ２５０を含んで構成される。
【００４２】
ブラウザ２５０は、スクリプト処理部２６１が機能の一部として組み込まれたＨＴＴＰ処理部２６０、スクリプト処理部２６１によりオブジェクト化（生成）された秘匿実行制御部２７０とを含む。本実施形態では、この秘匿実行制御部２７０は、サーバ装置１００から任意のタイミングで提供される秘匿実行制御スクリプトをスクリプト処理部２６１
が読み込んで動的にオブジェクト化されたプログラムである。
【００４３】
また、秘匿実行制御部２７０は、スクリプト取得部２７１、スクリプト取得部２７１によってサーバ装置１００から取得された所定のスクリプトを動的にオブジェクト化する動的オブジェクト生成部２７２を含み、さらに、動的オブジェクト生成部２７２は、非同期実行オブジェクトを生成することができる。動的オブジェクト生成部２７２は、例えば、ｅｖａｌ（）関数で実現することができる。すなわち、スクリプト取得部２７１により取得されたスクリプト（文字列）をｅｖａｌ（）関数でオブジェクト化及び実行することができる。
【００４４】
図４及び図５を参照しながら、本実施形態の使用者装置２００のブラウザ２５０の各処理部について詳細に説明する。図４は、Ｗｅｂシステムのシーケンス図であり、図５は、ブラウザ２５０におけるオブジェクトの動作遷移を示した模式図である。
【００４５】
図４に示すように、本実施形態のＷｅｂシステムは、ブラウザ２５０のＨＴＴＰ処理部２６０からサーバ装置１００にＨＴＴＰリクエストが送信されると、サーバ装置１００のＨＴＴＰ処理部１２０が、秘匿実行制御スクリプト提供部１６１を通じて秘匿実行制御スクリプトを取得し、ブラウザ２５０に提供する（図５の（１））
【００４６】
ブラウザ２５０は、ＨＴＴＰ処理部１２０から受信したＨＴＭＬコードに含まれる秘匿実行制御スクリプトソースコードを読み込み、オブジェクト化して秘匿実行制御部２７０を生成する（図５の（２））。秘匿実行制御部２７０は、オブジェクト化されると同時に実行され、スクリプト取得部２７１が、所定のスクリプトを取得するためにスクリプト要求をサーバ装置１００に送信する。サーバ装置１００のスクリプト生成部１６２が、スクリプト要求に含まれる該当するスクリプトを記憶部１６４から取得して、送信用スクリプトを生成し、スクリプト取得部２７１に送信する（図５の（３））。スクリプト取得部２７１は、取得したスクリプトを動的オブジェクト生成部２７２に出力し（図５の（４））、動的オブジェクト生成部２７２が、取得したスクリプトを読み込んで、オブジェクト化する（図５の（５））。
【００４７】
図６は、本実施形態の動的オブジェクト生成部２７２によってオブジェクト化されるスクリプトのソースコードの一例を示した図であり、動的オブジェクト生成部２７２は、非即時実行部（非即時実行オブジェクト）、即時実行部（即時実行オブジェクト）、及び非同期実行部（非同期実行オブジェクト）２７３の各部を生成（オブジェクト化）する。
【００４８】
図６に示すように、非即時実行部は、秘匿実行制御スクリプトがオブジェクト化されて秘匿実行制御部２７０が生成されて実行されるタイミングでオブジェクト化されるが、その実行が任意のタイミングで成される処理部である。例えば、ユーザアクション等に応答して任意に実行される。
【００４９】
即時実行部は、秘匿実行制御スクリプトがオブジェクト化されて秘匿実行制御部２７０が生成されて実行されるタイミングでオブジェクト化され、その実行がオブジェクト化されたと同時に成される処理部である。なお、この即時実行部も、ユーザアクション等に応答して任意のタイミングで実行されることができる。
【００５０】
そして、本実施形態の即時実行部は、非同期実行部２７３により実行処理がなされる。つまり、本実施形態では、ブラウザ２５０から要求されるスクリプトに、即時実行スクリプトが含まれる場合、非同期実行オブジェクトによって該即時実行オブジェクトが実行されるように構成される。
【００５１】
したがって、サーバ装置１００のスクリプト生成部１６２は、秘匿実行制御部２７０を通じて受信したスクリプト要求に、即時実行スクリプトが含まれているか否かを判別して、含まれていると判別した場合、非同期実行スクリプトと即時実行スクリプトとをセットにしたスクリプトを生成し、秘匿実行制御部２７０に提供する。このとき、図６に示すように、非同期実行スクリプトソースコードには、即時実行部を実行するコードが含まれている。
【００５２】
非同期実行部２７３について詳細に説明すると、当該非同期実行部２７３は、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクト（ＸＭＬＨｔｔｐＲｅｑｕｅｓｔ関数）で構成される。図６に示すように、動的オブジェクト生成部２７２によりオブジェクト化された非同期実行部２７３は、そのオブジェクト化と同時にＸＭＬＨｔｔｐＲｅｑｕｅｓｔ処理を遂行する。このとき、非同期実行部２７３は、サーバ装置１００のレスポンス返信部１６３にＸＭＬＨｔｔｐＲｅｑｕｅｓｔを送信し、レスポンス返信部１６３から送信される任意の文字列を受信すると、コールバック処理で即時実行部を呼び出し、当該即時実行部（即時実行オブジェクト）を実行させる（図５の（６）、（７））。例えば、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトが非同期通信を実行し、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔの内部メソッドであるｏｎｒｅａｄｙｓｔａｔｅｃｈａｎｇｅメソッド内で即時実行部を実行することができる。なお、非同期実行部２７３がレスポンス返信部１６３から受け取った文字列を、即時実行部に渡すように構成することも可能である。
【００５３】
このように本実施形態の非同期実行部２７３は、動的オブジェクト生成部２７２のスクリプト処理によって実行されないオブジェクトを実行する実行部として機能する。したがって、ブラウザ２５０から要求されるスクリプトに、即時実行スクリプトが含まれない場合、非同期実行部２７３及び即時実行部は、動的オブジェクト生成部２７２によってオブジェクト化されず、非即時実行部のみがオブジェクト化されることになる。また、非即時実行スクリプトもブラウザ２５０から要求されるスクリプトに含まれない場合、すなわち、スクリプト取得部２７１がサーバ装置１００からスクリプトを取得しない場合は、動的オブジェクト生成部２７２は、スクリプト処理を遂行せずに待機することになる。
【００５４】
ここで、本実施形態のスクリプト秘匿方法の作用・効果について詳細に説明する。
【００５５】
本実施形態のスクリプト秘匿実行方法は、ブラウザ２５０のスクリプト処理部２６１が動的に秘匿実行制御部（秘匿実行制御オブジェクト）２７０を生成し、生成された秘匿実行制御部２７０が、必要なスクリプトソースコードを読み込んでオブジェクト化（処理部を生成）するオブジェクトによりスクリプト処理機能（第１機能）と、秘匿実行制御部２７０により生成される非同期実行部２７３が、例えば、Ｗｅｂページを更新した際に即時実行される即時実行オブジェクトを、サーバ装置１００のレスポンス返信部１６３と非同期に通信を行い、通信後に、コールバック処理で呼び出して実行する非同期通信実行機能（第２機能）と、を有する。
【００５６】
第１機能は、デバッガでのスクリプトソースコードへのブレイクポイントの挿入を回避する機能を実現する。まず、Ｆｉｅｒｂｕｇ（登録商標）等のＪａｖａＳｃｒｉｐｔデバッガを使用すると、ブラウザ２５０のスクリプト処理部２６１によってオブジェクト化及び実行される秘匿実行制御部２７０（スクリプト取得部２７１及び動的オブジェクト生成部２７２を含む）のソースコードは、デバッガの表示画面に表示され、自由にブレイクポイントを挿入することができる。
【００５７】
一方、秘匿実行制御部２７０のスクリプト取得部２７１が取得するスクリプト（文字列）は、動的オブジェクト生成部２７２でオブジェクト化されて生成されるオブジェクトである。このとき、デバッガは、スクリプト取得部２７１が取得したスクリプトを、文字列としてしか認識せず、ＪａｖａＳｃｒｉｐｔコードとして認識しない。このため、デバッガは、ＪａｖａＳｃｒｉｐｔコードとして認識することができない文字列を表示画面にスクリプトとして表示することができない。したがって、デバッガの表示画面にＪａｖａＳｃｒｉｐｔコードとして表示されないスクリプトに対しては、ブレイクポイントを挿入することができなくなる。例えば、図６に示したソースコードは、デバッガによって表示されず、ブレイクポイントを挿入することができない。
【００５８】
このように本実施形態の第１機能では、デバッガの表示画面にソースコードがＪａｖａＳｃｒｉｐｔのソースコードとして表示されないため、ブレイクポイントの挿入を回避することができ、ソースコードの解析、漏洩を防止することができる。
【００５９】
次に、第２機能は、デバッガでのステップ実行におけるＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）値の参照を回避する機能を実現する。デバッガの表示画面に表示されたソースコードにブレイクポイントを挿入し、挿入したブレイクポイントでステップをストップさせると、それ以後の動作をステップ実行することができる。したがって、動的オブジェクト生成部２７２のソースコードに対してブレイクポイントを挿入し、そこからステップ実行を行うと、動的オブジェクト生成部２７２に入力されたスクリプトがオブジェクト化される様子をステップ実行で参照することができる。
【００６０】
このとき、上述のように動的オブジェクト生成部２７２に入力されたスクリプトのソースコードは表示されずに、ブレイクポイントは挿入できないが、デバッガは、ステップ実行中の変数のＤＯＭ値を監視することができる。このため、動的オブジェクト生成部２７２で生成されるスクリプトで、例えば秘密鍵を生成している場合、秘密鍵が漏洩してしまうことになる。
【００６１】
そこで、本実施形態の第２機能は、Ｗｅｂページが更新された後、すぐに動作するオブジェクト（即時実行オブジェクト）を、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトで構成された非同期実行部２７３により実行する。この非同期通信のレスポンスを受けてＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクト関数内で動作する即時実行オブジェクトは、動的オブジェクト生成部２７２によってオブジェクト化されると同時に動作せず、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトがサーバ装置１００との間で通信を行った後に、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトのｏｎｒｅａｄｙｓｔａｔｅｃｈａｎｇｅ関数内で実行される。したがって、デバッガは、動的オブジェクト生成部２７２のソースコードにブレイクポイントを挿入してステップ実行しても、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクト関数や即時実行オブジェクトや非即時実行オブジェクトがオブジェクト化される過程しか参照することができず、即時実行オブジェクトの動作をステップ実行で参照することができない。
【００６２】
すなわち、第２機能は、第１機能を前提とした機能であり、ブレイクポイントの挿入ができない非同期実行部２７３が即時実行オブジェクトを実行することで、即時実行オブジェクトに対するステップ実行、言い換えれば、ＤＯＭ値の参照を回避する機能である。したがって、本実施形態の例では、Ｗｅｂページを更新すると同時に利用される即時実行オブジェクトであり、且つ、ブレイクポイントの挿入ができない非同期実行オブジェクトによって実行されるオブジェクトは、ステップ実行ができず、ＤＯＭ値を参照することができない。
【００６３】
なお、第２機能は、上述のように第１機能を前提として、ＤＯＭ値の参照を回避する機能であり、非同期通信のレスポンスを受けて動作する即時実行オブジェクトの動作（ＤＯＭ値の参照）を、秘匿実行制御部２７０からのステップ実行で、確認することを回避しているが、上記第１機能を前提としない場合、つまり、ブレイクポイントの挿入が可能なオブジェクトが、非同期通信のレスポンスを受けて動作するＸＭＬＨｔｔｐＲｅｑｕｅｓｔ関数を利用して実行される場合、デバッガによるステップ実行で、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔ関数内のＤＯＭ値を参照することができ、オブジェクトの動作を確認することができてしまう。
【００６４】
次に、図７を参照して、本実施形態のＷｅｂシステムの処理遷移を説明する。図７は、本実施形態のＷｅｂシステムの処理遷移を示したフローチャートである。
【００６５】
図７に示すように、ブラウザ２５０のＨＴＴＰ処理部２６０が、サーバ装置１００にＨＴＴＰリクエストを送信すると（ステップＳ２０１）、サーバ装置１００のＨＴＴＰ処理部１２０が、秘匿実行制御スクリプト提供部１６１を通じて秘匿実行制御スクリプト記憶部１６５から秘匿実行制御スクリプトを取得し（ステップＳ１０１）、取得した秘匿実行制御スクリプトが含まれたＷｅｂページを生成してブラウザ２５０に提供する（ステップＳ１０２）。なお、本実施形態の秘匿実行制御スクリプトの具体的な提供方法としては、例えば、ＷｅｂページのＨＴＭＬコードのスクリプトタグ内に秘匿実行制御スクリプトのソースコードを埋め込んで（記述して）提供したり、ＨＴＭＬコードのスクリプトタグに秘匿実行制御スクリプトのソースコードを動的に取得するようにして提供したり、或いは、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトなどのオブジェクトを利用して使用者装置２００とサーバ装置１００間で非同期通信を実行し、使用者装置２００がサーバ装置１００から秘匿実行制御スクリプトを動的に取得するように提供することができる。
【００６６】
ブラウザ２５０は、ＨＴＴＰ処理部１２０から受信したＨＴＭＬコードに含まれる秘匿実行制御スクリプトソースコードを読み込み、スクリプト取得部２７１及び動的オブジェクト生成部２７２で構成される秘匿実行制御部２７０を生成（オブジェクト化）する（ステップＳ２０２）。
【００６７】
秘匿実行制御部２７０の生成と同時に、スクリプト取得部２７１は、取得したＷｅｂページのＨＴＴＰ処理で要求されるスクリプトをサーバ装置１００から取得するために、該サーバ装置１００に対してスクリプト要求を送信する（ステップＳ２０３）。なお、このスクリプト要求は、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトを利用してサーバ装置１００に送信することもできる。
【００６８】
サーバ装置１００のスクリプト生成部１６２は、スクリプト取得部２７１からのスクリプト要求に応答して、該スクリプト要求に含まれる該当するスクリプトを記憶部１６４の非同期実行スクリプト記憶部１６６、即時実行スクリプト記憶部１６７、非即時実行スクリプト記憶部１６８の各々から取得し、取得した複数のスクリプトに基づいて送信用スクリプトを生成し、スクリプト取得部２７１に送信する（ステップＳ１０３）。スクリプト取得部２７１は、サーバ装置１００のスクリプト生成部１６２から要求したスクリプトを取得すると、動的オブジェクト生成部２７２を動作させるとともに、取得したスクリプトを受け渡す。そして、動的オブジェクト生成部２７２は、スクリプト取得部２７１から受け渡されたスクリプトを読み込んで、非同期実行部２７３、即時実行部、非即時実行部の各部を生成（オブジェクト化）する（ステップＳ２０４）。
【００６９】
そして、生成された非同期実行部２７３は、オブジェクト化と同時に実行され、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔをサーバ装置１００に送信するとともに、サーバ装置１００のレスポンス返信部１６３により返信された任意の文字列を受信すると（ステップＳ２０５）、コールバック処理で即時実行部を呼び出し、該即時実行部（即時実行オブジェクト）を実行する（ステップＳ２０６）。
【００７０】
また、動的オブジェクト生成部２７２によってオブジェクト化された非即時実行部は、ユーザアクション等によって任意のタイミングで実行される（ステップＳ２０７）。なお、上述したように、非同期実行部２７３、即時実行部及び非即時実行部の各スクリプトは、秘匿実行制御部２７０の秘匿実行スクリプトに組み込まれた形態で、当該秘匿実行制御スクリプトがブラウザ２５０に提供されるときに、同時に提供されるよう構成することも可能である。
【００７１】
次に、本実施形態のサーバ装置１００の処理遷移について説明する。図８は、サーバ装置１００の処理遷移を示したフローチャートであり、使用者装置２００のブラウザ２５０からＨＴＴＰリクエストを受信すると（ステップＳ８０１）、ＨＴＴＰ処理部１２０が、秘匿実行制御スクリプト提供部１６１に対して秘匿実行制御スクリプトの取得要求を出力し、秘匿実行制御スクリプト提供部１６１は、秘匿実行制御スクリプト記憶部１６５から秘匿実行制御スクリプトを取得する（ステップＳ８０２）。秘匿実行制御スクリプト提供部１６１は、秘匿実行制御スクリプト記憶部１６５から取得した秘匿実行制御スクリプトをＨＴＴＰ処理部１２０に出力し、ＨＴＴＰ処理部１２０が、秘匿実行制御スクリプトを含むＷｅｂページを生成してブラウザ２５０に提供する（ステップＳ８０３）。
【００７２】
その後、サーバ装置１００は、ブラウザ２５０でオブジェクト化された秘匿実行制御部２７０のスクリプト取得部２７１からのスクリプト要求の受信を監視し（ステップＳ８０４）、スクリプト要求を受信したと判別した場合には、スクリプト生成部１６２が、スクリプト生成処理を実行する。スクリプト生成部１６２は、スクリプト要求に含まれるスクリプトファイル名をキーに、記憶部１６４の非同期実行スクリプト記憶部１６６、即時実行スクリプト記憶部１６７、非即時実行スクリプト記憶部１６８の各々から該当するスクリプトを各々取得し、送信用スクリプトを生成する。このとき、スクリプト生成部１６２は、即時実行スクリプトが含まれている場合、非同期実行スクリプトを取得して当該非同期実行スクリプトで即時実行スクリプトが実行されるように、送信用スクリプトを生成する。その後、スクリプト生成部１６２は、生成した送信用スクリプトをスクリプト取得部２７１に送信する（ステップＳ８０５）。
【００７３】
続いて、サーバ装置１００のレスポンス返信部１６３は、使用者装置２００の秘匿実行制御部２７０によって動的にオブジェクト化された非同期実行部からのＸＭＬＨｔｔｐＲｅｑｕｅｓｔの受信を監視し（ステップＳ８０６）、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔが受信された場合に、レスポンス返信部１６３は、予め用意されている任意の文字列を非同期実行部に返信する（ステップＳ８０７）。
【００７４】
次に、本実施形態の使用者装置の処理遷移について説明する。図９及び図１０は、使用者装置２００の処理遷移を示したフローチャートである。
【００７５】
ブラウザ２５０のＨＴＴＰ処理部２６０は、操作部２４２ｂを介した使用者からのサーバ装置１００への接続要求に対して、ＨＴＴＰリクエスト（Ｗｅｂページ要求）を該サーバ装置１００に送信する（ステップＳ９０１）。
【００７６】
ＨＴＴＰ処理部２６０は、送信したＨＴＴＰリクエストに対してサーバ装置１００から提供される秘匿実行制御スクリプトを含むＨＴＭＬコードを受信し、スクリプト処理部２６１が、秘匿実行制御スクリプトを読み込んで、秘匿実行制御部２７０を生成する（ステップＳ９０２）。秘匿実行制御部２７０のスクリプト取得部２７１は、秘匿実行制御部２７０のオブジェクト化と同時に実行され、サーバ装置１００にスクリプト要求を送信する（ステップＳ９０３）。スクリプト取得部２７１は、送信したスクリプト要求に対してサーバ装置１００から提供される送信用スクリプトを受信すると、動的オブジェクト生成部２７２を実行するとともに、提供された送信用スクリプトを動的オブジェクト生成部２７２に出力する（ステップＳ９０４）。そして、動的オブジェクト生成部２７２は、送信用スクリプトに基づいて、非同期実行部２７３、即時実行部及び非即時実行部を各々生成（オブジェクト化）する（ステップＳ９０５）。
【００７７】
即時実行オブジェクトとしての即時実行部がオブジェクト化されている場合には（ステップＳ９０６）、動的オブジェクト生成部２７２によってオブジェクト化された後、即座に非同期実行部２７３が、即時実行部を実行するために、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔをサーバ装置１００に送信し（ステップＳ９０７）、サーバ装置１００から返信されたレスポンスを受信した後に、非同期実行部２７３が、即時実行部を実行する（ステップＳ９０８）。
【００７８】
その後、非即時実行部及び即時実行部は、ブラウザ２５０に対してユーザアクションがあったか否かを判別し（ステップＳ１００１）、ユーザアクションがあった場合には、当該ユーザアクションに対応する非即時実行部又は／及び即時実行部の実行処理が遂行される（ステップＳ１００２）。その後、ブラウザ２５０から新たなＨＴＴＰリクエスト（スクリプト要求）があった場合には（ステップＳ１００３）、図９のステップＳ９０１に戻る。
【００７９】
（第２実施形態）
本発明に係る第２実施形態は、上記第１実施形態のブラウザ２５０のスクリプト処理部２６１が動的に秘匿実行制御部（秘匿実行制御オブジェクト）２７０を生成し、生成された秘匿実行制御部２７０が、必要なスクリプトソースコードを読み込んでオブジェクト化（処理部を生成）するオブジェクトによりスクリプト処理機能（第１機能）と、秘匿実行制御部２７０により生成される非同期実行部２７３が、サーバ装置１００と非同期に通信を行い、通信後に即時実行部を呼び出して実行する非同期通信実行機能（第２機能）とを用い、秘匿化対象スクリプトを暗号化/復号処理により秘匿化させつつ、ブラウザ２５０においてスクリプトを実行する実施形態である。従って、この実施形態によれば、暗号化された情報がネットワークを流れることになるので、ネットワークキャプチャ等が第三者に用いられることによって、秘匿したいスクリプトが漏洩する危険性も防止できるという利点がある。
【００８０】
なお、以下の説明において、上記第１実施形態と同様の構成等については、同符号を付して説明を省略するとともに、上記第１実施形態と相違する部分を中心に本実施形態のＷｅｂシステム（スクリプト秘匿）を説明する。
【００８１】
図１２は、本実施形態のサーバ装置１００の構成ブロック図であり、上記第１実施形態の図２に対して、スクリプト秘匿化機能提供部１７０が含まれて構成されている。
【００８２】
スクリプト秘匿化機能提供部１７０は、秘匿化機能スクリプト提供部１７１と、秘匿化対象スクリプト暗号処理部１７２と、第２記憶部１７３を含む。第２記憶部１７３は、秘匿化対象スクリプト記憶部１７４、鍵記憶部１７５及び秘匿化機能スクリプト記憶部１７６を含む。鍵記憶部１７５は、予めサーバ装置１００で生成されたペアの公開鍵及び秘密鍵を保存している。また、秘匿化対象スクリプト記憶部１７４、及び秘匿化機能スクリプト記憶部１７６は、秘匿実行制御スクリプト記憶部１６５等と同様に、対応するスクリプトが各々保存されている。
【００８３】
図１３は、本実施形態の使用者装置２００の構成ブロック図であり、上記第１実施形態の図３に対して、秘匿化機能部２８０を含んで構成されている。秘匿化機能部２８０は、非同期実行部２８１、秘匿化処理読込部２８２及び秘匿処理機能部２８３を含む。
【００８４】
ここで、図１４及び図１５を参照しながら、本実施形態の使用者装置２００のブラウザ２５０の各処理部について詳細に説明する。図１４は、秘匿実行制御部２７０によってオブジェクト化される各処理部の構成及び動作遷移を示した図であり、図１５は、本実施形態のＷｅｂシステムのシーケンス図である。
【００８５】
秘匿実行制御部２７０のスクリプト取得部２７１が、スクリプト要求をサーバ装置１００に送信すると、サーバ装置１００のスクリプト生成部１６２は、非同期実行スクリプト記憶部１６６及び即時実行スクリプト記憶部１６８から、非同期実行スクリプトと秘匿化処理読込スクリプトを取得し、秘匿化処理読込スクリプトが非同期で実行される送信用スクリプトを生成して、スクリプト取得部２７１に送信する。なお、本実施形態の秘匿化処理読込スクリプトは、上記第１実施形態における即時実行スクリプトであり、第１記憶部１６４の即時実行スクリプト記憶部１６８に保存され、スクリプト生成部１６２を通じて秘匿実行制御部２７０に提供される。
【００８６】
スクリプト取得部２７１は、動的オブジェクト生成部２７２を動作させるとともに、非同期実行スクリプト及び秘匿化処理読込スクリプトをオブジェクト化し、非同期実行部２８１がオブジェクト化と同時に実行される。非同期実行部２８１は、サーバ装置１００にＸＭＬＨｔｔｐＲｅｑｕｅｓｔを送信し、サーバ装置１００のレスポンス返信部１６３からのレスポンスを受信後に、秘匿化処理読込部２８２を実行する。
【００８７】
秘匿化処理読込部２８２は、通信部２８２ａ及び動的オブジェクト生成部２８２ｂを含み、通信部２８２ａが、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトを利用して、サーバ装置１００の秘匿化機能スクリプト提供部１７１にＸＭＬＨｔｔｐＲｅｑｕｅｓｔを送信する。秘匿化機能スクリプト提供部１７１は、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔに応答して、秘匿化機能スクリプト記憶部１７６から秘匿化機能スクリプトを取得し、さらに、鍵記憶部１７５から予め生成されたサーバ装置側の公開鍵を取得する。秘匿化機能スクリプト提供部１７１は、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔに対する返信として、秘匿化機能スクリプト及びサーバ装置側公開鍵を通信部２８２ａに送信する。
【００８８】
そして、通信部２８２ａは、動的オブジェクト生成部２８２ｂを動作させるとともに、動的オブジェクト生成部２８２ｂが、秘匿化機能スクリプトをオブジェクト化して秘匿処理機能部２８３を生成する。取得したサーバ装置１００側の公開鍵は、オブジェクト化された秘匿処理機能部２８３に受け渡される。
【００８９】
秘匿処理機能部２８３は、秘匿化処理部２８３ａ、秘匿化スクリプト復号部２８３ｂ及び秘匿化対象オブジェクト動的生成部２８３ｃを含んで構成され、秘匿化処理部２８３ａは、秘匿処理機能部２８３のオブジェクト化と共に実行され、クライアント側共通鍵を生成するとともに、生成したクライアント側共通鍵を取得したサーバ装置１００側の公開鍵で暗号化する。さらに秘匿化処理部２８３ａは、秘匿化対象スクリプトの取得要求を、暗号化したクライアント側共通鍵とともにサーバ装置１００に送信する。
【００９０】
サーバ装置１００の秘匿化対象スクリプト暗号処理部１７２は、サーバ装置１００側の公開鍵で暗号化されたクライアント側共通鍵を含むスクリプト取得要求を受信すると、鍵記憶部１７５からペアのサーバ装置１００側の秘密鍵を取得し、暗号化されているクライアント側共通鍵を復号し、鍵記憶部１７５に格納する。
【００９１】
また、秘匿化対象スクリプト暗号処理部１７２は、スクリプト要求に対応する秘匿化対象スクリプトを秘匿化対象スクリプト記憶部１７４から取得し、復号したクライアント側共通鍵で暗号化する。秘匿化対象スクリプト暗号処理部１７２は、クライアント側共通鍵で暗号化された秘匿化対象スクリプトを、秘匿化処理部２８３ａに送信する。
【００９２】
秘匿化処理部２８３ａは、共通鍵で暗号化された秘匿化対象スクリプトを秘匿化スクリプト復号部２８３ｂに受け渡し、秘匿化スクリプト復号部２８３ｂが、共通鍵を使用して暗号化されている秘匿化対象スクリプトを復号し、復号した秘匿対象スクリプトを秘匿化対象オブジェクト動的生成部２８３ｃに受け渡す。そして、秘匿化対象オブジェクト動的生成部２８３ｃが、復号された秘匿化対象スクリプトをオブジェクト化する。そして、秘匿化処理部２８３ａは、秘匿化対象オブジェクト動的生成部２８３ｃによる秘匿化対象スクリプトのオブジェクト化処理後に、共通鍵を消去する。
【００９３】
このように、本実施形態では、上記第１実施形態の第１及び第２機能を適用して、秘匿化処理読込部２８２を秘匿実行制御部２７０で生成することで、デバッガによるＤＯＭ値の参照を無効化し、暗号化通信で利用する鍵の漏洩を防止することができる。したがって、秘匿化対象スクリプトの解析や改ざんを防止できるとともに、秘匿化対象スクリプトが、ネットワーク上やメモリ等から詐取、盗難されても、スクリプトソースコードの秘匿性を提供することが可能となる。なお、秘匿化処理部読込部２８２に、あらかじめ秘匿化処理機能部２８３に対応するスクリプトを含めて構成することもでき、その他の方法でスクリプトを取得することも可能である。例えば、秘匿化処理読込部２８２の通信部２８２ａの代わりに、秘匿処理を行なうスクリプトを予め秘匿化処理読込部２８２で保持するように構成しても良い。つまり、秘匿化処理読込部２８２のような、ブレイクポイントの挿入とステップ実行の回避を可能なオブジェクトにおいて秘匿化処理を行なうスクリプトをオブジェクト化できるように構成すればよい。
【００９４】
次に、図１６及び図１７を参照して、本実施形態におけるＷｅｂシステムの処理遷移について説明する。図１６及び図１７は、Ｗｅｂシステムの処理遷移を示したフローチャートである。
【００９５】
図１６に示すように、ブラウザ２５０のＨＴＴＰ処理部２６０が、サーバ装置１００にＨＴＴＰリクエストを送信すると（ステップＳ２０１）、サーバ装置１００のＨＴＴＰ処理部１２０が、秘匿実行制御スクリプト提供部１６１を通じて秘匿実行制御スクリプト記憶部１６５から秘匿実行制御スクリプトを取得し（ステップＳ１０１）、取得した秘匿実行制御スクリプトが含まれたＷｅｂページを生成してブラウザ２５０に提供する（ステップＳ１０２）。
【００９６】
ブラウザ２５０は、ＨＴＴＰ処理部１２０から受信したＨＴＭＬコードに含まれる秘匿実行制御スクリプトソースコードを読み込み、スクリプト取得部２７１及び動的オブジェクト生成部２７２で構成される秘匿実行制御部２７０を生成（オブジェクト化）する（ステップＳ２０２）。
【００９７】
秘匿実行制御部２７０の生成と同時に、スクリプト取得部２７１は、スクリプト要求をサーバ装置１００に送信すると（ステップＳ２０３ａ）、サーバ装置１００のスクリプト生成部１６２は、非同期実行スクリプト記憶部１６６及び即時実行スクリプト記憶部１６８から、非同期実行スクリプトと秘匿化処理読込スクリプトを取得し、秘匿化処理読込スクリプトが非同期で実行される送信用スクリプトを生成して、スクリプト取得部２７１に送信する（ステップＳ１０３ａ）。
【００９８】
スクリプト取得部２７１は、動的オブジェクト生成部２７２を動作させるとともに、非同期実行スクリプト及び秘匿化処理読込スクリプトをオブジェクト化し、非同期実行部２８１がオブジェクト化と同時に実行される（ステップＳ２０４ａ）。非同期実行部２８１は、サーバ装置１００にＸＭＬＨｔｔｐＲｅｑｕｅｓｔを送信し、サーバ装置１００のレスポンス返信部１６３からのレスポンスを受信後に、秘匿化処理読込部２８２を実行する（ステップＳ２０５ａ、Ｓ２０６ａ）。
【００９９】
秘匿化処理読込部２８２の通信部２８２ａは、サーバ装置１００の秘匿化機能スクリプト提供部１７１に秘匿処理機能スクリプトの取得要求を送信し（ステップＳ２０８）、秘匿化機能スクリプト提供部１７１は、該取得要求に応答して、秘匿化機能スクリプト記憶部１７６から秘匿化機能スクリプトを取得し（ステップＳ１０５）、さらに、鍵記憶部１７５から予め生成されたサーバ装置側の公開鍵を取得する（ステップＳ１０６）。秘匿化機能スクリプト提供部１７１は、秘匿化機能スクリプト及びサーバ装置側公開鍵を通信部２８２ａに送信する（ステップＳ１０７）。
【０１００】
そして、通信部２８２ａは、動的オブジェクト生成部２８２ｂを動作させるとともに、動的オブジェクト生成部２８２ｂが、秘匿化機能スクリプトをオブジェクト化して秘匿処理機能部２８３を生成する（ステップＳ２０９）。取得したサーバ装置１００側の公開鍵は、オブジェクト化された秘匿処理機能部２８３に受け渡される。
【０１０１】
秘匿処理機能部２８３の秘匿化処理部２８３ａは、クライアント側共通鍵を生成し（ステップＳ２１０）、生成したクライアント側共通鍵を取得したサーバ装置１００側の公開鍵で暗号化する。さらに秘匿化処理部２８３ａは、秘匿化対象スクリプトの取得要求を、暗号化したクライアント側共通鍵とともにサーバ装置１００に送信する（ステップＳ２１１）。この秘匿化処理部２８３ａは、本実施形態の特徴であり、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔによる非同期通信以外の方法で、秘密鍵の共有（共通鍵の使用）および暗号化した秘匿化対象スクリプトの取得ができ、且つＪａｖａＳｃｒｉｐｔデバッガの追跡を回避できる技術は、本発明者らが調査した限りでは発見できなかった。
【０１０２】
サーバ装置１００の秘匿化対象スクリプト暗号処理部１７２は、サーバ装置１００側の公開鍵で暗号化されたクライアント側共通鍵を含むスクリプト取得要求を受信すると、鍵記憶部１７５からペアのサーバ装置１００側の秘密鍵を取得し、暗号化されているクライアント側共通鍵を復号し、鍵記憶部１７５に格納する（ステップＳ１０８）。
【０１０３】
そして、秘匿化対象スクリプト暗号処理部１７２は、スクリプト要求に対応する秘匿化対象スクリプトを秘匿化対象スクリプト記憶部１７４から取得し、復号したクライアント側共通鍵で暗号化する。秘匿化対象スクリプト暗号処理部１７２は、クライアント側共通鍵で暗号化された秘匿化対象スクリプトを、秘匿化処理部２８３ａに送信する（ステップＳ１０９）。
【０１０４】
秘匿化スクリプト復号部２８３ｂは、共通鍵を使用して暗号化されている秘匿化対象スクリプトを復号し、復号した秘匿対象スクリプトを秘匿化対象オブジェクト動的生成部２８３ｃに受け渡す。そして、秘匿化対象オブジェクト動的生成部２８３ｃが、復号された秘匿化対象スクリプトをオブジェクト化する（ステップＳ２１２）。その後、秘匿化処理部２８３ａは、秘匿化対象オブジェクト動的生成部２８３ｃによる秘匿化対象スクリプトのオブジェクト化処理後に、共通鍵を消去する。
【０１０５】
次に、本実施形態のサーバ装置１００の処理遷移について説明する。図１８及び図１９は、サーバ装置１００の処理遷移を示したフローチャートである。
【０１０６】
図１８に示すように、ブラウザ２５０のＨＴＴＰ処理部２６０からのＨＴＴＰリクエストを受信すると（ステップＳ１８０１）、サーバ装置１００のＨＴＴＰ処理部１２０が、秘匿実行制御スクリプト提供部１６１を通じて秘匿実行制御スクリプト記憶部１６５から秘匿実行制御スクリプトを取得し（ステップＳ１８０２）、取得した秘匿実行制御スクリプトが含まれたＷｅｂページを生成してブラウザ２５０に提供する（ステップＳ１８０３）。
【０１０７】
その後、使用者装置２００でオブジェクト化された秘匿実行制御部２７０のスクリプト取得部２７１からスクリプト要求を受信すると（ステップＳ１８０４）、スクリプト生成部１６２は、非同期実行スクリプト記憶部１６６及び即時実行スクリプト記憶部１６８から、非同期実行スクリプトと秘匿化処理読込スクリプトを取得し、秘匿化処理読込スクリプトが非同期で実行される送信用スクリプトを生成して、スクリプト取得部２７１に送信する（ステップＳ１８０５）。
【０１０８】
続いてレスポンス返信部１６３は、使用者装置２００の秘匿実行制御部２７０によって動的にオブジェクト化された非同期実行部２８１からのＸＭＬＨｔｔｐＲｅｑｕｅｓｔの受信を監視し（ステップＳ１８０６）、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔが受信された場合に、レスポンス返信部１６３は、予め用意されている任意の文字列を非同期実行部２８１に返信する（ステップＳ１８０７）。
【０１０９】
そして、秘匿化処理読込部２８２の通信部２８２ａからの秘匿処理機能スクリプトの取得要求の受信を監視し（ステップＳ１８０８）、該取得要求の受信があった場合に、秘匿化機能スクリプト提供部１７１は、該取得要求に応答して、秘匿化機能スクリプト記憶部１７６から秘匿化機能スクリプトを取得し（ステップＳ１８０９）、さらに、鍵記憶部１７５から予め生成されたサーバ装置側の公開鍵を取得する（ステップＳ１８１０）。秘匿化機能スクリプト提供部１７１は、秘匿化機能スクリプト及びサーバ装置側公開鍵を通信部２８２ａに送信する（ステップＳ１８１１）。
【０１１０】
秘匿化対象スクリプト暗号処理部１７２は、サーバ装置１００側の公開鍵で暗号化されたクライアント側共通鍵を含むスクリプト取得要求を受信すると（ステップＳ１８１２）、鍵記憶部１７５からペアのサーバ装置１００側の秘密鍵を取得し、暗号化されているクライアント側共通鍵を復号し、鍵記憶部１７５に格納する（ステップＳ１８１３）。
【０１１１】
また、秘匿化対象スクリプト暗号処理部１７２は、スクリプト要求に対応する秘匿化対象スクリプトを秘匿化対象スクリプト記憶部１７４から取得し、復号したクライアント側共通鍵で暗号化する。秘匿化対象スクリプト暗号処理部１７２は、クライアント側共通鍵で暗号化された秘匿化対象スクリプトを、秘匿化処理部２８３ａに送信する（ステップＳ１８１４）。
【０１１２】
次に、図２０から図２２を参照して、本実施形態における使用者装置２００の処理遷移について説明する。図２０から図２２は、使用者装置２００の処理遷移を示したフローチャートである。
【０１１３】
図２０に示すように、ＨＴＴＰ処理部２６０が、サーバ装置１００にＨＴＴＰリクエストを送信すると（ステップＳ２００１）、サーバ装置１００のＨＴＴＰ処理部１２０が、秘匿実行制御スクリプトが含まれたＷｅｂページを生成してブラウザ２５０に提供する。
【０１１４】
ブラウザ２５０は、ＨＴＴＰ処理部１２０から受信したＨＴＭＬコードに含まれる秘匿実行制御スクリプトソースコードを読み込み、スクリプト取得部２７１及び動的オブジェクト生成部２７２で構成される秘匿実行制御部２７０を生成（オブジェクト化）する（ステップＳ２００２）。
【０１１５】
秘匿実行制御部２７０の生成と同時に、スクリプト取得部２７１は、スクリプト要求をサーバ装置１００に送信すると（ステップＳ２００３）、サーバ装置１００のスクリプト生成部１６２は、非同期実行スクリプト記憶部１６６及び即時実行スクリプト記憶部１６８から、非同期実行スクリプトと秘匿化処理読込スクリプトを取得し、秘匿化処理読込スクリプトが非同期で実行される送信用スクリプトを生成して、スクリプト取得部２７１に送信する。
【０１１６】
スクリプト取得部２７１は、動的オブジェクト生成部２７２を動作させるとともに、非同期実行スクリプト及び秘匿化処理読込スクリプトを動的オブジェクト生成部２７２に出力し（ステップS２００４）、動的オブジェクト生成部２７２が、非同期実行部２８１及び秘匿化処理読込部２８２を生成する（ステップS２００５）。非同期実行部２８１は、オブジェクト化と同時に実行され、サーバ装置１００にＸＭＬＨｔｔｐＲｅｑｕｅｓｔを送信し、サーバ装置１００のレスポンス返信部１６３からのレスポンスを受信後に、秘匿化処理読込部２８２を実行する（ステップＳ２００６、Ｓ２００７）。
【０１１７】
秘匿化処理読込部２８２の通信部２８２ａは、サーバ装置１００に秘匿処理機能スクリプトの取得要求を送信し（ステップＳ２００８）、秘匿化機能スクリプト及びサーバ装置側公開鍵を受信し、受信したサーバ装置１００の公開鍵を保存する（ステップＳ２００９）。
【０１１８】
そして、通信部２８２ａは、動的オブジェクト生成部２８２ｂを動作させるとともに、動的オブジェクト生成部２８２ｂが、秘匿化機能スクリプトをオブジェクト化して秘匿処理機能部２８３を生成する（ステップＳ２０１０）。取得したサーバ装置１００側の公開鍵は、オブジェクト化された秘匿処理機能部２８３に受け渡される。
【０１１９】
秘匿処理機能部２８３の秘匿化処理部２８３ａは、クライアント側共通鍵を生成し（ステップＳ２０１１）、生成したクライアント側共通鍵を取得したサーバ装置１００側の公開鍵で暗号化する（２０１２）。さらに秘匿化処理部２８３ａは、秘匿化対象スクリプトの取得要求を、暗号化したクライアント側共通鍵とともにサーバ装置１００に送信する（ステップＳ２０１３）。
【０１２０】
そして、秘匿化スクリプト復号部２８３ｂは、共通鍵を使用して暗号化されている秘匿化対象スクリプトを復号し、復号した秘匿対象スクリプトを秘匿化対象オブジェクト動的生成部２８３ｃに受け渡す（ステップS２０１４）。そして、秘匿化対象オブジェクト動的生成部２８３ｃが、復号された秘匿化対象スクリプトをオブジェクト化する（ステップＳ２０１５）。その後、秘匿化処理部２８３ａは、秘匿化対象オブジェクト動的生成部２８３ｃによる秘匿化対象スクリプトのオブジェクト化処理後に、共通鍵を消去する（ステップＳ２０１６）。
【０１２１】
その後、オブジェクト化された秘匿化対象スクリプト（秘匿化対象処理部）は、ブラウザ２５０に対してユーザアクションがあったか否かを判別し（ステップＳ２０１７）、ユーザアクションがあった場合には、当該ユーザアクションに対応する秘匿化対象処理部の実行処理が遂行される（ステップＳ２０１８）。その後、ブラウザ２５０から新たなＨＴＴＰリクエスト（スクリプト要求）があった場合には（ステップＳ２０１９）、図２０のステップＳ２００１に戻る。
【０１２２】
以上、本発明を上記実施形態に則して説明したが、上記Ｗｅｂシステム以外のシステムにおいても、本発明を適用することができる。例えば、社内ＬＡＮ等のネットワークで構成されたサーバ−クライアントシステムにも適用することができ、具体的には、ブラウザを通じて営業管理や勤怠管理を提供するアプリケーションサービスシステムがある。つまり、本発明は、Ｗｅｂブラウザ以外のＪａｖａＳｃｒｉｐｔ等のスクリプト実行環境を有するソフトウェアにスクリプトを提供するシステムに適用することができる。
【０１２３】
また、上記実施形態の非同期実行部２７３、２８１は、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔオブジェクトで構成されているため、実行するスクリプトを当該非同期実行部２７３、２８１がサーバ装置１００との通信において取得するように構成することも可能である。例えば、即時実行オブジェクトについては、スクリプト取得部２７１で取得せずに、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔの返信としてサーバ装置１００が送信するレスポンスに即時実行オブジェクトのスクリプトを含ませ、レスポンスとしてサーバ装置１００から受け取った文字列（スクリプト）をｅｖａｌ（）関数でオブジェクト化し、オブジェクト化した後に実行するように構成することも可能である。この場合、レスポンス返信部１６３が、非同期実行部２７３、２８１からのＸＭＬＨｔｔｐＲｅｑｕｅｓｔに応答して、記憶部（第１記憶部）１６４から該当のスクリプトを取得し、取得したスクリプト（文字列）をレスポンスとして返信するように構成することができる。
【０１２４】
また、本発明のサーバ装置は、ハードウェア構成として上述以外にも、タッチパネル、スキャナー等の操作入力手段、プリンタ、スピーカなどの出力手段、補助記憶装置（ハードディスク等）等を備えることができる。
【０１２５】
なお、本発明を好適な実施形態に則して説明したが、本発明の要旨から逸脱しない範囲内で当該技術分野の技術に照らし合わせて多様に変形することが可能である。したがって、本発明の技術的範囲は、上述の実施形態に限定されるものではなく、特許請求の範囲の記載及びこれと均等なものに基づいて定められるべきである。
【図面の簡単な説明】
【０１２６】
【図１】本発明の第１実施形態におけるＷｅｂシステムのシステム構成図である。
【図２】本発明の第１実施形態におけるサーバ装置の構成ブロック図である。
【図３】本発明の第１実施形態における使用者装置の構成ブロック図である。
【図４】本発明の第１実施形態におけるＷｅｂシステムのシーケンス図である。
【図５】本発明の第１実施形態におけるブラウザのオブジェクト動作遷移を示した模式図である。
【図６】本発明の第１実施形態における秘匿実行制御部によってオブジェクト化されるスクリプトソースコードの一例を示す図である。
【図７】本発明の第１実施形態におけるＷｅｂシステムの処理遷移を示したフローチャートである。
【図８】本発明の第１実施形態におけるサーバ装置の処理遷移を示したフローチャートである。
【図９】本発明の第１実施形態における使用者装置の処理遷移を示したフローチャートである。
【図１０】図９に続く、本発明の第１実施形態における使用者装置の処理遷移を示したフローチャートである。
【図１１】本発明の第１実施形態における即時実行スクリプト記憶部（ａ）、及び非即時実行スクリプト記憶部（ｂ）の構成例を示した図である。
【図１２】本発明の第２実施形態におけるサーバ装置の構成ブロック図である。
【図１３】本発明の第２実施形態における使用者装置の構成ブロック図である。
【図１４】本発明の第２実施形態における秘匿実行制御部によってオブジェクト化される各処理部の構成例を示す図である。
【図１５】本発明の第２実施形態におけるＷｅｂシステムのシーケンス図である。
【図１６】本発明の第２実施形態におけるＷｅｂシステムの処理遷移を示したフローチャートである。
【図１７】図１６に続く、本発明の第２実施形態におけるＷｅｂシステムの処理遷移を示したフローチャートである。
【図１８】本発明の第２実施形態におけるサーバ装置の処理遷移を示したフローチャートである。
【図１９】図１８に続く、本発明の第２実施形態におけるサーバ装置の処理遷移を示したフローチャートである。
【図２０】本発明の第２実施形態における使用者装置の処理遷移を示したフローチャートである。
【図２１】図２０に続く、本発明の第２実施形態における使用者装置の処理遷移を示したフローチャートである。
【図２２】図２１に続く、本発明の第２実施形態における使用者装置の処理遷移を示したフローチャートである。
【図２３】従来のスクリプト漏洩防止技術及びデバッグ機能を示した図である。
【符号の説明】
【０１２７】
１００    サーバ装置
１１０    通信制御部
１２０    ＨＴＴＰ処理部
１３０    Ｗｅｂ情報格納部
１４０    制御部（ＣＰＵ）
１５０    記憶部（メモリ）
１６０    秘匿実行制御機能提供部
１６１    秘匿実行制御スクリプト提供部
１６２    スクリプト生成部
１６３    レスポンス返信部
１６４    記憶部（第１記憶部）
１６５    秘匿実行制御スクリプト記憶部
１６６    非同期実行スクリプト記憶部
１６７    即時実行スクリプト記憶部
１６８    非即時実行スクリプト記憶部
１７０    スクリプト秘匿化機能提供部
１７１    秘匿化機能スクリプト提供部
１７２    秘匿化対象スクリプト暗号処理部
１７３    記憶部（第２記憶部）
１７４    秘匿化対象スクリプト記憶部
１７５    鍵記憶部
１７６    秘匿化機能スクリプト記憶部
２００    使用者装置
２１０    通信制御部
２２０    制御部（ＣＰＵ）
２３０    記憶部（メモリ）
２４０ａ  表示インターフェース
２４０ｂ  外部インターフェース
２４１ａ  ディスプレイ
２４１ｂ  入力部
２４２ｂ  操作部
２５０    ブラウザ
２６０    ＨＴＴＰ処理部
２６１    スクリプト処理部
２７０    秘匿実行制御部
２７１    スクリプト取得部
２７２    動的オブジェクト生成部
２７３    非同期実行部
２８０    秘匿化機能部
２８１    非同期実行部
２８２    秘匿化処理読込部
２８３    秘匿処理機能部
【図１】
0004777387.tif 000002
【図２】
0004777387.tif 000003
【図３】
0004777387.tif 000004
【図４】
0004777387.tif 000005
【図５】
0004777387.tif 000006
【図６】
0004777387.tif 000007
【図７】
0004777387.tif 000008
【図８】
0004777387.tif 000009
【図９】
0004777387.tif 000010
【図１０】
0004777387.tif 000011
【図１１】
0004777387.tif 000012
【図１２】
0004777387.tif 000013
【図１３】
0004777387.tif 000014
【図１４】
0004777387.tif 000015
【図１５】
0004777387.tif 000016
【図１６】
0004777387.tif 000017
【図１７】
0004777387.tif 000018
【図１８】
0004777387.tif 000019
【図１９】
0004777387.tif 000020
【図２０】
0004777387.tif 000021
【図２１】
0004777387.tif 000022
【図２２】
0004777387.tif 000023
【図２３】
0004777387.tif 000024