(57)【要約】【課題】発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することを課題とする。【解決手段】発信者認証装置１０は、メッセージサービスを利用し得る正当な利用者であることを証明する発信者コードを、所定の鍵および利用者の発信者アドレスを引数とする演算処理を実行して生成する。一方、メッセージ受信装置２０は、発信者端末１からメッセージとともに、発信者コードで署名された署名データを受信すると、メッセージの発信者アドレスおよび所定の鍵を引数として発信者コードの生成と同様の演算処理を実行して検証コードを生成し、さらに、この検証コードで署名された検証用署名データを生成し、その後、発信者端末１から受信した署名データと検証用署名データとが一致するか否かを判定して発信者コードの有効性を検証する。【選択図】        図１
2005142719.tif 000002
【特許請求の範囲】
【請求項１】
利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証システムであって、
前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手段と、
前記利用者端末から前記メッセージとともに前記発信者コード生成手段によって生成された発信者コードを受信し、当該メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手段と、
を備えたことを特徴とするメッセージ検証システム。
【請求項２】
利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証システムであって、
前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手段と、
前記利用者端末から前記メッセージとともに、前記発信者コード生成手段によって生成された発信者コードで署名された署名データを受信し、前記メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手段と、
を備えたことを特徴とするメッセージ検証システム。
【請求項３】
前記検証手段は、
前記利用者端末から受信したメッセージの発信者アドレスおよび前記所定の鍵を引数として前記発信者コードの生成と同様の演算処理を実行して、前記発信者コードの有効性を検証する検証コードを生成する検証コード生成手段と、
前記検証コード生成手段によって生成された検証コードで署名された検証用署名データを生成する検証用署名データ生成手段と、
前記利用者端末から受信した署名データと前記検証用署名データ生成手段によって生成された検証用署名データとが一致するか否かを判定して、前記発信者コードの有効性を検証するコード検証手段と、
を備えたことを特徴とする請求項２に記載のメッセージ検証システム。
【請求項４】
前記発信者コード生成手段および検証コード生成手段は、前記所定の鍵および発信者アドレスの他に、前記メッセージの発信が満たすべき発信条件をさらに引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする請求項３に記載のメッセージ検証システム。
【請求項５】
前記発信者コード生成手段および検証コード生成手段は、前記メッセージの発信を許可する利用者端末のネットワークアドレス、前記メッセージの発信を許可する期限若しくはこれらの組み合わせを前記発信条件として前記発信者コードまたは検証コードを生成することを特徴とする請求項４に記載のメッセージ検証システム。
【請求項６】
前記発信者コード生成手段によって生成された発信者コードとともに、当該発信者コードの生成に用いた発信条件を前記利用者に対して付与する付与手段と、
前記利用者に付与された発信条件を前記メッセージとともに前記利用者端末から受信し、前記メッセージの発信が当該発信条件を満たすか否かを判定する発信条件判定手段と、
を備え、
前記検証コード生成手段は、前記発信条件判定手段によって前記メッセージの発信が前記発信条件を満たすと判定された場合にのみ、当該発信条件をさらに引数とする演算処理を実行して前記検証コードを生成することを特徴とする請求項４または５に記載のメッセージ検証システム。
【請求項７】
前記利用者端末から前記メッセージを受信した際に、当該メッセージの受信状況に基づいて当該メッセージの発信が満たすべき発信条件を取得する発信条件取得手段を備え、
前記検証コード生成手段は、前記発信条件取得手段によって取得した発信条件をさらに引数とする演算処理を実行して前記検証コードを生成することを特徴とする請求項４または５に記載のメッセージ検証システム。
【請求項８】
前記発信者コード生成手段および検証コード生成手段は、複数の鍵のなかから前記発信条件に対応する鍵を選択し、当該選択した鍵、前記発信者アドレスおよび発信条件を引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする請求項４〜７のいずれか一つに記載のメッセージ検証システム。
【請求項９】
前記発信者コード生成手段および検証コード生成手段は、前記所定の鍵から定まる一方向関数に前記発信者アドレスおよび発信条件を入力することで前記発信者コードまたは検証コードを生成することを特徴とする請求項４〜８のいずれか一つに記載のメッセージ検証システム。
【請求項１０】
前記発信者コード生成手段および検証コード生成手段は、前記所定の鍵を用いて前記発信者アドレスおよび発信条件を暗号化することで前記発信者コードまたは検証コードを生成することを特徴とする請求項４〜８のいずれか一つに記載のメッセージ検証システム。
【請求項１１】
前記利用者端末とネットワークを介して接続される複数のサーバが、前記検証コード生成手段をそれぞれ備え、
前記複数のサーバは、前記所定の鍵をそれぞれ有し、前記検証コードをそれぞれ生成することを特徴とする請求項４〜１０のいずれか一つに記載のメッセージ検証システム。
【請求項１２】
前記メッセージを着信する着信者の着信者アドレスおよび前記署名データからなる宛先アドレスのメールを受信するリメールサーバが、前記検証手段を備え、
当該リメールサーバは、前記発信者コードの有効性が認められた場合に、前記メールの宛先アドレスを前記着信者アドレスに置換して転送することを特徴とする請求項２〜１１のいずれか一つに記載のメッセージ検証システム。
【請求項１３】
前記リメールサーバによって転送されたメールに対する返信メールを受信するメール転送サーバをさらに備え、
当該メール転送サーバは、前記発信者コードを再生成した後に、当該発信者コードを用いて前記署名データを再生成し、前記返信メールの発信元を前記着信者アドレスおよび署名データからなるアドレスに置換して転送することを特徴とする請求項１２に記載のメッセージ検証システム。
【請求項１４】
利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証方法であって、
前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成工程と、
前記利用者端末から前記メッセージとともに前記発信者コード生成工程によって生成された発信者コードを受信し、当該メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証工程と、
を含んだことを特徴とするメッセージ検証方法。
【請求項１５】
利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証方法であって、
前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成工程と、
前記利用者端末から前記メッセージとともに、前記発信者コード生成工程によって生成された発信者コードで署名された署名データを受信し、前記メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証工程と、
を含んだことを特徴とするメッセージ検証方法。
【請求項１６】
前記検証工程は、
前記利用者端末から受信したメッセージの発信者アドレスおよび前記所定の鍵を引数として前記発信者コードの生成と同様の演算処理を実行して、前記発信者コードの有効性を検証する検証コードを生成する検証コード生成工程と、
前記検証コード生成工程によって生成された検証コードで署名された検証用署名データを生成する検証用署名データ生成工程と、
前記利用者端末から受信した署名データと前記検証用署名データ生成工程によって生成された検証用署名データとが一致するか否かを判定して、前記発信者コードの有効性を検証するコード検証工程と、
を含んだことを特徴とする請求項１５に記載のメッセージ検証方法。
【請求項１７】
前記発信者コード生成工程および検証コード生成工程は、前記所定の鍵および発信者アドレスの他に、前記メッセージの発信が満たすべき発信条件をさらに引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする請求項１６に記載のメッセージ検証方法。
【請求項１８】
利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証する方法をコンピュータに実行させるメッセージ検証プログラムであって、
前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手順と、
前記利用者端末から前記メッセージとともに前記発信者コード生成手順によって生成された発信者コードを受信し、当該メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手順と、
をコンピュータに実行させることを特徴とするメッセージ検証プログラム。
【請求項１９】
利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証する方法をコンピュータに実行させるメッセージ検証プログラムであって、
前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手順と、
前記利用者端末から前記メッセージとともに、前記発信者コード生成手順によって生成された発信者コードで署名された署名データを受信し、前記メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手順と、
をコンピュータに実行させることを特徴とするメッセージ検証プログラム。
【請求項２０】
前記検証手順は、
前記利用者端末から受信したメッセージの発信者アドレスおよび前記所定の鍵を引数として前記発信者コードの生成と同様の演算処理を実行して、前記発信者コードの有効性を検証する検証コードを生成する検証コード生成手順と、
前記検証コード生成手順によって生成された検証コードで署名された検証用署名データを生成する検証用署名データ生成手順と、
前記利用者端末から受信した署名データと前記検証用署名データ生成手順によって生成された検証用署名データとが一致するか否かを判定して、前記発信者コードの有効性を検証するコード検証手順と、
をコンピュータに実行させることを特徴とする請求項１９に記載のメッセージ検証プログラム。
【請求項２１】
前記発信者コード生成手順および検証コード生成手順は、前記所定の鍵および発信者アドレスの他に、前記メッセージの発信が満たすべき発信条件をさらに引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする請求項２０に記載のメッセージ検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証システム、メッセージ検証方法およびメッセージ検証プログラムに関する。
【背景技術】
【０００２】
従来より、インターネットなどのネットワーク上では、インスタントメッセージを利用者端末から受信して相手端末に伝達するサービスや、ＩＰ電話の呼メッセージを利用者端末から受け付けて相手端末を呼び出すサービス、電子メールを利用者端末から受信して相手端末に送信するサービスなど、ＩＰ（Internet Protocol）網を介して利用者端末からＳＩＰ（Session Initiation Protocol）等によるメッセージを受信してメッセージを処理するメッセージサービスが提供されている。
【０００３】
かかるメッセージサービスにおいては、利用者端末から発信されたメッセージがメッセージサービスを利用し得る正当な利用者から発信されたものであるかを検証した上でメッセージを処理することが一般的である。そして、このようなメッセージ検証の手法としては、特許文献１（特開平１１−２２０４９６号公報）に開示されているように、発信者からメッセージとともにユーザＩＤおよびパスワードを受け付け、データベースに予め格納されたユーザＩＤおよびパスワードと比較して検証するパスワード認証が一般的である。
【０００４】
【特許文献１】特開平１１−２２０４９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記した従来の技術では、メッセージが発信される毎にデータベースを参照してパスワード認証を行う必要があるので、データベースに負担がかかるという問題点の他に、メッセージ検証処理が遅滞するという問題点があった。特に、メールやインスタントメッセージのように、個々の短いデータグラムを個別のメッセージとして扱うメッセージサービスでは、データベースの参照回数が多くなってしまうので、パスワード認証を行うことによる問題点は大きかった。
【０００６】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することが可能なメッセージ検証システム、メッセージ検証方法およびメッセージ検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証システムであって、前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手段と、前記利用者端末から前記メッセージとともに前記発信者コード生成手段によって生成された発信者コードを受信し、当該メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手段と、を備えたことを特徴とする。
【０００８】
また、請求項２に係る発明は、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証システムであって、前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手段と、前記利用者端末から前記メッセージとともに、前記発信者コード生成手段によって生成された発信者コードで署名された署名データを受信し、前記メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手段と、を備えたことを特徴とする。
【０００９】
また、請求項３に係る発明は、上記の発明において、前記検証手段は、前記利用者端末から受信したメッセージの発信者アドレスおよび前記所定の鍵を引数として前記発信者コードの生成と同様の演算処理を実行して、前記発信者コードの有効性を検証する検証コードを生成する検証コード生成手段と、前記検証コード生成手段によって生成された検証コードで署名された検証用署名データを生成する検証用署名データ生成手段と、前記利用者端末から受信した署名データと前記検証用署名データ生成手段によって生成された検証用署名データとが一致するか否かを判定して、前記発信者コードの有効性を検証するコード検証手段と、を備えたことを特徴とする。
【００１０】
また、請求項４に係る発明は、上記の発明において、前記発信者コード生成手段および検証コード生成手段は、前記所定の鍵および発信者アドレスの他に、前記メッセージの発信が満たすべき発信条件をさらに引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする。
【００１１】
また、請求項５に係る発明は、上記の発明において、前記発信者コード生成手段および検証コード生成手段は、前記メッセージの発信を許可する利用者端末のネットワークアドレス、前記メッセージの発信を許可する期限若しくはこれらの組み合わせを前記発信条件として前記発信者コードまたは検証コードを生成することを特徴とする。
【００１２】
また、請求項６に係る発明は、上記の発明において、前記発信者コード生成手段によって生成された発信者コードとともに、当該発信者コードの生成に用いた発信条件を前記利用者に対して付与する付与手段と、前記利用者に付与された発信条件を前記メッセージとともに前記利用者端末から受信し、前記メッセージの発信が当該発信条件を満たすか否かを判定する発信条件判定手段と、を備え、前記検証コード生成手段は、前記発信条件判定手段によって前記メッセージの発信が前記発信条件を満たすと判定された場合にのみ、当該発信条件をさらに引数とする演算処理を実行して前記検証コードを生成することを特徴とする。
【００１３】
また、請求項７に係る発明は、上記の発明において、前記利用者端末から前記メッセージを受信した際に、当該メッセージの受信状況に基づいて当該メッセージの発信が満たすべき発信条件を取得する発信条件取得手段を備え、前記検証コード生成手段は、前記発信条件取得手段によって取得した発信条件をさらに引数とする演算処理を実行して前記検証コードを生成することを特徴とする。
【００１４】
また、請求項８に係る発明は、上記の発明において、前記発信者コード生成手段および検証コード生成手段は、複数の鍵のなかから前記発信条件に対応する鍵を選択し、当該選択した鍵、前記発信者アドレスおよび発信条件を引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする。
【００１５】
また、請求項９に係る発明は、上記の発明において、前記発信者コード生成手段および検証コード生成手段は、前記所定の鍵から定まる一方向関数に前記発信者アドレスおよび発信条件を入力することで前記発信者コードまたは検証コードを生成することを特徴とする。
【００１６】
また、請求項１０に係る発明は、上記の発明において、前記発信者コード生成手段および検証コード生成手段は、前記所定の鍵を用いて前記発信者アドレスおよび発信条件を暗号化することで前記発信者コードまたは検証コードを生成することを特徴とする。
【００１７】
また、請求項１１に係る発明は、上記の発明において、前記利用者端末とネットワークを介して接続される複数のサーバが前記検証コード生成手段をそれぞれ備え、前記複数のサーバは、前記所定の鍵をそれぞれ有し、前記検証コードをそれぞれ生成することを特徴とする。
【００１８】
また、請求項１２に係る発明は、上記の発明において、前記メッセージを着信する着信者の着信者アドレスおよび前記署名データからなる宛先アドレスのメールを受信するリメールサーバが前記検証手段を備え、当該リメールサーバは、前記発信者コードの有効性が認められた場合に、前記メールの宛先アドレスを前記着信者アドレスに置換して転送することを特徴とする。
【００１９】
また、請求項１３に係る発明は、上記の発明において、前記リメールサーバによって転送されたメールに対する返信メールを受信するメール転送サーバをさらに備え、当該メール転送サーバは、前記発信者コードを再生成した後に、当該発信者コードを用いて前記署名データを再生成し、前記返信メールの発信元を前記着信者アドレスおよび署名データからなるアドレスに置換して転送することを特徴とする。
【００２０】
また、請求項１４に係る発明は、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証方法であって、前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成工程と、前記利用者端末から前記メッセージとともに前記発信者コード生成工程によって生成された発信者コードを受信し、当該メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証工程と、を含んだことを特徴とする。
【００２１】
また、請求項１５に係る発明は、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証方法であって、前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成工程と、前記利用者端末から前記メッセージとともに、前記発信者コード生成工程によって生成された発信者コードで署名された署名データを受信し、前記メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証工程と、を含んだことを特徴とする。
【００２２】
また、請求項１６に係る発明は、上記の発明において、前記検証工程は、前記利用者端末から受信したメッセージの発信者アドレスおよび前記所定の鍵を引数として前記発信者コードの生成と同様の演算処理を実行して、前記発信者コードの有効性を検証する検証コードを生成する検証コード生成工程と、前記検証コード生成工程によって生成された検証コードで署名された検証用署名データを生成する検証用署名データ生成工程と、前記利用者端末から受信した署名データと前記検証用署名データ生成工程によって生成された検証用署名データとが一致するか否かを判定して、前記発信者コードの有効性を検証するコード検証工程と、を含んだことを特徴とする。
【００２３】
また、請求項１７に係る発明は、上記の発明において、前記発信者コード生成工程および検証コード生成工程は、前記所定の鍵および発信者アドレスの他に、前記メッセージの発信が満たすべき発信条件をさらに引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする。
【００２４】
また、請求項１８に係る発明は、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証する方法をコンピュータに実行させるメッセージ検証プログラムであって、前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手順と、前記利用者端末から前記メッセージとともに前記発信者コード生成手順によって生成された発信者コードを受信し、当該メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手順と、をコンピュータに実行させることを特徴とする。
【００２５】
また、請求項１９に係る発明は、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証する方法をコンピュータに実行させるメッセージ検証プログラムであって、前記正当な利用者であることを証明する発信者コードを、所定の鍵および前記利用者の発信者アドレスを引数とする演算処理を実行して生成する発信者コード生成手順と、前記利用者端末から前記メッセージとともに、前記発信者コード生成手順によって生成された発信者コードで署名された署名データを受信し、前記メッセージの発信者アドレスおよび前記所定の鍵を用いて前記発信者コードの有効性を検証する検証手順と、をコンピュータに実行させることを特徴とする。
【００２６】
また、請求項２０に係る発明は、上記の発明において、前記検証手順は、前記利用者端末から受信したメッセージの発信者アドレスおよび前記所定の鍵を引数として前記発信者コードの生成と同様の演算処理を実行して、前記発信者コードの有効性を検証する検証コードを生成する検証コード生成手順と、前記検証コード生成手順によって生成された検証コードで署名された検証用署名データを生成する検証用署名データ生成手順と、前記利用者端末から受信した署名データと前記検証用署名データ生成手順によって生成された検証用署名データとが一致するか否かを判定して、前記発信者コードの有効性を検証するコード検証手順と、をコンピュータに実行させることを特徴とする。
【００２７】
また、請求項２１に係る発明は、上記の発明において、前記発信者コード生成手順および検証コード生成手順は、前記所定の鍵および発信者アドレスの他に、前記メッセージの発信が満たすべき発信条件をさらに引数とする演算処理を実行して前記発信者コードまたは検証コードを生成することを特徴とする。
【発明の効果】
【００２８】
請求項１、１４または１８の発明によれば、発信者アドレスおよび鍵を引数とする発信者コードを利用してメッセージ検証を行うので、パスワード認証のようなデータベースを参照する必要がなくなり、発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することが可能になる。
【００２９】
また、請求項２、１５または１９の発明によれば、発信者アドレスおよび鍵を引数とする発信者コードを利用してメッセージ検証を行うので、パスワード認証のようなデータベースを参照する必要がなくなり、発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することが可能になる。さらに、発信者コードそのものではなく、発信者コードで署名された署名データを受け付けて検証するので、経路中にあるメッセージ中継装置が発信者コードをコピーして発信者になりすます行為も防止することが可能になる。
【００３０】
また、請求項３、１６または２０の発明によれば、検証に際して発信者アドレスおよび発信者コードを対応付けたデータベースから発信者コードを読み出すのではなく、演算処理によって発信者コード（検証コード）を生成するので、高速かつ軽負荷なメッセージ検証を実現することが可能になる。なお、発信者コードおよび検証コードを生成するための関数を発信者などに開示しないので、複数の利用者の結託による関数解読も防止することが可能になる。
【００３１】
また、請求項４、１７または２１の発明によれば、発信条件も関係付けて発信者コードを生成するので、発信者コードの漏洩、傍受または偽造による不正が行われても（例えば、不正発信を試みる不正利用者と結託した発信者が自信の発信者コードを不正利用者に漏らしたとしても）、発信条件を満たさない限り不正なメッセージ発信として検出することができ、発信者のなりすましによる不正なメッセージの発信を確実に防止することが可能になるだけでなく、発信条件を満たさない他の不正なメッセージ発信を確実に防止することも可能になる。
【００３２】
また、請求項５の発明によれば、ネットワークアドレスや有効期限を満たさないメッセージを不正なメッセージ発信として排除することが可能になる。
【００３３】
また、請求項６の発明によれば、発信条件を発信者コードに埋め込むことで利用者による発信条件の改ざんを防止していることを前提に、利用者端末からメッセージとともに受け付けた発信条件を検証に用いることができるので、発信条件をデータベースで管理して検証に用いる方式に比較して、高速かつ軽負荷なメッセージ検証を実現することが可能になる。さらに、発信条件を満たさない不正なメッセージ発信については検証コードを生成することなくメッセージ処理を拒否するので、一層高速なメッセージ検証を実現することも可能になる。
【００３４】
また、請求項７の発明によれば、発信者コードの生成に用いた発信条件をデータベースで管理して検証に用いるのではなく、メッセージの受信状況から取得した発信条件を検証に用いるので、高速かつ軽負荷なメッセージ検証を実現することが可能になる。さらに、発信条件を利用者に開示しないので、発信条件の改ざんを回避して、不正なメッセージ発信を一層確実に防止することも可能になる。
【００３５】
また、請求項８の発明によれば、発信者コードおよび検証コードの生成に用いる鍵を固定することなく選択するので、鍵の解析を困難にして不正なメッセージ発信を抑止することも可能になる。
【００３６】
また、請求項９の発明によれば、一方向関数によるコード生成を採用することで、暗号化による発信者コードの生成（暗号化による発信者コードの生成では、暗号化アルゴリズムのデータブロック長によってコードの長さが決まるため、短い発信者コードを生成することはできない。）とは異なり、短い発信者コードを生成することが可能になる。
【００３７】
また、請求項１０の発明によれば、暗号化によるコード生成を採用することで、乱数列を用いたコード生成を行うこともできるので、既知平文攻撃や差分攻撃による鍵解析を一層困難にして不正なメッセージ発信を抑止することも可能になる。
【００３８】
また、請求項１１の発明によれば、ユーザテーブルのようなデータベースを分散させたり、利用者ごとの署名鍵を各サーバ装置に配信したりすることなく、鍵の共有のみで各サーバ装置がメッセージ検証を行うことができるので、広範囲で大規模なメッセージ処理システムでも負荷を生じさせることなくなくメッセージ検証を行うことが可能になる。
【００３９】
また、請求項１２の発明によれば、いわゆるメールサービスにおいても、発信者のなりすましによる不正なメール発信を防止することが可能になる。
【００４０】
また、請求項１３の発明によれば、発信者が返信メールに対してさらに返信しようとする場合に、署名データを含んだ宛先アドレスを再び生成する必要はなく、通常のメール返信処理を発信者が実行するだけで、署名付きのメールを返信することが可能になる。
【発明を実施するための最良の形態】
【００４１】
以下に添付図面を参照して、この発明に係るメッセージ検証システム、メッセージ検証方法およびメッセージ検証プログラムの実施例を詳細に説明する。なお、以下では、本実施例で用いる主要な用語、本実施例に係るメッセージ検証システムの概要および特徴を説明した後に、種々の実施例（実施例１〜５）を説明する。
【００４２】
［用語の説明］
最初に、本実施例で用いる主要な用語を説明する。本実施例で用いる「サービス」とは、ＩＰ（Internet Protocol）網を介して利用者端末からＳＩＰ（Session Initiation Protocol）等によるメッセージを受信して処理するサービスのことであり、例えば、インスタントメッセージを利用者端末から受信して相手端末に伝達するサービスや、ＩＰ電話の呼メッセージを利用者端末から受け付けて相手端末を呼び出すサービス、電子メールメッセージを利用者端末から受信して相手端末に送信するサービスなどがこれに該当する。
【００４３】
また、本実施例で用いる「メッセージ」とは、上記のサービスを利用する利用者の利用者端末からＳＩＰ等によって発信されるメッセージのことであり、例えば、インスタントメッセージや、ＩＰ電話の呼メッセージ、電子メールなどがこれに該当する。
【００４４】
また、本実施例で用いる「発信者アドレス（本実施例では「Ｓ」と表記する。）」とは、上記のサービスを利用する利用者（メッセージの発信者）が本来的に有している通信用の連絡先のことを指し、例えば、メールアドレスや、ＩＰ電話の電話番号などがこれに該当する。なお、かかる発信者アドレスは、上記のメッセージ発信にともなって利用者端末から発信されるものである。
【００４５】
また、本実施例で用いる「有効条件（特許請求の範囲に記載の「発信条件」に対応する。また、本実施例では「Ｃ」と表記する。）」とは、上記のメッセージの発信が満たすべき発信条件のことであり、例えば、図６に示すように、メッセージの発信を許可する利用者端末のネットワークアドレス（ＩＰアドレス等）、メッセージの発信を許可する期限（若しくは期間）などを指定した条件がこれに該当する。
【００４６】
また、本実施例で用いる「発信者コード（本実施例では「Ｔ」と表記する。）」とは、上記のサービスを利用し得る正当な利用者であることを証明するためのコードであり、具体的には、上記の発信者アドレスおよび所定の鍵、さらには上記の有効条件を引数とする演算処理（一方向関数や暗号化による演算処理）を経て生成される。
【００４７】
また、本実施例で用いる「署名データ（本実施例では「Ｄ（Ｔ）」や「Ｄ（Ｒ，Ｔ）」と表記する。）」とは、上記の発信者コードで署名されたデータのことであり、例えば、上記のメッセージにおけるヘッダ情報のうちからＴＯフィールド（宛先である着信者アドレスＲ）とＤＡＴＥフィールドとを連結した文字列などを引数とし、上記の発信者コードを鍵とする鍵付きハッシュ関数から求められた値などがこれに該当する。
【００４８】
また、本実施例で用いる「検証コード（本実施例では「Ｖ」と表記する。）」とは、上記の発信者コードの有効性（発信者のなりすまし等の不正が行われていないかどうか）を検証するためのコードであり、具体的には、上記の発信者コードの生成処理と同様の処理を実行することで生成される。
【００４９】
また、本実施例で用いる「検証用署名データ（本実施例では「Ｄ（Ｖ）」や「Ｄ（Ｒ，Ｖ）」と表記する。）」とは、上記の検証コードで署名されたデータのことであり、具体的には、上記の署名データの生成処理と同様の処理を実行することで生成される。
【００５０】
［システムの概要および特徴］
続いて、本実施例に係るメッセージ検証システムの概要および特徴を説明する。本実施例に係るメッセージ検証システムは、概略的には、メッセージサービスを提供するサーバ装置（図１に示すメッセージ受信装置２０など）において、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証した上でメッセージを処理するものである。
【００５１】
そして、かかるメッセージ検証システムでは、いわゆるパスワード認証ではなく、発信者アドレスおよび鍵を引数とする発信者コードを利用してメッセージ検証を行うこと等によって、発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することを可能にしている点などに主たる特徴がある。以下に、この主たる特徴を簡単に説明する。
【００５２】
本実施例に係るメッセージ検証システムでは、利用者によるメッセージの発信に先立って、その利用者がメッセージサービスを利用し得る正当な利用者であることを証明するための発信者コードを生成して利用者に付与する。ここで、この利用者コードは、所定の鍵および当該利用者の発信者アドレス、さらには当該利用者によるメッセージの発信が満たすべき有効条件を引数とする演算処理を実行することで生成される。
【００５３】
そして、メッセージサービスを提供するサーバ装置（図１に示すメッセージ受信装置２０など）においては、利用者端末からメッセージとともに、発信者コードで署名された署名データを受信し、メッセージの発信者アドレスを用いて発信者コードの有効性を検証する。より詳細には、先ずは、利用者端末から受信したメッセージの発信者アドレスおよび所定の鍵（上記の発信者コード生成に用いられた鍵）、さらには有効条件を用いて、発信者コードの生成と同様の演算処理を実行して検証コードを生成する。続けて、この検証コードで署名された検証用署名データを生成し、この検証用署名データと利用者端末から受信した署名データとが一致するか否かを判定して発信者コードの有効性を検証する。
【００５４】
その結果、サーバ装置（図１に示すメッセージ受信装置２０など）においては、両者が一致する場合には、発信者コードが有効であるとしてメッセージ転送などのメッセージ処理を実行する。その一方、両者が一致しない場合には、発信者コードが無効である（すなわち、発信者アドレスが異なる発信者のなりすましによる不正なメッセージ、または、有効条件を満たさない不正なメッセージである）としてメッセージを破棄等する。
【００５５】
上記したようなことから、本実施例によれば、発信者アドレスおよび鍵を引数とする発信者コードを利用してメッセージ検証を行うので、パスワード認証のようなデータベースを参照する必要がなくなり、発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することが可能になる。また、本実施例によれば、発信者コードそのものではなく、発信者コードで署名された署名データを受け付けて検証するので、経路中にあるメッセージ中継装置が発信者コードをコピーして発信者になりすます行為も防止することが可能になる。
【００５６】
また、本実施例によれば、検証に際して発信者アドレスおよび発信者コードを対応付けたデータベースから発信者コードを読み出すのではなく、演算処理によって発信者コード（検証コード）を生成するので、高速かつ軽負荷なメッセージ検証を実現することが可能になる。なお、発信者コードおよび検証コードを生成するための関数を発信者などに開示しないので、複数の利用者の結託による関数解読も防止することが可能になる。
【００５７】
さらに、本実施例によれば、有効条件も関係付けて発信者コードを生成するので、発信者コードの漏洩、傍受または偽造による不正が行われても（例えば、不正発信を試みる不正利用者と結託した発信者が自信の発信者コードを不正利用者に漏らしたとしても）、有効条件を満たさない限り不正なメッセージ発信として検出することができ、発信者のなりすましによる不正なメッセージの発信を確実に防止することが可能になるだけでなく、有効条件を満たさない他の不正なメッセージ発信を確実に防止することも可能になる。
【実施例１】
【００５８】
実施例１では、インスタントメッセージやＩＰ電話の呼メッセージを利用者端末から受け付けてメッセージ処理するサービスに本発明を適用した場合を説明する。なお、以下では、本実施例１に係るメッセージ検証システムの構成を説明した後に、システム全体の処理手順を説明し、最後に実施例１の効果等を説明する。
【００５９】
［メッセージ検証システムの構成（実施例１）］
まず最初に、図１を用いて、実施例１に係るメッセージ検証システムの構成を説明する。図１は、実施例１に係るメッセージ検証システムの構成を示すブロック図である。同図に示すように、このメッセージ検証システムは、インターネット３と接続されるＩＰ網２やＬＡＮ４を介して、発信者端末１と、発信者認証装置１０と、複数のメッセージ受信装置２０とを相互に通信可能に接続して構成される。なお、発信者端末１は請求項２などに記載の利用者端末に対応し、発信者認証装置１０は請求項２などに記載の発信者コード生成手段に対応し、メッセージ受信装置２０は請求項２などに記載の検証手段および請求項１１に記載のサーバに対応する。
【００６０】
このうち、発信者端末１は、メッセージサービスを利用する利用者であってメッセージを発信する発信者が使用する利用者端末であり、主として、発信者認証装置１０にアクセスして発信者認証の後に発信者コードの発行を受ける役割や、発信者コードとともに有効条件を発信者認証装置１０から取得する役割、発信者コードを用いて署名データを生成する役割、署名データおよび有効条件とともにメッセージをメッセージ受信装置２０に送信する役割などを有する。なお、かかる発信者端末１は、既知のパーソナルコンピュータやワークステーション、家庭用ゲーム機、インターネットＴＶ、ＰＤＡ、あるいは携帯電話やＰＨＳの如き移動体通信端末などで実現される。
【００６１】
発信者認証装置１０は、メッセージサービスを利用し得る利用者の情報を管理する業者（ＩＳＰ業者など）の装置であり、主として、発信者端末１との間で利用者の認証を行う役割、利用者認証が成功した利用者に対して発信者コードを発行する役割などを有する。また、メッセージ受信装置２０は、メッセージサービスを提供する業者（ＩＳＰ業者など）の装置であり、主として、発信者端末１から受信したメッセージを検証して処理する役割などを有する。なお、発信者認証装置１０およびメッセージ受信装置２０は、既知のサーバコンピュータで実現される。以下に、これらの各装置の機能構成を詳細に説明する。
【００６２】
［発信者端末の構成（実施例１）］
発信者端末１は、Ｗｅｂブラウザやインスタントメッセージ用ソフト、ＩＰ電話用ソフトなど、各種のソフトウェアがインストールされた既知の利用者端末であるが、特に本発明に密接に関連するものとしては、図１に示すように、署名生成部１ａを備える。
【００６３】
この署名生成部１ａは、発信者コードを用いて署名データを生成する処理部である。具体的には、メッセージ受信装置２０に送信しようとしているメッセージにおけるヘッダ情報のうちからＴＯフィールド（宛先である着信者アドレスＲ）とＤＡＴＥフィールドとを連結した文字列を引数とし、発信者コードＴを鍵とする鍵付きハッシュ関数の値を求め、この値の下位１６バイトを抽出することで署名データＤ（Ｔ）を生成する。つまり、下位１６バイトの値が署名データＤ（Ｔ）となる。なお、鍵付きハッシュ関数は、ＲＦＣ−２１０４に記載のものなどの公知のものでもよく、また、鍵付きハッシュ関数の構成に用いるハッシュ関数も、ＭＤ−５やＳＨＡ−１などの公知のものでもよい。
【００６４】
［発信者認証装置の構成（実施例１）］
発信者認証装置１０は、図１に示すように、認証通信部１１と、ユーザテーブル１２と、発信者認証部１３と、マスター鍵テーブル１４と、発信者コード生成部１５とを備える。なお、認証通信部１１は請求項６に記載の付与手段に対応し、発信者コード生成部１４は請求項２、４、５、８または９に記載の発信者コード生成手段に対応する。
【００６５】
このうち、認証通信部１１は、いわゆるＨＴＴＰの通信プロトコルなどにしたがって、発信者端末１との間における通信を制御する処理部である。具体的には、発信者端末１からアクセス要求を受け付けると、ユーザ認証ページを発信者端末１に送信してユーザ名（発信者アドレスＳ）およびパスワードの入力を受け付ける。また、発信者認証が成功して発信者コードＴが生成されると、この発信者コードＴおよび当該発信者コードＴの生成に用いた有効条件Ｃを発信者端末１に対して送信する。なお、発信者コードＴの送信に際しては、ＴＬＳやＳ／ＭＩＭＥなどの暗号化処理を利用することで、発信者コードＴの傍受を防止することが望ましい。
【００６６】
ユーザテーブル１２は、メッセージサービスを利用し得る利用者の情報を記憶する手段であり、具体的には、図２に例示するように、利用者ごとに、発信者認証に用いられるユーザ名およびパスワードを記憶して構成される。このユーザテーブル１２はデータベースで実現される。なお、本実施例では、発信者認証に用いられるユーザ名と、利用者の発信者アドレスＳのユーザ名とが一致する例を挙げているため、ユーザテーブル１２には各利用者の発信者アドレスＳそのものを記憶していないが、両者が異なる場合には、発信者アドレスＳも記憶することとなる。
【００６７】
マスター鍵テーブル１４は、発信者コードＴの生成に用いる鍵（マスター鍵）を記憶する手段であり、具体的には、図３に例示するように、マスター鍵を一定期間ごとに更新する趣旨から、発信者コードＴに関係づけられる有効期限（有効条件の一つ）の範囲ごとに、複数のインデックス番号（０〜３）に対応付けて、それぞれの鍵（Ｋ）を記憶して構成される。なお、このマスター鍵テーブル１４は、マスター鍵のデータを含む電子ファイルを発信者認証装置１０の蓄積領域に保存することで実現される。ただし、発信者コードＴの生成を高速に実現するために、後述の発信者コード生成部１５は、プログラム実行プロセス起動時に電子ファイルのデータをプロセス内のメモリに読み込み、起動中はメモリをマスター鍵テーブル１４として利用する。
【００６８】
発信者認証部１３は、発信者端末１の発信者がメッセージサービスを利用し得る正当な利用者であるか否かを認証する処理部である。具体的には、発信者端末１から発信者アドレスＳ（ユーザ名）およびパスワードを受け付けると、これに対応するユーザ名およびパスワードがユーザテーブル１２に記憶されているか否かを認証する。その結果、発信者の認証が成功すれば、発信者コード生成部１５に発信者アドレスＳ（ユーザ名）および発信者端末１のＩＰアドレスを受け渡す。その一方、発信者の認証が失敗すれば、その旨を発信者端末１に送信する。なお、発信者認証の手法は任意であり、例えば、ダイジェスト認証や公開鍵を用いる手法を採用してもよい。
【００６９】
発信者コード生成部１５は、マスター鍵テーブル１４に記憶された鍵Ｋ、発信者認証部１３から受け取った発信者アドレスＳおよび有効条件Ｃを引数とする演算処理（一方向関数を用いた処理）を実行して発信者コードＴを生成する処理部である。以下に、図５および図６を用いて、発信者コード生成部１５による発信者コードＴの生成処理を説明する。図５は、実施例１による発信者コード生成処理の流れを示すフローチャートであり、図６は、有効条件Ｃの構成例を示す図である。
【００７０】
図６に示すように、有効条件Ｃは、有効条件の種別を表す種別情報と有効条件（例えば、ＩＰアドレス指定、有効期限指定などの発信条件）の内容とを「コンマ（，）」で結合して構成される。ここで、「ＩＰアドレス指定（Ｎ）」は、メッセージの発信を許可する発信者端末１のネットワークアドレスを指定する条件であり、発信者認証部１３から受け取ったＩＰアドレスの値をもって規定する。また、「有効期限指定（Ｅ）」は、メッセージの発信を許可する期限を指定する条件であり、現在（発信者認証の成功時）の年月日時から所定期間後の年月日時の値をもって規定する。
【００７１】
そして、このようにして規定された有効条件Ｃ、さらには、マスター鍵テーブル１４に記憶された鍵Ｋと発信者認証部１３から受け取った発信者アドレスＳとを用いて発信者コードＴが生成される。すなわち、発信者コード生成部１５は、図５に示すように、有効条件Ｃに基づいてマスター鍵テーブル１４からマスター鍵Ｋｍを選択する（ステップＳ５０１）。この選択は、有効条件Ｃのハッシュ値の下位２ビットをインデックス番号として求めた後、有効条件Ｃ内の有効期限を有効期限範囲に含み、かつ、インデックス番号が一致する鍵をマスター鍵Ｋｍとして選択することによって行われる。
【００７２】
続いて、発信者コード生成部１５は、発信者アドレスＳと有効条件Ｃとを連結した文字列ｘを生成する（ステップＳ５０２）。そして、この文字列ｘを引数とし、マスター鍵Ｋｍを鍵とする鍵付きハッシュ関数の値を求め、この値の下位１６バイトを抽出することで発信者コードＴを生成する（ステップＳ５０３）。つまり、下位１６バイトの値が発信者コードＴとなる。このようにして生成された発信者コードＴおよび当該発信者コードＴの生成に用いた有効条件Ｃは発信者端末１に送信される。
【００７３】
なお、本実施例では、いわゆるＫｅｙｅｄＨａｓｈアルゴリズムによって発信者コードＴを生成するが、具体的なハッシュ関数としてはＳＨＡ−１を用いた例を示している。ただし、発信者コード生成部１５と後述する検証コード生成部２５とでアルゴリズムが共有されていればハッシュ関数は任意であり、例えばＭＤ５を用いてもよい。
【００７４】
［メッセージ受信装置の構成（実施例１）］
メッセージ受信装置２０は、図１に示すように、メッセージ受信部２１と、メッセージ処理部２２と、有効条件判定部２３と、マスター鍵テーブル２４と、検証コード生成部２５と、検証用署名生成部２６と、コード検証部２７とを備える。なお、有効条件判定部２３は請求項６に記載の発信条件判定手段に対応し、検証コード生成部２５は請求項３、４、５、６、８、９または１１に記載の検証コード生成手段に対応し、検証用署名生成部２６は請求項３に記載の検証用署名データ生成手段に対応し、コード検証部２７は請求項３に記載のコード検証手段に対応する。
【００７５】
このうち、メッセージ受信部２１は、いわゆるＵＤＰ／ＩＰやＴＣＰ／ＩＰの通信プロトコルなどにしたがって、発信者端末１からメッセージを受信する処理部である。具体的には、発信者アドレスＳと、発信者認証装置１０から利用者が受け取った発信者コードＴで署名された署名データＤ（Ｔ）と、同じく発信者認証装置１０から利用者が受け取った有効条件Ｃとを含んだメッセージを発信者端末１から受信する。
【００７６】
メッセージ処理部２２は、メッセージ受信部２１が発信者端末１から受信したメッセージを処理する処理部である。具体的には、受信したインスタントメッセージの伝達や、ＩＰ電話における呼の確立などのメッセージ処理を実行するが、後述の有効条件判定やコード検証が失敗した場合には、これらのメッセージ処理を実行することなくメッセージの廃棄等を実行する。
【００７７】
マスター鍵テーブル２４は、上記した発信者認証装置１０が備えるマスター鍵テーブル１４との間で、ＬＡＮ４を介して同期が取られているテーブルである。つまり、マスター鍵テーブル２４も、図３に例示したものと同様の情報を記憶する。
【００７８】
有効条件判定部２３は、発信者端末１から受信した有効条件Ｃをメッセージの発信が満たしているか否かを判定する処理部である。具体的には、有効条件ＣにＩＰアドレス指定（Ｎ）が含まれていれば、メッセージを伝達したＵＤＰ／ＩＰパケット等のソースＩＰアドレスと有効条件Ｃ内のＩＰアドレスが一致するか否かを判定し、さらに、有効条件Ｃに有効期限指定（Ｅ）が含まれていれば、メッセージを受信した時点が有効条件Ｃ内の有効期限の以前であるか否かを判定する。その結果、全ての有効条件を満たす場合には、後述の検証コード生成部２５による処理が実行されるが、有効条件を一つでも満たさない場合には、上記のメッセージ処理部２２によってメッセージの廃棄等が実行される。
【００７９】
検証コード生成部２５は、マスター鍵テーブル２４に記憶された鍵Ｋ、発信者端末１からメッセージとともに受信した発信者アドレスＳおよび有効条件Ｃを引数とする演算処理（一方向関数を用いた処理）を実行して検証コードＶを生成する処理部である。具体的には、図５に示したように、上記した発明者認証装置１０の発信者コード生成部１５による発信者コードＴの生成と同様の演算処理を実行して検証コードＶを生成する。
【００８０】
検証用署名作成部２６は、検証コード生成部２５によって生成された検証コードＶで署名された検証用署名データＤ（Ｖ）を生成する処理部である。具体的には、上記した発信者端末１の署名生成部１ａによる署名データＤ（Ｔ）の生成と同様の処理を実行して検証用署名データＤ（Ｖ）を生成する。
【００８１】
コード検証部２７は、発信者端末１から受信した署名データＤ（Ｔ）と検証用署名作成部２６によって生成された検証用署名データＤ（Ｖ）とが一致するか否かを判定して、発信者コードＴの有効性を検証する処理部である。その結果、両者が一致する場合には、上記のメッセージ処理部２２によってメッセージ処理が実行されるが、両者が一致しない場合には、メッセージ処理部２２によってメッセージの廃棄等が実行される。なお、発信者コードＴの生成に用いた発信者アドレスＳとは異なる発信者アドレスＳからメッセージが発信された場合や、発信者コードＴの生成に用いた有効条件Ｃが改ざんされて異なる有効条件Ｃが発信されたような場合には、署名データＤ（Ｔ）と検証用署名データＤ（Ｖ）とが一致しなくなる。
【００８２】
［システム全体の処理手順（実施例１）］
次に、図４を用いて、実施例１に係るメッセージ検証システムの処理手順を説明する。図４は、実施例１による処理手順を示すシーケンス図である。
【００８３】
同図に示すように、発信者認証装置１０は、発信者端末１からアクセス要求を受け付けると（ステップＳ４０１）、ユーザ認証ページを発信者端末１に送信してユーザ名（発信者アドレスＳ）およびパスワードの入力を受け付ける（ステップＳ４０２）。そして、発信者端末１からユーザ名およびパスワードを含んだ認証要求を受信すると（ステップＳ４０３）、発信者認証装置１０は、これに対応するユーザ名およびパスワードがユーザテーブル１２に記憶されているか否か判定して発信者を認証する（ステップＳ４０４）。
【００８４】
その結果、発信者の認証が失敗すれば、その旨を発信者端末１に送信するが、これとは反対に発信者の認証が成功した場合には、発信者認証装置１０は、マスター鍵テーブル１４に記憶された鍵Ｋ、発信者認証部１３から受け取った発信者アドレスＳおよび有効条件Ｃを引数とする演算処理（一方向関数を用いた処理）を実行して発信者コードＴを生成する（ステップＳ４０５）。
【００８５】
そして、発信者認証装置１０は、認証応答として、生成した発信者コードＴおよび当該発信者コードＴの生成に用いた有効条件Ｃを発信者端末１に対して送信する（ステップＳ４０６）。これによって、発信者コードＴが有効である限り、発信者は発信者コードＴを用いてメッセージを発信することとなる。
【００８６】
すなわち、メッセージの発信に際して、発信者端末１では、メッセージ受信装置２０に送信しようとしているメッセージにおけるヘッダ情報のうちからＴＯフィールド（宛先である着信者アドレスＲ）とＤＡＴＥフィールドとを連結した文字列を引数とし、発信者コードＴを鍵とする鍵付きハッシュ関数の値を求め、この値の下位１６バイトを抽出することで署名データＤ（Ｔ）を生成する（ステップＳ４０７）。
【００８７】
そして、メッセージ受信装置２０は、発信者アドレスＳと、発信者認証装置１０から利用者が受け取った有効条件Ｃと、同じく発信者認証装置１０から受け取った発信者コードＴで署名された署名データＤ（Ｔ）とを含んだメッセージを発信者端末１から受信する（ステップＳ４０８）。続いて、メッセージ受信装置２０は、発信者端末１から受信した有効条件Ｃをメッセージの発信が満たしているか否かを判定する（ステップＳ４０９）。
【００８８】
この判定の結果、有効条件を一つでも満たさなければ、メッセージの廃棄等を実行するが、これとは反対に全ての有効条件を満たす場合には、メッセージ受信装置２０は、マスター鍵テーブル２４に記憶された鍵Ｋ、発信者端末１からメッセージとともに受信した発信者アドレスＳおよび有効条件Ｃを引数とする演算処理を実行して検証コードＶを生成する（ステップＳ４１０）。
【００８９】
続けて、メッセージ受信装置２０は、ステップＳ４１０で生成した検証コードＶで署名された検証用署名データＤ（Ｖ）を生成し（ステップＳ４１１）、さらに、発信者端末１から受信した署名データＤ（Ｔ）とステップＳ４１１で生成した検証用署名データＤ（Ｖ）とが一致するか否かを判定して、発信者コードＴの有効性を検証する（ステップＳ４１２）。
【００９０】
この検証の結果、両者が一致しなければ、メッセージの廃棄等を実行するが、これとは反対に両者が一致する場合には、メッセージ受信装置２０は、発信者端末１から受信したインスタントメッセージの伝達や、ＩＰ電話における呼の確立などのメッセージ処理を実行する（ステップＳ４１３）。
【００９１】
［実施例１の効果等］
上述してきたように、実施例１によれば、発信者アドレスおよび鍵を引数とする発信者コードを利用してメッセージ検証を行うので、パスワード認証のようなデータベースを参照する必要がなくなり、発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することが可能になる。
【００９２】
また、実施例１によれば、発信者コードそのものではなく、発信者コードＴで署名された署名データＤ（Ｔ）を受け付けて検証するので、経路中にあるメッセージ中継装置（例えば、メッセージ受信装置２０など）が発信者コードＴをコピーして発信者になりすます行為も防止することが可能になる。
【００９３】
また、実施例１によれば、検証に際してデータベース（発信者アドレスＳおよび発信者コードＴを対応付けたデータベース）から発信者コードＴを読み出すのではなく、演算処理によって発信者コードＴと同等の検証コードＶを生成するので、高速かつ軽負荷なメッセージ検証を実現することが可能になる。なお、発信者コードＴおよび検証コードＶを生成するための関数を発信者などに開示しないので、複数の利用者の結託による関数解読も防止することが可能になる。
【００９４】
また、実施例１によれば、有効条件Ｃも関係付けて発信者コードＴを生成するので、発信者コードＴの漏洩、傍受または偽造による不正が行われても（例えば、不正発信を試みる不正利用者と結託した発信者が自信の発信者コードを不正利用者に漏らしたとしても）、有効条件Ｃを満たさない限り不正なメッセージ発信として検出することができ、発信者のなりすましによる不正なメッセージの発信を確実に防止することが可能になるだけでなく、有効条件Ｃを満たさない他の不正なメッセージ発信を確実に防止することも可能になる。より具体的には、ネットワークアドレスや有効期限を満たさないメッセージを不正なメッセージ発信として排除することが可能になる。
【００９５】
また、実施例１によれば、有効条件Ｃを発信者コードＴに埋め込むことで利用者による有効条件Ｃの改ざんを防止していることを前提に、発信者端末１からメッセージとともに受け付けた有効条件Ｃを検証に用いることができるので、有効条件Ｃをデータベースで管理して検証に用いる方式に比較して、高速かつ軽負荷なメッセージ検証を実現することが可能になる。さらに、有効条件Ｃを満たさない不正なメッセージ発信については検証コードＴを生成することなくメッセージ処理を拒否するので、一層高速なメッセージ検証を実現することも可能になる。
【００９６】
また、実施例１によれば、発信者コードＴおよび検証コードＶの生成に用いる鍵を固定することなく選択するので、鍵の解析を困難にして不正なメッセージ発信を抑止することも可能になる。
【００９７】
また、実施例１によれば、一方向関数によるコード生成を採用することで、暗号化による発信者コードＴの生成（暗号化による発信者コードＴの生成では、暗号化アルゴリズムのデータブロック長によってコードの長さが決まるため、短い発信者コードＴを生成することはできない。）とは異なり、短い発信者コードＴを生成することが可能になる。
【００９８】
また、実施例１によれば、ユーザテーブルのようなデータベースを分散させたり、利用者ごとの署名鍵を各メッセージ受信装置２０に配信したりすることなく、鍵の共有のみで各メッセージ受信装置２０がメッセージ検証を行うことができるので、複数のメッセージ受信装置２０を備える広範囲で大規模なメッセージ処理システムでも負荷を生じさせることなくなくメッセージ検証を行うことが可能になる。
【実施例２】
【００９９】
ところで、上記の実施例１では、発信者コードＴの生成に用いた有効条件Ｃを利用者に付与した上で発信者端末１から受け付けることにしたが、本発明はこれに限定されるものではなく、有効条件Ｃの種別や組合せを固定とし、メッセージ受信装置２０が別途の手段で有効条件Ｃを取得するようにしてもよい。そこで、実施例２では、有効条件Ｃを利用者に付与しない場合を説明する。
【０１００】
［メッセージ検証システムの構成（実施例２）］
最初に、図７を用いて、実施例２に係るメッセージ検証システムの構成を説明する。図７は、実施例２に係るメッセージ検証システムの構成を示すブロック図である。同図に示すように、このメッセージ検証システムは、インターネット３と接続されるＩＰ網２やＬＡＮ４を介して、発信者端末１と、発信者認証装置３０と、複数のメッセージ受信装置４０とを相互に通信可能に接続して構成される。なお、発信者端末１は請求項２などに記載の利用者端末に対応し、発信者認証装置３０は請求項２などに記載の発信者コード生成手段に対応し、メッセージ受信装置４０は請求項２などに記載の検証手段および請求項１１に記載のサーバに対応する。
【０１０１】
このうち、発信者端末１は、上記の実施例１で説明した発信者端末１に対応するものであり、これと基本的には同様の機能を有する。ただし、実施例２では、発信者認証装置３０から発信者端末１へ発信者コードＴのみを送信する（有効条件Ｃは送信しない）ので、発信者端末１は、メッセージとともに署名データのみをメッセージ受信装置４０に送信する（有効条件Ｃは送信しない）。
【０１０２】
また、実施例２では、後述するように、所定時間ごと（例えば、１時間ごと）に有効な発信者コードＴを生成するので、発信者端末１は、所定時間ごと（例えば、毎時０分になるごと）に発信者認証装置３０にアクセスし、次の所定時間に有効な発信者コードＴの発行を受ける。
【０１０３】
発信者認証装置３０は、上記の実施例１で説明した発信者認証装置１０に対応するものであり、これと基本的には同様の機能を有する。つまり、図７に示す認証通信部３１、ユーザテーブル３２、発信者認証部３３、マスター鍵テーブル３４および発信者コード生成部３５は、図１に示した認証通信部１１、ユーザテーブル１２、発信者認証部１３、マスター鍵テーブル１４および発信者コード生成部１５と基本的に同様の機能を果たす。
【０１０４】
ただし、実施例２では、有効条件Ｃの種別や組合せを固定とし、所定時間ごと（例えば、１時間ごと）に有効な発信者コードＴを生成することを実現するために、発信者コード生成部３５は、有効条件Ｃとして、発信者端末１のＩＰアドレスを指定ＩＰアドレスとして指定するとともに、現在（発信者認証の成功時）時刻の次の時の０分を有効期限として指定する。つまり、現在が１２時３０分であれば１３時０分を有効期限として指定する。
【０１０５】
そして、発信者コード生成部３５は、このようにして指定された有効条件Ｃ、さらには、マスター鍵テーブル１４に記憶された鍵Ｋと発信者認証部３３から受け取った発信者アドレスＳとを用いて、図５に示したように、発信者コードＴを生成する。なお、実施例２では、発信者認証装置３０は、上記したように、発信者端末１へ発信者コードＴのみを送信し、当該発信者コードＴの生成に用いた有効条件Ｃは送信しない。
【０１０６】
メッセージ受信装置４０は、上記の実施例１で説明したメッセージ受信装置２０に対応するものであり、図７に示すように、図１に示した有効条件判定部２３の代わりに有効条件取得部４３を備えるが、メッセージ受信装置２０と基本的には同様の機能を有する。つまり、図７に示すメッセージ受信部４１、メッセージ処理部４２、マスター鍵テーブル４４、検証コード生成部４５、検証用署名生成部４６およびコード検証部４７は、図１に示したメッセージ受信部２１、メッセージ処理部２２、マスター鍵テーブル２４、検証コード生成部２５、検証用署名生成部２６およびコード検証部２７と同様の機能を果たす。なお、有効条件取得部４３は請求項７に記載の発信条件取得手段に対応し、検証コード生成部４５は請求項７に記載の検証コード生成手段に対応する。
【０１０７】
ただし、実施例２では、メッセージ受信部４１は、上記したように、発信者端末１からメッセージとともに署名データのみを受信する（有効条件Ｃは受信しない）。また、有効条件取得部４３は、発信者端末１からメッセージを受信した際に、当該メッセージの受信状況に基づいて当該メッセージの発信が満たすべき有効条件を取得する。つまり、メッセージを伝達したＵＤＰ／ＩＰパケット等のソースＩＰアドレス（発信者端末１のＩＰアドレス）を指定ＩＰアドレスの有効条件として取得するとともに、現在（メッセージの受信時）の時刻の次の時の０分を有効期限の有効条件として取得する。
【０１０８】
さらに、実施例２では、検証コード生成部４５は、有効条件取得部４３によって取得された有効条件Ｃを用いて検証コードＶを生成する。したがって、検証コードＶで署名された検証用署名データＤ（Ｖ）が発信者端末１から受信した署名データＤ（Ｔ）と一致しない場合には、有効条件取得部４３によって取得した有効条件Ｃが発信者コードＴの生成に用いたものと異なっているものとして、結果的に有効条件を判定することができる。
【０１０９】
［システム全体の処理手順（実施例２）］
次に、図８を用いて、実施例２に係るメッセージ検証システムの処理手順を説明する。図８は、実施例２による処理手順を示すシーケンス図である。
【０１１０】
同図に示すように、発信者認証装置３０は、図４に示した実施例１と同様の手順を経て発信者を認証する（ステップＳ８０１〜Ｓ８０４）。その結果、発信者の認証が失敗すれば、その旨を発信者端末１に送信するが、これとは反対に発信者の認証が成功した場合には、発信者認証装置３０は、マスター鍵テーブル１４に記憶された鍵Ｋ、発信者認証部１３から受け取った発信者アドレスＳおよび有効条件Ｃを引数とする演算処理（一方向関数を用いた処理）を実行して発信者コードＴを生成する（ステップＳ８０５）。なお、有効条件Ｃとしては、発信者端末１のＩＰアドレスが指定ＩＰアドレスとして指定されるとともに、現在（発信者認証の成功時）の時刻の次の時の０分が有効期限として指定される。
【０１１１】
そして、発信者認証装置３０は、認証応答として、生成した発信者コードＴを発信者端末１に対して送信する（ステップＳ８０６）。ただし、発信者コードＴの生成に用いた有効条件Ｃは発信者端末１に送信されない。これによって、発信者コードＴが有効である限り、発信者は発信者コードＴを用いてメッセージを発信することとなる。
【０１１２】
すなわち、メッセージの発信に際して、発信者端末１では、図４に示した実施例１と同様の手順を経て署名データＤ（Ｔ）を生成する（ステップＳ８０７）。そして、メッセージ受信装置４０は、発信者アドレスＳと、発信者認証装置１０から受け取った発信者コードＴで署名された署名データＤ（Ｔ）とを含んだメッセージを発信者端末１から受信する（ステップＳ８０８）。なお、発信者コードＴの生成に用いた有効条件Ｃは発信者端末１から受信しない。
【０１１３】
続いて、メッセージ受信装置４０は、メッセージを伝達したＵＤＰ／ＩＰパケット等のソースＩＰアドレス（発信者端末１のＩＰアドレス）を指定ＩＰアドレスの有効条件Ｃとして取得するとともに、現在（メッセージの受信時）の時刻の次の時の０分を有効期限の有効条件Ｃとして取得する（ステップＳ８０９）。
【０１１４】
そして、メッセージ受信装置４０は、マスター鍵テーブル４４に記憶された鍵Ｋ、発信者端末１からメッセージとともに受信した発信者アドレスＳ、および、ステップＳ８０９で取得した有効条件Ｃを引数とする演算処理を実行して検証コードＶを生成する（ステップＳ８１０）。これに続いて、メッセージ受信装置４０は、図４に示した実施例１と同様の手順を経て、検証用署名データＤ（Ｖ）の生成、署名データＤ（Ｔ）と検証用署名データＤ（Ｖ）との一致判定、メッセージ処理を実行する（ステップＳ８１１〜Ｓ８１３）。
【０１１５】
［実施例２の効果等］
上述してきたように、実施例２によれば、発信者コードＴの生成に用いた有効条件Ｃをデータベースで管理して検証に用いるのではなく、メッセージの受信状況から取得した有効条件Ｃを検証に用いるので、高速かつ軽負荷なメッセージ検証を実現することが可能になる。さらに、有効条件Ｃを利用者に開示しないので、有効条件Ｃの改ざんを回避して、不正なメッセージ発信を一層確実に防止することも可能になる。
【実施例３】
【０１１６】
ところで、上記の実施例１および２では、一方向関数を用いた演算処理によって発信者コードＴおよび検証コードＶを生成する場合を説明したが、本発明はこれに限定されるものではなく、暗号化を用いた演算処理によって発信者コードＴおよび検証コードＶを生成するようにしてもよい。そこで、実施例３では、暗号化によって発信者コードＴおよび検証コードＶを生成する場合を説明する。
【０１１７】
［メッセージ検証システムの構成（実施例３）］
図９は、実施例３に係るメッセージ検証システムの構成を示すブロック図である。同図に示すように、このメッセージ検証システムは、インターネット３と接続されるＩＰ網２やＬＡＮ４を介して、発信者端末１と、発信者認証装置５０と、複数のメッセージ受信装置６０とを相互に通信可能に接続して構成される。なお、発信者端末１は請求項２などに記載の利用者端末に対応し、発信者認証装置５０は請求項２などに記載の発信者コード生成手段に対応し、メッセージ受信装置６０は請求項２などに記載の検証手段および請求項１１に記載のサーバに対応する。
【０１１８】
このうち、発信者端末１は、上記の実施例１で説明した発信者端末１に対応するものであり、これと基本的には同様の機能を有する。また、発信者認証装置５０は、上記の実施例１で説明した発信者認証装置１０に対応するものであり、図９に示すように、乱数列テーブル５６をさらに備えるが、発信者認証装置１０と基本的には同様の機能を有する。
【０１１９】
つまり、図９に示す認証通信部５１、ユーザテーブル５２、発信者認証部５３、マスター鍵テーブル５４および発信者コード生成部５５は、図１に示した認証通信部１１、ユーザテーブル１２、発信者認証部１３、マスター鍵テーブル１４および発信者コード生成部１５と基本的に同様の機能を果たす。なお、発信者コード生成部５５は請求項１０に記載の発信者コード生成手段に対応する。
【０１２０】
ここで、発信者認証装置５０の乱数列テーブル５６は、発信者コードＴの生成に用いる乱数列を記憶する手段であり、具体的には、図１０に例示するように、複数の乱数列それぞれを一意に特定するためのインデックス番号に対応付けて、それぞれの乱数列を記憶して構成される。
【０１２１】
また、発信者認証装置５０の発信者コード生成部５５は、マスター鍵テーブル５４に記憶された鍵Ｋ、発信者アドレスＳおよび有効条件Ｃを引数とする演算処理（暗号化を用いた処理）を実行して発信者コードＴを生成する処理部である。以下に、図１１を用いて、発信者コード生成部５５による発信者コードＴの生成処理を説明する。図１１は、実施例３による発信者コード生成処理の流れを示すフローチャートである。
【０１２２】
同図に示すように、発信者コード生成部５５は、実施例１と同様の手順でマスター鍵テーブル５４からマスター鍵Ｋｍを選択する（ステップＳ１１０１）。さらに、発信者コード生成部５５は、有効条件Ｃを引数とする選択関数によって乱数列テーブル５６からある一つの乱数列ｒを選択する（ステップＳ１１０２）。
【０１２３】
続けて、発信者コード生成部５５は、発信者アドレスＳに乱数列ｒをＥＸＯＲで加算して文字列Ｓ．ｒを生成する（ステップＳ１１０３）。そして、発信者コード生成部５５は、有効条件Ｃと文字列Ｓ．ｒとをつなげたデータをマスター鍵Ｋｍで暗号化し、暗号化結果を発信者コードＴとして生成する（ステップＳ１１０４）。なお、このようにして生成された発信者コードＴおよび当該発信者コードの生成に用いた有効条件Ｃは、実施例１と同様、発信者端末１に送信される。
【０１２４】
図９に戻ると、メッセージ受信装置６０は、上記の実施例１で説明したメッセージ受信装置２０に対応するものであり、同図に示すように、乱数列テーブル６８をさらに備えるが、メッセージ受信装置２０と基本的には同様の機能を有する。つまり、図９に示すメッセージ受信部６１、メッセージ処理部６２、有効条件判定部６３、マスター鍵テーブル６４、検証コード生成部６５、検証用署名生成部６６およびコード検証部６７は、図１に示したメッセージ受信部２１、メッセージ処理部２２、有効条件判定部２３、マスター鍵テーブル２４、検証コード生成部２５、検証用署名生成部２６およびコード検証部２７と同様の機能を果たす。なお、検証コード生成部６５は請求項１０に記載の検証コード生成手段に対応する。
【０１２５】
ここで、メッセージ受信装置６０の乱数列テーブル６８は、上記の乱数列テーブル５６との間でＬＡＮ４を介して同期が取られているテーブルであり、図１０に例示したものと同様の情報を記憶する。そして、メッセージ受信装置６０の検証コード生成部６５は、図１１に示したように、上記した発明者認証装置５０の発信者コード生成部５５による発信者コードＴの生成と同様の演算処理を実行して検証コードＶを生成する。
【０１２６】
［実施例３の効果等］
上述してきたように、実施例３によれば、暗号化によるコード生成を採用することで、乱数列を用いたコード生成を行うこともできるので、既知平文攻撃や差分攻撃による鍵解析を一層困難にして不正なメッセージ発信を抑止することも可能になる。
【０１２７】
なお、実施例３では、メッセージ受信装置６０でも暗号化によって検証コードＶを生成して発信者コードＴを検証する場合を説明したが、本発明はこれに限定されるものではなく、メッセージ受信装置６０で受信した発信者コードＴを復号化することによって発信者コードＴの有効性（発信者コードＴから復元された発信者アドレスＳや有効条件Ｃの有効性）を検証するようにしてもよい。なお、この場合には、有効条件Ｃを発信者コードＴから復元することができるので、有効条件Ｃを取得するための別手段を不要にすることも可能になる。
【実施例４】
【０１２８】
ところで、上記の実施例１〜３では、インスタントメッセージやＩＰ電話の呼メッセージを利用者端末から受け付けてメッセージ処理するサービスに本発明を適用した場合を説明したが、本発明はこれに限定されるものではなく、利用者端末からメールを受け付けて処理するサービスにも同様に適用することができる。
【０１２９】
そこで、実施例４では、利用者端末から発信されたメールが当該メールのサービスを利用し得る正当な利用者から発信されたものであるかを検証するメッセージ検証システムであって、特に、メッセージ検証を発信者メールサーバではなく経路上のリメールサーバで行う点、メッセージ検証に用いる署名データを利用者端末だけではなくメール転送サーバでも生成する点を主たる特徴とする場合を説明する。
【０１３０】
［メッセージ検証システムの構成（実施例４）］
最初に、図１２を用いて、実施例４に係るメッセージ検証システムの構成を説明する。図１２は、実施例４に係るメッセージ検証システムの構成を示すブロック図である。同図に示すように、このメッセージ検証システムは、インターネット３やＩＰ網２、ＬＡＮ４を介して、発信者端末１と、着信者端末５と、発信者認証装置７０と、リメールサーバ８０と、メール転送サーバ９０と、発信者メールサーバ６と、着信者メールサーバ７とを相互に通信可能に接続して構成される。なお、発信者端末１は請求項２などに記載の利用者端末に対応し、発信者認証装置１０は請求項２などに記載の発信者コード生成手段に対応し、リメールサーバ８０は請求項１２に記載のリメールサーバに対応し、メール転送サーバ９０は請求項１２に記載のメール転送サーバに対応する。
【０１３１】
このうち、発信者端末１および着信者端末５は、少なくとも電子メールソフトがインストールされた、既知のパーソナルコンピュータやワークステーション、家庭用ゲーム機、インターネットＴＶ、ＰＤＡ、あるいは携帯電話やＰＨＳの如き移動体通信端末などである。より詳細には、発信者端末１は、着信者にメールを発信する発信者が使用する端末であり、実施例１の発信者端末１と同様の役割を有するとともに、このメールに対する返信メールを着信者から受信する役割もある。一方、着信者端末５は、発信者から送信されたメールを着信する着信者が使用する端末であり、このメールに対する返信メールを発信者に発信する役割もある。
【０１３２】
発信者メールサーバ６および着信者メールサーバ７は、いわゆる既知のメールサーバである。より詳細には、発信者メールサーバ６は、発信者端末１からメールを受け付けるとともに、このメールに対する返信メールを発信者端末１に送信する役割を有し、また、着信者メールサーバ７は、メールを着信者端末５に送信するとともに、このメールに対する返信メールを発信者端末５から受け付ける役割を有する。
【０１３３】
発信者認証装置７０は、上記の実施例１で説明した発信者認証装置１０に対応するものであり、これと基本的には同様の機能を有する。また、リメールサーバ８０は、発信者端末１（発信者メールサーバ６）からメールを受け付けて、正当な利用者から発信されたものであるかを検証した上でメールを着信者端末５（着信者メールサーバ７）に転送するサーバである。さらに、メール転送サーバ９０は、着信者端末５（着信者メールサーバ７）から返信メールを受け付けて、この返信メールを発信者端末１（発信者メールサーバ６）に転送するサーバである。以下に、本実施例４の主たる特徴を担う発信者端末１、発信者認証装置７０、リメールサーバ８０、メール転送サーバ９０の構成を詳細に説明する。
【０１３４】
［発信者端末の構成（実施例４）］
発信者端末１は、Ｗｅｂブラウザや電子メールソフトなど、各種のソフトウェアがインストールされた既知の利用者端末であるが、特に本発明に密接に関連するものとしては、図１２に示すように、署名生成部１ｂを備える。
【０１３５】
この署名生成部１ｂは、発信者コードを用いて署名データを生成する処理部である。具体的には、発信しようとしているメールの着信者が有する着信者アドレスＲの文字列を引数とし、発信者コードＴを鍵とする鍵付きハッシュ関数の値を求め、この値の下位３０ビットをＢＡＳＥ３２符号化によって６文字の文字列に変換することで署名データＤ（Ｒ，Ｔ）を生成する。つまり、図１３に例示するような「ertg5e」の如き６文字の文字列が署名データＤ（Ｒ，Ｔ）となる（ステップＳ１３０８の宛先アドレス参照）。
【０１３６】
そして、発信者端末１は、作成した署名データＤ（Ｒ，Ｔ）をメールのヘッダ情報のＴＯフィールドに書き込んでメールを送信する。より詳細には、図１３に例示するように（ステップＳ１３０８の宛先アドレス参照）、着信者の着信者アドレスＲ「suzuki@mail.isp-B.ne.jp」におけるユーザ名「suzuki」およびドメイン名「mail.isp-B.ne.jp」と署名データ「ertg5e」とを「/」で連結し、さらに、これにリメールサーバ８０のドメイン名「remail.verfied.ne.jp」を「@」を介して結合することで、「suzuki/mail.isp-B.ne.jp/ertg5e@remail.verfied.ne.jp」の如き宛先アドレスを新たに生成し、これをＴＯフィールドに書き込んでメールを送信する。
【０１３７】
［発信者認証装置の構成（実施例４）］
発信者認証装置７０は、上記の実施例１で説明した発信者認証装置１０に対応するものであり、これと基本的には同様の機能を有する。つまり、図１２に示す認証通信部７１、ユーザテーブル７２、発信者認証部７３、マスター鍵テーブル７４および発信者コード生成部７５は、図１に示した認証通信部１１、ユーザテーブル１２、発信者認証部１３、マスター鍵テーブル１４および発信者コード生成部１５と基本的に同様の機能を果たす。
【０１３８】
ただし、実施例４では、有効条件を採用せず、かつ、複数のマスター鍵を用意しない場合の例である。すなわち、マスター鍵テーブル７４は、一つのマスター鍵Ｋｍのみを記憶する。また、発信者コード生成部７５は、発信者アドレスＳを引数とし、マスター鍵Ｋｍを鍵とする鍵付きハッシュ関数の値を求め、この値の下位１６バイトを抽出することで発信者コードＴを生成する。なお、生成した発信者コードＴは発信者端末１に送信される。
【０１３９】
［リメールサーバの構成（実施例４）］
リメールサーバ８０は、図１２に示すように、上記の実施例１で説明したメッセージ受信装置２０に対応するものであり、これと基本的には同様の機能を有する。つまり、図１２に示すメール受信部８１、メール転送部８２、マスター鍵テーブル８４、検証コード生成部８５、検証用署名生成部８６およびコード検証部８７は、図１に示したメッセージ受信部２１、メッセージ処理部２２、マスター鍵テーブル２４、検証コード生成部２５、検証用署名生成部２６およびコード検証部２７と同様の機能を果たす。なお、検証コード生成部２５、検証用署名生成部２６およびコード検証部２７は請求項１２に記載の検証手段に対応する。
【０１４０】
ただし、マスター鍵テーブル８４は、発信者認証装置７０のマスター鍵テーブル７４と同様、一つのマスター鍵Ｋｍのみを記憶する。また、検証コード生成部８５も、発信者認証装置７０の発信者コード生成部７５と同様、発信者アドレスＳを引数とし、マスター鍵Ｋｍを鍵とする鍵付きハッシュ関数の値を求め、この値の下位１６バイトを抽出することで検証コードＶを生成する。
【０１４１】
また、メール転送部８２は、コード検証が成功した場合には、メールを着信者端末５（着信者メールサーバ７）に転送する処理を行うが、転送に際しては、メールの宛先を着信者アドレスＲに置換するとともに、メールの発信元をメール転送先アドレスに置換する。より詳細には、図１３に例示するように（ステップＳ１３１２の発信元アドレス参照）、着信者の着信者アドレスＲ「suzuki@mail.isp-B.ne.jp」をＴＯフィールドに書き込むとともに、発信者の発信者アドレスＳ「tanaka@mail.isp-A.ne.jp」におけるユーザ名「tanaka」およびドメイン名「mail.isp-A.ne.jp」を「/」で連結し、さらに、これにメール転送サーバ９０のドメイン名「recv.verfied.ne.jp」を「@」を介して結合することで、「tanaka/mail.isp-A.ne.jp@recv.verfied.ne.jp」の如きメール転送先アドレスを新たに生成し、これをＦＲＯＭフィールドに書き込んでメールを転送する。
【０１４２】
［メール転送サーバの構成（実施例４）］
メール転送サーバ９０は、図１２に示すように、メール受信部９１と、メール転送部９２と、マスター鍵テーブル９４と、発信者コード生成部９５と、署名生成部９６とを備える。
【０１４３】
このうち、メール受信部９１は、着信者端末５（着信者メールサーバ７）から返信メールを受信する処理部である。また、マスター鍵テーブル９４は、発信者認証装置７０のマスター鍵テーブル７４との間で同期が取られ、発信者コードＴの生成に用いるマスター鍵Ｋｍを記憶する手段である。そして、発信者コード生成部９５は、発信者認証装置７０の発信者コード生成部７５と同様に、発信者コードＴを生成する処理部である。すなわち、返信メールの宛先である発信者アドレスＳおよびマスター鍵Ｋｍを用いて発信者コードＴを生成する。
【０１４４】
署名生成部９６は、発信者端末１の署名生成部１ｂと同様に、署名データＤ（Ｒ，Ｔ）を生成する処理部である。すなわち、返信メールの発信元である着信者アドレスＲと検証コード生成部９５によって生成された発信者コードＴとを用いて「ertg5e」の如き署名データＤ（Ｒ，Ｔ）を生成する。
【０１４５】
メール転送部９２は、返信メールを発信者端末１（発信者メールサーバ６）に転送する処理部であるが、転送に際しては、メールの宛先を発信者アドレスＳに置換するとともに、メールの発信元をリメール先アドレスに置換する。より詳細には、図１３に例示するように（ステップＳ１３１６の発信元アドレス参照）、発信者の発信者アドレスＳ「tanaka@mail.isp-A.ne.jp」をＴＯフィールドに書き込むとともに、着信者の着信者アドレスＲ「suzuki@mail.isp-B.ne.jp」におけるユーザ名「suzuki」およびドメイン名「mail.isp-B.ne.jp」と署名データ「ertg5e」とを「/」で連結し、さらに、これにリメールサーバ８０のドメイン名「remail.verfied.ne.jp」を「@」を介して結合することで、「suzuki/mail.isp-B.ne.jp/ertg5e@remail.verfied.ne.jp」の如きリメール先アドレスを新たに生成し、これをＦＲＯＭフィールドに書き込んで返信メールを転送する。
【０１４６】
［システム全体の処理手順（実施例４）］
次に、図１３を用いて、実施例４に係るメッセージ検証システムの処理手順を説明する。図１３は、実施例４による処理手順を示すシーケンス図である。
【０１４７】
同図に示すように、発信者認証装置７０は、図４に示した実施例１と同様の手順を経て発信者を認証する（ステップＳ１３０１〜Ｓ１３０４）。その結果、発信者の認証が失敗すれば、その旨を発信者端末１に送信するが、これとは反対に発信者の認証が成功した場合には、発信者認証装置７０は、マスター鍵テーブル１４に記憶された鍵Ｋおよび発信者アドレスＳから発信者コードＴを生成する（ステップＳ１３０５）。
【０１４８】
そして、発信者認証装置７０は、認証応答として、生成した発信者コードＴを発信者端末１に対して送信する（ステップＳ１３０６）。これによって、発信者コードＴが有効である限り、発信者は発信者コードＴを用いてメールを発信することとなる。
【０１４９】
すなわち、メールの発信に際して、発信者端末１では、メールの着信者が有する着信者アドレスＲの文字列を引数とし、発信者コードＴを鍵とする鍵付きハッシュ関数の値を求め、この値の下位３０ビットをＢＡＳＥ３２符号化によって６文字の文字列に変換することで署名データＤ（Ｒ，Ｔ）を生成する（ステップＳ１３０７）。
【０１５０】
さらに、発信者端末１は、着信者の着信者アドレスＲにおける「ユーザ名」および「ドメイン名」と「署名データ」とを「/」で連結し、さらに、これにリメールサーバ８０の「ドメイン名」を「@」を介して結合することで宛先アドレスを新たに生成し、これをＴＯフィールドに書き込んでメールを発信者メールサーバ６経由でリメールサーバ８０に送信する（ステップＳ１３０８）。
【０１５１】
かかるメールを受信したリメールサーバ８０では、マスター鍵テーブル８４に記憶されたマスター鍵Ｋｍ、メールの発信元である発信者アドレスＳを引数とする演算処理を実行して検証コードＶを生成する（ステップＳ１３０９）。さらに、リメールサーバ８０は、ステップＳ１３０９で生成した検証コードＶで署名された検証用署名データＤ（Ｒ，Ｖ）を生成し（ステップＳ１３１０）、さらに、メールの宛先アドレスに含まれる署名データＤ（Ｒ，Ｔ）とステップＳ１３１０で生成した検証用署名データＤ（Ｒ，Ｖ）とが一致するか否かを判定して、発信者コードＴの有効性を検証する（ステップＳ１３１１）。
【０１５２】
この検証の結果、両者が一致しなければ、メールの廃棄等を実行するが、これとは反対に両者が一致する場合には、リメールサーバ８０は、発信者端末１から受信したメールを着信者メールサーバ７経由で着信者端末５に転送する（ステップＳ１３１２）。具体的には、着信者の着信者アドレスＲをＴＯフィールドに書き込むとともに、発信者の発信者アドレスＳにおける「ユーザ名」および「ドメイン名」を「/」で連結し、さらに、これにメール転送サーバ９０の「ドメイン名」を「@」を介して結合することでメール転送先アドレスを新たに生成し、これをＦＲＯＭフィールドに書き込んでメールを転送する。
【０１５３】
これに対して、メール転送サーバ９０は、メールに対する返信メールを着信者端末５から着信者メールサーバ７を介して受信すると（ステップＳ１３１３）、発信者認証装置７０による発信者コードＴの生成と同様の手順で、返信メールの宛先である発信者アドレスＳおよびマスター鍵Ｋｍを用いて発信者コードＴを生成する（ステップＳ１３１４）。
【０１５４】
さらに、メール転送サーバ９０は、発信者端末１による署名データＤ（Ｒ，Ｔ）の生成と同様の手順で、返信メールの発信元である着信者アドレスＲおよびステップＳ１３１４で生成した発信者コードＴを用いて署名データＤ（Ｒ，Ｔ）を生成する（ステップＳ１３１５）。
【０１５５】
そして、メール転送サーバ９０は、着信者端末５から受信した返信メールを発信者メールサーバ６経由で発信者端末１に転送する（ステップＳ１３１６）。具体的には、発信者の発信者アドレスＳをＴＯフィールドに書き込むとともに、着信者の着信者アドレスＲにおける「ユーザ名」および「ドメイン名」と「署名データ」とを「/」で連結し、さらに、これにリメールサーバ８０の「ドメイン名」を「@」を介して結合することでリメール先アドレスを新たに生成し、これをＦＲＯＭフィールドに書き込んで返信メールを転送する。なお、発信者が返信メールに対して更なる返信メールを送信した場合には、上記のステップＳ１３０８から処理が繰り返される。
【０１５６】
［実施例４の効果等］
上述してきたように、実施例４によれば、いわゆるメールサービスにおいても、発信者のなりすましによる不正なメール発信を防止することが可能になる。さらに、メッセージの検証を発信者メールサーバ６ではなく、経路中のリメールサーバ８０で実行することもできる。
【０１５７】
また、実施例４によれば、メール転送サーバ９０で署名コードを含んだ発信元アドレスを作成するので、発信者が返信メールに対してさらに返信しようとする場合に、署名データを含んだ宛先アドレスを再び生成する必要はなく、通常のメール返信処理を発信者が実行するだけで、署名付きのメールを返信することが可能になる。
【実施例５】
【０１５８】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる形態にて実施されてよいものである。そこで、実施例５として種々の異なる実施例を説明する。
【０１５９】
例えば、上記した実施例では、インスタントメッセージやＩＰ電話、電子メールなどのメッセージサービスに本発明を適用した場合を説明したが、本発明はこれに限定されるものではなく、これらと同様に発信者アドレスを伴ったメッセージを処理するサービスであれば、本発明を同様に適用することができる。
【０１６０】
また、上記した実施例では、発信者コードで署名された署名データを発信者から受け付けて検証を行う場合を説明したが、本発明はこれに限定されるものではなく、発信者コードそのものを利用者から受け付け、発信者コードの一致不一致によって検証を行うようにしてもよい。この場合でも、ユーザ名やパスワードではなく、発信者アドレスに起因する発信者コードを利用してメッセージ検証を行うので、発信者のなりすましによる不正なメッセージの発信を防止することが可能になる。
【０１６１】
また、上記した実施例では、有効条件も関係付けて発信者コードを生成する場合を説明したが、本発明はこれに限定されるものではなく、少なくとも発信者アドレスおよび鍵を引数として発信者コードを生成するものであれば、他の条件を選択的に付加若しくは削除する場合であっても、本発明を同様に適用することができる。
【０１６２】
また、上記した実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（特に、有効条件に関する情報）については、特記する場合を除いて任意に変更することができる。
【０１６３】
また、上記の実施例で図示した各装置（発信者認証装置、メッセージ受信装置、リメールサーバ、メール転送サーバなど）の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１６４】
なお、上記の実施例では、本発明を実現する各装置（発信者認証装置、メッセージ受信装置、リメールサーバ、メール転送サーバなど）を機能面から説明したが、各装置の各機能はパーソナルコンピュータやワークステーションなどのコンピュータにプログラムを実行させることによって実現することもできる。すなわち、本実施例で説明した各種の処理手順は、あらかじめ用意されたプログラムをコンピュータに実行することによって実現することができる。そして、これらのプログラムは、インターネットなどのネットワークを介して配布することができる。さらに、これらのプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。つまり、例を挙げれば、実施例１に示したような発信者認証装置１０用プログラム、メッセージ受信装置２０用プログラムおよび発信者端末１用プログラムを格納したＣＤ−ＲＯＭ（装置ごとに別個のＣＤ−ＲＯＭであってもよい）を配布し、このＣＤ−ＲＯＭに格納されたプログラムを各コンピュータが読み出して実行するようにしてもよい。
【産業上の利用可能性】
【０１６５】
以上のように、本発明に係るメッセージ検証システム、メッセージ検証方法およびメッセージ検証プログラムは、利用者端末から発信されたメッセージが当該メッセージのサービスを利用し得る正当な利用者から発信されたものであるかを検証する場合に有用であり、特に、発信者のなりすましによる不正なメッセージの発信を防止するためのメッセージ検証を高速かつ軽負荷で実現することに適する。
【図面の簡単な説明】
【０１６６】
【図１】実施例１に係るシステムの全体構成を示すシステム構成図である。
【図２】図１に示したユーザテーブルに記憶される情報の構成例を示す図である。
【図３】図１に示したマスター鍵テーブルに記憶される情報の構成例を示す図である。
【図４】実施例１による処理手順を示すシーケンス図である。
【図５】実施例１による発信者コード生成処理（検証コード生成処理）の流れを示すフローチャートである。
【図６】有効条件の構成例を示す図である。
【図７】実施例２に係るシステムの全体構成を示すシステム構成図である。
【図８】実施例２による処理手順を示すシーケンス図である。
【図９】実施例３に係るシステムの全体構成を示すシステム構成図である。
【図１０】図９に示した乱数列テーブルに記憶される情報の構成例を示す図である。
【図１１】実施例３による発信者コード生成処理（検証コード生成処理）の流れを示すフローチャートである。
【図１２】実施例４に係るシステムの全体構成を示すシステム構成図である。
【図１３】実施例４による処理手順を示すシーケンス図である。
【符号の説明】
【０１６７】
１  発信者端末
２  ＩＰ網
３  インターネット
４  ＬＡＮ
１０  発信者認証装置
１１  認証通信部
１２  ユーザテーブル
１３  発信者認証部
１４  マスター鍵テーブル
１５  発信者コード生成部
２０  メッセージ受信装置
２１  メッセージ受信部
２２  メッセージ処理部
２３  有効条件判定部
２４  マスター鍵テーブル
２５  検証コード生成部
２６  コード検証部
【図１】
2005142719.tif 000003
【図２】
2005142719.tif 000004
【図３】
2005142719.tif 000005
【図４】
2005142719.tif 000006
【図５】
2005142719.tif 000007
【図６】
2005142719.tif 000008
【図７】
2005142719.tif 000009
【図８】
2005142719.tif 000010
【図９】
2005142719.tif 000011
【図１０】
2005142719.tif 000012
【図１１】
2005142719.tif 000013
【図１２】
2005142719.tif 000014
【図１３】
2005142719.tif 000015