"上位装置を介して外部装置と通信する通信装置であって、前記上位装置から、被認証データ、第1鍵仕様、及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を受信する主処理部と、前記上位装置と前記外部装置との間で用いられる認証プロトコルが使用する鍵階層を保持し、当該鍵階層と前記第1鍵仕様とを用いて第1鍵を生成する鍵生成部と、を備え、前記主処理部は、前記メッセージ認証アルゴリズム識別子で識別されるメッセージ認証アルゴリズムと前記第1鍵とを用いて前記被認証データに対するメッセージ認証コードを生成し、当該メッセージ認証コードを含むデータ認証応答を前記上位装置に送信することを特徴とする通信装置。前記主処理部は、過去に受信したデータ認証要求に含まれる第1鍵仕様と当該第1鍵仕様から生成される第1鍵とを含む鍵キャッシュを保持し、新たに受信したデータ認証要求に含まれる第1鍵仕様が前記鍵キャッシュに含まれる前記第1鍵仕様と一致する場合、前記鍵キャッシュに含まれる前記第1鍵と前記新たに受信したデータ認証要求に含まれるメッセージ認証アルゴリズム識別子で識別されるメッセージ認証アルゴリズムとを用いて、前記新たに受信したデータ認証要求に含まれる被認証データに対するメッセージ認証コードを生成することを特徴とする請求項1に記載の通信装置。前記主処理部は、更に、前記上位装置から第2鍵仕様を含む鍵要求を受信し、前記鍵生成部は、更に、前記鍵階層と前記第2鍵仕様とを用いて第2鍵を生成し、前記主処理部は、更に、前記第2鍵を含む鍵応答を前記上位装置に送信することを特徴とする請求項1又は2に記載の通信装置。前記鍵階層を使用する前記認証プロトコルの識別子のリスト及び自身の認証識別子を含む登録要求を前記上位装置に送信する登録処理部を更に備えることを特徴とする請求項1~3のいずれか1つに記載の通信装置。下位装置と外部装置とを自身を介して通信させる通信装置であって、自身と前記外部装置との間で用いられる認証プロトコルの処理のうちメッセージ認証コード生成以外の処理を行う認証プロトコル処理部と、前記認証プロトコルが使用する鍵階層に属する第1鍵を前記下位装置に生成させるための第1鍵仕様を生成する鍵仕様生成部と、を備え、前記認証プロトコル処理部は、被認証データ、前記第1鍵仕様、及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を前記下位装置に送信し、前記被認証データに対するメッセージ認証コードを含むデータ認証応答を前記下位装置から受信することを特徴とする通信装置。前記鍵仕様生成部は、更に、前記鍵階層に属する第2鍵を前記下位装置に生成させるための第2鍵仕様を生成し、前記認証プロトコル処理部は、更に、前記第2鍵仕様を含む鍵要求を前記下位装置に送信し、当該第2鍵仕様から生成される前記第2鍵を含む鍵応答を前記下位装置から受信することを特徴とする請求項5に記載の通信装置。前記鍵階層を使用する前記認証プロトコルの識別子のリスト及び前記下位装置の認証識別子を含む登録要求を前記下位装置から受信し、当該下位装置の登録期間の間、前記登録要求の内容と前記下位装置のアドレスとを対応付けて保持する登録処理部を更に備えることを特徴とする請求項5又は6に記載の通信装置。前記登録要求は、前記登録期間の値を更に含むことを特徴とする請求項7に記載の通信装置。前記外部装置は、アプリケーションサーバであり、前記被認証データは、前記アプリケーションサーバとの間で交換されるアプリケーションデータであり、前記第2鍵は、前記アプリケーションサーバとの間で共有され、前記認証プロトコル処理部は、前記第2鍵を用いて、前記アプリケーションデータの暗号化又は復号化を行うことを特徴とする請求項6に記載の通信装置。前記外部装置は、アプリケーションサーバであり、前記被認証データは、前記アプリケーションサーバとの間で交換されるアプリケーションデータであり、前記認証プロトコル処理部は、前記メッセージ認証コードを用いて、前記アプリケーションデータのメッセージ認証を行うことを特徴とする請求項5~9のいずれか1つに記載の通信装置。前記第1鍵仕様は、鍵種別、親鍵の鍵長、鍵導出関数識別子、ハッシュ関数識別子、鍵導出関数出力長、鍵導出関数出力中の鍵系列開始位置、鍵導出関数出力中の鍵系列終了位置、及び鍵ラベルを含む完全指定要素の順序リストである完全指定子により指定されることを特徴とする請求項1~10のいずれか1つに記載の通信装置。前記第1鍵仕様は、鍵種別、親鍵の鍵長、鍵導出関数識別子、ハッシュ関数識別子、鍵導出関数出力長、鍵導出関数出力中の鍵系列開始位置、鍵導出関数出力中の鍵系列終了位置、及び鍵ラベルを含む完全指定要素の順序リストである完全指定子、又は当該完全指定子に対応する整数値である参照指定子により指定され、前記完全指定子による指定か前記参照指定子による指定かを識別する指定子種別を含むことを特徴とする請求項1~10のいずれか1つに記載の通信装置。前記参照指定子の値は、前記データ認証応答の送信元により割当てられ、前記データ認証応答により通知されることを特徴とする請求項12に記載の通信装置。前記認証プロトコルは、PANAProtocolforcarryingAuthenticationforNetworkAccess及びEAPExtensibleAuthenticationProtocol認証メソッドを含むことを特徴とする請求項1~13のいずれか1つに記載の通信装置。前記データ認証要求又は前記データ認証応答は、暗号化又はメッセージ認証が施されることを特徴とする請求項1~14のいずれか1つに記載の通信装置。上位装置を介して外部装置と通信する通信装置で実行されるプログラムであって、前記上位装置から、被認証データ、鍵仕様、及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を受信する受信ステップと、前記上位装置と前記外部装置との間で用いられる認証プロトコルが使用する鍵階層と前記鍵仕様とを用いて鍵を生成する鍵生成ステップと、前記メッセージ認証アルゴリズム識別子で識別されるメッセージ認証アルゴリズムと前記鍵とを用いて前記被認証データに対するメッセージ認証コードを生成し、当該メッセージ認証コードを含むデータ認証応答を前記上位装置に送信する送信ステップと、を含むことを特徴とするプログラム。下位装置と外部装置とを自身を介して通信させる通信装置で実行されるプログラムであって、前記通信装置と前記外部装置との間で用いられる認証プロトコルの処理のうちメッセージ認証コード生成以外の処理を行う認証プロトコル処理ステップと、前記認証プロトコルが使用する鍵階層に属する鍵を前記下位装置に生成させるための鍵仕様を生成する鍵仕様生成ステップと、被認証データ、前記鍵仕様、及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を前記下位装置に送信し、前記被認証データに対するメッセージ認証コードを含むデータ認証応答を前記下位装置から受信するメッセージ認証コード受信ステップと、を含むことを特徴とするプログラム。しかしながら、上述したような従来技術では、正当でない装置が外部装置と通信できてしまうなどセキュリティ上の問題がある。本発明が解決しようとする課題は、軽装化及び相手認証を実現することができる通信装置及びプログラムを提供することである。実施形態の通信装置は、上位装置を介して外部装置と通信し、主処理部と、鍵生成部と、を備える。主処理部は、上位装置から、被認証データ、第1鍵仕様、及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を受信する。鍵生成部は、上位装置と外部装置との間で用いられる認証プロトコルが使用する鍵階層を保持し、鍵階層と第1鍵仕様とを用いて第1鍵を生成する。主処理部は、メッセージ認証アルゴリズム識別子で識別されるメッセージ認証アルゴリズムと第1鍵とを用いて被認証データに対するメッセージ認証コードを生成し、当該メッセージ認証コードを含むデータ認証応答を上位装置に送信する。図1は、本実施形態の通信システム1の一例を示す構成図である。図1に示すように、通信システム1は、複数の子ノード10-1~10-Nと、親ノード20と、アプリケーションサーバ30とを、備える。複数の子ノード10-1~10-Nと親ノード20との通信は、例えば、有線LANLocalAreaNetworkや無線LANなどのネットワークで実現してもよいし、BluetoothやZigBeeなどの短距離無線通信で実現してもよい。親ノード20とアプリケーションサーバ30との通信は、例えば、有線LANLocalAreaNetworkや無線LANなどのネットワークで実現できる。子ノード10-1~10-Nは、保持している鍵階層詳細は後述が互いに異なるが、用いられる用途、備えている構成要素、実行する動作は、いずれも同様である。このため、以下では、子ノード10-1を主に説明し、子ノード10-2~10-Nについては、その説明を省略する。子ノード10-1通信装置、下位装置の一例は、例えば、ガスメータ、電気メータ、家電機器、照明器具、センサー、アクチュエーター、又は電気自動車などに実装され、親ノード20通信装置、上位装置の一例を介してアプリケーションサーバ30外部装置の一例と通信する。子ノード10-1は、登録処理部11と、主処理部13と、鍵生成部15とを、備える。登録処理部11、主処理部13、及び鍵生成部15は、例えば、CPUCentralProcessingUnit、RAMRandomAccessMemory、及びROMReadOnlyMemoryなどを有する処理装置により実現してもよいし、ICIntegratedCircuitにより実現してもよいし、処理装置及びICを併用して実現してもよい。登録処理部11は、後述の鍵生成部15が保持している鍵階層を使用する認証プロトコルの識別子のリスト及び子ノード10-1の認証識別子を含む登録要求を親ノード20に送信し、親ノード20から登録応答を受信する。なお登録処理部11は、鍵生成部15が保持している鍵階層を使用する認証プロトコルの識別子のリスト及び子ノード10-1の認証識別子を予め保持している。主処理部13は、親ノード20から、被認証データ、第1鍵仕様、及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を受信する。そして主処理部13は、メッセージ認証アルゴリズム識別子で識別されるメッセージ認証アルゴリズムと後述の鍵生成部15により第1鍵仕様から生成される第1鍵とを用いて、被認証データに対するメッセージ認証コードを生成し、当該メッセージ認証コードを含むデータ認証応答を親ノード20に送信する。なお主処理部13は、メッセージ認証アルゴリズムを予め保持しており、メッセージ認証アルゴリズム識別子で指定識別されるメッセージ認証アルゴリズムを用いて、メッセージ認証コードを生成する。ここで、主処理部13は、過去に受信したデータ認証要求に含まれる第1鍵仕様と当該第1鍵仕様から生成される第1鍵とを含む鍵キャッシュを保持し、新たに受信したデータ認証要求に含まれる第1鍵仕様と鍵キャッシュに含まれる第1鍵仕様とを比較するようにしてもよい。そして主処理部13は、両者が一致する場合、鍵キャッシュに含まれる第1鍵と新たに受信したデータ認証要求に含まれるメッセージ認証アルゴリズム識別子で識別されるメッセージ認証アルゴリズムとを用いて、新たに受信したデータ認証要求に含まれる被認証データに対するメッセージ認証コードを生成するようにしてもよい。また主処理部13は、親ノード20から第2鍵仕様を含む鍵要求を受信し、当該第2鍵仕様から後述の鍵生成部15により生成される第2鍵を含む鍵応答を親ノード20に送信する。鍵生成部15は、親ノード20とアプリケーションサーバ30との間で用いられる認証プロトコルが使用する鍵階層を保持する。そして鍵生成部15は、主処理部13によりデータ認証要求が受信されると、データ認証要求に含まれる第1鍵仕様と保持している鍵階層とを用いて第1鍵を生成し、鍵要求が受信されると、鍵要求に含まれる第2鍵仕様と保持している鍵階層とを用いて第2鍵を生成する。なお、生成された第1鍵、第2鍵は、鍵生成部15が保持している鍵階層に属する。親ノード20は、例えば、電気メータ、HEMSHomeEnergyManagementSystemサーバ、コンセントレータ、ルータ、無線LANアクセスポイント、LANスイッチ、又は電気自動車等などに実装され、複数の子ノード10-1~10-Nとアプリケーションサーバ30とを自身を介して通信させる。親ノード20は、登録処理部21と、認証プロトコル処理部23と、鍵仕様生成部25とを、備える。登録処理部21、認証プロトコル処理部23、及び鍵仕様生成部25は、例えば、CPU、RAM、及びROMなどを有する処理装置により実現してもよいし、ICにより実現してもよいし、処理装置及びICを併用して実現してもよい。登録処理部21は、複数の子ノード10-1~10-Nのそれぞれから、当該子ノードが保持する鍵階層を使用する認証プロトコルの識別子のリスト及び当該子ノードの認証識別子を含む登録要求を受信する。そして登録処理部21は、当該子ノードの登録期間の間、登録要求の内容と当該子ノードのアドレスとを対応付けて保持し、登録要求を受信した子ノードに登録応答を送信する。なお登録処理部21は、複数の子ノード10-1~10-Nそれぞれのアドレスを予め保持しており、このアドレスを登録要求の内容と対応付ける。また、登録要求に、登録期間の値が更に含まれていてもよい。認証プロトコル処理部23は、親ノード20とアプリケーションサーバ30との間で用いられる認証プロトコルの処理のうちメッセージ認証コード生成以外の処理を行う。本実施形態では、認証プロトコルは、PANAProtocolforcarryingAuthenticationforNetworkAccess及びEAPExtensibleAuthenticationProtocol認証メソッドを含むものとするが、これに限定されるものではない。また認証プロトコル処理部23は、被認証データ、後述の鍵仕様生成部25により生成される第1鍵仕様、及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を、複数の子ノード10-1~10-Nのうち認証プロトコルが使用する鍵階層を有する子ノードに送信する。なお認証プロトコル処理部23は、アプリケーションサーバ30との間で送信又は受信されるメッセージから、被認証データ及びメッセージ認証アルゴリズム識別子を取得する。本実施形態では、被認証データは、アプリケーションサーバ30と間で交換されるアプリケーションデータであるものとするが、これに限定されるものではない。認証プロトコル処理部23は、データ認証要求を送信した子ノードから、被認証データに対するメッセージ認証コードを含むデータ認証応答を受信する。そして認証プロトコル処理部23は、子ノードから受信したメッセージ認証コードを用いて、被認証データのメッセージ認証を行う。また認証プロトコル処理部23は、後述の鍵仕様生成部25により生成される第2鍵仕様を含む鍵要求を、複数の子ノード10-1~10-Nのうち認証プロトコルが使用する鍵階層を有する子ノードに送信し、当該子ノードから、当該第2鍵仕様から生成される第2鍵を含む鍵応答を受信する。そして認証プロトコル処理部23は、当該第2鍵を用いて、被認証データの暗号化又は復号化を行う。本実施形態では、鍵応答に含まれる第2鍵は、アプリケーションサーバ30と間で共有されるものとする。鍵仕様生成部25は、認証プロトコルが使用する鍵階層に属する第1鍵を、複数の子ノード10-1~10-Nのうち当該鍵階層を有する子ノードに生成させるための第1鍵仕様を生成する。また鍵仕様生成部25は、認証プロトコルが使用する鍵階層に属する第2鍵を、複数の子ノード10-1~10-Nのうち当該鍵階層を有する子ノードに生成させるための第2鍵仕様を生成する。鍵仕様は、鍵種別、親鍵の鍵長、鍵導出関数識別子、ハッシュ関数識別子、鍵導出関数出力長、鍵導出関数出力中の鍵系列開始位置、鍵導出関数出力中の鍵系列終了位置、及び鍵ラベルを含む完全指定要素の順序リストである完全指定子、又は当該完全指定子に対応する整数値である参照指定子により指定され、完全指定子による指定か参照指定子による指定かを識別する指定子種別を含む。参照指定子の値は、データ認証応答の送信元により割当てられ、データ認証応答により通知されるので、鍵仕様生成部25は、参照指定子と完全指定子の対応関係を保持しておく。これにより、鍵仕様生成部25は、完全指定子ではなく参照指定子による指定が可能となる。なお、鍵仕様は、完全指定子のみにより指定されるようにしてもよい。なお、複数の子ノード10-1~10-N及び親ノード20は、登録要求、登録応答、データ認証要求、データ認証応答、鍵要求、及び鍵応答を、データリンクレイヤ、ネットワークレイヤ、及びトランスポートレイヤのいずれのレイヤのプロトコルを用いて送受信してもよい。また、複数の子ノード10-1~10-N及び親ノード20は、登録要求、登録応答、データ認証要求、データ認証応答、鍵要求、及び鍵応答を、暗号化したりメッセージ認証を施したりして送受信してもよい。この場合、暗号化やメッセージ認証には、複数の子ノード10-1~10-Nそれぞれと親ノード20との間で共有される共通鍵が用いられる。この共通鍵は子ノード毎に異なることが望ましい。図2は、本実施形態の通信システム1で実行される処理の一例を示すシーケンス図である。図2に示す例では、通信システム1は、認証プロトコルX及び認証プロトコルYの2種類の認証プロトコルを用いて認証を行う。具体的には、認証プロトコルYのメッセージは、認証プロトコルXのメッセージによりカプセル化され、認証プロトコルXがメッセージ認証に用いる鍵は、認証プロトコルYが使用する鍵階層から生成される。図2に示す例では、認証プロトコルXは、PANARFC5191であり、認証プロトコルYは、EAP-GPSKRFC5433であるものとするが、これに限定されるものではない。なお、図2に示す例では、複数の子ノード10-1~10-Nと親ノード20との通信については、子ノード10-1と親ノード20との通信についてのみ図示している。また、図2に示す例では、親ノード20とアプリケーションサーバ30との間で通信される認証プロトコルXのメッセージ及び認証プロトコルYのメッセージは、メッセージ認証コードが付加されるもののみを図示すものとする。このため、図2に示す例では、メッセージ認証アルゴリズムのネゴシエーションや認証識別子の通知に使用されるメッセージなどのメッセージ認証コードが付加されないメッセージについては、図示を省略している。シーケンスの内容を説明する前に、図2に示す例において、子ノード10-1が保持する鍵階層、及び子ノード10-1と親ノード20との間で通信されるメッセージのメッセージフォーマットについて説明する。図3は、本実施形態の子ノード10-1が保持する鍵階層の一例を示す図である。図3に示す例では、鍵階層は、親ノード20とアプリケーションサーバ30とがネットワークアクセス認証プロトコルとしてPANARFC5191を使用し、PANA上でEAP認証メソッドEAP-GPSKRFC5433を使用する場合に、これらの認証プロトコルが使用するものとなっている。図3に示す例では、PSKPreSharedKey101は、EAP-GPSKで使用される共通鍵認証の共通鍵、MKMasterKey102は、PSK101から導出されるマスター鍵、SKSessionKey103は、EAP-GPSKのメッセージ認証コード生成に使用される鍵、PK104は、EAP-GPSKのペイロード暗号化に使用される鍵、MSKMasterSessionKey105及びEMSKExtendedMSK106は、EAPが下位層にエキスポートする鍵、PANA_AUTH_KEY107は、PANAのメッセージのメッセージ認証コード生成に使用される鍵となっている。なお、図3に示す例では、EAP-GPSKのペイロード暗号化に使用される鍵は、PK104となっているが、これに限定されず、EMSK106の下の鍵階層に属する鍵としてもよい。図4は、本実施形態のメッセージが使用する共通メッセージフォーマットの一例を示す図である。図4に示す例では、共通メッセージフォーマットは、メッセージ種別、ペイロード平文長、初期化ベクトル、暗号化ペイロード、及びメッセージ認証コードを有する。メッセージ種別は、子ノード10-1と親ノード20との間で通信されるメッセージの種別を示し、データ認証要求、データ認証応答、登録要求、登録応答、鍵要求、及び鍵応答を区別するための整数値が格納される。ペイロード平文長には、メッセージ種別が示すメッセージのペイロードの平文のオクテット長が格納される。初期化ベクトルには、ランダム値が格納される。このランダム値は、暗号化ペイロードへの暗号化及び暗号化ペイロードからの復号化に対するリプレイ攻撃の防止に用いられる。暗号化ペイロードには、メッセージ種別が示すメッセージのペイロードが子ノード10-1と親ノード20との間で共有される暗号鍵共通鍵で暗号化されて格納される。但し、暗号化が必要ない場合には、暗号化ペイロードには、メッセージ種別が示すメッセージのペイロードが平文で格納される。メッセージ認証コードには、メッセージ種別、ペイロード平文長、初期化ベクトル、及び暗号化ペイロードに対するメッセージ認証コードの値が格納される。このメッセージ認証コードの値は、子ノード10-1と親ノード20との間で共有されるメッセージ認証鍵共通鍵を用いて生成される。図5は、本実施形態の登録要求のペイロードのフォーマットの一例を示す図である。図5に示す例では、登録要求のペイロードのフォーマットは、認証プロトコル識別子リスト、認証識別子、及び登録ライフタイム登録期間の値を有する。図6は、本実施形態の登録応答のペイロードのフォーマットの一例を示す図である。図6に示す例では、登録応答のペイロードのフォーマットは、ステータスを有する。ステータスは、登録要求で登録が要求された子ノードの登録が成功したか失敗したかを示し、成功の場合は0、失敗の場合は失敗の理由を示す0以外の値が格納される。図7は、本実施形態のデータ認証要求のペイロードのフォーマットの一例を示す図である。図7に示す例では、データ認証要求のペイロードのフォーマットは、鍵仕様、メッセージ認証アルゴリズム識別子、及び被認証データを有する。図8は、本実施形態の鍵仕様の一例を示す図である。図8に示す例では、鍵仕様は、指定子種別、及び指定子を有する。指定子種別は、完全指定子及び参照指定子のいずれかを示す。指定子種別が完全指定子の場合、指定子には完全指定子が格納され、指定子種別が参照指定子の場合、指定子には整数値である参照指定子が格納される。なお、指定子に完全指定子のみを用いる場合参照指定子をサポートしない場合は、指定子種別を省略できる。図9は、本実施形態の完全指定子の一例を示す図である。図9に示す例では、完全指定子は、完全指定子要素の順次リストとして定義されている。各完全指定子要素は、鍵種別、親鍵の鍵長、鍵導出関数識別子、ハッシュ関数識別子、鍵導出関数出力長、鍵導出関数出力中の鍵系列開始位置、鍵導出関数出力中の鍵系列終了位置、及び鍵ラベルのフィールドを有する。鍵種別以下、Tと称する場合があるは、導出される鍵の種別である。親鍵の鍵長以下、Pと称する場合があるは、鍵の導出に使用する親鍵のオクテット長である。鍵導出関数識別子以下、鍵導出関数をDと称する場合があるは、任意の長さの鍵の導出に使用する鍵導出関数の識別子である。ハッシュ関数識別子以下、ハッシュ関数をHと称する場合があるは、鍵導出関数の中で使用されるハッシュアルゴリズムの識別子である。鍵導出関数出力中の鍵系列開始位置以下、sと称する場合があるは、鍵導出関数の出力シーケンス中で導出される鍵の開始位置である。鍵導出関数出力中の鍵系列終了位置以下、eと称する場合があるは、鍵導出関数の出力シーケンス中で導出される鍵の終了位置である。鍵ラベル以下、Lと称する場合があるは、鍵導出関数の入力パラメータである。親鍵をKPとすると、子ノード10-1は、親ノード20から図9示す完全指定子で指定された鍵仕様を用いて、数式1により鍵Kを生成する。K=KDF_PKP,fL[s,e]...1ここで、L1、L2は、親ノード20に対して未公開のラベルであり、鍵種別Tから定まる。fLは、ラベルLからあるオクテット列を生成する関数である。fLの一例として、fL=L1||L||L2がある。ここで、L1、L2は、NULLであってもよい。KDF_PKP,fLは、オクテット長Pの鍵KPとオクテット列fLとから、ハッシュ関数Hを用いた鍵導出関数Dで生成された任意長のオクテット列である。以下、KDF_PKP,fLをSと称する。S[s,e]は、オクテット列Sのsオクテット目からeオクテット目までの長さe-s1のオクテット列を取り出す関数である。なお、鍵導出関数は、例えば、RFC5433に記載されたGKDFGeneralizedKeyDerivationFunctionやRFC5996に記載されたprfなどがある。また、鍵導出関数は、出力オクテット列の先頭Pオクテットが鍵KPと同一であるようなものであってもよい。このようにすれば、例えば、最上位階層の鍵を用いてメッセージ認証コードを生成するなど親鍵を子供鍵として使用するケースにも対応できる。図10は、本実施形態のデータ認証応答のペイロードのフォーマットの一例を示す図である。図10に示す例では、データ認証応答のペイロードのフォーマットは、被認証データのメッセージ認証コード、参照指定子、及びステータスを有する。データ認証応答に参照指定子を含めるか否かは任意である。データ認証応答に参照指定子を含める場合、参照指定子の値は、データ認証応答の送信元が割り当てる。ステータスは、メッセージ認証コード生成が成功したか失敗したかを示し、成功の場合は0、失敗の場合は失敗の理由を示す0以外の値が格納される。図11は、本実施形態の鍵要求のペイロードのフォーマットの一例を示す図である。図11に示す例では、鍵要求のペイロードのフォーマットは、鍵仕様を有する。鍵仕様の詳細は、図8及び図9で説明したとおりである。図12は、本実施形態の鍵応答のペイロードのフォーマットの一例を示す図である。図12に示す例では、鍵応答のペイロードのフォーマットは、鍵及びステータスを有する。ステータスは、鍵取得が成功したか失敗したかを示し、成功の場合は0、失敗の場合は失敗の理由を示す0以外の値が格納される。なお、図5~図7及び図10~図12で説明した各メッセージのペイロードは、暗号化されて、図4で説明した共通メッセージフォーマットの暗号化ペイロードに格納される。但し、暗号化が必要ない場合、平文のまま格納される。次に、シーケンスの内容について説明する。まず、子ノード10-1は、親ノード20に登録要求L,ID,T,CR1を送信するステップS101。ここで、Lは認証プロトコル識別子リスト、IDは認証識別子、Tは登録ライフタイム登録期間の値であるものとする。続いて、親ノード20は、登録ライフタイムTが示す期間、子ノード10-1を登録し、子ノード10-1に登録応答SR1,CR2を送信するステップS103。ここで、SR1はステータスであるものとする。この後、親ノード20は、認証プロトコルXを起動する。そして、認証プロトコルX起動後実行中の所定タイミングで認証プロトコルXから認証プロトコルYが起動される。続いて、認証プロトコルY起動後実行中に、メッセージY1の送信イベントが発生したとする。ここで、メッセージY1はEAP-GPSKのメッセージGPSK-2であるものとする。この場合、親ノード20は、メッセージY1の送信に必要なメッセージ認証コードを取得するため、データ認証要求1SY1,AY,DY1を子ノード10-1に送信するステップS105。ここで、SY1はSK103図3参照の鍵仕様、AYはメッセージ認証アルゴリズム識別子、DY1はメッセージY1の被認証データであるものとする。図13は、本実施形態のSK103に対する完全指定子の一例を示す図である。図13に示す例では、完全指定子は、先頭から完全指定子要素1、完全指定子要素2の要素数2の順序リストとして定義されている。完全指定子要素1は、MK102図3参照に対応し、完全指定子要素2は、SK103図3参照に対応する。MK102、SK103ともに、親鍵のオクテット長が32オクテットであり、鍵導出関数にGKDF、ハッシュ関数にHMAC_SHA256を使用する。続いて、子ノード10-1は、親ノード20にデータ認証応答1CY1,SD1を送信するステップS107。ここで、CY1は被認証データDY1に対するメッセージ認証コード、SD1はステータスであるものとする。続いて、親ノード20は、アプリケーションサーバ30にメッセージY1DY1,CY1を送信するステップS109。続いて、親ノード20は、アプリケーションサーバ30からメッセージY2CY2,EY2を受信するステップS111。ここで、メッセージY2はEAP-GPSKのメッセージGPSK-3、CY2はメッセージY2のメッセージ認証コード、EY2はメッセージY2の暗号化データであるものとする。続いて、親ノード20は、子ノード10-1に鍵要求SY2を送信するステップS113。ここで、SY2は、PK104図3参照の鍵仕様であるものとする。続いて、子ノード10-1は、親ノード20に鍵応答K,SKを送信するステップS115。ここで、KはPK104、SKはステータスであるものとする。続いて、親ノード20は、Kを用いてEY2を復号化し、DY2を取得する。ここで、DY2はメッセージY2の被認証データであるものとする。そして親ノード20は、データ認証要求2SY1,AY,DY2を子ノード10-1に送信するステップS117。続いて、子ノード10-1は、親ノード20にデータ認証応答2CY2,SD2を送信するステップS119。ここで、CY2は被認証データDY2に対するメッセージ認証コード、SD2はステータスであるものとする。そして親ノード20は、メッセージY2のメッセージ認証コードとデータ認証応答2のメッセージ認証コードとがCY2で一致することを確認する。続いて、メッセージY3の送信イベントが発生したとする。ここで、メッセージY3はEAP-GPSKのメッセージGPSK-4であるものとする。この場合、親ノード20は、メッセージY3の送信に必要なメッセージ認証コードを取得するため、データ認証要求3SY1,AY,DY3を子ノード10-1に送信するステップS121。ここで、DY3はメッセージY3の被認証データであるものとする。続いて、子ノード10-1は、親ノード20にデータ認証応答3CY3,SD3を送信するステップS123。ここで、CY3は被認証データDY3に対するメッセージ認証コード、SD3はステータスであるものとする。続いて、親ノード20は、アプリケーションサーバ30にメッセージY3DY3,CY3を送信するステップS125。以上で、認証プロトコルYに関するメッセージ認証処理は完了となる。続いて、親ノード20は、アプリケーションサーバ30から認証プロトコルXのメッセージX1DX1,CX1を受信するステップS127。ここで、メッセージX1は、PANAのPANA-Auth-RequestPARメッセージでCbitがオンになったものとする。また、DX1はメッセージX1の被認証データ、CX1は被認証データDX1に対するメッセージ認証コードであるものとする。続いて、親ノード20は、データ認証要求4SX,AX,DX1を子ノード10-1に送信するステップS129。ここで、SXはPANA_AUTH_KEY107図3参照の鍵仕様、AXはメッセージ認証アルゴリズム識別子であるものとする。図14は、本実施形態のPANA_AUTH_KEY107に対する完全指定子の一例を示す図である。図14に示す例では、完全指定子は、先頭から完全指定子要素1、完全指定子要素2、完全指定子要素3の要素数3の順序リストとして定義されている。完全指定子要素1は、MK102図3参照に対応し、完全指定子要素2は、MSK105図3参照に対応し、完全指定子要素3は、PANA_AUTH_KEY107図3参照に対応する。MK102は、親鍵のオクテット長が32オクテットであり、鍵導出関数にGKDF、ハッシュ関数にHMAC_SHA256を使用する。MSK105は、親鍵のオクテット長が32オクテットであり、鍵導出関数にGKDF、ハッシュ関数にHMAC_SHA256を使用する。PANA_AUTH_KEY107は、親鍵のオクテット長が64オクテットであり、鍵導出関数にprf、ハッシュ関数にHMAC_SHA1を使用する。続いて、子ノード10-1は、親ノード20にデータ認証応答4CX1,SD4を送信するステップS131。ここで、SD4はステータスであるものとする。そして親ノード20は、メッセージX1のメッセージ認証コードとデータ認証応答4のメッセージ認証コードとがCX1で一致することを確認する。続いて、メッセージX2の送信イベントが発生したとする。ここで、メッセージX2は、PANAのPANA-Auth-AnswerPANメッセージでCbitがオンになったものとする。この場合、親ノード20は、メッセージX2の送信に必要なメッセージ認証コードを取得するため、データ認証要求5SX,AX,DX2を子ノード10-1に送信するステップS133。ここで、DX2はメッセージX2の被認証データであるものとする。続いて、子ノード10-1は、親ノード20にデータ認証応答5CX2,SD5を送信するステップS135。ここで、CX2は被認証データDX2に対するメッセージ認証コード、SD5はステータスであるものとする。続いて、親ノード20は、アプリケーションサーバ30にメッセージX2DX2,CX2を送信するステップS137。図15は、本実施形態の子ノード10-1で実行される処理の一例を示すフローチャートである。まず、登録処理部11は、親ノード20に登録要求を送信するステップS201。続いて、登録処理部11は、親ノード20から登録応答を受信するステップS202。続いて、主処理部13は、主処理を行うステップS203。なお、主処理の詳細については、後述する。続いて、登録処理部11は、登録がタイムアウトし、親ノード20に再登録が必要であるか否かを確認するステップS204。そして、再登録が必要であればステップS204でYes、ステップS201に戻り、再登録が必要でなければステップS204でNo、処理は終了となる。図16は、本実施形態の主処理の一例を示すフローチャートである。まず、主処理部13は、親ノード20からイベントを受信するステップS301。続いて、主処理部13は、受信したイベントが登録タイムアウトを示すイベントであるか否か確認するステップS302。登録タイムアウトを示すイベントである場合ステップS302でYes、処理は終了となる。登録タイムアウトを示すイベントでない場合ステップS302でNo、主処理部13は、受信したイベントがデータ認証要求か否か確認するステップS303。受信したイベントがデータ認証要求である場合ステップS303でYes、主処理部13は、データ認証要求から鍵仕様S、被認証データD、及びメッセージ認証アルゴリズム識別子を取得し、メッセージ認証アルゴリズム識別子で識別されるメッセージ認証アルゴリズムAを更に取得するステップS304。続いて、鍵生成部15は、保持している鍵階層と鍵仕様Sとを用いて、鍵仕様Sに対応する鍵Kを生成するステップS305。なお、主処理部13は、鍵キャッシュS,Kを作成し、保持してもよい。なお、主処理部13が鍵キャッシュS,Kを保持している場合、鍵生成部15による鍵Kの生成を省略し、鍵キャッシュS,Kから鍵Kを取得してもよい。続いて、主処理部13は、鍵K及びメッセージ認証アルゴリズムAを使用して、被認証データDに対するメッセージ認証コードC’を生成するステップS306。続いて、主処理部13は、メッセージ認証コードC’を含むデータ認証応答を親ノード20に送信するステップS307。そして、ステップ301へ戻る。一方、受信したイベントがデータ認証要求でない場合ステップS303でNo、主処理部13は、受信したイベントが鍵要求か否か確認するステップS308。鍵要求でなければステップS308でNo、ステップ301へ戻る。受信したイベントが鍵要求である場合ステップS308でYes、主処理部13は、鍵要求から鍵仕様Sを取得するステップS309。続いて、鍵生成部15は、保持している鍵階層と鍵仕様Sとを用いて、鍵仕様Sに対応する鍵Kを生成するステップS310。続いて、主処理部13は、鍵Kを含む鍵応答を親ノード20に送信するステップS311。そして、ステップS301へ戻る。図17は、本実施形態の親ノード20で実行される処理の一例を示すフローチャートである。まず、認証プロトコル処理部23は、イベントを受信するステップS401。続いて、認証プロトコル処理部23は、受信したイベントが登録要求か否か確認するステップS402。受信したイベントが登録要求である場合ステップS402でYes、登録処理部21は、登録要求を送信した子ノードを登録するステップS403。そして、ステップS401へ戻る。受信したイベントが登録要求でない場合ステップS402でNo、登録処理部21は、登録されている子ノードのうち登録がタイムアウトしている子ノードがあるか否かを確認するステップS404。登録がタイムアウトしている子ノードがある場合ステップS404でYes、登録処理部21は、当該子ノードの登録を抹消するステップS405。そして、ステップS401へ戻る。登録がタイムアウトしている子ノードがない場合ステップS404でNo、認証プロトコル処理部23は、受信したイベントがアプリケーションサーバ30からのメッセージ受信イベントであるか否か確認するステップS406。受信したイベントがアプリケーションサーバ30からのメッセージ受信イベントである場合ステップS406でYes、認証プロトコル処理部23は、親ノードメッセージ受信処理を行うステップS407。なお、親ノードメッセージ受信処理の詳細については、後述する。そして、ステップS401へ戻る。受信したイベントがアプリケーションサーバ30からのメッセージ受信イベントでない場合ステップS406でNo、認証プロトコル処理部23は、受信したイベントがアプリケーションサーバ30へのメッセージ送信イベントであるか否か確認するステップS408。受信したイベントがアプリケーションサーバ30へのメッセージ送信イベントでない場合ステップS408でNo、ステップS401へ戻る。受信したイベントがアプリケーションサーバ30へのメッセージ送信イベントである場合ステップS408でYes、認証プロトコル処理部23は、親ノードメッセージ送信処理を行うステップS409。なお、親ノードメッセージ送信処理の詳細については、後述する。そして、ステップS401へ戻る。図18は、本実施形態の親ノードメッセージ受信処理の一例を示すフローチャートである。まず、認証プロトコル処理部23は、アプリケーションサーバ30からメッセージを受信すると、受信したメッセージの認証に用いる子ノードを決定し、プロトコル種別Tp、メッセージ種別Tm、被認証データD、メッセージ認証コードC、及びメッセージ認証アルゴリズム識別子を取得するステップS501。続いて、認証プロトコル処理部23は、メッセージ認証コード取得処理を行うステップS502。なお、メッセージ認証コード取得処理の詳細については、後述する。続いて、認証プロトコル処理部23は、ステップS502で取得したメッセージ認証コードC’がステップS501で取得したメッセージ認証コードCと一致するか否か確認するステップS503。両メッセージ認証コードが一致する場合ステップS503でYes、認証プロトコル処理部23は、受信したメッセージの復号化が必要か否か確認するステップS504。受信したメッセージの復号化が必要でない場合ステップS504でNo、ステップS507へ進む。受信したメッセージの復号化が必要な場合ステップS504でYes、認証プロトコル処理部23は、鍵取得処理を行うステップS505。なお、鍵取得処理の詳細については、後述する。続いて、認証プロトコル処理部23は、鍵取得処理で取得した鍵を用いて、受信したメッセージを復号化するステップS506。続いて、認証プロトコル処理部23は、その他のメッセージ受信処理を行いステップS507、処理は終了となる。一方、ステップS503で両メッセージ認証コードが一致しない場合ステップS503でNo、認証プロトコル処理部23は、メッセージ認証失敗時のメッセージ受信処理を行いステップS508、処理は終了となる。なお、図18に示す例では、暗号化されたメッセージにメッセージ認証コードCが含まれていないため、メッセージ認証を行った後にメッセージを復号化したが、暗号化されたメッセージにメッセージ認証コードCが含まれている場合は、メッセージを復号化した後に、メッセージ認証を行うことになる。図19は、本実施形態の親ノードメッセージ送信処理の一例を示すフローチャートである。まず、認証プロトコル処理部23は、アプリケーションサーバ30へのメッセージ送信イベントが発生すると、送信対象のメッセージの認証に用いる子ノードを決定し、プロトコル種別Tp、メッセージ種別Tm、被認証データD、及びメッセージ認証アルゴリズム識別子を取得するステップS601。続いて、認証プロトコル処理部23は、送信対象のメッセージの暗号化が必要か否か確認するステップS602。送信対象のメッセージの暗号化が必要でない場合ステップS602でNo、ステップS605へ進む。送信対象のメッセージの暗号化が必要な場合ステップS602でYes、認証プロトコル処理部23は、鍵取得処理を行うステップS603。なお、鍵取得処理の詳細については、後述する。続いて、認証プロトコル処理部23は、鍵取得処理で取得した鍵を用いて、受信したメッセージを暗号化するステップS604。続いて、認証プロトコル処理部23は、メッセージ認証コード取得処理を行うステップS605。なお、メッセージ認証コード取得処理の詳細については、後述する。続いて、認証プロトコル処理部23は、ステップS605で取得したメッセージ認証コードC’を暗号化したメッセージに付加してアプリケーションサーバ30へ送信するステップS606。図20は、本実施形態のメッセージ認証コード取得処理の一例を示すフローチャートである。まず、認証プロトコル処理部23は、メッセージの認証に用いる子ノードが登録されているか否か確認するステップS701。メッセージの認証に用いる子ノードが登録されていなければステップS701でNo、処理は終了となる。メッセージの認証に用いる子ノードが登録されている場合ステップS701でYes、鍵仕様生成部25は、プロトコル種別Tp及びメッセージ種別Tmから鍵仕様Sを生成するステップS702。続いて、認証プロトコル処理部23は、鍵仕様S、被認証データD及びメッセージ認証アルゴリズム識別子を含むデータ認証要求を、メッセージの認証に用いる子ノードに送信しステップS703、当該子ノードからメッセージ認証コードC’を含むデータ認証応答を受信するステップS704。続いて、認証プロトコル処理部23は、データ認証応答からメッセージ認証コードC’を取得するステップS705。図21は、本実施形態の鍵取得処理の一例を示すフローチャートである。まず、鍵仕様生成部25は、プロトコル種別Tp及びメッセージ種別Tmから鍵仕様Sを生成するステップS801。続いて、認証プロトコル処理部23は、鍵仕様Sに対応する暗号鍵を保有しているか否か確認するステップS802。鍵仕様Sに対応する暗号鍵を保有している場合ステップS802でYes、認証プロトコル処理部23は、保有している暗号鍵を有効化しステップS803、処理は終了となる。鍵仕様Sに対応する暗号鍵を保有していない場合ステップS802でNo、認証プロトコル処理部23は、鍵仕様Sを含む鍵要求を、メッセージの認証に用いる子ノードに送信しステップS804、当該子ノードから暗号鍵を含む鍵応答を受信するステップS805。続いて、認証プロトコル処理部23は、鍵応答から暗号鍵を取得するステップS806。なお、認証プロトコル処理部23は、取得した暗号鍵を鍵仕様Sと対応付けて保有してもよい。なお、上記実施形態の複数の子ノード10-1~10-N及び親ノード20は、例えば、CPUなどの制御装置と、ROMやRAMなどの記憶装置と、HDDやSSDなどの外部記憶装置と、通信I/Fなどの通信装置とを備えており、通常のコンピュータを利用したハードウェア構成で実現できる。この場合、複数の子ノード10-1~10-N及び親ノード20で実行されるプログラムは、ROM等に予め組み込んで提供される。また、複数の子ノード10-1~10-N及び親ノード20で実行されるプログラムを、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、CD-R、メモリカード、DVD、フレキシブルディスクFD等のコンピュータで読み取り可能な記憶媒体に記憶されて提供するようにしてもよい。また、複数の子ノード10-1~10-N及び親ノード20で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、複数の子ノード10-1~10-N及び親ノード20で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。複数の子ノード10-1~10-N及び親ノード20で実行されるプログラムは、上述した各部をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、例えば、CPUがHDDからプログラムをRAM上に読み出して実行することにより、上記各部がコンピュータ上で実現されるようになっている。以上のように本実施形態の通信システムによれば、いずれの子ノードも認証プロトコルのステートを管理する必要がなく、少なくとも鍵仕様に基づく鍵の生成及び生成された鍵を用いたメッセージ認証コードの生成を行えばよいため、セキュリティを損なうことなく実装の軽装化が可能となる。また本実施形態の子ノードは、鍵階層のルート鍵を保持していればよく、その他の鍵はルート鍵と鍵仕様から必要な時に生成すればよいため、子ノードのメモリサイズを抑えることもできる。以上より、子ノードの数が増えるほど、通信システム全体として子ノードの軽装化によりハードウェアコストを抑えることができる。また本実施形態では、子ノードに対する相手認証のメッセージ認証以外のプロトコル処理を親ノードが代理で行うため、子ノードを軽装化してもEAPやPANAを用いた相手認証が可能となる。このため、不正な装置が親ノードを介してアプリケーションサーバと通信することを防止できる。また本実施形態では、親ノードは鍵階層を保持しないため、攻撃者により親ノードが乗っ取られた場合でも、鍵階層を守ることができる。また本実施形態では、被認証データの暗号鍵を子ノードが保持する鍵階層から生成するため、仮に攻撃者により親ノードが乗っ取られたとしても、被認証データの秘匿性及び完全性を維持でき、子ノード及びアプリケーションサーバへの影響を最小限に抑えることができる。また本実施形態の親ノードは、認証プロトコル固有の情報を子ノードに送信する必要がないため、子ノードとの間でやりとりするメッセージサイズ及びメッセージ数を削減することができる。なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。以上のように本実施形態によれば、軽装化及び相手認証を実現することができる。"