(57)【要約】  アドホックネットワーク（１００）内での不正パケットに対する負荷分散を効率的におこなう。不正ノード（Ｎｘ）からの１００個の不正パケットを直接受信したノード（Ｎｂ）は、認証実施確率５０％により、５０個の不正パケットをＭＡＣ認証し、残余の５０個の不正パケットを転送先のノード（Ｎａ）に転送する。ＭＡＣ認証の対象となった５０個の不正パケットは破棄される。ノード（Ｎａ）は、認証実施確率５０％により、ノード（Ｎｂ）からの５０個の不正パケットのうち２５個をＭＡＣ認証し、残余の２５個の不正パケットをシンクノード（ＳＮ）に転送する。ＭＡＣ認証の対象となった２５個の不正パケットは破棄される。シンクノード（ＳＮ）は、ノード（Ｎａ９からの２５個の不正パケットについてＭＡＣ認証をおこない、破棄する。
2011121713.tif 000002
【特許請求の範囲】
【請求項１】
マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードであって、
転送元のノードからのパケットを受信する受信手段と、
前記受信手段によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定手段と、
前記決定手段によって前記パケットが認証実施対象に決定された場合、前記アドホックネットワーク内の各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証手段と、
前記決定手段によって転送対象に決定された場合または前記認証手段によって認証された場合、前記パケットを転送先として設定されている特定のノードに送信する送信手段と、
前記認証手段によって認証されなかった場合、前記パケットを破棄する破棄手段と、
を備えることを特徴とするノード。
【請求項２】
前記ノード内の負荷を計測する計測手段と、
前記計測手段によって計測された負荷に応じて前記確率を設定する設定手段と、をさらに備え、
前記決定手段は、
前記設定手段によって設定された確率にしたがって、前記パケットを認証実施対象または破棄対象に決定することを特徴とする請求項１に記載のノード。
【請求項３】
前記パケットの宛先を検出する検出手段と、
前記検出手段によって検出された宛先に応じて前記確率を設定する設定手段と、をさらに備え、
前記決定手段は、
前記設定手段によって設定された確率にしたがって、前記パケットを認証実施対象または転送対象に決定することを特徴とする請求項１に記載のノード。
【請求項４】
前記設定手段は、
前記宛先が前記アドホックネットワーク内の全ノードである場合、前記確率を１００％に設定することを特徴とする請求項３に記載のノード。
【請求項５】
前記設定手段は、
前記宛先が前記ノード群のうち前記特定のノード以外の他のノードである場合、前記確率を、前記宛先が前記特定のノードである場合の確率よりも低い確率に設定することを特徴とする請求項３に記載のノード。
【請求項６】
前記ノード内の負荷を計測する計測手段をさらに備え、
前記設定手段は、
前記検出手段によって検出された宛先および前記計測手段によって計測された負荷に応じて前記確率を設定することを特徴とする請求項３に記載のノード。
【請求項７】
前記決定手段は、
前記確率にしたがってランダムに決定することを特徴とする請求項１〜６のいずれか一つに記載のノード。
【請求項８】
前記決定手段によって決定された決定結果に基づいて、前記確率を更新する更新手段を備え、
前記決定手段は、
前記更新手段によって更新された確率にしたがって、前記パケット認証実施対象または転送対象に決定することを特徴とする請求項７に記載のノード。
【請求項９】
前記決定手段は、
前記確率にしたがって周期的に決定することを特徴とする請求項１〜６のいずれか一つに記載のノード。
【請求項１０】
マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードが実行する転送方法であって、
前記アドホックネットワーク内のノード群のうち転送元のノードからのパケットを受信する受信工程と、
前記受信工程によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定工程と、
前記決定工程によって前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証工程と、
前記決定工程によって転送対象に決定された場合または前記認証工程によって認証された場合、前記パケットを転送先として設定された特定のノードに送信する送信工程と、
前記認証工程によって認証されなかった場合、前記パケットを破棄する破棄工程と、
を含むことを特徴とする転送方法。
【請求項１１】
マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードに実行させる転送プログラムであって、
前記アドホックネットワーク内のノード群のうち転送元のノードからのパケットを受信する受信工程と、
前記受信工程によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定工程と、
前記決定工程によって前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証工程と、
前記決定工程によって転送対象に決定された場合または前記認証工程によって認証された場合、前記パケットを転送先として設定された特定のノードに送信する送信工程と、
前記認証工程によって認証されなかった場合、前記パケットを破棄する破棄工程と、
を実行させることを特徴とする転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットを転送するノード、転送方法、および転送プログラムに関する。
【背景技術】
【０００２】
アドホックネットワークは、無線通信でリンクする自己構成型のネットワークの一種である。アドホックネットワークはノードにより構成される。ノードは、他のノードと通信を行うとき、相手のノードと直接通信はできず、隣接するノードへパケットを送信する。【０００３】
隣接するノードは同様に自分の隣接するノードへパケットを送信し、これを繰り返す。このような通信をマルチホップ通信と呼ぶ。アドホックネットワークでは、マルチホップ通信により目的のノードと通信を行う。このように、すべてのノードは自分とは無関係のパケットを転送するルータとしての機能を持つ。【０００４】
また、アドホックネットワークとインターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク（以下、アドホックネットワークと区別するため、「通常ネットワーク」と称す。）とを接続する場合、シンクノードＳＮと呼ばれる特定のノードを用いる。シンクノードＳＮは、アドホックネットワークプロトコルと通常のネットワークプロトコルの両方を理解し、アドホックネットワーク―通常ネットワーク間の通信の転送を行う。【０００５】
したがって、アドホックネットワークと通常ネットワークが通信を行う場合、必ずこのシンクノードＳＮを通して通信することになる。そのため、シンクノードＳＮとそれに近いノードの通信量が大きくなる傾向にある。【０００６】
多くの場合、アドホックネットワークは、無線センサネットワークに代表されるように、センサ等の小型で能力の高くないノードが無線通信でリンクされる。ノードの処理能力が高くないことから、通信量やそれにかかる処理量は極力小さくすることが望まれている。一方で、無線通信によるマルチホップ通信のため、悪意の攻撃者が不正な通信をネットワークに送信することは、通常のネットワークよりたやすいと言われている。そのため、ノードの処理量が小さく、不正な通信を遮断できるような方式が求められている。【０００７】
図１６は、従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その１）である。図１６において、アドホックネットワークは、ノードＮａ〜ＮｃとシンクノードＳＮとを含むネットワークである。ここでは、シンクノードＳＮのアドホックルーティングにより、ノードＮｃ→ノードＮｂ→ノードＮａ→シンクノードＳＮの順序で、データが転送される。【０００８】
各ノードＮａ〜Ｎｃは、メッセージを認証する鍵（認証鍵Ｋ）を共有し、パケットにＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ；メッセージ認証子。以下、「ＭＡＣ値」と称す。）を付けて転送する。たとえば、ノードＮｃでデータが検出されると、ノードＮｃは検出データによりＭＡＣ値を生成し、検出データおよびＭＡＣ値を含むパケットをノードＮｂに転送する。ノードＮｂはノードＮｃから転送されてきたパケットをノードＮａに転送し、ノードＮａはシンクノードＳＮに転送する。【０００９】
同様に、ノードＮｂでデータが検出されると、ノードＮｂは検出データによりＭＡＣ値を生成し、検出データおよびＭＡＣ値を含むパケットをノードＮａに転送する。ノードＮａは、転送されてきたパケットをシンクノードＳＮに転送する。また、シンクノードＳＮでは、アドホックネットワークから通常ネットワークへ転送するパケットに対し、ＭＡＣ値の認証（ＭＡＣ認証）を行う。【００１０】
今、悪意の攻撃者が不正ノードＮｘを設置し、隣接するノードＮｂに不正なパケットを１００個送信する場合を考える。ノードＮｂは受信した１００個の不正パケットをノードＮａに転送し、ノードＮａは転送されてきた１００個の不正パケットをシンクノードＳＮに転送する。【００１１】
シンクノードＳＮはパケットのＭＡＣ認証を行うが、不正ノードＮｘは認証鍵を共有していないため、ＭＡＣ認証で失敗する。これにより、不正パケットであると判断され、シンクノードＳＮはこれらのパケットを破棄する。不正ノードＮｘがノードＮｃやノードＮａに不正パケットを転送した場合も同様に、シンクノードＳＮがパケットを破棄する。【００１２】
図１７は、従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その２）である。図１６と比較するため、図１６と同一構成とする。図１７では、各ノードＮａ〜Ｎｃが転送先に転送する際に、転送するパケットのＭＡＣ認証をおこなう。【００１３】
今、悪意の攻撃者が不正ノードＮｘを設置し、隣接するノードＮｂに不正なパケットを１００個送信する場合を考える。ノードＮｂは受信した１００個の不正パケットをノードＮａに転送する前に、不正パケットのＭＡＣ認証を行うが、不正ノードＮｘは認証鍵を共有していないため、ＭＡＣ認証で失敗する。【００１４】
これにより、ノードＮｂにより不正パケットであると判断され、ノードＮｂは不正パケットを破棄する。ノードＮｃやノードＮａが不正パケットを受信した場合も同様にＭＡＣ認証が失敗する。このように、図１７では、不正パケットを受信したノードが不正パケットを転送せずに破棄することとなる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００７−１３３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、上述した従来技術では、図１６の場合、ＭＡＣ認証はすべてシンクノードＳＮが行うが、シンクノードＳＮはアドホックネットワーク―通常ネットワーク間の通信の転送も行っている。したがって、ＭＡＣ認証がシンクノードＳＮに集中すると、シンクノードＳＮの負荷が増大し、通常ネットワークへの転送に遅延や支障をきたすという問題があった。【００１７】
一方、図１７の場合、不正パケットを直接受信したノードが処理するため、シンクノードＳＮの処理負荷は軽減されるが、不正ノードＮｘに隣接するノードＮｂがメッセージ認証にかかる負荷をすべて負うことになる。ノードＮａ〜Ｎｃは一般のノードでありシンクノードＳＮより処理能力が低いことが考えられる。【００１８】
このため、ノードＮｂの処理負荷が増大すると、ノードＮｃからのマルチホップ通信に遅延が出たり、自ノード（ノードＮｂ）での検出データをマルチホップ通信することができなくなったりする。したがって、パケット転送に遅延が生じたり、転送すべきパケットが欠落したりするという問題があった。【００１９】
特に、シンクノードＳＮに近い上流のノードは、下流のノード群からのパケットが集中しやすいため、負荷が増大すると、アドホックネットワーク全体にパケット転送の遅延やパケットの欠落が生じることとなる。【００２０】
本発明は、上述した従来技術による問題点を解消するため、アドホックネットワーク内での不正パケットに対する負荷分散を効率的におこなうことができるノード、転送方法、および転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上述した課題を解決し、目的を達成するため、開示するノード、転送方法、および転送プログラムは、各々検出されたデータを含むパケットをマルチホップ通信により特定のノードに送信するアドホックネットワーク内のノード群のうち、転送元のノードからのパケットを受信し、受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定し、前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証し、転送対象に決定された場合または認証された場合、前記パケットを前記転送先のノードに送信し、認証されなかった場合、前記パケットを破棄することを要件とする。
【発明の効果】
【００２２】
本発明にかかるノード、転送方法、および転送プログラムによれば、アドホックネットワーク内での不正パケットに対する負荷分散を効率的におこなうことができるという効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】アドホックネットワークの構成例を示す説明図である。
【図２】本実施の形態での不正パケットの破棄と図１６および図１７に示した不正パケットの破棄との比較例を示す説明図である。
【図３】パケットのデータ構造を示す説明図である。
【図４】図３に示した通信ヘッダの詳細なデータ構造を示す説明図である。
【図５】ノードのルーティングテーブルの一例を示す説明図である。
【図６】マルチホップ通信での通信ヘッダの状態を示す説明図である。
【図７】アドホックネットワークを構成するノードのハードウェア構成例を示すブロック図である。
【図８】実施の形態１にかかるノードの機能的構成例を示すブロック図である。
【図９】実施の形態１にかかるノードでの検出データの送信処理手順を示すフローチャートである。
【図１０】実施の形態１にかかるノードでのパケット転送処理手順を示すフローチャートである。
【図１１】実施の形態２にかかるノードの機能的構成例を示すブロック図である。
【図１２】認証実施確率Ｐの設定処理手順を示すフローチャートである。
【図１３】実施の形態３にかかるノードの機能的構成例を示すブロック図である。
【図１４】実施の形態３にかかるノードでのパケット転送処理手順を示すフローチャートである。
【図１５】実施の形態４にかかるノードの機能的構成例を示すブロック図である。
【図１６】従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その１）である。
【図１７】従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その２）である。
【発明を実施するための形態】
【００２４】
以下に添付図面を参照して、この発明にかかるノード、転送方法、および転送プログラムの好適な実施の形態を詳細に説明する。
【００２５】
図１は、アドホックネットワークの構成例を示す説明図である。図１において、アドホックネットワーク１００と通常ネットワーク１０１とは、アドホックネットワーク１００内のシンクノードＳＮをゲートウェイとして接続されている。アドホックネットワーク１００内のデータは、シンクノードＳＮから通常ネットワーク１０１にパケットとして転送されてサーバＳに到達する。また、サーバＳやシンクノードＳＮからのデータは、シンクノードＳＮからアドホックネットワーク１００内の各ノードにパケットとして転送される。
【００２６】
アドホックネットワーク１００内には、複数のノードが設けられている。図１では、代表としてノードＮａ〜Ｎｈを示している。各ノードＮａ〜Ｎｈは、所定の通信圏内で通信可能なノードに対してマルチホップ通信可能である。アドホックネットワーク１００では、すべてのノードＮａ〜Ｎｈが直接シンクノードＳＮと通信できる必要はなく、一部のノードがシンクノードＳＮと通信可能であればよい。
【００２７】
なお、シンクノードＳＮは、どのノードがどのノードに対し通信可能かを把握しており、この情報を元に、シンクノードＳＮは自律的にルーティングすることになる。各ノードＮａ〜Ｎｈでは、シンクノードＳＮのルーティングにより、マルチホップ通信を行う際の転送元と転送先が設定されることとなる。
【００２８】
図１では、アドホックネットワーク１００を構成するノードＮａ〜Ｎｈにより、４つの経路Ｒ１〜Ｒ４が設定されているものとする。具体的には、経路Ｒ１は、ノードＮｃ→ノードＮｂ→ノードＮａ→シンクノードＳＮというルート（逆方向の通信も可）である。経路Ｒ２は、ノードＮｅ→ノードＮｄ→シンクノードＳＮ（逆方向の通信も可）である。
【００２９】
経路Ｒ３は、ノードＮｇ→ノードＮｆ→ノードＮｄ→シンクノードＳＮというルート（逆方向も可）である。経路Ｒ４は、ノードＮｈ→ノードＮｆ→ノードＮｄ→シンクノードＳＮというルート（逆方向も可）である。なお、ノードＮａやノードＮｄはシンクノードと直接通信するノードである。このように、シンクノードＳＮに近いノードを上流側のノードと呼ぶ。なお、アドホックネットワーク１００の規模によっては、ノードＮｂやノードＮｅも上流側のノードとなる。
【００３０】
各ノードＮａ〜Ｎｈは、各々検出されたデータをルーティングされた経路Ｒ１〜Ｒ４に従ってシンクノードＳＮに送信する。したがって、シンクノードＳＮに近い上流のノードほど、下流のノードの検出データをさらに上流に転送することとなる。すなわち、転送元のノードからのパケットを転送先に送信する頻度が高くなり、転送負荷が高くなる。
【００３１】
図２は、本実施の形態での不正パケットの破棄と図１６および図１７に示した不正パケットの破棄との比較例を示す説明図である。なお、図２中、「従来Ａ」は図１６の例、「従来Ｂ」は図１７の例を示す。本実施の形態では、従来のように、シンクノードＳＮや不正ノードＮｘから直接パケットを受信したノード（直接受信ノード）のみがＭＡＣ認証するのではなく、マルチホップ通信によりシンクノードＳＮにまで転送する経路上のノードで認証鍵ＫによるＭＡＣ認証を分散処理する。
【００３２】
これにより、シンクノードＳＮや直接受信ノードの負荷が軽減され、アドホックネットワーク１００の効率化を図ることができる。図２では、ＭＡＣ認証する認証実施確率Ｐを５０％とする。これにより、不正パケット群を受信したノードは、不正パケット群のうち半分（５０％）の個数の不正パケットをＭＡＣ認証し、残余の半分の個数の不正パケットを転送先ノードに転送する。
【００３３】
図２の例では、不正ノードＮｘからの１００個の不正パケットを直接受信したノードＮｂは、認証実施確率Ｐ＝５０％により、５０個の不正パケットをＭＡＣ認証し、残余の５０個の不正パケットを転送先のノードＮａに転送する。ＭＡＣ認証をおこなう５０個の不正パケットの各々から得られるＭＡＣ値は、ノードＮｂが有する認証鍵により生成されるＭＡＣ値とは異なる。したがって、ＭＡＣ認証の対象となった５０個の不正パケットはノードＮｂに破棄される。
【００３４】
ノードＮａは、認証実施確率Ｐ＝５０％により、ノードＮｂからの５０個の不正パケットのうち２５個をＭＡＣ認証し、残余の２５個の不正パケットを転送先となるシンクノードＳＮに転送する。ＭＡＣ認証をおこなう２５個の不正パケットの各々から得られるＭＡＣ値は、ノードＮａが有する認証鍵により生成されるＭＡＣ値とは異なる。したがって、ＭＡＣ認証の対象となった２５個の不正パケットはノードＮａに破棄される。
【００３５】
シンクノードＳＮは、ノードＮａからの２５個の不正パケットについてＭＡＣ認証をおこなう。ＭＡＣ認証をおこなう２５個の不正パケットの各々から得られるＭＡＣ値は、シンクノードＳＮが有する認証鍵により生成されるＭＡＣ値とは異なる。したがって、ＭＡＣ認証の対象となった２５個の不正パケットはシンクノードＳＮに破棄される。
【００３６】
このように、本実施の形態では、１００個の不正パケットのうちノードＮｂが５０個（従来Ｂでは１００個）、ノードＮａが２５個、シンクノードＳＮが２５個（従来Ａでは１００個）をＭＡＣ認証することになるため、ＭＡＣ認証による負荷を分散することができる。
【００３７】
図３は、パケットのデータ構造を示す説明図である。（Ａ）は平文通信の場合のデータ構造であり、（Ｂ）は暗号化通信の場合のデータ構造を示している。（Ａ）において、パケットは、通信ヘッダ３０１とデータ部３０２とＭＡＣ値格納部３０３とで構成される。通信ヘッダ３０１の詳細は、図４で説明するが、通信ヘッダ３０１には、データ部３０２に格納されたデータの送信元のアドレス、宛先のアドレス、転送元のアドレス、転送先のアドレスが記述される。これらのアドレスとしては、たとえば、送信元のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス、宛先のＭＡＣアドレス、転送元のＭＡＣアドレス、転送先のＭＡＣアドレスが使用される。以降本書では、アドレスにＭＡＣアドレスを用いて説明する。
【００３８】
データ部３０２には、送信元のＭＡＣアドレスにより特定されるノードにより検出されたデータである。ＭＡＣ値格納部３０３には、ＭＡＣ値が格納される。ＭＡＣ値は、通信ヘッダ３０１内の送信元および宛先のＭＡＣアドレスとデータ部３０２内のデータを、全ノードで共有する認証鍵で暗号化したメッセージ認証子となる。
【００３９】
（Ｂ）は、（Ａ）のデータ部３０２内のデータを、送信元のＭＡＣアドレスにより特定されたノード固有の暗号鍵３１０で暗号化した暗号化データ（暗号化データ部３０４内の暗号化データ）がパケットに含まれている。この場合、ＭＡＣ値格納部３０３には、ＭＡＣ値が格納される。ＭＡＣ値は、通信ヘッダ３０１内の送信元および宛先のＭＡＣアドレスと暗号化データ部３０４内の暗号化データを、全ノードで共有する認証鍵Ｋで暗号化したメッセージ認証子となる。なお、サーバＳは、各ノード固有の暗号鍵に対応する復号鍵を記憶しており、シンクノードＳＮからパケットを受信すると、パケット内の暗号化データを復号することができる。
【００４０】
図４は、図３に示した通信ヘッダ３０１の詳細なデータ構造を示す説明図である。通信ヘッダ３０１は、第１の通信情報ヘッダ４０１と第２の通信情報ヘッダ４０２とに分けられる。第１の通信情報ヘッダ４０１は、転送元のＭＡＣアドレスと転送先のＭＡＣアドレスを有する。転送元のＭＡＣアドレスとはパケットのマルチホップ通信元となるノードのＭＡＣアドレスである。転送先のＭＡＣアドレスとはパケットのマルチホップ通信先となるノードのＭＡＣアドレスである。第１の通信情報ヘッダ４０１は、マルチホップ通信により転送される都度、転送先のノードからみた転送元および転送先のＭＡＣアドレスに書き換わる。
【００４１】
一方、第２の通信情報ヘッダ４０２は、送信元のＭＡＣアドレスと宛先のＭＡＣアドレスを有する。送信元のＭＡＣアドレスとは、そのパケット内のデータ（または暗号化データ）の検出元となるノードを特定するＭＡＣアドレスである。宛先のＭＡＣアドレスとは、そのパケット内のデータ（または暗号化データ）の宛先となるノードを特定するＭＡＣアドレスである。通常は、シンクノードＳＮ（もしくはサーバＳのＭＡＣアドレス）のＭＡＣアドレスとなる。転送先のＭＡＣアドレスと宛先のＭＡＣアドレスが一致した場合、宛先のノードにパケットが到達したこととなり、マルチホップ通信が終了する。
【００４２】
図５は、ノードのルーティングテーブルの一例を示す説明図である。図５において、（Ａ）は、ノードＮａのルーティングテーブルを示しており、（Ｂ）は、ノードＮｂのルーティングテーブルを示している。なお、図５では、便宜上、ノードの符号をＭＡＣアドレスのかわりとする。たとえば、ルーティングテーブルに「Ｎａ」とある場合は、ノードＮａのＭＡＣアドレスを示している。
【００４３】
また、１行目のレコードは、シンクノードＳＮへ向かう上り方向に転送する場合に用いるレコードであり、２行目のレコードは、末端へ向かう下り方向に転送する場合に用いるレコードである。２行目のレコードは、シンクノードＳＮからブロードキャストされた場合に適用される。
【００４４】
具体的には、たとえば、それぞれのノードＮａ，Ｎｂにおいて、ルーティングテーブルの転送元のＭＡＣアドレスにより特定されるノードからパケットが転送されてくると、ルーティングテーブルを参照して、転送元のＭＡＣアドレスに対応する転送先のＭＡＣアドレスを特定する。そして、受信したパケットの第１の通信情報ヘッダ４０１の転送先のＭＡＣアドレスを、特定された転送先のＭＡＣアドレスに書き換える。また、受信したパケットの第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを、自ノードのＭＡＣアドレスに書き換える。
【００４５】
たとえば、ノードＮａは、転送元のＭＡＣアドレスが「Ｎｂ」、転送先のＭＡＣアドレスが「Ｎａ」のパケットが、ノードＮｂから転送されてくると、（Ａ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「Ｎｂ」から「Ｎａ」に書き換え、転送先のＭＡＣアドレスを「Ｎａ」から「ＳＮ」に書き換える。
【００４６】
また、転送元のＭＡＣアドレスが「ＳＮ」、転送先のＭＡＣアドレスが「Ｎｂ」のパケットが、シンクノードＳＮから転送されてくると、（Ａ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「ＳＮ」から「Ｎａ」に書き換え、転送先のＭＡＣアドレスを「Ｎａ」から「Ｎｂ」に書き換える。
【００４７】
ノードＮｂは、転送元のＭＡＣアドレスが「Ｎｃ」、転送先のＭＡＣアドレスが「Ｎｂ」のパケットが、ノードＮｃから転送されてくると、（Ｂ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「Ｎｃ」から「Ｎｂ」に書き換え、転送先のＭＡＣアドレスを「Ｎｂ」から「Ｎａ」に書き換える。
【００４８】
また、転送元のＭＡＣアドレスが「Ｎａ」、転送先のＭＡＣアドレスが「Ｎｂ」のパケットが、ノードＮａから転送されてくると、（Ｂ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「Ｎａ」から「Ｎｂ」に書き換え、転送先のＭＡＣアドレスを「Ｎｂ」から「Ｎｃ」に書き換える。
【００４９】
図６は、マルチホップ通信での通信ヘッダ３０１の状態を示す説明図である。図６では，ノードＮｃを送信元としシンクノードＳＮを宛先とした場合の通信ヘッダ３０１の状態を示している。図６に示した通信ヘッダ３０１では、左から転送元、転送先、送信元、宛先のＭＡＣアドレスとする。なお、図６の通信ヘッダ３０１では、便宜上、ノードの符号をＭＡＣアドレスのかわりとする。
【００５０】
ノードＮｃ〜シンクノードＳＮまでのマルチホップ通信では、第２の通信情報ヘッダ４０２の記述内容には変化はない。したがって、送信元はノードＮｃ、宛先はシンクノードＳＮであることがわかる。一方、第１の通信情報ヘッダ４０１はマルチホップ通信の都度書き換わる。ノードＮｃでは、第１の通信情報ヘッダ４０１は｛Ｎｃ、Ｎｂ｝であるため、そのパケットはノードＮｂに転送される。ノードＮｂでは、第１の通信情報ヘッダ４０１は｛Ｎｂ、Ｎａ｝に書き換わるため、そのパケットはノードＮａに転送される。また、ノードＮａでは、第１の通信情報ヘッダ４０１は｛Ｎａ、ＳＮ｝に書き換わるため、そのパケットはシンクノードＳＮに転送される。
【００５１】
図７は、アドホックネットワーク１００を構成するノードのハードウェア構成例を示すブロック図である。図７において、ノードは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）７０２と、フラッシュメモリ７０３と、インターフェース（Ｉ／Ｆ）７０４と、暗号化回路７０５と、センサ７０６と、バス７０７とを備えている。ＣＰＵ７０１〜センサ７０６は、バス７０７よってそれぞれ接続されている。
【００５２】
ここで、ＣＰＵ７０１は、ノードの全体の制御を司る。ＲＡＭ７０２は、ＣＰＵ７０１のワークエリアとして使用される。フラッシュメモリ７０３は、プログラムやルーティングテーブル、認証鍵Ｋや暗号鍵などの鍵情報を記憶している。Ｉ／Ｆは、マルチホップ通信によりパケットを送受信する。
【００５３】
暗号化回路７０５は、データを暗号化する場合に暗号鍵によりデータを暗号化する回路である。暗号化をソフトウェア的に実行する場合は、暗号化回路７０５に相当するプログラムをフラッシュメモリ７０３に記憶させておくことで、暗号化回路７０５は不要となる。センサ７０６は、センサ７０６固有のデータを検出する。たとえば、温度、湿度、水位、降水量、風量、音量、電力、時間、時刻など、測定対象にあったデータを検出する。
【００５４】
以下、図１〜図７の内容を利用した実施の形態１〜４についてそれぞれ説明する。実施の形態１は、認証実施確率Ｐをあらかじめ設定して認証実施／転送を実行する。実施の形態２は、ノードの負荷に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。実施の形態３は、パケットの宛先に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。実施の形態４は、ノードの負荷およびパケットの宛先に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。以下、実施の形態１から説明する。
【００５５】
（実施の形態１）
図８は、実施の形態１にかかるノードの機能的構成例を示すブロック図である。図８において、ノードは、受信部８０１と、決定部８０２と、認証部８０３と、送信部８０４と、破棄部８０５とを備えている。受信部８０１〜破棄部８０５は、具体的には、たとえば、図７に示したフラッシュメモリ７０３などの記憶装置に記憶されたプログラムをＣＰＵ７０１に実行させることにより、または、Ｉ／Ｆ７０４により、その機能を実現する。
【００５６】
受信部８０１は、パケットを受信する機能を有する。具体的には、受信部８０１は、パケットを受信すると、パケット内の通信ヘッダ３０１を解析する。第２の通信情報ヘッダ４０２の内容により、通信の種類が特定される。
【００５７】
たとえば、第２の通信情報ヘッダ４０２の宛先のＭＡＣアドレスがシンクノードＳＮのＭＡＣアドレスである場合、マルチホップ通信によりシンクノードＳＮに送信され、シンクノードＳＮから通常ネットワーク１０１を介してサーバＳに転送される通信である。
【００５８】
また、第２の通信情報ヘッダ４０２の宛先のＭＡＣアドレスがブロードキャスト（「ＦＦ：ＦＦ：ＦＦ：ＦＦ」）である場合、シンクノードＳＮからアドホックネットワーク１００内の全ノードに配信されるブロードキャスト通信である。また、宛先がシンクノードＳＮ以外のノードである場合、ノード間通信である。
【００５９】
決定部８０２は、受信部８０１によって受信されたパケットの認証を実施する確率（認証実施確率Ｐ）にしたがって、受信されたパケットを認証実施対象または転送対象に決定する機能を有する。認証実施確率Ｐとは、受信されたパケットについてＭＡＣ認証を実施する確率である認証実施確率Ｐは、あらかじめ設定する確率ｍ／ｎ（ｎ＞ｍ）である。上述した図２では５０％に設定したが、５０％に限らず、適宜設定可能である。
【００６０】
決定部８０２は、認証実施確率Ｐにしたがってランダムに決定する。１〜ｎまでの数値をランダムに発生させ、発生した乱数が１〜ｍの中の数値にあれば、そのときの受信パケットは、認証実施対象となる。一方、ｍ＋１〜ｎの中の数値であれば、そのときの受信パケットは、転送対象となる。ランダムにせずに、一定数連続で認証実施対象としたり、転送対象にしたりすると、そのような決定パターンが不正者に読まれた場合に、意図的に転送対象となる期間に不正パケットを流される可能性が考えられる。ランダムに対象先を決定することで、そのような不正行為を抑止することができる。
【００６１】
また、受信する都度、認証実施確率Ｐで決定すると、乱数で認証を実施するのではなく、カウンタにより決定することとしてもよい。具体的には、初期値を０にしておき、パケットを受信する都度１加算する。計数値がｎのときにパケットを受信すると、１に戻ることとする。
【００６２】
そして、計数値がｎになるまでの間、ｍ個のパケットが認証実施対象となった場合は、それ以降計数値がｎまでの間のパケットについては、強制的に（乱数を生成することなく）転送対象とする。これにより、連続して受信されたｎ個のパケットについては、ｍ個が認証実施対象となり、（ｎ−ｍ）個が転送対象となる。
【００６３】
認証部８０３は、決定部８０２によってパケットが認証実施対象に決定された場合、各ノードで共通の認証鍵に基づいて、パケットの正当性を認証する機能を有する。認証部８０３は、具体的には、たとえば、ＭＡＣ値を用いて、ＳＨＡ１、ＳＨＡ２などのハッシュ関数を使ったＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ）アルゴリズムによりＭＡＣ値を求める。また、認証鍵暗号を使ったＡＥＳ−ＣＢＣ−ＭＡＣアルゴリズムによりＭＡＣ値を求めてもよい。
【００６４】
いずれにしても、ＭＡＣ値を求める場合は、算出元となるデータをパケットから取り出す。具体的には、認証実施対象のパケットに含まれている第２の通信情報ヘッダ４０２およびデータ部３０２内のデータ（または暗号化データ部３０４内の暗号化データ）をＭＡＣ値の算出元データとして取り出す。そして、算出元データと認証鍵を上述したアルゴリズムに与えることで、認証鍵により保証されたＭＡＣ値（算出ＭＡＣ値）が得られる。
【００６５】
一方、認証実施対象のパケットにもＭＡＣ値が含まれているため、ＭＡＣ値を抽出する。そして、この抽出ＭＡＣ値と算出ＭＡＣ値とが一致するか否かを判断する。一致する場合は、認証されたことになる。一方、不一致の場合は、認証されなかった、すなわち、不正パケットであると判断される。
【００６６】
送信部８０４は、決定部８０２によって転送対象に決定された場合または認証部８０３によって認証された場合、パケットを転送先のノードに送信する機能を有する。認証部８０３によって認証されたパケットは正常パケットであるため、パケットの第１の通信情報ヘッダ４０１を図５および図６に示したように書き換えて転送設定する。そして、転送先のノードにパケットを送信する。
【００６７】
破棄部８０５は、認証部８０３によって認証されなかった場合、パケットを破棄する機能を有する。具体的には、たとえば、破棄対象や認証されなかったパケットを、ノード内のＲＡＭ７０２やフラッシュメモリ７０３、ＣＰＵ７０１内のキャッシュやレジスタなどの記憶領域に保持されたパケットを消去する。
【００６８】
図９は、実施の形態１にかかるノードＮａ〜Ｎｈ（図９および図１０において、「ノードＮ」と総称する。）での検出データの送信処理手順を示すフローチャートである。図９において、ノードＮは、センサ７０６により対象となるデータが検出されるのを待ち受け（ステップＳ９０１：Ｎｏ）、データが検出されると（ステップＳ９０１：Ｙｅｓ）、ノードＮは、通信ヘッダ３０１内の情報を設定する（ステップＳ９０２）。
【００６９】
具体的には、ノードＮは、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスには自ノードのＭＡＣアドレスを設定し、転送先のＭＡＣアドレスには、ルーティングテーブルで規定された転送先のＭＡＣアドレスのうち上り側（図５の一行目のレコードの転送先）のＭＡＣアドレスを設定する。また、ノードＮは、第２の通信情報ヘッダ４０２の送信元のＭＡＣアドレスには自ノードのＭＡＣアドレスを設定し、宛先のＭＡＣアドレスには、シンクノードＳＮのＭＡＣアドレスを設定する。
【００７０】
第２の通信情報ヘッダ４０２が設定されると、ノードＮは、検出されたデータと第２の通信情報ヘッダ４０２と認証鍵とを用いてＭＡＣ値を計算する（ステップＳ９０３）。そして、ノードＮは、通信ヘッダ３０１と検出データにＭＡＣ値をつけてパケットとし、転送先のＭＡＣアドレスあてに送信する（ステップＳ９０４）。これにより、検出データの送信処理を終了する。なお、図９に示した検出データの送信処理は、後述する実施の形態２〜４についても同一の処理を実行することとなる。
【００７１】
図１０は、実施の形態１にかかるノードＮでのパケット転送処理手順を示すフローチャートである。図１０において、ノードＮは、受信部８０１によりパケットを受信するのを待ち受け（ステップＳ１００１：Ｎｏ）、パケットを受信した場合（ステップＳ１００１：Ｙｅｓ）、ノードＮは、受信したパケットの通信ヘッダ３０１を解析する（ステップＳ１００２）。そして、ノードＮは、通信ヘッダ３０１の解析結果から、受信したパケットが転送パケットであるか否かを判断する（ステップＳ１００３）。すなわち、受信されたパケットが自ノードを宛先とするパケットであるか否かを判断する（ステップＳ１００３）。
【００７２】
転送パケットでない場合（ステップＳ１００３：Ｎｏ）、自ノード宛のパケットとなるため、ノードＮは、データ処理を実行する（ステップＳ１００４）。具体的には、ノードＮは、受信されたパケットのデータ部３０２からデータを取り出す。取り出されたデータについては、必要に応じた処理をおこなう。これにより、自ノード宛のパケットについてのパケット転送処理を終了する。
【００７３】
一方、転送パケットである場合（ステップＳ１００３：Ｙｅｓ）、ノードＮは、決定部８０２により乱数を生成し（ステップＳ１００５）、認証実施対象であるか転送対象であるかを決定する（ステップＳ１００６）。転送対象に決定された場合（ステップＳ１００６：Ｎｏ）、ノードＮは、送信部８０４により、転送設定処理を実行してパケットの第１の通信情報ヘッダ４０１を書き換える（ステップＳ１００７）。そして、ノードＮは、送信部８０４により、転送先のノードにパケットを送信する（ステップＳ１００８）。これにより、ステップＳ１００６において転送対象に決定された場合のパケット転送処理を終了する。
【００７４】
一方、ステップＳ１００６において、認証実施対象に決定された場合（ステップＳ１００６：Ｙｅｓ）、ノードＮは、認証部８０３により、パケットからＭＡＣ値を抽出するとともに、ＭＡＣ値の算出元データを抽出する（ステップＳ１００９）。つぎに、ノードＮは、ＭＡＣ値の算出元データと認証鍵とによりＭＡＣ値を算出する（ステップＳ１０１０）。そして、ノードＮは、認証部８０３により、抽出ＭＡＣ値と算出ＭＡＣ値とが一致するか否かを判断する（ステップＳ１０１１）。
【００７５】
一致する場合（ステップＳ１０１１：Ｙｅｓ）、ステップＳ１００７に移行して、パケットを転送することになる。一方、不一致の場合（ステップＳ１０１１：Ｎｏ）、ノードＮは、破棄部８０５によりパケットを破棄する（ステップＳ１０１２）。これにより、認証実施対象に決定された場合のパケット転送処理を終了する。
【００７６】
このように、実施の形態１によれば、ノードは、あらかじめ設定された認証実施確率Ｐにしたがって、認証部８０３による認証を実施するか、認証を実施せずに転送先にそのまま転送するかを決定する。このような処理をアドホックネットワーク１００内のノードがパケットを受信する都度実行することで、シンクノードＳＮや不正パケットを直接受信したノードに負荷が集中することなく、負荷分散を図ることができる。したがって、アドホック通信の遅延やパケットの欠落が低減される。
【００７７】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態２では、ノードの負荷に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。具体的には、負荷が高くなると認証実施確率Ｐを低くし、負荷が低くなると、認証実施確率Ｐを高くする。このように、認証実施確率Ｐを変動させることで、負荷が高いノードは認証実施することなくパケットを転送し、負荷が低いノードはパケット転送／破棄の前に認証実施する確率が高くなる。
【００７８】
図１１は、実施の形態２にかかるノードの機能的構成例を示すブロック図である。なお、実施の形態１と同一構成については同一符号を付し、その説明を省略する。実施の形態２にかかるノードは、実施の形態１に、計測部１１０１と設定部１１０２とを追加した構成である。
【００７９】
計測部１１０１は、ノード内の負荷を計測する機能を有する。ここで、ノード内の負荷とは、ノード内のＣＰＵ７０１やフラッシュメモリ７０３の使用率である。計測部１１０１は、たとえば、このような負荷を所定期間計測し、所定期間における負荷の平均値を算出する。なお、平均値に限らず、所定期間内における中央値や最大値、最小値、任意の値でもよい。
【００８０】
設定部１１０２は、計測部１１０１によって計測された負荷に応じて確率を設定する機能を有する。具体的には、負荷が高くなると認証実施確率Ｐを下げ、負荷が低くなると認証実施確率Ｐを上げる。たとえば、負荷のしきい値を設定しておき、負荷がしきい値以上に変化した場合は、認証実施確率Ｐを下げ、しきい値未満に変化した場合は、認証実施確率Ｐを上げる。また、今回計測した負荷が前回計測した負荷以上に変化した場合は、認証実施確率Ｐを下げ、前回計測した負荷未満に変化した場合は、認証実施確率Ｐを上げる。
【００８１】
また、認証実施確率Ｐをどの程度変動させるかについては、負荷の変動の有無に応じて設定しておく。たとえば、認証実施確率ＰをＰ（０＜Ｐ＜１）とした場合、負荷の変動の有無により、認証実施確率Ｐをｗ×Ｐに設定する。ｗは重みであり、たとえば、負荷が高くなったときはｗを０＜ｗ＜１（たとえば、ｗ＝０．５）とし、負荷が低くなったときはｗをｗ＞１（たとえば、ｗ＝２．０）とする。たとえば、デフォルトの認証実施確率Ｐを１／４とした場合、負荷が高くなると認証実施確率Ｐを１／４から１／８とし、負荷が低くなると認証実施確率Ｐを１／４から１／２に設定する。
【００８２】
また、設定部１１０２は、負荷の変動量に応じて設定してもよい。たとえば、認証実施確率ＰをＰ（０＜Ｐ＜１）とする。たとえば、負荷が（しきい値または前回の負荷に対して）Ｌ％増の場合は、認証実施確率ＰをＬ×Ｐに設定する。一方、負荷が（しきい値または前回の負荷に対して）Ｌ％減の場合は、認証実施確率Ｐを（１＋Ｌ）×Ｐに設定する。
【００８３】
つぎに、実施の形態２でのノードの実行処理手順について説明する。なお、検出データの送信処理手順（図９）およびパケット転送処理手順（図１０）については、実施の形態１と同一処理手順であるため、説明を省略する。
【００８４】
図１２は、認証実施確率Ｐの設定処理手順を示すフローチャートである。図１２において、まず、負荷の算出タイミングがくるまで待ち受ける（ステップＳ１２０１：Ｎｏ）。算出タイミングとは、たとえば、周期的に到来する時刻とする。算出タイミングになると（ステップＳ１２０１：Ｙｅｓ）、計測部１１０１は、現在時刻までの所定期間の負荷を算出する（ステップＳ１２０２）。
【００８５】
そして、設定部１１０２は、算出された負荷により認証実施確率Ｐを更新する（ステップＳ１２０３）。具体的には、ＲＡＭ７０２やフラッシュメモリ７０３などの記憶領域に更新後の認証実施確率Ｐを書き込み、決定部８０２が、図１０のステップＳ１００６を実行する際に、当該記憶領域を参照して、更新後の認証実施確率Ｐを読み込むこととなる。
【００８６】
このように、実施の形態２では、計測部１１０１および設定部１１０２を追加したことにより、決定部８０２は、設定後の認証実施確率Ｐにより、受信したパケットを認証実施対象または転送対象に決定することとなる。アドホックネットワークでは、上流ノードほど負荷が高く、下流ノードほど負荷が低い傾向があるので、負荷が低い下流ノードほど高い確率で認証実施をおこなうことになり、負荷が高い上流ノードには不正なパケットが到達しにくく、実施の形態１よりもさらに効率的に負荷分散をおこなうことができる。
【００８７】
（実施の形態３）
つぎに、実施の形態３について説明する。実施の形態３は、受信したパケットの宛先に応じて認証実施確率Ｐを変動させる例である。ノードは、上述したように、自らが検出したデータをマルチホップ通信により転送先のノードに転送して、目的となるシンクノードＳＮに送信する処理（図９）と、他のノードから転送されてきたパケットを、マルチホップ通信により転送先に転送する処理（図１０）がある。
【００８８】
後者のパケット転送の場合、受信したパケットの宛先によっては、ＭＡＣ認証が必須であったり、ＭＡＣ認証が必ずしも必要でなかったりするパケットもある。したがって、パケットの通信ヘッダ３０１（具体的には、第２の通信情報ヘッダ４０２）を解析して宛先を特定し、特定した宛先に応じて認証実施確率Ｐを変動させる。
【００８９】
図１３は、実施の形態３にかかるノードの機能的構成例を示すブロック図である。なお、実施の形態１と同一構成については同一符号を付し、その説明を省略する。実施の形態３にかかるノードは、実施の形態１に、検出部１３０１と設定部１３０２とを追加した構成である。
【００９０】
検出部１３０１は、パケットの宛先を検出する機能を有する。具体的には、たとえば、パケットの通信ヘッダ３０１内の第２の通信情報ヘッダ４０２内の宛先のＭＡＣアドレスを検出する。検出される宛先は、ブロードキャスト、シンクノードＳＮのＭＡＣアドレス、ノード（シンクノードＳＮ除く）のＭＡＣアドレスの３種類である。
【００９１】
設定部１３０２は、検出部１３０１によって検出された宛先に応じて確率を設定する機能を有する。具体的には、たとえば、検出された宛先のＭＡＣアドレスがブロードキャストの場合、認証実施確率Ｐを１００％に設定する。
【００９２】
宛先のＭＡＣアドレスがブロードキャストである場合、シンクノードＳＮからアドホックネットワーク１００内のノード群宛に配信したパケットである。シンクノードＳＮからブロードキャストされるパケットは、たとえば、ルーティングの設定、設定変更といったデータが含まれている。このような、ブロードキャストされるパケットは、どのノードも受信対象となるため、他のノードへの転送の有無に関わらず、ＭＡＣ認証が必要となる。したがって、ブロードキャストの場合は、認証実施確率ＰをＰ＝１に設定する。
【００９３】
そのため、ブロードキャスト通信は必ずＭＡＣ認証を行い、不正パケットでない場合のみ転送を行う。ＭＡＣ認証の処理量は、自ノード宛のパケットのＭＡＣ認証処理と兼用できるため、実質的に無視できる。ブロードキャスト通信は全ノードへ拡散される非常に影響の大きい通信であるので、各ノードにおいて認証実施確率Ｐが１００％で認証されることは、不正通信を遮断する目的上、非常に有効となる。
【００９４】
また、検出された宛先のＭＡＣアドレスがシンクノードＳＮのＭＡＣアドレスである場合、シンクノードＳＮやルーティングされた経路の上流側のノードへの影響が高い通信であるため、実施の形態１，２で説明したように、認証実施確率ＰによりＭＡＣ認証または転送を決定し、負荷分散を図る。これにより、シンクノードＳＮや上流側のノードへの負荷を低減することができる。
【００９５】
また、検出された宛先のＭＡＣアドレスがノード（シンクノードＳＮ除く）のＭＡＣアドレスである場合、認証実施確率Ｐを、宛先のＭＡＣアドレスがシンクノードＳＮである場合の認証実施確率Ｐよりも低い確率に設定する。このような場合、シンクノードＳＮや上流側のノードへの影響は低い。そのため、シンクノードＳＮ宛の場合の認証実施確率Ｐよりも低く設定したり、認証実施確率Ｐを０％に設定する。たとえば、あらかじめ用意した重みｗ（０≦ｗ＜１）を認証実施確率Ｐに掛けることで、認証実施確率Ｐを更新する。
【００９６】
図１４は、実施の形態３にかかるノードＮａ〜Ｎｈ（図１４において、「ノードＮ」と総称する。）でのパケット転送処理手順を示すフローチャートである。図１４において、ノードＮは、受信部８０１によりパケットを受信するのを待ち受ける（ステップＳ１４０１：Ｎｏ）。ノードＮは、パケットを受信した場合（ステップＳ１４０１：Ｙｅｓ）、検出部１３０１により、受信したパケットの通信ヘッダ３０１を解析して、宛先のＭＡＣアドレスを検出する（ステップＳ１４０２）。
【００９７】
そして、ノードＮは、設定部１３０２により、宛先のＭＡＣアドレスに応じた認証実施確率に設定する（ステップＳ１４０３）。このあと、ノードＮは、決定部８０２により乱数を生成し（ステップＳ１４０４）、認証実施対象であるか転送対象であるかを決定する（ステップＳ１４０５）。転送対象に決定された場合（ステップＳ１４０５：Ｎｏ）、ノードＮは、宛先のＭＡＣアドレスが、自ノードのＭＡＣアドレスであるか否かを判断する（ステップＳ１４０６）。
【００９８】
自ノードのＭＡＣアドレスである場合（ステップＳ１４０６：Ｙｅｓ）、ノードＮは、データ処理を実行する（ステップＳ１４０７）。具体的には、ノードＮは、受信されたパケットのデータ部３０２からデータを取り出す。取り出されたデータについては、必要に応じた処理をおこなう。これにより、ステップＳ１４０６において転送対象に決定された場合の自ノード宛のパケットについてのパケット転送処理を終了する。
【００９９】
また、ステップＳ１４０６において、宛先のＭＡＣアドレスが、自ノード以外の他のノードのＭＡＣアドレスである場合（ステップＳ１４０６：Ｎｏ）、ノードＮは、送信部８０４により、転送設定処理を実行してパケットの第１の通信情報ヘッダ４０１を書き換える（ステップＳ１４０８）。そして、ノードＮは、送信部８０４により、転送先のノードにパケットを送信する（ステップＳ１４０９）。これにより、ステップＳ１４０６において転送対象に決定された場合の他ノード宛のパケットについてのパケット転送処理を終了する。
【０１００】
また、ステップＳ１４０５において、認証実施対象に決定された場合（ステップＳ１４０５：Ｙｅｓ）、ノードＮは、認証部８０３により、パケットからＭＡＣ値を抽出するとともに、ＭＡＣ値の算出元データを抽出する（ステップＳ１４１０）。つぎに、ノードＮは、ＭＡＣ値の算出元データと認証鍵とによりＭＡＣ値を算出する（ステップＳ１４１１）。そして、ノードＮは、認証部８０３により、抽出ＭＡＣ値と算出ＭＡＣ値とが一致するか否かを判断する（ステップＳ１４１２）。
【０１０１】
一致する場合（ステップＳ１４１２：Ｙｅｓ）、ステップＳ１４０６に移行する。一方、不一致の場合（ステップＳ１４１２：Ｎｏ）、ノードＮは、破棄部８０５によりパケットを破棄する（ステップＳ１４１３）。これにより、認証実施対象に決定された場合のパケット転送処理を終了する。
【０１０２】
このように、実施の形態３によれば、ノードＮは、パケットを宛先により分類し、ＭＡＣ認証を行う確率を変化させることにより、ＭＡＣ認証による負荷をアドホックネットワーク１００全体に負荷分散することができる。したがって、シンクノードＳＮや上流側のノードへの負荷集中や、特定のノードへの負荷集中を防止することができる。また、パケットの分類処理は、自ノードが認識できるブロードキャスト（宛先なし）とシンクノードＳＮへの通信（通常ネットワーク１０１へのデフォルトゲートウエイ）、およびそれ以外のノードに分けるだけであり、転送処理と兼用できるため、処理負荷は無視できる程度である。
【０１０３】
（実施の形態４）
つぎに、実施の形態４について説明する。実施の形態４は、実施の形態３に実施の形態２を適用した例である。
【０１０４】
図１５は、実施の形態４にかかるノードの機能的構成例を示すブロック図である。なお、実施の形態１〜３と同一構成については同一符号を付し、その説明を省略する。図１５において、設定部１５００は、実施の形態２の設定部１１０２と実施の形態３の設定部１３０２の両方の機能を備えている。したがって、認証実施確率Ｐの設定処理手順については図１２と同じであり、パケット転送処理手順については図１４と同じである。
【０１０５】
なお、実施の形態４では、受信したパケットの宛先のＭＡＣアドレスがブロードキャストである場合、認証実施確率ＰがＰ＝１（１００％）に設定されるため、設定部１５００では、ブロードキャストの場合に限って負荷による認証実施確率Ｐは更新しない。
【０１０６】
このように、実施の形態４によれば、転送による負荷が高くなっても、自ノードの処理の遅延をなくすことが可能であり、処理に余裕がある場合は、アドホックネットワーク１００全体への影響が高いパケットから優先的にＭＡＣ認証を行うことができる。
【０１０７】
以上のことから、本実施の形態１〜４によれば、アドホックネットワーク１００内での不正パケットに対する負荷分散を効率的におこなうことができるという効果を奏する。
【符号の説明】
【０１０８】
１００  アドホックネットワーク
１０１  通常ネットワーク
８０１  受信部
８０２  決定部
８０３  認証部
８０４  送信部
８０５  破棄部
１１０１  計測部
１１０２  設定部
１３０１  検出部
１３０２  設定部
１５００  設定部
Ｎａ〜Ｎｈ  ノード
Ｎｘ  不正ノード
ＳＮ  シンクノード
【図１】
2011121713.tif 000003
【図２】
2011121713.tif 000004
【図３】
2011121713.tif 000005
【図４】
2011121713.tif 000006
【図５】
2011121713.tif 000007
【図６】
2011121713.tif 000008
【図７】
2011121713.tif 000009
【図８】
2011121713.tif 000010
【図９】
2011121713.tif 000011
【図１０】
2011121713.tif 000012
【図１１】
2011121713.tif 000013
【図１２】
2011121713.tif 000014
【図１３】
2011121713.tif 000015
【図１４】
2011121713.tif 000016
【図１５】
2011121713.tif 000017
【図１６】
2011121713.tif 000018
【図１７】
2011121713.tif 000019
【手続補正書】
【提出日】平成24年7月23日(2012.7.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードであって、
転送元のノードからのパケットを受信する受信手段と、
前記受信手段によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定手段と、
前記決定手段によって前記パケットが認証実施対象に決定された場合、前記アドホックネットワーク内の各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証手段と、
前記決定手段によって転送対象に決定された場合または前記認証手段によって認証された場合、前記パケットを転送先として設定されている特定のノードに送信する送信手段と、
前記認証手段によって認証されなかった場合、前記パケットを破棄する破棄手段と、
を備えることを特徴とするノード。
【請求項２】
前記ノード内の負荷を計測する計測手段と、
前記計測手段によって計測された負荷に応じて前記確率を設定する設定手段と、をさらに備え、
前記決定手段は、
前記設定手段によって設定された確率にしたがって、前記パケットを認証実施対象または破棄対象に決定することを特徴とする請求項１に記載のノード。
【請求項３】
前記パケットの宛先を検出する検出手段と、
前記検出手段によって検出された宛先に応じて前記確率を設定する設定手段と、をさらに備え、
前記決定手段は、
前記設定手段によって設定された確率にしたがって、前記パケットを認証実施対象または転送対象に決定することを特徴とする請求項１に記載のノード。
【請求項４】
前記設定手段は、
前記宛先が前記アドホックネットワーク内の全ノードである場合、前記確率を１００％に設定することを特徴とする請求項３に記載のノード。
【請求項５】
前記設定手段は、
前記宛先が前記ノード群のうち前記特定のノード以外の他のノードである場合、前記確率を、前記宛先が前記特定のノードである場合の確率よりも低い確率に設定することを特徴とする請求項３に記載のノード。
【請求項６】
前記ノード内の負荷を計測する計測手段をさらに備え、
前記設定手段は、
前記検出手段によって検出された宛先および前記計測手段によって計測された負荷に応じて前記確率を設定することを特徴とする請求項３に記載のノード。
【請求項７】
マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードが実行する転送方法であって、
前記アドホックネットワーク内のノード群のうち転送元のノードからのパケットを受信する受信工程と、
前記受信工程によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定工程と、
前記決定工程によって前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証工程と、
前記決定工程によって転送対象に決定された場合または前記認証工程によって認証された場合、前記パケットを転送先として設定された特定のノードに送信する送信工程と、
前記認証工程によって認証されなかった場合、前記パケットを破棄する破棄工程と、
を含むことを特徴とする転送方法。
【請求項８】
マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードに実行させる転送プログラムであって、
前記アドホックネットワーク内のノード群のうち転送元のノードからのパケットを受信する受信工程と、
前記受信工程によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定工程と、
前記決定工程によって前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証工程と、
前記決定工程によって転送対象に決定された場合または前記認証工程によって認証された場合、前記パケットを転送先として設定された特定のノードに送信する送信工程と、
前記認証工程によって認証されなかった場合、前記パケットを破棄する破棄工程と、
を実行させることを特徴とする転送プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットを転送するノード、転送方法、および転送プログラムに関する。
【背景技術】
【０００２】
アドホックネットワークは、無線通信でリンクする自己構成型のネットワークの一種である。アドホックネットワークはノードにより構成される。ノードは、他のノードと通信を行うとき、相手のノードと直接通信はできず、隣接するノードへパケットを送信する。
【０００３】
隣接するノードは同様に自分の隣接するノードへパケットを送信し、これを繰り返す。このような通信をマルチホップ通信と呼ぶ。アドホックネットワークでは、マルチホップ通信により目的のノードと通信を行う。このように、すべてのノードは自分とは無関係のパケットを転送するルータとしての機能を持つ。
【０００４】
また、アドホックネットワークとインターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク（以下、アドホックネットワークと区別するため、「通常ネットワーク」と称す。）とを接続する場合、シンクノードＳＮと呼ばれる特定のノードを用いる。シンクノードＳＮは、アドホックネットワークプロトコルと通常のネットワークプロトコルの両方を理解し、アドホックネットワーク―通常ネットワーク間の通信の転送を行う。
【０００５】
したがって、アドホックネットワークと通常ネットワークが通信を行う場合、必ずこのシンクノードＳＮを通して通信することになる。そのため、シンクノードＳＮとそれに近いノードの通信量が大きくなる傾向にある。
【０００６】
多くの場合、アドホックネットワークは、無線センサネットワークに代表されるように、センサ等の小型で能力の高くないノードが無線通信でリンクされる。ノードの処理能力が高くないことから、通信量やそれにかかる処理量は極力小さくすることが望まれている。一方で、無線通信によるマルチホップ通信のため、悪意の攻撃者が不正な通信をネットワークに送信することは、通常のネットワークよりたやすいと言われている。そのため、ノードの処理量が小さく、不正な通信を遮断できるような方式が求められている。
【０００７】
図１６は、従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その１）である。図１６において、アドホックネットワークは、ノードＮａ〜ＮｃとシンクノードＳＮとを含むネットワークである。ここでは、シンクノードＳＮのアドホックルーティングにより、ノードＮｃ→ノードＮｂ→ノードＮａ→シンクノードＳＮの順序で、データが転送される。
【０００８】
各ノードＮａ〜Ｎｃは、メッセージを認証する鍵（認証鍵Ｋ）を共有し、パケットにＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ；メッセージ認証子。以下、「ＭＡＣ値」と称す。）を付けて転送する。たとえば、ノードＮｃでデータが検出されると、ノードＮｃは検出データによりＭＡＣ値を生成し、検出データおよびＭＡＣ値を含むパケットをノードＮｂに転送する。ノードＮｂはノードＮｃから転送されてきたパケットをノードＮａに転送し、ノードＮａはシンクノードＳＮに転送する。
【０００９】
同様に、ノードＮｂでデータが検出されると、ノードＮｂは検出データによりＭＡＣ値を生成し、検出データおよびＭＡＣ値を含むパケットをノードＮａに転送する。ノードＮａは、転送されてきたパケットをシンクノードＳＮに転送する。また、シンクノードＳＮでは、アドホックネットワークから通常ネットワークへ転送するパケットに対し、ＭＡＣ値の認証（ＭＡＣ認証）を行う。
【００１０】
今、悪意の攻撃者が不正ノードＮｘを設置し、隣接するノードＮｂに不正なパケットを１００個送信する場合を考える。ノードＮｂは受信した１００個の不正パケットをノードＮａに転送し、ノードＮａは転送されてきた１００個の不正パケットをシンクノードＳＮに転送する。
【００１１】
シンクノードＳＮはパケットのＭＡＣ認証を行うが、不正ノードＮｘは認証鍵を共有していないため、ＭＡＣ認証で失敗する。これにより、不正パケットであると判断され、シンクノードＳＮはこれらのパケットを破棄する。不正ノードＮｘがノードＮｃやノードＮａに不正パケットを転送した場合も同様に、シンクノードＳＮがパケットを破棄する。
【００１２】
図１７は、従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その２）である。図１６と比較するため、図１６と同一構成とする。図１７では、各ノードＮａ〜Ｎｃが転送先に転送する際に、転送するパケットのＭＡＣ認証をおこなう。
【００１３】
今、悪意の攻撃者が不正ノードＮｘを設置し、隣接するノードＮｂに不正なパケットを１００個送信する場合を考える。ノードＮｂは受信した１００個の不正パケットをノードＮａに転送する前に、不正パケットのＭＡＣ認証を行うが、不正ノードＮｘは認証鍵を共有していないため、ＭＡＣ認証で失敗する。
【００１４】
これにより、ノードＮｂにより不正パケットであると判断され、ノードＮｂは不正パケットを破棄する。ノードＮｃやノードＮａが不正パケットを受信した場合も同様にＭＡＣ認証が失敗する。このように、図１７では、不正パケットを受信したノードが不正パケットを転送せずに破棄することとなる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００７−１３３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、上述した従来技術では、図１６の場合、ＭＡＣ認証はすべてシンクノードＳＮが行うが、シンクノードＳＮはアドホックネットワーク―通常ネットワーク間の通信の転送も行っている。したがって、ＭＡＣ認証がシンクノードＳＮに集中すると、シンクノードＳＮの負荷が増大し、通常ネットワークへの転送に遅延や支障をきたすという問題があった。
【００１７】
一方、図１７の場合、不正パケットを直接受信したノードが処理するため、シンクノードＳＮの処理負荷は軽減されるが、不正ノードＮｘに隣接するノードＮｂがメッセージ認証にかかる負荷をすべて負うことになる。ノードＮａ〜Ｎｃは一般のノードでありシンクノードＳＮより処理能力が低いことが考えられる。
【００１８】
このため、ノードＮｂの処理負荷が増大すると、ノードＮｃからのマルチホップ通信に遅延が出たり、自ノード（ノードＮｂ）での検出データをマルチホップ通信することができなくなったりする。したがって、パケット転送に遅延が生じたり、転送すべきパケットが欠落したりするという問題があった。
【００１９】
特に、シンクノードＳＮに近い上流のノードは、下流のノード群からのパケットが集中しやすいため、負荷が増大すると、アドホックネットワーク全体にパケット転送の遅延やパケットの欠落が生じることとなる。
【００２０】
本発明は、上述した従来技術による問題点を解消するため、アドホックネットワーク内での不正パケットに対する負荷分散を効率的におこなうことができるノード、転送方法、および転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上述した課題を解決し、目的を達成するため、開示するノード、転送方法、および転送プログラムは、各々検出されたデータを含むパケットをマルチホップ通信により特定のノードに送信するアドホックネットワーク内のノード群のうち、転送元のノードからのパケットを受信し、受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定し、前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証し、転送対象に決定された場合または認証された場合、前記パケットを前記転送先のノードに送信し、認証されなかった場合、前記パケットを破棄することを要件とする。
【発明の効果】
【００２２】
本発明にかかるノード、転送方法、および転送プログラムによれば、アドホックネットワーク内での不正パケットに対する負荷分散を効率的におこなうことができるという効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】アドホックネットワークの構成例を示す説明図である。
【図２】本実施の形態での不正パケットの破棄と図１６および図１７に示した不正パケットの破棄との比較例を示す説明図である。
【図３】パケットのデータ構造を示す説明図である。
【図４】図３に示した通信ヘッダの詳細なデータ構造を示す説明図である。
【図５】ノードのルーティングテーブルの一例を示す説明図である。
【図６】マルチホップ通信での通信ヘッダの状態を示す説明図である。
【図７】アドホックネットワークを構成するノードのハードウェア構成例を示すブロック図である。
【図８】実施の形態１にかかるノードの機能的構成例を示すブロック図である。
【図９】実施の形態１にかかるノードでの検出データの送信処理手順を示すフローチャートである。
【図１０】実施の形態１にかかるノードでのパケット転送処理手順を示すフローチャートである。
【図１１】実施の形態２にかかるノードの機能的構成例を示すブロック図である。
【図１２】認証実施確率Ｐの設定処理手順を示すフローチャートである。
【図１３】実施の形態３にかかるノードの機能的構成例を示すブロック図である。
【図１４】実施の形態３にかかるノードでのパケット転送処理手順を示すフローチャートである。
【図１５】実施の形態４にかかるノードの機能的構成例を示すブロック図である。
【図１６】従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その１）である。
【図１７】従来におけるアドホックネットワークと通常ネットワークとの不正通信遮断例を示す説明図（その２）である。
【発明を実施するための形態】
【００２４】
以下に添付図面を参照して、この発明にかかるノード、転送方法、および転送プログラムの好適な実施の形態を詳細に説明する。
【００２５】
図１は、アドホックネットワークの構成例を示す説明図である。図１において、アドホックネットワーク１００と通常ネットワーク１０１とは、アドホックネットワーク１００内のシンクノードＳＮをゲートウェイとして接続されている。アドホックネットワーク１００内のデータは、シンクノードＳＮから通常ネットワーク１０１にパケットとして転送されてサーバＳに到達する。また、サーバＳやシンクノードＳＮからのデータは、シンクノードＳＮからアドホックネットワーク１００内の各ノードにパケットとして転送される。
【００２６】
アドホックネットワーク１００内には、複数のノードが設けられている。図１では、代表としてノードＮａ〜Ｎｈを示している。各ノードＮａ〜Ｎｈは、所定の通信圏内で通信可能なノードに対してマルチホップ通信可能である。アドホックネットワーク１００では、すべてのノードＮａ〜Ｎｈが直接シンクノードＳＮと通信できる必要はなく、一部のノードがシンクノードＳＮと通信可能であればよい。
【００２７】
なお、シンクノードＳＮは、どのノードがどのノードに対し通信可能かを把握しており、この情報を元に、シンクノードＳＮは自律的にルーティングすることになる。各ノードＮａ〜Ｎｈでは、シンクノードＳＮのルーティングにより、マルチホップ通信を行う際の転送元と転送先が設定されることとなる。
【００２８】
図１では、アドホックネットワーク１００を構成するノードＮａ〜Ｎｈにより、４つの経路Ｒ１〜Ｒ４が設定されているものとする。具体的には、経路Ｒ１は、ノードＮｃ→ノードＮｂ→ノードＮａ→シンクノードＳＮというルート（逆方向の通信も可）である。経路Ｒ２は、ノードＮｅ→ノードＮｄ→シンクノードＳＮ（逆方向の通信も可）である。
【００２９】
経路Ｒ３は、ノードＮｇ→ノードＮｆ→ノードＮｄ→シンクノードＳＮというルート（逆方向も可）である。経路Ｒ４は、ノードＮｈ→ノードＮｆ→ノードＮｄ→シンクノードＳＮというルート（逆方向も可）である。なお、ノードＮａやノードＮｄはシンクノードと直接通信するノードである。このように、シンクノードＳＮに近いノードを上流側のノードと呼ぶ。なお、アドホックネットワーク１００の規模によっては、ノードＮｂやノードＮｅも上流側のノードとなる。
【００３０】
各ノードＮａ〜Ｎｈは、各々検出されたデータをルーティングされた経路Ｒ１〜Ｒ４に従ってシンクノードＳＮに送信する。したがって、シンクノードＳＮに近い上流のノードほど、下流のノードの検出データをさらに上流に転送することとなる。すなわち、転送元のノードからのパケットを転送先に送信する頻度が高くなり、転送負荷が高くなる。
【００３１】
図２は、本実施の形態での不正パケットの破棄と図１６および図１７に示した不正パケットの破棄との比較例を示す説明図である。なお、図２中、「従来Ａ」は図１６の例、「従来Ｂ」は図１７の例を示す。本実施の形態では、従来のように、シンクノードＳＮや不正ノードＮｘから直接パケットを受信したノード（直接受信ノード）のみがＭＡＣ認証するのではなく、マルチホップ通信によりシンクノードＳＮにまで転送する経路上のノードで認証鍵ＫによるＭＡＣ認証を分散処理する。
【００３２】
これにより、シンクノードＳＮや直接受信ノードの負荷が軽減され、アドホックネットワーク１００の効率化を図ることができる。図２では、ＭＡＣ認証する認証実施確率Ｐを５０％とする。これにより、不正パケット群を受信したノードは、不正パケット群のうち半分（５０％）の個数の不正パケットをＭＡＣ認証し、残余の半分の個数の不正パケットを転送先ノードに転送する。
【００３３】
図２の例では、不正ノードＮｘからの１００個の不正パケットを直接受信したノードＮｂは、認証実施確率Ｐ＝５０％により、５０個の不正パケットをＭＡＣ認証し、残余の５０個の不正パケットを転送先のノードＮａに転送する。ＭＡＣ認証をおこなう５０個の不正パケットの各々から得られるＭＡＣ値は、ノードＮｂが有する認証鍵により生成されるＭＡＣ値とは異なる。したがって、ＭＡＣ認証の対象となった５０個の不正パケットはノードＮｂに破棄される。
【００３４】
ノードＮａは、認証実施確率Ｐ＝５０％により、ノードＮｂからの５０個の不正パケットのうち２５個をＭＡＣ認証し、残余の２５個の不正パケットを転送先となるシンクノードＳＮに転送する。ＭＡＣ認証をおこなう２５個の不正パケットの各々から得られるＭＡＣ値は、ノードＮａが有する認証鍵により生成されるＭＡＣ値とは異なる。したがって、ＭＡＣ認証の対象となった２５個の不正パケットはノードＮａに破棄される。
【００３５】
シンクノードＳＮは、ノードＮａからの２５個の不正パケットについてＭＡＣ認証をおこなう。ＭＡＣ認証をおこなう２５個の不正パケットの各々から得られるＭＡＣ値は、シンクノードＳＮが有する認証鍵により生成されるＭＡＣ値とは異なる。したがって、ＭＡＣ認証の対象となった２５個の不正パケットはシンクノードＳＮに破棄される。
【００３６】
このように、本実施の形態では、１００個の不正パケットのうちノードＮｂが５０個（従来Ｂでは１００個）、ノードＮａが２５個、シンクノードＳＮが２５個（従来Ａでは１００個）をＭＡＣ認証することになるため、ＭＡＣ認証による負荷を分散することができる。
【００３７】
図３は、パケットのデータ構造を示す説明図である。（Ａ）は平文通信の場合のデータ構造であり、（Ｂ）は暗号化通信の場合のデータ構造を示している。（Ａ）において、パケットは、通信ヘッダ３０１とデータ部３０２とＭＡＣ値格納部３０３とで構成される。通信ヘッダ３０１の詳細は、図４で説明するが、通信ヘッダ３０１には、データ部３０２に格納されたデータの送信元のアドレス、宛先のアドレス、転送元のアドレス、転送先のアドレスが記述される。これらのアドレスとしては、たとえば、送信元のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス、宛先のＭＡＣアドレス、転送元のＭＡＣアドレス、転送先のＭＡＣアドレスが使用される。以降本書では、アドレスにＭＡＣアドレスを用いて説明する。
【００３８】
データ部３０２には、送信元のＭＡＣアドレスにより特定されるノードにより検出されたデータである。ＭＡＣ値格納部３０３には、ＭＡＣ値が格納される。ＭＡＣ値は、通信ヘッダ３０１内の送信元および宛先のＭＡＣアドレスとデータ部３０２内のデータを、全ノードで共有する認証鍵で暗号化したメッセージ認証子となる。
【００３９】
（Ｂ）は、（Ａ）のデータ部３０２内のデータを、送信元のＭＡＣアドレスにより特定されたノード固有の暗号鍵３１０で暗号化した暗号化データ（暗号化データ部３０４内の暗号化データ）がパケットに含まれている。この場合、ＭＡＣ値格納部３０３には、ＭＡＣ値が格納される。ＭＡＣ値は、通信ヘッダ３０１内の送信元および宛先のＭＡＣアドレスと暗号化データ部３０４内の暗号化データを、全ノードで共有する認証鍵Ｋで暗号化したメッセージ認証子となる。なお、サーバＳは、各ノード固有の暗号鍵に対応する復号鍵を記憶しており、シンクノードＳＮからパケットを受信すると、パケット内の暗号化データを復号することができる。
【００４０】
図４は、図３に示した通信ヘッダ３０１の詳細なデータ構造を示す説明図である。通信ヘッダ３０１は、第１の通信情報ヘッダ４０１と第２の通信情報ヘッダ４０２とに分けられる。第１の通信情報ヘッダ４０１は、転送元のＭＡＣアドレスと転送先のＭＡＣアドレスを有する。転送元のＭＡＣアドレスとはパケットのマルチホップ通信元となるノードのＭＡＣアドレスである。転送先のＭＡＣアドレスとはパケットのマルチホップ通信先となるノードのＭＡＣアドレスである。第１の通信情報ヘッダ４０１は、マルチホップ通信により転送される都度、転送先のノードからみた転送元および転送先のＭＡＣアドレスに書き換わる。
【００４１】
一方、第２の通信情報ヘッダ４０２は、送信元のＭＡＣアドレスと宛先のＭＡＣアドレスを有する。送信元のＭＡＣアドレスとは、そのパケット内のデータ（または暗号化データ）の検出元となるノードを特定するＭＡＣアドレスである。宛先のＭＡＣアドレスとは、そのパケット内のデータ（または暗号化データ）の宛先となるノードを特定するＭＡＣアドレスである。通常は、シンクノードＳＮ（もしくはサーバＳのＭＡＣアドレス）のＭＡＣアドレスとなる。転送先のＭＡＣアドレスと宛先のＭＡＣアドレスが一致した場合、宛先のノードにパケットが到達したこととなり、マルチホップ通信が終了する。
【００４２】
図５は、ノードのルーティングテーブルの一例を示す説明図である。図５において、（Ａ）は、ノードＮａのルーティングテーブルを示しており、（Ｂ）は、ノードＮｂのルーティングテーブルを示している。なお、図５では、便宜上、ノードの符号をＭＡＣアドレスのかわりとする。たとえば、ルーティングテーブルに「Ｎａ」とある場合は、ノードＮａのＭＡＣアドレスを示している。
【００４３】
また、１行目のレコードは、シンクノードＳＮへ向かう上り方向に転送する場合に用いるレコードであり、２行目のレコードは、末端へ向かう下り方向に転送する場合に用いるレコードである。２行目のレコードは、シンクノードＳＮからブロードキャストされた場合に適用される。
【００４４】
具体的には、たとえば、それぞれのノードＮａ，Ｎｂにおいて、ルーティングテーブルの転送元のＭＡＣアドレスにより特定されるノードからパケットが転送されてくると、ルーティングテーブルを参照して、転送元のＭＡＣアドレスに対応する転送先のＭＡＣアドレスを特定する。そして、受信したパケットの第１の通信情報ヘッダ４０１の転送先のＭＡＣアドレスを、特定された転送先のＭＡＣアドレスに書き換える。また、受信したパケットの第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを、自ノードのＭＡＣアドレスに書き換える。
【００４５】
たとえば、ノードＮａは、転送元のＭＡＣアドレスが「Ｎｂ」、転送先のＭＡＣアドレスが「Ｎａ」のパケットが、ノードＮｂから転送されてくると、（Ａ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「Ｎｂ」から「Ｎａ」に書き換え、転送先のＭＡＣアドレスを「Ｎａ」から「ＳＮ」に書き換える。
【００４６】
また、転送元のＭＡＣアドレスが「ＳＮ」、転送先のＭＡＣアドレスが「Ｎｂ」のパケットが、シンクノードＳＮから転送されてくると、（Ａ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「ＳＮ」から「Ｎａ」に書き換え、転送先のＭＡＣアドレスを「Ｎａ」から「Ｎｂ」に書き換える。
【００４７】
ノードＮｂは、転送元のＭＡＣアドレスが「Ｎｃ」、転送先のＭＡＣアドレスが「Ｎｂ」のパケットが、ノードＮｃから転送されてくると、（Ｂ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「Ｎｃ」から「Ｎｂ」に書き換え、転送先のＭＡＣアドレスを「Ｎｂ」から「Ｎａ」に書き換える。
【００４８】
また、転送元のＭＡＣアドレスが「Ｎａ」、転送先のＭＡＣアドレスが「Ｎｂ」のパケットが、ノードＮａから転送されてくると、（Ｂ）に示したルーティングテーブルにしたがって、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスを「Ｎａ」から「Ｎｂ」に書き換え、転送先のＭＡＣアドレスを「Ｎｂ」から「Ｎｃ」に書き換える。
【００４９】
図６は、マルチホップ通信での通信ヘッダ３０１の状態を示す説明図である。図６では，ノードＮｃを送信元としシンクノードＳＮを宛先とした場合の通信ヘッダ３０１の状態を示している。図６に示した通信ヘッダ３０１では、左から転送元、転送先、送信元、宛先のＭＡＣアドレスとする。なお、図６の通信ヘッダ３０１では、便宜上、ノードの符号をＭＡＣアドレスのかわりとする。
【００５０】
ノードＮｃ〜シンクノードＳＮまでのマルチホップ通信では、第２の通信情報ヘッダ４０２の記述内容には変化はない。したがって、送信元はノードＮｃ、宛先はシンクノードＳＮであることがわかる。一方、第１の通信情報ヘッダ４０１はマルチホップ通信の都度書き換わる。ノードＮｃでは、第１の通信情報ヘッダ４０１は｛Ｎｃ、Ｎｂ｝であるため、そのパケットはノードＮｂに転送される。ノードＮｂでは、第１の通信情報ヘッダ４０１は｛Ｎｂ、Ｎａ｝に書き換わるため、そのパケットはノードＮａに転送される。また、ノードＮａでは、第１の通信情報ヘッダ４０１は｛Ｎａ、ＳＮ｝に書き換わるため、そのパケットはシンクノードＳＮに転送される。
【００５１】
図７は、アドホックネットワーク１００を構成するノードのハードウェア構成例を示すブロック図である。図７において、ノードは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）７０２と、フラッシュメモリ７０３と、インターフェース（Ｉ／Ｆ）７０４と、暗号化回路７０５と、センサ７０６と、バス７０７とを備えている。ＣＰＵ７０１〜センサ７０６は、バス７０７よってそれぞれ接続されている。
【００５２】
ここで、ＣＰＵ７０１は、ノードの全体の制御を司る。ＲＡＭ７０２は、ＣＰＵ７０１のワークエリアとして使用される。フラッシュメモリ７０３は、プログラムやルーティングテーブル、認証鍵Ｋや暗号鍵などの鍵情報を記憶している。Ｉ／Ｆは、マルチホップ通信によりパケットを送受信する。
【００５３】
暗号化回路７０５は、データを暗号化する場合に暗号鍵によりデータを暗号化する回路である。暗号化をソフトウェア的に実行する場合は、暗号化回路７０５に相当するプログラムをフラッシュメモリ７０３に記憶させておくことで、暗号化回路７０５は不要となる。センサ７０６は、センサ７０６固有のデータを検出する。たとえば、温度、湿度、水位、降水量、風量、音量、電力、時間、時刻など、測定対象にあったデータを検出する。
【００５４】
以下、図１〜図７の内容を利用した実施の形態１〜４についてそれぞれ説明する。実施の形態１は、認証実施確率Ｐをあらかじめ設定して認証実施／転送を実行する。実施の形態２は、ノードの負荷に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。実施の形態３は、パケットの宛先に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。実施の形態４は、ノードの負荷およびパケットの宛先に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。以下、実施の形態１から説明する。
【００５５】
（実施の形態１）
図８は、実施の形態１にかかるノードの機能的構成例を示すブロック図である。図８において、ノードは、受信部８０１と、決定部８０２と、認証部８０３と、送信部８０４と、破棄部８０５とを備えている。受信部８０１〜破棄部８０５は、具体的には、たとえば、図７に示したフラッシュメモリ７０３などの記憶装置に記憶されたプログラムをＣＰＵ７０１に実行させることにより、または、Ｉ／Ｆ７０４により、その機能を実現する。
【００５６】
受信部８０１は、パケットを受信する機能を有する。具体的には、受信部８０１は、パケットを受信すると、パケット内の通信ヘッダ３０１を解析する。第２の通信情報ヘッダ４０２の内容により、通信の種類が特定される。
【００５７】
たとえば、第２の通信情報ヘッダ４０２の宛先のＭＡＣアドレスがシンクノードＳＮのＭＡＣアドレスである場合、マルチホップ通信によりシンクノードＳＮに送信され、シンクノードＳＮから通常ネットワーク１０１を介してサーバＳに転送される通信である。
【００５８】
また、第２の通信情報ヘッダ４０２の宛先のＭＡＣアドレスがブロードキャスト（「ＦＦ：ＦＦ：ＦＦ：ＦＦ」）である場合、シンクノードＳＮからアドホックネットワーク１００内の全ノードに配信されるブロードキャスト通信である。また、宛先がシンクノードＳＮ以外のノードである場合、ノード間通信である。
【００５９】
決定部８０２は、受信部８０１によって受信されたパケットの認証を実施する確率（認証実施確率Ｐ）にしたがって、受信されたパケットを認証実施対象または転送対象に決定する機能を有する。認証実施確率Ｐとは、受信されたパケットについてＭＡＣ認証を実施する確率である認証実施確率Ｐは、あらかじめ設定する確率ｍ／ｎ（ｎ＞ｍ）である。上述した図２では５０％に設定したが、５０％に限らず、適宜設定可能である。
【００６０】
決定部８０２は、認証実施確率Ｐにしたがってランダムに決定する。１〜ｎまでの数値をランダムに発生させ、発生した乱数が１〜ｍの中の数値にあれば、そのときの受信パケットは、認証実施対象となる。一方、ｍ＋１〜ｎの中の数値であれば、そのときの受信パケットは、転送対象となる。ランダムにせずに、一定数連続で認証実施対象としたり、転送対象にしたりすると、そのような決定パターンが不正者に読まれた場合に、意図的に転送対象となる期間に不正パケットを流される可能性が考えられる。ランダムに対象先を決定することで、そのような不正行為を抑止することができる。
【００６１】
また、受信する都度、認証実施確率Ｐで決定すると、乱数で認証を実施するのではなく、カウンタにより決定することとしてもよい。具体的には、初期値を０にしておき、パケットを受信する都度１加算する。計数値がｎのときにパケットを受信すると、１に戻ることとする。
【００６２】
そして、計数値がｎになるまでの間、ｍ個のパケットが認証実施対象となった場合は、それ以降計数値がｎまでの間のパケットについては、強制的に（乱数を生成することなく）転送対象とする。これにより、連続して受信されたｎ個のパケットについては、ｍ個が認証実施対象となり、（ｎ−ｍ）個が転送対象となる。
【００６３】
認証部８０３は、決定部８０２によってパケットが認証実施対象に決定された場合、各ノードで共通の認証鍵に基づいて、パケットの正当性を認証する機能を有する。認証部８０３は、具体的には、たとえば、ＭＡＣ値を用いて、ＳＨＡ１、ＳＨＡ２などのハッシュ関数を使ったＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ）アルゴリズムによりＭＡＣ値を求める。また、認証鍵暗号を使ったＡＥＳ−ＣＢＣ−ＭＡＣアルゴリズムによりＭＡＣ値を求めてもよい。
【００６４】
いずれにしても、ＭＡＣ値を求める場合は、算出元となるデータをパケットから取り出す。具体的には、認証実施対象のパケットに含まれている第２の通信情報ヘッダ４０２およびデータ部３０２内のデータ（または暗号化データ部３０４内の暗号化データ）をＭＡＣ値の算出元データとして取り出す。そして、算出元データと認証鍵を上述したアルゴリズムに与えることで、認証鍵により保証されたＭＡＣ値（算出ＭＡＣ値）が得られる。
【００６５】
一方、認証実施対象のパケットにもＭＡＣ値が含まれているため、ＭＡＣ値を抽出する。そして、この抽出ＭＡＣ値と算出ＭＡＣ値とが一致するか否かを判断する。一致する場合は、認証されたことになる。一方、不一致の場合は、認証されなかった、すなわち、不正パケットであると判断される。
【００６６】
送信部８０４は、決定部８０２によって転送対象に決定された場合または認証部８０３によって認証された場合、パケットを転送先のノードに送信する機能を有する。認証部８０３によって認証されたパケットは正常パケットであるため、パケットの第１の通信情報ヘッダ４０１を図５および図６に示したように書き換えて転送設定する。そして、転送先のノードにパケットを送信する。
【００６７】
破棄部８０５は、認証部８０３によって認証されなかった場合、パケットを破棄する機能を有する。具体的には、たとえば、破棄対象や認証されなかったパケットを、ノード内のＲＡＭ７０２やフラッシュメモリ７０３、ＣＰＵ７０１内のキャッシュやレジスタなどの記憶領域に保持されたパケットを消去する。
【００６８】
図９は、実施の形態１にかかるノードＮａ〜Ｎｈ（図９および図１０において、「ノードＮ」と総称する。）での検出データの送信処理手順を示すフローチャートである。図９において、ノードＮは、センサ７０６により対象となるデータが検出されるのを待ち受け（ステップＳ９０１：Ｎｏ）、データが検出されると（ステップＳ９０１：Ｙｅｓ）、ノードＮは、通信ヘッダ３０１内の情報を設定する（ステップＳ９０２）。
【００６９】
具体的には、ノードＮは、第１の通信情報ヘッダ４０１の転送元のＭＡＣアドレスには自ノードのＭＡＣアドレスを設定し、転送先のＭＡＣアドレスには、ルーティングテーブルで規定された転送先のＭＡＣアドレスのうち上り側（図５の一行目のレコードの転送先）のＭＡＣアドレスを設定する。また、ノードＮは、第２の通信情報ヘッダ４０２の送信元のＭＡＣアドレスには自ノードのＭＡＣアドレスを設定し、宛先のＭＡＣアドレスには、シンクノードＳＮのＭＡＣアドレスを設定する。
【００７０】
第２の通信情報ヘッダ４０２が設定されると、ノードＮは、検出されたデータと第２の通信情報ヘッダ４０２と認証鍵とを用いてＭＡＣ値を計算する（ステップＳ９０３）。そして、ノードＮは、通信ヘッダ３０１と検出データにＭＡＣ値をつけてパケットとし、転送先のＭＡＣアドレスあてに送信する（ステップＳ９０４）。これにより、検出データの送信処理を終了する。なお、図９に示した検出データの送信処理は、後述する実施の形態２〜４についても同一の処理を実行することとなる。
【００７１】
図１０は、実施の形態１にかかるノードＮでのパケット転送処理手順を示すフローチャートである。図１０において、ノードＮは、受信部８０１によりパケットを受信するのを待ち受け（ステップＳ１００１：Ｎｏ）、パケットを受信した場合（ステップＳ１００１：Ｙｅｓ）、ノードＮは、受信したパケットの通信ヘッダ３０１を解析する（ステップＳ１００２）。そして、ノードＮは、通信ヘッダ３０１の解析結果から、受信したパケットが転送パケットであるか否かを判断する（ステップＳ１００３）。すなわち、受信されたパケットが自ノードを宛先とするパケットであるか否かを判断する（ステップＳ１００３）。
【００７２】
転送パケットでない場合（ステップＳ１００３：Ｎｏ）、自ノード宛のパケットとなるため、ノードＮは、データ処理を実行する（ステップＳ１００４）。具体的には、ノードＮは、受信されたパケットのデータ部３０２からデータを取り出す。取り出されたデータについては、必要に応じた処理をおこなう。これにより、自ノード宛のパケットについてのパケット転送処理を終了する。
【００７３】
一方、転送パケットである場合（ステップＳ１００３：Ｙｅｓ）、ノードＮは、決定部８０２により乱数を生成し（ステップＳ１００５）、認証実施対象であるか転送対象であるかを決定する（ステップＳ１００６）。転送対象に決定された場合（ステップＳ１００６：Ｎｏ）、ノードＮは、送信部８０４により、転送設定処理を実行してパケットの第１の通信情報ヘッダ４０１を書き換える（ステップＳ１００７）。そして、ノードＮは、送信部８０４により、転送先のノードにパケットを送信する（ステップＳ１００８）。これにより、ステップＳ１００６において転送対象に決定された場合のパケット転送処理を終了する。
【００７４】
一方、ステップＳ１００６において、認証実施対象に決定された場合（ステップＳ１００６：Ｙｅｓ）、ノードＮは、認証部８０３により、パケットからＭＡＣ値を抽出するとともに、ＭＡＣ値の算出元データを抽出する（ステップＳ１００９）。つぎに、ノードＮは、ＭＡＣ値の算出元データと認証鍵とによりＭＡＣ値を算出する（ステップＳ１０１０）。そして、ノードＮは、認証部８０３により、抽出ＭＡＣ値と算出ＭＡＣ値とが一致するか否かを判断する（ステップＳ１０１１）。
【００７５】
一致する場合（ステップＳ１０１１：Ｙｅｓ）、ステップＳ１００７に移行して、パケットを転送することになる。一方、不一致の場合（ステップＳ１０１１：Ｎｏ）、ノードＮは、破棄部８０５によりパケットを破棄する（ステップＳ１０１２）。これにより、認証実施対象に決定された場合のパケット転送処理を終了する。
【００７６】
このように、実施の形態１によれば、ノードは、あらかじめ設定された認証実施確率Ｐにしたがって、認証部８０３による認証を実施するか、認証を実施せずに転送先にそのまま転送するかを決定する。このような処理をアドホックネットワーク１００内のノードがパケットを受信する都度実行することで、シンクノードＳＮや不正パケットを直接受信したノードに負荷が集中することなく、負荷分散を図ることができる。したがって、アドホック通信の遅延やパケットの欠落が低減される。
【００７７】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態２では、ノードの負荷に応じて認証実施確率Ｐを変動させて認証実施／転送を実行する。具体的には、負荷が高くなると認証実施確率Ｐを低くし、負荷が低くなると、認証実施確率Ｐを高くする。このように、認証実施確率Ｐを変動させることで、負荷が高いノードは認証実施することなくパケットを転送し、負荷が低いノードはパケット転送／破棄の前に認証実施する確率が高くなる。
【００７８】
図１１は、実施の形態２にかかるノードの機能的構成例を示すブロック図である。なお、実施の形態１と同一構成については同一符号を付し、その説明を省略する。実施の形態２にかかるノードは、実施の形態１に、計測部１１０１と設定部１１０２とを追加した構成である。
【００７９】
計測部１１０１は、ノード内の負荷を計測する機能を有する。ここで、ノード内の負荷とは、ノード内のＣＰＵ７０１やフラッシュメモリ７０３の使用率である。計測部１１０１は、たとえば、このような負荷を所定期間計測し、所定期間における負荷の平均値を算出する。なお、平均値に限らず、所定期間内における中央値や最大値、最小値、任意の値でもよい。
【００８０】
設定部１１０２は、計測部１１０１によって計測された負荷に応じて確率を設定する機能を有する。具体的には、負荷が高くなると認証実施確率Ｐを下げ、負荷が低くなると認証実施確率Ｐを上げる。たとえば、負荷のしきい値を設定しておき、負荷がしきい値以上に変化した場合は、認証実施確率Ｐを下げ、しきい値未満に変化した場合は、認証実施確率Ｐを上げる。また、今回計測した負荷が前回計測した負荷以上に変化した場合は、認証実施確率Ｐを下げ、前回計測した負荷未満に変化した場合は、認証実施確率Ｐを上げる。
【００８１】
また、認証実施確率Ｐをどの程度変動させるかについては、負荷の変動の有無に応じて設定しておく。たとえば、認証実施確率ＰをＰ（０＜Ｐ＜１）とした場合、負荷の変動の有無により、認証実施確率Ｐをｗ×Ｐに設定する。ｗは重みであり、たとえば、負荷が高くなったときはｗを０＜ｗ＜１（たとえば、ｗ＝０．５）とし、負荷が低くなったときはｗをｗ＞１（たとえば、ｗ＝２．０）とする。たとえば、デフォルトの認証実施確率Ｐを１／４とした場合、負荷が高くなると認証実施確率Ｐを１／４から１／８とし、負荷が低くなると認証実施確率Ｐを１／４から１／２に設定する。
【００８２】
また、設定部１１０２は、負荷の変動量に応じて設定してもよい。たとえば、認証実施確率ＰをＰ（０＜Ｐ＜１）とする。たとえば、負荷が（しきい値または前回の負荷に対して）Ｌ％増の場合は、認証実施確率ＰをＬ×Ｐに設定する。一方、負荷が（しきい値または前回の負荷に対して）Ｌ％減の場合は、認証実施確率Ｐを（１＋Ｌ）×Ｐに設定する。
【００８３】
つぎに、実施の形態２でのノードの実行処理手順について説明する。なお、検出データの送信処理手順（図９）およびパケット転送処理手順（図１０）については、実施の形態１と同一処理手順であるため、説明を省略する。
【００８４】
図１２は、認証実施確率Ｐの設定処理手順を示すフローチャートである。図１２において、まず、負荷の算出タイミングがくるまで待ち受ける（ステップＳ１２０１：Ｎｏ）。算出タイミングとは、たとえば、周期的に到来する時刻とする。算出タイミングになると（ステップＳ１２０１：Ｙｅｓ）、計測部１１０１は、現在時刻までの所定期間の負荷を算出する（ステップＳ１２０２）。
【００８５】
そして、設定部１１０２は、算出された負荷により認証実施確率Ｐを更新する（ステップＳ１２０３）。具体的には、ＲＡＭ７０２やフラッシュメモリ７０３などの記憶領域に更新後の認証実施確率Ｐを書き込み、決定部８０２が、図１０のステップＳ１００６を実行する際に、当該記憶領域を参照して、更新後の認証実施確率Ｐを読み込むこととなる。
【００８６】
このように、実施の形態２では、計測部１１０１および設定部１１０２を追加したことにより、決定部８０２は、設定後の認証実施確率Ｐにより、受信したパケットを認証実施対象または転送対象に決定することとなる。アドホックネットワークでは、上流ノードほど負荷が高く、下流ノードほど負荷が低い傾向があるので、負荷が低い下流ノードほど高い確率で認証実施をおこなうことになり、負荷が高い上流ノードには不正なパケットが到達しにくく、実施の形態１よりもさらに効率的に負荷分散をおこなうことができる。
【００８７】
（実施の形態３）
つぎに、実施の形態３について説明する。実施の形態３は、受信したパケットの宛先に応じて認証実施確率Ｐを変動させる例である。ノードは、上述したように、自らが検出したデータをマルチホップ通信により転送先のノードに転送して、目的となるシンクノードＳＮに送信する処理（図９）と、他のノードから転送されてきたパケットを、マルチホップ通信により転送先に転送する処理（図１０）がある。
【００８８】
後者のパケット転送の場合、受信したパケットの宛先によっては、ＭＡＣ認証が必須であったり、ＭＡＣ認証が必ずしも必要でなかったりするパケットもある。したがって、パケットの通信ヘッダ３０１（具体的には、第２の通信情報ヘッダ４０２）を解析して宛先を特定し、特定した宛先に応じて認証実施確率Ｐを変動させる。
【００８９】
図１３は、実施の形態３にかかるノードの機能的構成例を示すブロック図である。なお、実施の形態１と同一構成については同一符号を付し、その説明を省略する。実施の形態３にかかるノードは、実施の形態１に、検出部１３０１と設定部１３０２とを追加した構成である。
【００９０】
検出部１３０１は、パケットの宛先を検出する機能を有する。具体的には、たとえば、パケットの通信ヘッダ３０１内の第２の通信情報ヘッダ４０２内の宛先のＭＡＣアドレスを検出する。検出される宛先は、ブロードキャスト、シンクノードＳＮのＭＡＣアドレス、ノード（シンクノードＳＮ除く）のＭＡＣアドレスの３種類である。
【００９１】
設定部１３０２は、検出部１３０１によって検出された宛先に応じて確率を設定する機能を有する。具体的には、たとえば、検出された宛先のＭＡＣアドレスがブロードキャストの場合、認証実施確率Ｐを１００％に設定する。
【００９２】
宛先のＭＡＣアドレスがブロードキャストである場合、シンクノードＳＮからアドホックネットワーク１００内のノード群宛に配信したパケットである。シンクノードＳＮからブロードキャストされるパケットは、たとえば、ルーティングの設定、設定変更といったデータが含まれている。このような、ブロードキャストされるパケットは、どのノードも受信対象となるため、他のノードへの転送の有無に関わらず、ＭＡＣ認証が必要となる。したがって、ブロードキャストの場合は、認証実施確率ＰをＰ＝１に設定する。
【００９３】
そのため、ブロードキャスト通信は必ずＭＡＣ認証を行い、不正パケットでない場合のみ転送を行う。ＭＡＣ認証の処理量は、自ノード宛のパケットのＭＡＣ認証処理と兼用できるため、実質的に無視できる。ブロードキャスト通信は全ノードへ拡散される非常に影響の大きい通信であるので、各ノードにおいて認証実施確率Ｐが１００％で認証されることは、不正通信を遮断する目的上、非常に有効となる。
【００９４】
また、検出された宛先のＭＡＣアドレスがシンクノードＳＮのＭＡＣアドレスである場合、シンクノードＳＮやルーティングされた経路の上流側のノードへの影響が高い通信であるため、実施の形態１，２で説明したように、認証実施確率ＰによりＭＡＣ認証または転送を決定し、負荷分散を図る。これにより、シンクノードＳＮや上流側のノードへの負荷を低減することができる。
【００９５】
また、検出された宛先のＭＡＣアドレスがノード（シンクノードＳＮ除く）のＭＡＣアドレスである場合、認証実施確率Ｐを、宛先のＭＡＣアドレスがシンクノードＳＮである場合の認証実施確率Ｐよりも低い確率に設定する。このような場合、シンクノードＳＮや上流側のノードへの影響は低い。そのため、シンクノードＳＮ宛の場合の認証実施確率Ｐよりも低く設定したり、認証実施確率Ｐを０％に設定する。たとえば、あらかじめ用意した重みｗ（０≦ｗ＜１）を認証実施確率Ｐに掛けることで、認証実施確率Ｐを更新する。
【００９６】
図１４は、実施の形態３にかかるノードＮａ〜Ｎｈ（図１４において、「ノードＮ」と総称する。）でのパケット転送処理手順を示すフローチャートである。図１４において、ノードＮは、受信部８０１によりパケットを受信するのを待ち受ける（ステップＳ１４０１：Ｎｏ）。ノードＮは、パケットを受信した場合（ステップＳ１４０１：Ｙｅｓ）、検出部１３０１により、受信したパケットの通信ヘッダ３０１を解析して、宛先のＭＡＣアドレスを検出する（ステップＳ１４０２）。
【００９７】
そして、ノードＮは、設定部１３０２により、宛先のＭＡＣアドレスに応じた認証実施確率に設定する（ステップＳ１４０３）。このあと、ノードＮは、決定部８０２により乱数を生成し（ステップＳ１４０４）、認証実施対象であるか転送対象であるかを決定する（ステップＳ１４０５）。転送対象に決定された場合（ステップＳ１４０５：Ｎｏ）、ノードＮは、宛先のＭＡＣアドレスが、自ノードのＭＡＣアドレスであるか否かを判断する（ステップＳ１４０６）。
【００９８】
自ノードのＭＡＣアドレスである場合（ステップＳ１４０６：Ｙｅｓ）、ノードＮは、データ処理を実行する（ステップＳ１４０７）。具体的には、ノードＮは、受信されたパケットのデータ部３０２からデータを取り出す。取り出されたデータについては、必要に応じた処理をおこなう。これにより、ステップＳ１４０６において転送対象に決定された場合の自ノード宛のパケットについてのパケット転送処理を終了する。
【００９９】
また、ステップＳ１４０６において、宛先のＭＡＣアドレスが、自ノード以外の他のノードのＭＡＣアドレスである場合（ステップＳ１４０６：Ｎｏ）、ノードＮは、送信部８０４により、転送設定処理を実行してパケットの第１の通信情報ヘッダ４０１を書き換える（ステップＳ１４０８）。そして、ノードＮは、送信部８０４により、転送先のノードにパケットを送信する（ステップＳ１４０９）。これにより、ステップＳ１４０６において転送対象に決定された場合の他ノード宛のパケットについてのパケット転送処理を終了する。
【０１００】
また、ステップＳ１４０５において、認証実施対象に決定された場合（ステップＳ１４０５：Ｙｅｓ）、ノードＮは、認証部８０３により、パケットからＭＡＣ値を抽出するとともに、ＭＡＣ値の算出元データを抽出する（ステップＳ１４１０）。つぎに、ノードＮは、ＭＡＣ値の算出元データと認証鍵とによりＭＡＣ値を算出する（ステップＳ１４１１）。そして、ノードＮは、認証部８０３により、抽出ＭＡＣ値と算出ＭＡＣ値とが一致するか否かを判断する（ステップＳ１４１２）。
【０１０１】
一致する場合（ステップＳ１４１２：Ｙｅｓ）、ステップＳ１４０６に移行する。一方、不一致の場合（ステップＳ１４１２：Ｎｏ）、ノードＮは、破棄部８０５によりパケットを破棄する（ステップＳ１４１３）。これにより、認証実施対象に決定された場合のパケット転送処理を終了する。
【０１０２】
このように、実施の形態３によれば、ノードＮは、パケットを宛先により分類し、ＭＡＣ認証を行う確率を変化させることにより、ＭＡＣ認証による負荷をアドホックネットワーク１００全体に負荷分散することができる。したがって、シンクノードＳＮや上流側のノードへの負荷集中や、特定のノードへの負荷集中を防止することができる。また、パケットの分類処理は、自ノードが認識できるブロードキャスト（宛先なし）とシンクノードＳＮへの通信（通常ネットワーク１０１へのデフォルトゲートウエイ）、およびそれ以外のノードに分けるだけであり、転送処理と兼用できるため、処理負荷は無視できる程度である。
【０１０３】
（実施の形態４）
つぎに、実施の形態４について説明する。実施の形態４は、実施の形態３に実施の形態２を適用した例である。
【０１０４】
図１５は、実施の形態４にかかるノードの機能的構成例を示すブロック図である。なお、実施の形態１〜３と同一構成については同一符号を付し、その説明を省略する。図１５において、設定部１５００は、実施の形態２の設定部１１０２と実施の形態３の設定部１３０２の両方の機能を備えている。したがって、認証実施確率Ｐの設定処理手順については図１２と同じであり、パケット転送処理手順については図１４と同じである。
【０１０５】
なお、実施の形態４では、受信したパケットの宛先のＭＡＣアドレスがブロードキャストである場合、認証実施確率ＰがＰ＝１（１００％）に設定されるため、設定部１５００では、ブロードキャストの場合に限って負荷による認証実施確率Ｐは更新しない。
【０１０６】
このように、実施の形態４によれば、転送による負荷が高くなっても、自ノードの処理の遅延をなくすことが可能であり、処理に余裕がある場合は、アドホックネットワーク１００全体への影響が高いパケットから優先的にＭＡＣ認証を行うことができる。
【０１０７】
以上のことから、本実施の形態１〜４によれば、アドホックネットワーク１００内での不正パケットに対する負荷分散を効率的におこなうことができるという効果を奏する。
【０１０８】
（付記１）マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードであって、
転送元のノードからのパケットを受信する受信手段と、
前記受信手段によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定手段と、
前記決定手段によって前記パケットが認証実施対象に決定された場合、前記アドホックネットワーク内の各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証手段と、
前記決定手段によって転送対象に決定された場合または前記認証手段によって認証された場合、前記パケットを転送先として設定されている特定のノードに送信する送信手段と、
前記認証手段によって認証されなかった場合、前記パケットを破棄する破棄手段と、
を備えることを特徴とするノード。
【０１０９】
（付記２）前記ノード内の負荷を計測する計測手段と、
前記計測手段によって計測された負荷に応じて前記確率を設定する設定手段と、をさらに備え、
前記決定手段は、
前記設定手段によって設定された確率にしたがって、前記パケットを認証実施対象または破棄対象に決定することを特徴とする付記１に記載のノード。
【０１１０】
（付記３）前記パケットの宛先を検出する検出手段と、
前記検出手段によって検出された宛先に応じて前記確率を設定する設定手段と、をさらに備え、
前記決定手段は、
前記設定手段によって設定された確率にしたがって、前記パケットを認証実施対象または転送対象に決定することを特徴とする付記１に記載のノード。
【０１１１】
（付記４）前記設定手段は、
前記宛先が前記アドホックネットワーク内の全ノードである場合、前記確率を１００％に設定することを特徴とする付記３に記載のノード。
【０１１２】
（付記５）前記設定手段は、
前記宛先が前記ノード群のうち前記特定のノード以外の他のノードである場合、前記確率を、前記宛先が前記特定のノードである場合の確率よりも低い確率に設定することを特徴とする付記３に記載のノード。
【０１１３】
（付記６）前記ノード内の負荷を計測する計測手段をさらに備え、
前記設定手段は、
前記検出手段によって検出された宛先および前記計測手段によって計測された負荷に応じて前記確率を設定することを特徴とする付記３に記載のノード。
【０１１４】
（付記７）前記決定手段は、
前記確率にしたがってランダムに決定することを特徴とする付記１〜６のいずれか一つに記載のノード。
【０１１５】
（付記８）前記決定手段によって決定された決定結果に基づいて、前記確率を更新する更新手段を備え、
前記決定手段は、
前記更新手段によって更新された確率にしたがって、前記パケットを認証実施対象または転送対象に決定することを特徴とする付記７に記載のノード。
【０１１６】
（付記９）前記決定手段は、
前記確率にしたがって周期的に決定することを特徴とする付記１〜６のいずれか一つに記載のノード。
【０１１７】
（付記１０）マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードが実行する転送方法であって、
前記アドホックネットワーク内のノード群のうち転送元のノードからのパケットを受信する受信工程と、
前記受信工程によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定工程と、
前記決定工程によって前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証工程と、
前記決定工程によって転送対象に決定された場合または前記認証工程によって認証された場合、前記パケットを転送先として設定された特定のノードに送信する送信工程と、
前記認証工程によって認証されなかった場合、前記パケットを破棄する破棄工程と、
を含むことを特徴とする転送方法。
【０１１８】
（付記１１）マルチホップ通信によりパケットを送受信するアドホックネットワーク内のノードに実行させる転送プログラムであって、
前記アドホックネットワーク内のノード群のうち転送元のノードからのパケットを受信する受信工程と、
前記受信工程によって受信されたパケットの認証を実施する確率にしたがって、前記パケットを認証実施対象または転送対象に決定する決定工程と、
前記決定工程によって前記パケットが認証実施対象に決定された場合、前記各ノードで共通の認証鍵に基づいて、前記パケットの正当性を認証する認証工程と、
前記決定工程によって転送対象に決定された場合または前記認証工程によって認証された場合、前記パケットを転送先として設定された特定のノードに送信する送信工程と、
前記認証工程によって認証されなかった場合、前記パケットを破棄する破棄工程と、
を実行させることを特徴とする転送プログラム。
【符号の説明】
【０１１９】
１００  アドホックネットワーク
１０１  通常ネットワーク
８０１  受信部
８０２  決定部
８０３  認証部
８０４  送信部
８０５  破棄部
１１０１  計測部
１１０２  設定部
１３０１  検出部
１３０２  設定部
１５００  設定部
Ｎａ〜Ｎｈ  ノード
Ｎｘ  不正ノード
ＳＮ  シンクノード
【国際調査報告】
2011121713.tif 000020
2011121713.tif 000021