(57)【要約】【課題】クライアント側にサーバと共通の認証データ生成用のプログラムを予め組み込む手間を省き、クライアント認証を行うことができる通信方法を提供する。【解決手段】サーバ１００２はクライアント２００２からの通信要求Ｍ０１に従って、認証データ生成プログラムＭ０２とノンスＭ０３をクライアント２００１に送信する。クライアント２００１はパスワード２００とノンスＭ０３を認証データ生成プログラムＭ０２に入力して認証データＭ０４を生成し、サーバ１００１に送信する。サーバ１００１はクライアント２００１に送信したノンスＭ０３とパスワード１００を認証データ生成プログラムＭ０２に入力して確認用データＭ０５を生成する。クライアント２００１が生成した認証データＭ０４と確認用認証データＭ０５を比較し、同じであれば通信を許可（認証）する。【選択図】        図２
2004274134.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して通信要求を送信するクライアントと、通信要求に従って当該クライアントを認証するための処理を行うサーバとからなる通信システムにおける通信方法であって、
前記クライアント及び前記サーバは、前記認証に用いられる第１情報を共通に予め保持する第１情報保持手段をそれぞれ備え、
前記サーバは、さらに、認証データを生成するための認証データ生成プログラムを予め保持する認証データ生成プログラム保持手段を備え、
前記サーバは、
前記通信要求を受信するごとに乱数を表すノンスを新たに生成するノンス生成ステップと、
前記ノンス生成ステップで生成されたノンスをノンス記憶手段に記憶させるノンス記憶ステップと、
前記ノンス記憶手段に記憶されたノンスと、前記認証データ生成プログラム保持手段に保持された認証データ生成プログラムとを前記クライアントに送信する第１送信ステップとを含み、
前記クライアントは、
前記サーバから受信した前記認証データ生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて認証データを生成する認証データ生成ステップと、
前記認証データ生成ステップで生成された認証データを前記サーバに送信する認証データ送信ステップとを含み、
前記サーバは、さらに
前記クライアントから認証データを受信すると、前記認証データ生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される第１情報とに基づいて確認用の認証データを生成する確認用認証データ生成ステップと、
前記クライアントから受信した認証データと、確認用認証データ生成ステップで生成された確認用の認証データとを比較し、一致するか否かでクライアントを認証する認証ステップとを含む
ことを特徴とする通信方法。
【請求項２】
前記第１送信ステップでは、さらに暗号鍵を生成するための暗号鍵生成プログラムと、当該暗号鍵でネットワーク上の通信データを暗号化するための暗号化プログラムとを送信し、
前記クライアントは、さらに
前記認証データを送信した後に、前記サーバから受信した暗号鍵生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて暗号鍵を生成する第１暗号鍵生成ステップと、
前記サーバから受信した暗号化プログラムを実行し、第１暗号鍵生成ステップで生成された暗号鍵を用いて前記サーバと暗号通信する第１暗号通信ステップとを含み、
前記サーバは、さらに
前記認証ステップにおける比較の結果、前記クライアントから受信した認証データと、自己が生成した確認用の認証データとが一致する場合に、前記第１送信ステップで送信される暗号鍵生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて暗号鍵を生成する第２暗号鍵生成ステップと、
前記第１送信ステップで送信される暗号化プログラムを実行し、前記第２暗号鍵生成ステップで生成された暗号鍵を用いて前記クライアントと暗号通信する第２暗号通信ステップとを含む
ことを特徴とする請求項１記載の通信方法。
【請求項３】
前記認証データ生成プログラムは、暗号鍵を生成する機能を含み、
前記第１送信ステップでは、ネットワーク上の通信データを暗号鍵で暗号化するための暗号化プログラムをさらに送信し、
前記クライアントは、さらに
前記認証データをサーバに送信した後、認証データ生成プログラムを再度実行し、前記認証データに基づいて暗号鍵を生成する第１暗号鍵生成ステップと、
前記サーバから受信した暗号化プログラムを実行し、第１暗号鍵生成ステップで生成された暗号鍵を用いて前記サーバと暗号通信する第１暗号通信ステップとを含み、
前記サーバは、
前記認証ステップにおける比較の結果、前記クライアントから受信した認証データと、自己が生成した確認用の認証データとが一致する場合に、前記第１送信ステップで送信される認証データ生成プログラムを再度実行し、前記確認用認証データに基づいて暗号鍵を生成する第２暗号鍵生成ステップと、
前記第１送信ステップで送信される暗号化プログラムを実行し、前記第２暗号鍵生成ステップで生成された暗号鍵を用いて前記クライアントと暗号通信する第２暗号通信ステップとを含む
ことを特徴とする請求項１記載の通信方法。
【請求項４】
前記認証データ送信ステップでは、さらに前記サーバから受信したノンスをサーバに送信し、
前記認証ステップでは、前記クライアントに送信した前記ノンスと前記クライアントから送信されてきた前記ノンスとを比較し、比較の結果両者が一致する場合に前記クライアントから送信されてきた前記認証データと前記確認用認証データを比較する
ことを特徴とする請求項１〜３のいずれか１項記載の通信方法。
【請求項５】
前記第１情報は、前記クライアントおよびサーバに共通のパスワードであり、
認証データ生成ステップでは、前記クライアントは、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持されるパスワードとに基づいて認証データを生成し、
前記確認用認証データ生成ステップでは、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持されるパスワードとに基づいて確認用の認証データを生成する
ことを特徴とする請求項１〜４のいずれか１項記載の通信方法。
【請求項６】
前記第１情報は、複数のクライアントに固有のＩＤと、各ＩＤにそれぞれ対応するパスワードとから構成され、
認証データ生成ステップでは、各前記クライアントは、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持されるパスワードと、ＩＤとに基づいて認証データを生成し、
前記確認用認証データ生成ステップでは、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される全クライアントのパスワードとＩＤとに基づいて各クライアント確認用の認証データを複数生成し、
前記認証ステップでは、前記クライアントから受信した認証データと、自己が生成した複数の確認用の認証データとを１つずつ比較し、一致するものがあるか否かで各前記クライアントを認証する
ことを特徴とする請求項１〜４のいずれか１項記載の通信方法。
【請求項７】
前記認証データ生成プログラムは、入力を一定の法則で変換する関数にハッシュ関数を含む
ことを特徴とする請求項１〜６のいずれか１項記載の通信方法。
【請求項８】
ネットワークを介して受信するクライアントからの通信要求に従って当該クライアントを認証するための処理を行うサーバにおける通信方法であって、
前記サーバは、
前記認証に用いられる第１情報を前記クライアントと共通に予め保持する第１情報保持手段と、
認証データを生成するための認証データ生成プログラムを予め保持する認証データ生成プログラム保持手段とを備え、
前記通信要求を受信するごとに乱数を表すノンスを新たに生成するノンス生成ステップと、
前記ノンス生成ステップで生成されたノンスをノンス記憶手段に記憶させるノンス記憶ステップと、
前記ノンス記憶手段に記憶されたノンスと、前記認証データ生成プログラム保持手段に保持された認証データ生成プログラムとを前記クライアントに送信する第１送信ステップと、
前記クライアントから認証データを受信すると、前記認証データ生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される第１情報とに基づいて確認用の認証データを生成する確認用認証データ生成ステップと、
前記クライアントから受信した認証データと、確認用認証データ生成ステップで生成された確認用の認証データとを比較し、一致するか否かでクライアントを認証する認証ステップとを含む
ことを特徴とする通信方法。
【請求項９】
前記第１送信ステップでは、さらに暗号鍵を生成するための暗号鍵生成プログラムと、当該暗号鍵でネットワーク上の通信データを暗号化するための暗号化プログラムとを送信し、
前記サーバは、さらに
前記認証ステップにおける比較の結果、前記クライアントから受信した認証データと、自己が生成した確認用の認証データとが一致する場合に、前記第１送信ステップで送信される暗号鍵生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて暗号鍵を生成する第２暗号鍵生成ステップと、
前記第１送信ステップで送信される暗号化プログラムを実行し、前記第２暗号鍵生成ステップで生成された暗号鍵を用いて前記クライアントと暗号通信する第２暗号通信ステップとを含む
ことを特徴とする請求項８記載の通信方法。
【請求項１０】
前記認証データ生成プログラムは、暗号鍵を生成する機能を含み、
前記第１送信ステップでは、ネットワーク上の通信データを暗号鍵で暗号化するための暗号化プログラムをさらに送信し、
前記サーバは、さらに
前記認証ステップにおける比較の結果、前記クライアントから受信した認証データと、自己が生成した確認用の認証データとが一致する場合に、前記第１送信ステップで送信される認証データ生成プログラムを再度実行し、前記確認用認証データに基づいて暗号鍵を生成する第２暗号鍵生成ステップと、
前記第１送信ステップで送信される暗号化プログラムを実行し、前記第２暗号鍵生成ステップで生成された暗号鍵を用いて前記クライアントと暗号通信する第２暗号通信ステップとを含む
ことを特徴とする請求項８記載の通信方法。
【請求項１１】
前記認証ステップでは、前記クライアントに送信した前記ノンスと前記クライアントから送信されてきた前記ノンスとを比較し、比較の結果両者が一致する場合に前記クライアントから送信されてきた前記認証データと前記確認用認証データを比較する
ことを特徴とする請求項８〜１０のいずれか１項記載の通信方法。
【請求項１２】
前記第１情報は、前記クライアントおよびサーバに共通のパスワードであり、
前記確認用認証データ生成ステップでは、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持されるパスワードとに基づいて確認用の認証データを生成する
ことを特徴とする請求項８〜１１のいずれか１項記載の通信方法。
【請求項１３】
前記第１情報は、複数のクライアントに固有のＩＤと、各ＩＤにそれぞれ対応するパスワードとから構成され、
前記確認用認証データ生成ステップでは、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される全クライアントのパスワードとＩＤとに基づいて各クライアント確認用の認証データを複数生成し、
前記認証ステップでは、前記クライアントから受信した認証データと、自己が生成した複数の確認用の認証データとを１つずつ比較し、一致するものがあるか否かで各前記クライアントを認証する
ことを特徴とする請求項８〜１１のいずれか１項記載の通信方法。
【請求項１４】
前記認証データ生成プログラムは、入力を一定の法則で変換する関数にハッシュ関数を含む
ことを特徴とする請求項８〜１３のいずれか１項記載の通信方法。
【請求項１５】
ネットワークを介して通信要求をサーバに送信し、当該サーバとの応答に基づいて認証を受けるクライアントにおける通信方法であって、
前記クライアントは、前記認証に用いられる第１情報を前記サーバと共通に予め保持する第１情報保持手段を備え、
前記通信要求をサーバに送信するごとに乱数を表すノンスと、認証データを生成するための認証データ生成プログラムとを前記サーバから受信する第１受信ステップと、
前記サーバから受信した認証データ生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて認証データを生成する認証データ生成ステップと、
前記認証データ生成ステップで生成された認証データを前記サーバに送信する認証データ送信ステップとを含む
ことを特徴とする通信方法。
【請求項１６】
前記第１受信ステップでは、さらに暗号鍵を生成するための暗号鍵生成プログラムと、当該暗号鍵でネットワーク上の通信データを暗号化するための暗号化プログラムとを受信し、
さらに、
前記認証データを送信した後に、前記サーバから受信した暗号鍵生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて暗号鍵を生成する第１暗号鍵生成ステップと、
前記サーバから受信した暗号化プログラムを実行し、第１暗号鍵生成ステップで生成された暗号鍵を用いて前記サーバと暗号通信する第１暗号通信ステップとを含む
ことを特徴とする請求項１５記載の通信方法。
【請求項１７】
前記認証データ生成プログラムは、暗号鍵を生成する機能を含み、
前記第１受信ステップでは、ネットワーク上の通信データを暗号鍵で暗号化するための暗号化プログラムをさらに受信し、
さらに、
前記認証データをサーバに送信した後、認証データ生成プログラムを再度実行し、前記認証データに基づいて暗号鍵を生成する第１暗号鍵生成ステップと、
前記サーバから受信した暗号化プログラムを実行し、第１暗号鍵生成ステップで生成された暗号鍵を用いて前記サーバと暗号通信する第１暗号通信ステップとを含む
ことを特徴とする請求項１５記載の通信方法。
【請求項１８】
前記認証データ送信ステップでは、さらに前記サーバから受信したノンスをサーバに送信する
ことを特徴とする請求項１５〜１７のいずれか１項記載の通信方法。
【請求項１９】
前記第１情報は、前記クライアントおよびサーバに共通のパスワードであり、
認証データ生成ステップでは、前記クライアントは、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持されるパスワードとに基づいて認証データを生成する
ことを特徴とする請求項１５〜１８のいずれか１項記載の通信方法。
【請求項２０】
前記第１情報は、複数のクライアントに固有のＩＤと、各ＩＤにそれぞれ対応するパスワードとから構成され、
認証データ生成ステップでは、各前記クライアントは、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持されるパスワードと、ＩＤとに基づいて認証データを生成する
ことを特徴とする請求項１５〜１９のいずれか１項記載の通信方法。
【請求項２１】
前記認証データ生成プログラムは、入力を一定の法則で変換する関数にハッシュ関数を含む
ことを特徴とする請求項１５〜２０のいずれか１項記載の通信方法。
【請求項２２】
ネットワークを介して通信要求を送信するクライアントと、通信要求に従って当該クライアントを認証するための処理を行うサーバとからなる通信システムであって、
前記クライアント及び前記サーバは、前記認証に用いられる第１情報を共通に予め保持する第１情報保持手段をそれぞれ備え、
前記サーバは、さらに、
認証データを生成するための認証データ生成プログラムを予め保持する認証データ生成プログラム保持手段と、
前記通信要求を受信するごとに乱数を表すノンスを新たに生成するノンス生成手段と、
前記ノンス生成手段で生成されたノンスを記憶するノンス記憶手段と、
前記ノンス記憶手段に記憶されたノンスと、前記認証データ生成プログラム保持手段に保持された認証データ生成プログラムとを前記クライアントに送信する第１送信手段とを備え、
前記クライアントは、さらに、
前記サーバから受信した前記認証データ生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて認証データを生成する認証データ生成手段と、
前記認証データ生成手段で生成された認証データを前記サーバに送信する認証データ送信手段とを備え、
前記サーバは、さらに
前記クライアントから認証データを受信すると、前記認証データ生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される第１情報とに基づいて確認用の認証データを生成する確認用認証データ生成手段と、
前記クライアントから受信した認証データと、確認用認証データ生成ステップで生成された確認用の認証データとを比較し、一致するか否かでクライアントを認証する認証手段とを備える
ことを特徴とする通信システム。
【請求項２３】
ネットワークを介して受信するクライアントからの通信要求に従って当該クライアントを認証するための処理を行うサーバであって、
前記認証に用いられる第１情報を前記クライアントと共通に予め保持する第１情報保持手段と、
認証データを生成するための認証データ生成プログラムを予め保持する認証データ生成プログラム保持手段と、
前記通信要求を受信するごとに乱数を表すノンスを新たに生成するノンス生成手段と、
前記ノンス生成手段で生成されたノンスを記憶するノンス記憶手段と、
前記ノンス記憶手段に記憶されたノンスと、前記認証データ生成プログラム保持手段に保持された認証データ生成プログラムとを前記クライアントに送信する第１送信手段と、
前記クライアントから認証データを受信すると、前記認証データ生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される第１情報とに基づいて確認用の認証データを生成する確認用認証データ生成手段と、
前記クライアントから受信した認証データと、確認用認証データ生成ステップで生成された確認用の認証データとを比較し、一致するか否かでクライアントを認証する認証手段とを備える
ことを特徴とするサーバ。
【請求項２４】
ネットワークを介して通信要求をサーバに送信し、当該サーバとの応答に基づいて認証を受けるクライアントであって、
前記認証に用いられる第１情報を前記サーバと共通に予め保持する第１情報保持手段と、
前記通信要求をサーバに送信するごとに乱数を表すノンスと、認証データを生成するための認証データ生成プログラムとを前記サーバから受信する第１受信手段と、
前記サーバから受信した認証データ生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて認証データを生成する認証データ生成手段と、
前記認証データ生成手段で生成された認証データを前記サーバに送信する認証データ送信手段とを備える
ことを特徴とするクライアント。
【請求項２５】
請求項８に記載の方法が含む全てのステップをコンピュータに実行させるプログラム。
【請求項２６】
請求項１５に記載の方法が含む全てのステップをコンピュータに実行させるプログラム。
【請求項２７】
請求項２５に記載のプログラムを記録した記録媒体。
【請求項２８】
請求項２６に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、認証方法等に関し、特にクライアント・サーバ方式の通信システムに用いられるクライアントの認証及び認証後の暗号化通信等に関する。
【０００２】
【従来の技術】
近年、インターネットなどのネットワークが急速に普及し、データの配信など様々なサービスが提供されている。しかし、その一方で正当なユーザになりすましてデータを不当に取得したり、インターネットを通して通信されるデータを盗聴したり、改ざんするなどの種々の問題も発生してきた。このため、クライアント・サーバ方式の通信システムにおいては、データの通信に当たってクライアントが正当な機器か否かを確認するクライアント認証を行ったり、暗号通信したりする方策がとられている。
【０００３】
例えば、デジタル著作物を第１の機器（サーバ）から第２の機器（クライアント）に転送する際に、不正取得による著作権侵害を防止するために、転送に先立ち、第１の機器が第２の機器を認証することが行われる。つまり、通信相手が確かに自分が意図している相手かどうかを確認することが行われる。このようなクライアント・サーバ方式の通信システムにおけるクライアントを認証する従来技術としては、チャレンジレスポンス方式がある（非特許文献１参照。）。また、クライアントが正当な機器であると認証された場合の従来の暗号化通信に関しては、Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ（ＳＳＬ）方式（非特許文献２参照。）や、特許文献１に記載されたものが知られている。
【０００４】
図１１は従来のクライアント・サーバ方式の通信システムにおけるチャレンジレスポンス方式のクライアント認証の構造を示している。
クライアント２１０１とサーバ１１０１は、共通の変換関数Ｆ（  ）３００、４００をそれぞれ持っている。始めにクライアント２１０１がサーバ１１０１に向けて通信要求Ｍ２０を送信する。サーバ１１０１は、クライアント２１０１からの通信要求Ｍ２０を受信すると、乱数をもとにノンスＣを生成し、当該ノンスＣをサーバ１１０１のチャレンジコードＭ２１として、クライアント２１０１に対して送信する。クライアント２１０１は、チャレンジコードＭ２１を受信した後に上記関数Ｆ（  ）４００にチャレンジコードＭ２１を入力し、チャレンジコードＭ２１の変換結果Ｒ（認証データ）を取得し、変換結果Ｒをクライアント２１０１のレスポンスＭ２２としてサーバへ送信する。サーバ１１０１は、レスポンスＭ２２を受信した後に、クライアント２１０１とは独立に関数Ｆ（  ）３００にノンスＣを入力して確認用データＭ２３（確認用認証データ）を生成し、レスポンスＭ２２と前記確認用データＭ２３を比較し、同じ物であれば認証する認証方式である。
【０００５】
図１２は、従来のクライアント・サーバ方式の通信システムにおけるＳＳＬによる認証、暗号化通信の構造を示している。
始めにクライアント２１０２は、乱数から生成したノンス、セッションＩＤ、使用可能暗号などの情報を書き込んだＣｌｉｅｎｔ  ｈｅｌｌｏメッセージＭ１０１をサーバ１１０２に送信する。サーバ１１０２は、このメッセージＭ１０１を受信すると、サーバ１１０２側の乱数から生成したノンス、セッションＩＤ、使用可能暗号などの情報を書き込んだＳｅｒｖｅｒ  ｈｅｌｌｏメッセージＭ１０２をクライアント２１０２に送信する。また、サーバ１１０２は、さらに公開鍵情報を含むサーバ証明書３０１などを必要に応じてクライアント２１０２に送信する。クライアント２１０２は、暗号化通信に使用する対称暗号用の暗号鍵４０２をサーバ１１０２に送信する。さらにクライアント証明書４０１などを必要に応じてサーバ１１０２に送信する。クライアント２１０２は対称暗号による通信の準備が完了すると、Ｃｈａｎｇｅ＿ｃｉｐｈｅｒ＿ｓｐｅｃメッセージＭ１１０と、ｆｉｎｉｓｈｅｄメッセージＭ１１１をサーバに送信する。サーバ１１０２は、クライアント２１０２からのＭ１１０、Ｍ１１１の２つのメッセージを受信後、対称暗号による通信の準備が完了すると、Ｃｈａｎｇｅ＿ｃｉｐｈｅｒ＿ｓｐｅｃメッセージＭ１１２と、ｆｉｎｉｓｈｅｄメッセージＭ１１３をクライアント２１０２に送信する。これ以降、クライアント２１０２とサーバ１１０２は対称暗号による暗号化通信を行う暗号通信方式である。
【０００６】
図１３は、さらに他の従来の暗号化通信システムの構成を示している（特許文献１参照。）。
ネットワーク装置５０１においては、鍵生成部５１４で生成した暗号鍵を記憶部５１５に記憶する一方、暗号処理を行うプログラムと、当該暗号処理に使用する暗号鍵またはその暗号鍵の格納場所を示す参照アドレスとを含むプログラムデータをプログラムデータ生成部５１３が生成し、このプログラムデータを通信部５１１がホスト装置５２０に送信する。一方、ホスト装置５２０はネットワーク装置５１０から送信されたプログラムデータを受信し、受信したプログラムデータを実行して、データを暗号化した後にネットワーク装置５１０に向けて暗号化データを送信する。ネットワーク装置５１０は暗号化データを受け取ると、復号部５１２でデータを復号することでデータを受け取る。以降、ネットワーク装置５１０とホスト装置５２０はネットワーク装置５１０が生成したプログラムデータを利用して暗号化通信を行う。このシステムでは対称鍵方式、非対称鍵（公開鍵）方式の暗号を使用することができる。
【０００７】
【非特許文献１】
ＨＴＴプロトコル  Ｓｔｅｐｈｅｎ  Ｔｈｏｍａｓ著  葛西重夫訳  ソフトバンクパブリッシング  ２００２．３．２８  ＩＳＢＮ４−７９７３−１８３３−３
【０００８】
【非特許文献２】
インターネット暗号化技術  岩田彰監修  鈴木春洋他  ソフト・リサーチ・センター  ２００２．５．２５  ＩＳＢＮ４−８８３７３−１６６−９  Ｐ１２３  第４章  ＳＳＬ
【０００９】
【特許文献１】
特開２００２−６４４７９号公報（第１頁、第１図）
【００１０】
【発明が解決しようとする課題】
しかしながら、従来のクライアントの認証及び認証後の暗号化通信においては、次のような問題がある。
【００１１】
図１１のクライアント・サーバ方式の通信システムにおけるチャレンジレスポンス方式のクライアント認証においては、クライアント２１０１にサーバ１１０１と共通の変換関数Ｆ（  ）４００を予め組み込んでおく必要があった。また、変換関数Ｆ（  ）３００、４００の変更を行う場合には、サーバ１１０１だけでなく、クライアント２１０１でも組み込み作業を行わなければならなかった。
【００１２】
また、図１２のクライアント・サーバ方式の通信システムにおけるＳＳＬによる認証、暗号化通信においては、公開鍵を利用して暗号通信に必要な鍵の共有を行うが、公開鍵の情報はＩｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ（ＩＴＵ）で定義されたＸ．５０９標準仕様の証明書フォーマットに基づいて通知されるため、証明書フォーマットの解読や証明書の正統性を保証する認証局が必要になる。そのため、システム全体の維持コストが高く、しかも証明書の解読作業が複雑であるという問題があった。
【００１３】
また、図１３の特開２００２−６４４７９号公報に記載された暗号化通信システムにおいては、通信時に暗号鍵または暗号鍵の格納場所を示す参照アドレスがネットワーク上を流れるため、暗号鍵が漏洩し、暗号データの内容が盗み見られる可能性があった。
【００１４】
本発明は、クライアント・サーバ方式の認証において、クライアント側にサーバと共通の認証データ生成用のプログラムを予め組み込む手間を省き、クライアント認証を行うことができる通信方法並びにこの通信方法を用いた通信システム、サーバおよびクライアントを提供することを第１の目的とする。
【００１５】
また、認証局を不要とし、しかもネットワーク上に暗号鍵を流さないで、安全性の高い暗号化通信を実現できる通信方法並びにこの通信方法を用いた通信システム、サーバおよびクライアントを提供することを第２の目的とする。
【００１６】
【課題を解決するための手段】
上記第１の目的を達成するために、本発明に係る通信方法は、ネットワークを介して通信要求を送信するクライアントと、通信要求に従って当該クライアントを認証するための処理を行うサーバとからなる通信システムにおける通信方法であって、前記クライアント及び前記サーバは、前記認証に用いられる第１情報を共通に予め保持する第１情報保持手段をそれぞれ備え、前記サーバは、さらに、認証データを生成するための認証データ生成プログラムを予め保持する認証データ生成プログラム保持手段を備え、前記サーバは、前記通信要求を受信するごとに乱数を表すノンスを新たに生成するノンス生成ステップと、前記ノンス生成ステップで生成されたノンスをノンス記憶手段に記憶させるノンス記憶ステップと、前記ノンス記憶手段に記憶されたノンスと、前記認証データ生成プログラム保持手段に保持された認証データ生成プログラムとを前記クライアントに送信する第１送信ステップとを含み、前記クライアントは、前記サーバから受信した前記認証データ生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて認証データを生成する認証データ生成ステップと、前記認証データ生成ステップで生成された認証データを前記サーバに送信する認証データ送信ステップとを含み、前記サーバは、さらに前記クライアントから認証データを受信すると、前記認証データ生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される第１情報とに基づいて確認用の認証データを生成する確認用認証データ生成ステップと、前記クライアントから受信した認証データと、確認用認証データ生成ステップで生成された確認用の認証データとを比較し、一致するか否かでクライアントを認証する認証ステップとを含むことを特徴とする。
【００１７】
具体的には、本願の第１の発明は、クライアント・サーバ型の通信システムにおける、クライアント認証手順についての通信方法の発明である。認証を行う前に、前記クライアントと、前記サーバの間で同一のパスワード（第１情報）を予め共有しておく。前記クライアントは、前記サーバとの通信を行う通信手段を用いて前記サーバに通信要求を送信する。前記サーバは、前記クライアントからの前記通信要求を前記クライアントとの通信手段で受信し、受信した前記通信要求に従って、認証データ生成プログラム記憶手段に記憶されている認証データ生成プログラムと、乱数発生手段により発生させた乱数から生成したノンスを前記クライアントに送信する。前記認証データ生成プログラムは、入力を一定の法則で変換する変換関数にパスワードと前記ノンスを入力し変換結果を認証データとして出力するプログラムである。前記ノンスは、認証を行うたびに生成するため毎回異なる値となる。前記クライアントは、前記認証データ生成プログラムと前記ノンスを受信し、パスワード記憶手段に記憶されているパスワードと前記ノンスを前記認証データ生成プログラムに入力して認証データを生成し、前記認証データを前記サーバに送信する。前記ノンスが毎回異なるため、前記パスワードが毎回同じ値であっても認証データは毎回異なる値になる。これにより、前記認証データが盗聴されて再送された場合でも、同じ認証データは二度と生成されないので、同じ認証データが前記サーバに送信されてきた場合、なりすましを検出することができる。前記サーバは前記クライアントに送信した前記ノンスと前記サーバのパスワード記憶手段に予め登録されている前記クライアントのパスワードを前記認証データ生成プログラムに入力して確認用認証データを生成し、前記サーバは前記クライアントから送信されてきた前記認証データと前記確認用認証データを認証データ比較手段により比較する。前記ノンスが共通であり、前記パスワードも同じ物であれば、前記認証データと前記確認用認証データは同一の物になるため、前記ノンスが改竄されたり、不正なパスワードによる認証が行われた場合、前記認証データと前記確認用認証データが同一でなくなるため、不正ユーザの認証を検出することができる。前記認証データと前記確認用認証データが、同じであれば前記クライアントは前記サーバと同一の前記パスワードを持ち、正しい前記ノンスを受け取っていることから、正規のクライアント判断し、前記サーバ間の通信を許可（認証）する。
【００１８】
このような発明の構成によれば、サーバからクライアントに認証データ生成プログラムが送られるので、クライアントに認証データ生成プログラムを予め保持しておく必要がなく、認証プログラムを保持していなくともクライアント認証を行うことができる。しかもクライアントとサーバの認証データ生成プログラムの同期をとるためのアップデート作業を個々に行わなくてよくなり、通信システムの保守が容易になる。
【００１９】
また、上記第２の目的を達成するために、本発明に係る通信方法は、前記第１送信ステップでは、さらに暗号鍵を生成するための暗号鍵生成プログラムと、当該暗号鍵でネットワーク上の通信データを暗号化するための暗号化プログラムとを送信し、前記クライアントは、さらに前記認証データを送信した後に、前記サーバから受信した暗号鍵生成プログラムを実行し、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて暗号鍵を生成する第１暗号鍵生成ステップと、前記サーバから受信した暗号化プログラムを実行し、第１暗号鍵生成ステップで生成された暗号鍵を用いて前記サーバと暗号通信する第１暗号通信ステップとを含み、前記サーバは、さらに前記認証ステップにおける比較の結果、前記クライアントから受信した認証データと、自己が生成した確認用の認証データとが一致する場合に、前記第１送信ステップで送信される暗号鍵生成プログラムを実行し、前記ノンス記憶手段に記憶されたノンスと、自己の第１情報記憶手段に保持される第１情報とに基づいて暗号鍵を生成する第２暗号鍵生成ステップと、前記第１送信ステップで送信される暗号化プログラムを実行し、前記第２暗号鍵生成ステップで生成された暗号鍵を用いて前記クライアントと暗号通信する第２暗号通信ステップとを含むことを特徴とする。
【００２０】
具体的には、本願の第２の発明は、第１の発明に記載された通信システムにおける、クライアント認証手順であって、前記サーバは、前記認証データ生成プログラムと前記ノンスと一緒に、暗号化プログラム記憶手段に記憶された暗号化プログラムと、暗号鍵生成プログラム記憶手段に記憶された暗号鍵生成プログラムを前記クライアントへ送信する。前記クライアントは、受信したデータ内の前記認証データ生成プログラムと前記ノンスと前記クライアントの持つパスワードから前記認証データを生成し、前記認証データを前記サーバに送信する。その後に、前記クライアントは、前記クライアントの持つ前記パスワードと前記ノンスを前記暗号鍵生成プログラムに入力してクライアントの暗号鍵を生成する。受信するたびに値が異なる前記ノンスを用いて暗号鍵を生成するので、毎回異なる暗号鍵が生成されるので、暗号鍵が漏洩しても被害を最小限にとどめることができる。前記サーバは前記認証データと前記確認用認証データを比較して同じであれば、前記サーバにおいて前記ノンスと前記クライアントのパスワードを前記暗号鍵生成プログラムに入力してサーバの暗号鍵を生成する。同一のパスワードと同一の前記ノンスを用いて前記暗号鍵生成プログラムで暗号鍵を生成するため、前記クライアントで生成された暗号鍵と同一の暗号鍵を生成することができる。この暗号鍵を用いることで対称暗号方式の暗号化通信が可能になる。また、暗号鍵そのもののデータがネットワーク上を流れることが無いので、ネットワークの盗聴による暗号鍵の漏洩を防ぐことができる。前記クライアントは前記サーバから受信した前記暗号化プログラムと、前記クライアントの暗号鍵を用いて前記サーバとの通信を行うデータの暗号化を行い、前記サーバは前記暗号化プログラムと、前記サーバの暗号鍵を用いて暗号化し、前記クライアントと暗号化通信を行う。
【００２１】
したがって、この発明の構成によれば、鍵生成プログラムと暗号化プログラムをクライアントに送る場合は、通信システムの保守が容易になることと、クライアントが各プログラムを保持していなくとも暗号化通信を行うことができることの他に、暗号化通信に必要な暗号鍵を直接ネットワーク上に流さないため、ネットワークの盗聴による暗号鍵の漏洩を防ぐことが出来、より安全な暗号化通信を行うことができるという効果がある。すなわち、証明書を用いないため認証局を不要とすることができ、しかもネットワーク上に暗号鍵を流さないで、安全性の高い暗号化通信を実現できる通信方法を提供することができる。
【００２２】
また、上記第２の目的を達成するために、本発明に係る通信方法は、前記認証データ生成プログラムは、暗号鍵を生成する機能を含み、前記第１送信ステップでは、ネットワーク上の通信データを暗号鍵で暗号化するための暗号化プログラムをさらに送信し、前記クライアントは、さらに前記認証データをサーバに送信した後、認証データ生成プログラムを再度実行し、前記認証データに基づいて暗号鍵を生成する第１暗号鍵生成ステップと、前記サーバから受信した暗号化プログラムを実行し、第１暗号鍵生成ステップで生成された暗号鍵を用いて前記サーバと暗号通信する第１暗号通信ステップとを含み、前記サーバは、前記認証ステップにおける比較の結果、前記クライアントから受信した認証データと、自己が生成した確認用の認証データとが一致する場合に、前記第１送信ステップで送信される認証データ生成プログラムを再度実行し、前記確認用認証データに基づいて暗号鍵を生成する第２暗号鍵生成ステップと、前記第１送信ステップで送信される暗号化プログラムを実行し、前記第２暗号鍵生成ステップで生成された暗号鍵を用いて前記クライアントと暗号通信する第２暗号通信ステップとを含むことを特徴とすることもできる。
【００２３】
具体的には、本願の第３の発明は、第１の発明に記載された通信システムにおける、クライアント認証・暗号化通信手順であって、前記サーバは前記クライアントからの通信要求に従って前記認証データ生成プログラム、前記暗号化プログラム、前記ノンスを前記クライアントに送信し、前記サーバは前記クライアントから送信されてきた前記認証データと前記確認用認証データを比較して同じであれば、前記クライアントは前記認証データを前記認証データ生成プログラムに入力して生成されたデータをクライアントの暗号鍵とし、前記サーバにおいても前記認証データを前記認証データ生成プログラムに入力して生成されたデータをサーバの暗号鍵として、前記サーバと前記クライアントの間で暗号化通信を行う。
【００２４】
このような構成によれば、証明書を用いないため認証局を不要とすることができ、しかもネットワーク上に暗号鍵を流さないで、安全性の高い暗号化通信を実現できる通信方法を提供することができるという効果に加え、さらに、前記認証データ生成プログラムを前記暗号鍵生成プログラムと共通にすることで、前記サーバから前記クライアントに送信されるデータの量を軽減することができるという効果を得ることができる。
【００２５】
また、本願の第４の発明に係る通信方法は、前記認証データ送信ステップでは、さらに前記サーバから受信したノンスをサーバに送信し、前記認証ステップでは、前記クライアントに送信した前記ノンスと前記クライアントから送信されてきた前記ノンスとを比較し、比較の結果両者が一致する場合に前記クライアントから送信されてきた前記認証データと前記確認用認証データを比較することを特徴とすることができる。
【００２６】
具体的には、本願の第４の発明は、第１の発明に記載された通信システムにおける、クライアント認証手順であって、前記クライアントは前記認証データと前記認証データ作成に使用した前記ノンスを前記サーバに送信する。前記サーバは前記クライアントから送信されてきた前記ノンスと前記サーバが前記クライアントに送信した前記ノンスを比較する。その結果、同一でない場合は正しいクライアントではないクライアントからのアクセスであるか第三者に前記クライアントからの通信データが改竄されたかのいずれかであることが判定できる。この場合は前記確認用認証データを計算する必要が無いので、サーバ側のリソースを節約できる。前記ノンスの比較結果が同一の場合は、前記サーバは前記クライアントから送信されてきた前記認証データと前記確認用認証データを比較する。比較の結果、前記認証データと前記確認用認証データが同一であれば前記クライアントと前記サーバ間の通信を許可（認証）する。
【００２７】
したがって、この発明の構成によれば、クライアントから送信されてきたノンスでいわゆるプレ認証を行うことができ、不正なクライアントを大まかに振る落とすことができ、確認用認証データを計算する無駄を省くことができる。
【００２８】
また、本発明に係る通信方法は、前記第１情報は、前記クライアントおよびサーバに共通のパスワードであり、認証データ生成ステップでは、前記クライアントは、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持されるパスワードとに基づいて認証データを生成し、前記確認用認証データ生成ステップでは、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持されるパスワードとに基づいて確認用の認証データを生成することを特徴としてもよい。
【００２９】
また、本発明に係る通信方法は、前記第１情報は、複数のクライアントに固有のＩＤと、各ＩＤにそれぞれ対応するパスワードとから構成され、認証データ生成ステップでは、各前記クライアントは、前記サーバから受信したノンスと、自己の第１情報記憶手段に保持されるパスワードと、ＩＤとに基づいて認証データを生成し、前記確認用認証データ生成ステップでは、前記ノンス記憶手段に記憶されたノンスと自己の第１情報記憶手段に保持される全クライアントのパスワードとＩＤとに基づいて各クライアント確認用の認証データを複数生成し、前記認証ステップでは、前記クライアントから受信した認証データと、自己が生成した複数の確認用の認証データとを１つずつ比較し、一致するものがあるか否かで各前記クライアントを認証することを特徴とすることができる。
【００３０】
具体的には、本願の第５の発明は、第１の発明に記載された通信システムにおける、クライアント認証手順であって、前記サーバに接続する可能性がある前記クライアントが複数存在する場合、予め各クライアントにＩＤを割り振り、各ＩＤについてパスワードを設定し、前期サーバと各々の前記クライアントで共有しておく。前記クライアントは、前記クライアントが持つＩＤとパスワードと前記ノンスを前記認証データ生成プログラムに入力して認証データを生成し、前記サーバに送信する。前記クライアントは前記ＩＤをそのままネットワーク上に送信しないので、ＩＤを用いたパスワード類推攻撃などを防ぐことができる。前記サーバは前記ノンスと前記サーバに予め登録されている全クライアントのＩＤとパスワードをそれぞれ前記認証データ生成プログラムに入力して全クライアント分の確認用認証データを生成する。前記サーバは前記クライアントから送信されてきた前記認証データと前記全確認用認証データを比較し、同じ確認データがあれば前記クライアントと前記サーバ間の通信を許可（認証）する。
【００３１】
したがって、このような構成によれば、ＩＤで複数のクライアントを区別して認証することができ、さらに複数のクライアントをＩＤで管理する場合に、認証時にクライアントのＩＤが直接ネットワーク上に流さないため、ネットワークの盗聴によるＩＤ漏洩によるパスワード推測による攻撃や、有効なＩＤに対するブルートフォース攻撃を行いにくくすることができるなど、多くの顕著な効果が得られる。
【００３２】
また、本発明に係る通信方法は、前記認証データ生成プログラムは、入力を一定の法則で変換する関数にハッシュ関数を含むことを特徴とする構成としても良い。
【００３３】
具体的には、本願の第６の発明は、上記発明に記載された通信システムにおける、クライアント認証手順であって、前記認証データ生成プログラムの変換関数に不可逆関数であるハッシュ関数を使用する。
【００３４】
このような構成によると、ハッシュ関数を用いることにより、認証データからパスワードを類推することを困難にすることができ、しかも、暗号鍵を利用しないため、暗号鍵の漏洩によるデータ盗聴を防ぐことができる。
【００３５】
なお、本発明は、このような通信システムにおける通信方法として実現することができるだけでなく、このような通信システムを構成するサーバにおける通信方法として実現したり、通信システムを構成するクライアントにおける通信方法として実現したりすることもできる。そして、これらの通信システムにおける通信方法や、サーバにおける通信方法、クライアントにおける通信方法が含む特徴的なステップを手段とする通信システムや、サーバや、クライアントとして実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して配信することができるのはいうまでもない。
【００３６】
【発明の実施の形態】
（実施の形態１）
以下、本発明の実施の形態１に係る通信システムについて、図面を参照しながら説明する。
【００３７】
図１は、本実施の形態１に係る通信システムの全体構成を示す機能ブロック図である。
本実施の形態１に係る通信システムは、図１に示されるように、ネットワーク３０００を介して相互に通信可能に接続されるサーバ１００１と、クライアント２００１とから構成される。
【００３８】
サーバ１００１は、通信部１１０と、パスワード記憶部１１１と、乱数発生部１２０と、ノンス記憶部１２１と、認証データ生成プログラム記憶部１３０と、認証データ生成プログラム実行部１３１と、認証データ比較部１３２とを備える。
【００３９】
通信部１１０は、クライアント２００１と通信を行う。パスワード記憶部１１１は、クライアント２００１と共通のパスワード１００を予め保持する。乱数発生部１２０は、クライアントから通信要求があった際に乱数（ノンス）Ｍ０３を生成する。ノンス記憶部１２１は、乱数発生部１２０が生成したノンスＭ０３を記憶する。認証データ生成プログラム記憶部１３０は、クライアント２００１からの通信要求Ｍ０１の応答として送信するための認証データ生成プログラムＭ０２を保持する。認証データ生成プログラム実行部１３１は、パスワード記憶部１１１に保持されるパスワード１００とノンス記憶部１２１に保持されるノンスＭ０３とを認証データ生成プログラムＭ０２に入力し、当該プログラムＭ０２を実行することにより確認用認証データＭ０５を生成する。認証データ比較部１３２は、クライアント２００１から送られてきた認証データＭ０４と確認用認証データＭ０５を比較判定を行う。
【００４０】
なお、このようなサーバ１００１を構成する各部は、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【００４１】
クライアント２００１は、通信部２１０と、パスワード記憶部２１１と、認証データ生成プログラム実行部２３１とを備える。
通信部２１０は、サーバ１００１と通信を行う。パスワード記憶部２１１は、サーバ１００１と共通のパスワード２００を予め保持する。認証データ生成プログラム実行部２３１は、サーバ１００１から認証データ生成プログラムＭ０２とノンスＭ０３とが送られてくると、この応答として、パスワード記憶部２１１に保持されるパスワード２００と送られてきたノンスＭ０３とを認証データ生成プログラムＭ０２に入力し、当該プログラムＭ０２を実行することにより認証データＭ０４を生成する。
【００４２】
なお、このようなクライアント２００１を構成する各部は、サーバ１００１の場合と同様に、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【００４３】
次いで、図２を用いて本実施の形態１のクライアント・サーバ間のデータの流れを説明する。
図２は、本実施の形態１の通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【００４４】
まず始めにクライアント２００１は通信部２１０を用いて接続したいサーバ１００１に対して通信要求Ｍ０１のメッセージを送信する。
サーバ１００１は、通信要求Ｍ０１に対して乱数発生部１２０で乱数を発生させ、ノンスＭ０３を生成する。生成したノンスＭ０３はノンス記憶部１２１に記憶される。通信部１１０は、通信要求Ｍ０１の応答として、認証データ生成プログラム記憶部１３０に保持されている認証データ生成プログラムＭ０２と、ノンス記憶部１２１によって記憶されているノンスＭ０３とを、クライアント２００１に送信する。なお、ノンスＭ０３は、通信要求があるたびに新たに生成される。
【００４５】
クライアント２００１は、パスワード記憶部２１１に予め保持しているパスワード２００と、サーバ１００１から受信したノンスＭ０３とをプログラム実行部２３１で実行される認証データ生成プログラムＭ０２に入力し、認証データＭ０４を生成する。そして認証データＭ０４をＭ０２とＭ０３の応答として通信部２１０を使ってサーバ１００１に送信する。
【００４６】
サーバ１００１は、パスワード記憶部１１１に保持されているパスワード１００とノンス記憶部１２１に保持されているノンスＭ０３を認証データ生成プログラム実行部１３１で実行される認証データ生成プログラムＭ０２に入力し、確認用認証データＭ０５を生成する。
【００４７】
この認証データ生成プログラムは、パスワードとノンスから認証データを生成するが、その認証データは、
Ｍ０４＝ＣａｕｔｈＤａｔａ（Ｎ，Ｐｃ）
Ｍ０５＝ＣａｕｔｈＤａｔａ（Ｎ，Ｐｓ）
でそれぞれ表される。
【００４８】
ここで、Ｎはノンス、Ｐｃはクライアントが保持するパスワード、Ｐｓはサーバが保持するパスワード、ＣａｕｔｈＤａｔａ（）は認証データ生成プログラムで用いられる変換式である。
【００４９】
双方のパスワードが一致すれば、認証データＭ０４及びＭ０５もまた一致する。ＣａｕｔｈＤａｔａには逆変換が困難なハッシュ関数が用いられる。ハッシュ関数としてはＳＨＡ−１，ＭＤ５などが知られている。従って、ネットワーク上を流れる認証データＭ０４及びノンスＮが盗聴されたとしても、パスワードＰｃを逆演算によって知ることは困難である。また、ノンスＮが通信要求があるごとに変更されるため、認証データＭ０４を盗聴してもそのまま次の接続で使用しても、サーバが認証することはない。
【００５０】
サーバ１００１は、クライアント２００１から送信されてきた認証データＭ０４と確認用認証データＭ０５を認証データ比較部１３２で比較し、同じ物であればクライアント２００１がサーバ１００１と共通のパスワードを持つ正当な通信クライアントとして認証し、以後の通信を続行する。
【００５１】
以上のように本実施の形態１に係るシステムによれば、サーバ１００１から認証データ生成プログラムＭ０２をクライアント２００１に送るようにしているので、クライアント２００１とサーバ１００１の認証プログラムの同期をとるためのアップデート作業を個々に行わなくてよくなり、通信システムの保守が容易になる。また、クライアント２００１は、認証を行うごとに認証データ生成プログラムＭ０２が送信されてくるため、認証プログラムを保持していなくとも認証を受けることができる。
【００５２】
なお、クライアント２００１は、パスワード記憶部２１１にパスワード２００を保持せず、クライアント使用者が直接認証データ生成プログラム実行部２３１に入力してもよい。
【００５３】
また、クライアント２００１は、認証データ生成プログラムＭ０２を保持し、サーバ１００１側で認証データ生成プログラムＭ０２の更新が無ければ、サーバ１００１はノンスのみを送信し、クライアント２００１は保持している認証データ生成プログラムＭ０２を使用して認証データＭ０４を生成してもよい。
【００５４】
また、サーバ１００１のパスワード記憶部１１１、ノンス記憶部１２１、認証データ生成プログラム記憶部１３０は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【００５５】
また、認証データ生成プログラムＭ０２の変換関数はパスワード１００、２００を暗号鍵とするＤＥＳなどの対称鍵暗号関数を使用してもよい。
また、認証データ生成プログラムＭ０２の変換関数はパスワード１００、２００を暗号鍵とするＲＳＡなどの非対称鍵暗号関数を使用してもよい。
【００５６】
また、サーバ１００１はノンスＭ０３に有効期限を設け、期限が過ぎたノンスＭ３により生成された確認用認証データＭ０５を強制的に廃棄するようにしてもよい。これにより、認証が途中で失敗した場合に確認用認証データが廃棄されずに残るのを防ぐことができる。
【００５７】
さらに、本実施の形態のサーバまたはクライアントのいずれかの各動作ステップを実行させる作用を記述したプログラムコード及びそのプログラムを記録したソフトウェアの蓄積媒体を用いて、コンピュータを搭載する装置上でこれを実行し、サーバまたはクライアントとして動作させてもよい。
【００５８】
（実施の形態２）
次に、本発明の実施の形態２に係る通信システムについて、図面を参照しながら説明する。
【００５９】
図３は、本実施の形態２に係る通信システムの全体構成を示す機能ブロック図である。なお、実施の形態１に係る通信システムの構成と対応する構成部分に同じ番号を付し、その説明を省略する。
【００６０】
本実施の形態２に係る通信システムは、図３に示されるように、ネットワーク３０００を介して相互に通信可能に接続されるサーバ１００２と、クライアント２００２とから構成される。
【００６１】
ここで、この実施の形態２に係る通信システムにおいては認証後の暗号通信を含めて構成されている点が、認証後の暗号通信機能を含まない実施の形態１に係る通信システムの構成と大きく異なっている。
【００６２】
サーバ１００２は、サーバ１００１が備える通信部１１０、パスワード記憶部１１１、乱数発生部１２０、ノンス記憶部１２１、認証データ生成プログラム記憶部１３０、認証データ生成プログラム実行部１３１及び認証データ比較部１３２の他、さらに、暗号鍵生成プログラム記憶部１４０と、鍵生成プログラム実行部１４１と、暗号鍵記憶部１４２と、暗号化プログラム記憶部１５０とを備える。
【００６３】
暗号鍵生成プログラム記憶部１４０は、暗号鍵生成プログラムＭ０６を記憶する。鍵生成プログラム実行部１４１は、暗号鍵Ｍ０８を生成する。暗号鍵記憶部１４２は、クライアント２００２と暗号化通信を行う際に使用する暗号鍵を記憶する。暗号化プログラム記憶部１５０は、暗号化プログラムＭ０７を記憶する。暗号化プログラム実行部１５１は、暗号化コードＭ０９を生成する。
【００６４】
なお、このようなサーバ１００２を構成する各部は、サーバ１００１の場合と同様に、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【００６５】
クライアント２００２は、クライアント２００１が備える通信部２１０、パスワード記憶部２１１及び認証データ生成プログラム実行部２３１の他、さらに鍵生成プログラム実行部２４１と、暗号鍵記憶部２４２と、暗号化プログラム記憶部２５０と、暗号化プログラム実行部２５１とを備える。
【００６６】
鍵生成プログラム実行部２４１は、サーバ１００２と暗号化通信を行うために、サーバ１００２から送られてくる鍵生成プログラムＭ０６を実行する。暗号鍵記憶部２４２は、鍵生成プログラムＭ０６により生成された暗号鍵を記憶する。暗号化プログラム記憶部２５０は、サーバ１００２から送られてくる暗号化プログラムＭ０７を記憶する。暗号化プログラム実行部２５１は、暗号化プログラムＭ０７と暗号鍵を使って暗号化を実行する。
【００６７】
なお、このようなクライアント２００２を構成する各部は、クライアント２００１の場合と同様に、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【００６８】
次いで、図４を用いて本実施の形態２のクライアント・サーバ間のデータの流れを説明する。
図４は、本実施の形態２の通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【００６９】
まず始めにクライアント２００２は、通信部２１０を用いて接続したいサーバ１００２に対して通信要求Ｍ０１のメッセージを送信する。
サーバ１００２は、通信要求Ｍ０１に対して乱数発生部１２０で乱数を発生させ、ノンスＭ０３を生成させる。生成されたノンスＭ０３はノンス記憶部１２１に記憶される。通信部１１０は、通信要求Ｍ０１の応答として、クライアント２００２に対し、暗号鍵生成プログラム記憶部１４０に保持されている暗号鍵生成プログラムＭ０６と、暗号化プログラム記憶部１５０に保持されている暗号化プログラムＭ０７と、認証データ生成プログラム記憶部１３０に保持されている認証データ生成プログラムＭ０２と、ノンス記憶部１２１によって記憶されているノンスＭ０３とを、順次送信する。なお、ノンスＭ０３は通信要求があるたびに新たに生成される。
【００７０】
クライアント２００２は、パスワード記憶部２１１に予め保持しているパスワード２００と、サーバ１００２から受信したノンスＭ０３とを認証データ生成プログラム実行部２３１で実行される認証データ生成プログラムＭ０２に入力し、認証データＭ０４を生成する。そして認証データＭ０４をＭ０２とＭ０３の応答として通信部２１０を使ってサーバ１００２に送信する。
【００７１】
サーバ１００２は、パスワード記憶部１１１に保持されているパスワード１００とノンス記憶部１２１に保持されているノンスＭ０３とを認証データ生成プログラム実行部１３１で実行される認証データ生成プログラムＭ０２に入力し、確認用認証データＭ０５を生成する。
【００７２】
この認証データ生成プログラムは、パスワードとノンスから認証データを生成するが、その認証データは、
Ｍ０４＝ＣａｕｔｈＤａｔａ（Ｎ，Ｐｃ）
Ｍ０５＝ＣａｕｔｈＤａｔａ（Ｎ，Ｐｓ）
で表される。
【００７３】
ここで、Ｎはノンス、Ｐｃはクライアントが保持するパスワード、Ｐｓはサーバが保持するパスワード、ＣａｕｔｈＤａｔａ（）は変換式である。
双方のパスワードが一致すれば、認証データＭ０４及びＭ０５もまた一致する。ＣａｕｔｈＤａｔａには逆変換が困難なハッシュ関数を用いる。ハッシュ関数にはＳＨＡ−１，ＭＤ５などが知られている。従って、ネットワーク上を流れる認証データＭ０４及びノンスＮが盗聴されたとしてもパスワードＰｃを逆演算によって知ることは困難である。また、ノンスＮは接続ごとに変更されるため、認証データＭ０４を盗聴してもそのまま次の接続で使用しても認証できない。
【００７４】
サーバ１００２は、クライアント２００２から送信されてきた認証データＭ０４と確認用認証データＭ０５を認証データ比較部１３２で比較し、同じ物であればクライアント２００２がサーバ１００２と共通のパスワードを持つ正当な通信クライアントとして認証し、以後の通信を続行する。なお、認証データＭ０４と確認用認証データＭ０５は、クライアント２００２が認証された際に廃棄される。
【００７５】
認証が終わると、サーバ１００２は、パスワード記憶部１１１に保持されているパスワード１００とノンス記憶部１２１に保持されているノンスＭ０３とを鍵生成プログラム実行部１４１で実行される暗号鍵生成プログラムＭ０６に入力し、暗号鍵Ｍ０８を生成する。生成された暗号鍵Ｍ０８は暗号鍵記憶部１４２に保持される。暗号鍵Ｍ０８の生成が終わると、ノンス記憶部１２１に記憶されたノンスＭ０３は廃棄される。
【００７６】
一方、クライアント２００２においても、サーバ１００２と同様に暗号鍵Ｍ０８の生成が行われる。すなわち、クライアント２００２は、認証データＭ０４の生成が終わると、サーバ１００２から送られてきた暗号化プログラムＭ０７を暗号化プログラム記憶部２５０に記憶する。そして、クライアント２００２は、パスワード記憶部２１１に保持されているパスワード２００とサーバ１００２から送られてきたノンスＭ０３とを鍵生成プログラム実行部２４１で実行される暗号鍵生成プログラムＭ０６に入力し、暗号鍵Ｍ０８を生成する。生成された暗号鍵Ｍ０８は暗号鍵記憶部２４２に保持される。
【００７７】
この暗号鍵生成プログラムは、パスワードとノンスから暗号鍵を生成するが、その暗号鍵は、
Ｍ０８＝ＣＥｎｃＫｅｙ（Ｎ，Ｐｃ）
で表される。
【００７８】
ここで、Ｎはノンス、Ｐｃはクライアントが保持するパスワード、Ｐｓはサーバが保持するパスワード、ＣＥｎｃＫｅｙ（）は変換式である。
暗号鍵Ｍ０８の生成が終わると、ノンスＭ０３がそれぞれ廃棄され、サーバ１００２とクライアント２００２の間で暗号化通信が行われる。
【００７９】
暗号化通信については、クライアント２００２に対してデータを送信する場合は、サーバ１００２は、暗号鍵記憶部１４２に保持されている暗号鍵Ｍ０８とクライアント２００２に送信するデータを暗号化プログラム実行部１５１で実行される暗号化プログラムＭ０７に入力し、暗号化データＭ０９を生成する。生成された暗号化データＭ０９は、通信部１１０を用いてクライアント２００２に送信される。クライアント２００２から暗号化データＭ０９が送られてきた場合は、１００２は、暗号鍵記憶部１４２に保持されている暗号鍵Ｍ０８とクライアント２００２から送られてきた暗号化データＭ０９とを暗号化プログラム実行部１５１で実行される暗号化プログラムＭ０７に入力し、暗号化されたデータを復号する。
【００８０】
一方、サーバ１００２に対してデータを送信する場合は、クライアント２００２は、暗号鍵記憶部２４２に保持されている暗号鍵Ｍ０８とサーバ１００２に送信するデータを暗号化プログラム実行部２５１で実行される暗号化プログラムＭ０７に入力し、暗号化データＭ０９を生成する。生成された暗号化データＭ０９は、通信部２１０を用いてサーバ１００２に送信される。サーバ１００２から暗号化データＭ０９が送られてきた場合は、クライアント２００２は、暗号鍵記憶部２４２に保持されている暗号鍵Ｍ０８と、サーバ１００２から送られてきた暗号化データＭ０９とを暗号化プログラム実行部２５１で実行される暗号化プログラムＭ０７に入力し、暗号化されたデータを復号する。
【００８１】
この暗号化プログラムは、データと暗号鍵から暗号化データを生成するが、その暗号化データは、
Ｍ０９＝Ｅｎｃ（Ｄａｔａ，Ｋｅｙ）
で表される。
【００８２】
ここで、Ｄａｔａはデータ、Ｋｅｙはクライアント及びサーバが共通に保持する暗号鍵（セッション鍵）、Ｅｎｃ（）は変換式である。この暗号化プログラムＭ０７にはＤＥＳなどの対称鍵暗号を使用し、暗号鍵をネットワーク３０００上に流さないことにより、ネットワーク３０００上での暗号鍵の漏洩を防ぐことができるので、より安全な暗号化通信を実現できる。
【００８３】
暗号化データＭ０９の通信が終わると、暗号鍵Ｍ０８はその暗号化通信終了時に破棄される。
以上のように本実施の形態２に係る通信システムによれば、鍵生成プログラムＭ０６と暗号化プログラムＭ０７をクライアント２００２に送るので、クライアント２００２とサーバ１００２の各プログラムの同期をとるためのアップデート作業を個々に行わなくてよくなり、通信システムの保守が容易になる。また、クライアント２００２は認証を行うごとに暗号鍵生成プログラムＭ０６と暗号化プログラムＭ０７が送信されてくるため、各プログラムを保持していなくとも暗号化通信を行うことができる。ただし、暗号化プログラムＭ０７は、暗号化通信を行っている間は記憶しておく必要がある。
【００８４】
なお、クライアント２００２は、パスワード記憶部２１１でパスワード２００を保持せず、クライアント使用者が直接認証データ生成プログラム実行部２３１に入力してもよい。
【００８５】
また、クライアント２００２は、認証データ生成プログラムＭ０２、暗号鍵生成プログラムＭ０６そして暗号化プログラムＭ０７を保持し、サーバ１００２側で認証データ生成プログラムＭ０２、暗号鍵生成プログラムＭ０６そして暗号化プログラムＭ０７の更新が無ければ、サーバ１００２はノンスＭ０３のみを送信し、クライアント２００２は保持している認証データ生成プログラムＭ０２、暗号鍵生成プログラムＭ０６そして暗号化プログラムＭ０７を使用して認証データＭ０４を生成、暗号鍵Ｍ０８の生成そして暗号化通信を行ってもよい。
【００８６】
また、サーバ１００２のパスワード記憶部１１１、ノンス記憶部１２１、認証データ生成プログラム記憶部１３０、暗号鍵生成プログラム記憶部１４０、暗号鍵記憶部１４２、暗号化プログラム記憶部１５０は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【００８７】
また、クライアント２００２のパスワード記憶部２１１、暗号鍵記憶部２４２、暗号化プログラム記憶部２５０は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【００８８】
また、サーバ１００２の認証データ生成プログラム実行部１３１、鍵生成プログラム実行部１４１、暗号化プログラム実行部１５１は共通のプログラム実行部を使用してもよい。
【００８９】
また、クライアント２００２の認証データ生成プログラム実行部２３１、鍵生成プログラム実行部２４１、暗号化プログラム実行部２５１は共通のプログラム実行部を使用してもよい。
【００９０】
また、認証データ生成プログラムＭ０２中の変換関数はパスワード１００、２００を暗号鍵とするＤＥＳなどの対称鍵暗号関数を使用してもよい。
また、認証データ生成プログラムＭ０２中の変換関数はパスワード１００、２００を暗号鍵とするＲＳＡなどの非対称鍵暗号関数を使用してもよい。
【００９１】
また、サーバ１００２はノンスＭ０３に有効期限を設け、期限が過ぎたノンスＭ３により生成された確認用認証データＭ０５を強制的に廃棄するようにしてもよい。これにより、認証が途中で失敗した場合に確認用認証データが廃棄されずに残るのを防ぐことができる。
【００９２】
さらに、本実施の形態２のサーバまたはクライアントのいずれかの各動作ステップを実行させる作用を記述したプログラムコード及びそのプログラムを記録したソフトウェアの蓄積媒体を用いて、コンピュータを搭載する装置上でこれを実行し、サーバまたはクライアントとして動作させてもよい。
【００９３】
（実施の形態３）
次に、本発明の実施の形態３に係る通信システムについて、図面を参照しながら説明する。
【００９４】
図５は、本実施の形態３に係る通信システムの全体構成を示す機能ブロック図である。なお、実施の形態１及び２に係る通信システムの構成と対応する構成部分に同じ番号を付し、その説明を省略する。
【００９５】
ここで、この実施の形態３に係る通信システムにおいては、認証後の暗号通信を含めて構成されている点では実施の形態２に係る通信システムと同じであるが、認証と暗号鍵の生成とを兼用するように機能構成される点が実施の形態２の通信システムの構成と大きく異なっている。
【００９６】
サーバ１００３は、サーバ１００２と同様、通信部１１０、パスワード記憶部１１１、乱数発生部１２０、ノンス記憶部１２１、認証データ比較部１３２、暗号鍵記憶部１４２、暗号化プログラム記憶部１５０、暗号化プログラム実行部１５１を含む他、サーバ１００２の認証データ生成プログラム記憶部１３０及び暗号鍵生成プログラム記憶部１４０、認証データ生成プログラム実行部１３１及び鍵生成プログラム実行部１４１に代えて、認証データ・鍵生成プログラム記憶部１６０と、認証データ・鍵生成プログラム実行部１６１とを備える。
【００９７】
認証データ・鍵生成プログラム記憶部１６０は、クライアント２００３からの通信要求Ｍ０１の応答として送信するプログラムであって、認証データを生成するとともに暗号鍵を生成するための認証データ・鍵生成プログラムＭ１０を保持する。認証データ・鍵生成プログラム実行部１６１は、認証データ・鍵生成プログラムＭ１０を実行し、確認用認証データＭ０５を生成するとともに暗号鍵Ｍ１０を生成する。
【００９８】
なお、このようなサーバ１００３を構成する各部は、サーバ１００１，１００２の場合と同様に、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【００９９】
一方、クライアント２００３は、クライアント２００２と同様、通信部２１０、パスワード記憶部２１１、暗号鍵記憶部２４２、暗号化プログラム記憶部２５０及び暗号化プログラム実行部２５１を含む他、クライアント２００２の鍵生成プログラム実行部２４１に代えて、認証データ・鍵生成プログラム実行部２６１を備える。この認証データ・鍵生成プログラム実行部２６１は、サーバ１００３から受信した認証データ・鍵生成プログラムＭ０９を実行し、認証データＭ０４を生成するとともに、暗号鍵Ｍ１０を生成する。
【０１００】
なお、このようなクライアント２００３を構成する各部は、クライアント２００１，２００２の場合と同様に、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【０１０１】
ここで、認証データ生成プログラム兼暗号鍵生成プログラムＭ１０内の変換関数にはＭＤ５やＳＨＡ−１などのセキュリティを考慮したハッシュ関数を用いることにより認証データＭ０４の安全性を確保する。認証データ生成プログラムＭ１０中の変換関数にハッシュ関数を用いることにより、認証データからパスワードを類推することを困難にしている。また、ハッシュ関数は暗号鍵を利用しないため、暗号鍵の漏洩によるデータ盗聴を防ぐことができる。また、暗号化プログラムＭ０７にはＤＥＳなどの対称鍵暗号を使用し、暗号鍵をネットワーク３０００上に流さないことにより、ネットワーク３０００上での暗号鍵の漏洩を防ぐことができるので、より安全な暗号化通信を実現できる。
【０１０２】
次いで、図６を用いて本実施の形態３の通信システムにおけるクライアント・サーバ間のデータの流れを説明する。
図６は、本実施の形態３の通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【０１０３】
まず始めにクライアント２００３は通信部２１０を用いて接続したいサーバ１００３に対して通信要求Ｍ０１のメッセージを送信する。
サーバ１００３は、通信要求Ｍ０１に対して、乱数発生部１２０で乱数を発生させ、ノンスＭ０３を生成させる。生成されたノンスＭ０３は、ノンス記憶部１２１に記憶される。通信部１１０は、通信要求Ｍ０１の応答として、クライアント２００３に対し、暗号化プログラム記憶部１５０に保持されている暗号化プログラムＭ０７と、認証データ・鍵生成プログラム記憶部１６０に保持されている認証データ・鍵生成プログラムＭ１０と、ノンス記憶部１２１に記憶されているノンスＭ０３とを順次送信する。なお、ノンスＭ０３は通信要求があるたびに新たに生成される。
【０１０４】
クライアント２００３は、パスワード記憶部２１１に予め保持しているパスワード２００と、サーバ１００３から受信したノンスＭ０３とを、認証データ・鍵生成プログラム実行部２６１で実行される認証データ・鍵生成プログラムＭ１０に入力し、認証データＭ０４を生成する。そして認証データＭ０４をＭ０７，Ｍ１０，Ｍ０３の応答として通信部２１０を使ってサーバ１００３に送信する。
【０１０５】
サーバ１００３は、パスワード記憶部１１１に保持されているパスワード１００とノンス記憶部１２１に保持されているノンスＭ０３とを認証データ・鍵生成プログラム実行部１６１で実行される認証データ・鍵生成プログラムＭ１０に入力し、確認用認証データＭ０５を生成する。
【０１０６】
この認証データ・鍵生成プログラムの認証データの生成部分は、パスワードとノンスから認証データを生成するが、その認証データは、
Ｍ０４＝ＣａｕｔｈＤａｔａ（Ｎ，Ｐｃ）
Ｍ０５＝ＣａｕｔｈＤａｔａ（Ｎ，Ｐｓ）
で表される。
【０１０７】
ここで、Ｎはノンス、Ｐｃはクライアントが保持するパスワード、Ｐｓはサーバが保持するパスワード、ＣａｕｔｈＤａｔａ（）は変換式である。
双方のパスワードが一致すれば、認証データＭ０４及びＭ０５もまた一致する。ＣａｕｔｈＤａｔａには逆変換が困難なハッシュ関数を用いる。ハッシュ関数にはＳＨＡ−１，ＭＤ５などが知られている。従って、ネットワーク上を流れる認証データＭ０４及びノンスＮが盗聴されたとしてもパスワードＰｃを逆演算によって知ることは困難である。また、ノンスＮは接続ごとに変更されるため、認証データＭ０４を盗聴してもそのまま次の接続で使用しても認証できない。
【０１０８】
サーバ１００３は、クライアント２００３から送信されてきた認証データＭ０４と確認用認証データＭ０５を認証データ比較部１３２で比較し、同じ物であればクライアント２００３はサーバ１００３と共通のパスワードを持つ正当な通信クライアントとして認証し、以後の通信を続行する。なお、認証データＭ０４と確認用認証データＭ０５は、クライアント２００２が認証された際に廃棄される。
【０１０９】
認証が終わるとサーバ１００３は、パスワード記憶部１１１に保持されているパスワード１００と、ノンス記憶部１２１に記憶されているノンスＭ０３とを、認証データ・鍵生成プログラム実行部１６１で実行される認証データ・鍵生成プログラムＭ１０に入力し、暗号鍵Ｍ１１を生成する。生成された暗号鍵Ｍ１１は暗号鍵記憶部１４２に保持される。暗号鍵の生成が終わると、ノンス記憶部１２１に記憶されたノンスＭ０３は廃棄される。
【０１１０】
一方、クライアント２００３において、サーバ１００３と同様に暗号鍵Ｍ１１の生成が行われる。すなわち、クライアント２００３は、認証データＭ０４の生成が終わると、サーバ１００３から送られてきた暗号化プログラムＭ０７を暗号化プログラム記憶部２５０に格納する。そして、クライアント２００３は、パスワード記憶部２１１に保持されているパスワード２００とサーバ１００３から送られてきたノンスＭ０３とを認証データ・鍵生成プログラム実行部２６１で実行される認証データ・鍵生成プログラムＭ１０に入力し、暗号鍵Ｍ１１を生成する。生成された暗号鍵Ｍ１１は暗号鍵記憶部２４２に保持される。
【０１１１】
この認証データ・鍵生成プログラムの暗号鍵生成の部分は、パスワードとノンスから暗号鍵を生成するが、その暗号鍵は、
Ｍ１１＝ＣＡｕｔｈＤａｔａ（Ｃｈｅｃｋ）
Ｃｈｅｃｋ＝ＡＤａｔａ
ＡＤａｔａ＝ＣＡｕｔｈＤａｔａ（Ｎ，Ｐｃ）
ＡＤａｔａ＝ＣＡｕｔｈＤａｔａ（Ｎ，Ｐｓ）
で表される。
【０１１２】
ここで、Ｎはノンス、Ｐｃはクライアントが保持するパスワード、Ｐｓはサーバが保持するパスワード、ＣＡｕｔｈＤａｔａ（）及びＣＡｕｔｈＤａｔａ（）は変換式である。なお、このＣＡｕｔｈＤａｔａ（）については、認証の部分が含まれているので実施の形態２の場合と表現上異なっているが実質的には同じである。つまり、認証データ・鍵生成プログラムＭ１０は、暗号鍵を生成する機能を含んでいる。そして、認証データ・鍵生成プログラムＭ１０に認証データを入力すれば、暗号鍵Ｍ１１が生成される。
【０１１３】
暗号鍵Ｍ１１の生成が終わると、ノンスＭ０３がそれぞれ廃棄され、サーバ１００３とクライアント２００３の間で暗号化通信が行われる。
暗号化通信については、クライアント２００３に対してデータを送信する場合には、サーバ１００３は、暗号鍵記憶部１４２に保持されている暗号鍵Ｍ１１とクライアント２００３に送信するデータとを暗号化プログラム実行部１５１で実行される暗号化プログラムＭ０７に入力し、暗号化データＭ０９を生成する。生成された暗号化データＭ０９は、通信部１１０を用いてクライアント２００３に送信される。クライアント２００３から暗号化データＭ０９が送られてきた場合は、サーバ１００３は、暗号鍵記憶部１４２に保持されている暗号鍵Ｍ１１とクライアント２００３から送られてきた暗号化データＭ０９とを暗号化プログラム実行部１５１で実行される暗号化プログラムＭ０７に入力し、暗号鍵Ｍ１１で暗号化されたデータを復号する。
【０１１４】
一方、クライアント２００３は、サーバ１００３に対してデータを送信する場合には、暗号鍵記憶部２４２に保持されている暗号鍵Ｍ１１と、サーバ１００３に送信するデータとを暗号化プログラム実行部２５１で実行される暗号化プログラムＭ０７に入力し、暗号化データＭ０９を生成する。生成された暗号化データＭ０９は、通信部２１０を用いてサーバ１００３に送信される。サーバ１００３から暗号化データＭ０９が送られてきた場合は、クライアント２００３は、暗号鍵記憶部２４２に保持されている暗号鍵Ｍ１１とサーバ１００３から送られてきた暗号化データＭ０９を暗号化プログラム実行部２５１で実行される暗号化プログラムＭ０７に入力し、暗号化されたデータを復号する。
【０１１５】
この暗号化データは、データと暗号鍵から暗号化プログラムで生成されるが、その暗号化データは、
Ｍ０９＝Ｅｎｃ（Ｄａｔａ，Ｋｅｙ）
で表される。
【０１１６】
ここで、Ｄａｔａはデータ、Ｋｅｙはクライアント及びサーバが共通に保持する暗号鍵（セッション鍵）、Ｅｎｃ（）は変換式である。この暗号化プログラムＭ０７にはＤＥＳなどの対称鍵暗号を使用し、暗号鍵をネットワーク３０００上に流さないことにより、ネットワーク３０００上での暗号鍵の漏洩を防ぐことができるので、より安全な暗号化通信を実現できる。
【０１１７】
暗号化データＭ０９の通信が終わると、暗号鍵Ｍ１１はその暗号化通信の終了時に破棄される。
以上のように本実施の形態３に係る通信システムによれば、認証データ生成プログラムと鍵生成プログラムとを兼任する認証データ・鍵生成プログラムＭ１０と暗号化プログラムＭ０７とをクライアント２００３に送るので、クライアント２００３とサーバ１００３の各プログラムの同期をとるためのアップデート作業を個々に行わなくてよくなり、通信システムの保守が容易になる。また、クライアント２００３は認証を行うごとに認証データ生成プログラム兼暗号鍵生成プログラムＭ１０と暗号化プログラムＭ０７が送信されてくるため、各プログラムを保持していなくとも暗号化通信を行うことができる。ただし、暗号化プログラムＭ０７は、暗号化通信を行っている間は記憶しておく必要がある。
【０１１８】
なお、クライアント２００３は、パスワード記憶部２１１でパスワード２００を保持せず、クライアント使用者が直接認証データ生成プログラム実行部２６１に入力してもよい。
【０１１９】
また、クライアント２００３は、認証データ生成プログラム兼暗号鍵生成プログラムＭ１０と暗号化プログラムＭ０７を保持し、サーバ１００３側で認証データ生成プログラム兼暗号鍵生成プログラムＭ１０と暗号化プログラムＭ０７の更新が無ければ、サーバ１００３はノンスＭ０３のみを送信し、クライアント２００３は保持している認証データ生成プログラム兼暗号鍵生成プログラムＭ１０と暗号化プログラムＭ０７を使用して認証データＭ０４を生成、暗号鍵Ｍ１１の生成そして暗号化通信を行ってもよい。
【０１２０】
また、サーバ１００３のパスワード記憶部１１１、ノンス記憶部１２１、認証データ・鍵生成プログラム記憶部１６０、暗号鍵記憶部１４２、暗号化プログラム記憶部１５０は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【０１２１】
また、クライアント２００３のパスワード記憶部２１１、暗号鍵記憶部２４２、暗号化プログラム記憶部２５０は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【０１２２】
また、サーバ１００３の認証データ・鍵生成プログラム実行部１６１と、暗号化プログラム実行部１５１は共通のプログラム実行部を使用してもよい。
また、クライアント２００３の認証データ・鍵生成プログラム実行部２６１と、暗号化プログラム実行部２５１は共通のプログラム実行部を使用してもよい。
【０１２３】
また、認証データ生成プログラムＭ０２内の変換関数はパスワード１００、２００を暗号鍵とするＤＥＳなどの対称鍵暗号関数を使用してもよい。
また、認証データ生成プログラムＭ０２内の変換関数はパスワード１００、２００を暗号鍵とするＲＳＡなどの非対称鍵暗号関数を使用してもよい。
【０１２４】
また、サーバ１００３はノンスＭ０３に有効期限を設け、期限が過ぎたノンスＭ３により生成された確認用認証データＭ０５を強制的に廃棄するようにしてもよい。これにより、認証が途中で失敗した場合に確認用認証データが廃棄されずに残るのを防ぐことができる。
【０１２５】
さらに、本実施の形態３のサーバまたはクライアントのいずれかの各動作ステップを実行させる作用を記述したプログラムコード及びそのプログラムを記録したソフトウェアの蓄積媒体を用いて、コンピュータを搭載する装置上でこれを実行し、サーバまたはクライアントとして動作させてもよい。
【０１２６】
（実施の形態４）
次に、本発明の実施の形態４に係る通信システムについて、図面を参照しながら説明する。
【０１２７】
図７は、本実施の形態４に係る通信システムの全体構成を示す機能ブロック図である。なお、実施の形態１の通信システムの構成と対応する構成部分に同じ番号を付し、その説明を省略する。
【０１２８】
本実施の形態４に係る通信システムは、図７に示されるように、ネットワーク３０００を介して相互に通信可能に接続されるサーバ１００４と、クライアント２００４とから構成される。
【０１２９】
ここで、この実施の形態４に係る通信システムにおいては、認証データに加えてノンスを送り返させ、この両者で認証するように構成されている点が、認証データだけで認証する実施の形態１の通信システムの構成と異なっている。
【０１３０】
サーバ１００４は、サーバ１００１が備える通信部１１０、パスワード記憶部１１１、乱数発生部１２０、ノンス記憶部１２１、認証データ生成プログラム記憶部１３０、認証データ生成プログラム実行部１３１及び認証データ比較部１３２の他、ノンス比較部１２２をさらに備える。このノンス比較部１２２は、クライアント２００４から送り返されてきたノンスＭ１２とサーバ１００４が保持しているノンスＭ０３の比較判定を行う。
【０１３１】
なお、このようなサーバ１００４を構成する各部は、サーバ１００１の場合と同様に、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【０１３２】
クライアント２００４は、クライアント２００１が備える通信部２１０、パスワード記憶部２１１及び認証データ生成プログラム実行部２３１の他、ノンス記憶部２２２をさらに備える。このノンス記憶部２２２は、サーバ１００４へ送り返すため、ノンスＭ１２を保持する。
【０１３３】
なお、このようなクライアント２００４を構成する各部は、クライアント２００１の場合と同様に、ＣＰＵ、ＣＰＵによって実行されるプログラムを格納するＲＯＭ、プログラム実行の際にワークエリアを提供したり、入力された種々のデータ等を格納するメモリ等により実現される。
【０１３４】
次に、図８を用いて本実施の形態のクライアント・サーバ間のデータの流れを説明する。
図８は、本実施の形態４の通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【０１３５】
まず始めにクライアント２００４は通信部２１０を用いて接続したいサーバ１００４に対して通信要求Ｍ０１のメッセージを送信する。
サーバ１００４は、通信要求Ｍ０１に対して乱数発生部１２０で乱数を発生させ、ノンスＭ０３を生成する。生成されたノンスＭ０３は、ノンス記憶部１２１に記憶される。通信部１１０は、通信要求Ｍ０１の応答として、認証データ生成プログラム記憶部１３０に保持されている認証データ生成プログラムＭ０２と、ノンス記憶部１２１に記憶されているノンスＭ０３とを、クライアント２００４に送信する。なお、ノンスＭ０３は通信要求があるたびに新たに生成される。
【０１３６】
クライアント２００４は、パスワード記憶部２１１に予め保持しているパスワード２００と、サーバ１００４から受信したノンスＭ０３とを認証データ生成プログラム実行部２３１で実行される認証データ生成プログラムＭ０２に入力し、認証データＭ０４を生成する。また、クライアント２００４は、サーバ１００４から送られてきたノンスＭ０３を返信用ノンスＭ１２としてノンス記憶部２２２に格納する。そして認証データＭ０４とノンス記憶部２２２に記憶されているノンスＭ１２とをＭ０２とＭ０３の応答として通信部２１０を使ってサーバ１００４に送信する。
【０１３７】
サーバ１００４は、まず、クライアント２００４から送り返されてきたノンスＭ１２とノンス記憶部１２１に保持しているノンスＭ０３をノンス比較部１２２で比較し、同じと判定された場合は確認用認証データＭ０５の生成を行う。ノンスＭ０３とノンスＭ１２が異なると判定された場合はクライアント２００４が正当なクライアントではないと判断し、認証を中止し、ノンスＭ０３を破棄する。
【０１３８】
確認用認証データＭ０５の生成は、パスワード記憶部１１１に保持されているパスワード１００と、ノンス記憶部１２１に保持されているノンスＭ０３とを認証データ生成プログラム実行部１３１で実行される認証データ生成プログラムＭ０２に入力することで行われる。そして認証データ比較部１３２で比較した結果、クライアント２００４から送信されてきた認証データＭ０４と確認用認証データＭ０５とが同じ物であればクライアント２００４はサーバ１００４と共通のパスワードを持つ正当な通信クライアントとして認証し、以後の通信を続行する。
【０１３９】
なお、認証が終わると、ノンス記憶部１２１に記憶されているノンスＭ０３と、ノンス記憶部２２２に記憶されているノンスＭ１２とは、それぞれ廃棄される。
【０１４０】
以上のように本実施形態４に係る通信システムによれば、クライアント２００４が、ノンスＭ１２と認証データＭ０４をサーバ１００４に送信することで、確認用認証データを生成する前にクライアント２００４が正当なクライアントであるかを判定することが出来、サーバ１００４に余分な計算をさせなくて済む。また、ＤＯＳ攻撃の一種である再送攻撃に対しても、ノンスをチェックすることでサーバ１００４への負荷を抑えることができる。なぜなら、再送攻撃で送られてくるデータのノンスはすべて同一の値であり、サーバ１００４の生成するノンスは毎回異なり、古いノンスは破棄されるため、同一のノンスを持つデータによる認証は受け付けないためである。
【０１４１】
なお、クライアント２００４は、パスワード記憶部２１１でパスワード２００を保持せず、クライアント使用者が直接認証データ生成プログラム実行部２３１に入力してもよい。
【０１４２】
また、クライアント２００４は、認証データ生成プログラムＭ０２を保持し、サーバ１００４側で認証データ生成プログラムの更新が無ければ、サーバ１００４はノンスＭ０３のみを送信し、クライアント２００４は保持している認証データ生成プログラムＭ０２を使用して認証データＭ０４を生成してもよい。
【０１４３】
また、サーバ１００４のパスワード記憶部１１１、ノンス記憶部１２１、認証データ生成プログラム記憶部１３０は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【０１４４】
また、クライアント２００４のパスワード記憶部２１１とノンス記憶部２２２は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【０１４５】
また、認証データ生成プログラムＭ０２内の変換関数はパスワード１００、２００を暗号鍵とするＤＥＳなどの対称鍵暗号関数を使用してもよい。
また、認証データ生成プログラムＭ０２内の変換関数はパスワード１００、２００を暗号鍵とするＲＳＡなどの非対称鍵暗号関数を使用してもよい。
【０１４６】
また、サーバ１００４はノンスＭ０３に有効期限を設け、期限が過ぎたノンスＭ３により生成された確認用認証データＭ０５を強制的に廃棄するようにしてもよい。これにより、認証が途中で失敗した場合に確認用認証データが廃棄されずに残るのを防ぐことができる。
【０１４７】
さらに、本実施の形態４のサーバまたはクライアントのいずれかの各動作ステップを実行させる作用を記述したプログラムコード及びそのプログラムを記録したソフトウェアの蓄積媒体を用いて、コンピュータを搭載する装置上でこれを実行し、サーバまたはクライアントとして動作させてもよい。
【０１４８】
（実施の形態５）
次に、本発明の実施の形態５に係る通信システムについて、図面を参照しながら説明する。
【０１４９】
図９は、本実施の形態５に係る通信システムの全体構成を示す機能ブロック図である。なお、実施の形態１の通信システムの構成と対応する構成部分に同じ番号を付し、その説明を省略する。
【０１５０】
本実施の形態５に係る通信システムは、図９に示されるように、ネットワーク３０００を介して相互に通信可能に接続されるサーバ１００５と、クライアント２００５とから構成される。
【０１５１】
ここで、この実施の形態６に係る通信システムにおいては、複数のクライアントの認証に対応するように構成されている点が、一対一だけで認証する実施の形態１の通信システムの構成と異なっている。
【０１５２】
サーバ１００５は、サーバ１００１が備える通信部１１０、乱数発生部１２０、ノンス記憶部１２１及び認証データ比較部１３２を含む他、複数ユーザＩＤ記憶部１１２と、複数パスワード記憶部１１３と、認証データ生成プログラム記憶部１７０と、認証データ記憶部１７２とを備える。
【０１５３】
複数ユーザＩＤ記憶部１１２は、複数のクライアントを区別するために、クライアント２００５ごとにユニークなＩＤ１０１を保持する。複数パスワード記憶部１１３は、ＩＤ１０１に対応するパスワード１０２を保持する。認証データ生成プログラム記憶部１７０は、クライアント２００５からの通信要求Ｍ０１の応答として送信する認証データ生成プログラムＭ１３を保持する。認証データ生成プログラム実行部１７１は、確認用認証データＭ１５を生成する。認証データ記憶部１７２は、クライアントから送られてきた認証データＭ１４を記憶する。
【０１５４】
クライアント２００５は、クライアント２００１が備える通信部２１０及びパスワード記憶部２１１の他、ユーザＩＤ記憶部２１２と、データ生成プログラム実行部２７１とを備える。
【０１５５】
ユーザＩＤ記憶部２１２は、サーバ１００５の複数ユーザＩＤ記憶部に登録されているＩＤの内の１つであって、他のクライアントと共通でないＩＤ２０１を記憶する。認証データ生成プログラム実行部２７１は、サーバ１００５から認証データ生成プログラムＭ１３とノンスＭ０３とを受信した応答として、認証データＭ１４を生成する。
【０１５６】
ここで、認証データ生成プログラムＭ１３内の変換関数には、ＭＤ５やＳＨＡ−１などのセキュリティを考慮したハッシュ関数が用いられている。これにより認証データＭ１４の安全性が確保される。
【０１５７】
次いで、図１０を用いて本実施の形態５のクライアント・サーバ間のデータの流れを説明する。
図１０は、本実施の形態５の通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【０１５８】
まず始めにクライアント２００５は通信部２１０を用いて接続したいサーバ１００５に対して通信要求Ｍ０１のメッセージを送信する。
サーバ１００５は、通信要求Ｍ０１に対し、乱数発生部１２０で乱数を発生させ、ノンスＭ０３を生成する。生成されたノンスＭ０３は、ノンス記憶部１２１に格納される。通信部１１０は、通信要求Ｍ０１の応答として、認証データ生成プログラム記憶部１７０に保持されている認証データ生成プログラムＭ１３と、ノンス記憶部１２１によって記憶されているノンスＭ０３とをクライアント２００５に送信する。なお、ノンスＭ０３は通信要求があるたびに新たに生成される。
【０１５９】
クライアント２００５は、ユーザＩＤ記憶部２１２に予め保持しているユーザＩＤ２０１と、パスワード記憶部２１１に予め保持しているパスワード２０２と、サーバ１００５から受信したノンスＭ０３とを認証データ生成プログラム実行部２７１で実行される認証データ生成プログラムＭ１３に入力し、認証データＭ１４を生成する。そして認証データＭ１４をＭ１３とＭ０３の応答として通信部２１０を使ってサーバ１００５に送信する。
【０１６０】
サーバ１００５は、複数ユーザＩＤ記憶部１１２に記憶されている全ユーザＩＤと、それぞれのユーザＩＤ１０１に対応する複数パスワード記憶部１１３に記憶されているパスワード１０２と、ノンス記憶部１２１に保持されているノンスＭ０３とを認証データ生成プログラム実行部１７１で実行される認証データ生成プログラムＭ１３に入力し、各ユーザＩＤ１０１ごとの確認用認証データＭ１５を生成する。
【０１６１】
この認証データ生成プログラムＭ１３は、パスワードとＩＤとノンスとから認証データを生成するが、その認証データは、
Ｍ１４＝ＣａｕｔｈＤａｔａ（Ｎ，ＩＤｉ，Ｐｃｉ）
Ｍ１５＝ＣａｕｔｈＤａｔａ（Ｎ，ＩＤｉ，Ｐｓｉ）
で表される。
【０１６２】
ここで、Ｎはノンス、Ｐｃｉはクライアントが保持するパスワード、Ｐｓｉはサーバが保持するパスワード、ＩＤｉはクライアント及びサーバが保持するパスワード、ＣａｕｔｈＤａｔａ（）は変換式である。また、Ｍ１５についてはｉを１〜ｎに変化させ、ｎ個の認証データが生成される。
【０１６３】
双方のパスワード及びＩＤに一致するものがあれば、認証データＭ１５の中にＭ１４と一致するものがある。ＣａｕｔｈＤａｔａには逆変換が困難なハッシュ関数を用いる。ハッシュ関数にはＳＨＡ−１，ＭＤ５などが知られている。従って、ネットワーク上を流れる認証データＭ１４及びノンスＮが盗聴されたとしてもパスワードＰｃｉ及びＩＤｉを逆演算によって知ることは困難である。また、ノンスＮは接続ごとに変更されるため、認証データＭ１４を盗聴してもそのまま次の接続で使用しても認証できない。
【０１６４】
そして、サーバ１００５は、クライアント２００５から送信されてきた認証データＭ１４を認証データ記憶部１７２に一旦記憶させ、認証データ比較部１３２で各ユーザＩＤ１０１ごとの確認用認証データＭ１５と認証データＭ１４を比較し、同じ物があればクライアント２００５がサーバ１００５に登録されている正しいユーザＩＤとパスワードを持つ正当なクライアントとして認証し、以後の通信を続行する。Ｍ１４とＭ１５が一致しない場合は、次のユーザＩＤと対応するパスワードとノンスＭ０３を用いて生成した確認用認証データを生成し、比較を続ける。Ｍ１４とＭ１５の比較は一致する確認用認証データＭ１５が現れるか、全ユーザＩＤの確認用認証データを生成、比較し終わるまで続けられる。一致する確認用認証データが存在しなかった場合は、クライアント２００５は正当なユーザＩＤ１０１とパスワード１０２を持たないクライアントとして、認証を拒否する。
【０１６５】
以上のように本実施の形態５に係る通信システムによれば、認証データ生成プログラムＭ１３の入力にユーザＩＤ２０１とパスワード２０２を含めることにより、ネットワーク３０００上にユーザＩＤ２０１が直接流れないようになっている。これにより、ユーザＩＤ２０１がわからないため、ユーザＩＤ２０１からパスワード２０２を推測するようなパスワード推測によるパスワードクラックや、有効なユーザＩＤに対して総当りや、辞書によるパスワードクラック攻撃（ブルートフォース攻撃）の成功率を下げることができる。これにより、より安全性の高い通信システムが構築できる。
【０１６６】
なお、クライアント２００５は、パスワード記憶部２１１でパスワード２０２を保持せず、クライアント使用者が直接認証データ生成プログラム実行部２７１に入力してもよい。
【０１６７】
また、クライアント２００５は、認証データ生成プログラムＭ１３を保持し、サーバ１００５側で認証データ生成プログラムＭ１３の更新が無ければ、サーバ１００５はノンスＭ０３のみを送信し、クライアント２００５は保持している認証データ生成プログラムＭ１３を使用して認証データＭ１４を生成してもよい。
【０１６８】
また、サーバ１００５の複数ユーザＩＤ記憶部１１２、複数パスワード記憶部１１３、ノンス記憶部１２１、認証データ生成プログラム記憶部１７０は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【０１６９】
また、クライアント２００５のユーザＩＤ記憶部２１２とパスワード記憶部２１１は共通の記憶部を使用し、各記憶部は共通の記憶部上のアドレスを保持するようにしてもよい。
【０１７０】
また、認証データ生成プログラムＭ１３の中の変換関数はユーザＩＤ２０１とパスワード２０２を暗号鍵とするＤＥＳなどの対称鍵暗号関数を使用してもよい。
【０１７１】
また、認証データ生成プログラムＭ１３の中の変換関数はユーザＩＤ２０１、パスワード２０２を暗号鍵とするＲＳＡなどの非対称鍵暗号関数を使用してもよい。
【０１７２】
また、サーバ１００５はノンスＭ０３に有効期限を設け、期限が過ぎたノンスＭ０３により生成された確認用認証データＭ１５を強制的に廃棄するようにしてもよい。これにより、認証が途中で失敗した場合に確認用認証データが廃棄されずに残るのを防ぐことができる。
【０１７３】
さらに、本実施の形態のサーバまたはクライアントのいずれかの各動作ステップを実行させる作用を記述したプログラムコード及びそのプログラムを記録したソフトウェアの蓄積媒体を用いて、コンピュータを搭載する装置上でこれを実行し、サーバまたはクライアントとして動作させてもよい。
【０１７４】
【発明の効果】
以上の説明から明らかなように、本発明に係る通信方法および通信装置によれば、サーバからクライアントに認証データ生成プログラムが送られるので、クライアントに認証データ生成プログラムを予め保持しておく必要がなく、認証プログラムを保持していなくともクライアント認証を行うことができる。しかもクライアントとサーバの認証データ生成プログラムの同期をとるためのアップデート作業を個々に行わなくてよくなり、通信システムの保守が容易になる。
【０１７５】
また、サーバからクライアントに鍵生成プログラムと暗号化プログラムが送られて、サーバ、クライアントのそれぞれで暗号鍵が生成されるので、証明書を用いないため認証局を不要とすることができ、しかもネットワーク上に暗号鍵を流さないで、安全性の高い暗号化通信を実現できる通信方法を提供することができる。
【０１７６】
また、認証データ生成プログラムが暗号鍵を生成する機能を含み、サーバからクライアントに暗号化プログラムが送られて、サーバ、クライアントのそれぞれで暗号鍵が生成されるので、証明書を用いないため認証局を不要とすることができ、しかもネットワーク上に暗号鍵を流さないで、安全性の高い暗号化通信を実現できる通信方法を提供することができるという効果に加え、さらに、前記認証データ生成プログラムを前記暗号鍵生成プログラムと共通にすることで、前記サーバから前記クライアントに送信されるデータの量を軽減することができるという効果を得ることができる。
【０１７７】
また、サーバからクライアントに送信されたノンスがサーバに送られるので、クライアントから送信されてきたノンスでいわゆるプレ認証を行うことができ、不正なクライアントを大まかに振る落とすことができ、確認用認証データを計算する無駄を省くことができる。
【０１７８】
また、各クライアントが第１情報としてパスワードとＩＤとを保持し、サーバが各クライアントのパスワードとＩＤとを保持するので、複数のクライアントを区別して認証することができ、認証時にクライアントのパスワードおよびＩＤが直接ネットワーク上に流れないため、ネットワークの盗聴によるＩＤ漏洩によるパスワード推測による攻撃や、有効なＩＤに対するブルートフォース攻撃を行いにくくすることができるなど、多くの顕著な効果が得られる。
【０１７９】
よって、本発明により、認証データ生成プログラムや、暗号鍵生成プログラム、暗号化プログラムをクライアントが予め保持していなくてもこのプログラムがサーバからクライアントに送信され、第一情報、暗号鍵をネット上に流さない状態で認証データを送受信したり、暗号通信したりすることができるため、ネットワーク通信が普及してきた今日における本発明の実用的価値は極めて高い。
【図面の簡単な説明】
【図１】本実施の形態１に係る通信システムの全体構成を示す機能ブロック図である。
【図２】図１に示される通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【図３】本実施の形態２に係る通信システムの全体構成を示す機能ブロック図である。
【図４】図３に示される通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【図５】本実施の形態３に係る通信システムの全体構成を示す機能ブロック図である。
【図６】図５に示される通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【図７】本実施の形態４に係る通信システムの全体構成を示す機能ブロック図である。
【図８】図７に示される通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【図９】本実施の形態５に係る通信システムの全体構成を示す機能ブロック図である。
【図１０】図９に示される通信システムにおけるクライアント・サーバ間のデータの流れを示すシーケンス図である。
【図１１】従来のチャレンジレスポンス方式よるクライアント認証のデータの流れを示す図である。
【図１２】従来のＳＳＬ方式によるクライアント認証のデータの流れを示す図である。
【図１３】従来のプログラムをクライアント側に送信する方式の暗号通信システムのシステム構成図である。
【符号の説明】
１００，１０２，２００，２０２  パスワード
１０１，２０１  ユーザＩＤ
１１０，２１０  通信部
１１１，２１１  パスワード記憶部
１１２  複数ユーザＩＤ記憶部
１１３  複数パスワード記憶部
１２０  乱数発生部
１２１，２２２  ノンス記憶部
１２２  ノンス比較部
１３０  認証データ生成プログラム記憶部
１３１  認証データ生成プログラム実行部
１３２  認証データ比較部
１４０  暗号鍵生成プログラム記憶部
１４１，２４１  鍵生成プログラム実行部
１４２，２４２  暗号鍵記憶部
１５０，２５０  暗号化プログラム記憶部
１５１，２５１  暗号化プログラム実行部
１６０  認証データ・鍵生成プログラム記憶部
１６１，２６１  認証データ・鍵生成プログラム実行部
１７０  認証データ生成プログラム記憶部
１７１，２３１，２７１  認証データ生成プログラム実行部
１７２  認証データ記憶部
２１２  ユーザＩＤ記憶部
１００１，１００２，１００３，１００４，１００５  サーバ
２００１，２００２，２００３，２００４，２００５  クライアント
３０００  ネットワーク
Ｍ０１  通信要求
Ｍ０２，Ｍ１３  認証データ生成プログラム
Ｍ０３，Ｍ１２  ノンス
Ｍ０４，Ｍ０５，Ｍ１４，Ｍ１５  認証データ
Ｍ０６  暗号鍵生成プログラム
Ｍ０７  暗号化プログラム
Ｍ０８，Ｍ１１  暗号鍵
Ｍ０９  暗号通信データ
Ｍ１０  認証データ・鍵生成プログラム
【図１】
2004274134.tif 000003
【図２】
2004274134.tif 000004
【図３】
2004274134.tif 000005
【図４】
2004274134.tif 000006
【図５】
2004274134.tif 000007
【図６】
2004274134.tif 000008
【図７】
2004274134.tif 000009
【図８】
2004274134.tif 000010
【図９】
2004274134.tif 000011
【図１０】
2004274134.tif 000012
【図１１】
2004274134.tif 000013
【図１２】
2004274134.tif 000014
【図１３】
2004274134.tif 000015