(57)【特許請求の範囲】
【請求項１】
ユーザを識別するユーザＩＤと、当該ユーザＩＤに対応するユーザ端末から送信された認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定するための認証情報とが対応付けられたユーザ情報を記憶するユーザ情報記憶部と、
前記ユーザ端末から、複数の操作要求と、当該操作要求に付加された、当該ユーザ端末がメッセージを送信した時刻を示すタイムスタンプとが含まれるメッセージを受信する受信部と、
前記受信部が受信した前記メッセージと、当該メッセージを送信した前記ユーザ端末に対応する前記ユーザＩＤに対応付けられて前記ユーザ情報記憶部に記憶されている前記認証情報とに基づいて、前記受信部が受信した前記認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定する認証処理を行う認証部と、
前記認証部によって、前記受信部によって受信された前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに対応する認証情報を、前記ユーザ情報記憶部に記憶させる認証情報登録部と、
を備えることを特徴とする認証装置。
【請求項２】
前記認証部によって、前記受信部によって受信された前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに含まれる複数の操作要求に対応する処理を実行する実行部を備えることを特徴とする請求項１に記載の認証装置。
【請求項３】
前記ユーザ端末から複数の操作要求が含まれるメッセージを受信した場合には、当該メッセージに含まれる複数の操作要求を処理するうちは、前記複数の操作要求が付加されたタイムスタンプを前記ユーザ情報記憶部に記憶させないことを特徴とする請求項２に記載の認証装置。
【請求項４】
前記認証情報は、前記タイムスタンプであり、前記認証部は、前記受信部が受信した前記メッセージに含まれるタイムスタンプが示す時刻が、前記ユーザ情報記憶部に記憶されたタイムスタンプが示す時刻より後であれば一致しないと判定することを特徴とする請求項１から請求項３のいずれか１項に記載の認証装置。
【請求項５】
前記認証情報は、前記メッセージに含まれるパラメータに基づく署名値であることを特徴とする請求項１または請求項２に記載の認証装置。
【請求項６】
ユーザを識別するユーザＩＤと、当該ユーザＩＤに対応するユーザ端末から送信された認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定するための認証情報とが対応付けられたユーザ情報を記憶するユーザ情報記憶部を備える認証装置の認証方法であって、
前記ユーザ端末から、複数の操作要求と、当該操作要求に付加された、当該ユーザ端末がメッセージを送信した時刻を示すタイムスタンプとが含まれるメッセージを受信するステップと、
受信した前記メッセージと、当該メッセージを送信した前記ユーザ端末に対応する前記ユーザＩＤに対応付けられて前記ユーザ情報記憶部に記憶されている前記認証情報とに基づいて、前記受信部が受信した前記認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定する認証処理を行うステップと、
受信した前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに対応する認証情報を、前記ユーザ情報記憶部に記憶させるステップと、
を備えることを特徴とする認証方法。
【請求項７】
ユーザを識別するユーザＩＤと、当該ユーザＩＤに対応するユーザ端末から送信された認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定するための認証情報とが対応付けられたユーザ情報を記憶するユーザ情報記憶部を備える認証装置のコンピュータに、
前記ユーザ端末から、複数の操作要求と、当該操作要求に付加された、当該ユーザ端末がメッセージを送信した時刻を示すタイムスタンプとが含まれるメッセージを受信するステップと、
受信した前記メッセージと、当該メッセージを送信した前記ユーザ端末に対応する前記ユーザＩＤに対応付けられて前記ユーザ情報記憶部に記憶されている前記認証情報とに基づいて、前記受信部が受信した前記認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定する認証処理を行うステップと、
受信した前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに対応する認証情報を、前記ユーザ情報記憶部に記憶させるステップと、
を実行させる認証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ端末から送信されるメッセージを認証する技術に関する。
【背景技術】
【０００２】
サーバ装置がユーザ端末から送信されるメッセージを認証する技術として、例えばＭＡＣ（メッセージ認証符号：Message Authentication Code）に一方向性ハッシュ関数を組み合わせたＨＭＡＣ（Keyed-Hashing for Message Authentication code）を用いる方式が存在する。この方式では、ユーザ端末とサーバ装置との間で予め共通鍵（Ｋｓ）を共有しておく。ユーザ端末は、サーバ装置に送信するメッセージの原文（ｍ）と共通鍵（Ｋｓ）とに基づくハッシュ値であるＨＭＡＣ値（Ｈ（ｍ、Ｋｓ））を算出する。ユーザ端末は、メッセージの原文（ｍ）とＨＭＡＣ値（Ｈ（ｍ、Ｋｓ））とを含むメッセージ（ｍ｜｜Ｈ（ｍ、Ｋｓ））をサーバ装置に送信する。サーバ装置は、ユーザ端末から受信したメッセージの原文（ｍ）と、予め共有した共通鍵（Ｋｓ）とに基づいてＨＭＡＣ値（Ｈ（ｍ、Ｋｓ））を算出し、算出したＨＭＡＣ値と、ユーザ端末から受信したＨＭＡＣ値とが一致するか否かを判定することによりメッセージを認証する。このようにすれば、共通鍵を知らない第三者がメッセージを改ざんしても正しいＨＭＡＣ値を生成できないため、第三者によるメッセージの改ざんを検知できる。ただし、ユーザ端末からサーバ装置に送信される、ＨＭＡＣ値を含むメッセージ（ｍ｜｜Ｈ（ｍ、Ｋｓ））が第三者に盗聴された場合、その第三者が、盗聴したメッセージをサーバ装置に再送すると認証が成功する。このような攻撃をリプレイ攻撃という。このようなリプレイ攻撃を防ぐために、例えば特許文献１には、チャレンジ／レスポンス方式による認証を行うことが記載されている。特許文献２には、シーケンス番号を用いた認証を行う方式が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１９３１１０号公報
【特許文献２】特開２０１０−２７３２２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、チャレンジ／レスポンス方式による認証では、ユーザ端末とサーバ装置との間で、事前にノンスと呼ばれるランダムなデータを共有する必要があるため、通信回数が倍になる。シーケンス番号を用いた認証を行う方式では、ユーザ端末とサーバ装置とがシーケンス番号を共有しなければならないため、ユーザ端末側においてシーケンス番号を管理する手間が必要になるとともに、シーケンス番号を消失した場合にセキュアな通信を行うことができない。そこで、リプレイ攻撃を防ぎつつも、ユーザ端末とサーバ装置とが効率良く通信を行うことが望ましい。
【０００５】
本発明は、このような状況に鑑みてなされたもので、ユーザ端末から送信されるメッセージを認証する認証装置、認証方法、認証プログラムを提供する。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明は、ユーザを識別するユーザＩＤと、当該ユーザＩＤに対応するユーザ端末から送信された認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定するための認証情報とが対応付けられたユーザ情報を記憶するユーザ情報記憶部と、前記ユーザ端末から、複数の操作要求と、当該操作要求に付加された、当該ユーザ端末がメッセージを送信した時刻を示すタイムスタンプとが含まれるメッセージを受信する受信部と、前記受信部が受信した前記メッセージと、当該メッセージを送信した前記ユーザ端末に対応する前記ユーザＩＤに対応付けられて前記ユーザ情報記憶部に記憶されている前記認証情報とに基づいて、前記受信部が受信した前記認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定する認証処理を行う認証部と、前記認証部によって、前記受信部によって受信された前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに対応する認証情報を、前記ユーザ情報記憶部に記憶させる認証情報登録部と、を備えることを特徴とする。
【０００７】
また、本発明は、前記認証部によって、前記受信部によって受信された前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに含まれる複数の操作要求に対応する処理を実行する実行部を備えることを特徴とする。
【０００８】
また、本発明は、前記ユーザ端末から複数の操作要求が含まれるメッセージを受信した場合には、当該メッセージに含まれる複数の操作要求を処理するうちは、前記複数の操作要求が付加されたタイムスタンプを前記ユーザ情報記憶部に記憶させないことを特徴とする。
【０００９】
また、本発明は、前記認証情報は、前記タイムスタンプであり、前記認証部は、前記受信部が受信した前記メッセージに含まれるタイムスタンプが示す時刻が、前記ユーザ情報記憶部に記憶されたタイムスタンプが示す時刻より後であれば一致しないと判定することを特徴とする。
【００１０】
また、本発明は、前記認証情報は、前記メッセージに含まれるパラメータに基づく署名値であることを特徴とする。
【００１１】
また、本発明は、ユーザを識別するユーザＩＤと、当該ユーザＩＤに対応するユーザ端末から送信された認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定するための認証情報とが対応付けられたユーザ情報を記憶するユーザ情報記憶部を備える認証装置の認証方法であって、前記ユーザ端末から、複数の操作要求と、当該操作要求に付加された、当該ユーザ端末がメッセージを送信した時刻を示すタイムスタンプとが含まれるメッセージを受信するステップと、受信した前記メッセージと、当該メッセージを送信した前記ユーザ端末に対応する前記ユーザＩＤに対応付けられて前記ユーザ情報記憶部に記憶されている前記認証情報とに基づいて、前記受信部が受信した前記認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定する認証処理を行うステップと、受信した前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに対応する認証情報を、前記ユーザ情報記憶部に記憶させるステップと、を備えることを特徴とする。
【００１２】
また、本発明は、ユーザを識別するユーザＩＤと、当該ユーザＩＤに対応するユーザ端末から送信された認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定するための認証情報とが対応付けられたユーザ情報を記憶するユーザ情報記憶部を備える認証装置のコンピュータに、前記ユーザ端末から、複数の操作要求と、当該操作要求に付加された、当該ユーザ端末がメッセージを送信した時刻を示すタイムスタンプとが含まれるメッセージを受信するステップと、受信した前記メッセージと、当該メッセージを送信した前記ユーザ端末に対応する前記ユーザＩＤに対応付けられて前記ユーザ情報記憶部に記憶されている前記認証情報とに基づいて、前記受信部が受信した前記認証情報が当該ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致するか否かを判定する認証処理を行うステップと、受信した前記認証情報が前記ユーザＩＤに対応するユーザ端末から既に送信された認証情報に一致しないと判定された場合、当該メッセージに対応する認証情報を、前記ユーザ情報記憶部に記憶させるステップと、を実行させる認証プログラムである。
【発明の効果】
【００１４】
以上説明したように、本発明によれば、ユーザ端末から送信されるメッセージを認証することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態によるクラウドシステム１の構成例を示すブロック図である。
【図２】本発明の第１の実施形態によるユーザ情報のデータ例を示す図である。
【図３】本発明の第１の実施形態によるメッセージの例を示す図である。
【図４】本発明の第１の実施形態による操作要求の例を示す図である。
【図５】本発明の第１の実施形態によるクラウドシステムの動作例を示す図である。
【図６】本発明の第１の実施形態によるメッセージに応じた処理結果の例を示す図である。
【図７】本発明の第１の実施形態によるメッセージに応じた処理結果の例を示す図である。
【図８】本発明の第３の実施形態によるユーザ情報のデータ例を示す図である。
【図９】本発明の第３の実施形態によるクラウドシステムの動作例を示す図である。
【図１０】本発明の第３の実施形態によるメッセージに応じた処理結果の例を示す図である。
【図１１】本発明の第３の実施形態によるメッセージに応じた処理結果の例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態について、図面を参照して説明する。
＜第１の実施形態＞
図１は、本実施形態によるクラウドシステム１の構成を示すブロック図である。クラウドシステム１は、複数の物理マシン１０（物理マシン１０−１、物理マシン１０−２、物理マシン１０−３、・・・）と、クラウドサーバ２０と、ユーザ端末３０とのコンピュータ装置を備えており、これらのコンピュータ装置はネットワークを介して接続されている。複数の物理マシン１０（物理マシン１０−１、物理マシン１０−２、物理マシン１０−３、・・・）は同様の構成であり、特に区別しない場合には「−１」、「−２」等を省略して物理マシン１０として説明する。ここでは、３台の物理マシン１０を示しているが、任意の台数の物理マシン１０が接続されていてもよい。
【００１７】
物理マシン１０は、ＣＰＵ（Central Processing Unit）、メモリ、ディスク（ＨＤＤ：Hard disk drive）等のコンピュータリソースを備えたコンピュータ装置であり、ネットワークを介してユーザ端末３０やクラウドサーバ２０に接続される。物理マシン１０のコンピュータリソース上には、ユーザ端末３０からの要求に応じた仮想マシンが起動され、動作する。
【００１８】
クラウドサーバ２０は、ユーザ端末３０からの要求に応じて複数の物理マシン１０のいずれかに仮想マシンを起動し、動作させる。クラウドサーバ２０は、ユーザ情報記憶部２１と、通信部２２と、認証部２３と、クラウドコントローラ部２７と、制御部２８とを備えている。
【００１９】
ユーザ情報記憶部２１は、ユーザを識別するユーザＩＤ（Identifier）と、そのユーザＩＤに対応するユーザ端末３０から送信されたメッセージがそのユーザ端末３０から既に送信されたメッセージに一致するか否かを判定するための認証情報とが対応付けられたユーザ情報を記憶する。図２は、ユーザ情報記憶部２１が記憶するユーザ情報のデータ例を示す図である。ユーザ情報には、ユーザＩＤ毎に、共通鍵（Ｋｓ）と、最終リクエスト時刻（Ｔｌ）とを対応付けた情報が含まれる。ユーザＩＤは、ユーザを識別する識別情報である。共通鍵（Ｋｓ）は、ユーザＩＤが識別するユーザとクラウドサーバ２０との間で予め共有された秘密鍵である。最終リクエスト時刻は、ユーザＩＤに対応するユーザ端末３０から送信されたメッセージに含まれるタイムスタンプである。タイムスタンプは、「ＹＹＹＹ−ＭＭ−ＤＤＴＨＨ：ＭＭ：ＳＳＺ」の形式により表される。本実施形態では、このタイムスタンプを認証情報として用いる。
【００２０】
通信部２２は、ユーザ端末３０から、そのユーザ端末３０がメッセージを送信した時刻を示すタイムスタンプが含まれるメッセージを受信する。図３は、通信部２２がユーザ端末３０から受信するメッセージの例を示す図である。ここでは、ＨＴＴＰリクエストにおけるＧＥＴパラメータによるメッセージの例を示している。すなわち、ＵＲＬ（ｈｔｔｐｓ：／／ａ.ｃｏｍ）に対するパラメータとして、Ｏｐｅｒａｔｉｏｎと、ＭａｃｈｉｎｅＴｅｍｐｌａｔｅと、Ｃｏｕｎｔと、ＵｓｅｒＩＤと、Ｔｉｍｅと、ＨＭＡＣとのパラメータが付加されている。
【００２１】
Ｏｐｅｒａｔｉｏｎは、クラウドサーバ２０に対する操作要求を示すパラメータである。この例では、仮想マシンの起動要求であるＭａｋｅＭａｃｈｉｎｅｓが指定されている。ＭａｃｈｉｎｅＴｅｍｐｌａｔｅと、Ｃｏｕｎｔとは、操作要求に対応するパラメータである。図４は、クラウドサーバ２０に対する操作要求の例を示す図である。操作要求には、例えば、仮想マシンにＳＳＨ（Secure Shell）ログインするためのキーペアの作成要求であるＭａｋｅＫｅｙ、仮想マシンに割り当てるファイアウォール設定の作成要求であるＭａｋｅＧｒｏｕｐ、仮想マシンの起動要求であるＭａｋｅＭａｃｈｉｎｅｓ、仮想マシンへのＩＰアドレスの割当要求であるＳｅｔＩＰ、仮想マシンの利用要求等が存在し、それぞれの操作要求に対応するパラメータとともにユーザ端末３０からクラウドサーバ２０に送信される。
【００２２】
図３に戻り、ＵｓｅｒＩＤは、メッセージを送信するユーザ端末３０に対応するユーザを識別するユーザＩＤである。Ｔｉｍｅは、ユーザ端末３０がメッセージを送信した時刻を示すタイムスタンプである。ＨＭＡＣは、操作要求名からタイムスタンプまでのパラメータをメッセージの原文（ｍ）とし、メッセージの原文（ｍ）と、クラウドサーバ２０とユーザ端末３０との間で予め共有された共通鍵（Ｋｓ）とに基づいて、予め定められた一方向性ハッシュ関数により算出された署名値（ＨＭＡＣ値：Ｈ（ｍ、Ｋｓ））である。このようなメッセージの原文（ｍ）とＨＭＡＣ値（Ｈ（ｍ、Ｋｓ））とが連結されたパラメータをメッセージ（Ｍｓｇ（＝ｍ｜｜Ｈ（ｍ、Ｋｓ）））とする。
【００２３】
認証部２３は、第１の認証部２４と、第２の認証部２５と、認証情報登録部２６とを備えており、ユーザ端末３０から送信されるメッセージを認証する。
第１の認証部２４は、ユーザ端末３０からのメッセージを通信部２２が受信すると、そのユーザ端末３０のユーザＩＤに対応する共通鍵（Ｋｓ）をユーザ情報記憶部２１から読み出し、メッセージに含まれるメッセージの原文（ｍ）と、読み出した共通鍵（Ｋｓ）とに基づいて、予め定められた一方向性ハッシュ関数によりＨＭＡＣ値を算出する。一方向性ハッシュ関数のアルゴリズムは、第１の認証部２４の記憶領域に予め記憶されているものとする。そして、算出したＨＭＡＣ値と、通信部２２がユーザ端末３０から受信したメッセージに含まれるＨＭＡＣ値とを比較し、一致すれば認証成功と判定し、一致しなければ認証失敗と判定する。
【００２４】
第２の認証部２５は、通信部２２が受信したメッセージ（Ｍｓｇ）と、そのメッセージを送信したユーザ端末３０に対応するユーザＩＤに対応付けられてユーザ情報記憶部２１に記憶されている認証情報である最終リクエスト時刻とに基づいて、通信部２２が受信したメッセージがそのユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致するか否かを判定する認証処理を行う。
【００２５】
本実施形態では、第２の認証部２５は、通信部２２が受信したメッセージに含まれるタイムスタンプ（Ｔｓ）が示す第１の時刻と、そのメッセージを送信したユーザ端末３０に対応するユーザＩＤに対応付けられてユーザ情報記憶部２１に記憶されている認証情報である最終リクエスト時刻（Ｔｌ）が示す第２の時刻とを比較することにより、認証処理を行う。すなわち、第１の時刻（Ｔｓ）が第２の時刻（Ｔｌ）よりも後であれば、通信部２２によって受信されたメッセージはユーザ端末３０から既に送信されたメッセージに一致しないと判定する。この場合、そのメッセージは、新たなタイムスタンプと、そのユーザＩＤに対応する共通鍵とに基づいて新たに生成されたメッセージであり、正当なユーザから送信された正当なメッセージである可能性が高いと推定できる。
【００２６】
また、第２の認証部２５は、第１の時刻（Ｔｓ）が第２の時刻（Ｔｌ）よりも後でなければ、通信部２２によって受信されたメッセージはユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致すると判定する。この場合、そのメッセージは、第三者によって盗聴されたメッセージが、リプレイ攻撃によって再送されたメッセージである可能性が高いと推定できる。
【００２７】
認証情報登録部２６は、第２の認証部２５によって、通信部２２によって受信されたメッセージがユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致しないと判定された場合、そのメッセージに含まれるタイムスタンプを、最終リクエスト時刻としてユーザ情報記憶部２１に記憶させる。
【００２８】
クラウドコントローラ部２７は、第２の認証部２５によって、通信部２２によって受信されたメッセージがユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致しないと判定された場合、そのメッセージに含まれる操作要求に応じた処理を実行する。例えば、操作要求が仮想マシンの起動要求（ＭａｋｅＭａｃｈｉｎｅｓ）であれば、パラメータにより指定された仮想マシンを物理マシン１０に起動させる。
制御部２８は、クラウドサーバ２０が備える各部を制御する。
【００２９】
ユーザ端末３０は、物理マシン１０とクラウドサーバ２０とにネットワークを介して接続され、クラウドシステム１によって提供される物理マシン１０のコンピュータリソースを利用する。ユーザ端末３０は、キーボードやマウス等である入力部、ディスプレイである表示部、出力部、制御部、記憶部等を備えている。ユーザ端末３０は、ユーザからの操作入力に応じて、クラウドサーバ２０にコンピュータリソースの操作要求を送信する。
【００３０】
次に、図面を参照して、本実施形態によるクラウドシステム１の動作例を説明する。図５は、本実施形態によるクラウドシステム１の動作例を示す図である。
ユーザ端末３０は、ユーザからの入力に応じて、メッセージ（Ｍｓｇ＝ｍ｜｜Ｈ（ｍ、Ｋｓ））を生成する（ステップＳ１）。ユーザ端末３０は、生成したメッセージ（Ｍｓｇ）をクラウドサーバ２０に送信する（ステップＳ２）。クラウドサーバ２０の通信部２２が、ユーザ端末３０から送信したメッセージ（Ｍｓｇ）を受信すると、制御部２８は、メッセージ（Ｍｓｇ）の認証要求を認証部２３に送信する（ステップＳ３）。認証部２３は、メッセージ（Ｍｓｇ）に含まれるパラメータであるユーザＩＤ（ＵｓｅｒＩＤ）に対応するユーザ情報を、ユーザ情報記憶部２１から読み出す（ステップＳ４、５）。ここで認証部２３がユーザ情報記憶部２１から読み出すユーザ情報には、共通鍵（Ｋｓ）と最終リクエスト時刻（Ｔｌ）とが含まれる。
【００３１】
認証部２３の第１の認証部２４は、メッセージ（Ｍｓｇ）に含まれるメッセージの原文（ｍ）と、ユーザ情報記憶部２１から読み出した共通鍵（Ｋｓ）とに基づいて、予め定められた一方向性ハッシュ関数によりＨＭＡＣ値を算出する。そして、算出したＨＭＡＣ値と、メッセージ（Ｍｓｇ）に含まれるＨＭＡＣ値とが一致するか否かを判定する。ここで、第１の認証部２４は、算出したＨＭＡＣ値と、メッセージ（Ｍｓｇ）に含まれるＨＭＡＣ値とが一致しないと判定すれば、認証失敗と判定する。一方、算出したＨＭＡＣ値と、メッセージ（Ｍｓｇ）に含まれるＨＭＡＣ値とが一致すると判定すれば、認証成功と判定する（ステップＳ６）。
【００３２】
第１の認証部２４が、認証成功と判定すると、第２の認証部２５は、メッセージ（Ｍｓｇ）に含まれるタイムスタンプ（Ｔｓ）と、ステップＳ５においてユーザ情報記憶部２１から読み出した最終リクエスト時刻（Ｔｌ）とを比較する。第２の認証部２５は、タイムスタンプ（Ｔｓ）が、最終リクエスト時刻（Ｔｌ）より後であれば、認証成功と判定する。一方、タイムスタンプ（Ｔｓ）が、最終リクエスト時刻（Ｔｌ）より後でなければ、認証失敗と判定する（ステップＳ７）。
【００３３】
ステップＳ６とステップＳ７とにおいて認証成功と判定すれば、認証情報登録部２６は、メッセージ（Ｍｓｇ）に含まれるタイムスタンプ（Ｔｓ）を、最終リクエスト時刻（Ｔｌ）に対応付けてユーザ情報記憶部２１に記憶させる（ステップＳ８、９）。認証部２３は、ステップＳ６とステップＳ７とにおける認証結果（認証成功であればＴｒｕｅ、認証失敗であればＦａｌｓｅ）を、制御部２８に返却する（ステップＳ１０）。制御部２８は、認証部２３による認証結果が認証成功を示すものであれば、メッセージ（Ｍｓｇ）に含まれる操作要求をクラウドコントローラ部２７に送信する（ステップＳ１１）。
【００３４】
クラウドコントローラ部２７は、制御部２８からの操作要求に応じた操作を実行し（ステップＳ１２）、処理結果（処理成功であればＴｒｕｅ、処理失敗であればＦａｌｓｅ）を返却する（ステップＳ１３）。制御部２８は、ステップＳ６とステップＳ７とにおける認証結果が認証失敗を示すものであれば、ステップＳ１１からステップＳ１３までの処理を行わずに、認証失敗を示す認証結果をユーザ端末３０に送信する。一方、ステップＳ６とステップＳ７とにおける認証結果が認証成功を示すものであれば、ステップＳ１３においてクラウドコントローラ部２７から受信した処理結果をユーザ端末３０に送信する（ステップＳ１４）。
【００３５】
図６は、本実施形態によりクラウドサーバ２０に送信されるメッセージに応じた処理結果の例を示す図である。ここでは、符号ａ、ｂ、ｃ、ｄに示すメッセージが順にクラウドサーバ２０に送信されたものとする。この場合、符号ａに示すメッセージが送信された時点で、最終リクエスト時刻（Ｔｌ）に「２０１２−０１−０１Ｔ０９：００：００Ｚ」の値が記憶される。符号ｂに示すメッセージに含まれるタイムスタンプ（Ｔｓ）は、「２０１２−０１−０１Ｔ０９：０２：００Ｚ」であり、最終リクエスト時刻（Ｔｌ）より後であるから、認証成功と判定される。この時点で、最終リクエスト時刻（Ｔｌ）には、符号ｂのタイムスタンプである「２０１２−０１−０１Ｔ０９：０２：００Ｚ」の値が記憶される。
【００３６】
そして、符号ａに示すメッセージが盗聴され、リプレイ攻撃により符号ｃに示すメッセージが送信されると、このメッセージに含まれるタイムスタンプ（Ｔｓ）は、「２０１２−０１−０１Ｔ０９：００：００Ｚ」であり、最終リクエスト時刻（Ｔｌ）以前であるから、認証失敗と判定される。その後に、正当なユーザにより、符号ｄに示すメッセージが送信されると、このメッセージに含まれるタイムスタンプ（Ｔｓ）は、「２０１２−０１−０１Ｔ０９：０３：００Ｚ」であり、最終リクエスト時刻（Ｔｌ）より後であるから、認証成功と判定される。
【００３７】
以上説明したように、本実施形態によれば、クラウドサーバ２０が、ユーザ端末３０から受信したメッセージの認証が成功すれば、そのメッセージのタイムスタンプ（Ｔｓ）を、最終リクエスト時刻（Ｔｌ）としてユーザ情報記憶部２１に記憶させておき、新たなメッセージを受信した場合に、その新たなメッセージのタイムスタンプ（Ｔｓ）が、ユーザ情報記憶部２１に記憶されている最終リクエスト時刻（Ｔｌ）より後である場合にのみ、認証成功として操作要求に応じた処理を実行するようにした。これにより、第三者によるリプレイ攻撃があった場合に、認証失敗として処理を実行しないようにすることができる。
【００３８】
このようにすれば、例えば、正当なユーザによる仮想マシンの起動要求である操作要求が第三者に盗聴され、その第三者によって仮想マシンの起動要求が大量にクラウドサーバ２０に再送されて、大量の仮想マシンが起動されるリプレイ攻撃を防ぐことができる。すなわち、このようなリプレイ攻撃により正当なユーザへの過剰な課金が発生したり、クラウドサーバ２０や物理マシン１０のリソースが過剰に逼迫されたりすることを防ぐことができる。また、例えば、正当なユーザによる仮想マシンの停止要求である操作要求が第三者に盗聴され、その第三者によって仮想マシンの停止要求がクラウドサーバ２０に再送されることより、正当なユーザがクラウドサーバ２０を用いて提供するサービスを不本意に停止させるようなリプレイ攻撃を防ぐことができる。
【００３９】
また、例えば、ユーザ端末３０とクラウドサーバ２０との間の通信路をＳＳＬ（Secure Socket Layer）等により暗号化すれば、通信路における盗聴を防ぐことはできる。しかし、ユーザ端末３０からクラウドサーバ２０にメッセージを送信するツールがマルウェアとなっており、クラウドサーバ２０にメッセージを送信すると同時に第三者へのメッセージを送信しているような場合には、メッセージが盗まれてリプレイ攻撃をされる可能性がある。あるいは、例えばフィッシング詐欺によって、クラウドサーバ２０に送信するメッセージが第三者のサーバに送信されることによりメッセージが盗まれてリプレイ攻撃をされる可能性がある。これに対し、本実施形態によれば、盗まれたメッセージが再送された場合には、再送されたメッセージに含まれるタイムスタンプ（Ｔｓ）は既に最終リクエスト時刻（Ｔｌ）として記憶されているため認証失敗となり、リプレイ攻撃があった場合に処理を実行しないようにすることができる。
【００４０】
また、ユーザ端末３０は、自身の端末における時刻をタイムスタンプとして含めたメッセージをクラウドサーバ２０に送信すればよいため、シーケンス番号のような新たな情報を管理する必要がない。
また、ユーザ端末３０は、チャレンジ／レスポンス方式によるノンスの取得のような通信をする必要がないため、リプレイ攻撃への対策のために通信回数が増えることがない。
また、本実施形態によれば、タイムスタンプを用いてリプレイ攻撃を検知するため、タイムスタンプが含まれるようなメッセージにより操作要求を行っている既存のシステムに対して、メッセージのパラメータを増やしたり、通信のシーケンスを変更したりすることなく、効率良くリプレイ攻撃を防ぐ機能を実装することができる。
【００４１】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。本実施形態によるクラウドシステム１の構成は第１の実施形態と同様であるため、本実施形態において特徴的な点について説明する。第１の実施形態によれば、リプレイ攻撃を防ぐことができるが、正当なユーザのユーザ端末３０から同時刻に複数のメッセージがクラウドサーバ２０に送信される場合、最初のメッセージのみが認証成功し、その後のメッセージは認証失敗となる。例えば、第１の実施形態では、タイムスタンプの時刻を秒単位で記憶しているため、図７に示すように、１秒以内の同時刻に複数のメッセージが送信された場合、２回目以降に送信されたメッセージは認証失敗となる。例えば、ユーザ端末３０からクラウドサーバ２０に対するメッセージの送信処理を、スクリプトやツール等により自動化している場合は、このように１秒以内に複数のメッセージが送信されることも考えられる。タイムスタンプのフォーマットをミリ秒単位に発生しても、１ミリ秒以内に複数のメッセージが送信されれば、同様に認証失敗となる。
【００４２】
そこで、本実施形態の通信部２２は、ユーザ端末３０から、複数の操作要求が含まれるメッセージを受信する。例えば、ユーザ端末３０は、複数の操作要求を示すメッセージを「Ｎｅｘｔ」等の項目として入れ子構造にしたひとつのメッセージをクラウドサーバ２０に送信する。例えば、「ｈｔｔｐｓ：／／ａ.ｃｏｍ／？ｏｐｅｒａｔｉｏｎ＝・・・＆Ｐａｒａｍ１＝・・・＆Ｎｅｘｔ＝”ｏｐｅｒａｔｉｏｎ＝・・・＆Ｐａｒａｍ１＝・・・＆Ｎｅｘｔ＝”ｏｐｅｒａｔｉｏｎ＝・・・＆Ｐａｒａｍ１＝・・・””」のように、Ｎｅｘｔ文を入れ子構造にすることで、ひとつのメッセージに複数の操作要求を含ませる。
【００４３】
この場合、タイムスタンプは、ひとつのメッセージに含まれる複数の操作要求毎に付加してもよいし、複数の操作要求に対してひとつのタイムスタンプを付加することもできる。第２の認証部２５は、ひとつのメッセージに含まれる複数の操作要求毎にタイムスタンプが付加されている場合は、そのメッセージに含まれる複数の操作要求を処理するうちは、そのタイムスタンプ（Ｔｓ）をユーザ情報記憶部２１に記憶させない。これにより、ひとつのメッセージに含まれる複数の操作要求に対する処理を実行することができる。あるいは、複数の操作要求に対してひとつのタイムスタンプが付加されている場合は、第２の認証部２５は、タイムスタンプと最終リクエスト時刻との比較処理を一度だけ行い、認証可否を判定する。
【００４４】
クラウドコントローラ部２７は、第２の認証部２５によって、通信部２２によって受信されたメッセージがユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致しないと判定された場合、そのメッセージに含まれる複数の操作要求に対応する処理を実行する。
このようにすれば、ユーザ端末３０は、ひとつのメッセージに複数の操作要求を含ませることにより、限られた時間内（例えば、１秒）に複数の操作要求をクラウドサーバ２０に送信し、実行させることが可能となる。
【００４５】
＜第３の実施形態＞
次に、本発明の第３の実施形態について説明する。本実施形態によるクラウドシステム１の構成は第１の実施形態と同様であるため、本実施形態において特徴的な点について説明する。第１の実施形態では、ユーザ端末３０から送信されたメッセージがそのユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致するか否かを認証するための認証情報としてタイムスタンプ（Ｔｓ）を適用する例を説明した。これに対し、本実施形態においては、認証情報として、メッセージに含まれるパラメータに基づく署名値であるＨＭＡＣ値を適用する。ＨＭＡＣ値は、タイムスタンプ（Ｔｓ）が含まれるメッセージの原文（ｍ）に基づいて生成されるものであるため、ＨＭＡＣ値を比較することによっても、リプレイ攻撃を検知することができる。すなわち、同一のメッセージが複数回送信された場合、そのメッセージに含まれるＨＭＡＣ値は同一であるため、同一のＨＭＡＣ値が対応付けられた２回目以降のメッセージは、リプレイ攻撃により送信された可能性が高いと推定できる。
【００４６】
図８は、本実施形態におけるユーザ情報記憶部２１に記憶されるユーザ情報のデータ例を示す図である。ユーザ情報には、ユーザＩＤ毎に、共通鍵（Ｋｓ）と、ＨＭＡＣ値のリスト(Ｈ＿ｌｉｓｔ）とを対応付けた情報が含まれる。ＨＭＡＣ値のリスト(Ｈ＿ｌｉｓｔ）には、そのユーザのユーザ端末３０から受信した１以上のＨＭＡＣ値が含まれる。
【００４７】
第２の認証部２５は、通信部２２が受信したメッセージに含まれる第１のＨＭＡＣ値と、そのメッセージを送信したユーザ端末３０に対応するユーザＩＤに対応付けられてユーザ情報記憶部２１に記憶されている認証情報である第２のＨＭＡＣ値とを比較することにより、認証処理を行う。すなわち、第２の認証部２５は、第１のＨＭＡＣ値が、第２のＨＭＡＣ値と一致すれば、通信部２２によって受信されたメッセージはユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致すると判定し、第１のＨＭＡＣ値が、第２のＨＭＡＣ値と一致しなければ、通信部２２によって受信されたメッセージはユーザＩＤに対応するユーザ端末３０から既に送信されたメッセージに一致しないと判定する。
【００４８】
図９は、本実施形態によるクラウドシステム１の動作例を示す図である。ステップＳ２０からステップＳ２３までは、第１の実施形態におけるステップＳ１からステップＳ４までと同様である。第１の認証部２４は、ユーザ情報記憶部２１からＨＭＡＣ値のリストが含まれるユーザ情報を読み出す（ステップＳ２４）。第１の認証部２４は、第１の実施形態におけるステップＳ６と同様のＨＭＡＣ認証の処理を行う（ステップＳ２５）。第２の認証部２５は、ユーザ端末３０から受信したメッセージ（Ｍｓｇ）に含まれるＨＭＡＣ値が、ユーザ情報記憶部２１から読み出したＨＭＡＣ値のリストに含まれるか否かを判定する。第２の認証部２５は、ユーザ端末３０から受信したメッセージ（Ｍｓｇ）に含まれるＨＭＡＣ値が、ユーザ情報記憶部２１から読み出したＨＭＡＣ値のリストに含まれていれば、認証失敗と判定する。ユーザ端末３０から受信したメッセージ（Ｍｓｇ）に含まれるＨＭＡＣ値が、ユーザ情報記憶部２１から読み出したＨＭＡＣ値のリストに含まれていなければ、認証成功と判定する（ステップＳ２６）。
【００４９】
ステップＳ２５とステップＳ２６とにおいて認証成功と判定すれば、認証情報登録部２６は、メッセージ（Ｍｓｇ）に含まれるＨＭＡＣ値（Ｈ（ｍ、Ｋｓ））を、ＨＭＡＣ値のリストに追加し、ユーザ情報記憶部２１に記憶させる（ステップＳ２７、２８）。ステップＳ２９からステップＳ３３までの処理は、第１の実施形態におけるステップＳ１０からステップＳ１４までと同様である。
【００５０】
図１０は、本実施形態によりクラウドサーバ２０に送信されるメッセージに応じた処理結果の例を示す図である。この場合、符号ａ、ｂ、ｃ、ｄに示すメッセージに含まれるタイムスタンプ（Ｔｓ）の値は同一であるが、メッセージの原文（ｍ）に含まれるパラメータのうち、Ｏｐｅｒａｔｉｏｎの値が異なる。これにより、符号ａ、ｂ、ｃ、ｄに示すメッセージに対応するＨＭＡＣ値は異なる値となるから、ＨＭＡＣ値はＨＭＡＣ値のリストに含まれないと判定され、いずれも認証成功する。
図１１は、本実施形態によりクラウドサーバ２０に送信されるメッセージに応じた処理結果の別の例を示す図である。ここでは、符号ａに示すメッセージのＨＭＡＣ値と符号ｂに示すメッセージのＨＭＡＣ値とは異なるため、認証成功と判定される。符号ｃに示すメッセージのＨＭＡＣ値と符号ａに示すメッセージのＨＭＡＣ値とが同一であり、符号ｄに示すメッセージのＨＭＡＣ値と符号ｂに示すメッセージのＨＭＡＣ値とが同一であるため、認証失敗と判定され、操作要求に対応する処理は実行されない。
【００５１】
以上説明したように、本実施形態によれば、クラウドサーバ２０は、ユーザ端末３０から送信されたメッセージに含まれるＨＭＡＣ値のリストをユーザ情報記憶部２１に記憶させておき、ユーザ端末３０から新たなメッセージが送信されると、そのメッセージに含まれるＨＭＡＣ値が、ユーザ情報記憶部２１に記憶されているＨＭＡＣ値のリストに含まれるか否かを判定し、含まれる場合には操作要求に対応する処理を実行しないようにした。これにより、リプレイ攻撃によるメッセージに含まれるＨＭＡＣ値は、既にクラウドサーバ２０のユーザ情報記憶部２１に記憶されているため、そのメッセージに対応する処理を実行しないようにすることができ、リプレイ攻撃を防ぐことができる。
これによれば、第１の実施形態に比べて、同一のタイムスタンプが付加されたメッセージであっても、他のパラメータが異なれば、処理を実行することができる。
なお、本実施形態においても、第２の実施形態と同様に、ひとつのメッセージに複数の操作要求を含ませるようにしてもよい。
【００５２】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりメッセージの認証を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００５３】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００５４】
１  クラウドシステム
１０  物理マシン
２０  クラウドサーバ
２１  ユーザ情報記憶部
２２  通信部
２３  認証部
２４  第１の認証部
２５  第２の認証部
２６  認証情報登録部
２７  クラウドコントローラ部
２８  制御部
３０  ユーザ端末
【図１】
0005836188.tif 000002
【図２】
0005836188.tif 000003
【図３】
0005836188.tif 000004
【図４】
0005836188.tif 000005
【図５】
0005836188.tif 000006
【図６】
0005836188.tif 000007
【図７】
0005836188.tif 000008
【図８】
0005836188.tif 000009
【図９】
0005836188.tif 000010
【図１０】
0005836188.tif 000011
【図１１】
0005836188.tif 000012