複数のノードを有するアドホックネットワーク内のノードが、前記アドホックネットワーク内の前記ノードの近隣ノードの送信元アドレスと前記近隣ノードからの第1のパケット送信回数とを含む第1のパケットを受信する第1の受信工程と、前記第1の受信工程によって受信された第1のパケットの中から、前記第1のパケット送信回数を抽出する第1の抽出工程と、前記第1の受信工程によって前記第1のパケットが受信された後、前記近隣ノードの送信元アドレスと前記近隣ノードからの第2のパケット送信回数とを含む第2のパケットを受信する第2の受信工程と、前記第2の受信工程によって受信された第2のパケットの中から、前記第2のパケット送信回数を抽出する第2の抽出工程と、前記第1の抽出工程によって抽出された前記第1のパケット送信回数と、前記第2の抽出工程によって抽出された前記第2のパケット送信回数と、に基づいて、前記第2のパケットが不正パケットか否かを判定する判定工程と、前記判定工程によって不正パケットと判定された場合、前記第2のパケットを廃棄する廃棄工程と、を実行することを特徴とする通信方法。複数のノードを有するアドホックネットワーク内のノードが、前記アドホックネットワーク内の前記ノードの近隣ノードへのパケット送信イベントを検出する検出工程と、前記検出工程によって前記パケット送信イベントが検出された場合、前記ノードの記憶装置に保持された前記ノードからのパケット送信回数を、前記パケット送信回数に1を加算した値に更新する更新工程と、前記更新工程によって更新されたパケット送信回数を含むパケットを前記近隣ノードに送信する送信工程と、を実行することを特徴とする通信方法。前記ノードの記憶装置に保持された前記ノードからのパケット送信回数の消去を検知する検知工程と、前記検知工程によって消去が検知された場合に、前記近隣ノードの記憶装置に保持された前記ノードからのパケット送信回数の要求パケットを、前記近隣ノードに通知する通知工程と、前記通知工程によって前記要求パケットが通知された結果、前記近隣ノードから送信されてくる前記ノードからのパケット送信回数を含む応答パケットを受信する受信工程と、前記受信工程によって受信された応答パケットの中から、前記ノードからのパケット送信回数を抽出する抽出工程と、前記抽出工程によって抽出された前記ノードからのパケット送信回数を前記ノードの記憶装置に格納する格納工程と、を実行することを特徴とする請求項2に記載の通信方法。前記アドホックネットワーク内の各ノードが有する共通鍵を用いて、前記要求パケットを暗号化する暗号化工程と、前記近隣ノードによって前記共通鍵を用いて暗号化された前記応答パケットから、前記共通鍵を用いて前記応答パケットを復号する復号工程と、を実行し、前記通知工程は、前記暗号化工程によって暗号化された前記要求パケットを、前記近隣ノードに通知し、前記受信工程は、前記近隣ノードから送信されてくる前記共通鍵を用いて暗号化された前記応答パケットを受信し、前記復号工程は、前記受信工程によって受信された暗号化された前記応答パケットから、前記応答パケットを復号し、前記抽出工程は、前記復号工程によって復号された前記応答パケットの中から、前記ノードからのパケット送信回数を抽出することを特徴とする請求項3に記載の通信方法。前記通知工程は、前記ノード固有の第1の識別情報を含む暗号化された前記要求パケットを前記近隣ノードに通知し、前記受信工程は、第2の識別情報を含む前記共通鍵を用いて暗号化された前記応答パケットを前記近隣ノードから受信し、前記抽出工程は、前記受信工程によって受信された暗号化された前記応答パケットから前記復号工程によって復号された前記応答パケットの中から、前記第2の識別情報を抽出し、前記格納工程は、前記第1の識別情報と前記抽出工程によって抽出された第2の識別情報とが一致した場合に、前記抽出工程によって抽出された前記ノードからのパケット送信回数を前記ノードの記憶装置に格納することを特徴とする請求項3または4に記載の通信方法。前記第1の識別情報となる乱数を生成する生成工程を実行することを特徴とする請求項5に記載の通信方法。前記検知工程によって消去が検知された後に、前記アドホックネットワーク内の各ノードが有する第1の共通鍵を用いて暗号化された前記近隣ノードが有する第2の共通鍵を、前記近隣ノードから受信する鍵受信工程と、前記鍵受信工程によって受信された暗号化された前記第2の共通鍵から、前記第1の共通鍵を用いて前記第2の共通鍵を復号する鍵復号工程と、前記鍵復号工程によって復号された前記第2の共通鍵を用いて、前記要求パケットを暗号化する暗号化工程と、前記近隣ノードによって前記第2の共通鍵を用いて暗号化された前記応答パケットから、前記鍵復号工程によって復号された前記第2の共通鍵を用いて前記応答パケットを復号する復号工程と、を実行し、前記通知工程は、前記暗号化工程によって暗号化された前記要求パケットを、前記近隣ノードに通知し、前記受信工程は、前記近隣ノードから送信されてくる前記第2の共通鍵を用いて暗号化された前記応答パケットを受信し、前記復号工程は、前記受信工程によって受信された暗号化された前記応答パケットから、前記応答パケットを復号し、前記抽出工程は、前記復号工程によって復号された前記応答パケットの中から、前記ノードからのパケット送信回数を抽出することを特徴とする請求項3に記載の通信方法。前記通知工程は、前記ノード固有の第1の識別情報を含む暗号化された前記要求パケットを前記近隣ノードに通知し、前記受信工程は、第2の識別情報を含む前記第2の共通鍵を用いて暗号化された前記応答パケットを前記近隣ノードから受信し、前記抽出工程は、前記受信工程によって受信された暗号化された前記応答パケットから前記復号工程によって復号された前記応答パケットの中から、前記第2の識別情報を抽出し、前記格納工程は、前記第1の識別情報と前記抽出工程によって抽出された第2の識別情報とが一致した場合に、前記抽出工程によって抽出された前記ノードからのパケット送信回数を前記ノードの記憶装置に格納することを特徴とする請求項3または7に記載の通信方法。前記第1の識別情報となる乱数を生成する生成工程を実行することを特徴とする請求項8に記載の通信方法。複数のノードを有するアドホックネットワーク内のノードであって、前記アドホックネットワーク内の前記ノードの近隣ノードの送信元アドレスと前記近隣ノードからの第1のパケット送信回数とを含む第1のパケットを受信する第1の受信手段と、前記第1の受信手段によって受信された第1のパケットの中から、前記第1のパケット送信回数を抽出する第1の抽出手段と、前記第1の受信手段によって前記第1のパケットが受信された後、前記近隣ノードの送信元アドレスと前記近隣ノードからの第2のパケット送信回数とを含む第2のパケットを受信する第2の受信手段と、前記第2の受信手段によって受信された第2のパケットの中から、前記第2のパケット送信回数を抽出する第2の抽出手段と、前記第1の抽出手段によって抽出された前記第1のパケット送信回数と、前記第2の抽出手段によって抽出された前記第2のパケット送信回数と、に基づいて、前記第2のパケットが不正パケットか否かを判定する判定手段と、前記判定手段によって不正パケットと判定された場合、前記第2のパケットを廃棄する廃棄手段と、を備えることを特徴とするノード。複数のノードを有するアドホックネットワーク内のノードであって、前記アドホックネットワーク内の前記ノードの近隣ノードへのパケット送信イベントを検出する検出手段と、前記検出手段によって前記パケット送信イベントが検出された場合、前記ノードの記憶装置に保持された前記ノードからのパケット送信回数を、前記パケット送信回数に1を加算した値に更新する更新手段と、前記更新手段によって更新されたパケット送信回数を含むパケットを前記近隣ノードに送信する送信手段と、を備えることを特徴とするノード。複数のノードから構成されるアドホックネットワーク内のノードと、前記アドホックネットワーク内の前記ノードの近隣ノードと、を含むネットワークシステムにおいて、前記ノードが、前記アドホックネットワーク内の前記ノードの近隣ノードへのパケット送信イベントを検出する検出手段と、前記検出手段によって前記パケット送信イベントが検出された場合、前記ノードの記憶装置に保持された前記ノードからの第1のパケット送信回数を、前記第1のパケット送信回数に1を加算した値に更新する更新手段と、前記更新手段によって更新された第1のパケット送信回数を含む第1のパケットを前記近隣ノードに送信する送信手段と、を備え、前記近隣ノードが、前記送信手段によって前記ノードから送信された前記第1のパケットを受信する第1の受信手段と、前記第1の受信手段によって受信された第1のパケットの中から、前記第1のパケット送信回数を抽出する第1の抽出手段と、前記第1の受信手段によって前記第1のパケットが受信された後、前記ノードの送信元アドレスと前記ノードからの第2のパケット送信回数とを含む第2のパケットを受信する第2の受信手段と、前記第2の受信手段によって受信された第2のパケットの中から、前記第2のパケット送信回数を抽出する第2の抽出手段と、前記第1の抽出手段によって抽出された前記第1のパケット送信回数と、前記第2の抽出手段によって抽出された前記第2のパケット送信回数と、に基づいて、前記第2のパケットが不正パケットか否かを判定する判定手段と、前記判定手段によって不正パケットと判定された場合、前記第2のパケットを廃棄する廃棄手段と、を備えることを特徴とするネットワークシステム。しかしながら、上述した従来技術では、アドホックネットワーク内の全ノードの時刻が同期されている必要がある。例えば、他のネットワークとの中継機器であるゲートウェイまたはアドホックネットワーク内の特定のノードが、定期的に時刻同期用のパケットをブロードキャストすることで、アドホックネットワーク内の全ノードの時刻同期を実現する。そのため、メータ検針をおこなうアドホックネットワークでは、各メータの検針データパケット以外に、時刻同期用のブロードキャストパケットが送受信されることとなり、アドホックネットワークの通信負荷の増大を招くという問題があった。本発明は、上述した従来技術による問題点を解消するため、再送攻撃を簡単かつ効率的に検出することにより、通信負荷の低減を図ることができる通信方法、ノード、およびネットワークシステムを提供することを目的とする。上述した課題を解決し、目的を達成するため、本発明の一観点によれば、複数のノードを有するアドホックネットワーク内のノードが、アドホックネットワーク内の近隣ノードの送信元アドレスと近隣ノードからの第1のパケット送信回数とを含む第1のパケットを受信し、受信された第1のパケットの中から、第1のパケット送信回数を抽出し、第1のパケットが受信された後、近隣ノードの送信元アドレスと近隣ノードからの第2のパケット送信回数とを含む第2のパケットを受信し、受信された第2のパケットの中から、第2のパケット送信回数を抽出し、抽出した第1のパケット送信回数と第2のパケット送信回数とに基づいて、第2のパケットが不正パケットか否かを判定し、不正パケットと判定された場合、第2のパケットを廃棄する通信方法およびノードが提案される。上述した課題を解決し、目的を達成するため、本発明の一観点によれば、複数のノードを有するアドホックネットワーク内のノードが、アドホックネットワーク内の近隣ノードへのパケット送信イベントを検出した場合に、記憶装置に保持された自ノードからのパケット送信回数を、パケット送信回数に1を加算した値に更新し、更新されたパケット送信回数を含むパケットを近隣ノードに送信する通信方法およびノードが提案される。上述した課題を解決し、目的を達成するため、本発明の一観点によれば、複数のノードから構成されるアドホックネットワーク内のノードが、アドホックネットワーク内の近隣ノードへのパケット送信イベントを検出し、パケット送信イベントが検出された場合、記憶装置に保持された自ノードからの第1のパケット送信回数を、第1のパケット送信回数に1を加算した値に更新し、更新された第1のパケット送信回数を含む第1のパケットを近隣ノードに送信し、近隣ノードが、第1のパケットを受信し、受信された第1のパケットの中から、第1のパケット送信回数を抽出し、第1のパケットが受信された後、第1のパケットと同一の送信元アドレスと第2のパケット送信回数とを含む第2のパケットを受信し、受信された第2のパケットの中から、第2のパケット送信回数を抽出し、第1のパケット送信回数と、第2のパケット送信回数と、に基づいて、第2のパケットが不正パケットか否かを判定し、不正パケットと判定された場合、第2のパケットを廃棄するネットワークシステムが提案される。本発明の一観点によれば、再送攻撃を簡単かつ効率的に検出することにより、通信負荷の低減を図ることができるという効果を奏する。以下に添付図面を参照して、この発明にかかる通信方法、ノード、およびネットワークシステムの実施の形態を詳細に説明する。本実施の形態では、各ノードは、時刻情報ではなく、自ノードからのパケット送信回数を示すカウンタ値を用いる。各ノードが時刻情報を用いる場合、絶対的な基準時刻との同期をネットワークを介しておこなう必要があり、ネットワークに通信負荷をかける。一方、各ノードがカウンタ値を用いる場合、カウンタ値は自ノード内の処理のみで更新が可能な相対的な値であるから、ネットワークへの通信負荷を削減できる。実施の形態にかかるノードによる受信したパケットの正当性判定の具体例図1は、実施の形態にかかるノードによる受信したパケットの正当性判定の具体例を示す説明図である。図1において、アドホックネットワークAは複数のノードNここでは、ノードN1およびノードN2から構成される。ノードN1とノードN2は互いの通信圏内に存在する近隣ノードであり、パケットPを暗号化した暗号化パケットEPの送受信をおこなっている。ここで、各ノードNは、受信した暗号化パケットEPの正当性判定をおこない、再送攻撃による不正パケットと判定された場合、暗号化パケットEPを廃棄することにより、通信の品質を確保する。各ノードNは、今までに自ノードが暗号化パケットEPを送信した回数を示す送信カウンタ値を保持している。この送信カウンタ値は、各ノードNが暗号化パケットEPを送信する際にインクリメントされる。そして、各ノードNは、インクリメントした値を送信する暗号化パケットEPに含ませておく。また、各ノードNは、自ノードが受信したパケットに含まれていた送信カウンタ値を受信カウンタ値として、受信したパケットの送信元ノードと関連付けて、ノードデータベース以下、ノードDBDataBase110というに保持している。そのため、各ノードNは、送信カウンタ値とノードDB110に保持した受信カウンタ値とに基づいて、受信した暗号化パケットEPの正当性判定をおこなうことができる。具体的には、ノードNが、ある近隣ノードからの正規の暗号化パケットEPを受信し続けている限り、今回受信した暗号化パケットEP内の送信カウンタ値は、前回受信した暗号化パケットEP内の送信カウンタ値すなわち、受信カウンタ値より大きくなる。一方で、再送攻撃では過去に送信された暗号化パケットEPをそのまま送信しているため、ノードNが今回受信した暗号化パケットEP内の送信カウンタ値は、前回受信した暗号化パケットEP内の送信カウンタ値すなわち、受信カウンタ値以下となる。よって、ノードNは、送信カウンタ値と受信カウンタ値を比較することにより、送信攻撃による不正パケットを判定することができる。例えば、図1を用いて、ノードN2を暗号化パケットEPの送信側のノードNとし、ノードN1を暗号化パケットEPの受信側のノードNとする例を挙げて、受信した暗号化パケットEPの正当性判定の具体例について説明する。ここで、各ノードNは、自ノードへ送信されるパケットPの暗号化に使用される共通鍵以下、アクセス鍵というを、他ノードに送信している。アクセス鍵を受信した各ノードNは、受信したアクセス鍵を送信元ノードに関連付けて保持しておく。そして、各ノードNは、該送信元ノードを宛先とするパケットPを送信する際には、関連付けられたアクセス鍵を用いてパケットPを暗号化して暗号化パケットEPにして送信する。送信元ノードに関連付けたアクセス鍵は、受信カウンタ値とともにノードDB110に記憶されてもよい。具体的には、ノードN1は、ノードN1へ送信するパケットPの暗号化に用いるアクセス鍵AK1をノードN2に送信する。ノードN2は、ノードN1から受信したアクセス鍵AK1を保持し、ノードN1にパケットPを送信する際には、アクセス鍵AK1を用いてパケットPを暗号化して暗号化パケットEPにして送信する。一方、暗号化パケットEPを受信したノードN1は、アクセス鍵AK1を用いて暗号化パケットEPを復号する。図1のAに示すように、1ノードN2は、11回目に暗号化パケットEPを送信する際に、自ノード内の記憶装置に記憶されている送信カウンタ値を10から11へと更新する。そして、2ノードN2は、送信するパケットPに更新した送信カウンタ値11を含めて暗号化した暗号化パケットEPをノードN1に送信する。3暗号化パケットEPを受信したノードN1は、暗号化パケットEPを復号し、復号したパケットPから抽出した送信カウンタ値11と、自ノード内のノードDB110に保持された受信カウンタ値10とを比較する。この場合、ノードN1は、過去にノードN2が10回目に送信した暗号化パケットEPを受け取ったことがあり、今回受信した暗号化パケットEPはノードN2が11回目に送信したパケットであることが分かる。そのため、受信した暗号化パケットEPが正規の暗号化パケットEPであると判定できる。また、ノードN1は、自ノード内のノードDB110に、送信カウンタ値11を、ノードN2に関連付けたあらたな受信カウンタ値として保持する。4ノードN2は、12回目に暗号化パケットEPを送信する際に、自ノード内の記憶装置に記憶されている送信カウンタ値を11から12へと更新する。そして、5ノードN2は、送信するパケットPに更新した送信カウンタ値12を含めて暗号化した暗号化パケットEPをノードN1に送信する。6暗号化パケットEPを受信したノードN1は、暗号化パケットEPを復号し、復号したパケットPから抽出した送信カウンタ値12と、自ノード内のノードDB110に保持された受信カウンタ値11とを比較する。この場合、ノードN1は、過去にノードN2が11回目に送信した暗号化パケットEPを受け取ったことがあり、今回受信した暗号化パケットEPはノードN2が12回目に送信したパケットであることが分かる。そのため、受信した暗号化パケットEPが正規の暗号化パケットEPであると判定できる。また、ノードN1は、自ノード内のノードDB110に、送信カウンタ値12を、ノードN2に関連付けたあらたな受信カウンタ値として保持する。13回目以降に暗号化パケットEPを送信する際にも、ノードN2は、4および5と同様にして、送信カウンタ値を更新し、更新したカウンタ値を含む暗号化パケットEPを送信する。また、暗号化パケットEPを受信したノードN1は6と同様にして、受信した暗号化パケットEPの正当性判定をおこない、ノードDB110を更新する。このようにして、ノードN2から15回暗号化パケットEPが送信されたとする。ここで、図1のBに示すように、再送攻撃をおこなう攻撃者のノードNcがアドホックネットワークAに接続した場合を例に挙げる。7ノードN2は、16回目に暗号化パケットEPを送信する際に、自ノード内の記憶装置に記憶されている送信カウンタ値を15から16へと更新する。そして、8ノードN2は、送信するパケットPに更新した送信カウンタ値16を含めて暗号化した暗号化パケットEPをノードN1に送信する。9暗号化パケットEPを受信したノードN1は、暗号化パケットEPを復号し、復号したパケットから抽出した送信カウンタ値16と、自ノード内のノードDB110に保持された受信カウンタ値15とを比較する。この場合、ノードN1は、過去にノードN2が15回目に送信した暗号化パケットEPを受け取ったことがあり、今回受信した暗号化パケットEPはノードN2が16回目に送信した暗号化パケットEPであることが分かる。そのため、ノードN1は、受信した暗号化パケットEPが正規の暗号化パケットEPであると判定できる。また、ノードN1は、自ノード内のノードDB110に、送信カウンタ値16を、ノードN2に関連付けたあらたな受信カウンタ値として保持する。一方、10攻撃者のノードNcによって、ノードN2が送信した暗号化パケットEPがアドホックネットワーク上からキャプチャされ、再送攻撃のために保持されてしまう。そして、攻撃者のノードNcによって、ノードN1に対して再送攻撃がおこなわれる。具体的には、図1のCに示すように、11攻撃者のノードNcは、10で保持した暗号化パケットEPをノードN1に再送する。ここで、12ノードN1は、受信した暗号化パケットEPを復号し、復号したパケットPから抽出した送信カウンタ値16と、自ノード内のノードDB110に保持された受信カウンタ値16とを比較する。この場合、ノードN1は、過去にノードN2が16回目に送信した暗号化パケットEPを受け取ったことがあるにもかかわらず、今回受信した暗号化パケットEPもノードN2が16回目に送信した暗号化パケットEPであることが分かる。そのため、ノードN1は、受信した暗号化パケットEPが不正パケットであると判定できる。そして、ノードN1は、不正パケットを廃棄する。これにより、ノードN1は、ノードN2から送信された暗号化パケットEPは廃棄せず、攻撃者のノードNcから送信された不正パケットのみを廃棄することができるため、再送攻撃を防ぐことができ、通信の安全性を担保することができる。また、ノードN1は、不正パケットを廃棄するため、不正パケットの内容に基づいて処理をおこなう必要がなく、ノードN1の処理負担を軽減できる。また、時刻同期を必要とせず不正パケットを判定することができるため、時刻同期用のパケットによる通信負荷が生じないようにできる。さらに、時刻同期を必要としないため、時刻同期用のパケットを送信するゲートウェイがアドホックネットワークA内にない場合でも不正パケットを判定できる。ネットワークシステムの一実施例図2は、実施の形態にかかるネットワークシステムの一実施例を示す説明図である。図2において、ネットワークシステム200は、複数のノードNノードN1~Nmを含む構成である。ここでmは、アドホックネットワークA内のノード数である。ネットワークシステム200において、各ノードNは、アドホックネットワークAを介して接続されている。各ノードNは、所定の通信圏内の他ノード以下、近隣ノードというとマルチホップ通信をおこなう無線通信装置である。アドホックネットワークA内の各ノードNは、アドホックネットワークAにおける共通の鍵以下、固定鍵FKというを保持している。従って、各ノードNは、近隣ノードとの固定鍵FKを用いた暗号化通信が可能である。また、各ノードNは、自ノードへ送信されるパケットPの暗号化に使用されるアクセス鍵AKを生成する機能を持つ以下では、ノードN1~Nmのそれぞれが生成したアクセス鍵AKをAK1~AKmとする。各ノードNは、アクセス鍵AKの生成機能によってアクセス鍵AKを生成すると、自ノードのノード番号とアクセス鍵AKとを固定鍵FKによって暗号化し、近隣ノードにユニホップ通信する。ユニホップ通信とは、ノードNから近隣ノードのみに暗号化パケットEPを送信することをいい、近隣ノードは暗号化パケットEPを中継せず他ノードに再送しない。ノード番号とアクセス鍵AKとを含む暗号化パケットEPを受信したノードは、固定鍵FKによって該ノード番号と該アクセス鍵AKを復号し、自ノード内のデータベース例えば、上述したノードDB110に保持する。すなわち、各ノードN1~Nmは、近隣ノードのアクセス鍵AKを有するが、近隣ノード以外のノードのアクセス鍵AKは有していない。ただし、ノード番号は、ヘッダなどの暗号化されない部分に含まれる。各ノードNが近隣ノードに対してアクセス鍵AKを用いた暗号化通信をする場合、自ノード内のデータベースに保持されている該近隣ノードのノード番号に関連付けられたアクセス鍵AKを用いて暗号化した暗号化パケットEPを、宛先である近隣ノードに送信する。暗号化パケットEPを受信した近隣ノードは、自ノードのアクセス鍵AKによって暗号化パケットEPを復号する。各ノードNは、一定の間隔でアクセス鍵AKを生成して、生成したアクセス鍵AKを近隣ノードに固定鍵FKを用いて暗号化して送信する。このように一定の間隔でアクセス鍵を更新することで、各ノードNは、再送攻撃の脅威を低減することができる。ネットワークシステム200は、例えば、各家庭の電力やガスの使用量を収集するシステムに適用することができる。具体的には、例えば、各家庭の電力メータやガスメータに各ノードN1~Nmを組み込むことで、アドホックネットワークA内のノード間で各家庭の電力やガスの使用量を送受信する。なお、各家庭の電力やガスの使用量は、各ノードN1~Nmが計測してもよく、また、各ノードN1~Nmが電力メータやガスメータから取得してもよい。そして、アドホックネットワークA内のゲートウェイが、アドホックネットワークA内のノードN1~Nmから受信した各家庭の電力やガスの使用量を、ネットワークを介して電力会社やガス会社のサーバに送信するようにしてもよい。これにより、作業員が現地に出向くことなく電力やガスの使用量を収集することができる。また、ネットワークシステム200では、アドホックネットワークAの固定鍵FKおよび各ノードNのアクセス鍵AKを用いてパケットPを暗号化している。これにより、アドホックネットワークAのセキュア通信データ秘匿性、改ざん防止などを確保できる。ノードNのハードウェア構成例図3は、実施の形態にかかるノードNのハードウェア構成例を示すブロック図である。図3において、ノードNは、CPU301と、RAM302と、フラッシュメモリ303と、I/F304と、暗号化回路305と、を備えている。CPU301~暗号化回路305は、バス300によってそれぞれ接続されている。ここで、CPU301は、ノードNの全体の制御を司る。RAM302は、CPU301のワークエリアとして使用される。また、書き換えが頻繁におこなわれる送信カウンタ値と受信カウンタ値とはRAM302に記憶されている。フラッシュメモリ303は、プログラムや暗号鍵固定鍵FKおよびアクセス鍵AKなどの鍵情報を記憶している。また、書き換えが頻繁におこなわれるアクセス鍵AKはRAM302に記憶されてもよい。I/F304は、マルチホップ通信によりパケットを送受信する。暗号化回路305は、データを暗号化する場合に暗号鍵によりデータを暗号化する回路である。また、暗号化回路305は、暗号化されたデータを復号鍵により復号する回路でもある。暗号化および復号をソフトウェア的に実行する場合は、暗号化回路305に相当するプログラムをフラッシュメモリ303に記憶させておくことで、暗号化回路305は不要となる。図1に示したノードDB110の記憶内容図4は、図1に示したノードDB110の記憶内容の一例を示す説明図である。図4に示すように、ノードDB110は、ノード番号項目のそれぞれに対応付けて、アクセス鍵項目と、受信カウンタ値項目と、を有する。ノードDB110は、ノードがパケットを受信するごとにレコードを構成する。ノード番号項目には、アドホックネットワークA内の各ノードNの識別子N1~Nmが記憶される。ここでは、簡単のため識別子をN1~Nmとするが、識別子としては、ノードN固有のネットワークアドレスであるMACMediaAccessControlアドレスやIPInternetProtocolアドレスを採用できる。アクセス鍵項目には、各ノード番号のノードへ送信するパケットの暗号化に使用するアクセス鍵AKが記憶される。アクセス鍵AKは、例えば、128~256ビット程度のバイナリデータである。受信カウンタ値項目には、各ノード番号のノードから受信した暗号化パケットEPに含まれていた送信カウンタ値が記憶される。ノードNの機能的構成例次に、図5および図6を用いて、ノードNの機能的構成例について説明する。ここで、図5は、ノードNの受信側としての機能的構成例を示している。また、図6は、ノードNの送信側としての機能的構成例を示している。ここでは、便宜的に受信側としての機能と送信側としての機能を分けて説明しているが、各ノードNは受信側としての機能および送信側としての機能の両方を有している。図5は、ノードNの受信側としての機能的構成を示す機能ブロック図である。図5に示すように、ノードNは、第1の受信部501と、第1の抽出部502と、第2の受信部503と、第2の抽出部504と、判定部505と、廃棄部506と、データ処理部507と、を備える。第1の受信部501は、アドホックネットワークA内のノードNの近隣ノードの送信元アドレスと近隣ノードからの第1のパケット送信回数とを含む第1のパケットを受信する機能を有する。ここで、近隣ノードとは、ノードNの所定の通信圏内にある他ノードである。送信元アドレスとは、上述したノードNの識別子である。第1の送信回数とは、上述した送信カウンタ値である。第1のパケットとは、近隣ノードから送信されたパケットであり、例えば、上述した暗号化パケットEPである。具体的には、例えば、第1の受信部501は、近隣ノードから、固定鍵FKまたはアクセス鍵AKを用いて暗号化された暗号化パケットEPを受信する。第1の受信部501は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。第1の抽出部502は、第1の受信部501によって受信された第1のパケットの中から、第1のパケット送信回数を抽出する機能を有する。具体的には、例えば、第1の抽出部502は、第1の受信部501によって受信された暗号化パケットEPを、固定鍵FKまたはアクセス鍵AKを用いて復号し、復号したパケットPに含まれる送信カウンタ値を抽出する。これにより、第1の抽出部502は、第1の受信部501によって受信された暗号化パケットEPが、近隣ノードが何回目に送信した暗号化パケットEPであるのかを把握できる。第1の抽出部502は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。第2の受信部503は、第1の受信部501によって第1のパケットが受信された後、近隣ノードの送信元アドレスと近隣ノードからの第2のパケット送信回数とを含む第2のパケットを受信する機能を有する。ここで、第2のパケットは、近隣ノードから送信された正規の暗号化パケットEPである場合がある。一方で、第2のパケットは、近隣ノードのノード番号を有するが、近隣ノードが過去に送信した暗号化パケットEPをキャプチャした攻撃者のノードNcから送信された暗号化パケットEPである場合がある。第2のパケット送信回数とは、第2のパケットに含まれる送信カウンタ値である。具体的には、例えば、第2の受信部503は、固定鍵FKまたはアクセス鍵AKを用いて暗号化された暗号化パケットEPを受信する。第2の受信部503は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。第2の抽出部504は、第2の受信部503によって受信された第2のパケットの中から、第2のパケット送信回数を抽出する機能を有する。具体的には、例えば、第2の抽出部504は、第2の受信部503によって受信された暗号化パケットEPを、固定鍵FKまたはアクセス鍵AKを用いて復号し、復号したパケットPに含まれる送信カウンタ値を抽出する。これにより、第2の抽出部504は、第2の受信部503によって受信された暗号化パケットEPが、近隣ノードが何回目に送信した暗号化パケットEPであるのかを把握できる。第2の抽出部504は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。判定部505は、第1の抽出部502によって抽出された第1のパケット送信回数と、第2の抽出部504によって抽出された第2のパケット送信回数と、に基づいて、第2のパケットが不正パケットか否かを判定する機能を有する。具体的には、例えば、判定部505は、今回受信した暗号化パケットEP内の送信カウンタ値が、前回受信した暗号化パケットEP内の送信カウンタ値より増加している場合に正規パケットと判定し、増加していない場合には不正パケットと判定する。すなわち、近隣ノードからの正規の暗号化パケットEPを受信し続けている限り、今回受信した暗号化パケットEP内の送信カウンタ値は、前回受信した暗号化パケットEP内の送信カウンタ値より増加する。よって、判定部505は、第2のパケットを正規パケットと判定する。一方で、再送攻撃では過去に送信された暗号化パケットEPをそのまま送信しているため、今回受信した暗号化パケットEP内の送信カウンタ値は、前回受信した暗号化パケットEP内の送信カウンタ値以下となる。よって、判定部505は、第2のパケットを送信攻撃による不正パケットと判定する。これにより、判定部505は、第2の受信部503によって受信された暗号化パケットEPが、不正パケットであるか否かを判定できる。判定部505は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。廃棄部506は、判定部505によって不正パケットと判定された場合、第2のパケットを廃棄する機能を有する。具体的には、例えば、廃棄部506は、第2のパケットの内容が処理要求であっても処理をおこなわず、また、第2のパケットのマルチホップ通信もおこなわずに、第2のパケットを廃棄する。これにより、廃棄部506は、不正パケットが他ノードへさらに送信されることを防止でき、また、不正パケットの内容を実行することによるノードNの処理負担を軽減できる。廃棄部506は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。データ処理部507は、判定部505によって、不正パケットと判定されなかった暗号化パケットEPの内容に従って処理をおこなう機能を有する。具体的には、例えば、データ処理部507は、暗号化パケットEPをマルチホップ通信により他ノードへ送信したり、暗号化パケットEPの内容が処理要求である場合に処理をおこなったりする。これにより、正規パケットには適切な処理がおこなわれる。データ処理部507は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。図6は、ノードNの送信側としての機能的構成を示す機能ブロック図である。図6に示すように、ノードNは、検出部601と、更新部602と、送信部603と、を備える。ノードNは、検知部604と、通知部605と、受信部606と、抽出部607と、格納部608と、を備える。ノードNは、暗号化部609と、復号部610と、生成部611と、鍵受信部612と、鍵復号部613を備える。検出部601は、アドホックネットワーク内のノードの近隣ノードへのパケット送信イベントを検出する機能を有する。ここで、近隣ノードとは、ノードNの所定の通信圏内にある他ノードである。送信イベントとは、近隣ノードへの暗号化パケットEPの送信のトリガとなるイベントであり、例えば、ノードNのユーザが入力した送信命令であったり、ノードNのフラッシュメモリ303に記憶されたプログラムによって自動的に発生した送信命令であったりする。これにより、検出部601は、暗号化パケットEPの送信をおこなうトリガを検出できる。検出部601は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。更新部602は、検出部601によってパケット送信イベントが検出された場合、ノードNの記憶装置に保持されたノードNからのパケット送信回数を、パケット送信回数に1を加算した値に更新する機能を有する。ここで、記憶装置とは、図3に示したRAM302である。パケット送信回数とは、上述した送信カウンタ値である。具体的には、例えば、更新部602は、RAM302に保持されている送信カウンタ値をインクリメントして更新する。これにより、更新部602は、後述する送信部603によって送信される暗号化パケットEPが何回目に送信される暗号化パケットEPであるのかを算出して、送信カウンタ値を更新することができる。更新部602は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。送信部603は、更新部602によって更新されたパケット送信回数を含むパケットを近隣ノードに送信する機能を有する。具体的には、例えば、送信部603は、更新された送信カウンタ値を含む暗号化パケットEPを近隣ノードに送信する。これにより、送信部603は、近隣ノードに、自ノードが何回目に送信した暗号化パケットEPであるのかを通知することができる。送信部603は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。検知部604は、ノードNの記憶装置に保持されたノードNからのパケット送信回数の消去を検知する機能を有する。具体的には、例えば、検知部604は、停電によって送信カウンタ値が消去されたことや、ノードNのユーザによって送信カウンタ値が初期化されたことを検知する。これにより、検知部604は、送信する暗号化パケットEPに含めるべき送信カウンタ値が消去されたことを検知し、暗号化通信を一時中止することができる。検知部604は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。通知部605は、検知部604によって消去が検知された場合に、近隣ノードの記憶装置に保持されたノードからのパケット送信回数の要求パケットを、近隣ノードに通知する機能を有する。ここで、近隣ノードの記憶装置に保持されたノードからのパケット送信回数とは、近隣ノードのノードDB110に記憶されている受信カウンタ値である。具体的には、例えば、通知部605は、アドホックネットワーク内のノードNで予め受信カウンタ値の要求用のカウンタ値として定めておいた送信カウンタ値0を含む暗号化パケットEPを近隣ノードに送信する。これにより、通知部605は、自ノードが過去に送信した暗号化パケットEPに含まれていた送信カウンタ値を、近隣ノードに要求することができる。通知部605は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。受信部606は、通知部605によって要求パケットが通知された結果、近隣ノードから送信されてくるノードからのパケット送信回数を含む応答パケットを受信する機能を有する。具体的には、例えば、受信部606は、近隣ノードから、自ノードが過去に送信した暗号化パケットEPに含まれていた送信カウンタ値を含む暗号化パケットEPを受信する。受信部606は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。抽出部607は、受信部606によって受信された応答パケットの中から、ノードからのパケット送信回数を抽出する機能を有する。具体的には、抽出部607は、応答パケットの中から近隣ノードのノードDB110に記憶されていた受信カウンタ値を抽出する。これにより、抽出部607は、自ノードの過去の送信カウンタ値である他ノードの受信カウンタ値を抽出できる。抽出部607は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。格納部608は、抽出部607によって抽出されたノードからのパケット送信回数をノードの記憶装置に格納する機能を有する。具体的には、例えば、格納部608は、消去された送信カウンタ値の代わりに、要求パケットに含まれていた受信カウンタ値を、RAM303に格納する。これにより、格納部608は、送信する暗号化パケットEPに含めるべき送信カウンタ値をあらたに格納することができ、ノードNは暗号化通信を再開することができる。格納部608は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。暗号化部609は、アドホックネットワーク内の各ノードが有する共通鍵を用いて、要求パケットを暗号化する機能を有する。具体的には、例えば、暗号化部609は、送信するパケットを固定鍵FKやアクセス鍵AKを用いて暗号化する。これにより、暗号化部609は、セキュアな暗号化通信をおこなうことができる。暗号化部609は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、暗号化回路305により、その機能を実現する。復号部610は、近隣ノードによって共通鍵を用いて暗号化された応答パケットから、共通鍵を用いて応答パケットを復号する機能を有する。具体的には、例えば、復号部610は、受信した暗号化パケットEPを、固定鍵FKやアクセス鍵AKを用いて復号する。これにより、復号部610は、暗号化パケットEPの内容を復号することができる。復号部610は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、暗号化回路305により、その機能を実現する。生成部611は、第1の識別情報となる乱数を生成する機能を有する。具体的には、例えば、生成部611は、乱数表を用いて乱数を生成する。これにより、暗号化パケットEPに一時的な識別情報を含めることができるようになり、セキュアな暗号化通信をおこなうことができる。生成部611は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、その機能を実現する。鍵受信部612は、検知部604によって消去が検知された後に、アドホックネットワーク内の各ノードNが有する第1の共通鍵を用いて暗号化された近隣ノードが有する第2の共通鍵を、近隣ノードから受信する機能を有する。ここで、第1の共通鍵とは、上述した固定鍵FKである。第2の共通鍵とは、上述したアクセス鍵AKである。具体的には、例えば、鍵受信部612は、固定鍵FKによって暗号化されたアクセス鍵AKを受信する。これにより、鍵受信部612は、近隣ノードからアクセス鍵AKを受信し、セキュアな暗号化通信をおこなうことができる。鍵受信部612は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、I/F304により、その機能を実現する。鍵復号部613は、鍵受信部612によって受信された暗号化された第2の共通鍵から、第1の共通鍵を用いて第2の共通鍵を復号する機能を有する。具体的には、例えば、鍵復号部613は、固定鍵FKを用いて、アクセス鍵AKを復号する。これにより、ノードNは、近隣ノードへ、アクセス鍵AKを用いたセキュアな暗号化通信をおこなうことができるようになる。鍵復号部613は、具体的には、例えば、図3に示したフラッシュメモリ303に記憶されたプログラムをCPU301に実行させることにより、または、暗号化回路305により、その機能を実現する。このように、ノードNによれば、再送攻撃を簡単かつ効率的に検出することにより、通信負荷の低減を図ることができる。以下、上述したノードNについての実施例について説明する。実施例1ここで、送信カウンタ値が、送信側のノードにおける暗号化パケットEPの送信回数の総和である場合について説明する。送信回数の総和を用いることで、ノードNがアドホックネットワークA内を移動して、宛先となる近隣ノードが変わった場合でも、送信カウンタ値を更新する必要がない。このように、時刻情報ではなく、送信回数の総和を用いることで、再送攻撃を簡単かつ効率的に検出することができ、通信負荷の低減を図ることができる。アクセス鍵AKを用いた暗号化通信の例まず、図7および図8を用いて、図2に示したネットワークシステム200における実施例1にかかるアクセス鍵AKを用いた暗号化通信の例について説明する。図7は、ネットワークシステム200におけるアクセス鍵AKを用いた暗号化通信を示す説明図である。図7では、アドホックネットワークAは、ノードN1、ノードN2およびノードN3で構成されているとする。1ノードN2は、9回目に暗号化パケットEPを送信する際に、自ノード内の記憶装置に記憶されている送信カウンタ値を8から9へと更新する。そして、2ノードN2は、送信するパケットPに更新した送信カウンタ値9を含めて暗号化した暗号化パケットEPをノードN1に送信する。3暗号化パケットEPを受信したノードN1は、暗号化パケットEPを復号したパケットPから、送信元のノード番号と送信カウンタ値とを抽出する。ノードN1は、復号したパケットPから抽出した送信カウンタ値9と、自ノード内のノードDB110に保持された受信カウンタ値6とを比較する。この場合、ノードN1は、過去にノードN2が6回目に送信した暗号化パケットEPを受け取ったことがあり、今回受信した暗号化パケットEPはノードN2が9回目に送信したパケットであることが分かる。そのため、受信した暗号化パケットEPが正規の暗号化パケットEPであると判定できる。また、ノードN1は、自ノード内のノードDB110に、送信カウンタ値9を、ノードN2に関連付けたあらたな受信カウンタ値として保持する。4ノードN2は、10回目に暗号化パケットEPを送信する際に、自ノード内の記憶装置に記憶されている送信カウンタ値を9から10へと更新する。そして、5ノードN2は、送信するパケットPに更新した送信カウンタ値10を含めて暗号化した暗号化パケットEPをノードN3に送信する。6暗号化パケットEPを受信したノードN3は、暗号化パケットEPを復号したパケットPから、送信元のノード番号と送信カウンタ値とを抽出する。ノードN3は、復号したパケットPから抽出した送信カウンタ値10と、自ノード内のノードDB110に保持された受信カウンタ値8とを比較する。この場合、ノードN3は、過去にノードN2が8回目に送信した暗号化パケットEPを受け取ったことがあり、今回受信した暗号化パケットEPはノードN2が10回目に送信したパケットであることが分かる。そのため、受信した暗号化パケットEPが正規の暗号化パケットEPであると判定できる。また、ノードN3は、自ノード内のノードDB110に、送信カウンタ値10を、ノードN2に関連付けたあらたな受信カウンタ値として保持する。次に、図8を用いて、ネットワークシステム200におけるアクセス鍵による暗号化通信の詳細について説明する。図8は、ネットワークシステム200におけるアクセス鍵AKを用いた暗号化通信の詳細を示す説明図である。図8では、アドホックネットワークA内のノードN1からノードN2への暗号化通信を説明する。ここでは、ノードN1のノード番号がN1、アクセス鍵が1111、カウンタが1234である場合を説明する。図8において、1ノードN1は、ノードN1のユーザからのデータの入力を受けると、ノードN2との暗号化通信を開始する。ここでは、ユーザからのデータ入力をトリガにして暗号化通信を開始したが、ノードN1が自動的に発生させたデータ送信イベントをトリガとしてもよい。2ノードN1は、まず送信カウンタ値を1増加させる。このときノードN1の送信カウンタ値は1235となる。3次に、ノードN1は、カウンタ1235と送信したいデータを、宛先のノードN2のアクセス鍵AK2によって暗号化し、ノードN1のノード番号N1とともにユニホップ通信する。ただし、ノード番号N1の部分は、ヘッダなどの暗号化されないデータに含まれる。以下の説明においても、同様にノード番号はヘッダなどの暗号化されないデータに含まれる。また、暗号化されるデータに、さらにノード番号を含んでおいてもよい。ノードN1からの暗号化パケットEPを受信したノードN2は、ノード番号から暗号化パケットEPの送信者がノードN1であることを特定する。4次にノードN2は、保持するノードDB110を参照し、ノードN2のアクセス鍵AK2を用いて、受信した暗号化パケットEPを復号する。5次にノードN2は、復号したパケットPから送信カウンタ値を抽出し、ノードDB110に保持している受信カウンタ値と比較する。そして、ノードN2は、送信カウンタ値1235が受信カウンタ値1234よりも大きいため、復号したパケットPは正しく復号できたと見なして、ノードDB110のノード番号N1の受信カウンタ値をパケットPのカウンタ1235に更新する。一方、受信した送信カウンタ値が保持している受信カウンタ値より小さい場合または同一である場合には、受信した暗号化パケットEPは不正パケットと見なして廃棄する。なお、保持している受信カウンタ値との差が所定の閾値以内であれば、正しく復号できたと見なすこともできる。アクセス鍵AKの更新例次に、図2に示したネットワークシステム200において、ノードNがアクセス鍵AKを更新する場合について説明する。図9は、ネットワークシステム200におけるアクセス鍵AKの更新例を示す説明図である。図9では、アドホックネットワークA内のノードN1からノードN2への暗号化通信を説明する。ここでは、ノードN1のノード番号がN1、アクセス鍵AKが1111、受信カウンタ値が1234である場合を説明する。図9において、1ノードN1がアクセス鍵AKを更新する場合、まず、ノードN1は新しいアクセス鍵AK8888を生成する。次に、ノードN1は、送信カウンタ値をインクリメントする。このとき、ノードN1の送信カウンタ値は1358となる。2そして、ノードN1は、送信カウンタ値1358と新しいアクセス鍵AK8888、アドホックネットワークAの固定鍵FKによって暗号化し、ノードN1のノード番号N1とともにユニホップ通信する。ただし、ノード番号N1の部分は、ヘッダなどの暗号化されないデータに含まれて送信される。ノードN1からの暗号化パケットEPを受信したノードN2は、ノード番号からその暗号化パケットEPの送信者がノードN1であることを特定する。3次にノードN2は、保持する固定鍵FKを用いて復号し、復号したパケットPから送信カウンタ値1358と新しいアクセス鍵AK8888を入手する。そしてノードN2は、送信カウンタ値1358と、ノードDBに保持している受信カウンタ値1234とを比較する。ここで、ノードN2は、送信カウンタ値1358が受信カウンタ値1234よりも大きいため、復号したパケットPは正しく復号できたと見なす。4そして、ノードN2は、ノードDB110のノード番号N1の受信カウンタ値を、受信したパケットの送信カウンタ値1358で更新し、アクセス鍵AK1111を新しいアクセス鍵AK8888で更新する。一方、受信した送信カウンタ値が保持している受信カウンタ値より小さい場合または同一である場合には、受信した暗号化パケットEPは不正パケットと見なして廃棄する。なお、保持している受信カウンタ値との差が所定の閾値以内であれば、正しく復号できたと見なすこともできる。新規ノードの導入時におけるアクセス鍵AKの登録例次に、図2に示したネットワークシステム200への新規ノードの導入時における設定例について説明する。図10は、ネットワークシステム200への新規ノードの導入例を示す説明図である。図10において、ネットワークシステム200のアドホックネットワークA内に新規ノードが導入されたとする。図10では、アドホックネットワークA内のノードN2に、新規ノードN1が追加される場合を示している。1新規ノードN1は、まずアクセス鍵AK1111を生成する。次に新規ノードN1は、送信カウンタ値をインクリメントして0001とする。2そして、新規ノードN1は、送信カウンタ値0001とアクセス鍵AK1111を固定鍵FKによって暗号化し、ノード番号N1とともにユニホップ通信する。ただし、ノード番号N1の部分は、ヘッダなどの暗号化されないデータに含まれる。ノードN1からの暗号化パケットEPを受信したノードN2は、ノード番号からその暗号化パケットの送信者がノードN1であることを特定する。3次にノードN2は、保持する固定鍵FKを用いて復号し、送信カウンタ値0001とアクセス鍵AK1111を入手する。そして、ノードN2は、送信カウンタ値と、ノードDB110に保持している受信カウンタ値と比較しようとするが、ノードDB110にノード番号N1に対応する受信カウンタ値を保持していない。そのため、ノードN2はノードN1との通信が初めてであることを認識し、ノードDB110にノード番号N1と、対応するアクセス鍵AKとして1111を格納し、送信カウンタ値0001を対応する受信カウンタ値として格納する。ここで、ノードN1は新規追加でなくてもよく、送信カウンタ値が0001でない場合でも、ノードN2のノードDB110にノード番号N1の情報が登録されていない場合には、同様な処理をおこなう。例えば、ノードN1が可搬である場合に、ノードN2の近隣にノードN1が移動した場合が挙げられる。パケット送信処理次に、暗号化通信におけるパケット送信処理について説明する。図11は、暗号化通信におけるパケット送信処理の詳細を示すフローチャートである。まず、CPU301は、送信イベントが発生したか否かを判定するステップS1101。送信イベントが発生していない場合ステップS1101:No、CPU301は、ステップS1101に戻る。一方、送信イベントが発生した場合ステップS1101:Yes、CPU301は、送信カウンタ値をインクリメントするステップS1102。次に、CPU301は、宛先のノードNのアクセス鍵AKがノードDB110にあるか判定するステップS1103。アクセス鍵AKがある場合ステップS1103:Yes、CPU301は、アクセス鍵AKを用いて送信するパケットを暗号化しステップS1104、宛先のノードNに暗号化パケットEPを送信するステップS1106。そして、パケット送信処理を終了する。一方、アクセス鍵AKがない場合ステップS1103:No、CPU301は、固定鍵FKを用いて送信するパケットを暗号化しステップS1105、宛先のノードNに暗号化パケットEPを送信するステップS1106。そして、パケット送信処理を終了する。パケット受信処理次に、暗号化通信におけるパケット受信処理について説明する。図12は、暗号化通信におけるパケット受信処理の詳細を示すフローチャートである。まず、CPU301は、暗号化パケットEPを受信したか否かを判定するステップS1201。暗号化パケットEPを受信していない場合ステップS1201:No、CPU301は、ステップS1201に戻る。一方、暗号化パケットEPを受信した場合ステップS1201:Yes、CPU301は、自ノードのアクセス鍵AKまたは固定鍵FKを用いて、暗号化パケットEPを復号しステップS1202、正常に復号できたか否かを判定するステップS1203。正常に復号できない場合ステップS1203:No、CPU301は、受信した暗号化パケットEPを不正パケットであるとして廃棄しステップS1206、パケット受信処理を終了する。一方、正常に復号ができた場合ステップS1203:Yes、CPU301は、復号したパケットP内の送信カウンタ値が、ノードDB110内の受信カウンタ値より大きいか否かを判定するステップS1204。受信カウンタ値以下の場合ステップS1204:No、CPU301は、受信した暗号化パケットEPを不正パケットであるとして廃棄しステップS1206、パケット受信処理を終了する。一方、受信カウンタ値より大きい場合ステップS1204:Yes、CPU301は、受信した暗号化パケットEPは正規パケットであると判断し、ノードDB110を更新してステップS1205、パケット送信処理を終了する。ノードDB110の更新とは、図8の5における更新、図9の4における更新、または図10の4における更新である。ノードの送信カウンタ値が消去された場合の処理次に、ノードNの送信カウンタ値が消去された場合について説明する。例えば、ノードNが停電により電源供給されずRAM302の記憶内容送信カウンタ値と受信カウンタ値とアクセス鍵AKが消去された場合である。また、ユーザ操作によってRAM302がリセットされた場合であってもよい。この場合、ノードNは、自ノードが過去に送信した暗号化パケットEPに含めた送信カウンタ値が不明であるため、以後送信する暗号化パケットEPに含めるべき送信カウンタ値が分からず、アドホックネットワークAへ復帰することができない。ノードの送信カウンタ値が消去された場合の動作例1図13は、ノードの送信カウンタ値が消去された場合の動作例1を示す説明図である。図13において、1ノードN1に停電が起こったとする。そのため、ノードN1に保持されていた送信カウンタ値およびアクセス鍵AKが消去されたとする。2ここで、ノードN1は、乱数5819を生成し、ノードN2のノードDB110に保持されたノードN1の受信カウンタ値の要求を示す特別な送信カウンタ値0000と乱数5819を含めたパケットを作成し、固定鍵FKを用いて暗号化する。そして、ノードN1は、ノードN2に対して、暗号化パケットEPをノード番号N1とともにユニホップ通信する。ただし、ノード番号N1の部分はヘッダなどの暗号化されない部分に含まれる。以下の説明においても、同様にノード番号は暗号化されない部分に含まれる。ノードN1からの暗号化パケットEPを受信したノードN2は、ノード番号からその暗号化パケットの送信者がノードN1であることを特定する。次にノードN2は、保持する固定鍵FKを用いて復号し、送信カウンタ値0000と乱数5819を入手する。3送信カウンタ値0000は、受信カウンタ値の要求を示す特別な送信カウンタ値であるため、ノードN2は、ノードDB110を参照し、受信カウンタ値1234と乱数5819を含めたパケットを作成し、固定鍵FKを用いて暗号化する。4そして、ノードN2は、ノードN1に対して、暗号化パケットEPをノード番号N2とともにユニホップ通信する。5ノードN2からの暗号化パケットEPを受信したノードN1は、固定鍵FKを用いて復号し、ノードN2における受信カウンタ値1234と乱数5819を入手する。ノードN1は、乱数が自ノードが送信した乱数と一致することを確認し、正規パケットであると判断された場合には、自ノードの送信カウンタ値を、ノードN2における受信カウンタ値1234で更新する。また、複数のノードNに、要求パケットを送信した場合は、各ノードにおける受信カウンタ値のうち最も大きい値を、自ノードの送信カウンタ値とする。使用済みの乱数を記憶しておくことにより、要求パケットの再送攻撃を防止することができる。ノードの送信カウンタ値が消去された場合の動作例1のシーケンス図図14は、図13に示したノードの送信カウンタ値が消去された場合の動作例1のシーケンス図である。図14において、1送信カウンタ値が消去されたことを検知したノードN1は、2乱数5819を生成し、3受信カウンタ値の要求を示す特別な送信カウンタ値0000と乱数5819を固定鍵FKで暗号化し、ノード番号N1とともに近隣ノードにユニホップ通信する。4暗号化パケットEPを受信したノードN2は、ノード番号から、そのパケットの送信者がノードN1であることを認識するとともに、暗号化パケットEPを固定鍵FKを用いて復号し、送信カウンタ値0000と乱数5819を入手する。ノードN2はノードDB110を参照し、ノードN1の受信カウンタ値を保持していない場合には、暗号化パケットEPを廃棄する。5ノードN2は、受信カウンタ値を保持している場合には、受信カウンタ値1234と乱数5819を固定鍵FKによって暗号化し、ノードN1に送信する。ノードN2からの暗号化パケットEPを受信したノードN1は、暗号化パケットEPを固定鍵FKを用いて復号し、受信カウンタ値1234と乱数5819を入手する。入手した乱数と、自ノードが送信した乱数が一致する場合には、ノードN2における受信カウンタ値をノードN1の送信カウンタ値として更新する。ノードN1は、一致しない場合には、受信した暗号化パケットEPを不正パケットとして廃棄する。ここで、乱数を使用するのは、固定鍵FKを持たない攻撃者による不正パケットの送信を検出するためである。送信カウンタ値更新処理図15は、図13および図14に示した例における送信カウンタ値更新処理の詳細を示すフローチャートである。まず、CPU301は、送信カウンタ値が消去されたか否かを検知するステップS1501。送信カウンタ値が消去されていない場合ステップS1501:No、CPU301は、ステップS1501に戻る。一方、送信カウンタ値が消去されている場合ステップS1501:Yes、CPU301は、乱数を生成し、生成した乱数と受信カウンタ値の要求とを固定鍵FKを用いて暗号化して暗号化パケットEPを作成するステップS1502。次に、CPU301は、作成した暗号化パケットEPを近隣ノードに送信するステップS1503。そして、CPU301は、近隣ノードからの応答を受信したか否かを判定するステップS1504。応答を受信していない場合ステップS1504:No、ステップS1504に戻る。一方、応答を受信した場合ステップS1504:Yes、CPU301は、固定鍵FKを用いて応答された暗号化パケットEPを復号するステップS1505。そしてCPU301は、復号したパケットP内の乱数がステップS1502で生成した乱数と一致するか否かを判定するステップS1506。一致する場合ステップS1506:Yes、CPU301は、パケットP内の受信カウンタ値により、自ノードのノードDB110内の送信カウンタ値を更新してステップS1507、送信カウンタ値更新処理を終了する。一致しない場合ステップS1506:No、CPU301は、受信した暗号化パケットEPは不正パケットであるとして廃棄しステップS1508、送信カウンタ値更新処理を終了する。これにより、ノードNは、送信カウンタ値が消去された場合であっても、送信カウンタ値を更新することができ、アドホックネットワークAに復帰できる。また、要求パケットは固定鍵FKを用いて暗号化されているため、固定鍵FKを有さない攻撃者による要求パケットの解析を防止できる。そして、ノードNは、要求パケットに近隣ノードとの通信ごとに生成した乱数を含めることにより、正規の応答か否かを、通信ごとに判定する。すなわち、通信の都度、乱数が異なるため、前回の通信で近隣ノードが応答した暗号化パケットEPを、今回の要求パケットに対する応答と偽って攻撃者が再送攻撃に利用した場合に、ノードNは、不正パケットと判定でき通信品質を確保できる。また、一度使用した乱数を記憶しておくようにすれば、今回の通信で近隣ノードが応答した暗号化パケットEPを、次回の通信より前に攻撃者が再送攻撃に利用した場合にも、ノードNは、不正パケットと判定でき通信品質を確保できる。このように、時刻情報ではなく、送信回数の総和を用いることで、再送攻撃を簡単かつ効率的に検出することができ、通信負荷の低減を図ることができる。ノードの送信カウンタ値が消去された場合の動作例2図16は、ノードの送信カウンタ値が消去された場合の動作例2を示す説明図である。図16において、1ノードN1に停電が起こったとする。そのため、ノードN1に保持されていた送信カウンタ値およびアクセス鍵AKが消去されたとする。ここで、ノードN1は、近隣ノードであるN2からアクセス鍵AKが送信されてくるまで待機する。2ノードN2は、一定時間ごとにアクセス鍵AKを生成して、近隣ノードに送信する。ここでは、ノードN1は、ノードN2から送信されたアクセス鍵AK6666を受信したとする。3次に、ノードN1は、乱数5819を生成する。そして、ノードN1は、ノードN2のノードDB110に保持されたノードN1の受信カウンタ値の要求を示す特別な送信カウンタ値0000と乱数5819を含めたパケットPを作成し、アクセス鍵AK6666を用いて暗号化する。そして、ノードN1は、ノードN2に対して、暗号化パケットEPをノード番号N1とともにユニホップ通信する。ただし、ノード番号N1の部分は、ヘッダなどの暗号化されない部分に含まれる。以下の説明においても、同様にノード番号は暗号化されない部分に含まれる。ノードN1からの暗号化パケットEPを受信したノードN2は、ノード番号からその暗号化パケットの送信者がノードN1であることを特定する。次にノードN2は、暗号化パケットEPをアクセス鍵AK6666を用いて復号し、送信カウンタ値0000と乱数5819を入手する。4送信カウンタ値0000は、受信カウンタ値の要求を示す特別な送信カウンタ値であるため、ノードN2は、ノードDB110を参照し、受信カウンタ値1234と乱数5819を含めたパケットを作成し、固定鍵FKを用いて暗号化する。5そして、ノードN2は、ノードN1に対して、暗号化パケットEPをノード番号N2とともにユニホップ通信する。6ノードN2からの暗号化パケットEPを受信したノードN1は、固定鍵FKを用いて復号し、ノードN2における受信カウンタ値1234と乱数5819を入手する。ノードN1は、乱数が自ノードが送信した乱数と一致することを確認し、正規パケットであると判断された場合には、自ノードの送信カウンタ値を、ノードN2における受信カウンタ値1234で更新する。また、複数のノードNに、要求パケットを送信した場合は、各ノードにおける受信カウンタ値のうち最も大きい値を、自ノードの送信カウンタ値とする。ノードの送信カウンタ値が消去された場合の動作例2のシーケンス図図17は、図16に示したノードの送信カウンタ値が消去された場合の動作例2のシーケンス図である。図17において、1送信カウンタ値が消去されたことを検知したノードN1は、近隣ノードであるN2からアクセス鍵AKが送信されてくるまで待機する。2ノードN2は、一定時間ごとにアクセス鍵AKを生成して、近隣ノードに送信する。ここでは、ノードN2は、近隣ノードにアクセス鍵AK6666を送信する。3そして、ノードN1は、ノードN2から送信されたアクセス鍵AK6666を受信する。4次に、ノードN1は、乱数5819を生成する。そして、ノードN1は、ノードN2のノードDB110に保持されたノードN1の受信カウンタ値の要求を示す特別な送信カウンタ値0000と乱数5819を含めたパケットPを作成し、アクセス鍵AK6666を用いて暗号化する。5そして、ノードN1は、ノードN2に対して、暗号化パケットEPをノード番号N1とともにユニホップ通信する。6暗号化パケットEPを受信したノードN2は、ノード番号から、そのパケットの送信者がノードN1であることを認識するとともに、暗号化パケットEPを固定鍵FKを用いて復号し、送信カウンタ値0000と乱数5819を入手する。ノードN2はノードDB110を参照し、ノードN1の受信カウンタ値を保持していない場合には、暗号化パケットEPを廃棄する。7ノードN2は、受信カウンタ値を保持している場合には、受信カウンタ値1234と乱数5819を固定鍵FKによって暗号化し、ノードN1に送信する。ノードN2からの暗号化パケットEPを受信したノードN1は、暗号化パケットEPを固定鍵FKを用いて復号し、受信カウンタ値1234と乱数5819を入手する。ノードN1は、入手した乱数と、自ノードが送信した乱数が一致する場合には、ノードN2における受信カウンタ値をノードN1の送信カウンタ値として更新する。ノードN1は、一致しない場合には、受信した暗号化パケットEPを不正パケットとして廃棄する。ここで、乱数を使用するのは、固定鍵FKを持たない攻撃者による不正パケットの送信を検出するためである。送信カウンタ値更新処理図18は、図16および図17に示した例における送信カウンタ値更新処理の詳細を示すフローチャートである。まず、CPU301は、送信カウンタ値が消去されたか否かを検知するステップS1801。送信カウンタ値が消去されていない場合ステップS1801:No、CPU301は、ステップS1801に戻る。一方、送信カウンタ値が消去されている場合ステップS1801:Yes、CPU301は、アクセス鍵AKを受信したか否かを検知するステップS1802。アクセス鍵AKを受信していない場合ステップS1802:No、CPU301は、ステップS1802に戻る。一方、アクセス鍵AKを受信した場合ステップS1802:Yes、CPU301は、乱数を生成し、生成した乱数と受信カウンタ値の要求とをアクセス鍵AKを用いて暗号化して暗号化パケットEPを作成するステップS1803。次に、CPU301は、作成した暗号化パケットEPを近隣ノードに送信するステップS1804。そして、CPU301は、近隣ノードからの応答を受信したか否かを判定するステップS1805。応答を受信していない場合ステップS1805:No、ステップS1805に戻る。一方、応答を受信した場合ステップS1805:Yes、CPU301は、固定鍵FKを用いて応答された暗号化パケットEPを復号するステップS1806。そしてCPU301は、復号したパケットP内の乱数がステップS1803で生成した乱数と一致するか否かを判定するステップS1807。一致する場合ステップS1807:Yes、CPU301は、パケットP内の受信カウンタ値により、自ノードのノードDB110内の送信カウンタ値を更新してステップS1808、送信カウンタ値更新処理を終了する。一致しない場合ステップS1807:No、CPU301は、受信した暗号化パケットEPは不正パケットであるとして廃棄しステップS1809、送信カウンタ値更新処理を終了する。これにより、ノードNは、送信カウンタ値が消去された場合であっても、送信カウンタ値を更新することができ、アドホックネットワークAに復帰できる。また、近隣ノードから送信されたアクセス鍵AKは固定鍵FKを用いて暗号化されているため、固定鍵FKを有さない攻撃者にはアクセス鍵AKを取得されない。そして、アクセス鍵AKを用いて要求パケットを暗号化しているため、攻撃者による要求パケットの解析を防止できる。そして、ノードNは、要求パケットに近隣ノードとの通信ごとに生成した乱数を含めることにより、正規の応答か否かを、通信ごとに判定する。すなわち、通信の都度、乱数が異なるため、前回の通信で近隣ノードが応答した暗号化パケットEPを、今回の要求パケットに対する応答と偽って攻撃者が再送攻撃に利用した場合に、ノードNは、不正パケットと判定でき通信品質を確保できる。また、一度使用した乱数を記憶しておくようにすれば、今回の通信で近隣ノードが応答した暗号化パケットEPを、次回の通信より前に攻撃者が再送攻撃に利用した場合にも、ノードNは、不正パケットと判定でき通信品質を確保できる。さらに、アクセス鍵が一定時間で更新されるため、攻撃者は、暗号化パケットEPをキャプチャしても、一定時間経過後には再送攻撃をおこなうことができなくなる。このように、時刻情報ではなく、送信回数の総和を用いることで、再送攻撃を簡単かつ効率的に検出することができ、通信負荷の低減を図ることができる。実施例2次に、実施例2について説明する。実施例1では、送信カウンタ値は、送信側のノードにおける暗号化パケットEPの送信回数の総和であったが、実施例2では、送信カウンタ値を宛先ノードごとに保持する例である。送信カウンタ値を宛先ノードごとに保持することで、宛先ノードが受信する暗号化パケットEP内の送信カウンタ値は必ず1ずつ増加する。よって、攻撃者がキャプチャした暗号化パケットEPの送信カウンタ値を改ざんし、より大きい値に変更した場合でも、ノードNは、より精度よく再送攻撃の判定ができる。また、ノードNは、改ざんされた送信カウンタ値を受信カウンタ値として誤ってノードDB110に更新することもない。このように、時刻情報ではなく、送信回数の総和を用いることで、再送攻撃を簡単かつ効率的に検出することができ、通信負荷の低減を図ることができる。送信カウンタ値DB1900の記憶内容図19は、送信カウンタ値DB1900の記憶内容の一例を示す説明図である。図19に示すように、送信カウンタ値DB1900は、ノード番号項目のそれぞれに対応付けて、送信カウンタ値項目を有する。ノードDB110は、ノードNが暗号化パケットEPを送信する際にレコードを構成する。ノード番号項目には、アドホックネットワークA内の各ノードNの識別子N1~Nmが記憶される。送信カウンタ値項目には、各ノード番号のノードへ暗号化パケットEPを送信した回数が記憶される。実施例2にかかる暗号化通信の例次に、図20を用いて、実施例2にかかる暗号化通信の例について説明する。図20は、実施例2にかかるネットワークシステム200におけるアクセス鍵AKを用いた暗号化通信を示す説明図である。図20では、アドホックネットワークAは、ノードN1、ノードN2およびノードN3で構成されているとする。1ノードN2は、ノードN1に6回目に暗号化パケットEPを送信する際に、自ノード内の記憶装置に記憶されているノードN1の送信カウンタ値を5から6へと更新する。そして、2ノードN2は、送信するパケットPに更新した送信カウンタ値6を含めて暗号化した暗号化パケットEPをノードN1に送信する。3暗号化パケットEPを受信したノードN1は、暗号化パケットEPを復号したパケットPから、送信元のノード番号と送信カウンタ値とを抽出する。ノードN1は、復号したパケットPから抽出した送信カウンタ値6と、自ノード内のノードDB110に保持されたノードN2の受信カウンタ値5とを比較する。この場合、ノードN1は、過去にノードN2がノードN1に5回目に送信した暗号化パケットEPを受け取ったことがあり、今回受信した暗号化パケットEPはノードN2がノードN1に6回目に送信したパケットであることが分かる。そのため、受信した暗号化パケットEPが正規の暗号化パケットEPであると判定できる。また、ノードN1は、自ノード内のノードDB110に、送信カウンタ値6を、ノードN2に関連付けたあらたな受信カウンタ値として保持する。4ノードN2は、ノードN3に9回目に暗号化パケットEPを送信する際に、自ノード内の記憶装置に記憶されているノードN3の送信カウンタ値を8から9へと更新する。そして、5ノードN2は、送信するパケットPに更新した送信カウンタ値9を含めて暗号化した暗号化パケットEPをノードN3に送信する。6暗号化パケットEPを受信したノードN3は、暗号化パケットEPを復号したパケットPから、送信元のノード番号と送信カウンタ値とを抽出する。ノードN3は、復号したパケットPから抽出した送信カウンタ値9と、自ノード内のノードDB110に保持されたノードN2の受信カウンタ値8とを比較する。この場合、ノードN3は、過去にノードN2がノードN3に8回目に送信した暗号化パケットEPを受け取ったことがあり、今回受信した暗号化パケットEPはノードN2がノードN3に9回目に送信したパケットであることが分かる。そのため、受信した暗号化パケットEPが正規の暗号化パケットEPであると判定できる。また、ノードN3は、自ノード内のノードDB110に、送信カウンタ値9を、ノードN2に関連付けたあらたな受信カウンタ値として保持する。このように、送信側のノードNは、宛先ノードごとに送信回数をカウントし、送信カウンタ値を更新して暗号化パケットEPを送信する。これにより、宛先ノードごとに送信カウンタ値を管理することができる。実施例2において、暗号化通信におけるパケット送信処理とパケット受信処理と、送信カウンタ値更新処理と、については図11、図12、図15、図18に示した処理と同様のため説明を省略する。以上説明したように、本実施の形態にかかる通信方法、ノードおよびネットワークシステムによれば、暗号化パケットEPの送信側のノードNが、送信カウンタ値を暗号化パケットEPに含めておく。受信側のノードNは、前回受信した暗号化パケットEPの送信カウンタ値と、今回受信した暗号化パケットEPの送信カウンタ値とを比較することで、不正パケットを検出する。そのため、ノードNは、近隣ノードから送信された正規の暗号化パケットEPは廃棄せず、攻撃者のノードNcから送信された不正パケットのみを廃棄することができるため、再送攻撃を防ぐことができ、通信の安全性を担保することができる。また、ノードNは、不正パケットを廃棄するため、不正パケットの内容に基づいて処理をおこなう必要がなく、ノードNの処理負担を軽減できる。また、時刻同期を必要とせず不正パケットを判定することができるため、時刻同期用のパケットによる通信負荷が生じないようにできる。さらに、時刻同期を必要としないため、時刻同期用のパケットを送信するゲートウェイがアドホックネットワークA内にない場合でも不正パケットを判定できる。また、送信カウンタ値が消去された場合でも、近隣ノードが保持する受信カウンタ値の要求パケットを送信することにより、早期のアドホックネットワークAへの復帰ができる。また、この際、アクセス鍵AKの受信を待ってアクセス鍵AKを用いて要求パケットを暗号化することで、要求パケットの再送攻撃を防止することができる。また、要求パケットに、乱数を含めておくことにより、近隣ノードから応答された暗号化パケットEPと、不正パケットとを判定することができる。