(57)【要約】【課題】  アドホックネットワーク等のネットワークシステムにおいて、より高い確率で、ノード間で共通鍵を共有することを課題とする。【解決手段】ネットワークシステムに含まれる複数のノードのうち、第一の要素における第一の値と、第二の要素における第二の値とで識別されるノードは、第一の鍵および第二の鍵を記憶する第一の記憶部と、複数のノードの各々について自ノードとの暗号通信に用いられる共通鍵の共有状況に関わる状況情報を記憶する第二の記憶部と、共有先ノードが第一の値を有する場合、または第二の値を有する場合、第一の鍵または第二の鍵を用いて、他の共通鍵を送信するとともに、共有先ノードが、第一の値を有さず第二の要素に第二の値を有さない場合、自ノードとの暗号通信が可能である仲介ノードに、共有先ノードへの他の共通鍵の転送依頼を送信する通信部とを有する。
2014016864.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークシステムに含まれる複数のノードのうち、第一の要素における第一の値と、第二の要素における第二の値とで識別されるノードであって、
前記第一の値に応じて付与される第一の鍵、および前記第二の値に応じて付与される第二の鍵を記憶する第一の記憶部と、
前記複数のノードの各々について、該複数のノード各々と自ノードとの暗号通信に用いられる共通鍵の共有状況に関わる状況情報を記憶する第二の記憶部と、
前記共通鍵を未共有である共有先ノードが、前記第一の要素に前記第一の値を有する場合、または前記第二の要素に前記第二の値を有する場合、前記第一の鍵または前記第二の鍵を用いて、他の共通鍵を送信するとともに、
前記共有先ノードが、前記第一の要素に前記第一の値を有さず、かつ前記第二の要素に前記第二の値を有さない場合、前記状況情報に基づき、前記自ノードとの前記暗号通信が可能である仲介ノードに、該共有先ノードへの前記他の共通鍵の転送依頼を送信する通信部とを有することを特徴とするノード。
【請求項２】
前記共有先ノードが、前記第一の要素における第三の値と、前記第二の要素における第四の値とで識別される場合に、前記第一の要素に前記第三の値を有し、かつ前記共通鍵を共有済みであるノードを、前記仲介ノードに決定する決定部をさらに有することを特徴とする請求項１記載のノード。
【請求項３】
前記決定部は、前記第一の要素における前記第一の値と、前記第二の要素における前記第四の値とで識別されるノードを、他の仲介ノードに決定し、
前記通信部は、前記他の仲介ノードに他の転送依頼を送信することを特徴とする請求項２記載のノード。
【請求項４】
前記通信部は、前記共有先ノードから、前記他の共通鍵を受信した旨の通知を、所定時間内に受信しなかった場合に、前記他の仲介ノードに対して、前記他の転送依頼を送信することを特徴とする請求項３記載のノード。
【請求項５】
前記通信部が、前記共有先ノードから、前記他の共通鍵を受信した旨の通知を受信した場合に、前記第二の記憶部に、前記共有先ノードと前記他の共通鍵との情報を対応付けて格納する鍵生成部をさらに有することを特徴とする請求項１乃至請求項４のいずれかひとつに記載のノード。
【請求項６】
ネットワークシステムに含まれる複数のノードのうち、第一の要素における第一の値と、第二の要素における第二の値とで識別されるノードが、
前記複数のノードのうち、自ノードとの暗号通信に用いられる共通鍵が未共有である共有先ノードが、前記第一の要素に前記第一の値を有する場合、または前記第二の要素に前記第二の値を有する場合、前記第一の値に応じて付与される第一の鍵、および前記第二の値に応じて付与される第二の鍵を記憶する第一の記憶部から、前記第一の鍵または前記第二の鍵を取得し、
前記第一の鍵または前記第二の鍵を用いて、前記共有先ノードと前記共通鍵を送信し、
前記共有先ノードが、前記第一の要素に前記第一の値を有さず、かつ前記第二の要素に前記第二の値を有さない場合、前記複数のノードの各々について、該複数のノード各々との共通鍵の共有状況に関わる状況情報を記憶する第二の記憶部を参照し、
前記状況情報に基づき、前記自ノードとの前記暗号通信が可能である仲介ノードに、該共有先ノードへの前記共通鍵の転送依頼を送信する処理を実行することを特徴とする通信方法。
【請求項７】
前記ノードは、さらに、
前記共有先ノードが、前記第一の要素における第三の値と、前記第二の要素における第四の値とで識別される場合に、前記第一の要素に前記第三の値を有し、かつ共通鍵を共有済みであるノードを、前記仲介ノードに決定する処理をさらに実行することを特徴とする請求項６記載の通信方法。
【請求項８】
前記ノードは、さらに、
前記第一の要素における前記第一の値と、前記第二の要素における前記第四の値とで識別されるノードを、他の仲介ノードに決定し、
前記他の仲介ノードに他の転送依頼を送信する処理を実行することを特徴とする請求項７記載の通信方法。
【請求項９】
前記ノードは、前記他の転送依頼を送信する処理において、
前記共有先ノードから、前記共通鍵を受信した旨の通知を、所定時間内に受信しなかった場合に、前記他の仲介ノードに対して、前記他の転送依頼を送信することを特徴とする請求項８記載の通信方法。
【請求項１０】
前記ノードは、さらに、
前記共有先ノードから、前記共通鍵を受信した旨の通知を受信した場合に、前記第二の記憶部に、前記共有先ノードと前記共通鍵との情報を対応付けて格納する処理をさらに実行することを特徴とする請求項６乃至請求項９のいずれかひとつに記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示する技術は、ネットワークシステムにおけるノード間で、暗号化通信を行う技術に関する。
【背景技術】
【０００２】
ネットワークの一種として、アドホックネットワークがある。アドホックネットワークとは、無線通信によってリンクする自己構成型のネットワークである。アドホックネットワークは、通信機能を有する複数の装置により構成される。なお、アドホックネットワークにおける、通信機能を有する装置は、ノードと呼ばれる。【０００３】
各ノードは、マルチホップ通信によりパケットを送受信する。マルチホップ通信は、互いの通信圏内に存在しないノード同士であっても、各ノードの通信圏内に存在する別のノードを介して通信を可能にする技術である。なお、パケットがマルチホップ通信により、始点から終点まで転送される際の経路を、転送経路と称する。転送経路は、始点から終点までの複数のノードにより形成される。【０００４】
例えば、アドホックタイプのセンサネットワークシステムとして、検針システムがある。検針システムは、各家庭の電力メータに無線通信可能なノードを組み込むことにより、アドホックネットワーク経由で各家庭の消費電力量などを収集する。検針システムでは、各電力メータが検出した各家庭の消費電力量を含むパケットが、各家庭の電力メータが備える各ノードから電力会社のシステムまで転送される。【０００５】
ここで、セキュリティの観点からパケット内のデータは暗号化されることが望ましい。つまり、データの送信元は、データ暗号化用の鍵を用いて、データを暗号化した後に、データ送信先に対して送信することが望ましい。【０００６】
例えば、共通鍵暗号方式を採用する場合には、データの送信元とデータの送信先とで、データ暗号用の鍵を共有しておく必要があるが、共有の為に、各ノードに事前に配布されたＰａｉｒｗｉｓｅ  Ｋｅｙを利用する技術がある（例えば、非特許文献１）。【０００７】
当該技術においては、センサネットワーク内の各ノードには、事前に、各々ＩＤ（ｘ，ｙ）が付与されるとともに、ＩＤに応じた複数のＰａｉｒｗｉｓｅ  Ｋｅｙが配布される。そして、２つのノード間のみで共有されるＰａｉｒｗｉｓｅ  Ｋｅｙを用いて、データの送信元とデータの受信先との間で、データ暗号化用の鍵が共有される。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｈａｏｗｅｎ  Ｃｈａｎ，  Ａｄｒｉａｎ  Ｐｅｒｒｉｇ、  「ＰＩＫＥ：  Ｐｅｅｒ  Ｉｎｔｅｒｍｅｄｉａｒｉｅｓ  ｆｏｒ  Ｋｅｙ  Ｅｓｔａｂｌｉｓｈｍｅｎｔ  ｉｎ  Ｓｅｎｓｏｒ  Ｎｅｔｗｏｒｋｓ」  ＩＥＥＥ、  ＩＥＥＥ  ＩＮＦＯＣＯＭ  ２００５、  ｐｐ．５２４−５３５
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来のセンサネットワークは、まず、ｍの２乗個のノードを、仮想的にｍ行×ｍ列に配置する。そして、行と列の２つの要素からなるＩＤ（ｉ，ｊ）が、各々のノードに付与される。なお、以下、パケット内のデータ暗号化用の鍵を、共通鍵と称する。また、共通鍵を共有する為に用いられる鍵であって、各ノードに事前に配布される鍵を事前共有鍵と称する。【００１０】
図１は、従来のセンサネットワークにおける事前共有鍵の配布方法を説明する為の図である。図１においては、合計９個のノードが、３行×３列に配列されていると仮定し、各々のノードにＩＤが付与される。例えば、ノードＡには（０，０）、ノードＢには（０，１）等のＩＤが付与される。【００１１】
そして、各ノードには、複数の事前共有鍵が配布される。事前共有鍵は、あるノードと、行又は列のいずれかが共通である他のノードとの間で、各々共有される鍵である。【００１２】
例えば、ノードＡ（０，０）は、ノードＢ（０，１）との事前共有鍵ＡＢを有する。また、ノードＡ（０，０）は、ノードＣ（０，２）との事前共有鍵ＡＣを有する。さらに、ノードＡは、ノードＤ（１，０）との事前共有鍵ＡＤを有する。また、ノードＡは、ノードＧ（２，０）との事前共有鍵ＡＧを有する。なお、各事前共有鍵は、２ノード間で共有される鍵であって、他の事前共有鍵とは異なる鍵である。  【００１３】
図１のように９個のノードから構成されるセンサネットワークを構築する場合には、各ノードには、４つの事前共有鍵が予め配布されることとなる。【００１４】
ノードＡ（０，０）は、ノードＢ（０，１）とは事前共有鍵ＡＢを共有している為、事前共有鍵ＡＢを用いて、ノードＡとノードＢとの暗号化通信に用いる共通鍵を共有することができる。一方、ノードＡ（０，０）が有する事前共有鍵と、ノードＩ（２，２）が事前共有鍵とは異なる。そこで、ノードＡは、ノードＡと事前共有鍵を共有し、かつノードＩと事前共有鍵を共有するノードを利用する。図１の例では、ノードＣまたはノードＧを利用して、ノードＡは、ノードＣとの暗号化通信に用いる共通鍵を共有する。【００１５】
しかし、従来のセンサネットワークにおいて、共通鍵の共有を図ったとしても、必ずしも共通鍵を共有することができないという問題がある。例えば、共通鍵を共有する際に仲介の役目を負うノードＣが何らかの原因で通信不能状態となっている場合に、ノードＡはノードＩと共通鍵を共有することができない。ひいては、ノードＡはノードＩと共通鍵による暗号化通信を行うことができない。なお、ノードＣが通信不能状態に陥る例としては、ノードＣがスリープ状態から復帰できない場合や、物理的な故障が発生した場合、バッテリーが切れた場合等があげられる。【００１６】
そこで、本実施例は、より高い確率で２つのノード間で共通鍵を共有することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の一観点によれば、ネットワークシステムに含まれる複数のノードのうち、第一の要素における第一の値と、第二の要素における第二の値とで識別されるノードは、前記第一の値に応じて付与される第一の鍵、および前記第二の値に応じて付与される第二の鍵を記憶する第一の記憶部と、前記複数のノードの各々について、該複数のノード各々と自ノードとの暗号通信に用いられる共通鍵の共有状況に関わる状況情報を記憶する第二の記憶部と、前記共通鍵を未共有である共有先ノードが、前記第一の要素に前記第一の値を有する場合、または前記第二の要素に前記第二の値を有する場合、前記第一の鍵または前記第二の鍵を用いて、他の共通鍵を送信するとともに、前記共有先ノードが、前記第一の要素に前記第一の値を有さず、かつ前記第二の要素に前記第二の値を有さない場合、前記状況情報に基づき、前記自ノードとの前記暗号通信が可能である仲介ノードに、該共有先ノードへの前記他の共通鍵の転送依頼を送信する通信部とを有する。
【発明の効果】
【００１８】
本発明の一観点によれば、より高い確率で２つのノード間で共通鍵を共有することができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、従来技術の事前共有鍵の配布方法を説明する為の図である。
【図２】図２は、ネットワークシステムの一実施例を示す説明図である。
【図３】図３は、本実施例における事前共有鍵の配布方法を説明する為の図である。
【図４】図４は、ノードの機能ブロック図である。
【図５】図５は、データパケットのデータ構成例である。
【図６】図６は、ハローパケットのデータ構成例である。
【図７】図７ＡおよびＢは、事前共有鍵情報のデータ構成例を示す図である。
【図８】図８は、ルーティングテーブルのデータ構成例である。
【図９】図９ＡおよびＢは、範囲情報のデータ構成例を示す図である。
【図１０】図１０は、共通鍵テーブルのデータ構成例を示す図である。
【図１１】図１１は、管理装置４０の機能ブロック図である。
【図１２】図１２は、管理テーブルのデータ構成例を示す図である。
【図１３】図１３は、ノードＮがデータパケットを送信する際のフローチャートである。
【図１４】図１４は、共有処理のフローチャート（その１）である。
【図１５】図１５は、共有処理のフローチャート（その２）である。
【図１６】図１６は、共有処理のフローチャート（その３）である。
【図１７】図１７は、パケットの受信する際のフローチャート（その１）である。
【図１８】図１８は、パケットの受信する際のフローチャート（その２）である。
【図１９】図１９は、ノードＮのハードウェア構成例である。
【図２０】図２０は管理装置４０のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照して、この発明にかかるノード、通信方法、およびシステムの実施の形態を詳細に説明する。
【００２１】
図２は、実施の形態にかかるネットワークシステムの一実施例を示す説明図である。ネットワークシステムは、複数のノードＮと、シンクノードＳＮと、サーバＳとを含む。まず、図２を用いて、本実施の形態に係るネットワークシステムおよび、ネットワークシステムにおけるパケットの送信について、説明する。また、本実施の形態に係るネットワークシステムは、アドホックネットワークシステムである。
【００２２】
アドホックネットワークを流れるパケットには、データパケットとハローパケットとが含まれる。データパケットは、ユニキャストされるパケットであって、転送経路に従って、始点から終点までデータを送信する為のパケットである。なお、後述するように、データパケットには、共通鍵を送信するための共通鍵データパケットと、センサ等から取得したデータを送信するためのセンサデータパケットとが含まれる。ハローパケットは、ブロードキャストされるパケットであって、転送経路を生成する為のパケットである。
【００２３】
サーバＳとシンクノードＳＮとはインターネット、ＬＡＮ、ＷＡＮなどの通常ネットワーク２００を介して接続されている。シンクノードＳＮとノードＮａ乃至Ｎｈとは、アドホックネットワーク１００を介して接続されている。アドホックネットワーク１００内には、複数のノードＮが設けられる。図２では、代表としてノードＮａ乃至Ｎｈを示している。
【００２４】
サーバＳは、アドホックネットワークを管理するコンピュータである。例えば、各ノードからセンサデータを収集し、蓄積する。また、サーバＳは、シンクノードＳＮやノードＮに対して、各種命令を行う。
【００２５】
シンクノードＳＮは、アドホックネットワーク１００と通常ネットワーク２００とを接続する中継機器である。シンクノードＳＮは、アドホックネットワーク１００のプロトコルの形式の情報と通常ネットワーク２００のプロトコルの形式の情報の両方を送受信可能である。
【００２６】
また、シンクノードＳＮは、アドホックネットワーク１００と通常ネットワーク２００との間で情報をプロトコル変換することにより、通信を行う。例えば、アドホックネットワーク１００内のノードＮのいずれかからサーバＳ宛に送信されたデータパケットは、シンクノードＳＮにてプロトコル変換される。その後、シンクノードＳＮが、データパケットを、通常ネットワーク２００に送信することで、データパケットはサーバＳに到達する。
【００２７】
また、サーバＳやシンクノードＳＮからそれぞれのノードＮ宛てに送信されたデータパケットは、シンクノードＳＮにてプロトコル変換され、シンクノードＳＮからアドホックネットワーク１００内の各ノードＮにデータパケットとして送信される。
【００２８】
各ノードＮは、所定の通信圏内で通信可能な他ノードと通信が可能な装置である。例えば、ノードＮｃは、ノードＮｃにおいて生成したルーティングテーブルにしたがって、ノードＮｂとパケットの送受信を行う。また、ノードＮは、センサから取得した値を、アドホックネットワーク経由で、サーバＳへ送信する。なお、ルーティングテーブルは、転送経路に関する情報をもつテーブルである。
【００２９】
アドホックネットワーク１００では、すべてのノードＮａ乃至Ｎｈが直接シンクノードＳＮと通信できる必要はなく、他のノードを経由する事で、各ノードＮａ乃至Ｎｈは、シンクノードＳＮと通信する。このため、アドホックネットワーク１００では、一部のノードがシンクノードＳＮと通信可能であればよい。図２では、シンクノードＳＮと直接通信可能なノードは、ノードＮａ，Ｎｄであるとする。
【００３０】
また、各ノードＮは、共通鍵によってパケット内の少なくとも一部のデータを暗号化する。共通鍵は、データパケット内のデータを暗号化する為の鍵である。本実施例においては、共通鍵として、セッション毎に変更されたセッション鍵が利用される。
【００３１】
つまり、転送経路の始点となるノードと終点となるノードとの間でのみ共有された共通鍵が利用される。セッション毎に異なる共通鍵を利用することで、ネットワーク全体のセキュリティを向上させることができる。
【００３２】
さらに、各ノードは、共通鍵を共有する為に、事前共有鍵または、他の共通鍵を利用する。事前共有鍵は、各ノードに予め付与された鍵である。また、後述するとおり、各ノードに付与されたＩＤに応じた事前共有鍵が付与される。あるノードと他のノードとが同一の事前共有鍵を有している場合は、事前共有鍵で暗号化された共通鍵をやり取りすることで、共通鍵を共有することができる。
【００３３】
また、あるノードと他のノードとの間で共通鍵を共有していない場合であって、かつあるノードと他のノードが事前共有鍵を共有していない場合もある。そこで、本実施例においては、あるノードが第三のノードと共通鍵を共有している場合には、第三のノードを経由して、あるノードと他のノードとの間で共通鍵を共有する。詳細は後述する。
【００３４】
次に、転送経路について説明する。各ノードＮは、周囲のノードＮと通信状況に関する情報に基づいて、ルーティングテーブルを生成する。このように、各ノードが通信状況に応じて、適宜ルーティングテーブルを生成することで、ノードＮｆとノードＮｇが通信不能となった場合でも、新たな送信ルートの設定が可能となる。例えば、ノードＮｇは、ノードＮｅを経由する新たなルートを構築することができる。
【００３５】
図２には、アドホックネットワークの各々のノードが、最終送信先としてサーバＳ（またはシンクノードＳＮ）を指定して、データパケットを送信する場合の転送経路の例が、示されている。例えば、アドホックネットワーク１００を構成するノードＮａ乃至Ｎｈにより、ある時点において、４つの転送経路Ｒ１乃至Ｒ４が形成されているものとする。各ノードＮａ〜Ｎｈは、各々検出したデータをルーティングされた転送経路Ｒ１〜Ｒ４に従ってシンクノードＳＮに送信する。
【００３６】
具体的には、転送経路Ｒ１は、ノードＮｃとノードＮｂとノードＮａとシンクノードＳＮとを含むルートである。転送経路Ｒ２は、ノードＮｅとノードＮｄとシンクノードＳＮとを含むルートである。転送経路Ｒ３は、ノードＮｇとノードＮｆとノードＮｄとシンクノードＳＮとを含むルートである。転送経路Ｒ４は、ノードＮｈとノードＮｆとノードＮｄとシンクノードＳＮとを含むルートである。
【００３７】
例えば、データパケットのうちのセンサデータパケットが、ノードＮｃからシンクノードＳＮへ送信される場合について、説明する。ノードＮｃは、シンクノードＳＮに応じた共通鍵を用い、データパケットを暗号化する。そして、ノードＮｃは、最終の送信先をシンクノードＳＮに指定したうえで、ルーティングテーブルに基づき、直接通信が可能なノードＮｂへデータパケットを送信する。
【００３８】
暗号化されたデータパケットは、ノードＮｂおよびＮａを経て、最終送信先であるシンクノードＳＮにより受信される。そして、シンクノードＳＮは、ノードＮｃが生成したデータパケットを、ノードＮｃと共有した共通鍵で復号する。なお、データパケットは、シンクノードＳＮにて復号されずに、サーバＳにて復号されてもよい。ただし、サーバＳは、ノードＮｃとの共通鍵を管理する。このように、ノードＮｃとサーバＳ（またはシンクノードＳＮ）とが共通鍵を共有している状態であれば、データパケットを暗号化することができる。
【００３９】
一方、共通鍵が共有されていないノードＮや、シンクノードＳＮまたはサーバＳを最終送信先として、データパケットを送信する場合には、まず、共通鍵を共有する必要がある。例えば、ノードＮｃがノードＮｂに対してデータパケットを送信する場合に、ノードＮｃとノードＮｂとの間での共通鍵が未共有であるとする。
【００４０】
本実施例においては、共通鍵を共有していないノードと暗号化通信を行う為に、事前共有鍵を利用して、自ノードと通信したいノードとの共通鍵を共有する。さらに、事前共有鍵を共有していないノード同士で共通鍵を共有する場合は、仲介ノードを経由して共通鍵を共有する。詳細は後述する。
【００４１】
図３は、本実施例における事前共有鍵の配布方法を説明する為の図である。なお、事前共有鍵の生成および配布は、ノードがアドホックネットワークを形成する前に行われる。
【００４２】
また、事前共有鍵の生成および配布は、管理装置が実行する。ただし、サーバＳが管理装置の機能を兼ねることも可能であるが、ここでは、管理装置は、サーバＳとは異なるコンピュータとする。
【００４３】
まず、管理装置は、複数のノードを、仮想的にｍ行×ｎ列に配置する。なお、仮想的な配置は、アドホックネットワーク形成時（図２）の配置とは、関連する必要はない。
【００４４】
そして、管理装置は、各ノードにＩＤを付与する。ＩＤは、第一の要素と第二の要素とを含む。本実施例においては、行を第一の要素、列を第二の要素とする。各ノードは、ＩＤにおける第一の要素の値と、第二の要素の値との組み合わせで識別される。図３では、第一の要素の値はｉ、第二の要素の値はｊであって、各ノードにはＩＤ（ｉ，ｊ）が付与される。なお、ｉは、０乃至ｍ−１までの整数であって、ｊは、０乃至ｎ−１までの整数である。
【００４５】
さらに、管理装置は、各要素の値ごとに、一つの事前共有鍵を生成する。図３では、管理装置は、要素の値ｉ毎に、事前共有鍵Ｋｉを生成し、要素の値ｊ毎に事前共有鍵Ｌｊを生成する。例えば、第一の要素の値「０」に対して、事前共有鍵Ｋ０を生成する。また、第二の要素の値「０」に対して、事前共有鍵Ｌ０を生成する。
【００４６】
そして、管理装置は、各要素の値毎に生成された事前共有鍵を、各ノードに付与したＩＤに応じて、各ノードに配布する。例えば、ＩＤ（０，０）であるノードには、事前共有鍵Ｋ０と事前共有鍵Ｌ０とが配布される。なお、事前共有鍵の配布はオフラインで行われてもよい。
【００４７】
管理装置によりＩＤおよび事前共有鍵が付与されたノードは、図２に示すアドホックネットワークを形成する。ここで、例えば、図２におけるノードＮｆには、ＩＤ（０，０）が割り当てられているとする。ノードＮｆは、事前共有鍵Ｋ０とＬ０とを有する。また、ノードＮｇには、ＩＤ（３，０）が割り当てられているとする。ノードＮｇは事前共有鍵Ｋ３とＬ０とを有する。
【００４８】
ノードＮｆ（０，０）とノードＮｇ（３，０）とが、共通鍵Ｍｆｇを共有する場合を考える。ノードＮｆ（０，０）とノードＮｇ（３，０）とは、お互いが所有する事前共有鍵Ｌ０を用いて、共通鍵Ｍｆｇを共有する。ノードＮｆとノードＮｇとは、共通鍵Ｍｆｇを利用し、データパケットを暗号化通信することができる。
【００４９】
次に、ノードＮｆ（０，０）とノードＮｈ（３，２）とが共通鍵Ｍｆｈを共有する場合を考える。ノードＮｈは、ＩＤ（３，２）が割り当てられているとする。ノードＮｈは、事前共有鍵Ｋ３とＬ２を有する。ここで、ノードＮｆ（０，０）とノードＮｈ（３，２）は、共通の事前共有鍵を持たない。
【００５０】
本実施例においては、ノードＮｆ（０，０）は、仲介ノードに、ノードＮｈへの共通鍵Ｍｆｈの転送を依頼することで、共通鍵Ｍｆｈの共有を図る。例えば、仲介ノードとしては、ノードＮｆと、すでに共通鍵を共有している他のノードが選択される。ノードＮｆは、過去に何らかの手段によって、ノードＮｂ（２，２）と共通鍵Ｍｂｆを共有していたとする。また、ノードＮｆは、ノードＮｃ（２，１）と共通鍵Ｍｃｆを共有していたとする。
【００５１】
ノードＮｆは、ノードＮｂに対して、ノードＮｆとノードＮｂとの共通鍵Ｍｂｆを用いて、ノードＮｈ用の共通鍵Ｍｆｈを暗号化して、送信する。ノードＮｂは、共通鍵Ｍｂｆを用いて、共通鍵Ｍｆｈを復号する。そして、ノードＮｂは、自ノードとノードＮｈとの共通鍵または、共通の事前共有鍵を有しているかを判定する。
【００５２】
例えば、ノードＮｂ（２，２）は、ノードＮｈ（３，２）と共通の事前共有鍵Ｌ２を有している為、事前共有鍵Ｌ２を用いて共通鍵Ｍｆｈを暗号化する。そして、ノードＮｂはノードＮｈに、事前共有鍵Ｌ２で暗号化された共通鍵Ｍｆｈを送信する。ノードＮｈは、共通鍵Ｍｆｈを、事前共有鍵Ｌ２で復号することで、ノードＮｆとノードＮｈとは共通鍵Ｍｆｈを共有することができる。
【００５３】
また、ノードＮｆは、ノードＮｃに対して、ノードＮｆとノードＮｃとの共通鍵Ｍｃｆを用いて、ノードＮｈ用の共通鍵Ｍｆｈを暗号化して、送信する。ノードＮｃは、共通鍵Ｍｃｆを用いて、共通鍵Ｍｆｈを復号する。そして、ノードＮｃは、ノードＮｈとの共通鍵または、共通の事前共有鍵を有しているかを判定する。
【００５４】
例えば、ノードＮｃ（２，１）は、ノードＮｈ（３，２）と共通の事前共有鍵を有していない。そこで、ノードＮｃは、過去に何らかの手段によって、ノードＮｆと共通鍵を共有しているか判定する。
【００５５】
過去に共通鍵Ｍｃｈを共有している場合には、ノードＮｃはノードＮｈに、共通鍵Ｍｃｈで暗号化された共通鍵Ｍｆｈを送信する。ノードＮｈは、共通鍵Ｍｆｈを、共通鍵Ｍｃｈで復号することで、ノードＮｆとノードＮｈとは共通鍵Ｍｆｈを共有することができる。
【００５６】
一方、過去に共通鍵を共有していない場合には、ノードＮｃは処理を終了する。なお、ノードＮｆに対して、共通鍵Ｍｆｈの転送に失敗した旨を通知しても良い。
【００５７】
さらに、共通鍵を共有する方法として、先に述べたもの以外にも、例えば、一方の要素について、自ノードのＩＤの値を有し、他方の要素について、共通鍵の共有先のＩＤの値を持つ仲介ノードを利用する方法も考えられる。例えば、ノードＮｆは、自ノードＮｆのＩＤ（０，０）と共有先ＮｈのＩＤ（３，２）とから、仲介ノードとしてＩＤ（３，０）または（０，２）のノードを特定する。
【００５８】
例えば、ノードＮｆは、仲介ノードとして、ＩＤ（３，０）であるノードＮｇを特定したとする。まず、自ノードと仲介ノードとで共有する事前共有鍵Ｌ０を用いて、ノードＮｈ用の共通鍵Ｍｆｈを暗号化する。そして、暗号化した共通鍵Ｍｆｈを、ノードＮｇへ送信する。
【００５９】
そして、ノードＮｇは、事前共有鍵Ｌ０を用いて、受信した共通鍵Ｍｆｈを復号する。ノードＮｇは、自ノードのＩＤ（３，０）と、共有先となるノードＮｈのＩＤ（３，２）に基づいて、共有する事前共有鍵Ｋ３を特定する。そして、事前共有鍵Ｋ３を用いて共通鍵Ｍｆｈを暗号化する。
【００６０】
事前共有鍵Ｋ３で再暗号化された共通鍵Ｍｆｈは、ノードＮｈへ送信される。ノードＮｈは、事前共有鍵Ｋ３を用いて、共通鍵Ｍｆｈを復号する。
【００６１】
なお、図２では、ノードＮｆとノードＮｇとノードＮｈは、直接通信ができる位置に配置されているとして図示しているが、直接的に通信できる位置に配置されている必要はない。アドホック通信によれば、最終送信先に到達するためのルートが適宜形成される為、事前共有鍵によって暗号化された共通鍵は、最終送信先までマルチホップ通信される。
【００６２】
図４は、ノードＮの機能ブロック図である。ノードＮは、通信部１０、制御部１０１、記憶部１０２を有する。
【００６３】
通信部１０は、他のノードＮや、シンクノードＳＮと通信を行う。例えば、他のノードＮに対してデータパケットを送信したり、ハローパケットをブロードキャストする。例えば、後述の決定部１３により仲介ノードが決定された場合には、通信部１０は、仲介ノードに、共有先への共通鍵の転送依頼を送信する。
【００６４】
制御部１０１は、ノード全体の処理を制御する。制御部１０１は、パケット生成部１１、暗号処理部１２、決定部１３、鍵生成部１４を含む。
【００６５】
記憶部１０２は、各種処理に必要な情報を記憶する。記憶部１０２は、事前共有鍵記憶部１５、ルーティングテーブル記憶部１６、範囲情報記憶部１７、共通鍵記憶部１８を有する。
【００６６】
続いて、制御部１０１に含まれる各処理部について説明する。パケット生成部１１は、ハローパケットやデータパケットを生成する。本実施例においては、データパケットには、共通鍵を共有する為の共通鍵データパケットと、各ノードが取得したデータを送信する為のセンシングデータパケットとが含まれる。
【００６７】
図５は、データパケットのデータ構成例である。データパケット２０には、ヘッダ情報格納部２１、ペイロードデータ格納部２２がそれぞれ割り当てられる。ヘッダ情報格納部２１には、ヘッダ情報が格納される。ヘッダ情報は、ローカル送信元アドレス、ローカル送信先アドレス、グローバル送信元アドレス、グローバル送信先アドレス、パケットタイプを含む。なお、ヘッダ情報は、さらに、各アドレスに対応するノードＩＤを、含んでも良い。
【００６８】
ローカル送信元アドレスは、マルチホップ通信を構成する各通信において、データパケットを送信する装置のアドレスに関する情報である。ローカル送信元アドレスは、各々の通信において、送信を行う装置のアドレスに書き換えられる。
【００６９】
ローカル送信先アドレスは、マルチホップ通信を構成する各通信において、データパケットの送信先となる装置のアドレスに関する情報である。ローカル送信先アドレスは、各々の通信において、送信先となる装置のアドレスに書き換えられる。
【００７０】
グローバル送信元アドレスは、マルチホップ通信の始点となる装置のアドレスに関する情報である。例えば、転送経路の始点に相当する装置のアドレスである。グローバル送信元アドレスは、ひとつの転送経路内でデータパケットが転送されている限りは、書きかえられない。
【００７１】
グローバル送信先アドレスは、データパケットの最終的な送信先となる装置のアドレスに関する情報である。例えば、グローバル送信先アドレスは、転送経路の終点に相当する装置のアドレスである。グローバル送信先アドレスは、ひとつの転送経路内でデータパケットが転送されている限りは、書きかえられない。
【００７２】
また、本実施例においては、グローバル送信元とグローバル送信先とで共有された鍵によって、データパケットが暗号化される。データパケットが、共有鍵を含む共通鍵データパケットである場合には、データパケットは事前共有鍵または他の共通鍵で暗号化される。一方、データパケットがセンサデータパケットである場合には、データパケットは共通鍵で暗号化される。
【００７３】
パケットタイプは、パケットの種類を識別する為の情報である。例えば、データパケットのうち、共通鍵データパケットは、パケットタイプ「１」が設定される。データパケットの内、センシングデータパケットは、パケットタイプ「２」が設定される。後述のハローパケットには、例えば、パケットタイプ「３」が設定される。
【００７４】
ペイロードデータ格納部２２には、ペイロードデータが格納される。ペイロードデータは、パケットタイプに応じた情報を含む。共通鍵データパケットにおけるペイロードデータは、共有先情報および共有元情報、暗号化された共通鍵を含む。共有先情報は、共通鍵を共有する相手ノードのＩＤである。共有元情報は、共通鍵を生成したノードのＩＤである。
【００７５】
また、データパケットがセンシングデータパケットの場合は、ペイロードデータは、センサから取得したデータ等を含む。
【００７６】
図６は、ハローパケットのデータ構成例である。データパケット３０には、ヘッダ情報格納部３１、ペイロードデータ格納部３２がそれぞれ割り当てられる。ヘッダ情報格納部３１には、ヘッダ情報が格納される。ヘッダ情報は、宛先アドレス、送信元アドレス、パケットタイプを含む。
【００７７】
宛先アドレスは、ブロードキャスト専用の特別なアドレスである。例えば、宛先アドレスは、予め用意されたアドレス「２５５．２５５．２５５．２５５」である。各ノードは、個別に設定されたアドレス宛に送信されたパケットを受信するが、当該特別なアドレス宛に送信されたパケットも受信する。つまり、特別なアドレスが設定されたパケットは、当該パケットを送信したノードと通信可能な範囲に存在する全てのノードにより受信される。
【００７８】
送信元アドレスは、ハローパケットを送信した装置のアドレスに関する情報である。なお、ハローパケットもマルチホップ通信される場合は、送信元アドレスとしてグローバル送信元アドレスとローカル送信元アドレスの２種類を有しても良い。
【００７９】
パケットタイプは、パケットの種類を識別する為の情報である。ハローパケットの場合は、例えば、「２」が設定される。
【００８０】
ペイロードデータ格納部３２には、ペイロードデータが格納される。ハローパケットにおけるペイロードデータは、例えば、ハローパケットを生成したノードのＩＤが含まれる。各ノードＮが、ハローパケットを受信することで、ハローパケットの送信元であるノードのＩＤと、アドレスとを取得することができる。
【００８１】
ハローパケットをノード間でやり取りする事で、ノード間の通信強度を特定することができる。例えば、あるノードからハローパケットを大量に受信する場合には、通信強度が大きいということになる。そして、ノードＮは、通信強度に基づいて、ルーティングテーブルを生成する。なお、ルーティングテーブルの生成は、従来と同様の手法を採用することができる。
【００８２】
図４の説明に戻る。暗号処理部１２は、データパケットの暗号化を行う。また、自ノードがグローバル送信先として設定されたデータパケットを受信した場合に、データを復号する。
【００８３】
例えば、共通鍵データパケットを送信する場合に、暗号処理部１２は、グローバル送信先に応じた鍵を用いて暗号化する。なお、自ノードとグローバル送信先とが、共通の事前共有鍵を有している場合は、事前共有鍵が用いられる。自ノードとグローバル送信先とが、すでに共有した共通鍵を有している場合は、当該共通鍵が用いられる。
【００８４】
また、センサデータパケットを送信する場合には、暗号処理部１２は、グローバル送信先に応じた共通鍵をもちいて、センサデータパケットを暗号化する。
【００８５】
一方、自ノードがグローバル送信先として設定された共通鍵データパケットを受信した場合であって、かつ共通鍵の共有先として指定されたノードが自ノードである場合には、暗号処理部１２は、グローバル送信元に応じた鍵を用いて、共通鍵を復号する。一方、自ノードがグローバル送信先として設定された共通鍵データパケットを受信した場合であって、かつ共有先が自ノードでない場合には、自ノードは仲介ノードであることになる。したがって、暗号処理部１２は、後述のとおり、共通鍵データパケットの再暗号化を行う。
【００８６】
決定部１３は、共通鍵を共有する際に、自ノードと相手ノードとで事前共有鍵を共有しているか判定するとともに、共有していない場合に、仲介ノードを決定する。仲介ノードは、自ノードと暗号通信可能なノードであって、自ノードと共通鍵の共有先以外のノードである。なお、暗号通信可能とは、例えば、過去に何らかの手段で共通鍵を共有していることを言う。
【００８７】
例えば、決定部１３は、自ノードのＩＤ（ｘ，ｙ）と相手ノードのＩＤ（ｕ，ｖ）とを比較する。第一の要素の値または第二の要素の値が同一である場合は、決定部１３は、相手ノードは共通の事前共有鍵ＫｘまたはＬｙを有すると判定する。つまり、共通鍵を共有する際に、暗号処理部１２に対して、事前共有鍵ＫｘまたはＬｙを用いるよう、命令する。
【００８８】
また、決定部１３は、第一の要素の値および第二の要素の値がともに同一でない場合は、例えば、共通鍵記憶部１８を参照し、自ノードと共通鍵を共有するノードを、仲介ノードに決定する。なお、共通鍵記憶部１８については、後述する。
【００８９】
鍵生成部１４は、自ノード（ｘ，ｙ）と相手ノード（ｕ，ｖ）との間の暗号通信で用いられる共通鍵を、生成する。そして、鍵生成部１４は、生成した共通鍵を、共通鍵記憶部１８へ、共有先となる相手ノードのＩＤ（ｕ，ｖ）に対応付けて記憶する。
【００９０】
事前共有鍵記憶部１５は、事前共有鍵情報を記憶する記憶部である。事前共有鍵情報は、自ノードのＩＤを構成する各要素の値と、各要素の値に対応する事前共有鍵とを含む情報である。事前共有鍵は、管理装置によって、予め配布された情報である。
【００９１】
図７ＡおよびＢは、事前共有鍵情報のデータ構成例を示す図である。事前共有鍵記憶部１５は、事前共有鍵情報として、自ノードＩＤを構成する各要素の値と、各要素の値に応じた事前共有鍵の情報を対応づけて記憶する。
【００９２】
例えば、ノードＮのＩＤが（ｘ，ｙ）である場合、第一の要素ｉの値「ｘ」に対応づけて、事前共有鍵Ｋｘが記憶される。第二の要素ｊの値「ｙ」に対応づけて、事前共有鍵Ｌｙが記憶される。
【００９３】
ルーティングテーブル記憶部１６は、ルーティング情報を記憶する記憶部である。ルーティング情報は、転送経路に関する情報である。なお、ルーティング情報の一例は、ルーティングテーブルである。
【００９４】
図８は、ルーティングテーブルのデータ構成例である。ルーティングテーブルは、グローバル送信先アドレス、グローバル送信先ＩＤ、ローカル送信先アドレス、ローカル送信先ＩＤ、評価値を対応付けて記憶する。
【００９５】
なお、ルーティングテーブルの作成手法は、従来の手法が採用される。また、ノードＮは、ルーティングテーブルを作成する手段を有し、ハローパケットに基づいて、ルーティングテーブルを生成する。そして、生成されたルーティングテーブルは、ルーティングテーブル記憶部１６へ格納される。なお、ルーティングテーブルは定期的に更新される。
【００９６】
項目「グローバル送信先アドレス」には、データパケットのグローバル送信先となるノードのアドレスが記述される。項目「グローバル送信先ＩＤ」には、グローバル送信先となるノードのＩＤが記述される。
【００９７】
項目「ローカル送信先アドレス」には、自ノードと直接通信可能な他のノードのアドレスが記述される。項目「ローカル送信先ＩＤ」には、ローカル送信先となるノードのＩＤが記述される。なお、各種アドレスおよびＩＤは、ハローパケットから取得される。
【００９８】
項目「評価値」は、各ローカル送信先と自ノードとの通信状況に応じて算出された評価値が格納される。なお、評価値は、例えば、通信強度が大きいほど、大きな値が設定される。ルーティングテーブルを生成する手段は、単位時間あたりに受信したハローパケットの数に基づいて、ハローパケットの送信元に関する評価値を算出する。
【００９９】
図８は、ノードＮｆのルーティングテーブルを示している。例えば、ノードＮｆが、シンクノードＳＮへデータパケットを送る場合、評価値が最も大きい「Ｎｄのアドレス」がローカル送信先アドレスとして取得される。
【０１００】
また、図８の例では、ノードＮｆが、ノードＮｈへデータパケットを送る場合には、ローカル送信先として、ノードＮｈが決定される。なお、これは、１ホップで、データパケットが所望のノードへ到達する経路であることを示す。ただし、ノードＮｆがノードＮｈへデータパケットを送る場合には、ＮｆとＮｈとが共通鍵を共有している必要がある。共通鍵を未共有である場合には、まず、ノードＮｆは、共通鍵の共有処理を行う。
【０１０１】
次に、図４における範囲情報記憶部１７は、範囲情報を記憶する。範囲情報は、ネットワークシステム内の各ノードにおける各要素が取りうる値の範囲に関する情報である。ｍ行×ｎ列に仮想的にノードを配置して、ＩＤを付与する場合には、第一の要素の値は、０からｍ−１までの整数となる。また、第二の要素の値は、０からｎ−１までの値となる。
【０１０２】
図９ＡおよびＢは、範囲情報のデータ構成例を示す図である。各々の要素と、当該要素が取りうる値の範囲に関する情報を対応づけて記憶する。図９Ａの例では、ネットワークシステム内のノードは、第一の要素の値は、最小値「０」であることを示している。また、第一の要素の値は、最大値「ｍ−１」であることを示している。つまり、ネットワークシステム内のノードは、第一の要素の値として、０からｍ−１までの整数をとることを示している。
【０１０３】
また、図９Ｂの例では、ネットワークシステム内のノードは、第二の要素の値として、０からｎ−１までの整数をとることを示している。また、範囲情報として、各値が取りうる範囲の最大値のみを記憶してもよい。
【０１０４】
共通鍵記憶部１８は、共通鍵の共有状況を示す状況情報を記憶する記憶部である。状況情報は、ノード毎に、共通鍵を共有済みであるか否かを識別可能な情報である。共通鍵記憶部１８は、本実施例においては、状況情報の一例として、共通鍵テーブルを用いて説明する。共通鍵テーブルは、共通鍵を共有済みであるノードと共有された共通鍵とを対応付けて記憶する。共通鍵テーブルに登録されているノードについては、共通鍵は共有済みであり、登録されていないノードについては、未共有である。
【０１０５】
図１０は、共通鍵テーブルのデータ構成例を示す図である。共通鍵テーブルは、共有済ノードのＩＤと、共通鍵とを対応付けて記憶する。なお、定期的に共通鍵を更新する場合には、さらに、共通鍵の有効期限に関する情報を保持しても良い。
【０１０６】
図１０は、ノードＮｆ（０，０）が有する共通鍵テーブルである。図１１は、ノードＮｆは、ＩＤ（２，２）であるノードＮｂと、共通鍵Ｍｂｆをすでに共有していることを示す。つまり、ノードＮｂ（２，２）とは、共通鍵Ｍｂｆを用いて暗号化通信が可能である。
【０１０７】
また、ノードＮｆは、ＩＤ（２，１）であるノードＮｃと、共通鍵Ｍｃｆをすでに共有していることを示す。つまり、ノードＮｃ（２，１）とは、共通鍵Ｍｃｆを用いて暗号化通信が可能である。なお、ＭｂｆやＭｃｆとして、例えば、各々「０ｘ２５６４５１」や「０ｘ６４５１２５」の値が格納される。
【０１０８】
また、ノードＮｆが、新たな共通鍵Ｍｆｈを、ノードＮｈと共有した場合には、共通鍵テーブルに、ノードＮｈのＩＤ（３，２）と共通鍵Ｍｆｈとが対応付けて、新たに格納される。
【０１０９】
次に、管理装置の機能ブロックについて説明する。図１１は、管理装置４０の機能ブロック図である。なお、本実施例においては、管理装置４０が各ノードにＩＤや事前共有鍵の付与を行う。よって、管理装置４０は、必ずしもネットワークシステムに含まれる必要はなく、独立したコンピュータであってもよい。つまり、サーバＳと管理装置４０は、ネットワークを介して接続されていても、独立していても良い。
【０１１０】
また、管理装置の機能を、サーバＳが有するとしても良い。つまり、サーバＳが、ノードに対してＩＤおよび事前共有鍵の付与を行う。ただし、サーバＳは、従来のアドホックネットワークシステムにおけるサーバＳとしての機能も有する。
【０１１１】
管理装置４０は、通信部４１、ＩＤ生成部４２、鍵生成部４３、決定部４４、管理テーブル記憶部４５、範囲情報記憶部４６を有する。
【０１１２】
通信部４１は、他の装置と通信を行う。例えば、ノードＮに、ＩＤとＩＤに応じた事前共有鍵を送信する。なお、通信網を介せずに、オフラインでＩＤおよび事前共有鍵を付与してもよい。
【０１１３】
ＩＤ生成部４２は、各ノードＮについて、一意のＩＤ（ｉ，ｊ）を生成する。まず、ＩＤ生成部４２は、第一の要素の値の範囲と、第二の要素の値の範囲とを範囲情報記憶部４６に格納する。そして、第一の要素の値の範囲のいずれかの値と、第二の要素の値の範囲の何れかの値を有するＩＤを生成する。さらに、ＩＤ生成部４２は、生成したＩＤを各ノードに送信する様、通信部４１に命令する。また、範囲情報を、各ノードに送信する様、通信部４１に命令する。
【０１１４】
本実施例においては、ある時点で一つのネットワークシステムに加入させるノードの数に応じて、初めに、各要素の値の範囲が決定される。例えば、図３のように、１２個のノードを含むネットワークシステムの稼働を想定している場合には、管理者により、例えば、１２個のノードにＩＤの割り振りが可能な４行×３列という情報が入力される。
【０１１５】
そして、ＩＤ生成部４２は、第一の要素の範囲情報として、最小値「０」から最大値「３」までという範囲情報を生成する。また、第二の要素の範囲情報として、最小値「０」から最大値「２」までという情報を生成する。次に、ＩＤ生成部４２は、範囲情報に基づいてＩＤを付与するとともに、範囲情報を範囲情報記憶部４６に格納する。
【０１１６】
鍵生成部４３は、事前共有鍵を生成する。例えば、各要素の値毎に一意の事前共有鍵ＫｉまたはＬｊを生成する。そして、値と、該値に対応する事前共有鍵を、管理テーブル記憶部４５に格納する。例えば、第一の要素の値の範囲が、０からｍ−１である場合は、値各々について、事前共有鍵を生成するとともに、各値と、各事前共有鍵を対応付けて格納する。
【０１１７】
決定部４４は、各ノードに配布する事前共有鍵を、ＩＤに基づいて決定する。そして、決定部４４は、ＩＤの各要素の値に対応する事前共有鍵を、管理テーブル記憶部４５から取得する。そして、通信部４１に、ノードＮへの事前共有鍵の送信を命令する。
【０１１８】
管理テーブル記憶部４５は、事前共有鍵を管理する為の管理テーブルを記憶する。図１２は、管理テーブルのデータ構成例を示す図である。管理テーブルは、各要素の値と、各要素の値毎に一意の事前共有鍵を対応付けて記憶する。例えば、Ｋ０やＫ１として、例えば、各々「０ｘ７６３５４２」や「０ｘ２４３５４５」の値が格納される。
【０１１９】
なお、図１２に示す管理テーブルは、第一の要素に関する事前共有鍵の管理テーブルである。なお、第二の要素に関する管理テーブルも同様に、保持する。
【０１２０】
決定部４４は、管理テーブル記憶部４５を参照し、例えば、第一の要素が「０」であるノードには、事前共有鍵Ｋ０を配布することを決定する。
【０１２１】
範囲情報記憶部４６は、付与されたＩＤの値の範囲に関する範囲情報を記憶する。なお、ノードＮにおける範囲情報記憶部１７と同様のデータ構成である。
【０１２２】
次に、ノードＮがデータパケットを送信する際の処理について説明する。図１３は、ノードＮがデータパケットを送信する際のフローチャートである。ノードＮが、データパケットのグローバル送信先となる場合は、図１３の処理を実行する。
【０１２３】
ここでは、データパケットを送信するノードＮのＩＤを（ｘ、ｙ）とする。また、図１３の処理に先駆けて、ノードＮの制御部１０１は、センサから、センサデータを取得しているとする。そして、所定のタイミングで、センサデータをセンサデータパケットとして、送信する処理を実行する。
【０１２４】
パケット生成部１１は、ノードＮのプロセッサー制御の下、データパケットのグローバル送信先（ｕ，ｖ）を決定する（Ｏｐ．１）。なお、データパケットは、センサデータパケットである。例えば、センサデータの内容に応じて、グローバル送信先が決定される。
【０１２５】
ｕは第一の要素の値であって、第一の要素の範囲情報に含まれる値である。つまり、範囲情報が、０からｍ−１である場合には、ｕは０からｍ−１までの値の何れかである。ｖは第一の要素の値であって、第二の要素の範囲情報に含まれる値である。つまり、範囲情報が、０からｎ−１である場合には、ｖは０からｎ−１までの値の何れかである。
【０１２６】
さらに、Ｏｐ．１において、パケット生成部１１は、グローバル送信先（ｕ，ｖ）に対応するアドレスをルーティングテーブルから取得するとともに、ヘッダ情報格納部２１へ格納する。また、グローバル送信先アドレスとして、自ノード（ｘ、ｙ）のアドレスを設定する。さらに、パケットタイプとして、センサデータパケットを示す「２」を設定する。
【０１２７】
次に、暗号処理部１２は、共通鍵記憶部１８を参照し、グローバル送信先（ｕ，ｖ）に応じた共通鍵を有しているか判定する（Ｏｐ．２）。グローバル送信先（ｕ，ｖ）に応じた共通鍵を有している場合には（Ｏｐ．２ＹＥＳ）、暗号処理部１２は、共通鍵でセンサデータを暗号化する（Ｏｐ．３）。さらに、暗号処理部１２は、暗号化したセンサデータを含むペイロードデータを、ペイロードデータ格納部２２へ格納する。また、暗号処理部１２は、センサデータ以外のデータも暗号化してもよい。
【０１２８】
次に、パケット生成部１１は、ルーティングテーブルを参照して、ローカル送信先を決定する（Ｏｐ．４）。具体的には、パケット生成部１１は、グローバル送信先アドレスをキーにルーティングテーブルを参照する。そして、パケット生成部１１は、グローバル送信先アドレスに対応づいたローカル送信先アドレスの内、もっとも評価値が大きいローカル送信先アドレスを取得する。
【０１２９】
そして、パケット生成部１１は、取得したローカル送信先アドレスを、ヘッダ情報格納部２１に設定する。また、ローカル送信先アドレスとして、自ノードのアドレスを設定する。
【０１３０】
次に、通信部１０は、センサデータパケットを送信する（Ｏｐ．５）。そして、センサデータパケットがローカル送信先に受信された場合には、ローカル送信先に当たるノードからの応答を受信する（Ｏｐ．６）。なお、応答は、グローバル送信先から受信するものとしてもよい。
【０１３１】
以上の処理によって、センサデータパケットは、グローバル送信元から、グローバル送信先に対して送信される。さらに、センサデータパケットは、グローバル送信先に応じた共通鍵で暗号化されている為、転送経路内での情報漏洩を防止することができる。
【０１３２】
一方、ノード（ｘ，ｙ）とノード（ｕ，ｖ）とが共通鍵を持たない場合は（Ｏｐ．２ＮＯ）、ノードＮは共有処理を行う（Ｏｐ．７）。そして、共有処理が終了した場合には、Ｏｐ．２へ戻り、センサデータパケットの送信処理を引き続き行う。
【０１３３】
ノードＮ（ｘ，ｙ）が、グローバル送信先（ｕ，ｖ）を、共通鍵の共有先として設定した場合の共有処理について  説明する。図１４乃至図１６は、共有処理のフローチャートである。
【０１３４】
まず、決定部１３は、自ノードのＩＤ（ｘ，ｙ）と、共有先のＩＤ（ｕ，ｖ）とを比較して、第一の要素の値が等しいか否かを判定する（Ｏｐ．１０）。第一の要素の値が等しい（ｕ＝ｘ）場合は（Ｏｐ．１０ＹＥＳ）、決定部１３は、共通鍵データパケットのグローバル送信先を、共有先（ｕ，ｖ）に決定する。
【０１３５】
そして、パケット生成部１１は、当該決定を受けて、共通鍵データパケットのグローバル送信先を、共有先（ｕ，ｖ）に決定する（Ｏｐ．１２）。パケット生成部１１は、グローバル送信先（ｕ，ｖ）のアドレスを、グローバル送信先アドレスに設定する。また、グローバル送信先アドレスとして、自ノードのアドレスを設定する。さらに、パケットタイプとして、共通鍵データパケットを示す「１」を設定する。
【０１３６】
一方、第一の要素の値が等しくない（ｕ≠ｘ）場合は（Ｏｐ．１０ＮＯ）、第二の要素の値が等しいか否かを判定する（Ｏｐ．１１）。第二の要素の値が等しい（ｖ＝ｙ）場合は（Ｏｐ．１０ＹＥＳ）、決定部１３は、共通鍵データパケットのグローバル送信先を、共有先（ｕ，ｖ）に決定する（Ｏｐ．１２）。
【０１３７】
ここで、自ノードのＩＤにおける第一の要素の値または第二の要素の値と、共有先のＩＤにおける第一の要素の値または第二の要素の値が等しいことは、事前共有鍵を共有していることを示す。したがって、仲介ノードを経ることなく、共有された事前共有鍵を用いて、自ノードと共有先とは、共通鍵を共有することができる。
【０１３８】
次に、鍵生成部１４は、自ノード（ｘ，ｙ）と共有先（ｕ，ｖ）との間での暗号通信に用いられる共通鍵を、生成する（Ｏｐ．１３）。例えば、共通鍵は、乱数生成器を利用して、生成される。
【０１３９】
そして、決定部１３は、グローバル送信先のＩＤと自ノードのＩＤとに基づいて、事前共有鍵を決定する（Ｏｐ．１４）。例えば、決定部１３は、グローバル送信先が共有先（ｕ，ｖ）であって、ｕとｘが等しい場合は、事前共有鍵Ｋｘに決定する。グローバル送信先が共有先（ｕ，ｖ）であって、ｖとｙが等しい場合には事前共有鍵Ｌｙに決定する。
【０１４０】
そして、暗号処理部１２は、決定部１３により決定された事前共有鍵を利用して、共通鍵を暗号化する（Ｏｐ．１５）。さらに、暗号処理部１２は、暗号化された共通鍵を、ペイロードデータ格納部２２へ格納する。また、パケット生成部１１は、ペイロードデータ格納部２２に、共通鍵の共有先として、共有先のＩＤ（ｕ，ｖ）を格納するとともに、共有元として、自ノードのＩＤ（ｘ，ｙ）を格納する。
【０１４１】
次に、パケット生成部１１は、ルーティングテーブルを参照し、グローバル送信先に基づいて、ローカル送信先を決定する（Ｏｐ．１６）。Ｏｐ．１６において、パケット生成部１１は、ローカル送信先に対応するアドレスをルーティングテーブルから取得するとともに、ヘッダ情報格納部２１へ格納する。また、ローカル送信先アドレスとして、自ノードのアドレスを設定する。
【０１４２】
つぎに、通信部１０は、共通鍵データパケットを、ローカル送信先アドレスに対して送信する（Ｏｐ．１７）。そして、共通鍵データパケットが、グローバル送信先である共有先に受信された場合には、共有先からの応答を受信する（Ｏｐ．１８）。
【０１４３】
以上のように、自ノードと共有先とが、共通の事前共有鍵を有している場合には、グローバル送信先と共有先とが同一のノードとなる。そして、ノードＮは、共通の事前共有鍵を用いて、共通鍵を共有先と共有することができる。
【０１４４】
一方、第一の要素の値が等しくなく（Ｏｐ．１０Ｎｏ）、かつ第二の要素の値が等しくない場合は（Ｏｐ．１１ＮＯ）、Ｏｐ．２０へ進む。
【０１４５】
決定部１３は、共有先ＩＤと同じ値を持つ未処理ノードが、共有鍵管理テーブルに存在するか判定する（Ｏｐ．２０）。未処理ノードとは、共有処理において仲介ノードに設定されていないノードである。
【０１４６】
具体的には、共有先ＩＤ（ｕ，ｖ）である場合に、決定部１３は、共有鍵管理テーブルから、第一の要素の値ｉがｕである共有済ノードＩＤまたは、第二の要素の値ｊがｖである共有済ノードＩＤを検索する。さらに、共有済ノードが、未処理であるかも判定する
なお、共有処理の対象となったか否かは、処理済フラグによって、管理される。処理済フラグ「０」は、共有処理において仲介ノードに設定されたことがないノードに付与される。一方、処理済フラグ「１」は、共有処理において仲介ノードに設定されたノードに付与される。
【０１４７】
条件を満たすノードが共有鍵管理テーブルに存在する場合には（Ｏｐ．２０Ｙｅｓ）、決定部１３は、当該ノードを、仲介ノードに決定する（Ｏｐ．２１）。そして、決定部１３の決定を受けて、パケット生成部１１は、仲介ノードのアドレスを、グローバル送信先アドレスに設定する。そして、自ノードのアドレスをグローバル送信元アドレスに設定する。さらに、パケットタイプを、共通鍵データパケットであることを示す「１」に設定する。
【０１４８】
共有先ＩＤと同じ値を持つ未処理ノードが複数存在する場合には、順番に仲介ノードとして決定しても良い。また、該当する全ノードを仲介ノードとして、複数の共通鍵データパケットを、後述の処理で生成しても良い。ただし、各共通鍵データパケットに含まれる共通鍵は、同一の共通鍵であることが望ましい。
【０１４９】
このように、自ノードと共有先とが、共通の事前共有鍵を有していない場合には、仲介ノード経由で、共有先に共通鍵データパケットが送信される。つまり、一旦、仲介ノードをグローバル送信先として、共通鍵データパケットを送信する。そして、ノードＮは、仲介ノードを経由して、共通鍵の共有を試みることができる。
【０１５０】
Ｏｐ．２０によれば、仲介ノードとして、共有先と同じ事前共有鍵を持つノードを設定することができる。なぜなら、仲介ノードが、共有先と同じ値をＩＤに持つ事は、少なくとも、仲介ノードと共有先とが同じ事前共有鍵を有していることを示す。
【０１５１】
自ノードから仲介ノードへ共通鍵データパケットが送信された後に、仲介ノードと共有先とは事前共有鍵を用いて、共通鍵をやり取りすることができる。つまり、共有先ＩＤと同じ値を持つ未処理ノードを仲介ノードに決定することで、共有元である自ノードから仲介ノードへ共通鍵データパケットが転送されれば、仲介ノードと共有先とは共通鍵データパケットを暗号化通信できる。
【０１５２】
一方、共有先ＩＤと同じ値を持つ未処置ノードが、共有鍵管理テーブルに存在しない場合には（Ｏｐ．２０Ｎｏ）、決定部１３は、共有先ＩＤと異なる値を持つ未処理ノードが、共有鍵管理テーブルに存在するか判定する（Ｏｐ．２９）。具体的には、第一の要素ｉの値がｕ以外であって、第二の要素ｊの値がｖ以外である共有済ノードを検索する。なお、共有済ノードが未処理であるかも判定する。
【０１５３】
共有先ＩＤと異なる値を持つ未処理ノードが、共有鍵管理テーブルに存在する（Ｏｐ．２９Ｙｅｓ）場合は、決定部１３は、当該ノードを仲介ノードに決定する（Ｏｐ．３０）。そして、決定部１３の決定を受けて、パケット生成部１１は、仲介ノードのアドレスを、グローバル送信先アドレスに設定する。そして、自ノードのアドレスをグローバル送信元アドレスに設定する。さらに、パケットタイプを、共通鍵データパケットであることを示す「１」に設定する。
【０１５４】
そして、Ｏｐ．２１またはＯｐ．３０において仲介ノードが決定された後、鍵生成部１４は、新たな共通鍵を生成する（Ｏｐ．２２）。そして、暗号処理部１２は、決定された仲介ノードと自ノードとの間で共有している共通鍵を、共通鍵管理テーブルから取得する（Ｏｐ．２３）。
【０１５５】
暗号処理部１２は、取得した共通鍵で、Ｏｐ．２２にて生成した共通鍵を暗号化する（Ｏｐ．２４）。さらに、暗号化された共通鍵を、共通鍵データパケットのペイロードデータ格納部２２に格納する。次に、パケット生成部１１は、ルーティングテーブルを参照し、共通鍵データパケットのローカル送信先を決定する（Ｏｐ．２５）。さらに、パケット生成部１１は、自ノードのアドレスをローカル送信元アドレスに設定する。
【０１５６】
通信部１０は、共通鍵データパケットを送信する（Ｏｐ．２６）。なお、仲介ノードに共通鍵データパケットの送信を行うことは、仲介ノードに対して、共有先への共通鍵の転送依頼を送信することの一種である。
【０１５７】
次に、制御部１０１は、所定時間以内に、共有先から応答を受信したか判定する（Ｏｐ．２７）。なお、本実施例においては、共有先に指定されたノードが共通鍵を取得した場合に、当該ノードは、共有元として設定されたノードをグローバル送信先として、受信応答に係るパケットを返信する。
【０１５８】
したがって、共有元である自ノードが応答を受信した場合は（Ｏｐ．２７Ｙｅｓ）、共通鍵の共有が成功した事となる為、共有処理を終了する。なお、応答を受信した場合に、制御部１０１は、共通鍵管理テーブルに、共有先ＩＤと共通鍵とを対応付けて記憶する。
【０１５９】
一方、共有元である自ノードが応答を受信しない場合は（Ｏｐ．２７Ｎｏ）、共通鍵の共有が失敗した事となる為、他の仲介ノードを経由して、共通鍵の共有を試みる。そこで、制御部１０１は、共通鍵の共有が失敗した際の仲介ノードに対して、処理済フラグを「１」に設定する（Ｏｐ．２８）。
【０１６０】
例えば、ノードＮが、Ｏｐ．２１において決定された仲介ノードを経由して、共通鍵を共有先と共有できない場合には、Ｏｐ．２９の判定を行う。仲介ノードと共有先とが事前共有鍵を共有することはないが、仲介ノードが共有先と暗号化通信可能である場合もある。よって、自ノードと共有先との間で、より高い確率で共通鍵を共有する為に、他の仲介ノードを利用する。
【０１６１】
また、共有先ＩＤと異なる値を持つ未処理ノードが、共有鍵管理テーブルに存在しない（Ｏｐ．２９Ｎｏ）場合は、Ｏｐ．４０へ進む。
【０１６２】
決定部１３は、自ノードのＩＤ（ｘ，ｙ）と共有先のＩＤ（ｕ，ｖ）とに基づいて、ノード（ｘ，ｖ）、およびノード（ｕ，ｙ）を仲介ノードに決定する（Ｏｐ．４０）。具体的には、決定部１３は、自ノードのＩＤ（ｘ，ｙ）の第一の要素の値と、共有先のＩＤ（ｕ，ｖ）の第二の要素の値を有するノード（ｘ，ｖ）を仲介ノードに決定する。また、決定部１３は、自ノードのＩＤ（ｘ，ｙ）の第二の要素の値と、共有先のＩＤ（ｕ，ｖ）の第一の要素の値を有するノード（ｕ，ｙ）を仲介ノードに決定する。
【０１６３】
そして、パケット生成部１１は、仲介ノードに対応するアドレスをルーティングテーブルから取得するとともに、グローバル送信先アドレスとしてヘッダ情報格納部２１へ格納する。さらに、グローバル送信先アドレスとして、自ノードのアドレスを設定するとともに、パケットタイプとして、共通鍵データパケットを示す「１」を設定する。
【０１６４】
Ｏｐ．４０によれば、仲介ノードは、自ノードと少なくとも一つの事前共有鍵を共有し、共通鍵の共有先と少なくともひとつの事前共有鍵を共有しているノードとすることができる。仲介ノードとなるノードを最低数（１つ）とすることで、ネットワークの輻輳を低減することができる。
【０１６５】
つぎに、鍵生成部１４は、新たな共通鍵を生成する（Ｏｐ．４１）。そして、暗号処理部１２は、決定部１３の指示のもと、自ノードと仲介ノードとの間で共通の事前共有鍵を取得する（Ｏｐ．４２）。決定部１３は、仲介ノード（ｘ，ｖ）へ送信する共通鍵データパケットについては、事前共有鍵Ｋｘを使用するよう、暗号処理部１２に指示する。一方、決定部１３は、仲介ノード（ｕ，ｙ）へ送信する共通鍵データパケットについては、事前共有鍵Ｌｙを使用するよう、暗号処理部１２に指示する。
【０１６６】
次に、暗号処理部１２は、取得した事前共有鍵で、Ｏｐ．４１にて生成した共通鍵を暗号化する（Ｏｐ．４３）。さらに、暗号化した共通鍵を、共通鍵データパケットのペイロードデータ格納部２２に格納する。次に、パケット生成部１１は、ルーティングテーブルを参照し、共通鍵データパケットのローカル送信先を決定する（Ｏｐ．４４）。さらに、パケット生成部１１は、自ノードのアドレスをローカル送信元アドレスに設定する。
【０１６７】
通信部１０は、共通鍵データパケットを送信する（Ｏｐ．４５）。次に、制御部１０１は、所定時間以内に、共有先から応答を受信したか判定する（Ｏｐ．４６）。応答を受信した場合は（Ｏｐ．４６Ｙｅｓ）、共通鍵の共有が成功した事となる為、共有処理を終了する。
【０１６８】
一方、応答を受信しない場合は（Ｏｐ．４６Ｎｏ）、共通鍵の共有が失敗した事となる為、所定時間待機したのち、再度、データパケットを送信する。なお、ノードＮは、共通鍵の共有ができない旨のアラームをサーバＳへ送信して、処理を終了してもよい。
【０１６９】
以上の処理によって、自ノードと共有先とが、同一の事前共有鍵を有していない場合でも、共通鍵を共有し、暗号化通信することができる。さらに、仲介ノードとして、すでに共通鍵を共有しているノードを採用することで、自ノードと共有先が共通鍵を共有できる可能性を高めることができる。
【０１７０】
次に、ノードＮがパケットを受信した場合の処理について、説明する。図１７および図１８は、パケットの受信する際のフローチャートである。ノードＮがパケットを受信する側である場合は、図１７および図１８の処理を実行する。
【０１７１】
通信部１０は、パケットを受信する（Ｏｐ．５０）。なお、本実施例においては、ローカル送信先として自ノードが指定されているパケット、またはブロードキャストされたパケットを、各ノードＮは受信する。ただし、受信したパケットのローカル送信先を参照し、自ノードのアドレスが設定されたパケットのみを処理対象とし、自ノードのアドレス以外が設定されたパケットを棄却するとしても良い。
【０１７２】
制御部１０１は、グローバル送信先が自ノードであるかを判定する（Ｏｐ．５１）。例えば、グローバル送信先アドレスに自ノードのアドレス、またはブロードキャスト用のアドレスが設定されている場合に、受信したパケットは、自ノード宛のパケットであると判定する。なお、Ｏｐ．５０においてハローパケットを受信した場合には、Ｏｐ．５１の処理においては、必ずＹＥＳの判定がなされることとなる。
【０１７３】
グローバル送信先が自ノードでない場合は（Ｏｐ．５１ＮＯ）、通信部１０は、受信したパケットを転送する（ＯＰ．５１）。パケット生成部１１が、自身のルーティングテーブルに従って、受信したパケットに設定されたグローバル送信先に応じて、ローカル送信先アドレスを書き換える。さらに、ローカル送信元アドレスを、自ノードのアドレスで書きかえる。そして、処理を終了する。
【０１７４】
一方、グローバル送信先が自ノードである場合は（Ｏｐ．５１ＹＥＳ）、制御部１０１は、受信したパケットのパケットタイプが「１」であるか判定する（Ｏｐ．５２）。パケットタイプが「１」でない場合は（Ｏｐ．５２ＮＯ）、パケット生成部１１は、パケットタイプが「２」であるか判定する（Ｏｐ．５８）。
【０１７５】
パケットタイプが「２」でない場合は（Ｏｐ．５８ＮＯ）、制御部１０１はルーティングテーブルを更新する（Ｏｐ．６０）。グローバル送信先が自ノードであって、パケットタイプが「２」でないパケットは、本実施例においては、ハローパケットということになる。なお、ルーティングテーブルの生成および更新は従来の手法を採用することができる。そして、処理を終了する。
【０１７６】
一方、パケットタイプが「２」である場合は（Ｏｐ．５８ＹＥＳ）、データパケットを共通鍵で復号する（Ｏｐ．５９）。具体的には、パケットタイプが「２」であるということは、受信したパケットはセンサデータパケットであることを示す。よって、暗号処理部１２は、自ノードとグローバル送信元とで共有している共通鍵を、共通鍵記憶部１８から取得する。そして、共通鍵を用いて、データパケット内のセンサデータを復号する。そして、処理を終了する。
【０１７７】
一方、Ｏｐ．５２において、パケットタイプが「１」である場合は（Ｏｐ．５２ＹＥＳ）、受信したパケットは共通鍵データパケットであることになる。よって、決定部１３は、共通鍵データパケットのペイロードデータ格納部２２を参照し、共有先として自ノードが設定されているか判定する（Ｏｐ．５３）。
【０１７８】
ここで、共有先が自ノードである場合は（Ｏｐ．５３ＹＥＳ）、決定部１３は、自ノードとグローバル送信元とで共有する鍵を特定する（Ｏｐ．５４）。具体的には、決定部１３は、自ノードとグローバル送信元とで、共通の事前共有鍵を有している場合は、当該事前共有鍵を、共有する鍵として特定する。一方、決定部１３は、自ノードとグローバル送信元とで、共通の事前共有鍵を有していない場合は、自ノードとグローバル送信元とで、過去に共有した共通鍵を、共有する鍵として特定する。
【０１７９】
ここで、共通の事前共有鍵を有しているか否かは、自ノードのＩＤと、グローバル送信元のＩＤとを比較することで、判定することができる。まず、決定部１３は、ヘッダ情報を参照し、グローバル送信元アドレスに対応するＩＤを取得する。なお、ヘッダ情報にＩＤを含まない場合は、ルーティングテーブルを参照し、グローバル送信元アドレスに対応するＩＤを取得する。
【０１８０】
そして、決定部１３は、取得したＩＤに含まれる、第一の要素の値または第二の要素の値が、自ノードのＩＤと同じ値であれば、自ノードとグローバル送信元とは、共通の事前共有鍵を有すると判定する。一方、共通の事前共有鍵を有していない場合は、グローバル送信元のＩＤをキーに、共通鍵記憶部１８を検索する。同一のＩＤを共有済ノードＩＤとするレコードにおける共通鍵を、自ノードとグローバル送信元とで共有する鍵として特定する。
【０１８１】
次に、暗号処理部１２は、特定した鍵を事前共有鍵記憶部１５または共通鍵記憶部１８から取得すると共に、共通鍵を復号する（Ｏｐ．５５）。そして、制御部１０１は、共通鍵と、共有元ＩＤとを対応付けて、共通鍵記憶部１８へ格納する。なお、共有元ＩＤを、共有済ノードＩＤに格納する。さらに、共通鍵データパケットを受信した旨の応答を、共通鍵データパケットにおけるグローバル送信先に対して送信する（Ｏｐ．５７）。
【０１８２】
以上の処理によって、共有先として指定されたノードは、共有元にて生成された共通鍵を入手することができる。したがって、共有元となったノードと共有先となったノードとの間で、センサデータパケットをやり取りする際には、共通鍵を用いて暗号化通信することができる。
【０１８３】
一方、共有先が自ノードでない場合は（Ｏｐ．５３ＮＯ）、Ｏｐ．７０へ進む。これは、自ノードが仲介ノードであることを示す。したがって、ノードＮは、共通鍵データパケットを共有先へ転送する処理を行う。
【０１８４】
決定部１３は、グローバル送信元と自ノードとで共有する鍵を特定する（Ｏｐ．７０）。なお、具体的な処理は、Ｏｐ．５４と同様である。そして、暗号処理部１２は、特定した鍵で、共通鍵を復号する（Ｏｐ．７１）。
【０１８５】
次に、決定部１３は、共通鍵データパケットのペイロードデータ格納部２２を参照し、共有先として指定されたノードのＩＤと、自ノードのＩＤとに基づいて、共有先と自ノードとで共有する鍵を特定する（ＯＰ．７２）。具体的な処理は、Ｏｐ．５４と同様である。
【０１８６】
ただし、自ノードが仲介ノードである場合には、共通鍵の共有先と仲介ノードである自ノードとの間で、必ずしも鍵を共有していない場合もある。この場合には、ノードＮは処理を終了する。また、ノードＮは、グローバル送信元に対して、共通鍵の転送ができない旨の通知を送信してもよい。
【０１８７】
次に、暗号処理部１２は、特定した鍵を用いて、Ｏｐ．７１にて復号した共通鍵を再暗号化する（Ｏｐ．７３）。そして、共通鍵データパケットのペイロードデータ格納部２２に、再暗号化された共通鍵を格納する。
【０１８８】
続いて、パケット生成部１１は、新たなヘッダ情報を生成する（Ｏｐ．７４）。新たなヘッダ情報としては、共有先のアドレスをグローバル送信先アドレスに、自ノードのアドレスをグローバル送信元に設定する。さらに、パケット生成部１１は、ルーティングテーブルに応じたローカル送信先アドレスを設定するとともに、自ノードのアドレスをローカル送信元アドレスに設定する。
【０１８９】
そして、新たに生成された共通鍵データパケットを、送信する（Ｏｐ．７５）。そして、共有処理を終了する。
【０１９０】
以上の処理によって、自ノードが仲介ノードである場合には、共有先に応じた再暗号化を行ったうえで、新たな共有鍵データパケットを、共有先に対して送信することができる。よって、このように転送された新たな共有鍵データパケットを、共有先が受信した場合には、仲介ノードと自ノードとの間で共有した鍵を利用することで、共有元と自ノードとの間で用いる共通鍵を入手することができる。
【０１９１】
以上のように、本実施例によれば、ノード間で共通鍵を共有する際に、ノード間で共通の事前共有鍵を有していなくとも、仲介ノードを利用して共通鍵を共有することができる。また、ネットワークシステム内の各ノードが、常に通信可能状態にあるとは言えない現状を考慮して、本実施例によれば、ノードＮは、暗号化通信可能なノードを種々の仲介ノードを設定し、共通鍵の共有を試みることができる。よって、従来技術と比較して、より高い確率でノード間で共通鍵を共有する事ができる。
【０１９２】
図１９は、ノードＮのハードウェア構成例である。ノードＮは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２と、フラッシュメモリ３０３と、インターフェース（Ｉ／Ｆ）３０４と、暗号化回路３０５と、センサ３０６と、バス３０７とを備えている。ＣＰＵ３０１乃至センサ３０６は、バス３０７よってそれぞれ接続されている。
【０１９３】
ＣＰＵ３０１は、ノード１０の全体の制御を司る。ＣＰＵ３０１は、ＲＡＭ３０２に展開されたプログラムを実行することにより、制御部１０１として機能する。
【０１９４】
ＲＡＭ３０２は、ＣＰＵ３０１のワークエリアとして使用される。フラッシュメモリ３０３は、プログラムや、各種鍵の情報、ルーティングテーブルを記憶している。なお、フラッシュメモリ３０３は、記憶部１０２の一例である。プログラムには、例えば、図１３乃至図１８のフローチャートに示したノードにおける各処理を実行させる為のプログラムが含まれる。例えば、データパケットの送信処理、共有処理、パケットの受信処理を、ノードＮに実行させる為の制御プログラムが、フラッシュメモリ３０３に記憶される。
【０１９５】
フラッシュメモリ３０３に記憶されたプログラムを、ＲＡＭ３０２に展開し、ＣＰＵ３０１が実行することで、ノード１０は、図４に記載した各種処理部として機能する。また、ノード１０は、図１３乃至図１８の処理を実行する。
【０１９６】
Ｉ／Ｆ３０４は、マルチホップ通信によりパケットを送受信する。Ｉ／Ｆ３０４は、通信部１０の一例である。
【０１９７】
暗号化回路３０５は、データを暗号化する場合に暗号鍵によりデータを暗号化する回路である。例えば、パケットを暗号化して送信する場合は、暗号化回路３０５が機能する。暗号化回路３０５は、暗号処理部１２の一例である。なお、暗号化をソフトウェア的に実行する場合は、ＣＰＵ３０１が暗号処理部１２として機能する。ＣＰＵ３０１は、暗号化回路３０５に相当するプログラムをフラッシュメモリ２３から読み出し、実行する。
【０１９８】
センサ３０６は、センサ３０６固有のデータを検出する。たとえば、温度、湿度、水位、降水量、風量、音量、電力使用量、時間、時刻、加速度など、測定対象にあったデータを検出する。なお、ＣＰＵ２０１は、センサ３０６から検出値を取得する。そして、取得した検出値を、センサデータとして、他の装置へ送信する。
【０１９９】
図２０は、管理装置４０のハードウェア構成の一例を示す図である。コンピュータ１０００は、管理装置４０、またはサーバＳおよび管理装置４０両方の機能を有する装置として機能する。
【０２００】
コンピュータ１０００はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１００２，ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１００３，通信装置１００４、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１００５、入力装置１００６、表示装置１００７、媒体読取装置１００９を有しており、各部はバス１００８を介して相互に接続されている。そしてＣＰＵ１００１による管理下で相互にデータの送受を行うことができる。
【０２０１】
ＩＤおよび事前共有鍵の付与を行う為のプログラムが、コンピュータが読み取り可能な記録媒体に記録される。コンピュータが読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。また、実施例にて説明した各種処理に関わるプログラムが、コンピュータが読み取り可能な記録媒体に記録される。
【０２０２】
光ディスクには、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  −  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）などがある。光磁気記録媒体には、ＭＯ（Ｍａｇｎｅｔｏ  −  ＯＰｔｉｃａｌ  ｄｉｓｋ）などがある。このプログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売されることが考えられる。
【０２０３】
そしてコンピュータ１０００は、例えば媒体読取装置１００９が、各種プログラムを記録した記録媒体から、該プログラムを読み出す。ＣＰＵ１００１は、読み出されたプログラムをＨＤＤ１００５若しくはＲＯＭ１００２、ＲＡＭ１００３に格納する。
【０２０４】
ＣＰＵ１００１は、管理装置４０全体の動作制御を司る中央処理装置である。ＨＤＤ１００５には、上記の各実施例に示した管理装置４０と同様の機能をコンピュータに発揮させるプログラムとして、各処理をコンピュータに実行させるプログラムが記憶されている。
【０２０５】
そして、ＣＰＵ１００１が、プログラムをＨＤＤ１００５から読み出して実行することで、図１１に示す管理装置４０におけるＩＤ生成部４２、鍵生成部４３、決定部４４として機能するようになる。また、各種プログラムはＣＰＵ１００１とアクセス可能なＲＯＭ１００２またはＲＡＭ１００３に格納されていても良い。
【０２０６】
さらにＨＤＤ１００５にはＣＰＵ１００１の管理下で図１１に示す管理テーブル記憶部４５または範囲情報記憶部４６として機能する。プログラム同様、記憶部の情報はＣＰＵ１００１とアクセス可能なＲＯＭ１００２またはＲＡＭ１００３に格納されても良い。また、ＲＯＭ１００２またはＲＡＭ１００３は、処理の過程で一時的に生成された情報も記憶する。表示装置１００７は、必要に応じて各画面を表示する。
【０２０７】
通信装置１００４はネットワークを介して他の装置からの信号を受信し、その信号の内容をＣＰＵ１００１に渡す。さらに通信装置１００４はＣＰＵ１００１からの指示に応じてネットワークを介して他の装置に信号を送信する。入力装置１００６は、ユーザからの情報の入力を受け付ける。
【０２０８】
本実施例のアドホックネットワークシステムは、たとえば各家庭の電力の使用量を収集するシステムに適用される。このようなシステムの場合、各ノードＮは、各家庭の電力の使用量を検出するための各家庭の電力メータに設置される。各ノードＮが検出した電力の使用量を、シンクノードＳＮを経由してサーバＳに送信することで、サーバＳは、各家庭の電力の使用量を収集することが可能になる。
【０２０９】
具体的には、例えば、各家庭の電力メータにそれぞれノードＮが組み込まれているとする。各ノードＮは、各ノードＮは、各家庭の電力や使用量を、アドホックネットワーク１００を介してサーバＳに送信する。
【０２１０】
なお、各家庭の電力の使用量は、各ノードが計測してもよく、また、各ノードが電力メータから取得してもよい。また、各ノードは、自身の記憶領域に、検出した電力使用量を記憶する。シンクノードＳＮは、アドホックネットワーク１００内の各ノードから受信した各家庭の電力や使用量を、通常ネットワーク２００を介して電力会社のサーバＳに送信する。これにより、作業員が現地に出向くことなく電力の使用量を収集することができる。
【０２１１】
また、本ネットワークシステムは、電力の使用量の収集だけでなく、各ノードに温度，湿度，光量などを検知するセンサ機能を持たせて、例えば、環境などの調査に使用することも可能である。
【０２１２】
（変形例１）
図１４乃至図１６に示した共有処理においては、仲介ノードを決定する際に、Ｏｐ．２０の判定に基づいて仲介ノードを決定し、次いでＯｐ．２９に基づいて仲介ノードを決定し、次いでＯｐ．４０に基づいて仲介ノードを決定した。しかし、初めに、Ｏｐ．４０に基づいて決定された仲介ノードに共有鍵データパケットを送信し、所定時間応答がなかった場合に、Ｏｐ．２９に基づいて仲介ノードを決定するとしても良い。つまり、仲介ノードの決定に係る処理Ｏｐ．２０とＯｐ．２９とＯｐ．４０とは処理の順序を問わない。
【０２１３】
（変形例２）
上記本実施例のＯｐ．４０においては、ノード（ｘ，ｙ）とノード（ｕ，ｖ）が共通鍵を共有する際に、できるだけホップ数が少なくなる可能性が高いノード（ｘ，ｖ）または（ｕ，ｙ）を仲介ノードとして決定した。しかし、これに限られず、例えば、複数の仲介ノードを経由して、自ノードと相手ノードとが共通鍵を共有するとしても良い。
【０２１４】
具体的には、あるノード（ｘ，ｙ）が相手ノード（ｕ，ｖ）と共通鍵を共有する場合には、あるノード（ｘ，ｙ）は、第一の仲介ノードとして、（ｘ，ｐ）に決定する。ただし、ｐはｙ以外の整数であって、ネットワークシステム内の各ノードが取りうる第一の要素の値範囲内の数である。
【０２１５】
そして、第一の仲介ノード（ｘ，ｐ）は、第二の仲介ノードとして（ｑ，ｖ）を決定する。ただし、ｑはｕ以外の整数であって、ネットワークシステム内の各ノードが取りうる第二の要素の値範囲内の数である。第二の仲介ノード（ｑ，ｖ）は、相手ノード（ｕ，ｖ）と共通の事前共有鍵Ｌｖを有する為、あるノード（ｘ，ｙ）が生成した共通鍵を、事前共有鍵Ｌｖで再暗号化する。
【０２１６】
また、ノード（ｘ、ｙ）の決定部１３は、初めに、仲介ノード（ｘ，ｖ）または仲介ノード（ｕ，ｙ）に対して、共通鍵データパケットを送信したあと、所定時間応答を受信しなかった場合（Ｏｐ．４６Ｎｏ）に、新たに仲介ノード（ｘ，ｐ）を決定しても良い。ただし、ｐは、ｖまたはｙ以外の整数である。
【０２１７】
（変形例３）
Ｐａｉｒｗｉｓｅ  Ｋｅｙを利用する従来技術においても、本実施例を適用することができる。具体的には、仲介ノードを決定する際に、状況情報を参照し、共通鍵をすでに共有しているノードを仲介ノードに設定する。一方で、Ｐａｉｒｗｉｓｅ  Ｋｅｙを共有しているノード間では、共通鍵の共有においてＰａｉｒｗｉｓｅ  Ｋｅｙを利用する。
【０２１８】
（変形例４）
本実施例においては、図３に示すように、１行または１列毎に同じ事前共有鍵を配布する事としたが、例えば、複数列毎に同じ事前共有鍵を配布するとしても良い。例えば、管理装置は、２行毎または２列毎に同じ事前共有鍵を配布してもよい。
【０２１９】
（変形例５）
データパケットに対して、２重の暗号化を行ってもよい。例えば、アプリケーション層の暗号化には、グローバル送信先と共有した共通鍵または事前共有鍵を利用し、アドホック層の暗号化には、ローカル送信先とローカル送信元で共有したアクセスキーを利用する。
【０２２０】
転送経路を構成する各通信において、各ノードは、アドホック層の再暗号化を行う。さらに、転送経路の終点となるグローバル送信先においては、直前の送信元との間で共有されたアクセスキーでアドホック層の復号を行う。さらに、グローバル送信元との間で共有された共通鍵または事前共有鍵によって、アプリケーション層の復号を行う。
【０２２１】
このように、アクセスキーを利用することで、転送経路を構成するノード間で、パケットの正当性を評価することができる為、よりセキュリティが向上する。
【０２２２】
（変形例６）
図２の例では、アドホックネットワーク１００内に１台のシンクノードＳＮを設ける構成としたが、一つのアドホックネットワーク１００内に複数台のシンクノードＳＮを設ける構成としてもよい。また、図２ではアドホックネットワーク１００は一つであるが、複数のアドホックネットワークを含む場合もある。複数のアドホックネットワークを含む場合、複数のアドホックネットワークにはそれぞれ少なくとも一つのシンクノードＳＮが含まれており、サーバＳは当該シンクノードＳＮと通常ネットワークを介して接続する。この構成により、サーバＳと全てのノードＮとのデータ送受信が可能になる。
【符号の説明】
【０２２３】
Ｎ      ノード
１０    通信部
１０１  制御部
１１    パケット生成部
１２    暗号処理部
１３    決定部
１４    鍵生成部
１０２  記憶部
１５    事前共有鍵記憶部
１６    ルーティングテーブル記憶部
１７    範囲情報記憶部
１８    共通鍵記憶部
４０    管理装置
４１    通信部
４２    ＩＤ生成部
４３    鍵生成部
４４    決定部
４５    管理テーブル記憶部
４６    範囲情報記憶部
Ｓ      サーバ
ＳＮ    シンクノード
３０１    ＣＰＵ
３０２    ＲＡＭ
３０３    フラッシュメモリ
３０４    Ｉ／Ｆ
３０５    暗号化回路
３０６    センサ
３０７    バス
１０００  コンピュータ
１００１  ＣＰＵ
１００２  ＲＯＭ
１００３  ＲＡＭ
１００４  通信装置
１００５  ＨＤＤ
１００６  入力装置
１００７  表示装置
１００８  バス
１００９  媒体読取装置
【図１】
2014016864.tif 000003
【図２】
2014016864.tif 000004
【図３】
2014016864.tif 000005
【図４】
2014016864.tif 000006
【図５】
2014016864.tif 000007
【図６】
2014016864.tif 000008
【図７】
2014016864.tif 000009
【図８】
2014016864.tif 000010
【図９】
2014016864.tif 000011
【図１０】
2014016864.tif 000012
【図１１】
2014016864.tif 000013
【図１２】
2014016864.tif 000014
【図１３】
2014016864.tif 000015
【図１４】
2014016864.tif 000016
【図１５】
2014016864.tif 000017
【図１６】
2014016864.tif 000018
【図１７】
2014016864.tif 000019
【図１８】
2014016864.tif 000020
【図１９】
2014016864.tif 000021
【図２０】
2014016864.tif 000022
【手続補正書】
【提出日】平成27年3月20日(2015.3.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１０３
【補正方法】変更
【補正の内容】
【０１０３】
また、図９Ｂの例では、ネットワークシステム内のノードは、第二の要素の値として、０からｎ−１までの整数をとることを示している。また、範囲情報として、各要素が取りうる範囲の最大値のみを記憶してもよい。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０６
【補正方法】変更
【補正の内容】
【０１０６】
図１０は、ノードＮｆ（０，０）が有する共通鍵テーブルである。図１０は、ノードＮｆが、ＩＤ（２，２）であるノードＮｂと、共通鍵Ｍｂｆをすでに共有していることを示す。つまり、ノードＮｂ（２，２）とは、共通鍵Ｍｂｆを用いて暗号化通信が可能である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１２２
【補正方法】変更
【補正の内容】
【０１２２】
次に、ノードＮがデータパケットを送信する際の処理について説明する。図１３は、ノードＮがデータパケットを送信する際のフローチャートである。ノードＮが、データパケットのグローバル送信元となる場合は、図１３の処理を実行する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１２５
【補正方法】変更
【補正の内容】
【０１２５】
ｕは第一の要素の値であって、第一の要素の範囲情報に含まれる値である。つまり、範囲情報が、０からｍ−１である場合には、ｕは０からｍ−１までの値の何れかである。ｖは第二の要素の値であって、第二の要素の範囲情報に含まれる値である。つまり、範囲情報が、０からｎ−１である場合には、ｖは０からｎ−１までの値の何れかである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１３５
【補正方法】変更
【補正の内容】
【０１３５】
そして、パケット生成部１１は、当該決定を受けて、共通鍵データパケットのグローバル送信先を、共有先（ｕ，ｖ）に設定する（Ｏｐ．１２）。パケット生成部１１は、グローバル送信先（ｕ，ｖ）のアドレスを、グローバル送信先アドレスに設定する。また、グローバル送信元アドレスとして、自ノードのアドレスを設定する。さらに、パケットタイプとして、共通鍵データパケットを示す「１」を設定する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１４１
【補正方法】変更
【補正の内容】
【０１４１】
次に、パケット生成部１１は、ルーティングテーブルを参照し、グローバル送信先に基づいて、ローカル送信先を決定する（Ｏｐ．１６）。Ｏｐ．１６において、パケット生成部１１は、ローカル送信先に対応するアドレスをルーティングテーブルから取得するとともに、ヘッダ情報格納部２１へ格納する。また、ローカル送信元アドレスとして、自ノードのアドレスを設定する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１４５
【補正方法】変更
【補正の内容】
【０１４５】
決定部１３は、共有先ＩＤと同じ値を持つ未処理ノードが、共通鍵テーブルに存在するか判定する（Ｏｐ．２０）。未処理ノードとは、共有処理において仲介ノードに設定されていないノードである。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１４６
【補正方法】変更
【補正の内容】
【０１４６】
具体的には、共有先ＩＤ（ｕ，ｖ）である場合に、決定部１３は、共通鍵テーブルから、第一の要素の値ｉがｕである共有済ノードＩＤまたは、第二の要素の値ｊがｖである共有済ノードＩＤを検索する。さらに、共有済ノードが、未処理であるかも判定する。なお、共有処理の対象となったか否かは、処理済フラグによって、管理される。処理済フラグ「０」は、共有処理において仲介ノードに設定されたことがないノードに付与される。一方、処理済フラグ「１」は、共有処理において仲介ノードに設定されたノードに付与される。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１４７
【補正方法】変更
【補正の内容】
【０１４７】
条件を満たすノードが共通鍵テーブルに存在する場合には（Ｏｐ．２０Ｙｅｓ）、決定部１３は、当該ノードを、仲介ノードに決定する（Ｏｐ．２１）。そして、決定部１３の決定を受けて、パケット生成部１１は、仲介ノードのアドレスを、グローバル送信先アドレスに設定する。そして、自ノードのアドレスをグローバル送信元アドレスに設定する。さらに、パケットタイプを、共通鍵データパケットであることを示す「１」に設定する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１５２
【補正方法】変更
【補正の内容】
【０１５２】
一方、共有先ＩＤと同じ値を持つ未処理ノードが、共通鍵テーブルに存在しない場合には（Ｏｐ．２０Ｎｏ）、決定部１３は、共有先ＩＤと異なる値を持つ未処理ノードが、共通鍵テーブルに存在するか判定する（Ｏｐ．２９）。具体的には、第一の要素ｉの値がｕ以外であって、第二の要素ｊの値がｖ以外である共有済ノードを検索する。なお、共有済ノードが未処理であるかも判定する。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１５３
【補正方法】変更
【補正の内容】
【０１５３】
共有先ＩＤと異なる値を持つ未処理ノードが、共通鍵テーブルに存在する場合には（Ｏｐ．２９Ｙｅｓ）、決定部１３は、当該ノードを仲介ノードに決定する（Ｏｐ．３０）。そして、決定部１３の決定を受けて、パケット生成部１１は、仲介ノードのアドレスを、グローバル送信先アドレスに設定する。そして、自ノードのアドレスをグローバル送信元アドレスに設定する。さらに、パケットタイプを、共通鍵データパケットであることを示す「１」に設定する。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１５４
【補正方法】変更
【補正の内容】
【０１５４】
そして、Ｏｐ．２１またはＯｐ．３０において仲介ノードが決定された後、鍵生成部１４は、新たな共通鍵を生成する（Ｏｐ．２２）。そして、暗号処理部１２は、決定された仲介ノードと自ノードとの間で共有している共通鍵を、共通鍵テーブルから取得する（Ｏｐ．２３）。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１５８
【補正方法】変更
【補正の内容】
【０１５８】
したがって、共有元である自ノードが応答を受信した場合は（Ｏｐ．２７Ｙｅｓ）、共通鍵の共有が成功した事となる為、共有処理を終了する。なお、応答を受信した場合に、制御部１０１は、共通鍵テーブルに、共有先ＩＤと共通鍵とを対応付けて記憶する。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１６１
【補正方法】変更
【補正の内容】
【０１６１】
また、共有先ＩＤと異なる値を持つ未処理ノードが、共通鍵テーブルに存在しない場合は（Ｏｐ．２９Ｎｏ）、Ｏｐ．４０へ進む。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１７３
【補正方法】変更
【補正の内容】
【０１７３】
グローバル送信先が自ノードでない場合は（Ｏｐ．５１ＮＯ）、通信部１０は、受信したパケットを転送する（ＯＰ．６１）。パケット生成部１１が、自身のルーティングテーブルに従って、受信したパケットに設定されたグローバル送信先に応じて、ローカル送信先アドレスを書き換える。さらに、ローカル送信元アドレスを、自ノードのアドレスで書きかえる。そして、処理を終了する。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１９３
【補正方法】変更
【補正の内容】
【０１９３】
ＣＰＵ３０１は、ノードＮの全体の制御を司る。ＣＰＵ３０１は、ＲＡＭ３０２に展開されたプログラムを実行することにより、制御部１０１として機能する。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０２０６
【補正方法】変更
【補正の内容】
【０２０６】
さらに、ＨＤＤ１００５は、ＣＰＵ１００１の管理下で図１１に示す管理テーブル記憶部４５または範囲情報記憶部４６として機能する。プログラム同様、記憶部の情報はＣＰＵ１００１とアクセス可能なＲＯＭ１００２またはＲＡＭ１００３に格納されても良い。また、ＲＯＭ１００２またはＲＡＭ１００３は、処理の過程で一時的に生成された情報も記憶する。表示装置１００７は、必要に応じて各画面を表示する。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０２０９
【補正方法】変更
【補正の内容】
【０２０９】
具体的には、例えば、各家庭の電力メータにそれぞれノードＮが組み込まれているとする。各ノードＮは、各家庭の電力の使用量を、アドホックネットワーク１００を介してサーバＳに送信する。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０２１０
【補正方法】変更
【補正の内容】
【０２１０】
なお、各家庭の電力の使用量は、各ノードが計測してもよく、また、各ノードが電力メータから取得してもよい。また、各ノードは、自身の記憶領域に、検出した電力使用量を記憶する。シンクノードＳＮは、アドホックネットワーク１００内の各ノードから受信した各家庭の電力の使用量を、通常ネットワーク２００を介して電力会社のサーバＳに送信する。これにより、作業員が現地に出向くことなく電力の使用量を収集することができる。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０２１４
【補正方法】変更
【補正の内容】
【０２１４】
具体的には、あるノード（ｘ，ｙ）が相手ノード（ｕ，ｖ）と共通鍵を共有する場合には、あるノード（ｘ，ｙ）は、第一の仲介ノードとして、（ｘ，ｐ）に決定する。ただし、ｐはｙ以外の整数であって、ネットワークシステム内の各ノードが取りうる第二の要素の値範囲内の値である。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０２１５
【補正方法】変更
【補正の内容】
【０２１５】
そして、第一の仲介ノード（ｘ，ｐ）は、第二の仲介ノードとして（ｑ，ｖ）を決定する。ただし、ｑはｕ以外の整数であって、ネットワークシステム内の各ノードが取りうる第一の要素の値範囲内の値である。第二の仲介ノード（ｑ，ｖ）は、相手ノード（ｕ，ｖ）と共通の事前共有鍵Ｌｖを有する為、あるノード（ｘ，ｙ）が生成した共通鍵を、事前共有鍵Ｌｖで再暗号化する。
【手続補正２２】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2014016864.tif 000023
【国際調査報告】
2014016864.tif 000024
2014016864.tif 000025
2014016864.tif 000026
2014016864.tif 000027
2014016864.tif 000028