"ネットワークに接続されたサーバと端末との間において、所定の通信を行う通信システムにおいて、前記端末は、端末側識別情報を記憶する第1記憶部と、前記サーバとの間で情報の送受信を行う第1送受信部と、全体を制御する第1制御部とを備え、前記サーバは、固有のサーバ識別情報を記憶する第2記憶部と、前記端末側識別情報と前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を生成する鍵情報生成部と、前記端末との間で情報の送受信を行う第2送受信部と、全体を制御する第2制御部とを備え、認証前処理において、前記第1制御部は、前記第1記憶部から読み出した前記端末側識別情報を、前記第1送受信部を介して前記サーバに送信し、前記第2制御部は、前記第2送受信部により受信した前記端末側識別情報と、前記第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を前記鍵情報生成部に生成させ、生成された前記鍵情報を、前記第2送受信部を介して前記端末に送信し、前記第1制御部は、前記第1送受信部により受信した前記鍵情報を前記第1記憶部に記憶する通信システム。前記端末は、乱数を発生する第1乱数発生部と、認証処理を行う第1認証処理部と、ハッシュ関数を生成する第1ハッシュ関数生成部とを備え、前記サーバは、乱数を発生する第2乱数発生部と、認証処理を行う第2認証処理部と、ハッシュ関数を生成する第2ハッシュ関数生成部とを備え、認証処理において、前記第1制御部は、前記第1記憶部から読み出した前記端末側識別情報と、前記第1乱数発生部により発生させた第1乱数を、前記第1送受信部を介して前記サーバに送信し、前記第2制御部は、前記第2送受信部により受信した前記端末側識別情報と、前記第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を前記鍵情報生成部に生成させ、生成された前記鍵情報と前記第2送受信部により受信した前記第1乱数とを用いて第2ハッシュ関数を前記第2ハッシュ関数生成部に生成させ、生成させた前記第2ハッシュ関数と、前記第2乱数発生部により発生させた第2乱数を、前記第2送受信部を介して前記端末に送信し、前記第1制御部は、前記第1送受信部により受信した前記第2ハッシュ関数の認証を前記第1乱数発生部により発生させた前記第1乱数と、前記第1記憶部に記憶されている前記鍵情報に基づいて前記第1認証処理部に認証させ、当該認証が成功した場合に、前記第1記憶部に記憶されている前記鍵情報と、前記第1送受信部により受信した前記第2乱数とを用いて第1ハッシュ関数を前記第1ハッシュ関数生成部に生成させ、生成させた前記第1ハッシュ関数を、前記第1送受信部を介して前記サーバに送信し、前記第2制御部は、前記第2送受信部により受信した前記第1ハッシュ関数の認証を前記第2乱数発生部により発生させた前記第2乱数と、前記鍵情報生成部により生成された前記鍵情報に基づいて前記第2認証処理部に認証させ、当該認証が成功したらその旨の情報を前記端末に送信する請求項1記載の通信システム。前記端末側識別情報は、端末に付与されている固有の識別情報である請求項1又は2に記載の通信システム。前記端末は、パスワードを入力する入力部を備え、前記第1記憶部は、前記入力部により入力されたパスワードを前記端末側識別情報として記憶する請求項1又は2に記載の通信システム。ネットワークに接続されたサーバと端末との間において行われる所定の通信処理をコンピュータに実行させるためのプログラムであって、認証前処理において、端末側識別情報が記憶されている第1記憶部から読み出した前記端末側識別情報を前記サーバに送信する第1工程と、前記第1工程により送信されてきた前記端末側識別情報と、固有のサーバ識別情報が記憶されている第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を生成する第2工程と、前記第2工程により生成された前記鍵情報を前記端末に送信する第3工程と、前記第3工程により送信されてきた前記鍵情報を前記第1記憶部に記憶する第4工程とをコンピュータに実行させるためのプログラム。認証処理において、前記第1記憶部から読み出した前記端末側識別情報と、第1乱数発生部により発生された第1乱数を前記サーバに送信する第5工程と、前記第5工程により送信されてきた前記端末側識別情報と、前記第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を生成する第6工程と、前記第6工程により生成された前記鍵情報と、前記第5工程により受信した前記第1乱数とを用いて第2ハッシュ関数を生成する第7工程と、前記第7工程により生成された前記第2ハッシュ関数と、第2乱数発生部により発生させた第2乱数を、前記端末に送信する第8工程と、前記第5工程で前記第1乱数発生部により発生させた前記第1乱数と、前記第1記憶部に記憶されている前記鍵情報に基づいて、前記第8工程により送信されてきた前記第2ハッシュ関数を認証する第9工程と、前記第9工程による認証が成功した場合に、前記第1記憶部に記憶されている前記鍵情報と、前記第8工程により送信されてきた前記第2乱数とを用いて第1ハッシュ関数を生成する第10工程と、前記第10工程により生成された前記第1ハッシュ関数を前記サーバに送信する第11工程と、前記第8工程で前記第2乱数発生部により発生させた前記第2乱数と、前記第6工程により生成された前記鍵情報に基づいて、前記第11工程により送信されてきた前記第1ハッシュ関数を認証する第12工程と、前記第12工程による認証が成功した場合に、当該認証が成功した旨の情報を前記端末に送信する第13工程をコンピュータに実行させるための請求項5記載のプログラム。ところで、このような構成において、サーバは、ユーザIDや認証コードを管理する必要があり、ユーザ数の増加に伴って管理負荷が増大する。また、サーバは、大量のユーザIDや認証コードを管理しているため、外部からの攻撃によりユーザ情報が漏洩してしまう可能性がある。本発明は、上記課題を解決するため、サーバの管理負荷を低減し、攻撃による情報漏洩を回避することができる通信システム及びプログラムを提供することを一つの目的とする。1本発明に係る通信システムは、上記課題を解決するために、ネットワークに接続されたサーバと端末との間において、所定の通信を行う通信システムにおいて、前記端末は、端末側識別情報を記憶する第1記憶部と、前記サーバとの間で情報の送受信を行う第1送受信部と、全体を制御する第1制御部とを備え、前記サーバは、固有のサーバ識別情報を記憶する第2記憶部と、前記端末側識別情報と前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を生成する鍵情報生成部と、前記端末との間で情報の送受信を行う第2送受信部と、全体を制御する第2制御部とを備え、認証前処理において、前記第1制御部は、前記第1記憶部から読み出した前記端末側識別情報を、前記第1送受信部を介して前記サーバに送信し、前記第2制御部は、前記第2送受信部により受信した前記端末側識別情報と、前記第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を前記鍵情報生成部に生成させ、生成された前記鍵情報を、前記第2送受信部を介して前記端末に送信し、前記第1制御部は、前記第1送受信部により受信した前記鍵情報を前記第1記憶部に記憶する構成である。このような構成によれば、通信システムは、認証前処理において、第1記憶部から読み出した端末側識別情報を、第1送受信部を介してサーバに送信し、第2送受信部により受信した端末側識別情報と、第2記憶部に記憶されているサーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を鍵情報生成部に生成させ、生成された鍵情報を、第2送受信部を介して端末に送信し、第1送受信部により受信した鍵情報を第1記憶部に記憶する。したがって、通信システムは、サーバ側でユーザのIDや認証コードを管理しないので、管理負担を軽減し、攻撃による情報漏洩を回避することができる。2また、通信システムでは、前記端末は、乱数を発生する第1乱数発生部と、認証処理を行う第1認証処理部と、ハッシュ関数を生成する第1ハッシュ関数生成部とを備え、前記サーバは、乱数を発生する第2乱数発生部と、認証処理を行う第2認証処理部と、ハッシュ関数を生成する第2ハッシュ関数生成部とを備え、認証処理において、前記第1制御部は、前記第1記憶部から読み出した前記端末側識別情報と、前記第1乱数発生部により発生させた第1乱数を、前記第1送受信部を介して前記サーバに送信し、前記第2制御部は、前記第2送受信部により受信した前記端末側識別情報と、前記第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を前記鍵情報生成部に生成させ、生成された前記鍵情報と前記第2送受信部により受信した前記第1乱数とを用いて第2ハッシュ関数を前記第2ハッシュ関数生成部に生成させ、生成させた前記第2ハッシュ関数と、前記第2乱数発生部により発生させた第2乱数を、前記第2送受信部を介して前記端末に送信し、前記第1制御部は、前記第1送受信部により受信した前記第2ハッシュ関数の認証を前記第1乱数発生部により発生させた前記第1乱数と、前記第1記憶部に記憶されている前記鍵情報に基づいて前記第1認証処理部に認証させ、当該認証が成功した場合に、前記第1記憶部に記憶されている前記鍵情報と、前記第1送受信部により受信した前記第2乱数とを用いて第1ハッシュ関数を前記第1ハッシュ関数生成部に生成させ、生成させた前記第1ハッシュ関数を、前記第1送受信部を介して前記サーバに送信し、前記第2制御部は、前記第2送受信部により受信した前記第1ハッシュ関数の認証を前記第2乱数発生部により発生させた前記第2乱数と、前記鍵情報生成部により生成された前記鍵情報に基づいて前記第2認証処理部に認証させ、当該認証が成功したらその旨の情報を前記端末に送信する構成である。このような構成によれば、通信システムは、事前の認証前登録によりサーバで端末側識別情報に基づいて作成した共有鍵鍵情報を端末側で保持しておき、認証処理において、共有鍵を利用して、サーバと端末の相互間でチャレンジ/レスポンス方式による認証を行うので、盗聴やなりすましによる情報漏洩を回避することができる。3また、通信システムでは、前記端末側識別情報は、端末に付与されている固有の識別情報である。端末には、固有の識別情報であるIMEIInternationalMobileequipmentIdentifierが割り振られている。通信システムは、この固有のIDであるIMEIを利用して、認証前処理及び認証処理を行うので、サーバ側で所定のアルゴリズムにより固有の鍵情報を作成することができる。なお、固有の識別情報は、IMEIに限られず、IMSIInternationalMobileSubscriberIdentityであっても良い。4また、通信システムでは、前記端末は、パスワードを入力する入力部を備える。このような構成において、前記第1記憶部は、前記入力部により入力されたパスワードを前記端末側識別情報として記憶する。よって、通信システムは、ユーザが任意に入力したパスワードを端末側識別情報として利用できるので、第三者がユーザ本人になりすまして、勝手に端末を操作しても認証処理を成功させないようにすることができる。5本発明に係るプログラムは、上記課題を解決するために、ネットワークに接続されたサーバと端末との間において行われる所定の通信処理をコンピュータに実行させるためのプログラムであって、認証前処理において、端末側識別情報が記憶されている第1記憶部から読み出した前記端末側識別情報を前記サーバに送信する第1工程と、前記第1工程により送信されてきた前記端末側識別情報と、固有のサーバ識別情報が記憶されている第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を生成する第2工程と、前記第2工程により生成された前記鍵情報を前記端末に送信する第3工程と、前記第3工程により送信されてきた前記鍵情報を前記第1記憶部に記憶する第4工程とをコンピュータに実行させるためのものである。このような構成によれば、本発明に係るプログラムが実行されたコンピュータは、認証前処理において、第1記憶部から読み出した端末側識別情報を、第1送受信部を介してサーバに送信し、第2送受信部により受信した端末側識別情報と、第2記憶部に記憶されているサーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を鍵情報生成部に生成させ、生成された鍵情報を、第2送受信部を介して端末に送信し、第1送受信部により受信した鍵情報を第1記憶部に記憶するように実行する。したがって、本発明に係るプログラムが実行されたコンピュータは、サーバ側でユーザのIDや認証コードを管理しないので、管理負担を軽減し、攻撃による情報漏洩を回避することができる。6また、本発明に係るプログラムでは、認証処理において、前記第1記憶部から読み出した前記端末側識別情報と、第1乱数発生部により発生された第1乱数を前記サーバに送信する第5工程と、前記第5工程により送信されてきた前記端末側識別情報と、前記第2記憶部に記憶されている前記サーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を生成する第6工程と、前記第6工程により生成された前記鍵情報と、前記第5工程により受信した前記第1乱数とを用いて第2ハッシュ関数を生成する第7工程と、前記第7工程により生成された前記第2ハッシュ関数と、第2乱数発生部により発生させた第2乱数を、前記端末に送信する第8工程と、前記第5工程で前記第1乱数発生部により発生させた前記第1乱数と、前記第1記憶部に記憶されている前記鍵情報に基づいて、前記第8工程により送信されてきた前記第2ハッシュ関数を認証する第9工程と、前記第9工程による認証が成功した場合に、前記第1記憶部に記憶されている前記鍵情報と、前記第8工程により送信されてきた前記第2乱数とを用いて第1ハッシュ関数を生成する第10工程と、前記第10工程により生成された前記第1ハッシュ関数を前記サーバに送信する第11工程と、前記第8工程で前記第2乱数発生部により発生させた前記第2乱数と、前記第6工程により生成された前記鍵情報に基づいて、前記第11工程により送信されてきた前記第1ハッシュ関数を認証する第12工程と、前記第12工程による認証が成功した場合に、当該認証が成功した旨の情報を前記端末に送信する第13工程をコンピュータに実行させる。このような構成によれば、本発明に係るプログラムが実行されたコンピュータは、認証処理において、サーバ側でユーザのIDや認証コードを管理することなく、サーバと端末間において、相互にチャレンジ/レスポンス方式による認証を行うので、相互に認証を行うことができるので、サーバ側の管理負担を軽減し、攻撃による情報漏洩を回避することができる。本発明によれば、サーバの管理負荷を低減し、攻撃による情報漏洩を回避することができる。以下、本発明の実施形態の一例について図を参照しながら説明する。本発明の実施形態に係る通信システム1は、ネットワークNを介して端末10とサーバ20が接続されている。端末10は、図1に示すように、第1記憶部11と、第1送受信部12と、第1制御部13と、第1乱数発生部14と、第1認証処理部15と、第1ハッシュ関数生成部16とを備える。第1記憶部11は、端末側識別情報を記憶する。第1送受信部12は、サーバ20との間で情報の送受信を行うインターフェースである。第1制御部13は、端末10全体を制御する。第1乱数発生部14は、乱数を発生する。第1認証処理部15は、所定の方法により認証処理を行う。第1ハッシュ関数生成部16は、所定の方法によりハッシュ関数を生成する。また、サーバ20は、図1に示すように、第2記憶部21と、鍵情報生成部22と、第2送受信部23と、第2制御部24と、第2乱数発生部25と、第2認証処理部26と、第2ハッシュ関数生成部27とを備える。第2記憶部21は、固有のサーバ識別情報を記憶する。鍵情報生成部22は、端末側識別情報とサーバ識別情報に基づいて、所定のアルゴリズムにより鍵情報を生成する。第2送受信部23は、端末10との間で情報の送受信を行う。第2制御部24は、サーバ20全体を制御する。第2乱数発生部25は、乱数を発生する。第2認証処理部26は、所定の方法で認証処理を行う。第2ハッシュ関数生成部27は、所定の方法でハッシュ関数を生成する。<認証前処理>ここで、通信システム1により行われる認証前処理について、図2を参照しながら説明する。ステップST1において、第1制御部13は、第1記憶部11から端末側識別情報IDmを読み出し、読み出した端末側識別情報IDmを、第1送受信部12を介してサーバ20に送信する。ステップST2において、第2制御部24は、第2送受信部23により受信した端末側識別情報IDmと、第2記憶部21に記憶されているサーバ識別情報MKに基づいて、所定のアルゴリズムにより鍵情報Kを鍵情報生成部22に生成させる。つぎに、第2制御部24は、生成された鍵情報Kを、第2送受信部23を介して端末10に送信する。具体的には、鍵情報生成部22は、1式に示すように、端末側識別情報IDmとサーバ識別情報MKを入力値として、鍵生成関数により鍵情報Kを生成する。なお、情報鍵Kは、共有鍵である。K=key-GenMK,IDm1ステップST3において、第1制御部13は、第1送受信部12により受信した鍵情報Kを第1記憶部11に記憶する。このようにして、通信システム1では、サーバ20によって、端末側識別情報IDmに基づく情報鍵Kを生成し、当該情報鍵Kを端末10側で記憶することにより認証前処理を行う。したがって、認証前処理において、サーバ20は、サーバ識別情報MKのみ保持し、端末側識別情報IDmや情報鍵K等を保持しないので、管理負担が軽減され、原理的に、第三者からの攻撃によってユーザのID等の情報が漏洩する事態を招くことがないメリットがある。<認証処理>つぎに、通信システム1により行われる認証処理について、図3を参照しながら説明する。ステップST11において、第1制御部13は、第1記憶部11から読み出した端末側識別情報IDmと、第1乱数発生部14により発生させた第1乱数Rmを、第1送受信部12を介してサーバ20に送信する。第1乱数Rmは、いわゆるチャレンジ/レスポンスにおけるチャレンジとして送信される乱数である。なお、第1制御部13は、端末側識別情報IDmと第1乱数Rmを同時にサーバ20に送信しても良いし、異なるタイミングで送信しても良い。ステップST12において、第2制御部24は、第2送受信部23により受信した端末側識別情報IDmと、第2記憶部21に記憶されているサーバ識別情報MKに基づいて、所定のアルゴリズムにより鍵情報Kを鍵情報生成部22に生成させる。つぎに、第2制御部24は、生成された鍵情報Kと第2送受信部23により受信した第1乱数Rmとを用いて第2ハッシュ関数Res-sを第2ハッシュ関数生成部27に生成させる。つぎに、第2制御部24は、生成させた第2ハッシュ関数Res-sと、第2乱数発生部25により発生させた第2乱数Rsを、第2送受信部23を介して端末10に送信する。第2ハッシュ関数Res-sは、第1乱数Rmに対するサーバ20からのレスポンス値である。また、第2乱数Rsは、いわゆるチャレンジ/レスポンスにおけるチャレンジとして送信される乱数である。なお、第2制御部24は、第2ハッシュ関数Res-sと第2乱数Rsを同時に端末10に送信しても良いし、異なるタイミングで送信しても良い。また、第2ハッシュ関数Res-sは、2式により表される鍵付きのハッシュ関数である。Res-s=keyedHK,Rm2ステップST13において、第1制御部13は、第1送受信部12により受信した第2ハッシュ関数Res-sの認証を第1乱数発生部14により発生させた第1乱数Rmと、第1記憶部11に記憶されている鍵情報Kに基づいて第1認証処理部15に認証させる。具体的には、第1認証処理部15は、第1乱数Rmと鍵情報Kに基づいて鍵付きハッシュ関数を生成する本実施例では、鍵付きハッシュ関数は、keyedHK,Rmとなる。。そして、第1認証処理部15は、生成した鍵付きハッシュ関数が、第1送受信部12により受信した第2ハッシュ関数Res-sと一致するかどうかにより認証を行う。なお、本実施例では、3式より一致する。Res-s==keyedHK,Rm3なお、==は、左右の値が一致するか否かを判定するという意味である。そして、第1制御部13は、認証が成功した場合に、第1記憶部11に記憶されている鍵情報Kと、第1送受信部12により受信した第2乱数Rsとを用いて第1ハッシュ関数Res-mを第1ハッシュ関数生成部16に生成させる。第1ハッシュ関数Res-mは、第2乱数Rsに対する端末10からのレスポンス値である。また、第1ハッシュ関数Res-mは、4式により表される鍵付きのハッシュ関数である。Res-m=keyedHK,Rs4つぎに、第1制御部13は、生成させた第1ハッシュ関数Res-mを、第1送受信部12を介してサーバ20に送信する。ステップST14において、第2制御部24は、第2送受信部23により受信した第1ハッシュ関数Res-mの認証を、第2乱数発生部25により発生させた第2乱数Rsと、鍵情報生成部22により生成された鍵情報Kに基づいて第2認証処理部26に認証させる。具体的には、第2認証処理部26は、第2乱数Rsと鍵情報Kに基づいて鍵付きハッシュ関数を生成する本実施例では、鍵付きハッシュ関数は、keyedHK,Rsとなる。。そして、第2認証処理部26は、生成した鍵付きハッシュ関数が、第2送受信部23により受信した第1ハッシュ関数Res-mと一致するかどうかにより認証を行う。なお、本実施例では、5式より一致する。Res-s==keyedHK,Rs5なお、==は、左右の値が一致するか否かを判定するという意味である。また、第2制御部24は、当該認証が成功したらその旨の情報Ackを端末10に送信する。通信システム1は、Ackを端末10に送信したことにより、サーバ20と端末10間における相互認証が成功したことになる。このようにして、通信システム1では、事前の認証前登録によりサーバ20で端末側識別情報IDmに基づいて作成した共有鍵鍵情報を端末10側で保持しておき、認証処理において、共有鍵を利用して、サーバ20と端末10の相互間でチャレンジ/レスポンス方式による認証を行うので、盗聴やなりすましによる情報漏洩を回避することができる。また、サーバ20は、認証処理において、毎回、共有鍵鍵情報Kを生成するため、サーバ識別情報MKのみ保持し、端末側識別情報IDmや情報鍵K等を保持しないため、管理負担が軽減され、原理的に、第三者からの攻撃によってユーザのID等の情報が漏洩する事態を招くことがないメリットがある。また、上述した端末側識別情報IDmは、端末10に付与されている固有の識別情報であっても良い。端末10が携帯電話等である場合には、固有の識別情報であるIMEIInternationalMobileequipmentIdentifierが割り振られている。通信システム1は、この固有のIDであるIMEIを利用して、認証前処理及び認証処理を行うので、サーバ20側で所定のアルゴリズムにより固有の鍵情報Kを作成することができる。なお、固有の識別情報は、IMEIに限られず、IMSIInternationalMobileSubscriberIdentity等であっても良い。また、端末10は、図1に示すように、パスワードを入力する入力部17を備える構成であっても良い。第1記憶部11は、入力部17により入力されたパスワードを端末側識別情報IDmとして記憶する。このような構成によれば、通信システム1は、ユーザが任意に入力したパスワードを端末側識別情報IDmとして利用できるので、パスワードを知らない第三者がユーザ本人になりすまして、勝手に端末10を操作しても認証処理を成功させないようにすることができる。"