説明

暗号通信システム、暗号通信方法、送信装置および受信装置

【課題】低性能な通信装置により高速かつセキュリティ性の高い暗号通信を行うための技術を提供する。
【解決手段】本発明の暗号通信システムは、コンテンツを送信する第1の通信装置と、前記第1の通信装置から前記コンテンツを受信する第2の通信装置を有し、一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数と該他方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、それぞれの通信装置が、相手装置に通知した乱数および前記相手装置から通知された乱数を互いに共有し、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを送受信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号通信システム、暗号通信方法、送信装置および受信装置に関する。
【背景技術】
【0002】
公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式により、送受信するコンテンツの機密性を保護する暗号通信システムが一般に知られている。非特許文献1には、公開鍵暗号方式を用いて共通鍵を安全に共有する方式が提示されている。以下に、公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式による暗号通信について説明する。
【0003】
まず、コンテンツを送信する送信装置およびコンテンツを受信する受信装置は、それぞれの公開鍵証明書を保持している。送信装置および受信装置は、それぞれの公開鍵証明書を交換し、互いの装置を相互認証する。
【0004】
公開鍵証明書による相互認証が完了すると、送信装置は、コンテンツを暗号化するために共通鍵暗号方式のコンテンツ暗号鍵を生成する。さらに、送信装置は、送信者を明確にしたり、改ざんが行われていないことを確認したりするために用いる署名を作成する。送信装置は、生成したコンテンツ暗号鍵を受信装置の公開鍵で暗号化し、署名を送信装置の秘密鍵で暗号化する。送信装置は、暗号化したコンテンツ暗号鍵に暗号化した署名を付与して受信装置に送信する。
【0005】
受信装置は、送信装置から暗号化されたコンテンツ暗号鍵および暗号化された署名を受信すると、まず、暗号化された署名を送信装置の公開鍵で復号化し、検証する。受信装置は、署名の検証に成功すると、暗号化されたコンテンツ暗号鍵を受信装置の秘密鍵で復号化し、コンテンツ暗号鍵を取得する。
【0006】
コンテンツ暗号鍵の共有が成功すると、送信側装置は、平文コンテンツをコンテンツ暗号鍵で暗号化した暗号化コンテンツを作成し、受信装置に送信する。
【0007】
受信装置は、受信した暗号化コンテンツをコンテンツ暗号鍵で復号化し、平文コンテンツを取得する。
【0008】
このように、公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式により、送受信するコンテンツの機密性を保護することができるが、公開鍵暗号方式は、共通鍵暗号方式と比べて演算処理が複雑であり、共通鍵暗号方式の数十倍の時間がかかる。また、公開鍵証明書および公開鍵のデータサイズは大きいため、送信装置および受信装置にこれらのデータを格納するための領域を確保する必要がある。
【0009】
また、安全に暗号鍵を共有する技術として、Diffie-Hellman鍵交換がある。Diffie-Hellman鍵交換では、送信装置および受信装置が、それぞれの装置で生成した乱数およびそれぞれの装置の秘密鍵から生成した公開情報を、互いに送受信しあい、その公開情報から共通の暗号鍵を算出する。Diffie-Hellman鍵交換についても、公開鍵暗号方式と同様に演算処理に時間がかかるという問題がある。
【0010】
近年ではコンテンツの機密保持の要求が強く、比較的性能が低い通信装置においても暗号通信が要求されることがある。しかしながら、性能が低い通信装置では、暗号化および復号化の演算処理に時間がかかりすぎるため、上述したような公開鍵暗号方式あるいはDiffie-Hellman鍵交換を適用することが困難な場合がある。
【0011】
なお、特許文献1では、通信装置が生成した暗号鍵を用いて相手側の通信装置を認証する技術が提供されている。
【0012】
特許文献1では、それぞれの通信装置が固定鍵を記憶しておき、さらに、事前に生成した第1の乱数および第2の乱数を共有しておく。一方の通信装置が固定鍵を用いて第1の乱数を暗号化することにより暗号鍵を生成し、その暗号鍵を用いて第2の乱数を暗号化することにより検証用データを生成し、他方の通信装置にその検証用データを送信する。他方の通信装置も同様に固定鍵を用いて第1の乱数を暗号化することにより暗号鍵を生成し、その暗号鍵を用いて受信した検証用データを復号化することにより第2の乱数を抽出し、自装置が保有する第2の乱数と比較することにより相手側の通信装置を検証する。
【0013】
また、特許文献2では、受信装置が生成した乱数に基づいて送信装置および受信装置が暗号鍵を共有する技術が提供されている。
【0014】
特許文献2の受信装置は、自身が生成した乱数を送信装置に送信する。送信装置は、受信装置から受信した乱数に基づいて暗号鍵を生成し、その暗号鍵を用いて受信した乱数を暗号化し、受信装置に送信する。受信装置は、自装置が送信した乱数に基づいて送信装置と同様に暗号鍵を生成し、その暗号鍵を用いて送信装置から受信した暗号化乱数を復号化し、復号化により取得した乱数と自装置が送信した乱数とを比較することにより暗号鍵の共有ができたことを判別する。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2004−159063号公報
【特許文献2】特開2006−339963号公報
【非特許文献】
【0016】
【非特許文献1】ISO−IEC18033−2 RSA−KEM
【発明の概要】
【発明が解決しようとする課題】
【0017】
特許文献1もしくは特許文献2の技術を用いれば、公開鍵暗号方式やDiffie-Hellman鍵交換を用いずに送信装置と受信装置の間で暗号鍵を共有できるため、短時間で暗号鍵を共有できる。しかし、暗号鍵の元となる乱数の送受信を第三者に傍受されると、その第三者によって暗号鍵を解読されるおそれがある。
【0018】
本発明の目的は、低性能な通信装置により高速かつセキュリティ性の高い暗号通信を行うための技術を提供することである。
【課題を解決するための手段】
【0019】
上記目的を達成するために、本発明の暗号通信システムは、コンテンツを送信する第1の通信装置と、前記第1の通信装置から前記コンテンツを受信する第2の通信装置と、を有し、一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第1の通信装置と前記第2の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、前記第1の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第2の通信装置に送信し、前記第2の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第1の通信装置から受信した前記コンテンツを復号する。
【0020】
また、上記目的を達成するために、本発明の暗号通信方法は、コンテンツを送信する第1の通信装置と、前記第1の通信装置から前記コンテンツを受信する第2の通信装置と、を有する暗号通信システムにより暗号通信を行う暗号通信方法であって、一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第1の通信装置と前記第2の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、前記第1の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第2の通信装置に送信し、前記第2の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第1の通信装置から受信した前記コンテンツを復号する。
【0021】
また、上記目的を達成するために、本発明の送信装置は、受信装置に通知すべき乱数を含むメッセージに、該受信装置に通知すべき乱数と該受信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記受信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記受信装置に通知した乱数および前記受信装置から通知された乱数を前記受信装置と共有する、認証手段と、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記受信装置に送信する、コンテンツ送信手段を有する。
【0022】
また、上記目的を達成するために、本発明の受信装置は、送信装置に通知すべき乱数を含むメッセージに、該送信装置に通知すべき乱数と該送信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記送信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記送信装置に通知した乱数および前記送信装置から通知された乱数を前記送信装置と共有する、認証手段と、共有した複数の前記乱数を用いて生成したセッション鍵で、前記送信装置から受信した暗号化されたコンテンツを復号する、コンテンツ受信手段を有する。
【発明の効果】
【0023】
本発明によれば、低性能な通信装置により高速かつセキュリティ性の高い暗号通信を行うことができる。
【図面の簡単な説明】
【0024】
【図1】本発明の一実施形態における暗号通信システムの構成を示すブロック図である。
【図2】記憶装置に格納されるテーブルの例を示す図である。
【図3】図1に示した送信装置と受信装置が相互認証するときの送信装置と受信装置のシーケンスを示す図である。
【図4a】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4b】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4c】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4d】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4e】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4f】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4g】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4h】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図4i】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図5】図1に示した送信装置から受信装置へコンテンツを送信するときの送信装置と受信装置のシーケンスを示す図である。
【図6a】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図6b】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図6c】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図6d】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【発明を実施するための形態】
【0025】
次に本発明について図面を参照して詳細に説明する。
【0026】
図1は本発明の一実施形態における暗号通信システムの構成を示すブロック図である。
【0027】
図1に示すように、暗号通信システムは、送信装置1および受信装置2を有する。
【0028】
送信装置1は、受信装置2と相互に認証しあい、暗号鍵を共有し、自装置内に保有する平文コンテンツを暗号化して受信装置2に送信する通信装置である。
【0029】
受信装置2は、送信装置1と相互に認証しあい、暗号鍵を共有し、送信装置1から受信した暗号化コンテンツを復号化して平文コンテンツを取得する通信装置である。
【0030】
まず、本実施形態の暗号通信システムの概略の動作について説明する。
【0031】
送信装置1と受信装置2が交互に乱数を通知することにより複数の乱数を共有し、それらの乱数を用いて暗号鍵を生成する。
【0032】
本実施形態の送信装置1および受信装置2が生成する暗号鍵には2種類がある。1つは、コンテンツ転送の前段階として送信装置1と受信装置2とが共有すべき乱数を相互に通知するときに用いる暗号鍵である。それを一時鍵と呼ぶことにする。もう1つは、乱数の共有が完了した後、送信装置1から受信装置2へコンテンツを転送するのに用いる暗号鍵である。それをセッション鍵と呼ぶことにする。
【0033】
送信装置1から受信装置2へ乱数を通知するとき、その乱数を含むメッセージには送信装置1の署名が付加され、受信装置2はその署名を検証することにより送信装置1を認証する。逆に、受信装置2から送信装置1へ乱数を通知するとき、その乱数を含むメッセージには受信装置2の署名が付加され、送信装置1はその署名を検証することにより受信装置2を認証する。
【0034】
それらの署名には乱数から生成された暗号鍵による暗号化が適用されている。2つ目以降の乱数を通知するためのメッセージに付加される署名には、それまでに累積的に共有した全ての乱数を用いて生成した暗号鍵による暗号化が適用される。
【0035】
なお、送信装置1と受信装置2は、複数の乱数の共有が完了するまでは、それまでに共有した乱数を用いて生成した暗号鍵を一時鍵として署名の暗号化に使用する。
【0036】
一方、送信装置1と受信装置2は、複数の乱数の共有が完了すると、最終的に共有した全ての乱数を用いて生成した暗号鍵をセッション鍵として送信装置1から受信装置2へ送信するコンテンツの暗号化およびメッセージに付加される署名の暗号化に使用する。
【0037】
以下、送信装置1および受信装置2のそれぞれの構成および動作について説明する。
【0038】
送信装置1は、鍵生成部11、認証部12、記憶装置13、コンテンツ送信部14およびコンテンツデータベース15を有する。
【0039】
鍵生成部11は、乱数を生成し、生成した乱数を記憶装置13の乱数テーブルに格納する。また、鍵生成部11は、受信装置2が生成した乱数を認証部12から受信すると、受信した乱数を記憶装置13の乱数テーブルに格納する。
【0040】
鍵生成部11は、送信装置1から受信装置2へ通知すべき乱数を生成し、その乱数を生成したタイミングで暗号鍵を算出する。このとき、鍵生成部11は、受信装置2との相互認証処理を開始してから送受信した全ての乱数と、新たに生成した乱数とを基に暗号鍵を算出する。
【0041】
また、鍵生成部11は、受信装置2から乱数を受信したタイミングで暗号鍵を算出する。このとき、鍵生成部11は、受信装置2との相互認証処理を開始してから送受信した全ての乱数と、新たに受信装置2から受信した乱数とを基に暗号鍵を算出する。
【0042】
そして、鍵生成部11は、算出した暗号鍵を記憶装置13の暗号鍵テーブルに格納する。
【0043】
送信装置1の認証部12は、送信装置1自身が受信装置2を認証するときと、送信装置1が受信装置2による認証を受けるときに、それらの認証に関する処理を行う。
【0044】
まず、送信装置1が受信装置2による認証を受けるときの認証部12の動作について説明する。
【0045】
認証部12は、鍵生成部11が生成した乱数を受信装置2に送信するために、乱数を含むメッセージを作成する。認証部12は、作成したメッセージを記憶装置13のメッセージテーブルに格納する。さらに、認証部12は、作成したメッセージを所定のアルゴリズムで暗号化した暗号化メッセージを作成する。なお、暗号鍵を共有する前にメッセージを暗号化および復号化するアルゴリズムは、送信装置1および受信装置2が共有している共通処理である。また、暗号鍵を共有した後、認証部12は、鍵生成部11が最後に算出した暗号鍵をセッション鍵とし、作成したメッセージをセッション鍵で暗号化する。
【0046】
また、認証部12は、受信装置2との相互認証処理を開始してから送受信した全てのメッセージと今回送信するメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。なお、所定のダイジェスト関数処理は、送信装置1および受信装置2が共有している共通処理である。ダイジェスト関数の例として、MD5(Message Digest 5)やSHA−1(Secure Hash Algorithm 1)などがあげられる。さらに、認証部12は、鍵生成部11によって生成された暗号鍵を用いて、算出したダイジェスト値を暗号化した署名を作成する。
【0047】
認証部12は、作成した暗号化メッセージに署名を付与して受信装置2の認証部22に送信する。認証部12は、メッセージを暗号化してから送信することにより、メッセージの機密性を保護する。また、認証部12は、暗号化メッセージに署名を付与して送信することにより、メッセージの完全性を保護する。
【0048】
次に、送信装置1が受信装置2を認証するときの認証部12の動作について説明する。
【0049】
認証部12は、受信装置2の認証部22から暗号化メッセージを受信すると、受信した暗号化メッセージを所定のアルゴリズムで復号化することにより、受信装置2の認証部22が生成したメッセージを取得する。認証部12は、取得したメッセージを記憶装置13のメッセージテーブルに格納する。さらに、認証部12は、取得したメッセージから乱数を抽出し、抽出した乱数を鍵生成部11に送信する。
【0050】
認証部12は、鍵生成部11が算出した暗号鍵を用いて、受信装置2から受信した署名を復号化することにより、受信装置2が算出したダイジェスト値を取得する。
【0051】
また、認証部12は、受信装置2との相互認証処理を開始してから送受信した全てのメッセージと今回受信装置2から受信したメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。認証部12は、受信した署名を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したメッセージの正当性を検証する。
【0052】
認証部12は、乱数を含むメッセージの送受信を、受信装置2と所定回数繰り返して実施することにより受信装置2を認証する。送信装置1および受信装置2は、相互認証処理を開始してから送受信した全てのメッセージを累積してダイジェスト値を作成するため、第三者によるなりすましを防止できる。また、送信装置1および受信装置2は、相互認証処理を開始してから送受信した全ての乱数を累積して暗号鍵を作成するため、第三者にメッセージの送受信を傍受されても、その第三者に暗号鍵を漏洩する危険性を低減できる。
【0053】
記憶装置13は、乱数テーブル、暗号鍵テーブルおよびメッセージテーブルを格納する揮発性メモリであり、RAM(Random Access Memory)などによって実現できる。
【0054】
記憶装置13に格納されるテーブルの例を図2に示す。乱数テーブルには、鍵生成部11が生成した乱数および受信装置2から受信した乱数が格納される。また、暗号鍵テーブルには、鍵生成部11が乱数から生成した暗号鍵が格納される。また、メッセージテーブルには、受信装置2との相互認証処理を開始してから送受信した全てのメッセージが格納される。
【0055】
コンテンツ送信部14は、鍵生成部11が最後に算出した暗号鍵をセッション鍵として使用する。セッション鍵は、送信装置1および受信装置2が複数のメッセージを送受信することにより取得した複数の乱数を累積して作成されているため、セキュリティの強度は高くなっている。
【0056】
コンテンツ送信部14は、送信装置1が保有する平文コンテンツを、セッション鍵を用いて暗号化した暗号化コンテンツを作成する。
【0057】
また、コンテンツ送信部14は、平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。
【0058】
コンテンツ送信部14は、暗号化コンテンツおよび平文コンテンツのダイジェスト値を含むコンテンツメッセージを作成する。コンテンツ送信部14は、作成したコンテンツメッセージを記憶装置13のメッセージテーブルに格納する。コンテンツ送信部14は、作成したコンテンツメッセージをさらにセッション鍵で暗号化した暗号化コンテンツメッセージを作成する。
【0059】
また、コンテンツ送信部14は、受信装置2との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信するコンテンツメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。さらに、コンテンツ送信部14は、算出したダイジェスト値を、セッション鍵を用いて暗号化した署名を作成する。
【0060】
コンテンツ送信部14は、作成した暗号化コンテンツメッセージに署名を付与して受信装置2のコンテンツ受信部24に送信する。
【0061】
コンテンツデータベース15は、平文コンテンツが格納されるデータベースである。
【0062】
一方、受信装置2は、鍵生成部21、認証部22、記憶装置23、コンテンツ受信部24およびコンテンツデータベース25を有する。
【0063】
鍵生成部21の基本的な構成は、送信装置1の鍵生成部11の構成と同じである。
【0064】
鍵生成部21は、乱数を生成し、生成した乱数を記憶装置23の乱数テーブルに格納する。また、鍵生成部21は、送信装置1が生成した乱数を認証部22から受信すると、受信した乱数を記憶装置23の乱数テーブルに格納する。
【0065】
鍵生成部21は、受信装置2から送信装置1へ通知すべき乱数を生成し、その乱数を生成したタイミングで暗号鍵を算出する。このとき、鍵生成部21は、送信装置2との相互認証処理を開始してから送受信した全ての乱数と、新たに生成した乱数とを基に暗号鍵を算出する。
【0066】
また、鍵生成部21は、送信装置1から乱数を受信したタイミングで暗号鍵を算出する。このとき、鍵生成部21は、送信装置1との相互認証処理を開始してから送受信した全ての乱数と、新たに送信装置1から受信した乱数とを基に暗号鍵を算出する。
【0067】
そして、鍵生成部21は、算出した暗号鍵を記憶装置23の暗号鍵テーブルに保存する。
【0068】
認証部22の基本的な構成は、送信装置1の認証部12の構成と同じである。
【0069】
受信装置2の認証部22は、受信装置2自身が送信装置1を認証するときと、受信装置2が送信装置1による認証を受けるときに、それらの認証に関する処理を行う。
【0070】
まず、受信装置2が送信装置1を認証するときの認証部22の動作について説明する。
【0071】
認証部22は、送信装置1の認証部12から暗号化メッセージを受信すると、受信した暗号化メッセージを所定のアルゴリズムで復号化することにより、送信装置1の認証部12が生成したメッセージを取得する。認証部22は、取得したメッセージを記憶装置23のメッセージテーブルに格納する。認証部22は、メッセージから乱数を抽出し、抽出した乱数を鍵生成部21に送信する。
【0072】
認証部22は、鍵生成部21が算出した暗号鍵を用いて、送信装置1から受信した署名を復号化し、送信装置1が算出したダイジェスト値を取得する。
【0073】
また、認証部22は、送信装置1との相互認証処理を開始してから送受信した全てのメッセージと今回送信装置1から受信したメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。認証部22は、受信した署名を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したメッセージの正当性を検証する。
【0074】
次に、受信装置2が送信装置1による認証を受けるときの認証部22の動作について説明する。
【0075】
認証部22は、鍵生成部21が生成した乱数を送信装置1に送信するために、乱数を含むメッセージを作成する。認証部22は、作成したメッセージを記憶装置23のメッセージテーブルに格納する。さらに、認証部22は、作成したメッセージを所定のアルゴリズムで暗号化した暗号化メッセージを作成する。
【0076】
また、認証部22は、送信装置1との相互認証処理を開始してから送受信した全てのメッセージと今回送信するメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。さらに、認証部22は、鍵生成部21によって生成された暗号鍵を用いて、算出したダイジェスト値を暗号化した署名を作成する。
【0077】
認証部22は、作成した暗号化メッセージに署名を付与して送信装置1の認証部12に送信する。
【0078】
認証部22は、乱数を含むメッセージの送受信を、送信装置1と所定回数繰り返して実施することにより送信装置1を認証する。
【0079】
記憶装置23は、乱数テーブル、暗号鍵テーブルおよびメッセージテーブルを保存する揮発性メモリであり、RAM(Random Access Memory)などによって実現できる。
【0080】
乱数テーブルには、鍵生成部21が生成した乱数および送信装置1から受信した乱数が格納される。また、暗号鍵テーブルには、鍵生成部21が乱数から生成した暗号鍵が格納される。また、メッセージテーブルには、送信装置1との相互認証処理を開始してから送受信した全てのメッセージが格納される。
【0081】
コンテンツ受信部24は、鍵生成部21が最後に算出した暗号鍵をセッション鍵として使用する。
【0082】
コンテンツ受信部24は、送信装置1のコンテンツ送信部14から暗号化コンテンツメッセージを受信すると、セッション鍵を用いて、受信した暗号化コンテンツメッセージを復号化することにより、送信装置1のコンテンツ送信部14が生成したコンテンツメッセージを取得する。コンテンツ受信部24は、取得したコンテンツメッセージを記憶装置23のメッセージテーブルに格納する。
【0083】
コンテンツ受信部24は、セッション鍵を用いて、送信装置1から受信した署名を復号化し、送信装置1が算出したコンテンツメッセージのダイジェスト値を取得する。
【0084】
また、コンテンツ受信部24は、送信装置1との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信装置1から受信したコンテンツメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。コンテンツ受信部24は、受信した署名を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したコンテンツメッセージの正当性を検証する。
【0085】
受信したコンテンツメッセージが正当であると判別すると、コンテンツ受信部24は、受信したコンテンツメッセージに含まれる暗号化コンテンツを、セッション鍵を用いて復号化し、平文コンテンツを取得する。
【0086】
また、コンテンツ受信部24は、取得した平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。コンテンツ受信部24は、受信したコンテンツメッセージに含まれる、送信装置1が算出した、平文コンテンツのダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得した平文コンテンツのダイジェスト値を比較することにより、受信したコンテンツの正当性を検証する。
【0087】
受信したコンテンツが正当であると判別すると、コンテンツ受信部24は、受信したコンテンツをコンテンツデータベース25に格納する。
【0088】
コンテンツデータベース25は、取得した平文コンテンツを格納するデータベースである。
【0089】
次に図1に示した暗号通信システムで送信装置1と受信装置2が相互認証するときの送信装置1と受信装置2のシーケンスについて説明する。
【0090】
図3は図1に示した暗号通信システムで送信装置1と受信装置2が相互認証するときの送信装置1と受信装置2のシーケンスを示す図である。
【0091】
相互認証処理を開始する前の、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、ならびに受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータを図4aに示す。図4aに示すように、送信装置1の乱数テーブル、暗号鍵テーブルおよびメッセージテーブルには、まだ、乱数、暗号鍵およびメッセージは格納されていない。送信装置1のコンテンツデータベース15には受信装置2に送信するための平文コンテンツが格納されている。また、受信装置2の乱数テーブル、暗号鍵テーブルおよびメッセージテーブルにも、まだ、乱数、暗号鍵およびメッセージは格納されていない。
【0092】
相互認証処理を開始すると、まず、送信装置1の鍵生成部11は、乱数1を生成し、生成した乱数1を記憶装置13の乱数テーブルに格納する(ステップS1)。次に、鍵生成部11は、生成した乱数1から一時鍵1を算出する。また、鍵生成部11は、算出した一時鍵1を記憶装置13の暗号鍵テーブルに格納する。
【0093】
鍵生成部11が乱数1を生成し、一時鍵1を算出すると、認証部12は、乱数1を含むメッセージ1を作成する(ステップS2)。認証部12は、作成したメッセージ1を記憶装置13のメッセージテーブルに格納する。さらに、認証部12は、作成したメッセージ1を所定のアルゴリズムで暗号化した暗号化メッセージ1を作成する。
【0094】
次に、認証部12は、メッセージ1に対して所定のダイジェスト関数処理を施したダイジェスト値1を算出する。さらに、認証部12は、算出したダイジェスト値1を、一時鍵1を用いて暗号化した署名1を作成する(ステップS3)。
【0095】
次に、認証部12は、暗号化メッセージ1に署名1を付与して受信装置2の認証部22に送信する(ステップS4)。
【0096】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータ、ならびに送信装置1から受信装置2に送信されるデータを図4bに示す。図4bに示すように、送信装置1の乱数テーブルには乱数1が格納され、暗号鍵テーブルには一時鍵1が格納され、メッセージテーブルにはメッセージ1が格納されている。また、乱数1を含むメッセージ1を暗号化した暗号化メッセージ1が、署名1とともに送信装置1から受信装置2に送信される。
【0097】
受信装置2の認証部22は、送信装置1の認証部12から暗号化メッセージ1を受信すると、送信装置1の認証部12が施した暗号化に対応する所定のアルゴリズムで、受信した暗号化メッセージ1を復号化し、メッセージ1を取得する。認証部22は、取得したメッセージ1を記憶装置23のメッセージテーブルに格納する。さらに、認証部22は、メッセージ1から乱数1を抽出し、抽出した乱数1を鍵生成部21に送信する(ステップS5)。
【0098】
鍵生成部21は、乱数1を認証部22から受信すると、受信した乱数1を記憶装置23の乱数テーブルに格納する(ステップS6)。次に、鍵生成部21は、受信した乱数1から一時鍵1を算出する。また、鍵生成部21は、算出した一時鍵1を記憶装置23の暗号鍵テーブルに保存する。
【0099】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、ならびに受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータを図4cに示す。図4cに示すように、受信装置2の乱数テーブルには乱数1が格納され、暗号鍵テーブルには一時鍵1が格納、メッセージテーブルにはメッセージ1が格納されている。
【0100】
認証部22は、鍵生成部21が、乱数1を記憶装置23の乱数テーブルに、一時鍵1を記憶装置23の暗号鍵テーブルに保存すると、一時鍵1を用いて送信装置1から受信した署名1を復号化し、送信装置1が算出したダイジェスト値1を取得する。
【0101】
また、認証部22は、送信装置1から受信したメッセージ1に対して所定のダイジェスト関数処理を施したダイジェスト値1−2を算出する。認証部22は、受信した署名1を復号化することにより取得したダイジェスト値1と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値1−2を比較することにより、受信したメッセージ1の正当性を検証する(ステップS7)。
【0102】
受信したメッセージ1が正当でないと判別すると、認証部22は、記憶装置23に格納されているデータを破棄し、送信装置1との通信を終了する。
【0103】
一方、受信したメッセージ1が正当であると判別すると、次は、受信装置2が送信装置1へ新たな乱数を送信する。
【0104】
まず、受信装置2の鍵生成部21は、乱数2を生成し、生成した乱数2を記憶装置23の乱数テーブルに格納する(ステップS8)。次に、鍵生成部21は、記憶装置23の乱数テーブルに格納されている乱数1と生成した乱数2とから一時鍵2を算出する。また、鍵生成部21は、算出した一時鍵2を記憶装置23の暗号鍵テーブルに格納する。
【0105】
鍵生成部21が乱数2を生成し、一時鍵2を算出すると、認証部22は、乱数2を含むメッセージ2を作成する(ステップS9)。認証部22は、作成したメッセージ2を記憶装置23のメッセージテーブルに格納する。さらに、認証部22は、作成したメッセージ2を所定のアルゴリズムで暗号化した暗号化メッセージ2を作成する。
【0106】
次に、認証部22は、メッセージ1とメッセージ2とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値2を算出する。さらに、認証部22は、算出したダイジェスト値2を、一時鍵2を用いて暗号化した署名2を作成する(ステップS10)。
【0107】
次に、認証部22は、暗号化メッセージ2に署名2を付与して送信装置1の認証部12に送信する(ステップS11)。
【0108】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータ、ならびに受信装置2から送信装置1に送信されるデータを図4dに示す。図4dに示すように、受信装置2の乱数テーブルには乱数2が格納され、暗号鍵テーブルには一時鍵2が格納され、メッセージテーブルにはメッセージ2が格納されている。また、乱数2を含むメッセージ2を暗号化した暗号化メッセージ2が、署名2とともに受信装置2から送信装置1に送信される。
【0109】
送信装置1の認証部12は、受信装置2の認証部22から暗号化メッセージ2を受信すると、受信装置2の認証部22が施した暗号化に対応する所定のアルゴリズムで、受信した暗号化メッセージ2を復号化し、メッセージ2を取得する。認証部12は、取得したメッセージ2を記憶装置13のメッセージテーブルに格納する。さらに、認証部12は、メッセージ2から乱数2を抽出し、抽出した乱数2を鍵生成部11に送信する(ステップS12)。
【0110】
鍵生成部11は、乱数2を認証部12から受信すると、受信した乱数2を記憶装置23の乱数テーブルに格納する(ステップS13)。次に、鍵生成部11は、受信した乱数2から一時鍵2を算出する。また、鍵生成部11は、算出した一時鍵2を記憶装置13の暗号鍵テーブルに保存する。
【0111】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、ならびに受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータを図4eに示す。図4eに示すように、送信装置1の乱数テーブルには乱数2が格納され、暗号鍵テーブルには一時鍵2が格納され、メッセージテーブルにはメッセージ2が格納されている。
【0112】
認証部12は、鍵生成部11が、乱数2を記憶装置13の乱数テーブルに、一時鍵2を記憶装置13の暗号鍵テーブルに保存すると、一時鍵2を用いて受信装置2から受信した署名2を復号化し、受信装置2が算出したダイジェスト値2を取得する。
【0113】
また、認証部12は、記憶装置13のメッセージテーブルに格納されているメッセージ1と受信装置2から受信したメッセージ2とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値2−2を算出する。認証部12は、受信した署名2を復号化することにより取得したダイジェスト値2と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値2−2を比較することにより、受信したメッセージ2の正当性を検証する(ステップS14)。
【0114】
受信したメッセージ2が正当でないと判別すると、認証部12は、記憶装置13に格納されているデータを破棄し、受信装置2との通信を終了する。
【0115】
一方、受信したメッセージ2が正当であると判別すると、次は、送信装置1が受信装置2へ新たな乱数を送信する。
【0116】
まず、送信装置1の鍵生成部11は、乱数3を生成し、生成した乱数3を記憶装置13の乱数テーブルに格納する(ステップS15)。次に、鍵生成部11は、記憶装置13の乱数テーブルに格納されている乱数1および乱数2と、生成した乱数3とから暗号鍵を算出する。本実施の形態では、このとき算出した暗号鍵を、送信装置1および受信装置2のコンテンツの送受信のための暗号化に用いるセッション鍵とする。鍵生成部11は、算出したセッション鍵を記憶装置13の暗号鍵テーブルに格納する。
【0117】
鍵生成部11が乱数3を生成し、セッション鍵を算出すると、認証部12は、乱数3を含むメッセージ3を作成する(ステップS16)。認証部12は、作成したメッセージ3を記憶装置13のメッセージテーブルに格納する。さらに、認証部12は、作成したメッセージ3を所定のアルゴリズムで暗号化した暗号化メッセージ3を作成する。
【0118】
次に、認証部12は、メッセージ1とメッセージ2とメッセージ3とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値3を算出する。さらに、認証部12は、算出したダイジェスト値3を、セッション鍵を用いて暗号化した署名3を作成する(ステップS17)。
【0119】
次に、認証部12は、暗号化メッセージ3に署名3を付与して受信装置2の認証部22に送信する(ステップS18)。
【0120】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータ、ならびに送信装置1から受信装置2に送信されるデータを図4fに示す。図4fに示すように、送信装置1の乱数テーブルには乱数3が格納され、暗号鍵テーブルにはセッション鍵が格納され、メッセージテーブルにはメッセージ3が格納されている。また、乱数3を含むメッセージ3を暗号化した暗号化メッセージ3が、署名3とともに送信装置1から受信装置2に送信される。
【0121】
受信装置2の認証部22は、送信装置1の認証部12から暗号化メッセージ3を受信すると、送信装置1の認証部12が施した暗号化に対応する所定のアルゴリズムで、受信した暗号化メッセージ3を復号化し、メッセージ3を取得する。認証部22は、取得したメッセージ3を記憶装置23のメッセージテーブルに格納する。さらに、認証部22は、メッセージ3から乱数3を抽出し、抽出した乱数3を鍵生成部21に送信する(ステップS19)。
【0122】
鍵生成部21は、乱数3を認証部22から受信すると、受信した乱数3を記憶装置23の乱数テーブルに格納する(ステップS20)。次に、鍵生成部21は、記憶装置23の乱数テーブルに格納されている乱数1および乱数2ならびに受信した乱数3からセッション鍵を算出する。また、鍵生成部21は、算出したセッション鍵を記憶装置23の暗号鍵テーブルに保存する。
【0123】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、ならびに受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータを図4gに示す。図4gに示すように、受信装置2の乱数テーブルには乱数3が格納され、暗号鍵テーブルにはセッション鍵が格納され、メッセージテーブルにはメッセージ3が格納されている。
【0124】
認証部22は、鍵生成部21が、乱数3を記憶装置23の乱数テーブルに、セッション鍵を記憶装置23の暗号鍵テーブルに保存すると、セッション鍵を用いて送信装置1から受信した署名3を復号化し、送信装置1が算出したダイジェスト値3を取得する。
【0125】
また、認証部22は、記憶装置23のメッセージテーブルに格納されているメッセージ1とメッセージ2と送信装置1から受信したメッセージ3とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値3−2を算出する。認証部22は、受信した署名3を復号化することにより取得したダイジェスト値3と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値3−2を比較することにより、受信したメッセージ3の正当性を検証する(ステップS21)。
【0126】
受信したメッセージ3が正当でないと判別すると、認証部22は、記憶装置23に格納されているデータを破棄し、送信装置1との通信を終了する。
【0127】
一方、受信したメッセージ3が正当であると判別すると、次に、受信装置2は、送信装置1へ認証が完了した旨を示す認証完了情報を送信する。
【0128】
認証部22は、認証完了情報を含むメッセージ4を作成する(ステップS22)。認証部22は、作成したメッセージ4を記憶装置23のメッセージテーブルに格納する。さらに、認証部22は、作成したメッセージ4をセッション鍵で暗号化した暗号化メッセージ4を作成する。
【0129】
次に、認証部22は、メッセージ1とメッセージ2とメッセージ3とメッセージ4とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値4を算出する。さらに、認証部22は、算出したダイジェスト値4を、セッション鍵を用いて暗号化した署名4を作成する(ステップS23)。
【0130】
次に、認証部22は、暗号化メッセージ4に署名4を付与して送信装置1の認証部12に送信する(ステップS24)。
【0131】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータ、ならびに受信装置2から送信装置1に送信されるデータを図4hに示す。図4hに示すように、受信装置2のメッセージテーブルにはメッセージ4が格納されている。また、認証完了情報を含むメッセージ4を暗号化した暗号化メッセージ4が、署名4とともに受信装置2から送信装置1に送信される。
【0132】
送信装置1の認証部12は、受信装置2の認証部22から暗号化メッセージ4を受信すると、受信した暗号化メッセージ4を、セッション鍵を用いて復号化し、メッセージ4を取得する。認証部12は、取得したメッセージ4を記憶装置13のメッセージテーブルに格納する。
【0133】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、ならびに受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータを図4iに示す。図4iに示すように、送信装置1のメッセージテーブルにはメッセージ4が格納されている。
【0134】
認証部12は、セッション鍵を用いて受信装置2から受信した署名4を復号化し、受信装置2が算出したダイジェスト値4を取得する。
【0135】
また、認証部12は、記憶装置13のメッセージテーブルに格納されているメッセージ1とメッセージ2とメッセージ3と受信装置2から受信したメッセージ4とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値4−2を算出する。認証部12は、受信した署名4を復号化することにより取得したダイジェスト値4と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値4−2を比較することにより、受信したメッセージ4の正当性を検証する(ステップS25)。
【0136】
受信したメッセージ4が正当でないと判別すると、認証部12は、記憶装置13に格納されているデータを破棄し、受信装置2との通信を終了する。
【0137】
一方、受信したメッセージ4が正当であると判別すると、認証部12は、メッセージ4から認証完了情報を抽出し、受信装置2で認証が正常に完了したか否かを判別する。
【0138】
認証部12が受信装置2で認証が正常に完了したことを確認すると、送信装置1および受信装置2の相互認証処理は完了となる。
【0139】
次に図1に示した暗号通信システムで送信装置1から受信装置2へコンテンツを送信するときの送信装置1と受信装置2のシーケンスについて説明する。
【0140】
図5は図1に示した暗号通信システムで送信装置1から受信装置2へコンテンツを送信するときの送信装置1と受信装置2のシーケンスを示す図である。
【0141】
送信装置1のコンテンツ送信部14は、まず、コンテンツデータベース15に格納されている平文コンテンツを読み出す。送信装置1のコンテンツ送信部14は、コンテンツデータベース15から読み出した平文コンテンツを、セッション鍵を用いて暗号化した暗号化コンテンツを作成する(ステップS31)。
【0142】
また、コンテンツ送信部14は、コンテンツデータベース15から読み出した平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する(ステップS32)。
【0143】
次に、コンテンツ送信部14は、暗号化コンテンツおよび平文コンテンツのダイジェスト値を含むコンテンツメッセージ5を作成する(ステップS33)。コンテンツ送信部14は、作成したコンテンツメッセージ5を記憶装置13のメッセージテーブルに格納する。さらに、コンテンツ送信部14は、作成したコンテンツメッセージ5をさらにセッション鍵で暗号化した暗号化コンテンツメッセージ5を作成する。
【0144】
また、コンテンツ送信部14は、受信装置2との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信するコンテンツメッセージ5とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値5を算出する。さらに、コンテンツ送信部14は、算出したダイジェスト値5を、セッション鍵を用いて暗号化した署名5を作成する(ステップS34)。
【0145】
コンテンツ送信部14は、作成した暗号化コンテンツメッセージ5に署名5を付与して受信装置2のコンテンツ受信部24に送信する(ステップS35)。
【0146】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータ、ならびに送信装置1から受信装置2に送信されるデータを図6aに示す。図6aに示すように、送信装置1のメッセージテーブルにはコンテンツメッセージ5が格納されている。また、暗号化コンテンツおよび平文コンテンツのダイジェスト値を含むコンテンツメッセージ5を暗号化した暗号化コンテンツメッセージ5が、署名5とともに送信装置1から受信装置2に送信される。
【0147】
コンテンツ受信部24は、送信装置1のコンテンツ送信部14から暗号化コンテンツメッセージ5を受信すると、受信した暗号化コンテンツメッセージ5を、セッション鍵を用いて復号化する。コンテンツ受信部24は、取得したコンテンツメッセージ5を記憶装置23のメッセージテーブルに格納する。
【0148】
コンテンツ受信部24は、セッション鍵を用いて、送信装置1から受信した署名5を復号化し、送信装置1が算出したコンテンツメッセージ5のダイジェスト値5を取得する。
【0149】
また、コンテンツ受信部24は、送信装置1との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信装置1から受信したコンテンツメッセージ5とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値5−2を算出する。コンテンツ受信部24は、受信した署名5を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値5−2を比較することにより、受信したコンテンツメッセージ5の正当性を検証する(ステップS36)。
【0150】
受信したコンテンツメッセージ5が正当であると判別すると、コンテンツ受信部24は、受信したコンテンツメッセージ5に含まれる暗号化コンテンツを、セッション鍵を用いて復号化し、平文コンテンツを取得する(ステップS37)。
【0151】
また、コンテンツ受信部24は、取得した平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する(ステップS38)。コンテンツ受信部24は、受信したコンテンツメッセージ5に含まれる、送信装置1が算出した、平文コンテンツのダイジェスト値と、受信した平文コンテンツに対して所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したコンテンツの正当性を検証する(ステップS39)。
【0152】
受信したコンテンツが正当であると判別すると、コンテンツ受信部24は、受信したコンテンツをコンテンツデータベース25に格納する。
【0153】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、ならびに受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータを図6bに示す。図6bに示すように、受信装置2のメッセージテーブルにコンテンツメッセージ5が格納され、コンテンツデータベース25にコンテンツが格納されている。
【0154】
平文コンテンツを取得すると、コンテンツ受信部24は、コンテンツ受信部14へ受信が完了した旨を示す受信完了情報を送信する。
【0155】
コンテンツ受信部24は、受信完了情報を含むメッセージ6を作成する(ステップS40)。コンテンツ受信部24は、作成したメッセージ6を記憶装置23のメッセージテーブルに格納する。さらに、コンテンツ受信部24は、作成したメッセージ6をセッション鍵で暗号化した暗号化メッセージ6を作成する。
【0156】
次に、認証部22は、送信装置1との相互認証処理を開始してから送受信した全てのメッセージとメッセージ6とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値6を算出する。さらに、コンテンツ受信部24は、算出したダイジェスト値6を、セッション鍵を用いて暗号化した署名6を作成する(ステップS41)。
【0157】
次に、コンテンツ受信部24は、暗号化メッセージ6に署名6を付与して送信装置1のコンテンツ送信部14に送信する(ステップS42)。
【0158】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータ、ならびに受信装置2から送信装置1に送信されるデータを図6cに示す。図6cに示すように、受信装置2のメッセージテーブルにはメッセージ6が格納されている。また、受信完了情報を含むメッセージ6を暗号化した暗号化メッセージ6が、署名6とともに受信装置2から送信装置1に送信される。
【0159】
送信装置1のコンテンツ送信部14は、受信装置2のコンテンツ受信部24から暗号化メッセージ6を受信すると、受信した暗号化メッセージ6を、セッション鍵を用いて復号化し、メッセージ6を取得する。認証部12は、取得したメッセージ6を記憶装置13のメッセージテーブルに格納する。
【0160】
このときの、送信装置1の記憶装置13およびコンテンツデータベース15に格納されているデータ、ならびに受信装置2の記憶装置23およびコンテンツデータベース25に格納されているデータを図6dに示す。図6dに示すように、送信装置1のメッセージテーブルにはメッセージ6が格納されている。
【0161】
コンテンツ送信部14は、セッション鍵を用いて受信装置2から受信した署名6を復号化し、受信装置2が算出したダイジェスト値6を取得する。
【0162】
また、コンテンツ送信部14は、受信装置2との相互認証処理を開始してから送受信した全てのメッセージと受信装置2から受信したメッセージ6とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値6−2を算出する。コンテンツ送信部14は、受信した署名6を復号化することにより取得したダイジェスト値6と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値6−2を比較することにより、受信したメッセージ6の正当性を検証する(ステップS43)。
【0163】
受信したメッセージ6が正当であると判別すると、コンテンツ送信部14は、メッセージ6から受信完了情報を抽出し、受信装置2で受信が正常に完了したか否かを判別する。
【0164】
コンテンツ送信部14が受信装置2で認証が正常に完了したことを確認すると、送信装置1から受信装置2へのコンテンツの送信処理は完了となる。
【0165】
以上説明したように、本実施形態によれば、送信装置と受信装置が相互に認証しあいながら相互に乱数を通知しあうことにより送信装置と受信装置で乱数を共有し、送信装置から受信装置へ、共有した乱数を使って暗号化したコンテンツを送るので、負荷の軽い処理によってコンテンツのセキュリティ性を高めることができる。
【0166】
また、本実施形態によれば、送信装置と受信装置が相互に乱数を通知しあう中で2回目以降の乱数の通知では、通知すべき乱数だけでなく、相手装置から通知された乱数あるいは更に既に相手装置に通知した乱数を使って暗号化した署名を使って認証を行うので、単純に双方向に認証しあうのに比べてセキュリティ性のより高い認証を行うことができる。
【0167】
本実施形態によれば、RFID(Radio Frequency Identification)リーダライタ、動画再生プレイヤーあるいは音楽再生プレイヤーのような低性能な装置であっても、必要なコンテンツを高速かつ安全に送受信できる。
【0168】
また、本実施形態によれば、送信装置および受信装置は、自装置が新たに生成した乱数だけでなく、相手装置から通知された乱数あるいは更に既に相手装置に通知した乱数に基づいて算出したダイジェスト値を用いて署名を生成するので、第三者によるなりすましを防止できる。
【0169】
また、本実施形態によれば、送信装置および受信装置は、乱数を送受信するごとに一時鍵を生成し、ダイジェスト値をその一時鍵で暗号化して署名とするので、第三者に通信を傍受されても、重要な情報を漏洩する危険性を低減できる。
【0170】
なお、本実施形態では、署名を作成するためのダイジェスト値を、相互認証処理を開始してから送受信した全てのメッセージと新たに送信するメッセージとを連結したデータに基づいて算出する例を示した。相互認証処理を開始してから送受信した全てのメッセージに基づいてダイジェスト値を算出することにより、セキュリティ性を高めることができるが、相互認証処理を開始してから送受信した全てのメッセージを記憶するための容量をもつ記憶装置を通信装置に実装する必要がある。
【0171】
ダイジェスト値の算出方法は、送信装置と受信装置で共通の処理であればよい。例えば、前回のメッセージ送信処理時に算出したダイジェスト値を記録しておき、そのダイジェスト値と今回送信するメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を署名のために用いてもよい。その場合、通信装置の記憶装置の容量を小さくすることができる。
【0172】
また、送信装置および受信装置が送受信するメッセージあるいはコンテンツメッセージに対する暗号化は、送信装置と受信装置で共通の処理であればよく、用途に応じて、メッセージあるいはコンテンツメッセージ全体を暗号化してもよいし、重要な部分のみを暗号化してもよい。メッセージあるいはコンテンツメッセージ全体を暗号化することにより、セキュリティ強度をあげることができるし、重要な部分のみを暗号化することにより、暗号化処理の負荷を低減し、高速に暗号通信を行うことができる。
【0173】
また、本実施形態では、相互認証および暗号鍵の共有をするために、送信装置および受信装置がメッセージを2回ずつ送信する例を示した。メッセージの送受信回数を増やすことにより、セキュリティ強度をあげることができるし、メッセージの送受信回数を減らすことにより、その処理時間を低減でき、高速に暗号通信を行うことができる。
【0174】
また、送信装置および受信装置が相互認証し、共有したセッション鍵を用いて暗号化してよいコンテンツ数は、用途に応じて変更してよい。1つのコンテンツを送信するごとに、相互認証しなおし、暗号鍵を再生成することにより、セキュリティ強度をあげることができる。一方、相互認証し、共有したセッション鍵を用いて複数のコンテンツを送受信することにより、高速に暗号通信を行うことができる。
【符号の説明】
【0175】
1 送信装置
2 受信装置
11、21 鍵生成部
12、22 認証部
13、23 記憶装置
14 コンテンツ送信部
24 コンテンツ受信部
15、25 コンテンツデータベース

