(58)【調査した分野】(Int.Cl.,DB名)
前記グループ情報が更新された場合に、更新後のグループに属する前記通信装置のデバイス鍵に基づいて、前記更新後のグループに属する前記通信装置がグループ鍵を導出可能なメディアキーブロックを生成するMKB生成部と、
を備える請求項2に記載の通信制御装置。
前記MKB処理が正常に実行された場合に、生成されたグループ鍵に対応するグループを識別するグループIDで、前記第1グループIDを更新するグループ制御部をさらに備える、
請求項10に記載の通信装置。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、この発明にかかる通信制御装置の好適な実施形態を詳細に説明する。
【0009】
GDOI(The Group Domain of Interpretation)は、マルチキャストを用いて、グループメンバの参加と離脱、および、グループ鍵の安全な配布を行うための技術である。GDOIでは、グループの作成、グループの更新、および、グループ鍵の配布を行うことができる。しかし、GDOIでは、グループメンバの更新ごとに、ほとんどすべてのメンバにおいて、階層構造を持つ鍵情報(LKH_DOWNLOAD_ARRAY)が更新される。そのため、1つの通信装置が複数のグループに所属するような場合には、単一の通信装置が複数のLKH_DOWNLOAD_ARRAYを持つことが必要となり、効率的な管理を行うことが困難である。
【0010】
そこで、本実施形態では、MKB(メディアキーブロック)という技術を用いてグループ操作を行う。MKBを用いることにより、単一のデバイス鍵(LKH_DOWNLOAD_ARRAYに相当する鍵束)によって、複数グループへの所属を効率的に管理することが可能である。
【0011】
MKBとは、対応するデバイス鍵を用いて処理を行うことで、メディアに記録されたコンテンツを復号するためのメディア鍵を導出可能なデータである。MKBは1以上の要素を含む。典型的なMKBは、1つのメディア鍵を1以上のデバイス鍵でそれぞれ暗号化することで生成される1以上の暗号文(要素)を含む。さらに、MKBは、各暗号文を処理するためのデバイス鍵を特定する情報を含んでも良い。MKBが含む暗号文の個数は、対応するデバイス鍵に依存して決まる。そのため、対応するデバイス鍵によっては、MKBは、非常に多くの暗号文を要素として含む場合がある。
【0012】
本実施の形態では、MKBを処理することで得られるメディア鍵を、グループに属する1以上の通信装置で共有されるグループ鍵として用いる。すなわち、グループに属する通信装置が保持するデバイス鍵で処理することでグループ鍵を導出できるMKBを配布することで、グループに属する通信装置にのみグループ鍵を配布できることを用いて、通信装置のグループ管理を実現している。
【0013】
MKBによってグループ管理(操作)を行う場合、あるMKBを処理してグループ鍵を取り出すことができたメンバはグループに所属する(現在所属していなければ、グループに新規参加する)という制御が行われる。また、グループ鍵の取得に失敗したメンバは当該グループに所属しない(現在所属していれば、グループから離脱する)という制御が行われる。
【0014】
しかし、対象となるメンバの数が非常に大きくなった場合、グループ操作用のMKBのサイズが極めて大きくなる可能性がある。従って、そのままMKBを通信ネットワークに配布した場合、通信負荷が極めて大きくなる可能性がある。
【0015】
そこで、本実施形態では、ネットワーク負荷を軽減するために、複数の暗号文を要素として含むMKBを分割して送付する。しかし、上記のようなグループ制御方法を前提とする場合、単純に暗号文ごとにMKBを分割送付しても、意図した通りのグループ制御を行うことができない場合がある。例えば、通信装置が分割されたMKBを受信して、かつ、当該MKBからグループ鍵を取得できなかった場合、当該通信装置はグループからの離脱処理を行う。しかし、実際には、当該通信装置が処理してグループ鍵を取得することができるようなMKBが後から到着する可能性があるからである。
【0016】
この問題を回避するため、MKBによるグループ操作の対象となる通信装置の集合を定める情報を、当該MKBに付す。例えば、対象となる通信装置を識別する装置ID(以下、デバイスIDという)の範囲を、通信装置の集合を定める情報として利用できる。例えば、数値的に連続したデバイスID割り振られている場合、第1のデバイスIDと第2のデバイスIDで、第1のデバイスIDと第2のデバイスIDで特定される範囲に属するデバイスIDの集合を表すことができる。この集合には、第1のデバイスID以上、かつ、第2のデバイスID以下であるデバイスIDが属する。規則に従ってデバイスIDが割り振られていれば、上述のように、2つのデバイスIDで範囲を表し、その規則より範囲に含まれるデバイスIDを特定することや、デバイスIDがその範囲に含まれるか否かを判定することができる。通信装置の範囲を定める情報が付されたMKBを受け取った通信装置は、以下の擬似コードに示すような動作を行う。
当該通信装置自身が指定範囲に含まれているか否かチェックする;
if(集合に含まれている){
MKBを処理;
if(グループ鍵取得成功){
if(現在グループに所属){
グループ更新;
}
else{ if(現在グループに所属していない){
グループに参加;
}
}
else{
if(現在グループに所属){
グループ離脱;
}
}
}
【0017】
当該通信装置自身が指定された集合(範囲)に含まれているか否かチェックする。もし、指定された集合に含まれているならば、当該通信装置が保持しているデバイス鍵によりMKBを処理し、グループ鍵の取得に成功し、かつ、グループに参加しているならば、導出したグループ鍵を用いて、参加しているグループの情報を更新する。グループ鍵の取得に成功し、かつ、グループに参加していないならば、導出したグループ鍵を用いて、グループに参加する。グループ鍵の取得に失敗し、かつ、グループに参加しているならば、グループより離脱する。
【0018】
このように、本実施形態では、最初に通信装置がグループ操作の対象装置であるか否かをチェックする。そして、自身がグループ操作の対象ではない場合、グループ操作を実行しない。これにより、分割されたMKBによっても、意図しないグループ離脱動作が起きないようにすることができる。
【0019】
以下、本実施形態の詳細について説明する。
図1は、本実施形態にかかる通信システムの構成の一例を示すブロック図である。
図1に示すように、本実施形態の通信システムは、通信装置200a〜200fと、通信制御装置100とが、ネットワーク60で接続された構成となっている。ネットワーク60は、インターネットなどのあらゆるネットワーク形態を適用できる。各通信装置200a〜200fは、通信制御装置100と直接接続されている必要はない。
【0020】
通信制御装置100は、1つに限られるものではなく、2以上の通信制御装置を備えるように構成してもよい。通信装置200a〜200fは同様の構成を備えるため、以下では単に通信装置200という場合がある。通信装置200の個数は6に限られるものではない。
【0021】
図1に示すように、本実施形態では、通信制御装置100が、各通信装置200に対してグループ操作コマンドを送信する。グループ操作コマンドは、例えば、更新後のグループを識別するグループID、通信装置200を特定する特定情報(例えばデバイスIDの範囲)、および、MKBを分割して得られる部分情報を含む。
【0022】
図2は、通信制御装置100の構成例を表すブロック図である。
図2に示すように、通信制御装置100は、グループ情報記憶部121と、アドレス記憶部122と、鍵記憶部123と、受信部101と、MKB生成部102と、抽出部103と、出力部104と、を備える。
【0023】
グループ情報記憶部121は、1以上の通信装置200が所属するグループのグループIDと、グループIDで識別されるグループに属する通信装置200を識別するデバイスIDとを含むグループ情報を記憶する。つまり、グループ情報記憶部121は、グループIDと、グループIDで識別されるグループに属する通信装置200のデバイスIDとを対応付けて記憶する。
【0024】
本実施の形態では、グループ情報記憶部121は、予め、1以上のグループIDを記憶しているとするが、グループ情報記憶部121を備えず、外部装置より受け取ったグループ情報に基づき、グループ操作を行うようにしてもよい。
【0025】
アドレス記憶部122は、1以上の通信装置200が所属するマルチキャストグループを特定する情報(マルチキャストグループID、マルチキャストアドレスなど)と、マルチキャストグループに属する通信装置200のデバイスIDとを対応づけて記憶する。マルチキャストグループは、MKBによるグループ操作の対象となるグループと独立に管理されるグループの一例である。マルチキャストアドレスは、例えば、対応する各デバイスIDの通信装置200に対してマルチキャスト通信で情報を送信するためのアドレスである。マルチキャスト通信を用いない場合(例えばブロードキャスト通信を用いる場合)、アドレス記憶部122を備えないように構成してもよい。
【0026】
本実施の形態では、アドレス記憶部122は、予め、1以上の特定情報を記憶しているとするが、外部装置より受け取った情報に基づき、アドレス記憶部122に新たな情報を追加したり、既に記憶されている情報の更新を行ったりするように構成しても良い。
【0027】
鍵記憶部123は、通信装置200それぞれに割り当てられるデバイス鍵を記憶する。後述するようにMKBがCS(Complete Subtree)法などにより生成される場合、鍵記憶部123が、木構造のノードに対応づけてデバイス鍵を記憶してもよい。
【0028】
受信部101は、通信装置200などの外部装置から各種情報を受信する。受信部101は、例えば、グループ制御の要求、および、グループ制御の対象を指定する情報などを受信する。グループ制御の要求とは、グループの新規作成、グループの変更(グループに属する通信装置200の変更など)などの要求である。例えば、キーボードなどの操作部(図示せず)を用いてオペレータが入力した、操作対象となるグループのグループIDと、当該グループに入れるべき通信装置200のデバイスIDとを、受信部101が受信するように構成してもよい。なお、外部装置からグループ制御の要求を受信した場合のみでなく、通信制御装置100内でグループ制御の要否を判断し、必要と判断した場合にグループ制御を実行してもよい。受信部101は、グループ制御の要求、および、グループ制御の対象を指定する情報(入力情報)をMKB生成部102に送る。
【0029】
MKB生成部102は、グループ制御の要求、および、グループ制御の対象を指定する情報に基づき、MKBの生成を行う。生成されたMKBは、グループ制御のために用いられる。例えば、MKB生成部102は、グループの更新を指定する入力情報を受付けた場合、入力情報に応じてグループ情報記憶部121のグループ情報を更新する。そして、MKB生成部102は、グループを更新した場合に、更新後のグループに属する通信装置200のデバイス鍵を用いることで、グループに属する通信装置のみが、更新後のグループのグループ鍵を導出可能なMKBを生成する。
【0030】
例えば、MKB生成部102は、グループに属する通信装置200が保持するデバイス鍵のリストとグループ鍵とが入力される。MKB生成部102は、入力されたデバイス鍵リストとグループ鍵とから、デバイス鍵リストに含まれるデバイス鍵を保持する装置のみがグループ鍵を得られるMKBを生成する。MKBの生成法としては、CS法、SD(Subset Difference)法、LKH(Logical Key Hierarchy)法などが既に知られており、そのようなあらゆる方法を用いることができる。
【0031】
MKB生成部102は、グループ情報の変更をグループ情報記憶部121に反映する。ここで、グループ情報の変更とは、グループIDとデバイスIDリストの新規追加、グループIDとデバイスIDリストの削除、および、あるグループIDに対応するデバイスIDリストの更新などを指す。
【0032】
抽出部103は、各通信装置200のデバイスIDのうち1以上のデバイスIDを特定する特定情報(例えばデバイスIDの範囲)ごとに、MKBのうち、特定情報で特定されるデバイスIDで識別される通信装置200のデバイス鍵で処理できる要素を含む部分情報を抽出する。また、抽出部103は、抽出した部分情報を含むグループ操作メッセージを生成する。例えば、部分情報は、通信装置200のデバイス鍵で処理できる暗号文と、その暗号文の処理に用いるデバイス鍵を特定する情報と、を含む。1つの部分情報に含まれる暗号文は、1つに限られるものではなく、複数の暗号文を含んでも良い。
【0033】
図3は、グループ操作メッセージのデータ構造の一例を示す図である。
図3に示すように、グループ操作メッセージは、MSG_IDと、TARGET_DIDと、GIDと、MKB_DATAと、を含む。MSG_IDは、メッセージの種類を示す情報である。MSG_IDには、例えば、グループ操作メッセージであることを示す番号が記録される。TARGET_DIDは、グループ操作メッセージが操作対象とする通信装置200のデバイスIDの集合を表す情報が記録される。例えば、操作対象となる通信装置200のデバイスIDの範囲が記録される。
【0034】
GIDは、当該グループ操作メッセージの操作対象であるグループのグループIDである。MKB_DATAは、MKBのデータ本体である。本実施形態では、MKB生成部102により生成されたMKB全体ではなく、このMKB全体から抽出部103により抽出されたMKBの一部の要素を含む部分情報が、MKB_DATAに設定される。
【0035】
次に、抽出部103の動作の一例を述べる。MKB生成部102が生成したMKBをMKB_tとする。また、グループ操作メッセージ(msgとする)のMSG_IDフィールド、TARGET_DIDフィールド、およびMKB_DATAフィールドを、それぞれmsg.MSG_ID、msg.TARGET_DID、およびmsg.MKB_DATAと表記する。
【0036】
抽出部103は、例えば、デバイスIDの範囲に従ってMKB全体から部分情報を抽出する。デバイスIDは、例えば通信装置200に割り当てられたリーフ番号である。以下に抽出部103による処理の一例を述べる。全リーフ番号の範囲を0〜(2^16−1)とする。抽出部103は、リーフ番号全体を複数に分割する。以下では、4分割する場合を考える。0〜(2^13−1)の範囲のリーフ番号をカバーするノードを全て集め、これを第1のMKB(部分情報の1つ)とする。同様に、2^13〜(2^14−1)の範囲のリーフ番号をカバーするノード全体を第2のMKB(部分情報の1つ)とする。2^14〜(2^15−1)の範囲のリーフ番号をカバーするノード全体を第3のMKB(部分情報の1つ)とする。2^15〜(2^16−1)の範囲のリーフ番号をカバーするノード全体を第4のMKB(部分情報の1つ)とする。
【0037】
以下に、抽出部103の動作を表す擬似コードの例を示す。
for(id in [分割されたリーフ番号の範囲のいずれであるかを特定する情報]){
msg.MKB_DATA=φ;
for(dev_id in [idが示すリーフ番号の範囲に含まれるデバイスID]){
msg.MKB_DATAに[MKB_tに含まれる、dev_idをカバーするデータ]を付加;
//[MKB_tに含まれる、dev_idをカバーするデータ]はφであっても良い。
}
if(msg.MKB_DATA≠φ){
msg.MSG_IDに適切なメッセージ番号を記録;
msg.TARGET_DID=idが示すリーフ番号の範囲に含まれるデバイスID;
msg.GIDに操作対象のグループIDを記録;
msg.を出力部104に送る;
}
}
【0038】
図4は、抽出部103の動作例を示すフローチャートである。抽出部103は、MKB生成部102が生成したMKBを取得する(ステップS11)。抽出部103は、分割されたリーフ番号の範囲:idごとに、次のような処理を行う。まず、抽出部103は、msg.MKB_DATAを空集合として初期化する(ステップS12)。抽出部103は、デバイスID(dev_id)が、リーフ番号の範囲idに含まれているか否かを判定する(ステップS13)。含まれている場合(ステップS13:Yes)、抽出部103は、MKB_tに含まれるdev_idをカバーするデータを抽出し、msg.MKB_DATAに抽出したデータを付加する(ステップS14)。データを付加した後、または、dev_idがidに含まれていない場合(ステップS13:No)、抽出部103は、idで特定されるdev_idの集合に属する全てのdev_idを処理したか否かを判定する(ステップS15)。処理していない場合(ステップS15:No)、ステップS13に戻り処理を繰り返す。処理した場合(ステップS15:Yes)、抽出部103は、msg.MKB_DATAが空集合であるか否かを判定する(ステップS16)。
【0039】
msg.MKB_DATAが空集合である場合(ステップS16:Yes)、ステップS21に遷移する。msg.MKB_DATAが空集合でない場合(ステップS16:No)、抽出部103は、msg.MSG_IDに適切なメッセージ番号を割り当てる(ステップS17)。抽出部103は、idが示すリーフ番号の範囲に含まれるデバイスIDを表す情報を、msg.TARGET_DIDに割り当てる(ステップS18)。抽出部103は、msg.GIDに操作対象のグループIDを割り当てる(ステップS19)。抽出部103は、(msg.MSG_ID、msg.TARGET_DID、msg.GID)の組を少なくとも含むmsgを出力部104に送る(ステップS20)。
【0040】
抽出部103は、すべてのリーフ番号の範囲(id)を処理したか否かを判定する(ステップS21)。処理していない場合(ステップS21:No)、抽出部103は、ステップS12に戻り、次の未処理のリーフ番号の範囲(id)に対して処理を繰り返す。処理した場合(ステップS21:Yes)、処理を終了する。
【0041】
上述の処理は、あくまでも1例である。例えば、S13の処理をidで特定されるリーフ番号に含まれるdev_idを読み出す処理に変更し、ステップS15をリーフ番号に含まれるdev_idをすべて処理したかの判定に変更しても、リーフ番号の範囲に基づくMKBの分割を実現できる。
【0042】
リーフ番号の範囲を表す情報idは、範囲の始点となるリーフ番号と、範囲の終点となるリーフ番号の組でも表すことができる。
【0043】
上述の動作により、分割されたリーフ番号の範囲について、それぞれ1つのmsgが出力部104に送られる。
【0044】
MKBにおいて、あるデバイスIDをカバーするデータとは、例えば、以下のように定義される。ここでは、CS法のMKBを想定する。CS法では、後述の例のとおり、デバイス鍵は、二分木の各ノードに割り振られた暗号鍵であるノード鍵の部分集合となる。異なるデバイス鍵は、必ず、異なるリーフにあたるノードに割り振られた暗号鍵を含む。リーフのノードに割り振られた暗号鍵を、リーフ鍵と呼ぶ。
【0045】
本実施の形態では、各リーフには、リーフを特定するためのリーフ番号が割り振られているとする。また、通信制御装置100が管理する通信装置200のデバイスIDは、通信装置200に割り当てられたデバイス鍵に含まれるリーフ鍵のリーフ番号とする。このようなデバイスIDは、あくまでも1例であり、CS法の二分木のリーフ番号と独立に割り振ってもよい。
【0046】
当該リーフ番号が割り当てられた通信装置200がMKBを正しく処理できる場合、当該リーフ番号をカバーするデータが存在する。デバイスIDをカバーするデータとは、ノード鍵でグループ鍵が暗号化された暗号文と、そのノードを特定するするインデックスであって、そのノードをルートとする部分木のリーフに、当該デバイスIDであるリーフ番号が割り当てられたノードが含まれたものである。他方、リーフ番号を割り当てられた通信装置200がMKBを正しく処理できない場合、当該リーフ番号をカバーするデータは存在しない。この場合、デバイスIDをカバーするデータは空集合φとする。デバイスIDをカバーするデータが、MKBの一部の要素からなる部分情報に相当する。
【0047】
つまり、通信装置200がMKBを正しく処理できるとは、通信装置200が保持するデバイス鍵を用いて、MKBよりグループ鍵を導出できることを指す。また、通信装置200がMKBを正しく処理できないとは、通信装置200が保持するあらゆる情報を用いたとしても、MKBよりグループ鍵を導出できないことを指す。
【0048】
図5は、CS法のMKBを用いる場合の具体例を示す図である。ここでは、リーフ番号は0または1の長さ3の列で表わす。すなわち、ルートノードからリーフ(末端)までの経路について、左に進んだ場合に0を割り当て、右に進んだ場合に1を割り当てることで、リーフ番号(「000」〜「111」)が得られる。ノードのインデックス(「0」、「1」、「00」、「01」、「10」、「11」)も同様に与えられる。各ノードおよび各リーフには暗号鍵が割り当てられている。例えば、インデックス「00」のノード(以下、インデックスnのノードをノードnともいう)には鍵k(00)が割り当てられている。
【0049】
図5の例では、次の3つの要素を含むMKBが与えられている。これらは、ノード00、リーフ番号100のリーフ(以下、リーフ番号mのリーフをリーフmともいう)、ノード11にそれぞれ対応する。
(00,Enc[k(00)](Kg)),(100,Enc[k(100)](Kg)),(11,Enc[k(11)](Kg))
ただし、Kgはグループ鍵を表し、Enc[k(00)](Kg)はKgをk(00)で暗号化したデータを表す。
【0050】
このMKBは、リーフ010、011および101にあたる通信装置200には正しく処理できない。すなわち、リーフ010、011および101にあたる通信装置200が保持するデバイス鍵や、その他に備えているあらゆる情報を用いたとしても、MKBよりKgを導出できない。
【0051】
また、CS法以外の方法で作成されたMKBも分割可能である。例えば、SD法のMKBを想定する。CS法と同様に、デバイスIDは通信装置200に割り当てられたリーフ番号であるが、SD法では、CS法とカバーの条件が異なる。SD法では、あるリーフ番号を保持する通信装置200がMKBを正しく処理できる場合、当該リーフ番号が、あるノードをルートとする木に含まれるが、当該ノードの子孫となる、ある1つのノードをルートとする木には含まれないような、ノードの組(ノード、子孫のノード)が存在する。デバイスIDをカバーするデータとは、上述の(ノード、子孫のノード)の組に割り当てられた暗号鍵で暗号化されたグループ鍵、および、ノードの組に含まれる各ノードを指定するインデックスの組である。
【0052】
他方、あるリーフ番号にあたる通信装置200がMKBを正しく処理できない場合、当該リーフ番号をカバーする木のノードは存在しない。すなわち、MKBを正しく処理できない通信装置に割り当てられたリーフ番号は、当該リーフ番号があるノードをルートとする木に含まれ、かつ、その子孫のノードをルートとする木にも含まれるようなノードの組(ノード、子孫のノード)が存在するか、当該リーフ番号を含むノードを持つが組(ノード、子孫のノード)が存在しない。この場合、デバイスIDをカバーするデータは空集合φとする。
【0053】
図6は、SD法のMKBを用いる場合の具体例を示す図である。CS法の例(
図5)と同様に、リーフ番号は0または1の長さ3の列で表わす。各ノードと、ノードの各子孫のノードの組には暗号鍵が割り当てられている。例えば、ノード0とノード01との組には鍵k(0,01)が割り当てられている。このような鍵を全て保持すると、多くの記憶領域が必要となる。このため、一方向性関数を応用して、このような鍵を逐次計算するための鍵のみを記憶することで、記憶領域を削減するように構成してもよい。
【0054】
図6の例では、次の2つの要素を含むMKBが与えられている。これらは、ノード0とノード00の組、および、ノード10とリーフ101の組にそれぞれ対応する。
((0,01),Enc[k(0,01)](Kg)),((10,101),Enc[k(10,101)](Kg)))
【0055】
従って、リーフ010、011、101、110および111にあたる通信装置200では、このMKBを正しく処理できない。このとき、リーフ000をカバーするデータは((0,10),Enc[k(0,01)](Kg))となる。ただし、Kgはグループ鍵を表し、Enc[k(0,01)](Kg)はKgをk(0,01)で暗号化したデータを表す。また、リーフ011にあたる通信装置200は、このMKBを正しく処理できないため、リーフ011をカバーするデータは空集合φである。すなわち、リーフ011は、k(0,01)を保持しない、または、導出できないように、デバイス鍵が割り振られている。同様に、例えば、ノード100をカバーするデータは((10,101),Enc[k(10,101)](Kg))となる。
【0056】
CS法およびSD法以外のMKBも、そのMKBの構成に合わせて、生成されたMKB全体から、指定された範囲のデバイスIDで識別される通信装置200のデバイス鍵で処理できる部分情報を抽出するように抽出部103を構成すればよい。
【0057】
図2に戻り、出力部104は、グループ情報が更新された場合に、更新後のグループのグループIDと、特定情報(例えば、デバイスIDの範囲)と、部分情報とを含む出力情報を出力する。例えば、出力部104は、出力情報としてグループ操作メッセージを、グループ操作メッセージのTARGET_DIDに含まれるデバイスIDの通信装置200が属するマルチキャストグループ宛にマルチキャストで送信する。このようにグループ変更の対象ではない通信装置200にも出力部104の出力が届くことを許容することで、許容しない場合と比較して、出力部104による出力先の決定に要する計算コストを軽減できる。
【0058】
また、出力部104より、更新前のグループには含まれるが、更新後のグループには含まれない通信装置200が含まれるマルチキャストグループに、上述の情報を送信するようにしてもよい。そのような通信装置200は、マルチキャストグループに属しているが、部分情報を正しく処理できないため、更新後のグループから離脱を行う。このように、分割したMKBを用いて、グループの離脱を命じるコマンドを発行することができる。このようなコマンドを発行することで、通信装置200が保持すべき情報を適切に管理することができる。
【0059】
また、更新後のグループに含まれない通信装置200に、上述のような、離脱を命じるコマンドを送付しなくても良い。これは、更新後のグループに含まれない通信装置は、更新を命じるコマンドより、更新後のグループ鍵を導出できないため、更新後のグループには参加できないためである。このように構成することで、通信制御装置100が発行すべきコマンドの量を削減できる場合がある。
【0060】
出力部104は、MKBによるグループ操作の対象となるグループとは独立に管理される通信装置200の集合(グループ)であって、少なくともグループが更新されたすべての通信装置200を含む通信装置200の集合に対して出力情報を出力する。ここで、通信装置200の集合とは、複数の通信装置200からなる集まりであって、グループIDが割り振られているグループとは必ずしも一致しない。通信装置200の集合の例として、あるマルチキャスト通信でデータを受信する通信装置200の集合や、ブロードキャスト通信でデータを受信する通信装置200からなる集合、つまりすべての通信装置200からなる集合、などが挙げられる。例えば、出力部104は、デバイスIDリストが含まれる通信装置200の集合、または、グループに対して、1以上のマルチキャスト通信やブロードキャスト通信により出力情報を送信してもよい。マルチキャスト通信で出力情報を送信する場合、出力部104は、例えばアドレス記憶部122に記憶されたアドレスのうち、配布対象のデバイスIDのデバイスIDに対応づけられた1以上のアドレス(マルチキャストアドレス)を宛先として、出力情報を送信する。
【0061】
上述の例では、抽出部103は、特定情報で指定されたデバイスIDの範囲で表されるデバイスIDの集合に従って、MKBを分割するものであるが、抽出部103には異なる動作も考えられる。先に受け取ったMKBよりMKBの部分情報を定め、当該MKBの部分情報と更新後のグループに属する装置IDより、デバイスIDの範囲指定する特定情報を定めて、MKBの分割を行う方法が考えられる。
【0062】
その一例を下記に示す。
図5のMKBを{M1、M2}と表記する。M1、M2は互いに共通部分の無いMKBの2個の部分集合である。
図5では、M1={(00,Enc[k(00)](Kg))}、M2={(100,Enc[k(100)](Kg))、(11,Enc[k(11)](Kg))}である。抽出部103の処理を以下に示す。
MKBより[MKBの部分集合]を生成;
for(m in [MKBの部分集合]){//mはM1またはM2
[mを処理できるデバイスID集合]=φ;
for(node−data in [mの要素]){
for (dev_id in [node−dataがカバーするデバイスID]){
[mを処理できるデバイスID集合]にdev_idを追加;
}
}
[mを処理できるデバイスID集合]を含むデバイスID集合の特定情報を生成;
}
if (生成した特定情報で特定される集合が共通の要素を持つ){
共通の要素を持たないように特定情報を調整する;
}
全ての特定情報とそれに対応するmの組を出力部104に送る;
【0063】
まず、MKBより、要素を選択し、MKBの部分集合を生成する。上述の例では、(00,Enc[k(00)](Kg))を選択してM1とし、(100,Enc[k(100)](Kg))と(11,Enc[k(11)](Kg))とを選択してM2とし、[MKBの部分集合]={M1,M2}とした。上述の選択法はあくまでも1例であり、任意の方法で要素の選択を行ってよい。
【0064】
[MKBの部分集合]に含まれる要素mごとに、次の処理を行う。[mを処理できるデバイスIDの集合]を初期化し、[mの要素]に含まれるnode−dataごとに、node−dataがカバーするdev_idを特定し、[mを処理できるデバイスID集合]にdev_idを追加する。mに含まれるすべてのnode−dataに対して上述の処理を行うことで、[mを処理できるデバイスID集合]を得る。
【0065】
そして、[mを処理できるデバイスID集合]に含まれる全てのデバイスIDを含む集合の特定情報を生成する。例えば、デバイスIDとして連続した数値が割り振られている場合、[mを処理できるデバイスID集合]に含まれる最小の数値で表現されるデバイスIDと最大の数値で表現されるデバイスIDとで表現される範囲に含まれるデバイスIDを要素とする集合とし、その特定情報は、最小の数値で表現されるデバイスIDと最大の数値で表現されるデバイスIDの組である。これは、あくまでも1例であり、特定情報の決定法は上述の方法に限られない。
【0066】
全てのmに対して、特定情報を求めたら、それら特定情報で特定される集合が共通要素を持つかを検査する。もし、共通要素を持つ特定情報が存在した場合、共通要素を持たない集合の特定情報となるよう調整を行う。例えば、この調整では、共通要素をもつ2つの集合より、共通要素のみを含む集合と、共通要素を取り除いた2つの集合を生成し、それら3つの集合を特定する3つの特定情報を新たに生成してもよい。また、例えば、共通要素をもつ2つの集合より、一方の集合から共通要素を取り除いた集合を生成し、その集合を特定する特定情報を新たに生成してもよい。
【0067】
共通要素を持たない場合は、上述の調整処理は行わない。
【0068】
また、グループ情報記憶部121を参照するなどし、更新前のグループには含まれるが、更新後のグループには含まれない通信装置200も含むように、特定情報を生成しても良い。
【0069】
例えば、[mを処理できるデバイスID集合]を空集合で初期化するのではなく、更新前のグループには含まれるが、更新後のグループには含まれない装置IDのリストで初期化することで、上述の特定情報を生成できる。これは、生成される全ての[mを処理できるデバイスID集合]には、更新前のグループには含まれるが、更新後のグループには含まれない装置IDが重複しているが、共通の要素を持たないように特定情報を調整する処理により、重複した装置IDは、取り除かれるからである。
【0070】
また、[mを処理できるデバイスID集合]を空集合で初期化して、上述の処理で[mを処理できるデバイスID集合]を生成し、共通の要素を持たないように特定情報を調整する処理を行う際に、加えて、更新前のグループには含まれるが、更新後のグループには含まれない全ての装置ID、いずれかの特定情報に含まれるように調整を行うようにしても良い。
【0071】
抽出部103は、このようにして生成した1以上の特定情報とmの組を出力部104に送る。
【0072】
図7は、通信装置200の構成例を表すブロック図である。
図7に示すように、通信装置200は、GID記憶部221と、グループ鍵記憶部222と、デバイス鍵記憶部223と、デバイスID記憶部224と、受信部201と、判定部202と、MKB処理部203と、グループ制御部204と、を備える。
【0073】
GID記憶部221は、通信装置200が属するグループのグループID(GID)を記憶する。グループ鍵記憶部222は、GID記憶部221が記憶するグループIDで識別されるグループのグループ鍵を記憶する。デバイス鍵記憶部223は、通信装置200のデバイス鍵を記憶する。デバイスID記憶部224は、通信装置200のデバイスIDを記憶する。
【0074】
受信部201は、通信制御装置100および他の通信装置200などの外部装置から各種情報を受信する。例えば、受信部201は、グループ操作メッセージを通信制御装置100から受信する。受信部201は、マルチキャスト通信およびブロードキャスト通信などにより出力情報を受信する。判定部202は、受信されたメッセージがグループ操作メッセージであるか判定する。グループ操作メッセージでない場合、受信されたメッセージは、当該メッセージを処理すべき他のモジュール(図示せず)に渡されて処理される。メッセージがグループ操作メッセージである場合、メッセージのデータは判定部202に送られる。
【0075】
判定部202は、グループ操作メッセージに含まれる特定情報(TARGET_DID)に、デバイスID記憶部224に記憶されたデバイスIDが含まれるか否か判定する。含まれない場合、当該通信装置200は受信したグループ操作メッセージの対象機器ではないので、当該グループ操作メッセージに対する動作を中止する。含まれる場合は、当該通信装置200はグループ操作メッセージの対象であるので、グループ操作メッセージはMKB処理部203に渡される。
【0076】
MKB処理部203は、特定情報(TARGET_DID)にデバイスID記憶部224に記憶されたデバイスIDが含まれると判定された場合に、グループ操作メッセージに含まれる部分情報(MKB_DATA)と、デバイス鍵記憶部223に記憶されたデバイス鍵とからグループ鍵を生成するMKB処理を実行する。MKB処理の結果、グループ鍵が得られた場合、当該通信装置200はGIDに示されるグループに所属することを意味する。MKB処理部203は、GIDと、取得したグループ鍵と、をグループ制御部204に送る。
【0077】
グループ制御部204は、GIDをGID記憶部221に格納し、グループ鍵をグループ鍵記憶部222に格納する。既にGIDが記憶されている場合は、グループ制御部204は、グループ操作メッセージ内のGIDで、GID記憶部221に記憶されているGIDを更新する。
【0078】
一方、MKB処理の結果、グループ鍵が得られなかった場合は、当該通信装置200はGIDに示されるグループに所属しないことを意味する。従って、所属している場合は離脱する必要がある。このため、MKB処理部203は、GIDと、グループ鍵が取得できなかった旨の通知と、をグループ制御部204に送る。
【0079】
グループ制御部204は、GID記憶部221とグループ鍵記憶部222とを空にする。GIDまたはグループ鍵が既に格納されている場合は、グループ制御部204はそれらを消去する。
【0080】
なお、上述の各記憶部は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【0081】
また、通信制御装置100の受信部101、MKB生成部102、抽出部103、および、出力部104、並びに、通信装置200の受信部201、判定部202、MKB処理部203、および、グループ制御部204は、例えば、CPU(Central Processing Unit)などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、IC(Integrated Circuit)などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
【0082】
次に、本実施形態にかかる通信制御装置100による通信制御処理について
図8を用いて説明する。
図8は、本実施形態における通信制御処理の一例を示すフローチャートである。
【0083】
受信部101は、操作対象となるグループのGIDと、当該グループに属する通信装置200のデバイスIDとを取得(受信)する(ステップS101)。MKB生成部102は、取得されたデバイスIDをもとにMKBを生成する(ステップS102)。例えば、MKB生成部102は、取得されたデバイスIDの通信装置200がグループ鍵を得られるMKBを生成する。
【0084】
次に、抽出部103は、生成されたMKBから部分情報を抽出する(ステップS103)。まず、抽出部103は、通信装置200それぞれのデバイスIDの範囲を複数の範囲に分割する。例えば、抽出部103は、上述の例のようにデバイスIDの範囲(リーフ番号の範囲)を4つに分割する。抽出部103は、分割した範囲を特定する特定情報ごとに、MKBのうち、特定情報で特定される範囲に含まれるデバイスIDで識別される各通信装置200のデバイス鍵で処理できる部分を表す部分情報を抽出する。抽出部103は、抽出した部分情報を含むグループ操作メッセージを生成する。
【0085】
出力部104は、グループ操作メッセージを出力する(ステップS104)。グループ操作メッセージはTARGET_DIDごとに生成される。このため、出力部104は、TARGET_DIDの個数分、グループ操作メッセージを出力する。
【0086】
次に、本実施形態にかかる通信装置200によるグループ制御処理について
図9を用いて説明する。
図9は、本実施形態におけるグループ制御処理の一例を示すフローチャートである。
【0087】
受信部201は、通信制御装置100などの外部装置からメッセージを受信する(ステップS201)。受信部201は、受信したメッセージがグループ操作メッセージであるか否かを判定する(ステップS202)。グループ操作メッセージでない場合(ステップS202:No)、グループ制御処理を終了する。なお、上述のようにグループ操作メッセージ以外のメッセージは、当該メッセージを処理すべきモジュールに渡されて適切に処理される。
【0088】
グループ操作メッセージである場合(ステップS202:Yes)、判定部202は、グループ操作メッセージ内のTARGET_DIDに、デバイスID記憶部224に記憶されたデバイスIDが含まれるか否かを判定する(ステップS203)。
【0089】
TARGET_DIDにデバイスIDが含まれない場合(ステップS203:No)、グループ操作の対象外であるため、グループ制御処理を終了する。TARGET_DIDにデバイスIDが含まれる場合(ステップS203:Yes)、MKB処理部203は、グループ操作メッセージ内のMKB(MKG_DATA)を処理する(ステップS204)。
【0090】
MKB処理部203は、MKBが正しく処理されたか否かを判定する(ステップS205)。正しく処理された場合(ステップS205:Yes)、グループ制御部204は、グループ操作メッセージ内のGIDをGID記憶部221に記憶するとともに、MKB処理により得られたグループ鍵をグループ鍵記憶部222に記憶する(ステップS206)。正しく処理されなかった場合(ステップS205:No)、グループ制御部204は、グループ操作メッセージ内のGIDをGID記憶部221から削除するとともに、グループ鍵をグループ鍵記憶部222から削除する(ステップS207)。
【0091】
このように、本実施形態にかかる通信制御装置では、スケーラビリティを確保しながら動的なグループ管理を実現することができる。また、グループ管理のために、MKB全体ではなく、MKBから抽出された部分情報を送信するため、通信負荷を軽減することができる。このとき、グループ操作の対象となる通信装置の範囲を定める情報とともに部分情報を送信するため、意図しないグループ操作が行われることを回避できる。
【0092】
(変形例1)
第1の実施形態の抽出部103では、ある特定情報で特定されるデバイスIDをカバーするMKBの一部の要素を含む部分情報を抽出し、抽出した部分情報を、出力部104を通じて送出していた。しかし、抽出した部分情報をそのまま送出するのではなく、予め定められたサイズ以下となるように、特定情報をさらに分割し、分割した特定情報に応じて、部分情報を再分割して、特定情報と再分割した部分情報を、おのおの、出力部104に送り、送出するようにしてもよい。また、予め定められたサイズ以下とするのではなく、各マルチキャストグループに送出される部分情報が、同一のサイズとなるように特定情報と部分情報の再分割を行ってもよい。さらに、この予め定められたサイズを、状況に応じて変更してもよい。このように、特定情報と部分情報の再構成を行うことで、通信速度、通信装置200が備える一時記憶領域の量などの性能、マルチキャストグループの特性などを考慮し、様々な状況に適したコマンドを送出できる。
【0093】
(変形例2)
第1の実施形態の抽出部では、MKBより、MKBの一部の要素を含む部分情報を抽出し、各部分情報に対して、当該部分情報に応じた特定情報を生成し、出力部を通じて、当該部分情報と当該特定情報を送出していた。しかし、あるマルチキャストグループに、1以上の部分情報が送出される場合、それらの部分情報を一括するなど、再構成をして、出力部104に送り、送出するようにしてもよい。さらに、変形例1と同様に、送出される部分情報が、予め定められたサイズ以下となるように再分割をしてもよい。また、予め定められたサイズ以下とするのではなく、各マルチキャストグループに送出される部分情報の組が、同一のサイズとなるように再分割を行ってもよい。この予め定められたサイズとして、マルチキャストグループごとに異なるサイズを定めてもよい。このように、部分情報の再構成を行うことで、通信速度、通信装置200が備える一時記憶領域の量などの性能、マルチキャストグループの特性などを考慮し、様々な状況に適したコマンドを送出できる。
【0094】
次に、本実施形態にかかる通信制御装置のハードウェア構成について
図10を用いて説明する。
図10は、本実施形態にかかる通信制御装置のハードウェア構成を示す説明図である。
【0095】
本実施形態にかかる通信制御装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。
【0096】
本実施形態にかかる装置(通信制御装置、通信装置)で実行されるプログラムは、ROM52等に予め組み込まれて提供される。
【0097】
本実施形態にかかる装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【0098】
さらに、本実施形態にかかる装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【0099】
本実施形態にかかる装置で実行されるプログラムは、コンピュータを上述した各部として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【0100】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。