"アドホックネットワーク内のノードであって、自ノードでの消去回数を示す消去カウンタ値を上位桁とし前記自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段と、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記記憶手段に記憶されている連結カウンタ値のうち前記送信カウンタ値を1加算する更新手段と、前記データおよび前記更新手段による更新後の連結カウンタ値を前記他ノードに送信する送信手段と、前記記憶手段での前記連結カウンタ値の消去を検出する検出手段と、前記検出手段によって消去が検出された場合、前記消去カウンタ値の取得要求を前記アドホックネットワークに配信する配信手段と、前記配信手段によって前記取得要求が配信された結果、前記アドホックネットワークから前記消去カウンタ値を受信する受信手段と、前記受信手段によって受信された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成する生成手段と、前記生成手段によって生成された連結カウンタ値を前記記憶手段に保存する保存手段と、を備えることを特徴とするノード。アドホックネットワーク内のノードであって、自ノードでの消去回数を示す消去カウンタ値を上位桁とし前記自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段と、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記記憶手段に記憶されている連結カウンタ値のうち前記送信カウンタ値を1加算する更新手段と、前記データおよび前記更新手段による更新後の連結カウンタ値を前記他ノードに送信する送信手段と、前記記憶手段での前記連結カウンタ値の消去を検出する検出手段と、前記検出手段によって消去が検出された場合、前記消去カウンタ値の更新要求を前記アドホックネットワークに配信する配信手段と、前記配信手段によって前記更新要求が配信された結果、前記アドホックネットワークから前記消去カウンタ値に1加算された加算後の消去カウンタ値を受信する受信手段と、前記受信手段によって受信された加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成する生成手段と、前記生成手段によって生成された連結カウンタ値を前記記憶手段に保存する保存手段と、を備えることを特徴とするノード。アドホックネットワーク内のノードであって、自ノードでの消去回数を示す消去カウンタ値を上位桁とし前記自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する揮発性の第1の記憶手段と、前記消去カウンタ値を記憶する不揮発性の第2の記憶手段と、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記第1の記憶手段に記憶されている連結カウンタ値のうち前記送信カウンタ値を1加算する更新手段と、前記データおよび前記更新手段による更新後の連結カウンタ値を前記他ノードに送信する送信手段と、前記第1の記憶手段での前記連結カウンタ値の消去を検出する検出手段と、前記検出手段によって消去が検出された場合、前記第2の記憶手段から前記消去カウンタ値を抽出する抽出手段と、前記抽出手段によって抽出された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成する生成手段と、前記生成手段によって生成された連結カウンタ値を前記第1の記憶手段に保存するとともに、前記第2の記憶手段に記憶されている前記消去カウンタ値に対し前記加算後の消去カウンタ値を上書き保存する保存手段と、を備えることを特徴とするノード。自ノードおよび前記他ノードが有する共通鍵を用いて、自ノード固有の第1の識別情報を含む前記取得要求を暗号化する暗号化手段と、前記共通鍵を用いて暗号化されたデータを、前記共通鍵を用いて復号する復号手段と、を備え、前記配信手段は、前記暗号化手段によって暗号化された前記取得要求を前記アドホックネットワークに配信し、前記受信手段は、前記共通鍵を用いて暗号化された前記消去カウンタ値と前記共通鍵を用いて暗号化された第2の識別情報とを、前記アドホックネットワークから受信し、前記復号手段は、前記受信手段によって受信された暗号化された前記消去カウンタ値と暗号化された前記第2の識別情報を、前記共通鍵を用いて復号し、前記生成手段は、前記第1の識別情報と前記復号手段によって復号された前記第2の識別情報とが一致した場合に、前記復号手段によって復号された前記消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成することを特徴とする請求項1に記載のノード。自ノードおよび前記他ノードが有する共通鍵を用いて、自ノード固有の第1の識別情報を含む前記更新要求を暗号化する暗号化手段と、前記共通鍵を用いて暗号化されたデータを、前記共通鍵を用いて復号する復号手段と、を備え、前記配信手段は、前記暗号化手段によって暗号化された前記更新要求を前記アドホックネットワークに配信し、前記受信手段は、前記共通鍵を用いて暗号化された前記加算後の消去カウンタ値と前記共通鍵を用いて暗号化された前記第2の識別情報とを、前記アドホックネットワークから受信し、前記復号手段は、前記受信手段によって受信された暗号化された前記加算後の消去カウンタ値と暗号化された前記第2の識別情報を、前記共通鍵を用いて復号し、前記生成手段は、前記第1の識別情報と前記復号手段によって復号された前記第2の識別情報とが一致した場合に、前記復号手段によって復号された前記加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成することを特徴とする請求項2に記載のノード。前記第1の識別情報は乱数であることを特徴とする請求項4または5に記載のノード。アドホックネットワーク内のノードであって、他ノードでの消去回数を示す消去カウンタ値を上位桁とし前記他ノードからの送信回数を示す送信カウンタ値を下位桁とする第1の連結カウンタ値を、前記他ノードから受信する第1の受信手段と、前記第1の受信手段によって受信された連結カウンタ値を記憶装置に保存する第1の保存手段と、第2の連結カウンタ値を前記他ノードから受信する第2の受信手段と、前記第2の受信手段によって受信された第2の連結カウンタ値が前記第1の連結カウンタ値よりも大きいか否かを判断する判断手段と、前記判断手段によって大きいと判断された場合、前記第1の連結カウンタ値に前記第2の連結カウンタ値を上書保存する第2の保存手段と、を備えることを特徴とするノード。前記他ノードから前記消去カウンタ値の取得要求を受信する第3の受信手段と、前記第3の受信手段によって前記取得要求が受信された場合、前記記憶装置に記憶されている前記連結カウンタ値の中の消去カウンタ値を抽出する抽出手段と、前記抽出手段によって抽出された消去カウンタ値を前記他ノードに送信する送信手段と、を備えることを特徴とする請求項7に記載のノード。前記他ノードから前記消去カウンタ値の更新要求を受信する第3の受信手段と、前記第3の受信手段によって前記更新要求が受信された場合、前記記憶装置に記憶されている前記連結カウンタ値の中の消去カウンタ値を抽出する抽出手段と、前記抽出手段によって抽出された消去カウンタ値に1加算した加算後の消去カウンタ値を前記他ノードに送信する送信手段と、を備えることを特徴とする請求項7に記載のノード。前記判断手段によって大きくないと判断された場合、前記第2の連結カウンタ値とともに受信されたデータを廃棄する廃棄手段を備えることを特徴とする請求項7~9のいずれか一つに記載のノード。アドホックネットワークを構成するノードにおける通信方法であって、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記ノードでの消去回数を示す消去カウンタ値を上位桁とし前記自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段に記憶されている連結カウンタ値のうち、前記送信カウンタ値を1加算し、前記データおよび加算後の連結カウンタ値を前記他ノードに送信し、前記記憶手段での前記連結カウンタ値の消去を検出し、消去が検出された場合、前記消去カウンタ値の取得要求を前記アドホックネットワークに配信し、前記取得要求が配信された結果、前記アドホックネットワークから前記消去カウンタ値を受信し、受信された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を前記記憶手段に保存する、ことを特徴とする通信方法。アドホックネットワークを構成するノードにおける通信方法であって、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記ノードでの消去回数を示す消去カウンタ値を上位桁とし前記自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段に記憶されている連結カウンタ値のうち、前記送信カウンタ値を1加算し、前記データおよび加算後の連結カウンタ値を前記他ノードに送信し、前記記憶手段での前記連結カウンタ値の消去を検出し、消去が検出された場合、前記消去カウンタ値の更新要求を前記アドホックネットワークに配信し、前記更新要求が配信された結果、前記アドホックネットワークから前記消去カウンタ値に1加算された加算後の消去カウンタ値を受信し、受信された加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を前記記憶手段に保存する、ことを特徴とする通信方法。アドホックネットワークを構成するノードにおける通信方法であって、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記ノードでの消去回数を示す消去カウンタ値を上位桁とし前記自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する揮発性の第1の記憶手段に記憶されている連結カウンタ値のうち、前記送信カウンタ値を1加算し、前記データおよび加算後の連結カウンタ値を前記他ノードに送信し、前記第1の記憶手段での前記連結カウンタ値の消去を検出し、消去が検出された場合、前記消去カウンタ値を記憶する不揮発性の第2の記憶手段から前記消去カウンタ値を抽出し、抽出された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を前記第1の記憶手段に保存するとともに、前記第2の記憶手段に記憶されている前記消去カウンタ値に対し前記加算後の消去カウンタ値を上書き保存する、ことを特徴とする通信方法。アドホックネットワークを構成するノードにおける通信方法であって、他ノードでの消去回数を示す消去カウンタ値を上位桁とし前記他ノードからの送信回数を示す送信カウンタ値を下位桁とする第1の連結カウンタ値を、前記他ノードから受信し、受信された連結カウンタ値を記憶装置に保存し、第2の連結カウンタ値を前記他ノードから受信し、前記第2の連結カウンタ値が前記第1の連結カウンタ値よりも大きいか否かを判断し、大きいと判断された場合、前記第1の連結カウンタ値に前記第2の連結カウンタ値を上書保存する、ことを特徴とする通信方法。アドホックネットワーク内の第1のノードと第2のノードとが通信するシステムであって、前記第1のノードは、前記第1のノードでの消去回数を示す消去カウンタ値を上位桁とし前記第1のノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段と、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記記憶手段に記憶されている連結カウンタ値のうち前記送信カウンタ値を1加算する更新手段と、前記第2のノードを宛先にする第1のデータおよび前記更新手段による更新後の第1の連結カウンタ値を前記第2のノードに送信する第1の送信手段と、前記記憶手段での前記連結カウンタ値の消去を検出する検出手段と、前記検出手段によって消去が検出された場合、前記消去カウンタ値の取得要求を前記アドホックネットワークに配信する配信手段と、前記配信手段によって前記取得要求が配信された結果、前記アドホックネットワークから前記消去カウンタ値を受信する応答受信手段と、前記応答受信手段によって受信された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成する生成手段と、前記生成手段によって生成された連結カウンタ値を前記記憶手段に保存する生成値保存手段と、前記生成値保存手段によって保存された後に、前記第2のノードを宛先にする第2のデータおよび前記記憶手段に記憶されている最新の連結カウンタ値について前記更新手段によって更新された第2の連結カウンタ値を、前記第2のノードに送信する第2の送信手段と、を備え、前記第2のノードは、前記第1の連結カウンタ値を、前記第1のノードから受信する第1の受信手段と、前記第1の受信手段によって受信された第1の連結カウンタ値を記憶装置に保存する第1の保存手段と、前記第2の連結カウンタ値を、前記第1のノードから受信する第2の受信手段と、前記第2の受信手段によって受信された第2の連結カウンタ値が前記第1の連結カウンタ値よりも大きいか否かを判断する判断手段と、前記判断手段によって大きいと判断された場合、前記第1の連結カウンタ値を前記第2の連結カウンタ値に上書保存する第2の保存手段と、を備えることを特徴とする通信システム。アドホックネットワーク内の第1のノードと第2のノードとが通信するシステムであって、前記第1のノードは、前記第1のノードでの消去回数を示す消去カウンタ値を上位桁とし前記第1のノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段と、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記記憶手段に記憶されている連結カウンタ値のうち前記送信カウンタ値を1加算する更新手段と、前記第2のノードを宛先にする第1のデータおよび前記更新手段による更新後の第1の連結カウンタ値を前記第2のノードに送信する第1の送信手段と、前記記憶手段での前記連結カウンタ値の消去を検出する検出手段と、前記検出手段によって消去が検出された場合、前記消去カウンタ値の更新要求を前記アドホックネットワークに配信する配信手段と、前記配信手段によって前記更新要求が配信された結果、前記アドホックネットワークから前記消去カウンタ値に1加算された加算後の消去カウンタ値を受信する応答受信手段と、前記応答受信手段によって受信された加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成する生成手段と、前記生成手段によって生成された連結カウンタ値を前記記憶手段に保存する生成値保存手段と、前記生成値保存手段によって保存された後に、前記第2のノードを宛先にする第2のデータおよび前記記憶手段に記憶されている最新の連結カウンタ値について前記更新手段によって更新された第2の連結カウンタ値を前記第2のノードに送信する第2の送信手段と、を備え、前記第2のノードは、前記第1の連結カウンタ値を、前記第1のノードから受信する第1の受信手段と、前記第1の受信手段によって受信された第1の連結カウンタ値を記憶装置に保存する第1の保存手段と、前記第2の連結カウンタ値を、前記第1のノードから受信する第2の受信手段と、前記第2の受信手段によって受信された第2の連結カウンタ値が前記第1の連結カウンタ値よりも大きいか否かを判断する判断手段と、前記判断手段によって大きいと判断された場合、前記第1の連結カウンタ値を前記第2の連結カウンタ値に上書保存する第2の保存手段と、を備えることを特徴とする通信システム。アドホックネットワーク内の第1のノードと第2のノードとが通信するシステムであって、前記第1のノードは、前記第1のノードでの消去回数を示す消去カウンタ値を上位桁とし前記第1のノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する揮発性の第1の記憶手段と、前記消去カウンタ値を記憶する不揮発性の第2の記憶手段と、前記アドホックネットワーク内の他ノードにデータを送信する場合、前記第1の記憶手段に記憶されている連結カウンタ値のうち前記送信カウンタ値を1加算する更新手段と、前記第2のノードを宛先にする第1のデータおよび前記更新手段による更新後の第1の連結カウンタ値を前記第2のノードに送信する第1の送信手段と、前記第1の記憶手段での前記連結カウンタ値の消去を検出する検出手段と、前記検出手段によって消去が検出された場合、前記第2の記憶手段から前記消去カウンタ値を抽出する抽出手段と、前記抽出手段によって抽出された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし前記消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成する生成手段と、前記生成手段によって生成された連結カウンタ値を前記第1の記憶手段に保存するとともに、前記第2の記憶手段に記憶されている前記消去カウンタ値に対し前記加算後の消去カウンタ値を上書き保存する生成値保存手段と、前記生成値保存手段によって保存された後に、前記第2のノードを宛先にする第2のデータおよび前記記憶手段に記憶されている最新の連結カウンタ値について前記更新手段によって更新された第2の連結カウンタ値を前記第2のノードに送信する第2の送信手段と、を備え、前記第2のノードは、前記第1の連結カウンタ値を、前記第1のノードから受信する第1の受信手段と、前記第1の受信手段によって受信された第1の連結カウンタ値を記憶装置に保存する第1の保存手段と、前記第2の連結カウンタ値を、前記第1のノードから受信する第2の受信手段と、前記第2の受信手段によって受信された第2の連結カウンタ値が前記第1の連結カウンタ値よりも大きいか否かを判断する判断手段と、前記判断手段によって大きいと判断された場合、前記第1の連結カウンタ値を前記第2の連結カウンタ値に上書保存する第2の保存手段と、を備えることを特徴とする通信システム。しかしながら、上述した従来技術では、アドホックネットワーク内の全ノードの時刻が同期されている必要がある。例えば、他のネットワークとの中継機器であるゲートウェイまたはアドホックネットワーク内の特定のノードが、定期的に時刻同期用のパケットをブロードキャストすることで、アドホックネットワーク内の全ノードの時刻同期を実現する。そのため、メータ検針を行うアドホックネットワークでは、各メータの検針データパケット以外に、時刻同期用のブロードキャストパケットが送受信されることとなり、アドホックネットワークの通信負荷が増大するという問題がある。本発明は、上述した従来技術による問題点を解消するため、通信負荷の低減化を図ることができるノード、通信方法、および通信システムを提供することを目的とする。上述した課題を解決し、目的を達成するため、本発明の一側面によれば、自ノードでの消去回数を示す消去カウンタ値を上位桁とし自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段を備え、アドホックネットワーク内の他ノードにデータを送信する場合、記憶手段に記憶されている連結カウンタ値のうち送信カウンタ値を1加算し、データおよび加算後の連結カウンタ値を他ノードに送信し、記憶手段での連結カウンタ値の消去を検出し、消去が検出された場合、消去カウンタ値の取得要求をアドホックネットワークに配信し、取得要求が配信された結果、アドホックネットワークから消去カウンタ値を受信し、受信された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を記憶手段に保存するノードおよび通信方法が提案される。また、本発明の一側面によれば、自ノードでの消去回数を示す消去カウンタ値を上位桁とし自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段を備え、アドホックネットワーク内の他ノードにデータを送信する場合、記憶手段に記憶されている連結カウンタ値のうち送信カウンタ値を1加算し、データおよび加算後の連結カウンタ値を他ノードに送信し、記憶手段での連結カウンタ値の消去を検出し、消去が検出された場合、消去カウンタ値の更新要求をアドホックネットワークに配信し、更新要求が配信された結果、アドホックネットワークから消去カウンタ値に1加算された加算後の消去カウンタ値を受信し、受信された加算後の消去カウンタ値を上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を記憶手段に保存するノードおよび通信方法が提案される。また、本発明の一側面によれば、自ノードでの消去回数を示す消去カウンタ値を上位桁とし自ノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する揮発性の第1の記憶手段と、消去カウンタ値を記憶する不揮発性の第2の記憶手段と、を備え、アドホックネットワーク内の他ノードにデータを送信する場合、第1の記憶手段に記憶されている連結カウンタ値のうち送信カウンタ値を1加算し、データおよび加算後の連結カウンタ値を他ノードに送信し、第1の記憶手段での連結カウンタ値の消去を検出し、消去が検出された場合、第2の記憶手段から消去カウンタ値を抽出し、抽出された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を第1の記憶手段に保存するとともに、第2の記憶手段に記憶されている消去カウンタ値に対し加算後の消去カウンタ値を上書き保存するノードおよび通信方法が提案される。また、本発明の一側面によれば、他ノードでの消去回数を示す消去カウンタ値を上位桁とし他ノードからの送信回数を示す送信カウンタ値を下位桁とする第1の連結カウンタ値を、他ノードから受信し、受信された連結カウンタ値を記憶装置に保存し、第2の連結カウンタ値を他ノードから受信し、第2の連結カウンタ値が第1の連結カウンタ値よりも大きいか否かを判断し、大きいと判断された場合、第1の連結カウンタ値に第2の連結カウンタ値を上書保存するノードおよび通信方法が提案される。また、本発明の一側面によれば、アドホックネットワーク内の第1のノードと第2のノードとが通信するシステムであって、第1のノードは、第1のノードでの消去回数を示す消去カウンタ値を上位桁とし第1のノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段を備え、アドホックネットワーク内の他ノードにデータを送信する場合、記憶手段に記憶されている連結カウンタ値のうち送信カウンタ値を1加算し、第2のノードを宛先にする第1のデータおよび加算後の第1の連結カウンタ値を第2のノードに送信し、記憶手段での連結カウンタ値の消去を検出し、消去が検出された場合、消去カウンタ値の取得要求をアドホックネットワークに配信し、取得要求が配信された結果、アドホックネットワークから消去カウンタ値を受信し、受信された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を記憶手段に保存し、保存された後に、第2のノードを宛先にする第2のデータおよび記憶手段に記憶されている最新の連結カウンタ値のうち送信カウンタ値を1加算した第2の連結カウンタ値を、第2のノードに送信し、第2のノードは、第1の連結カウンタ値を、第1のノードから受信し、受信された第1の連結カウンタ値を記憶装置に保存し、第2の連結カウンタ値を、第1のノードから受信し、受信された第2の連結カウンタ値が第1の連結カウンタ値よりも大きいか否かを判断し、大きいと判断された場合、第1の連結カウンタ値を第2の連結カウンタ値に上書保存する通信システムが提案される。また、本発明の一側面によれば、アドホックネットワーク内の第1のノードと第2のノードとが通信するシステムであって、第1のノードは、第1のノードでの消去回数を示す消去カウンタ値を上位桁とし第1のノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する記憶手段を備え、アドホックネットワーク内の他ノードにデータを送信する場合、記憶手段に記憶されている連結カウンタ値のうち送信カウンタ値を1加算し、第2のノードを宛先にする第1のデータおよび加算後の第1の連結カウンタ値を第2のノードに送信し、記憶手段での連結カウンタ値の消去を検出し、消去が検出された場合、消去カウンタ値の更新要求をアドホックネットワークに配信し、更新要求が配信された結果、アドホックネットワークから消去カウンタ値に1加算された加算後の消去カウンタ値を受信し、受信された加算後の消去カウンタ値を上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を記憶手段に保存し、保存された後に、第2のノードを宛先にする第2のデータおよび記憶手段に記憶されている最新の連結カウンタ値のうち送信カウンタ値を1加算した第2の連結カウンタ値を第2のノードに送信し、第2のノードは、第1の連結カウンタ値を、第1のノードから受信し、受信された第1の連結カウンタ値を記憶装置に保存し、第2の連結カウンタ値を、第1のノードから受信し、受信された第2の連結カウンタ値が第1の連結カウンタ値よりも大きいか否かを判断し、大きいと判断された場合、第1の連結カウンタ値を第2の連結カウンタ値に上書保存する通信システムが提案される。また、本発明の一側面によれば、アドホックネットワーク内の第1のノードと第2のノードとが通信するシステムであって、第1のノードは、第1のノードでの消去回数を示す消去カウンタ値を上位桁とし第1のノードからの送信回数を示す送信カウンタ値を下位桁とする連結カウンタ値を記憶する揮発性の第1の記憶手段と、消去カウンタ値を記憶する不揮発性の第2の記憶手段と、を備え、アドホックネットワーク内の他ノードにデータを送信する場合、第1の記憶手段に記憶されている連結カウンタ値のうち送信カウンタ値を1加算し、第2のノードを宛先にする第1のデータおよび加算後の第1の連結カウンタ値を第2のノードに送信し、第1の記憶手段での連結カウンタ値の消去を検出し、消去が検出された場合、第2の記憶手段から消去カウンタ値を抽出し、抽出された消去カウンタ値に1加算した加算後の消去カウンタ値を上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値を下位桁とする連結カウンタ値を生成し、生成された連結カウンタ値を第1の記憶手段に保存するとともに、第2の記憶手段に記憶されている消去カウンタ値に対し加算後の消去カウンタ値を上書き保存し、保存された後に、第2のノードを宛先にする第2のデータおよび記憶手段に記憶されている最新の連結カウンタ値のうち送信カウンタ値を1加算した第2の連結カウンタ値を第2のノードに送信し、第2のノードは、第1の連結カウンタ値を、第1のノードから受信し、受信された第1の連結カウンタ値を記憶装置に保存し、第2の連結カウンタ値を、第1のノードから受信し、受信された第2の連結カウンタ値が第1の連結カウンタ値よりも大きいか否かを判断し、大きいと判断された場合、第1の連結カウンタ値を第2の連結カウンタ値に上書保存する通信システムが提案される。本発明の一側面によれば通信負荷の低減化を図ることができるという効果を奏する。以下に添付図面を参照して、この発明にかかるノード、通信方法、および通信システムの実施の形態を詳細に説明する。ノードによるアドホックネットワークへの復帰処理例図1は、ノードによるアドホックネットワークへの復帰処理例を示す説明図である。図1において、ノードN1、ノードN2およびノードN3は、互いの通信圏内に存在する近隣ノードNである。ノードN1、ノードN2およびノードN3は、アドホックネットワーク内の各ノードNで共有される共通鍵以下、固定鍵というや、アドホックネットワーク内のノードN間で一定時間ごとに更新される共通鍵以下、アクセス鍵というを保持している。ノードN1、ノードN2およびノードN3は、固定鍵やアクセス鍵を用いてパケットを暗号化して得られた暗号化パケットEPの送受信を行っている。ここでは、簡単のため、ノードN1は、暗号化パケットEPを近隣ノードNに送信する送信側のノードNであるとする。また、ノードN2およびノードN3は、暗号化パケットEPを近隣ノードNから受信する受信側のノードNであるとする。ノードN1は、連結カウンタ値JCを保持している。連結カウンタ値JCは、上位桁のカウンタ値と下位桁のカウンタ値とが連結されたカウンタ値である。ここで、下位桁のカウンタ値は、今までにノードN1が暗号化パケットEPを送信した回数を示す送信カウンタ値Sである。上位桁のカウンタ値は、ノードN1において連結カウンタ値JCが消去された回数を示す消去カウンタ値Rである。図1の例では、ノードN1は、消去カウンタ値R0x00と、送信カウンタ値S0x005678と、を連結した連結カウンタ値JC0x00005678を保持している。なお、0xは16進数表記を示す。ノードN1は、他ノードNを宛先にするデータの送信イベントがあると、連結カウンタ値JCに1を加算する。そして、ノードN1は、他ノードN例えば、ノードN2,N3を宛先にするデータと、加算後の連結カウンタ値JCと、を含むパケットを生成し、生成したパケットを暗号化して得られた暗号化パケットEPを、他ノードNに送信する。また、ノードN1は、連結カウンタ値JCが消去されたことを検知すると、消去カウンタ値Rの取得要求を他ノードNに送信する。ノードN1は、取得要求を送信した結果、消去以前の連結カウンタ値JCの消去カウンタ値Rを他ノードNから受信する。そして、ノードN1は、受信した消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rと、送信カウンタ値Sの初期値と、を連結した連結カウンタ値JCを生成する。このとき、消去カウンタ値Rは上位桁であるから、消去以前の消去カウンタ値Rに1加算した加算後の消去カウンタ値Rから生成された新たな連結カウンタ値JCは、送信カウンタ値Sの大小に関わらず、消去以前の連結カウンタ値JCより大きい値になる。ノードN2およびノードN3は、他ノードN例えば、ノードN1から暗号化パケットEPを受信する。ノードN2およびノードN3は、受信した暗号化パケットEPを復号して得られたパケットから他ノードNでの連結カウンタ値JCを抽出する。そして、ノードN2およびノードN3は、抽出した連結カウンタ値JCを、受信カウンタ値RCとして保持する。図1の例では、ノードN2は、過去にノードN1から受信した暗号化パケットEPを復号して抽出した連結カウンタ値JC0x00001230を、受信カウンタ値RCとして保持している。また、ノードN3は、過去にノードN1から受信した暗号化パケットEPを復号して抽出した連結カウンタ値JC0x00005678を、受信カウンタ値RCとして保持している。ここで、ノードN1では、送信ごとに連結カウンタ値JCに1を加算し、連結カウンタ値JCの消去後には消去前の連結カウンタ値より大きい値になる新たな連結カウンタ値を生成している。そのため、ノードN2およびノードN3が、ノードN1からの正規パケットを受信し続けている限り、今回受信した暗号化パケットEPに含まれる連結カウンタ値JCは、前回受信した暗号化パケットEPに含まれる連結カウンタ値JCより大きくなる。なお、上述したように、前回受信した暗号化パケットEPに含まれていた連結カウンタ値JCは、受信カウンタ値RCとして保持されている。一方で、ノードNが再送攻撃による不正パケットを受信した場合、再送攻撃では過去に送信されたパケットをそのまま送信しているため、ノードNが今回受信したパケットに含まれる連結カウンタ値JCは、受信カウンタ値RC以下となる。そのため、ノードN2およびノードN3は、今回受信した暗号化パケットEPに含まれていた連結カウンタ値JCが受信カウンタ値RCより大きければ、暗号化パケットEPを正規パケットと判断する。一方、ノードN2およびノードN3は、今回受信した暗号化パケットEPに含まれていた連結カウンタ値JCが受信カウンタ値RC以下であれば、暗号化パケットEPを不正パケットと判断する。ここで、図1において、停電によりノードN1に電力が供給されず、ノードN1が保持していた連結カウンタ値JC0x00005678が消去されてしまったとする。そのため、他ノードN例えば、ノードN2,N3に送信するパケットに含むべき連結カウンタ値JCが不明になり、ノードN1は、他ノードNにパケットを送信することができない。1まず、ノードN1は、停電が回復し電力が供給されると、連結カウンタ値JCが消去されたことを検出する。2次に、ノードN1は、連結カウンタ値JCが消去されたことを検出すると、消去カウンタ値Rの取得要求を含むパケットを生成し、生成したパケットを固定鍵を用いて暗号化する。そして、ノードN1は、暗号化により得られた取得要求を含む暗号化パケットEPを他ノードNに送信する。図1の例では、ノードN1は、取得要求を含む暗号化パケットEPを、ノードN2に送信できている。3しかし、ノードN1は、ノードN3と通信不能の状態になっており、取得要求を含む暗号化パケットEPをノードN3に送信できていない。例えば、ノードN3と通信不能の状態になる原因としては、ノードN1とノードN3との間に障害物が存在することが挙げられる。4ノードN2は、ノードN1から暗号化パケットEPを受信すると、受信した暗号化パケットEPを固定鍵を用いて復号する。次に、ノードN2は、復号により得られたパケットに取得要求が含まれることを検出すると、受信カウンタ値RC0x00001230から消去カウンタ値R0x00を抽出する。そして、ノードN2は、抽出した消去カウンタ値R0x00を含むパケットを生成し、生成したパケットを固定鍵を用いて暗号化する。次に、ノードN2は、暗号化により得られた暗号化パケットEPをノードN1に送信する。5ノードN1は、ノードN2から暗号化パケットEPを受信すると、受信した暗号化パケットEPを固定鍵を用いて復号する。次に、ノードN1は、復号により得られたパケットから、消去カウンタ値R0x00を取得する。そして、ノードN1は、連結カウンタ値JCの消去以前での消去カウンタ値Rを示す取得した消去カウンタ値R0x00に、1を加算する。次に、ノードN1は、加算後の消去カウンタ値R0x01と、送信カウンタ値Sの初期値0x000000と、を連結して連結カウンタ値JC0x01000000を生成する。ここで、ノードN1は、ノードN3と通信可能の状態になったとする。例えば、ノードN3と通信可能の状態になる原因としては、ノードN1とノードN3との間に存在した障害物が移動して、ノードN1とノードN3との間に障害物が存在しなくなったことが挙げられる。6ノードN1は、ノードN3を宛先にするデータの送信イベントがあると、連結カウンタ値JC0x01000000に1を加算する。次に、ノードN1は、ノードN3を宛先にするデータと、加算後の連結カウンタ値JC0x01000001と、を含むパケットを生成し、生成したパケットを固定鍵を用いて暗号化する。そして、ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先になるノードN3に送信する。7ノードN3は、ノードN1から暗号化パケットEPを受信すると、受信した暗号化パケットEPの正当性の判断を行う。具体的には、ノードN3は、受信した暗号化パケットEPを、固定鍵を用いて復号する。次に、ノードN3は、復号により得られたパケットから連結カウンタ値JC0x01000001を取得する。そして、ノードN3は、前回受信した暗号化パケットEPに含まれていた連結カウンタ値JCを示す受信カウンタ値RC0x00005678と、取得した連結カウンタ値JC0x01000001と、の大小比較を行う。ここで、ノードN3は、取得した連結カウンタ値JCが受信カウンタ値RCよりも大きいため、受信した暗号化パケットEPは正規パケットであると判断する。そして、ノードN3は、受信カウンタ値RC0x00005678を取得した連結カウンタ値JC0x01000001で更新する。8また、ノードN1は、ノードN2を宛先にするデータの送信イベントがあると、連結カウンタ値JC0x01000001に1を加算する。次に、ノードN1は、ノードN2を宛先にするデータと、加算後の連結カウンタ値JC0x01000002と、を含むパケットを生成し、生成したパケットを固定鍵を用いて暗号化する。そして、ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先になるノードN2に送信する。9ノードN2は、ノードN1から暗号化パケットEPを受信すると、受信した暗号化パケットEPの正当性の判断を行う。具体的には、ノードN2は、受信した暗号化パケットEPを、固定鍵を用いて復号する。次に、ノードN2は、復号により得られたパケットから連結カウンタ値JC0x01000002を取得する。そして、ノードN2は、前回受信した暗号化パケットEPに含まれていた連結カウンタ値JCを示す受信カウンタ値RC0x00001230と、取得した連結カウンタ値JC0x01000002と、の大小比較を行う。ここで、ノードN2は、取得した連結カウンタ値JCが受信カウンタ値RCよりも大きいため、受信した暗号化パケットEPは正規パケットであると判断する。そして、ノードN2は、受信カウンタ値RC0x00001230を取得した連結カウンタ値JC0x01000002で更新する。このように、ノードN1は、連結カウンタ値JCを保持し、連結カウンタ値JCが消去されると、他ノードNに取得要求を送信することにより、消去以前の消去カウンタ値Rを他ノードNから取得する。そして、ノードN1は、消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とする新たな連結カウンタ値JCを生成する。これにより、過去にノードN1により送信された暗号化パケットEPに含まれていた連結カウンタ値JCより、ノードN1により生成された新たな連結カウンタ値JCが大きい値になる。そのため、ノードN1は、他ノードNが保持している受信カウンタ値RCより大きい値になっている連結カウンタ値JCを、他ノードNに送信する暗号化パケットEPに含むことができる。結果として、ノードN2およびノードN3は、保持している受信カウンタ値RCより、ノードN1から受信した暗号化パケットEPに含まれる連結カウンタ値JCが大きいため、ノードN1から受信した暗号化パケットEPを正規パケットと判断することができるようになる。そして、ノードN1は、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。また、従来のように、時刻情報を用いて不正パケットか否かを判断する場合、各ノードNが基準時刻との同期を、定期的または不定期に、アドホックネットワークを介して行う必要がある。この場合、時刻同期用のパケット量がアドホックネットワークに通信負荷をかける。一方、連結カウンタ値JCは自ノードN内の処理のみで更新が可能な相対的な値であるから、各ノードNは、アドホックネットワークへの通信負荷を削減することができる。そのため、ノードN2およびノードN3は、時刻同期を必要とせずに、暗号化パケットEP内の連結カウンタ値JCが受信ごとに増加することを監視して、ノードN1から受信した暗号化パケットEPが不正パケットか否かを判断することができる。よって、アドホックネットワークには、時刻同期用のパケットによる通信負荷が生じない。さらに、不正パケットか否かの判断に時刻同期を必要としないため、時刻同期用のパケットを送信するゲートウェイが、アドホックネットワーク内に存在しなくてもよい。なお、ノードN1は、送信カウンタ値Sが最大値0xFFFFFFになったとき、送信カウンタ値Sを初期値0x000000に戻してもよい。このとき、ノードN1は、ノードN2およびノードN3に、送信カウンタ値Sを初期値に戻したことを示すパケットを送信する。そして、ノードN2およびノードN3は、受信カウンタ値RC内の送信カウンタ値Sを、初期値に戻す。また、ノードN1は、消去カウンタ値Rが最大値0xFFになったとき、消去カウンタ値Rを初期値0x00に戻してもよい。このとき、ノードN1は、ノードN2およびノードN3に、消去カウンタ値Rを初期値に戻したことを示すパケットを送信する。そして、ノードN2およびノードN3は、受信カウンタ値RC内の消去カウンタ値Rを、初期値に戻す。また、ノードN1は、送信カウンタ値Sが最大値0xFFFFFFになり、かつ、消去カウンタ値Rが最大値0xFF未満であり増加可能であるとき、送信カウンタ値Sを初期値0x000000に戻すとともに、消去カウンタ値Rに1を加算してもよい。これにより、過去にノードN1により送信された暗号化パケットEPに含まれていた連結カウンタ値JCより大きい値で、連結カウンタ値JCを更新することができる。結果として、ノードN1は、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。このとき、ノードN1は、ノードN2およびノードN3に、消去カウンタ値Rを初期値に戻したことを示すパケットを送信しなくて済む。なお、ノード2およびノード3は、ノードN1から受信した暗号化パケットEPに含まれる連結カウンタ値JCと保持している受信カウンタ値RCとの差がしきい値以上である場合に、受信した暗号化パケットEPを不正パケットと判断してもよい。これにより、ノードN1により過去に送信された暗号化パケットEP内の連結カウンタ値JCを書き換えて攻撃者が再送攻撃に使用した場合に、書き換えにより消去カウンタ値Rが大きく変化していれば、不正パケットと判断することができる。ノードNのハードウェア構成例図2は、実施の形態にかかるノードNのハードウェア構成例を示すブロック図である。図2において、ノードNは、CPU201と、RAM202と、フラッシュメモリ203と、I/F204と、暗号化回路205と、を備えている。CPU201~暗号化回路205は、バス200によってそれぞれ接続されている。ここで、CPU201は、ノードNの全体の制御を司る。RAM202は、CPU201のワークエリアとして使用される。RAM202は、揮発性の記憶装置である。RAM202には、書き換えが頻繁に行われる連結カウンタ値JCや暗号鍵例えばアクセス鍵の鍵情報が記憶される。フラッシュメモリ203は、不揮発性の記憶装置である。フラッシュメモリ203には、プログラムや暗号鍵例えば固定鍵の鍵情報が記憶される。I/F204は、ユニホップ通信またはマルチホップ通信によりパケットを送受信する。暗号化回路205は、暗号鍵を用いてデータを暗号化する回路である。また、暗号化回路205は、暗号化されたデータを復号鍵を用いて復号する回路でもある。暗号化および復号をソフトウェア的に実行する場合は、暗号化回路205に相当するプログラムをフラッシュメモリ203に記憶させておくことで、暗号化回路205は不要となる。ノードDBの記憶内容図3は、ノードDBDataBaseの記憶内容の一例を示す説明図である。図3に示すように、ノードDB300は、ノード項目のそれぞれに対応付けて、アクセス鍵項目と、受信カウンタ値項目と、を有する。ノードDB300は、ノードNが暗号化パケットEPを受信するごとにレコードを構成する。ノード項目には、アドホックネットワーク内のノードNを示す識別子が記憶される。例えば、識別子としては、ノード番号が採用できる。また、識別子としては、ノードN固有のネットワークアドレスであるMACMediaAccessControlアドレスやIPInternetProtocolアドレスを採用してもよい。図3の例では、ノードN1が有するノードDBを示している。ここで、ノード項目には、他ノードNのノード番号N2~が記憶されている。アクセス鍵項目には、ノード項目の識別子が示すノードNから受信したアクセス鍵AKが記憶される。アクセス鍵AKは、ノード項目の識別子が示すノードNへ送信するパケットの暗号化に使用される。アクセス鍵AKは、例えば、128~256ビット程度のバイナリデータである。受信カウンタ値項目には、ノード項目の識別子が示すノードNから受信した暗号化パケットEPに含まれる連結カウンタ値JCが記憶される。ノードNの機能的構成例次に、図4および図5を用いて、ノードNの機能的構成例について説明する。ここで、図4は、ノードNの送信側としての機能的構成例を示している。また、図5は、ノードNの受信側としての機能的構成例を示している。ここでは、便宜的に受信側としての機能と送信側としての機能を分けて説明しているが、ノードNは受信側としての機能および送信側としての機能の両方を有する。図4は、ノードNの送信側としての機能的構成例を示す機能ブロック図である。図4に示すように、ノードNは、第1の記憶部401と、更新部402と、送信部403と、暗号化部404と、乱数生成部405と、検出部406と、受信部407と、復号部408と、生成部409と、保存部410と、第2の記憶部411と、抽出部412と、を備える。更新部402~保存部410および抽出部412は、具体的には、例えば、図2に示したフラッシュメモリ203などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F204により、その機能を実現する。第1の記憶部401は、自ノードNでの消去回数を示す消去カウンタ値Rを上位桁とし自ノードNからの送信回数を示す送信カウンタ値Sを下位桁とする連結カウンタ値JCを記憶する。具体的には、例えば、頻繁に書き換えが行われる連結カウンタ値JCを記憶するため、データの読み書きを高速に行うことができる揮発性の記憶装置が採用される。第1の記憶部401は、例えば、上述したRAM202である。例えば、図1では、ノードN1の第1の記憶部401RAM202は、連結カウンタ値JC0x00005678を保持している。更新部402は、アドホックネットワーク内の他ノードNにデータを送信する場合、第1の記憶部401に記憶されている連結カウンタ値JCのうち送信カウンタ値Sを1加算する。ここで、データとは、例えば、ノードNが家庭に備え付けられた消費電力計である場合は、当該家庭の消費電力量である。データの送信は、送信イベントの発生をトリガに実行される。送信イベントは、例えば、ノードNのユーザからの他ノードNを宛先にするデータの入力を受けることにより発生する。また、送信イベントは、ノードNが、一定時間ごとに自動的に発生させてもよい。更新部402は、具体的には、例えば、アドホックネットワーク内の他ノードNを宛先にするデータの送信イベントが検出された場合、RAM202に保持されている連結カウンタ値JCに1を加算する。これにより、更新部402は、RAM202に保持されている連結カウンタ値JCのうち送信カウンタ値Sを、最新の送信カウンタ値Sに更新することができる。例えば、図1の6では、ノードN1の更新部402は、送信に先立って、連結カウンタ値JC0x01000000に1を加算し、連結カウンタ値JC0x01000001に更新している。送信部403は、データおよび更新部402による更新後の連結カウンタ値JCを他ノードNに送信する。送信部403は、具体的には、例えば、他ノードNを宛先とするデータと更新部402による更新後の連結カウンタ値JCとを含むパケットを生成する。そして、送信部403は、生成したパケットを、データの宛先である他ノードNに送信する。ここで、パケットには、送信元である自ノードNを示す識別子が含まれてもよい。なお、ここでは、送信部403は、生成したパケットを、他ノードNにユニキャスト送信している。例えば、図1の6では、ノードN1の送信部403は、暗号化パケットEPを送信しているが、連結カウンタ値JC0x01000001を含む暗号化されないパケットをノードN3に送信してもよい。なお、パケットの他ノードNへのユニキャスト送信は、送信部403がパケットを近隣ノードNに配信し、宛先の他ノードN以外の近隣ノードNが受信したパケットを廃棄し、宛先になる他ノードNが受信したパケットの内容に従って処理を実行することで実現される。ここで、処理としては、例えば、パケットのRAM202やフラッシュメモリ203への保存が挙げられる。これにより、送信部403は、正当性の判断に使用する連結カウンタ値JCを含むパケットを、他ノードNに送信することができる。例えば、図1の6で、ノードN1の送信部403は、近隣ノードとなるノードN2およびノードN3に、ノードN3を宛先にする暗号化パケットEPを送信する。そして、ノードN2は、自ノードNが宛先でないため、受信した暗号化パケットEPを廃棄する。また、ノードN3は、受信した暗号化パケットEPの内容に従って処理を行う。また、送信部403は、暗号化部404と乱数生成部405とを有する。暗号化部404は、自ノードNおよび他ノードNが有する共通鍵を用いて、データおよび更新部402による更新後の連結カウンタ値JCを暗号化する。ここで、自ノードNおよび他ノードNが有する共通鍵とは、例えば、アドホックネットワーク内のノードNで共有される共通鍵固定鍵であってもよいし、ノードN間で一定時間ごとに更新される共通鍵アクセス鍵AKであってもよい。ここで、一定時間ごとに更新されるアクセス鍵AKのほうが固定鍵よりセキュアであるため、アクセス鍵AKを有しているときは、アクセス鍵AKが暗号化部404による暗号化に用いられる。一方、アクセス鍵AKを有していないときは、固定鍵が暗号化部404による暗号化に用いられる。例えば、図1で、停電によりノードN1に電力供給されなくなったため、RAM202に保持されていたアクセス鍵AKが消去され、フラッシュメモリ203に保持されていた固定鍵が残っている状態であれば、固定鍵が暗号化部404による暗号化に用いられる。暗号化部404は、具体的には、例えば、送信部403によって生成されたパケット内の他ノードNを宛先とするデータと更新部402による更新後の連結カウンタ値JCとを、固定鍵またはアクセス鍵AKを用いて暗号化する。例えば、図1の6または8では、ノードN1の暗号化部404は、連結カウンタ値JCを含むパケットを固定鍵を用いて暗号化している。ここで、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に、送信元である自ノードNを示す識別子が含まれてもよい。この場合、送信部403は、暗号化部404による暗号化により得られた暗号化パケットEPを、データの宛先である他ノードNに送信する。これにより、送信部403は、正当性の判断に使用する連結カウンタ値JCを含むパケットを、他ノードNに送信することができる。また、送信部403は、暗号化により得られた暗号化パケットEPを送信するため、通信の安全性を担保することができる。例えば、図1の6では、ノードN1の送信部403は、連結カウンタ値JC0x01000001を含む暗号化パケットEPを、ノードN3に送信している。また、図1の8では、送信部403は、連結カウンタ値JC0x01000002を含む暗号化パケットEPを、ノードN2に送信している。乱数生成部405は、第1の識別情報となる乱数を生成する。ここで、第1の識別情報とは、通信ごとに生成される一時的な乱数である。乱数生成部405は、具体的には、例えば、ハードウェア乱数生成器を用いて乱数を生成する。なお、生成された乱数は、例えば、RAM202などの記憶領域に記憶される。例えば、図1の2では、乱数が生成されていないが、ノードN1の乱数生成部405は乱数を生成してもよい。検出部406は、第1の記憶部401での連結カウンタ値JCの消去を検出する。検出部406は、具体的には、例えば、停電によりノードNに電力が供給されずに第1の記憶部401に保持されている連結カウンタ値JCが消去された場合、停電が回復しノードNに電力供給された後に連結カウンタ値JCが消去されていることを検出する。検出部406は、より具体的には、例えば、連結カウンタ値JCの保持先に設定されている記憶領域の記憶内容が、電力供給されたときの初期化処理により0x00000000になっていることを検出する。また、検出部406は、ノードNのユーザによる操作により、第1の記憶部401に保持されている連結カウンタ値JCが初期化されたことを検出してもよい。これにより、検出部406は、以後送信するパケットに含むべき連結カウンタ値JCが不明になったことを検出し、アドホックネットワークへの復帰処理を開始するトリガを発生させることができる。ノードN1の検出部406は、例えば、図1の1においては、連結カウンタ値JCが消去されたことを検出している。検出部406によって連結カウンタ値JCの消去が検出された場合、暗号化パケットEPを他ノードNに正規パケットと判断させるための連結カウンタ値JCが不明であるため、連結カウンタ値JCを復旧する必要がある。復旧する方法としては、例えば、下記の3通りの方法がある。第1の復旧方法は、他ノードNに消去カウンタ値Rの取得要求を送信することにより、連結カウンタ値JCを復旧する方法である。第2の復旧方法は、取得要求ではなく、消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rの取得を要求する更新要求を送信することにより、連結カウンタ値JCを復旧する方法である。第3の復旧方法は、消去カウンタ値Rを揮発性メモリではなく不揮発性の第2の記憶部411に保存しておくことにより、消去カウンタ値Rを読み出して連結カウンタ値JCを復旧する方法である。ここでは、第1の復旧方法について説明し、第2,第3の復旧方法については後述する。第1の復旧方法では、送信部403は、検出部406によって消去が検出された場合、消去カウンタ値Rの取得要求をアドホックネットワークに配信する。ここで、取得要求とは、他ノードNに、自ノードNが過去に送信した送信カウンタ値Sを示す他ノードNが保持している受信カウンタ値RCから消去カウンタ値Rを抽出させて、抽出させた消去カウンタ値Rを自ノードNへ送信させるためのリクエストである。そして、送信部403は、具体的には、例えば、取得要求を含むパケットを生成し、生成したパケットを、他ノードNに送信する。ここで、パケットには、送信元である自ノードNを示す識別子が含まれてもよい。例えば、図1の2では、ノードN1の送信部403は、取得要求を含む暗号化パケットEPをノードN2に送信しているが、取得要求を含む暗号化されないパケットを送信してもよい。これにより、送信部403は、消去カウンタ値Rを取得要求元のノードNへ送信するトリガを他ノードNに与えることができる。ここで、通信の安全性を担保するために、送信部403によって送信されるパケットは、暗号化されていてもよい。また、通信の安全性を担保するために、送信部403によって送信されるパケットは、さらに一時的な識別情報が含まれた上で、暗号化されていてもよい。一時的な識別情報とは、例えば、上述した乱数生成部405によって生成された乱数である。まず、送信部403によって送信されるパケットが暗号化されている場合について説明する。この場合、暗号化部404は、具体的には、例えば、送信部403によって生成されたパケット内の取得要求を、固定鍵またはアクセス鍵AKを用いて暗号化する。例えば、図1の2では、ノードN1の暗号化部404は、取得要求を含むパケットを固定鍵を用いて暗号化している。ここで、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に、送信元である自ノードNを示す識別子が含まれてもよい。そして、送信部403は、暗号化部404によって暗号化された取得要求をアドホックネットワークに配信する。具体的には、例えば、送信部403は、暗号化部404による暗号化により得られた取得要求を含む暗号化パケットEPを、他ノードNに送信する。例えば、図1の2では、ノードN1の送信部403は、取得要求を含む暗号化パケットEPをノードN2に送信している。なお、送信部403は、暗号化パケットEPを、近隣ノードNにマルチキャスト送信してもよいし、他ノードNにユニキャスト送信してもよい。これにより、送信部403は、消去カウンタ値Rを取得要求元のノードNへ送信するトリガを他ノードNに与えることができる。また、送信部403は、暗号化により得られた暗号化パケットEPを送信するため、通信の安全性を担保することができる。次に、通信の安全性を担保するために、送信部403によって送信されるパケットが一時的な識別情報を含んだ上で、暗号化されている場合について説明する。この場合、送信部403は、取得要求と乱数生成部405によって生成された乱数とを含むパケットを生成する。例えば、図1の2では、取得要求を含むパケットが生成されているが、ノードN1の送信部403は、乱数と取得要求とを含むパケットを生成してもよい。また、この場合、暗号化部404は、自ノードNおよび他ノードNが有する共通鍵を用いて、自ノードN固有の第1の識別情報を含む取得要求を暗号化する。暗号化部404は、具体的には、例えば、送信部403によって生成された取得要求と乱数とを含むパケットを、固定鍵またはアクセス鍵AKを用いて暗号化する。例えば、図1の2では、取得要求を含むパケットが暗号化されているが、ノードN1の暗号化部404は、取得要求と乱数とを含むパケットを固定鍵を用いて暗号化してもよい。この場合、送信部403は、暗号化部404による暗号化により得られた暗号化パケットEPを他ノードに送信する。例えば、図1の2では、取得要求を含む暗号化パケットEPが送信されているが、ノードN1の送信部403は、乱数と取得要求を含む暗号化パケットEPを送信してもよい。なお、取得要求により消去カウンタ値Rが取得されてから、連結カウンタ値JCが復旧するまでの処理については後述する。受信部407は、他ノードNから送信されたデータを受信する。受信部407は、具体的には、例えば、送信部403によって送信された要求例えば、取得要求に対する他ノードNからの応答を受信する。受信部407は、より具体的には、例えば、送信部403によって取得要求が配信された結果、アドホックネットワークから消去カウンタ値Rを受信する。これにより、受信部407は、新たな連結カウンタ値JCの生成に使用される消去以前の消去カウンタ値Rを取得することができる。また、受信部407は、復号部408を有する。復号部408は、共通鍵を用いて暗号化されたデータを、共通鍵を用いて復号する。また、復号部408は、アクセス鍵AKを用いて暗号化されたデータを、アクセス鍵AKを用いて復号する。ここで、通信の安全性を担保するために、受信部407によって受信される消去カウンタ値Rを含むパケットは、暗号化されていてもよい。この場合、復号部408は、受信部407によって受信された消去カウンタ値Rを含む暗号化パケットEPを、共通鍵を用いて復号する。この場合、受信部407は、復号部408による復号により得られたパケットから、消去カウンタ値Rを取得する。これにより、受信部407は、新たな連結カウンタ値JCの生成に使用される消去以前の消去カウンタ値Rを取得することができる。例えば、図1の5では、ノードN1の受信部407は、ノードN2から消去カウンタ値R0x00を含む暗号化パケットEPを受信している。なお、復号により得られたパケットは、例えば、RAM202などの記憶領域に記憶される。また、受信部407は、送信部403によって第1の識別情報を含む暗号化パケットEPが送信された結果、共通鍵を用いて暗号化された消去カウンタ値Rと共通鍵を用いて暗号化された第2の識別情報とを、アドホックネットワークから受信する。ここで、第2の識別情報とは、送信部403によって送信された第1の識別情報を含む暗号化パケットEPを受信したノードNで生成されるデータであり、第1の識別情報がそのまま第2の識別情報として使用される。第2の識別情報とは、例えば、乱数である。受信部407は、具体的には、例えば、送信部403によって取得要求が配信された結果、固定鍵を用いて暗号化された消去カウンタ値Rと乱数とを含む暗号化パケットEPを受信する。ここで、暗号化パケットEP内の暗号化されない部分例えば、暗号化パケットEPのヘッダ部分に、送信元である他ノードNを示す識別子が含まれてもよい。例えば、図1の5では、消去カウンタ値R0x00を含む暗号化パケットEPが受信されているが、ノードN1の受信部407は、消去カウンタ値R0x00と乱数を含む暗号化パケットEPを受信してもよい。なお、受信された暗号化パケットEPは、例えば、RAM202などの記憶領域に記憶される。また、この場合、復号部408は、具体的には、例えば、受信部407によって受信された消去カウンタ値Rと第2の識別情報を含む暗号化パケットEPを、共通鍵を用いて復号する。そして、受信部407は、復号部408による復号により得られたパケットから、消去カウンタ値Rと第2の識別情報とを取得する。例えば、図1の5では、消去カウンタ値Rを含む暗号化パケットEPを復号したが、ノードN1の復号部408は、消去カウンタ値Rと乱数とを含む暗号化パケットEPを復号してもよい。そして、復号部408は、復号により得られたパケットから、消去カウンタ値Rと乱数とを取得してもよい。これにより、受信部407は、新たな連結カウンタ値JCの生成に使用される消去以前の消去カウンタ値Rを取得することができる。また、受信部407は、第1の識別情報との一致判断により受信したパケットの正当性判断に使用される第2の識別情報を取得することができる。なお、復号により得られたパケットは、例えば、RAM202などの記憶領域に記憶される。生成部409は、受信部407によって受信された消去カウンタ値Rに1加算した加算後の消去カウンタ値Rを上位桁とし、消去により送信回数が0になったことを示す消去後の送信カウンタ値Sを下位桁とする連結カウンタ値JCを生成する。生成部409は、具体的には、例えば、受信部407によって受信された消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とし、送信カウンタ値Sの初期値を下位桁とする連結カウンタ値JCを生成する。例えば、図1の5では、ノードN1の生成部409は、受信した消去カウンタ値Rに1を加算した加算後の消去カウンタ値R0x01と送信カウンタ値Sの初期値0x000000を連結した連結カウンタ値JC0x01000000を生成している。これにより、生成部409は、消去以前の連結カウンタ値JCより大きい値であって、以後送信するパケットに含むべき連結カウンタ値JCを生成することができる。また、この場合、生成部409は、第1の識別情報と復号部408によって復号された第2の識別情報との一致判断を行う。生成部409は、一致した場合に、復号部408によって復号された消去カウンタ値Rに1加算した加算後の消去カウンタ値Rを上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値Sを下位桁とする連結カウンタ値JCを生成する。生成部409は、具体的には、例えば、RAM202に保持されている乱数と受信部407によって取得された乱数との一致判断を行う。そして、生成部409は、一致すると判断された場合、受信部407によって取得された消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とし、送信カウンタ値Sの初期値を下位桁とする連結カウンタ値JCを生成する。例えば、図1の5では、乱数を用いた暗号化パケットEPの正当性の判断は行わなかったが、ノードN1の生成部409は、送信した暗号化パケットEPに含めた乱数と受信した乱数との一致判断から、暗号化パケットEPが不正パケットか否かを判断してもよい。これにより、生成部409は、消去以前の連結カウンタ値JCより大きい値であって、以後送信するパケットに含むべき連結カウンタ値JCを生成することができる。保存部410は、生成部409によって生成された連結カウンタ値JCを第1の記憶部401に保存する。保存部410は、具体的には、生成部409によって生成された連結カウンタ値JCを、消去された連結カウンタ値JCの代わりにRAM202に保存する。例えば、図1の5では、ノードN1の保存部410は、消去された連結カウンタ値の代わりに、生成した連結カウンタ値JC0x01000000を保存している。第2の記憶部411は、消去カウンタ値Rを記憶する。第2の記憶部411としては、具体的には、例えば、不揮発性の記憶装置が採用される。第2の記憶部411とは、例えば、上述したフラッシュメモリ203である。例えば、図1では、連結カウンタ値JCのみが保持されているが、ノードN1の第2の記憶部411は、消去カウンタ値Rを連結カウンタ値JCとは別に保持していてもよい。これにより、第2の記憶部411は、自ノードNに電力が供給されない状態であっても、消去カウンタ値Rを記憶しておくことができる。抽出部412は、検出部406によって消去が検出された場合、第2の記憶部411から消去カウンタ値Rを抽出する。抽出部412は、具体的には、例えば、検出部406によって消去が検出された場合、フラッシュメモリ203から消去カウンタ値Rを読み出す。例えば、図1では、他ノードNから消去カウンタ値Rを取得したが、ノードN1の抽出部412は、自ノードN内のフラッシュメモリ203から、消去カウンタ値Rを抽出してもよい。これにより、抽出部412は、消去以前の消去カウンタ値Rを抽出することができる。なお、抽出された消去カウンタ値Rは、例えば、RAM202などの記憶領域に記憶される。次に、第2の復旧方法について説明する。第2の復旧方法は、取得要求ではなく、消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rの取得を要求する更新要求を送信することにより、連結カウンタ値JCを復旧する方法である。第2の復旧方法は、送信部403と、暗号化部404と、乱数生成部405と、受信部407と、復号部408と、生成部409と、保存部410と、によって実行される。具体的には、送信部403は、検出部406によって消去が検出された場合、消去カウンタ値Rの更新要求をアドホックネットワークに配信する。ここで、更新要求とは、他ノードNに、自ノードNが過去に送信した送信カウンタ値Sを示す受信カウンタ値RCから、消去カウンタ値Rを抽出させる要求である。また、更新要求とは、他ノードNに、抽出させた消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを自ノードNへ送信させる要求である。そして、送信部403は、具体的には、例えば、更新要求を含むパケットを生成する。そして、送信部403は、生成したパケットを、他ノードNに送信する。ここで、パケットには、送信元である自ノードNを示す識別子が含まれてもよい。例えば、図1の2では、取得要求を含むパケットが生成されたが、ノードN1の送信部403は、取得要求ではなく更新要求を含むパケットを生成してもよい。そして、図1の2では、暗号化パケットEPがノードN2に送信されたが、ノードN1の送信部403は、更新要求を含む暗号化されないパケットをノードN2に送信してもよい。これにより、送信部403は、消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを更新要求元のノードNへ送信するトリガを他ノードNに与えることができる。ここで、通信の安全性を担保するために、送信部403によって送信されるパケットは、暗号化されていてもよい。また、送信部403によって送信されるパケットは、さらに一時的な識別情報が含まれた上で、暗号化されていてもよい。まず、送信部403によって送信されるパケットが暗号化されている場合について説明する。この場合、暗号化部404は、自ノードNおよび他ノードNが有する共通鍵を用いて、更新要求を暗号化する。暗号化部404は、具体的には、例えば、送信部403によって生成された更新要求を含むパケットを、固定鍵またはアクセス鍵AKを用いて暗号化する。例えば、図1の2では、取得要求を含むパケットが暗号化されたが、ノードN1の暗号化部404は、更新要求と乱数を含むパケットを暗号化してもよい。そして、送信部403は、暗号化部404によって暗号化された更新要求をアドホックネットワークに配信する。送信部403は、具体的には、例えば、暗号化部404による暗号化により得られた更新要求を含む暗号化パケットEPを、他ノードNに送信する。なお、送信部403は、暗号化パケットEPを、近隣ノードNにマルチキャスト送信してもよいし、他ノードNにユニキャスト送信してもよい。例えば、図1の2では、取得要求を含む暗号化パケットEPが送信されたが、ノードN1の送信部403は、更新要求を含む暗号化パケットEPをノードN2に送信してもよい。これにより、送信部403は、消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを更新要求元のノードNへ送信するトリガを他ノードNに与えることができる。また、送信部403は、暗号化により得られた暗号化パケットEPを送信するため、通信の安全性を担保することができる。また、この場合、受信部407は、送信部403によって更新要求が配信された結果、アドホックネットワークから消去カウンタ値Rに1加算された加算後の消去カウンタ値Rを受信する。受信部407は、具体的には、例えば、送信部403によって更新要求が配信された結果、加算後の消去カウンタ値Rを含む暗号化パケットEPを受信する。ここで、暗号化パケットEP内の暗号化されない部分例えば、暗号化パケットEPのヘッダ部分に、送信元である他ノードNを示す識別子が含まれてもよい。なお、受信された暗号化パケットEPは、例えば、RAM202などの記憶領域に記憶される。例えば、図1の4では、消去カウンタ値R0x00を含む暗号化パケットEPが受信されたが、ノードN1の受信部407は、加算後の消去カウンタ値R0x01を含む暗号化パケットEPを受信してもよい。また、この場合、復号部408は、具体的には、例えば、受信部407によって受信された加算後の消去カウンタ値Rを含む暗号化パケットEPを、共通鍵を用いて復号する。そして、受信部407は、復号部408による復号により得られたパケットから、消去カウンタ値Rを取得する。これにより、受信部407は、新たな連結カウンタ値JCの生成に使用される消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを取得することができる。なお、復号により得られたパケットは、例えば、RAM202などの記憶領域に記憶される。例えば、図1の4では、消去カウンタ値R0x00を含む暗号化パケットEPを復号したが、ノードN1の復号部408は、加算後の消去カウンタ値R0x01を含む暗号化パケットEPを復号してもよい。そして、ノードN1の受信部407は、復号したパケット内の加算後の消去カウンタ値Rを取得する。また、この場合、生成部409は、受信部407によって受信された加算後の消去カウンタ値Rを上位桁とし、消去により送信回数が0になったことを示す消去後の送信カウンタ値Sを下位桁とする連結カウンタ値JCを生成する。具体的には、例えば、生成部409は、受信部407によって取得された加算後の消去カウンタ値Rを上位桁とし、送信カウンタ値Sの初期値を下位桁とする連結カウンタ値JCを生成する。例えば、図1の5では、受信した消去カウンタ値R0x00に1を加算して得た加算後の消去カウンタ値R0x01を用いて連結カウンタ値を生成したが、ノードN1の生成部409は、受信した加算後の消去カウンタ値R0x01を用いて連結カウンタ値を生成してもよい。これにより、生成部409は、消去以前の連結カウンタ値JCより大きい値であって、以後送信するパケットに含むべき連結カウンタ値JCを生成することができる。なお、生成された連結カウンタ値JCは、例えば、RAM202などの記憶領域に記憶される。この場合、保存部410は、生成部409によって生成された連結カウンタ値JCを第1の記憶部401に保存する。保存部410は、具体的には、生成部409によって生成された連結カウンタ値JCを、消去された連結カウンタ値JCの代わりにRAM202に保存する。上述のように、送信部403によって送信されるパケットは、暗号化されていてもよいが、さらに一時的な識別情報を含んでもよい。次に、送信部403によって送信されるパケットが一時的な識別情報を含んだ上で、暗号化されている場合について説明する。この場合、送信部403は、乱数生成部405によって生成された一時的な識別情報になる乱数と更新要求とを含むパケットを生成する。例えば、図1の2では、取得要求を含むパケットが生成されたが、ノードN1の送信部403は、乱数と更新要求とを含むパケットを生成してもよい。そして、暗号化部404は、自ノードNおよび他ノードNが有する共通鍵を用いて、自ノードN固有の第1の識別情報を含む更新要求を暗号化する。暗号化部404は、具体的には、例えば、送信部403によって生成された更新要求と乱数とを含むパケットを、固定鍵またはアクセス鍵AKを用いて暗号化する。例えば、図1の2では、取得要求を含むパケットが暗号化されたが、ノードN1の暗号化部404は、乱数と更新要求を含むパケットを暗号化してもよい。そして、送信部403は、暗号化部404による暗号化により得られた暗号化パケットEPを他ノードNに送信する。例えば、図1の2では、取得要求を含む暗号化パケットEPが送信されたが、ノードN1の送信部403は、乱数と更新要求を含む暗号化パケットEPを送信してもよい。これにより、送信部403は、消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを更新要求元のノードNへ送信するトリガを他ノードNに与えることができる。また、送信部403は、暗号化により得られた暗号化パケットEPを送信するため、通信の安全性を担保することができる。また、送信部403は、送信するパケットに一時的な識別情報を含むことにより、通信の安全性を担保することができる。また、この場合、受信部407は、共通鍵を用いて暗号化された加算後の消去カウンタ値Rと共通鍵を用いて暗号化された第2の識別情報とを、アドホックネットワークから受信する。具体的には、例えば、受信部407は、送信部403によって更新要求が配信された結果、固定鍵を用いて暗号化された加算後の消去カウンタ値Rと乱数とを含む暗号化パケットEPを受信する。ここで、暗号化パケットEP内の暗号化されない部分例えば、暗号化パケットEPのヘッダ部分に、送信元である他ノードNを示す識別子が含まれてもよい。例えば、図1の5では、消去カウンタ値R0x00を含む暗号化パケットEPが受信されたが、ノードN1の受信部407は、加算後の消去カウンタ値R0x01と乱数を含む暗号化パケットEPを受信してもよい。なお、受信された暗号化パケットEPは、例えば、RAM202などの記憶領域に記憶される。また、この場合、復号部408は、具体的には、例えば、受信部407によって受信された加算後の消去カウンタ値Rと第2の識別情報を含む暗号化パケットEPを、共通鍵を用いて復号する。そして、受信部407は、復号部408による復号により得られたパケットから、加算後の消去カウンタ値Rと第2の識別情報とを取得する。例えば、図1の5では、消去カウンタ値Rを含む暗号化パケットEPが復号されたが、ノードN1の復号部408は、加算後の消去カウンタ値Rと乱数とを含む暗号化パケットEPを復号してもよい。そして、復号部408は、復号により得られたパケットから、加算後の消去カウンタ値R0x01と乱数とを取得してもよい。これにより、受信部407は、新たな連結カウンタ値JCの生成に使用される消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを取得することができる。また、受信部407は、第1の識別情報との一致判断により受信したパケットの正当性判断に使用される第2の識別情報を取得することができる。なお、復号により得られたパケットは、例えば、RAM202などの記憶領域に記憶される。また、この場合、生成部409は、第1の識別情報と復号部408によって復号された第2の識別情報との一致判断を行う。そして、生成部409は、一致した場合に、復号部408によって復号された加算後の消去カウンタ値Rを上位桁とし、消去により送信回数が0になったことを示す消去後の送信カウンタ値Sを下位桁とする連結カウンタ値JCを生成する。また、この場合、生成部409は、具体的には、例えば、RAM202に保持されている乱数と受信部407によって取得された乱数との一致判断を行う。そして、生成部409は、一致すると判断された場合、受信部407によって受信された加算後の消去カウンタ値Rを上位桁とし、送信カウンタ値Sの初期値を下位桁とする連結カウンタ値JCを生成する。例えば、図1の5では、乱数を用いた暗号化パケットEPの正当性の判断を行わなかったが、ノードN1の生成部409は、受信した暗号化パケットEPに含まれている乱数と保持しておいた乱数との一致判断を行ってもよい。そして、生成部409は、一致した場合、暗号化パケットEPが正規パケットと判断して、受信した消去カウンタ値R0x01と送信カウンタ値Sの初期値0x000000を連結した連結カウンタ値JC0x01000000を生成する。これにより、生成部409は、消去以前の連結カウンタ値JCより大きい値であって、以後送信するパケットに含むべき連結カウンタ値JCを生成することができる。なお、生成された連結カウンタ値JCは、例えば、RAM202などの記憶領域に記憶される。この場合、保存部410は、生成部409によって生成された連結カウンタ値JCを第1の記憶部401に保存する。保存部410は、具体的には、生成部409によって生成された連結カウンタ値JCを、消去された連結カウンタ値JCの代わりにRAM202に保存する。次に、第3の復旧方法について説明する。第3の復旧方法は、消去カウンタ値Rを揮発性メモリではなく不揮発性の第2の記憶部411に保存しておくことにより、消去カウンタ値Rを読み出して連結カウンタ値JCを復旧する方法である。第3の復旧方法は、生成部409と、保存部410と、第2の記憶部411と、抽出部412と、により実行される。抽出部412は、具体的には、例えば、検出部406によって消去が検出された場合、第2の記憶部411から消去カウンタ値Rを抽出する。抽出部412は、具体的には、例えば、検出部406によって消去が検出された場合、フラッシュメモリ203から消去カウンタ値Rを読み出す。例えば、図1では、他ノードNから消去カウンタ値Rを取得したが、ノードN1の抽出部412は、自ノードN内のフラッシュメモリ203から、消去カウンタ値Rを抽出してもよい。これにより、抽出部412は、消去以前の消去カウンタ値Rを抽出することができる。なお、抽出された消去カウンタ値Rは、例えば、RAM202などの記憶領域に記憶される。この場合、生成部409は、抽出部412によって抽出された消去カウンタ値Rに1加算した加算後の消去カウンタ値Rを上位桁とし消去により送信回数が0になったことを示す消去後の送信カウンタ値Sを下位桁とする連結カウンタ値JCを生成する。具体的には、例えば、生成部409は、抽出部412によって抽出された消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とし、送信カウンタ値Sの初期値を下位桁とする連結カウンタ値JCを生成する。例えば、ノードN1の生成部409は、図1の5で、他ノードNから受信した消去カウンタ値Rではなく、抽出した消去カウンタ値R0x00に1を加算する。そして、生成部409は、加算後の消去カウンタ値R0x01と送信カウンタ値Sの初期値0x000000を連結した連結カウンタ値JC0x01000000を生成する。これにより、生成部409は、消去以前の連結カウンタ値JCより大きい値であって、以後送信するパケットに含むべき連結カウンタ値JCを生成することができる。なお、生成された連結カウンタ値JCは、例えば、RAM202などの記憶領域に記憶される。また、この場合、保存部410は、生成部409によって生成された連結カウンタ値JCを第1の記憶部401に保存するとともに、第2の記憶部411に記憶されている消去カウンタ値Rに対し加算後の消去カウンタ値Rを上書き保存する。例えば、図1の5で、ノードN1の保存部410は、消去された連結カウンタ値の代わりに、生成した連結カウンタ値JC0x01000000を保存してもよい。これにより、保存部410は、以後送信するパケットに含むべき連結カウンタ値JCを保存することができる。また、保存部410は、フラッシュメモリ203に保持されている消去カウンタ値Rを、最新の消去カウンタ値Rに更新することができる。また、受信部407は、上述した暗号化部404による暗号化または復号部408による復号に使用されるアクセス鍵AKを、他ノードNから受信する。このとき、アクセス鍵AKは、他ノードNにより一定時間ごとに更新されてノードNに送信される。そして、更新後には、更新前のアクセス鍵AKを用いて暗号化された暗号化パケットEPは、不正パケットと判断されるようになる。そのため、攻撃者がアクセス鍵AKを解析しても、一定時間経過後には当該アクセス鍵AKを使用した通信が不可能になり、通信の安全性を担保することができる。この場合、受信部407は、アドホックネットワーク内の近隣ノードNが有する第1の共通鍵を用いて暗号化された近隣ノードNが有する第2の共通鍵を、近隣ノードNから受信する。ここで、第1の共通鍵とは、上述した固定鍵である。第2の共通鍵とは、上述したアクセス鍵AKである。具体的には、例えば、受信部407は、固定鍵を用いて暗号化されたアクセス鍵AKを含む暗号化パケットEPを受信する。例えば、図1で、ノードN1の受信部407は、ノードN2からアクセス鍵AK2を含む暗号化パケットEPを受信してもよい。これにより、受信部407は、近隣ノードNへパケットを送信する際に、パケットの暗号化に使用するアクセス鍵AKを含む暗号化パケットEPを受信することができる。なお、受信された暗号化パケットEPは、例えば、RAM202などの記憶領域に記憶される。また、この場合、復号部408は、受信部407によって受信された暗号化された第2の共通鍵を、第1の共通鍵を用いて復号する。復号部408は、具体的には、例えば、アクセス鍵AKを含む暗号化パケットEPを固定鍵を用いて復号する。そして、復号部408は、復号により得られたパケットからアクセス鍵AKを取得する。例えば、図1で、ノードN1の復号部408は、アクセス鍵AK2を含む暗号化パケットEPを復号してもよい。そして、ノードN1の復号部408は、アクセス鍵AK2を取得してもよい。これにより、復号部408は、近隣ノードNへパケットを送信する際に、パケットの暗号化に使用するアクセス鍵AKを取得することができる。なお、復号により得られたパケットは、例えば、RAM202などの記憶領域に記憶される。なお、取得されたアクセス鍵AKは、送信元を示す識別子と関連付けてノードDB300に記憶される。このとき、送信元を示す識別子と関連付けてノードDB300にアクセス鍵AKが保持されている場合、保持されているアクセス鍵AKが取得されたアクセス鍵AKで更新される。また、送信元を示す識別子と関連付けてノードDB300にアクセス鍵AKが保持されていない場合、送信元を示す識別子と取得されたアクセス鍵AKとを関連付けたレコードがノードDB300に追加される。図5は、ノードNの受信側としての機能的構成例を示す機能ブロック図である。図5に示すように、ノードNは、第1の受信部501と、第1の保存部502と、第2の受信部503と、判断部504と、第2の保存部505と、データ処理部506と、第3の受信部507と、抽出部508と、送信部509と、を備える。第1の受信部501~データ処理部506は、具体的には、例えば、図2に示したフラッシュメモリ203などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F204により、その機能を実現する。第1の受信部501は、他ノードNでの消去回数を示す消去カウンタ値Rを上位桁とし他ノードNからの送信回数を示す送信カウンタ値Sを下位桁とする第1の連結カウンタ値JCを、他ノードNから受信する。具体的には、例えば、第1の受信部501は、連結カウンタ値JCを含むパケットを受信する。そして、第1の受信部501は、受信したパケットから連結カウンタ値JCを取得する。これにより、第1の受信部501は、以後に受信するパケットの正当性の判断に使用する受信カウンタ値RCになる連結カウンタ値JCを取得することができる。また、第1の受信部501によって受信されるパケットは、暗号化により得られた暗号化パケットEPであってもよい。このとき、第1の受信部501は、暗号化パケットEPを固定鍵FKまたはアクセス鍵AKを用いて復号する。例えば、ノードN2の第1の受信部501は、図1でノードN2に保持されている受信カウンタ値RCになる連結カウンタ値JCを含む暗号化パケットEPを、過去に受信している。第1の保存部502は、第1の受信部501によって受信された連結カウンタ値JCを記憶装置に保存する。ここで、記憶装置とは、例えば、上述したRAM202である。具体的には、例えば、第1の保存部502は、第1の受信部501によって取得された連結カウンタ値JCを、受信カウンタ値RCとしてRAM202に保存する。例えば、図1では、ノードN2の第1の保存部502は、過去にノードN1から受信した暗号化パケットEPを復号して抽出した連結カウンタ値JC0x00001230を、受信カウンタ値RCとして保持している。これにより、第1の保存部502は、以後に受信するパケットの正当性の判断に使用する連結カウンタ値JCを、以後にパケットが受信されるまで受信カウンタ値RCとしてRAM202に保持しておくことができる。第2の受信部503は、第2の連結カウンタ値JCを他ノードNから受信する。具体的には、例えば、第2の受信部503は、第1の受信部501によってパケットが受信された後に、連結カウンタ値JCを含むパケットを受信する。そして、第2の受信部503は、受信したパケットから連結カウンタ値JCを取得する。なお、受信されたパケットは、例えば、RAM202などの記憶領域に記憶される。例えば、図1の9では、暗号化パケットEPを受信しているが、ノードN2の第2の受信部503は、連結カウンタ値JC0x01000002を含む暗号化されないパケットを受信してもよい。これにより、第2の受信部503は、受信したパケットの正当性の判断に使用される連結カウンタ値JCを取得することができる。また、第2の受信部503によって受信されるパケットは、暗号化により得られた暗号化パケットEPであってもよい。このとき、第2の受信部503は、暗号化パケットEPを固定鍵FKまたはアクセス鍵AKを用いて復号する。例えば、図1の9では、ノードN2の第2の受信部503は、連結カウンタ値JC0x01000002を含む暗号化パケットEPを受信している。そして、第2の受信部503は、暗号化パケットEPを固定鍵を用いて復号している。判断部504は、第2の受信部503によって受信された第2の連結カウンタ値JCが第1の連結カウンタ値JCよりも大きいか否かを判断する。ここで、第1の連結カウンタ値JCとは、上述した受信カウンタ値RCである。具体的には、例えば、判断部504は、第2の受信部503によって取得された連結カウンタ値JCが、RAM202に保持されている受信カウンタ値RCよりも大きいか否かを判断する。そして、判断部504は、判断結果から、第2の受信部503によって受信されたパケットが不正パケットであるか否かを判断する。なお、判断結果は、例えば、RAM202などの記憶領域に記憶される。ここで、送信元のノードNでは、送信ごとに連結カウンタ値JCに1を加算し、連結カウンタ値JCの消去後には消去前の連結カウンタ値より大きい値になる新たな連結カウンタ値を生成している。そのため、ノードNが、ある送信元のノードNからの正規パケットを受信し続けている限り、今回受信したパケットに含まれる連結カウンタ値JCは、前回受信したパケットに含まれる連結カウンタ値JCすなわち、受信カウンタ値RCより大きくなる。一方で、ノードNが再送攻撃による不正パケットを受信した場合、再送攻撃では過去に送信されたパケットをそのまま送信しているため、ノードNが今回受信したパケットに含まれる連結カウンタ値JCは、受信カウンタ値RC以下となる。そのため、判断部504は、第2の受信部503によって取得された連結カウンタ値JCが、RAM202に保持されている受信カウンタ値RCよりも大きい場合、第2の受信部503によって受信されたパケットを正規パケットと判断する。一方、判断部504は、第2の受信部503によって取得された連結カウンタ値JCが、RAM202に保持されている受信カウンタ値RC以下の場合、第2の受信部503によって受信されたパケットを不正パケットと判断する。例えば、図1の9では、ノードN2の判断部504は、受信カウンタ値RC0x00005678と、取得した連結カウンタ値JC0x01000002と、の大小比較を行っている。そして、ノードN2の判断部504は、連結カウンタ値JCが受信カウンタ値RCよりも大きいため、受信した暗号化パケットEPは正規パケットであると判断している。これにより、判断部504は、第2の受信部503によって受信されたパケットが、不正パケットであるか否かを判断することができる。第2の保存部505は、判断部504によって大きいと判断された場合、第1の連結カウンタ値JCに第2の連結カウンタ値JCを上書保存する。具体的には、第2の保存部505は、判断部504によって大きいと判断された場合、RAM202に保持されている受信カウンタ値RCに、第2の受信部503によって取得された連結カウンタ値JCを上書き保存する。例えば、図1の9では、ノードN2の第2の保存部505は、受信カウンタ値RC0x00005678を、取得した連結カウンタ値JC0x01000002で更新している。これにより、第2の保存部505は、受信カウンタ値RCを、最新の受信カウンタ値RCに更新することができる。データ処理部506は、判断部504によって大きくないと判断された場合、第2の連結カウンタ値JCとともに受信されたデータを廃棄する。具体的には、例えば、データ処理部506は、判断部504によって大きくないと判断され、第2の受信部503によって受信されたパケットが不正パケットであると判断された場合、不正パケットの内容が処理要求であっても処理を実行しない。また、データ処理部506は、不正パケットの内容が転送要求であってもマルチホップ通信せずに廃棄する。例えば、図1の9で、ノードN2のデータ処理部506は、不正パケットと判断された場合、受信した暗号化パケットEPを廃棄する。これにより、データ処理部506は、不正パケットが他ノードNへ転送されることを防止でき、また、不正パケットの内容を実行することによるノードNの処理負担を軽減できる。また、データ処理部506は、判断部504によって大きいと判断された場合、第2の連結カウンタ値JCとともに受信されたデータを処理する。具体的には、例えば、データ処理部506は、判断部504によって大きいと判断され、第2の受信部503によって受信されたパケットが正規パケットであると判断された場合、正規パケットの内容が処理要求であれば、処理要求に従って処理を行う。また、データ処理部506は、正規パケットの内容が転送要求であれば、マルチホップ通信により他ノードNへ正規パケットを転送する。これにより、データ処理部506は、正規パケットにはパケットの内容に応じた処理を行うことができる。第3の受信部507は、消去カウンタ値Rについての取得要求や更新要求を受信する。まず、第3の受信部507が取得要求を受信する場合について説明する。ここで、取得要求とは、他ノードNに、自ノードNが過去に送信した送信カウンタ値Sを示す他ノードNが保持している受信カウンタ値RCから消去カウンタ値Rを抽出させて、抽出させた消去カウンタ値Rを自ノードNへ送信させる要求である。この場合、第3の受信部507は、他ノードNから消去カウンタ値Rの取得要求を受信する。具体的には、例えば、第3の受信部507は、他ノードNから、取得要求を含むパケットを受信する。例えば、図1の2では、暗号化パケットEPを受信しているが、ノードN2の第3の受信部507は、取得要求を含む暗号化されないパケットを受信してもよい。これにより、第3の受信部507は、RAM202に保持されている受信カウンタ値RCの中から、消去カウンタ値Rを抽出するトリガを発生させることができる。なお、受信されたパケットは、例えば、RAM202などの記憶領域に記憶される。また、第3の受信部507によって受信されるパケットは、暗号化により得られた暗号化パケットEPであってもよい。このとき、第3の受信部507は、暗号化パケットEPを固定鍵FKまたはアクセス鍵AKを用いて復号する。例えば、図1の9では、ノードN2の第3の受信部507は、取得要求を含む暗号化パケットEPを受信している。そして、第3の受信部507は、暗号化パケットEPを固定鍵を用いて復号している。また、この場合、抽出部508は、第3の受信部507によって取得要求が受信された場合、記憶装置に記憶されている連結カウンタ値JCの中の消去カウンタ値Rを抽出する。具体的には、例えば、抽出部508は、第3の受信部507によって取得要求が取得された場合、RAM202に保持されている受信カウンタ値RCの中から、消去カウンタ値Rを抽出する。例えば、図1の4では、ノードN2の抽出部508は、保持している受信カウンタ値RC0x00001230の中から、消去カウンタ値R0x00を抽出している。これにより、抽出部508は、他ノードNに送信する消去カウンタ値Rを抽出することができる。なお、抽出された消去カウンタ値Rは、例えば、RAM202などの記憶領域に記憶される。また、この場合、送信部509は、抽出部508によって抽出された消去カウンタ値Rを他ノードNに送信する。具体的には、送信部509は、抽出部508によって抽出された消去カウンタ値Rを含むパケットを生成する。そして、送信部509は、生成したパケットを他ノードNに送信する。なお、ここでは、送信部509は、生成したパケットを、他ノードNにユニキャスト送信している。なお、パケットの他ノードNへのユニキャスト送信は、送信部509がパケットを近隣ノードに配信し、宛先の他ノードN以外の近隣ノードNが受信したパケットを廃棄し、宛先になる他ノードNが受信したパケットを処理することで実現される。例えば、図1の4では、ノードN2の送信部509は、消去カウンタ値R0x00を含む暗号化パケットEPを送信している。これにより、送信部509は、他ノードNでの連結カウンタ値JCの生成に使用される消去カウンタ値Rを送信することができる。次に、第3の受信部507が更新要求を受信する場合について説明する。ここで、更新要求とは、他ノードNに、自ノードNが過去に送信した送信カウンタ値Sを示す受信カウンタ値RCから、消去カウンタ値Rを抽出させる要求である。また、更新要求とは、他ノードNに、抽出させた消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを自ノードNへ送信させる要求である。この場合、第3の受信部507は、他ノードNから消去カウンタ値Rの更新要求を受信する。具体的には、例えば、第3の受信部507は、他ノードNから、更新要求を含むパケットを受信する。なお、受信されたパケットは、例えば、RAM202などの記憶領域に記憶される。例えば、図1の2では、取得要求を含む暗号化パケットEPを受信しているが、ノードN2の第3の受信部507は、取得要求を含む暗号化されないパケットを受信してもよい。これにより、第3の受信部507は、RAM202に保持されている受信カウンタ値RCの中から、消去カウンタ値Rを抽出するトリガを発生させることができる。また、第3の受信部507によって受信されるパケットは、暗号化により得られた暗号化パケットEPであってもよい。このとき、第3の受信部507は、暗号化パケットEPを固定鍵FKまたはアクセス鍵AKを用いて復号する。例えば、図1の2では、ノードN2の第3の受信部507は、取得要求を含む暗号化パケットEPを受信している。そして、第3の受信部507は、暗号化パケットEPを固定鍵を用いて復号している。また、この場合、抽出部508は、第3の受信部507によって更新要求が受信された場合、記憶装置に記憶されている連結カウンタ値JCの中の消去カウンタ値Rを抽出する。ここで、記憶装置とは、RAM202である。具体的には、例えば、抽出部508は、第3の受信部507によって更新要求が取得された場合、RAM202に保持されている受信カウンタ値RCの中から、消去カウンタ値Rを抽出する。例えば、図1の4では、ノードN2の抽出部508は、保持している受信カウンタ値RC0x00001230の中から、消去カウンタ値R0x00を抽出している。これにより、抽出部508は、他ノードNに送信する消去カウンタ値Rを抽出することができる。なお、抽出された消去カウンタ値Rは、例えば、RAM202などの記憶領域に記憶される。また、この場合、送信部509は、抽出部508によって抽出された消去カウンタ値Rに1加算した加算後の消去カウンタ値Rを他ノードNに送信する。具体的には、送信部509は、抽出部508によって抽出された消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを含むパケットを生成する。そして、送信部509は、生成したパケットを他ノードNに送信する。なお、ここでは、送信部509は、生成したパケットを、他ノードNにユニキャスト送信している。例えば、図1の4では、ノードN2の送信部509は、生成したパケットをノードN1に送信している。これにより、送信部509は、他ノードNでの連結カウンタ値JCの生成に使用される加算後の消去カウンタ値Rを送信することができる。また、送信部403によって送信されるパケットは、暗号化されてもよい。このとき、送信部403は、パケットを固定鍵FKまたはアクセス鍵AKを用いて暗号化する。アクセス鍵AKを用いた暗号化通信次に、図6および図7を用いて、アクセス鍵AKを用いた暗号化通信の一例について説明する。図6は、アクセス鍵AKを用いた暗号化通信の一例を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。図6の例では、ノードN1は、ノードN2へ送信するパケットの暗号化に使用されるアクセス鍵AK2と、ノードN3へ送信するパケットの暗号化に使用されるアクセス鍵AK3と、を保持している。また、ノードN1は、連結カウンタ値JC0x00001230を保持している。ノードN2は、過去にノードN1から受信した暗号化パケットEPを復号して得られたパケットから抽出した連結カウンタ値JC0x00001230を、受信カウンタ値RCとして保持している。ノードN3は、過去にノードN1から受信した暗号化パケットEPを復号して得られたパケットから抽出した連結カウンタ値JC0x00001229を、受信カウンタ値RCとして保持している。ここでは、ノードN1からノードN2およびノードN3に、アクセス鍵AKを用いて暗号化された暗号化パケットEPが送信される場合を例に挙げて、アクセス鍵AKを用いた暗号化通信について説明する。11ノードN1は、ノードN2を宛先にするデータの送信イベントがあると、連結カウンタ値JC0x00001230に1を加算する。12次に、ノードN1は、ノードN2を宛先にするデータと、加算後の連結カウンタ値JC0x00001231と、を含むパケットを生成し、生成したパケットをアクセス鍵AK2を用いて暗号化する。そして、ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先になるノードN2に送信する。13ノードN2は、ノードN1から暗号化パケットEPを受信すると、受信した暗号化パケットEPを、アクセス鍵AK2を用いて復号する。そして、ノードN2は、復号により得られたパケットに含まれる連結カウンタ値JC0x00001231と、前回受信した連結カウンタ値JCを示す受信カウンタ値RC0x00001230と、の大小比較を行う。ここで、ノードN2は、復号により得られたパケットに含まれる連結カウンタ値JCが受信カウンタ値RCよりも大きいため、受信した暗号化パケットEPが正規パケットであると判断する。そして、ノードN2は、受信カウンタ値RC0x00001230を、復号により得られたパケットに含まれる連結カウンタ値JC0x00001231で更新する。14また、ノードN1は、ノードN3を宛先にするデータの送信イベントがあると、連結カウンタ値JC0x00001231に1を加算する。15次に、ノードN1は、ノードN3を宛先にするデータと、加算後の連結カウンタ値JC0x00001232と、を含むパケットを生成し、生成したパケットをアクセス鍵AK3を用いて暗号化する。そして、ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先になるノードN3に送信する。16ノードN3は、ノードN1から暗号化パケットEPを受信すると、受信した暗号化パケットEPを、アクセス鍵AK3を用いて復号する。そして、ノードN3は、復号により得られたパケットに含まれる連結カウンタ値JC0x00001232と、前回受信した連結カウンタ値JCを示す受信カウンタ値RC0x00001229と、の大小比較を行う。ここで、ノードN3は、復号により得られたパケットに含まれる連結カウンタ値JCが受信カウンタ値RCよりも大きいため、受信した暗号化パケットEPが正規パケットであると判断する。そして、ノードN3は、受信カウンタ値RC0x00001299を、復号により得られたパケットに含まれる連結カウンタ値JC0x00001232で更新する。アクセス鍵AKを用いた暗号化通信の詳細次に、図7を用いて、図6に示したアクセス鍵AKを用いた暗号化通信の詳細について説明する。図7は、アクセス鍵AKを用いた暗号化通信の詳細を示す説明図である。図7では、図6に示したノードN1とノードN2との間の暗号化通信の詳細について説明する。21ノードN1は、ノードN1のユーザからのノードN2を宛先にするデータの入力を受けると、ノードN2との暗号化通信を開始する。ここでは、ノードN1は、ユーザからのデータの入力をトリガにして暗号化通信を開始したが、ノードN1が自動的に発生させたデータ送信イベントをトリガにして暗号化通信を開始してもよい。22次に、ノードN1は、ノードN2を宛先にするデータの入力を受けると、連結カウンタ値JC0x00001230に1を加算する。23そして、ノードN1は、送信元を示す識別子N1と、ノードN2を宛先にするデータと、加算後の連結カウンタ値JC0x00001231と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。以下の説明においても、同様に、送信元を示す識別子はパケット内の暗号化されない部分に含まれる。また、パケット内の暗号化される部分に、さらに送信元を示す識別子を含んでもよい。24次に、ノードN1は、生成したパケット内のノードN2を宛先にするデータと加算後の連結カウンタ値JC0x00001231とをアクセス鍵AK2を用いて暗号化する。25そして、ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先になるノードN2に送信する。26ノードN2は、ノードN1から暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N1を取得し、受信した暗号化パケットEPをアクセス鍵AK2を用いて復号する。そして、ノードN2は、復号により得られたパケットから、ノードN2を宛先にするデータと連結カウンタ値JC0x00001231とを取得する。27次に、ノードN2は、取得したN1が示す送信元のノードN1に関連付けられた受信カウンタ値RCを、ノードDB300から抽出する。28そして、ノードN2は、取得した連結カウンタ値JC0x00001231と、抽出した受信カウンタ値RC0x00001230との大小比較を行う。ここで、ノードN2は、取得した連結カウンタ値JCが、抽出した受信カウンタ値RCよりも大きいため、受信した暗号化パケットEPが正規パケットであると判断する。29次に、ノードN2は、暗号化パケットEPが正規パケットであると判断されると、ノードDB300の受信カウンタ値RC0x00001230を連結カウンタ値JC0x00001231で更新する。そして、ノードN2は、暗号化パケットEPが正規パケットであると判断されると、正規パケットの内容が処理要求であれば、処理要求に従って処理を行う。また、データ処理部は、正規パケットの内容が転送要求であれば、マルチホップ通信により他ノードNへ正規パケットを転送する。これにより、ノードN2は、正規パケットには、パケットの内容に応じた処理を行うことができる。一方、ノードN2は、取得した連結カウンタ値JCが、抽出した受信カウンタ値RC以下である場合は、受信した暗号化パケットEPが不正パケットであると判断する。そして、ノードN2は、不正パケットであると判断されると、復号により得られたパケットを廃棄する。具体的には、ノードN2は、不正パケットの内容が処理要求であっても処理を実行せずに、復号により得られたパケットを廃棄する。また、ノードN2は、不正パケットの内容が転送要求であってもマルチホップ通信せずに、復号により得られたパケットを廃棄する。これにより、ノードN2は、不正パケットが他ノードNへ転送されることを防止でき、また、不正パケットの内容を実行することによるノードNの処理負担を軽減できる。そして、ノードN2は、通信の安全性を担保することができる。パケット送信処理の処理内容次に、図8を用いて、図6および図7に示した暗号化通信におけるパケット送信処理について説明する。パケット送信処理は、図6および図7に示したノードN1が実行する処理である。ここでは、例としてノードN1を実行主体として説明する。図8は、暗号化通信におけるパケット送信処理の詳細な処理手順を示すフローチャートである。まず、ノードN1は、他ノードNを宛先にするデータの送信イベントが発生したか否かを判定するステップS801。ここで、送信イベントが発生していない場合ステップS801:No、CPU201は、ステップS801に戻り、送信イベントの発生を待つ。一方、送信イベントが発生した場合ステップS801:Yes、ノードN1は、連結カウンタ値JCに1を加算するステップS802。次に、ノードN1は、送信元になる自ノードNを示す識別子と、他ノードNを宛先にするデータと、加算後の連結カウンタ値JCと、を含むパケットを生成するステップS803。そして、ノードN1は、データの宛先になるノードNの識別子に関連付けてノードDB300に保持されているアクセス鍵AKがあるか否かを判定するステップS804。ここで、アクセス鍵AKがある場合ステップS804:Yes、ノードN1は、生成したパケットを、アクセス鍵AKを用いて暗号化するステップS805。一方、アクセス鍵AKがない場合ステップS804:No、ノードN1は、生成したパケットを、固定鍵を用いて暗号化するステップS806。そして、ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先になるノードNに送信しステップS807、パケット送信処理を終了する。これにより、ノードNは、送信するパケットを暗号化して、通信の安全性を担保することができる。パケット受信処理の処理内容次に、図9を用いて、図6および図7に示した暗号化通信におけるパケット受信処理について説明する。パケット受信処理は、図6および図7に示したノードN2またはノードN3が実行する処理である。ここでは、例としてノードN2を実行主体として説明する。図9は、暗号化通信におけるパケット受信処理の詳細な処理手順を示すフローチャートである。まず、ノードN2は、暗号化パケットEPを受信したか否かを判定するステップS901。ここで、暗号化パケットEPを受信していない場合ステップS901:No、ノードN2は、ステップS901に戻り、暗号化パケットEPの受信を待つ。一方、暗号化パケットEPを受信した場合ステップS901:Yes、ノードN2は、暗号化パケットEP内の暗号化されない部分例えば、パケットのヘッダ部分から、送信元を示す識別子を取得するステップS902。次に、ノードN2は、自ノードNのアクセス鍵AKまたは固定鍵を用いて、受信した暗号化パケットEPを復号するステップS903。次に、ノードN2は、正常に復号できたか否かを判定するステップS904。ここで、正常に復号できない場合ステップS904:No、ノードN2は、受信した暗号化パケットEPが不正パケットであると判断して、暗号化パケットEPを廃棄しステップS907、パケット受信処理を終了する。一方、正常に復号できた場合ステップS904:Yes、ノードN2は、復号により得られたパケット内の連結カウンタ値JCが、送信元を示す識別子に関連付けてノードDB300に保持されている受信カウンタ値RCより大きいか否かを判定するステップS905。ここで、受信カウンタ値RC以下の場合ステップS905:No、ノードN2は、受信した暗号化パケットEPが不正パケットであるとして、暗号化パケットEPを廃棄しステップS907、パケット受信処理を終了する。一方、受信カウンタ値RCより大きい場合ステップS905:Yes、ノードN2は、受信した暗号化パケットEPが正規パケットであると判断する。そして、ノードN2は、送信元を示す識別子に関連付けてノードDB300に保持されている受信カウンタ値RCを、復号により得られたパケット内の連結カウンタ値JCに更新してステップS906、パケット受信処理を終了する。これにより、ノードNは、受信した暗号化パケットEPが不正パケットであるか否かを判断して、暗号化パケットEPが不正パケットと判断された場合、暗号化パケットEPを廃棄し、通信の安全性を担保する。連結カウンタ値JCが消去された場合の処理次に、連結カウンタ値JCが消去された場合について説明する。例えば、連結カウンタ値JCが消去された場合とは、停電によりノードNに電力が供給されず、RAM202に保持されている連結カウンタ値JCが消去された場合である。また、連結カウンタ値JCが消去された場合とは、ノードNのユーザからの操作によってRAM202の記憶内容が初期化された場合であってもよい。この場合、ノードNは、以後送信する暗号化パケットEPに含むべき連結カウンタ値JCが不明であるため、以後送信する暗号化パケットEPを他ノードNで正規パケットと判断させることができず、アドホックネットワークへ復帰することができない。以下では、新たな連結カウンタ値JCを生成してアドホックネットワークに復帰する際のノードNの動作例について説明する。ノードNの連結カウンタ値JCが消去された場合の動作例1まず、図10~図13を用いて、ノードNの連結カウンタ値JCが消去された場合の動作例1について説明する。図10~図13は、ノードNの連結カウンタ値JCが消去された場合の動作例1を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。図10の例では、ノードN1は、ノードN2から受信され、ノードN2へ送信するパケットの暗号化に使用されるアクセス鍵AK20x2222を保持している。また、ノードN1は、連結カウンタ値JC0x00001230を保持している。ノードN2は、過去にノードN1から受信した暗号化パケットEPを復号して得られたパケットから連結カウンタ値JCを抽出し、抽出した連結カウンタ値JC0x00001230を、受信カウンタ値RCとして保持している。図10において、停電によりノードN1に電力が供給されず、ノードN1が保持していた連結カウンタ値JC0x00001230およびアクセス鍵AK2が消去されてしまったとする。そのため、他ノードNに送信するパケットに含むべき連結カウンタ値JCが不明になり、ノードN1は、他ノードNにパケットを送信することができない。31ここで、ノードN1は、停電が回復し電力が供給されると、保持していた連結カウンタ値JCが消去されたことを検出する。32ノードN1は、連結カウンタ値JCが消去されたことを検出すると、一時的な識別情報になる乱数を生成する。図10の例では、ノードN1は、乱数として0x5819を生成する。このとき、ノードN1は、生成した乱数0x5819をRAM202に保持しておく。33ノードN1は、乱数を生成すると、送信元を示す識別子N1と、消去カウンタ値Rの取得要求を示す連結カウンタ値JCとして設定されている0x00000000と、生成した乱数0x5819と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。34ノードN1は、パケットを生成すると、生成したパケット内の連結カウンタ値JC0x00000000と乱数0x5819とを、固定鍵FKを用いて暗号化する。35そして、ノードN1は、暗号化により得られた暗号化パケットEPを、ノードN2を含む近隣ノードNに送信する。次に、図11に移る。36ノードN2は、35でノードN1から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N1を取得し、受信した暗号化パケットEPを固定鍵FKを用いて復号する。そして、ノードN2は、復号により得られたパケットから、連結カウンタ値JC0x00000000と乱数0x5819とを取得する。37ノードN2は、取得した連結カウンタ値JCが、消去カウンタ値Rの取得要求を示す連結カウンタ値JCとして設定されている0x00000000であることを検出する。そして、ノードN2は、取得した送信元を示す識別子N1に関連付けられた受信カウンタ値RCをノードDB300から抽出し、抽出した受信カウンタ値RCから消去カウンタ値R0x00を抽出する。38ノードN2は、消去カウンタ値Rを抽出すると、送信元を示す識別子N2と、抽出した消去カウンタ値R0x00と、取得した乱数0x5819と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。39ノードN2は、生成したパケット内の消去カウンタ値R0x00と乱数0x5819とを固定鍵FKを用いて暗号化する。40ノードN2は、暗号化により得られた暗号化パケットEPを、取得した識別子N1が示すノードN1に送信する。次に、図12に移る。41ノードN1は、40でノードN2から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N2を取得し、受信した暗号化パケットEPを、固定鍵FKを用いて復号する。そして、ノードN1は、復号により得られたパケットから、消去カウンタ値R0x00と乱数0x5819とを取得する。42ノードN1は、乱数を取得すると、取得した乱数と32でRAM202に保持しておいた乱数との一致判断を行う。ここで、ノードN1は、取得した乱数0x5819とRAM202に保持しておいた乱数0x5819とが一致するため、41で受信した暗号化パケットEPは正規パケットであると判断する。43ノードN1は、正規パケットであると判断されると、連結カウンタ値JCが消去される以前の消去カウンタ値Rを示す取得した消去カウンタ値R0x00に、1を加算する。そして、ノードN1は、加算後の消去カウンタ値R0x01と送信カウンタ値Sの初期値0x000000とを連結して、連結カウンタ値JC0x01000000を生成する。これにより、ノードN1は、消去された連結カウンタ値JCの代わりに、新たな連結カウンタ値JCを生成する。一方、ノードN1は、取得した乱数と32でRAM202に保持しておいた乱数とが一致しない場合は、41で受信した暗号化パケットEPは不正パケットであると判断する。そして、ノードN1は、不正パケットであると判断されると、復号により得られたパケットを廃棄することで、通信の安全性を担保する。次に、図13に移る。44ノードN1は、ノードN1のユーザからのノードN2を宛先にするデータの入力を受けると、ノードN2との暗号化通信を開始する。ここでは、ノードN1は、ユーザからのデータの入力をトリガにして暗号化通信を開始したが、ノードN1が自動的に発生させたデータ送信イベントをトリガにして暗号化通信を開始してもよい。45ノードN1は、ノードN2を宛先にするデータの入力を受けると、43で生成された新たな連結カウンタ値JC0x01000000に1を加算する。46ノードN1は、送信元を示す識別子N1と、ノードN2を宛先にするデータと、加算後の連結カウンタ値JC0x01000001と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。47ノードN1は、パケットを生成すると、生成したパケット内のノードN2を宛先にするデータと加算後の連結カウンタ値JC0x01000001とを固定鍵FKを用いて暗号化する。48ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先であるノードN2に送信する。49ノードN2は、ノードN1から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N1を取得し、受信した暗号化パケットEPを、固定鍵FKを用いて復号する。そして、ノードN2は、復号により得られたパケットから、ノードN2を宛先にするデータと連結カウンタ値JC0x01000001とを取得する。50ノードN2は、連結カウンタ値JC0x01000001を取得すると、取得した送信元を示す識別子N1に関連付けられた受信カウンタ値RCをノードDB300から抽出する。51そして、ノードN2は、取得した連結カウンタ値JC0x01000001と、抽出した受信カウンタ値RC0x00001230と、の大小比較を行う。ここで、ノードN2は、取得した連結カウンタ値JC0x01000001が、抽出した受信カウンタ値RC0x00001230よりも大きいため、受信した暗号化パケットEPが正規パケットであると判断する。52ノードN2は、正規パケットであると判断されると、ノードDB300において識別子N1に関連付けられた受信カウンタ値RC0x00001230を、取得した連結カウンタ値JC0x01000001で更新する。一方、ノードN2は、取得した連結カウンタ値JCが、抽出した受信カウンタ値RC以下である場合は、受信した暗号化パケットEPが不正パケットであると判断する。そして、ノードN2は、不正パケットであると判断されると、復号により得られたパケットを廃棄することで、通信の安全性を担保する。このように、ノードN1は、消去カウンタ値Rを上位桁とし、送信カウンタ値Sを下位桁として連結した連結カウンタ値JCを保持し、連結カウンタ値JCが消去されると、消去以前の消去カウンタ値Rを他ノードNから取得する。そして、ノードN1は、消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とする新たな連結カウンタ値JCを生成する。これにより、過去にノードN1により送信された暗号化パケットEPに含まれていた連結カウンタ値JCより、ノードN1により生成された新たな連結カウンタ値JCが大きい値になる。そのため、ノードN1は、他ノードNが保持している受信カウンタ値RCより大きい値になっている連結カウンタ値JCを、他ノードNに送信する暗号化パケットEPに含むことができる。これにより、ノードN2は、保持している受信カウンタ値RCより、ノードN1から受信した暗号化パケットEPに含まれる連結カウンタ値JCが大きいため、ノードN1から受信した暗号化パケットEPを正規パケットと判断することができる。そして、ノードN1は、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。また、ノードN1は、取得要求を含むパケットを、固定鍵FKを用いて暗号化するため、固定鍵FKを有さない攻撃者による要求パケットの解析を防止することができる。また、ノードN1は、取得要求を含むパケットに、近隣ノードNとの通信ごとに生成した一時的な識別情報になる乱数を含める。これにより、ノードN1は、自ノードNが送信した暗号化パケットEPに含めた乱数と受信した暗号化パケットEPに含まれる乱数との一致判断により、正規パケットか否かを通信ごとに判断することができる。ここで、通信ごとに異なる乱数が生成されるため、前回の取得要求に対する応答として近隣ノードNが送信した暗号化パケットEPを今回の取得要求に対する応答と偽って攻撃者が再送攻撃に使用しても、それぞれの暗号化パケットEPに含まれる乱数は不一致になる。そのため、ノードN1は、乱数の不一致から、今回の取得要求に対する応答として受信された暗号化パケットEPが再送攻撃による不正パケットと判断でき、通信の安全性を担保することができる。また、ノードN1は、一度使用した乱数に有効期間を設定しておくことで、今回の通信で近隣ノードNが応答した暗号化パケットEPを攻撃者が再送攻撃に利用した場合に、有効期間を過ぎていれば不正パケットと判断でき、通信の安全性を担保することができる。動作例1における連結カウンタ値生成処理の処理内容次に、図14を用いて、図10~図13に示した動作例1における連結カウンタ値生成処理の詳細な処理手順について説明する。連結カウンタ値生成処理は、図10~図13に示したノードN1が実行する処理である。ここでは、例としてノードN1を実行主体として説明する。図14は、動作例1における連結カウンタ値生成処理の詳細な処理手順を示すフローチャートである。まず、ノードN1は、連結カウンタ値JCの消去が検出されたか否かを判定するステップS1401。ここで、連結カウンタ値JCの消去が検出されていない場合ステップS1401:No、ノードN1は、ステップS1401に戻り、連結カウンタ値JCの消去が検出されるのを待つ。一方、連結カウンタ値JCの消去が検出された場合ステップS1401:Yes、ノードN1は、一時的な識別情報になる乱数を生成するステップS1402。次に、ノードN1は、送信元になる自ノードNを示す識別子と、生成した乱数と、送信カウンタ値Sの取得要求と、を含むパケットを生成するステップS1403。そして、ノードN1は、生成したパケットを固定鍵FKを用いて暗号化するステップS1404。次に、CPU201は、暗号化により得られた暗号化パケットEPを近隣ノードNに送信するステップS1405。そして、ノードN1は、取得要求に対する応答になる暗号化パケットEPを近隣ノードNから受信したか否かを判定するステップS1406。ここで、暗号化パケットEPを受信していない場合ステップS1406:No、ノードN1は、ステップS1406に戻り、暗号化パケットEPの受信を待つ。一方、暗号化パケットEPを受信した場合ステップS1406:Yes、ノードN1は、受信した暗号化パケットEPを固定鍵FKを用いて復号するステップS1407。そして、ノードN1は、復号により得られたパケットから乱数を抽出し、抽出した乱数が、ステップS1402で生成した乱数と一致するか否かを判定するステップS1408。ここで、一致する場合ステップS1408:Yes、ノードN1は、復号により得られたパケットから消去カウンタ値Rを抽出し、抽出した消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rと送信カウンタ値Sの初期値とを連結して連結カウンタ値JCを生成するステップS1409。そして、ノードN1は、生成した連結カウンタ値JCをRAM202に保存してステップS1410、連結カウンタ値生成処理を終了する。一方、一致しない場合ステップS1408:No、ノードN1は、受信した暗号化パケットEPが不正パケットであると判断して、復号により得られたパケットを廃棄しステップS1411、連結カウンタ値生成処理を終了する。これにより、ノードNは、連結カウンタ値JCが消去された場合であっても、消去された連結カウンタ値JCより大きい値の新たな連結カウンタ値JCを生成することができる。そして、ノードNは、送信するパケットが他ノードNに廃棄されないようになり、アドホックネットワークに復帰できる。また、ノードNは、取得要求を含むパケットを固定鍵FKを用いて暗号化するため、固定鍵FKを有さない攻撃者による要求パケットの解析を防止できる。また、ノードNは、取得要求を含むパケットに、近隣ノードNとの通信ごとに生成した一時的な識別情報になる乱数を含める。これにより、ノードNは、自ノードNが送信した暗号化パケットEPに含めた乱数と受信した暗号化パケットEPに含まれる乱数との一致判断により、正規パケットか否かを通信ごとに判断することができる。ここで、通信ごとに異なる乱数が生成されるため、前回の取得要求に対する応答として近隣ノードNが送信した暗号化パケットEPを今回の取得要求に対する応答と偽って攻撃者が再送攻撃に使用しても、それぞれの暗号化パケットEPに含まれる乱数は不一致になる。そのため、ノードNは、乱数の不一致から、今回の取得要求に対する応答として受信された暗号化パケットEPが再送攻撃による不正パケットと判断でき、通信の安全性を担保することができる。また、ノードNは、一度使用した乱数に有効期間を設定しておくことで、今回の通信で近隣ノードNが応答した暗号化パケットEPを攻撃者が再送攻撃に利用した場合に、有効期間を過ぎていれば不正パケットと判断でき、通信の安全性を担保することができる。ノードNの連結カウンタ値JCが消去された場合の動作例2次に、図15~図18を用いて、ノードNの連結カウンタ値JCが消去された場合の動作例2について説明する。図10~図13に示した動作例1では、消去カウンタ値Rの取得要求を含むパケットを、固定鍵FKを用いて暗号化したが、動作例2では、消去カウンタ値Rの取得要求を含むパケットをアクセス鍵AKを用いて暗号化する。これにより、暗号化により得られた消去カウンタ値Rの取得要求を含む暗号化パケットEPが、固定鍵を用いて暗号化する場合よりセキュアになり、通信の安全性を担保することができる。図15~図18は、ノードNの連結カウンタ値JCが消去された場合の動作例2を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。図15の例では、また、ノードN1は、ノードN2から受信され、ノードN2へ送信するパケットの暗号化に使用されるアクセス鍵AK20x2222を保持している。また、ノードN1は、連結カウンタ値JC0x00001230を保持している。ノードN2は、過去にノードN1から受信した暗号化パケットEPを復号して得られたパケットから連結カウンタ値JCを抽出し、抽出した連結カウンタ値JC0x00001230を受信カウンタ値RCとして保持している。図15において、停電によりノードN1に電力が供給されず、ノードN1が保持していた連結カウンタ値JC0x00001230およびアクセス鍵AK2が消去されてしまったとする。そのため、他ノードNに送信するパケットに含むべき連結カウンタ値JCが不明になり、ノードN1は、他ノードNにパケットを送信することができない。61ここで、ノードN1は、停電が回復し電力が供給されると、保持していた連結カウンタ値JCが消去されたことを検出する。このとき、ノードN1は、近隣ノードNからアクセス鍵AKが送信されてくるまで待機する。62一方、ノードN2は、一定時間ごとにノードN2自体が自動的に発生させるアクセス鍵AK生成イベントをトリガにして、新たなアクセス鍵AK20x6666を生成する。63ノードN2は、アクセス鍵AK2を生成すると、送信元を示す識別子N2と、ノードN2の連結カウンタ値JC0x00002222と、生成したアクセス鍵AK20x6666と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。64ノードN2は、パケットを生成すると、生成したパケット内の連結カウンタ値JC0x00002222とアクセス鍵AK20x6666とを、固定鍵FKを用いて暗号化する。65そして、ノードN2は、暗号化により得られた暗号化パケットEPを、ノードN1を含む近隣ノードNに送信する。66ノードN1は、ノードN2から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N2を取得し、受信した暗号化パケットEPを固定鍵FKを用いて復号する。そして、ノードN1は、復号により得られたパケットから、連結カウンタ値JC0x00002222とアクセス鍵AK20x6666とを取得する。このとき、停電によりノードDB300の記憶内容が消去されており、ノードDB300にノードN2についてのレコードが存在しない。67そのため、ノードN1は、取得した連結カウンタ値JC0x00002222とアクセス鍵AK20x6666とを、取得した識別子N2に関連付けたレコードを、ノードDB300に追加しておく。68ノードN1は、ノードDB300にレコードを追加すると、一時的な識別情報になる乱数を生成する。図15の例では、ノードN1は、乱数として0x5819を生成する。このとき、ノードN1は、生成した乱数0x5819をRAM202に保持しておく。69ノードN1は、乱数を生成すると、送信元を示す識別子N1と、消去カウンタ値Rの取得要求を示す連結カウンタ値JCとして設定されている0x00000000と、生成した乱数0x5819と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。70ノードN1は、パケットを生成すると、生成したパケット内の連結カウンタ値JC0x00000000と乱数0x5819とを、アクセス鍵AK2を用いて暗号化する。71そして、ノードN1は、暗号化により得られた暗号化パケットEPをノードN2に送信する。次に、図16に移る。72ノードN2は、71でノードN1から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N1を取得し、受信した暗号化パケットEPをアクセス鍵AK2を用いて復号する。そして、ノードN2は、復号により得られたパケットから、連結カウンタ値JC0x00000000と乱数0x5819とを取得する。73ノードN2は、取得した連結カウンタ値JCが、消去カウンタ値Rの取得要求を示す連結カウンタ値JCとして設定されている0x00000000であることを検出する。そして、ノードN2は、取得した送信元を示す識別子N1に関連付けられた受信カウンタ値RCをノードDB300から抽出し、抽出した受信カウンタ値RCから消去カウンタ値R0x00を抽出する。74ノードN2は、消去カウンタ値Rを抽出すると、送信元を示す識別子N2と、抽出した消去カウンタ値R0x00と、取得した乱数0x5819と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。75ノードN2は、生成したパケット内の消去カウンタ値R0x00と乱数0x5819とを固定鍵FKを用いて暗号化する。76ノードN2は、暗号化により得られた暗号化パケットEPを、取得した識別子N1が示すノードN1に送信する。次に、図17に移る。77ノードN1は、76でノードN2から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N2を取得し、受信した暗号化パケットEPを固定鍵FKを用いて復号する。そして、ノードN1は、復号により得られたパケットから、消去カウンタ値R0x00と乱数0x5819とを取得する。78ノードN1は、乱数を取得すると、取得した乱数と68でRAM202に保持しておいた乱数との一致判断を行う。ここで、ノードN1は、取得した乱数0x5819とRAM202に保持しておいた乱数0x5819とが一致するため、77で受信した暗号化パケットEPは正規パケットであると判断する。79ノードN1は、正規パケットであると判断されると、連結カウンタ値JCが消去される以前の消去カウンタ値Rを示す取得した消去カウンタ値R0x00に、1を加算する。そして、ノードN1は、加算後の消去カウンタ値R0x01と送信カウンタ値Sの初期値0x000000とを連結して、連結カウンタ値JC0x01000000を生成する。これにより、ノードN1は、消去された連結カウンタ値JCの代わりに、新たな連結カウンタ値JCを生成する。一方、ノードN1は、取得した乱数と68でRAM202に保持しておいた乱数とが一致しない場合は、77で受信した暗号化パケットEPは不正パケットであると判断する。そして、ノードN1は、不正パケットであると判断されると、復号により得られたパケットを廃棄することで、通信の安全性を担保する。次に、図18に移る。80ノードN1は、ノードN1のユーザからのノードN2を宛先にするデータの入力を受けると、ノードN2との暗号化通信を開始する。ここでは、ノードN1は、ユーザからのデータの入力をトリガにして暗号化通信を開始したが、ノードN1が自動的に発生させたデータ送信イベントをトリガにして暗号化通信を開始してもよい。81ノードN1は、ノードN2を宛先にするデータの入力を受けると、79で生成された新たな連結カウンタ値JC0x01000000に1を加算する。82ノードN1は、送信元を示す識別子N1と、ノードN2を宛先にするデータと、加算後の連結カウンタ値JC0x01000001と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。83ノードN1は、パケットを生成すると、データの宛先であるノードN2を示す識別子N2に関連付けられたアクセス鍵AK20x6666を、ノードDB300から取得する。そして、ノードN1は、生成したパケット内のノードN2を宛先にするデータと加算後の連結カウンタ値JC0x01000001とを、アクセス鍵AK2を用いて暗号化する。84ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先であるノードN2に送信する。85ノードN2は、ノードN1から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N1を取得し、受信した暗号化パケットEPをアクセス鍵AK2を用いて復号する。そして、ノードN2は、復号により得られたパケットから、ノードN2を宛先にするデータと連結カウンタ値JC0x01000001とを取得する。86ノードN2は、連結カウンタ値JC0x01000001を取得すると、取得した送信元を示す識別子N1に関連付けられた受信カウンタ値RCをノードDB300から抽出する。87そして、ノードN2は、取得した連結カウンタ値JC0x01000001と、抽出した受信カウンタ値RC0x00001230と、の大小比較を行う。ここで、ノードN2は、取得した連結カウンタ値JC0x01000001が、抽出した受信カウンタ値RC0x00001230よりも大きいため、受信した暗号化パケットEPが正規パケットであると判断する。88ノードN2は、正規パケットであると判断されると、ノードDB300において識別子N1に関連付けられた受信カウンタ値RC0x00001230を、取得した連結カウンタ値JC0x01000001で更新する。一方、ノードN2は、取得した連結カウンタ値JCが、抽出した受信カウンタ値RC以下である場合は、受信した暗号化パケットEPが不正パケットであると判断する。そして、ノードN2は、不正パケットであると判断されると、復号により得られたパケットを廃棄することで、通信の安全性を担保する。このように、ノードN1は、消去カウンタ値Rを上位桁とし、送信カウンタ値Sを下位桁として連結した連結カウンタ値JCを保持し、連結カウンタ値JCが消去されると、消去以前の消去カウンタ値Rを他ノードNから取得する。そして、ノードN1は、消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とする新たな連結カウンタ値JCを生成する。これにより、過去にノードN1により送信された暗号化パケットEPに含まれていた連結カウンタ値JCより、ノードN1により生成された新たな連結カウンタ値JCが大きい値になる。そのため、ノードN1は、他ノードNが保持している受信カウンタ値RCより大きい値になっている連結カウンタ値JCを、他ノードNに送信する暗号化パケットEPに含むことができる。そして、ノードN2は、前回受信した暗号化パケットEPに含まれていた連結カウンタ値JCを示す受信カウンタ値RCより、今回受信した暗号化パケットEPに含まれる連結カウンタ値JCが大きいため、正規パケットと判断することができる。なお、前回受信した暗号化パケットEPに含まれていた連結カウンタ値JCは、受信カウンタ値RCとして保持されている。そして、ノードN1は、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。また、ノードN1は、取得要求を含むパケットをアクセス鍵AKを用いて暗号化するため、アクセス鍵AKを有さない攻撃者による要求パケットの解析を防止することができる。また、ノードN1は、取得要求を含むパケットに、近隣ノードNとの通信ごとに生成した一時的な識別情報になる乱数を含める。これにより、ノードN1は、自ノードNが送信した暗号化パケットEPに含めた乱数と受信した暗号化パケットEPに含まれる乱数との一致判断により、正規パケットか否かを通信ごとに判断することができる。ここで、通信ごとに異なる乱数が生成されるため、前回の取得要求に対する応答として近隣ノードNが送信した暗号化パケットEPを今回の取得要求に対する応答と偽って攻撃者が再送攻撃に使用しても、それぞれの暗号化パケットEPに含まれる乱数は不一致になる。そのため、ノードN1は、乱数の不一致から、今回の取得要求に対する応答として受信された暗号化パケットEPが再送攻撃による不正パケットと判断でき、通信の安全性を担保することができる。また、ノードN1は、一度使用した乱数に有効期間を設定しておくことで、今回の通信で近隣ノードNが応答した暗号化パケットEPを攻撃者が再送攻撃に利用した場合に、有効期間を過ぎていれば不正パケットと判断でき、通信の安全性を担保することができる。動作例2における連結カウンタ値生成処理の処理内容次に、図19および図20を用いて、図15~図18に示した動作例2における連結カウンタ値生成処理の詳細な処理手順について説明する。連結カウンタ値生成処理は、図15~図18に示したノードN1が実行する処理である。ここでは、例としてノードN1を実行主体として説明する。図19および図20は、動作例2における連結カウンタ値生成処理の詳細な処理手順を示すフローチャートである。まず、ノードN1は、連結カウンタ値JCの消去が検出されたか否かを判定するステップS1901。ここで、連結カウンタ値JCの消去が検出されていない場合ステップS1901:No、ノードN1は、ステップS1901に戻り、連結カウンタ値JCの消去が検出されるのを待つ。一方、連結カウンタ値JCの消去が検出された場合ステップS1901:Yes、ノードN1は、アクセス鍵AKを含む暗号化パケットEPを近隣ノードNから受信したか否かを判定するステップS1902。ここで、アクセス鍵AKを含む暗号化パケットEPを受信していない場合ステップS1902:No、ノードN1は、ステップS1902に戻り、アクセス鍵AKを含む暗号化パケットEPの受信を待つ。一方、アクセス鍵AKを含む暗号化パケットEPを受信した場合ステップS1902:Yes、ノードN1は、暗号化パケットEP内の暗号化されない部分例えば、パケットのヘッダ部分から、送信元を示す識別子を取得するステップS1903。そして、ノードN1は、受信した暗号化パケットEPを固定鍵FKを用いて復号するステップS1904。次に、ノードN1は、復号により得られたパケットからアクセス鍵AKを抽出し、抽出したアクセス鍵AKと取得した送信元を示す識別子と関連付けたレコードを、ノードDB300に追加するステップS1905。そして、ノードN1は、一時的な識別情報になる乱数を生成するステップS1906。次に、ノードN1は、送信元になる自ノードNを示す識別子と、生成した乱数と、送信カウンタ値Sの取得要求と、を含むパケットを生成するステップS1907。そして、ノードN1は、生成したパケットを、ステップS1905で抽出されたアクセス鍵AKを用いて暗号化するステップS1908。次に、CPU201は、暗号化により得られた暗号化パケットEPを、ステップS1903で取得された識別子が示すノードNに送信するステップS1909。そして、ノードN1は、図20のステップS2001に移行する。図20において、ノードN1は、取得要求に対する応答になる暗号化パケットEPを、ステップS1903で取得された識別子が示すノードNから受信したか否かを判定するステップS2001。ここで、暗号化パケットEPを受信していない場合ステップS2001:No、ノードN1は、ステップS2001に戻り、暗号化パケットEPの受信を待つ。一方、暗号化パケットEPを受信した場合ステップS2001:Yes、ノードN1は、暗号化パケットEP内の暗号化されない部分例えば、パケットのヘッダ部分から、送信元を示す識別子を取得するステップS2002。次に、ノードN1は、受信した暗号化パケットEPを固定鍵FKを用いて復号するステップS2003。そしてノードN1は、復号により得られたパケットから乱数を抽出し、抽出した乱数が、ステップS1906で生成した乱数と一致するか否かを判定するステップS2004。ここで、一致する場合ステップS2004:Yes、ノードN1は、復号により得られたパケットから消去カウンタ値Rを抽出し、抽出した消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rと送信カウンタ値Sの初期値とを連結して連結カウンタ値JCを生成するステップS2005。そして、ノードN1は、生成した連結カウンタ値JCをRAM202に保存してステップS2006、連結カウンタ値生成処理を終了する。一方、一致しない場合ステップS2004:No、ノードN1は、受信した暗号化パケットEPが不正パケットであると判断して、復号により得られたパケットを廃棄しステップS2007、連結カウンタ値生成処理を終了する。これにより、ノードNは、連結カウンタ値JCが消去された場合であっても、消去された連結カウンタ値JCより大きい値の新たな連結カウンタ値JCを生成することができる。そして、ノードNは、送信するパケットが他ノードNに廃棄されないようになり、アドホックネットワークに復帰できる。また、ノードNは、取得要求を含むパケットをアクセス鍵AKを用いて暗号化するため、アクセス鍵AKを有さない攻撃者による要求パケットの解析を防止することができる。また、ノードNは、取得要求を含むパケットに、近隣ノードNとの通信ごとに生成した一時的な識別情報になる乱数を含める。これにより、ノードNは、自ノードNが送信した暗号化パケットEPに含めた乱数と受信した暗号化パケットEPに含まれる乱数との一致判断により、正規パケットか否かを通信ごとに判断することができる。ここで、通信ごとに異なる乱数が生成されるため、前回の取得要求に対する応答として近隣ノードNが送信した暗号化パケットEPを今回の取得要求に対する応答と偽って攻撃者が再送攻撃に使用しても、それぞれの暗号化パケットEPに含まれる乱数は不一致になる。そのため、ノードNは、乱数の不一致から、今回の取得要求に対する応答として受信された暗号化パケットEPが再送攻撃による不正パケットと判断でき、通信の安全性を担保することができる。また、ノードNは、一度使用した乱数に有効期間を設定しておくことで、今回の通信で近隣ノードNが応答した暗号化パケットEPを攻撃者が再送攻撃に利用した場合に、有効期間を過ぎていれば不正パケットと判断でき、通信の安全性を担保することができる。ノードNの連結カウンタ値JCが消去された場合の動作例3次に、図21および図22を用いて、ノードNの連結カウンタ値JCが消去された場合の動作例3について説明する。動作例1および動作例2は自ノードNに電力供給されなくなると連結カウンタ値JCとともに消去カウンタ値Rも消去されたが、動作例3は自ノードNに電力供給されない状態でも消去されないように不揮発性メモリに消去カウンタ値Rを保持しておく。これにより、他ノードNから消去カウンタ値Rを取得しないため、再送攻撃の危険性を低減し、通信の安全性を担保することができる。図21および図22は、ノードNの連結カウンタ値JCが消去された場合の動作例3を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。図21において、ノードN1は、ノードN2から受信され、ノードN2へ送信するパケットの暗号化に使用されるアクセス鍵AK20x2222を保持している。また、ノードN1は、連結カウンタ値JC0x00001230を保持している。ここで、連結カウンタ値JCは、頻繁に書き換えが行われるため、揮発性であるRAM202に保持されている。ノードN1は、連結カウンタ値JCとは別に、消去カウンタ値R0x00を保持している。ここで、消去カウンタ値Rは、不揮発性であるフラッシュメモリ203に保持されている。ノードN2は、過去にノードN1から受信した暗号化パケットEPを復号して得られたパケットから連結カウンタ値JCを抽出し、抽出した連結カウンタ値JC0x00001230を受信カウンタ値RCとして保持している。図21において、停電によりノードN1に電力が供給されず、ノードN1が保持していた連結カウンタ値JC0x00001230およびアクセス鍵AK2が消去されてしまったとする。そのため、他ノードNに送信するパケットに含むべき連結カウンタ値JCが不明になり、ノードN1は、他ノードNにパケットを送信することができない。91ここで、ノードN1は、停電が回復し電力が供給されると、保持していた連結カウンタ値JCが消去されたことを検出する。92ノードN1は、連結カウンタ値JCが消去されたことを検出すると、フラッシュメモリ203に保持されている消去カウンタ値R0x00に1を加算する。93そして、ノードN1は、フラッシュメモリ203に保持されている加算後の消去カウンタ値R0x01と送信カウンタ値Sの初期値0x000000とを連結して、連結カウンタ値JC0x01000000を生成する。これにより、ノードN1は、消去された連結カウンタ値JCの代わりに、新たな連結カウンタ値JCを生成する。次に、図22に移る。94ノードN1は、ノードN1のユーザからのノードN2を宛先にするデータの入力を受けると、ノードN2との暗号化通信を開始する。ここでは、ノードN1は、ユーザからのデータの入力をトリガにして暗号化通信を開始したが、ノードN1が自動的に発生させたデータ送信イベントをトリガにして暗号化通信を開始してもよい。95ノードN1は、ノードN2を宛先にするデータの入力を受けると、93で生成された新たな連結カウンタ値JC0x01000000に1を加算する。96ノードN1は、送信元を示す識別子N1と、ノードN2を宛先にするデータと、加算後の連結カウンタ値JC0x01000001と、を含むパケットを生成する。このとき、送信元を示す識別子は、パケット内の暗号化されない部分例えば、パケットのヘッダ部分に含まれる。97ノードN1は、パケットを生成すると、生成したパケット内のノードN2を宛先にするデータと加算後の連結カウンタ値JC0x01000001とを固定鍵FKを用いて暗号化する。98ノードN1は、暗号化により得られた暗号化パケットEPを、データの宛先であるノードN2に送信する。99ノードN2は、ノードN1から送信された暗号化パケットEPを受信すると、受信した暗号化パケットEPから送信元を示す識別子N1を取得し、受信した暗号化パケットEPを、固定鍵FKを用いて復号する。そして、ノードN2は、復号により得られたパケットから、ノードN2を宛先にするデータと連結カウンタ値JC0x01000001とを取得する。100ノードN2は、連結カウンタ値JC0x01000001を取得すると、取得した送信元を示す識別子N1に関連付けられた受信カウンタ値RCをノードDB300から抽出する。101そして、ノードN2は、取得した連結カウンタ値JC0x01000001と、抽出した受信カウンタ値RC0x00001230と、の大小比較を行う。ここで、ノードN2は、取得した連結カウンタ値JC0x01000001が、抽出した受信カウンタ値RC0x00001230よりも大きいため、受信した暗号化パケットEPが正規パケットであると判断する。102ノードN2は、正規パケットであると判断されると、ノードDB300において識別子N1に関連付けられた受信カウンタ値RC0x00001230を、取得した連結カウンタ値JC0x01000001で更新する。一方、ノードN2は、取得した連結カウンタ値JCが、抽出した受信カウンタ値RC以下である場合は、受信した暗号化パケットEPが不正パケットであると判断する。そして、ノードN2は、不正パケットであると判断されると、復号により得られたパケットを廃棄することで、通信の安全性を担保する。このように、ノードN1は、揮発性メモリ例えばRAM202に連結カウンタ値JCを保持しておくことで、送信時の連結カウンタ値JCの読み出し処理や、受信時の連結カウンタ値JCの更新処理を高速に実行できる。また、ノードN1は、不揮発性メモリ例えばフラッシュメモリ203に、書き換え頻度の低い消去カウンタ値Rのみを、連結カウンタ値JCとは別に保持しておく。ノードN1は、連結カウンタ値JCが消去されると、消去以前の消去カウンタ値Rを不揮発性メモリから取得する。そして、ノードN1は、消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とする新たな連結カウンタ値JCを生成する。これにより、過去にノードN1により送信された暗号化パケットEPに含まれていた連結カウンタ値JCより、ノードN1により生成された新たな連結カウンタ値JCが大きい値になる。そのため、ノードN1は、他ノードNが保持している受信カウンタ値RCより大きい値になっている連結カウンタ値JCを、他ノードNに送信する暗号化パケットEPに含むことができる。これにより、ノードN2は、保持している受信カウンタ値RCより、ノードN1から受信した暗号化パケットEPに含まれる連結カウンタ値JCが大きいため、ノードN1から受信した暗号化パケットEPを正規パケットと判断することができる。そして、ノードN1は、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。また、他ノードNから消去カウンタ値Rを取得しないため、再送攻撃の危険性を低減し、通信の安全性を担保することができる。動作例3における連結カウンタ値生成処理の処理内容次に、図23を用いて、図21および図22に示した動作例3における連結カウンタ値生成処理の詳細な処理手順を示すフローチャートである。連結カウンタ値生成処理は、図21および図22に示したノードN1が実行する処理である。ここでは、例としてノードN1を実行主体として説明する。図23は、動作例3における連結カウンタ値生成処理の詳細な処理手順を示すフローチャートである。まず、ノードN1は、連結カウンタ値JCの消去が検出されたか否かを判定するステップS2301。連結カウンタ値JCの消去が検出されていない場合ステップS2301:No、ノードN1は、ステップS2301に戻り、連結カウンタ値JCの消去が検出されるのを待つ。一方、連結カウンタ値JCの消去が検出された場合ステップS2301:Yes、ノードN1は、不揮発性メモリから消去カウンタ値Rを読み出すステップS2302。そして、ノードN1は、読み出した消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rと送信カウンタ値Sの初期値とを連結した連結カウンタ値JCを生成するステップS2303。そして、ノードN1は、生成した連結カウンタ値JCをRAM202に保存してステップS2304、連結カウンタ値生成処理を終了する。これにより、ノードNは、連結カウンタ値JCが消去された場合であっても、消去された連結カウンタ値JCより大きい値の新たな連結カウンタ値JCを生成することができる。そして、ノードNは、送信するパケットが他ノードNに廃棄されないようになり、アドホックネットワークに復帰できる。以上説明したように、ノードNは、連結カウンタ値JCを保持し、連結カウンタ値JCが消去されると、消去以前の消去カウンタ値Rを他ノードNから取得する。そして、ノードNは、消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とする新たな連結カウンタ値JCを生成する。これにより、過去にノードNにより送信された暗号化パケットEPに含まれていた連結カウンタ値JCより、新たな連結カウンタ値JCが大きい値になる。そのため、ノードNは、他ノードNが保持している受信カウンタ値RCより大きい値になっている連結カウンタ値JCを、他ノードNに送信する暗号化パケットEPに含むことができる。これにより、他ノードNは、保持している受信カウンタ値RCより、ノードNから受信した暗号化パケットEPに含まれる連結カウンタ値JCが大きいため、ノードNから受信した暗号化パケットEPを正規パケットと判断することができる。そして、ノードNは、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。このように、連結カウンタ値JCが復旧されるため、時刻同期パケットによる同期が不要になり、アドホックネットワーク内の通信負荷の低減を図ることができる。また、ノードNは、取得要求を含むパケットを固定鍵FKを用いて暗号化するため、固定鍵FKを有さない攻撃者による要求パケットの解析を防止することができる。また、ノードNは、取得要求を含むパケットに、近隣ノードNとの通信ごとに生成した一時的な識別情報になる乱数を含める。これにより、ノードNは、自ノードNが送信した暗号化パケットEPに含めた乱数と受信した暗号化パケットEPに含まれる乱数との一致判断により、正規パケットか否かを通信ごとに判断することができる。ここで、通信ごとに異なる乱数が生成されるため、前回の取得要求に対する応答として近隣ノードNが送信した暗号化パケットEPを今回の取得要求に対する応答と偽って攻撃者が再送攻撃に使用しても、それぞれの暗号化パケットEPに含まれる乱数は不一致になる。そのため、ノードNは、乱数の不一致から、今回の取得要求に対する応答として受信された暗号化パケットEPが再送攻撃による不正パケットと判断でき、通信の安全性を担保することができる。また、ノードNは、連結カウンタ値JCを保持し、連結カウンタ値JCが消去されると、消去以前の消去カウンタ値Rを他ノードNから取得する。そして、ノードNは、消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とする新たな連結カウンタ値JCを生成する。これにより、過去にノードNにより送信された暗号化パケットEPに含まれていた連結カウンタ値JCより、ノードNにより生成された新たな連結カウンタ値JCが大きい値になる。そのため、ノードNは、他ノードNが保持している受信カウンタ値RCより大きい値になっている連結カウンタ値JCを、他ノードNに送信する暗号化パケットEPに含むことができる。これにより、他ノードNは、保持している受信カウンタ値RCより、ノードNから受信した暗号化パケットEPに含まれる連結カウンタ値JCが大きいため、ノードNから受信した暗号化パケットEPを正規パケットと判断することができる。そして、ノードNは、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。また、ノードNは、取得要求を含むパケットをアクセス鍵AKを用いて暗号化するため、アクセス鍵AKを有さない攻撃者による要求パケットの解析を防止できる。また、ノードNは、取得要求を含むパケットに、近隣ノードNとの通信ごとに生成した一時的な識別情報になる乱数を含める。これにより、ノードNは、自ノードNが送信した暗号化パケットEPに含めた乱数と受信した暗号化パケットEPに含まれる乱数との一致判断により、正規パケットか否かを通信ごとに判断することができる。ここで、通信ごとに異なる乱数が生成されるため、前回の取得要求に対する応答として近隣ノードNが送信した暗号化パケットEPを今回の取得要求に対する応答と偽って攻撃者が再送攻撃に使用しても、それぞれの暗号化パケットEPに含まれる乱数は不一致になる。そのため、ノードNは、乱数の不一致から、今回の取得要求に対する応答として受信された暗号化パケットEPが再送攻撃による不正パケットと判断でき、通信の安全性を担保することができる。また、ノードNは、揮発性メモリ例えばRAM202に連結カウンタ値JCを保持しておくことで、送信時の連結カウンタ値JCの読み出し処理や、受信時の連結カウンタ値JCの更新処理を高速に実行できる。また、ノードNは、不揮発性メモリ例えばフラッシュメモリ203に、書き換え頻度の低い消去カウンタ値Rのみを、連結カウンタ値JCとは別に保持しておく。ノードNは、連結カウンタ値JCが消去されると、消去以前の消去カウンタ値Rを不揮発性メモリから取得する。そして、ノードNは、消去以前の消去カウンタ値Rに1を加算した加算後の消去カウンタ値Rを上位桁とする新たな連結カウンタ値JCを生成する。これにより、過去にノードNにより送信された暗号化パケットEPに含まれていた連結カウンタ値JCより、ノードNにより生成された新たな連結カウンタ値JCが大きい値になる。そのため、ノードNは、他ノードNが保持している受信カウンタ値RCより大きい値になっている連結カウンタ値JCを、他ノードNに送信する暗号化パケットEPに含むことができる。これにより、他ノードNは、保持している受信カウンタ値RCより、ノードNから受信した暗号化パケットEPに含まれる連結カウンタ値JCが大きいため、ノードNから受信した暗号化パケットEPを正規パケットと判断することができる。そして、ノードNは、他ノードNに送信する暗号化パケットEPが、他ノードNで不正パケットと判断されないようになるため、アドホックネットワークに復帰することができる。また、他ノードNから消去カウンタ値Rを取得しないため、再送攻撃の危険性を低減し、通信の安全性を担保することができる。なお、本実施の形態で説明した通信方法は、予め用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信プログラムは、インターネット等のネットワークを介して配布してもよい。"