(57)【特許請求の範囲】
【請求項１】
相互間で通信を行う第１端末及び第２端末と、自身の公開鍵及び秘密鍵を有する認証局サーバとを含む暗号通信システムにおいて、
前記第１端末は、当該第１端末の秘密鍵と、当該第１端末の公開鍵と、当該第１端末の公開鍵を前記認証局サーバの秘密鍵を用いて暗号化した第１署名値を記憶する第１記憶部を備え、
前記第２端末は、前記認証局サーバの公開鍵を記憶した第２記憶部を備え、
前記第１端末は、前記第２端末との間で暗号通信を開始するときに、前記第１記憶部に記憶した前記第１端末の公開鍵と前記第１署名値とを、前記第２端末に送信し、
前記第２端末は、前記第１端末から送信された前記第１端末の公開鍵と前記第１署名値とを受信したときに、当該第１署名値を前記第２記憶部に記憶した認証局サーバの公開鍵で復号した値と、受信した前記第１端末の公開鍵の値とが同じである場合に、当該第２端末により生成した第２端末の固有鍵を、前記受信した第１端末の公開鍵で暗号化し、当該暗号化されたメッセージを、前記第１端末に送信し、
前記第１端末は、前記第２端末から送信されたメッセージを、前記第１記憶部に記憶された第１端末の秘密鍵で復号して、前記第２端末の固有鍵を取得し、
前記第２端末は、前記第２端末の固有鍵に加えて自己のＩＤ情報を含むメッセージを前記第１端末に送信し、
前記第１端末は、前記第２端末のＩＤ情報を、前記認証局サーバから取得しておき、当該認証局サーバから取得したＩＤ情報と、前記第２端末から受信したメッセージに含まれるＩＤ情報とを比較して、双方のＩＤ情報が一致した場合に、当該メッセージに含まれている前記第２端末の固有鍵を取得することを特徴とする暗号通信システム。
【請求項２】
相互間で通信を行う第１端末及び第２端末と、自身の公開鍵及び秘密鍵を有する認証局サーバとを含む暗号通信システムにおいて、
前記第１端末は、当該第１端末の秘密鍵と、当該第１端末の公開鍵と、当該第１端末の公開鍵を前記認証局サーバの秘密鍵を用いて暗号化した第１署名値を記憶する第１記憶部を備え、
前記第２端末は、前記認証局サーバの公開鍵を記憶した第２記憶部を備え、
前記第１端末は、前記第２端末との間で暗号通信を開始するときに、前記第１記憶部に記憶した前記第１端末の公開鍵と前記第１署名値とを、前記第２端末に送信し、
前記第２端末は、前記第１端末から送信された前記第１端末の公開鍵と前記第１署名値とを受信したときに、当該第１署名値を前記第２記憶部に記憶した認証局サーバの公開鍵で復号した値と、受信した前記第１端末の公開鍵の値とが同じである場合に、当該第２端末により生成した第２端末の固有鍵を、前記受信した第１端末の公開鍵で暗号化し、当該暗号化されたメッセージを、前記第１端末に送信し、
前記第１端末は、前記第２端末から送信されたメッセージを、前記第１記憶部に記憶された第１端末の秘密鍵で復号して、前記第２端末の固有鍵を取得し、
前記第２端末は、当該第２端末の固有鍵を前記第１端末の公開鍵で暗号化した値に加え、当該第２端末にて生成した乱数を前記第１端末に送信し、
前記第１端末は、前記第２端末の固有鍵を当該第１端末の秘密鍵で復号し、前記第２端末から送信された乱数をハッシュ処理した値を、当該復号された第２端末の固有鍵で暗号化した値を前記第２端末に送信し、
前記第２端末は、前記第１端末から送信された値を、前記第１端末に送信した第２端末の固有鍵で復号し、当該復号して得た値が、前記第１端末に送信した乱数をハッシュ処理した値と一致している場合に、当該第２端末の固有鍵を利用することを特徴とする暗号通信システム。
【請求項３】
相互相手の通信相手端末と、認証局サーバの公開鍵及び秘密鍵を有する認証局サーバと接続された端末装置であって、
自身の秘密鍵及び公開鍵と、当該自身の公開鍵を前記認証局サーバの秘密鍵を用いて暗号化した第１署名値を記憶する記憶部と、
前記通信相手端末との間で暗号通信を開始するときに、前記記憶部に記憶した前記自身の公開鍵と前記第１署名値とを、前記通信相手端末に送信し、前記通信相手端末の固有鍵が前記自身の端末の公開鍵で暗号化されたメッセージを受信し、前記通信相手端末から送信されたメッセージを、前記記憶部に記憶された自身の秘密鍵で復号して、前記通信相手端末の固有鍵を取得する通信手段とを備え、
前記通信相手端末のＩＤ情報を、前記認証局サーバから取得しておき、当該認証局サーバから取得したＩＤ情報と、前記通信相手端末から受信したメッセージに含まれるＩＤ情報とを比較して、双方のＩＤ情報が一致した場合に、当該メッセージに含まれている前記通信相手端末の固有鍵を取得することを特徴とする端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末間で暗号通信をする暗号通信システム、端末装置に関する。
【背景技術】
【０００２】
従来、端末で暗号通信を開始するときに、端末に秘密鍵を設定する技術としては、下記の特許文献１に記載された技術等が知られている。
【０００３】
この特許文献１に記載された技術は、端末が端末用公開鍵と端末用秘密鍵を生成し、サーバは、端末から端末用公開鍵と設定要求パケットを受信した時に、自身のサーバ用公開鍵とサーバ用秘密鍵を生成する。端末は、サーバ用公開鍵を受信して自身の固有情報を暗号化して返信する。サーバは、端末から送信された暗号化された固有情報を復号し、当該固有情報と時刻情報等を用いてセキュリティ鍵を生成する。このセキュリティ鍵を端末用公開鍵で暗号化して送信する。端末は、受信した暗号化情報を端末用秘密鍵を用いて復号し、セキュリティ鍵を取得する。これにより、端末は、サーバによって生成されたセキュリティ鍵を用いて暗号通信を行える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２１４７６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、端末の端末用公開鍵及び端末用秘密鍵、端末の固有情報を事前に設定する必要がある。したがって、大規模な暗号通信システムを想定した場合に、全ノードに対して固有の秘密鍵を設定する必要があり、ノードの製造時に、全ノードの公開鍵と秘密鍵の組み合わせを用意する必要がある。
【０００６】
そこで、本発明は、上述した実情に鑑みて提案されたものであり、端末に事前の固有鍵（秘密鍵）を設定する必要なく、安全に固有鍵を設定できる暗号通信システム、端末装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決する第１の発明に係る暗号通信システムは、相互間で通信を行う第１端末及び第２端末と、自身の公開鍵及び秘密鍵を有する認証局サーバとを含む暗号通信システムにおいて、前記第１端末は、当該第１端末の秘密鍵と、当該第１端末の公開鍵と、当該第１端末の公開鍵を前記認証局サーバの秘密鍵を用いて暗号化した第１署名値を記憶する第１記憶部を備え、前記第２端末は、前記認証局サーバの公開鍵を記憶した第２記憶部を備え、前記第１端末は、前記第２端末との間で暗号通信を開始するときに、前記第１記憶部に記憶した前記第１端末の公開鍵と前記第１署名値とを、前記第２端末に送信し、前記第２端末は、前記第１端末から送信された前記第１端末の公開鍵と前記第１署名値とを受信したときに、当該第１署名値を前記第２記憶部に記憶した認証局サーバの公開鍵で復号した値と、受信した前記第１端末の公開鍵の値とが同じである場合に、当該第２端末により生成した第２端末の固有鍵を、前記受信した第１端末の公開鍵で暗号化し、当該暗号化されたメッセージを、前記第１端末に送信し、前記第１端末は、前記第２端末から送信されたメッセージを、前記第１記憶部に記憶された第１端末の秘密鍵で復号して、前記第２端末の固有鍵を取得し、前記第１端末は、前記第２端末の固有鍵を取得した後に、当該第２端末の固有鍵を新たに生成し、当該新たに生成された第２端末の固有鍵を、前記第２端末から取得した第２端末の固有鍵で暗号化し、当該暗号化したメッセージを前記第２端末に送信し、前記第２端末は、前記第１端末から送信されたメッセージを前記第１端末に送信した第２端末の固有鍵により復号して、前記第１端末によって新たに生成された第２端末の固有鍵を取得することを特徴とする。
【０００８】
第１の発明に係る暗号通信システムであって、第２の発明は、前記第２端末の記憶部は、前記認証局サーバ及び／又は前記第１端末の公開鍵を含むデータをハッシュ処理した値を前記認証局サーバの秘密鍵を用いて暗号化した第２署名値を記憶し、前記認証局サーバの公開鍵を含むデータにより前記第２署名値を検証することにより前記認証局サーバ及び／又は前記第１端末の信頼性を評価することを特徴とする。
【００１０】
第１の発明に係る暗号通信システムであって、第３の発明は、前記第１端末は、第１署名値を更新するイベント時に前記認証局サーバに第１署名値を取得するための要求を送信し、前記認証局サーバから返信された第１署名値を前記第２端末に送信し、前記第２端末は、前記第１端末から、当該第１端末の公開鍵と前記第１署名値を受信したときに、当該第１署名値を前記認証局サーバの公開鍵で復号した値と、受信した第１端末の公開鍵とが同じである場合に、当該第２端末により生成した第２端末の固有鍵を、前記受信した第１端末の公開鍵で暗号化し、当該暗号化されたメッセージを、前記第１端末に送信し、前記第１端末は、前記第２端末から送信されたメッセージを、前記第１記憶部に記憶された第１端末の秘密鍵で復号して、前記第２端末の固有鍵を取得することを特徴とする。
【００１１】
第３の発明に係る暗号通信システムであって、第４の発明は、前記認証局サーバが、有効期限を含む第１署名値を前記第１端末に送信し、前記第１端末は、前記認証局サーバから返信された第１署名値を前記第２端末に送信し、前記第２端末は、前記第１端末から、当該第１端末の公開鍵と前記第１署名値を受信したときに、当該第１署名値を前記認証局サーバの公開鍵で復号した値と、受信した第１端末の公開鍵とが同じであり、当該第１署名値に含まれる有効期限内である場合に、当該第２端末により生成した第２端末の固有鍵を、前記受信した第１端末の公開鍵で暗号化し、当該暗号化されたメッセージを、前記第１端末に送信することを特徴とする。
【００１２】
第１の発明に係る暗号通信システムであって、第５の発明は、前記第２端末は、前記第２端末の固有鍵に加えて自己のＩＤ情報を含むメッセージを第１端末に送信し、前記第１端末は、予め記憶しておいたＩＤ情報と、前記第２端末から受信したメッセージに含まれるＩＤ情報とを比較して、双方のＩＤ情報が一致した場合に、当該メッセージに含まれている第２端末の固有鍵を取得することを特徴とする。
【００１３】
第５の発明に係る暗号通信システムであって、第６の発明は、前記第１端末は、前記第２端末のＩＤ情報を、前記認証局サーバから取得しておき、当該認証局サーバから取得したＩＤ情報と、前記第２端末から受信したメッセージに含まれるＩＤ情報とを比較して、双方のＩＤ情報が一致した場合に、当該メッセージに含まれている第２端末の固有鍵を取得することを特徴とする。
【００１４】
第６の発明に係る暗号通信システムであって、第７の発明は、前記認証局サーバは、前記第２端末のＩＤ情報を乱数でハッシュ処理した値及び当該乱数を前記第１端末に送信し、前記第１端末は、前記第１署名値及び前記認証局サーバから送信された乱数を第２端末に送信し、前記第２端末は、予め記憶しておいた自己のＩＤ情報を前記第１端末から送信された乱数でハッシュ処理した値及び当該第２端末の固有鍵を前記第１端末に送信し、前記第１端末は、前記認証局サーバから送信された第２端末のＩＤ情報を乱数でハッシュ処理した値と、前記第２端末から送信された第２端末のＩＤ情報を乱数でハッシュ処理した値とを比較して、双方の値が一致した場合に、当該第２端末の固有鍵を取得することを特徴とする。
【００１５】
第１の発明に係る暗号通信システムであって、第８の発明は、前記第２端末は、当該第２端末の固有鍵を前記第１端末の公開鍵で暗号化した値に加え、当該第２端末にて生成した乱数を第１端末に送信し、前記第１端末は、前記第２端末の固有鍵を当該第１端末の秘密鍵で復号し、前記第２端末から送信された乱数をハッシュ処理した値を、当該復号された第２端末の固有鍵で暗号化した値を第２端末に送信し、前記第２端末は、前記第１端末から送信された値を、前記第１端末に送信した第２端末の固有鍵で復号し、当該復号して得た値が、前記第１端末に送信した乱数をハッシュ処理した値と一致している場合に、当該第２端末の固有鍵を利用することを特徴とする。
【００１６】
第９の発明に係る端末装置は、相互相手の通信相手端末と、認証局サーバの公開鍵及び秘密鍵を有する認証局サーバと接続された端末装置であって、自身の秘密鍵及び公開鍵と、当該自身の公開鍵を前記認証局サーバの秘密鍵を用いて暗号化した第１署名値を記憶する記憶部と、前記通信相手端末との間で暗号通信を開始するときに、前記記憶部に記憶した前記自身の公開鍵と前記第１署名値とを、前記通信相手端末に送信し、前記通信相手端末の固有鍵が前記自身の端末の公開鍵で暗号化されたメッセージを受信し、前記通信相手端末から送信されたメッセージを、前記記憶部に記憶された自身の秘密鍵で復号して、前記通信相手端末の固有鍵を取得する通信手段とを備え、前記通信相手端末の固有鍵を取得した後に、当該通信相手端末の固有鍵を新たに生成し、当該新たに生成された通信相手端末の固有鍵を、前記通信相手端末から取得した通信相手端末の固有鍵で暗号化し、当該暗号化したメッセージを前記通信相手端末に送信することを特徴とする。
【００１７】
第１０の発明に係る端末装置は、認証局サーバの公開鍵及び秘密鍵を有する認証局サーバと接続された通信相手端末と通信を行う端末装置であって、前記認証局サーバの公開鍵を記憶した記憶部と、前記通信相手端末の公開鍵と、第１端末の公開鍵を前記認証局サーバの秘密鍵を用いて暗号化した第１署名値とを受信したときに、当該第１署名値を前記記憶部に記憶した認証局サーバの公開鍵で復号した値と、受信した前記通信相手端末の公開鍵の値とが同じである場合に認証を許可する認証手段と、前記認証手段によって認証が許可された場合に、自身の固有鍵を生成する固有鍵生成手段と、前記固有鍵生成手段により生成された固有鍵を前記受信した通信相手端末の公開鍵で暗号化し、当該暗号化されたメッセージを、前記通信相手端末に送信する固有鍵送信手段とを備え、前記暗号化されたメッセージを送信した後に、前記通信相手端末から送信されたメッセージを前記固有鍵により復号して、前記通信相手端末によって新たに生成された固有鍵を取得することを特徴とする。
【発明の効果】
【００１８】
本発明によれば、第１端末が第２端末との間で暗号通信を開始するときに、第１端末から第２端末に認証局サーバの公開鍵で暗号化された値を第２端末に送信し、第２端末によって認証局サーバの秘密鍵で復号した値が正当であるかを判断する。そして、第２端末によって復号した値が正当である場合には、固有鍵を生成して、第１端末に送信する。これにより、第２端末に予め事前の固有鍵（秘密鍵）を設定する必要なく、安全に第１端末及び第２端末に固有鍵を設定できる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態として示す暗号通信システムの機能的な構成を示すブロック図である。
【図２】本発明の一実施形態として示す暗号通信システムの一構成例を示すブロック図である。
【図３】（ａ）はＸ．５０９証明書の項絵師、（ｂ）は当該証明書から取り出した情報、（ｃ）は暗号通信システムにおいて最低限必要となる情報、である。
【図４】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の動作手順を示すシーケンス図である。
【図５】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の動作手順を示すフローチャートである。
【図６】本発明の一実施形態として示す暗号通信システムにおいて、子機が証明書を認証するときの処理手順を示すフローチャートである。
【図７】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図８】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の他の動作手順を示すフローチャートである。
【図９】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図１０】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の他の動作手順を示すフローチャートである。
【図１１】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図１２】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の他の動作手順を示すフローチャートである。
【図１３】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図１４】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の他の動作手順を示すフローチャートである。
【図１５】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図１６】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の他の動作手順を示すフローチャートである。
【図１７】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図１８】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図１９】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の他の動作手順を示すフローチャートである。
【図２０】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図２１】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図２２】本発明の一実施形態として示す暗号通信システムにおいて、親機及び子機の他の動作手順を示すフローチャートである。
【図２３】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ、親機、子機の他の動作手順を示すシーケンス図である。
【図２４】本発明の一実施形態として示す暗号通信システムにおいて、認証局サーバ及び／又は親機を、子機によって認証する構成を示すシステム図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について図面を参照して説明する。
【００２１】
本発明の実施形態として示す暗号通信システムは、例えば図１に示すように、複数の端末１と、認証局サーバ２（Ｄ）とを含む。複数の端末は、第１端末としての親機１（Ｂ）と、第２端末としての子機１（Ａ）とを含む。この暗号通信システムは、子機１（Ａ）及び親機１（Ｂ）の相互間で暗号通信を行うために、子機１（Ａ）に固有鍵Ｋを設定するものである。すなわち、子機１（Ａ）は、その製造段階では、他の子機１（Ａ）と異なる固有鍵Ｋが設定されていない。この暗号通信システムは、子機１（Ａ）と親機１（Ｂ）とが暗号通信を行うために、子機１（Ａ）に固有鍵Ｋを設定し、当該子機１（Ａ）の固有鍵Ｋを親機１（Ｂ）に共有させる必要がある。
【００２２】
例えば図２に示すように、認証局サーバ２（Ｄ１）に親機１（Ｂ１）が接続されている。当該親機１（Ｂ１）に多数の子機１（Ａ１）〜子機１（Ａ４）が接続されている。認証局サーバ２（Ｄ２）に親機１（Ｂ２）が接続され、当該親機１（Ｂ２）に子機１（Ａ５）、子機１（Ａ６）が接続されている。更に、親機１（Ｂ１）が親機１（Ｂ２）を制御できる状況を考える。この場合、各子機１（Ａ）に製造段階で固有鍵Ｋが必要だとすると、各子機１（Ａ）に固有鍵Ｋを予め設定し、且つ親機１（Ｂ）にも固有鍵Ｋを設定する必要があり、設備構築工数が多大となってしまう。
【００２３】
そこで、本発明の実施形態として示す暗号通信システムは、認証局サーバ２（Ｄ１）のルート証明書CertＳを信頼することによって、親機１（Ｂ１）及び子機１（Ａ１）〜子機１（Ａ４）に、子機１（Ａ１）〜子機１（Ａ４）の固有鍵Ｋ１〜Ｋ４を設定させる。また、親機１（Ｂ１）は、認証局サーバ２（Ｄ１）のルート証明書CertＳを信頼することによって、親機１（Ｂ２）の固有鍵Ｋ８も設定可能である。これにより、親機１（Ｂ）は、各子機１（Ａ）の固有鍵Ｋを用いて、データを暗号化して暗号通信をできる。
【００２４】
図３（ａ）に、ルート証明書CertＳとしてのＸ．５０９証明書の構成を示す。このルート証明書CertＳのうち、子機１（Ａ）に記憶しておく情報としては、図３（ｂ）に示す識別子（ＩＤ）、有効期間、認証局サーバ２（Ｄ）の公開鍵pk(S）、署名値である。最低限の情報として、子機１（Ａ）には、図３（ｃ）に示す認証局サーバ２（Ｄ）の公開鍵pk(S）及び証明書CertSが必要である。この証明書CertSは、親機１（Ｂ）の公開鍵pk(B)のハッシュ値hash(pk(B))を認証局サーバ２（Ｄ）の秘密鍵pk(S)で暗号化した値｛hash(pk(B))｝pk(S)となる。
【００２５】
以下、子機１（Ａ）に固有鍵Ｋを設定し、親機１（Ｂ）との間で共有する固有鍵Ｋの設定例について説明する。
【００２６】
（第１設定例）
図４乃至図６を参照して、子機１（Ａ）に固有鍵Ｋを設定して、親機１（Ｂ）と子機１（Ａ）とが固有鍵Ｋを共有する手順を説明する。
【００２７】
この暗号通信システムの前提として、認証局サーバ２（Ｄ）は、自身の公開鍵（認証局サーバ２（Ｄ）の公開鍵pk(S））及び秘密鍵（認証局サーバ２（Ｄ）の秘密鍵sk(D)）を有している。この認証局サーバ２（Ｄ）は、親機１（Ｂ）と接続されて、後述するように、子機１（Ａ）の固有鍵Ｋの設定時に、親機１（Ｂ）と通信を行う。
【００２８】
図５に示すように、親機１（Ｂ）は、親機１（Ｂ）の公開鍵pk(B）と、親機１（Ｂ）の秘密鍵sk(B)と、認証局サーバ２（Ｄ）の公開鍵pk(S）と、証明書CertＢ＝[pk(B),Sig(S,B)]＝[pk(B),[hash(pk(B))]sk(D)]と、を記憶している（第１記憶部、ステップＳＴ１）。証明書CertＢは、当該親機１（Ｂ）の公開鍵pk(B)と、認証局サーバ２（Ｄ）の公開鍵pk(S)をハッシュ処理した値を認証局サーバ２（Ｄ）の秘密鍵sk(D)を用いて暗号化した署名値Sig(S,B)と、を含む。
【００２９】
子機１（Ａ）は、認証局サーバ２（Ｄ）の公開鍵pk(S)を記憶している（第２記憶部、ステップＳＴ１１）。この認証局サーバ２（Ｄ）の公開鍵pk(S）は、認証局サーバ２（Ｄ）の自己証明書CertＳ＝［pk(S)，Sig(S,S)］を信頼することから、認証局サーバ２（Ｄ）の証明書CertＳに含まれる認証局サーバ２（Ｄ）の公開鍵pk(S）である。
【００３０】
先ず、図４の手順（１）に示すように、親機１（Ｂ）は、子機１（Ａ）との間で暗号通信を開始するときに、親機１（Ｂ）の公開鍵pk(B)と第１署名値Sig(S,B)とを含む証明書CertBであるメッセージｍｓｇ１を、子機１（Ａ）に送信する（図５のステップＳＴ２）。この証明書CertBは、認証局サーバ２（Ｄ）によって正当であることが証明された親機１（Ｂ）の証明書である。
【００３１】
メッセージｍｓｇ１は、子機１（Ａ）に受信される（ステップＳＴ１２）。子機１（Ａ）は、メッセージｍｓｇ１を受信すると、当該メッセージｍｓｇ１に含まれる証明書CertBを記憶する。
【００３２】
子機１（Ａ）は、ステップＳＴ１２にて受信した証明書CertBを認証する（ステップＳＴ１３）。なお、この認証処理は後述する。子機１（Ａ）は、認証処理によって証明書CertBが許可されたことに応じて、固有鍵Ｋを生成し、記憶する（ステップＳＴ１４）。そして、子機１（Ａ）は、生成した固有鍵Ｋを含むメッセージｍｓｇ２を親機１（Ｂ）に送信する（ステップＳＴ１５、図４の手順（２））。この図４の手順（２）において、子機１（Ａ）は、メッセージｍｓｇ２として、固有鍵Ｋを親機１（Ｂ）の公開鍵pk(B）で暗号化した値を、親機１（Ｂ）に送信する。
【００３３】
親機１（Ｂ）は、子機１（Ａ）から送信されてメッセージｍｓｇ２を受信する（ステップＳＴ３）。親機１（Ｂ）は、メッセージｍｓｇ２に含まれる親機１（Ｂ）の公開鍵pk(B）で暗号化された固有鍵Ｋを、証明書CertBに含まれていた親機１（Ｂ）の公開鍵pk(B）で復号する。これにより、親機１（Ｂ）は、子機１（Ａ）により生成された固有鍵Ｋを取得する。以上により、暗号通信システムにおいては、子機１（Ａ）と親機１（Ｂ）とで子機１（Ａ）の固有鍵Ｋを共有できる。
【００３４】
ステップＳＴ１３における子機１（Ａ）による証明書CertBの認証処理を、図６を参照して説明する。
【００３５】
先ずステップＳＴ１０１において、子機１（Ａ）は、証明書CertBに含まれる、親機１（Ｂ）の公開鍵pk(B）と、親機１（Ｂ）の公開鍵pk(B）のハッシュ値を認証局サーバ２（Ｄ）の秘密鍵sk(D)で暗号化した値[｛hash(pk(B))｝sk(D)]とを、受信する。
【００３６】
次のステップＳＴ１０２において、受信した子機１（Ａ）は、親機１（Ｂ）の公開鍵pk(B）をハッシュ化して、ハッシュ値hash(pk(B))＝Ｘを取得する。なお、ハッシュ関数は、子機１（Ａ）と親機１（Ｂ）とで予め設定されている。
【００３７】
次のステップＳＴ１０２において、受信した｛hash(pk(B))｝sk(D)を、予めステップＳＴ１１にて記憶している認証局サーバ２（Ｄ）の公開鍵pk(S）で復号して、ハッシュ値hash(pk(B))＝Ｙを取得する。
【００３８】
次のステップＳＴ１０４において、子機１（Ａ）は、ステップＳＴ１０２にて取得したハッシュ値Ｘと、ステップＳＴ１０３にて取得したハッシュ値Ｙとが一致しているか否かを判定する。双方のハッシュ値Ｘ，Ｙが一致しているときには、親機１（Ｂ）から送信された証明書CertBにおける｛hash(pk(B))｝sk(D)が、正当な認証局サーバ２（Ｄ）の秘密鍵sk(D)によって暗号化されたものであり、当該証明書CertBが信頼できるものとなる。したがって、この場合、子機１（Ａ）は、認証を許可する。
【００３９】
一方、双方のハッシュ値Ｘ，Ｙが異なる値であるときには、認証を拒否する。これにより、子機１（Ａ）は、処理を中止し、固有鍵Ｋの生成及び送信をしない。
【００４０】
なお、本例では、認証局サーバ２（Ｄ）の公開鍵pk(S）のハッシュ値を用いているが、署名値Sig(S,B)は、認証局サーバ２（Ｄ）の公開鍵pk(S）のハッシュ値を認証局サーバ２（Ｄ）の秘密鍵sk(D)で暗号化したものではなく、単に親機１（Ｂ）の公開鍵pk(B）を認証局サーバ２（Ｄ）の秘密鍵sk(D)で暗号化した値でも良い。この場合、上述の図６では、親機１（Ｂ）の公開鍵pk(B）をハッシュ化した値を比較するのではなく、親機１（Ｂ）の公開鍵pk(B）と復号した親機１（Ｂ）の公開鍵pk(B）とを比較して認証をすることとなる。
【００４１】
以上のように、この暗号通信システムによれば、親機１（Ｂ）が子機１（Ａ）との間で暗号通信を開始するときに、親機１（Ｂ）から子機１（Ａ）に認証局サーバ２（Ｄ）の公開鍵pk(S）で暗号化された値を子機１（Ａ）に送信し、子機１（Ａ）によって認証局サーバ２（Ｄ）の秘密鍵sk(D)で復号した値が正当であるかを判断する。そして、子機１（Ａ）によって復号した値が正当である場合には、固有鍵Ｋを生成して、親機１（Ｂ）に送信する。これにより、子機１（Ａ）に予め事前の固有鍵（秘密鍵）を設定する必要なく、安全に親機１（Ｂ）及び子機１（Ａ）に固有鍵Ｋを設定できる。
【００４２】
すなわち、この暗号通信システムによれば、認証局サーバ２（Ｄ）の公開鍵pk(S）に基づいて親機１（Ｂ）の信頼度を確保できる。これにより、この暗号通信システムによれば、子機１（Ａ）に事前の固有鍵を設定することなしに、暗号通信の開始時点で固有鍵Ｋを子機１（Ａ）で生成して、親機１（Ｂ）に安全に供給することができる。
【００４３】
また、この暗号通信システムにおいて、子機１（Ａ）は、その記憶部（ステップＳＴ１１）に、認証局サーバ２（Ｄ）の公開鍵pk(S）を含むデータをハッシュ処理した値を認証局サーバ２（Ｄ）の秘密鍵sk(D)を用いて暗号化した第２署名値を記憶していても良い。これにより、子機１（Ａ）は、認証局サーバ２（Ｄ）の公開鍵pk(S）により第２署名値を検証することにより信頼性を評価しても良い。
【００４４】
（第２設定例）
つぎに、固有鍵Ｋの第２設定例について、図７及び図８を参照して説明する。
【００４５】
この第２設定例は、図７に示すように、上述した第１設定例に、手順（３）を加えて、親機１（Ｂ）により生成した固有鍵Ｋ’を子機１（Ａ）に設定するものである。
【００４６】
この手順（３）において、親機１（Ｂ）は、自身で固有鍵Ｋ’を生成し（図８のステップＳＴ５）、子機１（Ａ）から送信された固有鍵Ｋで暗号化した値｛Ｋ’｝Ｋを、メッセージｍｓｇ３として、子機１（Ａ）に送信する（ステップＳＴ６）。
【００４７】
子機１（Ａ）は、メッセージｍｓｇ３を受信すると（ステップＳＴ１６）、当該メッセージｍｓｇ３を固有鍵Ｋで復号することによって、親機１（Ｂ）によって生成された固有鍵Ｋ’を記憶する（ステップＳＴ１７）。これにより、子機１（Ａ）と親機１（Ｂ）とは、子機１（Ａ）の固有鍵Ｋ’を共有する。
【００４８】
以上のように、この第２設定例を行う暗号通信システムによれば、親機１（Ｂ）が子機１（Ａ）よりも性能が高い場合に、より安全性を向上した固有鍵Ｋ’を子機１（Ａ）に設定できる。すなわち、親機１（Ｂ）に高度の乱数生成器を備える場合、親機１（Ｂ）は、固有鍵Ｋよりも推測されにくい生成品質が高い固有鍵Ｋ’を生成して、子機１（Ａ）に設定できる。また、この暗号通信システムによれば、子機１（Ａ）の乱数生成器を安価なものとでき、子機１（Ａ）の個数が膨大となるほど、コストを低減できる。
【００４９】
（第３設定例）
つぎに、固有鍵Ｋの第３設定例について、図９及び図１０を参照して説明する。
【００５０】
この第３設定例は、先ず、親機１（Ｂ）によって自身の親機１（Ｂ）の公開鍵pk(B）及び親機１（Ｂ）の秘密鍵sk(B)のペアを生成し（ステップＳＴ１’）、認証局サーバ２（Ｄ）に、メッセージｍｓｇ０１として認証局サーバ２（Ｄ）の公開鍵pk(S）を送信する（図１０のステップＳＴ７）。ここで、親機１（Ｂ）は、上述したように証明書CertBを記憶していなくても良い（ステップＳＴ１’）。
【００５１】
認証局サーバ２（Ｄ）は、親機１（Ｂ）から送信された親機１（Ｂ）の公開鍵pk(B）を受信する（ステップＳＴ２２）。ここで、認証局サーバ２（Ｄ）は、予め自身の認証局サーバ２（Ｄ）の公開鍵pk(S）、認証局サーバ２（Ｄ）の秘密鍵sk(D)を記憶している（ステップＳＴ２１）。
【００５２】
次の手順（２）において、認証局サーバ２（Ｄ）は、親機１（Ｂ）の公開鍵pk(B）と、当該親機１（Ｂ）の公開鍵pk(B）をハッシュした値を認証局サーバ２（Ｄ）の秘密鍵sk(D)で暗号化した署名値Sig(S,B)と、からなる証明書CertBを生成する（ステップＳＴ２３）。認証局サーバ２（Ｄ）は、当該生成した証明書CertBを、メッセージｍｓｇ０２として親機１（Ｂ）に送信する（ステップＳＴ２４）。
【００５３】
親機１（Ｂ）は、認証局サーバ２（Ｄ）から送信されたメッセージｍｓｇ０２を受信して、記憶する（ステップＳＴ８）。これにより、親機１（Ｂ）は、新たな証明書CertBを取得できる。
【００５４】
その後、認証局サーバ２（Ｄ）は、第１設定例の手順（１）と同様に手順（３）を行って、メッセージｍｓｇ１としての証明書CertBを、子機１（Ａ）に送信する。子機１（Ａ）は、第１設定例と同様に手順（４）を行って、固有鍵Ｋを親機１（Ｂ）の公開鍵pk(B）で暗号化して、親機１（Ｂ）に送信する。これにより、親機１（Ｂ）は、メッセージｍｓｇ２を、親機１（Ｂ）の秘密鍵sk(B)で復号して、固有鍵Ｋを取得できる。
【００５５】
このような第３設定例によれば、証明書CertBを更新するイベント時に、親機１（Ｂ）から認証局サーバ２（Ｄ）に証明書CertBを取得するための要求を送信し、認証局サーバ２（Ｄ）から返信された証明書CertBを子機１（Ａ）に送信できる。この証明書CertBを更新するイベントとは、親機１（Ｂ）の故障や交換が挙げられる。これにより、暗号通信システムによれば、親機１（Ｂ）の交換等がされても、新しい親機１（Ｂ）と子機１（Ａ）との間で固有鍵Ｋを安全に共有できる。すなわち、古い親機１（Ｂ）との間で共有していた固有鍵Ｋを新たなものとできる。
【００５６】
また、この暗号通信システムによれば、図２に示したように親機１（Ｂ）が複数存在する場合に、親機１（Ｂ）ごとに親機１（Ｂ）の公開鍵pk(B）を生成できる。これにより、仮に固有鍵Ｋが漏洩しても、当該固有鍵Ｋを悪用した脅威を分散することができる。
【００５７】
（第４設定例）
つぎに、固有鍵Ｋの第４設定例について、図１１及び図１２を参照して説明する。
【００５８】
第４設定例は、図１１に示すように、認証局サーバ２（Ｄ）は、手順（１）によって親機１（Ｂ）からメッセージｍｓｇ０１に対する応答として、手順（２）において、有効期限Ｔを含む署名値Sig(S,B)を含む証明書CertB(T)を親機１（Ｂ）に返信する（図１２のステップＳＴ２３，２４）。この証明書CertB(T)は、有効期限Ｔと、親機１（Ｂ）の公開鍵pk(B）と、当該有効期限Ｔ、親機１（Ｂ）の公開鍵pk(B）をハッシュ化した値を認証局サーバ２（Ｄ）の秘密鍵sk(D)で暗号化した値[[hash(T,pk(B)]sk(D)]と、を含む。
【００５９】
親機１（Ｂ）は、当該証明書CertB(T)を受信すると、当該証明書CertB(T)を記憶し（ステップＳＴ８）、認証局サーバ２（Ｄ）から返信された証明書CertB(T)を子機１（Ａ）に送信する（ステップＳＴ２、手順（３））。
【００６０】
子機１（Ａ）は、証明書CertB(T)を受信し、当該証明書CertB(T)を用いて認証を許可すると、当該証明書CertB(T)に含まれている有効期限Ｔと、現在時刻Ｔ’とを比較する（ステップＳＴ１８）。現在時刻Ｔ’が有効期限Ｔ内である場合には、当該証明書CertB(T)の認証を許可し、そうでない場合には、当該証明書CertB(T)を破棄する。証明書CertB(T）の認証を許可した場合、子機１（Ａ）は、上述した設定例と同様に、ステップＳＴ１４，１５を行って、固有鍵Ｋを含むメッセージｍｓｇ２を送信する。
【００６１】
以上のように、この暗号通信システムによれば、証明書CertB(T)に有効期限Ｔを設ける。これによって、認証局サーバ２（Ｄ）から親機１（Ｂ）に送信された証明書CertBが不正に傍受された場合であっても、有効期限Ｔが経過していれば、当該証明書CertB(T)の認証を拒否できる。したがって、この暗号通信システムによれば、有効期限Ｔとして、例えば親機１（Ｂ）の修理期間という短時間を設けておけば、その後の悪意のリプレー攻撃に対するリスクを低減できる。
【００６２】
（第５設定例）
つぎに、固有鍵Ｋの第５設定例について、図１３及び図１４を参照して説明する。
【００６３】
第５設定例は、子機１（Ａ）のＩＤ情報hIDを用いて、固有鍵Ｋを共有するものである。子機１（Ａ）及び親機１（Ｂ）は、予め、子機１（Ａ）のＩＤ情報hIDを保持している（図１４のステップＳＴ１’、ステップＳＴ１１’）。このＩＤ情報hIDは、子機１（Ａ）に固有に与えられたものであり、ネットワーク上に流れることがない。このＩＤ情報hIDとしては、例えば子機１（Ａ）の起動用ＲＯＭに含まれるオブジェクト識別子等が使用可能である。
【００６４】
親機１（Ｂ）は、上述と同様に、図１３の手順（１）にて、証明書CertBを、メッセージｍｓｇ１として子機１（Ａ）に送信する。子機１（Ａ）は、証明書CertBを受信すると（ステップＳＴ１２）、当該証明書CertBの認証を行って（ステップＳＴ１３）、固有鍵Ｋを生成する（ステップＳＴ１４）。子機１（Ａ）は、手順（２）にて、固有鍵ＫとＩＤ情報hIDとを、親機１（Ｂ）の公開鍵pk(B）によって暗号化した値[[hID,K]pk(B)]を、メッセージｍｓｇ２として生成して、親機１（Ｂ）に送信する（ステップＳＴ１９）。
【００６５】
親機１（Ｂ）は、メッセージｍｓｇ２を受信すると（ステップＳＴ３）、当該メッセージｍｓｇ２を親機１（Ｂ）の秘密鍵sk(B)によって復号する（ステップＳＴ４）。
【００６６】
次に、親機１（Ｂ）は、復号されて取得した子機１（Ａ）のＩＤ情報hIDと、予め記憶（ステップＳＴ１’）していたＩＤ情報hIDとを比較して、一致した場合には、子機１（Ａ）の認証を許可する。そして、親機１（Ｂ）は、当該ＩＤ情報hIDと共に送信された固有鍵Ｋを記憶する（ステップＳＴ１０）。一方、双方のＩＤ情報hIDが異なっている場合には、子機１（Ａ）の認証を拒否して、固有鍵Ｋを破棄する。
【００６７】
以上のように、この暗号通信システムによれば、親機１（Ｂ）によって子機１（Ａ）の認証をすることにより、子機１（Ａ）のなりすましを防止できる。すなわち、親機１（Ｂ）から子機１（Ａ）宛てに送信されたメッセージｍｓｇ１を傍受して、当該メッセージｍｓｇ１の返信として攻撃端末が親機１（Ｂ）にメッセージを送信しても、当該攻撃端末を認証して、攻撃端末が設定した固有鍵の使用することを拒否できる。
【００６８】
（第６設定例）
つぎに、固有鍵Ｋの第６設定例について、図１５及び図１６を参照して説明する。
【００６９】
第６設定例も、子機１（Ａ）のＩＤ情報hIDを用いて、固有鍵Ｋを共有するものである。この暗号通信システムは、予め、認証局サーバ２（Ｄ）に親機１（Ｂ）のＩＤ情報hIDb及び子機１（Ａ）のＩＤ情報hID1を含む子機１のＩＤ情報hIDaのリストを記憶している（ステップＳＴ２１’）。また、親機１（Ｂ）は、自己のＩＤ情報hIDbを記憶している（ステップＳＴ１’）。更に、子機１（Ａ）は、第５設定例と同様に、自己のＩＤ情報hID1を記憶している（ステップＳＴ１１’）。
【００７０】
親機１（Ｂ）は、証明書CertBの更新時に、図１５の手順（１）にて、メッセージｍｓｇ０１として、親機１（Ｂ）の公開鍵pk(B）と、自己のＩＤ情報hIDbを認証局サーバ２（Ｄ）の公開鍵pk(S）で暗号化した値[[hIDb]pk(S)]とを、認証局サーバ２（Ｄ）に送信する（ステップＳＴ７）。なお、親機１（Ｂ）は、メッセージｍｓｇ０１として、自己のＩＤ情報hIDbを親機１（Ｂ）の秘密鍵sk(B)で暗号化した値[[hIDb]sk(B)]を送信することもできるが、親機１（Ｂ）の公開鍵pk(B）を平文で送信するために、ネットワークで盗聴した第三者がＩＤ情報hIDbを復号できる可能性がある。
【００７１】
認証局サーバ２（Ｄ）は、メッセージｍｓｇ０１を受信すると、当該メッセージｍｓｇ０１から、親機１（Ｂ）の公開鍵pk(B）を記憶しておく（ステップＳＴ２２）。認証局サーバ２（Ｄ）は、親機１（Ｂ）の公開鍵pk(B）と、当該親機１（Ｂ）の公開鍵pk(B）をハッシュ処理した値を認証局サーバ２（Ｄ）の秘密鍵sk(D)で暗号化した署名値Sig(S,B)と、からなる証明書CertB=[[hash(pk(B))]sk(D)]を生成する（ステップＳＴ２３）。同時に、認証局サーバ２（Ｄ）は、子機１（Ａ）のＩＤ情報hIDaのリストを、親機１（Ｂ）の公開鍵pk(B)で暗号化したデータ［[hID1,hID2,...,hIDn]pk(B)］と生成する。そして認証局サーバ２（Ｄ）は、証明書CertB=[[hash(pk(B))]sk(D)]と、データ［[hID1,hID2,...,hIDn]pk(B)］とを、メッセージｍｓｇ０２として、親機１（Ｂ）に送信する（手順（２）、ステップＳＴ２４）。
【００７２】
親機１（Ｂ）は、メッセージｍｓｇ０２を受信すると（ステップＳＴ８）、親機１（Ｂ）の秘密鍵sk(B）によってデータを復号して、子機１（Ａ）のＩＤ情報hIDaのリストを取得する。そして親機１（Ｂ）は、当該ＩＤ情報hIDaのリストと、証明書CertBとを記憶する（ステップＳＴ８）。その後、親機１（Ｂ）は、手順（３）にて、証明書CertBを、メッセージｍｓｇ１として子機１（Ａ）に送信する。
【００７３】
子機１（Ａ）は、証明書CertBを受信すると（ステップＳＴ１２）、当該証明書CertBの認証を行って（ステップＳＴ１３）、固有鍵Ｋを生成する（ステップＳＴ１４）。子機１（Ａ）は、固有鍵Ｋと自身のＩＤ情報hID1とを、親機１（Ｂ）の公開鍵pk(B）によって暗号化した値[[hID1,K]pk(B)]を、メッセージｍｓｇ２として生成して、親機１（Ｂ）に送信する（手順（４）、ステップＳＴ１５）。
【００７４】
親機１（Ｂ）は、メッセージｍｓｇ２を受信すると（ステップＳＴ３）、当該メッセージｍｓｇ２を親機１（Ｂ）の秘密鍵sk(B)により復号して（ステップＳＴ４）、固有鍵Ｋ及びＩＤ情報hID1を取得する。親機１（Ｂ）は、メッセージｍｓｇ０２から取得したＩＤ情報hIDaのリストと、メッセージｍｓｇ２から取得したＩＤ情報hID1とを比較して、当該ＩＤ情報hID1がＩＤ情報hIDaのリストに含まれている場合には、当該固有鍵Ｋの利用を許可する。
【００７５】
以上のように、この暗号通信システムによれば、認証局サーバ２（Ｄ）から親機１（Ｂ）に正当な子機１（Ａ）のＩＤ情報hIDaのリストを送信し、親機１（Ｂ）に接続された子機１（Ａ）の認証を一括して管理できる。したがって、この暗号通信システムによれば、子機１（Ａ）のなりすましを一括して管理でき、安全に固有鍵Ｋを設定できる。
【００７６】
また、この第６設定例においては、任意の乱数であるノンス（not at once）を用いることによって、更に安全に固有鍵Ｋを設定できる。
【００７７】
この設定例は、図１７に示すように、手順（１）において、認証局サーバ２（Ｄ）によって、メッセージｍｓｇ０１として、認証局サーバ２（Ｄ）にて生成したノンスＮｂ０、親機１（Ｂ）の公開鍵pk(B）、ＩＤ情報hIDbを認証局サーバ２（Ｄ）の公開鍵pk(S）で暗号化した値を親機１（Ｂ）に送信する。
【００７８】
親機１（Ｂ）は、メッセージｍｓｇ０１を受信する。親機１（Ｂ）は、手順（２）にて、メッセージｍｓｇ０２として、証明書CertBと、ノンスＮｂ０及び子機１のＩＤ情報hIDのリストを親機１（Ｂ）の公開鍵pk(B）で暗号化した値とを、認証局サーバ２（Ｄ）に返送する。認証局サーバ２（Ｄ）は、当該メッセージｍｓｇ０２を親機１（Ｂ）の秘密鍵sk(B)で復号することによりノンスＮｂ０を取得し、手順（１）で自身が送信したノンスＮｂ０と同じであれば、認証局サーバ２（Ｄ）が正当なものと判断できる。
【００７９】
次の手順（３）にて、親機１（Ｂ）は、ノンスＮｂを生成し、当該ノンスＮｂと証明書CertBとを含むメッセージｍｓｇ１を子機１（Ａ）に送信する。
【００８０】
次の手順（４）にて、子機１（Ａ）は、証明書CertBを認証して固有鍵Ｋを生成し、ノンスＮｂ、自己のＩＤ情報hID1、固有鍵Ｋを親機１（Ｂ）の公開鍵pk(B）で暗号化した値を、メッセージｍｓｇ２として親機１（Ｂ）に返信する。
【００８１】
親機１（Ｂ）は、メッセージｍｓｇ２を親機１（Ｂ）の秘密鍵sk(B)で復号することによりノンスＮｂを取得し、手順（３）にて自身が送信したノンスＮｂと同じであれば、子機１（Ａ）を正当なものと判断できる。また、親機１（Ｂ）は、復号により取得した子機１（Ａ）のＩＤ情報hID1が、ＩＤ情報hIDのリストに含まれている場合に、当該子機１（Ａ）が正当なものであると判定し、固有鍵Ｋを利用した暗号通信を行う。
【００８２】
以上のように、この暗号通信システムによれば、認証局サーバ２（Ｄ）が生成したノンスＮｂ０、親機１（Ｂ）が生成したＮｂを利用することによって、認証局サーバ２（Ｄ）が親機１（Ｂ）を認証でき、親機１（Ｂ）が子機１（Ａ）を認証できる。したがって、この暗号通信システムによれば、親機１（Ｂ）及び子機１（Ａ）のなりすましを回避でき、安全に固有鍵Ｋを設定できる。
【００８３】
（第７設定例）
つぎに、固有鍵Ｋの第７設定例について、図１８及び図１９を参照して説明する。
【００８４】
第７設定例は、子機１（Ａ）のＩＤ情報hIDaに加え、認証局サーバ２（Ｄ）が生成した乱数ｒを用いて、固有鍵Ｋを共有するものである。
【００８５】
この暗号通信システムは、予め、認証局サーバ２（Ｄ）に親機１（Ｂ）のＩＤ情報hIDb及び子機１（Ａ）のＩＤ情報hID1を含む子機１（Ａ）のＩＤ情報hIDaのリストを記憶している（ステップＳＴ２１’）。また、親機１（Ｂ）は、自己のＩＤ情報hIDbを記憶している（ステップＳＴ１’）。更に、子機１（Ａ）は、第５設定例と同様に、自己のＩＤ情報hID1を記憶している（ステップＳＴ１１’）。
【００８６】
親機１（Ｂ）は、証明書CertBの更新時に、メッセージｍｓｇ０１として、親機１（Ｂ）の公開鍵pk(B）と、自己のＩＤ情報hIDbを認証局サーバ２（Ｄ）の公開鍵pk(S）で暗号化した値[hIDb]pk(S）とを、認証局サーバ２（Ｄ）に送信する（図１８の手順（１）ステップＳＴ７）。
【００８７】
認証局サーバ２（Ｄ）は、メッセージｍｓｇ０１を受信すると、当該メッセージｍｓｇ０１から、親機１（Ｂ）の公開鍵pk(B）を記憶しておく（ステップＳＴ２２）。
【００８８】
認証局サーバ２（Ｄ）は、親機１（Ｂ）の公開鍵pk(B）と、当該親機１（Ｂ）の公開鍵pk(B）をハッシュ化した値を認証局サーバ２（Ｄ）の秘密鍵sk(D)で暗号化した署名値Sig(S,B)と、からなる証明書CertB=[[hash(pk(B))]sk(D)]を生成する（ステップＳＴ２３）。更に、認証局サーバ２（Ｄ）は、乱数ｒを生成する（ステップＳＴ２５）。同時に、認証局サーバ２（Ｄ）は、乱数ｒと、子機１（Ａ）のＩＤ情報hIDaを乱数ｒでハッシュ処理した値hIDaxとを、親機１（Ｂ）の公開鍵pk(B)で暗号化したデータ［[hIDa1,hIDa2,...,hIDan]pk(B)］を生成する。そして認証局サーバ２（Ｄ）は、証明書CertB=[[hash(pk(B))]sk(D)]と、乱数ｒを含むデータ［[r,hIDa1,hIDa2,...,hIDan]pk(B)］とを、メッセージｍｓｇ０２として、親機１（Ｂ）に送信する（手順（２）、ステップＳＴ２４）。
【００８９】
親機１（Ｂ）は、メッセージｍｓｇ０２を受信すると（ステップＳＴ８）、親機１（Ｂ）の秘密鍵sk(B)によってデータを復号して、乱数ｒ及び子機１（Ａ）のＩＤ情報hIDaxを取得する。そして親機１（Ｂ）は、当該ＩＤ情報hIDaxと、証明書CertBとを記憶する（ステップＳＴ８）。その後、親機１（Ｂ）は、手順（３）にて、乱数ｒ及び証明書CertBを、メッセージｍｓｇ１として子機１（Ａ）に送信する。
【００９０】
子機１（Ａ）は、乱数ｒ及び証明書CertBを受信すると（ステップＳＴ１２）、当該証明書CertBの認証を行って（ステップＳＴ１３）、固有鍵Ｋを生成する（ステップＳＴ１４Ａ）と共に、ＩＤ情報hIDaを生成する（ステップＳＴ１４Ｂ）。子機１（Ａ）は、固有鍵ＫとＩＤ情報hIDaとを乱数ｒでハッシュ化した値hash(K,hIDa)を得て、当該ハッシュ値を親機１（Ｂ）の公開鍵pk(B）によって暗号化した値[[hash(K,hIDa)]pk(B)]を、メッセージｍｓｇ２として生成して、親機１（Ｂ）に送信する（手順（４）、ステップＳＴ１５）。
【００９１】
親機１（Ｂ）は、メッセージｍｓｇ２を受信すると（ステップＳＴ３）、当該メッセージｍｓｇ２を親機１（Ｂ）の秘密鍵sk(B)により復号して（ステップＳＴ４）、固有鍵Ｋ及びＩＤ情報hIDaを乱数ｒでハッシュ化した値を取得する。親機１（Ｂ）は、メッセージｍｓｇ０２から取得した乱数ｒ及び予め記憶しているＩＤ情報hIDaのハッシュ値を生成し、メッセージｍｓｇ２から取得したハッシュ値とを比較する。親機１（Ｂ）は、双方のハッシュ値が一致している場合には、当該固有鍵Ｋの利用を許可する（ステップＳＴ９）。
【００９２】
以上のように、この暗号通信システムによれば、認証局サーバ２（Ｄ）から親機１（Ｂ）に正当な子機１（Ａ）のＩＤ情報hIDaを乱数ｒでハッシュ化して親機１（Ｂ）に送信すると共に、子機１（Ａ）にてＩＤ情報hIDaを乱数ｒでハッシュ化できる。これにより、喩え子機１（Ａ）が盗難に遭っても、子機１（Ａ）のＩＤ情報hIDaを乱数ｒでハッシュして秘匿できる。
【００９３】
（第８設定例）
つぎに、固有鍵Ｋの第８設定例について、図２０を参照して説明する。
【００９４】
この第８設定例は、図２０に示すように、手順（１）において、親機１（Ｂ）から子機１（Ａ）に、メッセージｍｓｇ１としての証明書CertBを送信する。
【００９５】
次の手順（２）において、子機１（Ａ）から親機１（Ｂ）に、メッセージｍｓｇ２としてのノンスＮａ及び固有鍵Ｋを親機１（Ｂ）の公開鍵pk(B）で暗号化した値を送信する。このノンスＮａは、子機１（Ａ）によって生成された乱数である。
【００９６】
次の手順（３）において、親機１（Ｂ）は、メッセージｍｓｇ２のＡＣＫとして、ノンスＮａのハッシュ値を固有鍵Ｋで暗号化した値のメッセージｍｓｇ３を、子機１（Ａ）に返信する。子機１（Ａ）は、メッセージｍｓｇ３を固有鍵Ｋで復号することによってノンスＮａのハッシュ値を得て、手順（２）にて送信したノンスＮａのハッシュ値と一致している場合には、当該固有鍵Ｋを使用する。
【００９７】
比較例として、図２１（ａ）に示すように、新たな子機１（Ａ）の固有鍵Ｋ’を設定するときを考える。ここで、攻撃端末Ｘは、以前に子機１（Ａ）に接続されていた古い親機１（Ｂ）の固有鍵Ｋを傍受して記憶している。
【００９８】
先ず手順（１）にて、新たにネットワーク接続された親機１（Ｂ）は、子機１（Ａ）宛てに送信したメッセージｍｓｇ１を送信すると、攻撃端末Ｘによって新たなメッセージｍｓｇ１が傍受される。攻撃端末Ｘは、当該メッセージｍｓｇ１を子機１（Ａ）に転送し、子機１（Ａ）が新しい固有鍵Ｋ’を親機１（Ｂ）の公開鍵pk(B）で暗号化したメッセージｍｓｇ２を返信する。
【００９９】
しかし、攻撃端末Ｘは、新たな固有鍵Ｋ’ではなく、古い固有鍵Ｋを親機１（Ｂ）の公開鍵pk(B）で暗号化した値をメッセージｍｓｇ２’として親機１（Ｂ）に送信する。これにより、攻撃端末Ｘは、子機１（Ａ）に、常に古い固有鍵Ｋのメッセージを通信して、親機１（Ｂ）に登録させておくことができる。これにより、攻撃端末Ｘは親機１（Ｂ）との通信を行うことができる。
【０１００】
これに対し、第８設定例によって固有鍵Ｋを設定する暗号通信システムによれば、図２１（ｂ）に示すように、子機１（Ａ）が新たにノンスＮａ’及び固有鍵Ｋ’を設定して、メッセージｍｓｇ２としてノンスＮａ’及び固有鍵Ｋ’を親機１（Ｂ）の公開鍵pk(B）により暗号化した値を返信する。これに対し、攻撃端末Ｘが当該メッセージｍｓｇ２を傍受して、古いノンスＮａと固有鍵Ｋから生成したメッセージｍｓｇ２を親機１（Ｂ）に送信したとする（リプレー攻撃）。
【０１０１】
しかし、親機１（Ｂ）は、図２２に示すように、手順（１）にてメッセージｍｓｇ１を送信したときに、ノンスＮａを、新たなノンスＮａ’に更新する。一方、子機１（Ａ）は、メッセージｍｓｇ１の証明書CertBを認証して、固有鍵Ｋ’を生成して、メッセージｍｓｇ２を送信するときに、ノンスＮａを、新たなノンスＮａ’に更新する。これにより、メッセージｍｓｇ２は、新たなノンスＮａ’と、新たな固有鍵Ｋ’を親機１（Ｂ）の公開鍵pk(B）で暗号化した値とを含むものとなる。
【０１０２】
そして、メッセージｍｓｇ２を攻撃端末Ｘが傍受して、古い固有鍵Ｋ及びノンスＮａを用いたメッセージｍｓｇ２を用いたリプレー攻撃をしたとする。しかし、親機１（Ｂ）は、ステップＳＴ３’にて、当該メッセージｍｓｇ２のノンスＮａと、ステップＳＴ２’で更新したノンスＮａ’とが一致しないことを認識できる。よって、親機１（Ｂ）は、当該メッセージｍｓｇ２を破棄し、新たな固有鍵Ｋ’及びノンスＮａ’から作成したメッセージｍｓｇ３を子機１（Ａ）に返信できる（ステップＳＴ６）。
【０１０３】
なお、図２３（ａ）に示すように、メッセージｍｓｇ１としての親機１（Ｂ）の証明書CertBを子機１（Ａ）に送信しても、攻撃端末Ｘは認証局サーバ２（Ｄ）の秘密鍵sk(D)を知ることができない。したがって、証明書CertBは、攻撃端末Ｘによって改竄は困難である。また、メッセージｍｓｇ２は、固有鍵Ｋを親機１（Ｂ）の公開鍵pk(B）で暗号化したものであるが、攻撃端末Ｘは親機１（Ｂ）の秘密鍵sk(B)を知ることができない。したがって、当該メッセージｍｓｇ２から固有鍵Ｋを盗聴することは困難である。しかし、攻撃端末Ｘは、メッセージｍｓｇ２を記憶しておくとする。
【０１０４】
また、図２３（ｂ）に示すように、手順（３）によって証明書CertBを親機１（Ｂ）から子機１（Ａ）に送信したことに対し、子機１（Ａ）が新たな固有鍵Ｋ’を生成して、当該固有鍵Ｋ’を親機１（Ｂ）の公開鍵pk(B）で暗号化したメッセージｍｓｇ２を送信する。しかし、攻撃端末Ｘは、新たなメッセージｍｓｇ２を傍受して、古い固有鍵Ｋを使用している期間においては、リプレー攻撃によって親機１（Ｂ）が応答してしまう。
【０１０５】
なお、上述の実施の形態は本発明の一例である。このため、本発明は、上述の実施形態に限定されることはなく、この実施の形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
【０１０６】
上述した暗号通信システムは、図３（ｂ）に示したように、子機１（Ａ）に、有効期限やＩＤを含む認証局サーバ２（Ｄ）の公開鍵pk(D)を記憶していたが、認証局サーバ２（Ｄ）の公開鍵pk(D)と共に、当該認証局サーバ２（Ｄ）を認証するデータを記憶していても良い。また、上述した暗号通信システムは、認証局サーバ２（Ｄ）の公開鍵pk(D)と共に、当該親機１（Ｂ）を認証するデータを記憶していても良い。
【０１０７】
暗号通信システムは、図２４に示すように、子機１（Ａ）の記憶部に、認証局サーバ２（Ｄ）及び親機１（Ｂ）の公開鍵を含むデータをハッシュ処理した値を認証局サーバ２（Ｄ）の秘密鍵sk(D)を用いて暗号化した第２署名値（署名値２）を記憶する。そして、子機１（Ａ）は、認証局サーバ２（Ｄ）の公開鍵pk(D)を含むデータにより第２署名値を検証することにより、認証局サーバ２（Ｄ）及び親機１（Ｂ）の信頼性を評価する。
【０１０８】
このような暗号通信システムは、子機１（Ａ）に対して、複数の認証局サーバ２（Ｄ）及び親機１（Ｂ）が接続され得るネットワーク環境下において、子機１（Ａ）が認証局サーバ２（Ｄ）及び親機１（Ｂ）を認証する。
【０１０９】
このような暗号通信システムは、子機１（Ａ）に、予め親機１（Ｂ）を認証するための親機情報（data1）及び認証局サーバ２（Ｄ）を認証するための認証局情報（data2）が設定されて、記憶している。また、子機１（Ａ）には、上述したように、認証局サーバ２（Ｄ）の公開鍵pk(D)が記憶されている。
【０１１０】
認証局サーバ２（Ｄ）には、当該認証局サーバ２（Ｄ）の秘密鍵０＝sk(D)、公開鍵０＝pk(D)、署名値２＝[[hash(pk(D)),data2]sk(D)]が記憶されている。親機１（Ｂ）には、当該親機１（Ｂ）の秘密鍵１＝sk(B)、公開鍵１＝pk(B)、署名値１＝[[hash(pk(B)),data1]sk(D)]が記憶されている。
【０１１１】
このような暗号通信システムにおいて、子機１（Ａ）の固有鍵Ｋを親機１（Ｂ）が取得するとき、子機１（Ａ）が記憶している親機情報（data1）の親機１（Ｂ）及び子機１（Ａ）が記憶している認証局情報（data2）の認証局サーバ２（Ｄ）は、自己の公開鍵及びデータと、署名値２を子機１（Ａ）に送信する。
【０１１２】
子機１（Ａ）は、送信された署名値２を、認証局サーバ２（Ｄ）の公開鍵pk(D)で復号する。これにより、子機１（Ａ）は、認証局サーバ２（Ｄ）の公開鍵pk(D)及び認証局情報（data2）のハッシュ値、及び、親機１（Ｂ）の公開鍵及び親機情報（data1）のハッシュ値を取得する。子機１（Ａ）は、復号して得たハッシュ値と、事前に記憶しておいた認証局サーバ２（Ｄ）の公開鍵及び認証局情報（data2）から演算したハッシュ値、親機１（Ｂ）の公開鍵及び親機情報（data1）から演算したハッシュ値とが同じ値であるときには、正当な認証局サーバ２（Ｄ）及び親機１（Ｂ）であり、認証を許可する。すなわち、子機１（Ａ）は、ハッシュ値同士を比較することによって、事前に設定された親機情報（data1）及び認証局情報（data2）に設定されている親機１（Ｂ）及び認証局サーバ２（Ｄ）であるかを確認する。
【０１１３】
子機１（Ａ）は、認証を許可した場合、自己の固有鍵Ｋを親機１（Ｂ）に送信する。これにより、暗号通信システムによれば、認証局サーバ２（Ｄ）が複数存在する場合や、親機１（Ｂ）が複数存在する場合であっても、認証局サーバ２（Ｄ）の公開鍵、子機１（Ａ）の公開鍵の改竄自体を防ぎ、子機１（Ａ）の固有鍵Ｋを安全に親機１（Ｂ）に設定できる。
【符号の説明】
【０１１４】
１（Ａ）  子機
１（Ｂ）  親機
２  認証局サーバ
【図１】
0005799240.tif 000002
【図２】
0005799240.tif 000003
【図３】
0005799240.tif 000004
【図４】
0005799240.tif 000005
【図５】
0005799240.tif 000006
【図６】
0005799240.tif 000007
【図７】
0005799240.tif 000008
【図８】
0005799240.tif 000009
【図９】
0005799240.tif 000010
【図１０】
0005799240.tif 000011
【図１１】
0005799240.tif 000012
【図１２】
0005799240.tif 000013
【図１３】
0005799240.tif 000014
【図１４】
0005799240.tif 000015
【図１５】
0005799240.tif 000016
【図１６】
0005799240.tif 000017
【図１７】
0005799240.tif 000018
【図１８】
0005799240.tif 000019
【図１９】
0005799240.tif 000020
【図２０】
0005799240.tif 000021
【図２１】
0005799240.tif 000022
【図２２】
0005799240.tif 000023
【図２３】
0005799240.tif 000024
【図２４】
0005799240.tif 000025