(57)【要約】  通信装置（１０）は、クライアント端末と、クライアント端末と通信を行うＷｅｂサーバとの間に設けられた通信装置であって、Ｗｅｂサーバとクライアント端末との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施す難読化処理部（１３３）と、難読化処理部（１３３）によって難読化された情報を含む通信を送信先へ送信する通信部（１１）と、を有する。
2019082818.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末と、前記クライアント端末と通信を行うＷｅｂサーバとの間に設けられた通信装置であって、
前記Ｗｅｂサーバと前記クライアント端末との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施す難読化処理部と、
前記難読化処理部によって難読化された情報を含む通信を送信先へ送信する通信部と、
を有することを特徴とする通信装置。
【請求項２】
前記難読化処理部は、ＨＴＴＰ（HyperText  Transfer  Protocol）レスポンスのコンテンツタイプの種別に応じた手法を用いて、前記Ｗｅｂアプリケーションに関する情報が示された部分に難読化を施すことを特徴とする請求項１に記載の通信装置。
【請求項３】
Ｗｅｂアプリケーション特有の文字列から成るキーワードを記憶する第１の記憶部と、
前記第１の記憶部を参照し、前記Ｗｅｂサーバから送信されたＨＴＴＰレスポンスのうち前記キーワードと類似する文字列を、前記Ｗｅｂアプリケーションに関する情報として検出する検出部と、
をさらに有し、
前記難読化処理部は、前記検出部が検出した文字列を、難読化を施した結果の文字列で置き換えることを特徴とする請求項２に記載の通信装置。
【請求項４】
前記難読化処理部は、前記ＨＴＴＰレスポンスのコンテンツタイプが画像である場合には、該画像のコメントに任意の文字列を埋め込むことを特徴とする請求項２に記載の通信装置。
【請求項５】
Ｗｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬと該ＵＲＬに対応する任意の文字列から成る識別子との組を記憶する第２の記憶部と、
前記第２の記憶部を参照し、前記クライアント端末から送信されたＨＴＴＰリクエストに含まれる前記識別子を、該識別子に対応する前記Ｗｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬに置換し、前記Ｗｅｂサーバから送信されたＨＴＴＰレスポンスに含まれる前記Ｗｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬを、該ＵＲＬに対応する識別子に置換する置換部と、
をさらに有することを特徴とする請求項１〜４のいずれか一つに記載の通信装置。
【請求項６】
クライアント端末と、前記クライアント端末と通信を行うＷｅｂサーバと、前記クライアント端末と前記Ｗｅｂサーバとの間に設けられた通信装置を有する通信システムであって、
前記通信装置は、
Ｗｅｂサーバとクライアント端末との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施す難読化処理部と、
前記難読化処理部によって難読化された情報を送信先へ送信する通信部と、
を含んだことを特徴とする通信システム。
【請求項７】
Ｗｅｂサーバとクライアント端末との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施すステップと、
難読化された情報を送信先へ送信するステップと、
をコンピュータに実行させるための通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信システム及び通信プログラムに関する。
【背景技術】
【０００２】
Ｗｅｂアプリケーションは多くのサービスで利用され、社会基盤の一部となっている。同時にＷｅｂアプリケーションの脆弱性を悪用する攻撃も発生している。Ｗｅｂアプリケーションの脆弱性の有無を調べる方法の一つにＷｅｂアプリケーションフィンガープリンティング（Web  Application  Fingerprinting：ＷＡＦＰ）がある。このＷＡＦＰは、サーバ上で利用されているＷｅｂアプリケーションやそのバージョン情報を収集する技術である。ＷＡＦＰを行う方法は、大きくわけて二つある。【０００３】
まず、一つ目の方法は、正規表現のパターンマッチを用いて、Ｗｅｂアプリケーション特有の文字列（Ｗｅｂアプリケーション名、バージョン情報や静的ファイルへのパスなど）をソースコードから抽出する方法である。例えば、正規表現（記法はＰＣＲＥ（Perl  Compatible  Regular  Expressions）に準拠）「Powered  by  (\w+)」の場合を例に説明する。この一つ目の方法では、この正規表現は、「Powered  by」の後にはＷｅｂアプリケーション名がくるであろうという推測のもと、その後に続く英字と数字からなる１文字以上の文字列を抽出する。この一つ目の方法では、例えば、パターンマッチを行う対象のソースコードに「<h1>  Powered  by  CMS  </h1>」が含まれているなら、この正規表現について「CMS」を抽出する。【０００４】
また、二つ目の方法は、既知の静的ファイルへのパスに対してアクセスを試みる方法である。静的ファイルとは、システムの管理者以外から変更されることのないファイルのことである。この二つ目の方法では、アクセスに成功した場合に、ファイルの内容が一致するか確かめる。そして、二つ目の方法では、ファイルの内容が一致している場合には、そのＷｅｂアプリケーションを利用していると判断する。【０００５】
例えば、「a.com」は、ＷｅｂアプリケーションBを利用しているとする。また、Bは、「/B/includes/c.js」を持つことが知られているとする。この場合、「a.com」がＷｅｂアプリケーションBを利用しているか否かを以下の手順で確認できる。まず、「a.com/B/includes/c.js」にアクセスし、「c.js」を取得できるか否かを確かめる。「c.js」を取得できない場合、「a.com」がＷｅｂアプリケーションBを利用しているかどうかは不明である。これに対し、「c.js」を取得できた場合、その内容がＷｅｂアプリケーションBの「c.js」と一致しているか否かを判定する。取得した内容がＷｅｂアプリケーションBの「c.js」と一致している場合には、「a.com」は、ＷｅｂアプリケーションBが持つ特有の静的ファイルを持つため、ＷｅｂアプリケーションBを利用していると考えることができる（例えば、非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Patrick  S.Thomas，“BLINDELEPHANT:  WEB  APPLICATION  FINGERPRINTING  WITH  STATIC  FILES”，［平成２９年１０月２日検索］，インターネット＜ＵＲＬ：https://community.qualys.com/servlet/JiveServlet/downloadBody/1351-102-7-1642/BlindElephant_WebApp_Fingerprinting-PAPER-v2.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このＷＡＦＰは、Ｗｅｂアプリケーションのソースコード中にあるＷｅｂアプリケーション特有の文字列の抽出や既知の静的パスへのアクセスを行うことによって、Ｗｅｂアプリケーションの情報を収集する。ＷＡＦＰによって収集された情報は、攻撃者が攻撃方法を決定する際に用いられるため、ＷＡＦＰによるＷｅｂアプリケーションの情報露見を防ぐことが攻撃に対する防御につながる。そこで、従来、ＷＡＦＰによって外部にＷｅｂアプリケーション情報が露見しないようにＷｅｂアプリケーションを改変する対策が提案されている。【０００８】
例えば、ＷＡＦＰに対する第１の対策として、設定を変更することによってＷｅｂアプリケーション特有の文字列（Ｗｅｂアプリケーション名やバージョン情報など）がＷｅｂアプリケーションのソースコードに明記されないようにする技術がある。しかしながら、この第１の対策では、ソースコード自体を変更しなければ対応できないケースがあるという問題がある。【０００９】
具体的に、図２０を参照して、一つ目の対策技術で問題となる、ソースコード自体を変更しなければ対応できないケースについて説明する。図２０は、ＷＡＦＰに対する従来の対策技術を説明する図である。図２０の（ａ）のうち、枠Ｃ１Ｐ，Ｃ２Ｐで囲まれた箇所がＷｅｂアプリケーションの特有の文字列部分である。このうち、枠Ｃ１Ｐの「X-Powered-by」ヘッダは、設定ファイルを変更することによって、図２０の（ｂ）の枠Ｃ１Ｐ´に示すように、文字列自体を削除できる。これに対し、枠Ｃ２Ｐの「div」タグは、設定ファイルを変更するだけでは削除できず、図２０の（ｂ）の枠Ｃ２Ｐ´のように、文字列が残ってしまい、ソースコード自体を変更しなければ対応できない。【００１０】
また、ＷＡＦＰに対する第２の対策として、ディレクトリ構造を変更する技術がある。しかしながら、この第２の対策では、ディレクトリ構造の変更を適切にソースコードに反映しなければならないという問題がある。【００１１】
具体的に、図２１を参照して、二つ目の対策技術で問題となる、ディレクトリ構造の変更を適切にソースコードに反映しなければならないケースについて説明する。図２１は、ＷＡＦＰに対する従来の対策技術を説明する図である。例えば、ＷＡＦＰ対策のために、ダミーのディレクトリ「dummy」を「cms」の後に追加し、ディレクトリ構造を変更する（図２１の（１）参照）。この際、図２１の（ａ）の左図に示すディレクトリ構造の「a.js」を読み出すソースコード「https://e.com/cms/includes/a.js」（図２１の（２）参照）は、ディレクトリの変更に伴い、ソースコード中の関連する箇所を変更され（図２１の（３）参照）、「https://e.com/cms/dummy/includes/a.js」（図２１の（ｂ）の左図参照）となる。【００１２】
一方で、ディレクトリ構造の「d.css」は、図２１の（ｂ）の左図に示すように、パスを変更し忘れているため、呼び出せなくなっている（図２１の（４）参照）。このように、この第２の対策技術では、ディレクトリ構造の変更を適切にソースコードに反映しきれない場合がある。【００１３】
このように、従来の対策では、ＷＡＦＰに対する十分な対応が難しく、ＷＡＦＰによる外部へのＷｅｂアプリケーション情報の露見を防止することが難しい場合があった。【００１４】
本発明は、上記に鑑みてなされたものであって、ＷＡＦＰによるＷｅｂアプリケーションの情報露見を防ぐことができる通信装置、通信システム及び通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、本発明に係る通信装置は、クライアント端末と、クライアント端末と通信を行うＷｅｂサーバとの間に設けられた通信装置であって、Ｗｅｂサーバとクライアント端末との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施す難読化処理部と、難読化処理部によって難読化された情報を含む通信を送信先へ送信する通信部と、を有することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、ＷＡＦＰによるＷｅｂアプリケーションの情報露見を防ぐことができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施の形態に係る通信システムの構成の一例を模式的に示す図である。
【図２】図２は、図１に示す通信装置の構成の一例を示す図である。
【図３】図３は、静的ファイル置換リストのデータ構成の一例を示す図である。
【図４】図４は、キーワードリストのデータ構成の一例を示す図である。
【図５】図５は、図１に示す通信システムの処理の流れの概略を説明する図である。
【図６】図６は、図２に示す置換部の処理を説明するための図である。
【図７】図７は、従来のＨＴＴＰリクエストの送信を説明する図である。
【図８】図８は、図２に示す置換部の処理を説明するための図である。
【図９】図９は、従来のＨＴＴＰレスポンスの送信を説明する図である。
【図１０】図１０は、図２に示す難読化処理部の処理の一例を説明する図である。
【図１１】図１１は、図２に示す難読化処理部の処理の一例を説明する図である。
【図１２】図１２は、図２に示す難読化処理部の処理の一例を説明する図である。
【図１３】図１３は、図２に示す難読化処理部の処理の一例を説明する図である。
【図１４】図１４は、図１に示す通信システムにおける通信例を説明する図である。
【図１５】図１５は、図１に示す通信システムにおける他の通信例を説明する図である。
【図１６】図１６は、図２に示す通信装置が行うＨＴＴＰリクエストに対する処理の処理手順のフローチャートである。
【図１７】図１７は、図２に示す通信装置が行うＨＴＴＰレスポンスに対する処理の処理手順のフローチャートである。
【図１８】図１８は、図１７に示す難読化対象検出処理の処理手順を示すフローチャートである。
【図１９】図１９は、プログラムが実行されることにより、通信装置が実現されるコンピュータの一例を示す図である。
【図２０】図２０は、ＷＡＦＰに対する従来の対策技術を説明する図である。
【図２１】図２１は、ＷＡＦＰに対する従来の対策技術を説明する図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１９】
［実施の形態］
［通信システムの概要］
まず、図１を用いて、実施の形態に係る通信システムの構成について説明する。図１は、実施の形態に係る通信システムの構成の一例を模式的に示す図である。
【００２０】
図１に示すように、通信システム１は、クライアント端末２と、保護対象のＷｅｂサーバ３とが、ネットワーク４を介して接続する構成を有する。Ｗｅｂサーバ３の前段には、プロキシとして通信装置１０が設けられており、Ｗｅｂサーバ３は、通信装置１０を介して、ネットワーク４に接続する。
【００２１】
クライアント端末２は、例えば、Ｗｅｂアプリケーションを使用するサーバ装置、パーソナルコンピュータ、スマートフォン等の情報端末である。クライアント端末２は、例えば、HTTP（HyperText  Transfer  Protocol）リクエストをＷｅｂサーバ３に送信する。
【００２２】
また、クライアント端末２は、通信装置１０による難読化処理後のＨＴＴＰレスポンスを受信する。この際、通信装置１０は、難読化処理後のＨＴＴＰリクエストに含まれる識別子を、該識別子に対応するＵＲＬに置き換える。
【００２３】
Ｗｅｂサーバ３は、サービス提供者のサーバであり、クライアント端末２にサービスを提供するサーバである。例えば、Ｗｅｂサーバ３は、クライアント端末２によるＨＴＴＰリクエストを受けると、このリクエストに対応するサービス提供のためのＨＴＴＰレスポンスを送信する。Ｗｅｂサーバ３は、クライアント端末２との間の通信を、通信装置１０を介して行う。
【００２４】
ネットワーク４は、例えば、有線又は無線のＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）及びＶＰＮ（Virtual  Private  Network）等の任意の種類のネットワークである。
【００２５】
通信装置１０は、Ｗｅｂサーバ３とネットワーク４との間に設けられ、Ｗｅｂサーバ３のプロキシとして機能する。通信装置１０は、Ｗｅｂサーバ３とクライアント端末２との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施す。そして、通信装置１０は、難読化された情報を含む通信を送信先へ送信する。通信装置１０は、例えば、ＨＴＴＰ通信を改変する。
【００２６】
このように、通信システム１では、通信装置１０をＷｅｂサーバ３のプロキシとして用いている。通信装置１０は、Ｗｅｂサーバ３とクライアント端末２との間の通信を中継しつつ、例えば、ＨＴＴＰ通信に含まれる情報のうちＷｅｂアプリケーションに関する部分を改変することによって、Ｗｅｂアプリケーション自体を改変することなく、ＷＡＦＰによる情報露見を防止する。続いて、この通信装置１０の構成について説明する。
【００２７】
［通信装置の構成］
図２は、図１に示す通信装置１０の構成の一例を示す図である。通信装置１０は、図２に示すように、通信部１１、記憶部１２及び制御部１３を有する。
【００２８】
通信部１１は、ネットワーク４等を介して接続された他の装置との間で、各種情報を送受信する通信インタフェースである。通信部１１は、例えば、ＮＩＣ（Network  Interface  Card）等で実現され、ＬＡＮやインターネットなどの電気通信回線を介した他の装置と制御部１３（後述）との間の通信を行う。
【００２９】
具体的には、通信部１１は、ネットワーク４を介して、クライアント端末２による識別子で難読化されたＨＴＴＰリクエストを受信し、制御部１３に出力する。また、通信部１１は、制御部１３において識別子をＵＲＬで置き換えられたＨＴＴＰリクエストをＷｅｂサーバ３に送信する。そして、通信部１１は、Ｗｅｂサーバ３によるＨＴＴＰレスポンスを受信し、制御部１３に出力する。通信部１１は、難読化処理部１３３（後述）において難読化処理を施されたＨＴＴＰリクエストを、ネットワーク４を介してクライアント端末２に送信する。このように、通信部１１は、難読化処理部１３３によって難読化された情報を含む通信を送信先へ送信する。
【００３０】
記憶部１２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現され、通信装置１０を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが記憶される。記憶部１２は、静的ファイル置換リスト記憶部１２１及びキーワードリスト記憶部１２２を有する。
【００３１】
静的ファイル置換リスト記憶部１２１は、Ｗｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬと、該ＵＲＬに対応する任意の文字列から成る識別子との組を記憶する。
【００３２】
図３は、静的ファイル置換リストのデータ構成の一例を示す図である。図３に示すように、静的ファイル置換リストＬ１は、各静的ファイルへのパスを示すＵＲＬと、該ＵＲＬに対応する識別子とをそれぞれ対応付けたリストである。図３の例では、１組目のＵＲＬ「cms/content/themes/a.js」には、識別子「a1Bq6」が対応付けられており、２組目のＵＲＬ「cms/content/themes/b.js」には、識別子「GA02Tp」が対応付けられている。この識別子は、ランダムな文字列からなり、任意の異なる二つのＵＲＬに対応する識別子が同じものであることはない。
【００３３】
この際、制御部１３は、この静的ファイル置換リストＬ１を参照し、クライアント端末２から送信されたＨＴＴＰリクエストの識別子を、該識別子に対応するＵＲＬに置き換える。また、制御部１３は、Ｗｅｂサーバ３によるＨＴＴＰレスポンスのうち、静的ファイル置換リストＬ１に含まれるＵＲＬを、該ＵＲＬに対応する識別に置き換える。クライアント端末２は、このＨＴＴＰレスポンスを受信した際、ＨＴＴＰリクエストに含まれる識別子を、該識別子に対応するＵＲＬに置き換える。
【００３４】
キーワードリスト記憶部１２２は、Ｗｅｂアプリケーション特有の文字列から成るキーワードのリストを記憶する。図４は、キーワードリストのデータ構成の一例を示す図である。図４に示すように、キーワードリストＬ２は、キーワードが行ごとに示されたリストである。キーワードは、後述する制御部１３における難読化処理の対象となる文字列であり、Ｗｅｂアプリケーション特有の文字列から成る。このキーワードリストＬ２では、文字列に含まれる英字は全て小文字で示される。キーワードは、例えば、Ｗｅｂアプリケーション名や、その他のＷｅｂアプリケーション特有の文字列である。
【００３５】
図４の例では、行Ｋ１にＷｅｂアプリケーション名「cms」が示され、行Ｋ２にＷｅｂアプリケーション名「excelpress」が示されている。また、行Ｋ３及び行Ｋ４には、その他のＷｅｂアプリケーション特有の文字列である「name=“generator”」、「id=“floccinaucinihilipilification”」が示されている。制御部１３（後述）は、このキーワードリストＬ２を参照して、Ｗｅｂサーバ３から送信されたＨＴＴＰレスポンスからキーワードと類似する文字列を、難読化の対象となる箇所として検出する。
【００３６】
制御部１３は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部１３は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。制御部１３は、置換部１３１、難読化対象検出部１３２（検出部）及び難読化処理部１３３を有する。
【００３７】
置換部１３１は、静的ファイル置換リスト記憶部１２１を参照し、クライアント端末２から送信されたＨＴＴＰリクエストに含まれる識別子を、該識別子に対応するＷｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬに置換する。また、置換部１３１は、静的ファイル置換リスト記憶部１２１を参照し、Ｗｅｂサーバ３から送信されたＨＴＴＰレスポンスに含まれるＷｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬを、該ＵＲＬに対応する識別子に置換する。
【００３８】
難読化対象検出部１３２は、Ｗｅｂサーバ３から送信されたＨＴＴＰレスポンスのうち、Ｗｅｂアプリケーションに関する情報が示された部分を検出する。難読化対象検出部１３２は、キーワードリスト記憶部１２２を参照し、Ｗｅｂサーバ３から送信されたＨＴＴＰレスポンスのうちキーワードと類似する文字列を、Ｗｅｂアプリケーションに関する情報として検出する。
【００３９】
難読化処理部１３３は、Ｗｅｂサーバ３とクライアント端末２との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施す。難読化処理部１３３は、難読化対象検出部１３２が検出した部分に難読化を施す。難読化処理部１３３は、ＨＴＴＰレスポンスのコンテンツタイプの種別に応じた手法を用いて、Ｗｅｂアプリケーションに関する情報が示された部分に難読化を施す。難読化処理部１３３は、難読化対象検出部１３２が検出した文字列を難読化処理後の文字列で置き換える。また、難読化処理部１３３は、ＨＴＴＰレスポンスのコンテンツタイプが画像である場合には、該画像のコメントにランダムな文字列を埋め込む。
【００４０】
［通信システムの処理の流れ］
次に、通信システム１の処理の流れの概略を説明する。図５は、図１に示す通信システム１の処理の流れの概略を説明する図である。図５では、通信装置１０については要部のみを示し、ネットワーク４の記載は省略している。
【００４１】
図５に示すように、まず、クライアント端末２が、ＨＴＴＰリクエストを、Ｗｅｂサーバ３に送信する（図５の矢印Ｙ１１参照）。このＨＴＴＰリクエストは、Ｗｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬ部分を、任意の文字列から成る識別子で置き換えたものである。通信装置１０では、このＨＴＴＰリクエストを受信すると、置換部１３１が、静的ファイル置換リスト記憶部１２１を参照し、ＨＴＴＰリクエストに含まれる識別子を、該識別子に対応するＵＲＬに置換する。そして、通信装置１０は、置換後のＨＴＴＰリクエストをＷｅｂサーバ３に送信する（図５の矢印Ｙ１２参照）。
【００４２】
続いて、このＨＴＴＰリクエストに対するＨＴＴＰレスポンスを、Ｗｅｂサーバ３が送信する（図５の矢印Ｙ２１参照）。このＨＴＴＰレスポンスを受信した通信装置１０では、まず、置換部１３１が、静的ファイル置換リスト記憶部１２１を参照し、ＨＴＴＰレスポンスに含まれるＷｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬを、該ＵＲＬに対応する識別子に置換する。置換部１３１は、置換後のＨＴＴＰレスポンスを出力する（図５の矢印Ｙ２２参照）。
【００４３】
そして、難読化対象検出部１３２は、置換後のＨＴＴＰレスポンスについて、キーワードリスト記憶部１２２を参照し、ＨＴＴＰレスポンスから、キーワードと類似する文字列を検出する。難読化対象検出部１３２は、検出結果を難読化処理部１３３に出力する（図５の矢印Ｙ２３参照）。続いて、難読化処理部１３３は、難読化対象検出部１３２が検出した部分に難読化を施す。この難読化後のＨＴＴＰレスポンスは、通信装置１０からクライアント端末２に送信される（図５の矢印Ｙ２４参照）。クライアント端末２では、ＨＴＴＰレスポンスを受信すると、ＨＴＴＰリクエストに含まれる識別子を、該識別子に対応するＵＲＬに置き換え、ＨＴＴＰレスポンスの難読化部分をデコードして表示を行う。
【００４４】
［置換部の処理］
次に、通信装置１０の各部の処理を具体的に説明する。そこで、置換部１３１の処理について説明する。図６は、図２に示す置換部１３１の処理を説明するための図である。まず、図６を参照して、ＨＴＴＰリクエストを受けた際の置換部１３１の処理について説明する。
【００４５】
図６に示すように、まず、通信システム１では、クライアント端末２が、識別子を用いてＨＴＴＰリクエスト「GET/a1Bq6」を送信する（図６の（１）及び枠Ｗ１参照）。この際、通信装置１０は、ＨＴＴＰリクエスト「GET/a1Bq6」のうち、要求対象となるＵＲＬを、対応する識別「a1Bq6」（図６の枠Ｃ１参照）に置き換えている。なお、クライアント端末２が置換後のランダムな文字列である識別子を事前に知ることはできない。
【００４６】
通信装置１０では、このＨＴＴＰリクエストを受信すると、置換部１３１が、静的ファイル置換リスト記憶部１２１から、静的ファイル置換リストＬ１を参照する（図６の（２）参照）。この際、静的ファイル置換リストＬ１の行Ｒ１に、ＨＴＴＰリクエスト内の識別子「a1Bq6」が示されている。そこで、置換部１３１は、ＨＴＴＰリクエストの識別子「a1Bq6」を、静的ファイル置換リストＬ１の行Ｒ１に示されたＵＲＬ「cms/content/themes/a.js」に置換する（図６の（３）参照）。そして、通信装置１０は、識別子「a1Bq6」をＵＲＬ「cms/content/themes/a.js」（図６の枠Ｃ１´）に置換済みのＨＴＴＰリクエスト「GET/cms/content/themes/a.js」（図６の枠Ｗ１´）を、Ｗｅｂサーバ３へ送信する（図６の（４）参照）。
【００４７】
ここで、従来のＨＴＴＰリクエストの送信について説明する。図７は、従来のＨＴＴＰリクエストの送信を説明する図である。従来では、クライアント端末２Ｐは、ＵＲＬをそのまま示したＨＴＴＰリクエスト「GET/cms/content/themes/a.js」（図７の枠Ｗ１Ｐ参照）をＷｅｂサーバ３へ送信していた（図７の（１）参照）。したがって、ＷＡＦＰによるＷｅｂアプリケーションの情報露見のおそれがあった。
【００４８】
これに対し、通信装置１０では、置換部１３１が、ＨＴＴＰリクエスト内のＵＲＬを、静的ファイル置換リストＬ１に基づき、対応する識別子に置換して、Ｗｅｂアプリケーションの情報を難読化している。
【００４９】
続いて、ＨＴＴＰレスポンスを受けた際の置換部１３１の処理について説明する。図８は、図２に示す置換部１３１の処理を説明するための図である。Ｗｅｂサーバ３は、ＨＴＴＰリクエストに対して、枠Ｗ２に示すＨＴＴＰレスポンスを送信する（図８の（１）参照）。このＨＴＴＰレスポンスを受信した通信装置１０では、まず、置換部１３１が、静的ファイル置換リストＬ１を参照し（図８の（２）参照）、ＨＴＴＰレスポンスに、静的ファイル置換リストＬ１内にあるＵＲＬが含まれるか否かを判断する。
【００５０】
この場合には、ＨＴＴＰレスポンスに、静的ファイル置換リストＬ１の行Ｒ１に示されたＵＲＬ「cms/content/themes/a.js」（図８の枠Ｃ２参照）が含まれる。このため、通信装置１０では、置換部１３１が、このＵＲＬ「cms/content/themes/a.js」を、静的ファイル置換リストＬ１の行Ｒ１に示された識別子「a1Bq6」（図８の枠Ｃ2´）に置換する（図８の（３）参照）。その後、通信装置１０は、置換済みのＨＴＴＰレスポンス（図８の枠Ｗ２´参照）をクライアント端末２へ送信する（図８の（４）参照）。なお、このＨＴＴＰレスポンスは、難読化対象検出部１３２及び難読化処理部１３３による処理後のものである。
【００５１】
ここで、従来のＨＴＴＰレスポンスの送信について説明する。図９は、従来のＨＴＴＰレスポンスの送信を説明する図である。従来では、Ｗｅｂサーバ３Ｐは、ＵＲＬをそのまま示したＨＴＴＰレスポンス（図９の枠Ｗ２Ｐ参照）をクライアント端末２Ｐへ送信していた（図９の（１）参照）。したがって、ＷＡＦＰによるＷｅｂアプリケーションの情報露見のおそれがあった。
【００５２】
これに対し、通信装置１０では、置換部１３１が、ＨＴＴＰレスポンス内のＵＲＬを、静的ファイル置換リストＬ１に基づき、対応する識別子に置換して、Ｗｅｂアプリケーションの情報を難読化している。言い換えると、通信装置１０では、置換部１３１が、HTML内に含まれるＵＲＬを、静的ファイル置換リストＬ１に基づき、対応する識別子に置換することによって、Ｗｅｂアプリケーションの情報を難読化し、ＷＡＦＰによるＷｅｂアプリケーションの情報露見を防止している。
【００５３】
［難読化対象検出部の処理］
次に、難読化対象検出部１３２の処理について説明する。難読化対象検出部１３２は、Ｗｅｂサーバ３から送信されたＨＴＴＰレスポンスの中から、難読化の対象となる箇所を検出する。
【００５４】
難読化対象検出部１３２は、キーワードリスト記憶部１２２のキーワードリストＬ２を参照して、難読化の対象となる箇所を検出する。ただし、難読化対象検出部１３２による検出処理は、ＨＴＴＰリクエストもしくはＨＴＴＰレスポンスのコンテンツタイプによって異なる。本実施の形態では、Ｗｅｂアプリケーションでよく用いられる、HTML、JavaScript（登録商標）、CSS、画像（jpg、png、gif）の４つのファイル種別に該当するコンテンツタイプのレスポンスに対して難読化処理を施す場合を例に説明する。
【００５５】
まず、難読化対象検出部１３２は、ＨＴＴＰリクエストもしくはＨＴＴＰレスポンスのコンテンツタイプを判定する。難読化対象検出部１３２は、ＨＴＴＰリクエストもしくはＨＴＴＰレスポンスのコンテンツタイプがJavaScript、CSS或いは画像であると判定した場合、検出を行わずに難読化処理部１３３へ処理を引き継ぐ。
【００５６】
これに対し、難読化対象検出部１３２は、コンテンツタイプがHTMLの場合は以下の処理を行い難読化対象の検出を行う。まず、難読化対象検出部１３２は、HTMLをタグに分割する。そして、難読化対象検出部１３２は、各タグに対して、以下に示す処理を行う。難読化対象検出部１３２は、タグ内の英大文字を英小文字に変換する。例えば、難読化対象検出部１３２は、タグ内部に、「Hello,  World」とあった場合、このタグを、「hello,  world」に変換する。そして、難読化対象検出部１３２は、キーワードリスト内の各キーワードに対して、タグ内の各位置からキーワードの長さ分の文字列を抽出する。続いて、難読化対象検出部１３２は、キーワードと抽出した文字列とが類似していれば難読化対象として検出する。
【００５７】
続いて、難読化対象検出部１３２による、キーワードと抽出された文字列との類似判定処理について説明する。この類似判定処理として、まず、難読化対象検出部１３２は、キーワードと抽出された文字列との類似度が閾値以上か否かで類似判定を行う。難読化対象検出部１３２は、例えば、Jaccard係数による類似度を算出する。この場合、難読化対象検出部１３２は、キーワードsと抽出された文字列tの最長共通部分列（Longest  Common  Subsequence：LCS）を求め、LCS(s,t)と表す。文字列uの長さを|u|として表すとき、sとtの類似度は、Jaccard係数を用いて、|LCS(s,t)|/(|s|+|t|-|LCS(s,t)|)と表される。ここで、難読化対象検出部１３２は、類似度が閾値α以上であれば、キーワードsと抽出された文字列tが類似していると判定する。
【００５８】
例えば、キーワードsが「SimCMS」、文字列tが「SCMS」であり、閾値α=0.6である場合について説明する。この場合、LCS(s,t)＝4であり、|LCS(s,t)|/(|s|+|t|-|LCS(s,t)|)＝4/(6+4-4)=0.66…となる。難読化対象検出部１３２は、|LCS(s,t)|/(|s|+|t|-|LCS(s,t)|)が、0.66…（≧α(＝0.6)）であるため、文字列tは、キーワードsと類似していると判断する。なお、Jaccard係数による類似度算出方法は、キーワードと単語との類似度の算出方法の一例であり、本実施の形態では、この方法に限定するものではない。したがって、難読化対象検出部１３２は、その他の類似度算出方法を用いることができる。
【００５９】
［難読化処理部の処理］
次に、難読化処理部１３３の処理について説明する。難読化処理部１３３は、ＨＴＴＰレスポンスのうち、難読化の対象となった箇所に難読化を施す。難読化処理部１３３が行う難読化の処理は、難読化の対象のコンテンツタイプによって異なる。そこで、対象のコンテンツタイプが、HTML、JavaScirpt、CSS、画像（jpg,png,gif）である場合に分けて、難読化処理の詳細を説明する。なお、本実施の形態では、一例として上記のコンテンツタイプを記載しているが、もちろん、上記以外のコンテンツタイプについても、難読化処理は可能である。難読化処理部１３３は、上記以外のコンテンツタイプについても、任意の文字列を埋め込み可能な箇所を検出し、その箇所に対してランダムな文字列を書き込み、難読化処理を施すことで同様に難読化処理が可能である。
【００６０】
まず、ＨＴＴＰレスポンスのうち、難読化の対象のコンテンツタイプがHTMLの場合について説明する。この場合、難読化処理部１３３が難読化する範囲は、３パターン存在する。まず、第１のパターンは、難読化対象検出部１３２によって検出された箇所のみである。第２のパターンは、難読化対象検出部１３２によって検出された箇所を含むタグ全体である。第３のパターンは、難読化対象検出部１３２によって検出された箇所からタグの最後までである。これらの第１〜第３のパターンによって難読化の範囲が変わるが、処理の内容は変わらないため、以降の説明では第１のパターンについて説明する。
【００６１】
例えば、難読化処理部１３３は、エンコード方式としてBase64を用いる。この場合、難読化処理部１３３は、以下の手順にしたがい、難読化対象検出部１３２によって検出された箇所に、難読化を施す。まず、難読化処理部１３３は、難読化対象の箇所をBase64でエンコードする。そして、難読化処理部１３３は、エンコードした文字列をデコードしてHTMLに書き込むスクリプトを難読化対象の箇所に埋め込む。このとき難読化対象の箇所がすでにスクリプト内か否かでスクリプトを「<script>」で囲むか否かが変わる。
【００６２】
図１０を参照して、難読化処理部１３３の処理を具体的に説明する。図１０は、図２に示す難読化処理部１３３の処理の一例を説明する図である。図１０は、上方の枠Ｗ３に、難読化対象検出部１３２によって検出された箇所「CMS」（枠Ｃ３−１参照）を含むタグの一例を示し、下方の枠Ｗ３´に、難読化対象検出部１３２によって検出された箇所「CMS」を難読化した後のタグを示す。難読化処理部１３３は、例えば、エンコード方式としてBase64を用いる。
【００６３】
まず、難読化処理部１３３は、難読化対象検出部１３２によって難読化対象として検出された「CMS」（枠Ｃ３−１参照）をBase64でエンコードし、「Q01Lg==」とする（枠Ｃ３−２参照）。難読化処理部１３３は、HTMLでは、「Q01Lg==」をデコードして表示するため、既存のBase64デコードライブラリである「atob」を用いる（枠Ｃ３−３参照）。難読化処理部１３３は、デコードした結果をHTMLに埋め込むため、「document.write」を用いる（枠Ｃ３−４参照）。難読化処理部１３３は、デコードされた文字列が英語以外であっても対応できるように、デコードした文字列を「escape」（枠Ｃ３−５参照）で「utf-8」にエンコードする。難読化処理部１３３は、それを「decodeURIComponenet」（枠Ｃ３−６参照）を用いてもとの文字列に戻す。
【００６４】
なお、この方法は、HTMLに難読化を施す方法の一例であるが、これに限定するものではない。このため、難読化処理部１３３は、その他の難読化方法も用いることができる。
【００６５】
次に、ＨＴＴＰレスポンスのうち、難読化の対象のコンテンツタイプがJavaScriptの場合について説明する。例えば、難読化処理部１３３は、エンコード方式として、Base64を用いる。そして、難読化処理部１３３は、以下の手順にしたがい、JavaScriptに難読化を施す。まず、難読化処理部１３３は、JavaScript全体をBase64でエンコードする。そして、難読化処理部１３３は、エンコードした文字列をデコードして評価するスクリプトを難読化対象の箇所に埋め込む。
【００６６】
図１１を参照して、難読化処理部１３３の処理を具体的に説明する。図１１は、図２に示す難読化処理部１３３の処理の一例を説明する図である。図１１は、上方の枠Ｗ４に、難読化対象であるJavaScriptの一例を示し、下方の枠Ｗ４´に、難読化後のJavaScriptを示す。難読化処理部１３３は、例えば、エンコード方式としてBase64を用いる。
【００６７】
まず、難読化処理部１３３は、難読化対象である枠Ｗ４内の「var  x  =  10;  console.log(x*x);」をBase64でエンコードし、「dmFyIHggPSAxMDsNCmNvbnNvbGUubG9nKHgqeCk7」（枠Ｃ４−１参照）とする。難読化処理部１３３は、エンコードされたものをデコードするため、既存のBase64デコードライブラリである「atob」を用いる（枠Ｃ４−２参照）。難読化処理部１３３は、atobでデコードされ、文字列としてあらわされるJavaScriptを実行するため、eval関数を用いる（枠Ｃ４−３参照）。このeval関数は、文字列としてあらわされたJavaScriptを実行するものであり、例えば、「eval(“1+1”)」は、「2」を返す。
【００６８】
なお、この方法は、JavaScriptである場合に難読化を施す方法の一例であるが、これに限定するものではない。このため、難読化処理部１３３は、その他の難読化方法も用いることができる。
【００６９】
次に、ＨＴＴＰレスポンスのうち、難読化の対象のコンテンツタイプがCSSの場合について説明する。例えば、難読化処理部１３３は、エンコード方式として、Base64を用いる。ここで、CSSがHTML内にstyleタグで埋め込まれているか、または、CSSが外部ファイルとして呼び出されているかで対応が異なる。
【００７０】
まず、図１２を参照し、CSSがHTML内にstyleタグで埋め込まれている場合について説明する。図１２は、図２に示す難読化処理部１３３の処理の一例を説明する図である。図１２は、左方の枠Ｗ５に、難読化対象であるＨＴＴＰレスポンスの要部の一例を示し、右方の枠Ｗ５´に、難読化後のＨＴＴＰレスポンスの要部の一例を示す。
【００７１】
難読化処理部１３３は、難読化対象である枠Ｗ５内のStyleタグ全体（枠Ｃ５−１参照）をBase64でエンコードする。続いて、難読化処理部１３３は、エンコードした文字列をデコードしてHTMLに書き込むスクリプトを難読化対象の箇所に埋め込む（枠Ｗ５´の枠Ｃ５−２〜Ｃ５−６）。具体的には、難読化処理部１３３は、枠Ｃ５−１のStyleタグをBase64でエンコードした「ICAgIDxzdHlsZT4NCiAgICAgIGJvZHkgeyBiYWNrZ3JvdW5kOiByZWQ7IH0gDQogICAgPC9zdHlsZT4NCg==」（枠Ｃ５−２参照）に、デコードのための「atob」関数（枠Ｃ５−３参照）を付し、「document.write」関数（枠Ｃ５−４参照）を用いて、デコードした結果をHTMLに埋め込む。そして、難読化処理部１３３は、デコードした文字列のエンコードのための「escape」（枠Ｃ５−５参照）と、もとの文字列に戻すための「decodeURIComponent」（枠Ｃ５−６参照）とをHTMLに埋め込む。
【００７２】
次に、図１３を参照し、CSSが外部ファイルとして呼び出されている場合について説明する。図１３は、図２に示す難読化処理部１３３の処理の一例を説明する図である。図１３は、左方の枠Ｗ６に、難読化対象であるＨＴＴＰレスポンスの要部の一例を示し、右方の枠Ｗ６´に、難読化後のＨＴＴＰレスポンスの要部の一例を示す。
【００７３】
難読化処理部１３３は、外部ファイルを示す箇所全体をBase64でエンコードする。そして、難読化処理部１３３は、外部ファイルを呼び出している箇所をエンコードで得られた値に置換する（枠Ｗ６´の枠Ｃ６−２）。具体的には、難読化処理部１３３は、外部ファイルを示す箇所「stylesheet"  href="a.css」（枠Ｃ６−１参照）全体をBase64でエンコードする。そして、難読化処理部１３３は、外部ファイルを呼び出している箇所をエンコードで得られた値「stylesheet"  href="data:text/css;base64,Ym9keSB7IGJhY2tncm91bmQ6IHJlZDsgfQ==」に置換する（枠Ｗ６´の枠Ｃ６−２）。
【００７４】
なお、この方法は、CSSである場合に難読化を施す方法の一例であるが、これに限定するものではない。このため、難読化処理部１３３は、その他の難読化方法も用いることができる。
【００７５】
次に、ＨＴＴＰレスポンスのうち、難読化の対象のコンテンツタイプが画像（jpg,png,gifファイル）の場合について説明する。画像にはコメントを埋め込む箇所がある。難読化処理部１３３は、このような箇所に対してランダムな文字列を埋め込む。この結果、ＷＡＦＰが画像のハッシュ値を用いた比較を行って場合であっても、異なるハッシュ値を返すことができ、ＷＡＦＰによるＷｅｂアプリケーションの情報露見を防ぐことができる。
【００７６】
この場合、難読化処理部１３３は、既存のツールを用いて画像にコメントを追加する。具体的には、難読化処理部１３３が、使用するツールとして「exiftool」を選択した場合、コマンド「exiftool−comment=vV12ca5  sample.jpg」を実行する。このコマンドのうち、「vV12ca5」はランダムに生成されたコメントである。この「vV12ca5」の追加によりハッシュ値が変更される。
【００７７】
［実施例１］
次に、図１４を参照して、通信システム１における通信例を説明する。図１４は、図１に示す通信システム１における通信例を説明する図である。
【００７８】
まず、クライアント端末２から、ＨＴＴＰリクエスト「GET/index.php」がＷｅｂサーバ３へ送られる場合（図１４の（１）参照）について説明する。この場合、通信装置１０を介して、ＨＴＴＰリクエストを受信したＷｅｂサーバ３から、このＨＴＴＰリクエストに対するＨＴＴＰレスポンス（枠Ｗ７参照）が送られる（図１４の（２）参照）。通信装置１０は、このＨＴＴＰレスポンスに難読化を施したＨＴＴＰレスポンス（枠Ｗ７´参照）をクライアント端末２に送信する（図１４の（３）参照）。
【００７９】
この場合、通信装置１０では、ＨＴＴＰレスポンスの枠Ｃ７−１内に、静的ファイル置換リストＬ１に示されたＵＲＬ「cms/content/themes/a.js」（図３の１行目参照）が示される。このため、置換部１３１が、このＵＲＬ「cms/content/themes/a.js」を対応する識別子「a1Bq6」に置換し、ＨＴＴＰリクエスト内に埋め込む（枠Ｃ７−１´参照）。また、通信装置１０では、ＨＴＴＰレスポンスの枠Ｃ７−２内に、難読化対象検出部１３２によって検出された箇所「CMS」があるため、難読化処理部１３３は、図１０で説明したように、Base64を用いて「CMS」を難読化した「<script>var  d=document;d.open();d.write(decodeURIComponent(escape(atob(“Q01Lg==”))));d.close();</scipt>」をＨＴＴＰリクエスト内に埋め込む（枠Ｃ７−２´参照）。
【００８０】
［実施例２］
次に、図１５を参照して、通信システム１における他の通信例を説明する。図１５は、図１に示す通信システム１における他の通信例を説明する図である。
【００８１】
まず、クライアント端末２から、ＨＴＴＰリクエスト「GET/a1Bq6」（枠Ｗ８参照）がＷｅｂサーバ３へ送られる場合（図１５の（４）参照）について説明する。ここで、クライアント端末２が送信するＨＴＴＰリクエストは、ＵＲＬに対応する部分を、該ＵＲＬに対応する識別子「a1Bq6」（枠Ｃ８参照）に置き換えたものである。この場合、通信装置１０は、ＨＴＴＰリクエストを受信すると、静的ファイル置換リストＬ１を参照して、ＨＴＴＰリクエスト内の識別子「a1Bq6」を、ＵＲＬ「cms/content/themes/a.js」（枠Ｃ８−１参照）に戻したＨＴＴＰリクエストを、Ｗｅｂサーバ３へ送信する（図１５の（５）参照）。
【００８２】
そして、Ｗｅｂサーバ３から、このＨＴＴＰリクエストに対するＨＴＴＰレスポンス（枠Ｗ９参照）が通信装置１０に送られる（図１５の（６）参照）。この場合、ＨＴＴＰレスポンスに難読化すべき個所が存在しなかったため、通信装置１０から、このＨＴＴＰレスポンスがそのままクライアント端末に送られる（図１５の（７）参照）。
【００８３】
［通信装置が行うＨＴＴＰリクエストに対する処理］
次に、図１６を参照して、通信装置１０が行うＨＴＴＰリクエストに対する処理の処理手順について説明する。図１６は、図２に示す通信装置１０が行うＨＴＴＰリクエストに対する処理の処理手順のフローチャートである。
【００８４】
図１６に示すように、通信装置１０では、ＨＴＴＰリクエストを受信すると（ステップＳ１）、静的ファイル置換リスト記憶部１２１を参照し、置換部１３１が、ＨＴＴＰリクエストに静的ファイル置換リストＬ１に含まれる識別子が存在するか否かを判断する（ステップＳ２）。置換部１３１が、ＨＴＴＰリクエストに静的ファイル置換リストＬ１に含まれる識別子が存在すると判断した場合（ステップＳ２：Ｙｅｓ）、この識別子を、該識別子に対応するＵＲＬに置換する第１の置換処理を行う（ステップＳ３）。通信装置１０は、ＨＴＴＰリクエストに静的ファイル置換リストＬ１に含まれる識別子が存在しないと判断した場合（ステップＳ２：Ｎｏ）またはステップＳ３終了後、ＨＴＴＰリクエストをＷｅｂサーバ３に送信して（ステップＳ４）、処理を終了する。
【００８５】
［通信装置が行うＨＴＴＰレスポンスに対する処理］
次に、図１７を参照して、通信装置１０が行うＨＴＴＰレスポンスに対する処理の処理手順について説明する。図１７は、図２に示す通信装置１０が行うＨＴＴＰレスポンスに対する処理の処理手順のフローチャートである。
【００８６】
図１７に示すように、通信装置１０では、ＨＴＴＰレスポンスを受信すると（ステップＳ１１）、静的ファイル置換リスト記憶部１２１を参照し、置換部１３１が、ＨＴＴＰリクエストに静的ファイル置換リストＬ１に含まれるＵＲＬが存在するか否かを判断する（ステップＳ１２）。置換部１３１が、ＨＴＴＰレスポンスに静的ファイル置換リストＬ１に含まれるＵＲＬが存在すると判定した場合（ステップＳ１２：Ｙｅｓ）、このＵＲＬを、該ＵＲＬに対応する識別子に置換する第２の置換処理を行う（ステップＳ１３）。
【００８７】
通信装置１０は、ＨＴＴＰレスポンスに静的ファイル置換リストＬ１に含まれる識別子が存在しないと判断した場合（ステップＳ１２：Ｎｏ）またはステップＳ１３終了後、難読化対象検出部１３２は、ＨＴＴＰレスポンスのコンテンツタイプが、難読化対象の検出対象であるか、または、難読化対象の検出対象ではないかを判定する（ステップＳ１４）。難読化対象検出部１３２は、例えば、上述したように、ＨＴＴＰレスポンスのコンテンツタイプが、JavaScript、CSS或いは画像でない場合には、難読化対象の対象でないと判定し（ステップＳ１４：検出対象でない）、難読化対象検出処理を行わずに、ステップＳ１７に進む。
【００８８】
これに対し、難読化対象検出部１３２は、例えば、上述したように、ＨＴＴＰレスポンスのコンテンツタイプが、HTMLである場合には、難読化対象であると判定し（ステップS１４：検出対象）、難読化対象検出処理を行う（ステップＳ１５）。
【００８９】
続いて、難読化処理部１３３は、ＨＴＴＰレスポンスのコンテンツタイプの種別に応じた手法を用いて、ＨＴＴＰレスポンスのＷｅｂアプリケーションに関する情報が示された部分に難読化処理を行う（ステップＳ１６）。
【００９０】
例えば、難読化処理部１３３は、ＨＴＴＰレスポンスのコンテンツタイプがHTMLである場合には、難読化対象検出部１３２が検出した、Ｗｅｂアプリケーションに関する情報に対応する文字列を、難読化を施した結果の文字列で置き換える。また、難読化処理部１３３は、例えば、ＨＴＴＰレスポンスのコンテンツタイプがJavaScriptである場合には、JavaScript全体をBase64でエンコードし、エンコードした文字列をデコードして評価するスクリプトを埋め込む。
【００９１】
また、難読化処理部１３３は、例えば、ＨＴＴＰレスポンスのコンテンツタイプがCSSであり場合には、CSSが埋め込まれているStyleタグ全体、または、CSSが外部ファイルとして呼び出されている場合には外部ファイルを呼び出している箇所を、Base64でエンコードし、エンコードした文字列をデコードしてHTMLに書き込むスクリプトを埋め込む。また、また、難読化処理部１３３は、例えば、ＨＴＴＰレスポンスのコンテンツタイプが画像の場合には、画像のコメントに任意のランダムな文字列を埋め込む。
【００９２】
そして、通信装置１０は、通信部１１から、難読化処理後のＨＴＴＰレスポンスを、クライアント端末２に送信し（ステップＳ１７）、処理を終了する。
【００９３】
［難読化対象検出処理の処理手順］
次に、図１８を参照して、図１７に示す難読化対象検出処理（ステップＳ１５）の処理手順について説明する。図１８は、図１７に示す難読化対象検出処理の処理手順を示すフローチャートである。
【００９４】
図１８に示すように、難読化対象検出部１３２は、キーワードリスト記憶部１２２を参照し、ＨＴＴＰレスポンスに含まれる文字列と、キーワードリストのキーワードとの類似判定を行い、ＨＴＴＰレスポンスに、キーワードリストに含まれているキーワードと類似する文字列が有るか否かを判定する（ステップＳ２１）。難読化対象検出部１３２は、ＨＴＴＰレスポンスに、キーワードリストに含まれているキーワードと類似する文字列が有ると判定した場合（ステップＳ２１：Ｙｅｓ）、類似する文字列をそれぞれ検出する（ステップＳ２２）。難読化対象検出部１３２は、ＨＴＴＰレスポンスに、キーワードリストに含まれているキーワードと類似する文字列がないと判定した場合（ステップＳ２１：Ｎｏ）、または、ステップＳ２２終了後、難読化対象検出処理を終了する。
【００９５】
［実施の形態の効果］
このように、本実施の形態では、Ｗｅｂサーバのプロキシとして設けられた通信装置１０が、Ｗｅｂサーバ３とクライアント端末２との間の通信に含まれる情報のうち、Ｗｅｂアプリケーションに関する情報に難読化を施し、難読化された情報を含む通信を送信先へ送信する。したがって、本実施の形態によれば、通信装置１０が、Ｗｅｂサーバ３とクライアント端末２との間の通信を中継しつつ、Ｗｅｂアプリケーション自体を改変することなく、通信に含まれる情報のうちＷｅｂアプリケーションに関する部分のみを改変する。これによって、本実施の形態によれば、Ｗｅｂアプリケーション自体を改変しないため、Ｗｅｂブラウザ上での表示や機能を改変することなく、Ｗｅｂアプリケーションに関する情報のみを難読化するため、ＷＡＦＰによるＷｅｂアプリケーション情報の露見を防ぐことができる。
【００９６】
また、通信装置１０では、Ｗｅｂサーバ３から送信されたＨＴＴＰレスポンスのコンテンツタイプの種別に応じた手法を用いて、Ｗｅｂアプリケーションに関する情報が示された部分に難読化を施すため、各コンテンツタイプに応じた適切な難読化が実行される。
【００９７】
また、通信装置１０では、Ｗｅｂサーバから送信されたＨＴＴＰレスポンスがHTMLである場合には、Ｗｅｂアプリケーション特有の文字列から成るキーワードを示すキーワードリストを参照し、ＨＴＴＰレスポンスのうちキーワードと類似する文字列を、Ｗｅｂアプリケーションに関する情報として検出する。そして、通信装置１０では、検出した文字列を任意の文字列で置き換えて、適切にＷｅｂアプリケーションの情報が露見し難い難読化を実行している。
【００９８】
また、通信装置１０では、ＨＴＴＰレスポンスのコンテンツタイプが画像である場合には、該画像のコメントに任意のランダムな文字列を埋め込むことによって、ハッシュ値の変更を行っている。本実施の形態によれば、ＨＴＴＰレスポンスのコンテンツタイプが画像である場合にも、ＷＡＦＰによるＷｅｂアプリケーション情報の露見の防止が可能である。
【００９９】
また、本実施の形態では、通信装置１０は、予め、Ｗｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬと該ＵＲＬに対応する任意の文字列から成る識別子との組を記憶している。そして、クライアント端末２から送信されたＨＴＴＰリクエストは、通信装置１０によって、このＨＴＴＰリクエストに含まれる識別子が、該識別子に対応するＵＲＬに置換され、Ｗｅｂサーバ３に送信される。これによって、通信システム１では、ネットワーク上ではＵＲＬの露見を防止するとともに、Ｗｅｂサーバ３には、要求されたＵＲＬを示すＨＴＴＰリクエストを送信して、適切な通信を可能にしている。
【０１００】
そして、本実施の形態では、通信装置１０は、Ｗｅｂサーバから送信されたＨＴＴＰレスポンスに含まれるＷｅｂアプリケーション特有の静的ファイルへのパスを示すＵＲＬを、該ＵＲＬに対応する識別子に置換している。これによって、通信システム１によれば、ネットワーク上ではＵＲＬが露見しないように処理したＨＴＴＰレスポンスをクライアント端末２に送信しているため、ＷＡＦＰによるＷｅｂアプリケーション情報の露見の防止が可能である。
【０１０１】
したがって、本実施の形態によれば、Ｗｅｂサーバ３のプロキシである通信装置１０が、クライアント端末２とＷｅｂサーバ３との間の通信を精査し、Ｗｅｂアプリケーションに関する情報を難読化するため、Webブラウザ上での表示や機能を改変することなく、Ｗｅｂアプリケーションの情報が露見し難い難読化を実行している。
【０１０２】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１０３】
また、本実施の形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的におこなうこともでき、あるいは、手動的に行なわれるものとして説明した処理の全部又は一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１０４】
［プログラム］
図１９は、プログラムが実行されることにより、通信装置１０が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【０１０５】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【０１０６】
ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、通信装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、通信装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤ（Solid  State  Drive）により代替されてもよい。
【０１０７】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【０１０８】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【０１０９】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【０１１０】
１  通信システム
２  クライアント端末
３  Ｗｅｂサーバ
４  ネットワーク
１０  通信装置
１１  通信部
１２  記憶部
１３  制御部
１２１  静的ファイル置換リスト記憶部
１２２  キーワードリスト記憶部
１３１  置換部
１３２  難読化対象検出部
１３３  難読化処理部
【図１】
2019082818.tif 000003
【図２】
2019082818.tif 000004
【図３】
2019082818.tif 000005
【図４】
2019082818.tif 000006
【図５】
2019082818.tif 000007
【図６】
2019082818.tif 000008
【図７】
2019082818.tif 000009
【図８】
2019082818.tif 000010
【図９】
2019082818.tif 000011
【図１０】
2019082818.tif 000012
【図１１】
2019082818.tif 000013
【図１２】
2019082818.tif 000014
【図１３】
2019082818.tif 000015
【図１４】
2019082818.tif 000016
【図１５】
2019082818.tif 000017
【図１６】
2019082818.tif 000018
【図１７】
2019082818.tif 000019
【図１８】
2019082818.tif 000020
【図１９】
2019082818.tif 000021
【図２０】
2019082818.tif 000022
【図２１】
2019082818.tif 000023
【国際調査報告】
2019082818.tif 000024
2019082818.tif 000025
2019082818.tif 000026
2019082818.tif 000027