通信制御機能を有する通信装置、方法、プログラム
【課題】
Webアプリケーションの通信制限を掛ける方法として、アプリケーションごとに全ての通信し得る全ての通信先を事前に指定することは困難であった。
【解決手段】
本発明の通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有する。
Webアプリケーションの通信制限を掛ける方法として、アプリケーションごとに全ての通信し得る全ての通信先を事前に指定することは困難であった。
【解決手段】
本発明の通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はWebアプリケーションの脆弱性が原因で利用者の情報が漏えいすることを防ぐ通信装置、方法、プログラムに関する。
【背景技術】
【0002】
近年では、インターネット上の複数のサービスや、利用者の情報などをマッシュアップしたサービスが広く利用されている。マッシュアップとはWeb上に提供されている複数の異なる情報やサービス、コンテンツなどを組み合わせて、新しいサービス等を形作ることである。これらのサービスは、Webアプリケーションとして提供され、利用者はWebブラウザを使ってそれらのWebアプリケーションを利用する。ここで、Webアプリケーションは、Webサーバ上で動作するサーバサイドのプログラムと、利用者のブラウザ上で動作するクライアントサイドのプログラムとから構成される。
【0003】
クライアントサイドのプログラムは主にHTML(Hypertext Markup Language)やJavaScriptで実装される。また、サーバサイドのプログラムはJava(登録商標)やPHP(Hypertext Preprocessor)などで実装される。
【0004】
マッシュアップサービスの例として、利用者の周辺の地図上にレストランの情報をマッピングして、利用者に提示するアプリケーションがある。このアプリケーションは、レストランの情報を提供するサービスと、座標から地図情報を提供するサービスと、そして利用者の現在位置情報とをマッシュアップする。
【0005】
このようなマッシュアップサービスは、クライアントサイドのプログラム(以降、クライアントサイドアプリと呼ぶ)とサーバサイドのプログラム(以降、サーバサイドアプリと呼ぶ)との間で様々な情報を送受信する。前述の例では、まず利用者のブラウザ上のクライアントサイトアプリがレストラン情報を提供するサーバサイドアプリからレストラン情報を取得する。同時に利用者の通信端末(ローカルサーバ)のサーバサイドアプリから利用者の現在位置情報を取得する。最後に、クライアントアプリは取得した上記2つの情報を地図情報を提供するサーバサイドアプリに送り、サーバサイドアプリから地図情報を取得する。
【0006】
このとき、利用者の通信端末上で実行されるアプリケーションやインターネット上のサービス間で送受信される情報の中には、利用者にとって漏えいさせたくない重要な情報、特に個人情報が含まれることがある。前述の例では、利用者の通信端末が個人情報を持つ場合がある。また、インターネット上のサービスが個人情報を持つ場合も考えられる。
【0007】
このような個人情報をマッシュアップサービスで利用する場合、その個人情報は信頼できるアプリケーションに対してのみ提供されなければならない。前述の例でいうと、通信端末のサーバサイドアプリは、クライアントサイドアプリから要求があると、そのクライアントサイドアプリが信頼できるアプリケーションである場合にのみ、個人情報を渡すようにしなければならない。
【0008】
そのため、個人情報の要求を受け付けるサーバサイドアプリは、個人情報を要求するクライアントサイドアプリを認証することが一般的である。
【0009】
サーバサイドアプリがクライアントサイドアプリを認証する方法の例として、サーバサイドアプリがクライアントサイドアプリから受け取る要求メッセージに含まれるRefererを確認する方法が考えられる。Refererとは、あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのことである。Refererには、クライアントサイドアプリのダウンロード元のサーバ識別子が記載されている。このサーバ識別子が信頼できるサーバを指す場合は、サーバサイドサプリはこのクライアントサイドアプリを信頼する。つまり、クライアントサイドアプリの配信元サーバが信頼できる場合、そのクライアントサイドアプリも信頼することになる。
【0010】
このように、個人情報を管理するサーバサイドアプリは、クライアントサイドアプリを認証することで、自身が管理する個人情報が信頼できないアプリケーションに漏えいすることを防止している。
【0011】
しかし、信頼できるクライアントサイドアプリに、攻撃者が意図した悪意のあるスクリプトが埋め込まれている場合は、攻撃者に個人情報を奪取される危険性がある。このような状況は、クロスサイトスクリプティング(XSS: Cross Site Scripting)攻撃に代表されるようなサーバサイドアプリを対象とした攻撃によって、起こり得る。XSS攻撃とは、攻撃者がサイト間を横断して悪意のあるスクリプトを混入させて、脆弱なアプリケーション上で不正なスクリプトを実行させることである。個人情報が攻撃者に奪取される具体的な例を、以下にて説明する。
【0012】
あるサーバサイドアプリは、利用者の通信端末からの要求に応じて動的にクライアントサイドアプリを生成して、通信端末に返すという動作をするものとする。具体的には、サーバサイドアプリは、利用者の通信端末から何らかの文字列、例えばユーザ名などを受け取ると、ユーザ名をクライアントサイドアプリに含めて利用者の通信端末に返す。さらに、このサーバサイドアプリは、利用者の通信端末内にあるローカルサーバ上のサーバサイドアプリから信頼されていることとする。つまり、サーバサイドアプリが生成するクライアントサイドアプリも同様に信頼されることになる。
【0013】
ここで、このサーバサイドアプリが利用者から受け取る文字列が不正な文字列でないことを確認しない場合、このサーバサイドアプリはXSS攻撃に脆弱となる。攻撃者はこのXSS攻撃に脆弱なサーバサイドアプリを悪用して、利用者の通信端末に悪意のあるスクリプトを含んだクライアントサイドアプリをロードさせるように仕向けることができるからである。攻撃は次のように行われる。攻撃者は自身が用意したサイト上に、リンクを用意する。
【0014】
このリンクは、前述のXSS攻撃に脆弱なサーバサイドアプリのURL(Uniform Resource Locator)であり、さらにこのURLには、パラメータとして、悪意のあるスクリプトを含んでいる。利用者が前述のリンクをクリックすることで、サーバサイドアプリに悪意のあるスクリプトを送ることになる。その結果、サーバサイドアプリは、利用者から受け取った悪意のあるスクリプトを含むクライアントサイドアプリを生成し、利用者の通信端末に返すことになる。
【0015】
このとき、通信端末が受け取るクライアントサイドアプリが含むスクリプトは2つの動作をする。1つは、通信端末のサーバサイドアプリから個人情報を取得するスクリプト(スクリプト1)と、その情報を攻撃者サイトに送信するスクリプト(スクリプト2)である。
【0016】
上記スクリプトは、通信端末上のブラウザにロードされると同時に実行される。まず、スクリプト1により通信端末は、ローカルサーバ上のサーバサイドアプリに個人情報を要求する。クライアントサイドアプリはもともとこのサーバサイドアプリから信頼されるアプリであるため、ローカルサーバ上のサーバサイドアプリは通信端末に個人情報に返す。 次にスクリプト2により通信端末は、スクリプト1により取得した個人情報を攻撃者サイトに送信する。このようにして、攻撃者は利用者の個人情報を奪取することに成功する。
【0017】
上記のような、サーバサイドアプリの脆弱性が原因となる個人情報の漏えいは何らかの方法で防ぐ必要がある。この問題に対応する為の関連技術として、通信端末がクライアントサイドアプリの通信制御を行うことが考えられる。例えば、通信端末がクライアントサイドアプリの正しい通信先のリストを把握しておき、このアプリがそのリスト以外と通信しようとすると、その通信を中止するという方法がある。その結果、信頼できるクライアントサイドアプリに悪意のあるスクリプトが含まれていて、このスクリプトによって通信端末が攻撃者サイトに個人情報を送信しようとしても、その通信を止めることができる。通信端末は、攻撃者サイトへの通信は通信先のリストに記載のないため、その通信が不正な通信であると判断できるからである。
【0018】
上記の関連した技術が記載された文献として、非特許文献1がある。非特許文献1には、通信端末内のアプリケーションマネージャがJavaアプリケーションの属性ファイルを参照することで、アプリケーションに通信制限を掛けることができるとしている。具体的には、属性ファイルにはJavaアプリケーションの通信先のリストが記載されており、そのアプリケーションがそのリストに記載されない通信先と通信しようとすると、アプリケーションマネージャがその通信を中止できる技術が記載されている。
【0019】
また、関連した技術として下記特許文献1には、次のような技術が記載されている。即ち、ローカルネットワークを介して他のネットワークに接続する携帯端末上で動作するアプリケーションが、ローカルネットワークから機密情報を流出させることを防ぐ技術である。この関連技術では通信端末が、アプリケーションが実行する通信を監視する通信監視手段とアプリケーションの通信において接続されたネットワークの履歴を示す通信履歴情報を記録する。同時に且つ該通信履歴情報に応じて前記アプリケーションによるネットワークへの接続の可否を判定する通信制御手段とを備えている。
【0020】
また、関連した技術として下記特許文献2には、次の様な技術が記載されている。即ち、
各通信装置の要求に基づいた通信転送ポリシを通信制御装置に反映させることのできる通信装置を提供するものである。
【先行技術文献】
【非特許文献】
【0021】
【非特許文献1】JSR 118 Expert Group, Java Community Process「Mobile Information Device Profile for Java. 2 Micro Edition」(P431〜P452)[online].(retrieved on 2010-03-16)Retrieved from the Internet: <URL:http://www.nada.kth.se/projects/proj03/minime/other/midp-2_0-fr-spec.pdf>.
【特許文献】
【0022】
【特許文献1】特開2008−191862号公報
【特許文献2】特開2005―217828号公報
【発明の概要】
【発明が解決しようとする課題】
【0023】
しかし、この非特許文献1の技術をクライアントサイドのWebアプリケーションの通信制御として適用することは困難である。なぜなら、クライアントサイドアプリでは不特定多数のサイトへのリンクを持つことが多いため、先行技術1のようにWebアプリケーションが通信し得る全ての通信先を事前に指定することは現実的でないためである。不特定多数のサイトへのリンクとして、関連サイトへのリンクや、広告によるリンクが挙げられる。これらのリンクの総数は多数であり、アプリケーションごとに全てのリンクを指定した属性ファイルを用意することはアプリケーション開発者に負担がかかる。
【0024】
もともとクライアントサイドアプリに通信制限を掛ける理由は、利用者にとって漏えいさせたくない情報を守ることである。そのため、クライアントサイドアプリが上記の情報を取得する前であれば、そのアプリに通信制限を掛ける必要がない。つまり、漏えいさせたくない情報を持たないクライアントサイドアプリには通信制限を掛けず、上記の情報を取得したときに通信制限を掛けることが望ましいということになる。しかし、先行技術1ではそのような通信制御を実現できない。
【0025】
また特許文献1では、通信制御をかけるためのポリシを通信履歴DBに蓄積する必要があるので、通信装置の資源を圧迫するという不具合を生じる可能性がある。
【0026】
また、特許文献2では、ある通信装置が起動したとき、あるいは通信装置が特定のサービスを起動した際に対応する通信装置にポリシが適用されるというものであり、アクセスするリソースの種別等に拘わらずポリシが適用されてしまうという無駄が生じる恐れがある。
【0027】
本発明はクライアントサイドアプリの通信制御に利用でき、そのアプリが個人情報などの重要な情報を取得した場合に、上記のような不具合無く個人情報が漏えいすることを防止できる通信装置等を提供することを目的としている。
【課題を解決するための手段】
【0028】
本発明の通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有する。
【0029】
また、本発明の通信制御方法は、リソースにアクセスする通信工程と、
前記通信工程が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得工程と、
前記通信工程がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御工程と、を有する。
【0030】
また、本発明のプログラムは、リソースにアクセスする通信ステップと、
前記通信ステップが前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得ステップと、
前記通信ステップがアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御ステップと、をコンピュータに実行させる。
【0031】
また、本発明の通信システムはデータを送受信するサーバ及び通信装置からなる通信システムであって、
前記通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有し、
前記サーバは、通信装置のリクエストに応じて対応するリソース及びリソースに関連する通信制御ポリシを前記通信装置に返すレスポンス生成部と、
を有する。
【発明の効果】
【0032】
本発明では、事前にアプリケーションごとに全てのリンクを指定した属性ファイルを用意することなく、個人情報などの重要な情報が漏えいすることを防止できる通信装置、方法、プログラムを提供することを提供することが出来る。
【図面の簡単な説明】
【0033】
【図1】本発明の第1の実施形態における通信装置を示す構成図である。
【図2】本発明の第1の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図3】本発明の第1の実施形態におけるポリシ保存部が保存するポリシの例である。
【図4】本発明の第1の実施形態における通信装置がクライアントサイドアプリをブラウザにロードする処理を示す動作シーケンスである。
【図5】本発明の第1の実施形態におけるクライアントサイドアプリがリソースにアクセスする処理を示す動作シーケンスである。
【図6】本発明の第1の実施形態におけるクライアントサイドアプリ内に埋め込まれた悪意のあるスクリプトが攻撃者サーバと通信する処理を示す動作シーケンスである。
【図7】本発明の第1の実施形態における状態遷移図である。
【図8】本発明の第2の実施形態におけるポリシ保存部が保存するポリシの例である。
【図9】本発明の第2の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図10】本発明の第2の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図11】本発明の第2の実施形態におけるクライアントサイドアプリがページ遷移する際にポリシを操作する処理を示す動作シーケンスである。
【図12】本発明の第3の実施形態における通信システムの構成図である。
【図13】本発明の第3の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図14】本発明の第3の実施形態におけるサーバが保存するポリシの例である。
【図15】本発明の第3の実施形態における通信装置上のクライアントサイドアプリがリソースを取得する処理を示す動作シーケンスである。
【図16】本発明の第3の実施形態におけるレスポンスヘッダの例である。
【図17】本発明の第3の実施形態におけるレスポンスメッセージボディの例である。
【図18】本発明の第5の実施形態における通信装置の構成図である。
【発明を実施するための形態】
【0034】
(第1の実施形態)
次に、本発明の第1の実施形態について図面を参照して詳細に説明する。
図1は本発明の第1の実施形態における通信装置の構成図である。通信装置1は、ブラウザ101を持ち、ブラウザ101はクライアントサイドアプリ102、通信部103、通信制御部104、およびポリシ保存部105から構成される。
【0035】
通信装置1は、例えば、ノートPC、携帯電話、PDAなどのサーバとの通信手段を持つ通信端末がこれに該当する。ブラウザ101は、通信装置がサーバからダウンロードしたWebアプリケーションを実行し、ユーザインターフェイスを持つ。例として、Firefox(登録商標)、Internet Explorer(登録商標)、Safari(登録商標)などが挙げられる。クライアントサイドアプリ102は、HTMLやJavaScript(登録商標)などの言語で記述されるアプリケーションである。
【0036】
通信部103は、リソースとの通信手段である。ここで、リソースとは、サーバ、サーバサイドアプリ、サーバが管理する情報などを示す。通信制御部104は、ブラウザが送信するリクエストをフックする。さらに、自身が記憶している通信制御ポリシを確認して、そのリクエストが許可されない通信である場合はその通信を中止する。
【0037】
このポリシの例を図2を用いて説明する。図2を参照すると、ブラウザのタブAに関連付けられて通信が許可されるリソースが通信制御部104に記憶されている。これは、タブAからのリクエストにサーバ3、サーバ4への通信が許可されていることを示す。このタブとは、ブラウザ101の1つのウィンドウに複数のアプリケーションがロードされる場合に、各アプリケーションを区別するために用いられるものである。「サーバ3、サーバ4」はリソースの識別子であり、ホスト名やURLがこれに該当する。例えば、ホスト名として「server1、localhost・・・」が、 URLとして「http://server1.com、http://localhost.local、http://server1.com /server1.cgi、http://server1.com/server1.cgi?parama=123、http: //server1.com/*」などが挙げられる。
【0038】
さらに、通信装置がリソースにアクセスする度に、そのリソースに関連するポリシを、ポリシ保存部105から取り出し、ブラウザのタブと紐づけし、関連付けて記憶する。このとき、過去に記憶しているポリシがある場合は、記憶しているポリシと最後にアクセスしたリソースに関連する通信制御ポリシとをマージしたポリシを最新のポリシとして記憶する。
【0039】
マージする例としては、2つのポリシの共通部分を取る方法が考えられる。例えば、通信制御部104が既に記憶しているポリシにより通信を許可されるリソースがサーバ3、サーバ4、サーバ5であり、さらに、通信制御部104がポリシ保存部から取り出したポリシにより通信を許可されるリソースが、サーバ3、サーバ4である場合を考える。このとき、上記2つのポリシの共通部分により通信を許可されるリソースは、サーバ3、サーバ4になる。
【0040】
なお、通信制御部104は、利用者が新規作成したタブに関連付けられて記憶しているポリシを持たない。そのため、利用者が新規作成したタブには通信制御は適用されないことになる。前述のリソースに関連付けられて記憶されているポリシは、ポリシ保存部105が保存している。
【0041】
このポリシについて図3を用いて説明する。図3を参照すると、リソースに関連付けられて通信が許可されるリソースが保存されている。具体的には、リソース「サーバ4」に関連付けられて、通信が許可されるリソース「サーバ3、サーバ4」が保存されている。このポリシの意味するところは、サーバ4と通信した場合、それ以降はサーバ3もしくはサーバ4とのみ通信が可能になる、ということである。
【0042】
次に、動作シーケンス図を参照して本実施の形態の全体の動作について詳細に説明する。
本実施の形態の全体の動作は、
1)通信装置がクライアントサイドアプリをブラウザにロードする処理
2)クライアントサイドアプリがリソースを取得する処理
3)クライアントサイドアプリ内に埋め込まれた悪意のあるスクリプトが攻撃者サーバと通信する処理
4)ブラウザ上のタブの状態遷移
の4つから構成される。
以下、それぞれの処理の詳細について説明する。
【0043】
まず、「1)通信装置がクライアントサイドアプリをブラウザにロードする処理」について図4を用いて説明する。以下、図4の構成について、図1との差分のみ説明する。ネットワーク2は、通信装置1とサーバ3の間で送受信されるデータの伝送経路であり、無線LAN、基地局、ルータ、などネットワーク装置で構成される。サーバ3は、リクエストを受けた通信装置にクライアントサイドアプリ102を配信するサーバである。サーバサイドアプリ301は、サーバ3上に配置されるWebアプリケーションであり、利用者からリクエストを受けるとクライアントサイドアプリ102を生成するアプリケーションである。
【0044】
利用者は、ブラウザ101を起動し(タブが新規に作成される)、サーバ3にクライアントサイドアプリ102を要求する(ステップS101)。通信部103は、クライアントサイドアプリ102を取得するためのリクエストを通信制御部104に送信する(ステップS102)。 通信制御部104は、リクエストを受け取るとリクエスト元のブラウザのタブを特定する。ここでは、リクエスト元のタブを「タブA」とする(ステップS103)。
【0045】
さらに、通信制御部104は、そのタブAに関連するポリシを自身が記憶しているか確認する(ステップS104)。このとき、ポリシを記憶していない場合は、リクエストをネットワーク2を介してサーバ3に送信する。ポリシを記憶している場合は、処理が分岐するが、説明は後述する。
【0046】
本実施の形態では、利用者は新規にタブを作成しているため、ステップS104では、このタブAに関連するポリシはない。そのため、リクエストをサーバ3に送信する(ステップS105)。サーバ3はリクエストを受け取るとサーバサイドアプリ301を用いて、クライアントサイドアプリ102を生成し、ネットワーク2を介して通信装置1に返す(ステップS106)。
【0047】
通信制御部104は、サーバ3からのレスポンスを受け取ると、受け取ったクライアントアプリ102をブラウザにロードする。同時に、通信制御部104は、ポリシ保存部105にステップS105におけるリクエストの送信先(サーバ3もしくは、サーバ3のWebアプリ102)に関連するポリシを要求する(ステップS107)。
【0048】
ポリシ保存部105は、サーバ3に関するポリシがある場合は、それを返す。 また、サーバ3に関するポリシがない場合は、関連するポリシがないことを通知する。本シーケンスでは、サーバ3に関連するポリシはないため、ポリシがないことを通知する(ステップS108)。
【0049】
通信制御部104は、ポリシを受け取った場合は、ポリシに記載される通信を許可されるリソースをステップS103で特定したリクエスト元タブと関連付けて記憶する。このとき、既にリクエスト元のタブに関連付けるポリシがある場合は、そのポリシとステップS108で受け取ったポリシとの共通部分を新たなポリシとして、リクエスト元のタブに関連付けて記憶する。
【0050】
例えば、既にリクエスト元のタブに関連付けられているポリシにより通信を許可されるリソースがサーバ3、サーバ4、サーバ5であり、さらに、ステップS108で受け取ったポリシにより通信を許可されるリソースが、サーバ3、サーバ4である場合を考える。このとき、リクエスト元のタブに関連付けて記憶されるリソースは、サーバ3、サーバ4になる。また、ステップS108でポリシのない通知を受けとる場合は、何もしない。本シーケンスでは、ポリシがない通知を受け取るため、ここでは何も処理しない(ステップS109)。
【0051】
さらに、通信制御部104は、通信部103にクライアントサイドアプリ102を渡す(ステップS110)。
【0052】
次に、「2)クライアントサイドアプリがリソースを取得する処理」について図5を用いて説明する。以下、図5の構成について、図4との差分のみ説明する。クライアントサイドアプリ102は、1)において、サーバ3からロードしたクライアントサイドのWebアプリケーションである。サーバ4は、リクエストを受けた通信装置に個人情報を配信するサーバである。サーバサイドアプリ401は、リクエストを受け取ると個人情報を生成するWebアプリケーションである。
【0053】
利用者は、クライアントサイドアプリ102を利用してサーバ4に個人情報を要求する(ステップS201)。通信部103は受け取ったリクエストを通信制御部104に送信する(ステップS202)。
【0054】
通信制御部104は、リクエストを受け取るとリクエスト元のブラウザのタブ「タブA」を特定する(ステップS203)。さらに、そのタブに関連するポリシを自身が記憶しているか確認する(ステップS204)。
【0055】
本シーケンスでは、ステップS109でポリシを記憶していないため、タブAには、この時点では無制限で通信が許可されている。 そのため、通信制御部104はリクエストをサーバ4へ送信する(ステップS205)。
【0056】
サーバ4はリクエストを受け取ると、サーバサイドアプリ401を利用して個人情報を生成し、通信装置1に返す(ステップS206)。通信制御部104は、個人情報を受け取ると、ステップS205における通信先のリソース(サーバ4もしくはサーバ4が提供する個人情報)に関連するポリシをポリシ保存部105に要求する(ステップS207)。
【0057】
ポリシ保存部105は、要求されるポリシがある場合は、そのポリシを返す(ステップS208)。 本シーケンスでは図3に示す通り、ポリシ保存部105が、サーバ4に関連するポリシとしてサーバ3、サーバ4にアクセスが許可されるポリシを保持している。
【0058】
通信制御部104は、ポリシを受け取ると、ステップS203で特定したリクエスト元のブラウザのタブ「タブA」と関連付けて記憶する(ステップS209)。このとき通信制御部104が、記憶するポリシは図2に示す通りである。図2を参照すると、タブAに関連付けてリソース「サーバ3、サーバ4」が記憶されている。このポリシの意味するところは、この時点で、タブAに通信制御が掛けられており、許可される通信先は、サーバ3、サーバ4に限定されるということである。
【0059】
さらに通信制御部104は、個人情報を通信部103に渡す(ステップS210)。通信部103は、個人情報をクライアントサイドアプリ102に渡す(ステップS211)。
【0060】
次に、「3)クライアントサイドアプリ内に埋め込まれた悪意のあるスクリプトが攻撃者サーバと通信する処理」について図6を用いて説明する。以下、図6の構成について、図4との差分のみ説明する。これは、クライアントサイドアプリ102を生成する図4におけるサーバサイドアプリ301がXSS攻撃に脆弱であることを想定しており、その結果、図6におけるクライアントサイドアプリ102には、悪意のあるスクリプトが埋め込まれている。
【0061】
さらに、このスクリプトは、2)で取得した個人情報を攻撃者サーバ6に送るように動作する。また、攻撃者サーバ6は、クライアントサイドアプリ102から個人情報を受け取るために攻撃者が用意するサーバである。
【0062】
クライアントサイドアプリ102は、悪意のあるスクリプトにより、攻撃者サーバ6にステップS211で取得した個人情報を送信することを要求する(ステップS301)。通信部103は受け取ったリクエストを通信制御部104に送信する(ステップS302)。
【0063】
通信制御部104は、リクエストを受け取るとリクエスト元のブラウザのタブ「タブA」を特定する(ステップS303)。さらに、そのタブに関連するポリシを自身が記憶しているか確認する(ステップS304)。
【0064】
本シーケンスでは、ステップS209でポリシを記憶している。さらに、ステップS302で受け取ったリクエストが、記憶しているポリシで許可される通信かどうかを確認する(ステップS305)。本シーケンスでは、図2に示す通り、タブAにはサーバ3、サーバ4が記憶されている。そのため、攻撃者サーバ6への通信が許可されていないと判断し、リクエストを中止する(ステップS306)。
【0065】
このように、クライアントサイドアプリ102に悪意のあるスクリプトが埋め込まれている場合でも、取得した個人情報を攻撃者サーバ送信すること中止するので個人情報が意図せずに漏えいすることを阻止できる。
【0066】
次に、「4)ブラウザ上のタブの状態遷移」について図7を用いて説明する。この状態遷移図は、図3のポリシを元に作成したものである。
【0067】
まず、利用者がブラウザ上で新規タブを作成した時点では、初期状態となる。初期状態では、ポリシがない。ここで、初期状態からサーバ3と通信(クライアントサイドアプリ102を取得)する。このとき、サーバ3に関連付けられるポリシがないため、初期状態を維持する。つまり、ブラウザがクライアントサイドアプリ102をロードした時点では、リクエスト元のタブに通信制御は適用されない。
【0068】
次に、初期状態からサーバ4と通信(個人情報を取得)するときを考える。ここでは、サーバ4に関連するポリシがあるため、リクエスト元のタブに通信制御が適用されて状態1に遷移する。この状態1は、リクエスト元のタブが通信できるリソースが、サーバ3、サーバ4に限定される、という状態である。
【0069】
また、初期状態からサーバ5に通信するときを考える。このとき、サーバ5に関連するポリシがあるため、リクエスト元のタブに通信制御が適用されて状態2に遷移する。この状態2は、リクエスト元のタブが通信できるリソースが、サーバ3、サーバ4、サーバ5に限定される、という状態である。さらに、状態2の状態からサーバ4にアクセスするときを考える。ここでは、サーバ4に関連するポリシがあるため、リクエスト元のタブに通信制御が適用される。このとき、状態2のポリシと、サーバ4に関連するポリシの共通部分が新たなポリシとなる。このとき、リクエスト元のタブが通信できるリソースは、サーバ3、サーバ4である。つまり、状態1に遷移することになる。
【0070】
このように、リソースにアクセスして初めて、そのリソースに関する通信制御が適用されることになる。以降、異なるリソースにアクセスするたびに、そのリソースに関連したポリシが追加されるようになる。
【0071】
このように、本実施形態では、事前にアプリケーションごとに全てのリンクが指定された属性ファイルを用意せずに、クライアントサイドアプリが利用者にとって漏えいさせたくない情報を取得した場合の情報漏えいを防止できる、という効果を有する。なぜなら、情報にアクセスした時点で、リクエスト元のタブにその情報に関連するポリシに応じた通信制御が適用されるためである。
【0072】
なお、本実施の形態において、通信制御部104は、あるリクエスト元のタブ上のクライアントサイドアプリがページを遷移する場合、そのタブに関連付けて記憶しているポリシを削除してもよい。
【0073】
さらに、本実施の形態において、通信制御部104は、通信したリソースに関連するポリシをリクエスト元のタブと関連付けて記憶したが、これをリクエスト元のウィンドウや、クライアントサイドアプリ102のURLに関連付けて記憶してもよい。
【0074】
さらに、本実施の形態において、通信制御部104が通信先と自身が記憶するポリシを比較する際、それらが完全一致した場合にその通信先へのリクエストを許可することを想定しているが、部分一致した場合にその通信先リクエストを許可するようにしてもよい。
【0075】
さらに、本実施の形態において、通信制御部104は、利用者が新規作成したタブに関連付けられて記憶するポリシとして、あらかじめ定められるポリシを記憶しても構わない。 このとき、上記のタブには、あらかじめ定められたポリシを元に、通信制御が適用されることになる。
【0076】
さらに、本実施の形態において、ブラウザ101は、クライアントサイドアプリを実行する機能のみを持つとしても良い。
【0077】
さらに、本実施の形態において、通信制御部104、ポリシ保存部105は、ブラウザ101に内蔵されているが、それらの構成は、ブラウザ101の外部にあっても良い。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
ここでは、本発明の第1の実施形態で述べた構成及び動作との差分のみ説明する。
【0078】
本発明を実施するための第2の実施の形態における通信装置の構成図は図1と同様である。ここで、通信制御部104は、さらにリソースに関連付けられるポリシに記載される、 ポリシを削除する条件に一致するリソースにアクセスした場合、記憶しているポリシを破棄する。さらに、ポリシ保存部105は、図8に示すようなポリシを持つ。図8を参照すると、通信したリソースに関連付けてポリシを削除する条件として通信先リソースが保存されている。
【0079】
次に、本発明の第2の実施形態の動作を説明する。
本実施形態の全体の動作は
1)通信装置がクライアントサイドアプリをブラウザにロードする処理
2)クライアントサイドアプリがリソースを取得する処理
3)クライアントサイドアプリがページ遷移する際にポリシを操作する処理
から構成される。以下は、上記の処理の詳細について説明する。
【0080】
1)通信装置がクライアントサイドアプリをブラウザにロードする処理について、図4を用いて説明する。第1の実施形態における図4の処理とは、ステップS108〜S109が異なる。
【0081】
ポリシ保存部105は、ポリシを要求されると、サーバ3に関連するポリシを返す。 この時のポリシの例として図8を用いて説明する。図8を参照すると、サーバ3に関連付けられるポリシには、通信が許可されるリソースの記載がない。これは無制限で通信が許可されることを意味する。
【0082】
さらに、ページ遷移時にポリシをKeepする条件として「サーバ7」が記載されている。一方、ページ遷移時にポリシを削除する条件として「*」が記載されている。
前者「サーバ7」の記載は、ページ遷移時、つまりクライアントサイドアプリ102が異なるクライアントサイドアプリに遷移する場合に、通信先のリソースがサーバ7である場合は、リクエスト元のタブに関連付けて記憶するポリシを保持することを意味する。
【0083】
ページを遷移する例としては、クライアントサイドアプリ上のaタグで張られるリンクを利用者がクリックする場合が挙げられる。また、ポリシを削除しない状況として例えば、遷移前のクライアントサイドアプリから異なるクライアントサイドアプリにページする際に、遷移前のアプリが取得した利用者にとって漏えいしたくない情報を、遷移後のページに渡すときが考えられる。このとき、遷移後のアプリは利用者にとって漏えいしたくない情報を持つため、その情報漏えいを防止するために、遷移前のアプリの通信制御がそのまま適用されることが望ましい。
【0084】
一方、後者「*」の記載は所謂ワイルドカード、即ち、任意の文字列にマッチする特殊文字を意味する。従って、この場合、通信先のリソースが「サーバ7」以外の全ての場合に、リクエスト元のタブに関連付けて記憶するポリシを削除することを意味する。これは以降サーバ7にアクセスすると通信制御部104はリクエスト元のタブに関連付けて記憶しているポリシを削除することを意味する(ステップS108)。
【0085】
ポリシを削除しない状況としては、例えば、あるクライアントサイドアプリから異なるクライアントサイドアプリのページに移動(遷移)する場合がある。遷移前のクライアントサイドアプリが取得した情報を、遷移後のクライアントサイドアプリに渡さない場合は、遷移後のクライアントサイドアプリが利用者にとって漏えいさせたくない情報を持たない。このような場合、遷移前のクライアントサイドアプリに適用される通信制御は解除しても良い。
【0086】
通信制御部104は、渡されたポリシをステップS103で特定したタブと関連付けて記憶する。このとき記憶するポリシは図9の通りである。図9を参照すると、タブAに関連付けられて、通信が許可されるリソースは空白であるため無制限で通信を許可されている。さらに、ポリシを削除する条件としてサーバ7が記載されており、サーバ7と通信を行う時点で通信制御部104が記憶するポリシを削除している。
【0087】
次に、2)クライアントサイドアプリがリソースを取得する処理について図5を用いて説明する。第1の実施形態における図5の処理とは、ステップS209が異なる。
【0088】
通信制御部104は、ポリシを受け取ると、既に記憶しているポリシを受け取ったポリシの共通部分を新しいポリシとして記憶する。このとき記憶するポリシは図10のようになる。ここでは、通信が許可されるリソースは、「サーバ3、サーバ4、サーバ7」であり、 ポリシを削除する条件となる通信先リソースは「サーバ7」となる。
【0089】
次に、3)クライアントサイドアプリがページ遷移する際にポリシを操作する処理について図11を用いて説明する。 図11の構成について、図4との違いのみ説明する。サーバ7は、通信装置からのリクエストに対してクライアントサイドアプリを配信するサーバである。
【0090】
サーバサイドアプリ701は、クライアントサイドアプリ102上でaタグなどによりリンクされているWebアプリケーションであり、クライアントサイドアプリ102とは異なるクライアントサイドアプリを生成する。
【0091】
利用者は、クライアントサイドアプリ102のaタグをクリックし、ページを遷移するためのリクエストをサーバ7に送信する(ステップS401)。 図11におけるステップS402〜S404は、図4のステップS102〜S104と同様の処置であるため説明を省略する。 通信制御部104は、記憶しているポリシでアクセスが許可されるリクエストかどうかを確認する(ステップS405)。このとき、記憶しているポリシは図10に示す通りであり、サーバ7へのアクセスは許可されているため、ステップS406に進む。
【0092】
さらに通信制御部104は、このリクエストがページ遷移時のリクエストである場合に、ポリシを操作する条件に一致するかどうかを確認する(ステップS406)。このとき、図10のポリシを再度参照する。
【0093】
このとき、「サーバ7との通信」は、記憶しているポリシを保持する条件「サーバ7:Keep」に合致するため、記憶しているポリシを保持(Keep)する(ステップS407)。図11における以降のステップS408〜S413は、図4のステップS105〜S110と同様の処理であるため説明を省略する。
【0094】
なお、本実施の形態において、ステップS401において、ページを遷移するためのリクエストをサーバ7とは異なるサーバに送信した場合は、記憶しているポリシを削除する。ステップS407において、記憶しているポリシを削除するための条件「*:Delete」と一致するためである。
【0095】
このように、本発明の第2の実施形態では、あるクライアントサイドアプリが異なるクライアントサイドアプリに遷移する際に、リクエスト元のタブに適用される通信制御ポリシを継続して保持する否かを、遷移する際の通信先に応じて制御できるようになる。
(第3の実施形態)
次に、本発明を実施するための第3の実施形態について説明する。
ここでは、第1の実施形態で述べた構成及び動作との差分のみ説明する。
【0096】
図12は本発明の第3の実施形態における通信システムの構成図である。第3の実施の形態における通信システムは、通信装置8とサーバ9、ネットワーク2で構成される。通信装置8における801〜803の構成は、図1の101〜103の構成と同様であるため 説明を省略する。通信装置8は、通信制御部804を備える。
【0097】
通信制御部804は、図1の通信制御部104に加えて、サーバ9から受け取ったHTTPレスポンスからポリシを取得し、そのポリシをタブに関連付けて記憶する。タブに関連付けて記憶されるポリシの例を図13を用いて説明する。
【0098】
図13を参照すると、タブAに関連付けて通信が許可されるリソースとしてサーバ9を記憶している。
【0099】
サーバ9は、通信部901、レスポンス生成部902、個人情報保存部903、ポリシ保存部904を備える。通信部901は、通信装置8とのデータの送受信を行う通信手段である。
【0100】
個人情報保存部903は、サーバ9が管理する利用者の情報(個人情報)である。ポリシ保存部904は、個人情報に関連付けて記録される通信制御ポリシである。このポリシについて図14を用いて説明する。
【0101】
図14では、個人情報保存部903に保存されている個人情報に関連付けて通信が許可されるリソースの一覧が記載されている。ここでは、サーバ9がアクセスが許可されるリソースとなる。
【0102】
次に、本発明の第3の実施形態の動作について、通信装置が個人情報を取得する処理の詳細について説明する。
【0103】
クライアントサイドアプリ802がサーバ9から個人情報を取得する処理について図15を用いて説明する。
【0104】
図15のステップS501〜S505は、図5のS201〜S205と同様の処理であるため説明を省略する。通信部901は、リクエストを受け取ると、リクエストをレスポンス生成部902に渡す(ステップS506)。レスポンス生成部902は、個人情報保存部903に保存すべき個人情報を取得し保存する(ステップS507)。
【0105】
さらにレスポンス生成部902は、個人情報保存部903に保存された個人情報に関連するポリシをポリシ保存部904に要求する(ステップS508)。ポリシ保存部904は、関連するポリシがある場合は、そのポリシを返す(ステップS509)。
図14を参照すると、このときポリシ保存部904は、アクセスが許可されるリソースのリストとして、「サーバ9」を返す。レスポンス生成部902は、ステップS507で取得して個人情報保存部903に保存された個人情報とステップS509で取得したポリシを元に、レスポンスを生成する(ステップS510)。レスポンスメッセージにポリシを記載する方法としては、例えばHTTPレスポンスヘッダに記載する方法がある。
【0106】
具体的には、図16を用いて説明する。図16を参照すると、HTTPレスポンスヘッダに、アクセス許可リストを記載する拡張ヘッダとして「Access-Permit」が追加されている。さらに、この拡張ヘッダに記載される内容は、ステップS509で取得したポリシに記載されるアクセスが許可されるリソースのリストである「サーバ9」が記載される。
【0107】
この「サーバ9」はサーバ9のURLであり「http://server9.com」が記載されている。 また別の方法として、例えばHTTPレスポンスのボディ内に記載する方法もある。 具体的には、図17を用いて説明する。図17を参照すると、HTTPレスポンスのボディの、先頭にアクセス許可リストを記載している。また、そのときの記載の内容は、ステップS509で取得したポリシに記載されるアクセスが許可されるリソースのリストである 「サーバ9」が記載される。この「サーバ9」はサーバ9のURLであり「http://server9.com」が記載されている。
【0108】
さらに、レスポンス生成部902は、レスポンスメッセージを通信部301に渡す(ステップS511)。通信部901は、レスポンスメッセージを通信装置8に返す(ステップS512)。
【0109】
通信制御部804は、レスポンスメッセージにポリシが記載されている場合は、そのポリシをメッセージから抜き出し、そのポリシをリクエスト元のタブと関連付けて記憶する。 このとき、既に記憶しているポリシがある場合は、既に記憶しているポリシとメッセージから抜き出したポリシとの共通部分を新たなポリシとしてリクエスト元のタブ「タブA」に関連付けて記憶する。
【0110】
本動作シーケンスでは、通信制御部804はポリシを記憶していないため、取得したポリシを新たなポリシとして記憶する(ステップS513)。ここで、通信制御部804は、レスポンスメッセージからポリシを抜き出すために、サーバ9がレスポンスメッセージにポリシを記載する方法を知っているものとする。
【0111】
また、このとき通信制御部804が記憶したポリシについて、図13を用いて説明する。図13に記載される通り、通信制御部804は、タブAに関連付けてアクセスが許可されるリソースのリストとして、「サーバ9」を記憶していることが分かる。さらに通信制御部804は、ポリシを抜き出した後のレスポンスメッセージを通信部803に渡す(ステップS514)。
【0112】
このように、本実施の形態では、通信装置は、通信するリソースごとにポリシを自身で保存することなく、アクセスするリソースに応じた通信制御が実現できる。
【0113】
本実施の形態において、ステップS507においてレスポンス生成部902がクライアントサイドアプリ(HTML)を取得する場合、そのHTML内、例えばヘッダ内に、もともと通信制御ポリシが記載されていてもよい。このとき、ポリシ保存部904はサーバ9の構成として不要であり、ステップS508およびステップS509も不要となる。
【0114】
また、本実施の形態において、ステップS510においてレスポンス生成部902がもともと定められた通信制御ポリシを、HTTPレスポンスヘッダに記述してもよい。
【0115】
このとき、ポリシ保存部904はサーバ9の構成として不要であり、ステップS508およびステップS509も不要となる。
【0116】
また本実施の形態では、サーバがリソースに紐づいたポリシを配布する方法について記載しているが、プロキシサーバがリソースに紐づいたポリシを通信装置に配布する方法でも良い。具体的には、サーバからのレスポンスをプロキシサーバが受け取ると、そのレスポンスに関連するポリシを含めて通信装置に返す、としても良い。
(第4の実施形態)
次に、本発明を実施するための第4の実施形態について説明する。
【0117】
ここでは、本発明の第1の実施形態の構成及び動作との差分のみ説明する。
【0118】
本実施の形態における通信装置の構成について、図1を用いて説明する。図1における通信制御部104は、本発明の第1の実施形態における機能に加えて、リソースへアクセスする際のリクエストがポリシに違反すると判断した場合に、ブラウザを介して利用者に警告メッセージを表示させる。あるいは、外部リソースに対して警告メッセージを送信する。ここで、外部リソースとして、この通信装置の管理会社などが該当するが、これに限定するものではない。
【0119】
動作シーケンスについて図6を用いて説明する。図6におけるステップS305において、 通信制御部104は、クライアントサイドアプリ102からのリクエストが、 ポリシに違反すると判断し、このリクエストを中止する。このとき、通信制御部104はさらに、ブラウザ101上に警告メッセージを表示する。あるいは、外部のリソースにポリシ違反があったことを意味するメッセージを送信する。このとき外部のリソースとして、クライアントサイドアプリ102の配信サーバであるサーバ3や、通信装置1の管理会社などが考えられる。
【0120】
このように、ポリシに違反する通信が起こった場合に、利用者やこの通信装置の管理会社に通知することができる。
(第5の実施形態)
次に、本発明を実施するための第5の実施形態について説明する。
【0121】
図18は本発明の第5の実施形態の通信装置の構成図である。
【0122】
通信装置1801は、リソースにアクセスする通信手段1802と、アクセス先のサーバから通信制御ポリシを取得する通信制御ポリシ取得手段1803とを有する。更に、通信装置1801は、前記通信手段がアクセスするリソースを前記通信制御ポリシに基づいて制限する通信制御部1804と、を有する。通信手段1802がリソースにアクセスする時に該通信制御ポリシ取得手段1803が該リソースに関連付けられる通信制御ポリシを取得し、通信制御手段1804が通信手段のアクセスするリソースを該通信制御ポリシに基づいて制限する。
【0123】
これによって、クライアントサイドアプリが利用者にとって漏えいさせたくない情報を取得した時点で、そのアプリに通信制御を適用する。従って事前にアプリケーションごとに全てのリンクを指定した属性ファイルを用意することなく、個人情報などの重要な情報が漏えいすることを防止できる。
【0124】
なお、ここまで説明した各実施の形態では、通信装置やサーバは、専用の装置を想定したが、次のようなものでもよい。即ち例えば各種データ処理を行うパーソナルコンピュータ装置に、本例に相当する処理を行うボードやカードなどを装着し、各処理を、コンピュータ装置側で実行させる。このようにして、その処理を実行するソフトウェアをパーソナルコンピュータ装置に実装させて実行する構成としても良い。
【0125】
そのパーソナルコンピュータ装置などのデータ処理装置に実装されるプログラムについては、光ディスク,メモリカードなどの各種記録(記憶)媒体を介して配付しても良く、或いはインターネットなどの通信手段を介して配付しても良い。
【0126】
以上に述べた実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、
を有することを特徴とする通信装置。
(付記2)
前記通信装置は更に、前記通信制御ポリシを保存するポリシ保存部を有し、前記通信制御部は前記通信制御ポリシを前記通信制御ポリシ保存部から取得する、
ことを特徴とする付記1の通信装置。
(付記3)
前記通信制御部は、過去に前記通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信部がアクセスするリソースを限定する
ことを特徴とする、付記2記載の通信装置。
(付記4)
前記マージは、過去に通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、付記3記載の通信装置。
(付記5)
取得した前記通信制御ポリシに応じて前記取得した通信制御ポリシを破棄または保持する、前記付記1乃至4のいずれかに記載された通信装置。
(付記6)
前記通信部の通信が通信制御ポリシ違反であると判断した場合に 利用者または外部サーバに対して警告メッセージを表示または送信することを特徴とする、付記1乃至5のいずれかに記載された通信装置。
(付記7)
リソースにアクセスする通信工程と、
前記通信工程が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得工程と、
前記通信工程がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御工程と、
を有することを特徴とする通信制御方法。
(付記8)
前記通信制御方法は更に、前記通信制御ポリシを保存するポリシ保存工程を有し、前記通信制御ポリシを前記ポリシ保存工程から取得する、
ことを特徴とする付記7の通信制御方法。
(付記9)
前記通信制御工程は、過去に通信工程が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信工程がアクセスするリソースを限定する
ことを特徴とする、付記8記載の通信制御方法。
(付記10)
前記マージは、過去に通信工程が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、付記9記載の通信制御方法。
(付記11)
前記通信制御ポリシに応じて前記取得した通信制御ポリシを破棄または保持する、
ことを特徴とする前記付記7乃至10のいずれかに記載された通信制御方法。
(付記12)
前記通信工程の通信が通信制御ポリシ違反であると判断した場合に 利用者または外部サーバに対して警告メッセージを表示または送信する
ことを特徴とする、付記7乃至11のいずれかに記載された通信制御方法。
(付記13)
リソースにアクセスする通信ステップと、
前記通信ステップが前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得ステップと、
前記通信ステップがアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御ステップと、
をコンピュータに実行させることを特徴とするプログラム。
(付記14)
前記通信制御ステップは、過去に通信ステップが通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信ステップがアクセスするリソースを限定する
ことを特徴とする、付記13記載のプログラム。
(付記15)
前記マージは、過去に通信ステップが通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、付記14記載のプログラム。
(付記16)
データを送受信するサーバ及び通信装置からなる通信システムであって、
前記通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有し、
前記サーバは、通信装置のリクエストに応じて対応するリソース及びリソースに関連する通信制御ポリシを前記通信装置に返すレスポンス生成部と、
を有することを特徴する通信システム。
【符号の説明】
【0127】
1 通信装置
101 ブラウザ
102 クライアントサイドアプリ
103 通信部
104 通信制御部
105 ポリシ保存部
2 ネットワーク
3 サーバ
301 サーバサイドアプリ
4 サーバ
401 サーバサイドアプリ
5 サーバ
6 攻撃者サーバ
7 サーバ
701 サーバサイドアプリ
8 通信装置
801 ブラウザ
802 Webアプリ
803 通信部
804 通信制御部
9 サーバ
901 通信部
902 レスポンス生成部
903 個人情報保存部
904 ポリシ保存部
【技術分野】
【0001】
本発明はWebアプリケーションの脆弱性が原因で利用者の情報が漏えいすることを防ぐ通信装置、方法、プログラムに関する。
【背景技術】
【0002】
近年では、インターネット上の複数のサービスや、利用者の情報などをマッシュアップしたサービスが広く利用されている。マッシュアップとはWeb上に提供されている複数の異なる情報やサービス、コンテンツなどを組み合わせて、新しいサービス等を形作ることである。これらのサービスは、Webアプリケーションとして提供され、利用者はWebブラウザを使ってそれらのWebアプリケーションを利用する。ここで、Webアプリケーションは、Webサーバ上で動作するサーバサイドのプログラムと、利用者のブラウザ上で動作するクライアントサイドのプログラムとから構成される。
【0003】
クライアントサイドのプログラムは主にHTML(Hypertext Markup Language)やJavaScriptで実装される。また、サーバサイドのプログラムはJava(登録商標)やPHP(Hypertext Preprocessor)などで実装される。
【0004】
マッシュアップサービスの例として、利用者の周辺の地図上にレストランの情報をマッピングして、利用者に提示するアプリケーションがある。このアプリケーションは、レストランの情報を提供するサービスと、座標から地図情報を提供するサービスと、そして利用者の現在位置情報とをマッシュアップする。
【0005】
このようなマッシュアップサービスは、クライアントサイドのプログラム(以降、クライアントサイドアプリと呼ぶ)とサーバサイドのプログラム(以降、サーバサイドアプリと呼ぶ)との間で様々な情報を送受信する。前述の例では、まず利用者のブラウザ上のクライアントサイトアプリがレストラン情報を提供するサーバサイドアプリからレストラン情報を取得する。同時に利用者の通信端末(ローカルサーバ)のサーバサイドアプリから利用者の現在位置情報を取得する。最後に、クライアントアプリは取得した上記2つの情報を地図情報を提供するサーバサイドアプリに送り、サーバサイドアプリから地図情報を取得する。
【0006】
このとき、利用者の通信端末上で実行されるアプリケーションやインターネット上のサービス間で送受信される情報の中には、利用者にとって漏えいさせたくない重要な情報、特に個人情報が含まれることがある。前述の例では、利用者の通信端末が個人情報を持つ場合がある。また、インターネット上のサービスが個人情報を持つ場合も考えられる。
【0007】
このような個人情報をマッシュアップサービスで利用する場合、その個人情報は信頼できるアプリケーションに対してのみ提供されなければならない。前述の例でいうと、通信端末のサーバサイドアプリは、クライアントサイドアプリから要求があると、そのクライアントサイドアプリが信頼できるアプリケーションである場合にのみ、個人情報を渡すようにしなければならない。
【0008】
そのため、個人情報の要求を受け付けるサーバサイドアプリは、個人情報を要求するクライアントサイドアプリを認証することが一般的である。
【0009】
サーバサイドアプリがクライアントサイドアプリを認証する方法の例として、サーバサイドアプリがクライアントサイドアプリから受け取る要求メッセージに含まれるRefererを確認する方法が考えられる。Refererとは、あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのことである。Refererには、クライアントサイドアプリのダウンロード元のサーバ識別子が記載されている。このサーバ識別子が信頼できるサーバを指す場合は、サーバサイドサプリはこのクライアントサイドアプリを信頼する。つまり、クライアントサイドアプリの配信元サーバが信頼できる場合、そのクライアントサイドアプリも信頼することになる。
【0010】
このように、個人情報を管理するサーバサイドアプリは、クライアントサイドアプリを認証することで、自身が管理する個人情報が信頼できないアプリケーションに漏えいすることを防止している。
【0011】
しかし、信頼できるクライアントサイドアプリに、攻撃者が意図した悪意のあるスクリプトが埋め込まれている場合は、攻撃者に個人情報を奪取される危険性がある。このような状況は、クロスサイトスクリプティング(XSS: Cross Site Scripting)攻撃に代表されるようなサーバサイドアプリを対象とした攻撃によって、起こり得る。XSS攻撃とは、攻撃者がサイト間を横断して悪意のあるスクリプトを混入させて、脆弱なアプリケーション上で不正なスクリプトを実行させることである。個人情報が攻撃者に奪取される具体的な例を、以下にて説明する。
【0012】
あるサーバサイドアプリは、利用者の通信端末からの要求に応じて動的にクライアントサイドアプリを生成して、通信端末に返すという動作をするものとする。具体的には、サーバサイドアプリは、利用者の通信端末から何らかの文字列、例えばユーザ名などを受け取ると、ユーザ名をクライアントサイドアプリに含めて利用者の通信端末に返す。さらに、このサーバサイドアプリは、利用者の通信端末内にあるローカルサーバ上のサーバサイドアプリから信頼されていることとする。つまり、サーバサイドアプリが生成するクライアントサイドアプリも同様に信頼されることになる。
【0013】
ここで、このサーバサイドアプリが利用者から受け取る文字列が不正な文字列でないことを確認しない場合、このサーバサイドアプリはXSS攻撃に脆弱となる。攻撃者はこのXSS攻撃に脆弱なサーバサイドアプリを悪用して、利用者の通信端末に悪意のあるスクリプトを含んだクライアントサイドアプリをロードさせるように仕向けることができるからである。攻撃は次のように行われる。攻撃者は自身が用意したサイト上に、リンクを用意する。
【0014】
このリンクは、前述のXSS攻撃に脆弱なサーバサイドアプリのURL(Uniform Resource Locator)であり、さらにこのURLには、パラメータとして、悪意のあるスクリプトを含んでいる。利用者が前述のリンクをクリックすることで、サーバサイドアプリに悪意のあるスクリプトを送ることになる。その結果、サーバサイドアプリは、利用者から受け取った悪意のあるスクリプトを含むクライアントサイドアプリを生成し、利用者の通信端末に返すことになる。
【0015】
このとき、通信端末が受け取るクライアントサイドアプリが含むスクリプトは2つの動作をする。1つは、通信端末のサーバサイドアプリから個人情報を取得するスクリプト(スクリプト1)と、その情報を攻撃者サイトに送信するスクリプト(スクリプト2)である。
【0016】
上記スクリプトは、通信端末上のブラウザにロードされると同時に実行される。まず、スクリプト1により通信端末は、ローカルサーバ上のサーバサイドアプリに個人情報を要求する。クライアントサイドアプリはもともとこのサーバサイドアプリから信頼されるアプリであるため、ローカルサーバ上のサーバサイドアプリは通信端末に個人情報に返す。 次にスクリプト2により通信端末は、スクリプト1により取得した個人情報を攻撃者サイトに送信する。このようにして、攻撃者は利用者の個人情報を奪取することに成功する。
【0017】
上記のような、サーバサイドアプリの脆弱性が原因となる個人情報の漏えいは何らかの方法で防ぐ必要がある。この問題に対応する為の関連技術として、通信端末がクライアントサイドアプリの通信制御を行うことが考えられる。例えば、通信端末がクライアントサイドアプリの正しい通信先のリストを把握しておき、このアプリがそのリスト以外と通信しようとすると、その通信を中止するという方法がある。その結果、信頼できるクライアントサイドアプリに悪意のあるスクリプトが含まれていて、このスクリプトによって通信端末が攻撃者サイトに個人情報を送信しようとしても、その通信を止めることができる。通信端末は、攻撃者サイトへの通信は通信先のリストに記載のないため、その通信が不正な通信であると判断できるからである。
【0018】
上記の関連した技術が記載された文献として、非特許文献1がある。非特許文献1には、通信端末内のアプリケーションマネージャがJavaアプリケーションの属性ファイルを参照することで、アプリケーションに通信制限を掛けることができるとしている。具体的には、属性ファイルにはJavaアプリケーションの通信先のリストが記載されており、そのアプリケーションがそのリストに記載されない通信先と通信しようとすると、アプリケーションマネージャがその通信を中止できる技術が記載されている。
【0019】
また、関連した技術として下記特許文献1には、次のような技術が記載されている。即ち、ローカルネットワークを介して他のネットワークに接続する携帯端末上で動作するアプリケーションが、ローカルネットワークから機密情報を流出させることを防ぐ技術である。この関連技術では通信端末が、アプリケーションが実行する通信を監視する通信監視手段とアプリケーションの通信において接続されたネットワークの履歴を示す通信履歴情報を記録する。同時に且つ該通信履歴情報に応じて前記アプリケーションによるネットワークへの接続の可否を判定する通信制御手段とを備えている。
【0020】
また、関連した技術として下記特許文献2には、次の様な技術が記載されている。即ち、
各通信装置の要求に基づいた通信転送ポリシを通信制御装置に反映させることのできる通信装置を提供するものである。
【先行技術文献】
【非特許文献】
【0021】
【非特許文献1】JSR 118 Expert Group, Java Community Process「Mobile Information Device Profile for Java. 2 Micro Edition」(P431〜P452)[online].(retrieved on 2010-03-16)Retrieved from the Internet: <URL:http://www.nada.kth.se/projects/proj03/minime/other/midp-2_0-fr-spec.pdf>.
【特許文献】
【0022】
【特許文献1】特開2008−191862号公報
【特許文献2】特開2005―217828号公報
【発明の概要】
【発明が解決しようとする課題】
【0023】
しかし、この非特許文献1の技術をクライアントサイドのWebアプリケーションの通信制御として適用することは困難である。なぜなら、クライアントサイドアプリでは不特定多数のサイトへのリンクを持つことが多いため、先行技術1のようにWebアプリケーションが通信し得る全ての通信先を事前に指定することは現実的でないためである。不特定多数のサイトへのリンクとして、関連サイトへのリンクや、広告によるリンクが挙げられる。これらのリンクの総数は多数であり、アプリケーションごとに全てのリンクを指定した属性ファイルを用意することはアプリケーション開発者に負担がかかる。
【0024】
もともとクライアントサイドアプリに通信制限を掛ける理由は、利用者にとって漏えいさせたくない情報を守ることである。そのため、クライアントサイドアプリが上記の情報を取得する前であれば、そのアプリに通信制限を掛ける必要がない。つまり、漏えいさせたくない情報を持たないクライアントサイドアプリには通信制限を掛けず、上記の情報を取得したときに通信制限を掛けることが望ましいということになる。しかし、先行技術1ではそのような通信制御を実現できない。
【0025】
また特許文献1では、通信制御をかけるためのポリシを通信履歴DBに蓄積する必要があるので、通信装置の資源を圧迫するという不具合を生じる可能性がある。
【0026】
また、特許文献2では、ある通信装置が起動したとき、あるいは通信装置が特定のサービスを起動した際に対応する通信装置にポリシが適用されるというものであり、アクセスするリソースの種別等に拘わらずポリシが適用されてしまうという無駄が生じる恐れがある。
【0027】
本発明はクライアントサイドアプリの通信制御に利用でき、そのアプリが個人情報などの重要な情報を取得した場合に、上記のような不具合無く個人情報が漏えいすることを防止できる通信装置等を提供することを目的としている。
【課題を解決するための手段】
【0028】
本発明の通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有する。
【0029】
また、本発明の通信制御方法は、リソースにアクセスする通信工程と、
前記通信工程が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得工程と、
前記通信工程がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御工程と、を有する。
【0030】
また、本発明のプログラムは、リソースにアクセスする通信ステップと、
前記通信ステップが前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得ステップと、
前記通信ステップがアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御ステップと、をコンピュータに実行させる。
【0031】
また、本発明の通信システムはデータを送受信するサーバ及び通信装置からなる通信システムであって、
前記通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有し、
前記サーバは、通信装置のリクエストに応じて対応するリソース及びリソースに関連する通信制御ポリシを前記通信装置に返すレスポンス生成部と、
を有する。
【発明の効果】
【0032】
本発明では、事前にアプリケーションごとに全てのリンクを指定した属性ファイルを用意することなく、個人情報などの重要な情報が漏えいすることを防止できる通信装置、方法、プログラムを提供することを提供することが出来る。
【図面の簡単な説明】
【0033】
【図1】本発明の第1の実施形態における通信装置を示す構成図である。
【図2】本発明の第1の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図3】本発明の第1の実施形態におけるポリシ保存部が保存するポリシの例である。
【図4】本発明の第1の実施形態における通信装置がクライアントサイドアプリをブラウザにロードする処理を示す動作シーケンスである。
【図5】本発明の第1の実施形態におけるクライアントサイドアプリがリソースにアクセスする処理を示す動作シーケンスである。
【図6】本発明の第1の実施形態におけるクライアントサイドアプリ内に埋め込まれた悪意のあるスクリプトが攻撃者サーバと通信する処理を示す動作シーケンスである。
【図7】本発明の第1の実施形態における状態遷移図である。
【図8】本発明の第2の実施形態におけるポリシ保存部が保存するポリシの例である。
【図9】本発明の第2の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図10】本発明の第2の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図11】本発明の第2の実施形態におけるクライアントサイドアプリがページ遷移する際にポリシを操作する処理を示す動作シーケンスである。
【図12】本発明の第3の実施形態における通信システムの構成図である。
【図13】本発明の第3の実施形態における通信制御部がリクエスト元のタブと関連付けて記憶しているポリシの例である。
【図14】本発明の第3の実施形態におけるサーバが保存するポリシの例である。
【図15】本発明の第3の実施形態における通信装置上のクライアントサイドアプリがリソースを取得する処理を示す動作シーケンスである。
【図16】本発明の第3の実施形態におけるレスポンスヘッダの例である。
【図17】本発明の第3の実施形態におけるレスポンスメッセージボディの例である。
【図18】本発明の第5の実施形態における通信装置の構成図である。
【発明を実施するための形態】
【0034】
(第1の実施形態)
次に、本発明の第1の実施形態について図面を参照して詳細に説明する。
図1は本発明の第1の実施形態における通信装置の構成図である。通信装置1は、ブラウザ101を持ち、ブラウザ101はクライアントサイドアプリ102、通信部103、通信制御部104、およびポリシ保存部105から構成される。
【0035】
通信装置1は、例えば、ノートPC、携帯電話、PDAなどのサーバとの通信手段を持つ通信端末がこれに該当する。ブラウザ101は、通信装置がサーバからダウンロードしたWebアプリケーションを実行し、ユーザインターフェイスを持つ。例として、Firefox(登録商標)、Internet Explorer(登録商標)、Safari(登録商標)などが挙げられる。クライアントサイドアプリ102は、HTMLやJavaScript(登録商標)などの言語で記述されるアプリケーションである。
【0036】
通信部103は、リソースとの通信手段である。ここで、リソースとは、サーバ、サーバサイドアプリ、サーバが管理する情報などを示す。通信制御部104は、ブラウザが送信するリクエストをフックする。さらに、自身が記憶している通信制御ポリシを確認して、そのリクエストが許可されない通信である場合はその通信を中止する。
【0037】
このポリシの例を図2を用いて説明する。図2を参照すると、ブラウザのタブAに関連付けられて通信が許可されるリソースが通信制御部104に記憶されている。これは、タブAからのリクエストにサーバ3、サーバ4への通信が許可されていることを示す。このタブとは、ブラウザ101の1つのウィンドウに複数のアプリケーションがロードされる場合に、各アプリケーションを区別するために用いられるものである。「サーバ3、サーバ4」はリソースの識別子であり、ホスト名やURLがこれに該当する。例えば、ホスト名として「server1、localhost・・・」が、 URLとして「http://server1.com、http://localhost.local、http://server1.com /server1.cgi、http://server1.com/server1.cgi?parama=123、http: //server1.com/*」などが挙げられる。
【0038】
さらに、通信装置がリソースにアクセスする度に、そのリソースに関連するポリシを、ポリシ保存部105から取り出し、ブラウザのタブと紐づけし、関連付けて記憶する。このとき、過去に記憶しているポリシがある場合は、記憶しているポリシと最後にアクセスしたリソースに関連する通信制御ポリシとをマージしたポリシを最新のポリシとして記憶する。
【0039】
マージする例としては、2つのポリシの共通部分を取る方法が考えられる。例えば、通信制御部104が既に記憶しているポリシにより通信を許可されるリソースがサーバ3、サーバ4、サーバ5であり、さらに、通信制御部104がポリシ保存部から取り出したポリシにより通信を許可されるリソースが、サーバ3、サーバ4である場合を考える。このとき、上記2つのポリシの共通部分により通信を許可されるリソースは、サーバ3、サーバ4になる。
【0040】
なお、通信制御部104は、利用者が新規作成したタブに関連付けられて記憶しているポリシを持たない。そのため、利用者が新規作成したタブには通信制御は適用されないことになる。前述のリソースに関連付けられて記憶されているポリシは、ポリシ保存部105が保存している。
【0041】
このポリシについて図3を用いて説明する。図3を参照すると、リソースに関連付けられて通信が許可されるリソースが保存されている。具体的には、リソース「サーバ4」に関連付けられて、通信が許可されるリソース「サーバ3、サーバ4」が保存されている。このポリシの意味するところは、サーバ4と通信した場合、それ以降はサーバ3もしくはサーバ4とのみ通信が可能になる、ということである。
【0042】
次に、動作シーケンス図を参照して本実施の形態の全体の動作について詳細に説明する。
本実施の形態の全体の動作は、
1)通信装置がクライアントサイドアプリをブラウザにロードする処理
2)クライアントサイドアプリがリソースを取得する処理
3)クライアントサイドアプリ内に埋め込まれた悪意のあるスクリプトが攻撃者サーバと通信する処理
4)ブラウザ上のタブの状態遷移
の4つから構成される。
以下、それぞれの処理の詳細について説明する。
【0043】
まず、「1)通信装置がクライアントサイドアプリをブラウザにロードする処理」について図4を用いて説明する。以下、図4の構成について、図1との差分のみ説明する。ネットワーク2は、通信装置1とサーバ3の間で送受信されるデータの伝送経路であり、無線LAN、基地局、ルータ、などネットワーク装置で構成される。サーバ3は、リクエストを受けた通信装置にクライアントサイドアプリ102を配信するサーバである。サーバサイドアプリ301は、サーバ3上に配置されるWebアプリケーションであり、利用者からリクエストを受けるとクライアントサイドアプリ102を生成するアプリケーションである。
【0044】
利用者は、ブラウザ101を起動し(タブが新規に作成される)、サーバ3にクライアントサイドアプリ102を要求する(ステップS101)。通信部103は、クライアントサイドアプリ102を取得するためのリクエストを通信制御部104に送信する(ステップS102)。 通信制御部104は、リクエストを受け取るとリクエスト元のブラウザのタブを特定する。ここでは、リクエスト元のタブを「タブA」とする(ステップS103)。
【0045】
さらに、通信制御部104は、そのタブAに関連するポリシを自身が記憶しているか確認する(ステップS104)。このとき、ポリシを記憶していない場合は、リクエストをネットワーク2を介してサーバ3に送信する。ポリシを記憶している場合は、処理が分岐するが、説明は後述する。
【0046】
本実施の形態では、利用者は新規にタブを作成しているため、ステップS104では、このタブAに関連するポリシはない。そのため、リクエストをサーバ3に送信する(ステップS105)。サーバ3はリクエストを受け取るとサーバサイドアプリ301を用いて、クライアントサイドアプリ102を生成し、ネットワーク2を介して通信装置1に返す(ステップS106)。
【0047】
通信制御部104は、サーバ3からのレスポンスを受け取ると、受け取ったクライアントアプリ102をブラウザにロードする。同時に、通信制御部104は、ポリシ保存部105にステップS105におけるリクエストの送信先(サーバ3もしくは、サーバ3のWebアプリ102)に関連するポリシを要求する(ステップS107)。
【0048】
ポリシ保存部105は、サーバ3に関するポリシがある場合は、それを返す。 また、サーバ3に関するポリシがない場合は、関連するポリシがないことを通知する。本シーケンスでは、サーバ3に関連するポリシはないため、ポリシがないことを通知する(ステップS108)。
【0049】
通信制御部104は、ポリシを受け取った場合は、ポリシに記載される通信を許可されるリソースをステップS103で特定したリクエスト元タブと関連付けて記憶する。このとき、既にリクエスト元のタブに関連付けるポリシがある場合は、そのポリシとステップS108で受け取ったポリシとの共通部分を新たなポリシとして、リクエスト元のタブに関連付けて記憶する。
【0050】
例えば、既にリクエスト元のタブに関連付けられているポリシにより通信を許可されるリソースがサーバ3、サーバ4、サーバ5であり、さらに、ステップS108で受け取ったポリシにより通信を許可されるリソースが、サーバ3、サーバ4である場合を考える。このとき、リクエスト元のタブに関連付けて記憶されるリソースは、サーバ3、サーバ4になる。また、ステップS108でポリシのない通知を受けとる場合は、何もしない。本シーケンスでは、ポリシがない通知を受け取るため、ここでは何も処理しない(ステップS109)。
【0051】
さらに、通信制御部104は、通信部103にクライアントサイドアプリ102を渡す(ステップS110)。
【0052】
次に、「2)クライアントサイドアプリがリソースを取得する処理」について図5を用いて説明する。以下、図5の構成について、図4との差分のみ説明する。クライアントサイドアプリ102は、1)において、サーバ3からロードしたクライアントサイドのWebアプリケーションである。サーバ4は、リクエストを受けた通信装置に個人情報を配信するサーバである。サーバサイドアプリ401は、リクエストを受け取ると個人情報を生成するWebアプリケーションである。
【0053】
利用者は、クライアントサイドアプリ102を利用してサーバ4に個人情報を要求する(ステップS201)。通信部103は受け取ったリクエストを通信制御部104に送信する(ステップS202)。
【0054】
通信制御部104は、リクエストを受け取るとリクエスト元のブラウザのタブ「タブA」を特定する(ステップS203)。さらに、そのタブに関連するポリシを自身が記憶しているか確認する(ステップS204)。
【0055】
本シーケンスでは、ステップS109でポリシを記憶していないため、タブAには、この時点では無制限で通信が許可されている。 そのため、通信制御部104はリクエストをサーバ4へ送信する(ステップS205)。
【0056】
サーバ4はリクエストを受け取ると、サーバサイドアプリ401を利用して個人情報を生成し、通信装置1に返す(ステップS206)。通信制御部104は、個人情報を受け取ると、ステップS205における通信先のリソース(サーバ4もしくはサーバ4が提供する個人情報)に関連するポリシをポリシ保存部105に要求する(ステップS207)。
【0057】
ポリシ保存部105は、要求されるポリシがある場合は、そのポリシを返す(ステップS208)。 本シーケンスでは図3に示す通り、ポリシ保存部105が、サーバ4に関連するポリシとしてサーバ3、サーバ4にアクセスが許可されるポリシを保持している。
【0058】
通信制御部104は、ポリシを受け取ると、ステップS203で特定したリクエスト元のブラウザのタブ「タブA」と関連付けて記憶する(ステップS209)。このとき通信制御部104が、記憶するポリシは図2に示す通りである。図2を参照すると、タブAに関連付けてリソース「サーバ3、サーバ4」が記憶されている。このポリシの意味するところは、この時点で、タブAに通信制御が掛けられており、許可される通信先は、サーバ3、サーバ4に限定されるということである。
【0059】
さらに通信制御部104は、個人情報を通信部103に渡す(ステップS210)。通信部103は、個人情報をクライアントサイドアプリ102に渡す(ステップS211)。
【0060】
次に、「3)クライアントサイドアプリ内に埋め込まれた悪意のあるスクリプトが攻撃者サーバと通信する処理」について図6を用いて説明する。以下、図6の構成について、図4との差分のみ説明する。これは、クライアントサイドアプリ102を生成する図4におけるサーバサイドアプリ301がXSS攻撃に脆弱であることを想定しており、その結果、図6におけるクライアントサイドアプリ102には、悪意のあるスクリプトが埋め込まれている。
【0061】
さらに、このスクリプトは、2)で取得した個人情報を攻撃者サーバ6に送るように動作する。また、攻撃者サーバ6は、クライアントサイドアプリ102から個人情報を受け取るために攻撃者が用意するサーバである。
【0062】
クライアントサイドアプリ102は、悪意のあるスクリプトにより、攻撃者サーバ6にステップS211で取得した個人情報を送信することを要求する(ステップS301)。通信部103は受け取ったリクエストを通信制御部104に送信する(ステップS302)。
【0063】
通信制御部104は、リクエストを受け取るとリクエスト元のブラウザのタブ「タブA」を特定する(ステップS303)。さらに、そのタブに関連するポリシを自身が記憶しているか確認する(ステップS304)。
【0064】
本シーケンスでは、ステップS209でポリシを記憶している。さらに、ステップS302で受け取ったリクエストが、記憶しているポリシで許可される通信かどうかを確認する(ステップS305)。本シーケンスでは、図2に示す通り、タブAにはサーバ3、サーバ4が記憶されている。そのため、攻撃者サーバ6への通信が許可されていないと判断し、リクエストを中止する(ステップS306)。
【0065】
このように、クライアントサイドアプリ102に悪意のあるスクリプトが埋め込まれている場合でも、取得した個人情報を攻撃者サーバ送信すること中止するので個人情報が意図せずに漏えいすることを阻止できる。
【0066】
次に、「4)ブラウザ上のタブの状態遷移」について図7を用いて説明する。この状態遷移図は、図3のポリシを元に作成したものである。
【0067】
まず、利用者がブラウザ上で新規タブを作成した時点では、初期状態となる。初期状態では、ポリシがない。ここで、初期状態からサーバ3と通信(クライアントサイドアプリ102を取得)する。このとき、サーバ3に関連付けられるポリシがないため、初期状態を維持する。つまり、ブラウザがクライアントサイドアプリ102をロードした時点では、リクエスト元のタブに通信制御は適用されない。
【0068】
次に、初期状態からサーバ4と通信(個人情報を取得)するときを考える。ここでは、サーバ4に関連するポリシがあるため、リクエスト元のタブに通信制御が適用されて状態1に遷移する。この状態1は、リクエスト元のタブが通信できるリソースが、サーバ3、サーバ4に限定される、という状態である。
【0069】
また、初期状態からサーバ5に通信するときを考える。このとき、サーバ5に関連するポリシがあるため、リクエスト元のタブに通信制御が適用されて状態2に遷移する。この状態2は、リクエスト元のタブが通信できるリソースが、サーバ3、サーバ4、サーバ5に限定される、という状態である。さらに、状態2の状態からサーバ4にアクセスするときを考える。ここでは、サーバ4に関連するポリシがあるため、リクエスト元のタブに通信制御が適用される。このとき、状態2のポリシと、サーバ4に関連するポリシの共通部分が新たなポリシとなる。このとき、リクエスト元のタブが通信できるリソースは、サーバ3、サーバ4である。つまり、状態1に遷移することになる。
【0070】
このように、リソースにアクセスして初めて、そのリソースに関する通信制御が適用されることになる。以降、異なるリソースにアクセスするたびに、そのリソースに関連したポリシが追加されるようになる。
【0071】
このように、本実施形態では、事前にアプリケーションごとに全てのリンクが指定された属性ファイルを用意せずに、クライアントサイドアプリが利用者にとって漏えいさせたくない情報を取得した場合の情報漏えいを防止できる、という効果を有する。なぜなら、情報にアクセスした時点で、リクエスト元のタブにその情報に関連するポリシに応じた通信制御が適用されるためである。
【0072】
なお、本実施の形態において、通信制御部104は、あるリクエスト元のタブ上のクライアントサイドアプリがページを遷移する場合、そのタブに関連付けて記憶しているポリシを削除してもよい。
【0073】
さらに、本実施の形態において、通信制御部104は、通信したリソースに関連するポリシをリクエスト元のタブと関連付けて記憶したが、これをリクエスト元のウィンドウや、クライアントサイドアプリ102のURLに関連付けて記憶してもよい。
【0074】
さらに、本実施の形態において、通信制御部104が通信先と自身が記憶するポリシを比較する際、それらが完全一致した場合にその通信先へのリクエストを許可することを想定しているが、部分一致した場合にその通信先リクエストを許可するようにしてもよい。
【0075】
さらに、本実施の形態において、通信制御部104は、利用者が新規作成したタブに関連付けられて記憶するポリシとして、あらかじめ定められるポリシを記憶しても構わない。 このとき、上記のタブには、あらかじめ定められたポリシを元に、通信制御が適用されることになる。
【0076】
さらに、本実施の形態において、ブラウザ101は、クライアントサイドアプリを実行する機能のみを持つとしても良い。
【0077】
さらに、本実施の形態において、通信制御部104、ポリシ保存部105は、ブラウザ101に内蔵されているが、それらの構成は、ブラウザ101の外部にあっても良い。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
ここでは、本発明の第1の実施形態で述べた構成及び動作との差分のみ説明する。
【0078】
本発明を実施するための第2の実施の形態における通信装置の構成図は図1と同様である。ここで、通信制御部104は、さらにリソースに関連付けられるポリシに記載される、 ポリシを削除する条件に一致するリソースにアクセスした場合、記憶しているポリシを破棄する。さらに、ポリシ保存部105は、図8に示すようなポリシを持つ。図8を参照すると、通信したリソースに関連付けてポリシを削除する条件として通信先リソースが保存されている。
【0079】
次に、本発明の第2の実施形態の動作を説明する。
本実施形態の全体の動作は
1)通信装置がクライアントサイドアプリをブラウザにロードする処理
2)クライアントサイドアプリがリソースを取得する処理
3)クライアントサイドアプリがページ遷移する際にポリシを操作する処理
から構成される。以下は、上記の処理の詳細について説明する。
【0080】
1)通信装置がクライアントサイドアプリをブラウザにロードする処理について、図4を用いて説明する。第1の実施形態における図4の処理とは、ステップS108〜S109が異なる。
【0081】
ポリシ保存部105は、ポリシを要求されると、サーバ3に関連するポリシを返す。 この時のポリシの例として図8を用いて説明する。図8を参照すると、サーバ3に関連付けられるポリシには、通信が許可されるリソースの記載がない。これは無制限で通信が許可されることを意味する。
【0082】
さらに、ページ遷移時にポリシをKeepする条件として「サーバ7」が記載されている。一方、ページ遷移時にポリシを削除する条件として「*」が記載されている。
前者「サーバ7」の記載は、ページ遷移時、つまりクライアントサイドアプリ102が異なるクライアントサイドアプリに遷移する場合に、通信先のリソースがサーバ7である場合は、リクエスト元のタブに関連付けて記憶するポリシを保持することを意味する。
【0083】
ページを遷移する例としては、クライアントサイドアプリ上のaタグで張られるリンクを利用者がクリックする場合が挙げられる。また、ポリシを削除しない状況として例えば、遷移前のクライアントサイドアプリから異なるクライアントサイドアプリにページする際に、遷移前のアプリが取得した利用者にとって漏えいしたくない情報を、遷移後のページに渡すときが考えられる。このとき、遷移後のアプリは利用者にとって漏えいしたくない情報を持つため、その情報漏えいを防止するために、遷移前のアプリの通信制御がそのまま適用されることが望ましい。
【0084】
一方、後者「*」の記載は所謂ワイルドカード、即ち、任意の文字列にマッチする特殊文字を意味する。従って、この場合、通信先のリソースが「サーバ7」以外の全ての場合に、リクエスト元のタブに関連付けて記憶するポリシを削除することを意味する。これは以降サーバ7にアクセスすると通信制御部104はリクエスト元のタブに関連付けて記憶しているポリシを削除することを意味する(ステップS108)。
【0085】
ポリシを削除しない状況としては、例えば、あるクライアントサイドアプリから異なるクライアントサイドアプリのページに移動(遷移)する場合がある。遷移前のクライアントサイドアプリが取得した情報を、遷移後のクライアントサイドアプリに渡さない場合は、遷移後のクライアントサイドアプリが利用者にとって漏えいさせたくない情報を持たない。このような場合、遷移前のクライアントサイドアプリに適用される通信制御は解除しても良い。
【0086】
通信制御部104は、渡されたポリシをステップS103で特定したタブと関連付けて記憶する。このとき記憶するポリシは図9の通りである。図9を参照すると、タブAに関連付けられて、通信が許可されるリソースは空白であるため無制限で通信を許可されている。さらに、ポリシを削除する条件としてサーバ7が記載されており、サーバ7と通信を行う時点で通信制御部104が記憶するポリシを削除している。
【0087】
次に、2)クライアントサイドアプリがリソースを取得する処理について図5を用いて説明する。第1の実施形態における図5の処理とは、ステップS209が異なる。
【0088】
通信制御部104は、ポリシを受け取ると、既に記憶しているポリシを受け取ったポリシの共通部分を新しいポリシとして記憶する。このとき記憶するポリシは図10のようになる。ここでは、通信が許可されるリソースは、「サーバ3、サーバ4、サーバ7」であり、 ポリシを削除する条件となる通信先リソースは「サーバ7」となる。
【0089】
次に、3)クライアントサイドアプリがページ遷移する際にポリシを操作する処理について図11を用いて説明する。 図11の構成について、図4との違いのみ説明する。サーバ7は、通信装置からのリクエストに対してクライアントサイドアプリを配信するサーバである。
【0090】
サーバサイドアプリ701は、クライアントサイドアプリ102上でaタグなどによりリンクされているWebアプリケーションであり、クライアントサイドアプリ102とは異なるクライアントサイドアプリを生成する。
【0091】
利用者は、クライアントサイドアプリ102のaタグをクリックし、ページを遷移するためのリクエストをサーバ7に送信する(ステップS401)。 図11におけるステップS402〜S404は、図4のステップS102〜S104と同様の処置であるため説明を省略する。 通信制御部104は、記憶しているポリシでアクセスが許可されるリクエストかどうかを確認する(ステップS405)。このとき、記憶しているポリシは図10に示す通りであり、サーバ7へのアクセスは許可されているため、ステップS406に進む。
【0092】
さらに通信制御部104は、このリクエストがページ遷移時のリクエストである場合に、ポリシを操作する条件に一致するかどうかを確認する(ステップS406)。このとき、図10のポリシを再度参照する。
【0093】
このとき、「サーバ7との通信」は、記憶しているポリシを保持する条件「サーバ7:Keep」に合致するため、記憶しているポリシを保持(Keep)する(ステップS407)。図11における以降のステップS408〜S413は、図4のステップS105〜S110と同様の処理であるため説明を省略する。
【0094】
なお、本実施の形態において、ステップS401において、ページを遷移するためのリクエストをサーバ7とは異なるサーバに送信した場合は、記憶しているポリシを削除する。ステップS407において、記憶しているポリシを削除するための条件「*:Delete」と一致するためである。
【0095】
このように、本発明の第2の実施形態では、あるクライアントサイドアプリが異なるクライアントサイドアプリに遷移する際に、リクエスト元のタブに適用される通信制御ポリシを継続して保持する否かを、遷移する際の通信先に応じて制御できるようになる。
(第3の実施形態)
次に、本発明を実施するための第3の実施形態について説明する。
ここでは、第1の実施形態で述べた構成及び動作との差分のみ説明する。
【0096】
図12は本発明の第3の実施形態における通信システムの構成図である。第3の実施の形態における通信システムは、通信装置8とサーバ9、ネットワーク2で構成される。通信装置8における801〜803の構成は、図1の101〜103の構成と同様であるため 説明を省略する。通信装置8は、通信制御部804を備える。
【0097】
通信制御部804は、図1の通信制御部104に加えて、サーバ9から受け取ったHTTPレスポンスからポリシを取得し、そのポリシをタブに関連付けて記憶する。タブに関連付けて記憶されるポリシの例を図13を用いて説明する。
【0098】
図13を参照すると、タブAに関連付けて通信が許可されるリソースとしてサーバ9を記憶している。
【0099】
サーバ9は、通信部901、レスポンス生成部902、個人情報保存部903、ポリシ保存部904を備える。通信部901は、通信装置8とのデータの送受信を行う通信手段である。
【0100】
個人情報保存部903は、サーバ9が管理する利用者の情報(個人情報)である。ポリシ保存部904は、個人情報に関連付けて記録される通信制御ポリシである。このポリシについて図14を用いて説明する。
【0101】
図14では、個人情報保存部903に保存されている個人情報に関連付けて通信が許可されるリソースの一覧が記載されている。ここでは、サーバ9がアクセスが許可されるリソースとなる。
【0102】
次に、本発明の第3の実施形態の動作について、通信装置が個人情報を取得する処理の詳細について説明する。
【0103】
クライアントサイドアプリ802がサーバ9から個人情報を取得する処理について図15を用いて説明する。
【0104】
図15のステップS501〜S505は、図5のS201〜S205と同様の処理であるため説明を省略する。通信部901は、リクエストを受け取ると、リクエストをレスポンス生成部902に渡す(ステップS506)。レスポンス生成部902は、個人情報保存部903に保存すべき個人情報を取得し保存する(ステップS507)。
【0105】
さらにレスポンス生成部902は、個人情報保存部903に保存された個人情報に関連するポリシをポリシ保存部904に要求する(ステップS508)。ポリシ保存部904は、関連するポリシがある場合は、そのポリシを返す(ステップS509)。
図14を参照すると、このときポリシ保存部904は、アクセスが許可されるリソースのリストとして、「サーバ9」を返す。レスポンス生成部902は、ステップS507で取得して個人情報保存部903に保存された個人情報とステップS509で取得したポリシを元に、レスポンスを生成する(ステップS510)。レスポンスメッセージにポリシを記載する方法としては、例えばHTTPレスポンスヘッダに記載する方法がある。
【0106】
具体的には、図16を用いて説明する。図16を参照すると、HTTPレスポンスヘッダに、アクセス許可リストを記載する拡張ヘッダとして「Access-Permit」が追加されている。さらに、この拡張ヘッダに記載される内容は、ステップS509で取得したポリシに記載されるアクセスが許可されるリソースのリストである「サーバ9」が記載される。
【0107】
この「サーバ9」はサーバ9のURLであり「http://server9.com」が記載されている。 また別の方法として、例えばHTTPレスポンスのボディ内に記載する方法もある。 具体的には、図17を用いて説明する。図17を参照すると、HTTPレスポンスのボディの、先頭にアクセス許可リストを記載している。また、そのときの記載の内容は、ステップS509で取得したポリシに記載されるアクセスが許可されるリソースのリストである 「サーバ9」が記載される。この「サーバ9」はサーバ9のURLであり「http://server9.com」が記載されている。
【0108】
さらに、レスポンス生成部902は、レスポンスメッセージを通信部301に渡す(ステップS511)。通信部901は、レスポンスメッセージを通信装置8に返す(ステップS512)。
【0109】
通信制御部804は、レスポンスメッセージにポリシが記載されている場合は、そのポリシをメッセージから抜き出し、そのポリシをリクエスト元のタブと関連付けて記憶する。 このとき、既に記憶しているポリシがある場合は、既に記憶しているポリシとメッセージから抜き出したポリシとの共通部分を新たなポリシとしてリクエスト元のタブ「タブA」に関連付けて記憶する。
【0110】
本動作シーケンスでは、通信制御部804はポリシを記憶していないため、取得したポリシを新たなポリシとして記憶する(ステップS513)。ここで、通信制御部804は、レスポンスメッセージからポリシを抜き出すために、サーバ9がレスポンスメッセージにポリシを記載する方法を知っているものとする。
【0111】
また、このとき通信制御部804が記憶したポリシについて、図13を用いて説明する。図13に記載される通り、通信制御部804は、タブAに関連付けてアクセスが許可されるリソースのリストとして、「サーバ9」を記憶していることが分かる。さらに通信制御部804は、ポリシを抜き出した後のレスポンスメッセージを通信部803に渡す(ステップS514)。
【0112】
このように、本実施の形態では、通信装置は、通信するリソースごとにポリシを自身で保存することなく、アクセスするリソースに応じた通信制御が実現できる。
【0113】
本実施の形態において、ステップS507においてレスポンス生成部902がクライアントサイドアプリ(HTML)を取得する場合、そのHTML内、例えばヘッダ内に、もともと通信制御ポリシが記載されていてもよい。このとき、ポリシ保存部904はサーバ9の構成として不要であり、ステップS508およびステップS509も不要となる。
【0114】
また、本実施の形態において、ステップS510においてレスポンス生成部902がもともと定められた通信制御ポリシを、HTTPレスポンスヘッダに記述してもよい。
【0115】
このとき、ポリシ保存部904はサーバ9の構成として不要であり、ステップS508およびステップS509も不要となる。
【0116】
また本実施の形態では、サーバがリソースに紐づいたポリシを配布する方法について記載しているが、プロキシサーバがリソースに紐づいたポリシを通信装置に配布する方法でも良い。具体的には、サーバからのレスポンスをプロキシサーバが受け取ると、そのレスポンスに関連するポリシを含めて通信装置に返す、としても良い。
(第4の実施形態)
次に、本発明を実施するための第4の実施形態について説明する。
【0117】
ここでは、本発明の第1の実施形態の構成及び動作との差分のみ説明する。
【0118】
本実施の形態における通信装置の構成について、図1を用いて説明する。図1における通信制御部104は、本発明の第1の実施形態における機能に加えて、リソースへアクセスする際のリクエストがポリシに違反すると判断した場合に、ブラウザを介して利用者に警告メッセージを表示させる。あるいは、外部リソースに対して警告メッセージを送信する。ここで、外部リソースとして、この通信装置の管理会社などが該当するが、これに限定するものではない。
【0119】
動作シーケンスについて図6を用いて説明する。図6におけるステップS305において、 通信制御部104は、クライアントサイドアプリ102からのリクエストが、 ポリシに違反すると判断し、このリクエストを中止する。このとき、通信制御部104はさらに、ブラウザ101上に警告メッセージを表示する。あるいは、外部のリソースにポリシ違反があったことを意味するメッセージを送信する。このとき外部のリソースとして、クライアントサイドアプリ102の配信サーバであるサーバ3や、通信装置1の管理会社などが考えられる。
【0120】
このように、ポリシに違反する通信が起こった場合に、利用者やこの通信装置の管理会社に通知することができる。
(第5の実施形態)
次に、本発明を実施するための第5の実施形態について説明する。
【0121】
図18は本発明の第5の実施形態の通信装置の構成図である。
【0122】
通信装置1801は、リソースにアクセスする通信手段1802と、アクセス先のサーバから通信制御ポリシを取得する通信制御ポリシ取得手段1803とを有する。更に、通信装置1801は、前記通信手段がアクセスするリソースを前記通信制御ポリシに基づいて制限する通信制御部1804と、を有する。通信手段1802がリソースにアクセスする時に該通信制御ポリシ取得手段1803が該リソースに関連付けられる通信制御ポリシを取得し、通信制御手段1804が通信手段のアクセスするリソースを該通信制御ポリシに基づいて制限する。
【0123】
これによって、クライアントサイドアプリが利用者にとって漏えいさせたくない情報を取得した時点で、そのアプリに通信制御を適用する。従って事前にアプリケーションごとに全てのリンクを指定した属性ファイルを用意することなく、個人情報などの重要な情報が漏えいすることを防止できる。
【0124】
なお、ここまで説明した各実施の形態では、通信装置やサーバは、専用の装置を想定したが、次のようなものでもよい。即ち例えば各種データ処理を行うパーソナルコンピュータ装置に、本例に相当する処理を行うボードやカードなどを装着し、各処理を、コンピュータ装置側で実行させる。このようにして、その処理を実行するソフトウェアをパーソナルコンピュータ装置に実装させて実行する構成としても良い。
【0125】
そのパーソナルコンピュータ装置などのデータ処理装置に実装されるプログラムについては、光ディスク,メモリカードなどの各種記録(記憶)媒体を介して配付しても良く、或いはインターネットなどの通信手段を介して配付しても良い。
【0126】
以上に述べた実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、
を有することを特徴とする通信装置。
(付記2)
前記通信装置は更に、前記通信制御ポリシを保存するポリシ保存部を有し、前記通信制御部は前記通信制御ポリシを前記通信制御ポリシ保存部から取得する、
ことを特徴とする付記1の通信装置。
(付記3)
前記通信制御部は、過去に前記通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信部がアクセスするリソースを限定する
ことを特徴とする、付記2記載の通信装置。
(付記4)
前記マージは、過去に通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、付記3記載の通信装置。
(付記5)
取得した前記通信制御ポリシに応じて前記取得した通信制御ポリシを破棄または保持する、前記付記1乃至4のいずれかに記載された通信装置。
(付記6)
前記通信部の通信が通信制御ポリシ違反であると判断した場合に 利用者または外部サーバに対して警告メッセージを表示または送信することを特徴とする、付記1乃至5のいずれかに記載された通信装置。
(付記7)
リソースにアクセスする通信工程と、
前記通信工程が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得工程と、
前記通信工程がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御工程と、
を有することを特徴とする通信制御方法。
(付記8)
前記通信制御方法は更に、前記通信制御ポリシを保存するポリシ保存工程を有し、前記通信制御ポリシを前記ポリシ保存工程から取得する、
ことを特徴とする付記7の通信制御方法。
(付記9)
前記通信制御工程は、過去に通信工程が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信工程がアクセスするリソースを限定する
ことを特徴とする、付記8記載の通信制御方法。
(付記10)
前記マージは、過去に通信工程が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、付記9記載の通信制御方法。
(付記11)
前記通信制御ポリシに応じて前記取得した通信制御ポリシを破棄または保持する、
ことを特徴とする前記付記7乃至10のいずれかに記載された通信制御方法。
(付記12)
前記通信工程の通信が通信制御ポリシ違反であると判断した場合に 利用者または外部サーバに対して警告メッセージを表示または送信する
ことを特徴とする、付記7乃至11のいずれかに記載された通信制御方法。
(付記13)
リソースにアクセスする通信ステップと、
前記通信ステップが前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得ステップと、
前記通信ステップがアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御ステップと、
をコンピュータに実行させることを特徴とするプログラム。
(付記14)
前記通信制御ステップは、過去に通信ステップが通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信ステップがアクセスするリソースを限定する
ことを特徴とする、付記13記載のプログラム。
(付記15)
前記マージは、過去に通信ステップが通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、付記14記載のプログラム。
(付記16)
データを送受信するサーバ及び通信装置からなる通信システムであって、
前記通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有し、
前記サーバは、通信装置のリクエストに応じて対応するリソース及びリソースに関連する通信制御ポリシを前記通信装置に返すレスポンス生成部と、
を有することを特徴する通信システム。
【符号の説明】
【0127】
1 通信装置
101 ブラウザ
102 クライアントサイドアプリ
103 通信部
104 通信制御部
105 ポリシ保存部
2 ネットワーク
3 サーバ
301 サーバサイドアプリ
4 サーバ
401 サーバサイドアプリ
5 サーバ
6 攻撃者サーバ
7 サーバ
701 サーバサイドアプリ
8 通信装置
801 ブラウザ
802 Webアプリ
803 通信部
804 通信制御部
9 サーバ
901 通信部
902 レスポンス生成部
903 個人情報保存部
904 ポリシ保存部
【特許請求の範囲】
【請求項1】
リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、
を有することを特徴とする通信装置。
【請求項2】
前記通信装置は更に、前記通信制御ポリシを保存するポリシ保存部を有し、前記通信制御部は前記通信制御ポリシを前記通信制御ポリシ保存部から取得する、
ことを特徴とする請求項1の通信装置。
【請求項3】
前記通信制御部は、過去に前記通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信部がアクセスするリソースを限定する
ことを特徴とする、請求項2記載の通信装置。
【請求項4】
前記マージは、過去に通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、請求項3記載の通信装置。
【請求項5】
取得した前記通信制御ポリシに応じて前記取得した通信制御ポリシを破棄または保持する、前記請求項1乃至4のいずれかに記載された通信装置。
【請求項6】
前記通信部の通信が通信制御ポリシ違反であると判断した場合に 利用者または外部サーバに対して警告メッセージを表示または送信することを特徴とする、請求項1乃至5のいずれかに記載された通信装置。
【請求項7】
リソースにアクセスする通信工程と、
前記通信工程が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得工程と、
前記通信工程がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御工程と、
を有することを特徴とする通信制御方法。
【請求項8】
前記通信制御方法は更に、前記通信制御ポリシを保存するポリシ保存工程を有し、前記通信制御ポリシを前記ポリシ保存工程から取得する、
ことを特徴とする請求項7の通信制御方法。
【請求項9】
前記通信制御工程は、過去に通信工程が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信工程がアクセスするリソースを限定する
ことを特徴とする、請求項8記載の通信制御方法。
【請求項10】
データを送受信するサーバ及び通信装置からなる通信システムであって、
前記通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有し、
前記サーバは、通信装置のリクエストに応じて対応するリソース及びリソースに関連する通信制御ポリシを前記通信装置に返すレスポンス生成部と、
を有することを特徴する通信システム。
【請求項1】
リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、
を有することを特徴とする通信装置。
【請求項2】
前記通信装置は更に、前記通信制御ポリシを保存するポリシ保存部を有し、前記通信制御部は前記通信制御ポリシを前記通信制御ポリシ保存部から取得する、
ことを特徴とする請求項1の通信装置。
【請求項3】
前記通信制御部は、過去に前記通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信部がアクセスするリソースを限定する
ことを特徴とする、請求項2記載の通信装置。
【請求項4】
前記マージは、過去に通信部が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとの共通部分である、
ことを特徴とする、請求項3記載の通信装置。
【請求項5】
取得した前記通信制御ポリシに応じて前記取得した通信制御ポリシを破棄または保持する、前記請求項1乃至4のいずれかに記載された通信装置。
【請求項6】
前記通信部の通信が通信制御ポリシ違反であると判断した場合に 利用者または外部サーバに対して警告メッセージを表示または送信することを特徴とする、請求項1乃至5のいずれかに記載された通信装置。
【請求項7】
リソースにアクセスする通信工程と、
前記通信工程が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得工程と、
前記通信工程がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御工程と、
を有することを特徴とする通信制御方法。
【請求項8】
前記通信制御方法は更に、前記通信制御ポリシを保存するポリシ保存工程を有し、前記通信制御ポリシを前記ポリシ保存工程から取得する、
ことを特徴とする請求項7の通信制御方法。
【請求項9】
前記通信制御工程は、過去に通信工程が通信した際に取得した通信制御ポリシと、今回取得した通信制御ポリシとをマージし、マージした通信制御ポリシを利用して、通信工程がアクセスするリソースを限定する
ことを特徴とする、請求項8記載の通信制御方法。
【請求項10】
データを送受信するサーバ及び通信装置からなる通信システムであって、
前記通信装置は、リソースにアクセスする通信部と、
前記通信部が前記リソースにアクセスする時にアクセス先のサーバから前記リソースに関連付けられる通信制御ポリシを取得する通信制御ポリシ取得部と、
前記通信部がアクセスする前記リソースを前記通信制御ポリシに基づいて限定する通信制御部と、を有し、
前記サーバは、通信装置のリクエストに応じて対応するリソース及びリソースに関連する通信制御ポリシを前記通信装置に返すレスポンス生成部と、
を有することを特徴する通信システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2012−48357(P2012−48357A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−188075(P2010−188075)
【出願日】平成22年8月25日(2010.8.25)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願日】平成22年8月25日(2010.8.25)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]