説明

一方向通信システム、方法及びプログラム

【課題】一方向通信において通信相手の正当性を検証できる一方向通信システム、方法及びプログラムを提供すること。
【解決手段】サーバ10は、共有鍵を用いて、第1のメッセージを含む第1のデータ列から第1の暗号化メッセージを生成し、パスワードを含む第2のデータ列から第1のハッシュ値を演算し、第1の暗号化メッセージ及び第1のハッシュ値からスクランブル値を生成し、第2のデータ列からパスワードを除いた固有データ、サーバID及びスクランブル値を連接したパケットを端末20へ送信する。端末20は、パケットから、固有データ、サーバID及びスクランブル値を分離し、第2のデータ列から第2のハッシュ値を演算し、スクランブル値及び第2のハッシュ値から第2の暗号化メッセージを取得し、共有鍵を用いて第2の暗号化メッセージを復号化して第3のデータ列を取得し、第3のデータ列から第2のメッセージを分離する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバから端末へメッセージを送信する一方向通信システム、方法及びプログラムに関する。
【背景技術】
【0002】
従来、データを送信するサーバと受信する端末との間では、データ通信の信頼性を確保するために、相互認証が行われることが多い。すなわち、端末に向けてメッセージを送信するサーバは、送信先が特定の端末であることを認証した上でメッセージを送信し、メッセージを受信する端末は、送信元が特定のサーバであることを認証した上でメッセージを受信する。
【0003】
この相互認証には、通信を行う装置や通信種別に応じて、様々な方法が提案されている(例えば、特許文献1、2及び3参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11−306296号公報
【特許文献2】特開平8−130536号公報
【特許文献3】再表2008/044298号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、メッセージを送信するサーバと受信する端末との間では、サーバへの負荷集中を抑制するために、端末からサーバへのアップリンクを有さない一方向通信が用いられる場合がある。一方向通信は、例えば、放送(ブロードキャスト)、マルチキャスト、C2DM(Cloud to Device Messaging)、SMS(Short Message Service)等のプッシュ型のサービスで用いられる。
【0006】
この一方向通信では、サーバは、送信先である端末を指定してメッセージを送信するが、送信先端末は事前に登録されており、この登録情報に従ってメッセージを送信する。したがって、サーバと端末との間に信頼関係がなくても、サーバに端末が登録済みであれば、メッセージの送受信ができてしまう。すると、例えば、流れているパケットから個人情報が収集されたり、入手されたパケットのコピーが大量送信されたりといった、中間者攻撃を受けるおそれがあった。
【0007】
また、前述の相互認証を用いる場合、認証時に端末からサーバへのアップリンクが必要となるため、一方向通信への適用は難しかった。
【0008】
本発明は、一方向通信において通信相手の正当性を検証できる一方向通信システム、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明では、以下のような解決手段を提供する。
【0010】
(1)メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムであって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部と、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化部と、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算部と、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算部と、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信部と、を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部と、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離部と、前記分離部により得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算部と、前記分離部により得られた前記スクランブル値、及び前記端末側ハッシュ演算部により得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除部と、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化部と、前記第3のデータ列から第2のメッセージを分離するメッセージ取得部と、を備える一方向通信システム。
【0011】
このような構成によれば、当該一方向通信システムにおいて、パスワードに基づく第1のハッシュ値と第2のハッシュ値とが等しければ、第2の暗号化メッセージは、第1の暗号化メッセージと等しい。さらに、鍵生成部により共有鍵が正しく生成されれば、第2の暗号化メッセージは正しく復号化され、第3のデータ列は第1のデータ列と等しくなる。したがって、第2のメッセージは第1のメッセージと等しくなり、端末にて正しくメッセージが復元される。
【0012】
すなわち、端末が記憶しているパスワードと等しいパスワードを用いて送信されたパケットについてのみ、メッセージが復元されるので、端末は、一方向通信でありながら、特定のサーバからの送信であることを保証してメッセージを受信できる。
【0013】
また、固有の端末情報を有する正当な端末でのみ、第1のメッセージが復元され、不正な端末では復元されない。したがって、サーバは、一方向通信でありながら、特定の端末の信頼性を保証してメッセージを送信できる。
【0014】
(2)前記端末は、所定の鍵生成関数を用いて、前記端末情報から前記共有鍵を生成する鍵生成部を備える(1)に記載の一方向通信システム。
【0015】
このような構成によれば、当該一方向通信システムにおいて、共有鍵は、端末情報から所定の関数を用いて生成される。したがって、端末情報そのものを共有するのに比べて、安全性が向上する。
【0016】
(3)前記固有データは、乱数を含むデータである(1)又は(2)に記載の一方向通信システム。
【0017】
このような構成によれば、当該一方向通信システムにおいて、サーバは、固有データに乱数を含めてメッセージをスクランブル化するので、メッセージの秘匿性を高められる。
【0018】
(4)前記固有データは、前記端末におけるメッセージの管理コードを含む(1)から(3)のいずれか1項に記載の一方向通信システム。
【0019】
このような構成によれば、当該一方向通信システムにおいて、サーバは、固有データに端末におけるメッセージの管理コード、例えばカウンタ値又は時刻情報を含める。しがたって、端末は、この管理コードをリプレイアタック防止用のコードとして用い、受信したメッセージの正当性を確認して不正なメッセージを排除したり、さらに、メッセージの保管量を低減して管理負荷を低減したりできる。
【0020】
(5)前記サーバ側ハッシュ演算部は、前記第1のデータ列から、前記一方向性ハッシュ関数により第3のハッシュ値を演算し、前記送信部は、前記固有データ、前記サーバID、前記スクランブル値及び前記第3のハッシュ値を連接したパケットを、前記端末へ送信し、前記分離部は、前記パケットから、前記固有データ、前記サーバID、前記スクランブル値及び前記第3のハッシュ値を分離し、前記端末側ハッシュ演算部は、前記復号化部により得られた前記第3のデータ列から、前記一方向性ハッシュ関数により第4のハッシュ値を演算し、前記端末は、前記第3のハッシュ値及び前記第4のハッシュ値が一致するか否かを判定することにより、前記第2のメッセージが前記第1のメッセージと一致するか否かを検証する検証部を備える(1)から(4)のいずれか1項に記載の一方向通信システム。
【0021】
このような構成によれば、当該一方向通信システムにおいて、第3のハッシュ値と第4のハッシュ値が等しければ、スクランブル解除と復号化とを経て復元された第2のメッセージがサーバにより送信された第1のメッセージと等しいことが保証され、端末にて正しくメッセージが復元される。
【0022】
すなわち、サーバが記憶しているパスワードに基づく第1のハッシュ値と、端末が記憶しているパスワードに基づく第2のハッシュ値とが等しく、かつ、サーバで記憶されている共有鍵と同一の共有鍵が鍵生成部により正しく生成された場合にのみ、第2のメッセージが復元される。さらに、復元された第2のメッセージが第1のメッセージと同一であることが保証される。一方、不正な端末では、少なくとも同一のメッセージは復元されない。したがって、サーバは、一方向通信でありながら、特定の端末の信頼性を保証して正しいメッセージを送信できる。
【0023】
また、端末が記憶しているパスワードと等しいパスワードを用いて送信されたパケットについてのみ、メッセージが正しく復元されるので、端末は、一方向通信でありながら、特定のサーバからの送信であることを保証してメッセージを受信できる。
【0024】
(6)前記暗号化部は、前記共有鍵を用いた鍵付きハッシュ関数の値との排他的論理和により、前記第1の暗号化メッセージを生成し、前記復号化部は、前記鍵付きハッシュ関数の値との排他的論理和により、前記第3のデータ列を取得する(1)から(5)のいずれか1項に記載の一方向通信システム。
【0025】
このような構成によれば、一方向通信システムは、鍵付きハッシュ関数を用いて、暗号化及び復号化を行うので、メッセージのスクランブル化と同様の処理により容易に実現され、処理負荷が低減される。
【0026】
(7)メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムにおける通信方法であって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部を備え、前記サーバが、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化ステップと、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算ステップと、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信ステップと、を実行し、前記端末が、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除ステップと、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化ステップと、前記第3のデータ列から第2のメッセージを分離するメッセージ取得ステップと、を実行する通信方法。
【0027】
このような構成によれば、当該通信方法を一方向通信システムが実行することにより、(1)と同様の効果が期待できる。
【0028】
(8)メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムが実行する通信プログラムであって、前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部を備え、前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部を備え、前記サーバに、前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化ステップと、少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算ステップと、前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信ステップと、を実行させ、前記端末に、前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除ステップと、前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化ステップと、前記第3のデータ列から第2のメッセージを分離するメッセージ取得ステップと、を実行させるための通信プログラム。
【0029】
このような構成によれば、当該通信プログラムを一方向通信システムに実行させることにより、(1)と同様の効果が期待できる。
【発明の効果】
【0030】
本発明によれば、一方向通信において通信相手の正当性が検証される。
【図面の簡単な説明】
【0031】
【図1】第1実施形態に係る一方向通信システムの機能構成を示すブロック図である。
【図2】第1実施形態に係るメッセージを送信する処理を示すシーケンス図である。
【図3】第2実施形態に係る一方向通信システムの機能構成を示すブロック図である。
【図4】第2実施形態に係るメッセージを送信する処理を示すシーケンス図である。
【発明を実施するための形態】
【0032】
<第1実施形態>
以下、本発明の第1実施形態について説明する。
本実施形態に係る一方向通信システム1は、サーバ10及び端末20を有し、サーバ10から端末20へメッセージを一方向に送信する。
【0033】
図1は、本実施形態に係る一方向通信システム1が有するサーバ10及び端末20の機能構成を示すブロック図である。
【0034】
サーバ10は、制御部11と、記憶部12と、通信部13とを備え、さらに、図示しないが、情報処理装置として動作するために、操作部及び表示部等、各種ハードウェアを備えている。
【0035】
制御部11は、サーバ10の全体を制御する部分であり、記憶部12に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部11は、CPU(Central Processing Unit)であってよい。なお、制御部11が備える各部の機能は後述する。
【0036】
記憶部12は、ハードウェア群をサーバ10として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)であってよい。具体的には、記憶部12には、本実施形態の各種機能を制御部11に実行させるプログラムの他、端末20と共有する共有鍵121、サーバ10の識別情報であるサーバID、及びこのサーバIDに対応するパスワードを記憶する。
【0037】
通信部13は、ネットワークを介して所定のプロトコル(例えば、無線通信プロトコル)により、外部装置とデータ通信を行うネットワーク・アダプタである。通信部13は、端末20との間で通信を確立し、パケットデータを送信する。
【0038】
また、制御部11は、固有データ生成部111と、ハッシュ演算部112(サーバ側ハッシュ演算部)と、暗号化部113と、スクランブル演算部114と、送信部115とを備える。
【0039】
固有データ生成部111は、メッセージ(M)を送信する度に、所定の桁数からなる乱数(R)、及び端末20におけるメッセージ(M)の管理コード(D)を生成する。管理コードは、リプレイアタックを防止するためのコードであり、カウンタ値若しくは時刻情報のいずれか、又は双方であることが好ましい。
【0040】
ハッシュ演算部112は、少なくともパスワード123(W)を含むデータ列、具体的には、乱数(R)、管理コード(D)及びパスワード123(W)からなる第2のデータ列(R‖D‖W)から、一方向性ハッシュ関数(H)により第1のハッシュ値(H1=H(R‖D‖W))を演算する。
【0041】
暗号化部113は、共有鍵121(K)を用いて、少なくとも第1のメッセージ(M1)を含むデータ列、具体的には、乱数(R)、管理コード(D)及び第1のメッセージ(M1)からなる第1のデータ列(R‖D‖M1)を暗号化して、第1の暗号化メッセージ(Enc(K,R‖D‖M1))を生成する。
なお、記号「‖」は、前後の値を連接する二項演算子である。
また、「Enc(a,b)」は、鍵a(=K)でb(=R‖D‖M)を暗号化する関数である。
【0042】
また、簡易的には、暗号化部113は、共有鍵121及び乱数R1を用いた鍵付きハッシュ関数の値との排他的論理和により、第1の暗号化メッセージを取得してもよい(Enc(a,b)=KeyedHash(a,R1)+b=b’)。これにより、処理負荷が低減される。
【0043】
スクランブル演算部114は、第1の暗号化メッセージ(Enc(K,R‖D‖M1))及び第1のハッシュ値(H(R‖D‖W))の排他的論理和により、スクランブル値(Enc(K,R‖D‖M1)+H(R‖D‖W))を生成する。
なお、記号「+」は、前後の値の排他的論理和を計算する二項演算子である。
【0044】
送信部115は、第2のデータ列(R‖D‖W)からパスワード(W)を除いた固有データ(R及びD)、サーバID122(IDs)及びスクランブル値(Enc(K,R‖D‖M1)+H(R‖D‖W))を連接したパケット(P=R‖D‖IDs‖(Enc(K,R‖D‖M1)+H(R‖D‖W)))を、通信部13を介して端末20へ送信する。
【0045】
端末20は、制御部21と、記憶部22と、通信部23とを備え、さらに、図示しないが、情報処理装置として動作するために、操作部及び表示部等、各種ハードウェアを備えている。
【0046】
制御部21は、端末20の全体を制御する部分であり、記憶部22に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部21は、CPU(Central Processing Unit)であってよい。なお、制御部21が備える各部の機能は後述する。
【0047】
記憶部22は、ハードウェア群を端末20として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)であってよい。具体的には、記憶部22には、本実施形態の各種機能を制御部21に実行させるプログラムの他、サーバ10から受信したメッセージ(M)を、対応する管理コード(D)と関連付けて記憶する。
【0048】
また、記憶部22は、端末20に固有の識別情報である端末ID221(IDm)を記憶する。ここで、端末ID221は、所定のハードウェア部品の識別コードとして、ユーザ操作では知り得ない領域にて管理されているものとする。なお、サーバ10と共有される共有鍵121は、この端末ID221に基づいて、後述の鍵生成部214によって生成される。
さらに、記憶部22は、サーバID222及びパスワード223を記憶している。なお、サーバID222は、サーバ10のサーバID122と等しく、パスワード223は、サーバ10のパスワード123と等しい。
【0049】
通信部23は、ネットワークを介して所定のプロトコル(例えば、無線通信プロトコル)により、外部装置とデータ通信を行うネットワーク・アダプタである。通信部23は、サーバ10との間で通信を確立し、パケットデータを受信する。
【0050】
また、制御部21は、分離部211と、ハッシュ演算部212(端末側ハッシュ演算部)と、スクランブル解除部213と、鍵生成部214と、復号化部215と、メッセージ取得部216とを備える。
【0051】
分離部211は、サーバ10から通信部23を介して受信したパケット(P)から、固有データ(R及びD)、サーバID122(IDs)及び前記スクランブル値(Enc(K,R‖D‖M1)+H(R‖D‖W))を分離する。
【0052】
ハッシュ演算部212は、分離部211により得られた固有データ(R及びD)、及び記憶部22に記憶されているパスワード223(W)からなる第2のデータ列(R‖D‖W)から、一方向性ハッシュ関数(H)により第2のハッシュ値(H2=H(R‖D‖W))を演算する。
【0053】
スクランブル解除部213は、分離部211により得られたスクランブル値(Enc(K,R‖D‖M1)+H(R‖D‖W))、及びハッシュ演算部212により得られた第2のハッシュ値(H(R‖D‖W))の排他的論理和により、第2の暗号化メッセージ(Enc(K,R‖D‖M1)+H(R‖D‖W)+H(R‖D‖W)=Enc(K,R‖D‖M1))を取得する。
【0054】
鍵生成部214は、所定の鍵生成関数を用いて、端末ID221(IDm)から共有鍵(K)を生成する(K=Key−Gen(IDm))。
【0055】
復号化部215は、端末ID221(IDm)に基づく共有鍵(K)を用いて第2の暗号化メッセージ(Enc(K,R‖D‖M1))を復号化し、第3のデータ列(Dec(K,Enc(K,R‖D‖M1))=R‖D‖M2)を取得する。ここで、正しく復号化されれば、「M2=M1」である。
なお、「Dec(a,b’)」は、鍵aでb’を復号化する関数であり、「Enc(a,b)」と対になる。
【0056】
また、暗号化部113により、鍵付きハッシュ関数が用いられた場合、復号化部215は、同様に、鍵付きハッシュ関数の値との排他的論理和により第2の暗号化メッセージを復号化して第3のデータ列を取得する(Dec(a,b’)=b’+KeyedHash(a,R1)=b)。これにより、処理負荷が低減される。
【0057】
メッセージ取得部216は、第3のデータ列(R‖D‖M2)から第2のメッセージ(M2)を分離する。
【0058】
ここで、パスワード123に基づく第1のハッシュ値と、パスワード223に基づく第2のハッシュ値とが等しければ、スクランブル解除部213により得られる第2の暗号化メッセージは、サーバ10で生成された第1の暗号化メッセージと等しい。さらに、鍵生成部214により共有鍵(K)が正しく生成されれば、第2の暗号化メッセージは正しく復号化され、第3のデータ列は第1のデータ列と等しくなる。したがって、「M2=M1」となり、端末20にて正しくメッセージが復元される。
【0059】
すなわち、端末20が記憶しているパスワード223(W)と等しいパスワード123を用いて送信されたパケットについてのみ、メッセージが復元されるので、端末20は、一方向通信でありながら、特定のサーバ10からの送信であることを保証してメッセージを受信できる。
また、端末ID221(IDm)を有する正当な端末20でのみ、第1のメッセージ(M1)が復元され、不正な端末では復元されない。したがって、サーバ10は、一方向通信でありながら、特定の端末20の信頼性を保証してメッセージを送信できる。
【0060】
また、制御部21は、メッセージ取得部216により得られたメッセージを、分離部211により得られた管理コード(D)と関連付けて記憶部22に記憶する。
【0061】
このとき、管理コード(D)がカウンタ値である場合、同一のカウンタ値が既に記憶されていれば、制御部21は、得られたメッセージが不正なものとして排除できる。なお、メッセージの数又は容量が所定数を超える場合、古いメッセージから順に削除されることとしてよい。
また、管理コード(D)が有効期限を示す時刻情報である場合、制御部21は、有効期限までのメッセージのみを記憶部22に記憶し、有効期限が切れたメッセージは削除されることとしてよい。
【0062】
図2は、本実施形態に係る一方向通信システム1において、サーバ10から端末20へメッセージを送信する処理を示すシーケンス図である。
【0063】
まず、事前準備として、ステップS1において、端末20の端末ID221(IDm)から鍵生成部214により生成される共有鍵121(K=Key−Gen(IDm))がサーバ10に登録される。
また、ステップS2において、サーバ10のサーバID122(IDs)及びパスワード123(W)が端末20に、サーバID222及びパスワード223として登録される。
なお、事前準備は、ローカル通信やオフライン等、安全な通信(チャネル)で行われる。これにより、サーバ10と端末20との間で、共有鍵(K)、サーバID(IDs)及びパスワード(W)が共有される。
【0064】
ステップS11において、サーバ10(固有データ生成部111)は、乱数(R)及び管理コード(D)を生成する。
【0065】
ステップS12において、サーバ10(ハッシュ演算部112)は、第2のデータ列(R‖D‖W)から第1のハッシュ値(H1=H(R‖D‖W))を算出する。
【0066】
ステップS13において、サーバ10(暗号化部113)は、第1のデータ列(R‖D‖M)を暗号化して、第1の暗号化メッセージ(Enc(K,R‖D‖M))を算出する。
【0067】
ステップS14において、サーバ10(スクランブル演算部114)は、スクランブル値(Enc(K,R‖D‖M)+H1)を算出する。
【0068】
ステップS15において、サーバ10(送信部115)は、パケット(P=R‖D‖IDs‖(Enc(K,R‖D‖M)+H1))を、端末20へ送信する。
【0069】
ステップS16において、端末20(分離部211)は、ステップS15で受信したパケット(P)から、乱数(R)、管理コード(D)、サーバID122(IDs)及びスクランブル値(Enc(K,R‖D‖M)+H1)を分離する。
【0070】
ステップS17において、端末20(ハッシュ演算部212)は、第2のデータ列(R‖D‖W)から第2のハッシュ値(H2=H(R‖D‖W))を算出する。
【0071】
ステップS18において、端末20(スクランブル解除部213)は、ステップS16で取得したスクランブル値(Enc(K,R‖D‖M)+H1)、及びステップS17で取得した第2のハッシュ値(H2)の排他的論理和(Enc(K,R‖D‖M)+H1+H2)により、第2の暗号化メッセージ(Enc(K,R‖D‖M))を取得する。
【0072】
ステップS19において、端末20(鍵生成部214)は、端末ID221(IDm)から共有鍵(K=Key−Gen(IDm))を生成する。
【0073】
ステップS20において、端末20(復号化部215)は、第2の暗号化メッセージを復号化し(Dec(K,Enc(K,R‖D‖M)))、第3のデータ列(R‖D‖M)を算出する。
【0074】
ステップS21において、端末20(メッセージ取得部216)は、ステップS20で取得した第3のデータ列(R‖D‖M)から、第2のメッセージ(M)を分離する。
【0075】
<第2実施形態>
以下、本発明の第2実施形態について説明する。
本実施形態は、第1実施形態のパケット(P)を、より厳密に確認するための構成である。なお、第1実施形態と同様の構成に対しては、同一の符号を付し、説明を省略又は簡略化する。
【0076】
図3は、本実施形態に係る一方向通信システム1aが有するサーバ10a及び端末20aの機能構成を示すブロック図である。
一方向通信システム1aは、第1実施形態と比べて、制御部11aのハッシュ演算部112a及び送信部115aの機能、並びに制御部21aの分離部211a及びハッシュ演算部212aの機能が異なり、さらに、端末20aの制御部21aは、検証部217を備える。
【0077】
ハッシュ演算部112aは、第1のハッシュ値(H(R‖D‖W))を演算すると共に、固有データ(R及びD)及び第1のメッセージ(M1)を連接した第1のデータ列(R‖D‖M1)から、一方向性ハッシュ関数(H)により第3のハッシュ値(H3=H(R‖D‖M1))を演算する。
【0078】
送信部115aは、固有データ(R及びD)、サーバID122(IDs)、スクランブル値(Enc(K,R‖D‖M1)+H(R‖D‖W))及び第3のハッシュ値(H(R‖D‖M1))を連接したパケット(P=R‖D‖IDs‖(Enc(K,R‖D‖M1)+H(R‖D‖W))‖H(R‖D‖M1))を、通信部13を介して端末20aへ送信する。
【0079】
分離部211aは、サーバ10aから通信部23を介して受信したパケット(P)から、固有データ(R及びD)、サーバID122(IDs)、スクランブル値(Enc(K,R‖D‖M1)+H(R‖D‖W))及び第3のハッシュ値(H(R‖D‖M1))を分離する。
【0080】
ハッシュ演算部212aは、第2のハッシュ値(H(R‖D‖W))を演算すると共に、復号化部215により得られた第3のデータ列(R‖D‖M2)から、一方向性ハッシュ関数(H)により第4のハッシュ値(H4=H(R‖D‖M2))を演算する。
【0081】
検証部217は、第3のハッシュ値(H(R‖D‖M1))及び第4のハッシュ値(H(R‖D‖M2))が一致するか否かを判定することにより、第2のメッセージ(M2)が第1のメッセージ(M1)と一致するか否かを検証する。
【0082】
ここで、第3のハッシュ値と第4のハッシュ値が等しければ、スクランブル解除と復号化とを経て復元された第2のメッセージ(M2)がサーバ10により送信された第1のメッセージ(M1)と等しいことが保証され、端末20aにて正しくメッセージが復元される。
【0083】
すなわち、サーバ10aのパスワード123に基づく第1のハッシュ値と、端末20aのパスワード223に基づく第2のハッシュ値とが等しく、かつ、サーバ10aで記憶されている共有鍵121と同一の共有鍵(K)が鍵生成部214により正しく生成された場合にのみ、第2のメッセージ(M2)が復元される。さらに、復元された第2のメッセージ(M2)が第1のメッセージ(M1)と同一であることが保証される。一方、不正な端末では、少なくとも同一のメッセージは復元されない。したがって、サーバ10aは、一方向通信でありながら、特定の端末20aの信頼性を保証して正しいメッセージを送信できる。
【0084】
また、端末20aが記憶しているパスワード223(W)と等しいパスワード123を用いて送信されたパケットについてのみ、メッセージが正しく復元されるので、端末20aは、一方向通信でありながら、特定のサーバ10aからの送信であることを保証してメッセージを受信できる。
【0085】
図4は、本実施形態に係る一方向通信システム1aにおいて、サーバ10aから端末20aへメッセージを送信する処理を示すシーケンス図である。
【0086】
まず、事前準備として、第1実施形態と同様に、ステップS1及びステップS2において、共有鍵(K)、サーバID(IDs)及びパスワード(W)がサーバ10aと端末20aとの間で共有される。
【0087】
ステップS31において、サーバ10a(固有データ生成部111)は、乱数(R)及び管理コード(D)を生成する。
【0088】
ステップS32において、サーバ10a(ハッシュ演算部112a)は、第2のデータ列(R‖D‖W)から第1のハッシュ値(H1=H(R‖D‖W))を算出する。
【0089】
ステップS33において、サーバ10a(暗号化部113)は、第1のデータ列(R‖D‖M)を暗号化して、第1の暗号化メッセージ(Enc(K,R‖D‖M))を算出する。
【0090】
ステップS34において、サーバ10a(スクランブル演算部114)は、スクランブル値(Enc(K,R‖D‖M)+H1)を算出する。
【0091】
ステップS35において、サーバ10a(ハッシュ演算部112a)は、第3のハッシュ値(H3=H(R‖D‖M))を算出する。
【0092】
ステップS36において、サーバ10a(送信部115a)は、パケット(P=R‖D‖IDs‖(Enc(K,R‖D‖M)+H1)‖H3)を、端末20aへ送信する。
【0093】
ステップS37において、端末20a(分離部211a)は、ステップS36で受信したパケット(P)から、乱数(R)、管理コード(D)、サーバID122(IDs)、スクランブル値(Enc(K,R‖D‖M)+H1)及び第3のハッシュ値(H3)を分離する。
【0094】
ステップS38において、端末20a(ハッシュ演算部212a)は、第2のデータ列(R‖D‖W)から第2のハッシュ値(H2=H(R‖D‖W))を算出する。
【0095】
ステップS39において、端末20a(スクランブル解除部213)は、ステップS37で取得したスクランブル値(Enc(K,R‖D‖M)+H1)、及びステップS38で取得した第2のハッシュ値(H2)の排他的論理和(Enc(K,R‖D‖M)+H1+H2)により、第2の暗号化メッセージ(Enc(K,R‖D‖M))を取得する。
【0096】
ステップS40において、端末20a(鍵生成部214)は、端末ID221(IDm)から共有鍵(K=Key−Gen(IDm))を生成する。
【0097】
ステップS41において、端末20a(復号化部215)は、第2の暗号化メッセージを復号化し(Dec(K,Enc(K,R‖D‖M)))、第3のデータ列(R‖D‖M)を算出する。
【0098】
ステップS42において、端末20a(ハッシュ演算部212a)は、ステップS41で取得した第3のデータ列(R‖D‖M)を用いて、第4のハッシュ値(H4=H(R‖D‖M))を算出する。
【0099】
ステップS43において、端末20a(検証部217)は、ステップS37で取得した第3のハッシュ値(H3)と、ステップS42で算出した第4のハッシュ値(H4)とが一致するか否かを検証する。
【0100】
ステップS44において、端末20a(メッセージ取得部216)は、ステップS41で取得した第3のデータ列(R‖D‖M)から、第2のメッセージ(M)を分離する。
【0101】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【0102】
前述のサーバ10及び端末20は、メッセージを送受信する装置の一例であり、サーバ装置、PC(Personal Computer)又は携帯端末等、様々な情報処理装置(コンピュータ)であってよく、前述の各機能は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、上記情報処理装置にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【0103】
また、送信側の装置(サーバ10)と受信側の装置(端末20)とで共有される共有鍵を生成するための受信側の装置に固有の端末情報は、端末ID221のほか、端末20の利用者のユーザID又は指紋データ等、様々なデータが利用可能である。
【符号の説明】
【0104】
1、1a 一方向通信システム
10、10a サーバ
12 記憶部(サーバ側記憶部)
20、20a 端末
22 記憶部(端末側記憶部)
111 固有データ生成部
112、112a ハッシュ演算部(サーバ側ハッシュ演算部)
113 暗号化部
114 スクランブル演算部
115、115a 送信部
211、211a 分離部
212、212a ハッシュ演算部(端末側ハッシュ演算部)
213 スクランブル解除部
214 鍵生成部
215 復号化部
216 メッセージ取得部
217 検証部

