(57)【要約】【課題】ネットワーク内を流れるパケットを効果的に検証する事を課題とする。【解決手段】複数のノード間で第一のパケットを授受する事で第二のパケットの送信ルートが構築され、複数のノードと複数のノードよりも処理能力が高い検証ノードとを含むネットワークシステムにおいて、検証ノードは、複数のノードの少なくとも一部に、自身が検証ノードであることを示す識別子を含む第三のパケットを送信する通信部と、通信部により複数のノードから第二のパケットが受信された場合には、第二のパケットの正当性を検証する検証部とを有し、複数のノードは各々、他のノードから第一のパケットを受信し、検証ノードから第三のパケットを受信する通信部と、第一のパケットおよび第三のパケットに基づいて、検証ノードおよび他のノードの中から、第二のパケットの送信先を決定する制御部とを有する。
2013145026.tif 000002
【特許請求の範囲】
【請求項１】
複数のノード間で第一のパケットを授受する事で、第二のパケットの送信ルートが構築されるとともに、該複数のノードと該複数のノードよりも処理能力が高い検証ノードとを含むネットワークシステムであって、
前記検証ノードは、
前記複数のノードの少なくとも一部に、自身が検証ノードであることを示す識別子を含む第三のパケットを送信する通信部と、
前記通信部により前記複数のノードのうちのいずれかから前記第二のパケットが受信された場合には、該第二のパケットの正当性を検証する検証部とを有し、
前記複数のノードは各々、
前記複数のノードの内の他のノードから前記第一のパケットを受信するとともに、前記検証ノードから前記第三のパケットを受信する通信部と、
前記第一のパケットおよび前記第三のパケットに基づいて、前記検証ノードおよび前記他のノードの中から、前記第二のパケットの送信先を決定する制御部とを有することを特徴とするネットワークシステム。
【請求項２】
前記前記複数のノードが各々有する前記制御部は、
前記他のノードおよび前記検証ノードの各々に対して、前記第二のパケットを送信する可能性の大小を示す評価値を、前記第一のパケット、前記第三のパケット、前記識別子に基づいて、算出し、
前記評価値の大小に基づいて、前記送信先を決定することを特徴とする請求項１記載のネットワークシステム。
【請求項３】
前記前記複数のノードが各々有する前記制御部は、
前記識別子に基づいて、前記検証ノードに対する評価値を、前記他のノードに対する評価値よりも、重みづけすることを特徴とする請求項２記載のネットワークシステム。
【請求項４】
前記第二のパケットは、該第二のパケットに含まれる少なくとも一部のデータに対して、特定の論理関係を有する第一の値を含み、
前記検証ノードが有する前記検証部は、
前記第二のパケットを受信した場合に、該第二のパケットに含まれる少なくとも一部のデータに対して、特定の論理関係を有する第二の値を算出し、前記第一の値と該第二の値とを比較することを特徴とする請求項１乃至請求項３のいずれか一項に記載のネットワークシステム。
【請求項５】
前記検証ノードが有する前記通信部は、
前記検証部により前記第一の値と前記第二の値とが一致すると判定された場合は、前記第二のパケットを、前記複数のノードのうち、いずれかのノードへ送信するとともに、
前記検証部により前記第一の値と前記第二の値とが一致しないと判定された場合は、前記第二のパケットを、破棄することを特徴とする請求項４に記載のネットワークシステム。
【請求項６】
ネットワークシステムを構成する複数ノードのうち、少なくとも一部と通信可能な検証ノードであって、
通信可能なノードに、自装置が検証ノードであることを示す識別子を含む第一のパケットを送信するとともに、該通信可能なノードから、第二のパケットを受信する通信部と、
前記第二のパケットの正当性を検証するとともに、検証した結果に基づいて、他の通信可能なノードに対して、該第二のパケットの送信を制御する検証部とを有する検証ノード。
【請求項７】
前記第二のパケットは、該第二のパケットに含まれる少なくとも一部のデータに対して、特定の論理関係を有する第一の値を含み、
前記検証部は、
前記第二のパケットを受信した場合に、該第二のパケットに含まれる少なくとも一部のデータに対して、特定の論理関係を有する第二の値を算出し、前記第一の値と該第二の値とを比較することを特徴とする請求項６に記載の検証ノード。
【請求項８】
前記通信部は、
前記検証部により前記第一の値と前記第二の値とが一致すると判定された場合は、前記第二のパケットを、前記他の通信可能なノードへ送信するとともに、
前記検証部により前記第一の値と前記第二の値とが一致しないと判定された場合は、前記第二のパケットを、破棄することを特徴とする請求項７に記載の検証ノード。
【請求項９】
ネットワークシステムを構成する複数ノードの中の一つであり、該複数ノード間で送受信される第一のパケットを検証する検証ノードと通信するノードであって、
前記ネットワークシステムに含まれる他のノードから第二のパケットを受信するとともに、該検証ノードから、自身が検証ノードであることを示す識別子を含む第三のパケットを受信する通信部と、
前記第二のパケットおよび前記第三のパケットに基づいて、前記検証ノードおよび前記他のノードのうち前記第一のパケットの送信先を決定する制御部とを有することを特徴とするノード。
【請求項１０】
前記制御部は、
前記他のノードおよび前記検証ノードの各々に対して、前記第一のパケットを送信する可能性の大小を示す評価値を、前記第二のパケット、前記第三のパケット、前記識別子に基づいて、算出し、
前記評価値の大小に基づいて、前記送信先を決定することを特徴とする請求項９記載のノード。
【請求項１１】
前記制御部は、
前記識別子に基づいて、前記検証ノードに対する評価値を、前記他のノードに対する評価値よりも、重みづけすることを特徴とする請求項１０記載のノード。
【請求項１２】
ネットワークシステムを構成する複数ノードのうち、少なくとも一部と通信可能な検証ノードが、
通信可能なノードに、自装置が検証ノードであることを示す識別子を含む第一のパケットを送信し、
前記通信可能なノードから、第二のパケットを受信し、
前記第二のパケットの正当性を検証し、
検証した結果に基づいて、他の通信可能なノードに対して、該第二のパケットの送信を制御する処理を実行することを特徴とする通信方法。
【請求項１３】
ネットワークシステムを構成する複数ノードの中の一つであり、該複数ノード間で送受信される第一のパケットを検証する検証ノードと通信するノードが、
前記ネットワークシステムに含まれる他のノードから第二のパケットを受信し、
前記検証ノードから、自身が検証ノードであることを示す識別子を含む第三のパケットを受信し、
前記第二のパケットおよび前記第三のパケットに基づいて、前記検証ノードおよび前記他のノードのうち前記第一のパケットの送信先を決定する処理を実行することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示する技術は、アドホックネットワークにおいて、パケットを送受信する技術に関する。
【背景技術】
【０００２】
アドホックネットワークとは、無線通信によってリンクする自己構成型のネットワークの一種である。アドホックネットワークは、通信機能を有する複数の装置により構成される。なお、アドホックネットワークにおける、通信機能を有する装置は、ノードと呼ばれる。また、アドホックネットワーク内の各ノードは、通信対象のノード以外の他のノードを経由してマルチホップ通信によりパケットを送受信することで、アクセスポイントや基地局などの中継局を経由すること無く通信対象のノードとの通信が可能となる。マルチホップ通信は、互いの通信圏内に存在しないノード同士が、各ノードの通信圏内に存在する別のノードを介して通信を可能にする技術である。【０００３】
例えば、アドホックネットワークを利用したシステムとして、各家庭の電力メータに無線通信可能なノードを組み込むことにより、アドホックネットワーク経由で各家庭の消費電力量などを収集する検針システムがある。検針システムでは、各電気メータが検出した各家庭の消費電力量を含むパケットが、各家庭の電気メータが備える各ノードから電力会社のサーバまで転送される。このようなシステムでは、アドホックネットワークにおいて各家庭の電力の使用量などの個人情報を扱うため、秘匿性、改ざん防止などの観点からセキュアな通信を行うことが要求される。【０００４】
アドホックネットワーク内のノード間で送受信されるパケットを暗号化することで、パケットに含まれる情報の秘匿性を確保する技術がある。【０００５】
さらに、パケット内のデータの完全性と、パケットの送信元の正当性を、パケットを受信したノードが検証する。なお、パケット内のデータの完全性とは、パケットに設定されたデータに、改ざんや欠落がないことをいう。また、パケットの送信元の正当性とは、アドホックネットワークに正規に参加するノードが送信元であることをいう。【０００６】
例えば、各ノードが、受信したパケットに対して、メッセージ認証符号（ＭＡＣ）の検証を実行することで、不正ノードから送信された不正パケットを検出する技術がある。当該技術は、不正パケットを検出した場合は、当該パケットを破棄する（特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開ＷＯ２０１１／１２１７１３公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
各ノードが、パケットを検証する処理を行う場合、各ノードにはパケットの送受信処理以外に、検証処理による負荷が生じる。各ノードの処理能力が高くないような場合は特に、送受信処理以外の処理負荷をできるだけ抑える必要がある。【０００９】
さらに、不正ノードから大量のパケットがネットワークに送り込まれた場合などには、ネットワーク全体に対する検証処理の負荷が増大する。つまり、大量のパケットを各ノードで検証することになるため、検証処理による処理負荷によって、ネットワークにおけるパケットの転送速度の低下などを招く。【００１０】
そこで、検証処理を行うことに適した装置に検証処理を行わせることで、通常のノードにおける検証処理による処理負荷を軽減することが考えられる。しかし、従来の技術では、ネットワーク内を流れるパケットを、適宜、検証処理を行うことに適した装置に転送し、ネットワークを流れるパケットを効果的に検証することができなかった。【００１１】
そこで、本発明は、ネットワーク内を流れるパケットを効果的に検証することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一観点によれば、複数のノード間で第一のパケットを授受する事で、第二のパケットの送信ルートが構築されるとともに、該複数のノードと該複数のノードよりも処理能力が高い検証ノードとを含むネットワークシステムにおいて、前記検証ノードは、前記複数のノードの少なくとも一部に、自身が検証ノードであることを示す識別子を含む第三のパケットを送信する通信部と、前記通信部により前記複数のノードのうちのいずれかから前記第二のパケットが受信された場合には、該第二のパケットの正当性を検証する検証部とを有し、前記複数のノードは各々、前記複数のノードの内の他のノードから前記第一のパケットを受信するとともに、前記検証ノードから前記第三のパケットを受信する通信部と、前記第一のパケットおよび前記第三のパケットに基づいて、前記検証ノードおよび前記他のノードの中から、前記第二のパケットの送信先を決定する制御部とを有する。
【発明の効果】
【００１３】
本発明の一観点によれば、ネットワーク内を流れるパケットについて、パケット内のデータの完全性と、パケットの送信元の正当性を効果的に検証することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本実施例に係るアドホックネットワークシステムと従来のアドホックネットワークシステムとを比較する為の説明図である。
【図２】図２は、管理パケットのデータ構成例を示す図である。
【図３】図３は、データパケットのデータ構成例を示す図である。
【図４】図４は、ノードＮｘの機能ブロック図である。
【図５】図５は、従来のルーティングテーブルのデータ構成例と本実施例に係るルーティングテーブルのデータ構成例とを比較する為の図である。
【図６】図６は、シンクノードＳＮからノードＮｂに時刻パケットが到達する経路を説明する為の図である。
【図７】図７は、ノード間でのハローパケットの授受を説明する為の図である。
【図８】図８は、鍵情報記憶部１３２が記憶するデータ例である。
【図９】図９は、ノードＮｔｅｓｔの機能ブロック図である。
【図１０】図１０は、ルーティングテーブル生成処理のフローチャートである。
【図１１】図１１は、ノードＮｘにおける転送処理のフローチャートである。
【図１２】図１２は、ノードＮｔｅｓｔにおける転送処理のフローチャートである。
【図１３】図１３は、ノードＮｘのハードウェア構成例である。
【図１４】図１４は、検証ノードＮｔｅｓｔのハードウェア構成例である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照して、この発明にかかる通信装置、通信方法、およびシステムの実施の形態を詳細に説明する。
【００１６】
図１は、本実施例に係るアドホックネットワークシステムと従来のアドホックネットワークシステムとを比較する為の説明図である。
【００１７】
従来のアドホックネットワークシステムは、複数のノードＮｘと、シンクノードＳＮと、サーバＳとを含む。サーバＳとシンクノードＳＮとはインターネット、ＬＡＮ、ＷＡＮなどの通常ネットワーク１０１を介して接続されている。シンクノードＳＮとノードＮｘとは、アドホックネットワーク１００を介して接続されている。
【００１８】
アドホックネットワーク１００内には、複数のノードＮｘが設けられている。図１では、代表としてノードＮａ〜Ｎｈを示している。ノードＮａ乃至Ｎｈを区別する必要がない場合は、ノードＮｘと記す。
【００１９】
シンクノードＳＮは、アドホックネットワーク１００と通常ネットワーク１０１とを接続する中継機器である。シンクノードＳＮは、アドホックネットワーク１００のプロトコルの形式の情報と通常ネットワーク１０１のプロトコルの形式の情報の両方を送受信可能である。
【００２０】
また、シンクノードＳＮは、アドホックネットワーク１００と通常ネットワーク１０１との間で情報をプロトコル変換することにより、通信を行う。例えば、アドホックネットワーク１００内のノードＮｘのいずれかからサーバＳ宛に送信されたパケットは、シンクノードＳＮにてプロトコル変換される。その後、シンクノードＳＮが、パケットを、通常ネットワーク１０１に送信することで、パケットはサーバＳに到達する。
【００２１】
各ノードＮｘは、他ノードＮｘまたはシンクノードＳＮとマルチホップ通信が可能な装置である。なお、他ノードＮｘまたはシンクノードＳＮは、通信可能圏内に存在する必要がある。アドホックネットワーク１００では、すべてのノードＮａ〜Ｎｈが直接シンクノードＳＮと通信できる必要はなく、他のノードを経由する事で、各ノードＮａ〜Ｎｈは、シンクノードＳＮと通信する。
【００２２】
各ノードＮｘは、ルーティングテーブルを生成する。そして、各ノードＮｘは、ルーティングテーブルに従って、パケットを送信する。図１においては、シンクノードにパケットを送信する場合には、従来のアドホックシステムでは、白抜き矢印および斜線矢印で示された経路に従うものとする。
【００２３】
例えば、ノードＮｃからシンクノードＳＮへ向けてパケットが送信される場合には、パケットは、ノードＮｂおよびノードＮａを経由する。また、パケットがシンクノードＳＮへ送信される過程で、経路に含まれるノードＮｂやノードＮａは、パケット内のデータの完全性と、パケットの送信元の正当性を検証する。例えば、ノードＮｂやノードＮａは、ＭＡＣ値を利用して、検証を実行する。
【００２４】
一方、本実施例に係るアドホックネットワークシステムは、複数のノードＮｘと、シンクノードＳＮと、サーバＳと、さらに検証ノードＮｔｅｓｔを含む。
【００２５】
Ｎｔｅｓｔは、ノードＮｘと比較して、処理能力が高い装置である。そして、検証ノードＮｔｅｓｔは、ノードＮｘとマルチホップ通信が可能な装置である。なお、本実施の形態においては、ノードＮｘは、他ノードＮｘまたはシンクノードＳＮ以外に、検証ノードＮｔｅｓｔともマルチホップ通信が可能である。なお、他ノードＮｘまたはシンクノードＳＮ、検証ノードＮｔｅｓｔは、通信可能圏内に存在する必要がある。
【００２６】
ただし、ノードＮａ〜ノードＮｈのいずれかが、Ｎｔｅｓｔの機能を果たしてもよい。その場合は、他のノードよりも処理能力が高いことが要される。
【００２７】
本実施例においては、本実施例に係るルーティングテーブルに従って、パケットが転送される。図１においては、シンクノードにパケットを送信する場合には、本実施例におけるアドホックシステムでは、白抜き矢印および黒色矢印で示された経路に従うものとする。
【００２８】
例えば、ノードＮｃからシンクノードＳＮへ向けてパケットが送信される場合には、パケットは、ノードＮｂ、Ｎｔｅｓｔ、ノードＮａを経由する。また、パケットがシンクノードＳＮへ送信される過程で、経路に含まれるノードＮｔｅｓｔが、パケット内のデータの完全性と、パケットの送信元の正当性を検証する。例えば、ノードＮｔｅｓｔは、ＭＡＣ値を利用して、検証を実行する。
【００２９】
ノードＮｂおよびＮａは、ＭＡＣ検証を実行しなくても良い。しかし、処理能力に余裕がある場合には、他のノードＮｂおよびＮａもＭＡＣ検証を実行してもよい。以下では、ＭＡＣ値を利用した検証は、Ｎｔｅｓｔのみが行い、ノードＮｘは、ＭＡＣ検証を実施しないとして説明を行う。
【００３０】
図１からわかる様に、従来のアドホックネットワークシステムに対して、本願実施例のアドホックネットワークシステムは、パケットの送信経路に、検証ノードＮｔｅｓｔを経由する経路を含む点が異なる。
【００３１】
次に、アドホックネットワークを流れるパケットについて、説明する。アドホックネットワークを流れるパケットには、複数種類のパケットが含まれる。例えば、管理パケット、データパケットがある。管理パケットとは、ブロードキャストされるパケットであって、各ノードＮｘまたは検証ノードＮｘが他のノードまたはシンクノードパケットＳＮと通信するために必要な情報を共有するためのパケットである。例えば、各ノードがセッション鍵を周囲のノードに配布する為のハローパケットや、シンクノードが時刻情報を各ノードに配布する為の時刻パケットが、管理パケットに含まれる。
【００３２】
また、データパケットとは、ユニキャストされるパケットであって、指定された送信先に送信したいデータを含むパケットである。
【００３３】
図２は、管理パケットのデータ構成例を示す図である。なお、図２に示す管理パケットは、シンクノード、各ノードＮｘ、および検証ノードＮｔｅｓｔの各々がブロードキャストすることで、ブロードキャストした装置と通信可能範囲に存在する他の装置との間で授受される。
【００３４】
管理パケット１には、ヘッダ情報格納部２、ペイロードデータ格納部３が、それぞれ割り当てられる。ヘッダ情報格納部２には、ヘッダ情報が格納される。ヘッダ情報は、宛先アドレス、ローカル送信元アドレス、グローバル送信元アドレス、パケットタイプ、付加情報を含む。ペイロードデータ格納部３には、ペイロードデータが格納される。
【００３５】
宛先アドレスは、ブロードキャスト専用の特別なアドレスである。例えば、宛先アドレスは、予め用意されたアドレス「２５５．２５５．２５５．２５５」である。各ノードは、個別に設定されたアドレス宛に送信されたパケットを受信するが、当該特別なアドレス宛に送信されたパケットも受信する。つまり、特別なアドレスが設定されたパケットは、当該パケットを送信したノードと通信可能な範囲に存在する全てのノードにより受信される。
【００３６】
ローカル送信元アドレスは、管理パケット１を送信する装置のアドレスに関する情報である。つまり、ローカル送信元アドレスは、マルチホップ通信の途中で、管理パケットが一回送信される毎に、送信する主体となる装置のアドレスに書きかわる。グローバル送信元アドレスは、ペイロードデータを生成した装置のアドレスに関する情報である。つまり、グローバル送信元アドレスは、マルチホップ通信において、始点となった装置のアドレスに関する情報である。
【００３７】
パケットタイプは、当該パケットの種別を示す情報である。例えば、管理パケットである時刻パケットである場合には「０」が、管理パケットであるハローパケットである場合には「１」が設定される。また、データパケットの場合には、「２」が設定される。
【００３８】
ブロードキャストされた管理パケットを受信した各ノードは、パケットタイプに応じて、受信した管理パケットを他のノードへ転送するか否かを判定する。例えば、ノードＮｘが、宛先アドレスに特別なアドレスが設定された管理パケットを受信した場合に、パケットタイプが「０」である場合は、受信した管理パケットを、他のノードＮｘへ転送する。つまり、時刻パケットは、マルチホップ通信の対象として、ネットワークを転送される。
【００３９】
一方、ノードＮｘが、宛先アドレスに特別なアドレスが設定された管理パケットを受信した場合に、パケットタイプが「１」である場合は、受信した管理パケットを、他のノードＮｘへ転送しない。つまり、ハローパケットは、マルチホップ通信の対象から除外され、パケットの転送は、あるノードＮｘで収束する。
【００４０】
なお、本実施例においては、管理パケットのデータ構成を、ハローパケットと、時刻パケットで統一する為に、ハローパケットにおけるヘッダ情報には、ローカル送信元アドレスとグローバル送信元アドレスが含まれるとした。しかし、ハローパケットには、ローカル送信元アドレスとグローバル送信元アドレスには、同一のアドレスが設定されるため、ハローパケットのヘッダ情報には、ローカル送信元アドレスのみが含まれるとしても良い。
【００４１】
付加情報は、上記アドレスおよびパケットタイプ以外のヘッダ情報であって、パケットの種別に応じた情報である。例えば、パケットが時刻パケットである場合には、付加情報は、ホップ数に関する情報である。そして、ホップ数が、付加情報としてパケット１のヘッダ情報格納部２に格納される。ホップ数は、パケットがマルチホップ通信された回数である。例えば、シンクノードＳＮが送信した時刻パケットを、ノードＮａおよびノードＮｂを経由して、ノードＮｃが受信した場合は、ノードＮｃが受信した管理パケットには、ホップ数として「３」が設定されている。
【００４２】
また、パケットがハローパケットである場合には、付加情報は、ノード種別の情報である。そして、ノード種別が、付加情報としてパケット１のヘッダ情報格納部２に格納される。ノード種別は、ハローパケットを生成したノードの種別を示す情報であって、ノードの種別を識別する為の識別子である。例えば、ハローパケットを生成したノードが、検証ノードＮｔｅｓｔである場合には、ノード種別は「３」である。また、ハローパケットを生成したノードが、検証ノードＮｔｅｓｔでない場合には、ノード種別は「４」である。
【００４３】
ペイロードデータは、ヘッダ情報を除く情報である。また、ペイロードデータは、パケットの種別に応じて、内容が異なる。例えば、パケットが時刻パケットである場合には、時刻の情報がペイロードデータとして、パケット１のペイロードデータ格納部３に格納される。なお、時刻パケットを受信した各ノードＮｘまたは検証ノードＮｔｅｓｔは、ペイロードデータ格納部から時刻の情報を取得し、各ノードＮｘまたは検証ノードＮｔｅｓｔの時刻を設定する。
【００４４】
また、例えば、パケットがハローパケットである場合には、ペイロードデータは、セッション鍵を含む情報である。セッション鍵は、各ノードＮｘおよび検証ノードＮｔｅｓｔの内、２つのノードで通信を行う為に用いられる鍵である。セッション鍵は、ペイロードデータを暗号化する場合などに利用される。
【００４５】
セッション鍵でペイロードデータを暗号化する場合は、各ノードは、送信先に応じたセッション鍵で、ペイロードデータを暗号化する。よって、データパケットを転送するノードは、受信したデータパケット内のペイロードデータを、自身のセッション鍵で復号したのち、次の送信先のセッション鍵で再暗号化する。ペイロードデータを復号することで、送信元の正当性を検証することができる。
【００４６】
ハローパケットを受信した各ノードＮｘまたは検証ノードＮｔｅｓｔは、ペイロードデータ格納部からセッション鍵の情報を取得し、各ノードＮｘまたは検証ノードＮｔｅｓｔの鍵情報記憶部に、ローカル送信元アドレスと対応付けて、記憶する。
【００４７】
一方、ペイロードデータは、セッション鍵ではなく、シンクノードＳＮまたはサーバＳと共有しているサーバ鍵で、暗号化されてもよい。サーバ鍵をペイロードデータの暗号化に利用する場合は、各ノードは、復号化および再暗号化を行う必要はない。グローバル送信先アドレスとしてシンクノードＳＮが指定されている場合に、シンクノードＳＮがパケットを受信した時点で、ペイロードデータは復号される。
【００４８】
このように、各ノードＮｘは、復号化および再暗号化の処理を行う必要がない為、セッション鍵を利用してペイロードデータを暗号化する場合と比較して、処理負荷が低減される。なお、暗号化にサーバ鍵を利用する場合は、ハローパケットのペイロードデータ格納部は、空であっても構わない。本実施例においては、暗号化にサーバ鍵を利用するとして説明を行う。
【００４９】
図３は、データパケットのデータ構成例を示す図である。データパケット４には、ヘッダ情報格納部５、ペイロードデータ格納部６、値格納部７がそれぞれ割り当てられる。ヘッダ情報格納部５には、ヘッダ情報が格納される。ヘッダ情報は、ローカル送信元アドレス、ローカル送信先アドレス、グローバル送信元アドレス、グローバル送信先アドレス、パケットタイプ、付属情報を含む。ペイロードデータ格納部６には、ペイロードデータが格納される。値格納部７には、パケット内の所定のデータを対象として算出された値が格納される。
【００５０】
ローカル送信元アドレス、グローバル送信元アドレス、パケットタイプは、管理パケット１と同様の情報である。ただし、データパケットの場合には、パケットタイプとして「２」が設定される。
【００５１】
ローカル送信先アドレスは、マルチホップ通信を形成する一つの通信において、データパケット４の送信先となる装置のアドレスに関する情報である。グローバル送信先アドレスは、ペイロードデータ格納部６に記述されるペイロードデータを最終的に受信する装置のアドレスに関する情報である。つまり、グローバル送信先アドレスは、マルチホップ通信における終点となる装置のアドレスに関する情報である。
【００５２】
付属情報は、各種アドレスおよびパケットタイプ以外のヘッダ情報である。例えば、付属情報として、ホップ数や送信日時などに関する情報が格納される。
【００５３】
ペイロードデータは、ヘッダ情報および値を除く情報である。ペイロードデータは、例えば、各ノードＮｘがセンサから取得したデータである。例えば、ノードＮｃにより取得された消費電力量のデータを、ペイロードデータ格納部６に設定する。
【００５４】
値は、データパケット内の所定のデータに対して所定の論理関係を有する値である。例えば、ペイロードデータ、グローバル送信先アドレス、およびグローバル送信元アドレスを対象として、算出されたＭＡＣ値である。
【００５５】
図３に示すデータパケットは、各ノードＮｘおよび検証ノードＮｔｅｓｔが有するルーティングテーブルに従って、アドホックネットワーク内を流れる。そして、本実施例においては、データパケット内のペイロードデータに対してデータの完全性が検証されるとともに、グローバル送信元の正当性が検証される。
【００５６】
次に、図４を利用して、ノードＮｘの処理部を説明する。図４は、ノードＮｘの機能ブロック図である。
【００５７】
ノードＮｘは、通信部１１、制御部１２、記憶部１３、取得部１４を含む。通信部１１は、他のノードＮｘ，検証ノードＮｔｅｓｔ、またはシンクノードＳＮと無線通信する処理部である。例えば、通信部１１は、通信可能な範囲に存在する他のノードＮｘと、ハローパケットやデータパケットを送受信する。通信部１１は、検証ノードＮｔｅｓｔと通信可能な場合に、データパケットを検証ノードＮｔｅｓｔに送信する。
【００５８】
制御部１２は、ノードＮｘの各種処理を制御する処理部である。例えば、ノードＮｘがグローバル送信元となる場合に、制御部１２は各種パケットを生成する。また、制御部１２は、管理パケットに基づいて、ルーティングテーブルを生成する。また、制御部１２は、ルーティングテーブルに基づいて、データパケットのローカル送信先となるノードを決定する。
【００５９】
記憶部１３は、各種情報を記憶する。例えば、記憶部１３は、暗号化処理に用いられる暗号鍵、ルーティングテーブルなどを記憶する。記憶部１３は、ルーティングテーブル記憶部１３１と、鍵情報記憶部１３２を含む。
【００６０】
取得部１４は、データを取得する処理部である。例えば、取得部１４は、ノードＮｘと通信可能なセンサから、消費電力量や温度等のデータを取得する。なお、取得されたデータは、データパケットのペイロードデータとして、他のノードＮｘ、検証ノードＮｔｅｓｔまたはシンクノードへ送信される。
【００６１】
また、制御部１２は、パケット生成部１２１、算出部１２２、暗号化部１２３、ルート生成部１２４、復号化部１２５を含む。
【００６２】
パケット生成部１２１は、データパケット、ハローパケットを生成する処理部である。例えば、ノードＮｘがグローバル送信元となる場合には、パケット生成部１２１は、ヘッダ情報格納部におけるグローバル送信元アドレスおよびローカル送信元アドレスに、自ノードのアドレスを設定する。さらに、グローバル送信先アドレスを決定するとともに、決定したグローバル送信先アドレスをヘッダ情報格納部に設定する。
【００６３】
そして、パケット生成部１２１は、取得部１４が取得したデータを、ペイロードデータ格納部に設定する。また、パケット生成部１２１は、記憶部１３に記憶されたルーティングテーブルを参照し、データパケットのローカル送信先アドレスを決定する。パケット生成部１２１は、決定したアドレスをヘッダ情報格納部におけるローカル送信先アドレスに設定する。さらに、パケット生成部１２１は、データパケットを示すパケットタイプ「２」を、ヘッダ情報格納部に設定する。
【００６４】
パケット生成部１２１は、受信したデータパケットを転送する場合には、データパケットを更新する処理を行う。つまり、ローカル送信元アドレス、ローカル送信先アドレスが更新される。詳細については、後述する。
【００６５】
一方、ハローパケットを生成する際には、パケット生成部１２１は、ヘッダ情報格納部におけるグローバル送信元アドレスおよびローカル送信元アドレスに、自ノードのアドレスを設定する。パケット生成部１２１は、ハローパケットのパケットタイプに「１」を設定するとともに、ハローパケットの付加情報に、ノード種別として「４」を設定する。ノード種別「４」は、ノードＮｘは、検証ノードＮｔｅｓｔではないことを示す。また、パケット生成部１２１は、セッション鍵の情報など、所定の情報をペイロードデータ格納部に設定する。
【００６６】
算出部１２２は、ノードＮｘがグローバル送信元となる場合に、データパケット内の所定のデータに対して所定の論理関係を有する値を算出する処理部である。本実施例においては、例えば、算出部１２２は、ＭＡＣ鍵を用いて、ペイロードデータ、グローバル送信先アドレス、およびグローバル送信元アドレスに対するＭＡＣ値を算出する。ＭＡＣ鍵は、ノードＮｘと、検証ノードＮｔｅｓｔと、シンクノードＳＮとで事前に共有された鍵である。また、ノードＮｘごとに、異なるＭＡＣ鍵であってもよい。
【００６７】
暗号化部１２３は、必要に応じて、ペイロードデータの暗号化処理を実行する。例えば、暗号化部１２３は、鍵情報記憶部１３２に記憶された暗号鍵を用いて、ペイロードデータを暗号化する。
【００６８】
ルート生成部１２４は、通信部１１が受信した管理パケットに基づいて、ルーティングテーブルを生成する。そして、ルート生成部１２４は、生成したルーティングテーブルを、ルーティングテーブル記憶部１３１に格納する。なお、ルート生成部１２４は、管理パケットを受信するたびに、または定期的に、ルーティングテーブルを更新する。
【００６９】
次に、復号化部１２５は、必要に応じて、暗号化されたペイロードデータを復号する。例えば、復号化部１２５は、パケット内のヘッダ情報記憶部を参照し、グローバル送信先アドレスが自ノードのアドレスであるか判定する。グローバル送信先アドレスが自ノードのアドレスである場合は、復号化部１２５は、ペイロードデータを復号する。
【００７０】
なお、ノードＮｘの制御部１２は、さらに検証部を備えてもよい。そして、制御部は、ノードＮｘの処理能力に対して、処理負荷が所定以下である場合は、検証部を機能させるとしてもよい。検証部は、受信したパケットに格納された値を用いて、ペイロードデータの完全性およびグローバル送信元の正当性を検証する。具体的には、後述する検証ノードＮｔｅｓｔの検証部２２３と同様の処理を行う。
【００７１】
図５は、従来のルーティングテーブルのデータ構成例と本実施例に係るルーティングテーブルのデータ構成例とを比較する為の図である。図５Ａは、本実施例に係るルーティングテーブルのデータ構成例を示す図である。図５Ｂは、従来のルーティングテーブルのデータ構成例を示す図である。
【００７２】
本実施例におけるルーティングテーブル記憶部１３１が記憶するルーティングテーブルは、グローバル送信先アドレスと、ローカル送信先アドレスと、通信強度と、ホップ数と、ノード種別と、評価値とを対応付けて記憶する。なお、図５Ａは、ノードＮｂが有するルーティングテーブルを示している。
【００７３】
一方、従来のルーティングテーブルは、グローバル送信先アドレスと、ローカル送信先アドレスと、通信強度と、ホップ数と、評価値とを対応付けて記憶する。つまり、従来のルーティングテーブルは、ノード種別に関する情報を有さない。
【００７４】
ここで、図５Ａに示すルーティングテーブルは、両者の差異を説明する為に、通信強度、ホップ数、ノード種別を示したが、ルーティングテーブルとは異なるテーブルで、通信強度、ホップ数、ノード種別を管理してもよい。この場合は、通信強度、ホップ数、ノード種別に基づいて、算出された評価値が、グローバル送信先アドレスとローカル送信先アドレスに対応付けて記憶される。さらに、評価値が所定以上のグローバル送信先アドレスと、ローカル送信先アドレスとの組み合わせのみを、ルーティングテーブルに記憶するとしても良い。
【００７５】
グローバル送信先アドレスは、マルチホップ通信における終点に相当する装置のアドレスの情報である。ローカル送信先アドレスは、マルチホップ通信内の一つの通信の送信先となる装置のアドレスの情報である。なお、ローカル送信先アドレスには、ルーティングテーブルを記憶するノードＮｘが通信可能な他のノードのアドレスの情報が記憶される。
【００７６】
通信強度は、各ローカル送信先アドレスに対応するノードと、自ノードとの通信における安定性の強弱を示す値である。例えば、通信強度は、信号受信強度やローカル送信先アドレスに対応するノードから受信した管理パケットの数およびデータパケットの数に基づいて、算出される。また、通信強度は、通信成功確率、誤り率、受信電界強度などに基づいて、算出されても良い。本実施例においては、通信強度は、ローカル送信先アドレスに対応するノードから受信した管理パケットの数およびデータパケットの数の和である。
【００７７】
ホップ数は、グローバル送信先アドレスに対応するノードにより送信された管理パケットを、自ノードで受信するまでに、何度転送されたかを示す値である。例えば、時刻パケット内の付加情報として設定された、ホップ数が、ルーティングテーブルにおける項目「ホップ数」に記憶される。
【００７８】
ノード種別は、ローカル送信元アドレスに対応するノードの種類を示す情報である。ハローパケットに設定されたノード種別に対応する情報が、ルーティングテーブルにおける項目「ノード種別」に記憶される。
【００７９】
評価値は、グローバル送信先アドレスとローカル送信先アドレスとの組み合わせごとに、データパケットのローカル送信先を、いずれのアドレスとすることが好ましいかを示す値である。つまり、評価値は、データパケットが、各ローカル送信先アドレスに送信される可能性の大小を示す。評価値は、通信強度、ホップ数、ノード種別に基づいて算出される。
【００８０】
評価値は、通信強度が多くなるほど、ホップ数が小さくなるほど、大きな値として算出される。さらに、評価値は、ノード種別が、ローカル送信先アドレスに相当するノードが、検証ノードであることを示す場合に、大きな値として算出される。例えば、数１に基づいて、算出される。
【００８１】
【数１】
2013145026.tif 000003
【００８２】
なお、数１においては、評価値がＸ、通信強度がＡ、ホップ数がＢ、定数がα、評価係数がβであらわされる。なお、定数は、評価値を適切な範囲とするために補正する為の値である。例えば、αは「６」である。また、評価係数は、ノード種別に応じた重みづけを行う為の値である。つまり、ノード種別に応じて、値が変更される。例えば、ノード種別が検証ノードであることを示す「３」である場合は、βは「２」である。一方、ノード種別が検証ノードでないことを示す「４」である場合は、βは「１」である。
【００８３】
ここで、図５Ｂに示すように、従来のルーティングテーブルは、ノード種別を管理することができない。したがって、評価値は、ノード種別を加味することなく算出される。よって、従来の手法に従って、通信強度が高いほど、さらにホップ数が小さいほど、評価値が高くなる。例えば、図５Ｂに示す評価値が算出される。よって、グローバル送信先アドレスを、シンクノードＳＮのアドレスとした場合に、ノードＮｂは、もっとも評価値が高いノードＮａをローカル送信先として決定する。
【００８４】
一方、本実施例によれば、検証ノードＮｔｅｓｔがアドホックネットワークに加わるとともに、評価値の算出において、さらにノード種別が加味される。したがって、Ｎｔｅｓｔに対応する評価値が、他のノードＮｘの評価値と比較して、重みづけされる。例えば、ノードＮｘにおけるルート生成部１２４は、ノード種別が「３」である場合には、評価係数に「２」を採用することで、評価値をノードＮｘである場合と比べて、２倍にすることができる。
【００８５】
したがって、本実施例においては、グローバル送信先アドレスを、シンクノードＳＮのアドレスとした場合に、ノードＮｂは、もっとも評価値が高いノードＮｔｅｓｔをローカル送信先として決定する。よって、検証ノードＮｔｅｓｔに、検証する必要があるデータパケットを転送することができる。
【００８６】
なお、ノードＮｂ以外のノードＮｘにおいても、検証ノードＮｔｅｓｔと通信可能である場合には、検証ノードをローカル送信先Ｎｔｅｓｔとする評価値に重みづけがなされる為、データパケットが、検証ノードＮｔｅｓｔに転送される可能性が高くなる。ひいては、アドホックネットワークシステム全体において、検証ノードＮｔｅｓｔを経由して、パケットが転送される可能性が高くなり、不正なパケットは、アドホックネットワークから効果的に破棄される。
【００８７】
次に、図６および図７を利用して、管理パケットの送受信によるルーティングテーブルの生成について、詳細に説明する。まずは、時刻パケットを、ノードＮｘが受信した場合の、ルーティングテーブルの生成について、説明する。図６は、シンクノードＳＮからノードＮｂに時刻パケットが転送される経路を説明する為の図である。なお、ノードＮｘのルート生成部１２４が、ルーティングテーブルを生成する。
【００８８】
時刻パケットが、シンクノードＳＮから送信されてノードＮｂにより受信されるまでに、複数の経路が考えられる。なお、図６では、複数の経路のうち、３つの経路を示す。図６では、一部経路を説明する為に、図１に示すノードＮｘのうち、ノードＮａ、ノードＮｂ、ノードＮｄ、ノードＮｆ、検証ノードＮｔｅｓｔおよびシンクノードＳＮを示す。
【００８９】
なお、図６に示さない経路でも、マルチホップ通信により、時刻パケットはアドホックネットワーク内を流れている。さらに、ノードＮｂ以外のノードについても、時刻パケットの受信に応じて、ルーティングテーブルを生成する。
【００９０】
シンクノードＳＮと通信可能なノードＮｘは、ノードＮａとノードＮｄであるとする。また、ノードＮａは、ノードＮｔｅｓｔとノードＮｂと通信可能であるとする。ノードＮｂは、ノードＮａ、ノードＮｃ、ノードＮｆ、検証ノードＮｔｅｓｔと通信可能であるとする。ノードＮｄは、シンクノードＳＮ、ノードＮｅ、ノードＮｆと通信可能であるとする。ノードＮｆは、ノードＮｂ、ノードＮｄ、ノードＮｇ、ノードＮｈ、検証ノードＮｔｅｓｔと通信可能であるとする。検証ノードＮｔｅｓｔは、ノードＮａ、ノードＮｂ、ノードＮｆと通信可能であるとする。
【００９１】
まず、シンクノードＳＮは、時刻パケットの、宛先アドレスに、ブロードキャスト用の特別なアドレスを設定する。さらに、シンクノードＳＮは、ローカル送信元アドレスおよびグローバル送信元アドレスに、シンクノードＳＮのアドレスを設定する。さらに、シンクノードＳＮは、パケットタイプに、時刻パケットであることを示す「０」を設定する。そして、シンクノードＳＮは、付加情報として、ホップ数「１」を設定する。また、シンクノードＳＮは、ペイロードデータ格納部に、時刻に関する情報を格納する。そして、シンクノードＳＮは、時刻パケットをブロードキャストする。
【００９２】
シンクノードＳＮは、例えば、電源がオンになった場合に、時刻パケットをブロードキャストする（１００１）。なお、シンクノードＳＮと通信可能なノードは、ＮａとＮｄであるとすると、１００１でブロードキャストされた時刻パケットは、ＮａおよびＮｂにより受信される。ここで、ノードＮａとノードＮｂは、宛先アドレスに設定されたアドレスが特別なアドレスであることから、受信したパケットは、自ノード宛のパケットであると認識する。
【００９３】
ここで、複数の経路の内、シンクノードＳＮから、ノードＮａを経由して、ノードＮｂに時刻パケットが到達する経路１がある。経路１においては、シンクノードが送信した時刻パケットは、シンクノードと通信可能なノードＮａにより受信される（１００１）。そして、ノードＮａは、パケットタイプが「０」であることから、受信したパケットをさらに、転送する。
【００９４】
なお、転送する前に、ノードＮａは、時刻パケットのローカル送信元アドレスと、付加情報であるホップ数とを更新する。具体的には、ローカル送信元アドレスに、ノードＮａのアドレスを設定するとともに、ホップ数に１を加える。よって、付加情報は、ホップ数「２」に更新される。また、ここでは、ノードＮａにおけるルーティングテーブルの生成については、詳細は説明しないが、ノードＮａでも、時刻パケットを受信した場合に、ルーティングテーブルの生成処理が行われる。
【００９５】
そして、更新された時刻パケットを、ノードＮａはブロードキャストする（１００２）。そして、ブロードキャストされた時刻パケットは、ノードＮａと通信可能なノードＮｂにより受信される。なお、図６の例では、ブロードキャストされた時刻パケットは、ノードＮａと通信可能なノードＮｔｅｓｔにも受信される。
【００９６】
経路１を経て、ノードＮｂに到達した時刻パケットには、グローバル送信元アドレスに「シンクノードＳＮのアドレス」が、ローカル送信元アドレスに「ノードＮａのアドレス」が、付加情報にはホップ数「２」という情報が設定されている。
【００９７】
次に、ノードＮｂは、ルーティングテーブルに、新たにレコードを追加する（１００３）。具体的には、グローバル送信先アドレスに、時刻パケットのグローバル送信元アドレス「シンクノードＳＮのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるローカル送信先アドレスに、時刻パケットのローカル送信元アドレス「ノードＮａのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるホップ数に、時刻パケットの付加情報「２」を設定する。なお、ノードＮｂは、受信した時刻パケットを、他のノードと同様に、さらに転送する。
【００９８】
一方、シンクノードＳＮから、ノードＮａ、さらにＮｔｅｓｔを経由して、ノードＮｂに時刻パケットが到達する経路２がある。経路２は、図６における、１００１および１００２、１００４で各々ブロードキャストされた時刻パケットが、Ｎｂにより受信されることとなる。
【００９９】
経路２を経て、ノードＮｂに到達した時刻パケットには、グローバル送信元アドレスに「シンクノードＳＮのアドレス」が、ローカル送信元アドレスに「ノードＮｔｅｓｔのアドレス」が、付加情報にはホップ数「３」という情報が設定されている。
【０１００】
経路２で転送された時刻パケットを受信したノードＮｂは、ルーティングテーブルに、新たにレコードを追加する（１００５）。具体的には、おけるグローバル送信先アドレスに、時刻パケットのグローバル送信元アドレス「シンクノードＳＮのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるローカル送信先アドレスに、時刻パケットのローカル送信元アドレス「ノードＮｔｅｓｔのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるホップ数に、時刻パケットの付加情報「３」を設定する。
【０１０１】
また、シンクノードＳＮから、ノードＮｄ、Ｎｆを経由して、ノードＮｂに到達する経路３がある。経路３は、図６における、１００１および１００６、１００７で各々ブロードキャストされた時刻パケットは、Ｎｂにより受信されることとなる。
【０１０２】
経路３を経て、ノードＮｂに到達した時刻パケットには、グローバル送信元アドレスに「シンクノードＳＮのアドレス」が、ローカル送信元アドレスに「ノードＮｆのアドレス」が、付加情報にはホップ数「３」という情報が設定されている。
【０１０３】
経路３で転送された時刻パケットを受信したノードＮｂは、ルーティングテーブルに、新たにレコードを追加する（１００８）。具体的には、おけるグローバル送信先アドレスに、時刻パケットのグローバル送信元アドレス「シンクノードＳＮのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるローカル送信先アドレスに、時刻パケットのローカル送信元アドレス「ノードＮｆのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるホップ数に、時刻パケットの付加情報「３」を設定する。
【０１０４】
なお、図６には示していないが、シンクノードＳＮから、ノードＮａ、ノードＮｔｅｓｔ、ノードＮｆを経由してノードＮｂに到達する時刻パケットもある。この場合は、ルーティングテーブルのグローバル送信先アドレスに「ＳＮのアドレス」を、ローカル送信先アドレスに「Ｎｆのアドレス」を、ホップ数に「４」が設定されることとなる。しかし、グローバル送信アドレスとローカル送信先アドレスの組み合わせが同一のレコードが、すでにルーティングテーブルに存在する場合は、ホップ数がより小さなレコードのみを採用し、他方を破棄するとしてもよい。
【０１０５】
以下の説明においては、グローバル送信アドレスとローカル送信先アドレスの組み合わせが同一のレコードがルーティングテーブルに存在する場合は、ホップ数がより小さなレコードのみを採用するとして説明を行う。
【０１０６】
また、グローバル送信先アドレス、ローカル送信先アドレス、ホップ数がルーティングテーブルに追加された時点で、通信強度およびノード種別に初期値を設定するとしてもよい。例えば、通信強度に「１０」、ノード種別に「４」が設定される。
【０１０７】
次に、図７を用いて、ハローパケットを、ノードＮｘが受信した場合の、ルーティングテーブルの更新について、説明する。図７は、ノード間でのハローパケットの授受を説明する為の図である。なお、ノードＮｘのルート生成部１２４が、ルーティングテーブルを更新する。
【０１０８】
各ノードＮｘにおけるパケット生成部１２１は、ハローパケットを生成する。例えば、ノードＮａは、宛先アドレスにブロードキャスト用のアドレスを設定する。さらに、ノードＮａは、グローバル送信元アドレスおよびローカル送信元アドレスに、ノードＮａのアドレスを設定する。そして、パケットタイプには、ハローパケットであることを示す「１」が設定される。また、付加情報であるノード種別には、検証ノードではないことを示す「４」が設定される。
【０１０９】
ノードＮａは、パケットをブロードキャストする（２００１）。ノードＮａと通信可能なノードＮｂは、パケットを受信する。なお、図７には示さないが、ノードＮａと通信可能な他のノードも、パケットを受信する。ノードＮｂは、ルーティングテーブルを更新する（２００２）。なお、ノードＮｂは、パケットタイプが「１」であるため、受信したハローパケットの転送を収束させる。
【０１１０】
具体的には、ノードＮｂは、受信したパケット内のローカル送信元アドレスを取得する。そして、記憶部１３に記憶されたルーティングテーブルを参照し、ローカル送信元「ノードＮａのアドレス」を、ローカル送信先アドレスに有するレコードを特定する。
【０１１１】
そして、ノードＮｂは、特定したレコードの通信強度を更新する。例えば、ノードＮｂは、通信強度として、ノードＮａからパケットを受信した数を利用する場合は、ハローパケットを受信するたびに、通信強度に所定数を加算する。例えば、ハローパケットまたはデータパケットを受信するたびに、５が加算される。なお、ノードＮｂは、単位時間当たりの受信パケット数などを算出し、通信強度に格納することもできる。
【０１１２】
また、ノードＮｂは、ルーティングテーブルにおけるノード種別と、ハローパケット内に付加情報として設定されているノード種別とが、一致しなければ、ルーティングテーブルにおけるノード種別を更新する。ただし、ノードＮａから受信したハローパケットには、ノード種別「４」が設定されている為、ルーティングテーブルにおけるノード種別は更新されない。
【０１１３】
次に、ノードＮｂは、各種パケットを受信するたびに、または定期的に、通信強度、ホップ数、ノード種別に基づいて、評価値を算出する。そして、新たに算出した評価値を、ルーティングテーブルに再登録する。
【０１１４】
また、図７に示すとおり、Ｎｔｅｓｔからハローパケットがブロードキャストされた場合（２００３）、ノードＮｆからハローパケットがブロードキャストされた場合（２００５）も同様にルーティングテーブルにおけるノード種別を更新する（２００４、２００６）。ただし、検証ノードＮｔｅｓｔから受信したハローパケットには、ノード種別「３」が設定されている為、ルーティングテーブルにおけるノード種別は「３」に更新される。したがって、ルーティングテーブルを更新する処理（２００４）において、ノード種別も更新され、更新されたノード種別に応じて評価値も更新される。
【０１１５】
なお、各ノードＮａまたは検証ノードＮｔｅｓｔからハローパケットを受信する順序については、図７は一例である。さらに、ノードＮｂも、ハローパケットをブロードキャストする。
【０１１６】
図８は、鍵情報記憶部１３２が記憶するデータ例である。鍵情報記憶部１３２は、図８Ａに示すＭＡＣ鍵の情報を記憶する。また、鍵情報記憶部１３２は、図８Ｂに示す暗号鍵の情報を記憶する。なお、本実施の形態では、全ノードで共通のＭＡＣ鍵と暗号鍵を利用する。
【０１１７】
また、各ノード毎にＭＡＣ鍵もしくは暗号鍵、または両方の鍵が異なっても構わない。例えば、グローバル送信元アドレスに対応するノードＮｘは、ノードごとに異なるＭＡＣ鍵を利用して、ＭＡＣを算出してもよい。そして、算出したＭＡＣ値を、データパケットの値格納部に設定する。
【０１１８】
一方、検証ノードＮｔｅｓｔが、データパケットを受信した場合には、グローバル送信元アドレスに対応するＭＡＣ鍵を利用して、検証を行う。
【０１１９】
さらに、グローバル送信元アドレスに対応するノードＮｘは、ノードＮｘごとに異なる暗号鍵を利用して、ペイロードデータ格納部に格納する情報を暗号化してもよい。この場合は、グローバル送信先となる装置は、各ノードＮｘの暗号鍵を事前に把握する必要がある。例えば、グローバル送信先がシンクノードＳＮである場合には、データパケットを受信した後、シンクノードＳＮは、グローバル送信元アドレスのノードＮｘに応じた暗号鍵を用いて、データを復号する。
【０１２０】
次に、図９を利用して、検証ノードＮｔｅｓｔの処理部を説明する。図９は、ノードＮｔｅｓｔの機能ブロック図である。
【０１２１】
検証ノードＮｔｅｓｔは、通信部２１、制御部２２、記憶部２３を含む。なお、検証ノードＮｔｅｓｔは、ノードＮｘと同様に、センサにより検出された検出値を取得する取得部を有してもよい。
【０１２２】
通信部２１は、ノードＮｘと無線通信する処理部である。例えば、通信部２１は、ノードＮｘとハローパケットの授受を行う。また、通信部２１は、ノードＮｘからデータパケットを受信するとともに、他のノードＮｘへデータパケットを転送する。
【０１２３】
制御部２２は、検証ノードＮｔｅｓｔの各種処理を制御する処理部である。例えば、制御部２２は、データパケットを検証する。また、制御部２２は、ノード種別「３」が設定されたハローパケットを生成する。
【０１２４】
記憶部２３は、各種情報を記憶する。例えば、記憶部２３は、暗号化処理に用いられる暗号鍵、ルーティングテーブルなどを記憶する。記憶部２３は、ルーティングテーブル記憶部２３１と、鍵情報記憶部２３２を含む。なお、ルーティングテーブル記憶部２３１と、鍵情報記憶部２３２のデータ構成は、ノードＮｘと同様である。
【０１２５】
さらに、制御部２２は、パケット生成部２２１、検証部２２２、ルート生成部２２３を含む。検証ノードＮｔｅｓｔにおける制御部２２は、ノードＮｘと同様に、さらに暗号化部や復号化部を有してもよい。
【０１２６】
パケット生成部２２１は、ハローパケットを生成するとともに、データパケットを更新する処理部である。例えば、パケット生成部２２１は、パケットタイプに「１」が、ハローパケットの付加情報に、ノード種別として「３」が設定されたハローパケットを生成する。
【０１２７】
検証部２２２は、パケットを検証する処理部である。なお、検証部２２２は、受信したパケットに対して所定の論理関係を有する値を算出する。そして、検証部２２２は、算出した値と、受信したパケットの値格納部７に格納された値とを比較することで、受信したパケットの完全性および、パケットを生成したノードの正当性を検証する。本実施例においては、例えば、検証部２２２は、値として、ＭＡＣ値を利用する。
【０１２８】
ルート生成部２２３は、管理パケットに基づいて、ルーティングテーブルを生成する。そして、ルート生成部２２３は、生成したルーティングテーブルを、ルーティングテーブル記憶部２３１に格納する。なお、ルート生成部２２３は、管理パケットを受信するたびに、または定期的にルーティングテーブルを更新する。
【０１２９】
ここで、本実施の形態に係る、ノードＮｘおよび検証ノードＮｔｅｓｔによるルーティングテーブル生成処理について、説明する。図１０は、ルーティングテーブル生成処理のフローチャートである。
【０１３０】
なお、以下、ノードＮｘが主体となった場合のルーティングテーブル生成処理を説明するが、検証ノードＮｔｅｓｔにおいても同様の処理が実行される。ただし、主体が検証ノードＮｔｅｓｔである場合は、以下の説明において、通信部１１は通信部２１に、ルート生成部１２４はルート生成部２２３に、ルーティング記憶部１３１はルーティング記憶部２３１に読みかえられる。
【０１３１】
通信部１１は、パケットを受信する（Ｏｐ．１）。そして、ルート生成部１２４は受信したパケット内に設定されたパケットタイプが、「０」であるか判定する（Ｏｐ．２）。パケットタイプが「０」である場合は（Ｏｐ．ＹＥＳ）、受信したパケットが時刻パケットである。
【０１３２】
制御部１２は、ノードＮｘの計時部に設定された時刻が、時刻パケットと同期済みであるか判定する。なお、計時部は、図４に示した各処理部に加えて、ノードＮｘが有する処理部である。同期済みでない場合（Ｏｐ．３  ＮＯ）は、制御部１２は、時刻を同期する（Ｏｐ．４）。
【０１３３】
一方、同期済みの場合は（Ｏｐ．３  ＹＥＳ）、ルート生成部１２４は、受信したパケット内のヘッダ情報格納部を参照する。そして、ルート生成部１２４は、ヘッダ情報格納部に格納されたグローバル送信元アドレスとローカル送信元アドレスの組み合わせを、ルーティングテーブルにおけるグローバル送信先アドレスとローカル送信先アドレスの組み合わせとするレコードが存在するか否かを判定する（Ｏｐ．４）。つまり、ルート生成部１２４は、新たにレコードを追加する必要があるか否かを、Ｏｐ．４にて判定する。
【０１３４】
レコードを追加する必要がある場合（Ｏｐ．４  ＹＥＳ）は、ルート生成部１２４は、ルーティングテーブルに新たにレコードを追加する（Ｏｐ．６）。具体的には、ルート生成部１２４は、受信したパケットからグローバル送信元アドレスを取得し、ルーティングテーブルのグローバル送信先アドレスに設定する。また、ルート生成部１２４は、受信したパケットからローカル送信元アドレスを取得し、ルーティングテーブルのローカル送信先アドレスに設定する。ルート生成部１２４は、受信したパケットから付加情報を取得し、ルーティングテーブルのホップ数に設定する。
【０１３５】
なお、Ｏｐ．６の時点では、ルート生成部１２４は、ルーティングテーブルにおけるノード種別に、例えば、初期値として、「４」を設定する。また、ルート生成部１２４は、通信強度に、例えば、初期値として「１０」が設定される。
【０１３６】
そして、ルート生成部１２４は、通信強度、ホップ数、ノード種別に基づいて、評価値を算出する（Ｏｐ．７）。算出された評価値は、Ｏｐ．６にて追加されたレコードに格納される。
【０１３７】
一方、レコードを追加する必要がない場合（Ｏｐ．４  ＮＯ）は、ルート生成部１２４は、受信したパケットに設定されたローカル送信元アドレスを、ルーティングテーブルにおけるローカル送信先アドレスとするレコードを特定する。そして、ルート生成部１２４は、特定したレコードにおける通信強度を更新する。例えば、ルート生成部１２４は、通信強度に、５を加算する。
【０１３８】
そして、ルート生成部１２４は、更新した通信強度に基づいて評価値を更新する（Ｏｐ．８）。なお、受信したパケットに設定されたローカル送信元アドレスを、ルーティングテーブルにおけるローカル送信先アドレスとするレコードが複数ある場合は、各々のレコードの評価値を更新する。
【０１３９】
例えば、図１０のフローにおいては、ルート生成部１２４は、新たにパケットを受信するたびに、通信強度に所定数を加算する。しかし、Ｏｐ．８においては、通信強度のみを更新することとしてもよい。そして、ルート生成部１２４は、定期的に、評価値を算出するとしてもよい。
【０１４０】
次に、通信部１１は、時刻パケットを転送する（Ｏｐ．９）。具体的には、パケット制御部１２１により時刻パケットのローカル送信元アドレスおよびホップ数が更新された後、通信部１１は、時刻パケットをブロードキャストする。そして、一連の処理を終了するが、新たにパケットを受信した場合は、ノードＮｘは、一連の処理を繰り返す。
【０１４１】
一方、パケットタイプが「０」でない場合は（Ｏｐ．２）、ルート生成部１２４は、パケット内に設定されたローカル送信元アドレスを、ルーティングテーブルにおけるローカル送信先アドレスとするレコードを特定する。そして、ルート生成部１２４は、特定したレコードの通信強度を更新する（Ｏｐ．１０）。
【０１４２】
次に、ルート生成部１２４は、受信したパケットに設定されたパケットタイプが「１」であるか判定する（Ｏｐ．１１）。パケットタイプが「１」であれば（Ｏｐ．１１  ＹＥＳ）、受信したパケットはハローパケットであることが分かる。パケットタイプが「１」である場合は、付加情報から取得した情報を、ルーティングテーブルの「ノード種別」に更新する（Ｏｐ．１２）。
【０１４３】
ここで、ハローパケットにおける付加情報には、ノード種別に関する情報が設定されている。したがって、ハローパケットを送信したノードが検証ノードＮｔｅｓｔである場合には、ルーティングテーブルにおけるノード種別は「３」に更新される。
【０１４４】
一方、パケットタイプが「１」でない場合は（Ｏｐ．１１  ＮＯ）、受信したパケットはデータパケットであるため、後述する転送処理を実行する（Ｏｐ．１３）。
【０１４５】
次に、ルート生成部１２４は、ルーティングテーブルにおける、通信強度、ホップ数、ノード種別に基づいて、評価値を算出する（Ｏｐ．１４）。なお、評価値は、一定時間ごとに算出する事としてもよい。そして、制御部１２は、ハローパケットもしくは、データパケットを破棄する（Ｏｐ．１５）。
【０１４６】
以上の処理によって、各ノードＮｘは、ルーティングテーブルを生成および更新することができる。また、ノード種別を含むパケットを受信することで、各ノードＮｘは、各ノードＮｘと通信可能なノードに、検証ノードｔｅｓｔが含まれるか否かを、把握することができる。そして、各ノードＮｘは、検証ノードＮｔｅｓｔにデータパケットを優先的に転送するように、ルーティングテーブルにおける検証ノードＮｔｅｓｔに対する評価値を重みづけすることができる。
【０１４７】
次に、本実施の形態に係る、ノードＮｘにおける転送処理について、説明する。図１１は、ノードＮｘにおける転送処理のフローチャートである。
【０１４８】
制御部１２は、データパケット内のグローバル送信先アドレスが、自アドレスと一致するか否かを判定する（Ｏｐ．２０）。一致する場合は、受信したデータパケットのグローバル送信先として指定されたノードは、自ノードであることが分かる。
【０１４９】
グローバル送信先が自ノードである場合は（Ｏｐ．２０  ＹＥＳ）、復号化部１２５は、データパケット内のペイロードデータを復号する（Ｏｐ．２４）。なお、鍵情報記憶部１３２に格納された暗号鍵が、復号化に利用される。
【０１５０】
一方、グローバル送信先が自ノードでない場合は（Ｏｐ．２０  ＮＯ）、ルーティングテーブルを参照し、転送先アドレスを決定する（Ｏｐ，２１）。具体的には、パケット生成部１２１は、ルーティングテーブルにおいて、データパケットに設定されたグローバル送信先アドレスと同一のグローバル送信先アドレスを含むレコードの内、もっとも評価値が高いレコードを特定する。そして、パケット生成部１２１は、特定したレコードに含まれるローカル送信先アドレスを、データパケットの転送先アドレスとして決定する。
【０１５１】
ここで、もっとも評価値が高いレコードにおけるローカル送信先アドレスが、受信したデータパケットのローカル送信元アドレスと一致した場合は、次に高い評価値を有するレコードにおけるローカル送信先アドレスを、転送先アドレスとする。これは、ローカル送信元のノードに、データパケットを送り返される事態を防ぐためである。
【０１５２】
続いて、パケット生成部１２１は、受信したデータパケットのローカル送信先アドレスを、決定した転送先アドレスに書きかえるとともに、ローカル送信元アドレスを自ノードのアドレスに書きかえる（Ｏｐ．２２）。そして、通信部１１は、更新したデータパケットを、ローカル送信先アドレスに転送する（Ｏｐ．２３）。
【０１５３】
以上の処理によって、ルーティングテーブルにおいて最も評価値が高い転送先アドレスに、データパケットは転送される。例えば、評価値に重みづけがなされている為、検証ノードＮｔｅｓｔに転送される可能性が高くなる。なお、評価値に重みを付ける以外にも、例えば、ノード種別「３」のローカル送信先アドレスを、転送先として決定するようにしても良い。
【０１５４】
次に、検証ノードＮｔｅｓｔにおける転送処理について説明する。図１２は、ノードＮｔｅｓｔにおける転送処理のフローチャートである。なお、図１０における転送処理が、図１２に示す検証ノードＮｔｅｓｔにおける転送処理である場合は、当然、図１０における各処理の主体も、検証ノードＮｔｅｓｔの各処理部である。
【０１５５】
検証部２２２は、データパケット内のペイロードデータおよびグローバル送信元アドレス、グローバル送信先アドレスに対して、ＭＡＣ値を算出する（Ｏｐ．３０）。なお、鍵情報記憶部２３２に格納されたＭＡＣ鍵が、ＭＡＣ値を算出する際に利用される。そして、検証部２２２は、データパケット内の値格納部に格納されているＭＡＣ値と、算出したＭＡＣ値とを比較する（Ｏｐ．３１）。
【０１５６】
両者が一致した場合は（Ｏｐ．３１  ＹＥＳ）、Ｏｐ．２０へ進む。Ｏｐ．２０乃至Ｏｐ．２４は、ノードＮｘにおける転送処理と同様である。ただし、検証ノードＮｔｅｓｔが実行する転送処理においては、通信部１１は、通信部２１に、ルート生成部１２４は、ルート生成部２２３に、ルーティング記憶部１３１は、ルーティング記憶部２３１に読みかえられる。
【０１５７】
一方、両者が一致しなかった場合には（Ｏｐ．３１  ＮＯ）、検証ノードＮｔｅｓｔは、転送処理を終了する。つまり、データパケットは転送されない。そして、図１０に示したように、転送処理終了後に、Ｏｐ．１５において、データパケットは破棄される。
【０１５８】
以上の処理によって、検証ノードＮｘが受信したデータパケットは、データの完全性およびデータパケットを生成したノードの正当性を検証することができる。したがって、データが改ざんされたデータパケットや、不正なノードが生成したデータパケットを、転送の対象から除外することができる。
【０１５９】
本実施例によれは、ノードＮｘよりも処理能力が高い検証ノードＮｔｅｓｔをアドホックネットワークシステムに導入することで、ノードＮｘは、検証処理を削減できる。また、各ノードＮｘによるルーティングテーブル生成処理において、検証ノードＮｔｅｓｔへの転送を優先するように、評価値を重みづけすることができる。したがって、検証ノードＮｔｅｓｔにデータパケットが転送される可能性が高くなるため、アドホックネットワーク内を流れるデータパケットは、検証ノードＮｔｅｓｔにより効果的に検証される。
【０１６０】
ここで、アドホックネットワークシステムにおけるシンクノードＳＮは、データパケットを受信した場合に、データパケットのペイロードデータをサーバＳへ転送する。シンクノードＳＮによるサーバＳへの転送処理に先駆けて、検証処理を行う事で、サーバＳへ、データの完全性およびデータパケットを生成したノードの正当性が保証されないデータを、送信することを防ぐことができる。
【０１６１】
しかし、例えば、不正なノードが、大量のパケットをアドホックネットワークに送信してきた場合に、シンクノードＳＮに、大きな検証負荷が発生することが考えられる。本実施例によれば、検証ノードＮｔｅｓｔにおいても、大量のパケットの少なくとも一部が検証されて、破棄されるため、シンクノードＳＮにおける検証処理に起因する負荷は軽減される。
【０１６２】
上述のとおり、本実施例に開示のアドホックネットワークシステムは、データが完全ではないデータパケット、もしくは、ＭＡＣ鍵を共有していないノードにより生成されたデータパケットを、検証ノードによる検証によって、効果的に破棄することができる。さらに、再送攻撃によるパケットを破棄する為の従来の方式を、本実施の形態と併せて、本実施例のアドホックネットワークシステムに採用してもよい。
【０１６３】
再送攻撃とは、次のようにして行われる。例えば、不正なノードが、不正にアドホックネットワークに参加し、アドホックネットワークを流れる正規のデータパケットをキャプチャする。そして、不正なノードは、キャプチャしたパケットを大量に複製する。つまり、データパケット内のデータが完全であって、さらに、正規に共有されたＭＡＣ鍵で算出されたＭＡＣ値を含むパケットが大量に複製される。そして、不正なノードは、大量に複製されたデータパケットを、アドホックネットワークに流すことで、アドホックネットワークを輻輳させる。
【０１６４】
アドホックネットワークシステムに対する再送攻撃によるパケットを破棄する方法のひとつとして、例えば、ＭＡＣ鍵を、一定時間ごとに更新する手法がある。各ノードＮａおよび検証ノードＮｔｅstは、所定のルールに従って、ＭＡＣ鍵を各自更新する。なお、所定のルールを、正規なノード間で事前に統一することで、各ノードで個別に更新されるＭＡＣ鍵は、同一のものとなる。したがって、不正ノードにより複製されたデータパケット内のＭＡＣ値は、更新されたＭＡＣ鍵によりＭＡＣ検証で、破棄される。
【０１６５】
図１３は、ノードＮｘのハードウェア構成例である。ノードＮｘは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２と、フラッシュメモリ１０３と、インターフェース（Ｉ／Ｆ）１０４と、暗号化回路１０５と、センサ１０６と、バス１０７とを備えている。ＣＰＵ１０１乃至センサ１０６は、バス１０７よってそれぞれ接続されている。
【０１６６】
ＣＰＵ１０１は、ノードＮｘの全体の制御を司る。ＣＰＵ１０１は、ＲＡＭ１０２に展開されたプログラムを実行することにより、制御部１２、取得部１４などとして機能する。
【０１６７】
ＲＡＭ１０２は、ＣＰＵ１０１のワークエリアとして使用される。フラッシュメモリ１０３は、プログラムや、各種鍵情報、ルーティングテーブルを記憶している。なお、フラッシュメモリ１０３は、記憶装置１３の一例である。プログラムには、例えば、フローチャートに示した各処理を実行させる為のプログラムが含まれる。例えば、ルーティングテーブル生成処理およびパケット転送処理を、ノードＮｘに実行させる為の制御プログラムが、フラッシュメモリ１０３に記憶される。
【０１６８】
フラッシュメモリ１０３に記憶されたプログラムを、ＲＡＭ１０２に展開し、ＣＰＵ１０１が実行することで、ノードＮｘは、図４に記載した各種処理部として機能する。また、ノードＮｘは、図１０および図１１の処理を実行する。
【０１６９】
Ｉ／Ｆ１０４は、マルチホップ通信によりパケットを送受信する。Ｉ／Ｆ１０４は、通信部１１の一例である。
【０１７０】
暗号化回路１０５は、データを暗号化する場合に暗号鍵によりデータを暗号化する回路である。例えば、パケットを暗号化して送信する場合は、暗号化回路１０５が機能する。暗号化をソフトウェア的に実行する場合は、暗号化回路１０５に相当するプログラムをフラッシュメモリ１０３に記憶させておくことで、暗号化回路１０５は不要となる。
【０１７１】
センサ１０６は、センサ１０６固有のデータを検出する。たとえば、温度、湿度、水位、降水量、風量、音量、電力使用量、時間、時刻、加速度など、測定対象にあったデータを検出する。なお、ＣＰＵ１０１が、取得部１４として機能する際には、センサからデータを取得する。
【０１７２】
図１４は、検証ノードＮｔｅｓｔのハードウェア構成例である。検証ノードＮｔｅｓｔは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２と、フラッシュメモリ２０３と、インターフェース（Ｉ／Ｆ）２０４と、バス２０５とを備えている。ＣＰＵ２０１乃至Ｉ／Ｆ２０４は、バス２０５よってそれぞれ接続されている。なお、検証ノードＮｔｅｓｔは、暗号化回路と、センサとを、さらに備えてもよい。
【０１７３】
ＣＰＵ２０１は、検証ノードＮｔｅｓｔの全体の制御を司る。ＣＰＵ２０１は、ＲＡＭ２０２に展開されたプログラムを実行することにより、制御部２２などとして機能する。
【０１７４】
ＲＡＭ２０２は、ＣＰＵ２０１のワークエリアとして使用される。フラッシュメモリ２０３は、プログラムや、各種鍵情報、ルーティングテーブルを記憶している。なお、フラッシュメモリ２０３は、記憶装置２３の一例である。プログラムには、例えば、フローチャートに示した各処理を実行させる為のプログラムが含まれる。例えば、ルーティングテーブル生成処理およびパケット転送処理を、検証ノードＮｔｅｓｔに実行させる為の制御プログラムが、フラッシュメモリ２０３に記憶される。
【０１７５】
フラッシュメモリ２０３に記憶されたプログラムを、ＲＡＭ２０２に展開し、ＣＰＵ２０１が実行することで、検証ノードＮｔｅｓｔは、図９に記載した各種処理部として機能する。また、検証ノードＮｔｅｓｔは、図１０および図１２の処理を実行する。
【０１７６】
Ｉ／Ｆ２０４は、マルチホップ通信によりパケットを送受信する。Ｉ／Ｆ２０４は、通信部２１の一例である。
【０１７７】
また、検証ノードＮｔｅｓｔは、汎用コンピュータであってもよい。この場合は、フローチャートに示したルーティングテーブル生成処理およびパケット転送処理を記述した通信制御プログラムは、コンピュータが読み取り可能な記録媒体に記録される。コンピュータが読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。
【０１７８】
光ディスクには、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  −  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）などがある。光磁気記録媒体には、ＭＯ（Ｍａｇｎｅｔｏ  −  Ｏｐｔｉｃａｌ  ｄｉｓｋ）などがある。通信制御プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売されることが考えられる。
【０１７９】
そして通信制御プログラムを実行するコンピュータは、例えば媒体読取装置が、制御プログラムを記録した記録媒体から、該プログラムを読み出す。なお、汎用コンピュータにおけるＣＰＵは、読み出されたプログラムをＨＤＤ若しくはＲＯＭ、ＲＡＭに格納する。
【符号の説明】
【０１８０】
Ｎｘ      ノード
Ｎｔｅｓｔ  検証ノード
１１      通信部
１２      制御部
１３      記憶部
１４      取得部
２１      通信部
２２      制御部
２３      記憶部
【図１】
2013145026.tif 000004
【図２】
2013145026.tif 000005
【図３】
2013145026.tif 000006
【図４】
2013145026.tif 000007
【図５】
2013145026.tif 000008
【図６】
2013145026.tif 000009
【図７】
2013145026.tif 000010
【図８】
2013145026.tif 000011
【図９】
2013145026.tif 000012
【図１０】
2013145026.tif 000013
【図１１】
2013145026.tif 000014
【図１２】
2013145026.tif 000015
【図１３】
2013145026.tif 000016
【図１４】
2013145026.tif 000017
【手続補正書】
【提出日】平成27年1月9日(2015.1.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
【図１】図１は、本実施例に係るアドホックネットワークシステムと従来のアドホックネットワークシステムとを比較する為の説明図である。
【図２】図２は、管理パケットのデータ構成例を示す図である。
【図３】図３は、データパケットのデータ構成例を示す図である。
【図４】図４は、ノードＮｘの機能ブロック図である。
【図５】図５は、従来のルーティングテーブルのデータ構成例と本実施例に係るルーティングテーブルのデータ構成例とを比較する為の図である。
【図６】図６は、シンクノードＳＮからノードＮｂに時刻パケットが到達する経路を説明する為の図である。
【図７】図７は、ノード間でのハローパケットの授受を説明する為の図である。
【図８】図８は、鍵情報記憶部１３２が記憶するデータ例である。
【図９】図９は、検証ノードＮｔｅｓｔの機能ブロック図である。
【図１０】図１０は、ルーティングテーブル生成処理のフローチャートである。
【図１１】図１１は、ノードＮｘにおける転送処理のフローチャートである。
【図１２】図１２は、検証ノードＮｔｅｓｔにおける転送処理のフローチャートである。
【図１３】図１３は、ノードＮｘのハードウェア構成例である。
【図１４】図１４は、検証ノードＮｔｅｓｔのハードウェア構成例である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
検証ノードＮｔｅｓｔは、ノードＮｘと比較して、処理能力が高い装置である。そして、検証ノードＮｔｅｓｔは、ノードＮｘとマルチホップ通信が可能な装置である。なお、本実施の形態においては、ノードＮｘは、他ノードＮｘまたはシンクノードＳＮ以外に、検証ノードＮｔｅｓｔともマルチホップ通信が可能である。なお、他ノードＮｘまたはシンクノードＳＮ、検証ノードＮｔｅｓｔは、通信可能圏内に存在する必要がある。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
例えば、ノードＮｃからシンクノードＳＮへ向けてパケットが送信される場合には、パケットは、ノードＮｂ、検証ノードＮｔｅｓｔ、ノードＮａを経由する。また、パケットがシンクノードＳＮへ送信される過程で、経路に含まれる検証ノードＮｔｅｓｔが、パケット内のデータの完全性と、パケットの送信元の正当性を検証する。例えば、検証ノードＮｔｅｓｔは、ＭＡＣ値を利用して、検証を実行する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
ノードＮｂおよびＮａは、ＭＡＣ検証を実行しなくても良い。しかし、処理能力に余裕がある場合には、他のノードＮｂおよびＮａもＭＡＣ検証を実行してもよい。以下では、ＭＡＣ値を利用した検証は、検証ノードＮｔｅｓｔのみが行い、ノードＮｘは、ＭＡＣ検証を実施しないとして説明を行う。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
次に、アドホックネットワークを流れるパケットについて、説明する。アドホックネットワークを流れるパケットには、複数種類のパケットが含まれる。例えば、管理パケット、データパケットがある。管理パケットとは、ブロードキャストされるパケットであって、各ノードＮｘまたは検証ノードＮｔｅｓｔが他のノードＮｘまたはシンクノードＳＮと通信するために必要な情報を共有するためのパケットである。例えば、各ノードＮｘがセッション鍵を周囲のノードＮｘに配布する為のハローパケットや、シンクノードＳＮが時刻情報を各ノードＮｘに配布する為の時刻パケットが、管理パケットに含まれる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
図２は、管理パケットのデータ構成例を示す図である。なお、図２に示す管理パケットは、シンクノードＳＮ、各ノードＮｘ、および検証ノードＮｔｅｓｔの各々がブロードキャストすることで、ブロードキャストした装置と通信可能範囲に存在する他の装置との間で授受される。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
取得部１４は、データを取得する処理部である。例えば、取得部１４は、ノードＮｘと通信可能なセンサから、消費電力量や温度等のデータを取得する。なお、取得されたデータは、データパケットのペイロードデータとして、他のノードＮｘ、検証ノードＮｔｅｓｔまたはシンクノードＳＮへ送信される。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８３
【補正方法】変更
【補正の内容】
【００８３】
ここで、図５Ｂに示すように、従来のルーティングテーブルは、ノード種別を管理することができない。したがって、評価値は、ノード種別を加味することなく算出される。よって、従来の手法に従うと、通信強度が高いほど、さらにホップ数が小さいほど、評価値が高くなる。例えば、図５Ｂに示す評価値が算出される。よって、グローバル送信先アドレスを、シンクノードＳＮのアドレスとした場合に、ノードＮｂは、もっとも評価値が高いノードＮａをローカル送信先として決定する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
一方、本実施例によれば、検証ノードＮｔｅｓｔがアドホックネットワークに加わるとともに、評価値の算出において、さらにノード種別が加味される。したがって、検証ノードＮｔｅｓｔに対応する評価値が、他のノードＮｘの評価値と比較して、重みづけされる。例えば、ノードＮｘにおけるルート生成部１２４は、ノード種別が「３」である場合には、評価係数に「２」を採用することで、評価値をノードＮｘである場合と比べて、２倍にすることができる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００８５
【補正方法】変更
【補正の内容】
【００８５】
したがって、本実施例においては、グローバル送信先アドレスを、シンクノードＳＮのアドレスとした場合に、ノードＮｂは、もっとも評価値が高い検証ノードＮｔｅｓｔをローカル送信先として決定する。よって、検証ノードＮｔｅｓｔに、検証する必要があるデータパケットを転送することができる。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００８６
【補正方法】変更
【補正の内容】
【００８６】
なお、ノードＮｂ以外のノードＮｘにおいても、検証ノードＮｔｅｓｔと通信可能である場合には、検証ノードＮｔｅｓｔをローカル送信先とする評価値に重みづけがなされる為、データパケットが、検証ノードＮｔｅｓｔに転送される可能性が高くなる。ひいては、アドホックネットワークシステム全体において、検証ノードＮｔｅｓｔを経由して、パケットが転送される可能性が高くなり、不正なパケットは、アドホックネットワークから効果的に破棄される。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００９０
【補正方法】変更
【補正の内容】
【００９０】
シンクノードＳＮと通信可能なノードＮｘは、ノードＮａとノードＮｄであるとする。また、ノードＮａは、検証ノードＮｔｅｓｔとノードＮｂと通信可能であるとする。ノードＮｂは、ノードＮａ、ノードＮｃ、ノードＮｆ、検証ノードＮｔｅｓｔと通信可能であるとする。ノードＮｄは、シンクノードＳＮ、ノードＮｅ、ノードＮｆと通信可能であるとする。ノードＮｆは、ノードＮｂ、ノードＮｄ、ノードＮｇ、ノードＮｈ、検証ノードＮｔｅｓｔと通信可能であるとする。検証ノードＮｔｅｓｔは、ノードＮａ、ノードＮｂ、ノードＮｆと通信可能であるとする。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００９２
【補正方法】変更
【補正の内容】
【００９２】
シンクノードＳＮは、例えば、電源がオンになった場合に、時刻パケットをブロードキャストする（１００１）。なお、シンクノードＳＮと通信可能なノードは、ＮａとＮｄであるとすると、１００１でブロードキャストされた時刻パケットは、ＮａおよびＮｄにより受信される。ここで、ノードＮａとノードＮｄは、宛先アドレスに設定されたアドレスが特別なアドレスであることから、受信したパケットは、自ノード宛のパケットであると認識する。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
次に、ノードＮｂは、ルーティングテーブルに、新たにレコードを追加する（１００３）。具体的には、ノードＮｂは、ルーティングテーブルにおけるグローバル送信先アドレスに、時刻パケットのグローバル送信元アドレス「シンクノードＳＮのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるローカル送信先アドレスに、時刻パケットのローカル送信元アドレス「ノードＮａのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるホップ数に、時刻パケットの付加情報「２」を設定する。なお、ノードＮｂは、受信した時刻パケットを、他のノードと同様に、さらに転送する。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
一方、シンクノードＳＮから、ノードＮａ、さらに検証ノードＮｔｅｓｔを経由して、ノードＮｂに時刻パケットが到達する経路２がある。経路２は、図６における、１００１および１００２、１００４で各々ブロードキャストされた時刻パケットが、ノードＮｂにより受信されることとなる。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１００
【補正方法】変更
【補正の内容】
【０１００】
経路２で転送された時刻パケットを受信したノードＮｂは、ルーティングテーブルに、新たにレコードを追加する（１００５）。具体的には、ノードＮｂは、ルーティングテーブルにおけるグローバル送信先アドレスに、時刻パケットのグローバル送信元アドレス「シンクノードＳＮのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるローカル送信先アドレスに、時刻パケットのローカル送信元アドレス「ノードＮｔｅｓｔのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるホップ数に、時刻パケットの付加情報「３」を設定する。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
また、シンクノードＳＮから、ノードＮｄ、Ｎｆを経由して、ノードＮｂに到達する経路３がある。経路３は、図６における、１００１および１００６、１００７で各々ブロードキャストされた時刻パケットは、ノードＮｂにより受信されることとなる。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
経路３で転送された時刻パケットを受信したノードＮｂは、ルーティングテーブルに、新たにレコードを追加する（１００８）。具体的には、ノードＮｂは、ルーティングテーブルにおけるグローバル送信先アドレスに、時刻パケットのグローバル送信元アドレス「シンクノードＳＮのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるローカル送信先アドレスに、時刻パケットのローカル送信元アドレス「ノードＮｆのアドレス」を設定する。ノードＮｂは、ルーティングテーブルにおけるホップ数に、時刻パケットの付加情報「３」を設定する。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０１０４
【補正方法】変更
【補正の内容】
【０１０４】
なお、図６には示していないが、シンクノードＳＮから、ノードＮａ、検証ノードＮｔｅｓｔ、ノードＮｆを経由してノードＮｂに到達する時刻パケットもある。この場合は、ルーティングテーブルのグローバル送信先アドレスに「シンクノードＳＮのアドレス」を、ローカル送信先アドレスに「ノードＮｆのアドレス」を、ホップ数に「４」が設定されることとなる。しかし、グローバル送信アドレスとローカル送信先アドレスの組み合わせが同一のレコードが、すでにルーティングテーブルに存在する場合は、ホップ数がより小さなレコードのみを採用し、他方を破棄するとしてもよい。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
また、各ノード毎にＭＡＣ鍵もしくは暗号鍵、または両方の鍵が異なっても構わない。例えば、グローバル送信元アドレスに対応するノードＮｘは、ノードごとに異なるＭＡＣ鍵を利用して、ＭＡＣ値を算出してもよい。そして、算出したＭＡＣ値を、データパケットの値格納部に設定する。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０１３０
【補正方法】変更
【補正の内容】
【０１３０】
なお、以下、ノードＮｘが主体となった場合のルーティングテーブル生成処理を説明するが、検証ノードＮｔｅｓｔにおいても同様の処理が実行される。ただし、主体が検証ノードＮｔｅｓｔである場合は、以下の説明において、通信部１１は通信部２１に、ルート生成部１２４はルート生成部２２３に、ルーティング記憶部１３１はルーティングテーブル記憶部２３１に読みかえられる。
【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】０１３１
【補正方法】変更
【補正の内容】
【０１３１】
通信部１１は、パケットを受信する（Ｏｐ．１）。そして、ルート生成部１２４は受信したパケット内に設定されたパケットタイプが、「０」であるか判定する（Ｏｐ．２）。パケットタイプが「０」である場合は（Ｏｐ．２  ＹＥＳ）、受信したパケットが時刻パケットである。
【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】０１４０
【補正方法】変更
【補正の内容】
【０１４０】
次に、通信部１１は、時刻パケットを転送する（Ｏｐ．９）。具体的には、ルート生成部１２４により時刻パケットのローカル送信元アドレスおよびホップ数が更新された後、通信部１１は、時刻パケットをブロードキャストする。そして、一連の処理を終了するが、新たにパケットを受信した場合は、ノードＮｘは、一連の処理を繰り返す。
【手続補正２４】
【補正対象書類名】明細書
【補正対象項目名】０１４１
【補正方法】変更
【補正の内容】
【０１４１】
一方、パケットタイプが「０」でない場合は（Ｏｐ．２  ＮＯ）、ルート生成部１２４は、パケット内に設定されたローカル送信元アドレスを、ルーティングテーブルにおけるローカル送信先アドレスとするレコードを特定する。そして、ルート生成部１２４は、特定したレコードの通信強度を更新する（Ｏｐ．１０）。
【手続補正２５】
【補正対象書類名】明細書
【補正対象項目名】０１４６
【補正方法】変更
【補正の内容】
【０１４６】
以上の処理によって、各ノードＮｘは、ルーティングテーブルを生成および更新することができる。また、ノード種別を含むパケットを受信することで、各ノードＮｘは、各ノードＮｘと通信可能なノードに、検証ノードＮｔｅｓｔが含まれるか否かを、把握することができる。そして、各ノードＮｘは、検証ノードＮｔｅｓｔにデータパケットを優先的に転送するように、ルーティングテーブルにおける検証ノードＮｔｅｓｔに対する評価値を重みづけすることができる。
【手続補正２６】
【補正対象書類名】明細書
【補正対象項目名】０１５６
【補正方法】変更
【補正の内容】
【０１５６】
両者が一致した場合は（Ｏｐ．３１  ＹＥＳ）、Ｏｐ．２０へ進む。Ｏｐ．２０乃至Ｏｐ．２４は、ノードＮｘにおける転送処理と同様である。ただし、検証ノードＮｔｅｓｔが実行する転送処理においては、通信部１１は、通信部２１に、ルート生成部１２４は、ルート生成部２２３に、ルーティング記憶部１３１は、ルーティングテーブル記憶部２３１に読みかえられる。
【手続補正２７】
【補正対象書類名】明細書
【補正対象項目名】０１５８
【補正方法】変更
【補正の内容】
【０１５８】
以上の処理によって、検証ノードＮｔｅｓｔが受信したデータパケットは、データの完全性およびデータパケットを生成したノードの正当性を検証することができる。したがって、データが改ざんされたデータパケットや、不正なノードが生成したデータパケットを、転送の対象から除外することができる。 
【手続補正２８】
【補正対象書類名】明細書
【補正対象項目名】０１５９
【補正方法】変更
【補正の内容】
【０１５９】
本実施例によれば、ノードＮｘよりも処理能力が高い検証ノードＮｔｅｓｔをアドホックネットワークシステムに導入することで、ノードＮｘは、検証処理を削減できる。また、各ノードＮｘによるルーティングテーブル生成処理において、検証ノードＮｔｅｓｔへの転送を優先するように、評価値を重みづけすることができる。したがって、検証ノードＮｔｅｓｔにデータパケットが転送される可能性が高くなるため、アドホックネットワーク内を流れるデータパケットは、検証ノードＮｔｅｓｔにより効果的に検証される。
【手続補正２９】
【補正対象書類名】明細書
【補正対象項目名】０１６４
【補正方法】変更
【補正の内容】
【０１６４】
アドホックネットワークシステムに対する再送攻撃によるパケットを破棄する方法のひとつとして、例えば、ＭＡＣ鍵を、一定時間ごとに更新する手法がある。各ノードＮｘおよび検証ノードＮｔｅｓｔは、所定のルールに従って、ＭＡＣ鍵を各自更新する。なお、所定のルールを、正規なノード間で事前に統一することで、各ノードで個別に更新されるＭＡＣ鍵は、同一のものとなる。したがって、不正ノードにより複製されたデータパケット内のＭＡＣ値は、更新されたＭＡＣ鍵と異なるため、その更新されたＭＡＣ鍵によるＭＡＣ検証で、それらデータパケットは破棄される。 
【手続補正３０】
【補正対象書類名】明細書
【補正対象項目名】０１７１
【補正方法】変更
【補正の内容】
【０１７１】
センサ１０６は、センサ１０６固有のデータを検出する。たとえば、温度、湿度、水位、降水量、風量、音量、電力使用量、時間、時刻、加速度など、測定対象にあったデータを検出する。なお、ＣＰＵ１０１が、取得部１４として機能する際には、センサ１０６からデータを取得する。
【国際調査報告】
2013145026.tif 000018
2013145026.tif 000019
2013145026.tif 000020
2013145026.tif 000021