(57)【要約】【課題】暴露型ウィルスなどの不正プログラムの活動を検出することにより、情報の漏洩を防ぐ。【解決手段】メッセージ生成部２１は、送信するメッセージを生成する。検証情報生成部２２は、メッセージ生成部２１がメッセージを生成するごとに異なる検証情報を生成する。検証情報付加部２３は、メッセージ生成部２１が生成したメッセージに、検証情報生成部２２が生成した検証情報を付加する。メッセージ送信部２４は、検証情報付加部２３が検証情報を付加したメッセージを送信する。【選択図】図３
2014021509.tif 000002
【特許請求の範囲】
【請求項１】
端末装置と、不正検出装置とを有する不正検出システムにおいて、
上記端末装置は、
送信するメッセージを生成するメッセージ生成部と、
上記メッセージ生成部がメッセージを生成するごとに異なる検証情報を生成する検証情報生成部と、
上記メッセージ生成部が生成したメッセージに、上記検証情報生成部が生成した検証情報を付加する検証情報付加部と、
上記検証情報付加部が上記検証情報を付加したメッセージを送信するメッセージ送信部とを有し、
上記不正検出装置は、
上記端末装置が送信したメッセージを取得するメッセージ取得部と、
上記メッセージ取得部が取得したメッセージに付加された検証情報を検証することにより、上記メッセージが正当であるか否かを判定するメッセージ検証部とを有する
ことを特徴とする不正検出システム。
【請求項２】
上記検証情報生成部は、現在の時刻を含む情報に基づいて、上記検証情報を生成し、
上記メッセージ検証部は、上記メッセージ取得部が上記メッセージを取得した時刻に基づいて、上記検証情報生成部が上記検証情報の生成に用いた時刻の候補を複数算出し、算出した複数の時刻の候補それぞれに基づいて、上記検証情報を検証し、いずれかの時刻の候補において検証に成功した場合に、上記メッセージが正当であると判定する
ことを特徴とする請求項１に記載の不正検出システム。
【請求項３】
上記端末装置は、
上記検証情報生成部が上記検証情報を生成する生成方式を表わす情報を記憶する生成方式記憶部を有し、
上記検証情報生成部は、上記生成方式記憶部が記憶した情報によって表される生成方式に基づいて、上記検証情報を生成し、
上記不正検出装置は、
上記生成方式記憶部が記憶した情報によって表される生成方式に対応する検証方式を表す情報を記憶する検証方式記憶部を有し、
上記メッセージ検証部は、上記検証方式記憶部が記憶した情報によって表される検証方式に基づいて、上記検証情報を検証する
ことを特徴とする請求項１または請求項２に記載の不正検出システム。
【請求項４】
上記生成方式記憶部が記憶した情報は、上記メッセージに含まれるデータを含む複数のデータのうち、どのデータをどのような順序で用いるかを表わし、
上記検証情報生成部は、上記メッセージに含まれるデータを含む複数のデータから、上記生成方式記憶部が記憶した情報によって表わされるデータを抽出し、抽出したデータを、上記生成方式記憶部が記憶した情報によって表わされる順序で結合し、結合したデータのハッシュ値を算出して、上記検証情報とし、
上記検証方式記憶部が記憶した情報は、上記生成方式記憶部が記憶した情報と同じ内容を表わし、
上記メッセージ検証部は、上記メッセージに含まれるデータを含む複数のデータから、上記検証方式記憶部が記憶した情報によって表わされるデータを抽出し、抽出したデータを、上記検証方式記憶部が記憶した情報によって表わされる順序で結合し、結合したデータのハッシュ値を算出し、算出したハッシュ値と、上記検証情報とが一致するか否かを判定することにより、上記検証情報を検証する
ことを特徴とする請求項３に記載の不正検出システム。
【請求項５】
上記不正検出装置は、
ネットワークに接続し、上記メッセージが正当であると上記メッセージ検証部が判定した場合に、上記端末装置に代理して、上記メッセージを上記ネットワークに対して送信する代理送信部を有する
ことを特徴とする請求項１乃至請求項４のいずれかに記載の不正検出システム。
【請求項６】
上記不正検出装置は、
上記メッセージ取得部が取得したメッセージから、上記検証情報付加部が付加した検証情報を削除する検証情報削除部を有し、
上記代理送信部は、上記検証情報削除部が上記検証情報を削除したメッセージを上記ネットワークに対して送信する
ことを特徴とする請求項５に記載の不正検出システム。
【請求項７】
上記不正検出装置は、
上記メッセージ取得部が取得したメッセージのログを記録するログ記録部を有し、
上記メッセージ検証部は、上記ログ記録部が記録したログに基づいて、上記メッセージが正当であるか否かを判定する
ことを特徴とする請求項１乃至請求項６のいずれかに記載の不正検出システム。
【請求項８】
上記メッセージ生成部が生成するメッセージは、ハイパーテキスト転送プロトコルにおけるリクエストであり、
上記検証情報付加部は、上記検証情報生成部が生成した検証情報を、上記リクエストのユーザエージェントフィールドに付加する
ことを特徴とする請求項１乃至請求項７のいずれかに記載の不正検出システム。
【請求項９】
送信するメッセージを生成するメッセージ生成部と、
上記メッセージ生成部がメッセージを生成するごとに異なる検証情報を生成する検証情報生成部と、
上記メッセージ生成部が生成したメッセージに、上記検証情報生成部が生成した検証情報を付加する検証情報付加部と、
上記検証情報付加部が上記検証情報を付加したメッセージを送信するメッセージ送信部と
を有することを特徴とする端末装置。
【請求項１０】
端末装置が送信したメッセージを取得するメッセージ取得部と、
上記メッセージ取得部が取得したメッセージに付加された検証情報を検証することにより、上記メッセージが正当であるか否かを判定するメッセージ検証部と
を有することを特徴とする不正検出装置。
【請求項１１】
コンピュータが実行することにより、請求項１乃至請求項８のいずれかに記載の不正検出システムまたは請求項９に記載の端末装置または請求項１０に記載の不正検出装置として上記コンピュータが機能することを特徴とするコンピュータプログラム。
【請求項１２】
端末装置と、不正検出装置とを有する不正検出システムにおける不正検出方法において、
上記端末装置のメッセージ生成部が、送信するメッセージを生成し、
上記端末装置の検証情報生成部が、上記メッセージ生成部がメッセージを生成するごとに異なる検証情報を生成し、
上記端末装置の検証情報付加部が、上記メッセージ生成部が生成したメッセージに、上記検証情報生成部が生成した検証情報を付加し、
上記端末装置のメッセージ送信部が、上記検証情報付加部が上記検証情報を付加したメッセージを送信し、
上記不正検出装置のメッセージ取得部が、上記端末装置が送信したメッセージを取得し、
上記不正検出装置のメッセージ検証部が、上記メッセージ取得部が取得したメッセージに付加された検証情報を検証することにより、上記メッセージが正当であるか否かを判定する
ことを特徴とする不正検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータウィルスなどの不正プログラムが送信したメッセージを検出する不正検出システムに関する。
【背景技術】
【０００２】
情報の漏洩を防ぐため、組織内のネットワークと、インターネットなど外部のネットワークとの間を接続するゲートウェイ装置やプロキシ装置などの中継装置において、許可された通信以外の通信を遮断する技術がある。
しかし、インターネットなどから情報を得るため、組織内のネットワークに接続した端末装置から外部のネットワークに接続したサーバ装置へ向けて送信されるハイパーテキスト転送プロトコル（ＨＴＴＰ）におけるリクエストと、それに対する応答として外部から内部へ向けて送信されるレスポンスは、遮断しない設定となっている場合がある。
特許文献１には、端末装置と中継装置との間で暗号化通信を確立し、中継装置とサーバ装置との間で別の暗号化通信を確立することにより、中継装置において、暗号化通信の内容を復号して確認できるようにした技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１５１７８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
暴露型ウィルスと呼ばれる不正プログラムは、ウェブブラウザなどの正当なプログラムになりすまして、ＨＴＴＰリクエストを送信する。不正プログラムが送信するＨＴＴＰリクエストは、端末装置から入手した情報を含む。不正プログラムがＨＴＴＰリクエストを送信する送信先は、不正者のサーバ装置である。不正者は、受信したＨＴＴＰリクエストから漏洩した情報を入手する。
特許文献１に記載の技術では、送信される情報の内容を確認することはできるが、それを送信したのが、正当なプログラムであるか、不正プログラムであるかを判別することはできない。
この発明は、例えば、暴露型ウィルスなどの不正プログラムの活動を検出することにより、情報の漏洩を防ぐことを目的とする。
【課題を解決するための手段】
【０００５】
この発明にかかる不正検出システムは、
端末装置と、不正検出装置とを有する不正検出システムにおいて、
上記端末装置は、
送信するメッセージを生成するメッセージ生成部と、
上記メッセージ生成部がメッセージを生成するごとに異なる検証情報を生成する検証情報生成部と、
上記メッセージ生成部が生成したメッセージに、上記検証情報生成部が生成した検証情報を付加する検証情報付加部と、
上記検証情報付加部が上記検証情報を付加したメッセージを送信するメッセージ送信部とを有し、
上記不正検出装置は、
上記端末装置が送信したメッセージを取得するメッセージ取得部と、
上記メッセージ取得部が取得したメッセージに付加された検証情報を検証することにより、上記メッセージが正当であるか否かを判定するメッセージ検証部とを有する
ことを特徴とする。
【発明の効果】
【０００６】
この発明にかかる不正検出システムによれば、暴露型ウィルスなどの不正プログラムの活動を検出することにより、情報の漏洩を防ぐことができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１における不正検出システム１０の構成の一例を示す図。
【図２】実施の形態１におけるコンピュータ９０のハードウェア資源の一例を示す図。
【図３】実施の形態１における端末装置１２の機能ブロックの構成の一例を示す図。
【図４】実施の形態１におけるログ記録装置１３の機能ブロックの構成の一例を示す図。
【図５】実施の形態１における不正検出システム１０で扱われるデータの一例を示す図。
【図６】実施の形態１における不正検出システム１０で扱われるデータの別の例を示す図。
【図７】実施の形態２における不正検出システム１０の構成の一例を示す図。
【図８】実施の形態２における検出装置１４の機能ブロックの構成の一例を示す図。
【図９】実施の形態２における検証情報生成部２２の詳細ブロックの構成の一例を示す図。
【図１０】実施の形態２におけるメッセージ検証部４２の詳細ブロックの構成の一例を示す図。
【図１１】実施の形態２における時刻候補算出部４２２の動作の一例を示す図。
【図１２】実施の形態２における検証処理７２の流れの一例を示す図。
【図１３】実施の形態３におけるメッセージ検証部４２の詳細ブロックの構成の一例を示す図。
【図１４】実施の形態３における検証処理７２の流れの一例を示す図。
【図１５】実施の形態４における端末装置１２の機能ブロックの構成の一例を示す図。
【図１６】実施の形態４におけるメッセージ検証部４２の詳細ブロックの構成の一例を示す図。
【図１７】実施の形態５における端末装置１２の機能ブロックの構成の一例を示す図。
【図１８】実施の形態５における検出装置１４の機能ブロックの構成の一例を示す図。
【図１９】実施の形態６における不正検出システム１０の構成の一例を示す図。
【図２０】実施の形態６における中継装置１６の機能ブロックの構成の一例を示す図。
【図２１】実施の形態７における中継装置１６の機能ブロックの構成の一例を示す図。
【発明を実施するための形態】
【０００８】
実施の形態１．
実施の形態１について、図１〜図６を用いて説明する。
【０００９】
図１は、この実施の形態における不正検出システム１０の構成の一例を示す図である。
【００１０】
不正検出システム１０は、例えば、端末装置１２と、ログ記録装置１３とを有する。なお、不正検出システム１０は、端末装置１２やログ記録装置１３を複数有する構成であってもよい。
端末装置１２は、インターネットなどのネットワーク１８を介して、サーバ装置１９などとの間で通信をする。サーバ装置１９は、不正検出システム１０の外部に多数存在する。例えば、端末装置１２は、サーバ装置１９に対して、ＨＴＴＰリクエストを送信し、それに対する応答としてサーバ装置１９が送信したＨＴＴＰレスポンスを受信する。
ログ記録装置１３は、端末装置１２がした通信のログを記録する。例えば、ログ記録装置１３は、端末装置１２が送信したＨＴＴＰリクエストのログをとる。
【００１１】
図２は、この実施の形態におけるコンピュータ９０のハードウェア資源の一例を示す図である。
【００１２】
図１で説明した端末装置１２やログ記録装置１３は、例えば、コンピュータ９０である。コンピュータ９０は、例えば、制御装置９１と、入力装置９２と、出力装置９３と、記憶装置９４と、演算装置９５とを有する。
制御装置９１は、記憶装置９４が記憶したコンピュータプログラムを実行することにより、コンピュータ９０全体を制御し、コンピュータ９０を端末装置１２やログ記録装置１３として機能させる。
記憶装置９４は、制御装置９１が実行するコンピュータプログラムや、演算装置９５が演算に用いるデータなどを記憶する。記憶装置９４は、例えば、揮発性メモリや不揮発性メモリなどの半導体メモリや、磁気ディスク装置や光学ディスク装置などの外部記憶装置などである。
演算装置９５は、記憶装置９４が記憶したデータなどを用いて、算術演算や論理演算などの演算をして、演算結果を表わすデータを生成する。演算装置９５が生成したデータは、例えば、記憶装置９４が記憶する。
入力装置９２は、コンピュータ９０の外部から情報を入力して、データに変換する。入力装置９２が変換したデータは、例えば、記憶装置９４が記憶し、あるいは、演算装置９５が演算に用いる。入力装置９２は、例えば、キーボードやマウスなどの操作入力装置、マイクなどの音声入力装置、カメラやスキャナなどの画像入力装置、温度や電圧などの物理量を測定するセンサ装置、外部の装置がコンピュータ９０に対して送信した信号を受信して復調する受信装置などである。
出力装置９３は、記憶装置９４が記憶したデータや演算装置９５が生成したデータなどを変換してコンピュータ９０の外部へ出力する。出力装置９３は、例えば、液晶表示装置などの表示装置、プリンタなどの印刷装置、スピーカなどの音声出力装置、変調した信号を生成して外部の装置に対して送信する送信装置などである。
なお、コンピュータ９０は、制御装置９１や入力装置９２や出力装置９３や記憶装置９４や演算装置９５を複数有する構成であってもよい。また、例えば、通信装置が入力装置９２としての機能と出力装置９３としての機能とを兼ね備えるなど、物理的に一つの装置が複数の機能を兼ね備える構成であってもよい。
【００１３】
以下に説明する端末装置１２やログ記録装置１３の機能ブロックは、記憶装置９４が記憶したコンピュータプログラムを制御装置９１が実行することにより実現される。しかし、これらの機能ブロックのうちの一部または全部は、他の電気的構成や機械的構成などによって実現されるものであってもよい。
【００１４】
図３は、この実施の形態における端末装置１２の機能ブロックの構成の一例を示す図である。
【００１５】
端末装置１２は、例えば、メッセージ生成部２１と、検証情報生成部２２と、検証情報付加部２３と、メッセージ送信部２４と、現在時刻取得部２９とを有する。
【００１６】
現在時刻取得部２９は、現在の時刻を取得する。例えば、現在時刻取得部２９は、入力装置９２を用いて、時計が計測した現在の時刻を取得する。時計は、端末装置１２が内蔵する構成であってもよいし、時刻サーバ装置など外部の装置が有する構成であってもよい。
【００１７】
メッセージ生成部２１は、演算装置９５を用いて、メッセージを生成する。メッセージ生成部２１が生成するメッセージは、例えばサーバ装置１９に対して送信するためのものである。
【００１８】
検証情報生成部２２は、演算装置９５を用いて、検証情報を生成する。検証情報生成部２２が生成する検証情報は、メッセージ生成部２１が生成したメッセージを検証するためのものである。検証情報生成部２２は、メッセージに含まれる情報に基づいて、検証情報を生成する。なお、検証情報生成部２２は、メッセージ生成部２１が同じメッセージを生成した場合でも、メッセージごとに異なる検証情報を生成する。検証情報生成部２２は、メッセージ生成部２１がメッセージを生成するごとに変化する情報と、メッセージに含まれる情報とに基づいて、検証情報を生成する。
【００１９】
メッセージ生成部２１がメッセージを生成するごとに変化する情報には、例えば、現在の時刻がある。なお、ここでいう「現在の時刻」とは、メッセージ生成部２１がメッセージを生成した時刻であってもよいし、検証情報生成部２２が検証情報を生成する時刻であってもよいし、メッセージ送信部２４がメッセージを送信する予定の時刻であってもよい。検証情報生成部２２は、例えば、現在時刻取得部２９が取得した現在の時刻を使って、検証情報を生成する。
現在の時刻は、例えば「年」「月」「日」「時」「分」「秒」「ミリ秒」などの情報によって表わされる。現在時刻取得部２９が取得した現在の時刻があまり正確でない場合を考慮すると、検証情報生成部２２は、あまり細かい情報は使わない構成であることが望ましい。例えば、検証情報生成部２２は、「年」「月」「日」「時」「分」の情報だけを使い、「秒」「ミリ秒」の情報は使わずに、検証情報を生成する。
【００２０】
検証情報付加部２３は、演算装置９５を用いて、メッセージ生成部２１が生成したメッセージに、検証情報生成部２２が生成した検証情報を付加したメッセージを生成する。
メッセージ送信部２４は、出力装置９３を用いて、検証情報付加部２３が検証情報を付加したメッセージを送信する。
【００２１】
メッセージ生成部２１が生成するメッセージは、例えばＨＴＴＰリクエストである。
メッセージ生成部２１及びメッセージ送信部２４を実現するコンピュータプログラムは、例えばウェブブラウザプログラムである。ウェブブラウザプログラムは、機能拡張プログラムを追加するためのアドオンと呼ばれる機能を有する。検証情報生成部２２及び検証情報付加部２３を実現するコンピュータプログラムは、例えば、アドオン機能によってウェブブラウザプログラムに追加された機能拡張プログラムである。
アドオン機能によって検証情報生成部２２及び検証情報付加部２３が追加される前において、メッセージ送信部２４は、メッセージ生成部２１が生成したメッセージをそのまま送信する。アドオン機能によって検証情報生成部２２及び検証情報付加部２３が追加されることにより、メッセージ送信部２４は、メッセージ生成部２１が生成したメッセージではなく、検証情報付加部２３が検証情報を付加したメッセージを送信するようになる。
【００２２】
このように、ウェブブラウザプログラムのアドオン機能を使うことによって、ここで述べた機能ブロックを有する端末装置１２を、容易に構成することができる。
【００２３】
なお、端末装置１２がコンピュータウィルスに侵されている場合などにおいては、利用者が意図しない不正なプログラムを端末装置１２の制御装置９１が実行する場合がある。
不正プログラムによって実現される不正な機能ブロックは、例えばメッセージ生成部２１が生成するメッセージをまねた不正なメッセージを生成し、送信する場合がある。
【００２４】
図４は、この実施の形態におけるログ記録装置１３の機能ブロックの構成の一例を示す図である。
【００２５】
ログ記録装置１３は、例えば、メッセージ取得部３１と、ログ生成部３２と、ログ記録部３３と、現在時刻取得部３９とを有する。
【００２６】
現在時刻取得部３９は、現在の時刻を取得する。例えば、現在時刻取得部３９は、入力装置９２を用いて、時計が計測した現在の時刻を取得する。時計は、ログ記録装置１３が内蔵する構成であってもよいし、時刻サーバ装置など外部の装置が有する構成であってもよい。
【００２７】
メッセージ取得部３１は、入力装置９２を用いて、端末装置１２が送信したメッセージを取得する。メッセージ取得部３１が取得するメッセージは、通常、メッセージ送信部２４が送信したメッセージである。しかし、不正プログラムによって送信された不正なメッセージが含まれる場合がある。
メッセージ取得部３１は、現在時刻取得部３９が取得した現在の時刻に基づいて、メッセージを取得した時刻を取得する。
【００２８】
ログ生成部３２は、演算装置９５を用いて、メッセージ取得部３１が取得したメッセージや時刻からログに記録する情報を抽出し、抽出した情報を使ってログを生成する。
【００２９】
ログ記録部３３は、記憶装置９４を用いて、ログ生成部３２が生成したログを記録する。ログ記録部３３は、それまで記憶していたログの最後に、ログ生成部３２が生成したログを追加して記憶する。
【００３０】
端末装置１２が送信したメッセージのなかに、不正プログラムによって送信された不正なメッセージが含まれていた場合、ログ記録部３３が記録したログのなかに、不正なメッセージから生成されたログが残る。
【００３１】
図５は、この実施の形態における不正検出システム１０で扱われるデータの一例を示す図である。
【００３２】
メッセージ８１は、メッセージ生成部２１が生成するメッセージである。この例において、メッセージ８１は、ＨＴＴＰリクエストである。
１行目は、このＨＴＴＰリクエストが、識別子「／ｉｎｄｅｘ．ｈｔｍｌ」で識別される資源（ファイル）の送信を要求するリクエストであり、「ＨＴＴＰ／１．１」形式で記述されていることを表わす。
２行目は、ユーザエージェントフィールドであり、このＨＴＴＰリクエストを生成したプログラムが「ＢｒｏｗｓｅｒＡ」であることを表わす。
３行目は、ホストフィールドであり、このＨＴＴＰリクエストが「ＳｅｒｖｅｒＢ」に対する要求であることを表わす。
４行目は、コネクションフィールドであり、このＨＴＴＰリクエストに対するレスポンスを返したあと、コネクションの継続を要求することを表わす。
【００３３】
検証情報８２は、検証情報生成部２２が生成する検証情報である。
【００３４】
メッセージ８３は、検証情報付加部２３がメッセージ８１に検証情報８２を付加して生成し、メッセージ送信部２４が送信するメッセージである。この例において、検証情報付加部２３は、検証情報８２の前後を「（」「）」で囲み、２行目のユーザエージェントフィールドの後ろに付加する。検証情報付加部２３は、メッセージ８１のそれ以外の部分は変更せず、メッセージ８３に含める。
【００３５】
ログ８４は、ログ生成部３２がメッセージ８３から生成するログである。この例において、ログ８４は、日時８４１と、端末ＩＰ８４２と、ＵＲＬ８４３と、ユーザエージェント８４４とを含む。
日時８４１は、メッセージ取得部３１がメッセージ８３を取得した時刻を表わす。ログ生成部３２は、メッセージ取得部３１が現在時刻取得部３９から取得した時刻に基づいて、ログに記録する日時８４１を生成する。例えば、ログ生成部３２は、メッセージ取得部３１が取得した時刻から、「年」「月」「日」「時」「分」「秒」の情報を抽出し、抽出した情報から、日時８４１を生成する。
端末ＩＰ８４２は、メッセージ８３を送信した端末装置１２のＩＰアドレスを表わす。メッセージの送受信には、例えば、ＩＰパケットが用いられる。この図に示したメッセージ８３には、端末装置１２のＩＰアドレスが記載されていないが、ＩＰパケットのヘッダ部を見れば、メッセージ８３を送信した送信元である端末装置１２のＩＰアドレスを取得することができる。ログ生成部３２は、例えばこのようにして端末装置１２のＩＰアドレスを取得し、取得したＩＰアドレスから、端末ＩＰ８４２を生成する。
ＵＲＬ８４３は、メッセージ８３により送信を要求されたファイルのＵＲＬ（統一資源位置指定子）を表わす。ＵＲＬは、プロトコルを表わす部分（「ｈｔｔｐ：／／」）と、要求先のホスト名を表わす部分（「ＳｅｒｖｅｒＢ」）と、要求先のホスト内における資源の識別子を表わす部分（「／ｉｎｄｅｘ．ｈｔｍｌ」）とによって構成されている。例えば、ログ生成部３２は、メッセージ８３がＨＴＴＰリクエストであることからプロトコルを表わす部分「ｈｔｔｐ：／／」を生成する。ログ生成部３２は、メッセージ８３のホストフィールドから要求先のホスト名「ＳｅｒｖｅｒＢ」を生成する。ログ生成部３２は、メッセージ８３の１行目から資源の識別子「／ｉｎｄｅｘ．ｈｔｍｌ」を生成する。ログ生成部３２は、この３つを結合して、ＵＲＬ８４３を生成する。
ユーザエージェント８４４は、端末装置１２でメッセージ８３を生成したプログラムを表わす。ログ生成部３２は、例えば、メッセージ８３のユーザエージェントフィールドから、ユーザエージェントを生成する。
【００３６】
メッセージ８３のユーザエージェントフィールドには、検証情報生成部２２が生成した検証情報８２が付加されている。これにより、ログ記録部３３が記録するログのなかに、検証情報８２が含まれるようになる。
【００３７】
なお、検証情報８２がログに記録されればよいので、検証情報付加部２３は、ユーザエージェントフィールド以外のフィールドに検証情報８２を付加し、あるいは、検証情報を表わす新しいフィールドを追加するなどする構成であってもよい。
しかし、記載できる文字列の範囲が決まっているフィールドには、検証情報８２を付加できないし、内容を変えると意味が変わってしまうフィールドにも、検証情報８２を付加すべきではない。これに対し、ユーザエージェントフィールドは、仕様上、ユーザエージェント名のあとに括弧書きでコメントを付加できることになっているので、検証情報８２を付加するフィールドとして適している。
また、検証情報８２を表わすフィールドを新たに追加した場合、ログ生成部３２が生成するログにそのフィールドが含まれるよう、ログ生成部３２の設定を変更する必要がある。これに対し、ユーザエージェントフィールドは、通常、ログ生成部３２が生成するログに含まれる設定になっているので、ログ生成部３２の設定を変更する必要がない。
このため、検証情報付加部２３は、ユーザエージェントフィールドに検証情報８２を付加する構成であることが望ましい。
【００３８】
図６は、この実施の形態における不正検出システム１０で扱われるデータの別の例を示す図である。
【００３９】
メッセージ８５は、不正プログラムによって送信されたメッセージである。不正プログラムは、メッセージ生成部２１が生成するメッセージをまねている。このため、メッセージ８５は、メッセージ８１に酷似している。しかし、メッセージ８５は、メッセージ８３と異なり、ユーザエージェントフィールドに検証情報が付加されていない。
【００４０】
ログ生成部３２は、メッセージ８３の場合と同様、メッセージ８５からログ８４を生成する。ログ生成部３２が生成したログ８４には、ユーザエージェント８４４が含まれる。しかし、メッセージ８５のユーザエージェントフィールドに検証情報が付加されていないので、ログ８４にも、検証情報は含まれない。
【００４１】
このように、メッセージ送信部２４が送信したメッセージのログには、検証情報８２が含まれるのに対し、不正プログラムによって送信されたメッセージのログには、検証情報が含まれない。
したがって、ログ記録部３３が記録したログを調べて、検証情報が含まれないログが存在すれば、端末装置１２において不正プログラムが実行されていることがわかる。
【００４２】
上記端末装置（１２）は、メッセージ生成部（２１）と、検証情報生成部（２２）と、検証情報付加部（２３）と、メッセージ送信部（２４）とを有する。
上記メッセージ生成部は、送信するメッセージ（８１）を生成する。
上記検証情報生成部は、上記メッセージ生成部がメッセージを生成するごとに異なる検証情報（８２）を生成する。
上記検証情報付加部は、上記メッセージ生成部が生成したメッセージに、上記検証情報生成部が生成した検証情報を付加する。
上記メッセージ送信部は、上記検証情報付加部が上記検証情報を付加したメッセージ（８３）を送信する。
【００４３】
端末装置が送信したメッセージのログを記録しておくことにより、不正プログラムの活動を検出することができる。
【００４４】
上記メッセージ生成部（２１）が生成するメッセージ（８１）は、ハイパーテキスト転送プロトコルにおけるリクエスト（ＨＴＴＰリクエスト）である。
上記検証情報付加部（２３）は、上記検証情報生成部（２２）が生成した検証情報（８２）を、上記リクエストのユーザエージェントフィールドに付加する。
【００４５】
検証情報をユーザエージェントフィールドに付加することにより、ログ記録装置の設定を変えることなく、検証情報をログに記録することができる。
【００４６】
実施の形態２．
実施の形態２について、図７〜図１２を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【００４７】
図７は、この実施の形態における不正検出システム１０の構成の一例を示す図である。
【００４８】
不正検出システム１０は、端末装置１２と、ログ記録装置１３（不正検出装置）と、検出装置１４（不正検出装置）とを有する。
このうち、端末装置１２及びログ記録装置１３は、実施の形態１と同様なので、ここでは説明を省略する。
【００４９】
検出装置１４は、ログ記録装置１３が記録したログを検査することにより、不正プログラムの活動を検出する。
検出装置１４は、端末装置１２やログ記録装置１３と同様、例えば図２で説明したコンピュータ９０である。以下に説明する検出装置１４の機能ブロックは、記憶装置９４が記憶したコンピュータプログラムを制御装置９１が実行することにより実現される。しかし、これらの機能ブロックのうちの一部または全部は、他の電気的構成や機械的構成などによって実現されるものであってもよい。
【００５０】
図８は、この実施の形態における検出装置１４の機能ブロックの構成の一例を示す図である。
【００５１】
検出装置１４は、例えば、ログ取得部４１と、メッセージ検証部４２と、検出警告部４３とを有する。
ログ取得部４１は、入力装置９２を用いて、ログ記録装置１３が記録したログを取得する。
メッセージ検証部４２は、演算装置９５を用いて、ログ取得部４１が取得したログに記録された情報に基づいて、端末装置１２が送信したメッセージを検証して、メッセージが正当か否かを判定する。
検出警告部４３は、メッセージが正当でないとメッセージ検証部４２が判定した場合に、出力装置９３を用いて、警告する。例えば、検出警告部４３は、端末装置１２に対して警告メッセージを送信する。あるいは、検出警告部４３は、端末装置１２の利用者や、不正検出システムの管理者に対して、警告メールを送信する構成であってもよい。
【００５２】
図９は、この実施の形態における検証情報生成部２２の詳細ブロックの構成の一例を示す図である。
【００５３】
検証情報生成部２２は、例えば、情報抽出部２２１と、ハッシュ算出部２２３とを有する。
【００５４】
情報抽出部２２１は、演算装置９５を用いて、検証情報を生成するために使う情報を抽出する。情報抽出部２２１は、検出装置１４がメッセージを検証するときに使うことができる情報のなかから、あらかじめ定められた情報を抽出する。検出装置１４がメッセージを検証するときに使うことができる情報には、例えば、ログ記録装置１３がログに記録する情報や、端末装置１２と検出装置１４との間であらかじめ共有されている秘密情報などがある。検証情報を生成するために使う情報は、例えば、メッセージ生成部２１が生成したメッセージや、現在時刻取得部２９が取得した現在の時刻などから抽出される。
例えば、検証情報を生成するために「時刻」を使う場合、情報抽出部２２１は、現在時刻取得部２９が取得した現在の時刻から「時刻」を表わす文字列データを生成する。また、検証情報を生成するために「端末ＩＰ」を使う場合、情報抽出部２２１は、あらかじめ記憶した端末装置１２のＩＰアドレスから「端末ＩＰ」を表わす文字列データを生成する。また、検証情報を生成するために「ＵＲＬ」を使う場合、情報抽出部２２１は、メッセージ生成部２１が生成したメッセージから、ホスト名や資源の識別子を取得し、「ＵＲＬ」を表わす文字列データを生成する。
【００５５】
ハッシュ算出部２２３は、演算装置９５を用いて、情報抽出部２２１が抽出した情報に基づいて、ハッシュ値を算出する。検証情報生成部２２は、ハッシュ算出部２２３が算出したハッシュ値を検証情報とする。
例えば、ハッシュ算出部２２３は、情報抽出部２２１が抽出した情報を表わす文字列データを、あらかじめ定められた順序で連結した文字列データを生成し、生成した文字列データのハッシュ値を算出する。
ここでいう「ハッシュ値」とは、あらかじめ定められた演算方式（ハッシュ関数）により、任意の長さの文字列データから算出される所定の範囲の数値である。ハッシュ算出部２２３が使用するハッシュ関数は、同じデータからは同じハッシュ値が算出され（決定性）、元のデータからハッシュ値を算出することは計算量的に容易であるが、ハッシュ値から元のデータを算出することは、計算量的に困難である（一方向性）という性質を有する。
【００５６】
ハッシュ値は決定性を有するので、検証情報生成部２２がハッシュ値を算出したのと同じデータに基づいて、メッセージ検証部４２がハッシュ値を算出すれば、検証情報生成部２２が算出したハッシュ値と同じハッシュ値を算出することができる。
また、ハッシュ値は一方向性を有するので、ハッシュ値の算出に用いる情報や、文字列データの結合順序を秘密にしておけば、メッセージ送信部２４が送信したメッセージから、これらを知ることは極めて困難である。したがって、メッセージ検証部４２が算出するハッシュ値と同じハッシュ値を、不正プログラムが算出することは極めて困難である。
このため、ログ記録装置１３が記録したログに含まれる検証情報（ハッシュ値）と、メッセージ検証部４２が算出したハッシュ値とを比較して、一致すれば、メッセージが正当であると判定し、一致しなければ、メッセージが不正であると判定することができる。
なお、ハッシュ値の算出に使う情報のなかに、端末装置１２と検出装置１４との間であらかじめ共有されている秘密情報が含まれる構成とすれば、ハッシュ値の算出に用いる情報や、文字列データの結合順序が解読される可能性は更に低くなる。
【００５７】
図１０は、この実施の形態におけるメッセージ検証部４２の詳細ブロックの構成の一例を示す図である。
【００５８】
メッセージ検証部４２は、例えば、情報抽出部４２１と、時刻候補算出部４２２と、ハッシュ算出部４２３と、ハッシュ比較部４２４とを有する。
【００５９】
情報抽出部４２１は、演算装置９５を用いて、メッセージを検証するために使う情報を抽出する。メッセージを検証するために使う情報には、ハッシュ値を算出するために使う情報と、検証情報（ハッシュ値）とがある。メッセージを検証するために使う情報は、例えば、ログ取得部４１が取得したログなどから抽出される。
例えば、ハッシュ値を算出するために、「時刻」「端末ＩＰ」「ＵＲＬ」を使う場合、情報抽出部４２１は、ログ取得部４１が取得したログから、日時８４１と、端末ＩＰ８４２と、ＵＲＬ８４３と、ユーザエージェント８４４に含まれる検証情報とを抽出する。
【００６０】
実施の形態１で述べたように、検証情報付加部２３は、ログ生成部３２がログに記録する情報に検証情報を付加するので、情報抽出部４２１は、ログ取得部４１が取得したログから検証情報を抽出することができる。なお、ログに記録されたメッセージが不正プログラムによって送信されたものである場合、ログに検証情報が記録されていない場合がある。その場合、情報抽出部４２１は、そのログに記録されたメッセージが不正であると判定する。
【００６１】
時刻候補算出部４２２は、演算装置９５を用いて、情報抽出部４２１が抽出した「日時」から、検証情報生成部２２が検証情報を生成するときに使った「時刻」を推定する。
例えば、検証情報生成部２２が検証情報を生成した時刻から、メッセージ送信部２４が送信したメッセージをメッセージ取得部３１が取得した時刻までの間には、必ずしも一定とは限らない遅延時間が存在する。また、例えば、端末装置１２の時計とログ記録装置１３の時計とがずれているなど、現在時刻取得部２９が取得する現在の時刻と、現在時刻取得部３９が取得する現在の時刻とが、一致しない可能性もある。
このため、時刻候補算出部４２２は、ログに記録された日時の前後所定の範囲内の時刻を、検証情報生成部２２が検証情報を生成するときに使った「時刻」の候補とする。時刻候補算出部４２２は、複数の候補を算出する。
【００６２】
ハッシュ算出部４２３は、演算装置９５を用いて、情報抽出部４２１が抽出した情報に基づいて、ハッシュ値を算出する。ただし、「時刻」については、情報抽出部４２１が抽出した「時刻」ではなく、時刻候補算出部４２２が算出した候補を使う。ハッシュ算出部４２３は、時刻候補算出部４２２が算出した候補それぞれについて、ハッシュ値を算出する。ハッシュ算出部４２３が算出するハッシュ値の数は、時刻候補算出部４２２が算出した候補の数と同じである。
ハッシュ算出部４２３におけるハッシュ値の算出方式（ハッシュ値の算出に使う情報や、文字列データの結合順序など）は、ハッシュ算出部２２３と同じである。ハッシュ算出部２２３がハッシュ値の算出に使った情報と、ハッシュ算出部４２３がハッシュ値の算出に使う情報とが同じであれば、算出されるハッシュ値も同じになる。
【００６３】
ハッシュ比較部４２４は、演算装置９５を用いて、情報抽出部４２１が抽出した検証情報（ハッシュ値）と、ハッシュ算出部４２３が算出したハッシュ値とを比較する。ハッシュ算出部４２３が算出した複数のハッシュ値のなかに、検証情報（ハッシュ値）と一致するハッシュ値があれば、ハッシュ比較部４２４は、そのログに記録されたメッセージが正当であると判定する。ハッシュ算出部４２３が算出した複数のハッシュ値のなかに、検証情報（ハッシュ値）と一致するハッシュ値がなければ、ハッシュ比較部４２４は、そのログに記録されたメッセージが不正であると判定する。
【００６４】
メッセージ検証部４２による判定結果は、情報抽出部４２１による判定結果とハッシュ比較部４２４による判定結果との論理積である。すなわち、そのメッセージが不正であると情報抽出部４２１が判定した場合、メッセージ検証部４２は、そのメッセージが不正であると判定する。そのメッセージが不正であると情報抽出部４２１が判定しない場合、ハッシュ比較部４２４による判定結果が、そのまま、メッセージ検証部４２による判定結果となる。
【００６５】
図１１は、この実施の形態における時刻候補算出部４２２の動作の一例を示す図である。
【００６６】
横軸は、時刻を示す。横軸につけられた目盛は、分単位の時刻を表わす。
【００６７】
例えば、時刻候補算出部４２２は、ログに記録された日時８４１を基準時刻として、基準時刻よりも所定の時間（例えば２分）前の時刻８０１と、基準時刻よりも所定の時間（例えば１分）後の時刻８０２とを算出する。時刻候補算出部４２２は、時刻８０１以降で、かつ、時刻８０２より前の範囲に含まれる時刻８０３〜８０５を、検証情報生成部２２が検証情報を生成するときに使った時刻の候補とする。
【００６８】
図１２は、この実施の形態における検証処理７２の流れの一例を示す図である。
【００６９】
検証処理７２は、メッセージ検証部４２がメッセージを検証する処理である。検証処理７２は、例えば、情報抽出工程７２１と、時刻候補算出工程７２２と、時刻候補選択工程７２３と、ハッシュ算出工程７２４と、ハッシュ比較工程７２５とを有する。メッセージ検証部４２は、検証処理７２を、情報抽出工程７２１から開始する。
【００７０】
情報抽出工程７２１において、情報抽出部４２１は、ログ取得部４１が取得したログなどから、メッセージの検証に使う情報を抽出する。情報抽出部４２１が抽出する情報には、「時刻」及び「検証情報」が含まれる。
ログに「検証情報」が含まれない場合、情報抽出部４２１は、そのメッセージが不正であると判定し、検証処理７２を終了する。
ログに「検証情報」が含まれる場合、情報抽出部４２１は、時刻候補算出工程７２２へ処理を進める。
【００７１】
時刻候補算出工程７２２において、時刻候補算出部４２２は、情報抽出工程７２１で情報抽出部４２１が抽出した情報のうちの「時刻」に基づいて、複数の時刻の候補を算出する。
【００７２】
時刻候補選択工程７２３において、ハッシュ比較部４２４は、時刻候補算出工程７２２が算出した複数の時刻の候補のなかから、時刻の候補を１つ選択する。
すべての時刻の候補が選択済であり、未選択の候補がない場合、ハッシュ比較部４２４は、そのメッセージが不正であると判定し、検証処理７２を終了する。
選択済でない時刻の候補がある場合、ハッシュ比較部４２４は、未選択の候補のなかから、時刻の候補を１つ選択する。
【００７３】
ハッシュ算出工程７２４において、ハッシュ算出部４２３は、情報抽出工程７２１で情報抽出部４２１が抽出した情報のうち「時刻」及び「認証情報」以外の情報と、時刻候補選択工程７２３でハッシュ比較部４２４が選択した時刻の候補とに基づいて、ハッシュ値を算出する。
【００７４】
ハッシュ比較工程７２５において、ハッシュ比較部４２４は、情報抽出工程７２１で情報抽出部４２１が抽出した情報のうちの「認証情報」と、ハッシュ算出工程７２４でハッシュ算出部４２３が算出したハッシュ値とを比較する。
認証情報とハッシュ値とが一致しない場合、ハッシュ比較部４２４は、時刻候補選択工程７２３に処理を戻し、次の候補を選択する。
認証情報とハッシュ値とが一致した場合、ハッシュ比較部４２４は、そのメッセージが正当であると判定し、検証処理７２を終了する。
【００７５】
このように、検証情報がログに記録されているか否かを判定するだけでなく、ログに検証情報が記録されている場合には、検証情報が正しい算出方式に基づいて算出されたものであるか否かを判定する。これにより、検証情報付加部２３が検証情報を付加したメッセージを不正プログラムがまねた場合であっても、そのメッセージが正当であるか否かを判定することができる。
【００７６】
上記不正検出装置（ログ記録装置１３、検出装置１４）は、メッセージ取得部（３１）と、メッセージ検証部（４２）とを有する。
上記メッセージ取得部は、端末装置（１２）が送信したメッセージを取得する。
上記メッセージ検証部は、上記メッセージ取得部が取得したメッセージに付加された検証情報を検証することにより、上記メッセージが正当であるか否かを判定する。
【００７７】
メッセージに付加された検証情報を検証することにより、不正プログラムにより検証情報が付されたメッセージが送信された場合であっても、メッセージが正当であるか否かを判定することができる。
【００７８】
上記不正検出装置（１３、１４）は、ログ記録部（３３）を有する。
上記ログ記録部は、上記メッセージ取得部（３１）が取得したメッセージのログを記録する。
上記メッセージ検証部（４２）は、上記ログ記録部が記録したログに基づいて、上記メッセージが正当であるか否かを判定する。
【００７９】
ログ記録部が記録したログに基づいてメッセージが正当であるか否かを判定することにより、システムの負荷が少ない時間帯などにまとめて、検証処理をすることができる。また、情報の漏洩が判明した場合に、その原因をあとから追究することができる。
【００８０】
上記検証情報生成部（２２）は、現在の時刻を含む情報に基づいて、上記検証情報を生成する。
上記メッセージ検証部（４２）は、上記メッセージ取得部（３１）が上記メッセージを取得した時刻に基づいて、上記検証情報生成部が上記検証情報の生成に用いた時刻の候補を複数算出し、算出した複数の時刻の候補それぞれに基づいて、上記検証情報を検証し、いずれかの時刻の候補において検証に成功した場合に、上記メッセージが正当であると判定する。
【００８１】
現在の時刻を含む情報に基づいて検証情報を生成するので、生成するたびに異なる検証情報が生成される。このため、不正プログラムが、前にメッセージ送信部が送信したメッセージから検証情報を複製したとしても、正しい検証情報が付されたメッセージを生成することはできない。
また、時刻の候補を複数算出して検証情報を検証することにより、端末装置の時計と、不正検出装置の時計とがずれている場合や、メッセージの送信時における遅延がある場合であっても、検証情報を検証することができる。
【００８２】
上記検証情報生成部（２２）は、現在の時刻を分単位で表わした情報を含む情報に基づいて、上記検証情報を生成する。
【００８３】
現在の時刻を分単位で表わした情報を使うことにより、メッセージ検証部が算出する時刻の候補の数を少なくすることができる。これにより、メッセージの検証にかかる処理負荷を減らすことができる。
【００８４】
上記検証情報生成部（２２）は、上記メッセージの送信先を表わす情報（ホスト名）を含む情報に基づいて、上記検証情報を生成する。
【００８５】
不正プログラムが不正なメッセージを送信する送信先は、通常、不正者のサーバ装置であり、メッセージ生成部が生成するメッセージの送信先とは、異なる。送信先の情報を含む情報に基づいて検証情報を生成するので、不正プログラムが、前にメッセージ送信部が送信したメッセージから検証情報を複製したとしても、正しい検証情報が付されたメッセージを生成することはできない。
【００８６】
上記検証情報生成部（２２）が検証情報を生成する生成方式は、あらかじめ定められた秘密の方式である。
上記メッセージ検証部（４２）は、上記生成方式と同じ方式を使って、検証情報（ハッシュ値）を生成し、算出した検証情報と、メッセージに付加された検証情報とが一致する場合に、上記メッセージが正当であると判定する。
【００８７】
検証情報生成部と、メッセージ検証部とが、あらかじめ定められた同じ生成方式で検証情報を算出するので、２つの検証情報が一致するか否かに基づいて、メッセージが正当であるか否かを判定することができる。
また、検証情報の生成方式が秘密なので、不正プログラムが、正しい検証情報を生成することはできない。
【００８８】
上記検証情報生成部（２２）は、一方向性関数（ハッシュ関数）を使って、上記検証情報を生成する。
【００８９】
一方向性関数を使って検証情報を生成するので、検証情報から、検証情報の生成方式が解読されるのを防ぐことができる。
【００９０】
上記検証情報生成部（２２）は、上記不正検出装置（１４）との間であらかじめ共有した秘密情報を含む情報に基づいて、上記検証情報を生成する。
上記メッセージ検証部（４２）は、上記秘密情報を含む情報に基づいて、上記検証情報を検証する。
【００９１】
秘密情報を含む情報に基づいて、検証情報を生成するので、不正プログラムが、正しい検証情報を生成することはできない。
【００９２】
実施の形態３．
実施の形態３について、図１３及び図１４を用いて説明する。
なお、実施の形態１及び実施の形態２と共通する部分については、同一の符号を付し、説明を省略する。
【００９３】
この実施の形態における不正検出システム１０の構成、端末装置１２及び検出装置１４の機能ブロックの構成は、実施の形態２と同様である。
【００９４】
図１３は、この実施の形態におけるメッセージ検証部４２の詳細ブロックの構成の一例を示す図である。
【００９５】
メッセージ検証部４２は、例えば、情報抽出部４２１と、時刻候補算出部４２２と、ハッシュ算出部４２３と、ハッシュ比較部４２４と、ホワイトリスト記憶部４２５と、除外判定部４２６とを有する。
このうち、時刻候補算出部４２２、ハッシュ算出部４２３及びハッシュ比較部４２４は、実施の形態２で説明したものと同様なので、ここでは説明を省略する。
【００９６】
情報抽出部４２１は、演算装置９５を用いて、メッセージを検証するために使う情報を抽出する。実施の形態２と異なり、情報抽出部４２１は、ログに検証情報が記録されていない場合でも、そのログに記録されたメッセージが不正であると判定しない。
【００９７】
ホワイトリスト記憶部４２５は、記憶装置９４を用いて、ホワイトリストをあらかじめ記憶している。ホワイトリストとは、端末装置１２がメッセージを送信しても安全であることがあらかじめ判明しているサーバ装置１９のリストである。
【００９８】
除外判定部４２６は、ログ取得部４１が取得したログに検証情報が記録されていない場合、演算装置９５を用いて、ログ取得部４１が取得したログから、端末装置１２がメッセージを送信した送信先のホスト名を取得する。除外判定部４２６は、演算装置９５を用いて、ホワイトリスト記憶部４２５が記憶したホワイトリストに、取得したホスト名が載っているか否かを判定する。ホワイトリストにホスト名が載っている場合、除外判定部４２６は、そのメッセージが正当であると判定する。ホワイトリストにホスト名が載っていない場合、除外判定部４２６は、そのメッセージが不正であると判定する。
【００９９】
メッセージ検証部４２による判定結果は、ハッシュ比較部４２４による判定結果と、除外判定部４２６による判定結果との論理和である。すなわち、そのメッセージが正当であるとハッシュ比較部４２４が判定するか、あるいは、そのメッセージが正当であると除外判定部４２６が判定するかした場合に、メッセージ検証部４２は、そのメッセージが正当であると判定する。それ以外の場合、メッセージ検証部４２は、そのメッセージが不正であると判定する。
【０１００】
図１４は、この実施の形態における検証処理７２の流れの一例を示す図である。
【０１０１】
検証処理７２は、例えば、情報抽出工程７２１と、時刻候補算出工程７２２と、時刻候補選択工程７２３と、ハッシュ算出工程７２４と、ハッシュ比較工程７２５と、除外判定工程７２６とを有する。
このうち、時刻候補算出工程７２２、時刻候補選択工程７２３、ハッシュ算出工程７２４及びハッシュ比較工程７２５は、実施の形態２で説明したものと同様なので、ここでは説明を省略する。
【０１０２】
情報抽出工程７２１において、情報抽出部４２１は、ログ取得部４１が取得したログなどから、メッセージの検証に使う情報を抽出する。情報抽出部４２１が抽出する情報には、「時刻」及び「検証情報」が含まれる。
ログに「検証情報」が含まれない場合、情報抽出部４２１は、除外判定工程７２６へ処理を進める。
ログに「検証情報」が含まれる場合、情報抽出部４２１は、時刻候補算出工程７２２へ処理を進める。
【０１０３】
除外判定工程７２６において、除外判定部４２６は、ログ取得部４１が取得したログから、メッセージの送信先のホスト名を取得する。除外判定部４２６は、ホワイトリスト記憶部４２５が記憶したホワイトリストに、取得したホスト名が載っているか否かを判定する。
ホワイトリストにホスト名が載っている場合、除外判定部４２６は、そのメッセージが正当であると判定し、検証処理７２を終了する。
ホワイトリストにホスト名が載っていない場合、除外判定部４２６は、そのメッセージが不正であると判定し、検証処理７２を終了する。
【０１０４】
なお、先に除外判定を行い、ホワイトリストにホスト名が載っていない場合のみ、検証情報による検証を行う構成であってもよい。
【０１０５】
端末装置１２において、正当なメッセージを送信するコンピュータプログラムは、ウェブブラウザプログラムだけでなく、他のプログラムも、正当なメッセージを送信する場合がある。例えば、バージョンアップ時に更新プログラムを自動ダウンロードする設定になっているプログラムのなかには、そのプログラムの販売会社のサーバ装置に対してメッセージを送信することにより、更新プログラムの有無を問い合わせるものがある。
【０１０６】
実施の形態１で説明したように、検証情報生成部２２や検証情報付加部２３を、ウェブブラウザプログラムのアドイン機能を使って実現した場合、上記のように、ウェブブラウザプログラム以外のプログラムによって送信されたメッセージには、検証情報が付加されない。
このため、検証情報のみに基づいてメッセージが正当か否かを判定すると、正当なメッセージを誤って不当であると判定する可能性がある。
【０１０７】
そこで、安全であるとあらかじめ判明しているサーバ装置をホワイトリストに登録しておく。メッセージに検証情報が付加されていない場合でも、送信先のサーバ装置がホワイトリストに登録されている場合には、そのメッセージが正当であると判定する。
【０１０８】
上記メッセージ検証部（４２）は、上記メッセージ取得部（３１）が取得したメッセージに検証情報が付加されていない場合であっても、上記メッセージの送信先が、安全であると判明している送信先である場合は、上記メッセージが正当であると判定する。
【０１０９】
これにより、正当なメッセージが誤って不当であると判定されるのを防ぐことができる。
【０１１０】
実施の形態４．
実施の形態４について、図１５及び図１６を用いて説明する。
なお、実施の形態１〜実施の形態３と共通する部分については、同一の符号を付し、説明を省略する。
【０１１１】
この実施の形態における不正検出システム１０の構成は、実施の形態２と同様である。
【０１１２】
図１５は、この実施の形態における端末装置１２の機能ブロックの構成の一例を示す図である。
【０１１３】
端末装置１２は、例えば、メッセージ生成部２１と、検証情報生成部２２と、検証情報付加部２３と、メッセージ送信部２４と、乱数生成部２８とを有する。
このうち、メッセージ生成部２１及びメッセージ送信部２４は、実施の形態１で説明したものと同様なので、説明を省略する。
【０１１４】
乱数生成部２８は、演算装置９５を用いて、所定の範囲の乱数を生成する。
【０１１５】
検証情報生成部２２は、演算装置９５を用いて、検証情報を生成する。検証情報生成部２２は、メッセージ生成部２１がメッセージを生成するごとに変化する情報として、実施の形態１で説明した「現在の時刻」の代わりに、乱数生成部２８が生成した乱数を用いる。
【０１１６】
検証情報付加部２３は、演算装置９５を用いて、メッセージ生成部２１が生成したメッセージに、検証情報生成部２２が生成した検証情報と、乱数生成部２８が生成した乱数とを付加したメッセージを生成する。
【０１１７】
検出装置１４の機能ブロックの構成は、実施の形態２と同様である。
【０１１８】
図１６は、この実施の形態におけるメッセージ検証部４２の詳細ブロックの構成の一例を示す図である。
【０１１９】
メッセージ検証部４２は、例えば、情報抽出部４２１と、ハッシュ算出部４２３と、ハッシュ比較部４２４とを有する。
【０１２０】
情報抽出部４２１は、演算装置９５を用いて、検証情報を生成するために使う情報を抽出する。情報抽出部４２１が抽出する情報には、検証情報付加部２３が付加した「検証情報」と「乱数」とが含まれる。ログ取得部４１が取得したログに検証情報や乱数が記録されていない場合、情報抽出部４２１は、そのログに記録されたメッセージが不正であると判定する。
【０１２１】
ハッシュ算出部４２３は、演算装置９５を用いて、情報抽出部４２１が抽出した情報に基づいて、ハッシュ値を算出する。ハッシュ算出部４２３は、ハッシュ算出部２２３と同じ算出方式を用いて、ハッシュ値を算出する。ハッシュ算出部４２３は、情報抽出部４２１が抽出した「乱数」を含む情報に基づいて、ハッシュ値を算出する。実施の形態２と異なり、ハッシュ算出部４２３は、ハッシュ値を１つ算出する。
【０１２２】
ハッシュ比較部４２４は、演算装置９５を用いて、情報抽出部４２１が抽出した検証情報（ハッシュ値）と、ハッシュ算出部４２３が算出したハッシュ値とを比較する。検証情報とハッシュ値とが一致した場合、ハッシュ比較部４２４は、そのメッセージが正当であると判定する。検証情報とハッシュ値とが一致しない場合、ハッシュ比較部４２４は、そのメッセージが不正であると判定する。
【０１２３】
このように、メッセージ生成部２１がメッセージを生成するごとに変化する情報として「現在の時刻」ではなく「乱数」を用いる構成であってもよい。検証情報付加部２３は、検証情報の生成に用いた「乱数」をメッセージに付加する。これにより、検証情報生成部２２が検証情報の生成に用いた「乱数」をログが記録されるので、それを用いて、メッセージ検証部４２がメッセージを検証できる。
【０１２４】
上記端末装置１２は、乱数生成部（２８）を有する。
上記乱数生成部は、乱数を生成する。
上記検証情報生成部（２２）は、上記乱数生成部が生成した乱数を含む情報に基づいて、上記検証情報を生成する。
上記検証情報付加部（２３）は、上記メッセージ生成部（２１）が生成したメッセージに、上記検証情報生成部が生成した検証情報と、上記乱数生成部が生成した乱数とを付加する。
【０１２５】
乱数を含む情報に基づいて検証情報を生成するので、生成するたびに異なる検証情報が生成される。このため、不正プログラムが、前にメッセージ送信部が送信したメッセージから検証情報を複製したとしても、正しい検証情報が付されたメッセージを生成することはできない。
また、検証情報の生成に用いた乱数をメッセージに付加するので、それを用いることにより、メッセージ検証部がメッセージを検証することができる。
【０１２６】
なお、「現在の時刻」や「乱数」は、メッセージ生成部がメッセージを生成するごとに変化する情報の一例であり、検証情報生成部は、メッセージ生成部がメッセージを生成するごとに変化する他の情報を含む情報に基づいて、検証情報を生成する構成であってもよい。
【０１２７】
実施の形態５．
実施の形態５について、図１７及び図１８を用いて説明する。
なお、実施の形態１〜実施の形態４と共通する部分については、同一の符号を付し、説明を省略する。
【０１２８】
この実施の形態における不正検出システム１０の構成は、実施の形態２で説明したものと同様である。
【０１２９】
図１７は、この実施の形態における端末装置１２の機能ブロックの構成の一例を示す図である。
【０１３０】
端末装置１２は、例えば、メッセージ生成部２１と、検証情報生成部２２と、検証情報付加部２３と、メッセージ送信部２４と、生成方式記憶部２５と、現在時刻取得部２９とを有する。
このうち、メッセージ生成部２１、検証情報付加部２３、メッセージ送信部２４及び現在時刻取得部２９は、実施の形態１で説明したものと同様なので、ここでは説明を省略する。
【０１３１】
生成方式記憶部２５は、記憶装置９４を用いて、検証情報を生成する生成方式を記憶している。例えば、ハッシュ値を検証情報とする構成の場合、生成方式記憶部２５が記憶する生成方式は、メッセージ生成部２１が生成したメッセージから抽出した情報や、現在の時刻、端末装置１２のＩＰアドレス、乱数、秘密情報などの情報のうち、どの情報を使うか、それぞれの情報をどのようなフォーマットの文字列データに変換するか、変換した文字列データをどの順序で結合するか、どのハッシュ関数を用いて、結合した文字列データからハッシュ値を算出するかなどを表わす。
【０１３２】
検証情報生成部２２は、演算装置９５を用いて、検証情報を生成する。検証情報生成部２２は、生成方式記憶部２５が記憶した生成方式にしたがって、検証情報を生成する。
【０１３３】
図１８は、この実施の形態における検出装置１４の機能ブロックの構成の一例を示す図である。
【０１３４】
検出装置１４は、例えば、ログ取得部４１と、メッセージ検証部４２と、検出警告部４３と、検証方式記憶部４５とを有する。
このうち、ログ取得部４１及び検出警告部４３は、実施の形態２で説明したものと同様なので、ここでは説明を省略する。
検証方式記憶部４５は、記憶装置９４を用いて、メッセージを検証する検証方式を記憶している。検証方式記憶部４５が記憶する検証方式は、検証情報の生成方式に対応する方式である。例えば、ハッシュ値を検証情報とする構成の場合、検証方式記憶部４５が記憶する検証方式は、生成方式記憶部２５が記憶した生成方式と同じく、どのようにしてハッシュ値を算出するかを表わす。
【０１３５】
メッセージ検証部４２は、演算装置９５を用いて、ログ取得部４１が取得したログに記録された情報に基づいて、端末装置１２が送信したメッセージを検証して、メッセージが正当か否かを判定する。
メッセージ検証部４２は、検証方式記憶部４５が記憶した検証方式にしたがって、メッセージを検証する。
【０１３６】
このように、生成方式記憶部２５が記憶した生成方式にしたがって検証情報生成部２２が検証情報を生成するので、生成方式記憶部２５が記憶した生成方式を書き換えることにより、検証情報の生成方式を容易に変更することができる。
また、検証方式記憶部４５が記憶した検証方式にしたがって、メッセージ検証部４２がメッセージを検証するので、検証方式記憶部４５が記憶した検証方式を書き換えることにより、メッセージの検証方式を容易に変更することができる。
生成方式記憶部２５が記憶した生成方式を変更した場合に、検証方式記憶部４５が記憶した検証方式を同時に変更すれば、検証情報の生成方式の変更に応じて、メッセージの検証方式を変更することができる。
検証情報の生成方式及びメッセージの検証方式を、例えば定期的に変更することにより、不正プログラムにまねされる可能性を更に低くすることができる。
【０１３７】
上記端末装置（１２）は、生成方式記憶部（２５）を有する。
上記生成方式記憶部は、上記検証情報生成部（２２）が上記検証情報を生成する生成方式を表わす情報を記憶する。
上記検証情報生成部は、上記生成方式記憶部が記憶した情報によって表される生成方式に基づいて、上記検証情報を生成する。
以上説明した不正検出装置（ログ記録装置１３、検出装置１４）は、検証方式記憶部（４５）を有する。
上記検証方式記憶部は、上記生成方式記憶部が記憶した情報によって表される生成方式に対応する検証方式を表す情報を記憶する。
上記メッセージ検証部（４２）は、上記検証方式記憶部が記憶した情報によって表される検証方式に基づいて、上記検証情報を検証する。
【０１３８】
これにより、検証情報の生成方式を容易に変更できるので、不正プログラムにまねされる可能性を更に低くすることができる。
【０１３９】
上記生成方式記憶部（２５）が記憶した情報は、上記メッセージに含まれるデータを含む複数のデータのうち、どのデータをどのような順序で用いるかを表わす。、
上記検証情報生成部（２２）は、上記メッセージに含まれるデータを含む複数のデータから、上記生成方式記憶部が記憶した情報によって表わされるデータを抽出し、抽出したデータを、上記生成方式記憶部が記憶した情報によって表わされる順序で結合し、結合したデータのハッシュ値を算出して、上記検証情報とする。
上記検証方式記憶部（４５）が記憶した情報は、上記生成方式記憶部が記憶した情報と同じ内容を表わす。
上記メッセージ検証部（４２）は、上記メッセージに含まれるデータを含む複数のデータから、上記検証方式記憶部が記憶した情報によって表わされるデータを抽出し、抽出したデータを、上記検証方式記憶部が記憶した情報によって表わされる順序で結合し、結合したデータのハッシュ値を算出し、算出したハッシュ値と、上記検証情報とが一致するか否かを判定することにより、上記検証情報を検証する。
【０１４０】
これにより、検証情報の生成方式を変更した場合でも、メッセージが正当であるか否かを容易に判定することができる。
【０１４１】
実施の形態６．
実施の形態５について、図１９及び図２０を用いて説明する。
なお、実施の形態１〜実施の形態４と共通する部分については、同一の符号を付し、説明を省略する。
【０１４２】
図１９は、この実施の形態における不正検出システム１０の構成の一例を示す図である。
【０１４３】
不正検出システム１０は、例えば、端末装置１２と、中継装置１６（ゲートウェイ装置、プロキシ装置）とを有する。
【０１４４】
端末装置１２と、中継装置１６とは、ネットワーク１５を介して通信する。ネットワーク１５は、例えばローカルエリアネットワーク（ＬＡＮ）などの内部ネットワークである。
中継装置１６と、サーバ装置１９とは、ネットワーク１８を介して通信する。ネットワーク１８は、例えばインターネットなどの外部ネットワークである。
ネットワーク１５とネットワーク１８とは、独立している。端末装置１２がサーバ装置１９と通信する場合、端末装置１２が送信したメッセージは、ネットワーク１５を介して、中継装置１６が受信する。中継装置１６は、端末装置１２の代理として、受信したメッセージを、ネットワーク１８を介して、サーバ装置１９に対して送信する。逆経路も同様に、サーバ装置１９が送信したメッセージを、中継装置１６が受信して、端末装置１２に対して送信する。
【０１４５】
図２０は、この実施の形態における中継装置１６の機能ブロックの構成の一例を示す図である。
【０１４６】
中継装置１６（不正検出装置）は、例えば、メッセージ取得部６１と、メッセージ検証部６２と、検出警告部６３と、代理送信部６４と、現在時刻取得部６９とを有する。
なお、サーバ装置１９から端末装置１２へ向けて送信されるメッセージの処理に関する部分については、図示を省略している。
【０１４７】
現在時刻取得部６９は、現在の時刻を取得する。例えば、現在時刻取得部６９は、入力装置９２を用いて、時計が計測した現在の時刻を取得する。時計は、中継装置１６が内蔵する構成であってもよいし、時刻サーバ装置など外部の装置が有する構成であってもよい。
【０１４８】
メッセージ取得部６１は、入力装置９２を用いて、端末装置１２が送信したメッセージを受信する。
メッセージ検証部６２は、演算装置９５を用いて、メッセージ取得部６１が受信したメッセージを検証して、メッセージが正当か否かを判定する。
検出警告部６３は、メッセージが正当でないとメッセージ検証部６２が判定した場合に、出力装置９３を用いて、警告する。例えば、検出警告部６３は、端末装置１２に対して警告メッセージを送信する。あるいは、検出警告部６３は、端末装置１２の利用者や、不正検出システムの管理者に対して、警告メールを送信する構成であってもよい。
代理送信部６４は、メッセージが正当であるとメッセージ検証部６２が判定した場合に、出力装置９３を用いて、メッセージ取得部６１が取得したメッセージを、サーバ装置１９に対して送信する。
【０１４９】
メッセージ検証部６２は、例えば、実施の形態２〜実施の形態４で説明したメッセージ検証部４２と同様にして、メッセージを検証する。メッセージ検証部４２との違いは、メッセージの検証に使う情報を、ログ取得部４１が取得したログからではなく、メッセージ取得部６１が取得したメッセージから直接抽出する点である。また、メッセージの送信時にリアルタイムで検証をする点も、メッセージ検証部４２と異なる点である。
【０１５０】
中継装置１６は、端末装置１２が送信したメッセージを検証して、正当であると判定した場合のみ、メッセージを中継し、不正であると判定した場合には、メッセージを中継しない。これにより、不正なメッセージによる情報の漏洩を未然に防ぐことができる。
【０１５１】
上記不正検出装置（中継装置１６）は、代理送信部（６４）を有する。
上記代理送信部は、ネットワーク（１８）に接続し、上記メッセージが正当であると上記メッセージ検証部（６２）が判定した場合に、上記端末装置（１２）に代理して、上記メッセージを上記ネットワークに対して送信する。
【０１５２】
メッセージが不正であると判定した場合に、メッセージをネットワークに対して送信しないので、情報の漏洩を防ぐことができる。
【０１５３】
実施の形態７．
実施の形態７について、図２１を用いて説明する。
なお、実施の形態１〜実施の形態６と共通する部分については、同一の符号を付し、説明を省略する。
【０１５４】
この実施の形態における不正検出システム１０の構成は、実施の形態６で説明したものと同様である。
【０１５５】
図２１は、この実施の形態における中継装置１６の機能ブロックの構成の一例を示す図である。
【０１５６】
中継装置１６は、例えば、メッセージ取得部６１と、メッセージ検証部６２と、検出警告部６３と、代理送信部６４と、検証情報削除部６５と、現在時刻取得部６９とを有する。
このうち、メッセージ取得部６１、メッセージ検証部６２、検出警告部６３及び現在時刻取得部６９は、実施の形態６で説明したものと同様なので、ここでは説明を省略する。
【０１５７】
検証情報削除部６５は、演算装置９５を用いて、メッセージ取得部６１が取得したメッセージから、検証情報付加部２３が付加した検証情報を削除する。
【０１５８】
代理送信部６４は、メッセージが正当であるとメッセージ検証部６２が判定した場合に、出力装置９３を用いて、検証情報削除部６５が検証情報を削除したメッセージを、サーバ装置１９に対して送信する。
【０１５９】
不正プログラムの作者がネットワーク１８からメッセージを取得して解析することにより、検証情報の生成方式を解読しようとする可能性がある。
代理送信部６４は、検証情報削除部６５が検証情報を削除して、メッセージ生成部２１が生成したメッセージに戻ったものを送信する。検証情報が付加されていないメッセージが、ネットワーク１８に送信される。
このため、ネットワーク１８からメッセージを取得して解析しても、検証情報の生成方式が解読されることはない。
【０１６０】
上記不正検出装置（中継装置１６）は、検証情報削除部（６５）を有する。
上記検証情報削除部は、上記メッセージ取得部（６１）が取得したメッセージから、上記検証情報付加部（２３）が付加した検証情報を削除する。
上記代理送信部（６４）は、上記検証情報削除部が上記検証情報を削除したメッセージを上記ネットワーク（１８）に対して送信する。
【０１６１】
これにより、検証情報の生成方式が解読され、不正プログラムにまねされるのを防ぐことができる。
【０１６２】
以上、各実施の形態で説明した構成は、一例であり、他の構成であってもよい。例えば、異なる実施の形態で説明した構成を矛盾しない範囲で組み合わせた構成であってもよいし、本質的でない部分の構成を、他の構成で置き換えた構成であってもよい。
【符号の説明】
【０１６３】
１０  不正検出システム、１２  端末装置、１３  ログ記録装置、１４  検出装置、１５，１８  ネットワーク、１６  中継装置、１９  サーバ装置、２１  メッセージ生成部、２２  検証情報生成部、２２１，４２１  情報抽出部、２２３，４２３  ハッシュ算出部、２３  検証情報付加部、２４  メッセージ送信部、２５  生成方式記憶部、２８  乱数生成部、２９，３９，６９  現在時刻取得部、３１，６１  メッセージ取得部、３２  ログ生成部、３３  ログ記録部、４１  ログ取得部、４２，６２  メッセージ検証部、４２２  時刻候補算出部、４２４  ハッシュ比較部、４２５  ホワイトリスト記憶部、４２６  除外判定部、４３，６３  検出警告部、４５  検証方式記憶部、６４  代理送信部、６５  検証情報削除部、７２  検証処理、７２１  情報抽出工程、７２２  時刻候補算出工程、７２３  時刻候補選択工程、７２４  ハッシュ算出工程、７２５  ハッシュ比較工程、７２６  除外判定工程、８０１〜８０５  時刻、８１，８３，８５  メッセージ、８２  検証情報、８４  ログ、８４１  日時、８４２  端末ＩＰ、８４３  ＵＲＬ、８４４  ユーザエージェント、９０  コンピュータ、９１  制御装置、９２  入力装置、９３  出力装置、９４  記憶装置、９５  演算装置。
【図１】
2014021509.tif 000003
【図２】
2014021509.tif 000004
【図３】
2014021509.tif 000005
【図４】
2014021509.tif 000006
【図５】
2014021509.tif 000007
【図６】
2014021509.tif 000008
【図７】
2014021509.tif 000009
【図８】
2014021509.tif 000010
【図９】
2014021509.tif 000011
【図１０】
2014021509.tif 000012
【図１１】
2014021509.tif 000013
【図１２】
2014021509.tif 000014
【図１３】
2014021509.tif 000015
【図１４】
2014021509.tif 000016
【図１５】
2014021509.tif 000017
【図１６】
2014021509.tif 000018
【図１７】
2014021509.tif 000019
【図１８】
2014021509.tif 000020
【図１９】
2014021509.tif 000021
【図２０】
2014021509.tif 000022
【図２１】
2014021509.tif 000023