(57)【要約】【課題】低性能な通信装置により高速かつセキュリティ性の高い暗号通信を行うための技術を提供する。【解決手段】本発明の暗号通信システムは、コンテンツを送信する第１の通信装置と、前記第１の通信装置から前記コンテンツを受信する第２の通信装置を有し、一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数と該他方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、それぞれの通信装置が、相手装置に通知した乱数および前記相手装置から通知された乱数を互いに共有し、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを送受信する。【選択図】図１
2010206762.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツを送信する第１の通信装置と、
前記第１の通信装置から前記コンテンツを受信する第２の通信装置と、を有し、
一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第１の通信装置と前記第２の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、
前記第１の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第２の通信装置に送信し、
前記第２の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第１の通信装置から受信した前記コンテンツを復号する、暗号通信システム。
【請求項２】
前記相手装置に通知すべき乱数を含むメッセージに、該相手装置に通知すべき乱数と該相手装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記第１の通信装置と前記第２の通信装置が相互に行う、請求項１に記載の暗号通信システム。
【請求項３】
前記第１の通信装置と前記第２の通信装置の少なくとも一方は、前記相手装置に通知すべき乱数と、該相手装置から既に通知された乱数とに加え、該相手装置に既に通知した乱数を用いて、前記相手装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項２に記載の暗号通信システム。
【請求項４】
前記署名は、前記メッセージに基づいて生成した、前記メッセージのダイジェスト値を暗号化したものである、請求項３に記載の暗号通信システム。
【請求項５】
前記署名は、前記ダイジェスト値を、前記相手装置に通知すべき乱数と、該相手装置から既に通知された乱数と、該相手装置に既に通知した乱数とを基に生成した一時鍵で暗号化したものである、請求項４に記載の暗号通信システム。
【請求項６】
前記ダイジェスト値は、前記相手装置に通知すべき乱数を含むメッセージと、該相手装置から既に通知された乱数を含むメッセージと、該相手装置に既に通知した乱数を含むメッセージとを連結したデータのダイジェスト値である、請求項４または５に記載の暗号通信システム。
【請求項７】
前記ダイジェスト値は、前回送信したダイジェスト値と、前記相手装置に通知すべき乱数を含むメッセージとを連結したデータのダイジェスト値である、請求項４または５に記載の暗号通信システム。
【請求項８】
前記通信装置が、前記メッセージを、所定のアルゴリズムで暗号化してから送信する、請求項１から７のいずれか１項に記載の暗号通信システム。
【請求項９】
前記通信装置が、前記メッセージの暗号化において、前記メッセージのうちの一部のみを、前記所定のアルゴリズムで暗号化してから送信する、請求項８に記載の暗号通信システム。
【請求項１０】
前記第１の通信装置が、前記コンテンツの暗号化において、前記コンテンツのうちの一部のみを前記セッション鍵で暗号化する、請求項１から９のいずれか１項に記載の暗号通信システム。
【請求項１１】
前記第１の通信装置が、複数のコンテンツを、共通に前記セッション鍵で暗号化して前記第２の通信装置に送信する、請求項１から１０のいずれか１項に記載の暗号通信システム。
【請求項１２】
コンテンツを送信する第１の通信装置と、
前記第１の通信装置から前記コンテンツを受信する第２の通信装置と、
を有する暗号通信システムにより暗号通信を行う暗号通信方法であって、
一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第１の通信装置と前記第２の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、
前記第１の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第２の通信装置に送信し、
前記第２の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第１の通信装置から受信した前記コンテンツを復号する、暗号通信方法。
【請求項１３】
前記相手装置に通知すべき乱数を含むメッセージに、該相手装置に通知すべき乱数と該相手装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記第１の通信装置と前記第２の通信装置が相互に行う、請求項１２に記載の暗号通信方法。
【請求項１４】
前記第１の通信装置と前記第２の通信装置の少なくとも一方は、前記相手装置に通知すべき乱数と、該相手装置から既に通知された乱数とに加え、該相手装置に既に通知した乱数を用いて、前記相手装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項１３に記載の暗号通信方法。
【請求項１５】
受信装置に通知すべき乱数を含むメッセージに、該受信装置に通知すべき乱数と該受信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記受信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記受信装置に通知した乱数および前記受信装置から通知された乱数を前記受信装置と共有する、認証手段と、
共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記受信装置に送信する、コンテンツ送信手段と、
を有する送信装置。
【請求項１６】
前記認証手段は、前記受信装置に通知すべき乱数を含むメッセージに、該受信装置に通知すべき乱数と該受信装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記受信装置と相互に所定回数行う、請求項１５に記載の送信装置。
【請求項１７】
前記認証手段は、前記受信装置に通知すべき乱数と、該受信装置から既に通知された乱数とに加え、該受信装置に既に通知した乱数を用いて、前記受信装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項１６に記載の送信装置。
【請求項１８】
送信装置に通知すべき乱数を含むメッセージに、該送信装置に通知すべき乱数と該送信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記送信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記送信装置に通知した乱数および前記送信装置から通知された乱数を前記送信装置と共有する、認証手段と、
共有した複数の前記乱数を用いて生成したセッション鍵で、前記送信装置から受信した暗号化されたコンテンツを復号する、コンテンツ受信手段と、
を有する受信装置。
【請求項１９】
前記認証手段は、前記送信装置に通知すべき乱数を含むメッセージに、該送信装置に通知すべき乱数と該送信装置から既に通知された乱数とを基に暗号化した署名を付与して送信することを、前記送信装置と相互に所定回数行う、請求項１８に記載の受信装置。
【請求項２０】
前記認証手段は、前記送信装置に通知すべき乱数と、該送信装置から既に通知された乱数とに加え、該送信装置に既に通知した乱数を用いて、前記送信装置に通知すべき乱数を含むメッセージに付与する前記署名を暗号化する、請求項１９に記載の受信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号通信システム、暗号通信方法、送信装置および受信装置に関する。
【背景技術】
【０００２】
公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式により、送受信するコンテンツの機密性を保護する暗号通信システムが一般に知られている。非特許文献１には、公開鍵暗号方式を用いて共通鍵を安全に共有する方式が提示されている。以下に、公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式による暗号通信について説明する。
【０００３】
まず、コンテンツを送信する送信装置およびコンテンツを受信する受信装置は、それぞれの公開鍵証明書を保持している。送信装置および受信装置は、それぞれの公開鍵証明書を交換し、互いの装置を相互認証する。
【０００４】
公開鍵証明書による相互認証が完了すると、送信装置は、コンテンツを暗号化するために共通鍵暗号方式のコンテンツ暗号鍵を生成する。さらに、送信装置は、送信者を明確にしたり、改ざんが行われていないことを確認したりするために用いる署名を作成する。送信装置は、生成したコンテンツ暗号鍵を受信装置の公開鍵で暗号化し、署名を送信装置の秘密鍵で暗号化する。送信装置は、暗号化したコンテンツ暗号鍵に暗号化した署名を付与して受信装置に送信する。
【０００５】
受信装置は、送信装置から暗号化されたコンテンツ暗号鍵および暗号化された署名を受信すると、まず、暗号化された署名を送信装置の公開鍵で復号化し、検証する。受信装置は、署名の検証に成功すると、暗号化されたコンテンツ暗号鍵を受信装置の秘密鍵で復号化し、コンテンツ暗号鍵を取得する。
【０００６】
コンテンツ暗号鍵の共有が成功すると、送信側装置は、平文コンテンツをコンテンツ暗号鍵で暗号化した暗号化コンテンツを作成し、受信装置に送信する。
【０００７】
受信装置は、受信した暗号化コンテンツをコンテンツ暗号鍵で復号化し、平文コンテンツを取得する。
【０００８】
このように、公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式により、送受信するコンテンツの機密性を保護することができるが、公開鍵暗号方式は、共通鍵暗号方式と比べて演算処理が複雑であり、共通鍵暗号方式の数十倍の時間がかかる。また、公開鍵証明書および公開鍵のデータサイズは大きいため、送信装置および受信装置にこれらのデータを格納するための領域を確保する必要がある。
【０００９】
また、安全に暗号鍵を共有する技術として、Diffie-Hellman鍵交換がある。Diffie-Hellman鍵交換では、送信装置および受信装置が、それぞれの装置で生成した乱数およびそれぞれの装置の秘密鍵から生成した公開情報を、互いに送受信しあい、その公開情報から共通の暗号鍵を算出する。Diffie-Hellman鍵交換についても、公開鍵暗号方式と同様に演算処理に時間がかかるという問題がある。
【００１０】
近年ではコンテンツの機密保持の要求が強く、比較的性能が低い通信装置においても暗号通信が要求されることがある。しかしながら、性能が低い通信装置では、暗号化および復号化の演算処理に時間がかかりすぎるため、上述したような公開鍵暗号方式あるいはDiffie-Hellman鍵交換を適用することが困難な場合がある。
【００１１】
なお、特許文献１では、通信装置が生成した暗号鍵を用いて相手側の通信装置を認証する技術が提供されている。
【００１２】
特許文献１では、それぞれの通信装置が固定鍵を記憶しておき、さらに、事前に生成した第１の乱数および第２の乱数を共有しておく。一方の通信装置が固定鍵を用いて第１の乱数を暗号化することにより暗号鍵を生成し、その暗号鍵を用いて第２の乱数を暗号化することにより検証用データを生成し、他方の通信装置にその検証用データを送信する。他方の通信装置も同様に固定鍵を用いて第１の乱数を暗号化することにより暗号鍵を生成し、その暗号鍵を用いて受信した検証用データを復号化することにより第２の乱数を抽出し、自装置が保有する第２の乱数と比較することにより相手側の通信装置を検証する。
【００１３】
また、特許文献２では、受信装置が生成した乱数に基づいて送信装置および受信装置が暗号鍵を共有する技術が提供されている。
【００１４】
特許文献２の受信装置は、自身が生成した乱数を送信装置に送信する。送信装置は、受信装置から受信した乱数に基づいて暗号鍵を生成し、その暗号鍵を用いて受信した乱数を暗号化し、受信装置に送信する。受信装置は、自装置が送信した乱数に基づいて送信装置と同様に暗号鍵を生成し、その暗号鍵を用いて送信装置から受信した暗号化乱数を復号化し、復号化により取得した乱数と自装置が送信した乱数とを比較することにより暗号鍵の共有ができたことを判別する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−１５９０６３号公報
【特許文献２】特開２００６−３３９９６３号公報
【非特許文献】
【００１６】
【非特許文献１】ＩＳＯ−ＩＥＣ１８０３３−２  ＲＳＡ−ＫＥＭ
【発明の概要】
【発明が解決しようとする課題】
【００１７】
特許文献１もしくは特許文献２の技術を用いれば、公開鍵暗号方式やDiffie-Hellman鍵交換を用いずに送信装置と受信装置の間で暗号鍵を共有できるため、短時間で暗号鍵を共有できる。しかし、暗号鍵の元となる乱数の送受信を第三者に傍受されると、その第三者によって暗号鍵を解読されるおそれがある。
【００１８】
本発明の目的は、低性能な通信装置により高速かつセキュリティ性の高い暗号通信を行うための技術を提供することである。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明の暗号通信システムは、コンテンツを送信する第１の通信装置と、前記第１の通信装置から前記コンテンツを受信する第２の通信装置と、を有し、一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第１の通信装置と前記第２の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、前記第１の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第２の通信装置に送信し、前記第２の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第１の通信装置から受信した前記コンテンツを復号する。
【００２０】
また、上記目的を達成するために、本発明の暗号通信方法は、コンテンツを送信する第１の通信装置と、前記第１の通信装置から前記コンテンツを受信する第２の通信装置と、を有する暗号通信システムにより暗号通信を行う暗号通信方法であって、一方の通信装置が、他方の通信装置に通知すべき乱数を含むメッセージに、該他方の通信装置に通知すべき乱数を基に暗号化した署名を付与して送信し、前記他方の通信装置が、受信した前記メッセージに含まれていた前記乱数を基に前記署名を検証し、更に、前記他方の通信装置が、前記一方の通信装置に通知すべき乱数を含むメッセージに、該一方の通信装置に通知すべき乱数と該一方の通信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記一方の通信装置が、受信した前記メッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記第１の通信装置と前記第２の通信装置が、相手装置に通知した乱数および相手装置から通知された乱数を互いに共有し、前記第１の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記第２の通信装置に送信し、前記第２の通信装置が、共有した複数の前記乱数を用いて生成したセッション鍵で、前記第１の通信装置から受信した前記コンテンツを復号する。
【００２１】
また、上記目的を達成するために、本発明の送信装置は、受信装置に通知すべき乱数を含むメッセージに、該受信装置に通知すべき乱数と該受信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記受信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記受信装置に通知した乱数および前記受信装置から通知された乱数を前記受信装置と共有する、認証手段と、共有した複数の前記乱数を用いて生成したセッション鍵で暗号化したコンテンツを前記受信装置に送信する、コンテンツ送信手段を有する。
【００２２】
また、上記目的を達成するために、本発明の受信装置は、送信装置に通知すべき乱数を含むメッセージに、該送信装置に通知すべき乱数と該送信装置から既に通知された乱数とを基に暗号化した署名を付与して送信し、前記送信装置から受信したメッセージに含まれていた前記乱数と自身の保持している乱数とを基に前記署名を検証することにより、前記送信装置に通知した乱数および前記送信装置から通知された乱数を前記送信装置と共有する、認証手段と、共有した複数の前記乱数を用いて生成したセッション鍵で、前記送信装置から受信した暗号化されたコンテンツを復号する、コンテンツ受信手段を有する。
【発明の効果】
【００２３】
本発明によれば、低性能な通信装置により高速かつセキュリティ性の高い暗号通信を行うことができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態における暗号通信システムの構成を示すブロック図である。
【図２】記憶装置に格納されるテーブルの例を示す図である。
【図３】図１に示した送信装置と受信装置が相互認証するときの送信装置と受信装置のシーケンスを示す図である。
【図４ａ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｂ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｃ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｄ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｅ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｆ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｇ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｈ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図４ｉ】送信装置と受信装置が相互認証するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図５】図１に示した送信装置から受信装置へコンテンツを送信するときの送信装置と受信装置のシーケンスを示す図である。
【図６ａ】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図６ｂ】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図６ｃ】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【図６ｄ】送信装置から受信装置へコンテンツを送信するときの送信装置および受信装置に格納されている各テーブルおよびデータの状態、ならびに送受信されるデータを示す図である。
【発明を実施するための形態】
【００２５】
次に本発明について図面を参照して詳細に説明する。
【００２６】
図１は本発明の一実施形態における暗号通信システムの構成を示すブロック図である。
【００２７】
図１に示すように、暗号通信システムは、送信装置１および受信装置２を有する。
【００２８】
送信装置１は、受信装置２と相互に認証しあい、暗号鍵を共有し、自装置内に保有する平文コンテンツを暗号化して受信装置２に送信する通信装置である。
【００２９】
受信装置２は、送信装置１と相互に認証しあい、暗号鍵を共有し、送信装置１から受信した暗号化コンテンツを復号化して平文コンテンツを取得する通信装置である。
【００３０】
まず、本実施形態の暗号通信システムの概略の動作について説明する。
【００３１】
送信装置１と受信装置２が交互に乱数を通知することにより複数の乱数を共有し、それらの乱数を用いて暗号鍵を生成する。
【００３２】
本実施形態の送信装置１および受信装置２が生成する暗号鍵には２種類がある。１つは、コンテンツ転送の前段階として送信装置１と受信装置２とが共有すべき乱数を相互に通知するときに用いる暗号鍵である。それを一時鍵と呼ぶことにする。もう１つは、乱数の共有が完了した後、送信装置１から受信装置２へコンテンツを転送するのに用いる暗号鍵である。それをセッション鍵と呼ぶことにする。
【００３３】
送信装置１から受信装置２へ乱数を通知するとき、その乱数を含むメッセージには送信装置１の署名が付加され、受信装置２はその署名を検証することにより送信装置１を認証する。逆に、受信装置２から送信装置１へ乱数を通知するとき、その乱数を含むメッセージには受信装置２の署名が付加され、送信装置１はその署名を検証することにより受信装置２を認証する。
【００３４】
それらの署名には乱数から生成された暗号鍵による暗号化が適用されている。２つ目以降の乱数を通知するためのメッセージに付加される署名には、それまでに累積的に共有した全ての乱数を用いて生成した暗号鍵による暗号化が適用される。
【００３５】
なお、送信装置１と受信装置２は、複数の乱数の共有が完了するまでは、それまでに共有した乱数を用いて生成した暗号鍵を一時鍵として署名の暗号化に使用する。
【００３６】
一方、送信装置１と受信装置２は、複数の乱数の共有が完了すると、最終的に共有した全ての乱数を用いて生成した暗号鍵をセッション鍵として送信装置１から受信装置２へ送信するコンテンツの暗号化およびメッセージに付加される署名の暗号化に使用する。
【００３７】
以下、送信装置１および受信装置２のそれぞれの構成および動作について説明する。
【００３８】
送信装置１は、鍵生成部１１、認証部１２、記憶装置１３、コンテンツ送信部１４およびコンテンツデータベース１５を有する。
【００３９】
鍵生成部１１は、乱数を生成し、生成した乱数を記憶装置１３の乱数テーブルに格納する。また、鍵生成部１１は、受信装置２が生成した乱数を認証部１２から受信すると、受信した乱数を記憶装置１３の乱数テーブルに格納する。
【００４０】
鍵生成部１１は、送信装置１から受信装置２へ通知すべき乱数を生成し、その乱数を生成したタイミングで暗号鍵を算出する。このとき、鍵生成部１１は、受信装置２との相互認証処理を開始してから送受信した全ての乱数と、新たに生成した乱数とを基に暗号鍵を算出する。
【００４１】
また、鍵生成部１１は、受信装置２から乱数を受信したタイミングで暗号鍵を算出する。このとき、鍵生成部１１は、受信装置２との相互認証処理を開始してから送受信した全ての乱数と、新たに受信装置２から受信した乱数とを基に暗号鍵を算出する。
【００４２】
そして、鍵生成部１１は、算出した暗号鍵を記憶装置１３の暗号鍵テーブルに格納する。
【００４３】
送信装置１の認証部１２は、送信装置１自身が受信装置２を認証するときと、送信装置１が受信装置２による認証を受けるときに、それらの認証に関する処理を行う。
【００４４】
まず、送信装置１が受信装置２による認証を受けるときの認証部１２の動作について説明する。
【００４５】
認証部１２は、鍵生成部１１が生成した乱数を受信装置２に送信するために、乱数を含むメッセージを作成する。認証部１２は、作成したメッセージを記憶装置１３のメッセージテーブルに格納する。さらに、認証部１２は、作成したメッセージを所定のアルゴリズムで暗号化した暗号化メッセージを作成する。なお、暗号鍵を共有する前にメッセージを暗号化および復号化するアルゴリズムは、送信装置１および受信装置２が共有している共通処理である。また、暗号鍵を共有した後、認証部１２は、鍵生成部１１が最後に算出した暗号鍵をセッション鍵とし、作成したメッセージをセッション鍵で暗号化する。
【００４６】
また、認証部１２は、受信装置２との相互認証処理を開始してから送受信した全てのメッセージと今回送信するメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。なお、所定のダイジェスト関数処理は、送信装置１および受信装置２が共有している共通処理である。ダイジェスト関数の例として、ＭＤ５（Message Digest 5）やＳＨＡ−１（Secure Hash Algorithm 1）などがあげられる。さらに、認証部１２は、鍵生成部１１によって生成された暗号鍵を用いて、算出したダイジェスト値を暗号化した署名を作成する。
【００４７】
認証部１２は、作成した暗号化メッセージに署名を付与して受信装置２の認証部２２に送信する。認証部１２は、メッセージを暗号化してから送信することにより、メッセージの機密性を保護する。また、認証部１２は、暗号化メッセージに署名を付与して送信することにより、メッセージの完全性を保護する。
【００４８】
次に、送信装置１が受信装置２を認証するときの認証部１２の動作について説明する。
【００４９】
認証部１２は、受信装置２の認証部２２から暗号化メッセージを受信すると、受信した暗号化メッセージを所定のアルゴリズムで復号化することにより、受信装置２の認証部２２が生成したメッセージを取得する。認証部１２は、取得したメッセージを記憶装置１３のメッセージテーブルに格納する。さらに、認証部１２は、取得したメッセージから乱数を抽出し、抽出した乱数を鍵生成部１１に送信する。
【００５０】
認証部１２は、鍵生成部１１が算出した暗号鍵を用いて、受信装置２から受信した署名を復号化することにより、受信装置２が算出したダイジェスト値を取得する。
【００５１】
また、認証部１２は、受信装置２との相互認証処理を開始してから送受信した全てのメッセージと今回受信装置２から受信したメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。認証部１２は、受信した署名を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したメッセージの正当性を検証する。
【００５２】
認証部１２は、乱数を含むメッセージの送受信を、受信装置２と所定回数繰り返して実施することにより受信装置２を認証する。送信装置１および受信装置２は、相互認証処理を開始してから送受信した全てのメッセージを累積してダイジェスト値を作成するため、第三者によるなりすましを防止できる。また、送信装置１および受信装置２は、相互認証処理を開始してから送受信した全ての乱数を累積して暗号鍵を作成するため、第三者にメッセージの送受信を傍受されても、その第三者に暗号鍵を漏洩する危険性を低減できる。
【００５３】
記憶装置１３は、乱数テーブル、暗号鍵テーブルおよびメッセージテーブルを格納する揮発性メモリであり、ＲＡＭ（Random Access Memory）などによって実現できる。
【００５４】
記憶装置１３に格納されるテーブルの例を図２に示す。乱数テーブルには、鍵生成部１１が生成した乱数および受信装置２から受信した乱数が格納される。また、暗号鍵テーブルには、鍵生成部１１が乱数から生成した暗号鍵が格納される。また、メッセージテーブルには、受信装置２との相互認証処理を開始してから送受信した全てのメッセージが格納される。
【００５５】
コンテンツ送信部１４は、鍵生成部１１が最後に算出した暗号鍵をセッション鍵として使用する。セッション鍵は、送信装置１および受信装置２が複数のメッセージを送受信することにより取得した複数の乱数を累積して作成されているため、セキュリティの強度は高くなっている。
【００５６】
コンテンツ送信部１４は、送信装置１が保有する平文コンテンツを、セッション鍵を用いて暗号化した暗号化コンテンツを作成する。
【００５７】
また、コンテンツ送信部１４は、平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。
【００５８】
コンテンツ送信部１４は、暗号化コンテンツおよび平文コンテンツのダイジェスト値を含むコンテンツメッセージを作成する。コンテンツ送信部１４は、作成したコンテンツメッセージを記憶装置１３のメッセージテーブルに格納する。コンテンツ送信部１４は、作成したコンテンツメッセージをさらにセッション鍵で暗号化した暗号化コンテンツメッセージを作成する。
【００５９】
また、コンテンツ送信部１４は、受信装置２との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信するコンテンツメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。さらに、コンテンツ送信部１４は、算出したダイジェスト値を、セッション鍵を用いて暗号化した署名を作成する。
【００６０】
コンテンツ送信部１４は、作成した暗号化コンテンツメッセージに署名を付与して受信装置２のコンテンツ受信部２４に送信する。
【００６１】
コンテンツデータベース１５は、平文コンテンツが格納されるデータベースである。
【００６２】
一方、受信装置２は、鍵生成部２１、認証部２２、記憶装置２３、コンテンツ受信部２４およびコンテンツデータベース２５を有する。
【００６３】
鍵生成部２１の基本的な構成は、送信装置１の鍵生成部１１の構成と同じである。
【００６４】
鍵生成部２１は、乱数を生成し、生成した乱数を記憶装置２３の乱数テーブルに格納する。また、鍵生成部２１は、送信装置１が生成した乱数を認証部２２から受信すると、受信した乱数を記憶装置２３の乱数テーブルに格納する。
【００６５】
鍵生成部２１は、受信装置２から送信装置１へ通知すべき乱数を生成し、その乱数を生成したタイミングで暗号鍵を算出する。このとき、鍵生成部２１は、送信装置２との相互認証処理を開始してから送受信した全ての乱数と、新たに生成した乱数とを基に暗号鍵を算出する。
【００６６】
また、鍵生成部２１は、送信装置１から乱数を受信したタイミングで暗号鍵を算出する。このとき、鍵生成部２１は、送信装置１との相互認証処理を開始してから送受信した全ての乱数と、新たに送信装置１から受信した乱数とを基に暗号鍵を算出する。
【００６７】
そして、鍵生成部２１は、算出した暗号鍵を記憶装置２３の暗号鍵テーブルに保存する。
【００６８】
認証部２２の基本的な構成は、送信装置１の認証部１２の構成と同じである。
【００６９】
受信装置２の認証部２２は、受信装置２自身が送信装置１を認証するときと、受信装置２が送信装置１による認証を受けるときに、それらの認証に関する処理を行う。
【００７０】
まず、受信装置２が送信装置１を認証するときの認証部２２の動作について説明する。
【００７１】
認証部２２は、送信装置１の認証部１２から暗号化メッセージを受信すると、受信した暗号化メッセージを所定のアルゴリズムで復号化することにより、送信装置１の認証部１２が生成したメッセージを取得する。認証部２２は、取得したメッセージを記憶装置２３のメッセージテーブルに格納する。認証部２２は、メッセージから乱数を抽出し、抽出した乱数を鍵生成部２１に送信する。
【００７２】
認証部２２は、鍵生成部２１が算出した暗号鍵を用いて、送信装置１から受信した署名を復号化し、送信装置１が算出したダイジェスト値を取得する。
【００７３】
また、認証部２２は、送信装置１との相互認証処理を開始してから送受信した全てのメッセージと今回送信装置１から受信したメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。認証部２２は、受信した署名を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したメッセージの正当性を検証する。
【００７４】
次に、受信装置２が送信装置１による認証を受けるときの認証部２２の動作について説明する。
【００７５】
認証部２２は、鍵生成部２１が生成した乱数を送信装置１に送信するために、乱数を含むメッセージを作成する。認証部２２は、作成したメッセージを記憶装置２３のメッセージテーブルに格納する。さらに、認証部２２は、作成したメッセージを所定のアルゴリズムで暗号化した暗号化メッセージを作成する。
【００７６】
また、認証部２２は、送信装置１との相互認証処理を開始してから送受信した全てのメッセージと今回送信するメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。さらに、認証部２２は、鍵生成部２１によって生成された暗号鍵を用いて、算出したダイジェスト値を暗号化した署名を作成する。
【００７７】
認証部２２は、作成した暗号化メッセージに署名を付与して送信装置１の認証部１２に送信する。
【００７８】
認証部２２は、乱数を含むメッセージの送受信を、送信装置１と所定回数繰り返して実施することにより送信装置１を認証する。
【００７９】
記憶装置２３は、乱数テーブル、暗号鍵テーブルおよびメッセージテーブルを保存する揮発性メモリであり、ＲＡＭ（Random Access Memory）などによって実現できる。
【００８０】
乱数テーブルには、鍵生成部２１が生成した乱数および送信装置１から受信した乱数が格納される。また、暗号鍵テーブルには、鍵生成部２１が乱数から生成した暗号鍵が格納される。また、メッセージテーブルには、送信装置１との相互認証処理を開始してから送受信した全てのメッセージが格納される。
【００８１】
コンテンツ受信部２４は、鍵生成部２１が最後に算出した暗号鍵をセッション鍵として使用する。
【００８２】
コンテンツ受信部２４は、送信装置１のコンテンツ送信部１４から暗号化コンテンツメッセージを受信すると、セッション鍵を用いて、受信した暗号化コンテンツメッセージを復号化することにより、送信装置１のコンテンツ送信部１４が生成したコンテンツメッセージを取得する。コンテンツ受信部２４は、取得したコンテンツメッセージを記憶装置２３のメッセージテーブルに格納する。
【００８３】
コンテンツ受信部２４は、セッション鍵を用いて、送信装置１から受信した署名を復号化し、送信装置１が算出したコンテンツメッセージのダイジェスト値を取得する。
【００８４】
また、コンテンツ受信部２４は、送信装置１との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信装置１から受信したコンテンツメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。コンテンツ受信部２４は、受信した署名を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したコンテンツメッセージの正当性を検証する。
【００８５】
受信したコンテンツメッセージが正当であると判別すると、コンテンツ受信部２４は、受信したコンテンツメッセージに含まれる暗号化コンテンツを、セッション鍵を用いて復号化し、平文コンテンツを取得する。
【００８６】
また、コンテンツ受信部２４は、取得した平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する。コンテンツ受信部２４は、受信したコンテンツメッセージに含まれる、送信装置１が算出した、平文コンテンツのダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得した平文コンテンツのダイジェスト値を比較することにより、受信したコンテンツの正当性を検証する。
【００８７】
受信したコンテンツが正当であると判別すると、コンテンツ受信部２４は、受信したコンテンツをコンテンツデータベース２５に格納する。
【００８８】
コンテンツデータベース２５は、取得した平文コンテンツを格納するデータベースである。
【００８９】
次に図１に示した暗号通信システムで送信装置１と受信装置２が相互認証するときの送信装置１と受信装置２のシーケンスについて説明する。
【００９０】
図３は図１に示した暗号通信システムで送信装置１と受信装置２が相互認証するときの送信装置１と受信装置２のシーケンスを示す図である。
【００９１】
相互認証処理を開始する前の、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、ならびに受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータを図４ａに示す。図４ａに示すように、送信装置１の乱数テーブル、暗号鍵テーブルおよびメッセージテーブルには、まだ、乱数、暗号鍵およびメッセージは格納されていない。送信装置１のコンテンツデータベース１５には受信装置２に送信するための平文コンテンツが格納されている。また、受信装置２の乱数テーブル、暗号鍵テーブルおよびメッセージテーブルにも、まだ、乱数、暗号鍵およびメッセージは格納されていない。
【００９２】
相互認証処理を開始すると、まず、送信装置１の鍵生成部１１は、乱数１を生成し、生成した乱数１を記憶装置１３の乱数テーブルに格納する（ステップＳ１）。次に、鍵生成部１１は、生成した乱数１から一時鍵１を算出する。また、鍵生成部１１は、算出した一時鍵１を記憶装置１３の暗号鍵テーブルに格納する。
【００９３】
鍵生成部１１が乱数１を生成し、一時鍵１を算出すると、認証部１２は、乱数１を含むメッセージ１を作成する（ステップＳ２）。認証部１２は、作成したメッセージ１を記憶装置１３のメッセージテーブルに格納する。さらに、認証部１２は、作成したメッセージ１を所定のアルゴリズムで暗号化した暗号化メッセージ１を作成する。
【００９４】
次に、認証部１２は、メッセージ１に対して所定のダイジェスト関数処理を施したダイジェスト値１を算出する。さらに、認証部１２は、算出したダイジェスト値１を、一時鍵１を用いて暗号化した署名１を作成する（ステップＳ３）。
【００９５】
次に、認証部１２は、暗号化メッセージ１に署名１を付与して受信装置２の認証部２２に送信する（ステップＳ４）。
【００９６】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータ、ならびに送信装置１から受信装置２に送信されるデータを図４ｂに示す。図４ｂに示すように、送信装置１の乱数テーブルには乱数１が格納され、暗号鍵テーブルには一時鍵１が格納され、メッセージテーブルにはメッセージ１が格納されている。また、乱数１を含むメッセージ１を暗号化した暗号化メッセージ１が、署名１とともに送信装置１から受信装置２に送信される。
【００９７】
受信装置２の認証部２２は、送信装置１の認証部１２から暗号化メッセージ１を受信すると、送信装置１の認証部１２が施した暗号化に対応する所定のアルゴリズムで、受信した暗号化メッセージ１を復号化し、メッセージ１を取得する。認証部２２は、取得したメッセージ１を記憶装置２３のメッセージテーブルに格納する。さらに、認証部２２は、メッセージ１から乱数１を抽出し、抽出した乱数１を鍵生成部２１に送信する（ステップＳ５）。
【００９８】
鍵生成部２１は、乱数１を認証部２２から受信すると、受信した乱数１を記憶装置２３の乱数テーブルに格納する（ステップＳ６）。次に、鍵生成部２１は、受信した乱数１から一時鍵１を算出する。また、鍵生成部２１は、算出した一時鍵１を記憶装置２３の暗号鍵テーブルに保存する。
【００９９】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、ならびに受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータを図４ｃに示す。図４ｃに示すように、受信装置２の乱数テーブルには乱数１が格納され、暗号鍵テーブルには一時鍵１が格納、メッセージテーブルにはメッセージ１が格納されている。
【０１００】
認証部２２は、鍵生成部２１が、乱数１を記憶装置２３の乱数テーブルに、一時鍵１を記憶装置２３の暗号鍵テーブルに保存すると、一時鍵１を用いて送信装置１から受信した署名１を復号化し、送信装置１が算出したダイジェスト値１を取得する。
【０１０１】
また、認証部２２は、送信装置１から受信したメッセージ１に対して所定のダイジェスト関数処理を施したダイジェスト値１−２を算出する。認証部２２は、受信した署名１を復号化することにより取得したダイジェスト値１と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値１−２を比較することにより、受信したメッセージ１の正当性を検証する（ステップＳ７）。
【０１０２】
受信したメッセージ１が正当でないと判別すると、認証部２２は、記憶装置２３に格納されているデータを破棄し、送信装置１との通信を終了する。
【０１０３】
一方、受信したメッセージ１が正当であると判別すると、次は、受信装置２が送信装置１へ新たな乱数を送信する。
【０１０４】
まず、受信装置２の鍵生成部２１は、乱数２を生成し、生成した乱数２を記憶装置２３の乱数テーブルに格納する（ステップＳ８）。次に、鍵生成部２１は、記憶装置２３の乱数テーブルに格納されている乱数１と生成した乱数２とから一時鍵２を算出する。また、鍵生成部２１は、算出した一時鍵２を記憶装置２３の暗号鍵テーブルに格納する。
【０１０５】
鍵生成部２１が乱数２を生成し、一時鍵２を算出すると、認証部２２は、乱数２を含むメッセージ２を作成する（ステップＳ９）。認証部２２は、作成したメッセージ２を記憶装置２３のメッセージテーブルに格納する。さらに、認証部２２は、作成したメッセージ２を所定のアルゴリズムで暗号化した暗号化メッセージ２を作成する。
【０１０６】
次に、認証部２２は、メッセージ１とメッセージ２とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値２を算出する。さらに、認証部２２は、算出したダイジェスト値２を、一時鍵２を用いて暗号化した署名２を作成する（ステップＳ１０）。
【０１０７】
次に、認証部２２は、暗号化メッセージ２に署名２を付与して送信装置１の認証部１２に送信する（ステップＳ１１）。
【０１０８】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータ、ならびに受信装置２から送信装置１に送信されるデータを図４ｄに示す。図４ｄに示すように、受信装置２の乱数テーブルには乱数２が格納され、暗号鍵テーブルには一時鍵２が格納され、メッセージテーブルにはメッセージ２が格納されている。また、乱数２を含むメッセージ２を暗号化した暗号化メッセージ２が、署名２とともに受信装置２から送信装置１に送信される。
【０１０９】
送信装置１の認証部１２は、受信装置２の認証部２２から暗号化メッセージ２を受信すると、受信装置２の認証部２２が施した暗号化に対応する所定のアルゴリズムで、受信した暗号化メッセージ２を復号化し、メッセージ２を取得する。認証部１２は、取得したメッセージ２を記憶装置１３のメッセージテーブルに格納する。さらに、認証部１２は、メッセージ２から乱数２を抽出し、抽出した乱数２を鍵生成部１１に送信する（ステップＳ１２）。
【０１１０】
鍵生成部１１は、乱数２を認証部１２から受信すると、受信した乱数２を記憶装置２３の乱数テーブルに格納する（ステップＳ１３）。次に、鍵生成部１１は、受信した乱数２から一時鍵２を算出する。また、鍵生成部１１は、算出した一時鍵２を記憶装置１３の暗号鍵テーブルに保存する。
【０１１１】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、ならびに受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータを図４ｅに示す。図４ｅに示すように、送信装置１の乱数テーブルには乱数２が格納され、暗号鍵テーブルには一時鍵２が格納され、メッセージテーブルにはメッセージ２が格納されている。
【０１１２】
認証部１２は、鍵生成部１１が、乱数２を記憶装置１３の乱数テーブルに、一時鍵２を記憶装置１３の暗号鍵テーブルに保存すると、一時鍵２を用いて受信装置２から受信した署名２を復号化し、受信装置２が算出したダイジェスト値２を取得する。
【０１１３】
また、認証部１２は、記憶装置１３のメッセージテーブルに格納されているメッセージ１と受信装置２から受信したメッセージ２とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値２−２を算出する。認証部１２は、受信した署名２を復号化することにより取得したダイジェスト値２と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値２−２を比較することにより、受信したメッセージ２の正当性を検証する（ステップＳ１４）。
【０１１４】
受信したメッセージ２が正当でないと判別すると、認証部１２は、記憶装置１３に格納されているデータを破棄し、受信装置２との通信を終了する。
【０１１５】
一方、受信したメッセージ２が正当であると判別すると、次は、送信装置１が受信装置２へ新たな乱数を送信する。
【０１１６】
まず、送信装置１の鍵生成部１１は、乱数３を生成し、生成した乱数３を記憶装置１３の乱数テーブルに格納する（ステップＳ１５）。次に、鍵生成部１１は、記憶装置１３の乱数テーブルに格納されている乱数１および乱数２と、生成した乱数３とから暗号鍵を算出する。本実施の形態では、このとき算出した暗号鍵を、送信装置１および受信装置２のコンテンツの送受信のための暗号化に用いるセッション鍵とする。鍵生成部１１は、算出したセッション鍵を記憶装置１３の暗号鍵テーブルに格納する。
【０１１７】
鍵生成部１１が乱数３を生成し、セッション鍵を算出すると、認証部１２は、乱数３を含むメッセージ３を作成する（ステップＳ１６）。認証部１２は、作成したメッセージ３を記憶装置１３のメッセージテーブルに格納する。さらに、認証部１２は、作成したメッセージ３を所定のアルゴリズムで暗号化した暗号化メッセージ３を作成する。
【０１１８】
次に、認証部１２は、メッセージ１とメッセージ２とメッセージ３とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値３を算出する。さらに、認証部１２は、算出したダイジェスト値３を、セッション鍵を用いて暗号化した署名３を作成する（ステップＳ１７）。
【０１１９】
次に、認証部１２は、暗号化メッセージ３に署名３を付与して受信装置２の認証部２２に送信する（ステップＳ１８）。
【０１２０】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータ、ならびに送信装置１から受信装置２に送信されるデータを図４ｆに示す。図４ｆに示すように、送信装置１の乱数テーブルには乱数３が格納され、暗号鍵テーブルにはセッション鍵が格納され、メッセージテーブルにはメッセージ３が格納されている。また、乱数３を含むメッセージ３を暗号化した暗号化メッセージ３が、署名３とともに送信装置１から受信装置２に送信される。
【０１２１】
受信装置２の認証部２２は、送信装置１の認証部１２から暗号化メッセージ３を受信すると、送信装置１の認証部１２が施した暗号化に対応する所定のアルゴリズムで、受信した暗号化メッセージ３を復号化し、メッセージ３を取得する。認証部２２は、取得したメッセージ３を記憶装置２３のメッセージテーブルに格納する。さらに、認証部２２は、メッセージ３から乱数３を抽出し、抽出した乱数３を鍵生成部２１に送信する（ステップＳ１９）。
【０１２２】
鍵生成部２１は、乱数３を認証部２２から受信すると、受信した乱数３を記憶装置２３の乱数テーブルに格納する（ステップＳ２０）。次に、鍵生成部２１は、記憶装置２３の乱数テーブルに格納されている乱数１および乱数２ならびに受信した乱数３からセッション鍵を算出する。また、鍵生成部２１は、算出したセッション鍵を記憶装置２３の暗号鍵テーブルに保存する。
【０１２３】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、ならびに受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータを図４ｇに示す。図４ｇに示すように、受信装置２の乱数テーブルには乱数３が格納され、暗号鍵テーブルにはセッション鍵が格納され、メッセージテーブルにはメッセージ３が格納されている。
【０１２４】
認証部２２は、鍵生成部２１が、乱数３を記憶装置２３の乱数テーブルに、セッション鍵を記憶装置２３の暗号鍵テーブルに保存すると、セッション鍵を用いて送信装置１から受信した署名３を復号化し、送信装置１が算出したダイジェスト値３を取得する。
【０１２５】
また、認証部２２は、記憶装置２３のメッセージテーブルに格納されているメッセージ１とメッセージ２と送信装置１から受信したメッセージ３とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値３−２を算出する。認証部２２は、受信した署名３を復号化することにより取得したダイジェスト値３と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値３−２を比較することにより、受信したメッセージ３の正当性を検証する（ステップＳ２１）。
【０１２６】
受信したメッセージ３が正当でないと判別すると、認証部２２は、記憶装置２３に格納されているデータを破棄し、送信装置１との通信を終了する。
【０１２７】
一方、受信したメッセージ３が正当であると判別すると、次に、受信装置２は、送信装置１へ認証が完了した旨を示す認証完了情報を送信する。
【０１２８】
認証部２２は、認証完了情報を含むメッセージ４を作成する（ステップＳ２２）。認証部２２は、作成したメッセージ４を記憶装置２３のメッセージテーブルに格納する。さらに、認証部２２は、作成したメッセージ４をセッション鍵で暗号化した暗号化メッセージ４を作成する。
【０１２９】
次に、認証部２２は、メッセージ１とメッセージ２とメッセージ３とメッセージ４とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値４を算出する。さらに、認証部２２は、算出したダイジェスト値４を、セッション鍵を用いて暗号化した署名４を作成する（ステップＳ２３）。
【０１３０】
次に、認証部２２は、暗号化メッセージ４に署名４を付与して送信装置１の認証部１２に送信する（ステップＳ２４）。
【０１３１】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータ、ならびに受信装置２から送信装置１に送信されるデータを図４ｈに示す。図４ｈに示すように、受信装置２のメッセージテーブルにはメッセージ４が格納されている。また、認証完了情報を含むメッセージ４を暗号化した暗号化メッセージ４が、署名４とともに受信装置２から送信装置１に送信される。
【０１３２】
送信装置１の認証部１２は、受信装置２の認証部２２から暗号化メッセージ４を受信すると、受信した暗号化メッセージ４を、セッション鍵を用いて復号化し、メッセージ４を取得する。認証部１２は、取得したメッセージ４を記憶装置１３のメッセージテーブルに格納する。
【０１３３】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、ならびに受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータを図４ｉに示す。図４ｉに示すように、送信装置１のメッセージテーブルにはメッセージ４が格納されている。
【０１３４】
認証部１２は、セッション鍵を用いて受信装置２から受信した署名４を復号化し、受信装置２が算出したダイジェスト値４を取得する。
【０１３５】
また、認証部１２は、記憶装置１３のメッセージテーブルに格納されているメッセージ１とメッセージ２とメッセージ３と受信装置２から受信したメッセージ４とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値４−２を算出する。認証部１２は、受信した署名４を復号化することにより取得したダイジェスト値４と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値４−２を比較することにより、受信したメッセージ４の正当性を検証する（ステップＳ２５）。
【０１３６】
受信したメッセージ４が正当でないと判別すると、認証部１２は、記憶装置１３に格納されているデータを破棄し、受信装置２との通信を終了する。
【０１３７】
一方、受信したメッセージ４が正当であると判別すると、認証部１２は、メッセージ４から認証完了情報を抽出し、受信装置２で認証が正常に完了したか否かを判別する。
【０１３８】
認証部１２が受信装置２で認証が正常に完了したことを確認すると、送信装置１および受信装置２の相互認証処理は完了となる。
【０１３９】
次に図１に示した暗号通信システムで送信装置１から受信装置２へコンテンツを送信するときの送信装置１と受信装置２のシーケンスについて説明する。
【０１４０】
図５は図１に示した暗号通信システムで送信装置１から受信装置２へコンテンツを送信するときの送信装置１と受信装置２のシーケンスを示す図である。
【０１４１】
送信装置１のコンテンツ送信部１４は、まず、コンテンツデータベース１５に格納されている平文コンテンツを読み出す。送信装置１のコンテンツ送信部１４は、コンテンツデータベース１５から読み出した平文コンテンツを、セッション鍵を用いて暗号化した暗号化コンテンツを作成する（ステップＳ３１）。
【０１４２】
また、コンテンツ送信部１４は、コンテンツデータベース１５から読み出した平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する（ステップＳ３２）。
【０１４３】
次に、コンテンツ送信部１４は、暗号化コンテンツおよび平文コンテンツのダイジェスト値を含むコンテンツメッセージ５を作成する（ステップＳ３３）。コンテンツ送信部１４は、作成したコンテンツメッセージ５を記憶装置１３のメッセージテーブルに格納する。さらに、コンテンツ送信部１４は、作成したコンテンツメッセージ５をさらにセッション鍵で暗号化した暗号化コンテンツメッセージ５を作成する。
【０１４４】
また、コンテンツ送信部１４は、受信装置２との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信するコンテンツメッセージ５とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値５を算出する。さらに、コンテンツ送信部１４は、算出したダイジェスト値５を、セッション鍵を用いて暗号化した署名５を作成する（ステップＳ３４）。
【０１４５】
コンテンツ送信部１４は、作成した暗号化コンテンツメッセージ５に署名５を付与して受信装置２のコンテンツ受信部２４に送信する（ステップＳ３５）。
【０１４６】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータ、ならびに送信装置１から受信装置２に送信されるデータを図６ａに示す。図６ａに示すように、送信装置１のメッセージテーブルにはコンテンツメッセージ５が格納されている。また、暗号化コンテンツおよび平文コンテンツのダイジェスト値を含むコンテンツメッセージ５を暗号化した暗号化コンテンツメッセージ５が、署名５とともに送信装置１から受信装置２に送信される。
【０１４７】
コンテンツ受信部２４は、送信装置１のコンテンツ送信部１４から暗号化コンテンツメッセージ５を受信すると、受信した暗号化コンテンツメッセージ５を、セッション鍵を用いて復号化する。コンテンツ受信部２４は、取得したコンテンツメッセージ５を記憶装置２３のメッセージテーブルに格納する。
【０１４８】
コンテンツ受信部２４は、セッション鍵を用いて、送信装置１から受信した署名５を復号化し、送信装置１が算出したコンテンツメッセージ５のダイジェスト値５を取得する。
【０１４９】
また、コンテンツ受信部２４は、送信装置１との相互認証処理を開始してから送受信した全てのメッセージおよびコンテンツメッセージと今回送信装置１から受信したコンテンツメッセージ５とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値５−２を算出する。コンテンツ受信部２４は、受信した署名５を復号化することにより取得したダイジェスト値と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値５−２を比較することにより、受信したコンテンツメッセージ５の正当性を検証する（ステップＳ３６）。
【０１５０】
受信したコンテンツメッセージ５が正当であると判別すると、コンテンツ受信部２４は、受信したコンテンツメッセージ５に含まれる暗号化コンテンツを、セッション鍵を用いて復号化し、平文コンテンツを取得する（ステップＳ３７）。
【０１５１】
また、コンテンツ受信部２４は、取得した平文コンテンツに対して所定のダイジェスト関数処理を施したダイジェスト値を算出する（ステップＳ３８）。コンテンツ受信部２４は、受信したコンテンツメッセージ５に含まれる、送信装置１が算出した、平文コンテンツのダイジェスト値と、受信した平文コンテンツに対して所定のダイジェスト関数処理を施すことにより取得したダイジェスト値を比較することにより、受信したコンテンツの正当性を検証する（ステップＳ３９）。
【０１５２】
受信したコンテンツが正当であると判別すると、コンテンツ受信部２４は、受信したコンテンツをコンテンツデータベース２５に格納する。
【０１５３】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、ならびに受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータを図６ｂに示す。図６ｂに示すように、受信装置２のメッセージテーブルにコンテンツメッセージ５が格納され、コンテンツデータベース２５にコンテンツが格納されている。
【０１５４】
平文コンテンツを取得すると、コンテンツ受信部２４は、コンテンツ受信部１４へ受信が完了した旨を示す受信完了情報を送信する。
【０１５５】
コンテンツ受信部２４は、受信完了情報を含むメッセージ６を作成する（ステップＳ４０）。コンテンツ受信部２４は、作成したメッセージ６を記憶装置２３のメッセージテーブルに格納する。さらに、コンテンツ受信部２４は、作成したメッセージ６をセッション鍵で暗号化した暗号化メッセージ６を作成する。
【０１５６】
次に、認証部２２は、送信装置１との相互認証処理を開始してから送受信した全てのメッセージとメッセージ６とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値６を算出する。さらに、コンテンツ受信部２４は、算出したダイジェスト値６を、セッション鍵を用いて暗号化した署名６を作成する（ステップＳ４１）。
【０１５７】
次に、コンテンツ受信部２４は、暗号化メッセージ６に署名６を付与して送信装置１のコンテンツ送信部１４に送信する（ステップＳ４２）。
【０１５８】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータ、ならびに受信装置２から送信装置１に送信されるデータを図６ｃに示す。図６ｃに示すように、受信装置２のメッセージテーブルにはメッセージ６が格納されている。また、受信完了情報を含むメッセージ６を暗号化した暗号化メッセージ６が、署名６とともに受信装置２から送信装置１に送信される。
【０１５９】
送信装置１のコンテンツ送信部１４は、受信装置２のコンテンツ受信部２４から暗号化メッセージ６を受信すると、受信した暗号化メッセージ６を、セッション鍵を用いて復号化し、メッセージ６を取得する。認証部１２は、取得したメッセージ６を記憶装置１３のメッセージテーブルに格納する。
【０１６０】
このときの、送信装置１の記憶装置１３およびコンテンツデータベース１５に格納されているデータ、ならびに受信装置２の記憶装置２３およびコンテンツデータベース２５に格納されているデータを図６ｄに示す。図６ｄに示すように、送信装置１のメッセージテーブルにはメッセージ６が格納されている。
【０１６１】
コンテンツ送信部１４は、セッション鍵を用いて受信装置２から受信した署名６を復号化し、受信装置２が算出したダイジェスト値６を取得する。
【０１６２】
また、コンテンツ送信部１４は、受信装置２との相互認証処理を開始してから送受信した全てのメッセージと受信装置２から受信したメッセージ６とを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値６−２を算出する。コンテンツ送信部１４は、受信した署名６を復号化することにより取得したダイジェスト値６と、自装置で所定のダイジェスト関数処理を施すことにより取得したダイジェスト値６−２を比較することにより、受信したメッセージ６の正当性を検証する（ステップＳ４３）。
【０１６３】
受信したメッセージ６が正当であると判別すると、コンテンツ送信部１４は、メッセージ６から受信完了情報を抽出し、受信装置２で受信が正常に完了したか否かを判別する。
【０１６４】
コンテンツ送信部１４が受信装置２で認証が正常に完了したことを確認すると、送信装置１から受信装置２へのコンテンツの送信処理は完了となる。
【０１６５】
以上説明したように、本実施形態によれば、送信装置と受信装置が相互に認証しあいながら相互に乱数を通知しあうことにより送信装置と受信装置で乱数を共有し、送信装置から受信装置へ、共有した乱数を使って暗号化したコンテンツを送るので、負荷の軽い処理によってコンテンツのセキュリティ性を高めることができる。
【０１６６】
また、本実施形態によれば、送信装置と受信装置が相互に乱数を通知しあう中で２回目以降の乱数の通知では、通知すべき乱数だけでなく、相手装置から通知された乱数あるいは更に既に相手装置に通知した乱数を使って暗号化した署名を使って認証を行うので、単純に双方向に認証しあうのに比べてセキュリティ性のより高い認証を行うことができる。
【０１６７】
本実施形態によれば、ＲＦＩＤ（Radio Frequency Identification）リーダライタ、動画再生プレイヤーあるいは音楽再生プレイヤーのような低性能な装置であっても、必要なコンテンツを高速かつ安全に送受信できる。
【０１６８】
また、本実施形態によれば、送信装置および受信装置は、自装置が新たに生成した乱数だけでなく、相手装置から通知された乱数あるいは更に既に相手装置に通知した乱数に基づいて算出したダイジェスト値を用いて署名を生成するので、第三者によるなりすましを防止できる。
【０１６９】
また、本実施形態によれば、送信装置および受信装置は、乱数を送受信するごとに一時鍵を生成し、ダイジェスト値をその一時鍵で暗号化して署名とするので、第三者に通信を傍受されても、重要な情報を漏洩する危険性を低減できる。
【０１７０】
なお、本実施形態では、署名を作成するためのダイジェスト値を、相互認証処理を開始してから送受信した全てのメッセージと新たに送信するメッセージとを連結したデータに基づいて算出する例を示した。相互認証処理を開始してから送受信した全てのメッセージに基づいてダイジェスト値を算出することにより、セキュリティ性を高めることができるが、相互認証処理を開始してから送受信した全てのメッセージを記憶するための容量をもつ記憶装置を通信装置に実装する必要がある。
【０１７１】
ダイジェスト値の算出方法は、送信装置と受信装置で共通の処理であればよい。例えば、前回のメッセージ送信処理時に算出したダイジェスト値を記録しておき、そのダイジェスト値と今回送信するメッセージとを連結したデータに対して所定のダイジェスト関数処理を施したダイジェスト値を署名のために用いてもよい。その場合、通信装置の記憶装置の容量を小さくすることができる。
【０１７２】
また、送信装置および受信装置が送受信するメッセージあるいはコンテンツメッセージに対する暗号化は、送信装置と受信装置で共通の処理であればよく、用途に応じて、メッセージあるいはコンテンツメッセージ全体を暗号化してもよいし、重要な部分のみを暗号化してもよい。メッセージあるいはコンテンツメッセージ全体を暗号化することにより、セキュリティ強度をあげることができるし、重要な部分のみを暗号化することにより、暗号化処理の負荷を低減し、高速に暗号通信を行うことができる。
【０１７３】
また、本実施形態では、相互認証および暗号鍵の共有をするために、送信装置および受信装置がメッセージを２回ずつ送信する例を示した。メッセージの送受信回数を増やすことにより、セキュリティ強度をあげることができるし、メッセージの送受信回数を減らすことにより、その処理時間を低減でき、高速に暗号通信を行うことができる。
【０１７４】
また、送信装置および受信装置が相互認証し、共有したセッション鍵を用いて暗号化してよいコンテンツ数は、用途に応じて変更してよい。１つのコンテンツを送信するごとに、相互認証しなおし、暗号鍵を再生成することにより、セキュリティ強度をあげることができる。一方、相互認証し、共有したセッション鍵を用いて複数のコンテンツを送受信することにより、高速に暗号通信を行うことができる。
【符号の説明】
【０１７５】
１  送信装置
２  受信装置
１１、２１  鍵生成部
１２、２２  認証部
１３、２３  記憶装置
１４  コンテンツ送信部
２４  コンテンツ受信部
１５、２５  コンテンツデータベース
【図１】
2010206762.tif 000003
【図２】
2010206762.tif 000004
【図３】
2010206762.tif 000005
【図４ａ】
2010206762.tif 000006
【図４ｂ】
2010206762.tif 000007
【図４ｃ】
2010206762.tif 000008
【図４ｄ】
2010206762.tif 000009
【図４ｅ】
2010206762.tif 000010
【図４ｆ】
2010206762.tif 000011
【図４ｇ】
2010206762.tif 000012
【図４ｈ】
2010206762.tif 000013
【図４ｉ】
2010206762.tif 000014
【図５】
2010206762.tif 000015
【図６ａ】
2010206762.tif 000016
【図６ｂ】
2010206762.tif 000017
【図６ｃ】
2010206762.tif 000018
【図６ｄ】
2010206762.tif 000019