以下に添付図面を参照して、この発明にかかる装置の好適な実施の形態を詳細に説明する。
(第1の実施形態)
動的なグループ管理方法として、グループ管理サーバと多数のノードとがネットワークで接続されている状況下で、グループ管理サーバがノードとユニキャスト通信による相手認証を実行し、認証に成功したノードにグループ鍵を配布するプロトコルが知られている。この方法では、相手認証とグループ鍵の更新により、グループに属するノードの動的な制御が実現できる。しかし、同時に数多くのノードのグループを変更する場合などには、グループ管理サーバでの処理が集中するという問題がある。また、複数のノードに同じ情報を配信するマルチキャストの技術が知られている。しかし、マルチキャストは、マルチキャストアドレスの割り当てなどの問題により、多数の機器の動的なグループ制御のように、多くのグループが存在しうる状況下には不向きな技術である。このように、動的なグループ制御を実現する際には、認証やデータ配布法のため、スケーラビリティの確保が課題であった。そのため、非常に多くのノードが存在する状況下では、動的なグループ制御を行うシステムの実現が困難であった。
そこで、第1の実施形態にかかる通信システムは、通信制御装置によって通信装置(以下、ノードという)に対して動的に割り当てられるグループIDにより、当該ノードが属するグループを決定する。グループIDは、グループを識別する識別情報である。グループIDを含む情報は、マルチキャスト通信やブロードキャスト通信により送信される。このため、グループIDを含む情報は、グループ変更の対象となるノード以外にも届く可能性がある。本実施形態の通信システムでは、グループIDに加え、グループ変更の対象となるノードを識別する装置ID(以下、ノードIDという)を効率的に表現した情報に、通信制御装置の署名を付加することにより、動的なグループ変更コマンドの偽造を防止する。以上の処理により、スケーラビリティと安全性を両立しつつ、動的なグループ制御が可能となる。
本実施形態にかかるノードを含む通信システムでは、各ノードは、自身のノードIDと通信制御装置の検証鍵とを予め記録している。ノードは、グループ変更のコマンドを受信すると、受信したコマンドに含まれる更新対象のノードIDを表す情報と、自身のノードIDとを比較する。自身のノードIDが更新対象となっている場合、ノードは、コマンドに含まれる署名を検証し、検証に合格した場合、自身の所属するグループのグループIDをコマンドに含まれているグループIDに変更する。
ここで、ノードIDは、各ノードに1つのみが割り当てられるとは限らない。例えば、各ノードが目的に応じて複数のノードIDを保持してもよい。この場合、複数のノードIDを持つ各ノードは、コマンドの対象となっているノードIDを保持しているかの比較を行い、保持していた場合、保持しているノードIDに対して先の例と同様の処理を行う。
以上のように、本実施形態では、動的なグループ制御にあたって、従来のように、ユニキャスト通信によるグループIDの送付や、ノードと通信制御装置との間での新たな認証を行う必要がない。また、コマンドの対象となるノードIDのリストを効率的に表現しているため、多くのノードを対象としたコマンドを発行する場合であっても、特に通信コストを抑えることができる。さらに、ネットワークの構成、ノードの用途、ノードの製造者、および、ノードの設置場所(地理的な位置情報)などの属性を考慮してノードIDを割り当てれば、コマンドの対象となるノードIDのリストの効率を低下させないことが可能となる。
図1は、第1の実施形態にかかる通信システムの構成の一例を示すブロック図である。図1に示すように、本実施形態の通信システムは、ノード200a〜200fと、通信制御装置100とが、ネットワーク60で接続された構成となっている。ネットワーク60は、インターネットなどのあらゆるネットワーク形態を適用できる。各ノード200a〜200fは、通信制御装置100と直接接続されている必要はない。
通信制御装置100は、1つに限られるものではなく、2以上の通信制御装置を備えるように構成してもよい。ノード200a〜200fは同様の構成を備えるため、以下では単にノード200という場合がある。ノード200の個数は6に限られるものではない。
図1に示すように、本実施形態では、通信制御装置100が、各ノード200に対してグループ変更コマンドを送信する。グループ変更コマンドは、例えば、更新対象のノードIDを表す情報、グループID、および署名を含む。
図2は、通信制御装置100の構成例を表すブロック図である。図2に示すように、通信制御装置100は、署名鍵記憶部121と、グループ情報記憶部122と、アドレス記憶部123と、受信部101と、グループ情報処理部102と、ID生成部103と、圧縮情報生成部104と、署名生成部105と、出力部106と、を備える。
署名鍵記憶部121は、署名の生成に用いる署名鍵を記憶する。グループ情報記憶部122は、グループIDと、グループIDで識別されるグループに属するノード200のノードIDとを含むグループ情報を記憶する。つまり、グループ情報記憶部122は、グループIDと、グループIDで識別されるグループに属するノード200のノードIDとを対応付けて記憶する。図3は、グループ情報のデータ構造の一例を示す図である。図3に示すように、グループ情報は、グループIDと、1以上のノードIDとを含む。なお、図3のデータ構造は一例であり、テーブル形式以外のデータ構造を用いてもよい。なお、あるノード200が複数のグループに属する場合もあり、この場合、このノード200のノードIDに対して複数のグループIDが存在する。
図2に戻り、アドレス記憶部123は、出力部106による情報の出力先となるアドレスを記憶する。図4は、アドレス記憶部123に記憶されるデータのデータ構造の一例を示す図である。図4に示すように、アドレス記憶部123は、アドレスと、当該アドレスに対応づけられるノードIDとを対応づけたデータを記憶する。アドレスは、例えば、対応する各ノードIDのノード200に対してマルチキャスト通信で情報を送信するためのマルチキャストアドレスである。マルチキャスト通信を用いない場合(例えばブロードキャスト通信を用いる場合)、アドレス記憶部123を備えないように構成してもよい。
図2に戻り、受信部101は、ノード200などの外部装置から各種情報を受信する。受信部101は、例えば、グループ制御の要求、および、グループ制御の対象を指定する情報などを受信する。グループ制御の要求とは、グループの新規作成、グループの変更(グループに属するノード200の変更など)などの要求である。なお、外部装置からグループ制御の要求を受信した場合のみでなく、通信制御装置100内でグループ制御の要否を判断し、必要と判断した場合にグループ制御を実行してもよい。受信部101は、グループ制御の要求、および、グループ制御の対象を指定する情報(入力情報)をグループ情報処理部102に送る。
グループ情報処理部102は、入力情報に従い、グループ管理コマンドを発行するための処理を実行する。グループ情報処理部102は、まず、新規のグループを生成する必要の有無を判定する。グループ情報処理部102は、新規グループ生成の必要がないと判定した場合、以下に示すグループ管理処理を行う。
新規グループ生成の必要があると判定した場合、グループ情報処理部102は、ID生成部103に対して、新規グループに割り当てるグループIDの生成を要求する。ID生成部103は、要求に応じて新規のグループIDを生成する。ID生成部103によるグループIDの生成方法は任意である。例えば、ランダムに選択された文字列をグループIDとする方法、および、グループの代表を務める機器のIPアドレスとグループの属性とを連結した文字列をグループIDとする方法などから、グループの目的に応じて適切な方法を決定すればよい。
グループ情報処理部102は、生成されたグループIDを用いて、以下に示すグループ管理処理を行う。グループ情報処理部102は、グループ情報記憶部122から、適切なグループIDとノードIDのリストを含むグループ情報を読み出し、配布対象のグループIDとノードIDのリストを作成する。配布対象のグループIDとノードIDとは、グループの新規作成またはグループの変更の対象となったグループのグループID、および、このグループIDのグループに属するノード200のノードIDである。
グループ情報処理部102は、割当部102aをさらに備える。割当部102aは、ノード200に対してノードIDを割り当てる。上述のように、接続されるネットワーク60の構成、用途、製造者、および位置などの、ノード200の属性を考慮してノードIDを割り当てれば、配布対象となるノードIDのリストの効率(圧縮の効率)を向上させることができる。例えば、製造者が同一の複数のノード200を一括して他のグループに移動させる場合、製造者が同一のノード200に対して相互に近い値のノードIDを割り当てておけば、数値範囲による圧縮法を適用したときの圧縮効率を高めることができる。従って、割当部102aは、属性が相互に類似または一致する複数のノード200に対して割り当てる複数のノードID間の差分が、属性が相互に類似または一致しない複数のノード200に対して割り当てる複数のノードID間の差分より小さくなるように、ノードIDを割り当てる。
図2に戻り、圧縮情報生成部104は、グループIDの配布対象となるノードIDのリストを圧縮表現した圧縮情報を生成する。圧縮法として、例えば、ワイルドカード文字を利用した圧縮法、数値範囲による圧縮法、および、一般的なコンパクト符号による圧縮法などが適用できる。なお、圧縮法はこれらに限られるものではない。ノードIDのリストに含まれるノードIDを一意に復号可能な圧縮法であれば、あらゆる圧縮法を用いることができる。
図5は、ワイルドカード文字を利用した圧縮法の一例を示す図である。図5の例では、0および1の両方に対応するワイルドカード文字「*」を用いる。ノードIDのリスト(ノードIDリスト)に「000」、「001」、「100」、および「101」が含まれる場合、まず、「000」および「001」が「00*」のようなワイルドカード表現に変換される。また、「100」および「101」が「10*」に変換される。次に、「00*」および「10*」が「*0*」に変換される。このような変換が実行できなくなるまで処理が繰り返される。図5の例では、「*0*」が最終的なワイルドカード表現として得られる。
0、1および*には、予めビット列が対応づけられる。図5の例では、ビット列「00」、「11」、「10」および「01」が、それぞれ「0」、「1」、「*」および「*」に対応づけられる。この結果、得られた「*0*」から、ビット列を連結した圧縮表現「100010」が得られる。すなわち、少なくとも12ビットで表されていたノードIDリストが、6ビットの圧縮情報に圧縮される。
数値範囲による圧縮法の一例として、リストに含まれるノードIDが「000」、「001」、「010」、および、「011」のように数値的に連続であるとき、「000011」に符号化する方法が存在する。この方法は、数値的に連続したノードIDが指定されるときに有効である。
さらに、ノードIDリストに含まれるノードIDの集合の補集合に対して上述の処理を適用した方がより短いビット列で表現できる場合、補集合に対して処理を行ったことを示す情報と補集合に上述の圧縮法を適用した情報から、圧縮情報を生成してもよい。
図2に戻り、署名生成部105は、圧縮情報と配布対象のグループIDとに対して、署名鍵記憶部121に記憶されている署名鍵による署名を計算(生成)する。
なお、グループ情報処理部102は、グループ情報の変更をグループ情報記憶部122に反映する。ここで、グループ情報の変更とは、グループIDとノードIDリストの新規追加、グループIDとノードIDリストの削除、および、あるグループIDに対応するノードIDリストの更新などを指す。
出力部106は、グループ情報が更新された場合に、更新後のグループを特定する特定情報と、更新後のグループ情報に含まれるノードIDが圧縮された圧縮情報と、署名と、を含む出力情報を、ノードIDリストに含まれるすべてのノードIDで識別されるノード200とノードIDのリストに含まれないノード200を1以上含む複数のノードに対して出力する。このようにグループ変更の対象ではないノードにも出力部106の出力が届くことを許容することで、許容しない場合と比較して、出力部106による出力先の決定に要する計算コストを軽減できる。
本実施形態では、グループIDが特定情報として用いられる。出力部106は、グループとは独立に管理されるノード200の集合であって、少なくともグループが更新されたすべてのノード200を含むノード200の集合に対して出力情報を出力する。ここで、ノード200の集合とは、複数のノード200からなる集まりであって、グループIDが割り振られているグループとは必ずしも一致しない。ノード200の集合の例として、あるマルチキャスト通信でデータを受信するノード200の集合や、ブロードキャスト通信でデータを受信するノード200からなる集合、つまりすべてのノード200からなる集合、などが挙げられる。例えば、出力部106は、ノードIDリストが含まれるノード200の集合、もしくは、グループに対して、1以上のマルチキャスト通信やブロードキャスト通信により出力情報を送信してもよい。マルチキャスト通信で出力情報を送信する場合、出力部106は、例えばアドレス記憶部123に記憶されたアドレスのうち、配布対象のノードIDのノードIDに対応づけられた1以上のアドレス(マルチキャストアドレス)を宛先として、出力情報を送信する。ノード200が保持するあるノードIDに対して、複数のグループIDが割り振られる場合、出力部106は、更新対象のノード200に対して、更新対象となるグループIDの特定を助ける情報を含めた出力情報を送信してもよい。ここで、グループIDの特定を助ける情報とは、グループIDで管理されるグループの目的や属性を表す情報や、更新対象となるグループID自体や、更新対象となるグループIDの上位数ビットや、更新対象のグループIDは存在せず新規のグループIDの割り当てであることを示す情報などを指す。出力情報にグループIDの特定を助ける情報を付加することで、ノードが更新対象のグループIDを特定する処理を軽減できる。
図6は、ノード200の構成例を表すブロック図である。図6に示すように、ノード200は、鍵記憶部221と、ノードID記憶部222と、グループID記憶部223と、受信部201と、圧縮情報処理部202と、署名検証部203と、更新部204と、を備える。
鍵記憶部221は、通信制御装置100の検証鍵を記憶する。ノードID記憶部222は、ノード200自身に割り当てられたノードIDを記憶する。グループID記憶部223は、ノード200自身が属するグループのグループIDを記憶する。
受信部201は、通信制御装置100および他のノード200などの外部装置から各種情報を受信する。例えば、受信部201は、圧縮情報とグループIDと署名とを含む出力情報を通信制御装置100から受信する。受信部201は、マルチキャスト通信およびブロードキャスト通信などにより出力情報を受信する。
圧縮情報処理部202は、ノードID記憶部222に記憶されているノードIDと、受信した圧縮情報とから、自身のノードIDがグループ更新処理の対象であるか否かを判定する。圧縮情報処理部202は、通信制御装置100の圧縮情報生成部104が用いる圧縮法に対応する復号方法で、圧縮情報からノードIDのリストを復号する。そして、圧縮情報処理部202は、復号したノードIDのリストに自身のノードIDが含まれる場合に、自身のノードIDがグループ更新処理の対象であると判定する。グループ更新処理の対象でなかった場合は、ノード200は処理を終了する。
グループ更新処理の対象であった場合、署名検証部203は、鍵記憶部221に記憶されている検証鍵と、圧縮情報と、グループIDと、を用いて、署名が正しいか否かを判定する。正しい署名でなかった場合は、ノード200は処理を終了する。
正しい署名であった場合、更新部204は、出力情報に含まれるグループIDで、グループID記憶部223に記憶されたグループIDを更新する。更新対象となるグループIDの特定を助ける情報も受信した場合は、更新部204がこの情報を用いて更新対象となるグループIDを特定してもよい。
なお、上述の各記憶部は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
次に、このように構成された第1の実施形態にかかる通信システムによるグループ管理処理について説明する。以下では、グループ管理処理のうち、通信制御装置100が実行する更新依頼処理(図7)と、ノード200が実行するグループ情報更新処理(図8)と、に分けて説明する。図7は、第1の実施形態における更新依頼処理の一例を示すフローチャートである。
受信部101は、外部装置からの情報を受信する(ステップS101)。グループ情報処理部102は、受信した情報を参照し、グループの更新が必要か否かを判定する(ステップS102)。例えば、グループ情報処理部102は、グループ制御の要求、および、グループ制御の対象を指定する入力情報が受信された場合、グループの更新が必要であると判定する。
グループの更新が必要でない場合(ステップS102:No)、更新依頼処理を終了する。グループの更新が必要である場合(ステップS102:Yes)、グループ情報処理部102は、さらに新規グループの生成が必要か否かを判定する(ステップS103)。例えば、グループ情報処理部102は、グループ制御の要求がグループの新規作成を表す場合、新規グループの生成が必要であると判定する。
新規グループの生成が必要である場合(ステップS103:Yes)、グループ情報処理部102は、新規グループを生成する(ステップS104)。例えば、グループ情報処理部102は、ID生成部103に新規グループに割り当てるグループIDの生成を要求する。
新規グループの生成が必要でない場合(ステップS103:No)、または、新規グループを生成後、圧縮情報生成部104は、グループ情報記憶部122から処理対象となるグループのグループ情報を読み出す(ステップS105)。圧縮情報生成部104は、読み出したグループ情報に含まれるノードIDから圧縮情報を生成する(ステップS106)。
署名生成部105は、生成された圧縮情報と、処理対象となるグループのグループIDとに対して、署名鍵記憶部121に記憶されている署名鍵による署名を生成する(ステップS107)。
グループ情報処理部102は、グループ情報記憶部122のグループ情報を更新する(ステップS108)。例えば、グループの更新の場合、グループ情報処理部102は、更新対象のグループのグループIDに、グループ制御の対象として指定されたノードIDを新たに対応づけたグループ情報で、グループ情報記憶部122に記憶された更新前のグループ情報を更新する。新規グループが生成された場合、グループ情報処理部102は、ステップS104で生成されたグループIDに、グループ制御の対象として指定されたノードIDを新たに対応づけたグループ情報をグループ情報記憶部122に記憶する。
出力部106は、更新後のグループ情報に含まれるグループIDと、更新後のグループ情報に含まれるノードIDが圧縮された圧縮情報と、署名と、を含む出力情報を、例えばマルチキャスト通信により出力する(ステップS109)。
図8は、第1の実施形態におけるグループ情報更新処理の一例を示すフローチャートである。
ノード200の受信部201は、外部装置からの情報を受信する(ステップS201)。例えば、受信部201は、マルチキャスト通信で送信された出力情報を受信する。なお、受信した出力情報の宛先アドレスが自装置に割り当てられたマルチキャストアドレスと一致しない場合、受信部201は、受信した情報を破棄し、処理を終了してもよい。
圧縮情報処理部202は、受信した情報を参照し、グループの更新が必要か否かを判定する(ステップS202)。例えば、圧縮情報処理部202は、自装置に割り当てられたマルチキャストアドレスが指定された出力情報が受信された場合、受信された出力情報に含まれる圧縮情報を復号する。圧縮情報処理部202は、復号により得られたノードIDのリストに自身のノードIDが含まれる場合に、更新が必要であると判定する。
更新が必要でない場合(ステップS202:No)、ノード200は、グループ情報更新処理を終了する。更新が必要である場合(ステップS202:Yes)、署名検証部203は、検証鍵と圧縮情報とグループIDとを用いて、出力情報に含まれる署名が正しいか否かを判定する(ステップS203)。正しい署名でない場合(ステップS203:No)、ノード200はグループ情報更新処理を終了する。
正しい署名である場合(ステップS203:Yes)、更新部204は、出力情報に含まれるグループIDで、グループID記憶部223に記憶されたグループIDを更新する(ステップS204)。
このように、第1の実施形態にかかる通信システムでは、通信制御装置100が更新したグループIDを含む出力情報をマルチキャスト通信やブロードキャスト通信により送信する。そして、ノード200は、出力情報から自装置のグループの更新が必要かを判定し、必要な場合のみ自装置のグループの更新を実行する。これにより、スケーラビリティを確保しながら動的なグループ管理を実現することができる。
(第2の実施形態)
図9は、第2の実施形態にかかる通信システムの構成の一例を示すブロック図である。図9に示す通り、本実施形態の通信システムは、ノード200−2a〜200−2fと、通信制御装置100−2とが、ネットワーク60で接続された構成となっている。
通信制御装置100−2は1つに限られるものではなく、2以上の通信制御装置100−2を備えるように構成してもよい。ノード200−2a〜200−2fは同様の構成を備えるため、以下では単にノード200−2という場合がある。ノード200−2の個数は6に限られるものではない。
図9に示すように、本実施形態では、グループ変更コマンドは、更新対象のノードIDを表す情報、グループID、および署名に加えて、グループ鍵を含む。
図10は、通信制御装置100−2の構成例を表すブロック図である。図10に示すように、通信制御装置100−2は、署名鍵記憶部121と、グループ情報記憶部122と、アドレス記憶部123と、デバイス鍵記憶部124−2と、受信部101と、グループ情報処理部102−2と、ID生成部103と、圧縮情報生成部104と、署名生成部105−2と、出力部106−2と、グループ鍵生成部107−2と、MKB(メディアキーブロック)生成部108−2と、を備える。
第2の実施形態では、グループ情報処理部102−2、署名生成部105−2および出力部106−2の機能と、デバイス鍵記憶部124−2、グループ鍵生成部107−2、および、MKB生成部108−2を追加したことが第1の実施形態と異なっている。その他の構成および機能は、第1の実施形態にかかる通信制御装置100のブロック図である図2と同様であるので、同一符号を付し、ここでの説明は省略する。
デバイス鍵記憶部124−2は、各ノード200−2に割り当てられるデバイス鍵のリスト(デバイス鍵リスト)を記憶する。デバイス鍵の記憶方法は任意であり、後述するように構造によりデバイス鍵を記憶してもよい。
グループ鍵生成部107−2は、各グループに属するノード200−2が使用するグループ鍵を生成する。グループ鍵は、対応するグループに属する各ノード200−2に配布され、グループに属するノード200−2間の通信の暗号化やグループに属することの認証等に利用される。従って、グループ鍵は、対応するグループ以外の機器からは秘匿される必要がある。
MKB生成部108−2は、グループに属するノード200−2のみがグループ鍵を導出可能な秘匿情報であるMKBを生成する。例えば、MKB生成部108−2は、グループに属するノード200−2が保持するデバイス鍵のリストとグループ鍵とが入力される。MKB生成部108−2は、入力されたデバイス鍵リストとグループ鍵とから、デバイス鍵リストに含まれるデバイス鍵を保持する装置のみがグループ鍵を得られるMKBを生成する。MKBの生成法としては、Complete Subtree法、Subset Difference法、Logical Key Hierarchy法などが既に知られており、そのようなあらゆる方法を用いることができる。
署名生成部105−2は、圧縮情報と配布対象のグループIDとMKBとに対して、署名鍵による署名を生成する。
グループ情報処理部102−2の機能について以下に説明する。通信制御装置100−2は、第1の実施形態と同様に、受信部101より受信した情報(入力情報)をグループ情報処理部102−2に送る。グループ情報処理部102−2は、第1の実施形態と同様に、入力情報から、新規グループを生成する必要の有無を判定する。グループ情報処理部102−2は、新規グループ生成の必要なしと判定した場合、以下に示すグループ管理処理を行う。グループ情報処理部102−2は、新規グループ生成の必要ありと判定した場合、ID生成部103を利用して、新規グループIDの生成を行い、以下に示すグループ管理処理を行う。
そして、グループ情報処理部102−2は、第1の実施形態と同様に、グループ情報記憶部122より、適切なグループIDとノードIDのリストを読みだし、配布対象のグループIDとノードIDのリストを作成する。
グループ情報処理部102−2は、グループIDの配布対象となるノードIDのリストより、対応するデバイス鍵リストをデバイス鍵記憶部124−2から読みだす。グループ情報処理部102−2は、グループ鍵生成部107−2にグループ鍵の生成を要求する。
グループ情報処理部102−2は、デバイス鍵リストと、生成されたグループ鍵と、をMKB生成部108−2に入力する。MKB生成部108−2は、デバイス鍵リストに含まれるデバイス鍵を保持する装置のみがグループ鍵を得られるMKBを生成する。ここで、ノードIDの割り当て方と同様に、ネットワークの構成やノードの用途や製造者などの属性を考慮してデバイス鍵を割り当てれば、コマンド対象となるMKBの効率を低下させないことが可能となる。
グループ情報処理部102−2は、グループIDの配布対象となるノードIDを圧縮した圧縮情報を圧縮情報生成部104から得る。
デバイス鍵が木構造で表される場合、暗号化に用いたデバイス鍵が対応する木の高さの情報を圧縮情報としてもよい。この場合、配布対象となるノードIDを圧縮情報から一意に特定することはできない。しかし、各ノード200−2は、高々保持するデバイス鍵の個数回の試行錯誤により、自分がグループ変更コマンドの対象であるか否かを判定できる。
これらの圧縮法に限らず、あらゆる一意復号可能な圧縮法や、MKBの暗号化に用いたデバイス鍵を特定する助けとなるあらゆる一意復号が不可能な圧縮法を用いてもよい。
また、グループ操作の対象を完全に秘匿する必要がある場合には、圧縮情報として、何の情報も持たないビット列を割り当てればよい。この場合、配布対象となるノードIDを圧縮情報から一意に特定することはできない。しかし、MKBの生成に用いられたデバイス鍵の個数をm個とし、各デバイスが保持するデバイス鍵の個数をn個とすると、各デバイスは高々m×n回の試行錯誤により、自分がグループ変更コマンドの対象であるか否かを判定できる。
グループ情報処理部102−2は、署名生成部105−2に対して、圧縮情報と、配布対象のグループIDと、MKBとに対する署名鍵による署名の生成を要求する。
グループ情報処理部102−2は、更新処理による変更をグループ情報記憶部122に反映する。ここで、変更とは、第1の実施形態と同様に、グループIDとノードIDリストとグループ鍵の新規追加、グループIDとノードIDリストとグループ鍵の削除、および、あるグループIDに対応するノードIDリストおよびグループ鍵の更新などを指す。
出力部106−2は、圧縮情報と、グループIDと、MKBと、署名とを含む出力情報を、ノードIDリストに含まれるすべてのノードIDで識別されるノード200とノードIDのリストに含まれないノード200を1以上含む複数のノードに対して出力する。このようにグループ変更の対象ではないノードにも出力部106−2の出力が届くことを許容することで、許容しない場合と比較して、出力部106−2による出力先の決定に要する計算コストを軽減できる。出力部106−2の出力先となる複数のノード200は、グループとは独立に管理されるノード200の集合であって、少なくともグループが更新されたすべてのノード200を含むノード200の集合に対して出力情報を出力する。
ここで、ノード200の集合とは、複数のノード200からなる集まりであって、グループIDが割り振られているグループとは必ずしも一致しない。ノード200の集合の例として、あるマルチキャスト通信でデータを受信するノード200の集合や、ブロードキャスト通信でデータを受信するノード200からなる集合、つまりすべてのノード200からなる集合、などが挙げられる。
第1の実施例と同様に、1以上のマルチキャスト通信や、ブロードキャスト通信を利用して、更新されたすべてのノード200を含むノード200の集合に出力情報を出力してもよい。
図11は、第2の実施形態のノード200−2の構成の一例を表すブロック図である。図11に示すように、ノード200−2は、鍵記憶部221と、ノードID記憶部222と、グループID記憶部223と、デバイス鍵記憶部224−2と、受信部201と、圧縮情報処理部202と、署名検証部203−2と、更新部204と、MKB処理部205−2と、を備える。
第2の実施形態では、署名検証部203−2の機能と、デバイス鍵記憶部224−2、および、MKB処理部205−2を追加したことが第1の実施形態と異なっている。その他の構成および機能は、第1の実施形態にかかるノード200のブロック図である図6と同様であるので、同一符号を付し、ここでの説明は省略する。
デバイス鍵記憶部224−2は、ノード200に割り当てられるデバイス鍵を記憶する。MKB処理部205−2は、デバイス鍵記憶部224−2に記憶されたデバイス鍵と、MKBとからグループ鍵を生成する。署名検証部203−2は、検証鍵と、圧縮情報と、グループIDと、MKBとを用いて、署名が正しいか否かを判定する。
圧縮情報処理部202は、第1の実施形態と同様に、ノードID記憶部222に記憶されている自身のノードIDと、受信した圧縮情報とから、自身のノードIDがグループ更新処理の対象であるか否かを判定する。対象でなかった場合は、処理を終了する。
対象であった場合、または対象である可能性がある場合、署名検証部203−2は、鍵記憶部221に記憶されている通信制御装置100−2の検証鍵と、圧縮情報と、グループIDと、MKBとから、署名が正しいか否かを判定する。もし、正しい署名でなかった場合は、処理を終了する。
署名の検証に合格した場合、MKB処理部205−2は、デバイス鍵記憶部224−2に記憶されているデバイス鍵と、MKBとを含む情報を入力する。もし、ノード200−2がコマンドの対象である場合、MKB処理部205−2は、MKBを正しく処理できるため、グループ鍵を入手できる。一方、ノード200−2がコマンドの対象でない場合、MKB処理部205−2は、不正なグループ鍵またはエラー情報を得ることになる。このため、コマンド対象外の端末がグループに加わることを防止できる。また、ノード200−2は、1つのノードIDに対して、複数組みのデバイス鍵を割り当てられていてもよい。この場合、圧縮情報処理部202より得られるデバイス鍵を特定する助けとなる情報をMKB処理部205−2に入力してもよい。デバイス鍵を特定する助けとなる情報とは、デバイス鍵の目的や属性などの情報や、デバイス鍵を識別するためのID情報などである。このようなデバイス鍵の特定を助ける情報を付加することで、使用すべきデバイス鍵を選択する処理に必要なコストを軽減できる。
正しいグループ鍵が得られた場合、更新部204は、更新対象のグループIDにより、グループID記憶部223に記憶されているグループIDを更新し、処理を終了する。なお、入手したグループ鍵は、鍵記憶部221に記憶するように構成してもよい。
(変形例1)
上記実施形態では、グループを特定する特定情報としてグループID自体を出力情報に含めていた。この場合、更新対象となるグループ以外のグループのノード200に対しても出力情報が送信されるため、グループIDを秘匿することができない。変形例1では、グループ鍵とグループIDに対応するMKBを生成して出力情報に含める。すなわち、グループを特定する特定情報としてMKBを用いる。一方、グループID自体は出力情報から取り除く。このようにすることで、グループの部外者から、処理対象となるグループIDを秘匿することができるため、より安全性が高まる。
(変形例2)
変形例2では、通信制御装置100の機能のうち、秘密に管理しなければならない情報を他の装置で管理するように機能を分離する。これにより安全性をより高めることができる。図12は、変形例2の通信制御装置100−2aおよび管理装置300aの構成例を示すブロック図である。
例えば図12に示すように、グループの管理とコマンドの発行を担う通信制御装置100−2aと、グループ鍵の発行とMKBの生成を担う管理装置300aとに機能を分離することができる。
通信制御装置100−2aは、グループ情報処理部102−2aと出力部106−2aとが図10と異なっている。グループ情報記憶部122と、アドレス記憶部123と、受信部101と、ID生成部103と、圧縮情報生成部104と、出力部106と、を備える。これらの機能は図10と同様であるため同一の符号を付し説明を省略する。
グループ情報処理部102−2aは、図10のグループ処理部102-2と同様の処理を行い、配布対象のグループIDとノードIDのリストを作成し、MKBの発行要求として、作成したリストを出力部106−2aに送る。出力部102−2aは、グループ情報処理部102−2aより受け取ったグループID、対象のノードID、MKB発行要求を管理装置300aに送る。グループ情報処理部102−2aは、受信部101よりMKBと署名を受け取ったら、図10と同様の処理で出力すべき情報を決定し、出力部106−2aより出力する。
管理装置300aは、受信部301と、署名鍵記憶部121と、デバイス鍵記憶部124−2と、署名生成部105−2と、出力部303と、グループ鍵生成部107−2と、MKB生成部108−2と、グループ情報記憶部321と、グループ情報処理部302と、を備える。図10と同様の機能は同一の符号を付し説明を省略する。
グループ情報記憶部321は、グループ情報記憶部122と同様にグループ情報を記憶する。ここで、グループ情報記憶部321は、グループIDとグループ鍵など、MKBで送付される情報のみを記憶してもよい。グループ情報処理部302は、受信部301よりグループIDと対象のノードIDのリストを受け取ったら、グループ情報処理部102−2と同様にMKBと署名を生成する処理を実行する。出力部303は、通信制御装置100−2aに対して各種情報を出力する。なお、通信制御装置100−2aと管理装置300aとの間の通信方式は任意であるが、例えば専用の通信線で接続するように構成すれば、より安全性を高めることができる。
変形例2では、通信制御装置100−2aは、コマンド発行対象となるグループIDとノードIDのリストとを管理装置300aに送付することで、MKBの発行を要求する。管理装置300aは、ノードIDリストに含まれるノードIDをもとに、デバイス鍵記憶部124−2から対応するデバイス鍵を読み出す。グループ鍵生成部107−2は、グループ鍵を生成する。MKB生成部108−2は、デバイス鍵とグループ鍵とからMKBを導出する。署名生成部105−2は、MKBと署名鍵記憶部121に記憶されている署名鍵とから署名を導出する。出力部303は、MKBと署名を通信制御装置100−2aに送付する。通信制御装置100−2aは、コマンド対象の圧縮情報と、MKBと、署名とをコマンドとしてノード200に出力する。
このように構成することで、通信制御装置100−2aが攻撃を受けたとしても、システム上の秘密に管理しなければならない情報を保護できる。
また、図12には示していないが、管理装置300aがグループ鍵を通信制御装置100−2aに送付するように構成してもよい。通信制御装置100−2aは、受け取ったグループ鍵を利用することにより、当該グループに属するノード200とグループ認証を行ったり、グループ鍵を用いた秘匿通信を行ったりすることができる。
また、図13のように、通信制御装置100−2bがグループ鍵を決定する機能を持つようにしてもよい。すなわち、管理装置300bからグループ鍵生成部107−2を削除し、通信制御装置100−2bがグループ鍵生成部107−2と同様の機能を有するグループ鍵生成部109−2bを備えるように構成してもよい。
(第3の実施形態)
図14は、第3の実施形態にかかる通信システムの構成の一例を示すブロック図である。図14に示す通り、本実施形態の通信システムは、無線通信または有線通信により各ノード200−2a〜200−2fがメッシュネットワーク62により接続される。また、アクセス装置400a、400bを介して、メッシュネットワーク62を構成するノード200−2a〜200−2fと、通信制御装置100−2と、がネットワーク61で接続される。ネットワーク61は、インターネットなどのあらゆるネットワーク形態を適用できる。
通信制御装置100−2は1つに限られるものではなく、2以上の通信制御装置100−2を備えるように構成してもよい。ノード200−2a〜200−2fは同様の構成を備えるため、以下では単にノード200−2という場合がある。アクセス装置400a、400bは同様の構成を備えるため、以下では単にアクセス装置400という場合がある。
また、アクセス装置400の機能をノード200−2が兼ねる場合もある。また、ノード200−2が構成するメッシュネットワーク62は1つに限られるものではなく、複数のメッシュネットワーク62が存在してもよい。また、1つのメッシュネットワーク62に存在するアクセス装置400は1つに限られるものではなく、少なくとも1つのアクセス装置400が存在すればよい。
通信制御装置100−2の構成は第2の実施形態と同様であるため同一の符号を付し説明を省略する。また、変形例2と同様に、複数の装置で通信制御装置100−2を実現してもよい。通信制御装置100−2は、第2の実施形態と同様の方法で、コマンドを構成し、アクセス装置400にコマンドを送付することで、コマンド対象のノード200−2にコマンドを送付する。すなわち、通信制御装置100−2は、アクセス装置400を介してノード200−2にコマンドを送付する。
ノード200−2の構成は第2の実施形態と同様であるため同一の符号を付し説明を省略する。ノード200−2は、メッシュネットワーク62を構成する他のノード200−2やアクセス装置400を介して通信を行う。
なお、第3の実施形態では、第2の実施形態の通信制御装置100−2およびノード200−2に対して図14のネットワーク構成を適用しているが、第2の実施形態の通信制御装置100−2およびノード200−2の代わりに、第1の実施形態の通信制御装置100およびノード200に対して図14に示すようなネットワーク構成を適用してもよい。
図15は、アクセス装置400の構成の一例を示すブロック図である。アクセス装置400は、受信部401と、転送処理部402と、出力部403と、を備える。
受信部401は、メッシュネットワーク62または通信制御装置100−2が接続されているネットワーク61から各種情報を受信する。転送処理部402は、受信部401が受信した情報の転送先を判定する。出力部403は、転送処理部402の判定結果に基づき、受信した情報をアクセス装置400またはメッシュネットワーク62に出力する。なお、アクセス装置400は、ノード200−2と同じ機能を備えていてもよい。
(変形例3)
図16は、変形例3にかかる通信システムの構成の一例を示すブロック図である。図16のように、あるメッシュネットワーク(例えばメッシュネットワーク62a)に複数のアクセス装置400が接続されている状況下において、そのメッシュネットワークに属するノード200−2はいずれかのアクセス装置400(例えばアクセス装置400a〜400cのうちアクセス装置400a)を介して、ネットワーク61に接続されるとする。
変形例3では、アクセス装置400を特定する情報としてグループIDを用いる。通信制御装置100−2aは、ノード200−2にコマンドを発行することでグループIDを送付する。ノード200−2は、グループIDで指定されたアクセス装置400を介して通信を行うように変更する。例えば、通信制御装置100−2aは、アクセス装置400aを特定するグループIDから、アクセス装置400bを特定するグループIDに指定を切り替えることにより、ノード200−2の通信を転送するアクセス装置400を切り替える。これにより、通信制御装置100−2aは、アクセス装置400の処理量を制御できる。
また、ノード200−2が新たなアクセス装置400を介して通信を開始する前に、通信制御装置100−2aから配布されたグループ鍵を用いて、アクセス装置400と認証を行ってもよい。ここで、新たなアクセス装置400には、MKBが予め配布され、また、ユニキャスト通信により通信制御装置100−2aからグループ鍵が予め配布されているものとする。このようにすることで、アクセス装置400の認証処理の負荷を軽減できるため、スケーラビリティがさらに向上する。
あるメッシュネットワーク62aに属していた複数のノード200−2を、別のメッシュネットワーク62bに移動させる場合、上述の例と同様に、グループIDが新たなアクセス装置400を特定する情報であれば、通信制御装置100−2aが移動したノード200−2にグループIDを送付することで、機器の移動を行うことができる。
上述の例と同様に、グループ鍵も配布されている場合は、それを用いてアクセス装置400とノード200−2との間で認証を行ってもよい。
また、図16に示すように、変形例3の通信システムは、新たにデータ配布装置500を備えている。データ配布装置500は、通信制御装置100−2aから、MKBと、ユニキャスト通信などの何らかの通信手段で発行されたグループIDと、グループ鍵と、を保持している。データ配布装置500は、グループIDで表現されるグループに属するノード200−2に対して、グループ鍵で暗号化したデータを配布する。
このように構成することで、各ノード200−2のファームウェアや周囲の状況など、各ノード200−2が共通に受信すべきデータを効率よく配布できる。データ配布装置500は1つに限定されるものではなく、役割やネットワークのトポロジに応じて複数存在してもよい。
図17は、変形例3の通信システムによる通信処理の一例を示すシーケンス図である。図17は、ノード200−2が属するグループを、アクセス装置400aによりアクセスするグループから、アクセス装置400cによりアクセスするグループに切り替える処理を含んでいる。
通信制御装置100−2aは、グループID(GID)とグループ鍵(GK)の発行を管理装置300aに対して要求する(ステップS301)。管理装置300aのMKB生成部108−2は、要求に応じてMKBを生成する(ステップS302)。グループ情報処理部302は、変更するグループ情報でグループ情報記憶部321に記憶されたグループ情報を更新する(ステップS303)。管理装置300aは、グループID、グループ鍵、MKB、および、署名を、通信制御装置100−2aに送信する(ステップS304)。なお、署名は管理装置300aの署名生成部105−2により生成される。
通信制御装置100−2aは、グループID(GID)とグループ鍵(GK)とを指定して、アクセス装置400cに対して、グループの変更を通知する(ステップS305)。「load balancing」は、負荷分散のため処理を引き継ぐことを表している。また、通信制御装置100−2aは、今まで用いていたグループID(GID’)とグループ鍵(GK’)とを指定して、アクセス装置400aに対して、グループの変更を通知してもよい(ステップS306)。「remove」は、当該グループに対する処理が不要になることを表している。
必要に応じて、ステップS305とステップS306を行わずに、通信制御装置100−2aは、データ配布装置500に対して、グループID(GID)とグループ鍵(GK)とを指定して、データの暗号化に利用するグループ鍵(GK)の新規割り当て、または、更新を行う(ステップS307)。「update」は、当該グループに対するグループ鍵が更新されることを表している。グループ鍵で暗号化して送付することで、ファームウェア(F/W)など、多くの機器が必要とする共通のデータを効率的に送付できる。必要に応じて、ステップS305とステップS306と共に、ステップS307を行ってもよい。また、データ配布装置の出力データの改ざんや偽造を防ぐために、データ配布装置が発行する署名を付してもよい。
「load balancing」、「remove」および「update」はあくまでも一例であり、グループ変更の理由はこれらに限定されない。例えば、アクセス装置400の故障やメンテナンスにより通信ができなくなったことによるグループ変更「failover」など、グループ変更の目的に応じてコマンドを定義することで、任意のグループ変更を実行できる。
通信制御装置100−2aは、ノード200−2に対して、MKBと署名とを含む出力情報を通知する(ステップS308)。ノード200−2は、出力情報に含まれるMKBからグループID(GID)とグループ鍵(GK)とを入手する(ステップS309)。ノード200−2は、グループIDより、新たな接続先であるアクセス装置400aを特定し、アクセス装置400aとの間でグループ鍵(GK)を用いた認証を行うことで、接続先の変更を通知する(ステップS310)。アクセス装置400aは、認証に合格したノードのみを接続させる。グループ鍵(GK)を用いた認証を行うことで、アクセス装置400aの処理コストを軽減する効果がある。また、アクセス装置400cに対して、接続先を変更することを通知してもよい(ステップS311)。その際に、今までのグループ鍵(GK’)を用いた認証を行うなどしてもよい。
データ配布装置500は、要求等に応じて、ノード200−2に対してグループ鍵で暗号化したデータを配布する(ステップS312)。ここで、グループ鍵を直接暗号化鍵に用いるのではなく、ノード200−2との間で予め共有された方法でグループ鍵を変換し、それを暗号化鍵として用いてもよい。例えば、公開のハッシュ関数や秘密のハッシュ関数を利用して、グループ鍵より暗号化鍵を導出できる。
以上説明したとおり、第1から第3の実施形態によれば、スケーラビリティを確保しながら動的なグループ管理を実現することができる。
次に、第1〜第3の実施形態にかかる装置(通信制御装置、ノード(通信装置)、管理装置、アクセス装置、データ配布装置等)のハードウェア構成について図18を用いて説明する。図18は、第1〜第3の実施形態にかかる装置のハードウェア構成を示す説明図である。
第1〜第3の実施形態にかかる装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス71を備えている。
第1〜第3の実施形態にかかる装置で実行されるプログラムは、ROM52等に予め組み込まれて提供される。
第1〜第3の実施形態にかかる装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供されるように構成してもよい。
さらに、第1〜第3の実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1〜第3の実施形態にかかる装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
第1〜第3の実施形態にかかる装置で実行されるプログラムは、コンピュータを上述した装置の各部として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
なお、上記各部は、例えば、CPU51などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、IC(Integrated Circuit)などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。