【特許請求の範囲】
【請求項1】
コンテンツを送信する第1の通信装置と、
前記第1の通信装置から前記コンテンツを受信する第2の通信装置と、を有し、
一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第1の通信装置と前記第2の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、
前記第1の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第2の通信装置に送信し、
前記第2の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第1の通信装置から受信した前記コンテンツを復号する、暗号通信システム。
【請求項2】
前記相手装置に通知すべき乱数を含むメッセージに、該相手装置に通知すべき乱数と該相手装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記第1の通信装置と前記第2の通信装置が相互に行う、請求項1に記載の暗号通信システム。
【請求項3】
前記第1の通信装置と前記第2の通信装置の少なくとも一方は、前記相手装置に通知すべき乱数と、該相手装置から既に通知された乱数とに加え、該相手装置に既に通知した乱数を用いて、前記相手装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項2に記載の暗号通信システム。
【請求項4】
前記署名は、前記メッセージに基づいて生成した、前記メッセージのダイジェスト値を暗号化したものである、請求項3に記載の暗号通信システム。
【請求項5】
前記署名は、前記ダイジェスト値を、前記相手装置に通知すべき乱数と、該相手装置から既に通知された乱数と、該相手装置に既に通知した乱数とを基に生成した一時鍵で暗号化したものである、請求項4に記載の暗号通信システム。
【請求項6】
前記ダイジェスト値は、前記相手装置に通知すべき乱数を含むメッセージと、該相手装置から既に通知された乱数を含むメッセージと、該相手装置に既に通知した乱数を含むメッセージとを連結したデータのダイジェスト値である、請求項4または5に記載の暗号通信システム。
【請求項7】
前記ダイジェスト値は、前回送信したダイジェスト値と、前記相手装置に通知すべき乱数を含むメッセージとを連結したデータのダイジェスト値である、請求項4または5に記載の暗号通信システム。
【請求項8】
前記通信装置が、前記メッセージを、所定のアルゴリズムで暗号化してから送信する、請求項1から7のいずれか1項に記載の暗号通信システム。
【請求項9】
前記通信装置が、前記メッセージの暗号化において、前記メッセージのうちの一部のみを、前記所定のアルゴリズムで暗号化してから送信する、請求項8に記載の暗号通信システム。
【請求項10】
前記第1の通信装置が、前記コンテンツの暗号化において、前記コンテンツのうちの一部のみを前記セッション鍵で暗号化する、請求項1から9のいずれか1項に記載の暗号通信システム。
【請求項11】
前記第1の通信装置が、複数のコンテンツを、共通に前記セッション鍵で暗号化して前記第2の通信装置に送信する、請求項1から10のいずれか1項に記載の暗号通信システム。
【請求項12】
コンテンツを送信する第1の通信装置と、
前記第1の通信装置から前記コンテンツを受信する第2の通信装置と、
を有する暗号通信システムにより暗号通信を行う暗号通信方法であって、
一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第1の通信装置と前記第2の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、
前記第1の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第2の通信装置に送信し、
前記第2の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第1の通信装置から受信した前記コンテンツを復号する、暗号通信方法。
【請求項13】
前記相手装置に通知すべき乱数を含むメッセージに、該相手装置に通知すべき乱数と該相手装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記第1の通信装置と前記第2の通信装置が相互に行う、請求項12に記載の暗号通信方法。
【請求項14】
前記第1の通信装置と前記第2の通信装置の少なくとも一方は、前記相手装置に通知すべき乱数と、該相手装置から既に通知された乱数とに加え、該相手装置に既に通知した乱数を用いて、前記相手装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項13に記載の暗号通信方法。
【請求項15】
受信装置に通知すべき乱数を含むメッセージに、該受信装置に通知すべき乱数と該受信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記受信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記受信装置に通知した乱数および前記受信装置から通知された乱数を前記受信装置と共有する、認証手段と、
共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記受信装置に送信する、コンテンツ送信手段と、
を有する送信装置。
【請求項16】
前記認証手段は、前記受信装置に通知すべき乱数を含むメッセージに、該受信装置に通知すべき乱数と該受信装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記受信装置と相互に所定回数行う、請求項15に記載の送信装置。
【請求項17】
前記認証手段は、前記受信装置に通知すべき乱数と、該受信装置から既に通知された乱数とに加え、該受信装置に既に通知した乱数を用いて、前記受信装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項16に記載の送信装置。
【請求項18】
送信装置に通知すべき乱数を含むメッセージに、該送信装置に通知すべき乱数と該送信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記送信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記送信装置に通知した乱数および前記送信装置から通知された乱数を前記送信装置と共有する、認証手段と、
共有した複数の前記乱数を用いて生成したセッション鍵で、前記送信装置から受信した暗号化されたコンテンツを復号する、コンテンツ受信手段と、
を有する受信装置。
【請求項19】
前記認証手段は、前記送信装置に通知すべき乱数を含むメッセージに、該送信装置に通知すべき乱数と該送信装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記送信装置と相互に所定回数行う、請求項18に記載の受信装置。
【請求項20】
前記認証手段は、前記送信装置に通知すべき乱数と、該送信装置から既に通知された乱数とに加え、該送信装置に既に通知した乱数を用いて、前記送信装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項19に記載の受信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4a】
image rotate

【図4b】
image rotate

【図4c】
image rotate

【図4d】
image rotate

【図4e】
image rotate

【図4f】
image rotate

【図4g】
image rotate

【図4h】
image rotate

【図4i】
image rotate

【図5】
image rotate

【図6a】
image rotate

【図6b】
image rotate

【図6c】
image rotate

【図6d】
image rotate


【公開番号】特開2010−206762(P2010−206762A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−53186(P2009−53186)
【出願日】平成21年3月6日(2009.3.6)
【出願人】(390001395)NECシステムテクノロジー株式会社 (438)
【Fターム(参考)】