説明

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

【課題】一方向通信において通信相手の正当性を検証できる一方向通信システム、方法及びプログラムを提供すること。
【解決手段】サーバ10及び端末20は、予め端末IDを共有しており、サーバ10は、端末IDを含むデータ列から第1のハッシュ値を演算するハッシュ演算部112と、第1のメッセージ及び第1のハッシュ値の排他的論理和によりスクランブル値を算出するスクランブル演算部113と、データ列から端末IDを除いた固有データ及びスクランブル値を連接したパケットを端末20へ送信する送信部114と、を備え、端末20は、パケットから固有データ及びスクランブル値を分離する分離部211と、固有データ及び端末IDからなるデータ列から第2のハッシュ値を演算するハッシュ演算部212と、スクランブル値及び第2のハッシュ値の排他的論理和により第2のメッセージを取得するメッセージ取得部213と、を備える。

【発明の詳細な説明】
【技術分野】
【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)メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムであって、前記サーバ及び前記端末は、予め前記端末の識別データを共有しており、前記サーバは、少なくとも前記識別データを含むデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算部と、第1のメッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を算出するスクランブル演算部と、前記データ列から前記識別データを除いた固有データ、及び前記スクランブル値に基づくデータを連接したパケットを、前記端末へ送信する送信部と、を備え、前記端末は、前記パケットから、前記固有データ、及び前記スクランブル値に基づくデータを分離する分離部と、前記分離部により得られた前記固有データ及び前記識別データからなる前記データ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算部と、前記分離部により分離されたデータから得られた前記スクランブル値、及び前記端末側ハッシュ演算部により得られた前記第2のハッシュ値の排他的論理和により、第2のメッセージを取得するメッセージ取得部と、を備える一方向通信システム。
【0011】
このような構成によれば、当該一方向通信システムにおいて、第1のハッシュ値と第2のハッシュ値とが等しい、すなわち、予め共有された識別データが等しい正当な端末でのみ、第1のメッセージと等しい第2のメッセージが復元され、不正な端末では復元されない。したがって、サーバは、一方向通信でありながら、通信相手である端末の正当性を検証し、端末の信頼性を保証してメッセージを送信できる。
【0012】
(2)前記固有データは、乱数を含むデータである(1)に記載の一方向通信システム。
【0013】
このような構成によれば、当該一方向通信システムにおいて、サーバは、固有データに乱数を含めてメッセージをスクランブル化するので、メッセージの秘匿性を高められる。
【0014】
(3)前記固有データは、前記端末におけるメッセージの管理コードを含む(1)又は(2)に記載の一方向通信システム。
【0015】
このような構成によれば、当該一方向通信システムにおいて、サーバは、固有データに端末におけるメッセージの管理コード、例えばカウンタ値又は時刻情報を含める。しがたって、端末は、この管理コードをリプレイアタック防止用のコードとして用い、受信したメッセージの正当性を確認して不正なメッセージを排除したり、さらに、メッセージの保管量を低減して管理負荷を低減したりできる。
【0016】
(4)前記サーバ側ハッシュ演算部は、前記固有データ及び前記第1のメッセージを連接した値から、前記一方向性ハッシュ関数により第3のハッシュ値を演算し、前記送信部は、前記固有データ、前記スクランブル値に基づくデータ及び前記第3のハッシュ値を連接したパケットを、前記端末へ送信し、前記分離部は、前記パケットから、前記固有データ、前記スクランブル値に基づくデータ及び前記第3のハッシュ値を分離し、前記端末側ハッシュ演算部は、前記分離部により得られた前記固有データ及び前記メッセージ取得部により得られた前記第2のメッセージから、前記一方向性ハッシュ関数により第4のハッシュ値を演算し、前記端末は、前記第3のハッシュ値及び前記第4のハッシュ値が一致するか否かを判定することにより、前記第2のメッセージが前記第1のメッセージと一致するか否かを検証する検証部を備える(1)から(3)のいずれか1項に記載の一方向通信システム。
【0017】
このような構成によれば、当該一方向通信システムにおいて、第3のハッシュ値と第4のハッシュ値とが一致すれば、第1のメッセージと第2のメッセージとが同一であることが保証され、端末にて正しくメッセージが復元される。すなわち、識別データが等しい正当な端末でのみ、第2のメッセージが復元され、さらに、復元されたメッセージが第1のメッセージと同一であることが保証される。一方、不正な端末では、少なくとも同一のメッセージは復元されない。したがって、サーバは、一方向通信でありながら、通信相手である端末の正当性を検証し、端末の信頼性を保証して正しいメッセージを送信できる。
【0018】
(5)前記サーバ及び前記端末は、予め秘密鍵を共有しており、前記サーバは、前記秘密鍵を用いて前記スクランブル値を暗号化して、暗号化メッセージを取得する暗号化部を備え、前記送信部は、前記固有データ、及び前記暗号化メッセージを連接したパケットを、前記端末へ送信し、前記分離部は、前記パケットから、前記固有データ、及び前記暗号化メッセージを分離し、前記端末は、前記秘密鍵を用いて前記暗号化メッセージを復号化して、前記スクランブル値を取得する復号化部を備える(1)から(4)のいずれか1項に記載の一方向通信システム。
【0019】
このような構成によれば、当該一方向通信システムにおいて、サーバは、スクランブル値をさらに暗号化して送信するので、メッセージの秘匿性を高めることができる。
【0020】
(6)前記暗号化部は、前記秘密鍵を用いた鍵付きハッシュ関数の値との排他的論理和により、前記暗号化メッセージを取得し、前記復号化部は、前記鍵付きハッシュ関数の値との排他的論理和により、前記スクランブル値を取得する(5)に記載の一方向通信システム。
【0021】
このような構成によれば、当該一方向通信システムは、鍵付きハッシュ関数を用いて、暗号化及び復号化を行うので、メッセージのスクランブル化と同様の処理により容易に実現され、処理負荷が低減される。
【0022】
(7)メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムにおける通信方法であって、前記サーバ及び前記端末は、予め前記端末の識別データを共有しており、前記サーバが、少なくとも前記識別データを含むデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、第1のメッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を算出するスクランブル演算ステップと、前記データ列から前記識別データを除いた固有データ、及び前記スクランブル値に基づくデータを連接したパケットを、前記端末へ送信する送信ステップと、を実行し、前記端末が、前記パケットから、前記固有データ、及び前記スクランブル値に基づくデータを分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記識別データからなる前記データ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで分離されたデータから得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2のメッセージを取得するメッセージ取得ステップと、を実行する通信方法。
【0023】
このような構成によれば、当該通信方法を一方向通信システムが実行することにより、(1)と同様の効果が期待できる。
【0024】
(8)メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムが実行する通信プログラムであって、前記サーバ及び前記端末は、予め前記端末の識別データを共有しており、前記サーバに、少なくとも前記識別データを含むデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、第1のメッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を算出するスクランブル演算ステップと、前記データ列から前記識別データを除いた固有データ、及び前記スクランブル値に基づくデータを連接したパケットを、前記端末へ送信する送信ステップと、を実行させ、前記端末に、前記パケットから、前記固有データ、及び前記スクランブル値に基づくデータを分離する分離ステップと、前記分離ステップで得られた前記固有データ及び前記識別データからなる前記データ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、前記分離ステップで分離されたデータから得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2のメッセージを取得するメッセージ取得ステップと、を実行させるための通信プログラム。
【0025】
このような構成によれば、当該通信プログラムを一方向通信システムに実行させることにより、(1)と同様の効果が期待できる。
【発明の効果】
【0026】
本発明によれば、一方向通信において通信相手の正当性が検証される。
【図面の簡単な説明】
【0027】
【図1】第1実施形態に係る一方向通信システムの機能構成を示すブロック図である。
【図2】第1実施形態に係るメッセージを送信する処理を示すシーケンス図である。
【図3】第2実施形態に係る一方向通信システムの機能構成を示すブロック図である。
【図4】第2実施形態に係るメッセージを送信する処理を示すシーケンス図である。
【図5】第3実施形態に係る一方向通信システムの機能構成を示すブロック図である。
【図6】第3実施形態に係るメッセージを送信する処理を示すシーケンス図である。
【図7】第4実施形態に係る一方向通信システムの機能構成を示すブロック図である。
【図8】第4実施形態に係るメッセージを送信する処理を示すシーケンス図である。
【発明を実施するための形態】
【0028】
<第1実施形態>
以下、本発明の第1実施形態について説明する。
本実施形態に係る一方向通信システム1は、サーバ10及び端末20を有し、サーバ10から端末20へメッセージを一方向に送信する。
【0029】
図1は、本実施形態に係る一方向通信システム1が有するサーバ10及び端末20の機能構成を示すブロック図である。
【0030】
サーバ10は、制御部11と、記憶部12と、通信部13とを備え、さらに、図示しないが、情報処理装置として動作するために、操作部及び表示部等、各種ハードウェアを備えている。
【0031】
制御部11は、サーバ10の全体を制御する部分であり、記憶部12に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部11は、CPU(Central Processing Unit)であってよい。なお、制御部11が備える各部の機能は後述する。
【0032】
記憶部12は、ハードウェア群をサーバ10として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)であってよい。具体的には、記憶部12には、本実施形態の各種機能を制御部11に実行させるプログラムの他、端末20の識別データである端末ID121を記憶する。
【0033】
通信部13は、ネットワークを介して所定のプロトコル(例えば、無線通信プロトコル)により、外部装置とデータ通信を行うネットワーク・アダプタである。通信部13は、端末20との間で通信を確立し、パケットデータを送信する。
【0034】
また、制御部11は、固有データ生成部111と、ハッシュ演算部112(サーバ側ハッシュ演算部)と、スクランブル演算部113と、送信部114とを備える。
【0035】
固有データ生成部111は、メッセージ(M)を送信する度に、所定の桁数からなる乱数(R)、及び端末20におけるメッセージ(M)の管理コード(D)を生成する。管理コードは、リプレイアタックを防止するためのコードであり、カウンタ値若しくは時刻情報のいずれか、又は双方であることが好ましい。
【0036】
ハッシュ演算部112は、少なくとも端末ID121(ID)を含むデータ列、具体的には、乱数(R)、管理コード(D)及び端末IDからなるデータ列(R‖D‖ID)から、一方向性ハッシュ関数(H)により第1のハッシュ値(H1=H(R‖D‖ID))を演算する。
なお、記号「‖」は、前後の値を連接する二項演算子である。
【0037】
スクランブル演算部113は、第1のメッセージ(M1)及び第1のハッシュ値(H(R‖D‖ID))の排他的論理和により、スクランブル値(M1+H(R‖D‖ID))を算出する。
なお、記号「+」は、前後の値の排他的論理和を計算する二項演算子である。
【0038】
送信部114は、データ列(R‖D‖ID)から端末ID121(ID)を除いた固有データ(R及びD)、及びスクランブル値(M1+H(R‖D‖ID))を連接したパケット(P=R‖D‖(M1+H(R‖D‖ID)))を、通信部13を介して端末20へ送信する。
【0039】
端末20は、制御部21と、記憶部22と、通信部23とを備え、さらに、図示しないが、情報処理装置として動作するために、操作部及び表示部等、各種ハードウェアを備えている。
【0040】
制御部21は、端末20の全体を制御する部分であり、記憶部22に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部21は、CPU(Central Processing Unit)であってよい。なお、制御部21が備える各部の機能は後述する。
【0041】
記憶部22は、ハードウェア群を端末20として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)であってよい。具体的には、記憶部22には、本実施形態の各種機能を制御部21に実行させるプログラムの他、サーバ10から受信したメッセージ(M)を、対応する管理コード(D)と関連付けて記憶する。
【0042】
また、記憶部22は、端末20の識別データである端末ID221を記憶する。ここで、端末ID221は、所定のハードウェア部品の識別コードとして、ユーザ操作では知り得ない領域にて管理されているものとする。なお、端末ID221は、サーバ10の記憶部12に記憶される端末ID121と同一である。
【0043】
通信部23は、ネットワークを介して所定のプロトコル(例えば、無線通信プロトコル)により、外部装置とデータ通信を行うネットワーク・アダプタである。通信部23は、サーバ10との間で通信を確立し、パケットデータを受信する。
【0044】
また、制御部21は、分離部211と、ハッシュ演算部212(端末側ハッシュ演算部)と、メッセージ取得部213とを備える。
【0045】
分離部211は、サーバ10から通信部23を介して受信したパケット(P)から、固有データ(R及びD)、及びスクランブル値(M1+H(R‖D‖ID))を分離する。
【0046】
ハッシュ演算部212は、分離部211により得られた固有データ、及び記憶部22に記憶されている端末ID221からなるデータ列(R‖D‖ID)から、一方向性ハッシュ関数(H)により第2のハッシュ値(H2=H(R‖D‖ID))を演算する。
【0047】
メッセージ取得部213は、分離部211により分離されたデータから得られたスクランブル値(M1+H(R‖D‖ID))、及びハッシュ演算部212により得られた第2のハッシュ値(H(R‖D‖ID))の排他的論理和により、第2のメッセージ(M2=M1+H(R‖D‖ID)+H(R‖D‖ID)=M1)を取得する。
【0048】
ここで、第1のハッシュ値と第2のハッシュ値が等しければ、「M2=M1」となり、端末20にて正しくメッセージが復元される。すなわち、端末ID121と端末ID221が等しい正当な端末20でのみ、第1のメッセージ(M1)が復元され、不正な端末では復元されない。したがって、サーバ10は、一方向通信でありながら、端末20の信頼性を保証してメッセージを送信できる。
【0049】
また、制御部21は、メッセージ取得部213により得られたメッセージを、分離部211により得られた管理コード(D)と関連付けて記憶部22に記憶する。
【0050】
このとき、管理コード(D)がカウンタ値である場合、同一のカウンタ値が既に記憶されていれば、制御部21は、得られたメッセージが不正なものとして排除できる。なお、メッセージの数又は容量が所定数を超える場合、古いメッセージから順に削除されることとしてよい。
また、管理コード(D)が有効期限を示す時刻情報である場合、制御部21は、有効期限までのメッセージのみを記憶部22に記憶し、有効期限が切れたメッセージは削除されることとしてよい。
【0051】
図2は、本実施形態に係る一方向通信システム1において、サーバ10から端末20へメッセージを送信する処理を示すシーケンス図である。
【0052】
まず、事前準備として、ステップS1において、端末20の端末ID221(ID)がサーバ10に登録される。なお、事前準備は、ローカル通信やオフライン等、安全な通信(チャネル)で行われる。これにより、サーバ10及び端末20で、端末20の端末ID221(ID)が共有される。
【0053】
ステップS11において、サーバ10(固有データ生成部111)は、乱数(R)及び管理コード(D)を生成する。
【0054】
ステップS12において、サーバ10(ハッシュ演算部112)は、第1のハッシュ値(H1=H(R‖D‖ID))を算出する。
【0055】
ステップS13において、サーバ10(スクランブル演算部113)は、スクランブル値(M+H1)を算出する。
【0056】
ステップS14において、サーバ10(送信部114)は、パケット(P=R‖D‖(M+H1))を、端末20へ送信する。
【0057】
ステップS15において、端末20(分離部211)は、ステップS14で受信したパケット(P)から、乱数(R)、管理コード(D)及びスクランブル値(M+H1)を分離する。
【0058】
ステップS16において、端末20(ハッシュ演算部212)は、第2のハッシュ値(H2=H(R‖D‖ID))を算出する。
【0059】
ステップS17において、端末20(メッセージ取得部213)は、ステップS15で取得したスクランブル値(M+H1)、及びステップS16で取得した第2のハッシュ値(H2)の排他的論理和(M+H1+H2)により、メッセージ(M)を取得する。
【0060】
<第2実施形態>
以下、本発明の第2実施形態について説明する。
本実施形態は、第1実施形態のパケット(P)を、より厳密に確認するための構成である。なお、第1実施形態と同様の構成に対しては、同一の符号を付し、説明を省略又は簡略化する。
【0061】
図3は、本実施形態に係る一方向通信システム1aが有するサーバ10a及び端末20aの機能構成を示すブロック図である。
一方向通信システム1aは、第1実施形態と比べて、制御部11aのハッシュ演算部112a及び送信部114aの機能、並びに制御部21aの分離部211a及びハッシュ演算部212aの機能が異なり、さらに、端末20aの制御部21aは、検証部214を備える。
【0062】
ハッシュ演算部112aは、第1のハッシュ値(H(R‖D‖ID))を演算すると共に、固有データ(R及びD)及び第1のメッセージ(M1)を連接した値から、一方向性ハッシュ関数(H)により第3のハッシュ値(H3=H(R‖D‖M1))を演算する。
【0063】
送信部114aは、固有データ(R及びD)、スクランブル値(M1+H(R‖D‖ID))及び第3のハッシュ値(H(R‖D‖M1))を連接したパケット(P=R‖D‖(M1+H(R‖D‖ID))‖H(R‖D‖M1))を、通信部13を介して端末20aへ送信する。
【0064】
分離部211aは、サーバ10aから通信部23を介して受信したパケット(P)から、固有データ(R及びD)、スクランブル値(M1+H(R‖D‖ID))及び第3のハッシュ値(H(R‖D‖M1))を分離する。
【0065】
ハッシュ演算部212aは、第2のハッシュ値(H(R‖D‖ID))を演算すると共に、分離部211aにより得られた固有データ(R及びD)及びメッセージ取得部213により得られた第2のメッセージ(M2)から、一方向性ハッシュ関数(H)により第4のハッシュ値(H4=H(R‖D‖M2))を演算する。
【0066】
検証部214は、第3のハッシュ値(H(R‖D‖M1))及び第4のハッシュ値(H(R‖D‖M2))が一致するか否かを判定することにより、第2のメッセージ(M2)が第1のメッセージ(M1)と一致するか否かを検証する。
【0067】
ここで、第3のハッシュ値と第4のハッシュ値が等しければ、「M2=M1」であることが保証され、端末20aにて正しくメッセージが復元される。すなわち、端末ID121と端末ID221が等しい正当な端末20aでのみ、第2のメッセージ(M2)が復元され、さらに、復元されたメッセージが第1のメッセージ(M1)と同一であることが保証される。一方、不正な端末では、少なくとも同一のメッセージは復元されない。したがって、サーバ10aは、一方向通信でありながら、端末20aの信頼性を保証して正しいメッセージを送信できる。
【0068】
図4は、本実施形態に係る一方向通信システム1aにおいて、サーバ10aから端末20aへメッセージを送信する処理を示すシーケンス図である。
【0069】
まず、事前準備として、ステップS1において、端末20aの端末ID221(ID)がサーバ10aに登録される。なお、事前準備は、ローカル通信やオフライン等、安全な通信(チャネル)で行われる。これにより、サーバ10a及び端末20aで、端末20aの端末ID221(ID)が共有される。
【0070】
ステップS21において、サーバ10a(固有データ生成部111)は、乱数(R)及び管理コード(D)を生成する。
【0071】
ステップS22において、サーバ10a(ハッシュ演算部112a)は、第1のハッシュ値(H1=H(R‖D‖ID))を算出する。
【0072】
ステップS23において、サーバ10a(スクランブル演算部113)は、スクランブル値(M+H1)を算出する。
【0073】
ステップS24において、サーバ10a(ハッシュ演算部112a)は、第3のハッシュ値(H3=H(R‖D‖M))を算出する。
【0074】
ステップS25において、サーバ10a(送信部114a)は、パケット(P=R‖D‖(M+H1)‖H3)を、端末20aへ送信する。
【0075】
ステップS26において、端末20a(分離部211a)は、ステップS25で受信したパケット(P)から、乱数(R)、管理コード(D)、スクランブル値(M+H1)及び第3のハッシュ値(H3)を分離する。
【0076】
ステップS27において、端末20a(ハッシュ演算部212a)は、第2のハッシュ値(H2=H(R‖D‖ID))を算出する。
【0077】
ステップS28において、端末20a(メッセージ取得部213)は、ステップS26で取得したスクランブル値(M+H1)、及びステップS27で取得した第2のハッシュ値(H2)の排他的論理和(M+H1+H2)により、メッセージ(M)を取得する。
【0078】
ステップS29において、端末20a(ハッシュ演算部212a)は、ステップS26で取得した乱数(R)及び管理コード(D)、並びにステップS28で取得したメッセージ(M)を用いて、第4のハッシュ値(H4=H(R‖D‖M))を算出する。
【0079】
ステップS30において、端末20a(検証部214)は、ステップS26で取得した第3のハッシュ値(H3)と、ステップS29で算出した第4のハッシュ値(H4)とが一致するか否かを検証する。
【0080】
<第3実施形態>
以下、本発明の第3実施形態について説明する。
本実施形態は、第1実施形態のメッセージ(M)を、より秘匿性を高めて送信するための構成である。なお、第1実施形態と同様の構成に対しては、同一の符号を付し、説明を省略又は簡略化する。
【0081】
図5は、本実施形態に係る一方向通信システム1bが有するサーバ10b及び端末20bの機能構成を示すブロック図である。
【0082】
一方向通信システム1bは、第1実施形態と比べて、制御部11bにおける送信部114bの機能、及び制御部21bにおける分離部211bの機能が異なる。さらに、サーバ10b制御部11bは、暗号化部115を備え、端末20bの制御部21bは、復号化部215を備える。
【0083】
また、サーバ10bの記憶部12bは、秘密鍵122を記憶し、端末20bの記憶部22bは、秘密鍵222を記憶している。これらは、サーバ10bと端末20bとで共有される同一の秘密鍵(Key)であり、メッセージの暗号化及び復号化に利用される。
【0084】
暗号化部115は、秘密鍵122を用いてスクランブル値(M+H1)を暗号化して、暗号化メッセージ(Enc(Key,M+H1))を取得する。
なお、「Enc(a,b)」は、鍵a(=Key)でb(=M+H1)を暗号化する関数である。
【0085】
また、簡易的には、暗号化部115は、秘密鍵122及び乱数R1を用いた鍵付きハッシュ関数の値との排他的論理和により、暗号化メッセージを取得してもよい(Enc(a,b)=KeyedHash(a,R1)+b=b’)。これにより、処理負荷が低減される。
【0086】
送信部114bは、固有データ(R及びD)、及び暗号化メッセージ(Enc(Key,M+H1))を連接したパケット(P=R‖D‖Enc(Key,M+H1))を、通信部13を介して端末20bへ送信する。
【0087】
分離部211bは、サーバ10bから通信部23を介して受信したパケット(P)から、固有データ(R及びD)、及び暗号化メッセージ(Enc(Key,M+H1))を分離する。
【0088】
復号化部215は、秘密鍵222を用いて暗号化メッセージ(Enc(Key,M+H1))を復号化して(Dec(Key,Enc(Key,M+H1))=M+H1)、スクランブル値(M+H1)を取得する。
なお、「Dec(a,b’)」は、鍵aでb’を復号化する関数であり、「Enc(a,b)」と対になる。
【0089】
また、暗号化部115により、鍵付きハッシュ関数が用いられた場合、復号化部215は、同様に、鍵付きハッシュ関数の値との排他的論理和により暗号化メッセージを復号化してスクランブル値を取得する(Dec(a,b’)=b’+KeyedHash(a,R1)=b)。これにより、処理負荷が低減される。
【0090】
図6は、本実施形態に係る一方向通信システム1bにおいて、サーバ10bから端末20bへメッセージを送信する処理を示すシーケンス図である。
【0091】
まず、事前準備として、ステップS1において、端末20bの端末ID221(ID)がサーバ10bに登録される。また、ステップS2において、サーバ10bと端末20bとの間で共通の秘密鍵が通知され、双方に記憶される。
なお、事前準備は、ローカル通信やオフライン等、安全な通信(チャネル)で行われる。これにより、サーバ10a及び端末20bで、端末20bの端末ID221(ID)及び秘密鍵(Key)が共有される。
【0092】
ステップS31において、サーバ10b(固有データ生成部111)は、乱数(R)及び管理コード(D)を生成する。
【0093】
ステップS32において、サーバ10b(ハッシュ演算部112)は、第1のハッシュ値(H1=H(R‖D‖ID))を算出する。
【0094】
ステップS33において、サーバ10b(スクランブル演算部113)は、スクランブル値(M+H1)を算出する。
【0095】
ステップS34において、サーバ10b(暗号化部115)は、スクランブル値を暗号化して、暗号化メッセージ(Enc(Key,M+H1))を算出する。
【0096】
ステップS35において、サーバ10b(送信部114b)は、パケット(P=R‖D‖Enc(Key,M+H1))を、端末20bへ送信する。
【0097】
ステップS36において、端末20b(分離部211b)は、ステップS35で受信したパケット(P)から、乱数(R)、管理コード(D)及び暗号化メッセージ(Enc(Key,M+H1))を分離する。
【0098】
ステップS37において、端末20b(復号化部215)は、暗号化メッセージを復号化し(Dec(Key,Enc(Key,M+H1)))、スクランブル値(M+H1)を算出する。
【0099】
ステップS38において、端末20b(ハッシュ演算部212)は、第2のハッシュ値(H2=H(R‖D‖ID))を算出する。
【0100】
ステップS39において、端末20b(メッセージ取得部213)は、ステップS37で取得したスクランブル値(M+H1)、及びステップS38で取得した第2のハッシュ値(H2)の排他的論理和(M+H1+H2)により、メッセージ(M)を取得する。
【0101】
<第4実施形態>
以下、本発明の第4実施形態について説明する。
本実施形態は、第3実施形態のパケット(P)を、第2実施形態と同様に、より厳密に確認するための構成である。なお、第2実施形態又は第3実施形態と同様の構成に対しては、同一の符号を付し、説明を省略又は簡略化する。
【0102】
図7は、本実施形態に係る一方向通信システム1cが有するサーバ10c及び端末20cの機能構成を示すブロック図である。
一方向通信システム1cは、第3実施形態と比べて、制御部11cのハッシュ演算部112c及び送信部114cの機能、並びに制御部21cの分離部211c及びハッシュ演算部212cの機能が異なり、さらに、端末20cの制御部21cは、第2実施形態と同様の検証部214を備える。
【0103】
ハッシュ演算部112cは、第1のハッシュ値(H1)を演算すると共に、固有データ(R及びD)及び第1のメッセージ(M1)を連接した値から、一方向性ハッシュ関数(H)により第3のハッシュ値(H3=H(R‖D‖M1))を演算する。
【0104】
送信部114cは、固有データ(R及びD)、暗号化メッセージ(Enc(Key,M+H1))及び第3のハッシュ値(H3)を連接したパケット(P=R‖D‖Enc(Key,M+H1)‖H3)を、通信部13を介して端末20cへ送信する。
【0105】
分離部211cは、サーバ10cから通信部23を介して受信したパケット(P)から、固有データ(R及びD)、暗号化メッセージ(Enc(Key,M+H1))及び第3のハッシュ値(H3)を分離する。
【0106】
ハッシュ演算部212cは、第2のハッシュ値(H2)を演算すると共に、分離部211cにより得られた固有データ(R及びD)及びメッセージ取得部213により得られた第2のメッセージ(M2)から、一方向性ハッシュ関数(H)により第4のハッシュ値(H4=H(R‖D‖M2))を演算する。
【0107】
検証部214は、第3のハッシュ値(H3)及び第4のハッシュ値(H4)が一致するか否かを判定することにより、第2のメッセージ(M2)が第1のメッセージ(M1)と一致するか否かを検証する。
【0108】
図8は、本実施形態に係る一方向通信システム1cにおいて、サーバ10cから端末20cへメッセージを送信する処理を示すシーケンス図である。
【0109】
まず、事前準備として、ステップS1において、端末20cの端末ID221(ID)がサーバ10cに登録される。また、ステップS2において、サーバ10cと端末20cとの間で共通の秘密鍵が通知され、双方に記憶される。
なお、事前準備は、ローカル通信やオフライン等、安全な通信(チャネル)で行われる。これにより、サーバ10c及び端末20cで、端末20cの端末ID221(ID)及び秘密鍵(Key)が共有される。
【0110】
ステップS41において、サーバ10c(固有データ生成部111)は、乱数(R)及び管理コード(D)を生成する。
【0111】
ステップS42において、サーバ10c(ハッシュ演算部112c)は、第1のハッシュ値(H1=H(R‖D‖ID))を算出する。
【0112】
ステップS43において、サーバ10c(スクランブル演算部113)は、スクランブル値(M+H1)を算出する。
【0113】
ステップS44において、サーバ10c(暗号化部115)は、スクランブル値を暗号化して、暗号化メッセージ(Enc(Key,M+H1))を算出する。
【0114】
ステップS45において、サーバ10c(ハッシュ演算部112c)は、第3のハッシュ値(H3=H(R‖D‖M))を算出する。
【0115】
ステップS46において、サーバ10c(送信部114c)は、パケット(P=R‖D‖Enc(Key,M+H1)‖H3)を、端末20cへ送信する。
【0116】
ステップS47において、端末20c(分離部211c)は、ステップS46で受信したパケット(P)から、乱数(R)、管理コード(D)、暗号化メッセージ(Enc(Key,M+H1))及び第3のハッシュ値(H3)を分離する。
【0117】
ステップS48において、端末20c(復号化部215)は、暗号化メッセージを復号化し(Dec(Key,Enc(Key,M+H1)))、スクランブル値(M+H1)を算出する。
【0118】
ステップS49において、端末20c(ハッシュ演算部212c)は、第2のハッシュ値(H2=H(R‖D‖ID))を算出する。
【0119】
ステップS50において、端末20c(メッセージ取得部213)は、ステップS48で取得したスクランブル値(M+H1)、及びステップS49で取得した第2のハッシュ値(H2)の排他的論理和(M+H1+H2)により、メッセージ(M)を取得する。
【0120】
ステップS51において、端末20c(ハッシュ演算部212c)は、ステップS47で取得した乱数(R)及び管理コード(D)、並びにステップS50で取得したメッセージ(M)を用いて、第4のハッシュ値(H4=H(R‖D‖M))を算出する。
【0121】
ステップS52において、端末20c(検証部214)は、ステップS47で取得した第3のハッシュ値(H3)と、ステップS51で算出した第4のハッシュ値(H4)とが一致するか否かを検証する。
【0122】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【0123】
前述のサーバ10及び端末20は、メッセージを送受信する装置の一例であり、サーバ装置、PC(Personal Computer)又は携帯端末等、様々な情報処理装置(コンピュータ)であってよく、前述の各機能は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、上記情報処理装置にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【0124】
また、送信側の装置(サーバ10)と受信側の装置(端末20)とで共有される受信側の装置の識別データは、端末ID221のほか、端末20の利用者のユーザID又は指紋データ等、様々なデータが利用可能である。
【符号の説明】
【0125】
1、1a、1b、1c 一方向通信システム
10、10a、10b、10c サーバ
20、20a、20b、20c 端末
111 固有データ生成部
112、112a、112c ハッシュ演算部
113 スクランブル演算部
114、114a、114b、114c 送信部
115 暗号化部
211、211a、211b、211c 分離部
212、212a、212c ハッシュ演算部
213 メッセージ取得部
214 検証部
215 復号化部