【特許請求の範囲】
【請求項1】
メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムであって、
前記サーバは、
前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部と、
前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化部と、
少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算部と、
前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算部と、
前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信部と、を備え、
前記端末は、
前記サーバID及び前記パスワードを記憶する端末側記憶部と、
前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離部と、
前記分離部により得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算部と、
前記分離部により得られた前記スクランブル値、及び前記端末側ハッシュ演算部により得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除部と、
前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化部と、
前記第3のデータ列から第2のメッセージを分離するメッセージ取得部と、を備える一方向通信システム。
【請求項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項に記載の一方向通信システム。
【請求項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のメッセージを分離するメッセージ取得ステップと、を実行する通信方法。
【請求項8】
メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムが実行する通信プログラムであって、
前記サーバは、前記端末に固有の端末情報に基づく共有鍵と、当該サーバを識別するためのサーバID及び当該サーバIDに対応するパスワードとを記憶するサーバ側記憶部を備え、
前記端末は、前記サーバID及び前記パスワードを記憶する端末側記憶部を備え、
前記サーバに、
前記共有鍵を用いて、少なくとも第1のメッセージを含む第1のデータ列を暗号化して、第1の暗号化メッセージを生成する暗号化ステップと、
少なくとも前記パスワードを含む第2のデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、
前記第1の暗号化メッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を生成するスクランブル演算ステップと、
前記第2のデータ列から前記パスワードを除いた固有データ、前記サーバID及び前記スクランブル値を連接したパケットを、前記端末へ送信する送信ステップと、を実行させ、
前記端末に、
前記パケットから、前記固有データ、前記サーバID及び前記スクランブル値を分離する分離ステップと、
前記分離ステップで得られた前記固有データ及び前記パスワードからなる前記第2のデータ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、
前記分離ステップで得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2の暗号化メッセージを取得するスクランブル解除ステップと、
前記端末情報に基づく共有鍵を用いて前記第2の暗号化メッセージを復号化し、第3のデータ列を取得する復号化ステップと、
前記第3のデータ列から第2のメッセージを分離するメッセージ取得ステップと、を実行させるための通信プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2013−42331(P2013−42331A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−177544(P2011−177544)
【出願日】平成23年8月15日(2011.8.15)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】