(57)【要約】【課題】データが改ざんされていないか、及び、データが正しい経路で伝送されているかを検証する。【解決手段】データ受信装置１は、データと、個別識別子の系列と、中継装置が生成したＭＡＣとを受信する受信部３と、所定の疑似ランダム関数による演算を行うことで秘密鍵を導出する疑似ランダム関数処理部５と、所定のＭＡＣ生成関数による演算を行うことでＭＡＣを生成するＭＡＣ生成関数処理部６と、帰納的に、１階層目からＮ階層目までの各通信装置の個別識別子に対応する秘密鍵を生成するよう制御する疑似ランダム関数処理制御部７と、帰納的に、Ｎ階層目から１階層目までの各通信装置に対応するＭＡＣを生成するよう制御するＭＡＣ生成関数処理制御部８と、受信したＭＡＣと、生成された１階層目の通信装置に対応するＭＡＣとを比較する比較部９とを有する。【選択図】図１
2019041321.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた秘密鍵である宛先装置鍵を記憶する秘密鍵記憶部と、
データの伝送を中継する通信装置である中継装置を介して、前記データと、前記データの送信元の通信装置である送信元装置及び前記中継装置の個別識別子の系列と、前記中継装置が生成したＭＡＣ（Message  Authentication  Code）とを受信する受信部と、
前記データの伝送経路上の各階層の通信装置の個別識別子を、前記受信部が受信した前記系列から抽出する識別子抽出部と、
所定の疑似ランダム関数による演算を行うことで秘密鍵を導出する疑似ランダム関数処理部と、
所定のＭＡＣ生成関数による演算を行うことでＭＡＣを生成するＭＡＣ生成関数処理部と、
前記宛先装置鍵と１階層目の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して秘密鍵を導出させ、かつ、導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して、帰納的に秘密鍵を導出させることにより、１階層目からＮ階層目までの各通信装置の個別識別子に対応する秘密鍵を生成するよう制御する疑似ランダム関数処理制御部と、
前記受信部が受信した前記データとＮ階層目の通信装置の抽出された個別識別子に対応する秘密鍵とを前記ＭＡＣ生成関数処理部に入力してＭＡＣを導出させ、かつ、導出されたＭＡＣとｍ階層目（ｍはＮ−１以下１以上の正整数）の通信装置の抽出された個別識別子に対応する秘密鍵とを前記ＭＡＣ生成関数処理部に入力して、帰納的にＭＡＣを導出させることにより、Ｎ階層目から１階層目までの各通信装置に対応するＭＡＣを生成するよう制御するＭＡＣ生成関数処理制御部と、
前記受信部が受信したＭＡＣと、前記ＭＡＣ生成関数処理部により生成された１階層目の通信装置に対応するＭＡＣとを比較する比較部と
を有するデータ受信装置。
【請求項２】
前記疑似ランダム関数処理制御部は、
前記宛先装置鍵と１階層目の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して仮の秘密鍵を導出させ、該仮の秘密鍵と所定値を前記疑似ランダム関数処理部に入力して真の秘密鍵を導出させ、かつ、導出された仮の秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して、帰納的に仮の秘密鍵及び真の秘密鍵を導出させることにより、１階層目からＮ階層目までの各通信装置の個別識別子に対応する真の秘密鍵を生成するよう制御し、
前記ＭＡＣ生成関数処理制御部は、抽出された個別識別子に対応する秘密鍵として、前記真の秘密鍵を用い、
前記個別識別子の値は、前記所定値とは異なる値である
請求項１に記載のデータ受信装置。
【請求項３】
前記識別子抽出部は、さらに、伝送経路上の各階層の通信装置の個別識別子を、秘密鍵の配布対象である通信装置の階層化識別子から抽出し、
前記階層化識別子は、通信装置のそれぞれに一意に関連づけられる識別子であり、該階層化識別子に関連づけられる通信装置の個別識別子と、該通信装置からの予め定められたデータ伝送経路上の各通信装置の個別識別子とを組み合わせて構成される識別子であり、
前記疑似ランダム関数処理制御部は、さらに、前記宛先装置鍵と、１階層目の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して秘密鍵を導出させ、かつ、導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して、帰納的に秘密鍵を導出させることにより、秘密鍵の配布対象であるＮ階層目の通信装置の秘密鍵を生成するよう制御する
請求項１に記載のデータ受信装置。
【請求項４】
前記受信部は、前記中継装置を介して、暗号化された前記データと、前記系列と、前記中継装置が生成したＭＡＣと、前記送信元装置が生成したＭＡＣとを受信し、
前記データ受信装置は、さらに、
所定の認証付き暗号の復号関数による演算を行うことで、復号された前記データを生成する復号関数処理部と、
Ｎ階層目の通信装置の抽出された個別識別子に対応する秘密鍵と前記受信部が受信した暗号化された前記データと前記送信元装置が生成したＭＡＣとを前記復号関数処理部に入力して、復号された前記データを生成するよう制御する復号関数処理制御部と
を有し、
前記ＭＡＣ生成関数処理制御部は、前記受信部により受信された前記送信元装置が生成したＭＡＣとＮ−１階層目の通信装置の抽出された個別識別子に対応する秘密鍵とを前記ＭＡＣ生成関数処理部に入力してＭＡＣを導出させ、かつ、導出されたＭＡＣとｍ階層目（ｍはＮ−２以下１以上の正整数）の通信装置の抽出された個別識別子に対応する秘密鍵とを前記ＭＡＣ生成関数処理部に入力して、帰納的にＭＡＣを導出させることにより、Ｎ−１階層目から１階層目までの各通信装置に対応するＭＡＣを生成するよう制御し、
前記比較部は、前記受信部により受信された前記中継装置が生成したＭＡＣと、前記ＭＡＣ生成関数処理部により生成された１階層目の通信装置に対応するＭＡＣとを比較する
請求項１に記載のデータ受信装置。
【請求項５】
データの送信元の通信装置である送信元装置と、
前記データの伝送を中継する通信装置である中継装置と、
前記中継装置を介して前記データを受信する通信装置であるデータ受信装置と
を備え、
前記送信元装置は、
所定のＭＡＣ生成関数による演算を行うことでＭＡＣ（Message  Authentication  Code）を生成する第１のＭＡＣ生成関数処理部と、
前記データと該送信元装置に固有の秘密鍵とを前記第１のＭＡＣ生成関数処理部に入力して、前記データについてのＭＡＣを生成するよう制御する第１のＭＡＣ生成関数処理制御部と、
前記データと、前記第１のＭＡＣ生成関数処理部が生成したＭＡＣと、該送信元装置の個別識別子とを前記中継装置に送信する第１の送信部と
を有し、
前記送信元装置に固有の秘密鍵は、所定の疑似ランダム関数による演算を行うことで導出される秘密鍵であり、
前記中継装置は、
前記データと、ＭＡＣと、通信装置の個別識別子とを受信する第１の受信部と、
前記ＭＡＣ生成関数による演算を行うことでＭＡＣを生成する第２のＭＡＣ生成関数処理部と、
前記第１の受信部が受信したＭＡＣと該中継装置に固有の秘密鍵とを前記第２のＭＡＣ生成関数処理部に入力して、前記第１の受信部が受信したＭＡＣについてのＭＡＣを生成するよう制御する第２のＭＡＣ生成関数処理制御部と、
前記データと、前記第２のＭＡＣ生成関数処理部が生成したＭＡＣと、該中継装置の個別識別子及び前記第１の受信部が受信した個別識別子とを他の前記中継装置又は前記データ受信装置に送信する第２の送信部と
を有し、
前記中継装置に固有の秘密鍵は、前記疑似ランダム関数による演算を行うことで導出される秘密鍵であり、
前記データ受信装置は、
予め定められた秘密鍵である宛先装置鍵を記憶する秘密鍵記憶部と、
前記中継装置を介して、前記データと、前記送信元装置及び前記中継装置の個別識別子の系列と、前記中継装置が生成したＭＡＣとを受信する第２の受信部と、
前記データの伝送経路上の各階層の通信装置の個別識別子を、前記第２の受信部が受信した前記系列から抽出する第１の識別子抽出部と、
前記疑似ランダム関数による演算を行うことで秘密鍵を導出する第１の疑似ランダム関数処理部と、
前記ＭＡＣ生成関数による演算を行うことでＭＡＣを生成する第３のＭＡＣ生成関数処理部と、
前記宛先装置鍵と１階層目の通信装置の抽出された個別識別子を前記第１の疑似ランダム関数処理部に入力して秘密鍵を導出させ、かつ、導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記第１の疑似ランダム関数処理部に入力して、帰納的に秘密鍵を導出させることにより、１階層目からＮ階層目までの各通信装置の個別識別子に対応する秘密鍵を生成するよう制御する第１の疑似ランダム関数処理制御部と、
前記第２の受信部が受信した前記データとＮ階層目の通信装置の抽出された個別識別子に対応する秘密鍵とを前記第３のＭＡＣ生成関数処理部に入力してＭＡＣを導出させ、かつ、導出されたＭＡＣとｍ階層目（ｍはＮ−１以下１以上の正整数）の通信装置の抽出された個別識別子に対応する秘密鍵とを前記第３のＭＡＣ生成関数処理部に入力して、帰納的にＭＡＣを導出させることにより、Ｎ階層目から１階層目までの各通信装置に対応するＭＡＣを生成するよう制御する第３のＭＡＣ生成関数処理制御部と、
前記第２の受信部が受信したＭＡＣと、前記第３のＭＡＣ生成関数処理部により生成された１階層目の通信装置に対応するＭＡＣとを比較する第１の比較部と
を有する
データ伝送システム。
【請求項６】
前記第１の識別子抽出部は、さらに、伝送経路上の各階層の通信装置の個別識別子を、秘密鍵の配布対象である通信装置の階層化識別子から抽出し、
前記階層化識別子は、通信装置のそれぞれに一意に関連づけられる識別子であり、該階層化識別子に関連づけられる通信装置の個別識別子と、該通信装置からの予め定められたデータ伝送経路上の各通信装置の個別識別子とを組み合わせて構成される識別子であり、
前記第１の疑似ランダム関数処理制御部は、さらに、前記宛先装置鍵と、１階層目の通信装置の抽出された個別識別子を前記第１の疑似ランダム関数処理部に入力して秘密鍵を導出させ、かつ、導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記第１の疑似ランダム関数処理部に入力して、帰納的に秘密鍵を導出させることにより、秘密鍵の配布対象であるＮ階層目の通信装置の秘密鍵を生成するよう制御し、
前記送信元装置に固有の秘密鍵及び前記中継装置に固有の秘密鍵は、前記第１の疑似ランダム関数処理部により生成された秘密鍵又は前記第１の疑似ランダム関数処理部により生成された秘密鍵に基づいて生成された秘密鍵である
請求項５に記載のデータ伝送システム。
【請求項７】
前記送信元装置は、さらに、
前記疑似ランダム関数による演算を行うことで秘密鍵を導出する第２の疑似ランダム関数処理部と、
前記第１の疑似ランダム関数処理部により生成された秘密鍵と所定値とを前記第２の疑似ランダム関数処理部に入力して、該送信元装置に固有の秘密鍵を生成するよう制御する第２の疑似ランダム関数処理制御部と
を有し、
前記中継装置は、さらに、
前記疑似ランダム関数による演算を行うことで秘密鍵を導出する第３の疑似ランダム関数処理部と、
前記第１の疑似ランダム関数処理部により生成された秘密鍵と前記所定値とを前記第３の疑似ランダム関数処理部に入力して、該中継装置に固有の秘密鍵を生成するよう制御する第３の疑似ランダム関数処理制御部と
を有し、
前記データ受信装置の前記第１の疑似ランダム関数処理制御部は、前記第２の受信部が前記データと前記系列と前記中継装置が生成したＭＡＣとを受信した場合、前記宛先装置鍵と１階層目の通信装置の抽出された個別識別子を前記第１の疑似ランダム関数処理部に入力して仮の秘密鍵を導出させ、該仮の秘密鍵と前記所定値を前記第１の疑似ランダム関数処理部に入力して真の秘密鍵を導出させ、かつ、導出された仮の秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記第１の疑似ランダム関数処理部に入力して、帰納的に仮の秘密鍵及び真の秘密鍵を導出させることにより、１階層目からＮ階層目までの各通信装置の個別識別子に対応する真の秘密鍵を生成するよう制御し、
前記データ受信装置の前記第３のＭＡＣ生成関数処理制御部は、抽出された個別識別子に対応する秘密鍵として、前記真の秘密鍵を用い、
前記個別識別子の値は、前記所定値とは異なる値である
請求項６に記載のデータ伝送システム。
【請求項８】
前記中継装置は、さらに、
該中継装置よりも下位の通信装置であり秘密鍵の配布対象である通信装置から該中継装置の直下の通信装置までの個別識別子の系列から、各階層の通信装置の個別識別子を抽出する第２の識別子抽出部と、
前記疑似ランダム関数による演算を行うことで秘密鍵を導出する第３の疑似ランダム関数処理部と、
該中継装置に固有の秘密鍵と、該中継装置から見て１階層目の通信装置の抽出された個別識別子とを前記第３の疑似ランダム関数処理部に入力して秘密鍵を導出させ、かつ、導出された秘密鍵と該中継装置から見てｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記第３の疑似ランダム関数処理部に入力して、帰納的に秘密鍵を導出させることにより、秘密鍵の配布対象である前記下位の通信装置の秘密鍵を生成するよう制御する第３の疑似ランダム関数処理制御部と
を有し、
前記下位の通信装置に固有の秘密鍵は、前記第３の疑似ランダム関数処理部により生成された秘密鍵又は前記第３の疑似ランダム関数処理部により生成された秘密鍵に基づいて生成された秘密鍵である
請求項６に記載のデータ伝送システム。
【請求項９】
前記送信元装置の前記第１のＭＡＣ生成関数処理制御部は、さらに、前記第１のＭＡＣ生成関数処理部により生成された前記データについてのＭＡＣと、該送信元装置に固有の秘密鍵とを前記第１のＭＡＣ生成関数処理部に入力して、前記第１のＭＡＣ生成関数処理部により生成されたＭＡＣについてのＭＡＣを生成するよう制御し、
前記第１の送信部は、前記データと、前記第１のＭＡＣ生成関数処理部が生成した２つのＭＡＣと、該送信元装置の個別識別子とを前記中継装置に送信し、
前記中継装置は、さらに、
前記疑似ランダム関数による演算を行うことで秘密鍵を導出する第３の疑似ランダム関数処理部と、
該中継装置に固有の秘密鍵と、前記第１の受信部が受信した個別識別子のうち該中継装置に対し送信を行った通信装置の個別識別子とを前記第３の疑似ランダム関数処理部に入力して、該中継装置に対し送信を行った通信装置に固有の秘密鍵を生成するよう制御する第３の疑似ランダム関数処理制御部と、
前記第１の受信部が受信した２つのＭＡＣのうちの第１のＭＡＣと、前記第２のＭＡＣ生成関数処理部により生成されたＭＡＣとを比較する第２の比較部と
を有し、
前記中継装置の前記第２のＭＡＣ生成関数処理制御部は、前記第１の受信部が受信した２つのＭＡＣのうちの第２のＭＡＣと該中継装置に対し送信を行った通信装置に固有の秘密鍵とを前記第２のＭＡＣ生成関数処理部に入力して前記第２のＭＡＣについてのＭＡＣを生成するよう制御し、前記第１のＭＡＣと該中継装置に固有の秘密鍵とを前記第２のＭＡＣ生成関数処理部に入力して、前記第１のＭＡＣについてのＭＡＣを生成するよう制御し、
前記第２の比較部は、前記第１のＭＡＣと、前記第２のＭＡＣについてのＭＡＣとを比較し、
前記第２の送信部は、前記データと、前記第１のＭＡＣと、前記第１のＭＡＣについてのＭＡＣと、該中継装置の個別識別子及び前記第１の受信部が受信した個別識別子とを他の前記中継装置又は前記データ受信装置に送信する
請求項５に記載のデータ伝送システム。
【請求項１０】
前記中継装置の前記第２の送信部は、前記第２の比較部により、前記第１のＭＡＣと前記第２のＭＡＣについてのＭＡＣとが一致すると判定された場合、送信を行う
請求項９に記載のデータ伝送システム。
【請求項１１】
前記中継装置の前記第２のＭＡＣ生成関数処理制御部は、前記第２の比較部により、前記第１のＭＡＣと前記第２のＭＡＣについてのＭＡＣとが一致すると判定された場合、前記第１のＭＡＣと該中継装置に固有の秘密鍵とを前記第２のＭＡＣ生成関数処理部に入力して、前記第１のＭＡＣについてのＭＡＣを生成するよう制御する
請求項１０に記載のデータ伝送システム。
【請求項１２】
前記送信元装置の前記第１のＭＡＣ生成関数処理部は、所定の認証付き暗号の暗号化関数による演算を行うことで、ＭＡＣの生成及び暗号化処理を行い、
前記送信元装置の前記第１のＭＡＣ生成関数処理制御部は、前記データと該送信元装置に固有の秘密鍵とを前記第１のＭＡＣ生成関数処理部に入力して、前記データについてのＭＡＣの生成と、前記データの暗号化を行うよう制御し、
前記送信元装置の前記第１の送信部は、暗号化された前記データと、前記第１のＭＡＣ生成関数処理部が生成したＭＡＣと、該送信元装置の個別識別子とを前記中継装置に送信し、
前記中継装置の前記第１の受信部は、暗号化された前記データと、ＭＡＣと、通信装置の個別識別子とを受信し、
前記中継装置の前記第２の送信部は、暗号化された前記データと、前記第２のＭＡＣ生成関数処理部が生成したＭＡＣと、前記送信元装置が生成したＭＡＣと、該中継装置の個別識別子及び前記第１の受信部が受信した個別識別子とを他の前記中継装置又は前記データ受信装置に送信し、
前記データ受信装置の前記第２の受信部は、前記中継装置を介して、暗号化された前記データと、前記系列と、前記中継装置が生成したＭＡＣと、前記送信元装置が生成したＭＡＣとを受信し、
前記データ受信装置は、さらに、
前記所定の認証付き暗号の復号関数による演算を行うことで、復号された前記データを生成する復号関数処理部と、
Ｎ階層目の通信装置の抽出された個別識別子に対応する秘密鍵と前記第２の受信部が受信した暗号化された前記データと前記送信元装置が生成したＭＡＣとを前記復号関数処理部に入力して、復号された前記データを生成するよう制御する復号関数処理制御部と
を有し、
前記第３のＭＡＣ生成関数処理制御部は、前記第２の受信部により受信された前記送信元装置が生成したＭＡＣとＮ−１階層目の通信装置の抽出された個別識別子に対応する秘密鍵とを前記第３のＭＡＣ生成関数処理部に入力してＭＡＣを導出させ、かつ、導出されたＭＡＣとｍ階層目（ｍはＮ−２以下１以上の正整数）の通信装置の抽出された個別識別子に対応する秘密鍵とを前記第３のＭＡＣ生成関数処理部に入力して、帰納的にＭＡＣを導出させることにより、Ｎ−１階層目から１階層目までの各通信装置に対応するＭＡＣを生成するよう制御し、
前記第１の比較部は、前記第２の受信部により受信された前記中継装置が生成したＭＡＣと、前記第３のＭＡＣ生成関数処理部により生成された１階層目の通信装置に対応するＭＡＣとを比較する
請求項５に記載するデータ伝送システム。
【請求項１３】
予め定められた秘密鍵である宛先装置鍵を記憶する秘密鍵記憶部と、
伝送経路上の各階層の通信装置の個別識別子を、秘密鍵の配布対象である通信装置の階層化識別子から抽出する識別子抽出部と、
所定の疑似ランダム関数による演算を行うことで秘密鍵を導出する疑似ランダム関数処理部と、
前記宛先装置鍵と、１階層目の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して秘密鍵を導出させ、かつ、導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を前記疑似ランダム関数処理部に入力して、帰納的に秘密鍵を導出させることにより、秘密鍵の配布対象であるＮ階層目の通信装置の秘密鍵を生成するよう制御する疑似ランダム関数処理制御部と、
を有し、
前記階層化識別子は、通信装置のそれぞれに一意に関連づけられる識別子であり、該階層化識別子に関連づけられる通信装置の個別識別子と、該通信装置からの予め定められたデータ伝送経路上の各通信装置の個別識別子とを組み合わせて構成される識別子である
鍵生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ受信装置、データ伝送システム、及び鍵生成装置に関する。
【背景技術】
【０００２】
近年、ＩｏＴ（Internet of Things）技術が注目されている。ＩｏＴ技術では、データをどのように伝送するかが重要となる。データの伝送方法として、マルチホップ通信が知られている。これに関連して、例えば、特許文献１では、親ノードと複数の子ノードが存在し、子ノードが他の子ノードを介して親ノードにデータを送信するシステムについて開示している。また、特許文献２は、データ送信元の機器が、データに対して認証符号を付加させて中継機器にデータを送信する技術について開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１７／０１００５７号
【特許文献２】特開２０１６−１８１８１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
マルチホップ通信では、中継装置を介してデータが伝送される。このため、伝送されたデータが正しいデータであるか否かを確認することに加え、伝送されたデータが正しい経路で伝送されているか否かを確認することも重要である。したがって、伝送されたデータが改ざんされていないか、及び、伝送されたデータが正しい経路で伝送されているかを検証することができる新規な手法の提案が期待されている。
【０００５】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、データ受信装置は、中継装置を介して、データと、送信元装置及び前記中継装置の個別識別子の系列と、前記中継装置が生成したＭＡＣとを受信する受信部と、所定の疑似ランダム関数による演算を行うことで秘密鍵を導出する疑似ランダム関数処理部と、所定のＭＡＣ生成関数による演算を行うことでＭＡＣを生成するＭＡＣ生成関数処理部と、前記疑似ランダム関数処理部により、帰納的に、１階層目からＮ階層目までの各通信装置の個別識別子に対応する秘密鍵を生成するよう制御する疑似ランダム関数処理制御部と、前記ＭＡＣ生成関数処理部により、帰納的に、Ｎ階層目から１階層目までの各通信装置に対応するＭＡＣを生成するよう制御するＭＡＣ生成関数処理制御部と、前記受信部が受信したＭＡＣと、前記ＭＡＣ生成関数処理部により生成された１階層目の通信装置に対応するＭＡＣとを比較する比較部とを有する。
【発明の効果】
【０００７】
前記一実施の形態によれば、伝送されたデータが改ざんされていないか、及び、伝送されたデータが正しい経路で伝送されているかを検証することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態の概要にかかるデータ受信装置の構成の一例を示すブロック図である。
【図２】実施の形態にかかるデータ伝送システムのネットワーク構成の一例を示す模式図である。
【図３】データ受信装置である通信装置の構成の一例を示すブロック図である。
【図４】送信元装置である通信装置の構成の一例を示すブロック図である。
【図５】中継装置である通信装置の構成の一例を示すブロック図である。
【図６】データ受信装置である通信装置の詳細な構成の一例を示すブロック図である。
【図７】実施の形態１にかかる鍵生成装置における処理の流れを示す模式図である。
【図８】実施の形態１にかかる検証装置における処理の流れを示す模式図である。
【図９】実施の形態１にかかるデータ伝送システムにおける初期設定の動作の流れの一例を示すフローチャートである。
【図１０】中継装置である通信装置が下位のノードのための鍵生成を行う場合の中継装置の構成の一例を示すブロック図である。
【図１１】実施の形態１にかかるデータ伝送システムにおける伝送の動作の流れの一例を示すフローチャートである。
【図１２】送信元装置及び中継装置における伝送経路の具体的な一例とともに情報の流れを示す模式図である。
【図１３】図１２で示した各通信装置における認証生成装置の処理の流れを示す模式図である。
【図１４】実施の形態１にかかるデータ受信装置における検証動作の流れの一例を示すフローチャートである。
【図１５】実施の形態２にかかる中継装置の構成の一例を示すブロック図である。
【図１６】実施の形態２にかかるデータ伝送システムにおける伝送の動作の流れの一例を示すフローチャートである。
【図１７】送信元装置及び中継装置における伝送経路の具体的な一例とともに情報の流れを示す模式図である。
【図１８Ａ】図１７で示した通信装置における認証生成装置の処理の流れを示す模式図である。
【図１８Ｂ】図１７で示した通信装置における認証生成装置の処理の流れを示す模式図である。
【図１８Ｃ】図１７で示した通信装置における認証生成装置の処理の流れを示す模式図である。
【図１９】実施の形態３にかかる送信元装置の構成の一例を示すブロック図である。
【図２０】実施の形態３にかかるデータ受信装置の構成の一例を示すブロック図である。
【図２１】実施の形態３にかかる検証装置における処理の流れを示す模式図である。
【図２２】実施の形態３にかかるデータ伝送システムにおける伝送の動作の流れの一例を示すフローチャートである。
【図２３】送信元装置及び中継装置における伝送経路の具体的な一例とともに情報の流れを示す模式図である。
【図２４】図２３で示した各通信装置における暗号装置又は認証生成装置の処理の流れを示す模式図である。
【図２５】実施の形態３にかかるデータ受信装置における検証動作の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１０】
＜実施の形態の概要＞
まず、実施の形態の詳細な説明に先立って、実施の形態の概要について説明する。図１は、実施の形態の概要にかかるデータ受信装置１の構成の一例を示すブロック図である。図１に示すように、データ受信装置１は、秘密鍵記憶部２と、受信部３と、識別子抽出部４と、疑似ランダム関数処理部５と、ＭＡＣ生成関数処理部６と、疑似ランダム関数処理制御部７と、ＭＡＣ生成関数処理制御部８と、比較部９とを有する。データ受信装置１は、複数の通信装置により構成されるネットワークにおいて、マルチホップ通信によりデータ（メッセージとも称す）を受信する通信装置である。つまり、このネットワークは、データの送信元の通信装置である送信元装置と、データの伝送を中継する通信装置である中継装置と、データを受信する通信装置（データの宛先の通信装置）であるデータ受信装置１を含む。データ受信装置１は、送信元装置が送信したデータを、中継装置を介して、受信する。
【００１１】
秘密鍵記憶部２は、予め定められた秘密鍵である宛先装置鍵を記憶する。
受信部３は、中継装置を介して、情報を受信する。具体的には、受信部３は、データと、送信元装置及び中継装置の個別識別子の系列と、中継装置が生成したＭＡＣ（Message  Authentication  Code）とを受信する。個別識別子は、中継装置及び送信元装置に予め割り当てられた識別子である。個別識別子の系列とは、データがデータ受信装置１に届くまでの伝送経路上の通信装置の個別識別子を、伝送経路上の順序に対応させて並べたものである。
【００１２】
上述の通り、送信元装置からデータ受信装置１までの伝送経路上には中継装置が存在している。このため、データ受信装置１を最上位層の通信装置とし、送信元装置を最下層の通信装置とすると、伝送経路上の各通信装置は階層構成となっている。ここで、データ受信装置１を、０階層目の通信装置とすると、データをデータ受信装置１に直接送信する通信装置は、１階層目の通信装置ということができる。さらに、ｐ個（ｐは正整数）の中継装置を経て、送信元装置からのデータがデータ受信装置１に届く場合、この送信元装置は、ｐ＋１階層目の通信装置ということができる。
【００１３】
識別子抽出部４は、データの伝送経路上の各階層の通信装置の個別識別子を、受信部３が受信した系列から抽出する。なお、識別子抽出部４は、任意の方法により、系列から各個別識別子を抽出すればよい。例えば、各階層の通信装置の個別識別子の長さ（すなわち、ビット長）は予め定められており、識別子抽出部４は、この予め定められた長さに基づいて、系列からそれぞれの個別識別子を抽出してもよい。
【００１４】
疑似ランダム関数処理部５は、所定の疑似ランダム関数による演算を行うことで秘密鍵を導出する。導出された秘密鍵は、ＭＡＣ生成関数処理部６による処理で用いられる。また、ＭＡＣ生成関数処理部６は、所定のＭＡＣ生成関数による演算を行うことでＭＡＣを生成する。
【００１５】
疑似ランダム関数処理制御部７は、疑似ランダム関数処理部５による処理を制御する。具体的には、疑似ランダム関数処理制御部７は、宛先装置鍵と１階層目の通信装置の抽出された個別識別子を疑似ランダム関数処理部５に入力して秘密鍵を導出させる。また、疑似ランダム関数処理制御部７は、導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出された個別識別子の数）の通信装置の抽出された個別識別子を疑似ランダム関数処理部５に入力して、帰納的に秘密鍵を導出させる。このようにして、疑似ランダム関数処理制御部７は、１階層目からＮ階層目までの各通信装置の個別識別子に対応する秘密鍵を生成するよう制御する。
【００１６】
ＭＡＣ生成関数処理制御部８は、ＭＡＣ生成関数処理部６による処理を制御する。具体的には、ＭＡＣ生成関数処理制御部８は、受信部３が受信したデータとＮ階層目の通信装置の抽出された個別識別子に対応する秘密鍵とをＭＡＣ生成関数処理部６に入力してＭＡＣを導出させる。また、ＭＡＣ生成関数処理制御部８は、導出されたＭＡＣとｍ階層目（ｍはＮ−１以下１以上の正整数）の通信装置の抽出された個別識別子に対応する秘密鍵とをＭＡＣ生成関数処理部６に入力して、帰納的にＭＡＣを導出させる。このようにして、ＭＡＣ生成関数処理制御部８は、Ｎ階層目から１階層目までの各通信装置に対応するＭＡＣを生成するよう制御する。
【００１７】
比較部９は、受信部３が受信したＭＡＣと、ＭＡＣ生成関数処理部６により生成された１階層目の通信装置に対応するＭＡＣとを比較する。
【００１８】
改ざんが行われたデータをデータ受信装置１が受信した場合、ＭＡＣ生成関数処理部６に適切なデータが入力されないこととなるため、受信部３が受信したＭＡＣと、ＭＡＣ生成関数処理部６により生成された１階層目の通信装置に対応するＭＡＣとは異なることとなる。
また、改ざんされたＭＡＣをデータ受信装置１が受信した場合も、ＭＡＣ生成関数処理部６に適切なＭＡＣが入力されないこととなるため、受信部３が受信したＭＡＣと、ＭＡＣ生成関数処理部６により生成された１階層目の通信装置に対応するＭＡＣとは異なることとなる。
さらに、改ざんが行われた個別識別子の系列をデータ受信装置１が受信した場合、疑似ランダム関数処理部５に適切な個別識別子が入力されないこととなるため、適切な秘密鍵が生成されない。このため、ＭＡＣ生成関数処理部６に適切な秘密鍵が入力されないこととなるため、受信部３が受信したＭＡＣと、ＭＡＣ生成関数処理部６により生成された１階層目の通信装置に対応するＭＡＣとは異なることとなる。
【００１９】
このため、比較部９の比較により、両ＭＡＣが一致すると判定された場合、正しいデータが正しい経路で伝送されたことを意味する。また、比較部９の比較により、両ＭＡＣが一致しないと判定された場合、データが改ざんされているか、又は、データが正しい経路で伝送されていないことを意味する。よって、データ受信装置１によれば、伝送されたデータが改ざんされていないか、及び、伝送されたデータが正しい経路で伝送されているかを検証することができる。
【００２０】
＜実施の形態１＞
次に、実施の形態の詳細について説明する。図２は、実施の形態１にかかるデータ伝送システム１０のネットワーク構成の一例を示す模式図である。データ伝送システム１０は、複数の通信装置により構成されるネットワークにおいて、マルチホップ通信によりデータ（メッセージとも称す）を伝送するシステムである。
【００２１】
データ伝送システム１０では、送信されたデータを最終的に受信する通信装置である通信装置１００＿０を最上位のノードとして、ツリー状にネットワークが構成されている。言い換えると、データ伝送システム１０では、ツリー状に通信経路が結ばれている。最上位のノードである通信装置１００＿０には、１以上の通信装置が通信可能に接続されている。図２に示した例では、通信装置１００＿０は、通信装置１００＿１ａ、１００＿１ｂ、１００＿１ｃと、通信可能に接続されている。通信装置１００＿０と通信可能に接続する通信装置は、それぞれ、０以上の通信装置が通信可能に接続されている。図２に示した例では、通信装置１００＿１ｂに対し、通信装置１００＿２ａ、１００＿２ｂ、１００＿２ｃが接続されている。データ伝送システム１０のネットワーク構成では、同様に、さらに通信装置を接続可能である。図２に示した例では、通信装置１００＿２ｂに対し、通信装置１００＿３ａ、１００＿３ｂが接続されている。なお、データ伝送システム１０において、各通信装置は、無線通信により相互に通信してもよいし、有線通信により相互に通信してもよい。
【００２２】
このように、データ伝送システム１０においては、階層的に、各通信装置が通信可能に接続されている。なお、図２に示した例では、最上位のノードである通信装置１００＿０は、３階層のネットワークと接続しているが、階層数は一例であり、実施の形態がこれに限定されないことは言うまでもない。また、各通信装置に接続している通信装置の数も一例であり、実施の形態がこれに限定されないことは言うまでもない。
【００２３】
以下の説明では、最上位のノードである通信装置１００＿０と直接的に通信可能に接続されている通信装置（図２の例では、通信装置１００＿１ａ、１００＿１ｂ、１００＿１ｃ）を１階層目の通信装置と称す。また、１階層目の通信装置と直接的に通信可能に接続されている下位の通信装置（図２の例では、通信装置１００＿２ａ、１００＿２ｂ、１００＿２ｃ）を２階層目の通信装置と称す。同様に、ｎ−１階層目の通信装置と直接的に通信可能に接続されている下位の通信装置をｎ階層目の通信装置と称す。また、データ伝送システム１０を構成する通信装置について、これらを区別せず、通信装置１００と称すことがある。
【００２４】
上述の通り、データ伝送システム１０において、データはマルチホップ通信により伝送される。このため、データ伝送システム１０は、データの送信元の通信装置である送信元装置と、データの伝送を中継する通信装置である中継装置と、データを受信する通信装置（データの宛先の通信装置）であるデータ受信装置を含む。そして、データ受信装置は、送信元装置が送信したデータを、中継装置を介して、受信する。
【００２５】
図２に示したデータ伝送システム１０では、例えば、通信装置１００＿３ａ、１００＿３ｂ、１００＿２ａ、１００＿２ｃ、１００＿１ａ、１００＿１ｃが、送信元装置である。また、図２に示したデータ伝送システム１０では、例えば、通信装置１００＿２ｂ、１００＿１ｂが、中継装置である。また、図２に示したデータ伝送システム１０では、通信装置１００＿０がデータ受信装置である。すなわち、通信装置１００＿０は、上述のデータ受信装置１に相当する。
【００２６】
データ受信装置である通信装置１００＿０は、例えば、クラウドやサーバなどといった、計算能力が比較的高い計算機である。また、中継装置又は送信元装置である、通信装置１００＿０以外の通信装置は、例えば、半導体装置や組み込み機器などといった、計算能力が比較的低い電子機器である。
【００２７】
データ伝送システム１０において、送信元装置又は中継装置である通信装置１００は、ローカルＩＤが割り当てられている。ここで、ローカルＩＤは、上述の個別識別子であり、通信装置１００を識別するための識別子である。ローカルＩＤ（個別識別子）は、同一の通信装置１００に対し直接的に接続する下位の通信装置１００を少なくとも一意に特定することができる識別子である。したがって、ローカルＩＤ（個別識別子）は、データ伝送システム１０における通信装置１００を一意に特定できる識別子でなくてもよい。例えば、同一の通信装置１００＿１ｂの直接的な下位の通信装置である通信装置１００＿２ａ、１００＿２ｂ、１００＿２ｃに対しては、それぞれ互いに異なるローカルＩＤが割り当てられている。また、例えば、通信装置１００＿２ａのローカルＩＤと通信装置１００＿３ａのローカルＩＤとが同じであってもよい。
【００２８】
ローカルＩＤは、例えば、通信装置１００のＩＰアドレスであってもよいし、通信装置１００のシリアル番号であってもよいし、通信装置１００の製造番号であってもよい。なお、本実施の形態では、ローカルＩＤは、後述する派生鍵設定値とは異なる値である。派生鍵設定値は、例えば０である。このため、ローカルＩＤには、例えば、０より大きな整数が用いられる。ローカルＩＤの長さは各階層に対して自由に設定可能である。ただし、上述の通り、ある通信装置が管理する下位ノードの数の上限は、ローカルＩＤのビット数をＡとしたとき２＾Ａを超えないものとする。本実施の形態では、ローカルＩＤは、派生鍵設定値とは異なる値が用いられるため、実際には、ある通信装置が管理する下位ノードの数の上限は、２＾Ａ−１を超えないこととなる。このように、ローカルＩＤの長さに対して指数的な数の通信装置をネットワークに参加させることができる。
【００２９】
また、ローカルＩＤ（個別識別子）が割り当てられている通信装置１００は、階層化識別子を有する。階層化識別子は、ローカルＩＤ（個別識別子）が割り当てられている通信装置１００のそれぞれに一意に関連づけられる識別子である。階層化識別子は、当該階層化識別子に関連づけられる通信装置１００のローカルＩＤ（個別識別子）と、当該通信装置１００からの予め定められたデータ伝送経路上の各通信装置１００のローカルＩＤ（個別識別子）とを組み合わせて構成される識別子である。具体的には、例えば、これらのローカルＩＤを、伝送経路上の順序に対応させて並べて構成される識別子である。つまり、階層化識別子は、ある通信装置１００からデータ受信装置までの予め定められたデータ伝送経路上の各通信装置１００の個別識別子を組み合わせて構成される識別子である。以下、階層化識別子のことを階層化ＩＤと称す。
【００３０】
ここで、階層化ＩＤについて具体例を示して説明する。図２に示した通信装置１００＿１ｂのローカルＩＤがＩＤ１、通信装置１００＿２ｂのローカルＩＤがＩＤ２、通信装置１００＿３ａのローカルＩＤがＩＤ３であった場合、通信装置１００＿３ａの階層化ＩＤは｛ＩＤ１，ＩＤ２，ＩＤ３｝であり、通信装置１００＿２ｂの階層化ＩＤは｛ＩＤ１，ＩＤ２｝である。なお、通信装置１００＿１ｂの階層化ＩＤは、通信装置１００＿１ｂのローカルＩＤと同じとなる。このように、階層化ＩＤによって、ネットワークにより通信装置１００＿０に接続されている通信装置１００を一意に特定できる。
【００３１】
ここで、通信装置１００の構成について具体的に説明する。
まず、データ受信装置である通信装置１００（図２に示した例では、通信装置１００＿０）の構成について説明する。図３は、データ受信装置である通信装置１００の構成の一例を示すブロック図である。データ受信装置としての通信装置１００は、受信装置２０１と、送信装置２０２と、鍵生成装置２０３と、検証装置２０４とを有する。
【００３２】
受信装置２０１は、上述の受信部３に相当し、他の通信装置１００から送信された情報を受信する受信回路により構成された受信器である。また、送信装置２０２は、他の通信装置１００へ情報を送信する送信回路により構成された送信器である。受信装置２０１及び送信装置２０２は、１つの送受信装置として構成されていてもよい。受信装置２０１は、受信部と称されることがあり、送信装置２０２は、送信部と称されることがある。
【００３３】
受信装置２０１は、中継装置を介して、送信対象であるデータと、送信元装置及び中継装置のローカルＩＤの系列と、中継装置が生成したＭＡＣとを受信する。ここで、この系列は、中継経路を示しており、正しい中継経路により伝送が行われた場合、送信元装置の階層化ＩＤと一致する。送信装置２０２は、鍵生成装置２０３により生成された秘密鍵を送信する。
【００３４】
鍵生成装置２０３は、送信元装置及び中継装置に割り当てられる秘密鍵を生成する装置である。鍵生成装置２０３は、送信元装置の通信装置１００及び中継装置の通信装置１００に対し、階層化ＩＤに基づいて秘密鍵を生成する。送信装置２０２は、生成した秘密鍵を、送信元装置の通信装置１００及び中継装置の通信装置１００に送付する。データ受信装置が送信元装置及び中継装置のそれぞれの階層化ＩＤについての情報を有している場合、データ受信装置は、各階層化ＩＤを用いて、各通信装置１００に対する秘密鍵をそれぞれ生成する。例えば、各通信装置１００のローカルＩＤをデータ受信装置が決定する場合、データ受信装置は各通信装置１００の階層化ＩＤがわかる。これに対し、例えば、中継装置が、ネットワークに追加された下位の通信装置１００に対してローカルＩＤを決定する場合、この下位の通信装置１００の階層化ＩＤがデータ受信装置に通知された時点で、データ受信装置は当該下位の通信装置１００に対する秘密鍵を生成する。なお、秘密鍵の送受信にかかる通信は改ざん及び盗聴が行われていない環境で行われるものとする。
【００３５】
検証装置２０４は、データ受信装置である通信装置１００に伝送されたメッセージについて検証する装置である。検証装置２０４は、受信装置２０１が、中継装置から受信したメッセージ、ＭＡＣ、及びローカルＩＤの系列（送信元装置の階層化ＩＤに相当）を受信すると、メッセージの正当性の検証及びメッセージが正しい中継装置を経由して伝送されたか否かの検証を行う。なお、鍵生成装置２０３及び検証装置２０４の詳細については、後述する。
【００３６】
次に、送信元装置である通信装置１００（図２に示した例では、通信装置１００＿３ａ、１００＿３ｂ、１００＿２ａ、１００＿２ｃ、１００＿１ａ、１００＿１ｃ）の構成について説明する。図４は、送信元装置である通信装置１００の構成の一例を示すブロック図である。送信元装置としての通信装置１００は、受信装置３０１と、送信装置３０２と、認証生成装置３０３とを有する。
【００３７】
受信装置３０１は、他の通信装置１００から送信された情報を受信する受信回路により構成された受信器である。また、送信装置３０２は、他の通信装置１００へ情報を送信する送信回路により構成された送信器である。受信装置３０１及び送信装置３０２は、１つの送受信装置として構成されていてもよい。受信装置３０１は、受信部と称されることがあり、送信装置３０２は、送信部と称されることがある。
【００３８】
認証生成装置３０３は、メッセージについての認証を生成する装置であり、具体的には、ＭＡＣを生成する装置である。認証生成装置３０３は、疑似ランダム関数処理部３１１と、疑似ランダム関数処理制御部３１２と、ＭＡＣ生成関数処理部３２１と、ＭＡＣ生成関数処理制御部３２２とを有する。認証生成装置３０３は、データ受信装置により生成された秘密鍵を用いて、当該秘密鍵から派生した秘密鍵（以下、派生鍵と称す）を疑似ランダム関数処理部３１１により生成する。そして、この派生鍵を用いて、ＭＡＣ生成関数処理部３２１により、送信対象のデータであるメッセージについてのＭＡＣを算出する。
【００３９】
疑似ランダム関数処理部３１１は、所定の疑似ランダム関数による演算を行うことで秘密鍵（派生鍵）を導出する。所定の疑似ランダム関数は、秘密鍵および任意の長さの値を入力とし、任意の長さの暗号学的に乱数と識別できない値を出力する関数である。疑似ランダム関数では、所定の秘密鍵とともに同じメッセージを入力すると、関数の出力は常に同じとなる。共通鍵暗号又はハッシュ関数をベースとした鍵導出関数、べき乗演算を利用した安全性が証明された任意の鍵導出関数のうちいずれが疑似ランダム関数として用いられてもよい。なお、後述する疑似ランダム関数処理部４１１及び疑似ランダム関数処理部２１１においても、疑似ランダム関数処理部３１１と同じ疑似ランダム関数が用いられる。
【００４０】
また、疑似ランダム関数処理制御部３１２は、当該送信元装置に割り当てられた秘密鍵と派生鍵設定値とを疑似ランダム関数処理部３１１に入力して、当該送信元装置に固有の秘密鍵を生成するよう制御する。なお、派生鍵設定値は、所定値であり、例えば０である。後述する疑似ランダム関数処理部４１１においても、疑似ランダム関数処理部３１１と同じ派生鍵設定値が用いられる。また、後述する疑似ランダム関数処理部２１１においても、派生鍵設定値が入力される場合には、疑似ランダム関数処理部３１１と同じ派生鍵設定値が用いられる。また、本実施の形態では、疑似ランダム関数処理部３１１に入力される秘密鍵は、データ受信装置の鍵生成装置２０３の後述する疑似ランダム関数処理部２１１により生成された秘密鍵である。受信装置３０１は、鍵生成装置２０３により生成された秘密鍵を受信し、疑似ランダム関数処理部３１１は、この受信した秘密鍵を用いて派生鍵を生成する。
【００４１】
ＭＡＣ生成関数処理部３２１は、所定のＭＡＣ生成関数による演算を行うことでＭＡＣを生成する。所定のＭＡＣ生成関数は、共通鍵暗号あるいはハッシュ関数を利用して、メッセージ認証子（Message  Authentication  Code）を生成する関数である。共通鍵暗号を用いたＣＭＡＣ（Cipher-based  MAC）、ハッシュ関数を用いたＨＭＡＣ（Hash-based  MAC）など、安全性が保証された手法であればいずれの関数がＭＡＣ生成関数として用いられてもよい。なお、後述するＭＡＣ生成関数処理部４２１及びＭＡＣ生成関数処理部２２１においても、ＭＡＣ生成関数処理部３２１と同じ疑似ランダム関数が用いられる。
【００４２】
ＭＡＣ生成関数処理制御部３２２は、送信対象のデータ（メッセージ）と当該送信元装置に固有の秘密鍵とをＭＡＣ生成関数処理部３２１に入力して、データについてのＭＡＣを生成するよう制御する。本実施の形態では、ＭＡＣ生成関数処理制御部３２２は、疑似ランダム関数処理部３１１により生成された秘密鍵（派生鍵）を当該送信元装置に固有の秘密鍵としてＭＡＣ生成関数処理部３２１に入力する。なお、ＭＡＣ生成関数処理部３２１には、送信対象のデータが入力されるため、任意長の長さの値がメッセージとして入力される。
【００４３】
送信装置３０２は、送信対象のデータであるメッセージと、ＭＡＣ生成関数処理部３２１が生成したＭＡＣと、当該送信元装置のローカルＩＤとを、当該送信元装置の上位のノードである中継装置に送信する。
【００４４】
次に、中継装置である通信装置１００（図２に示した例では、通信装置１００＿２ｂ、１００＿１ｂ）の構成について説明する。図５は、中継装置である通信装置１００の構成の一例を示すブロック図である。中継装置としての通信装置１００は、受信装置４０１と、送信装置４０２と、認証生成装置４０３とを有する。
【００４５】
受信装置４０１は、他の通信装置１００から送信された情報を受信する受信回路により構成された受信器である。また、送信装置４０２は、他の通信装置１００へ情報を送信する送信回路により構成された送信器である。受信装置４０１及び送信装置４０２は、１つの送受信装置として構成されていてもよい。受信装置４０１は、受信部と称されることがあり、送信装置４０２は、送信部と称されることがある。
【００４６】
データの伝送の中継が行われる際、受信装置４０１は、送信対象のデータと、ＭＡＣと、通信装置１００の個別識別子とを受信する。
【００４７】
認証生成装置４０３は、認証生成装置３０３と同様、メッセージについての認証を生成する装置であり、具体的には、ＭＡＣを生成する装置である。認証生成装置４０３は、疑似ランダム関数処理部４１１と、疑似ランダム関数処理制御部４１２と、ＭＡＣ生成関数処理部４２１と、ＭＡＣ生成関数処理制御部４２２とを有する。認証生成装置４０３は、データ受信装置により生成された秘密鍵を用いて、当該秘密鍵から派生鍵を疑似ランダム関数処理部４１１により生成する。そして、この派生鍵を用いて、ＭＡＣ生成関数処理部４２１により、受信装置４０１が受信したＭＡＣについてのＭＡＣを算出する。
【００４８】
疑似ランダム関数処理部４１１は、疑似ランダム関数処理部３１１と同様、所定の疑似ランダム関数による演算を行うことで秘密鍵（派生鍵）を導出する。また、疑似ランダム関数処理制御部４１２は、当該中継装置に割り当てられた秘密鍵と派生鍵設定値とを疑似ランダム関数処理部４１１に入力して、当該中継装置に固有の秘密鍵を生成するよう制御する。本実施の形態では、疑似ランダム関数処理部４１１に入力される秘密鍵は、データ受信装置の鍵生成装置２０３の後述する疑似ランダム関数処理部２１１により生成された秘密鍵である。
【００４９】
ＭＡＣ生成関数処理部４２１は、ＭＡＣ生成関数処理部３２１と同様、所定のＭＡＣ生成関数による演算を行うことでＭＡＣを生成する。ＭＡＣ生成関数処理制御部４２２は、受信装置４０１が受信したＭＡＣと当該中継装置に固有の秘密鍵とをＭＡＣ生成関数処理部４２１に入力して、受信装置４０１が受信したＭＡＣについてのＭＡＣを生成するよう制御する。本実施の形態では、ＭＡＣ生成関数処理制御部４２２は、疑似ランダム関数処理部４１１により生成された秘密鍵をＭＡＣ生成関数処理部４２１に入力する。なお、ＭＡＣ生成関数処理部４２１には、受信装置４０１により受信されたＭＡＣがメッセージとして入力されるため、ＭＡＣ生成関数処理部４２１にメッセージとして入力される値のビット長は、算出されるＭＡＣのビット長となる。
【００５０】
送信装置４０２は、送信対象のデータであるメッセージと、ＭＡＣ生成関数処理部４２１が生成したＭＡＣと、当該中継装置のローカルＩＤ及び受信装置４０１が受信したローカルＩＤとを、上位のノードである通信装置（すなわち、他の中継装置又はデータ受信装置）に送信する。なお、当該中継装置にメッセージを直接送信した通信装置１００が中継装置である場合、当該中継装置の受信装置４０１は送信元装置から当該中継装置までの通信装置１００についての複数のローカルＩＤを受信することとなる。このため、そのような場合には、送信装置４０２は、当該中継装置のローカルＩＤとともに複数の受信したローカルＩＤ群を上位のノードである通信装置に送信する。
【００５１】
次に、データ受信装置の鍵生成装置２０３及び検証装置２０４の詳細について説明する。図６は、データ受信装置である通信装置１００の詳細な構成の一例を示すブロック図である。図６に示すように、データ受信装置である通信装置１００は、検証装置２０４の構成として、秘密鍵記憶部２３０と、階層分離部２４０と、疑似ランダム関数処理部２１１と、疑似ランダム関数処理制御部２１２と、ＭＡＣ生成関数処理部２２１と、ＭＡＣ生成関数処理制御部２２２と、比較部２５０とを有する。ここで、秘密鍵記憶部２３０、階層分離部２４０、疑似ランダム関数処理部２１１、及び疑似ランダム関数処理制御部２１２により鍵生成装置２０３が構成される。
【００５２】
秘密鍵記憶部２３０は、上述の秘密鍵記憶部２に相当し、予め定められた秘密鍵である宛先装置鍵を記憶する。秘密鍵記憶部２３０は、例えばセキュアストレージなどの任意の安全な記憶装置により実現される。宛先装置鍵はデータ受信装置が有する秘密鍵であり、この宛先装置鍵に基づいて、送信元装置及び中継装置に割り当てられる秘密鍵が生成される。
【００５３】
階層分離部２４０は、送信元装置及び中継装置に配布するための秘密鍵の生成が行われる際、すなわち、鍵生成装置２０３として機能する際、次のように動作する。階層分離部２４０は、秘密鍵の配布対象である通信装置１００の階層化ＩＤから、伝送経路上の各階層の通信装置１００のローカルＩＤを抽出する。例えば、秘密鍵の配布対象が図２に示す通信装置１００＿３ａである場合、階層分離部２４０は、通信装置１００＿３ａの階層化ＩＤから、ＩＤ３、ＩＤ２、及びＩＤ１をそれぞれ抽出する。このように、階層分離部２４０は、秘密鍵の配布対象である通信装置１００がネットワークにおけるＮ階層目の通信装置である場合、１階層目の通信装置１００からＮ階層目の通信装置１００までのＮ個のローカルＩＤを抽出する。
【００５４】
また、階層分離部２４０は、送信元装置からのデータの伝送が行われた際、すなわち、検証装置２０４として機能する際、次のようにローカルＩＤを抽出する。階層分離部２４０は、データの伝送経路上の各階層の通信装置１００のローカルＩＤを、受信装置２０１が受信したローカルＩＤの系列から抽出する。上述の通り、送信元装置及び中継装置は、上位の通信装置にデータを転送する際、自装置のローカルＩＤを転送対象の情報に追加する。このため、データ受信装置の受信装置２０１は、伝送経路上の各通信装置１００（すなわち、送信元装置からデータ受信装置までの各階層の通信装置１００）のローカルＩＤの系列を受信する。階層分離部２４０は、この受信された系列から、各階層のローカルＩＤを分離して抽出する。階層分離部２４０は、階層ごとのローカルＩＤの長さに応じて、受信した系列を分離して、各ローカルＩＤを抽出する。このように、階層分離部２４０は、Ｎ個のローカルＩＤの系列が受信された場合、１階層目の通信装置１００からＮ階層目の通信装置１００までのＮ個のローカルＩＤを抽出する。
なお、階層分離部２４０は、上述の識別子抽出部４に相当する。
【００５５】
疑似ランダム関数処理部２１１は、疑似ランダム関数処理部３１１と同様、所定の疑似ランダム関数による演算を行うことで秘密鍵を導出する。疑似ランダム関数処理部２１１の処理は、疑似ランダム関数処理制御部２１２によって制御される。疑似ランダム関数処理部２１１は、上述の疑似ランダム関数処理部５に相当する。また、疑似ランダム関数処理制御部２１２は、上述の疑似ランダム関数処理制御部７に相当する。
【００５６】
疑似ランダム関数処理制御部２１２は、送信元装置及び中継装置に配布するための秘密鍵を生成する際、すなわち、鍵生成装置２０３として機能する際、階層分離部２４０により抽出されたローカルＩＤを上位の階層から順に疑似ランダム関数処理部２１１に入力して、帰納的な制御を行う。具体的には、疑似ランダム関数処理制御部２１２は、次のような制御を行う。
【００５７】
疑似ランダム関数処理制御部２１２は、宛先装置鍵と、１階層目の通信装置１００の抽出されたローカルＩＤを疑似ランダム関数処理部２１１に入力して秘密鍵を導出させる。また、疑似ランダム関数処理制御部２１２は、これにより導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは階層分離部２４０により抽出されたローカルＩＤの数）の通信装置１００の抽出されたローカルＩＤを疑似ランダム関数処理部２１１に入力して、帰納的に秘密鍵を導出させる。
つまり、疑似ランダム関数処理制御部２１２は、宛先装置鍵と１階層目のローカルＩＤを用いて１階層目のローカルＩＤに対応する秘密鍵を導出させた後、ｋ−１階層目のローカルＩＤを用いて導出された秘密鍵とｋ階層目のローカルＩＤを用いて、ｋ階層目のローカルＩＤに対応する秘密鍵を導出させる処理を繰り返すよう制御する。
これにより、疑似ランダム関数処理制御部２１２は、秘密鍵の配布対象であるＮ階層目の所定の通信装置１００の秘密鍵を生成するよう制御する。
【００５８】
図７は、鍵生成装置２０３における上述の処理の流れを示す模式図である。なお、図７において、｛ＩＤ｝は、秘密鍵の配布対象である通信装置１００の階層化ＩＤを表す。また、ＩＤ１、ＩＤ２、・・・、ＩＤＮは、それぞれローカルＩＤを表し、それらのインデックスは、何番目の階層の通信装置１００に対応するローカルＩＤであるかを示す。例えば、ＩＤ１は、１階層目の通信装置１００のローカルＩＤを示し、ＩＤＮは、Ｎ階層目の通信装置１００のローカルＩＤを示す。また、ＳＫは、データ受信装置が有する宛先装置鍵を表す。また、ＳＫ１、ＳＫ２、・・・、ＳＫＮは、秘密鍵を表し、それらのインデックスは、何番目の階層の通信装置１００に配布される秘密鍵に対応するかを示す。図７に示すように、鍵生成装置２０３は、Ｎ階層目の通信装置１００の階層化ＩＤから抽出されたローカルＩＤと、秘密鍵とを用いて、疑似ランダム関数による処理を繰り返すことで、入力された階層化ＩＤを有する通信装置１００に配布する秘密鍵を生成する。
【００５９】
次に、送信元装置からのデータの伝送が行われた際の疑似ランダム関数処理制御部２１２の制御について説明する。疑似ランダム関数処理制御部２１２は、送信元装置からのデータの伝送が行われた際、すなわち、検証装置２０４として機能する際、階層分離部２４０により抽出されたローカルＩＤを上位の階層から順に疑似ランダム関数処理部２１１に入力して、帰納的な制御を行う。具体的には、疑似ランダム関数処理制御部２１２は、次のような制御を行う。
【００６０】
疑似ランダム関数処理制御部２１２は、宛先装置鍵と１階層目の通信装置１００の抽出されたローカルＩＤを疑似ランダム関数処理部２１１に入力して秘密鍵を導出させる。また、疑似ランダム関数処理制御部２１２は、これにより導出された秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出されたローカルＩＤの数）の通信装置１００の抽出されたローカルＩＤを疑似ランダム関数処理部２１１に入力して、帰納的に秘密鍵を導出させることにより、１階層目からＮ階層目までの各通信装置１００のローカルＩＤに対応する秘密鍵を生成するよう制御する。
つまり、検証装置２０４として機能する疑似ランダム関数処理制御部２１２は、鍵生成装置２０３として機能する際と同様、宛先装置鍵と１階層目のローカルＩＤを用いて１階層目のローカルＩＤに対応する秘密鍵を導出させた後、ｋ−１階層目のローカルＩＤを用いて導出された秘密鍵とｋ階層目のローカルＩＤを用いて、ｋ階層目のローカルＩＤに対応する秘密鍵を導出させる処理を繰り返すよう制御する。
このように、疑似ランダム関数処理制御部２１２は、検証装置２０４として機能する場合、通信装置１００に配布済みの秘密鍵を、受信された情報から復元する。
【００６１】
ここで、本実施の形態では、上述の通り、送信元装置及び中継装置は、データ受信装置が配布した秘密鍵から派生鍵を生成している。このため、検証装置２０４は、派生鍵を再現する必要がある。このため、本実施の形態では、疑似ランダム関数処理制御部２１２は、検証装置２０４として機能する際、階層分離部２４０により抽出されたローカルＩＤを上位の階層から順に疑似ランダム関数処理部２１１に入力して、より詳細には、次のような帰納的な制御を行う。
【００６２】
疑似ランダム関数処理制御部２１２は、受信装置２０１がデータと系列と中継装置が生成したＭＡＣとを受信した場合、宛先装置鍵と１階層目の通信装置１００の抽出されたローカルＩＤを疑似ランダム関数処理部２１１に入力して仮の秘密鍵を導出させる。この仮の秘密鍵は、鍵生成装置２０３において生成された秘密鍵、すなわち派生鍵の元となる鍵に相当する。そして、疑似ランダム関数処理制御部２１２は、この仮の秘密鍵と派生鍵設定値を疑似ランダム関数処理部２１１に入力して真の秘密鍵を導出させる。この真の秘密鍵は、派生鍵に相当する。つまり、検証装置２０４において、派生鍵が再現される。また、疑似ランダム関数処理制御部２１２は、導出された仮の秘密鍵とｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは抽出されたローカルＩＤの数）の通信装置１００の抽出されたローカルＩＤを疑似ランダム関数処理部２１１に入力して、帰納的に仮の秘密鍵及び真の秘密鍵を導出させる。
つまり、疑似ランダム関数処理制御部２１２は、宛先装置鍵と１階層目のローカルＩＤを用いて１階層目のローカルＩＤに対応する秘密鍵を導出させた後、この秘密鍵と派生鍵設定値とを用いて１階層目のローカルＩＤに対応する派生鍵を導出させる。そして、疑似ランダム関数処理制御部２１２は、ｋ−１階層目のローカルＩＤを用いて導出された秘密鍵とｋ階層目のローカルＩＤを用いて、ｋ階層目のローカルＩＤに対応する秘密鍵を導出させた後、この秘密鍵と派生鍵設定値とを用いてｋ階層目のローカルＩＤに対応する派生鍵を導出させる処理を繰り返すよう制御する。
これにより、疑似ランダム関数処理制御部２１２は、１階層目からＮ階層目までの各通信装置１００のローカルＩＤに対応する真の秘密鍵（すなわち、派生鍵）を生成するよう制御する。
【００６３】
ＭＡＣ生成関数処理部２２１は、ＭＡＣ生成関数処理部３２１と同様、所定のＭＡＣ生成関数による演算を行うことでＭＡＣを生成する。ＭＡＣ生成関数処理部２２１の処理は、ＭＡＣ生成関数処理制御部２２２によって制御される。ＭＡＣ生成関数処理部２２１は、上述のＭＡＣ生成関数処理部６に相当する。また、ＭＡＣ生成関数処理制御部２２２は、上述のＭＡＣ生成関数処理制御部８に相当する。
【００６４】
ＭＡＣ生成関数処理制御部２２２は、受信装置２０１が受信したデータ（メッセージ）とＮ階層目の通信装置１００の抽出されたローカルＩＤに対応する秘密鍵とをＭＡＣ生成関数処理部２２１に入力してＭＡＣを導出させる。また、ＭＡＣ生成関数処理制御部２２２は、これにより導出されたＭＡＣとｍ階層目（ｍはＮ−１以下１以上の正整数）の通信装置１００の抽出されたローカルＩＤに対応する秘密鍵とをＭＡＣ生成関数処理部２２１に入力して、帰納的にＭＡＣを導出させる。
つまり、ＭＡＣ生成関数処理制御部２２２は、伝送されたデータと、疑似ランダム関数処理部２１１により生成されたＮ階層目の通信装置１００（すなわち、送信元装置と推定される通信装置１００）に対応する秘密鍵（具体的には、派生鍵に相当する鍵である真の秘密鍵）とを用いて、Ｎ階層目の通信装置１００が生成したＭＡＣを再現する。そして、その後、ＭＡＣ生成関数処理制御部２２２は、ｍ＋１階層目の通信装置１００についての再現したＭＡＣとｍ階層目の通信装置１００に対応する秘密鍵（具体的には、派生鍵に相当する鍵である真の秘密鍵）とを用いて、ｍ階層目の通信装置１００が生成したＭＡＣを再現する処理を繰り返すよう制御する。
これにより、ＭＡＣ生成関数処理制御部２２２は、Ｎ階層目から１階層目までの各通信装置１００に対応するＭＡＣを生成するよう制御する。
【００６５】
比較部２５０は、上述の比較部９に相当し、受信装置２０１が受信したＭＡＣと、ＭＡＣ生成関数処理部２２１により生成された１階層目の通信装置１００に対応するＭＡＣとを比較する。比較部２５０は、比較結果を出力する。正しいデータが正しい経路で伝送された場合、２つのＭＡＣが一致する。また、データが改ざんされているか、又は、データが正しい経路で伝送されていない場合、２つのＭＡＣは一致しない。
【００６６】
図８は、検証装置２０４における上述の処理の流れを示す模式図である。なお、図８において、｛ＩＤ｝は、伝送されたデータ（メッセージ）とともに受信装置２０１において受信されたローカルＩＤの系列である。また、ＩＤ１、ＩＤ２、・・・、ＩＤＮは、それぞれローカルＩＤを表し、それらのインデックスは、何番目の階層の通信装置１００に対応するローカルＩＤであるかを示す。ＳＫは、宛先装置鍵を表す。また、ＳＫ１、ＳＫ２、・・・、ＳＫＮは、秘密鍵を表し、それらのインデックスは、何番目の階層の通信装置１００に対応する秘密鍵であるかを示す。ＳＫ１、ＳＫ２、・・・、ＳＫＮは、上述の仮の秘密鍵に相当し、派生鍵設定値（図８の例では「０」）とともに、疑似ランダム関数に入力される。これにより、真の秘密鍵（派生鍵）が生成され、ＭＡＣ生成関数に提供される。図８において、Ｍは、伝送されたメッセージ、すなわちデータを表す。Ｓ１＿１、Ｓ１＿２、・・・、Ｓ１＿Ｎは、ＭＡＣ生成関数処理部２２１が出力するＭＡＣを表し、それらのインデックスは、何番目の階層の通信装置１００に対応するＭＡＣであるかを表す。また、Ｓ１は、伝送されたデータ（メッセージ）とともに受信装置２０１において受信されたＭＡＣであり、１階層目の通信装置１００により生成されたＭＡＣである。Ｂは、比較部２５０による比較結果を表す。
図８に示すように、検証装置２０４は、送信元装置からデータ受信装置までデータが伝送される際に行われる認証生成処理を再現し、ＭＡＣを生成する。そして、検証装置２０４は、生成したＭＡＣと受信されたＭＡＣを比較することにより、正しいデータが受信されたか、及び正しい経路で伝送されたかの検証を行う。
【００６７】
次に、データ伝送システム１０の動作について説明する。まず、初期設定について説明する。図９は、データ伝送システム１０における初期設定の動作の流れの一例を示すフローチャートである。なお、この初期設定は、悪意のある攻撃者による盗聴が行われない環境にて行われる。
【００６８】
まず、ステップ１００（Ｓ１００）において、鍵生成装置２０３が、送信元装置及び中継装置に配布する秘密鍵を生成する。鍵生成装置２０３が秘密鍵を生成するにあたり、階層化ＩＤが必要となる。中継装置である通信装置１００及び送信元装置である通信装置１００に予めローカルＩＤが割り当てられており、階層化ＩＤが既に決まっている場合には、各通信装置１００は上位ノードの通信装置１００を介して、データ受信装置である通信装置１００に階層化ＩＤを送付する。なお、鍵生成装置２０３は、秘密鍵の生成に際し、秘密鍵の配布先の通信装置１００の階層化ＩＤを取得できればよく、その取得方法は、上述の方法に限らず、任意の方法が可能であることは言うまでもない。
【００６９】
なお、通信装置１００に対してローカルＩＤが割り当てられていない場合、派生鍵設定値を除いた、所定の長さの値がローカルＩＤとして当該通信装置１００に割り当てられる。例えば、既にローカルＩＤが割り当てられている中継装置の下位に、当該中継装置と直接通信する下位ノードとして新たに通信装置１００が追加された場合、この中継装置は、新たにローカルＩＤを発行して、当該下位のノードに割り当ててもよい。このとき中継装置は、当該中継装置と直接通信する他の下位ノードに既に割り当てられているローカルＩＤと重複しないように、ローカルＩＤを発行する。これは、階層化ＩＤによりネットワーク中の通信装置１００を一意に特定できるようにするためである。重複しないローカルＩＤを各通信装置１００に割り当てる方法としては、例えば、１、２、３というように、値を順番に使って割り当てを行ってもよいし、十分に長いビット長（例えば１２８ビット）からランダムに選んだ値を使って割り当てを行ってもよい。ローカルＩＤの割り当ては、データ受信装置が行ってもよいし、特定の中継装置が全ての下位ノードに対して行ってもよい。
【００７０】
データ受信装置である通信装置１００の受信装置２０１が階層化ＩＤを受信すると、鍵生成装置２０３は、この階層化ＩＤと宛先装置鍵とを用いて、この階層化ＩＤに対応する秘密鍵を生成する。鍵生成装置２０３に入力された階層化ＩＤが｛ＩＤ１、ＩＤ２、ＩＤ３、・・・、ＩＤＮ｝であるとする。階層分離部２４０は、階層ごとのローカルＩＤを抽出する。また、疑似ランダム関数処理制御部２１２は、疑似ランダム関数に秘密鍵としてＳＫを入力し、１階層目のローカルＩＤであるＩＤ１をメッセージとして入力してＳＫ１を得る。次に、疑似ランダム関数処理制御部２１２は、疑似ランダム関数に秘密鍵としてＳＫ１を入力し、２階層目のローカルＩＤであるＩＤ２をメッセージとして入力してＳＫ２を得る。疑似ランダム関数処理制御部２１２は、この処理を帰納的に繰り返し、最後に疑似ランダム関数に秘密鍵としてＳＫＮ−１を入力し、Ｎ階層目のローカルＩＤであるＩＤＮをメッセージとして入力してＳＫＮを得る。そして、疑似ランダム関数処理制御部２１２は、このＳＫＮを当該階層化ＩＤに対しての秘密鍵として出力する。
【００７１】
初期設定では、ステップ１００の後、ステップ１０１の処理が行われる。ステップ１０１（Ｓ１０１）では、鍵生成装置２０３により生成された秘密鍵が配布される。データ受信装置である通信装置１００の送信装置２０２は、鍵生成装置２０３からＳＫＮを得ると、当該階層化ＩＤに対応する通信装置１００宛にＳＫＮを送付する。なお、ＳＫＮの伝送は、中継装置である通信装置１００を介して行われてもよい。ステップ１０１の完了により初期設定が完了する。初期設定後は、送信元装置及び中継装置のすべての通信装置１００は、ローカルＩＤ及び秘密鍵を有することとなる。
【００７２】
以上、秘密鍵の生成動作について説明した。なお、上述の説明では、配布する秘密鍵は、データ受信装置である通信装置１００により生成されたが、データ受信装置は、下位ノードに対しての秘密鍵の生成を中継装置に委託することもできる。この場合、中継装置である通信装置１００は、上述の鍵生成装置２０３と同様な構成を有すればよい。図１０は、中継装置である通信装置１００が下位のノードのための鍵生成を行う場合の中継装置の構成の一例を示すブロック図である。
【００７３】
図１０に示した構成は、階層分離部４３０を有する点で、図５に示した構成と異なる。なお、階層分離部４３０は、識別子抽出部とも称される。図１０に示した中継装置では、階層分離部４３０、疑似ランダム関数処理部４１１、及び疑似ランダム関数処理制御部４１２により、鍵生成装置４０４が構成される。
【００７４】
階層分離部４３０は、対象装置から該中継装置の直下の通信装置１００までのローカルＩＤの系列から、各階層の通信装置１００のローカルＩＤを抽出する。なお、この対象装置は、具体的には、当該中継装置よりも下位の通信装置１００であり秘密鍵の配布対象である通信装置１００をいう。また、中継装置の直下の通信装置１００とは、中継装置と直接通信可能な下位の通信装置１００をいう。図２に示す通信装置１００＿１ｂが通信装置１００＿３ａに配布する秘密鍵を生成する場合を例に説明する。通信装置１００＿２ｂのローカルＩＤがＩＤ２、通信装置１００＿３ａのローカルＩＤがＩＤ３であるとすると、通信装置１００＿１ｂの階層分離部４３０は、ローカルＩＤの系列｛ＩＤ２、ＩＤ３｝から、各階層の通信装置１００のローカルＩＤとして、ＩＤ２とＩＤ３を抽出する。
【００７５】
また、図１０に示した中継装置では、疑似ランダム関数処理制御部４１２は、自装置の派生鍵を生成するための上述の制御に加え、次のような制御を行い、下位の通信装置１００に配布するための秘密鍵を生成する。すなわち、疑似ランダム関数処理制御部４１２は、階層分離部４３０により抽出されたローカルＩＤを上位の階層から順に疑似ランダム関数処理部４１１に入力して、帰納的な制御を行う。具体的には、疑似ランダム関数処理制御部４１２は、次のような制御を行う。
【００７６】
疑似ランダム関数処理制御部４１２は、当該中継装置に固有の秘密鍵と、当該中継装置から見て１階層目の通信装置１００の抽出されたローカルＩＤとを疑似ランダム関数処理部４１１に入力して秘密鍵を導出させる。また、疑似ランダム関数処理制御部４１２は、この導出された秘密鍵と当該中継装置から見てｋ階層目（ｋは２以上Ｎ以下の正整数であり、Ｎは階層分離部４３０により抽出されたローカルＩＤの数）の通信装置１００の抽出されたローカルＩＤを疑似ランダム関数処理部４１１に入力して、帰納的に秘密鍵を導出させる。なお、上記の固有の秘密鍵は、当該中継装置の派生鍵の元である秘密鍵である。
つまり、疑似ランダム関数処理制御部４１２は、当該中継装置に割り当てられた秘密鍵と直下の通信装置１００（１階層目の通信装置１００）のローカルＩＤを用いて１階層目のローカルＩＤに対応する秘密鍵を導出させた後、ｋ−１階層目のローカルＩＤを用いて導出された秘密鍵とｋ階層目のローカルＩＤを用いて、ｋ階層目のローカルＩＤに対応する秘密鍵を導出させる処理を繰り返すよう制御する。
これにより、疑似ランダム関数処理制御部４１２は、秘密鍵の配布対象である下位の通信装置１００の秘密鍵を生成するよう制御する。よって、この場合、下位の通信装置１００は、疑似ランダム関数処理部４１１により生成された秘密鍵に基づいて生成された秘密鍵（派生鍵）を固有の秘密鍵として利用してＭＡＣを生成することとなる。
【００７７】
したがって、中継装置が下位の通信装置１００のための秘密鍵を生成する場合、データ伝送システム１０は、次のように動作する。まず、中継装置は自身の階層化ＩＤをデータ受信装置に向けて送付する。そして、中継装置は、データ受信装置の鍵生成装置２０３により生成された、当該階層化ＩＤに対応する秘密鍵を受け取る。中継装置は受け取った秘密鍵を鍵生成装置４０４に入力し、鍵生成装置２０３と同様の動作を行う。中継装置は、下位ノードから当該中継装置までのローカルＩＤの系列を受け取ると、階層分離部４３０がローカルＩＤを抽出する。そして、疑似ランダム関数処理制御部４１２は、疑似ランダム関数を用いて帰納的に下位の階層に対しての秘密鍵を生成するよう制御する。
【００７８】
なお、各通信装置１００に配布される秘密鍵は、当該通信装置１００の階層化ＩＤと宛先装置鍵によって一意に決まる。したがって、最上位ノードであるデータ受信装置による鍵生成と、中継装置による鍵生成では、いずれの場合も同一の通信装置１００に対し同一の秘密鍵が生成される。このように、下位ノードに対しては中継装置により、データ受信装置により生成される秘密鍵と同一の秘密鍵の生成を行うことが可能である。これにより、子ノードの通信装置をネットワークに動的に追加することができる。
【００７９】
次に、送信元装置である通信装置１００から、データ受信装置である通信装置１００に対し、伝送対象のデータであるメッセージＭを安全に送付するためのデータ伝送システム１０の動作について説明する。図１１は、データ伝送システム１０における伝送の動作の流れの一例を示すフローチャートである。また、図１２は、送信元装置及び中継装置における伝送経路の具体的な一例とともに情報の流れを示す模式図であり、図１３は、図１２で示した各通信装置における認証生成装置の処理の流れを示す模式図である。以下、図１１に示すフローチャートについて、適宜、図１２、図１３を参照しつつ説明する。
【００８０】
なお、図１２では、送信元装置である通信装置１００を通信装置Ｄ３として示し、通信装置Ｄ３の上位の中継装置である通信装置１００を通信装置Ｄ２として示し、通信装置Ｄ２の上位の中継装置であり、データ受信装置の直下のノードである通信装置１００を通信装置Ｄ１として示している。通信装置Ｄ１のローカルＩＤをＩＤ１、通信装置Ｄ２のローカルＩＤをＩＤ２、通信装置Ｄ３のローカルＩＤをＩＤ３とする。この場合、通信装置Ｄ３の階層化ＩＤは｛ＩＤ１、ＩＤ２、ＩＤ３｝である。また、通信装置Ｄ１は、データ受信装置である通信装置１００から秘密鍵ＳＫ１を配布され、秘密鍵ＳＫ１を図示しない記憶装置に記憶しているものとする。同様に、通信装置Ｄ２は、配布された秘密鍵ＳＫ２を図示しない記憶装置に記憶しており、通信装置Ｄ３は、配布された秘密鍵ＳＫ３を図示しない記憶装置に記憶しているものとする。また、通信装置Ｄ１が有する認証生成装置３０３を認証生成装置Ｄ３１、通信装置Ｄ２が有する認証生成装置４０３を認証生成装置Ｄ２１、通信装置Ｄ１が有する認証生成装置４０３を認証生成装置Ｄ１１と称すこととする。図１２は、以上のような符号の前提のもと、初期設定後に通信装置Ｄ１、Ｄ２、Ｄ３が保持している値、認証生成装置の入出力、及びノード間の通信内容について示している。
【００８１】
メッセージＭが伝送される場合、まず、ステップ２００（Ｓ２００）において、送信元装置である通信装置１００が、メッセージＭについてのＭＡＣを生成する。詳細には、まず、送信元装置の認証生成装置３０３の疑似ランダム関数処理部３１１は、配布された秘密鍵から派生鍵を生成する。そして、送信元装置の認証生成装置３０３のＭＡＣ生成関数処理部３２１は、派生鍵を用いて、メッセージＭについてのＭＡＣを生成する。
【００８２】
図１２、図１３に示した例に基づいて具体的に説明すると、ステップ２００において、次のように通信装置Ｄ３は動作する。通信装置Ｄ３は認証生成装置Ｄ３１にメッセージＭと秘密鍵ＳＫ３を入力する。認証生成装置Ｄ３１において、まず、疑似ランダム関数処理部３１１は、秘密鍵としてＳＫ３を入力とし、メッセージとして０を入力とし、派生鍵ＳＫ３１を生成する。次に、ＭＡＣ生成関数処理部３２１は、秘密鍵として派生鍵ＳＫ３１を入力とし、メッセージとしてＭを入力とし、計算結果であるＭＡＣ値Ｓ３を出力する。
【００８３】
ステップ２００の後、処理は、ステップ２０１（Ｓ２０１）に進む。
ステップ２０１では、上位の中継装置に情報が伝達される。具体的には、送信元装置は、メッセージＭと、認証生成装置３０３により生成されたＭＡＣ値と、送信元装置のローカルＩＤとを上位の中継装置に送信する。上記例により具体的に説明すると、通信装置Ｄ３の送信装置３０２は、（Ｍ、Ｓ３、ＩＤ３）を、通信装置Ｄ２に送信する。
【００８４】
ステップ２０１の後、処理は、ステップ２０２（Ｓ２０２）に進む。
ステップ２０２では、中継装置が、受信したＭＡＣについてのＭＡＣを生成する。詳細には、まず、中継装置の認証生成装置４０３の疑似ランダム関数処理部４１１は、配布された秘密鍵から派生鍵を生成する。そして、中継装置の認証生成装置４０３のＭＡＣ生成関数処理部４２１は、派生鍵を用いて、受信したＭＡＣについてのＭＡＣを生成する。
【００８５】
上述の例に基づいて具体的に説明すると、ステップ２０２において、次のように通信装置Ｄ２は動作する。通信装置Ｄ２の受信装置４０１は、通信装置Ｄ３から（Ｍ、Ｓ３、ＩＤ３）を受信すると、認証生成装置Ｄ２１にＭＡＣ値Ｓ３と秘密鍵ＳＫ２を入力する。認証生成装置Ｄ２１において、まず、疑似ランダム関数処理部４１１は、秘密鍵としてＳＫ２を入力とし、メッセージとして０を入力とし、派生鍵ＳＫ２１を生成する。次に、ＭＡＣ生成関数処理部４２１は、秘密鍵として派生鍵ＳＫ２１を入力とし、メッセージとしてＭＡＣ値Ｓ３を入力とし、計算結果であるＭＡＣ値Ｓ２を出力する。
【００８６】
ステップ２０２の後、当該中継装置の上位ノードがデータ受信装置ではない場合（ステップ２０３（Ｓ２０３）でＮｏ）、処理は、ステップ２０１に戻り、他の中継装置への情報の伝送が行われる。具体的には、中継装置は、メッセージＭと、認証生成装置４０３により生成されたＭＡＣ値と、受信したローカルＩＤ（ローカルＩＤ群）及び当該中継装置のローカルＩＤとを上位の中継装置に送信する。上記例により具体的に説明すると、通信装置Ｄ２の送信装置４０２は、（Ｍ、Ｓ２、｛ＩＤ２、ＩＤ３｝）を、通信装置Ｄ１に送信する。
【００８７】
通信装置Ｄ１は、通信装置Ｄ２と同様の動作を行う。すなわち、通信装置Ｄ１の受信装置４０１は、通信装置Ｄ２から（Ｍ、Ｓ２、｛ＩＤ２、ＩＤ３｝）を受信すると、認証生成装置Ｄ１１にＭＡＣ値Ｓ２と秘密鍵ＳＫ１を入力する。認証生成装置Ｄ１１において、まず、疑似ランダム関数処理部４１１は、秘密鍵としてＳＫ１を入力とし、メッセージとして０を入力とし、派生鍵ＳＫ１１を生成する。次に、ＭＡＣ生成関数処理部４２１は、秘密鍵として派生鍵ＳＫ１１を入力とし、メッセージとしてＭＡＣ値Ｓ２を入力とし、計算結果であるＭＡＣ値Ｓ１を出力する。
【００８８】
これに対し、当該中継装置の上位ノードがデータ受信装置である場合（ステップ２０３でＹｅｓ）、処理は、ステップ２０４へ移行する。
ステップ２０４（Ｓ２０４）では、中継装置は、データ受信装置に情報を伝達する。具体的には、中継装置は、メッセージＭと、認証生成装置４０３により生成されたＭＡＣ値と、受信したローカルＩＤ（ローカルＩＤ群）及び当該中継装置のローカルＩＤとをデータ受信装置に送信する。上記例により具体的に説明すると、通信装置Ｄ１の送信装置４０２は、（Ｍ、Ｓ１、｛ＩＤ１、ＩＤ２、ＩＤ３｝）を、データ受信装置である通信装置１００に送信する。
【００８９】
次に、データ受信装置である通信装置１００における検証動作について説明する。図１４は、データ受信装置における検証動作の流れの一例を示すフローチャートである。データ受信装置は、受信装置２０１により中継装置からメッセージＭを含む情報を受信すると、以下に示すように検証装置２０４による検証処理を行う。
【００９０】
ステップ３００（Ｓ３００）において、階層分離部２４０は、メッセージＭの伝送経路上の各階層の通信装置１００のローカルＩＤを、受信装置２０１が受信したローカルＩＤの系列から抽出する。なお、上記の例では、受信装置２０１は、｛ＩＤ１、ＩＤ２、ＩＤ３｝を受信しており、これは、送信元装置の階層化ＩＤに対応している。このステップでは、ローカルＩＤの系列はＮ階層（Ｎは任意の整数）の分離が行われ、Ｎ個のローカルＩＤが抽出される。上記の例では、階層分離部２４０により、ローカルＩＤの系列はＩＤ１、ＩＤ２、ＩＤ３と３階層に分離され、３つのローカルＩＤが抽出される。
【００９１】
次に、ステップ３０１（Ｓ３０１）において、疑似ランダム関数処理部２１１及び疑似ランダム関数処理制御部２１２は、抽出されたローカルＩＤと、秘密鍵記憶部２３０に記憶された宛先装置鍵ＳＫとを用いて、秘密鍵を生成する。具体的には、疑似ランダム関数処理部２１１及び疑似ランダム関数処理制御部２１２は、ＳＫ０’＝ＳＫとし、０≦ｉ＜Ｎに対して以下が実行する。疑似ランダム関数処理制御部２１２は、疑似ランダム関数処理部２１１に、ＳＫｉ’を秘密鍵として入力し、ｉ＋１階層目のローカルＩＤであるＩＤｉ＋１をメッセージとして入力し、疑似ランダム関数処理部２１１からＳＫｉ＋１’を得る。この時生成されるＳＫ１’からＳＫＮ’までの値は、受信した各ローカルＩＤが正しい伝送経路（すなわち、データ伝送システム１０におけるネットワークにより規定される伝送経路）上の通信装置１００のローカルＩＤと一致していれば、正しい伝送経路上の通信装置１００が有する秘密鍵（配布された秘密鍵）と一致する。
【００９２】
次に、ステップ３０２（Ｓ３０２）において、疑似ランダム関数処理部２１１及び疑似ランダム関数処理制御部２１２は、ステップ３０１で生成された秘密鍵と、派生鍵設定値とを用いて、派生鍵を生成する。具体的には、疑似ランダム関数処理部２１１及び疑似ランダム関数処理制御部２１２は、１≦ｉ≦Ｎに対して以下を実行する。疑似ランダム関数処理制御部２１２は、疑似ランダム関数処理部２１１にＳＫｉ’を秘密鍵として入力し、０をメッセージとして入力し、派生鍵ＳＫｉ＿１’を得る。この時生成されるＳＫ１＿１’からＳＫＮ＿１’までの値は、受信した各ローカルＩＤが正しい伝送経路上の通信装置１００のローカルＩＤと一致していれば、正しい伝送経路上の通信装置１００がＭＡＣを生成するための派生鍵と一致する。
【００９３】
次に、ステップ３０３（Ｓ３０３）において、ＭＡＣ生成関数処理部２２１及びＭＡＣ生成関数処理制御部２２２は、受信したメッセージＭとステップ３０２で生成された派生鍵を用いてＭＡＣを生成する。具体的には、ＭＡＣ生成関数処理部２２１及びＭＡＣ生成関数処理制御部２２２は、Ｓ１＿Ｎ＋１＝Ｍとし、Ｎ≧ｉ≧１に対して以下を実行する。ＭＡＣ生成関数処理制御部２２２は、ＭＡＣ生成関数処理部２２１にＳＫｉ＿１’を秘密鍵として入力し、Ｓ１＿ｉ＋１をメッセージとして入力し、Ｓ１＿ｉを得る。この時生成されるＳ１＿ＮからＳ１＿１までのそれぞれの値は、メッセージＭが正しく送付されていれば、データ受信装置から送信元装置に至るまでの各階層の通信装置１００が生成したＭＡＣ値と一致する。
【００９４】
次に、ステップ３０４（Ｓ３０４）において、比較部２５０は、受信したＭＡＣとステップ３０３で生成した１階層目の通信装置１００に対応するＭＡＣとを比較する。具体的には、比較部２５０は、ステップ３０３で生成したＳ１＿１と、受信したＳ１とを比較し、両者の値が一致しているか否かを判定する。比較部２５０は、両者が一致していれば出力値Ｂ＝１を出力し、そうでなければ出力値Ｂ＝０を出力する。ここで、Ｂ＝１であればメッセージＭが送信元装置から改ざんされずに送付され、かつ正しい伝送経路にて伝送されたことを意味する。もしＢ＝０であればメッセージＭは改ざんされたか、または、正しい伝送経路上の通信装置以外の通信装置を経由して伝送されたことを意味する。なお、比較部２５０の出力値により、伝送の安全性をこのように判定する判定部（図示せず）をデータ受信装置が有してもよい。
【００９５】
比較部２５０の比較結果による検証について補足説明する。送信元装置又は中継装置が他の通信装置に対してデータの送付を行う際にメッセージＭが改ざんされていた場合、ステップ３０３においてＭＡＣ生成関数処理部６に適切な入力値が入力されないこととなる。このため、ＭＡＣ生成関数が安全である限り、検証装置２０４による検証には通らない。
また、伝送中に生成されるＭＡＣ値Ｓ１、Ｓ２、…、ＳＮのうちいずれかが改ざんされていた場合、ステップ３０３においてＭＡＣ生成関数処理部６に適切なＭＡＣが入力されないこととなるため、ＭＡＣ生成関数が安全である限り、受信したＳ１と生成したＳ１＿１とは一致しないため、検証装置２０４による検証には通らない。
また、疑似ランダム関数が安全である限り、疑似ランダム関数により生成される秘密鍵が他の秘密鍵又は派生鍵と衝突する確率（重複する確率）は、鍵のビット数に依存して指数的に小さくなる。このため、データの伝送経路を示す情報であるローカルＩＤの系列が改ざんされた場合、ステップ３０１において、適切な秘密鍵が生成されない。したがって、ＭＡＣ生成関数処理部６に適切な秘密鍵が入力されないこととなるため、検証装置２０４による検証には通らない。
【００９６】
なお、ｋビット安全性を必要とし２＾｛−ｋ｝以上の確率で疑似ランダム関数の安全性に影響を及ぼさないことを必要とする場合、疑似ランダム関数に入力される秘密鍵および疑似ランダム関数から出力される秘密鍵あるいは派生鍵は、ｋビット以上である。
また、ｋビット安全性を必要とし２＾｛−ｋ｝以上の確率でＭＡＣ生成関数の安全性に影響を及ぼさないことを必要とする場合、ＭＡＣ生成関数の出力は、２×ｋビット以上である。
【００９７】
以上、実施の形態１について説明した。上述の通り、実施の形態１にかかるデータ伝送システム１０によれば、伝送されたデータが改ざんされていないか、及び、伝送されたデータが正しい経路で伝送されているかを検証することができる。
【００９８】
また、上述の通り、鍵生成装置２０３により宛先装置鍵に基づいて各通信装置１００のための秘密鍵が生成される。このため、データ受信装置が管理する秘密鍵は、ネットワーク上のノード数に依存せず、宛先装置鍵だけであり、検証装置として機能する装置における鍵の管理が容易である。また、中継装置及び送信元装置も、配布された秘密鍵のみを管理すればよく、鍵の管理が容易である。
【００９９】
また、特に、実施の形態１では、送信元装置及び中継装置は、配布された秘密鍵をそのまま使ってＭＡＣを計算するのではなく、派生鍵を生成した上で、この派生鍵を使ってＭＡＣを計算する。したがって、秘密鍵を導出するための暗号アルゴリズム（疑似ランダム関数）と、ＭＡＣを算出するための暗号アルゴリズム（ＭＡＣ生成関数）とで、異なる秘密鍵を用いることが保障され、よりセキュアなシステムを実現することができる。
【０１００】
なお、実施の形態１では、派生鍵を用いたＭＡＣ生成を行う構成を示したが、派生鍵を生成しなくてもよい。すなわち、配布された秘密鍵を用いてＭＡＣ生成が行われてもよい。つまり、送信元装置及び中継装置に固有の秘密鍵は、所定の疑似ランダム関数による演算を行うことで導出される秘密鍵であればよい。換言すると、通信装置に固有の秘密鍵は、配布された秘密鍵を意味してもよいし、配布された秘密鍵から生成された派生鍵を意味してもよい。なお、本実施の形態に限らず、後述する他の実施の形態でも、派生鍵を用いたＭＡＣ生成ではなく、配布された秘密鍵を用いたＭＡＣ生成が行われてもよい。なお、派生鍵を用いない場合、送信元装置、中継装置、及びデータ受信装置において、派生鍵の生成動作が不要となる。また、派生鍵を用いない場合であって、中継装置が上述の鍵生成装置４０４を有する場合、疑似ランダム関数処理制御部４１２は、下位の通信装置用の秘密鍵を生成するための制御を行い、派生鍵を生成するための制御は行わない。派生鍵を用いない場合であって、中継装置が鍵生成装置４０４を有する場合、当該中継装置の下位の通信装置に固有の秘密鍵は、疑似ランダム関数処理部４１１により生成された秘密鍵となる。
【０１０１】
また、データ受信装置が受信する検証用のＭＡＣ値（Ｓ１）のビット長は、送信元装置までの階層の深さに依存しない。そして、Ｓ１があればメッセージＭに対しての検証および伝送経路を正しく通っていることの検証の両方を同時に実行可能である。中継装置で行われるＭＡＣ生成関数による計算は、メッセージＭの長さに依存しない固定長の長さ（すなわち、下位のノードが生成したＭＡＣ値の長さ）によって決まるため、計算時間が一定である。よって、様々な長さのメッセージを送信元装置が出力する場合であっても、中継装置にかかる負荷は一定である。
【０１０２】
近年、車載マイコンの分野を含む様々な技術分野において、ＩｏＴ機器からのセンサデータの伝送の際、センサデータであるメッセージが改ざんされていないことを保証する技術は非常に関心が高い。そして、正しい経路によってデータが伝送されたことを保障することも重要である。実施の形態１にかかるデータ伝送システム１０では、効率的な鍵管理を実現しつつ、そのようなニーズに応えることができる。また、中継装置において、メッセージＭについてのＭＡＣ値ではなく、下位ノードから受信したＭＡＣ値についてのＭＡＣ値を算出しているため、ＭＡＣ値についての計算量および通信量を抑制することができる。
【０１０３】
＜実施の形態２＞
次に、実施の形態２について説明する。実施の形態１では、データ受信装置のみが検証を実行した。これに対し、実施の形態２では、さらに、中継装置が検証を実行する。これにより、実施の形態２では、効率的にＭＡＣをチェックする。以下、実施の形態１と異なる点を説明する。本実施の形態では、送信元装置及び中継装置の動作が、実施の形態１と異なる。
【０１０４】
本実施の形態では、送信元装置である通信装置１００のＭＡＣ生成関数処理制御部３２２は、実施の形態１で説明した制御に加え、さらに次のような制御を行う。ＭＡＣ生成関数処理制御部３２２は、ＭＡＣ生成関数処理部３２１により生成されたデータについてのＭＡＣ（すなわち、送信対象のデータと秘密鍵をＭＡＣ生成関数処理部３２１に入力して得られたＭＡＣ）と、送信元装置に固有の秘密鍵とをＭＡＣ生成関数処理部３２１に入力して、ＭＡＣ生成関数処理部３２１により生成されたＭＡＣについてのＭＡＣを生成するよう制御する。ＭＡＣ生成関数処理部３２１が生成した２つのＭＡＣのうち、後者のＭＡＣを第１のＭＡＣ、前者のＭＡＣを第２のＭＡＣと呼ぶ。
【０１０５】
そして、本実施の形態の送信元装置の送信装置３０２は、送信対象のデータと、このデータに基づいてＭＡＣ生成関数処理部３２１が生成した２つのＭＡＣと、当該送信元装置のローカルＩＤとを中継装置に送信する。
【０１０６】
次に、実施の形態２にかかる中継装置について説明する。図１５は、実施の形態２にかかる中継装置の構成の一例を示すブロック図である。中継装置としての通信装置１００は、認証生成装置４０３が認証生成装置４０５に置き換わった点で、図５に示した構成と異なる。認証生成装置４０５は、疑似ランダム関数処理部４１１と、疑似ランダム関数処理制御部４１２と、ＭＡＣ生成関数処理部４２１と、ＭＡＣ生成関数処理制御部４２２とに加え、さらに比較部４４０を有する。
【０１０７】
本実施の形態では、中継装置である通信装置１００の疑似ランダム関数処理制御部４１２は、実施の形態１で説明した制御に加え、さらに次のような制御を行う。疑似ランダム関数処理制御部４１２は、当該中継装置に固有の秘密鍵と、受信装置４０１が受信したローカルＩＤのうち当該中継装置に対し送信を行った通信装置１００（すなわち、当該中継装置の直下のノードである通信装置１００）のローカルＩＤとを疑似ランダム関数処理部４１１に入力して、当該中継装置に対し送信を行った通信装置１００に固有の秘密鍵を生成するよう制御する。
【０１０８】
また、中継装置の比較部４４０は、受信装置４０１が受信した２つのＭＡＣのうちの第１のＭＡＣと、ＭＡＣ生成関数処理部４２１により生成されたＭＡＣとを比較する。なお、下位ノードが送信元装置である場合、下位ノードは、送信対象のデータとともに、２つのＭＡＣを送信する。また、下位ノードが中継装置である場合も、下位ノードである中継装置は、後述の通り、送信対象のデータとともに、２つのＭＡＣを送信する。このため、中継装置の受信装置４０１は、送信対象のデータとともに、２つのＭＡＣを受信することとなる。
【０１０９】
本実施の形態では、中継装置である通信装置１００のＭＡＣ生成関数処理制御部４２２は、受信装置４０１が受信した２つのＭＡＣのうちの第２のＭＡＣと当該中継装置に対し送信を行った通信装置１００に固有の秘密鍵とをＭＡＣ生成関数処理部４２１に入力してこの第２のＭＡＣについてのＭＡＣを生成するよう制御する。このとき比較部４４０は、上記第１のＭＡＣと、上記第２のＭＡＣについてのＭＡＣとを比較する。比較結果が一致していた場合はＭＡＣ生成関数処理制御部４２２は以下を実施し、比較結果が一致していなかった場合は以下の処理を中止する。中継装置である通信装置１００のＭＡＣ生成関数処理制御部４２２は、上記第１のＭＡＣと当該中継装置に固有の秘密鍵とをＭＡＣ生成関数処理部４２１に入力して、当該第１のＭＡＣについてのＭＡＣを生成するよう制御する。
【０１１０】
また、本実施の形態では、送信装置４０２は、送信対象のデータと、上記第１のＭＡＣと、上記第１のＭＡＣについてのＭＡＣと、当該中継装置のローカルＩＤ及び受信装置４０１が受信したローカルＩＤとを上位の通信装置１００（すなわち、他の中継装置又はデータ受信装置）に送信する。
【０１１１】
次に、本実施の形態における伝送動作について説明する。図１６は、実施の形態２にかかるデータ伝送システムにおける伝送の動作の流れの一例を示すフローチャートである。また、図１７は、送信元装置及び中継装置における伝送経路の具体的な一例とともに情報の流れを示す模式図であり、図１８Ａ〜図１８Ｃは、図１７で示した各通信装置における認証生成装置の処理の流れを示す模式図である。図１８Ａは、認証生成装置Ｄ３１を示し、図１８Ｂは、認証生成装置Ｄ２１を示し、図１８Ｃは、認証生成装置Ｄ１１を示す。以下、図１６に示すフローチャートについて、適宜、図１７、図１８を参照しつつ説明する。なお、図１７では、図１２に示した例と同様の符号を用いて、構成（通信装置、認証生成装置）及び情報（ローカルＩＤ、秘密鍵、メッセージ、ＭＡＣ）を示している。図１７は、そのような符号の前提のもと、初期設定後に通信装置Ｄ１、Ｄ２、Ｄ３が保持している値、認証生成装置の入出力、及びノード間の通信内容について示している。なお、本実施の形態における初期設定は、実施の形態１と同様である。
【０１１２】
メッセージＭが伝送される場合、まず、ステップ２２０（Ｓ２２０）において、図１１のステップ２００と同様、送信元装置である通信装置１００が、メッセージＭについてのＭＡＣを生成する。詳細には、まず、送信元装置の認証生成装置３０３の疑似ランダム関数処理部３１１は、配布された秘密鍵から派生鍵を生成する。そして、送信元装置の認証生成装置３０３のＭＡＣ生成関数処理部３２１は、派生鍵を用いて、メッセージＭについてのＭＡＣを生成する。
【０１１３】
図１７、図１８に示した例に基づいて具体的に説明すると、ステップ２００において、通信装置Ｄ３の認証生成装置Ｄ３１では、疑似ランダム関数処理部３１１は、秘密鍵ＳＫ３と、派生鍵設定値（具体的には、０）を用いて派生鍵ＳＫ３１を生成する。次に、ＭＡＣ生成関数処理部３２１は、派生鍵ＳＫ３１とメッセージＭを用いて、ＭＡＣ値Ｓ４を出力する。
【０１１４】
ステップ２２０の後、処理は、ステップ２２１（Ｓ２２１）に進む。ステップ２２１において、送信元装置である通信装置１００は、ステップ２２０で生成したＭＡＣについてのＭＡＣを生成する。図１７、図１８に示した例に基づいて具体的に説明すると、ステップ２２１において、ＭＡＣ生成関数処理部３２１は、秘密鍵として派生鍵ＳＫ３１を入力とし、メッセージとしてＭＡＣ値Ｓ４を入力とし、計算結果であるＭＡＣ値Ｓ３を出力する。
【０１１５】
ステップ２２１の後、処理は、ステップ２２２（Ｓ２２２）に進む。ステップ２２２では、上位の中継装置に情報が伝達される。具体的には、送信元装置は、メッセージＭと、メッセージＭに基づいて認証生成装置３０３により生成された２つのＭＡＣ値と、送信元装置のローカルＩＤとを上位の中継装置に送信する。上記例により具体的に説明すると、通信装置Ｄ３の送信装置３０２は、（Ｍ、Ｓ４、Ｓ３、ＩＤ３）を、通信装置Ｄ２に送信する。
【０１１６】
ステップ２２２の後、処理は、ステップ２２３（Ｓ２２３）に進む。ステップ２２３では、中継装置が、受信した２つのＭＡＣのうちの一方のＭＡＣについてのＭＡＣを生成する。詳細には、まず、中継装置の認証生成装置４０３の疑似ランダム関数処理部４１１は、自装置に配布された秘密鍵から、メッセージＭを送信してきた下位ノードの秘密鍵を生成する。さらに、疑似ランダム関数処理部４１１は、生成した下位ノードの秘密鍵から、この下位ノードの派生鍵を生成する。そして、中継装置の認証生成装置４０３のＭＡＣ生成関数処理部４２１は、この下位ノードの派生鍵を用いて、受信したＭＡＣのうちの一方のＭＡＣについてのＭＡＣを生成する。
【０１１７】
上述の例に基づいて具体的に説明すると、ステップ２２３において、次のように通信装置Ｄ２は動作する。通信装置Ｄ２の受信装置４０１は、通信装置Ｄ３から（Ｍ、Ｓ４、Ｓ３、ＩＤ３）を受信すると、認証生成装置Ｄ２１にＭＡＣ値Ｓ４、Ｓ３と秘密鍵ＳＫ２と、ＩＤ３を入力する。認証生成装置Ｄ２１において、まず、疑似ランダム関数処理部４１１は、秘密鍵としてＳＫ２を入力とし、メッセージとしてＩＤ３を入力とし、計算結果ＳＫ３２を出力する。このＳＫ３２は、下位のノードに配布された秘密鍵に相当する。次に、疑似ランダム関数処理部４１１は、秘密鍵としてＳＫ３２を入力とし、メッセージとして０を入力とし、計算結果ＳＫ３３を出力する。このＳＫ３３は、下位のノードの派生鍵に相当する。次に、ＭＡＣ生成関数処理部４２１は、秘密鍵として派生鍵ＳＫ３３を入力とし、メッセージとしてＭＡＣ値Ｓ４を入力とし、計算結果であるＭＡＣ値Ｓ３１を出力する。もし誤りがなければ、秘密鍵ＳＫ３２は通信装置Ｄ３の秘密鍵ＳＫ３と一致し、派生鍵ＳＫ３３は通信装置Ｄ３が算出した派生鍵ＳＫ３１と一致し、ＭＡＣ値Ｓ３１は通信装置Ｄ３が算出したＭＡＣ値Ｓ３と一致する。
【０１１８】
ステップ２２３の後、処理は、ステップ２２４（Ｓ２２４）に進む。ステップ２２４では、中継装置の比較部４４０が、ステップ２２３で生成したＭＡＣと、受信した２つのＭＡＣのうちの他方のＭＡＣとを比較する。上述の例に基づいて具体的に説明すると、比較部４４０は、ステップ２２３で生成したＭＡＣ値Ｓ３１と、受信したＭＡＣ値Ｓ３を比較する。ＭＡＣ値が一致する場合（ステップ２２５（Ｓ２２５）でＹｅｓ）、以下のステップ２２６以降の処理が行われるが、ＭＡＣ値が一致しない場合（ステップ２２５（Ｓ２２５）でＹｅｓ）、中継装置は、処理を終了する。
【０１１９】
ステップ２２６では、中継装置が、受信した２つのＭＡＣのうちの他方のＭＡＣについてのＭＡＣを生成する。詳細には、まず、中継装置の認証生成装置４０３の疑似ランダム関数処理部４１１は、配布された秘密鍵から派生鍵を生成する。そして、中継装置の認証生成装置４０３のＭＡＣ生成関数処理部４２１は、派生鍵を用いて、受信したＭＡＣについてのＭＡＣを生成する。
【０１２０】
上述の例に基づいて具体的に説明すると、ステップ２２６において、次のように通信装置Ｄ２は動作する。認証生成装置Ｄ２１において、まず、疑似ランダム関数処理部４１１は、秘密鍵としてＳＫ２を入力とし、メッセージとして０を入力とし、派生鍵ＳＫ２１を生成する。次に、ＭＡＣ生成関数処理部４２１は、秘密鍵として派生鍵ＳＫ２１を入力とし、メッセージとしてＭＡＣ値Ｓ３を入力とし、計算結果であるＭＡＣ値Ｓ２を出力する。
【０１２１】
ステップ２２６の後、当該中継装置の上位ノードがデータ受信装置ではない場合（ステップ２２７（Ｓ２２７）でＮｏ）、処理は、ステップ２２２に戻り、他の中継装置への情報の伝送が行われる。具体的には、中継装置は、メッセージＭと、認証生成装置４０３により生成された２つのＭＡＣ値と、受信したローカルＩＤ及び当該中継装置のローカルＩＤとを上位の中継装置に送信する。上記例により具体的に説明すると、通信装置Ｄ２の送信装置４０２は、（Ｍ、Ｓ３、Ｓ２、｛ＩＤ２、ＩＤ３｝）を、通信装置Ｄ１に送信する。
【０１２２】
通信装置Ｄ１は、通信装置Ｄ２と同様の動作を行う。すなわち、通信装置Ｄ１の受信装置４０１が通信装置Ｄ２から（Ｍ、Ｓ３、Ｓ２、｛ＩＤ２、ＩＤ３｝）を受信すると、認証生成装置Ｄ１１にＭＡＣ値Ｓ３、Ｓ２と秘密鍵ＳＫ１と、ＩＤ２を入力する。認証生成装置Ｄ１１において、まず、疑似ランダム関数処理部４１１は、秘密鍵としてＳＫ１を入力とし、メッセージとしてＩＤ２を入力とし、計算結果ＳＫ２２を出力する。次に、疑似ランダム関数処理部４１１は、秘密鍵としてＳＫ２２を入力とし、メッセージとして０を入力とし、計算結果ＳＫ２３を出力する。次に、ＭＡＣ生成関数処理部４２１は、秘密鍵として派生鍵ＳＫ２３を入力とし、メッセージとしてＭＡＣ値Ｓ３を入力とし、計算結果であるＭＡＣ値Ｓ２１を出力する。そして、比較部４４０は、ＭＡＣ値Ｓ２１と、受信したＭＡＣ値Ｓ２を比較する。両者が一致している場合、認証生成装置Ｄ１１は、秘密鍵ＳＫ１を用いて派生鍵ＳＫ１１を算出後、ＭＡＣ値Ｓ２のＭＡＣであるＭＡＣ値Ｓ１を生成する。もし誤りがなければ、秘密鍵ＳＫ２２は通信装置Ｄ３の秘密鍵ＳＫ２と一致し、派生鍵ＳＫ２３は通信装置Ｄ３が算出した派生鍵ＳＫ２１と一致し、ＭＡＣ値Ｓ２１は通信装置Ｄ３が算出したＭＡＣ値Ｓ２と一致する。
【０１２３】
中継装置の上位ノードがデータ受信装置である場合（ステップ２２７でＹｅｓ）、処理は、ステップ２２８へ移行する。ステップ２２８（Ｓ２２８）では、中継装置は、データ受信装置に情報を伝達する。具体的には、中継装置は、メッセージＭと、認証生成装置４０３により生成された２つのＭＡＣ値と、受信したローカルＩＤ及び当該中継装置のローカルＩＤとをデータ受信装置に送信する。上記例により具体的に説明すると、通信装置Ｄ１の送信装置４０２は、（Ｍ、Ｓ２、Ｓ１、｛ＩＤ１、ＩＤ２、ＩＤ３｝）を、データ受信装置である通信装置１００に送信する。なお、通信装置Ｄ１は、Ｓ２を送信しなくてもよい。以上、実施の形態２における伝送動作について説明した。なお、データ受信装置における検証動作は、実施の形態１と同様である。このため、上述の例に基づいて説明すると、データ受信装置は、通信装置Ｄ１から受信した（Ｍ、Ｓ１、｛ＩＤ１、ＩＤ２、ＩＤ３｝）を用いて、図１４に示したフローにしたがって検証処理を行う。
【０１２４】
以上、実施の形態２について説明した。実施の形態２では、中継装置が、下位のノードから送られてきたＭＡＣ値の検証を行うことができる構成となっている。そして、中継装置のＭＡＣ生成関数処理制御部４２２は、上述の通り、比較部４４０により、第１のＭＡＣと第２のＭＡＣについてのＭＡＣとが一致すると判定された場合、第１のＭＡＣと当該中継装置に固有の秘密鍵とをＭＡＣ生成関数処理部４２１に入力して、第１のＭＡＣについてのＭＡＣを生成するよう制御する。言い換えると、中継装置のＭＡＣ生成関数処理制御部４２２は、比較部４４０によりＭＡＣが一致しないと判定された場合、第１のＭＡＣについてのＭＡＣを生成する処理を行わない。このため、データ伝送システムにおける処理負荷を抑制することができる。
【０１２５】
また、中継装置の送信装置４０２は、比較部４４０により、第１のＭＡＣと第２のＭＡＣについてのＭＡＣとが一致すると判定された場合、送信対象のデータと、第１のＭＡＣと、第１のＭＡＣについてのＭＡＣと、当該中継装置のローカルＩＤ及び受信装置４０１が受信したローカルＩＤとを上位の通信装置１００に送信する。言い換えると、中継装置のＭＡＣ生成関数処理制御部４２２は、比較部４４０によりＭＡＣが一致しないと判定された場合、上位のノードへの伝送を行わない。このためデータ伝送システムにおける通信量を抑制することができる。なお、上記実施の形態では、比較部４４０によりＭＡＣが一致しないと判定された場合、ＭＡＣの生成及び上位ノードへの送信の両方が抑止されたが、上位ノードへの送信のみが抑止されてもよい。
【０１２６】
また、送信元装置においてＭＡＣ生成を２回行って、２つのＭＡＣを生成している。このため、中継装置では、認証生成装置４０５に送信対象のデータであるメッセージＭを入力することなく、検証を行うことができる。したがって、中継装置の認証生成装置４０５による計算時間はメッセージＭの長さに依存しない。このため、認証生成装置４０５の計算時間を予め見積もることができるため、下位ノードから送られるデータの送信間隔が定まっていれば、システム遅延を生じさせることなくデータ送受信を行うことが可能な下位ノードの最大接続数を予め見積もることができる。
【０１２７】
なお、本実施の形態においても、中継装置による秘密鍵の生成が行われてもよい。すなわち、本実施の形態において、中継装置は鍵生成装置４０４を有してもよい。また、本実施の形態においても、派生鍵が用いられなくてもよい。すなわち、配布された秘密鍵を用いてＭＡＣ生成が行われてもよい。なお、そのような構成は、上述のデータ伝送システムにおいて、派生鍵の生成に関する処理を省略することで実現できる。
【０１２８】
＜実施の形態３＞
次に、実施の形態３について説明する。実施の形態１では、送信対象のデータは、平文のまま伝送された。これに対し、実施の形態３にかかるデータ伝送システムでは、送信対象のデータは暗号化されて伝送される。これにより、実施の形態３では、より安全にデータの伝送を行うことができる。以下、実施の形態１と異なる点を説明する。
【０１２９】
図１９は、実施の形態３にかかる送信元装置の構成の一例を示すブロック図である。送信元装置としての通信装置１００は、認証生成装置３０３が暗号装置３０４に置き換わった点で、図４に示した構成と異なる。暗号装置３０４は、ＭＡＣ生成関数処理部３２１及びＭＡＣ生成関数処理制御部３２２の代わりに、認証付き暗号暗号化関数処理部３３１及び認証付き暗号暗号化関数処理制御部３３２を有する点で、認証生成装置３０３と異なる。なお、暗号装置３０４は、以下に述べるとおり、暗号文及びＭＡＣを生成する。このため、暗号装置３０４は、認証生成装置と称されてもよい。
【０１３０】
認証付き暗号暗号化関数処理部３３１は、所定の認証付き暗号の暗号化関数による演算を行うことで、ＭＡＣの生成及び暗号化処理を行う。認証付き暗号暗号化関数処理制御部３３２は、送信対象のデータと送信元装置に固有の秘密鍵とを認証付き暗号暗号化関数処理部３３１に入力して、送信対象のデータについてのＭＡＣの生成と、送信対象のデータの暗号化を行うよう制御する。なお、認証付き暗号暗号化関数処理制御部３３２は、疑似ランダム関数処理部３１１により生成された秘密鍵（派生鍵）を送信元装置に固有の秘密鍵として、認証付き暗号暗号化関数処理部３３１に入力する。
【０１３１】
また、本実施の形態では、送信元装置の送信装置３０２は、認証付き暗号暗号化関数処理部３３１によって暗号化されたデータと、認証付き暗号暗号化関数処理部３３１が生成したＭＡＣと、当該送信元装置のローカルＩＤとを中継装置に送信する。
【０１３２】
このため、本実施の形態にかかる中継装置の受信装置４０１は、暗号化されたデータと、ＭＡＣと、通信装置１００のローカルＩＤとを受信する。そして、中継装置の送信装置４０２は、受信装置４０１が受信した暗号化されたデータと、ＭＡＣ生成関数処理部４２１が生成したＭＡＣと、送信元装置が生成したＭＡＣと、当該中継装置のローカルＩＤ及び受信装置４０１が受信したローカルＩＤとを他の中継装置又はデータ受信装置に送信する。
【０１３３】
次に、実施の形態３にかかるデータ受信装置について説明する。図２０は、実施の形態３にかかるデータ受信装置の構成の一例を示すブロック図である。データ受信装置としての通信装置１００は、検証装置２０４が検証装置２０５に置き換わった点で、図６に示した構成と異なる。検証装置２０５は、認証付き暗号復号関数処理部２６１及び認証付き暗号復号関数処理制御部２６２が追加された点で、検証装置２０４と異なる。
【０１３４】
認証付き暗号復号関数処理部２６１は、所定の認証付き暗号の復号関数による演算を行うことで、復号されたデータを生成する。認証付き暗号復号関数処理制御部２６２は、Ｎ階層目の通信装置１００の抽出されたローカルＩＤに対応する秘密鍵と受信装置２０１が受信した暗号化されたデータと受信装置２０１が受信した送信元装置が生成したＭＡＣとを認証付き暗号復号関数処理部２６１に入力して、復号されたデータを生成するよう制御する。なお、本実施の形態にかかる受信装置２０１は、中継装置を介して、暗号化されたデータと、ローカルＩＤの系列と、中継装置が生成したＭＡＣと、送信元装置が生成したＭＡＣとを受信する。ただし、受信装置２０１が受信する、送信元装置が生成したＭＡＣは、厳密には送信元装置が生成したと推定されるＭＡＣであり、改ざんなどの不正が行われた場合には、送信元装置が生成したＭＡＣとは異なる。
【０１３５】
上述の所定の認証付き暗号の暗号化関数及び復号関数は、ＧＣＭモード又はＣＣＭモードといった暗号利用モードを用いて構成される関数であってもよいし、Ｅｎｃｒｙｐｔ−Ｔｈｅｎ−ＭＡＣ法などの暗号化とＭＡＣを組み合わせて構成される関数であってもよいし、ＣＡＥＳＡＲコンペティションに応募されているアルゴリズムを用いて構成された専用の関数であってもよい。
【０１３６】
また、本実施の形態にかかるＭＡＣ生成関数処理制御部２２２は、受信装置２０１により受信された送信元装置が生成したＭＡＣとＮ−１階層目の通信装置１００の抽出されたローカルＩＤに対応する秘密鍵とをＭＡＣ生成関数処理部２２１に入力してＭＡＣを導出させる。また、ＭＡＣ生成関数処理制御部２２２は、これにより導出されたＭＡＣとｍ階層目（ｍはＮ−２以下１以上の正整数）の通信装置１００の抽出されたローカルＩＤに対応する秘密鍵とをＭＡＣ生成関数処理部２２１に入力して、帰納的にＭＡＣを導出させる。
つまり、ＭＡＣ生成関数処理制御部２２２は、送信元装置が生成したＭＡＣと、疑似ランダム関数処理部２１１により生成されたＮ−１階層目の通信装置１００に対応する秘密鍵（具体的には、派生鍵に相当する鍵である真の秘密鍵）とを用いて、Ｎ−１階層目の通信装置１００が生成したＭＡＣを再現する。そして、その後、ＭＡＣ生成関数処理制御部２２２は、ｍ＋１階層目の通信装置１００についての再現したＭＡＣとｍ階層目の通信装置１００に対応する秘密鍵（具体的には、派生鍵に相当する鍵である真の秘密鍵）とを用いて、ｍ階層目の通信装置１００が生成したＭＡＣを再現する処理を繰り返すよう制御する。
これにより、ＭＡＣ生成関数処理制御部２２２は、Ｎ−１階層目から１階層目までの各通信装置１００に対応するＭＡＣを生成するよう制御する。
【０１３７】
そして、比較部２５０は、受信装置２０１により受信された中継装置が生成したＭＡＣと、ＭＡＣ生成関数処理部２２１により生成された１階層目の通信装置１００に対応するＭＡＣとを比較する。上述の実施形態と同様、正しいデータが正しい経路で伝送された場合、２つのＭＡＣが一致するが、データが改ざんされているか、又は、データが正しい経路で伝送されていない場合、２つのＭＡＣは一致しない。
【０１３８】
図２１は、検証装置２０５における上述の処理の流れを示す模式図である。なお、図８に示した処理の流れと同様、本実施の形態においても、まず、疑似ランダム関数により秘密鍵が生成され、そして、生成されたこれらの鍵は派生鍵設定値（図２１の例では「０」）とともに、疑似ランダム関数に入力される。これにより、派生鍵が生成される。このうち、Ｎ階層目の通信装置のローカルＩＤに対応する派生鍵は、認証付き暗号の復号関数に入力され、Ｎ−１階層目から１階層目の通信装置のローカルＩＤに対応する派生鍵は、ＭＡＣ生成関数に入力される。図２１において、Ｃは、伝送された暗号文、すなわち暗号化されたデータを表す。Ｓ１＿１、Ｓ１＿２、・・・、Ｓ１＿Ｎ−１は、ＭＡＣ生成関数処理部２２１が出力するＭＡＣを表し、Ｓ１＿Ｎは、伝送された、送信元装置（Ｎ階層目の通信装置１００）が生成したＭＡＣを表す。Ｓ１は、伝送された、中継装置（１階層目の通信装置１００）が生成したＭＡＣを表す。なお、その他の符号については、図８と同様である。図２１に示すように、検証装置２０５は、受信した暗号文Ｃを認証付き暗号復号関数処理部２６１にて復号して、暗号化前のデータであるメッセージＭを生成する。また、送信元装置からデータ受信装置までデータが伝送される際に行われる認証生成処理を再現し、ＭＡＣを生成する。そして、検証装置２０５は、生成したＭＡＣと受信されたＭＡＣを比較することにより、正しいデータが受信されたか、及び正しい経路で伝送されたかの検証を行う。
【０１３９】
次に、実施の形態３にかかるデータ伝送システムの動作について説明する。本実施の形態にかかる初期設定についての動作は、実施の形態１と同じであるため、説明を省略する。図２２は、実施の形態３にかかるデータ伝送システムにおける伝送の動作の流れの一例を示すフローチャートである。図２２に示すように本実施の形態における伝送の動作のフローチャートは、ステップ２００がステップ２４０に置き換えられた点で、図１１に示したフローチャートと異なる。また、図２３は、送信元装置及び中継装置における伝送経路の具体的な一例とともに情報の流れを示す模式図であり、図２４は、図２３で示した各通信装置における暗号装置又は認証生成装置の処理の流れを示す模式図である。以下、図２２に示すフローチャートについて、適宜、図２３、図２４を参照しつつ説明する。
【０１４０】
なお、図２３では、図１２に示した例と同様の符号を用いて、構成（通信装置、認証生成装置）及び情報（ローカルＩＤ、秘密鍵、メッセージ、ＭＡＣ）を示している。なお、図１２では通信装置Ｄ３において認証生成装置Ｄ３１を図示したが、上述の通り本実施の形態では送信元装置は暗号装置を有するため、図２３では通信装置Ｄ３において暗号装置Ｄ３１ｃが図示されている。図２３は、そのような符号の前提のもと、初期設定後に通信装置Ｄ１、Ｄ２、Ｄ３が保持している値、暗号装置又は認証生成装置の入出力、及びノード間の通信内容について示している。
【０１４１】
メッセージＭが伝送される場合、まず、ステップ２４０（Ｓ２４０）において、送信元装置である通信装置１００の認証付き暗号暗号化関数処理部３３１は、メッセージＭを暗号化した暗号文Ｃを生成するとともに、メッセージＭについてのＭＡＣを生成する。詳細には、まず、送信元装置の暗号装置３０４の疑似ランダム関数処理部３１１は、配布された秘密鍵から派生鍵を生成する。そして、送信元装置の暗号装置３０４の認証付き暗号暗号化関数処理部３３１は、派生鍵を用いて、メッセージＭについての暗号文とＭＡＣを生成する。
【０１４２】
図２３、図２４に示した例に基づいて具体的に説明すると、ステップ２４０において、通信装置Ｄ３の暗号装置Ｄ３１ｃでは、疑似ランダム関数処理部３１１は、秘密鍵ＳＫ３と、派生鍵設定値（具体的には、０）を用いて派生鍵ＳＫ３１を生成する。次に、認証付き暗号暗号化関数処理部３３１は、派生鍵ＳＫ３１とメッセージＭを用いて、暗号文Ｃと、ＭＡＣ値Ｓ３を出力する。
【０１４３】
ステップ２４０の後、実施の形態１と同様、ステップ２０１以降の処理が行われる。ただし、実施の形態１と異なり、平文であるメッセージＭの代わりに、暗号文Ｃ及び送信元装置が生成したＭＡＣが、データ受信装置まで伝送される。したがって、通信装置Ｄ３の送信装置３０２は、（Ｃ、Ｓ３、ＩＤ３）を、通信装置Ｄ２に送信し、通信装置Ｄ２の送信装置４０２は、（｛Ｃ、Ｓ３｝、Ｓ２、｛ＩＤ２、ＩＤ３｝）を、通信装置Ｄ１に送信する。また、通信装置Ｄ１の送信装置４０２は、（｛Ｃ、Ｓ３｝、Ｓ１、｛ＩＤ１、ＩＤ２、ＩＤ３｝）を、データ受信装置である通信装置１００に送信する。
【０１４４】
次に、本実施の形態にかかるデータ受信装置における検証動作について説明する。図２５は、実施の形態３にかかるデータ受信装置における検証動作の流れの一例を示すフローチャートである。図２５に示すように本実施の形態における検証動作のフローチャートは、ステップ３０２とステップ３０３の間にステップ３１０が挿入されている点で、図１４に示したフローチャートと異なる。実施の形態３にかかるデータ受信装置は、受信装置２０１により中継装置から暗号文Ｃを含む情報を受信すると、以下に示すように検証装置２０５による検証処理を行う。
【０１４５】
まず、実施の形態１と同様、ステップ３００からステップ３０２までの処理が行われる。すなわち、実施の形態１と同様、派生鍵ＳＫｉ＿１’（ただし、１≦ｉ≦Ｎ）が生成される。ステップ３０２の後、処理は、ステップ３１０に移行する。
【０１４６】
ステップ３１０（Ｓ３１０）において、認証付き暗号復号関数処理部２６１及び認証付き暗号復号関数処理制御部２６２は、受信装置２０１が受信した送信元装置が生成したＭＡＣと、受信装置２０１が受信した暗号文と、ステップ３０２で生成されたＮ階層目の通信装置１００に対応する派生鍵とを用いて、暗号文を復号する。具体的には、認証付き暗号復号関数処理制御部２６２は、認証付き暗号復号関数処理部２６１にＳＫＮ＿１’を秘密鍵として入力し、Ｃを暗号文として入力し、Ｓ１＿ＮをＭＡＣ値として入力し、平文Ｍを生成する。なお、Ｓ１＿Ｎは、受信装置２０１が受信した、送信元装置（Ｎ階層目の通信装置１００）が生成したＭＡＣである。もし認証付き暗号の復号関数によるＭＡＣ値の検証に通らなかった場合は、認証付き暗号復号関数処理部２６１の出力は偽（false）となる。これに対し、この検証に通った場合は、認証付き暗号復号関数処理部２６１から正しい平文Ｍが出力される。認証付き暗号復号関数処理部２６１により生成された平文Ｍは検証装置２０５から出力される。
【０１４７】
ステップ３１０の後、処理はステップ３０３に移行する。本実施の形態におけるステップ３０３では、ＭＡＣ生成関数処理部２２１及びＭＡＣ生成関数処理制御部２２２は、受信した送信元装置が生成したＭＡＣとステップ３０２で生成された派生鍵を用いてＭＡＣを生成する。具体的には、ＭＡＣ生成関数処理部２２１及びＭＡＣ生成関数処理制御部２２２は、Ｎ−１≧ｉ≧１に対して以下を実行する。ＭＡＣ生成関数処理制御部２２２は、ＭＡＣ生成関数処理部２２１にＳＫｉ＿１’を秘密鍵として入力し、Ｓ１＿ｉ＋１をメッセージとして入力し、Ｓ１＿ｉを得る。この時生成されるＳ１＿Ｎ−１からＳ１＿１までのそれぞれの値は、正しくメッセージ伝達が行われていれば、データ受信装置から送信元装置に至るまでの各階層の通信装置１００が生成したＭＡＣ値と一致する。
【０１４８】
次に、ステップ３０４において、比較部２５０は、受信装置２０１により受信された中継装置が生成したＭＡＣと、ステップ３０３で生成された１階層目の通信装置１００に対応するＭＡＣとを比較する。具体的には、比較部２５０は、ステップ３０３で生成したＳ１＿１と、受信したＳ１とを比較し、両者の値が一致しているか否かを判定する。比較部２５０は、両者が一致していれば出力値Ｂ＝１を出力し、そうでなければ出力値Ｂ＝０を出力する。本実施の形態においても、Ｂ＝１であればメッセージＭが送信元装置から改ざんされずに送付され、かつ正しい伝送経路にて伝送されたことを意味する。もしＢ＝０であればメッセージＭは改ざんされたか、または、正しい伝送経路上の通信装置以外の通信装置を経由して伝送されたことを意味する。なお、比較部２５０の出力値及び認証付き暗号復号関数処理部２６１の出力値に基づいて伝送の安全性を判定する判定部（図示せず）をデータ受信装置が有してもよい。また、この判定部は、認証付き暗号復号関数処理部２６１の出力値が偽でなければ、正しくメッセージが暗号化されて送られてきたと判定し、さらに、比較部２５０の出力がＢ＝１であれば正しい伝送経路を経由してメッセージが伝送されたと判定してもよい。
【０１４９】
以上、実施の形態３について説明した。本実施の形態では、暗号化されたデータが伝送される。このため、より安全にデータの伝送を行うことができる。したがって、例えばデータの秘匿性が必要なセンサネットワークや、送付するメッセージに個人情報を伴う場合などに、秘匿性を担保して伝送を行うことができる。
【０１５０】
実施の形態３にかかる構成は、実施の形態２に示した構成と組み合わせてもよい。すなわち、暗号化されたデータを伝送するための構成と、中継装置による検証を行う構成とを組み合わせてもよい。また、実施の形態３においても、中継装置による秘密鍵の生成が行われてもよい。すなわち、実施の形態３において、中継装置は鍵生成装置４０４を有してもよい。また、実施の形態３では、派生鍵を用いたＭＡＣ生成を行う構成を示したが、派生鍵を生成しなくてもよい。すなわち、配布された秘密鍵を用いてＭＡＣ生成が行われてもよい。
【０１５１】
なお、実施形態において、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。すなわち、鍵生成装置２０３、４０４、検証装置２０４、２０５、認証生成装置３０３、４０３、４０５、及び暗号装置３０４において、装置を構成する機能ブロックの一部又は全ては、メモリにロードされたプログラムがＣＰＵにより実行されることにより実現されてもよいし、専用ハードウェア回路により実現されてもよい。また、関数処理を行う回路が、半導体製品にハードウェアとして搭載されている共通鍵暗号ＡＥＳやハッシュ関数ＳＨＡ２などの既存の回路を用いて構成されてもよい。
【０１５２】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１５３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。例えば、中継装置として動作する通信装置は、送信元装置として動作してもよいことは言うまでもない。この場合、当該通信装置は、中継装置としての機能と送信元装置としての機能を備える。
【符号の説明】
【０１５４】
１    データ受信装置
２、２３０    秘密鍵記憶部
３    受信部
４    識別子抽出部
５、２１１、３１１、４１１    疑似ランダム関数処理部
６、２２１、３２１、４２１    ＭＡＣ生成関数処理部
７、２１２、３１２、４１２    疑似ランダム関数処理制御部
８、２２２、３２２、４２２    ＭＡＣ生成関数処理制御部
９、２５０、４４０    比較部
１０    データ伝送システム
１００、１００＿０、１００＿１ａ、１００＿１ｂ、１００＿１ｃ、１００＿２ａ、１００＿２ｂ、１００＿２ｃ、１００＿３ａ、１００＿３ｂ、Ｄ１、Ｄ２、Ｄ３    通信装置
２０１、３０１、４０１    受信装置
２０２、３０２、４０２    送信装置
２０３、４０４    鍵生成装置
２０４、２０５    検証装置
２４０、４３０    階層分離部
２６１    認証付き暗号復号関数処理部
２６２    認証付き暗号復号関数処理制御部
３０３、４０３、４０５、Ｄ１１、Ｄ２１、Ｄ３１    認証生成装置
３０４、Ｄ３１ｃ    暗号装置
３３１    認証付き暗号暗号化関数処理部
３３２    認証付き暗号暗号化関数処理制御部
【図１】
2019041321.tif 000003
【図２】
2019041321.tif 000004
【図３】
2019041321.tif 000005
【図４】
2019041321.tif 000006
【図５】
2019041321.tif 000007
【図６】
2019041321.tif 000008
【図７】
2019041321.tif 000009
【図８】
2019041321.tif 000010
【図９】
2019041321.tif 000011
【図１０】
2019041321.tif 000012
【図１１】
2019041321.tif 000013
【図１２】
2019041321.tif 000014
【図１３】
2019041321.tif 000015
【図１４】
2019041321.tif 000016
【図１５】
2019041321.tif 000017
【図１６】
2019041321.tif 000018
【図１７】
2019041321.tif 000019
【図１８Ａ】
2019041321.tif 000020
【図１８Ｂ】
2019041321.tif 000021
【図１８Ｃ】
2019041321.tif 000022
【図１９】
2019041321.tif 000023
【図２０】
2019041321.tif 000024
【図２１】
2019041321.tif 000025
【図２２】
2019041321.tif 000026
【図２３】
2019041321.tif 000027
【図２４】
2019041321.tif 000028
【図２５】
2019041321.tif 000029