【特許請求の範囲】
【請求項1】
メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムであって、
前記サーバ及び前記端末は、予め前記端末の識別データを共有しており、
前記サーバは、
少なくとも前記識別データを含むデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算部と、
第1のメッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を算出するスクランブル演算部と、
前記データ列から前記識別データを除いた固有データ、及び前記スクランブル値に基づくデータを連接したパケットを、前記端末へ送信する送信部と、を備え、
前記端末は、
前記パケットから、前記固有データ、及び前記スクランブル値に基づくデータを分離する分離部と、
前記分離部により得られた前記固有データ及び前記識別データからなる前記データ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算部と、
前記分離部により分離されたデータから得られた前記スクランブル値、及び前記端末側ハッシュ演算部により得られた前記第2のハッシュ値の排他的論理和により、第2のメッセージを取得するメッセージ取得部と、を備える一方向通信システム。
【請求項2】
前記固有データは、乱数を含むデータである請求項1に記載の一方向通信システム。
【請求項3】
前記固有データは、前記端末におけるメッセージの管理コードを含む請求項1又は請求項2に記載の一方向通信システム。
【請求項4】
前記サーバ側ハッシュ演算部は、前記固有データ及び前記第1のメッセージを連接した値から、前記一方向性ハッシュ関数により第3のハッシュ値を演算し、
前記送信部は、前記固有データ、前記スクランブル値に基づくデータ及び前記第3のハッシュ値を連接したパケットを、前記端末へ送信し、
前記分離部は、前記パケットから、前記固有データ、前記スクランブル値に基づくデータ及び前記第3のハッシュ値を分離し、
前記端末側ハッシュ演算部は、前記分離部により得られた前記固有データ及び前記メッセージ取得部により得られた前記第2のメッセージから、前記一方向性ハッシュ関数により第4のハッシュ値を演算し、
前記端末は、前記第3のハッシュ値及び前記第4のハッシュ値が一致するか否かを判定することにより、前記第2のメッセージが前記第1のメッセージと一致するか否かを検証する検証部を備える請求項1から請求項3のいずれか1項に記載の一方向通信システム。
【請求項5】
前記サーバ及び前記端末は、予め秘密鍵を共有しており、
前記サーバは、前記秘密鍵を用いて前記スクランブル値を暗号化して、暗号化メッセージを取得する暗号化部を備え、
前記送信部は、前記固有データ、及び前記暗号化メッセージを連接したパケットを、前記端末へ送信し、
前記分離部は、前記パケットから、前記固有データ、及び前記暗号化メッセージを分離し、
前記端末は、前記秘密鍵を用いて前記暗号化メッセージを復号化して、前記スクランブル値を取得する復号化部を備える請求項1から請求項4のいずれか1項に記載の一方向通信システム。
【請求項6】
前記暗号化部は、前記秘密鍵を用いた鍵付きハッシュ関数の値との排他的論理和により、前記暗号化メッセージを取得し、
前記復号化部は、前記鍵付きハッシュ関数の値との排他的論理和により、前記スクランブル値を取得する請求項5に記載の一方向通信システム。
【請求項7】
メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムにおける通信方法であって、
前記サーバ及び前記端末は、予め前記端末の識別データを共有しており、
前記サーバが、
少なくとも前記識別データを含むデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、
第1のメッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を算出するスクランブル演算ステップと、
前記データ列から前記識別データを除いた固有データ、及び前記スクランブル値に基づくデータを連接したパケットを、前記端末へ送信する送信ステップと、を実行し、
前記端末が、
前記パケットから、前記固有データ、及び前記スクランブル値に基づくデータを分離する分離ステップと、
前記分離ステップで得られた前記固有データ及び前記識別データからなる前記データ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、
前記分離ステップで分離されたデータから得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2のメッセージを取得するメッセージ取得ステップと、を実行する通信方法。
【請求項8】
メッセージを送信するサーバと、当該メッセージを受信する端末とを有する一方向通信システムが実行する通信プログラムであって、
前記サーバ及び前記端末は、予め前記端末の識別データを共有しており、
前記サーバに、
少なくとも前記識別データを含むデータ列から、一方向性ハッシュ関数により第1のハッシュ値を演算するサーバ側ハッシュ演算ステップと、
第1のメッセージ及び前記第1のハッシュ値の排他的論理和により、スクランブル値を算出するスクランブル演算ステップと、
前記データ列から前記識別データを除いた固有データ、及び前記スクランブル値に基づくデータを連接したパケットを、前記端末へ送信する送信ステップと、を実行させ、
前記端末に、
前記パケットから、前記固有データ、及び前記スクランブル値に基づくデータを分離する分離ステップと、
前記分離ステップで得られた前記固有データ及び前記識別データからなる前記データ列から、前記一方向性ハッシュ関数により第2のハッシュ値を演算する端末側ハッシュ演算ステップと、
前記分離ステップで分離されたデータから得られた前記スクランブル値、及び前記端末側ハッシュ演算ステップで得られた前記第2のハッシュ値の排他的論理和により、第2のメッセージを取得するメッセージ取得ステップと、を実行させるための通信プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate