IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コネクトフリー株式会社の特許一覧

特許7218003データ送信方法、通信処理方法、装置、および通信処理プログラム
<>
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図1
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図2
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図3
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図4
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図5
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図6
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図7
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図8
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図9
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図10
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図11
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図12
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図13
  • 特許-データ送信方法、通信処理方法、装置、および通信処理プログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-27
(45)【発行日】2023-02-06
(54)【発明の名称】データ送信方法、通信処理方法、装置、および通信処理プログラム
(51)【国際特許分類】
   H04L 45/00 20220101AFI20230130BHJP
【FI】
H04L45/00
【請求項の数】 10
(21)【出願番号】P 2020569289
(86)(22)【出願日】2019-01-31
(86)【国際出願番号】 JP2019003445
(87)【国際公開番号】W WO2020157928
(87)【国際公開日】2020-08-06
【審査請求日】2022-01-31
(73)【特許権者】
【識別番号】514318600
【氏名又は名称】コネクトフリー株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】帝都 久利寿
【審査官】中川 幸洋
(56)【参考文献】
【文献】特開2013-5110(JP,A)
【文献】特開2018-207472(JP,A)
【文献】石田 弥生、ほか,IPv6セキュリティ機能の実装,NEC技報,日本電気株式会社,1999年,第52巻, 第6号,pp.54-55
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/00
(57)【特許請求の範囲】
【請求項1】
複数のデバイスが接続されたネットワークにおけるデータ送信方法であって、
前記複数のデバイスの各々において、各デバイスが有している公開鍵を他のデバイスに送信するステップと、
前記公開鍵を受信したデバイスにおいて、ハッシュ関数に従って前記公開鍵から算出されるハッシュ値に基づいて、前記公開鍵の送信元のデバイスのネットワークアドレスを決定するステップと、
第1のデバイスにおいて、第2のデバイスを宛先とするパケットを前記第2のデバイスに関連付けられた第1の暗号鍵により暗号化して第1の暗号化パケットを生成するステップと、
前記第1の暗号化パケットの送出先となるデバイスを決定し、当該決定したデバイスに関連付けられた第2の暗号鍵により前記第1の暗号化パケットを暗号化して第2の暗号化パケットを生成し、当該決定したデバイスへ送信するステップと、
前記第2の暗号化パケットを受信したデバイスにおいて、前記第2の暗号化パケットを前記第1の暗号化パケットに復号し、当該復号された第1の暗号化パケットが自デバイス宛てであるか否かを判断するステップと、
前記自デバイス宛てであるか否かの判断により、前記復号された第1の暗号化パケットが自デバイス宛てでなければ、別のデバイスを決定し前記送信するステップを実行し、前記復号された第1の暗号化パケットが自デバイス宛てであれば、前記第1の暗号化パケットをさらに復号するステップとを備える、データ送信方法。
【請求項2】
前記複数のデバイスの各々において、各デバイスが有している前記公開鍵に関連付けられた電子証明書を他のデバイスに送信するステップをさらに備える、請求項1に記載のデータ送信方法。
【請求項3】
ネットワークに接続されたデバイスでの通信処理方法であって、
他のデバイスを宛先とするパケットが与えられると実行される、
当該パケットを前記他のデバイスに関連付けられた第1の暗号鍵により暗号化して第1の暗号化パケットを生成するステップと、
前記第1の暗号化パケットの送出先となるデバイスを決定するステップと、
前記第1の暗号化パケットを前記決定したデバイスに関連付けられた第2の暗号鍵により暗号化して第2の暗号化パケットを生成するステップと、
前記第2の暗号化パケットを前記決定したデバイスへ送信するステップとを備え、
他のデバイスから前記第2の暗号化パケットを受信すると実行される、
前記第2の暗号化パケットを前記第1の暗号化パケットに復号するステップと、
前記復号された第1の暗号化パケットが自デバイス宛てであるか否かを判断するステップと、
前記復号された第1の暗号化パケットが、前記自デバイス宛てであるか否かの判断により、自デバイス宛てでなければ、当該第1の暗号化パケットの送出先となるさらに別のデバイスを決定し、当該決定したデバイスに関連付けられた第2の暗号鍵により第2の暗号化パケットを生成して送信するステップと、
前記復号された第1の暗号化パケットが自デバイス宛てであれば、前記第1の暗号化パケットをさらに復号するステップと
秘密鍵および公開鍵を取得するステップと、
ハッシュ関数に従って前記公開鍵から算出されるハッシュ値に基づいて、自デバイスのネットワークアドレスを決定するステップとを備える、通信処理方法。
【請求項4】
各デバイスが有しているネットワークアドレスに基づいて、送出先となるデバイスが決定される、請求項3に記載の通信処理方法。
【請求項5】
証局から前記公開鍵に関連付けられた電子証明書を取得するステップと、
前記公開鍵および前記電子証明書を他のデバイスに送信するステップとをさらに備える、請求項4に記載の通信処理方法。
【請求項6】
前記他のデバイスから前記公開鍵および前記公開鍵に関連付けられた電子証明書を受信すると、前記電子証明書の正当性を判断するステップと、
前記電子証明書が正当であると判断されると、ハッシュ関数に従って前記公開鍵から算出されるハッシュ値に基づいて、前記他のデバイスのネットワークアドレスを決定するステップとをさらに備える、請求項5に記載の通信処理方法。
【請求項7】
前記他のデバイスを宛先とするパケットが与えられると実行される、当該宛先のデバイスのネットワークアドレスを探索するステップをさらに備える、請求項4~6のいずれか1項に記載の通信処理方法。
【請求項8】
前記他のデバイスを宛先とするパケットが与えられると実行される、前記他のデバイスとの間のセッションを確立するとともに、前記第1の暗号鍵を決定するステップをさらに備え、
前記他のデバイスから前記第2の暗号化パケットを受信すると実行される、前記第1の暗号化パケットの送出先となるさらに別のデバイスとの間のセッションを確立するとともに、前記第2の暗号鍵を決定するステップをさらに備える、請求項3~7のいずれか1項に記載の通信処理方法。
【請求項9】
ネットワークに接続するためのネットワークインターフェイスと、
前記ネットワークインターフェイスに接続された制御部とを備え、
前記制御部は、
パケットを他のデバイスに関連付けられた第1の暗号鍵を用いて第1の暗号化パケットに暗号化する処理、および、前記第1の暗号化パケットを復号する処理を実行可能な第1の暗号化/復号部と、
前記第1の暗号化パケットを前記第1の暗号化パケットの送出先となるデバイスに関連付けられた第2の暗号鍵を用いて第2の暗号化パケットに暗号化する処理、および、前記第2の暗号化パケットを復号する処理を実行可能な第2の暗号化/復号部と、
他のデバイスを宛先とするパケットが前記第1の暗号化/復号部および前記第2の暗号化/復号部においてそれぞれ暗号化されることで生成される前記第2の暗号化パケットを送出先のデバイスに送信する送信管理部と
秘密鍵および公開鍵を格納する記憶部とを備え、
前記制御部は、ハッシュ関数に従って前記公開鍵から算出されるハッシュ値に基づいて、自デバイスのネットワークアドレスを決定し、
前記送信管理部は、
他のデバイスから受信した第2の暗号化パケットを前記第2の暗号化/復号部において復号することで生成される第1の暗号化パケットが自デバイス宛てであるか否かを判断し、
前記生成された第1の暗号化パケットが自デバイス宛てでなければ、当該第1の暗号化パケットが前記第2の暗号化/復号部において暗号化されることで生成される第2の暗号化パケットをさらに別のデバイスに送信し、
前記生成された第1の暗号化パケットが自デバイス宛てであれば、当該第1の暗号化パケットを前記第1の暗号化/復号部においてさらに復号し出力する、装置。
【請求項10】
ネットワークに接続するためのネットワークインターフェイスを有するコンピュータのための通信処理プログラムであって、前記通信処理プログラムは前記コンピュータによって実行されると、前記コンピュータに請求項3~8のいずれか1項に記載の通信処理方法を実行させる、通信処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、認証済みIPアドレスを有するデバイス間のデータ通信技術に関する。
【背景技術】
【0002】
近年の情報通信技術(Information and Communication Technology:ICT)の進歩は目覚ましく、インターネットなどのネットワークに接続されるデバイスは、従来のパーソナルコンピュータやスマートフォンといった情報処理装置に限らず、様々なモノ(things)に広がっている。このような技術トレンドは、「IoT(Internet of Things;モノのインターネット)」と称され、様々な技術およびサービスが提案および実用化されつつある。将来的には、地球上の数十億人と数百億または数兆のデバイスとが同時につながる世界が想定されている。このようなネットワーク化された世界を実現するためには、よりシンプル、より安全、より自由につながることができるソリューションを提供する必要がある。
【0003】
通常、ネットワーク上では、各デバイスに静的または動的に割り当てられたIP(Internet Protocol)アドレスを用いて、デバイス間のデータ通信が実現される。
【0004】
デバイス間のデータ通信を実現するためには、送信元のデバイスから送出されたデータを宛先のデバイスまで転送しなければならない。このようなデータ転送の処理は、「ルーティング」などと称される。このようなルーティングを実現するために、ネットワーク上には多数のルータが配置される。
【0005】
特開平05-022293号公報(特許文献1)に開示されるように、ルータは、経路情報を記憶する経路情報テーブルを有しており、受信フレーム中のインターネットワーキング用アドレスと、経路情報テーブルの内容に従って、経路を定めて受信フレームの中継を行う(特開平05-022293号公報の段落[0005]および[0006]など参照)。
【先行技術文献】
【特許文献】
【0006】
【文献】特開平05-022293号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献1によれば、多数のデバイスが存在するネットワークを想定すると、ルータも多数必要となり、また、各ルータの責務も大きくなるという問題が生じる。そのため、多数のデバイスが存在するネットワークにおいては、各デバイスが自立してデータ通信を実現できる構成が好ましい。本開示は、多数のデバイスが存在するネットワークにおいて、各デバイスが自立してデータ通信を実現するデータ送信方法などの解決策を提供する。
【課題を解決するための手段】
【0008】
本開示のある形態によれば、複数のデバイスが接続されたネットワークにおけるデータ通信方法が提供される。データ通信方法は、第1のデバイスにおいて、第2のデバイスを宛先とするパケットを第2のデバイスに関連付けられた第1の暗号鍵により暗号化して第1の暗号化パケットを生成するステップと、第1の暗号化パケットの送出先となるデバイスを決定し、当該決定したデバイスに関連付けられた第2の暗号鍵により第1の暗号化パケットを暗号化して第2の暗号化パケットを生成し、当該決定したデバイスへ送信するステップと、第2の暗号化パケットを受信したデバイスにおいて、第2の暗号化パケットを第1の暗号化パケットに復号し、当該復号された第1の暗号化パケットが自デバイス宛てであるか否かを判断するステップと、自デバイス宛てであるか否かの判断により、復号された第1の暗号化パケットが自デバイス宛てでなければ、別のデバイスを決定し送信するステップを実行し、復号された第1の暗号化パケットが自デバイス宛てであれば、第1の暗号化パケットをさらに復号するステップとを含む。
【0009】
上記のデータ通信方法は、複数のデバイスの各々において、各デバイスが有している公開鍵および当該公開鍵に関連付けられた電子証明書を他のデバイスに送信するステップと、公開鍵および電子証明書を受信したデバイスにおいて、ハッシュ関数に従って公開鍵から算出されるハッシュ値に基づいて、公開鍵および電子証明書の送信元のデバイスのIPアドレスを決定するステップとをさらに含んでいてもよい。
【0010】
本開示の別の形態によれば、ネットワークに接続されたデバイスでの通信処理方法が提供される。通信処理方法は、他のデバイスを宛先とするパケットが与えられると実行される、当該パケットを他のデバイスに関連付けられた第1の暗号鍵により暗号化して第1の暗号化パケットを生成するステップと、第1の暗号化パケットの送出先となるデバイスを決定するステップと、第1の暗号化パケットを決定したデバイスに関連付けられた第2の暗号鍵により暗号化して第2の暗号化パケットを生成するステップと、第2の暗号化パケットを決定したデバイスへ送信するステップとを含む。通信処理方法は、さらに、他のデバイスから第2の暗号化パケットを受信すると実行される、第2の暗号化パケットを第1の暗号化パケットに復号するステップと、復号された第1の暗号化パケットが、自デバイス宛てであるか否かの判断により、自デバイス宛てであるか否かを判断するステップと、復号された第1の暗号化パケットが自デバイス宛てでなければ、当該第1の暗号化パケットの送出先となるさらに別のデバイスを決定し、当該決定したデバイスに関連付けられた第2の暗号鍵により第2の暗号化パケットを生成して送信するステップと、復号された第1の暗号化パケットが自デバイス宛てであれば、第1の暗号化パケットをさらに復号するステップとを含む。
【0011】
上述の形態において、各デバイスが有しているIPアドレスに基づいて、送出先となるデバイスが決定されてもよい。
【0012】
上述の通信処理方法は、秘密鍵および公開鍵を取得するステップと、ハッシュ関数に従って公開鍵から算出されるハッシュ値に基づいて、自デバイスのIPアドレスを決定するステップと、認証局から公開鍵に関連付けられた電子証明書を取得するステップと、公開鍵および電子証明書を他のデバイスに送信するステップとをさらに含んでいてもよい。
【0013】
上述の通信処理方法は、他のデバイスから公開鍵および公開鍵に関連付けられた電子証明書を受信すると、電子証明書の正当性を判断するステップと、電子証明書が正当であると判断されると、ハッシュ関数に従って公開鍵から算出されるハッシュ値に基づいて、他のデバイスのIPアドレスを決定するステップとをさらに含んでいてもよい。
【0014】
上述の通信処理方法は、他のデバイスを宛先とするパケットが与えられると実行される、当該宛先のデバイスのIPアドレスを探索するステップをさらに含んでいてもよい。
【0015】
上述の通信処理方法は、他のデバイスを宛先とするパケットが与えられると実行される、他のデバイスとの間のセッションを確立するとともに、第1の暗号鍵を決定するステップをさらに含んでいてもよい。また、上述の通信処理方法は、他のデバイスから第2の暗号化パケットを受信すると実行される、第1の暗号化パケットの送出先となるさらに別のデバイスとの間のセッションを確立するとともに、第2の暗号鍵を決定するステップをさらに含んでいてもよい。
【0016】
本開示のさらに別の形態によれば、ネットワークに接続するためのネットワークインターフェイスと、ネットワークインターフェイスに接続された制御部とを含む装置が提供される。制御部は、パケットを他のデバイスに関連付けられた第1の暗号鍵を用いて第1の暗号化パケットに暗号化する処理、および、第1の暗号化パケットを復号する処理を実行可能な第1の暗号化/復号部と、第1の暗号化パケットを第1の暗号化パケットの送出先となるデバイスに関連付けられた第2の暗号鍵を用いて第2の暗号化パケットに暗号化する処理、および、第2の暗号化パケットを復号する処理を実行可能な第2の暗号化/復号部と、他のデバイスを宛先とするパケットが第1の暗号化/復号部および第2の暗号化/復号部においてそれぞれ暗号化されることで生成される第2の暗号化パケットを送出先のデバイスに送信する送信管理部とを含む。送信管理部は、他のデバイスから受信した第2の暗号化パケットを第2の暗号化/復号部において復号することで生成される第1の暗号化パケットが自デバイス宛てであるか否かを判断し、生成された第1の暗号化パケットが自デバイス宛てでなければ、当該第1の暗号化パケットが第2の暗号化/復号部において暗号化されることで生成される第2の暗号化パケットをさらに別のデバイスに送信し、生成された第1の暗号化パケットが自デバイス宛てであれば、当該第1の暗号化パケットを第1の暗号化/復号部においてさらに復号し出力する。
【0017】
本開示のさらに別の形態によれば、ネットワークに接続するためのネットワークインターフェイスを有するコンピュータのための通信処理プログラムが提供される。通信処理プログラムはコンピュータによって実行されると、コンピュータに上述のいずれかの通信処理方法を実行させる。
【発明の効果】
【0018】
本開示によれば、多数のデバイスが存在するネットワークにおいて、各デバイスが自立してデータ通信を実現できる解決策を提供できる。
【図面の簡単な説明】
【0019】
図1】本実施の形態に従うネットワークシステムの全体構成の一例を示す模式図である。
図2】本実施の形態に従うデバイスのハードウェア構成例を示す模式図である。
図3】本実施の形態に従うデバイスのプログラムおよびデータの構成例を示す模式図である。
図4】本実施の形態に従うネットワークシステムにおけるIPアドレスの認証手順を説明するための図である。
図5】本実施の形態に従うネットワークシステムで利用されるIPアドレスに埋め込まれる種類特定情報の一例を示す図である。
図6】本実施の形態に従うネットワークシステムにおいてデバイスが認証済みIPアドレスを提供する処理手順を示すフローチャートである。
図7】本実施の形態に従うネットワークシステムにおけるIPアドレスの通知に係る処理を説明するための図である。
図8】本実施の形態に従うネットワークシステムにおけるIPアドレスの通知に係る処理を説明するための図である。
図9】本実施の形態に従うネットワークシステムにおけるIPアドレスの通知に係る処理手順を示すシーケンスチャートである。
図10】本実施の形態に従うネットワークシステムにおけるデータ通信の概要を説明するための図である。
図11】本実施の形態に従うデバイスにおけるデータ送信に係る機能構成を示す模式図である。
図12】本実施の形態に従うデバイスにおけるデータ送信時の動作例を示す模式図である。
図13】本実施の形態に従うデバイスにおいて送信パケットが発生した場合の処理手順を示すフローチャートである。
図14】本実施の形態に従うデバイスにおいて他のデバイスからパケットを受信した場合の処理手順を示すフローチャートである。
【発明を実施するための形態】
【0020】
本開示に係る実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0021】
<A.ネットワークシステム1の全体構成>
まず、本実施の形態に従うネットワークシステム1の全体構成について説明する。
【0022】
図1は、本実施の形態に従うネットワークシステム1の全体構成の一例を示す模式図である。図1を参照して、インターネットやイントラネットなどの任意のネットワーク2には、複数のデバイス100-1,100-2,100-3,100-4,100-5,・・・(以下、「デバイス100」と総称することもある。)が接続されているとする。一部のデバイス100は、アクセスポイント4との間に確立された無線通信を介して、ネットワーク2に接続されてもよい。あるいは、別の一部のデバイス100は、移動体基地局6との間に確立された無線通信を介して、ネットワーク2に接続されてもよい。
【0023】
このように、ネットワーク2は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線アクセスネットワーク(RAN)、およびインターネットのうちのいずれかを含んでいてもよい。
【0024】
ネットワークに接続されたデバイス100の各々は、ネットワークの「ノード」とみなすことができ、以下の説明においては、デバイス100を「ノード」と称することもある。
【0025】
本実施の形態に従うネットワークシステム1において、デバイス100の間では、後述するような手順に従って、データ通信を実現する。なお、デバイス100間の物理的な接続方法はどのようなものであってもよい。
【0026】
デバイス100は、各々が有しているIPアドレスを用いて他のデバイスとデータ通信を行う機能を有している任意の装置を包含する。デバイス100は、通信装置単体として構成されることもあるし、何らかのモノの一部として、あるいは、何らかのモノに組み込まれて構成されることもある。
【0027】
より具体的には、デバイス100は、例えば、パーソナルコンピュータ、スマートフォン、タブレット、ユーザの身体(例えば、腕や頭など)に装着されるウェアラブルデバイス(例えば、スマートウォッチやARグラスなど)のいずれであってもよい。また、デバイス100は、スマート家電、コネクティッド自動車、工場などに設置された制御機器あるいはその一部であってもよい。
【0028】
本実施の形態に従うネットワークシステム1は、1または複数の認証局200をさらに含む。認証局200の各々は、1または複数のサーバで構成されるコンピュータである。1または複数の認証局200を用いて、後述するような手順によって、各デバイス100が有しているIPアドレスは認証される。その結果、各デバイス100は、認証済みIPアドレスを有することになる。
【0029】
本明細書において、「認証済みIPアドレス」は、通信先あるいは第三者に対して、各デバイス100が保持しているIPアドレスの正当性が保証されている状態を意味する。より具体的には、「認証済みIPアドレス」は、不可逆な暗号学的ハッシュ関数によって生成されるとともに、認証局によって直接的または間接的に認証されたIPアドレスであることを意味する(詳細については後述する)。このような「認証済みIPアドレス」を用いることで、各デバイス100がデータ通信に利用するIPアドレスが偽装されていないことを保証できる。
【0030】
その結果、ネットワークシステム1に含まれる任意のデバイス100は、各デバイス100が有しているIPアドレスに基づいて一意に特定されることになる。すなわち、各デバイスは、各デバイスが有しているIPアドレスに基づいて、データ送信の宛先や送出先となるデバイスを決定できる。
【0031】
IPアドレスは、インターネットに接続されたデバイス100間のデータ通信にも用いることができるグローバルIPアドレスが想定されるが、特定のネットワーク内だけで利用されるプライベートIPアドレスであってもよい。
【0032】
IPアドレスは、バージョンによって、アドレスを構成するビット数が異なっている。現在制定されているIPv4(Internet Protocol Version 4)においては、32ビットのアドレス区間が規定されており、現在制定されているIPv6(Internet Protocol Version 6)においては、128ビットのアドレス区間が規定されている。本実施の形態においては、IPv6に従うIPアドレスを主として説明する。但し、より多くのビット数で規定されるネットワークアドレス、あるいは、より少ないビット数で規定されるネットワークアドレスにも本開示は適用可能である。
【0033】
<B.デバイス100の構成例>
次に、本実施の形態に従うネットワークシステム1に用いられるデバイス100のハードウェアおよびソフトウェアの構成例について説明する。
【0034】
図2は、本実施の形態に従うデバイス100のハードウェア構成例を示す模式図である。図2を参照して、デバイス100は、主たるコンポーネントとして、処理回路(processing circuitry)である制御部110とを含む。
【0035】
制御部110は、本実施の形態に従う機能の提供および処理の実行を実現するための演算主体である。制御部110は、図2に示すようなプロセッサおよびメモリを用いて、メモリに格納されたコンピュータ可読命令(computer readable instructions)(図3に示すようなOS(Operating System)および通信処理プログラム)をプロセッサが実行するように構成されてもよい。あるいは、コンピュータ可読命令に相当する回路が組み込まれたASIC(Application Specific Integrated Circuit)などのハードワイヤード回路を用いて制御部110を実現してもよい。さらにあるいは、FPGA(field-programmable gate array)上にコンピュータ可読命令に相当する回路を実現することで制御部110を実現してもよい。また、プロセッサおよびメモリ、ASIC、FPGAなどを適宜組み合わせて制御部110を実現してもよい。
【0036】
図2に示すようなプロセッサおよびメモリを用いた構成において、制御部110は、プロセッサ102と、主メモリ104と、ストレージ106と、ROM(Read Only Memory)108とを含む。
【0037】
プロセッサ102は、コンピュータ可読命令を順次読出して実行する演算回路である。プロセッサ102は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などで構成される。複数のプロセッサ102を用いて制御部110を実現してもよいし(マルチプロセッサの構成)、複数のコアを有するプロセッサを用いて制御部110を実現してもよい(マルチコアの構成)。
【0038】
主メモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置である。プロセッサ102は、ストレージ106またはROM108に格納された各種プログラムのうち、指定されたプログラムを主メモリ104上に展開し、主メモリ104と協働することで、本実施の形態に従う各種処理を実現する。
【0039】
ストレージ106は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリなどの不揮発性記憶装置である。ストレージ106には、プロセッサ102で実行される各種プログラムや後述するような各種データが格納されている。
【0040】
ROM108は、プロセッサ102で実行される各種プログラムや後述するような各種データを固定的に格納する。
【0041】
図2に示すようなプロセッサ102がメモリに格納されたコンピュータ可読命令を実行する構成において、メモリは、ストレージ106およびROM108に相当する。
【0042】
ここで、デバイス100のメモリに格納されるプログラムおよびデータの一例について説明する。
【0043】
図3は、本実施の形態に従うデバイス100のプログラムおよびデータの構成例を示す模式図である。図3を参照して、デバイス100のメモリ(ストレージ106および/またはROM108)には、例えば、コンピュータ可読命令を含むプログラムとして、OS160と、通信処理プログラム170と、各種アプリケーション300とが格納される。
【0044】
OS160は、デバイス100で実行される処理を実現するための基本的な機能を提供するプログラムである。通信処理プログラム170は、主として、本実施の形態に従う機能の提供および処理の実行を実現するためのプログラムである。なお、通信処理プログラム170は、OS160が提供するライブラリなどを利用して、本実施の形態に従う機能の提供および処理の実行を実現することもある。
【0045】
各種アプリケーション300は、デバイス100が提供する各種機能を実現するためのプログラムであり、ユーザが任意にインストールすることができる。典型的には、各種アプリケーション300は、通信処理プログラム170に提供されるデータ通信機能を利用した各種処理を提供する。
【0046】
また、デバイス100のメモリ(ストレージ106および/またはROM108)には、例えば、本実施の形態に従う機能の提供および処理の実行の実現に必要なデータとして、秘密鍵172と、公開鍵174と、電子証明書176とが格納される。秘密鍵172および公開鍵174は、任意の暗号化/復号アルゴリズムに従って生成される、いわゆる鍵ペアである。秘密鍵172は、他のデバイスとの暗号化通信に用いられる。公開鍵174は、後述するような手順に従って各デバイス100のIPアドレスの決定に用いられる。電子証明書176は、認証局200によって公開鍵174に対して発行されるものであり、デバイス100のIPアドレスの正当性を担保するためのものである。通常、電子証明書176は、認証局200の秘密鍵を用いて、各デバイス100の公開鍵174から算出されたハッシュ値(電子署名)などを含む。電子証明書176を受信したデバイス100は、認証局200の公開鍵を用いて、電子証明書176および電子証明書176に関連付けられた公開鍵174の正当性を確認する。
【0047】
鍵ペア(秘密鍵172および公開鍵174)の生成、電子証明書176の取得、およびこれらのデータの利用手順などについては後述する。
【0048】
なお、ストレージ106およびROM108の両方を設ける必要はなく、実装形態に応じて、いずれか一方のみを設けるようにしてもよい。また、ストレージ106およびROM108の両方を設ける場合には、例えば、鍵ペア(秘密鍵172および公開鍵174)についてはROM108に格納して、秘匿性を高めるようにしてもよい。
【0049】
再度図2を参照して、デバイス100は、デバイス100をネットワークに接続するためのネットワークインターフェイス120をさらに含む。ネットワークインターフェイス120は、ネットワークを介して他のデバイスとデータ通信を行う。
【0050】
ネットワークインターフェイス120は、例えば、イーサネット(登録商標)ポート、USB(Universal Serial Bus)ポート、IEEE1394などのシリアルポート、レガシーなパラレルポートといった有線接続端子を含む。あるいは、ネットワークインターフェイス120は、デバイス、ルータ、移動体基地局などと無線通信するための処理回路およびアンテナなどを含んでもよい。ネットワークインターフェイス120が対応する無線通信は、例えば、Wi-Fi(登録商標)、Bluetooth(登録商標)、ZigBee(登録商標)、LPWA(Low Power Wide Area)、GSM(登録商標)、W-CDMA、CDMA200、LTE(Long Term Evolution)、第5世代移動通信システム(5G)のいずれであってもよい。
【0051】
デバイス100は、オプショナルなコンポーネントとして、表示部130と、入力部140と、メディアインターフェイス150とを含んでいてもよい。
【0052】
表示部130は、プロセッサ102での処理結果などを外部へ提示するためのコンポーネントである。表示部130は、例えば、LCD(Liquid Crystal Display)や有機EL(Electro-Luminescence)ディスプレイなどであってもよい。また、表示部130は、ユーザの頭部に装着されるヘッドマウントディスプレイであってもよいし、画像をスクリーン上に投影するプロジェクターであってもよい。
【0053】
入力部140は、デバイス100を操作するユーザの入力操作を受け付けるためのコンポーネントである。入力部140は、例えば、キーボード、マウス、表示部130上に配置されたタッチパネル、デバイス100の筐体に配置された操作ボタンなどであってもよい。
【0054】
メディアインターフェイス150は、各種プログラム(コンピュータ可読命令)および/または各種データが格納された非一過性(non-transitory)のメディア152から各種プログラムおよび/または各種データを読み出す。
【0055】
メディア152は、例えば、DVD(Digital Versatile Disc)などの光学メディア、USBメモリなどの半導体メディアなどであってもよい。メディアインターフェイス150は、メディア152の種類に応じた構成が採用される。メディアインターフェイス150により読み出された各種プログラムおよび/または各種データは、ストレージ106などに格納されてもよい。
【0056】
なお、メディア152を介して各種プログラムおよび/または各種データをデバイス100にインストールするのではなく、ネットワーク上の配信サーバから必要なプログラムおよびデータをデバイス100にインストールするようにしてもよい。この場合には、ネットワークインターフェイス120を介して、必要なプログラムおよびデータが取得される。
【0057】
上述したように、表示部130、入力部140、メディアインターフェイス150は、オプショナルなコンポーネントであるため、例えば、USBなどの任意のインターフェイスを介してデバイス100の外部から接続されるようにしてもよい。
【0058】
本実施の形態に従う機能の提供および処理の実行を実現するのは制御部110であり、本願の技術的範囲は、少なくとも、制御部110を実現するためのハードウェアおよび/またはソフトウェアを包含する。ハードウェアは、上述したように、プロセッサおよびメモリからなる構成だけではなく、ASICなどを用いたハードワイヤード回路やFPGAを用いた構成を含み得る。すなわち、制御部110は、汎用コンピュータにプログラムをインストールすることで実現され得るし、専用のチップとして実現することもできる。
【0059】
また、プロセッサで実行されるソフトウェアは、メディア152を介して流通するものだけではなく、配信サーバを介して適宜ダウンロードされるものも含み得る。
【0060】
なお、本実施の形態に従う機能の提供および処理の実行を実現するための構成は、図2に示す制御部110に限られず、実現される時代に応じた任意の技術を用いて実装できる。
【0061】
<C.認証済みIPアドレス>
次に、各デバイス100に対して認証済みIPアドレスを提供するための処理などについて説明する。
【0062】
(c1:IPアドレスの決定処理)
本実施の形態に従うネットワークシステム1においては、典型的には、認証済みIPアドレスを用いて、各デバイス100のIPアドレスを認証する。一例として、公開鍵暗号基盤(PKI:public key infrastructure)を用いて、各デバイス100のIPアドレスを認証してもよい。
【0063】
図4は、本実施の形態に従うネットワークシステム1におけるIPアドレスの認証手順を説明するための図である。なお、図4中の「S1」~「S4」などの符号は、図6に示すステップ番号に対応している。
【0064】
図4を参照して、デバイス100は、秘密鍵172および公開鍵174からなる鍵ペアを有している。予め定められたハッシュ関数180に公開鍵174を入力することでハッシュ値178を算出し、その算出されたハッシュ値178の全部または一部を用いて、デバイス100のIPアドレス190として用いる。
【0065】
このようなIPアドレス190の決定処理に伴い、デバイス100は、公開鍵174を認証局200へ送信し、認証局200が公開鍵174に対して発行する電子証明書176を紐付ける。デバイス100は、自デバイスの公開鍵174および電子証明書176を他のデバイスへ送信する。他のデバイスは、デバイス100が公開する公開鍵174および電子証明書176に基づいて、デバイス100のIPアドレス190の正当性を確認する。IPアドレス190の正当性が確認されると、正当性が確認されたIPアドレス190を用いてデータ通信を開始する。自デバイスおよび他のデバイスは、互いに直接通信を行うことができるが、直接通信の処理に加えて、認証局200における問い合わせの処理を含むようにしてもよい。
【0066】
このように、本実施の形態に従うネットワークシステム1においては、IPアドレス190自体を認証することができ、このような認証済みIPアドレス190をデバイス自体が保持することで、各デバイスに静的または動的に割り当てられたIPアドレスを用いることなく、自立的なネットワークを構築できる。
【0067】
以下、本実施の形態に従うネットワークシステム1における認証済みIPアドレスを提供するための処理の詳細について説明する。
【0068】
鍵ペアである秘密鍵172および公開鍵174は、デバイス100自身が作成してもよいし、外部から提供されて予めデバイス100に格納されていてもよい。外部から提供される場合には、デバイス100は秘密鍵172のみを取得し、公開鍵174については自身で生成するようにしてもよい。
【0069】
鍵ペアである公開鍵174の生成方法の一例としては、乱数発生器が発生する所定長さのビット列(例えば、512ビット)を秘密鍵172として用いるとともに、公知の暗号アルゴリズム(例えば、楕円曲線暗号アルゴリズム)に従って秘密鍵172から所定長さのビット列(例えば、256ビット)からなる公開鍵174を生成してもよい。なお、デバイス100自身が鍵ペアを生成する場合には、乱数発生器は、OS160が提供する機能を利用して実現してもよいし、ASICなどのハードワイヤード回路を用いて実現してもよい。
【0070】
ハッシュ関数180は、公知の不可逆な暗号学的ハッシュ関数(例えば、BLAKE)を用いることができる。ハッシュ関数180は、所定長さのビット列(例えば、256ビット)からなるハッシュ値178を算出する。
【0071】
ハッシュ関数180には、公開鍵174だけではなく、任意のキーワードを入力するようにしてもよい。任意のキーワードとして、所定の組織に関連付けられたメッセージを用いてもよい。所定の組織に関連付けられたメッセージとして、当該所定の組織が有している商標の名称を含むメッセージを用いてもよい。例えば、所定の組織が保有する登録された商標の名称(例えば、「connectFree」)をハッシュ関数180に入力するキーワードとして用いるようにしてもよい。このような実装方式を採用することで、所定の組織以外の第三者が、当該所定の組織の許諾なしに本実施の形態に従うネットワークシステム1および関連する方法やプログラムなどを実施することを防止できる。
【0072】
ハッシュ関数180により算出されるハッシュ値178の全部または一部がIPアドレス190として用いられる。例えば、256ビット(16進数表現で64桁)のハッシュ値178が算出される場合には、64桁のハッシュ値178のうち任意の32桁(例えば、前半32桁)をIPv6に対応するIPアドレス190(128ビット)として決定してもよい。あるいは、64桁のハッシュ値178のうち前半8桁をIPv4に対応するIPアドレス190(32ビット)として決定してもよい。
【0073】
あるいは、IPv6に対応するIPアドレス190(128ビット)を考慮して、ハッシュ関数180から128ビットのハッシュ値178を算出するようにしてもよい。この場合には、算出されるハッシュ値178の全部をIPv6に対応するIPアドレス190(128ビット)として決定できる。
【0074】
本実施の形態によれば、デバイス100の公開鍵174に基づいてデバイス100に固有のIPアドレス190を決定できる。このように、デバイス100によって決定されたIPアドレス190を用いてデバイス100をインターネットなどのネットワークに接続させることができる。また、デバイス100は、インターネットサービスプロバイダ(ISP)などのグローバルIPアドレスを管理するサービス事業者(サーバ)が存在しなくても、自身が決定したIPアドレス190を用いてデータ通信を行うことができる。また、デバイス100は、アクセスポイントなどに実装されるDHCP(Dynamic Host Configuration Protocol)サーバなどのプライベートIPアドレスを管理するサーバが存在しなくても、自身が決定したIPアドレス190を用いてインターネットなどのグルーバルネットワークに接続してデータ通信を行うことができる。したがって、インターネットなどのネットワークへの接続についてのユーザ体験およびユーザの利便性を向上できる。
【0075】
(c2:固有文字列)
デバイス100が決定するIPアドレス190は、本実施の形態に従う処理手順に従って決定されたものであることを特定できるようにしてもよい。このような特定を行うために、例えば、IPアドレス190に予め定められた特定用の固有値(固有文字列)を含めるようにしてもよい。すなわち、決定されるIPアドレスは、予め定められた特定用の固有値(固有文字列)を含んでいてもよい。
【0076】
一例として、16進数表現のIPアドレス190の先頭2桁(先頭から1桁目および2桁目)を予め定められた固有文字列(例えば、「FC」)に固定してもよい。通常、ハッシュ関数180は一方向性関数であるので、IPアドレス190から公開鍵174を逆算することはできない。そのため、決定されるIPアドレス190が所定条件(この場合には、先頭2桁が予め定められた固有値になること)を満たすまで、乱数発生器を用いて、秘密鍵172および公開鍵174を繰り返し生成してもよい。すなわち、公開鍵174は、公開鍵174からハッシュ関数に従って算出されるハッシュ値に基づいて決定されるIPアドレス190が、予め定められたフォーマットに合致するように決定されてもよい。
【0077】
このように、IPアドレス190に予め定められた特定用の固有値(例えば、先頭2桁が「FC」)を含めることで、第三者は、デバイス100のIPアドレス190がデバイス100自身によって決定されたものであるか否かを判断できる。
【0078】
(c3:種類特定情報)
デバイス100が決定するIPアドレス190には、デバイス100の種類を特定できる情報を含めてもよい。このような特定を行うために、例えば、IPアドレス190にデバイス100の種類に応じた値を含めるようにしてもよい。すなわち、決定されるIPアドレス190は、そのIPアドレス190を決定したデバイス100の種類に応じた値を含んでいてもよい。
【0079】
一例として、16進数表現のIPアドレス190の先頭から3桁目および4桁目にデバイス100の種類に応じた値(種類特定情報)を埋め込んでもよい。
【0080】
図5は、本実施の形態に従うネットワークシステム1で利用されるIPアドレスに埋め込まれる種類特定情報の一例を示す図である。図5に示される種類特定情報は、各デバイス100の制御部110のROM108(図2参照)などに予め格納されていてもよい。一例として、図5に示すようなデバイスの種類に応じた値を用いることができる。
【0081】
図5に示すように、例えば、デバイス100の種類がパーソナルコンピュータである場合には、IPアドレス190の先頭から3桁目および4桁目には、パーソナルコンピュータを示す値「00」が設定される。
【0082】
上述したように、通常、ハッシュ関数180は一方向性関数であるので、IPアドレス190から公開鍵174を逆算することはできない。そのため、決定されるIPアドレス190が所定条件(この場合には、先頭から3桁目および4桁目がデバイス100の種類を示す値になること)を満たすまで、乱数発生器を用いて、秘密鍵172および公開鍵174を繰り返し生成してもよい。すなわち、公開鍵174は、公開鍵174からハッシュ関数に従って算出されるハッシュ値に基づいて決定されるIPアドレス190が、予め定められたフォーマットに合致するように決定されてもよい。
【0083】
このように、IPアドレス190にデバイス100の種類を示す値を含めることで、第三者は、デバイス100が決定したIPアドレス190から当該デバイス100の種類を特定できる。
【0084】
(c4:公開鍵174の登録および電子証明書176の取得)
次に、公開鍵174の登録および電子証明書176の取得について説明する。
【0085】
デバイス100は、公開鍵174の正当性を証明するための電子証明書176を認証局200から取得する。電子証明書176を取得する手順としては、デバイス100から公開鍵174を認証局200へ送信して登録するとともに、登録された公開鍵174に関連付けられた電子証明書176を認証局200から取得する。
【0086】
より具体的には、デバイス100(制御部110)は、ネットワークを介して、公開鍵174および電子証明書の発行要求(以下、「証明書署名要求」とも称す。)を認証局200へ送信する。認証局200は、デバイス100から受信した証明書署名要求に応答して、公開鍵174を登録するとともに、登録した公開鍵174に関連付けられた電子証明書176を発行する。そして、認証局200は、ネットワークを介して、電子証明書176をデバイス100へ送信する。
【0087】
典型的には、電子証明書176は、電子証明書176の所有者情報(この例では、デバイス100)、電子証明書176の発行者情報(この例では、認証局200)、発行者のデジタル署名、および電子証明書176の有効期限などを含む。
【0088】
認証局200は、所定の組織によって運営されていてもよいし、所定の組織によって運営されているルート認証局に関連付けられた中間認証局であってもよい。また、公開鍵174の登録および公開鍵174に関連付けられた電子証明書176の発行にあたっては、所定の組織に対して所定の手数料および/または維持料が必要であってもよい。
【0089】
本実施の形態によれば、公開鍵174の登録および公開鍵174の取得を通じて、公開鍵174が認証局200によって直接的に認証されることで、公開鍵174に基づいて決定されるIPアドレス190も認証局200によって間接的に認証される。このような認証局200の認証によって、デバイス100は、認証済みIPアドレス190を用いて、ネットワークを介してデータ通信を実現できる。
【0090】
なお、公開鍵174に関連付けられた電子証明書176には、秘匿性を向上させるために、デバイス100の属性に関連する情報(以下、「属性情報」とも称する。)を含んでもよい。デバイス100の属性情報は、例えば、デバイス100のOS160や通信処理プログラム170のバージョン情報、デバイス100を構成するハードウェア(例えば、プロセッサやストレージなど)のシリアル番号などを用いることができる。この場合、デバイス100は、公開鍵174および証明書署名要求を送信する際に、デバイス100の属性情報を認証局200へ送信してもよい。なお、電子証明書176に含ませるデバイス100の属性情報は、公知の不可逆な暗号学的ハッシュ関数などによって暗号化されてもよい。
【0091】
このように、デバイス100の属性情報を電子証明書176に含ませることで、デバイス100自身からの証明書署名要求に応答して、電子証明書176が発行されたことを認証できる。すなわち、デバイス100以外のデバイスがデバイス100になりすまして、デバイス100の公開鍵174および電子証明書176を用いることをより確実に防止できる。
【0092】
(c5:処理手順)
次に、各デバイス100における認証済みIPアドレスを提供するための処理手順について説明する。
【0093】
図6は、本実施の形態に従うネットワークシステム1においてデバイス100が認証済みIPアドレスを提供する処理手順を示すフローチャートである。図6に示される処理手順は、各デバイス100においてそれぞれ実行され、図6に示す各ステップは、各デバイス100の制御部110によって実行される。
【0094】
図6を参照して、デバイス100は、任意のアルゴリズムに従って生成される鍵ペア(秘密鍵172および公開鍵174)を取得する(ステップS1)。この鍵ペアは、デバイス100自身が生成してもよいし、デバイス100が外部から取得してもよい。あるいは、デバイス100は秘密鍵172のみを外部から取得して、公開鍵174を内部で生成してもよい。
【0095】
続いて、デバイス100は、予め定められたハッシュ関数180に公開鍵174を入力することでハッシュ値178を算出し、その算出されたハッシュ値178の全部または一部からデバイス100のIPアドレス190を決定する(ステップS2)。すなわち、デバイス100は、ハッシュ関数180に従って公開鍵174から算出されるハッシュ値178に基づいて、自デバイスのIPアドレスを決定する。
【0096】
なお、IPアドレス190に固有文字列(例えば、IPアドレス190の先頭から1桁目および2桁目)および/または種類特定情報(例えば、IPアドレス190の先頭から3桁目および4桁目)が含まれるように、適切な鍵ペア(秘密鍵172および公開鍵174)が生成されてもよい。
【0097】
また、デバイス100は、公開鍵174および電子証明書の発行要求(証明書署名要求)を認証局200へ送信する(ステップS3)。認証局200は、デバイス100から受信した証明書署名要求に応答して、公開鍵174を登録するとともに、登録した公開鍵174に関連付けられた電子証明書176を発行する。そして、認証局200は、ネットワークを介して電子証明書176をデバイス100へ送信する。すると、デバイス100は、認証局200からの電子証明書176を受信して格納する(ステップS4)。
【0098】
このように、デバイス100は、認証局から公開鍵174に関連付けられた電子証明書176を取得する。
【0099】
なお、ステップS2の処理と、ステップS3およびS4の処理との実行順序は問わない。
【0100】
<D.データ通信処理>
次に、認証済みIPアドレスを用いたデバイス100間のデータ通信処理について説明する。
【0101】
(d1:IPアドレスの通知)
まず、本実施の形態に従うネットワークシステム1におけるデバイス100間のIPアドレスの通知に係る処理について説明する。
【0102】
図7および図8は、本実施の形態に従うネットワークシステム1におけるIPアドレスの通知に係る処理を説明するための図である。図7および図8には、3つのデバイス100-1,100-2,100-3の間でIPアドレスを交換する例を示す。なお、2つのデバイス100の間でも同様の処理が可能であるし、より多くのデバイス100の間でも同様の処理が可能である。
【0103】
図7および図8に示す状態において、デバイス100-1,100-2,100-3の各々は、上述したような手順に従って、デバイス100-1,100-2,100-3は、IPアドレス190-1,190-2,190-3をそれぞれ決定しており、また、認証局200への公開鍵174-1,174-2,174-3の登録および認証局200からの電子証明書176-1,176-2,176-3の取得もそれぞれ済んでいるものとする。
【0104】
図7および図8に示すように、各デバイス100は、定期的またはイベント毎に、各デバイスが有している公開鍵174および公開鍵174に関連付けられた電子証明書176を送信(ブロードキャスト)する。すなわち、各デバイス100は、公開鍵174および電子証明書176を他のデバイスに送信する。なお、公開鍵174が電子証明書176に含まれる場合には、電子証明書176のみを送信するようにしてもよい。
【0105】
図7には、一例として、デバイス100-1が公開鍵174-1および公開鍵174-1に関連付けられた電子証明書176-1を送信(ブロードキャスト)する例を示す。図7に示す例では、デバイス100-2および100-3がデバイス100-1により送信された公開鍵174-1および電子証明書176-1を受信できたとする。すると、デバイス100-2および100-3は、電子証明書176-1が正当であるか否かを判断した上で、正当であると判断されると、関連付けられた公開鍵174-1に基づいてデバイス100-1のIPアドレス190-1を決定し、コネクションテーブル194-2および194-3にそれぞれ登録する。
【0106】
ここで、コネクションテーブルは、データ通信を行うために各デバイス100の情報を含むものであり、各デバイス100は、コネクションテーブルを参照して、宛先のデバイス100のIPアドレスなどを特定するとともに、必要なセッションを確立する。ここで、「セッション」とは、パケットなどのデータの送受信に先立って、必要なデータをやり取りすることで構成される、論理的な通信路を意味する。
【0107】
より具体的には、デバイス100-2は、まず、デバイス100-1からブロードキャストされた電子証明書176-1が正当であるか否かを判断する。この正当性を判断する処理においては、電子証明書176-1の完全性が検証される。
【0108】
完全性が検証する処理の一例として、まず、デバイス100-2は、電子証明書176-1の所有者情報、電子証明書176-1の発行者情報、発行者のデジタル署名の存在を確認する。そして、デバイス100-2は、電子証明書176-1が有効期限内であるか否かを判断する。さらに、デバイス100-2は、電子証明書176-1の発行元が信頼できるものであるか否かを判断する。特に、電子証明書176-1が中間認証局により発行されている場合には、デバイス100-2は、電子証明書176-1を発行した中間認証局に関連付けられたルート認証局を特定するとともに、当該特定されたルート認証局が信頼できるものであるか否かを判断する。例えば、特定されたルート認証局がデバイス100-1に格納されている1または複数のルート認証局のいずれかと一致する場合には、電子証明書176-1の発行元が信頼できると判断する。
【0109】
以上のような判断処理にパスすると、デバイス100-2は、デバイス100-1からブロードキャストされた電子証明書176-1が正当であると決定する。すると、デバイス100-2は、予め定められたハッシュ関数180に、デバイス100-1からブロードキャストされた公開鍵174-1を入力することでハッシュ値178-1を算出し、その算出されたハッシュ値178-1の全部または一部を用いて、デバイス100-1のIPアドレス190-1を決定する。ここで、デバイス100-1および100-2は、共通のハッシュ関数180を有しているものとする。また、デバイス100-1および100-2の間において、ハッシュ値178-1からIPアドレス190-1を決定する処理も共通であるとする。
【0110】
以上のような処理によって、デバイス100-2は、デバイス100-1のIPアドレス190-1を決定できる。そして、デバイス100-2は、決定したデバイス100-1のIPアドレス190-1のエントリをコネクションテーブル194-2に追加する。なお、IPアドレス190-1に関連付けて公開鍵174-1を登録してもよい。
【0111】
また、デバイス100-3においてもデバイス100-2と同様の処理が実行され、デバイス100-3のコネクションテーブル194-3には、決定したデバイス100-1のIPアドレス190-1のエントリをコネクションテーブル194-2に追加する。なお、IPアドレス190-1に関連付けて公開鍵174-1を登録してもよい。
【0112】
図7に示すような処理によって、デバイス100-2およびデバイス100-3は、デバイス100-1のIPアドレス190-1を取得できる。
【0113】
図8には、一例として、デバイス100-2が公開鍵174-2および公開鍵174-2に関連付けられた電子証明書176-2を送信(ブロードキャスト)する例を示す。図8に示す例では、デバイス100-1および100-3がデバイス100-2により送信された公開鍵174-2および電子証明書176-2を受信できたとする。すると、デバイス100-1および100-3は、電子証明書176-2が正当であるか否かを判断した上で、正当であると判断されると、関連付けられた公開鍵174-2に基づいてデバイス100-2のIPアドレス190-2を決定し、コネクションテーブル194-1および194-3にそれぞれ登録する。
【0114】
デバイス100-1および100-3において実行される一連の処理は、図7を参照して説明した処理と同様であるので、詳細な説明は繰り返さない。図8に示すような処理によって、デバイス100-1およびデバイス100-3は、デバイス100-2のIPアドレス190-2を取得できる。
【0115】
さらに、デバイス100-3が公開鍵174-3および公開鍵174-3に関連付けられた電子証明書176-3を送信(ブロードキャスト)してもよい。デバイス100-1および100-2がデバイス100-3により送信された公開鍵174-3および電子証明書176-3を受信できたとする。すると、デバイス100-1および100-2は、電子証明書176-3が正当であるか否かを判断した上で、正当であると判断されると、関連付けられた公開鍵174-3に基づいてデバイス100-3のIPアドレス190-3を決定し、コネクションテーブル194-1および194-2にそれぞれ登録する。このような処理によって、デバイス100-1およびデバイス100-2は、デバイス100-3のIPアドレス190-3を取得できる。
【0116】
図9は、本実施の形態に従うネットワークシステム1におけるIPアドレスの通知に係る処理手順を示すシーケンスチャートである。図9には、図7および図8に対応させて、3つのデバイス100-1,100-2,100-3における処理手順を示す。
【0117】
デバイス100-1は、公開鍵174-1および公開鍵174-1に関連付けられた電子証明書176-1を送信(ブロードキャスト)する(シーケンスSQ10)。
【0118】
デバイス100-2は、デバイス100-1により送信された公開鍵174-1および電子証明書176-1を受信すると、電子証明書176-1の正当性を判断する(シーケンスSQ11)。電子証明書176-1が正当であると判断されると、デバイス100-2は、公開鍵174-1に基づいてデバイス100-1のIPアドレス190-1を決定し(シーケンスSQ12)、決定したデバイス100-1のIPアドレス190-1をコネクションテーブル194-2に登録する(シーケンスSQ13)。
【0119】
同様に、デバイス100-3は、デバイス100-1により送信された公開鍵174-1および電子証明書176-1を受信すると、電子証明書176-1の正当性を判断する(シーケンスSQ14)。電子証明書176-1が正当であると判断されると、デバイス100-3は、公開鍵174-1に基づいてデバイス100-1のIPアドレス190-1を決定し(シーケンスSQ15)、決定したデバイス100-1のIPアドレス190-1をコネクションテーブル194-3に登録する(シーケンスSQ16)。
【0120】
また、デバイス100-2は、公開鍵174-2および公開鍵174-2に関連付けられた電子証明書176-2を送信(ブロードキャスト)する(シーケンスSQ20)。
【0121】
デバイス100-1は、デバイス100-2により送信された公開鍵174-2および電子証明書176-2を受信すると、電子証明書176-2の正当性を判断する(シーケンスSQ21)。電子証明書176-2が正当であると判断されると、デバイス100-1は、公開鍵174-2に基づいてデバイス100-2のIPアドレス190-2を決定し(シーケンスSQ22)、決定したデバイス100-2のIPアドレス190-2をコネクションテーブル194-1に登録する(シーケンスSQ23)。
【0122】
同様に、デバイス100-3は、デバイス100-2により送信された公開鍵174-2および電子証明書176-2を受信すると、電子証明書176-2の正当性を判断する(シーケンスSQ24)。電子証明書176-2が正当であると判断されると、デバイス100-3は、公開鍵174-2に基づいてデバイス100-2のIPアドレス190-2を決定し(シーケンスSQ25)、決定したデバイス100-2のIPアドレス190-2をコネクションテーブル194-3に登録する(シーケンスSQ26)。
【0123】
また、デバイス100-3は、公開鍵174-3および公開鍵174-3に関連付けられた電子証明書176-3を送信(ブロードキャスト)する(シーケンスSQ30)。
【0124】
デバイス100-1は、デバイス100-3により送信された公開鍵174-3および電子証明書176-3を受信すると、電子証明書176-3の正当性を判断する(シーケンスSQ31)。電子証明書176-3が正当であると判断されると、デバイス100-1は、公開鍵174-3に基づいてデバイス100-3のIPアドレス190-3を決定し(シーケンスSQ32)、決定したデバイス100-3のIPアドレス190-3をコネクションテーブル194-1に登録する(シーケンスSQ33)。
【0125】
同様に、デバイス100-2は、デバイス100-3により送信された公開鍵174-3および電子証明書176-3を受信すると、電子証明書176-3の正当性を判断する(シーケンスSQ34)。電子証明書176-3が正当であると判断されると、デバイス100-2は、公開鍵174-3に基づいてデバイス100-3のIPアドレス190-3を決定し(シーケンスSQ35)、決定したデバイス100-3のIPアドレス190-3をコネクションテーブル194-2に登録する(シーケンスSQ36)。
【0126】
なお、シーケンスSQ10~SQ16の処理と、シーケンスSQ20~SQ26の処理と、シーケンスSQ30~SQ36の処理とは、任意の順序あるいは並列的に実行され得る。
【0127】
このように、各デバイス100は、他のデバイスから公開鍵174および公開鍵174に関連付けられた電子証明書176を受信すると、電子証明書176の正当性を判断する(シーケンスSQ11,SQ14,SQ21,SQ24,SQ31,SQ34)。そして、各デバイス100は、電子証明書176が正当であると判断されると、ハッシュ関数に従って公開鍵174から算出されるハッシュ値に基づいて、他のデバイスのIPアドレスを決定する(シーケンスSQ12,SQ15,SQ22,SQ25,SQ32,SQ35)。
【0128】
上述したように、本実施の形態に従うネットワークシステム1においては、他のデバイス100から送信された電子証明書176が正当であると判断されることを条件に、電子証明書176に関連付けられた公開鍵174に基づいて、当該他のデバイス100のIPアドレス190を決定する。公開鍵174に関連付けられた電子証明書176が正当であるとの判断を条件に、公開鍵174に基づいてIPアドレス190を決定するので、公開鍵174の正当性およびIPアドレス190の正当性を保証できる。したがって、デバイス100の間で確実なデータ通信を実現できる。
【0129】
また、本実施の形態に従うネットワークシステム1においては、各デバイス100がブロードキャストする公開鍵174に基づいて、各デバイス100のIPアドレスを知ることができるので、IPアドレスを管理するサーバが存在しなくても、デバイス100同士が直接接続し得る。特に、バーチャルプライベートネットワーク(VPN)サーバなどが存在しなくても、デバイス100同士で秘匿性の確保された通信を実現できるため、VPNサーバを維持するためのコストや消費電力を削減できる。
【0130】
(d2:データ通信)
次に、デバイス100間のデータ通信に係る処理について説明する。本実施の形態に従うネットワークシステム1においては、各デバイス100がルーティング機能およびデータ転送機能を有しており、このような機能によって、自立的にデータ通信を行うことができるネットワークを実現できる。
【0131】
また、本実施の形態に従うネットワークシステム1においては、データ通信されるデータ(典型的には、パケットまたはフレーム)は、セッション毎に設定される暗号鍵により暗号化される。そのため、データ通信の秘匿性を担保できる。
【0132】
まず、本実施の形態に従うネットワークシステム1におけるデータ通信の概要について説明する。以下の説明では、典型例として、データは「パケット」の形で送信されるものとする。
【0133】
図10は、本実施の形態に従うネットワークシステム1におけるデータ通信の概要を説明するための図である。図10には、一例として、3つのデバイス100-1,100-2,100-3を含むネットワークにおけるデータ送信方法を説明する。
【0134】
図10において、一例として、デバイス100-1とデバイス100-2との間は直接的に通信が可能であり、デバイス100-2とデバイス100-3との間は直接的に通信が可能であるとする。但し、デバイス100-1とデバイス100-3との間は、直接的な通信はできない状態であるとする。ここで、直接的な通信が可能な状態とは、典型的には、ノード間が1ホップ以内に存在しているような接続状態を意味する。このような接続状態において、デバイス100-1からデバイス100-3に向けてパケットを送信する処理について説明する。
【0135】
本実施の形態に従うネットワークシステム1においては、2段階のセッションが確立される。より具体的には、2段階のセッションは、1段階目のセッションである隣接ノードセッション12と、2段階目のセッションであるエンドトゥエンドセッション14とを含む。
【0136】
隣接ノードセッション12は、直接的な通信が可能なデバイス100間に確立されるセッションである。図10に示す例では、デバイス100-1とデバイス100-2との間、および、デバイス100-2とデバイス100-3との間に隣接ノードセッション12が確立される。一方、エンドトゥエンドセッション14は、送信元のデバイス100と宛先のデバイス100との間に確立されるセッションである。
【0137】
隣接ノードセッション12およびエンドトゥエンドセッション14の各々において、パケットはそれぞれ暗号化される。典型的には、各セッションが確立される過程において、ノード間で使用される暗号鍵が交換ないし共有される。その結果、エンドトゥエンドセッション14においては、デバイス100-1とデバイス100-3との間で交換ないし共有された暗号鍵に基づいて、送信すべきパケット(以下、「送信パケット20」とも称す。)を暗号化して得られる暗号化パケット22がやり取りされる。送信パケット20は、宛先などの情報を含むヘッダ部20Hおよびデータ本体部20Dからなる。暗号化パケット22は、送信パケット20全体を暗号化した結果をデータ本体部22Dとして含み、さらに宛先などの情報を含むヘッダ部22Hが付加されている。このようなデータ構造を採用することで、データ本体部22Dに含まれる送信パケット20の秘匿性を維持しつつ、宛先のデバイスまでパケット転送を実現できる。
【0138】
隣接ノードセッション12においては、デバイス100-1とデバイス100-2との間で交換ないし共有された別の暗号鍵に基づいて、暗号化パケット22をさらに暗号化して得られる暗号化パケット24がやり取りされる。また、デバイス100-2とデバイス100-3との間で交換ないし交換されたさらに別の暗号鍵に基づいて、暗号化パケット22をさらに暗号化して得られる暗号化パケット26がやり取りされる。
【0139】
暗号化パケット24は、暗号化パケット22全体を暗号化した結果をデータ本体部24Dとして含み、さらに宛先などの情報を含むヘッダ部24Hが付加されている。同様に、暗号化パケット26は、暗号化パケット22全体を暗号化した結果をデータ本体部26Dとして含み、さらに宛先などの情報を含むヘッダ部26Hが付加されている。
【0140】
なお、デバイス100-2においては、暗号化パケット24が暗号化パケット22に一旦復号された後に、再度暗号化されて暗号化パケット26が生成されることになる。この場合であっても、デバイス100-2は、エンドトゥエンドセッション14において生成された暗号化パケット22を復号できないので、データ通信の秘匿性は担保される。
【0141】
図10に示すデータ送信方法において、デバイス100-1は、デバイス100-2を宛先とする送信パケット20をデバイス100-2に関連付けられた暗号鍵により暗号化して暗号化パケット22を生成する。そして、デバイス100-1は、暗号化パケット22の送出先となるデバイス(図10に示す例では、デバイス100-2)を決定し、当該決定したデバイスに関連付けられた暗号鍵により暗号化パケット22を暗号化して暗号化パケット24を生成し、当該決定したデバイスへ送信する。
【0142】
暗号化パケット24を受信したデバイス100-2は、暗号化パケット24を暗号化パケット22に復号し、復号された暗号化パケット22が自デバイス宛てであるか否かを判断する。そして、復号された暗号化パケット22が自デバイス宛てでなければ、デバイス100-2は、デバイス100-1が暗号化パケット24をデバイス100-2に送信したのと同様の処理を実行する。すなわち、デバイス100-2は、暗号化パケット22のさらなる送出先となるデバイス(この場合には、デバイス100-3)を決定し、当該決定したデバイスに関連付けられた暗号鍵により暗号化パケット22を暗号化して暗号化パケット26を生成し、当該決定したデバイスへ送信する。
【0143】
一方、復号された暗号化パケット22が自デバイス宛てであれば(この例では、図10に示す例では、暗号化パケット22がデバイス100-3に到達したとき)、暗号化パケット22が送信パケット20に復号される。
【0144】
図11は、本実施の形態に従うデバイス100におけるデータ送信に係る機能構成を示す模式図である。図11を参照して、デバイス100は、図10に示すようなデータ通信を実現するための構成として、ルータエンジン1120と、転送エンジン1110と、インターフェイス1210とを含む。これらのコンポーネントは、制御部110によって提供されることになる。
【0145】
ルータエンジン1120は、主として、エンドトゥエンドセッション14を担当し、転送エンジン1110は、主として、隣接ノードセッション12を担当する。
【0146】
ルータエンジン1120は、各種アプリケーション300から送信パケットを与えられると、宛先のデバイス100との間で交換ないし交換された暗号鍵を用いて送信パケットを暗号化するとともに、暗号化した送信パケットを含む暗号化パケットを宛先のデバイス100へ送信する。
【0147】
また、ルータエンジン1120は、転送エンジン1110から暗号化パケットを与えられると、当該暗号化パケットが自デバイス宛てであるか否かを判断する。自デバイス宛ての暗号化パケットである場合には、ルータエンジン1120は、送信元のデバイス100との間で交換ないし共有された暗号鍵を用いて当該暗号化パケットに含まれる送信パケットを受信されたパケット(以下、「受信パケット」とも称す。)として復号し、各種アプリケーション300へ出力する。一方、他デバイス宛ての暗号化パケットである場合には、ルータエンジン1120は、当該暗号化パケットを転送エンジン1110へ戻す。
【0148】
より具体的には、ルータエンジン1120は、セッション管理エンジン1122と、暗号化/復号エンジン1124と、エンドトゥエンドセッション管理テーブル1126と、サーチエンジン1128とを含む。
【0149】
セッション管理エンジン1122は、宛先のデバイス100との間のセッション確立、パケットの転送処理および再送処理などを行う。また、セッション管理エンジン1122は、与えられた送信パケットの宛先に応じて、当該送信パケットの送信先を決定する。暗号化/復号エンジン1124は、データの暗号化および復号を行う。エンドトゥエンドセッション管理テーブル1126は、セッション管理エンジン1122がセッションを確立できるデバイス100のIPアドレス、暗号化鍵、コネクション種別などを保持する。サーチエンジン1128は、各種アプリケーション300から指定されたIPアドレスがエンドトゥエンドセッション管理テーブル1126に登録されていない場合に、ネットワーク上で指定されたIPアドレスを有するデバイス100およびその経路を探索する。
【0150】
転送エンジン1110は、インターフェイス1210からパケットを与えられると、当該パケットを直接データ通信する先のデバイス100との間で交換ないし交換された暗号鍵を用いて、当該パケットを復号した上で、ルータエンジン1120へ出力する。また、転送エンジン1110は、ルータエンジン1120からパケットを与えられると、当該パケットを直接データ通信する先のデバイス100との間で交換ないし交換された暗号鍵を用いて、当該パケットを暗号化した上で、送信先のデバイス100へ送信する。
【0151】
より具体的には、転送エンジン1110は、セッション管理エンジン1112と、暗号化/復号エンジン1114と、隣接ノードセッション管理テーブル1116とを含む。
【0152】
セッション管理エンジン1112は、パケットを直接データ通信する先のデバイス100との間のセッション確立、パケットの転送処理および再送処理などを行う。暗号化/復号エンジン1114は、データの暗号化および復号を行う。隣接ノードセッション管理テーブル1116は、セッション管理エンジン1112がセッションを確立できるデバイス100のIPアドレス、暗号化鍵、コネクション種別などを保持する。
【0153】
インターフェイス1210は、ネットワークインターフェイス120により物理的にやり取りされるデータを論理的に処理するモジュールである。インターフェイス1210は、セッション管理エンジン1112と、プロトコル毎に用意されるデータ通信経路(例えば、TCP(Transmission Control Protocol)1212、UDP(User Datagram Protocol)1214、その他のプロトコル1216など)とを論理的に接続する。
【0154】
図12は、本実施の形態に従うデバイス100におけるデータ送信時の動作例を示す模式図である。図12には、デバイス100が自デバイス宛てのパケット(自デバイス宛受信パケット)を受信した場合の処理、および、デバイス100が他デバイス宛てのパケット(他デバイス宛受信パケット)を受信した場合の処理を示す。
【0155】
デバイス100にパケットが到着すると、当該パケットは転送エンジン1110に送られて、当該パケットを直接データ通信したデバイス100との間で交換ないし交換された暗号鍵を用いて、復号される。当該パケットが自デバイス宛てである場合には、復号されたパケットはルータエンジン1120に送られ、送信元のデバイス100との間で交換ないし交換された暗号鍵を用いてさらに復号されて、各種アプリケーション300へ出力される。一方、当該パケットが他デバイス宛てである場合には、復号されたパケットは転送エンジン1110に戻されて、次の送信先のデバイスとの間で交換ないし交換された暗号鍵を用いて暗号化された上で送信される。
【0156】
図13は、本実施の形態に従うデバイス100において送信パケットが発生した場合の処理手順を示すフローチャートである。図14は、本実施の形態に従うデバイス100において他のデバイスからパケットを受信した場合の処理手順を示すフローチャートである。図13および図14には、ネットワークに接続されたデバイス100での通信処理方法の手順が示される。図13および図14に示す各ステップは、デバイス100の制御部110(図2参照)によって実行される(典型的には、プロセッサおよびメモリが協働することにより実現される)。
【0157】
図13を参照して、各種アプリケーション300などによって、他のデバイスを宛先とする送信パケット20が与えられたか否かを判断する(ステップS100)。他のデバイスを宛先とする送信パケット20が与えられていなければ(ステップS100においてNO)、ステップS100の処理が繰り返される。
【0158】
一方、他のデバイスを宛先とする送信パケット20が与えられると(ステップS100においてYES)、ステップS102以下の処理が実行される。すなわち、図13に示すステップS102以下の処理は、他のデバイスを宛先とするパケットが与えられると実行される。
【0159】
ステップS102において、デバイス100(図11のセッション管理エンジン1122)は、宛先のデバイスのIPアドレスに対応するセッションが登録されているか否かを判断する(ステップS102)。典型的には、図11に示すエンドトゥエンドセッション管理テーブル1126には確立可能なセッション毎のIPアドレスが登録されており、この登録内容が参照される。
【0160】
宛先のデバイスのIPアドレスに対応するセッションが登録されていれば(ステップS102においてYES)、後述のステップS114の処理が実行される。
【0161】
宛先のデバイスのIPアドレスに対応するセッションが登録されていなければ(ステップS102においてNO)、デバイス100(図11のサーチエンジン1128)は、送信パケット20をキューに一旦格納し(ステップS104)、それぞれのデータ通信経路について、宛先のデバイスおよび宛先のデバイスまでの経路の探索を開始する(ステップS106)。そして、デバイス100は、探索が成功したか否かを判断する(ステップS108)。探索が成功すると(ステップS108においてYES)、後述のステップS114の処理が実行される。このように、デバイス100は、他のデバイスを宛先とするパケットが与えられると、当該宛先のデバイスのIPアドレスを探索する。
【0162】
一方、探索が成功していなければ(ステップS108においてNO)、デバイス100は、送信パケット20をキューに格納してから予め定められた制限時間(タイムアウト時間)が経過したか否かを判断する(ステップS110)。送信パケット20をキューに格納してから予め定められた制限時間が経過していなければ(ステップS110においてNO)、ステップS108以下の処理が繰り返される。
【0163】
一方、送信パケット20をキューに格納してから予め定められた制限時間が経過していれば(ステップS110においてYES)、デバイス100は、キューに格納した送信パケット20を破棄する(ステップS112)。そして、処理は終了する。
【0164】
ステップS114において、デバイス100(図11のセッション管理エンジン1122)は、宛先のデバイスとの間にエンドトゥエンドセッション14が確立されているか否かを判断する(ステップS114)。
【0165】
宛先のデバイスとの間にエンドトゥエンドセッション14が確立されていなければ(ステップS114においてNO)、デバイス100は、宛先のデバイスとの間にエンドトゥエンドセッション14を確立する(ステップS116)。エンドトゥエンドセッション14を確立する際には、デバイス100は、エンドトゥエンドセッション14に関連付けられた暗号鍵を宛先のデバイスとの間で交換ないし共有する。このように、デバイス100は、他のデバイスとの間のエンドトゥエンドセッション14を確立するとともに、エンドトゥエンドセッション14(すなわち、当該他のデバイス)に関連付けられた暗号鍵を決定する。
【0166】
一方、宛先のデバイスとの間にエンドトゥエンドセッション14が既に確立されていれば(ステップS114においてYES)、ステップS116の処理はスキップされる。
【0167】
続いて、デバイス100(暗号化/復号エンジン1124)は、宛先のデバイスとの間に確立されているエンドトゥエンドセッション14に対応付けられた暗号鍵で送信パケット20を暗号化することで、暗号化パケット22を生成する(ステップS118)。すなわち、デバイス100は、宛先となっている他のデバイスに関連付けられた暗号鍵により暗号化して暗号化パケット22を生成する。
【0168】
続いて、デバイス100(セッション管理エンジン1112)は、暗号化パケット22の送出先となるデバイスを決定する(ステップS120)。典型的には、図11に示す隣接ノードセッション管理テーブル1116には確立可能なセッション毎のIPアドレスが登録されており、この登録内容が参照される。さらに、デバイス100(暗号化/復号エンジン1114)は、決定した送出先のデバイスとの間に隣接ノードセッション12が確立されているか否かを判断する(ステップS122)。
【0169】
決定した送出先のデバイスとの間に隣接ノードセッション12が確立されていなければ(ステップS122においてNO)、デバイス100は、決定した送出先のデバイスとの間に隣接ノードセッション12を確立する(ステップS124)。隣接ノードセッション12を確立する際には、デバイス100は、隣接ノードセッション12に関連付けられた暗号鍵を対象のデバイスとの間で交換ないし共有する。このように、デバイス100は、暗号化パケット22の送出先となるさらに別のデバイスとの間の隣接ノードセッション12を確立するとともに、隣接ノードセッション12(すなわち、当該送出先となるデバイス)に関連付けられた暗号鍵を決定する。
【0170】
一方、決定した送出先のデバイスとの間に隣接ノードセッション12が既に確立されていれば(ステップS122においてYES)、ステップS124の処理はスキップされる。
【0171】
続いて、デバイス100(暗号化/復号エンジン1114)は、決定した送出先のデバイスとの間に確立されている隣接ノードセッション12に対応付けられた暗号鍵で暗号化パケット22を暗号化することで、暗号化パケット24を生成する(ステップS126)。すなわち、すなわち、デバイス100は、暗号化パケット22を決定した送出先のデバイスに関連付けられた暗号鍵により暗号化して暗号化パケット24を生成する。
【0172】
最終的に、デバイス100(セッション管理エンジン1112)は、生成した暗号化パケット24を決定した送出先のデバイスへ送出する(ステップS128)。以上により、送信パケット20が与えられた場合の処理は終了する。
【0173】
図14を参照して、他のデバイスから暗号化パケット24を受信したか否かを判断する(ステップS200)。他のデバイスから暗号化パケット24を受信していなければ(ステップS200においてNO)、ステップS200の処理が繰り返される。
【0174】
一方、他のデバイスから暗号化パケット24を受信すると(ステップS200においてYES)、ステップS202以下の処理が実行される。すなわち、図14に示すステップS202以下の処理は、他のデバイスから暗号化パケット24を受信すると実行される。
【0175】
デバイス100(暗号化/復号エンジン1114)は、当該他のデバイスとの間の隣接ノードセッション12に対応付けられた暗号鍵で暗号化パケット24を暗号化パケット22に復号する(ステップS202)。そして、デバイス100(セッション管理エンジン1112)は、復号された暗号化パケット22が自デバイス宛てであるか否かを判断する(ステップS204)。
【0176】
復号された暗号化パケット22が自デバイス宛てでなければ(ステップS204においてNO)、デバイス100(セッション管理エンジン1112)は、暗号化パケット22のさらなる送出先となるデバイスを決定する(ステップS210)。典型的には、図11に示す隣接ノードセッション管理テーブル1116が参照される。さらに、デバイス100(暗号化/復号エンジン1114)は、決定した送出先のデバイスとの間に隣接ノードセッション12が確立されているか否かを判断する(ステップS212)。決定した送出先のデバイスとの間に隣接ノードセッション12が確立されていなければ(ステップS212においてNO)、デバイス100は、決定した送出先のデバイスとの間に隣接ノードセッション12を確立する(ステップS214)。なお、決定した送出先のデバイスとの間に隣接ノードセッション12が既に確立されていれば(ステップS212においてYES)、ステップS214の処理はスキップされる。
【0177】
続いて、デバイス100(暗号化/復号エンジン1114)は、決定した送出先のデバイスとの間に確立されている隣接ノードセッション12に対応付けられた暗号鍵で暗号化パケット22を暗号化することで、暗号化パケット24を生成する(ステップS216)。最終的に、デバイス100(セッション管理エンジン1112)は、生成した暗号化パケット24を決定した送出先のデバイスへ送出する(ステップS218)。
【0178】
このように、復号された暗号化パケット22が自デバイス宛てでなければ(ステップS204においてNO)、デバイス100は、暗号化パケット22の送出先となるさらに別のデバイスを決定し、当該決定したデバイスに関連付けられた暗号鍵により暗号化パケット24を生成して送信する。以上により、他のデバイスから暗号化パケット24を受信した場合の処理は終了する。
【0179】
一方、復号された暗号化パケット22が自デバイス宛てであれば(ステップS204においてYES)、デバイス100(暗号化/復号エンジン1124)は、送信元のデバイスとの間に確立されているエンドトゥエンドセッション14に対応付けられた暗号鍵で暗号化パケット22を送信パケット20に復号する(ステップS206)。そして、デバイス100は、復号した送信パケット20を受信パケットとして、各種アプリケーション300へ出力する(ステップS208)。以上により、他のデバイスから暗号化パケット24を受信した場合の処理は終了する。
【0180】
上述したように、本実施の形態に従うネットワークシステム1においては、送信元のデバイスから宛先のデバイスへパケットを送信するにあたって、送信元のデバイスと宛先のデバイスとの間のエンドトゥエンドセッション14に関連付けられた暗号鍵を用いて暗号化パケット22が生成される。暗号化パケット22は、1または複数のデバイスにより順次転送されることもあるが、このような過程においても、暗号化された状態で順次転送されるため、宛先のデバイスに到達するまでの間に亘って、パケットの秘匿性を維持できる。
【0181】
さらに、本実施の形態に従うネットワークシステム1においては、暗号化パケット22を順次転送するデバイス間においても、当該デバイス間の隣接ノードセッション12に関連付けられた暗号鍵を用いて暗号化パケット22がさらに暗号化される。そのため、暗号化パケット22が順次転送されるデータ通信過程においても、より秘匿性を高めることができる。
【0182】
<E.利点>
本実施の形態に従うネットワークシステム1によれば、多数のデバイスが存在するネットワークにおいて、各デバイス100が自立してデータ通信を実現できる解決策を提供できる。
【0183】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0184】
1 ネットワークシステム、2 ネットワーク、4 アクセスポイント、6 移動体基地局、12 隣接ノードセッション、14 エンドトゥエンドセッション、20 送信パケット、20D,22D,24D,26D データ本体部、20H,22H,24H,26H ヘッダ部、22,24,26 暗号化パケット、100 デバイス、102 プロセッサ、104 主メモリ、106 ストレージ、108 ROM、110 制御部、120 ネットワークインターフェイス、130 表示部、140 入力部、150 メディアインターフェイス、152 メディア、160 OS、170 通信処理プログラム、172 秘密鍵、174 公開鍵、176 電子証明書、178 ハッシュ値、180 ハッシュ関数、190 IPアドレス、194 コネクションテーブル、200 認証局、300 各種アプリケーション、1110 転送エンジン、1112,1122 セッション管理エンジン、1114,1124 暗号化/復号エンジン、1116 隣接ノードセッション管理テーブル、1120 ルータエンジン、1126 エンドトゥエンドセッション管理テーブル、1128 サーチエンジン、1210 インターフェイス、1216 その他のプロトコル。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14