(57)【要約】【課題】  オンラインサービス事業者に対する機密情報の秘匿と、サービス利用組織が負担するシステム運用コストの低減とを両立するデータ保護システムを実現すること。【解決手段】  クライアント端末のブラウザが、オンラインサービスサーバへデータを送信する際に、サービス利用組織内ネットワークを介して、鍵管理サーバから暗号スクリプトと暗号鍵を取得し、暗号スクリプトを実行して入力データの暗号化済データを取得し、その取得した暗号化済データをオンラインサービスサーバへ送信し、オンラインサービスサーバから受信したデータ表示画面を描画する際に、鍵管理サーバから復号スクリプトと暗号鍵を取得し、復号スクリプトを実行して表示データの復号済データを取得し、その手段により取得した復号済データを使用してデータ表示画面を描画する手段を備える。【選択図】    図１
2010072916.tif 000002
【特許請求の範囲】
【請求項１】
ブラウザを備えるクライアント端末と暗号スクリプトと復号スクリプト及び暗号鍵を記憶する鍵管理サーバとがサービス利用組織内ネットワークにより接続され、さらにオンラインサービスを提供するオンラインサービスサーバと前記サービス利用組織内ネットワークとが、インターネット等の公衆ネットワークにより接続される構成において、前記オンラインサービスサーバからの機密情報の漏洩を防止するデータ保護システムであって、
前記クライアント端末のブラウザが、
前記オンラインサービスサーバへデータを送信する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから暗号スクリプトと暗号鍵を取得し、暗号スクリプトを実行して入力データの暗号化済データを取得する第１の手段と、
前記第１の手段により取得した暗号化済データを前記オンラインサービスサーバへ送信する第２の手段と、
前記オンラインサービスサーバから受信したデータ表示画面を描画する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから復号スクリプトと暗号鍵を取得し、復号スクリプトを実行して表示データの復号済データを取得する第３の手段と、
前記第３の手段により取得した復号済データを使用してデータ表示画面を描画する第４の手段とを備えることを特徴とするデータ保護システム。
【請求項２】
前記第１の手段が、
前記オンラインサービスサーバから暗号化依頼スクリプトを含むデータ入力画面を受信し、ユーザによるデータ入力画面へのデータ入力の完了に応じて、前記暗号化依頼スクリプトを実行する手段と、
前記暗号化依頼スクリプトの実行により、データ入力画面に入力された入力データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した入力データを送信し、入力データを引数として子プロセスに前記暗号スクリプトを実行させる手段と、
子プロセスによる暗号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、前記鍵管理サーバから暗号鍵を取得する手段と、
子プロセスによる暗号スクリプトの実行により、取得した暗号鍵で入力データを暗号化して暗号化済データを生成し、生成した暗号化済データを実行結果として子プロセスの呼出し元である暗号化依頼スクリプトに送信する手段とを備えることを特徴とする請求項１に記載のデータ保護システム。
【請求項３】
第３の手段が、
前記オンラインサービスサーバから復号依頼スクリプトと暗号化済データを含むデータ表示画面を受信し、データ表示画面の画面描画処理の発生に応じて、前記復号依頼スクリプトを実行する手段と、
前記前記復号依頼スクリプトの実行により、前記データ表示画面に含まれる暗号化済データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した暗号化済データを送信し、暗号化済データを引数として子プロセスに前記復号スクリプトを実行させる手段と、
子プロセスによる復号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、鍵管理サーバから暗号鍵を取得する手段と、
子プロセスによる復号スクリプトの実行により、取得した暗号鍵で暗号化済データを復号して復号済データを生成し、生成した復号済データを実行結果として子プロセスの呼出し元である復号依頼スクリプトに送信する手段とを備えることを特徴とする請求項１〜２のいずれかに記載のデータ保護システム。
【請求項４】
前記呼出し元スクリプトの認証手段が、
前記鍵管理サーバが、アクセスを許可する呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を記載したクロスアクセス許可リストを記憶する手段を備え、
前記ブラウザが、
暗号スクリプト又は復号スクリプトの実行により、前記鍵管理サーバから前記クロスアクセス許可リストを取得する手段と、
前記暗号スクリプト又は復号スクリプトの実行により、子プロセスを生成した呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を取得する手段と、
前記暗号スクリプト又は復号スクリプトの実行により、取得した子プロセスの呼出し元スクリプトの組み合わせ情報が、前記クロスアクセス許可リストに含まれているかを確認し、含まれていた場合は、呼出し元スクリプトの認証結果を成功と判定し、含まれていなかった場合は、呼出し元スクリプトの認証結果を失敗と判定する手段とを備えることを特徴とする請求項２〜３のいずれかに記載のデータ保護システム。
【請求項５】
ブラウザを備えるクライアント端末と暗号スクリプトと復号スクリプト及び暗号鍵を記憶する鍵管理サーバとがサービス利用組織内ネットワークにより接続され、さらにオンラインサービスを提供するオンラインサービスサーバと前記サービス利用組織内ネットワークとが、インターネット等の公衆ネットワークにより接続される構成において、前記オンラインサービスサーバからの機密情報の漏洩を防止するデータ保護方法であって、
前記クライアント端末のブラウザが、
前記オンラインサービスサーバへデータを送信する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから暗号スクリプトと暗号鍵を取得し、暗号スクリプトを実行して入力データの暗号化済データを取得する第１のステップと、
前記第１のステップにより取得した暗号化済データを前記オンラインサービスサーバへ送信する第２のステップと、
前記オンラインサービスサーバから受信したデータ表示画面を描画する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから復号スクリプトと暗号鍵を取得し、復号スクリプトを実行して表示データの復号済データを取得する第３のステップと、
前記第３のステップにより取得した復号済データを使用してデータ表示画面を描画する第４のステップとを備えることを特徴とするデータ保護方法。
【請求項６】
前記第１のステップが、
前記オンラインサービスサーバから暗号化依頼スクリプトを含むデータ入力画面を受信し、ユーザによるデータ入力画面へのデータ入力の完了に応じて、前記暗号化依頼スクリプトを実行するステップと、
前記暗号化依頼スクリプトの実行により、データ入力画面に入力された入力データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した入力データを送信し、入力データを引数として子プロセスに前記暗号スクリプトを実行させるステップと、
子プロセスによる暗号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、前記鍵管理サーバから暗号鍵を取得するステップと、
子プロセスによる暗号スクリプトの実行により、取得した暗号鍵で入力データを暗号化して暗号化済データを生成し、生成した暗号化済データを実行結果として子プロセスの呼出し元である暗号化依頼スクリプトに送信するステップとを備えることを特徴とする請求項５に記載のデータ保護方法。
【請求項７】
第３のステップが、
前記オンラインサービスサーバから復号依頼スクリプトと暗号化済データを含むデータ表示画面を受信し、データ表示画面の画面描画処理の発生に応じて、前記復号依頼スクリプトを実行するステップと、
前記前記復号依頼スクリプトの実行により、前記データ表示画面に含まれる暗号化済データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した暗号化済データを送信し、暗号化済データを引数として子プロセスに前記復号スクリプトを実行させるステップと、
前記子プロセスによる復号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、鍵管理サーバから暗号鍵を取得するステップと、
前記子プロセスによる復号スクリプトの実行により、取得した暗号鍵で暗号化済データを復号して復号済データを生成し、生成した復号済データを実行結果として、子プロセスの呼出し元である復号依頼スクリプトに送信するステップとを備えることを特徴とする請求項５〜６のいずれかに記載のデータ保護方法。
【請求項８】
前記呼出し元スクリプトの認証手段が、
前記鍵管理サーバが、アクセスを許可する呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を記載したクロスアクセス許可リストを記憶するステップを備え、
前記ブラウザが、
暗号スクリプト又は復号スクリプトの実行により、前記鍵管理サーバから前記クロスアクセス許可リストを取得するステップと、
前記暗号スクリプト又は復号スクリプトの実行により、子プロセスを生成した呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を取得するステップと、
前記暗号スクリプト又は復号スクリプトの実行により、取得した子プロセスの呼出し元スクリプトの組み合わせ情報が、前記クロスアクセス許可リストに含まれているかを確認し、含まれていた場合は、呼出し元スクリプトの認証結果を成功と判定し、含まれていなかった場合は、呼出し元スクリプトの認証結果を失敗と判定するステップとを備えることを特徴とする請求項６〜７のいずれかに記載のデータ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オンラインサービスとして提供される情報システムを利用する場合に、オンラインサービス事業者が管理するサーバから、サービス利用組織の機密情報が漏洩するのを防止するデータ保護システム及びデータ保護方法に関する。
【背景技術】
【０００２】
近年、企業や法人向けに情報システムをオンラインサービスとして提供するASP（Application Service Provider）・SaaS（Software As a Service）に注目が集まっている。
ASP・SaaSでは、情報システムのサーバやデータの管理はオンラインサービス事業者が行う。このため、サービス利用組織は、従来組織内で運用していた情報システムを、ASP・SaaSで提供される情報システムに置き換えることで、システムの管理・運用コストを大幅に削減することができる。
【０００３】
一方、ASP・SaaSで提供される情報システムの利用にあたっては、オンラインサービス事業者が管理するサーバからの機密情報の漏洩防止が課題となっている。
ASP・SaaSでは、オンラインサービス事業者が管理するサーバ（オンラインサービスサーバ）に、サービスを利用する複数の組織の情報資産が集積される。このため、オンラインサービスサーバからの情報漏洩は、被害が複数の組織に及ぶため社会的な影響が極めて大きい。
また、従来、組織内で厳重に管理していた機密情報を組織外の事業者に預けることに対するセキュリティ上の不安から、特にデータ保護意識の高い企業では、ASP・SaaSで提供される情報システムの導入を見送っているのが現状である。
【０００４】
以上の課題への対策として、近年では、オンラインサービスサーバに対してデータの内容を秘匿したままサービスを利用可能にすることで、オンラインサービスサーバからの機密情報の漏洩を防止するデータ保護システムが提案されている。
例えば、下記の特許文献１には、クライアント端末とオンラインサービスサーバがネットワークを介して接続されたWebアプリケーションにおいて、クライアント端末とオンラインサービスサーバで送受信されるデータをインターセプトするプロキシサーバを用いて、オンラインサービスサーバに対しデータを秘匿したままWebアプリケーションを利用する技術が開示されている。
【０００５】
また、特許文献１に記載の従来技術では、クライアント端末からオンラインサービスサーバへリクエストを送信する場合に、リクエストに含まれるデータをプロキシサーバが暗号化してからオンラインサービスサーバにデータを送信する。また、オンラインサービスサーバからクライアント端末にレスポンスを送信する場合に、レスポンスに含まれるデータをプロキシサーバが復号してからクライアント端末に送信する。
【０００６】
以上の従来技術によると、オンラインサービスサーバにはプロキシサーバで暗号化されたデータしか記憶されない。すなわち、サービス利用組織は、プロキシサーバを組織内で管理することで、オンラインサービスサーバに対してデータの内容を秘匿したままサービスを利用することができる。これにより、サービス利用組織は、オンラインサービスサーバからの機密情報の漏洩を防止することができる。
【０００７】
一方、近年、Webアプリケーションのクライアント側の実行環境であるブラウザについては、ブラウザスクリプトの拡張機能が提案されている。
ここで、ブラウザスクリプトとは、ブラウザ上で実行されるプログラムであって、例えばJavaScript（登録商標）である。
ブラウザスクリプトの拡張機能の例として、非特許文献1には、ブラウザに、並列プロセス実行機能を実現するためのJavaScript API（Application Program Interface）を追加するブラウザ機能拡張プラグインが開示されている。
以下では、ブラウザスクリプトの拡張機能の例として非特許文献1の従来技術を挙げ、並列プロセス実行機能と、並列プロセス実行機能が提供するクロスオリジンアクセス機能について説明する。なお、本背景技術については非特許文献２にも説明されている。
【０００８】
【特許文献１】特開２００５−３０９８４６
【非特許文献１】http://code.google.com/apis/gears/
【非特許文献２】GoogleGearsスタートガイド 白石俊平 株式会社技術評論社
【０００９】
並列プロセス実行機能は、ブラウザに、JavaScriptをバックグラウンドで実行する機能を追加する仕組みである。Webアプリケーションの開発者は、並列プロセス実行機能が提供するAPIを利用したJavaScriptを記述し、これをブラウザにダウンロードさせて実行させることで、ブラウザに子プロセスを生成させ、子プロセスに任意のJavaScriptファイルを実行させることができる。子プロセスは実行完了後、プロセス間通信により、呼出し元のJavaScript、すなわち親プロセスに実行結果を返す。
また、並列プロセス実行機能は、JavaScriptから別オリジンのWebリソースの取得を可能にする、クロスオリジンアクセスと呼ばれる仕組みを提供する。
【００１０】
ここで、オリジンとは、個々のWebリソースに割り当てられているURLのプロトコル・ドメイン・ポート番号の組み合わせ情報である。
例えば、”http://domainA.com:80/resource/sample.js”で指定されるJavaScriptファイルのオリジンは、”http://domainA.com:80”である。
現在普及する多くのブラウザはシングルオリジンポリシーと呼ばれるセキュリティモデルに従って設計されており、ブラウザスクリプトは、自身が所属するオリジン以外のサーバへのHTTPリクエストの送信を制限されている。
【００１１】
図８は、サーバＡに配置されたスクリプトＡが、別オリジンのサーバＢ上のプログラムを実行してデータＢの取得を試みた場合に、ブラウザの通信制限により通信がブロックされる様子を示した動作概念図である。
図に示すように、”http://domainA.com:80”のオリジンに所属するスクリプトＡは、同じオリジンに所属するデータＡへはアクセスすることができる（ステップ８０２）。
一方、別オリジン”http://domainB.com:80”に所属するデータＢへは、リクエストの送信がブラウザの通信制限によりブロックされるため、アクセスすることができない（ステップ８０５）。
【００１２】
次に、図９に、並列プロセス実行機能を利用したクロスオリジンアクセスの動作を示す。
並列プロセス実行機能を利用すると、予め、クロスオリジンアクセスを受けるサーバＢに、データＢへのアクセス処理を記述したスクリプトＢを配置しておけば、スクリプトＡは、子プロセスを生成し、子プロセスにスクリプトＢを実行させることで、スクリプトＢを介してデータＢを取得することができる。
以下に図９の動作の概要を示す。
ステップ９０５で、スクリプトＡは、並列プロセス実行機能が提供するＡＰＩを利用して、スクリプトＢを実行する子プロセスを生成している。
ステップ９０６で、スクリプトＡは、並列プロセス実行機能が提供するＡＰＩを利用して、子プロセスとプロセス間通信を行い、データＡを子プロセスへ渡している。
子プロセスは、親プロセスからのプロセス間通信を受けると、ステップ９０５で指定されたスクリプトＢの実行を開始する。
ステップ９０７で、スクリプトＢは、並列プロセス実行機能が提供するＡＰＩを利用して、呼出し元スクリプトのオリジン情報を取得し、呼出し元スクリプトのオリジンがサーバＡのオリジンであることを確認する。確認できた場合はステップ９０８に進み、確認できなかった場合は直ちに処理を中断する。これは、意図しないサーバからのデータＢへのアクセスを防ぐための仕組みである。
ステップ９０８〜９１０で、スクリプトＢは、サーバＢにアクセスしてデータＢを取得する。スクリプトＢはサーバＢと同一オリジンに所属するため、シングルオリジンポリシーに基づく通信制限を受けずに、データＢにアクセスすることができる。
ステップ９１１で、スクリプトＢは、プロセス間通信により、取得したデータＢを親プロセスであるスクリプトＡへ渡す。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
特許文献１に記載の従来技術にあっては、サービス利用組織が負担するシステム運用コストが高いという課題がある。
従来技術では、プロキシサーバでデータ秘匿処理（暗号・復号処理）を集中して実行する仕組みであるため、システム全体のデータ秘匿処理の処理負荷が、プロキシサーバに集中するという問題がある。
さらに、この処理負荷は、サービス利用組織が利用するオンラインサービスの数や、オンラインサービスを利用するユーザ数の増加に応じて飛躍的に増大するため、サービス利用組織は、システム全体の処理パフォーマンスを維持するために、頻繁にプロキシサーバの処理性能の拡張を行っていかなければならない。従来、こうした頻繁なプロキシサーバの処理性能の拡張にかかる手間が、サービス利用組織のシステム運用コストを高めていた。
【００１４】
本発明の目的は、オンラインサービス事業者に対する機密情報の秘匿と、サービス利用組織が負担するシステム運用コストの低減とを両立するデータ保護システムを実現することにある。
【課題を解決するための手段】
【００１５】
上記目的を達成するため、本発明に係るデータ保護システムは、ブラウザを備えるクライアント端末と暗号スクリプトと復号スクリプト及び暗号鍵を記憶する鍵管理サーバとがサービス利用組織内ネットワークにより接続され、さらにオンラインサービスを提供するオンラインサービスサーバと前記サービス利用組織内ネットワークとが、インターネット等の公衆ネットワークにより接続される構成において、前記オンラインサービスサーバからの機密情報の漏洩を防止するデータ保護システムであって、
前記クライアント端末のブラウザが、
前記オンラインサービスサーバへデータを送信する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから暗号スクリプトと暗号鍵を取得し、暗号スクリプトを実行して入力データの暗号化済データを取得する第１の手段と、
前記第１の手段により取得した暗号化済データを前記オンラインサービスサーバへ送信する第２の手段と、
前記オンラインサービスサーバから受信したデータ表示画面を描画する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから復号スクリプトと暗号鍵を取得し、復号スクリプトを実行して表示データの復号済データを取得する第３の手段と、
前記第３の手段により取得した復号済データを使用してデータ表示画面を描画する第４の手段とを備えることを特徴とする。
【００１６】
また、前記第１の手段が、
前記オンラインサービスサーバから暗号化依頼スクリプトを含むデータ入力画面を受信し、ユーザによるデータ入力画面へのデータ入力の完了に応じて、前記暗号化依頼スクリプトを実行する手段と、
前記暗号化依頼スクリプトの実行により、データ入力画面に入力された入力データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した入力データを送信し、入力データを引数として子プロセスに前記暗号スクリプトを実行させる手段と、
子プロセスによる暗号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、前記鍵管理サーバから暗号鍵を取得する手段と、
子プロセスによる暗号スクリプトの実行により、取得した暗号鍵で入力データを暗号化して暗号化済データを生成し、生成した暗号化済データを実行結果として子プロセスの呼出し元である暗号化依頼スクリプトに送信する手段とを備えることを特徴とする。
【００１７】
また、第３の手段が、
前記オンラインサービスサーバから復号依頼スクリプトと暗号化済データを含むデータ表示画面を受信し、データ表示画面の画面描画処理の発生に応じて、前記復号依頼スクリプトを実行する手段と、
前記前記復号依頼スクリプトの実行により、前記データ表示画面に含まれる暗号化済データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した暗号化済データを送信し、暗号化済データを引数として子プロセスに前記復号スクリプトを実行させる手段と、
子プロセスによる復号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、鍵管理サーバから暗号鍵を取得する手段と、
子プロセスによる復号スクリプトの実行により、取得した暗号鍵で暗号化済データを復号して復号済データを生成し、生成した復号済データを実行結果として、子プロセスの呼出し元である復号依頼スクリプトに送信する手段とを備えることを特徴とする。
【００１８】
また、前記呼出し元スクリプトの認証手段が、
前記鍵管理サーバが、アクセスを許可する呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を記載したクロスアクセス許可リストを記憶する手段を備え、
前記ブラウザが、
暗号スクリプト又は復号スクリプトの実行により、前記鍵管理サーバから前記クロスアクセス許可リストを取得する手段と、
前記暗号スクリプト又は復号スクリプトの実行により、子プロセスを生成した呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を取得する手段と、
前記暗号スクリプト又は復号スクリプトの実行により、取得した子プロセスの呼出し元スクリプトの組み合わせ情報が、前記クロスアクセス許可リストに含まれているかを確認し、含まれていた場合は、呼出し元スクリプトの認証結果を成功と判定し、含まれていなかった場合は、呼出し元スクリプトの認証結果を失敗と判定する手段とを備えることを特徴とする。
【００１９】
本発明に係るデータ保護方法は、ブラウザを備えるクライアント端末と暗号スクリプトと復号スクリプト及び暗号鍵を記憶する鍵管理サーバとがサービス利用組織内ネットワークにより接続され、さらにオンラインサービスを提供するオンラインサービスサーバと前記サービス利用組織内ネットワークとが、インターネット等の公衆ネットワークにより接続される構成において、前記オンラインサービスサーバからの機密情報の漏洩を防止するデータ保護方法であって、
前記クライアント端末のブラウザが、
前記オンラインサービスサーバへデータを送信する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから暗号スクリプトと暗号鍵を取得し、暗号スクリプトを実行して入力データの暗号化済データを取得する第１のステップと、
前記第１のステップにより取得した暗号化済データを前記オンラインサービスサーバへ送信する第２のステップと、
前記オンラインサービスサーバから受信したデータ表示画面を描画する際に、前記サービス利用組織内ネットワークを介して、前記鍵管理サーバから復号スクリプトと暗号鍵を取得し、復号スクリプトを実行して表示データの復号済データを取得する第３のステップと、
前記第３のステップにより取得した復号済データを使用してデータ表示画面を描画する第４のステップとを備えることを特徴とする。
【００２０】
また、前記第１のステップが、
前記オンラインサービスサーバから暗号化依頼スクリプトを含むデータ入力画面を受信し、ユーザによるデータ入力画面へのデータ入力の完了に応じて、前記暗号化依頼スクリプトを実行するステップと、
前記暗号化依頼スクリプトの実行により、データ入力画面に入力された入力データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した入力データを送信し、入力データを引数として子プロセスに前記暗号スクリプトを実行させるステップと、
子プロセスによる暗号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、前記鍵管理サーバから暗号鍵を取得するステップと、
子プロセスによる暗号スクリプトの実行により、取得した暗号鍵で入力データを暗号化して暗号化済データを生成し、生成した暗号化済データを実行結果として子プロセスの呼出し元である暗号化依頼スクリプトに送信するステップとを備えることを特徴とする。
【００２１】
また、第３のステップが、
前記オンラインサービスサーバから復号依頼スクリプトと暗号化済データを含むデータ表示画面を受信し、データ表示画面の画面描画処理の発生に応じて、前記復号依頼スクリプトを実行するステップと、
前記前記復号依頼スクリプトの実行により、前記データ表示画面に含まれる暗号化済データを収集し、さらにブラウザの子プロセスを生成して子プロセスへ収集した暗号化済データを送信し、暗号化済データを引数として子プロセスに前記復号スクリプトを実行させるステップと、
前記子プロセスによる復号スクリプトの実行により、呼出し元スクリプトの認証手段を実行し、認証に成功した場合に、鍵管理サーバから暗号鍵を取得するステップと、
前記子プロセスによる復号スクリプトの実行により、取得した暗号鍵で暗号化済データを復号して復号済データを生成し、生成した復号済データを実行結果として、子プロセスの呼出し元である復号依頼スクリプトに送信するステップとを備えることを特徴とする。
【００２２】
また、前記呼出し元スクリプトの認証手段が、
前記鍵管理サーバが、アクセスを許可する呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を記載したクロスアクセス許可リストを記憶するステップを備え、
前記ブラウザが、
暗号スクリプト又は復号スクリプトの実行により、前記鍵管理サーバから前記クロスアクセス許可リストを取得するステップと、
前記暗号スクリプト又は復号スクリプトの実行により、子プロセスを生成した呼出し元スクリプトのＵＲＬのプロトコル、ドメイン、ポート番号の組み合わせ情報を取得するステップと、
前記暗号スクリプト又は復号スクリプトの実行により、取得した子プロセスの呼出し元スクリプトの組み合わせ情報が、前記クロスアクセス許可リストに含まれているかを確認し、含まれていた場合は、呼出し元スクリプトの認証結果を成功と判定し、含まれていなかった場合は、呼出し元スクリプトの認証結果を失敗と判定するステップとを備えることを特徴とする。
【発明の効果】
【００２３】
本発明に係るデータ保護システムは、各々のサービス利用者が操作するブラウザがデータ秘匿処理（暗号・復号処理）を分散して実行する。サービス利用組織が管理する鍵管理サーバは、暗号スクリプトと復号スクリプト及び暗号鍵をブラウザに提供する処理だけを行い、データ秘匿処理は実行しない。このため、データ秘匿に関する処理負荷はサーバに集中せず、従来技術のプロキシサーバと比較して、鍵管理サーバにかかる処理負荷を小さくできる。
よって、サービス利用組織は、システムのパフォーマンスを維持するために、頻繁にサーバの処理性能の拡張を行う必要はなく、サーバ処理性能の拡張にかかる投資コストを低減することができる。
以上より、オンラインサービス事業者に対する機密情報の秘匿と、サービス利用組織が負担するシステム運用コストの低減とを両立するデータ保護システムを実現することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明を実施する場合の一形態を図面を参照して具体的に説明する。
なお、本実施の形態では、予め、ブラウザ機能拡張プラグインがインストールされたブラウザを対象に、オンラインサービスサーバに対するデータの秘匿を実現する形態について説明する。ただし、本発明の実施にあたり、ブラウザ機能拡張プラグインと同様の機能を搭載するブラウザを用いるのであればプラグインのインストールは必要なく、本発明は、プラグインを利用した本実施の形態に限定されるものではない。
図１は、本発明に係るデータ保護システムの実施の形態を示すシステム構成図である。
本実施形態のデータ保護システムは、クライアント端末１０１と鍵管理サーバ１０２が、サービス利用組織内ネットワーク１０５で接続し、さらに、サービス利用組織内ネットワーク１０５が、公衆ネットワーク１０４を介してオンラインサービスサーバ１０３と接続する構成をとる。
【００２５】
クライアント端末１０１は、サービス利用組織内でサービスを利用するユーザが操作する端末である。クライアント端末１０１は、ブラウザ機能拡張プラグイン１０７をインストールしたブラウザ１０６を備える。
鍵管理サーバ１０２は、サービス利用組織が管理するサーバであり、データの暗号・復号処理の実行に必要な情報を記憶し、これらをブラウザ１０６へ提供するサーバである。
鍵管理サーバ１０２は、暗号スクリプト１０８と、復号スクリプト１０９と、クロスアクセス許可リスト１１０と、暗号鍵管理テーブル１１１と、暗号鍵提供Webサービス１１２とを備える。
クロスアクセス許可リスト１１０は、暗号スクリプト１０８と復号スクリプト１０９が実行する呼出し元スクリプトの認証処理に使用するファイルである。クロスアクセス許可リスト１１０には、暗号スクリプト１０８と復号スクリプト１０９の実行を許可する呼出し元スクリプトのオリジン情報が記載される。
【００２６】
オンラインサービスサーバ１０３は、オンラインサービス事業者が管理するサーバであり、サービス利用組織にサービスとして提供するＷｅｂアプリケーションのプログラムを記憶するサーバである。
オンラインサービスサーバ１０３は、暗号化依頼スクリプト１１５と復号依頼スクリプト１１６を含むWebアプリプログラム１１３と、Ｗｅｂアプリケーションで扱うデータを格納するデータベース１１４とを備える。
ここで、Webアプリプログラム１１３に含まれる暗号化依頼スクリプト１１５は、ブラウザ１０６が、クライアント端末１０１からオンラインサービスサーバ１０３へデータを送信する直前に実行されるように、Webアプリプログラム１１３に組み込まれる。
また、Webアプリプログラム１１３に含まれる復号依頼スクリプト１１６は、ブラウザ１０６が、オンラインサービスサーバ１０３から画面情報を取得して表示する直前に実行されるように、Webアプリプログラム１１３に組み込まれる。
公衆ネットワーク１０４は、オンラインサービス事業者とサービス利用組織の間をつなぐ、インターネットやＶＰＮなどのネットワークである。サービス利用企業組織内ネットワーク１０５が、サービス利用組織が管理するネットワークであるのに対し、公衆ネットワーク１０４は、サービス利用組織が管理しないネットワークである。
【００２７】
図２は、暗号鍵管理テーブル１１１のテーブル構成例を示す図である。
図２において、WebアプリURL２０１は、オンラインサービス事業者が提供するWebアプリケーションのトップページ等のURLである。本発明のデータ保護システムでは、WebアプリURLを、オンラインサービス事業者が提供するサービスを一意に識別するための識別子として使用する。
ユーザＩＤ２０２は、オンラインサービス事業者がサービスの利用者に対して発行するWebアプリケーションを利用するユーザを一意に識別するための識別子である。
暗号鍵２０３は、暗号スクリプト１０８と復号スクリプト１０９が実行するデータの暗号化・復号処理に使用する鍵情報である。
【００２８】
以下、システムの動作について説明する。だだし、サービス利用組織の各ユーザには、予めオンラインサービス事業者からサービスの利用に必要なユーザＩＤとパスワードが発行されているものとする。
また、鍵管理サーバ１０２が記憶するクロスアクセス許可リスト１１０には、予めサービス利用組織のシステム管理者によって、サービス利用組織が利用するWebアプリＵＲＬのオリジン情報が設定されているものとする。
また、サービス利用組織のシステム管理者は、予め、利用するサービスのWebアプリURL２０１と当該サービスを利用するユーザＩＤ２０２ごとに暗号鍵２０３を生成し、これらを互いに関連付けて、暗号鍵管理テーブル１１１に登録するものとする。
また、本実施の形態では、暗号化依頼スクリプト１１６は、Webアプリプログラム１１３が生成するデータ入力画面におけるデータ送信ボタンの押下を契機に、実行されるものとする。
また、本実施の形態では、復号依頼スクリプト１１７は、Webアプリプログラム１１３が生成するデータ表示画面を、ブラウザが表示する際に発生させる画面ロードイベントを契機に、実行されるものとする。
【００２９】
まず、システム全体の流れについて、図３を使用して説明する。
ステップ３０１〜ステップ３０３は、ブラウザ１０６が、鍵管理サーバ１０２からの暗号鍵の取得処理に必要なユーザＩＤを含むクッキーを取得する処理である。
ユーザがブラウザ１０６を操作し、オンラインサービスサーバ１０３にアクセスする。そして、オンラインサービス事業者から発行されているユーザＩＤとパスワードを使用してサービスにログインを試みる（ステップ３０１）。
オンラインサービスサーバ１０３は、ユーザＩＤとパスワードでユーザを認証し、認証に成功した場合は、ユーザＩＤを含むクッキーを生成してブラウザ１０６へ送信する。認証に失敗した場合は、ブラウザ１０６に認証に失敗した旨を通知し、直ちに処理を中断する（ステップ３０２）。
ブラウザ１０６は、ステップ３０２で取得したユーザＩＤを含むクッキーを記憶する（ステップ３０３）。
ステップ３０４〜ステップ３０８は、ブラウザ１０６が、オンラインサービスサーバ１０３へデータを送信する際に、データを暗号化する処理である。
ユーザの操作に応じて、ブラウザ１０６が、データ入力画面の表示要求をオンラインサービスサーバ１０３へ送信する（ステップ３０４）。
オンラインサービスサーバ１０３は、図６に画面例を示すように、暗号化依頼スクリプトを含むデータ入力画面をブラウザ１０６へ送信する（ステップ３０５）。
【００３０】
ここで、図６を参照してデータ入力画面について説明する。
データ入力画面は、少なくとも、ユーザがデータを入力するためのフォームと、ユーザがデータ入力を確定するためのデータ送信ボタン６０１と、暗号化依頼スクリプト１１６とを備える。暗号化依頼スクリプト１１６は、ユーザがデータ送信ボタン６０１を押下した場合に実行されるように、データ入力画面に組み込まれている。
ユーザは、データ入力画面のフォームへデータの入力を完了すると、データ送信ボタン６０１を押下する。これにより、暗号化依頼スクリプト１１６が実行される（ステップ３０６）。
暗号化依頼スクリプト１１６は、クロスオリジンアクセスにより、鍵管理サーバ１０２が記憶する暗号スクリプト１０８をダウンロードして実行し、実行結果として、ユーザがフォームに入力したデータを暗号化した、暗号化済データを取得する。その後、取得した暗号化済データをオンラインサービスサーバ１０３へ送信する（ステップ３０７）。
【００３１】
オンラインサービスサーバ１０３は、ステップ３０７で取得した暗号化済データをデータベース１１４へ記憶する（ステップ３０８）。
ステップ３０９〜ステップ３１３は、ブラウザ１０６が、オンラインサービスサーバ１０３から暗号化済データを取得して画面を表示する際に、データを復号する処理である。
ユーザの操作に応じて、ブラウザ１０６が、データ表示画面の表示要求をオンラインサービスサーバ１０３へ送信する（ステップ３０９）。
オンラインサービスサーバ１０３は、データベース１１４からユーザから要求されたデータを取得する。ここで、データベース１１４には、ステップ３０８の処理により暗号化済データが記憶されているため、オンラインサービスサーバ１０３は、データベース１１４から暗号化済データを取得することになる（ステップ３１０）。
オンラインサービスサーバ１０３は、ステップ３１０で取得した暗号化済データと、復号依頼スクリプトとを含むデータ表示画面をブラウザ１０６へ送信する。
ここで、暗号化済データは、データ表示画面を構成するソースコード内のJavaScript変数に格納されて、ブラウザ１０６に送信される（ステップ３１１）。
【００３２】
ブラウザ１０６は、データ表示画面の受信が完了すると、データ表示画面の画面ロードイベントを発生させる。この画面ロードイベントの発生を受けて、ブラウザ１０６は復号依頼スクリプト１１６を実行する（ステップ３１２）。
復号依頼スクリプト１１６は、クロスオリジンアクセスにより、鍵管理サーバ１０２が記憶する復号スクリプト１０９をダウンロードして実行し、実行結果として、暗号化済データを復号した復号済データを取得する。その後、取得した復号済データを使用して、図７に画面例を示すデータ表示画面を構成し、ブラウザ１０６に表示する（ステップ３１３）。
【００３３】
次に、図４を参照し、ステップ３０７で実行する暗号化依頼スクリプト１１５と暗号スクリプト１０８の動作の詳細を説明する。
図４において、ステップ４０１〜４０３及びステップ４１２〜４１３は暗号化依頼スクリプト１１５の動作であり、ステップ４０４〜４１１は暗号スクリプト１０８の動作である。
暗号スクリプト１０８は、暗号化依頼スクリプト１１５が生成する子プロセスにより実行される。
ステップ３０６でデータ送信ボタン６０１の押下により暗号化依頼スクリプト１１５が実行されると、暗号化依頼スクリプト１１５は、フォームに入力されたフォーム入力データを収集し、取得する（ステップ４０１）。データの収集は、例えば、DOM（Document Object Model）の機能を利用したJavaScriptアクセスで行う。
【００３４】
次に、暗号化依頼スクリプト１１５は、ブラウザ機能拡張プラグイン１０７が提供する並列プロセス実行機能のAPIを利用して、暗号スクリプト１０８を実行するための子プロセスを生成する（ステップ４０２）。
暗号化依頼スクリプト１１５は、アクセス中のページからWebアプリのURLを、また、ステップ３０３でブラウザ１０６に保存されたクッキーからユーザIDを取得する。そして、これらにステップ４０１で取得したフォーム入力データを加え、プロセス間通信で子プロセスに送信する。
子プロセスは、このプロセス間通信を受信すると、暗号スクリプト１０８を鍵管理サーバ１０２からダウンロードして実行を開始する（ステップ４０３）。
【００３５】
ステップ４０４〜４０７は、呼出し元スクリプトの認証処理である。
暗号スクリプト１０８は、鍵管理サーバ１０２に、クロスアクセス許可リスト１１０の取得要求を送信する（ステップ４０４）。
鍵管理サーバ１０２は、クロスアクセス許可リスト１１０を取得する（ステップ４０５）。
鍵管理サーバ１０２は、ステップ４０５で取得したクロスアクセス許可リスト１１０をブラウザ１０６へ送信する（ステップ４０６）。
【００３６】
暗号スクリプト１０８は、並列プロセス実行機能が提供するAPIを利用して子プロセスの呼出し元スクリプトのオリジン情報を取得し、取得したオリジン情報が、ステップ４０６で取得したクロスアクセス許可リスト１１０に含まれているかチェックする。オリジン情報がクロスアクセス許可リスト１１０に含まれている場合は、ステップ４０８へ進む。含まれていない場合は、ブラウザへ暗号化に失敗した旨を通知して、直ちに処理を終了する（ステップ４０７）。
なお、本実施の形態に従い暗号スクリプト１０８が実行された場合、子プロセスの呼出し元スクリプトのオリジン情報は、暗号化依頼スクリプトのオリジン、すなわち、ユーザが利用しているサービスのWebアプリURLのオリジンになる。WebアプリURLのオリジンは、予めサービス利用組織のシステム管理者によって、クロスアクセス許可リスト１１０に記載されているため、呼出し元スクリプトの認証処理は成功することになる。
【００３７】
ステップ４０８〜４１０は、鍵管理サーバ１０２からの暗号鍵の取得処理である。
暗号スクリプト１０８は、ステップ４０３で取得したユーザIDとWebアプリURLを引数に、鍵管理サーバ１０２が提供する、暗号鍵提供Webサービス１１２を呼び出す（ステップ４０８）。
暗号鍵提供Webサービス１１２は、WebアプリURLとユーザIDを受信すると、暗号鍵管理テーブルから、受信したWebアプリURLとユーザIDとの組に関連付けられて記憶されている暗号鍵２０３を取得する（ステップ４０９）。
暗号鍵提供Webサービス１１２は、ステップ４０９で取得した暗号鍵をブラウザ１０６へ送信する（ステップ４１０）。
【００３８】
暗号スクリプト１０８は、ステップ４１０で取得した暗号鍵を使用し、ステップ４０３で取得したフォーム入力データを暗号化して、暗号化済データを生成する（ステップ４１１）。
暗号スクリプト１０８は、ステップ４１１で取得した暗号化済データを、プロセス間通信で暗号化依頼スクリプト１１５へ送信する（ステップ４１２）。
暗号化依頼スクリプト１１５は、ステップ４１２で取得した暗号化済データをオンラインサービスサーバ１０３へ送信する（ステップ４１３）。
【００３９】
次に、図５を参照して、ステップ３１３で実行する復号依頼スクリプト１１６と復号スクリプト１０９の動作の詳細を説明する。
図５において、ステップ５０１〜５０３及びステップ５１２〜５１３は復号依頼スクリプト１１６の動作であり、ステップ５０４〜５１１は復号スクリプト１０９の動作である。
復号スクリプト１０９は、復号依頼スクリプト１１６が生成する子プロセスにより実行される。
ステップ３１２でデータ表示画面の画面ロードイベントの発生により復号依頼スクリプト１１６が実行されると、復号依頼スクリプト１１６は、データ表示画面を構成するソースコードから、暗号化済データを格納したJavaScript変数を読み込み、暗号化済データを取得する（ステップ５０１）。
【００４０】
次に、復号依頼スクリプト１１６は、ブラウザ機能拡張プラグイン１０７が提供する並列プロセス実行機能のAPIを利用して、復号スクリプト１０９を実行するための子プロセスを生成する（ステップ５０２）。
復号依頼スクリプト１０９は、アクセス中のページからWebアプリのURLを、また、ステップ３０３でブラウザ１０６に保存されたクッキーからユーザIDを取得する。そして、これらにステップ５０１で取得した暗号化済データを加え、プロセス間通信で子プロセスに送信する。子プロセスは、このプロセス間通信を受信すると、復号スクリプト１０９の実行を開始する（ステップ５０３）。
【００４１】
以下の復号スクリプト１０９のステップ５０４〜５０７までの呼出し元スクリプトの認証処理と、ステップ５０８〜５１０までの暗号鍵の取得処理は、それぞれ、暗号スクリプト１０８のステップ４０４〜４０７と、ステップ４０８〜ステップ５１０の処理と同様であるため、処理の説明は省略する。
復号スクリプト１０９は、ステップ５１０で取得した暗号鍵で、ステップ５０３で取得した暗号化済データを復号して復号済データを生成する（ステップ５１１）。
復号スクリプト１０９は、ステップ５１１で取得した復号済データを、プロセス間通信でプロセスの呼出し元である復号依頼スクリプト１１６へ送信する（ステップ５１２）。
復号依頼スクリプト１１６は、データ表示画面の暗号化済データを、ステップ５０２で取得した復号済データに置き換えて、データ表示画面を構成し、ブラウザ１０６に表示する（ステップ５１３）。
データ表示画面の構成は、例えば、DOMの機能を利用したJavaScriptアクセスで行う。
【００４２】
なお、上記の実施の形態では、ユーザを一意に識別する識別子として、オンラインサービス事業者が発行するユーザIDを使用した。しかし、これはユーザIDを引数にハッシュ関数を実行した結果であるユーザＩＤのハッシュ値であっても良い。
この場合、サービス利用組織のシステム管理者は、予めオンラインサービス事業者からユーザIDとそのユーザＩＤから計算したハッシュ値の通知を受け、取得したハッシュ値をユーザID２０２の代わりに鍵管理テーブル１１１に登録するものとする。
また、ステップ３０２で、オンラインサービスサーバ１０３は、ユーザ認証が成功した場合は、ユーザIDのハッシュ値を計算し、ユーザＩＤのハッシュ値を含むクッキーを生成して送信するものとする。以降、上記の実施の形態のユーザIDを使用した処理は、全てユーザIDのハッシュ値を使用した処理として実行するものとする。
【図面の簡単な説明】
【００４３】
【図１】本発明に係るデータ保護システムの実施の形態を示すシステム構成図である。
【図２】鍵管理テーブルのテーブル構成を示す図である。
【図３】データ保護システム全体の処理を示すフローチャートである。
【図４】暗号化依頼スクリプトと暗号スクリプトの処理を示すフローチャートである。
【図５】復号依頼スクリプトと復号スクリプトの処理を示すフローチャートである。
【図６】ブラウザが表示するデータ入力画面の画面例である。
【図７】ブラウザが表示するデータ表示画面の画面例である。
【図８】ブラウザのシングルオリジンポリシーに基づく通信制限を示すフローチャートである。
【図９】並列プロセス実行機能を利用したクロスオリジンアクセスの動作を示すフローチャートである。
【符号の説明】
【００４４】
１０１  クライアント端末
１０２  鍵管理サーバ
１０３  オンラインサービスサーバ
１０８  暗号スクリプト
１０９  復号スクリプト
１１１  暗号鍵管理テーブル
１１５  暗号化依頼スクリプト
１１６  復号依頼スクリプト
【図１】
2010072916.tif 000003
【図２】
2010072916.tif 000004
【図３】
2010072916.tif 000005
【図４】
2010072916.tif 000006
【図５】
2010072916.tif 000007
【図６】
2010072916.tif 000008
【図７】
2010072916.tif 000009
【図８】
2010072916.tif 000010
【図９】
2010072916.tif 000011