"メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムであって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部と、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化部と、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算部と、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算部と、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信部と、を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部と、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離部と、前記分離部により得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算部と、前記分離部により得られた前記スクランブル値、及び前記端末側ハッシュ演算部により得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除部と、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化部と、前記第3のデータ列から第2のメッセージを分離するメッセージ取得部と、を備える一方向通信システム。前記端末は、所定の鍵生成関数を用いて、前記端末情報から前記共有鍵を生成する鍵生成部を備える請求項1に記載の一方向通信システム。前記固有データは、乱数を含むデータである請求項1又は請求項2に記載の一方向通信システム。前記固有データは、前記端末におけるメッセージの管理コードを含む請求項1から請求項3のいずれか1項に記載の一方向通信システム。前記サーバ側ハッシュ演算部は、前記第1のデータ列から、前記一方向性ハッシュ関数により第3のハッシュ値を演算し、前記送信部は、前記固有データ、前記サーバID、前記スクランブル値及び前記第3のハッシュ値を連接したパケットを、前記端末へ送信し、前記分離部は、前記パケットから、前記固有データ、前記サーバID、前記スクランブル値及び前記第3のハッシュ値を分離し、前記端末側ハッシュ演算部は、前記復号化部により得られた前記第3のデータ列から、前記一方向性ハッシュ関数により第4のハッシュ値を演算し、前記端末は、前記第3のハッシュ値及び前記第4のハッシュ値が一致するか否かを判定することにより、前記第2のメッセージが前記第1のメッセージと一致するか否かを検証する検証部を備える請求項1から請求項4のいずれか1項に記載の一方向通信システム。前記暗号化部は、前記共有鍵を用いた鍵付きハッシュ関数の値との排他的論理和により、前記第1の暗号化メッセージを生成し、前記復号化部は、前記鍵付きハッシュ関数の値との排他的論理和により、前記第3のデータ列を取得する請求項1から請求項5のいずれか1項に記載の一方向通信システム。メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムにおける通信方法であって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部を備え、前記サーバが、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化ステップと、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算ステップと、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信ステップと、を実行し、前記端末が、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除ステップと、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化ステップと、前記第3のデータ列から第2のメッセージを分離するメッセージ取得ステップと、を実行する通信方法。メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムが実行する通信プログラムであって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部を備え、前記サーバに、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化ステップと、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算ステップと、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信ステップと、を実行させ、前記端末に、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除ステップと、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化ステップと、前記第3のデータ列から第2のメッセージを分離するメッセージ取得ステップと、を実行させるための通信プログラム。ところで、メッセージを送信するサーバと受信する端末との間では、サーバへの負荷集中を抑制するために、端末からサーバへのアップリンクを有さない一方向通信が用いられる場合がある。一方向通信は、例えば、放送ブロードキャスト、マルチキャスト、C2DMCloudtoDeviceMessaging、SMSShortMessageService等のプッシュ型のサービスで用いられる。この一方向通信では、サーバは、送信先である端末を指定してメッセージを送信するが、送信先端末は事前に登録されており、この登録情報に従ってメッセージを送信する。したがって、サーバと端末との間に信頼関係がなくても、サーバに端末が登録済みであれば、メッセージの送受信ができてしまう。すると、例えば、流れているパケットから個人情報が収集されたり、入手されたパケットのコピーが大量送信されたりといった、中間者攻撃を受けるおそれがあった。また、前述の相互認証を用いる場合、認証時に端末からサーバへのアップリンクが必要となるため、一方向通信への適用は難しかった。本発明は、一方向通信において通信相手の正当性を検証できる一方向通信システム、方法及びプログラムを提供することを目的とする。本発明では、以下のような解決手段を提供する。1メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムであって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部と、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化部と、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算部と、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算部と、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信部と、を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部と、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離部と、前記分離部により得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算部と、前記分離部により得られた前記スクランブル値、及び前記端末側ハッシュ演算部により得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除部と、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化部と、前記第3のデータ列から第2のメッセージを分離するメッセージ取得部と、を備える一方向通信システム。このような構成によれば、当該一方向通信システムにおいて、パスワードに基づく第1のハッシュ値と第2のハッシュ値とが等しければ、第2の暗号化メッセージは、第1の暗号化メッセージと等しい。さらに、鍵生成部により共有鍵が正しく生成されれば、第2の暗号化メッセージは正しく復号化され、第3のデータ列は第1のデータ列と等しくなる。したがって、第2のメッセージは第1のメッセージと等しくなり、端末にて正しくメッセージが復元される。すなわち、端末が記憶しているパスワードと等しいパスワードを用いて送信されたパケットについてのみ、メッセージが復元されるので、端末は、一方向通信でありながら、特定のサーバからの送信であることを保証してメッセージを受信できる。また、固有の端末情報を有する正当な端末でのみ、第1のメッセージが復元され、不正な端末では復元されない。したがって、サーバは、一方向通信でありながら、特定の端末の信頼性を保証してメッセージを送信できる。2前記端末は、所定の鍵生成関数を用いて、前記端末情報から前記共有鍵を生成する鍵生成部を備える1に記載の一方向通信システム。このような構成によれば、当該一方向通信システムにおいて、共有鍵は、端末情報から所定の関数を用いて生成される。したがって、端末情報そのものを共有するのに比べて、安全性が向上する。3前記固有データは、乱数を含むデータである1又は2に記載の一方向通信システム。このような構成によれば、当該一方向通信システムにおいて、サーバは、固有データに乱数を含めてメッセージをスクランブル化するので、メッセージの秘匿性を高められる。4前記固有データは、前記端末におけるメッセージの管理コードを含む1から3のいずれか1項に記載の一方向通信システム。このような構成によれば、当該一方向通信システムにおいて、サーバは、固有データに端末におけるメッセージの管理コード、例えばカウンタ値又は時刻情報を含める。しがたって、端末は、この管理コードをリプレイアタック防止用のコードとして用い、受信したメッセージの正当性を確認して不正なメッセージを排除したり、さらに、メッセージの保管量を低減して管理負荷を低減したりできる。5前記サーバ側ハッシュ演算部は、前記第1のデータ列から、前記一方向性ハッシュ関数により第3のハッシュ値を演算し、前記送信部は、前記固有データ、前記サーバID、前記スクランブル値及び前記第3のハッシュ値を連接したパケットを、前記端末へ送信し、前記分離部は、前記パケットから、前記固有データ、前記サーバID、前記スクランブル値及び前記第3のハッシュ値を分離し、前記端末側ハッシュ演算部は、前記復号化部により得られた前記第3のデータ列から、前記一方向性ハッシュ関数により第4のハッシュ値を演算し、前記端末は、前記第3のハッシュ値及び前記第4のハッシュ値が一致するか否かを判定することにより、前記第2のメッセージが前記第1のメッセージと一致するか否かを検証する検証部を備える1から4のいずれか1項に記載の一方向通信システム。このような構成によれば、当該一方向通信システムにおいて、第3のハッシュ値と第4のハッシュ値が等しければ、スクランブル解除と復号化とを経て復元された第2のメッセージがサーバにより送信された第1のメッセージと等しいことが保証され、端末にて正しくメッセージが復元される。すなわち、サーバが記憶しているパスワードに基づく第1のハッシュ値と、端末が記憶しているパスワードに基づく第2のハッシュ値とが等しく、かつ、サーバで記憶されている共有鍵と同一の共有鍵が鍵生成部により正しく生成された場合にのみ、第2のメッセージが復元される。さらに、復元された第2のメッセージが第1のメッセージと同一であることが保証される。一方、不正な端末では、少なくとも同一のメッセージは復元されない。したがって、サーバは、一方向通信でありながら、特定の端末の信頼性を保証して正しいメッセージを送信できる。また、端末が記憶しているパスワードと等しいパスワードを用いて送信されたパケットについてのみ、メッセージが正しく復元されるので、端末は、一方向通信でありながら、特定のサーバからの送信であることを保証してメッセージを受信できる。6前記暗号化部は、前記共有鍵を用いた鍵付きハッシュ関数の値との排他的論理和により、前記第1の暗号化メッセージを生成し、前記復号化部は、前記鍵付きハッシュ関数の値との排他的論理和により、前記第3のデータ列を取得する1から5のいずれか1項に記載の一方向通信システム。このような構成によれば、一方向通信システムは、鍵付きハッシュ関数を用いて、暗号化及び復号化を行うので、メッセージのスクランブル化と同様の処理により容易に実現され、処理負荷が低減される。7メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムにおける通信方法であって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部を備え、前記サーバが、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化ステップと、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算ステップと、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信ステップと、を実行し、前記端末が、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除ステップと、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化ステップと、前記第3のデータ列から第2のメッセージを分離するメッセージ取得ステップと、を実行する通信方法。このような構成によれば、当該通信方法を一方向通信システムが実行することにより、1と同様の効果が期待できる。8メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムが実行する通信プログラムであって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部を備え、前記サーバに、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化ステップと、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算ステップと、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信ステップと、を実行させ、前記端末に、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除ステップと、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化ステップと、前記第3のデータ列から第2のメッセージを分離するメッセージ取得ステップと、を実行させるための通信プログラム。このような構成によれば、当該通信プログラムを一方向通信システムに実行させることにより、1と同様の効果が期待できる。本発明によれば、一方向通信において通信相手の正当性が検証される。<第1実施形態>以下、本発明の第1実施形態について説明する。本実施形態に係る一方向通信システム1は、サーバ10及び端末20を有し、サーバ10から端末20へメッセージを一方向に送信する。図1は、本実施形態に係る一方向通信システム1が有するサーバ10及び端末20の機能構成を示すブロック図である。サーバ10は、制御部11と、記憶部12と、通信部13とを備え、さらに、図示しないが、情報処理装置として動作するために、操作部及び表示部等、各種ハードウェアを備えている。制御部11は、サーバ10の全体を制御する部分であり、記憶部12に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部11は、CPUCentralProcessingUnitであってよい。なお、制御部11が備える各部の機能は後述する。記憶部12は、ハードウェア群をサーバ10として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクHDDであってよい。具体的には、記憶部12には、本実施形態の各種機能を制御部11に実行させるプログラムの他、端末20と共有する共有鍵121、サーバ10の識別情報であるサーバID、及びこのサーバIDに対応するパスワードを記憶する。通信部13は、ネットワークを介して所定のプロトコル例えば、無線通信プロトコルにより、外部装置とデータ通信を行うネットワークアダプタである。通信部13は、端末20との間で通信を確立し、パケットデータを送信する。また、制御部11は、固有データ生成部111と、ハッシュ演算部112サーバ側ハッシュ演算部と、暗号化部113と、スクランブル演算部114と、送信部115とを備える。固有データ生成部111は、メッセージMを送信する度に、所定の桁数からなる乱数R、及び端末20におけるメッセージMの管理コードDを生成する。管理コードは、リプレイアタックを防止するためのコードであり、カウンタ値若しくは時刻情報のいずれか、又は双方であることが好ましい。ハッシュ演算部112は、少なくともパスワード123Wを含むデータ列、具体的には、乱数R、管理コードD及びパスワード123Wからなる第2のデータ列R∥D∥Wから、一方向性ハッシュ関数Hにより第1のハッシュ値H1=HR∥D∥Wを演算する。暗号化部113は、共有鍵121Kを用いて、少なくとも第1のメッセージM1を含むデータ列、具体的には、乱数R、管理コードD及び第1のメッセージM1からなる第1のデータ列R∥D∥M1を暗号化して、第1の暗号化メッセージEncK,R∥D∥M1を生成する。なお、記号∥は、前後の値を連接する二項演算子である。また、Enca,bは、鍵a=Kでb=R∥D∥Mを暗号化する関数である。また、簡易的には、暗号化部113は、共有鍵121及び乱数R1を用いた鍵付きハッシュ関数の値との排他的論理和により、第1の暗号化メッセージを取得してもよいEnca,b=KeyedHasha,R1b=b’。これにより、処理負荷が低減される。スクランブル演算部114は、第1の暗号化メッセージEncK,R∥D∥M1及び第1のハッシュ値HR∥D∥Wの排他的論理和により、スクランブル値EncK,R∥D∥M1HR∥D∥Wを生成する。なお、記号は、前後の値の排他的論理和を計算する二項演算子である。送信部115は、第2のデータ列R∥D∥WからパスワードWを除いた固有データR及びD、サーバID122IDs及びスクランブル値EncK,R∥D∥M1HR∥D∥Wを連接したパケットP=R∥D∥IDs∥EncK,R∥D∥M1HR∥D∥Wを、通信部13を介して端末20へ送信する。端末20は、制御部21と、記憶部22と、通信部23とを備え、さらに、図示しないが、情報処理装置として動作するために、操作部及び表示部等、各種ハードウェアを備えている。制御部21は、端末20の全体を制御する部分であり、記憶部22に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部21は、CPUCentralProcessingUnitであってよい。なお、制御部21が備える各部の機能は後述する。記憶部22は、ハードウェア群を端末20として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクHDDであってよい。具体的には、記憶部22には、本実施形態の各種機能を制御部21に実行させるプログラムの他、サーバ10から受信したメッセージMを、対応する管理コードDと関連付けて記憶する。また、記憶部22は、端末20に固有の識別情報である端末ID221IDmを記憶する。ここで、端末ID221は、所定のハードウェア部品の識別コードとして、ユーザ操作では知り得ない領域にて管理されているものとする。なお、サーバ10と共有される共有鍵121は、この端末ID221に基づいて、後述の鍵生成部214によって生成される。さらに、記憶部22は、サーバID222及びパスワード223を記憶している。なお、サーバID222は、サーバ10のサーバID122と等しく、パスワード223は、サーバ10のパスワード123と等しい。通信部23は、ネットワークを介して所定のプロトコル例えば、無線通信プロトコルにより、外部装置とデータ通信を行うネットワークアダプタである。通信部23は、サーバ10との間で通信を確立し、パケットデータを受信する。また、制御部21は、分離部211と、ハッシュ演算部212端末側ハッシュ演算部と、スクランブル解除部213と、鍵生成部214と、復号化部215と、メッセージ取得部216とを備える。分離部211は、サーバ10から通信部23を介して受信したパケットPから、固有データR及びD、サーバID122IDs及び前記スクランブル値EncK,R∥D∥M1HR∥D∥Wを分離する。ハッシュ演算部212は、分離部211により得られた固有データR及びD、及び記憶部22に記憶されているパスワード223Wからなる第2のデータ列R∥D∥Wから、一方向性ハッシュ関数Hにより第2のハッシュ値H2=HR∥D∥Wを演算する。スクランブル解除部213は、分離部211により得られたスクランブル値EncK,R∥D∥M1HR∥D∥W、及びハッシュ演算部212により得られた第2のハッシュ値HR∥D∥Wの排他的論理和により、第2の暗号化メッセージEncK,R∥D∥M1HR∥D∥WHR∥D∥W=EncK,R∥D∥M1を取得する。鍵生成部214は、所定の鍵生成関数を用いて、端末ID221IDmから共有鍵Kを生成するK=Key-GenIDm。復号化部215は、端末ID221IDmに基づく共有鍵Kを用いて第2の暗号化メッセージEncK,R∥D∥M1を復号化し、第3のデータ列DecK,EncK,R∥D∥M1=R∥D∥M2を取得する。ここで、正しく復号化されれば、M2=M1である。なお、Deca,b’は、鍵aでb’を復号化する関数であり、Enca,bと対になる。また、暗号化部113により、鍵付きハッシュ関数が用いられた場合、復号化部215は、同様に、鍵付きハッシュ関数の値との排他的論理和により第2の暗号化メッセージを復号化して第3のデータ列を取得するDeca,b’=b’KeyedHasha,R1=b。これにより、処理負荷が低減される。メッセージ取得部216は、第3のデータ列R∥D∥M2から第2のメッセージM2を分離する。ここで、パスワード123に基づく第1のハッシュ値と、パスワード223に基づく第2のハッシュ値とが等しければ、スクランブル解除部213により得られる第2の暗号化メッセージは、サーバ10で生成された第1の暗号化メッセージと等しい。さらに、鍵生成部214により共有鍵Kが正しく生成されれば、第2の暗号化メッセージは正しく復号化され、第3のデータ列は第1のデータ列と等しくなる。したがって、M2=M1となり、端末20にて正しくメッセージが復元される。すなわち、端末20が記憶しているパスワード223Wと等しいパスワード123を用いて送信されたパケットについてのみ、メッセージが復元されるので、端末20は、一方向通信でありながら、特定のサーバ10からの送信であることを保証してメッセージを受信できる。また、端末ID221IDmを有する正当な端末20でのみ、第1のメッセージM1が復元され、不正な端末では復元されない。したがって、サーバ10は、一方向通信でありながら、特定の端末20の信頼性を保証してメッセージを送信できる。また、制御部21は、メッセージ取得部216により得られたメッセージを、分離部211により得られた管理コードDと関連付けて記憶部22に記憶する。このとき、管理コードDがカウンタ値である場合、同一のカウンタ値が既に記憶されていれば、制御部21は、得られたメッセージが不正なものとして排除できる。なお、メッセージの数又は容量が所定数を超える場合、古いメッセージから順に削除されることとしてよい。また、管理コードDが有効期限を示す時刻情報である場合、制御部21は、有効期限までのメッセージのみを記憶部22に記憶し、有効期限が切れたメッセージは削除されることとしてよい。図2は、本実施形態に係る一方向通信システム1において、サーバ10から端末20へメッセージを送信する処理を示すシーケンス図である。まず、事前準備として、ステップS1において、端末20の端末ID221IDmから鍵生成部214により生成される共有鍵121K=Key-GenIDmがサーバ10に登録される。また、ステップS2において、サーバ10のサーバID122IDs及びパスワード123Wが端末20に、サーバID222及びパスワード223として登録される。なお、事前準備は、ローカル通信やオフライン等、安全な通信チャネルで行われる。これにより、サーバ10と端末20との間で、共有鍵K、サーバIDIDs及びパスワードWが共有される。ステップS11において、サーバ10固有データ生成部111は、乱数R及び管理コードDを生成する。ステップS12において、サーバ10ハッシュ演算部112は、第2のデータ列R∥D∥Wから第1のハッシュ値H1=HR∥D∥Wを算出する。ステップS13において、サーバ10暗号化部113は、第1のデータ列R∥D∥Mを暗号化して、第1の暗号化メッセージEncK,R∥D∥Mを算出する。ステップS14において、サーバ10スクランブル演算部114は、スクランブル値EncK,R∥D∥MH1を算出する。ステップS15において、サーバ10送信部115は、パケットP=R∥D∥IDs∥EncK,R∥D∥MH1を、端末20へ送信する。ステップS16において、端末20分離部211は、ステップS15で受信したパケットPから、乱数R、管理コードD、サーバID122IDs及びスクランブル値EncK,R∥D∥MH1を分離する。ステップS17において、端末20ハッシュ演算部212は、第2のデータ列R∥D∥Wから第2のハッシュ値H2=HR∥D∥Wを算出する。ステップS18において、端末20スクランブル解除部213は、ステップS16で取得したスクランブル値EncK,R∥D∥MH1、及びステップS17で取得した第2のハッシュ値H2の排他的論理和EncK,R∥D∥MH1H2により、第2の暗号化メッセージEncK,R∥D∥Mを取得する。ステップS19において、端末20鍵生成部214は、端末ID221IDmから共有鍵K=Key-GenIDmを生成する。ステップS20において、端末20復号化部215は、第2の暗号化メッセージを復号化しDecK,EncK,R∥D∥M、第3のデータ列R∥D∥Mを算出する。ステップS21において、端末20メッセージ取得部216は、ステップS20で取得した第3のデータ列R∥D∥Mから、第2のメッセージMを分離する。<第2実施形態>以下、本発明の第2実施形態について説明する。本実施形態は、第1実施形態のパケットPを、より厳密に確認するための構成である。なお、第1実施形態と同様の構成に対しては、同一の符号を付し、説明を省略又は簡略化する。図3は、本実施形態に係る一方向通信システム1aが有するサーバ10a及び端末20aの機能構成を示すブロック図である。一方向通信システム1aは、第1実施形態と比べて、制御部11aのハッシュ演算部112a及び送信部115aの機能、並びに制御部21aの分離部211a及びハッシュ演算部212aの機能が異なり、さらに、端末20aの制御部21aは、検証部217を備える。ハッシュ演算部112aは、第1のハッシュ値HR∥D∥Wを演算すると共に、固有データR及びD及び第1のメッセージM1を連接した第1のデータ列R∥D∥M1から、一方向性ハッシュ関数Hにより第3のハッシュ値H3=HR∥D∥M1を演算する。送信部115aは、固有データR及びD、サーバID122IDs、スクランブル値EncK,R∥D∥M1HR∥D∥W及び第3のハッシュ値HR∥D∥M1を連接したパケットP=R∥D∥IDs∥EncK,R∥D∥M1HR∥D∥W∥HR∥D∥M1を、通信部13を介して端末20aへ送信する。分離部211aは、サーバ10aから通信部23を介して受信したパケットPから、固有データR及びD、サーバID122IDs、スクランブル値EncK,R∥D∥M1HR∥D∥W及び第3のハッシュ値HR∥D∥M1を分離する。ハッシュ演算部212aは、第2のハッシュ値HR∥D∥Wを演算すると共に、復号化部215により得られた第3のデータ列R∥D∥M2から、一方向性ハッシュ関数Hにより第4のハッシュ値H4=HR∥D∥M2を演算する。検証部217は、第3のハッシュ値HR∥D∥M1及び第4のハッシュ値HR∥D∥M2が一致するか否かを判定することにより、第2のメッセージM2が第1のメッセージM1と一致するか否かを検証する。ここで、第3のハッシュ値と第4のハッシュ値が等しければ、スクランブル解除と復号化とを経て復元された第2のメッセージM2がサーバ10により送信された第1のメッセージM1と等しいことが保証され、端末20aにて正しくメッセージが復元される。すなわち、サーバ10aのパスワード123に基づく第1のハッシュ値と、端末20aのパスワード223に基づく第2のハッシュ値とが等しく、かつ、サーバ10aで記憶されている共有鍵121と同一の共有鍵Kが鍵生成部214により正しく生成された場合にのみ、第2のメッセージM2が復元される。さらに、復元された第2のメッセージM2が第1のメッセージM1と同一であることが保証される。一方、不正な端末では、少なくとも同一のメッセージは復元されない。したがって、サーバ10aは、一方向通信でありながら、特定の端末20aの信頼性を保証して正しいメッセージを送信できる。また、端末20aが記憶しているパスワード223Wと等しいパスワード123を用いて送信されたパケットについてのみ、メッセージが正しく復元されるので、端末20aは、一方向通信でありながら、特定のサーバ10aからの送信であることを保証してメッセージを受信できる。図4は、本実施形態に係る一方向通信システム1aにおいて、サーバ10aから端末20aへメッセージを送信する処理を示すシーケンス図である。まず、事前準備として、第1実施形態と同様に、ステップS1及びステップS2において、共有鍵K、サーバIDIDs及びパスワードWがサーバ10aと端末20aとの間で共有される。ステップS31において、サーバ10a固有データ生成部111は、乱数R及び管理コードDを生成する。ステップS32において、サーバ10aハッシュ演算部112aは、第2のデータ列R∥D∥Wから第1のハッシュ値H1=HR∥D∥Wを算出する。ステップS33において、サーバ10a暗号化部113は、第1のデータ列R∥D∥Mを暗号化して、第1の暗号化メッセージEncK,R∥D∥Mを算出する。ステップS34において、サーバ10aスクランブル演算部114は、スクランブル値EncK,R∥D∥MH1を算出する。ステップS35において、サーバ10aハッシュ演算部112aは、第3のハッシュ値H3=HR∥D∥Mを算出する。ステップS36において、サーバ10a送信部115aは、パケットP=R∥D∥IDs∥EncK,R∥D∥MH1∥H3を、端末20aへ送信する。ステップS37において、端末20a分離部211aは、ステップS36で受信したパケットPから、乱数R、管理コードD、サーバID122IDs、スクランブル値EncK,R∥D∥MH1及び第3のハッシュ値H3を分離する。ステップS38において、端末20aハッシュ演算部212aは、第2のデータ列R∥D∥Wから第2のハッシュ値H2=HR∥D∥Wを算出する。ステップS39において、端末20aスクランブル解除部213は、ステップS37で取得したスクランブル値EncK,R∥D∥MH1、及びステップS38で取得した第2のハッシュ値H2の排他的論理和EncK,R∥D∥MH1H2により、第2の暗号化メッセージEncK,R∥D∥Mを取得する。ステップS40において、端末20a鍵生成部214は、端末ID221IDmから共有鍵K=Key-GenIDmを生成する。ステップS41において、端末20a復号化部215は、第2の暗号化メッセージを復号化しDecK,EncK,R∥D∥M、第3のデータ列R∥D∥Mを算出する。ステップS42において、端末20aハッシュ演算部212aは、ステップS41で取得した第3のデータ列R∥D∥Mを用いて、第4のハッシュ値H4=HR∥D∥Mを算出する。ステップS43において、端末20a検証部217は、ステップS37で取得した第3のハッシュ値H3と、ステップS42で算出した第4のハッシュ値H4とが一致するか否かを検証する。ステップS44において、端末20aメッセージ取得部216は、ステップS41で取得した第3のデータ列R∥D∥Mから、第2のメッセージMを分離する。以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。前述のサーバ10及び端末20は、メッセージを送受信する装置の一例であり、サーバ装置、PCPersonalComputer又は携帯端末等、様々な情報処理装置コンピュータであってよく、前述の各機能は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、上記情報処理装置にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。また、送信側の装置サーバ10と受信側の装置端末20とで共有される共有鍵を生成するための受信側の装置に固有の端末情報は、端末ID221のほか、端末20の利用者のユーザID又は指紋データ等、様々なデータが利用可能である。"