JP2005005806A - データ処理方法、そのプログラムおよびその装置 - Google Patents
データ処理方法、そのプログラムおよびその装置 Download PDFInfo
- Publication number
- JP2005005806A JP2005005806A JP2003164287A JP2003164287A JP2005005806A JP 2005005806 A JP2005005806 A JP 2005005806A JP 2003164287 A JP2003164287 A JP 2003164287A JP 2003164287 A JP2003164287 A JP 2003164287A JP 2005005806 A JP2005005806 A JP 2005005806A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processing device
- decryption
- sets
- label
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】複数の処理装置に提供した暗号データを、指定した前記処理装置に復号用データを基に復号させる場合に、各処理装置に保持させる復号用データの数を削減できるデータ処理方法を提供する。
【解決手段】管理装置2が、受信装置u1〜u16について複数の集合を規定し、同じ集合に属する受信装置が共通の鍵データを取得するために用いるラベルデータおよび中間ラベルデータを生成する。管理装置2は、上記生成したラベルデータおよび中間ラベルデータを、セキュアな状態で、対応する受信装置に提供する。管理装置2は、何れの受信装置をリボークするかに応じて、リボークしない受信装置のみを要素とする単数または複数の上記集合を特定し、当該特定した集合を指定する集合指定データと、暗号データを受信装置に送信する。
【選択図】 図1
【解決手段】管理装置2が、受信装置u1〜u16について複数の集合を規定し、同じ集合に属する受信装置が共通の鍵データを取得するために用いるラベルデータおよび中間ラベルデータを生成する。管理装置2は、上記生成したラベルデータおよび中間ラベルデータを、セキュアな状態で、対応する受信装置に提供する。管理装置2は、何れの受信装置をリボークするかに応じて、リボークしない受信装置のみを要素とする単数または複数の上記集合を特定し、当該特定した集合を指定する集合指定データと、暗号データを受信装置に送信する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、暗号データの復号に係わる処理を行うデータ処理方法、そのプログラムおよびその装置に関する。
【0002】
【従来の技術】
例えば、管理装置が、複数の受信装置に暗号データを送信し、リボークしない受信装置でのみ、当該暗号データを復号させる場合がある。
このような方式に、下記非特許文献1,2に記載されているSD(Subset Difference) がある。
このSD方式では、2分木によって構成されるツリーの各リーフに受信装置を対応付け、前記ツリーのルート、ノードおよびリーフのうちルートからあるリーフへのパス上に存在する2つの要素からなる組を規定する。そして、各組について、当該組の要素のうちルートに近い一方の要素から分岐したリーフから、他方の要素から分岐したリーフを除いたリーフに対応付けられた受信装置を要素とする複数の集合を規定する。
これにより、各受信装置は、各々要素が異なる複数の集合の要素となる。
【0003】
また、管理装置が、各集合にラベルデータを割り当て、各受信装置に、当該受信装置が要素となる集合に割り当てたラベルデータのうち、所定のラベルデータをセキュアな状態で提供する。
そして、管理装置が、リボークしない受信装置のみを要素とする単数または複数の集合を特定し、当該集合に割り当てたそれぞれラベルデータから取得した鍵データを基に、コンテンツデータをそれぞれ暗号化して単数または複数の暗号データを生成し、これを全ての受信装置に送信すると共に、上記特定した集合を受信装置に指定する。
受信装置は、指定を受けた集合の要素である場合に、当該集合に対応するラベルデータを基に鍵データを生成し、管理装置から受信した暗号データを、当該鍵データを用いて復号する。
【0004】
【非特許文献1】
D.Halevy and A Shamir, ”The LCD broadcast encryption scheme”, CRYPTO 2002, Lecture Notes in Computer Science,vol.2442. pp.47−60,2002
【非特許文献2】
D.Naor,M.Naor and J.Lotspiech,”Revocation and tracing schemes for stateless receivers”, CRYPTO 2001.Lecture Notes in Computer Science.vol 2139.pp.41−62,2001.
【0005】
【発明が解決しようとする課題】
上述した従来のSD方式では、後述するように、各受信装置について、当該受信装置が割り当てられたツリー上のリーフとルートとの間に位置するルートおよび各ノードについて、当該ルートおよびノードと、これらに対してリーフ側に位置すると共に上記パス上のノードから当該パス以外の方向に直接分岐したノードまたはリーフとの組によって規定される集合に割り当てたラベルデータを、当該受信装置にセキュアな状態で提供して保持させる。受信装置は、上記規定した組の集合のうち、ラベルデータを受けていない集合のラベルデータを、上記提供を受けたラベルデータを基に演算を行って取得する。
ここで、受信装置の数をNとした場合に、管理装置が各受信装置に提供して保持させるラベルデータの数は、下記式(1)で示される。
【0006】
【数1】
【0007】
ところで、上述した従来のSD方式では、各受信装置に保持させるラベルデータの数(データ量)をさらに削減したいという要請がある。
上記非特許文献1に記載されたLSD方式についても、同様な要請がある。
また、上述した例の他に、暗号データの復号に複数の復号用データが用いられる場合に、復号を行う処理装置が保持する復号用データの数を削減したいという要請がある。
【0008】
本発明はかかる事情に鑑みてなされたものであり、複数の処理装置に提供した暗号データを、指定した前記処理装置に復号用データを基に復号させる場合に、各処理装置に保持させる復号用データの数を削減できるデータ処理方法、そのプログラムおよびその装置を提供することを目的とする。
【0009】
【課題を解決するための手段】
上述した目的を達成するために、第1の発明のデータ処理方法は、複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理方法であって、相互に異なる前記処理装置を要素とする複数の第1の前記集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の前記集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の工程と、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の工程で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の工程と、前記第1の工程で生成した前記第2の復号用データと、前記第2の工程で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の工程とを有する。
【0010】
第1の発明のデータ処理方法の作用は以下のようになる。
先ず、第1の工程において、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する。
次に、第2の工程において、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の工程で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する。
次に、第3の工程において、前記第1の工程で生成した前記第2の復号用データと、前記第2の工程で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する。
【0011】
第2の発明のプログラムは、複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理装置が実行するプログラムであって、相互に異なる前記処理装置を要素とする複数の第1の集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の手順と、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手順で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の手順と、前記第1の手順で生成した前記第2の復号用データと、前記第2の手順で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の手順とを前記データ処理装置に実行させる。
【0012】
第3の発明のデータ処理装置は、複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理装置であって、相互に異なる前記処理装置を要素とする複数の第1の集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の手段と、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手段で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の手段と、前記第1の手段で生成した前記第2の復号用データと、前記第2の手段で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の手段とを有する。
【0013】
第3の発明のデータ処理装置の作用は以下のようになる。
先ず、第1の手段が、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する。
次に、第2の手段が、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手段で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する。
次に、第3の手段が、前記第1の手段で生成した前記第2の復号用データと、前記第2の手段で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する。
【0014】
第4の発明のプログラムは、復号用データを基に暗号データを復号するデータ処理装置が実行するプログラムであって、指定された復号用データを保持している場合に、前記指定された復号用データを基に前記暗号データを復号する第1の手順と、前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する第2の手順とをデータ処理装置に実行させる。
【0015】
第5の発明のデータ処理装置は、復号用データを基に暗号データを復号するデータ処理装置であって、指定された復号用データを保持している場合に、前記指定された復号用データを基に前記暗号データを復号する第1の手段と、前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する第2の手段と有する。
【0016】
第5の発明のデータ処理装置の作用は以下のようになる。
指定された復号用データを保持している場合には、第1の手段が、前記指定された復号用データを基に前記暗号データを復号する。
一方、前記指定された復号用データを保持しない場合には、第2の手段が、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する。
【0017】
【発明の実施の形態】
第1実施形態
以下、本発明の実施形態に係わる通信システムについて説明する。
図1は、本発明の実施形態に係わる通信システム1の全体構成図である。
図1に示すように、通信システム1は、例えば、管理装置2と、16個の受信装置u1〜u16を有する。
ここで、受信装置u1〜u16が第1〜第3の発明の処理装置、並びに第4および第5の発明のデータ処理装置に対応している。
また、管理装置2が、第2および第3の発明のデータ処理装置に対応している。
なお、受信装置uの数は、16個に限定されず、複数であれば任意である。
【0018】
通信システム1では、管理装置2から受信装置u1〜u16には、例えば、無線で暗号データが送信(提供)される。
なお、本発明では、受信装置の代わりに、再生装置などの処理装置を用い、管理装置(送信装置)から処理装置への暗号データの提供を、光ディスク、磁気ディスクあるいは半導体記憶装置などの記録媒体を介して行ってもよい。
【0019】
通信システム1では、管理装置2が、前処理において、受信装置u1〜u16について複数の集合を規定し、同じ集合に属する受信装置u1〜u16が共通の鍵データを取得するために用いるラベルデータLABELおよび中間ラベルデータIL(本発明の第3の復号用データ)を生成する。
そして、管理装置2は、上記生成したラベルデータLABELおよび中間ラベルデータILを、セキュアな状態で、対応する受信装置u1〜u16に提供する。
管理装置2は、リボケーション処理において、何れの受信装置をリボークするかに応じて、リホークしない受信装置のみを要素とする単数または複数の上記集合を特定し、当該特定した集合を指定する集合指定データと、当該特定した単数または複数の集合に割り当てたラベルデータを基に暗号化した単数または複数の暗号データを受信装置u1〜u16に送信する。
【0020】
以下、図1に示す管理装置2および受信装置u1〜u16について説明する。
〔管理装置2〕
図2は、図1に示す管理装置2のハードウェア構成図である。
図2に示すように、管理装置2は、例えば、通信部11、メモリ12および処理部13を有する。
通信部11は、処理部13が生成したデータを無線方式で送信する。当該送信は、例えば、放送などのプッシュ(PUSH)方式で、ソフトウェア無線(SDR:Software Defined Radio)によるSDR・セキュア・ダウンロードを行う。
メモリ12は、処理部13によって実行されるプログラムPRG1と、プログラムPRG1の実行に用いられる種々データを記憶する。
ここで、プログラムPRG1が第2の発明のプログラムに対応している。
メモリ12は、例えば、後述するツリー、当該ツリーのリーフへの受信装置u1〜u16の割り当て、一方向置換FL ,FR (本発明の一方向関数)、その逆置換FL −1,FR −1(本発明の逆関数)、疑似乱数生成器G、ハッシュ関数H、ラベルデータLABEL(i,j)、中間ラベルデータIL(i,j)に関する情報をセキュアな状態で記憶している。
本明細書において、セキュアな状態とは、データや内容を外部から監視、改竄できない状態をいう。
管理装置2は、一方向置換FL ,FR 、疑似乱数生成器G、関数Hに関する情報を受信装置u1〜u16に公開する。
【0021】
ここで、一方向置換とは、入力xが与えられたときにy=F(x)を計算するのは容易であるが、yが与えられたときにy=F(x)を満たすxを見つけること(すなわち逆置換F−1(y)を計算すること)は、Fを作成したときに用いた秘密を知る場合のみ容易に行え、秘密を知らないものには計算量的に困難であるような置換である。
一方向置換としてよく知られているものに、RSA(Rivest Shamir Adleman)関数がある。
本実施形態では、RSA関数を用いて、一方向置換FL ,FR とそれぞれの逆置換FL −1,FR −1を下記式(2)〜(5)のように定める。
【0022】
【数2】
FL (x)=XeL+cL modM …(2)
【0023】
【数3】
FL −1(x)=(x−cL)dL mod M …(3)
【0024】
【数4】
FR (x)=XeR+cR modM …(4)
【0025】
【数5】
FR −1(x)=(x−cR)dR mod M …(5)
【0026】
ここで,Mは2つの素数p,qの積であり、eL,eRはそれぞれMより小さく、(p−1)(q−1)と互いに素になるようなeL≠eRを満たす整数、dL,dRは(p−1)(q−1)を法としたときのそれぞれeL,eRの逆数である。また係数cL≠係数cRを満たす。
本実施形態では、管理装置2は、上記p,q,dL,dRをセキュアな状態でメモリ12に記憶する。
また、管理装置2は、一方向置換FL ,FR を計算するのに必要なM,eL,eR,cL,cRを受信装置u1〜u16に公開する。
なお、落とし戸つき一方向置換としてのRSA関数の解説は、たとえばO.Goldreich著,岡本龍明,藤崎英一郎訳,「現代暗号・確率的証明・擬似乱数」,シュプリンガー・フェアラーク,2001年,pp.168−169に記されている。
メモリ12は、後述するようにして生成したラベルデータLABEL(i,j)、中間ラベルデータIL(i,j)、並びに必要に応じて各集合S(i,j)の鍵データSK(i,j)をセキュアな状態で記憶する。
【0027】
処理部13は、メモリ12に記憶されたプログラムPRG1を実行し、その実行に応じて管理装置2の処理を統括して制御する。本実施形態において、管理装置2の処理は、処理部13が実行するプログラムPRG1によって規定される。
【0028】
処理部13は、プログラムPRG1の実行に応じて、受信装置u1〜u16に所定のラベルデータLABELおよび中間ラベルデータILを提供する前処理と、何れの受信装置をリボークするかに応じて選択した集合を指定する集合指定データと、リボークしない受信装置u1〜u16のみが復号可能な暗号データを送信するリボケーション処理とを行う。
【0029】
以下、管理装置2が行う各処理について説明する。
〔前処理〕
図3は、管理装置2が行うリボケーション処理の前処理を説明するためのフローチャートである。
図3において、ステップST7が第1の発明の第1の工程および第2の工程に対応し、ステップST12が第1の発明の第3の工程および第5の工程に対応している。
また、ステップST8が第1の発明の第4の工程に対応している。
また、第3の発明の第1手段および第2手段は、処理部13がステップST7を実行することで実現され、第3の発明の第3の手段は処理部13がステップST12を実行することで実現される。
【0030】
ステップST1:
管理装置2は、先ず、例えば、図4に示す2分木によって構成されるツリー20を定義し、その情報をメモリ12に記憶する。
ステップST2:
管理装置2は、図4に示すように、ツリー20の16個のリーフの各々に16個の受信装置u1〜u16を割り当て、その情報をメモリ12に記憶する。
る。
【0031】
ステップST3:
管理装置2は、各ノードについて、ノード(i)の子孫であるノード(j)に対応する集合S(i,j)を定義する。
本実施形態では、リーフ、並びに2分木の分岐点(ルートを含む)をノードとする。
上記集合S(i,j)は、ツリー20の2つのノード(i),(j)を用いて、「(ノード(i)から分岐したリーフからなる集合)から(ノード(i)から分岐したリーフからなる集合)を除いた集合」として定義する。
ノード(i)がノード(j)の先祖である(すなわち、ノードjはノードiと同一ではなく、ノード(j)からルートへのパス上にノード(i)が存在する)全てのノードの組についてこのような集合(i,j)を定義する。
例えば、図4に示すツリー20において、集合S(2,8)は、ノード「2」から分岐したリーフに割り当てられた受信装置の集合{u1,u2,u3,u4,u5,u6,u7,u8}から、ノード「8」から分岐したリーフに割り当てられた受信装置の集合{u1,u2}を除いた集合{u3,u4,u5,u6,u7,u8}となる。
【0032】
また、管理装置2は、さらに,集合S(i,j)の中で、ノード(i)とノード(j)が親子関係になっているものを第1の特別な集合SS(i,j)とする。
さらに、リボークする受信装置がひとつもない場合に使用する、全受信装置u1〜u16を要素とする第2の特別な集合SS(1,Φ)を定義する。
【0033】
ステップST4:
管理装置2は、定義域および値域が等しい2つの落とし戸つき一方向置換FL,FR を選択し、これを受信装置u1〜u16に公開する。
【0034】
管理装置2は、上述したように、一方向置換FL ,FR に関する情報をメモリ12に記憶する。
管理装置2は、上述したように、一方向置換FL ,FR の逆置換FL −1,FR −1に関する情報をメモリ12にセキュアな状態で保持する。
【0035】
ステップST5:
管理装置2は、ハッシュ関数Hと擬似乱数生成器Gの構成を選択し、それを公開する。また、管理装置2は、これらの情報をメモリ12に記憶する。
ハッシュ関数Hは,任意長の入力に対してあらかじめ定められた長さの出力を出す関数である。たとえば128ビット出力のハッシュ関数としてはMD5が、160ビット出力のハッシュ関数としてはSHA−1がよく知られている。MD5は、A.J.Menezes,P.C.van Oorschotand S.A.Vanstone著,Handbook of Applied Cryptography, CRC Press 1997のp.347に、SHA−1は同書のp.348にアルゴリズムが紹介されている。
また擬似乱数生成器Gは、図5に示すように、Cビットの入力に対し3Cビットの擬似乱数を出力する。
【0036】
ステップST6:
管理装置2は、一方向置換FL ,FR の定義域からランダムな値Kを選択し、第2の特別な集合SS(1,Φ)のラベルデータLABEL(1,Φ)を生成するために用いられる中間ラベルデータIL(1,Φ)の値を「K」とし、その情報をメモリ12にセキュアな状態に記憶する。
また、管理装置2は、ハッシュ関数Hを用いて、H(K)を演算し、その結果をラベルデータLABEL(1,Φ)とする。
【0037】
ステップST7:
管理装置2は、第1の特別な集合SS(i,j)のラベルデータLABEL(i,j)を生成するために用いられる中間ラベルデータIL(i,j)を生成する。
具体的には、管理装置2は、図4に示す例において、図6に示すように、ノード「1」を始点としたノード「2」に対応する第1の特別な集合SS(1、2)の中間ラベルデータIL(1,2)を、逆置換FL −1(K)により生成する。
また、ノード「1」を始点としたノード「3」に対応する第1の特別な集合SS(1、3)の中間ラベルデータIL(1,3)を、逆置換FR −1(K)により生成する。
【0038】
さらに、第1の特別な集合SS(3,6)の中間ラベルデータIL(3,6)を、中間ラベルデータIL(1,2)を用いて、逆置換FL −1(IL(1,2))により生成する。
また、第1の特別な集合SS(3,7)の中間ラベルデータIL(3,7)を、中間ラベルデータIL(1,2)を用いて、逆置換FR −1(IL(3,7))により生成する。
また、第1の特別な集合SS(2,4)の中間ラベルデータIL(2,4)を、中間ラベルデータIL(1,3)を用いて、逆置換FL −1(IL(1,3))により生成する。
また、第1の特別な集合SS(2,5)の中間ラベルデータIL(2,5)を、中間ラベルデータIL(1,3)を用いて、逆置換FR −1(IL(1,3))により生成する。
【0039】
これを繰り返すことにより,ルート以外のすべてのノードjに対して第1の特別なSS(P(j),j)の中間ラベルデータIL(P(j),j)を生成する。
ここで、P(j)を、ノードjの親ノードとする。
また、ノード(j)に対して2分木の左側(一方)に位置する子ノードをCL(j)とし、右側(他方)に位置する子ノードをCR(j)とする。
また、ノード(j)と、同じ親ノードを持つ他方のノードをS(j)とする。
管理装置2は、中間ラベルデータIL(j,CL(j))を、FL −1(IL(P(j),S(j))によって生成する。
また、管理装置2は、中間ラベルデータIL(j,CR(j))を、FR −1(IL(P(j),S(j))によって生成する。
具体的には、管理装置2は、例えば、図4に示すツリー20において、中間ラベルデータIL(2,4)を、FL −1(IL(1,3))によって生成する。
【0040】
図4に示すツリー20において、ルート「1」とリーフ「19」との間のパスにおける受信装置4における処理に用いられる中間ラベルデータIL(i,j)の生成は、例えば、図6に示すように行われる。
図6の例において、例えば、第1の特別な集合SS(4,8)が本発明の第1の集合に対応し、第1の特別な集合SS(9,18)が本発明の第2の集合に対応する。
また、中間ラベルデータIL(2,5)が本発明の第1の復号用データに対応し、中間ラベルデータIL(4,8)が本発明の第2の復号用データに対応し、中間ラベルデータIL(9,18)が本発明の第3の復号用データに対応している。
なお、図6において、第1の特別な集合SS(4,8)を要素とし、その上位にある第1の特別な集合SS(2,5)あるいはSS(1,3)を本発明の第1の集合とし、それに対応する中間ラベルデータIL(2,5)あるいはIL(1,3)を第2の復号用データとしてもよい。
【0041】
また、管理装置2は、上記生成した第1の特別な集合SS(i,j)の中間ラベルデータIL(i,j)について、ハッシュ関数Hを用いて、H(IL(i,j))を演算し、その結果であるラベルデータLABEL(i,j)をメモリ12に記憶する。
【0042】
ステップST8:
管理装置2は、ステップST7で生成した第1の特別な集合SS(i,j)の中間ラベルデータIL(i,j)を基に、その下層に位置する特別でない集合S(i,j)のラベルデータLABEL(i,j)を生成する。
具体的には、管理装置2は、図5および図7に示すように、ステップST7で生成した第1の特別な集合SS(i,j)のCビットのラベルLABEL(i,j)を擬似乱数生成器Gに入力し,その結果である3Cビットのデータのうち上位Cビット(=GL(LABEL(i,j))を、ノード「i」を始点としたノード「j」の左側(一方)の子ノードCL(j)のラベルデータLABEL(i,CL(j))とする。
また、管理装置2は、ステップST7で生成した第1の特別な集合SS(i,j)のラベルLABEL(i,j)を擬似乱数生成器Gに入力し、その結果である3Cビットのデータのうち下位Cビット(=GR(LABEL(i,j))を、ノード「i」を始点としたノード「j」の右側(他方)の子ノードCR(j)のラベルデータLABEL(i,CR(j))とする。
そして、管理装置2は、上記生成したラベルデータLABEL(i,CL(j)),LABEL(i,CR(j))を擬似乱数生成器Gに繰り返し入力することで、ノードiを始点とした、ノードjの子孫であるすべてのノードに対応するラベルデータを求める。
管理装置2は、ステップST7で生成した全ての特別な集合SS(i,j)のラベルデータに対して上記処理を行う。
上述したステップST7およびST8の処理により、ステップST3で規定した全ての集合S(i,j)のラベルデータLABEL(i,j)が生成される。
管理装置2は、集合S(i,j)の要素である受信装置が暗号データの復号に用いる鍵データSK(i,j)を、例えば、SK(i,j)=GM(LABEL(i,j))によって生成する。
すなわち、管理装置2は、ステップST7で生成した第1の特別な集合SS(i,j)のラベルLABEL(i,j)を擬似乱数生成器Gに入力し,その結果である3Cビットのデータのうち中位Cビット(=GM(LABEL(i,j))を、集合S(i,j)の要素である受信装置が暗号データの復号に用いる鍵データSK(i,j)とする。
【0043】
ステップST9:
管理装置2は、全ての受信装置u1〜u16の各々に対して、当該受信装置が要素となる集合に対応するラベルデータを選択する。
具体的には、管理装置2は、受信装置umについて、受信装置um(mは1〜16の整数)が割り当てられたリーフからルートに至るパスpath(m)上の内部のノード「i」を始点とし、当該リ−フからノード「i」までのパスから直接分岐した(枝分かれした)ノード「j」に対応する集合S(i,j)のラベルデータLABEL(i,j)と、上記の第2の特別な集合SS(1,Φ)に対応するラベルデータLABEL(1,Φ)を選択する。
図4に示すツリー20の例では、管理装置2は、受信装置u4について、図8の「従来のSD」の欄に示すように、ラベルデータLABEL(1,3),LABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,5),LABEL(2,8),LABEL(2,18),LABEL(4,8),LABEL(4,18),LABEL(9,18),LABEL(1,Φ)の11個のラベルデータLABEL(i,j)を選択する。
これらの11個のラベルデータLABEL(i,j)のち、図9に示すように、LABEL(1,3),LABEL(2,5),LABEL(4,8)およびLABEL(9,18)が第1の集合SS(i,j)のラベルデータLABEL(i,j)となる。
【0044】
ステップST10:
管理装置2は、各受信装置umについて、ステップST9で選択したラベルデータ(i,j)のうち、前述した第1の特別な集合および第2の特別な集合に対応するラベルデータ(i,j)を除いたラベルデータ(i,j)を選択する。
図4に示すツリー20の例では、管理装置2は、受信装置u4について、ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,8),LABEL(2,18),LABEL(4,18)を選択する。
【0045】
ステップST11:
管理装置2は、受信装置umが割り当てられているリーフ「j」の親ノードP(j)を始点とし、リーフ「j」の兄弟ノード「S(j)」に対応する中間ラベルデータIL(P(j),S(j))を選択し、これをメモリ12にセキュアな状態で記憶する。
図4に示すツリー20の例では、管理装置2は、受信装置u4について、中間ラベルデータIL(9,18)を選択し、これをメモリ12にセキュアな状態で記憶する。
【0046】
ステップST12:
管理装置2は、各受信装置umについて、ステップST10で選択したラベルデータLABEL(i,j)と、ステップST11で選択した中間ラベルデータILとを、当該受信装置umにセキュアな状態で提供する。
受信装置umは、当該受けたラベルデータLABEL(i,j)と中間ラベルデータILとをセキュアな状態で記憶する。
受信装置u4の例では、図8に示す「第1実施形態」の欄のように、ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,8),LABEL(2,18),LABEL(4,18)と、中間ラベルデータIL(9,18)との合計7個のラベルデータを、受信装置u4にセキュアな状態で提供する。
このように、通信システム1によれば、従来のSD方式に比べて、管理装置2から受信装置umに提供して記憶させるラベルデータの数(データ量)を削減できる。
また、通信システム1では、上述したように、一方向置換の逆置換を基に中間ラベルデータILを生成し、そのうち最下層の中間ラベルデータILを受信装置umにセキュアな状態で提供することにより、各受信装置umは、自らが属する第1の特別な集合の中間ラベルデータILは生成できるが、自らが属しない第1の特別な集合の中間ラベルデータILは生成できないようにできる。
例えば、図6の例で説明すると、受信装置u4は、管理装置2から受けた中間ラベルデータIL(9,18)を保持し、後述するように、中間ラベルデータIL(9,18)を基に公開された一方向置換FL ,FR から、中間ラベルデータIL(4,8),IL(2,5),IL(1,3),IL(1,Φ)を生成できるが、それ以外の中間ラベルデータILを生成するには、一方向置換の逆置換FL −1,FR −1が必要になり、逆置換FL −1,FR −1は一方向置換FL ,FR から取得することが困難である。
【0047】
〔リボケーション処理〕
管理装置2は、上述した前処理を行った後に、例えば、コンテンツデータを暗号化した暗号データを受信装置umに送信する際に、当該リボケーション処理を行う。
図10は、管理装置2が行うリボケーション処理を説明するためのフローチャートである。
ステップST21:
管理装置2は、受信装置u1〜u16のうち、リボークしない受信装置を特定する(暗号データを復号できる受信装置を指定する)。
ステップST22:
管理装置2は、ステップST21で特定したリボークしない受信装置を要素とし、かつ、リボークする受信装置を要素としない集合のうち、リボークしない受信装置がいずれかの集合の要素となりかつ、最も上位の階層の単数または複数の集合S(i,j)を特定する。
管理装置2は、例えば、図11に示すように、受信装置u2,u11,u12をリボークする場合には、集合S(2,17)およびS(3,13)を特定する。
【0048】
ステップST23:
管理装置2は、ステップST22で特定した集合S(i,j)を指定する集合指定データを生成する。当該集合指定データは、例えば、集合S(i,j)の識別データを用いて、当該集合S(i,j)を指定する。
ステップST24:
管理装置2は、ステップST23で特定した集合S(i,j)のラベルデータLABEL(i,j)を用いて、鍵データSK(i,j)(=GM(LABEL(i,j)))を生成する。
【0049】
ステップST25:
管理装置2は、送信するデータを、ステップST24で生成した鍵データSK(i,j)のそれぞれで暗号化して暗号データを生成する。
図11に示す例では、管理装置2は、上記データを鍵データSK(2,17)で暗号化した暗号データと、上記データを鍵データSK(3,13)で暗号化した暗号データとを生成する。
ステップST26:
管理装置2は、ステップST25で生成した暗号データを、図2に示す通信部11を介して受信装置u1〜u16に送信する。
なお、本実施形態では、図3に示す前処理はシステム立ち上げ時の一度だけ行い、図10に示すリボケーション処理は送信したい情報があるたびに(たとえばコンテンツを放送するとかROMディスクを生産する場合などに)行う。受信装置もシステム立ち上げ時または自身がシステムに参加するときにラベルを受け取り,下記の受信処理は繰り返して行う。
【0050】
〔受信装置u1〜u16〕
図12は、図1に示す受信装置umのハードウェア構成図である。
図12に示すように、受信装置umは、例えば、通信部51、メモリ52および処理部53を有する。
通信部51は、前述したように管理装置2が送信した暗号データおよび集合指定データを受信する。
メモリ52は、処理部53によって実行されるプログラムPRG2と、プログラムPRG2の実行に用いられる種々データを記憶する。
ここで、プログラムPRG2が第4の発明のプログラムに対応している。
例えば、メモリ52は、例えば、図4に示すツリー20、ツリー20の何れのリーフに受信装置umが割り当てられているかを示す情報、一方向置換FL ,FR に関する情報、疑似乱数生成器Gに関する情報、ハッシュ関数Hに関する情報を記憶している。
【0051】
処理部53は、メモリ52に記憶されたプログラムPRG2を実行し、その実行に応じて受信装置umの処理を統括して制御する。本実施形態において、受信装置umの処理は、処理部53が実行するプログラムPRG2によって規定される。
【0052】
処理部53は、プログラムPRG2の実行に応じて、集合指定データによって指定された集合のラベルデータLABELの生成、中間ラベルデータILの生成、中間ラベルデータILからラベルデータLABELの生成、並びにラベルデータLABELから鍵データSKの生成、鍵データSKを用いた暗号データの復号などの処理を行う。
【0053】
図13は、図12に示す受信装置umの処理を説明するためのフローチャートである。
ステップST31:
受信装置umの通信部51は、管理装置2から、前述した集合指定データと、単数または複数の暗号データを受信する。
ステップST32:
受信装置umの処理部53は、当該受信装置umが、ステップST31で受信した集合指定データが指定する単数または複数の集合のいずれかの要素であるか否かを判断し、要素であると判断するとステップST33に進み、そうでない場合には処理を終了する。
なお、受信装置umは、管理装置2によってリボークされない場合に、管理装置2からの集合指定データが示す単数または複数の集合のうち一つの集合の要素となっている。
【0054】
ステップST33:
受信装置umの処理部53は、後述するように、鍵データSK(i,j)を生成する。
ステップST34:
受信装置umは、ステップST33で生成した鍵データSK(i,j)を用いて、自らが要素となる集合に対応した暗号データを復号する。
【0055】
以下、図13に示す鍵データの生成処理(ステップST33)を詳細に説明する。
図14は、図13に示すステップST33の処理を説明するためのフローチャートである。
図14に示すステップST46,ST47,ST48が第1の発明の第6の工程に対応し、図13に示すステップST34が第1の発明の第7の工程に対応している。
また、第5の発明の第1の手段は、処理部53が図14に示すステップST43,ST45および図13に示すステップST34を実行して実現され、第2の手段は、処理部53が図14に示すステップST46,ST47,ST48および図13に示すステップST34を実行して実現される。
【0056】
ステップST41:
受信装置umは、集合指定データが指定する自らが要素となる集合S(i,j)が、第1あるいは第2の特別な集合であるか否かを判断し、特別な集合であると判断するとステップST48に進み、そうでない場合にはステップST42に進む。
ステップST42:
受信装置umは、集合指定データが指定する自らが要素となる集合S(i,j)のラベルデータLABELが、メモリ52に記憶されているか否かを判断し、記憶されていると判断すると、ステップST43に進み、そうでない場合にはステップST44に進む。
ステップST43:
受信装置umの処理部53は、上記指定された集合S(i,j)のラベルデータLABEL(i,j)をメモリ52から読み出し、これを擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0057】
ステップST44:
受信装置umは、集合指定データが指定する自らが要素となる集合S(i,j)のラベルデータLABELを得るのに第1または第2の特別な集合のラベルデータLABELが必要か否かを判断し、必要であると判断するとステップST46に進み、そうでない場合にはステップST45に進む。
ステップST45:
受信装置umの処理部53は、メモリ52から、上記指定された集合S(i,j)を含む上位階層の集合のラベルデータLABELを読み出し、これを擬似乱数生成器Gに入力し、必要に応じてその結果を繰り返し擬似乱数生成器Gに入力して、ラベルデータLABEL(i,j)を生成する。
当該処理は、図3のST8および図5で示した処理と同様である。
そして、処理部53は、上記生成したラベルデータLABEL(i,j)を擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0058】
ステップST46:
受信装置umの処理部53は、メモリ12から図3を用いて前述したステップST12で管理装置2から提供を受けて書き込まれた中間ラベルデータILを読み出し、これを基に一方向置換FL ,FR を用いて、図6に示すリーフからルートに向かって演算を行って、受信装置umが要素となる第1あるいは第2の特別な集合の中間ラベルデータILを生成する。
また、処理部53は、上記生成した特別な集合の中間ラベルデータILを用いて、ハッシュ関数Hを基に、上記特別な集合のラベルデータLABELを生成する。
【0059】
ステップST47:
受信装置umの処理部53は、ステップST46で生成したラベルデータLABELを擬似乱数生成器Gに入力し、必要に応じてその結果を繰り返し擬似乱数生成器Gに入力して、ラベルデータLABEL(i,j)を生成する。
そして、処理部53は、上記生成したラベルデータLABEL(i,j)を擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0060】
ステップST48:
受信装置umの処理部53は、必要に応じて、メモリ12から前述したステップST12で書き込まれた中間ラベルデータILを読み出し、これを基に一方向置換FL ,FR を用いて、図6に示すリーフからルートに向かって演算を行って、受信装置umが要素となる第1の特別な集合の中間ラベルデータILを生成する。
そして、処理部53は、当該中間ラベルデータILを用いて、ハッシュ関数Hを基に、上記第1あるいは第2の特別な集合のラベルデータLABELを生成する。
そして、処理部53は、当該生成したラベルデータLABELを擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0061】
以下、上述した受信装置umの処理をさらに説明する。
処理部53は、ノード(j)が、ノード(i)の子ノードのうち、受信装置umが割り当てられたリーフからルートへのパス上に存在しない側のノード(つまり、パス上にあるノード(i)の子ノードの兄弟であるノード)と一致するか、その子孫である(ノード(j)が受信装置umが要素となる集合のうち、第1あるいは第2の特別な集合を構成するノードの組の2番目のノードの子孫である)場合には、以下のように処理を行う。
受信装置umが記憶する中間ラベルIL(P(n),S(n))から特別な集合の中間ラベルデータILを導出する。
先ず、指定された集合(i,j)が、集合(P(n),S(n))である場合には、受信装置umは、既に、その中間ラベルデータILをメモリ12に記憶しているので演算は不要である。
そうでない場合は、受信装置umの処理部53は、メモリ12から読み出した中間ラベルIL(P(n),S(n))に対して、既に、公開されている一方向置換FL ,FR を適用することで、その上位階層の特別な集合のラベルデータLABELを順次計算する。
上記中間ラベルIL(P(n),S(n))に対し、受信装置umが割り当てられたリーフ(n)の兄弟ノードS(n)が親ノードP(n)の左側の子ノードであるとき、すなわちS(n)=CL(P(n))であるとき、ノードP(n)の親ノードP(P(n))を始点とし、ノードP(n)の兄弟ノードS(P(n))に対応する特別な集合SS(P(P(n)),S(P(n)))の中間ラベルIL(P(P(n)),S(P(n)))はFL (IL(P(n),S(n)))によって求められる。
逆に、ノードS(n)が親ノードP(n)の右側の子ノードであるとき、すなわちS(n)=CR(P(n))であるとき、ノードP(n)の親ノードP(P(n))を始点とし、ノードP(n)の兄弟ノードS(P(n))に対応する特別な集合SS(P(P(n)),S(P(n)))の中間ラベルデータIL(P(P(n)),S(P(n)))は、FR (IL(P(n),S(n)))によって求められる。
これらの出力にさらに一方向置換FL ,FR を繰り返し行うことにより、受信装置umは、特別な集合SS(1,2)またはSS(1,3)を含む自らが必要となる全ての特別な集合の中間ラベルデータILを得ることができる。
【0062】
また,中間ラベルデータIL(1,2)に対しては一方向置換FL を、中間ラベルIL(1,3)に対しては一方向置換FR を適用することにより、第2の特別な集合SS(1,Φ)に対応する中間ラベルデータIL(1,Φ)=Kを求めることができる。
【0063】
前述した図6に示す例で説明すると、受信装置u4は中間ラベルデータIL(9,18)を保持している。
ノード(18)はノード(9)の左側の子ノードであるから、一方向置換FLを用いることにより、ノード(9)の親ノード(4)と兄弟ノード(8)で規定される第1の特別な集合SS(4,8)の中間ラベルデータIL(4,8)をIL(4,8)=FL (IL(9,18))として求めることができる。
また、ノード(8)はノード(4)の左側の子ノードであるから、一方向置換FL を用いることにより,ノード(4)の親ノード(2)と兄弟ノード(5)で決定される集合SS(2,5)の中間ラベルデータIL(2,5)を、IL(2、5)=FL (IL(4,8))として求めることができる。
この処理を繰り返していくことにより,受信装置u4は、IL(1,3)=FR (IL(2,5))およびIL(1,Φ)=FR (IL(1,3))を求めることができる。
【0064】
図15は、受信装置um4が、メモリ12に記憶する中間ラベルデータIL(9,18)から、中間ラベルデータIL(4,8),(2,5),(1,3),(1,Φ)を順に生成する場合を説明するための図である。
図15に示すように、処理部53は、集合S(i,k)に対応する中間ラベルデータIL(i,k)を導出したら,ラベルデータLABEL(i,k)をLABEL(i,k)=H(IL(i,k))として求める。
それから,図5および図7を参照して前述したように、擬似乱数生成器Gを用いて必要な集合S(i,j)のラベルデータLABEL(i,j)を求め、さらにその集合の鍵データSK(i,j)を、GM( LABEL(i,j))により求め,これを用いて、管理装置2から受信した暗号データを復号する。
【0065】
また、図11に示すように、受信装置u2,u11,u12がリボークされ,集合S(2,17),S(3,13)に対応する鍵データSK(2,17),SK(3,13)で暗号化された暗号データを管理装置2が送信する場合を考える。
この場合には、受信装置u4は,ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,8),LABEL(2、18),LABEL(4,18)の6個のラベルデータと、中間ラベルデータIL(1,Φ),IL(1,3),IL(2,5),IL(4,8)を導出できる中間ラベルデータIL(9,18)をメモリ52に記憶する。
【0066】
受信装置u4は、集合S(2,17)の要素であり、ノード(17)の先祖であるノード(8)を用いたラベルデータLABEL(2,8)を直接保持しているため、これに擬似乱数生成器Gを必要な回数だけ適用することで鍵データSK(2,17)を得ることができる。
一方、受信装置u5は、LABEL(1,4),LABEL(1,11),LABEL(1,21),LABEL(2,11),LABEL(2,21),LABEL(5,21)の6個のラベルデータと、中間ラベルデータIL(1,Φ),IL(1,3),IL(2,4),IL(5,11)を導出できる中間ラベルデータIL(10,21)を、メモリ12に記憶している。
受信装置u5は、集合S(2,17)に対し、ノード(17)の先祖であるノード(k)を用いたラベルデータLABAL(2,k)をメモリ12に保持していない。
そのため、受信装置u5は、メモリ12に記憶している中間ラベルデータIL(10,21)から、ノード(17)の先祖であるノード(4)に対応した中間ラベルデータIL(2,4)を先に述べた手法でまず導出し、その後にラベルデータLABAL(2,4)を求め、これに擬似乱数生成器Gを必要な回数だけ適用することで鍵データSK(2,17)を得る。
【0067】
なお、リボークすべき受信装置umが1台もなく、集合として第2の特別な集合SS(1,Φ)が使用されていた場合、受信装置umは、上記の処理により中間ラベルデータIL(1,Φ)を求め、これを用いてラベルデータLABAL(1,Φ)を計算し、それを擬似乱数生成器Gに入力して出力の中央部分のCビットを求めることにより、鍵データSK(1,Φ)を導出し、これを基に暗号データを復号する。
【0068】
以上説明したように、通信システム1によれば、図6に示すように、中間ラベルデータILを規定し、最下層の集合の中間ラベルデータILを受信装置umに保持させることで、受信装置umが記憶(保持)するラベルデータおよび中間ラベルデータの数を、従来のSD方式に比べて削減できる。
また、通信システム1によれば、受信装置umは、自らが保持する中間ラベルデータILを基に、図15に示すように、その上位階層の必要な中間ラベルデータILを生成でき、自らが割り当てられた集合のラベルデータおよび鍵データを適切に取得できる。そのため、リボークされない受信装置umは、管理装置2から受信した暗号データを当該鍵データを基に適切に復号できる。
【0069】
第2実施形態
本実施形態の管理装置2aおよび受信装置umaは、以下に示す処理以外は、第1実施形態の管理装置2および受信装置umと同じである。
以下、上述したSD方式を基礎としたLSD( Basic Layered Subset Difference)方式に本発明を適用した場合を例示する。
LSD方式には、Basic(基本)方式と、その拡張であるGeneral(一般化)方式がある。
ここではBasic_LSDに本発明を適用した場合について説明する。
本実施形態の通信システムは、上述した第1の実施形態の通信システムにおいて、特別レベル(Special Level)と、特別レベル間の階層であるレイヤという新たな概念を取り入れたものである。
例えば、第1実施形態で説明したツリー20内で、図16に示すように、特定の階層を特別レベルとして定義する。
本実施形態では、特別ラベルデータは1種類だけであるが、後述する第2実施形態においては重要度の異なる複数の特別レベルを用いる。
ここで、簡単のため、log1/2 N(Nは受信装置umの数)は整数であるとする。
【0070】
本実施形態では、図16に示すように、ツリー20のルートからリーフに至るまでのそれぞれの階層のうち、ルートとリーフのレベルを含む、log1/2 Nごとの階層を特別レベルと規定する。
そして、隣り合う2つの特別レベルに挟まれた単数または複数の階層(両方の特別レベルを含む)を、レイヤと呼ぶ。
図16の例では、ルートの階層、ノードkを含む階層、リーフの階層が特別レベルであり、ルートの階層とノードiを含む階層とノードkを含む階層が1つのレイヤを構成する。またノードkを含む階層とノードjを含む階層とリーフを含む階層が別のレイヤを構成する。
【0071】
本実施形態では、管理装置2aは、第1実施形態で規定した集合S(i,j)のうち、ノードiとノードjが同一レイヤにあるか、もしくはノードiが特別レベルにあるものだけを規定し、当該規定した集合(i,j)についてのみ、図3を用いて説明したようにラベルデータLABELおよび中間ラベルデータILの生成を行う。
すなわち、本実施形態では、第1実施形態で規定した集合のうちのいくつかは規定されなくなるが、この規定されない集合は、本実施形態で規定される集合の高々2つの和集合で表すことができる。
例えば、図16の例では、集合S(i,j)は、本実施形態では規定されないが、ノードiからノードjへのパス上の、ノードiに最も近い特別レベル上のノード(ノードk)を用いて、S(i,j)=S(i,k)∪S(k,j)と表すことができる。
前述した第1実施形態の管理装置2は、特定(選択)した集合S(i,j)について、それに対応する鍵データSK(i,j)を用いて暗号化した1つの暗号データを生成して受信装置umに提供したが、本実施形態の管理装置2aは、集合S(i,k)とS(k,j)に対応する集合キーSK(i,k),SK(k,j)を用いてそれぞれ暗号化した2つの暗号データを生成して受信装置umaに送信(提供)する。
【0072】
これにより、管理装置2aでは、送信する暗号データの数(通信量)は、第1の実施形態の管理装置2の高々2倍に増加するが、各受信装置umaが保持するラベルデータの数を第1実施形態の受信装置umに比べて減らすことができる。
【0073】
管理装置2aでは、擬似乱数生成器Gを用いてラベルデータLABEL(i,j)を順に生成する過程で、ノード(i)が特別レベルにない場合、ノード(i)の一つ下の特別レベルよりも下のノードをjとするラベルデータは利用されないので、当該一つ下の特別レベルまででラベルデータの生成を止める。
管理装置2aは、前述した前処理において、ラベルデータを各受信装置umaにセキュアな状態で提供する場合にも、上述した条件で生成したラベルデータのなかから選択して受信装置umaに提供する。
【0074】
図17および図18は、図9のツリー20を基に受信装置umが割り当てられている場合に、本実施形態の受信装置u4aが記憶するラベルデータLABELを説明するための図である。
図17および図18に示すように、従来のBASIC_LSDを採用した場合には、提供して記憶させたラベルデータLABEL(1,3),LABELE(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,5),LABEL(4,8),LABEL(4,18),LABEL(9,18)と特別なラベルの合計9個のラベルデータを受信装置u4が保持する必要がある。
これに対して、本実施形態の管理装置2aでは、上述したように中間ラベルデータILを用いることで、ノード(i),(j)が親子関係にある場合の中間ラベルデータIL(i,j)と、前述した第2の特別な集合の中間ラベルデータIL(1,Φ)を、一つの中間ラベルデータILから導出する。
そのため、管理装置2aは、受信装置u4aに対して、前処理において、図18に示すように、ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(4,18)と、中間ラベルデータIL(9,18)との合計5個のラベルデータを提供して保持させる。
【0075】
以下、受信装置umaの数をNとした場合に、従来のBASIC_LSDに比べて、本実施形態において受信装置umaに記憶させるラベルデータの数を削減できることを説明する。
すなわち、ノード(i),(j)が親子関係になるようなラベルデータLABEL(i,j)を各受信装置umaがいくつ保持すべきかを考える。
ノード(i),(j)が親子関係になっているときには,以下の3つの場合が考えられる。
(A)ノード(i)が特別レベルにある。
(B)ノード(j)が特別レベルにある。
(C)ノード(i),(j)の双方が特別レベルにない。
【0076】
上記(A)〜(C)のいずれの場合も、ノード(i),(j)が親子関係にある(つまり、ツリー上で隣り合っている)以上、ノード(i),(j)は同一レイヤに存在する。すなわち,集合S(i,j)はBasic_LSD方式で定義されるための条件を満たしている。
つまり、このような集合はBasic_LSDで定義され使用されるため、受信装置umaはそれに対応するLABEL(i,j)を保持しておく必要がある。
このようなノード(i),(j)は、受信装置umaについては、ノード(i)の位置がツリーの高さ分(すなわち,受信装置が割り当てられたリーフからルートへのパス上の、リーフを除くノードすべて)あり、ノード(i)を決めればノード(j)がただ1つ決まる(ノード(i)の子で、上記のパス上にないノード)ため、ツリー20の高さ分,すなわちlogN個だけ存在する。
【0077】
本実施形態では、受信装置umaが、これらのlogN個の第1の特別なラベルデータと1つの第2の特別なラベルデータを、第1実施形態で図15を用いて説明したように、一方向置換を基に、1つの中間ラベルデータから作り出すように規定し、この中間ラベルデータILを受信装置umaにセキュアな状態で提供して保持させる。
これにより、受信装置umaが保持するラベルデータの数をlogN(=logN+1−1)だけ削減できる。
従来のBasic_LSD方式では受信装置umが保持するラベルデータの総数はlog3/2N+1であるが、本実施形態では、上述のように、受信装置umaが保持するラベルデータの数を、log3/2N−logN+1に削減できる。
【0078】
第3実施形態
本実施形態の管理装置2bおよび受信装置umbは、以下に示す処理以外は、第1および第2実施形態の管理装置2,2aおよび受信装置um,umaと同じである。
本実施形態では、General_LSDに本発明を適用した場合を説明する。
上述した従来のBasic_LSD方式では,1種類の特別レイヤを用いたが、本実施形態では、General_LSDと同様に、重要度の異なる複数の特別レベルを用いる。
すなわち、前述したように受信装置umbをリーフに対応付けたツリー20において、ルートからノード(i)を経てノード(j)に至るパスを1本のグラフとして考える。
ツリー20のルートとノード(j)が端点となり,ツリー20のノードがグラフのノードとなり,端点以外のノードのひとつがノード(j)となっている。このグラフでは,各ノードはルートからの距離で表される。この距離は,d桁のb進数(ただしb=O(log1/dN)で表される。
たとえば,ルートは「0...00」と表され,その隣のノード(ツリー20において、ルートの子ノードであるノード)は「0...01」と表される。
【0079】
この場合に、第1実施形態で規定した集合S(i,j)は、規定された変換(ノードからノードへの遷移)を組み合わせることで、ノード(i)からノード(j)への最終的な遷移であると考える。
上記規定された変換は上記集合に対応し、最終的な遷移に要する個々の遷移が、集合S(i,j)を分割して表すのに必要な集合を示す。
【0080】
例えば、ノード(i),(k1),(k2),(k(d−1)),(j)がこの順で、ツリー20のパス上に存在する場合に、集合S(i,j)は、本実施形態では、下記式(6)に示すように、高々d個の集合の和集合で表される。
【0081】
【数6】
S(i,j)=S(i,k1)∪S(k1,k2)∪...∪S(k(d−1,j) …(6)
【0082】
本実施形態では、ノード(i)が上記のグラフにおいて、(x)a(0)と表されるとき、(x+1)0(ベクトル0)あるいは(x)a’(y)で表されるノード(j)への遷移を全て規定する。
ここで、aは非ゼロの数字のうち1番右にある数字、(x)は任意の数字列、(0)はゼロの列、a’≧a、(y)は(0)と同じ長さの任意の数字列である。
【0083】
すなわち、第2実施形態は、当該第3実施形態においてd=2、(一番右の)最終桁が0である2桁の数字で表されるレベルを特別レベルとしたものである。
本実施形態では、ノード(i)を表す数字における一番右のゼロの列の桁数が、そのレベルの重要度を表し、本実施形態で定義される集合S(i,j)を表すノード(j)は、ノード(i+1)からノード(i)よりも重要度の高い最初のノードまでのいずれのノード(両端のノードを含む)にもなる可能性がある。
例えば、i=825197,j=864563とすると、ノード(i)からノード(j)への遷移、すなわち集合S(i,j)は、「825917→825920→826000→830000→864563」という上述した4つの遷移によって表すことができる。
すなわち、k1=825920,k2=826000,k3=830000とおけば、下記式(7)が成り立つ。
【0084】
【数7】
S(i,j)=S(i,k1)∪S(k1,k2)∪S(k2,k3)∪S(k3,j) …(7)
【0085】
本実施形態では、管理装置2bは、サブセットS(i,j)の要素となる受信装置umbに復号させる暗号データとして、集合S(i,k1),S(k1,k2),S(k2,k3),S(k3,j)に対応するラベルデータLABELから生成した鍵データを用いて暗号化した4つの暗号データを生成および送信する。
【0086】
本実施形態によれば、受信装置umbが保持すべきラベルデータの数は、パラメータdが大きくなるに従って減少し、最終的には下記式(8)となる。
このとき,送信すべき暗号データの数は、d(2r−1)となる。ここで、rはリボークする受信装置の数を示している。
【0087】
【数8】
【0088】
従来のGeneral_LSDでは,受信装置umbは、受信装置umbが復号に使用するラベルデータLABELのうち、ノード(i),(j)が親子関係になっている集合S(i,j)に対応するラベルデータLABAL(i,j)を全てセキュアな状態で保持する。
これは、ノード(i)としてどんな値をとっても,その子ノード(j)、すなわちノード(i+1)への遷移は,上述した遷移の条件に当てはまるためである。
すなわち、受信装置umについて、当該受信装置umが利用するラベルデータのうちノード(i),(j)が親子関係になっているものはlogN個ある。
本実施形態では,受信装置umbは、これらlogN個の第1の特別なラベルデータと1個の第2の特別なラベルデータを、第1実施形態と同様に、一方向置換を基に、1つの中間ラベルデータから作り出す.受信装置umbが当該中間ラベルデータを保持することで、受信装置umbが保持するラベルデータを、従来のGeneral_LSDに比べてlogN個削減できる。
【0089】
本発明は上述した実施形態には限定されない。
上述した実施形態では、2分木を基に構成されたツリーのリーフに受信装置umを対応付けた場合を例示したが、3分木以上の木を少なくとも一つ含むツリーのフーフに受信装置umを対応付けた場合にも本発明は同様に適用可能である。
【0090】
【発明の効果】
以上説明したように、本発明によれば、複数の処理装置に提供した暗号データを、指定した前記処理装置に復号用データを基に復号させる場合に、各処理装置に保持させる復号用データの数を削減できるデータ処理方法、そのプログラムおよびその装置を提供することができる。
【図面の簡単な説明】
【図1】図1は、本発明の第1実施形態に係わる通信システムの全体構成図である。
【図2】図2は、図1に示す管理装置のハードウェア構成図である。
【図3】図3は、図1に示す管理装置のリボケーション処理に先立って行う前処理を説明するためのフローチャートである。
【図4】図4は、図1に示す管理装置が前処理等に使用するツリーを説明するための図である。
【図5】図5は、図1に示す管理装置による中間ラベルデータの生成処理を説明するための図である。
【図6】図6は、本発明の第1実施形態におけるラベルデータの生成方法を説明するための図である。
【図7】図7は、本発明の第1実施形態におけるラベルデータの生成方法を説明するための図である。
【図8】図8は、図1に示す受信装置に前処理で提供するラベルデータおよび中間ラベルデータを説明するための図である。
【図9】図9は、図1に示す管理装置によるリボケーション処理を説明するための図である。
【図10】図10は、図1に示す管理装置によるリボケーション処理を説明するためのフローチャートである。
【図11】図11は、図1に示す管理装置によるリボケーション処理を行う際に選択する集合を説明するための図である。
【図12】図12は、図1に示す受信装置のハードウェア構成図である。
【図13】図13は、図1に示す受信装置の全体動作を説明するためのフローチャートである。
【図14】図14は、図13に示すステップST33の処理を説明するためのフローチャートである。
【図15】図15は、図1に示す受信装置における中間ラベルデータの生成方法を説明するための図である。
【図16】図16は、本発明の第1実施形態に係わる通信システムのリボケーション処理の前処理を説明するための図である。
【図17】図17は、本発明の第2実施形態の通信システムを説明するための図である。
【図18】図18は、本発明の第2実施形態の通信システムを説明するための図である。
【符号の説明】
2…管理装置、u1〜u16…受信装置、11…通信部、12…メモリ、13…処理部、51…通信部、52…メモリ、53…処理部
【発明の属する技術分野】
本発明は、暗号データの復号に係わる処理を行うデータ処理方法、そのプログラムおよびその装置に関する。
【0002】
【従来の技術】
例えば、管理装置が、複数の受信装置に暗号データを送信し、リボークしない受信装置でのみ、当該暗号データを復号させる場合がある。
このような方式に、下記非特許文献1,2に記載されているSD(Subset Difference) がある。
このSD方式では、2分木によって構成されるツリーの各リーフに受信装置を対応付け、前記ツリーのルート、ノードおよびリーフのうちルートからあるリーフへのパス上に存在する2つの要素からなる組を規定する。そして、各組について、当該組の要素のうちルートに近い一方の要素から分岐したリーフから、他方の要素から分岐したリーフを除いたリーフに対応付けられた受信装置を要素とする複数の集合を規定する。
これにより、各受信装置は、各々要素が異なる複数の集合の要素となる。
【0003】
また、管理装置が、各集合にラベルデータを割り当て、各受信装置に、当該受信装置が要素となる集合に割り当てたラベルデータのうち、所定のラベルデータをセキュアな状態で提供する。
そして、管理装置が、リボークしない受信装置のみを要素とする単数または複数の集合を特定し、当該集合に割り当てたそれぞれラベルデータから取得した鍵データを基に、コンテンツデータをそれぞれ暗号化して単数または複数の暗号データを生成し、これを全ての受信装置に送信すると共に、上記特定した集合を受信装置に指定する。
受信装置は、指定を受けた集合の要素である場合に、当該集合に対応するラベルデータを基に鍵データを生成し、管理装置から受信した暗号データを、当該鍵データを用いて復号する。
【0004】
【非特許文献1】
D.Halevy and A Shamir, ”The LCD broadcast encryption scheme”, CRYPTO 2002, Lecture Notes in Computer Science,vol.2442. pp.47−60,2002
【非特許文献2】
D.Naor,M.Naor and J.Lotspiech,”Revocation and tracing schemes for stateless receivers”, CRYPTO 2001.Lecture Notes in Computer Science.vol 2139.pp.41−62,2001.
【0005】
【発明が解決しようとする課題】
上述した従来のSD方式では、後述するように、各受信装置について、当該受信装置が割り当てられたツリー上のリーフとルートとの間に位置するルートおよび各ノードについて、当該ルートおよびノードと、これらに対してリーフ側に位置すると共に上記パス上のノードから当該パス以外の方向に直接分岐したノードまたはリーフとの組によって規定される集合に割り当てたラベルデータを、当該受信装置にセキュアな状態で提供して保持させる。受信装置は、上記規定した組の集合のうち、ラベルデータを受けていない集合のラベルデータを、上記提供を受けたラベルデータを基に演算を行って取得する。
ここで、受信装置の数をNとした場合に、管理装置が各受信装置に提供して保持させるラベルデータの数は、下記式(1)で示される。
【0006】
【数1】
【0007】
ところで、上述した従来のSD方式では、各受信装置に保持させるラベルデータの数(データ量)をさらに削減したいという要請がある。
上記非特許文献1に記載されたLSD方式についても、同様な要請がある。
また、上述した例の他に、暗号データの復号に複数の復号用データが用いられる場合に、復号を行う処理装置が保持する復号用データの数を削減したいという要請がある。
【0008】
本発明はかかる事情に鑑みてなされたものであり、複数の処理装置に提供した暗号データを、指定した前記処理装置に復号用データを基に復号させる場合に、各処理装置に保持させる復号用データの数を削減できるデータ処理方法、そのプログラムおよびその装置を提供することを目的とする。
【0009】
【課題を解決するための手段】
上述した目的を達成するために、第1の発明のデータ処理方法は、複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理方法であって、相互に異なる前記処理装置を要素とする複数の第1の前記集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の前記集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の工程と、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の工程で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の工程と、前記第1の工程で生成した前記第2の復号用データと、前記第2の工程で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の工程とを有する。
【0010】
第1の発明のデータ処理方法の作用は以下のようになる。
先ず、第1の工程において、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する。
次に、第2の工程において、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の工程で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する。
次に、第3の工程において、前記第1の工程で生成した前記第2の復号用データと、前記第2の工程で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する。
【0011】
第2の発明のプログラムは、複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理装置が実行するプログラムであって、相互に異なる前記処理装置を要素とする複数の第1の集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の手順と、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手順で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の手順と、前記第1の手順で生成した前記第2の復号用データと、前記第2の手順で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の手順とを前記データ処理装置に実行させる。
【0012】
第3の発明のデータ処理装置は、複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理装置であって、相互に異なる前記処理装置を要素とする複数の第1の集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の手段と、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手段で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の手段と、前記第1の手段で生成した前記第2の復号用データと、前記第2の手段で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の手段とを有する。
【0013】
第3の発明のデータ処理装置の作用は以下のようになる。
先ず、第1の手段が、前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する。
次に、第2の手段が、前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手段で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する。
次に、第3の手段が、前記第1の手段で生成した前記第2の復号用データと、前記第2の手段で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する。
【0014】
第4の発明のプログラムは、復号用データを基に暗号データを復号するデータ処理装置が実行するプログラムであって、指定された復号用データを保持している場合に、前記指定された復号用データを基に前記暗号データを復号する第1の手順と、前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する第2の手順とをデータ処理装置に実行させる。
【0015】
第5の発明のデータ処理装置は、復号用データを基に暗号データを復号するデータ処理装置であって、指定された復号用データを保持している場合に、前記指定された復号用データを基に前記暗号データを復号する第1の手段と、前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する第2の手段と有する。
【0016】
第5の発明のデータ処理装置の作用は以下のようになる。
指定された復号用データを保持している場合には、第1の手段が、前記指定された復号用データを基に前記暗号データを復号する。
一方、前記指定された復号用データを保持しない場合には、第2の手段が、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する。
【0017】
【発明の実施の形態】
第1実施形態
以下、本発明の実施形態に係わる通信システムについて説明する。
図1は、本発明の実施形態に係わる通信システム1の全体構成図である。
図1に示すように、通信システム1は、例えば、管理装置2と、16個の受信装置u1〜u16を有する。
ここで、受信装置u1〜u16が第1〜第3の発明の処理装置、並びに第4および第5の発明のデータ処理装置に対応している。
また、管理装置2が、第2および第3の発明のデータ処理装置に対応している。
なお、受信装置uの数は、16個に限定されず、複数であれば任意である。
【0018】
通信システム1では、管理装置2から受信装置u1〜u16には、例えば、無線で暗号データが送信(提供)される。
なお、本発明では、受信装置の代わりに、再生装置などの処理装置を用い、管理装置(送信装置)から処理装置への暗号データの提供を、光ディスク、磁気ディスクあるいは半導体記憶装置などの記録媒体を介して行ってもよい。
【0019】
通信システム1では、管理装置2が、前処理において、受信装置u1〜u16について複数の集合を規定し、同じ集合に属する受信装置u1〜u16が共通の鍵データを取得するために用いるラベルデータLABELおよび中間ラベルデータIL(本発明の第3の復号用データ)を生成する。
そして、管理装置2は、上記生成したラベルデータLABELおよび中間ラベルデータILを、セキュアな状態で、対応する受信装置u1〜u16に提供する。
管理装置2は、リボケーション処理において、何れの受信装置をリボークするかに応じて、リホークしない受信装置のみを要素とする単数または複数の上記集合を特定し、当該特定した集合を指定する集合指定データと、当該特定した単数または複数の集合に割り当てたラベルデータを基に暗号化した単数または複数の暗号データを受信装置u1〜u16に送信する。
【0020】
以下、図1に示す管理装置2および受信装置u1〜u16について説明する。
〔管理装置2〕
図2は、図1に示す管理装置2のハードウェア構成図である。
図2に示すように、管理装置2は、例えば、通信部11、メモリ12および処理部13を有する。
通信部11は、処理部13が生成したデータを無線方式で送信する。当該送信は、例えば、放送などのプッシュ(PUSH)方式で、ソフトウェア無線(SDR:Software Defined Radio)によるSDR・セキュア・ダウンロードを行う。
メモリ12は、処理部13によって実行されるプログラムPRG1と、プログラムPRG1の実行に用いられる種々データを記憶する。
ここで、プログラムPRG1が第2の発明のプログラムに対応している。
メモリ12は、例えば、後述するツリー、当該ツリーのリーフへの受信装置u1〜u16の割り当て、一方向置換FL ,FR (本発明の一方向関数)、その逆置換FL −1,FR −1(本発明の逆関数)、疑似乱数生成器G、ハッシュ関数H、ラベルデータLABEL(i,j)、中間ラベルデータIL(i,j)に関する情報をセキュアな状態で記憶している。
本明細書において、セキュアな状態とは、データや内容を外部から監視、改竄できない状態をいう。
管理装置2は、一方向置換FL ,FR 、疑似乱数生成器G、関数Hに関する情報を受信装置u1〜u16に公開する。
【0021】
ここで、一方向置換とは、入力xが与えられたときにy=F(x)を計算するのは容易であるが、yが与えられたときにy=F(x)を満たすxを見つけること(すなわち逆置換F−1(y)を計算すること)は、Fを作成したときに用いた秘密を知る場合のみ容易に行え、秘密を知らないものには計算量的に困難であるような置換である。
一方向置換としてよく知られているものに、RSA(Rivest Shamir Adleman)関数がある。
本実施形態では、RSA関数を用いて、一方向置換FL ,FR とそれぞれの逆置換FL −1,FR −1を下記式(2)〜(5)のように定める。
【0022】
【数2】
FL (x)=XeL+cL modM …(2)
【0023】
【数3】
FL −1(x)=(x−cL)dL mod M …(3)
【0024】
【数4】
FR (x)=XeR+cR modM …(4)
【0025】
【数5】
FR −1(x)=(x−cR)dR mod M …(5)
【0026】
ここで,Mは2つの素数p,qの積であり、eL,eRはそれぞれMより小さく、(p−1)(q−1)と互いに素になるようなeL≠eRを満たす整数、dL,dRは(p−1)(q−1)を法としたときのそれぞれeL,eRの逆数である。また係数cL≠係数cRを満たす。
本実施形態では、管理装置2は、上記p,q,dL,dRをセキュアな状態でメモリ12に記憶する。
また、管理装置2は、一方向置換FL ,FR を計算するのに必要なM,eL,eR,cL,cRを受信装置u1〜u16に公開する。
なお、落とし戸つき一方向置換としてのRSA関数の解説は、たとえばO.Goldreich著,岡本龍明,藤崎英一郎訳,「現代暗号・確率的証明・擬似乱数」,シュプリンガー・フェアラーク,2001年,pp.168−169に記されている。
メモリ12は、後述するようにして生成したラベルデータLABEL(i,j)、中間ラベルデータIL(i,j)、並びに必要に応じて各集合S(i,j)の鍵データSK(i,j)をセキュアな状態で記憶する。
【0027】
処理部13は、メモリ12に記憶されたプログラムPRG1を実行し、その実行に応じて管理装置2の処理を統括して制御する。本実施形態において、管理装置2の処理は、処理部13が実行するプログラムPRG1によって規定される。
【0028】
処理部13は、プログラムPRG1の実行に応じて、受信装置u1〜u16に所定のラベルデータLABELおよび中間ラベルデータILを提供する前処理と、何れの受信装置をリボークするかに応じて選択した集合を指定する集合指定データと、リボークしない受信装置u1〜u16のみが復号可能な暗号データを送信するリボケーション処理とを行う。
【0029】
以下、管理装置2が行う各処理について説明する。
〔前処理〕
図3は、管理装置2が行うリボケーション処理の前処理を説明するためのフローチャートである。
図3において、ステップST7が第1の発明の第1の工程および第2の工程に対応し、ステップST12が第1の発明の第3の工程および第5の工程に対応している。
また、ステップST8が第1の発明の第4の工程に対応している。
また、第3の発明の第1手段および第2手段は、処理部13がステップST7を実行することで実現され、第3の発明の第3の手段は処理部13がステップST12を実行することで実現される。
【0030】
ステップST1:
管理装置2は、先ず、例えば、図4に示す2分木によって構成されるツリー20を定義し、その情報をメモリ12に記憶する。
ステップST2:
管理装置2は、図4に示すように、ツリー20の16個のリーフの各々に16個の受信装置u1〜u16を割り当て、その情報をメモリ12に記憶する。
る。
【0031】
ステップST3:
管理装置2は、各ノードについて、ノード(i)の子孫であるノード(j)に対応する集合S(i,j)を定義する。
本実施形態では、リーフ、並びに2分木の分岐点(ルートを含む)をノードとする。
上記集合S(i,j)は、ツリー20の2つのノード(i),(j)を用いて、「(ノード(i)から分岐したリーフからなる集合)から(ノード(i)から分岐したリーフからなる集合)を除いた集合」として定義する。
ノード(i)がノード(j)の先祖である(すなわち、ノードjはノードiと同一ではなく、ノード(j)からルートへのパス上にノード(i)が存在する)全てのノードの組についてこのような集合(i,j)を定義する。
例えば、図4に示すツリー20において、集合S(2,8)は、ノード「2」から分岐したリーフに割り当てられた受信装置の集合{u1,u2,u3,u4,u5,u6,u7,u8}から、ノード「8」から分岐したリーフに割り当てられた受信装置の集合{u1,u2}を除いた集合{u3,u4,u5,u6,u7,u8}となる。
【0032】
また、管理装置2は、さらに,集合S(i,j)の中で、ノード(i)とノード(j)が親子関係になっているものを第1の特別な集合SS(i,j)とする。
さらに、リボークする受信装置がひとつもない場合に使用する、全受信装置u1〜u16を要素とする第2の特別な集合SS(1,Φ)を定義する。
【0033】
ステップST4:
管理装置2は、定義域および値域が等しい2つの落とし戸つき一方向置換FL,FR を選択し、これを受信装置u1〜u16に公開する。
【0034】
管理装置2は、上述したように、一方向置換FL ,FR に関する情報をメモリ12に記憶する。
管理装置2は、上述したように、一方向置換FL ,FR の逆置換FL −1,FR −1に関する情報をメモリ12にセキュアな状態で保持する。
【0035】
ステップST5:
管理装置2は、ハッシュ関数Hと擬似乱数生成器Gの構成を選択し、それを公開する。また、管理装置2は、これらの情報をメモリ12に記憶する。
ハッシュ関数Hは,任意長の入力に対してあらかじめ定められた長さの出力を出す関数である。たとえば128ビット出力のハッシュ関数としてはMD5が、160ビット出力のハッシュ関数としてはSHA−1がよく知られている。MD5は、A.J.Menezes,P.C.van Oorschotand S.A.Vanstone著,Handbook of Applied Cryptography, CRC Press 1997のp.347に、SHA−1は同書のp.348にアルゴリズムが紹介されている。
また擬似乱数生成器Gは、図5に示すように、Cビットの入力に対し3Cビットの擬似乱数を出力する。
【0036】
ステップST6:
管理装置2は、一方向置換FL ,FR の定義域からランダムな値Kを選択し、第2の特別な集合SS(1,Φ)のラベルデータLABEL(1,Φ)を生成するために用いられる中間ラベルデータIL(1,Φ)の値を「K」とし、その情報をメモリ12にセキュアな状態に記憶する。
また、管理装置2は、ハッシュ関数Hを用いて、H(K)を演算し、その結果をラベルデータLABEL(1,Φ)とする。
【0037】
ステップST7:
管理装置2は、第1の特別な集合SS(i,j)のラベルデータLABEL(i,j)を生成するために用いられる中間ラベルデータIL(i,j)を生成する。
具体的には、管理装置2は、図4に示す例において、図6に示すように、ノード「1」を始点としたノード「2」に対応する第1の特別な集合SS(1、2)の中間ラベルデータIL(1,2)を、逆置換FL −1(K)により生成する。
また、ノード「1」を始点としたノード「3」に対応する第1の特別な集合SS(1、3)の中間ラベルデータIL(1,3)を、逆置換FR −1(K)により生成する。
【0038】
さらに、第1の特別な集合SS(3,6)の中間ラベルデータIL(3,6)を、中間ラベルデータIL(1,2)を用いて、逆置換FL −1(IL(1,2))により生成する。
また、第1の特別な集合SS(3,7)の中間ラベルデータIL(3,7)を、中間ラベルデータIL(1,2)を用いて、逆置換FR −1(IL(3,7))により生成する。
また、第1の特別な集合SS(2,4)の中間ラベルデータIL(2,4)を、中間ラベルデータIL(1,3)を用いて、逆置換FL −1(IL(1,3))により生成する。
また、第1の特別な集合SS(2,5)の中間ラベルデータIL(2,5)を、中間ラベルデータIL(1,3)を用いて、逆置換FR −1(IL(1,3))により生成する。
【0039】
これを繰り返すことにより,ルート以外のすべてのノードjに対して第1の特別なSS(P(j),j)の中間ラベルデータIL(P(j),j)を生成する。
ここで、P(j)を、ノードjの親ノードとする。
また、ノード(j)に対して2分木の左側(一方)に位置する子ノードをCL(j)とし、右側(他方)に位置する子ノードをCR(j)とする。
また、ノード(j)と、同じ親ノードを持つ他方のノードをS(j)とする。
管理装置2は、中間ラベルデータIL(j,CL(j))を、FL −1(IL(P(j),S(j))によって生成する。
また、管理装置2は、中間ラベルデータIL(j,CR(j))を、FR −1(IL(P(j),S(j))によって生成する。
具体的には、管理装置2は、例えば、図4に示すツリー20において、中間ラベルデータIL(2,4)を、FL −1(IL(1,3))によって生成する。
【0040】
図4に示すツリー20において、ルート「1」とリーフ「19」との間のパスにおける受信装置4における処理に用いられる中間ラベルデータIL(i,j)の生成は、例えば、図6に示すように行われる。
図6の例において、例えば、第1の特別な集合SS(4,8)が本発明の第1の集合に対応し、第1の特別な集合SS(9,18)が本発明の第2の集合に対応する。
また、中間ラベルデータIL(2,5)が本発明の第1の復号用データに対応し、中間ラベルデータIL(4,8)が本発明の第2の復号用データに対応し、中間ラベルデータIL(9,18)が本発明の第3の復号用データに対応している。
なお、図6において、第1の特別な集合SS(4,8)を要素とし、その上位にある第1の特別な集合SS(2,5)あるいはSS(1,3)を本発明の第1の集合とし、それに対応する中間ラベルデータIL(2,5)あるいはIL(1,3)を第2の復号用データとしてもよい。
【0041】
また、管理装置2は、上記生成した第1の特別な集合SS(i,j)の中間ラベルデータIL(i,j)について、ハッシュ関数Hを用いて、H(IL(i,j))を演算し、その結果であるラベルデータLABEL(i,j)をメモリ12に記憶する。
【0042】
ステップST8:
管理装置2は、ステップST7で生成した第1の特別な集合SS(i,j)の中間ラベルデータIL(i,j)を基に、その下層に位置する特別でない集合S(i,j)のラベルデータLABEL(i,j)を生成する。
具体的には、管理装置2は、図5および図7に示すように、ステップST7で生成した第1の特別な集合SS(i,j)のCビットのラベルLABEL(i,j)を擬似乱数生成器Gに入力し,その結果である3Cビットのデータのうち上位Cビット(=GL(LABEL(i,j))を、ノード「i」を始点としたノード「j」の左側(一方)の子ノードCL(j)のラベルデータLABEL(i,CL(j))とする。
また、管理装置2は、ステップST7で生成した第1の特別な集合SS(i,j)のラベルLABEL(i,j)を擬似乱数生成器Gに入力し、その結果である3Cビットのデータのうち下位Cビット(=GR(LABEL(i,j))を、ノード「i」を始点としたノード「j」の右側(他方)の子ノードCR(j)のラベルデータLABEL(i,CR(j))とする。
そして、管理装置2は、上記生成したラベルデータLABEL(i,CL(j)),LABEL(i,CR(j))を擬似乱数生成器Gに繰り返し入力することで、ノードiを始点とした、ノードjの子孫であるすべてのノードに対応するラベルデータを求める。
管理装置2は、ステップST7で生成した全ての特別な集合SS(i,j)のラベルデータに対して上記処理を行う。
上述したステップST7およびST8の処理により、ステップST3で規定した全ての集合S(i,j)のラベルデータLABEL(i,j)が生成される。
管理装置2は、集合S(i,j)の要素である受信装置が暗号データの復号に用いる鍵データSK(i,j)を、例えば、SK(i,j)=GM(LABEL(i,j))によって生成する。
すなわち、管理装置2は、ステップST7で生成した第1の特別な集合SS(i,j)のラベルLABEL(i,j)を擬似乱数生成器Gに入力し,その結果である3Cビットのデータのうち中位Cビット(=GM(LABEL(i,j))を、集合S(i,j)の要素である受信装置が暗号データの復号に用いる鍵データSK(i,j)とする。
【0043】
ステップST9:
管理装置2は、全ての受信装置u1〜u16の各々に対して、当該受信装置が要素となる集合に対応するラベルデータを選択する。
具体的には、管理装置2は、受信装置umについて、受信装置um(mは1〜16の整数)が割り当てられたリーフからルートに至るパスpath(m)上の内部のノード「i」を始点とし、当該リ−フからノード「i」までのパスから直接分岐した(枝分かれした)ノード「j」に対応する集合S(i,j)のラベルデータLABEL(i,j)と、上記の第2の特別な集合SS(1,Φ)に対応するラベルデータLABEL(1,Φ)を選択する。
図4に示すツリー20の例では、管理装置2は、受信装置u4について、図8の「従来のSD」の欄に示すように、ラベルデータLABEL(1,3),LABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,5),LABEL(2,8),LABEL(2,18),LABEL(4,8),LABEL(4,18),LABEL(9,18),LABEL(1,Φ)の11個のラベルデータLABEL(i,j)を選択する。
これらの11個のラベルデータLABEL(i,j)のち、図9に示すように、LABEL(1,3),LABEL(2,5),LABEL(4,8)およびLABEL(9,18)が第1の集合SS(i,j)のラベルデータLABEL(i,j)となる。
【0044】
ステップST10:
管理装置2は、各受信装置umについて、ステップST9で選択したラベルデータ(i,j)のうち、前述した第1の特別な集合および第2の特別な集合に対応するラベルデータ(i,j)を除いたラベルデータ(i,j)を選択する。
図4に示すツリー20の例では、管理装置2は、受信装置u4について、ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,8),LABEL(2,18),LABEL(4,18)を選択する。
【0045】
ステップST11:
管理装置2は、受信装置umが割り当てられているリーフ「j」の親ノードP(j)を始点とし、リーフ「j」の兄弟ノード「S(j)」に対応する中間ラベルデータIL(P(j),S(j))を選択し、これをメモリ12にセキュアな状態で記憶する。
図4に示すツリー20の例では、管理装置2は、受信装置u4について、中間ラベルデータIL(9,18)を選択し、これをメモリ12にセキュアな状態で記憶する。
【0046】
ステップST12:
管理装置2は、各受信装置umについて、ステップST10で選択したラベルデータLABEL(i,j)と、ステップST11で選択した中間ラベルデータILとを、当該受信装置umにセキュアな状態で提供する。
受信装置umは、当該受けたラベルデータLABEL(i,j)と中間ラベルデータILとをセキュアな状態で記憶する。
受信装置u4の例では、図8に示す「第1実施形態」の欄のように、ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,8),LABEL(2,18),LABEL(4,18)と、中間ラベルデータIL(9,18)との合計7個のラベルデータを、受信装置u4にセキュアな状態で提供する。
このように、通信システム1によれば、従来のSD方式に比べて、管理装置2から受信装置umに提供して記憶させるラベルデータの数(データ量)を削減できる。
また、通信システム1では、上述したように、一方向置換の逆置換を基に中間ラベルデータILを生成し、そのうち最下層の中間ラベルデータILを受信装置umにセキュアな状態で提供することにより、各受信装置umは、自らが属する第1の特別な集合の中間ラベルデータILは生成できるが、自らが属しない第1の特別な集合の中間ラベルデータILは生成できないようにできる。
例えば、図6の例で説明すると、受信装置u4は、管理装置2から受けた中間ラベルデータIL(9,18)を保持し、後述するように、中間ラベルデータIL(9,18)を基に公開された一方向置換FL ,FR から、中間ラベルデータIL(4,8),IL(2,5),IL(1,3),IL(1,Φ)を生成できるが、それ以外の中間ラベルデータILを生成するには、一方向置換の逆置換FL −1,FR −1が必要になり、逆置換FL −1,FR −1は一方向置換FL ,FR から取得することが困難である。
【0047】
〔リボケーション処理〕
管理装置2は、上述した前処理を行った後に、例えば、コンテンツデータを暗号化した暗号データを受信装置umに送信する際に、当該リボケーション処理を行う。
図10は、管理装置2が行うリボケーション処理を説明するためのフローチャートである。
ステップST21:
管理装置2は、受信装置u1〜u16のうち、リボークしない受信装置を特定する(暗号データを復号できる受信装置を指定する)。
ステップST22:
管理装置2は、ステップST21で特定したリボークしない受信装置を要素とし、かつ、リボークする受信装置を要素としない集合のうち、リボークしない受信装置がいずれかの集合の要素となりかつ、最も上位の階層の単数または複数の集合S(i,j)を特定する。
管理装置2は、例えば、図11に示すように、受信装置u2,u11,u12をリボークする場合には、集合S(2,17)およびS(3,13)を特定する。
【0048】
ステップST23:
管理装置2は、ステップST22で特定した集合S(i,j)を指定する集合指定データを生成する。当該集合指定データは、例えば、集合S(i,j)の識別データを用いて、当該集合S(i,j)を指定する。
ステップST24:
管理装置2は、ステップST23で特定した集合S(i,j)のラベルデータLABEL(i,j)を用いて、鍵データSK(i,j)(=GM(LABEL(i,j)))を生成する。
【0049】
ステップST25:
管理装置2は、送信するデータを、ステップST24で生成した鍵データSK(i,j)のそれぞれで暗号化して暗号データを生成する。
図11に示す例では、管理装置2は、上記データを鍵データSK(2,17)で暗号化した暗号データと、上記データを鍵データSK(3,13)で暗号化した暗号データとを生成する。
ステップST26:
管理装置2は、ステップST25で生成した暗号データを、図2に示す通信部11を介して受信装置u1〜u16に送信する。
なお、本実施形態では、図3に示す前処理はシステム立ち上げ時の一度だけ行い、図10に示すリボケーション処理は送信したい情報があるたびに(たとえばコンテンツを放送するとかROMディスクを生産する場合などに)行う。受信装置もシステム立ち上げ時または自身がシステムに参加するときにラベルを受け取り,下記の受信処理は繰り返して行う。
【0050】
〔受信装置u1〜u16〕
図12は、図1に示す受信装置umのハードウェア構成図である。
図12に示すように、受信装置umは、例えば、通信部51、メモリ52および処理部53を有する。
通信部51は、前述したように管理装置2が送信した暗号データおよび集合指定データを受信する。
メモリ52は、処理部53によって実行されるプログラムPRG2と、プログラムPRG2の実行に用いられる種々データを記憶する。
ここで、プログラムPRG2が第4の発明のプログラムに対応している。
例えば、メモリ52は、例えば、図4に示すツリー20、ツリー20の何れのリーフに受信装置umが割り当てられているかを示す情報、一方向置換FL ,FR に関する情報、疑似乱数生成器Gに関する情報、ハッシュ関数Hに関する情報を記憶している。
【0051】
処理部53は、メモリ52に記憶されたプログラムPRG2を実行し、その実行に応じて受信装置umの処理を統括して制御する。本実施形態において、受信装置umの処理は、処理部53が実行するプログラムPRG2によって規定される。
【0052】
処理部53は、プログラムPRG2の実行に応じて、集合指定データによって指定された集合のラベルデータLABELの生成、中間ラベルデータILの生成、中間ラベルデータILからラベルデータLABELの生成、並びにラベルデータLABELから鍵データSKの生成、鍵データSKを用いた暗号データの復号などの処理を行う。
【0053】
図13は、図12に示す受信装置umの処理を説明するためのフローチャートである。
ステップST31:
受信装置umの通信部51は、管理装置2から、前述した集合指定データと、単数または複数の暗号データを受信する。
ステップST32:
受信装置umの処理部53は、当該受信装置umが、ステップST31で受信した集合指定データが指定する単数または複数の集合のいずれかの要素であるか否かを判断し、要素であると判断するとステップST33に進み、そうでない場合には処理を終了する。
なお、受信装置umは、管理装置2によってリボークされない場合に、管理装置2からの集合指定データが示す単数または複数の集合のうち一つの集合の要素となっている。
【0054】
ステップST33:
受信装置umの処理部53は、後述するように、鍵データSK(i,j)を生成する。
ステップST34:
受信装置umは、ステップST33で生成した鍵データSK(i,j)を用いて、自らが要素となる集合に対応した暗号データを復号する。
【0055】
以下、図13に示す鍵データの生成処理(ステップST33)を詳細に説明する。
図14は、図13に示すステップST33の処理を説明するためのフローチャートである。
図14に示すステップST46,ST47,ST48が第1の発明の第6の工程に対応し、図13に示すステップST34が第1の発明の第7の工程に対応している。
また、第5の発明の第1の手段は、処理部53が図14に示すステップST43,ST45および図13に示すステップST34を実行して実現され、第2の手段は、処理部53が図14に示すステップST46,ST47,ST48および図13に示すステップST34を実行して実現される。
【0056】
ステップST41:
受信装置umは、集合指定データが指定する自らが要素となる集合S(i,j)が、第1あるいは第2の特別な集合であるか否かを判断し、特別な集合であると判断するとステップST48に進み、そうでない場合にはステップST42に進む。
ステップST42:
受信装置umは、集合指定データが指定する自らが要素となる集合S(i,j)のラベルデータLABELが、メモリ52に記憶されているか否かを判断し、記憶されていると判断すると、ステップST43に進み、そうでない場合にはステップST44に進む。
ステップST43:
受信装置umの処理部53は、上記指定された集合S(i,j)のラベルデータLABEL(i,j)をメモリ52から読み出し、これを擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0057】
ステップST44:
受信装置umは、集合指定データが指定する自らが要素となる集合S(i,j)のラベルデータLABELを得るのに第1または第2の特別な集合のラベルデータLABELが必要か否かを判断し、必要であると判断するとステップST46に進み、そうでない場合にはステップST45に進む。
ステップST45:
受信装置umの処理部53は、メモリ52から、上記指定された集合S(i,j)を含む上位階層の集合のラベルデータLABELを読み出し、これを擬似乱数生成器Gに入力し、必要に応じてその結果を繰り返し擬似乱数生成器Gに入力して、ラベルデータLABEL(i,j)を生成する。
当該処理は、図3のST8および図5で示した処理と同様である。
そして、処理部53は、上記生成したラベルデータLABEL(i,j)を擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0058】
ステップST46:
受信装置umの処理部53は、メモリ12から図3を用いて前述したステップST12で管理装置2から提供を受けて書き込まれた中間ラベルデータILを読み出し、これを基に一方向置換FL ,FR を用いて、図6に示すリーフからルートに向かって演算を行って、受信装置umが要素となる第1あるいは第2の特別な集合の中間ラベルデータILを生成する。
また、処理部53は、上記生成した特別な集合の中間ラベルデータILを用いて、ハッシュ関数Hを基に、上記特別な集合のラベルデータLABELを生成する。
【0059】
ステップST47:
受信装置umの処理部53は、ステップST46で生成したラベルデータLABELを擬似乱数生成器Gに入力し、必要に応じてその結果を繰り返し擬似乱数生成器Gに入力して、ラベルデータLABEL(i,j)を生成する。
そして、処理部53は、上記生成したラベルデータLABEL(i,j)を擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0060】
ステップST48:
受信装置umの処理部53は、必要に応じて、メモリ12から前述したステップST12で書き込まれた中間ラベルデータILを読み出し、これを基に一方向置換FL ,FR を用いて、図6に示すリーフからルートに向かって演算を行って、受信装置umが要素となる第1の特別な集合の中間ラベルデータILを生成する。
そして、処理部53は、当該中間ラベルデータILを用いて、ハッシュ関数Hを基に、上記第1あるいは第2の特別な集合のラベルデータLABELを生成する。
そして、処理部53は、当該生成したラベルデータLABELを擬似乱数生成器Gに入力し、その結果の中位CビットGM(LABEL(i,j))を、鍵データSK(i,j)とする。
【0061】
以下、上述した受信装置umの処理をさらに説明する。
処理部53は、ノード(j)が、ノード(i)の子ノードのうち、受信装置umが割り当てられたリーフからルートへのパス上に存在しない側のノード(つまり、パス上にあるノード(i)の子ノードの兄弟であるノード)と一致するか、その子孫である(ノード(j)が受信装置umが要素となる集合のうち、第1あるいは第2の特別な集合を構成するノードの組の2番目のノードの子孫である)場合には、以下のように処理を行う。
受信装置umが記憶する中間ラベルIL(P(n),S(n))から特別な集合の中間ラベルデータILを導出する。
先ず、指定された集合(i,j)が、集合(P(n),S(n))である場合には、受信装置umは、既に、その中間ラベルデータILをメモリ12に記憶しているので演算は不要である。
そうでない場合は、受信装置umの処理部53は、メモリ12から読み出した中間ラベルIL(P(n),S(n))に対して、既に、公開されている一方向置換FL ,FR を適用することで、その上位階層の特別な集合のラベルデータLABELを順次計算する。
上記中間ラベルIL(P(n),S(n))に対し、受信装置umが割り当てられたリーフ(n)の兄弟ノードS(n)が親ノードP(n)の左側の子ノードであるとき、すなわちS(n)=CL(P(n))であるとき、ノードP(n)の親ノードP(P(n))を始点とし、ノードP(n)の兄弟ノードS(P(n))に対応する特別な集合SS(P(P(n)),S(P(n)))の中間ラベルIL(P(P(n)),S(P(n)))はFL (IL(P(n),S(n)))によって求められる。
逆に、ノードS(n)が親ノードP(n)の右側の子ノードであるとき、すなわちS(n)=CR(P(n))であるとき、ノードP(n)の親ノードP(P(n))を始点とし、ノードP(n)の兄弟ノードS(P(n))に対応する特別な集合SS(P(P(n)),S(P(n)))の中間ラベルデータIL(P(P(n)),S(P(n)))は、FR (IL(P(n),S(n)))によって求められる。
これらの出力にさらに一方向置換FL ,FR を繰り返し行うことにより、受信装置umは、特別な集合SS(1,2)またはSS(1,3)を含む自らが必要となる全ての特別な集合の中間ラベルデータILを得ることができる。
【0062】
また,中間ラベルデータIL(1,2)に対しては一方向置換FL を、中間ラベルIL(1,3)に対しては一方向置換FR を適用することにより、第2の特別な集合SS(1,Φ)に対応する中間ラベルデータIL(1,Φ)=Kを求めることができる。
【0063】
前述した図6に示す例で説明すると、受信装置u4は中間ラベルデータIL(9,18)を保持している。
ノード(18)はノード(9)の左側の子ノードであるから、一方向置換FLを用いることにより、ノード(9)の親ノード(4)と兄弟ノード(8)で規定される第1の特別な集合SS(4,8)の中間ラベルデータIL(4,8)をIL(4,8)=FL (IL(9,18))として求めることができる。
また、ノード(8)はノード(4)の左側の子ノードであるから、一方向置換FL を用いることにより,ノード(4)の親ノード(2)と兄弟ノード(5)で決定される集合SS(2,5)の中間ラベルデータIL(2,5)を、IL(2、5)=FL (IL(4,8))として求めることができる。
この処理を繰り返していくことにより,受信装置u4は、IL(1,3)=FR (IL(2,5))およびIL(1,Φ)=FR (IL(1,3))を求めることができる。
【0064】
図15は、受信装置um4が、メモリ12に記憶する中間ラベルデータIL(9,18)から、中間ラベルデータIL(4,8),(2,5),(1,3),(1,Φ)を順に生成する場合を説明するための図である。
図15に示すように、処理部53は、集合S(i,k)に対応する中間ラベルデータIL(i,k)を導出したら,ラベルデータLABEL(i,k)をLABEL(i,k)=H(IL(i,k))として求める。
それから,図5および図7を参照して前述したように、擬似乱数生成器Gを用いて必要な集合S(i,j)のラベルデータLABEL(i,j)を求め、さらにその集合の鍵データSK(i,j)を、GM( LABEL(i,j))により求め,これを用いて、管理装置2から受信した暗号データを復号する。
【0065】
また、図11に示すように、受信装置u2,u11,u12がリボークされ,集合S(2,17),S(3,13)に対応する鍵データSK(2,17),SK(3,13)で暗号化された暗号データを管理装置2が送信する場合を考える。
この場合には、受信装置u4は,ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,8),LABEL(2、18),LABEL(4,18)の6個のラベルデータと、中間ラベルデータIL(1,Φ),IL(1,3),IL(2,5),IL(4,8)を導出できる中間ラベルデータIL(9,18)をメモリ52に記憶する。
【0066】
受信装置u4は、集合S(2,17)の要素であり、ノード(17)の先祖であるノード(8)を用いたラベルデータLABEL(2,8)を直接保持しているため、これに擬似乱数生成器Gを必要な回数だけ適用することで鍵データSK(2,17)を得ることができる。
一方、受信装置u5は、LABEL(1,4),LABEL(1,11),LABEL(1,21),LABEL(2,11),LABEL(2,21),LABEL(5,21)の6個のラベルデータと、中間ラベルデータIL(1,Φ),IL(1,3),IL(2,4),IL(5,11)を導出できる中間ラベルデータIL(10,21)を、メモリ12に記憶している。
受信装置u5は、集合S(2,17)に対し、ノード(17)の先祖であるノード(k)を用いたラベルデータLABAL(2,k)をメモリ12に保持していない。
そのため、受信装置u5は、メモリ12に記憶している中間ラベルデータIL(10,21)から、ノード(17)の先祖であるノード(4)に対応した中間ラベルデータIL(2,4)を先に述べた手法でまず導出し、その後にラベルデータLABAL(2,4)を求め、これに擬似乱数生成器Gを必要な回数だけ適用することで鍵データSK(2,17)を得る。
【0067】
なお、リボークすべき受信装置umが1台もなく、集合として第2の特別な集合SS(1,Φ)が使用されていた場合、受信装置umは、上記の処理により中間ラベルデータIL(1,Φ)を求め、これを用いてラベルデータLABAL(1,Φ)を計算し、それを擬似乱数生成器Gに入力して出力の中央部分のCビットを求めることにより、鍵データSK(1,Φ)を導出し、これを基に暗号データを復号する。
【0068】
以上説明したように、通信システム1によれば、図6に示すように、中間ラベルデータILを規定し、最下層の集合の中間ラベルデータILを受信装置umに保持させることで、受信装置umが記憶(保持)するラベルデータおよび中間ラベルデータの数を、従来のSD方式に比べて削減できる。
また、通信システム1によれば、受信装置umは、自らが保持する中間ラベルデータILを基に、図15に示すように、その上位階層の必要な中間ラベルデータILを生成でき、自らが割り当てられた集合のラベルデータおよび鍵データを適切に取得できる。そのため、リボークされない受信装置umは、管理装置2から受信した暗号データを当該鍵データを基に適切に復号できる。
【0069】
第2実施形態
本実施形態の管理装置2aおよび受信装置umaは、以下に示す処理以外は、第1実施形態の管理装置2および受信装置umと同じである。
以下、上述したSD方式を基礎としたLSD( Basic Layered Subset Difference)方式に本発明を適用した場合を例示する。
LSD方式には、Basic(基本)方式と、その拡張であるGeneral(一般化)方式がある。
ここではBasic_LSDに本発明を適用した場合について説明する。
本実施形態の通信システムは、上述した第1の実施形態の通信システムにおいて、特別レベル(Special Level)と、特別レベル間の階層であるレイヤという新たな概念を取り入れたものである。
例えば、第1実施形態で説明したツリー20内で、図16に示すように、特定の階層を特別レベルとして定義する。
本実施形態では、特別ラベルデータは1種類だけであるが、後述する第2実施形態においては重要度の異なる複数の特別レベルを用いる。
ここで、簡単のため、log1/2 N(Nは受信装置umの数)は整数であるとする。
【0070】
本実施形態では、図16に示すように、ツリー20のルートからリーフに至るまでのそれぞれの階層のうち、ルートとリーフのレベルを含む、log1/2 Nごとの階層を特別レベルと規定する。
そして、隣り合う2つの特別レベルに挟まれた単数または複数の階層(両方の特別レベルを含む)を、レイヤと呼ぶ。
図16の例では、ルートの階層、ノードkを含む階層、リーフの階層が特別レベルであり、ルートの階層とノードiを含む階層とノードkを含む階層が1つのレイヤを構成する。またノードkを含む階層とノードjを含む階層とリーフを含む階層が別のレイヤを構成する。
【0071】
本実施形態では、管理装置2aは、第1実施形態で規定した集合S(i,j)のうち、ノードiとノードjが同一レイヤにあるか、もしくはノードiが特別レベルにあるものだけを規定し、当該規定した集合(i,j)についてのみ、図3を用いて説明したようにラベルデータLABELおよび中間ラベルデータILの生成を行う。
すなわち、本実施形態では、第1実施形態で規定した集合のうちのいくつかは規定されなくなるが、この規定されない集合は、本実施形態で規定される集合の高々2つの和集合で表すことができる。
例えば、図16の例では、集合S(i,j)は、本実施形態では規定されないが、ノードiからノードjへのパス上の、ノードiに最も近い特別レベル上のノード(ノードk)を用いて、S(i,j)=S(i,k)∪S(k,j)と表すことができる。
前述した第1実施形態の管理装置2は、特定(選択)した集合S(i,j)について、それに対応する鍵データSK(i,j)を用いて暗号化した1つの暗号データを生成して受信装置umに提供したが、本実施形態の管理装置2aは、集合S(i,k)とS(k,j)に対応する集合キーSK(i,k),SK(k,j)を用いてそれぞれ暗号化した2つの暗号データを生成して受信装置umaに送信(提供)する。
【0072】
これにより、管理装置2aでは、送信する暗号データの数(通信量)は、第1の実施形態の管理装置2の高々2倍に増加するが、各受信装置umaが保持するラベルデータの数を第1実施形態の受信装置umに比べて減らすことができる。
【0073】
管理装置2aでは、擬似乱数生成器Gを用いてラベルデータLABEL(i,j)を順に生成する過程で、ノード(i)が特別レベルにない場合、ノード(i)の一つ下の特別レベルよりも下のノードをjとするラベルデータは利用されないので、当該一つ下の特別レベルまででラベルデータの生成を止める。
管理装置2aは、前述した前処理において、ラベルデータを各受信装置umaにセキュアな状態で提供する場合にも、上述した条件で生成したラベルデータのなかから選択して受信装置umaに提供する。
【0074】
図17および図18は、図9のツリー20を基に受信装置umが割り当てられている場合に、本実施形態の受信装置u4aが記憶するラベルデータLABELを説明するための図である。
図17および図18に示すように、従来のBASIC_LSDを採用した場合には、提供して記憶させたラベルデータLABEL(1,3),LABELE(1,5),LABEL(1,8),LABEL(1,18),LABEL(2,5),LABEL(4,8),LABEL(4,18),LABEL(9,18)と特別なラベルの合計9個のラベルデータを受信装置u4が保持する必要がある。
これに対して、本実施形態の管理装置2aでは、上述したように中間ラベルデータILを用いることで、ノード(i),(j)が親子関係にある場合の中間ラベルデータIL(i,j)と、前述した第2の特別な集合の中間ラベルデータIL(1,Φ)を、一つの中間ラベルデータILから導出する。
そのため、管理装置2aは、受信装置u4aに対して、前処理において、図18に示すように、ラベルデータLABEL(1,5),LABEL(1,8),LABEL(1,18),LABEL(4,18)と、中間ラベルデータIL(9,18)との合計5個のラベルデータを提供して保持させる。
【0075】
以下、受信装置umaの数をNとした場合に、従来のBASIC_LSDに比べて、本実施形態において受信装置umaに記憶させるラベルデータの数を削減できることを説明する。
すなわち、ノード(i),(j)が親子関係になるようなラベルデータLABEL(i,j)を各受信装置umaがいくつ保持すべきかを考える。
ノード(i),(j)が親子関係になっているときには,以下の3つの場合が考えられる。
(A)ノード(i)が特別レベルにある。
(B)ノード(j)が特別レベルにある。
(C)ノード(i),(j)の双方が特別レベルにない。
【0076】
上記(A)〜(C)のいずれの場合も、ノード(i),(j)が親子関係にある(つまり、ツリー上で隣り合っている)以上、ノード(i),(j)は同一レイヤに存在する。すなわち,集合S(i,j)はBasic_LSD方式で定義されるための条件を満たしている。
つまり、このような集合はBasic_LSDで定義され使用されるため、受信装置umaはそれに対応するLABEL(i,j)を保持しておく必要がある。
このようなノード(i),(j)は、受信装置umaについては、ノード(i)の位置がツリーの高さ分(すなわち,受信装置が割り当てられたリーフからルートへのパス上の、リーフを除くノードすべて)あり、ノード(i)を決めればノード(j)がただ1つ決まる(ノード(i)の子で、上記のパス上にないノード)ため、ツリー20の高さ分,すなわちlogN個だけ存在する。
【0077】
本実施形態では、受信装置umaが、これらのlogN個の第1の特別なラベルデータと1つの第2の特別なラベルデータを、第1実施形態で図15を用いて説明したように、一方向置換を基に、1つの中間ラベルデータから作り出すように規定し、この中間ラベルデータILを受信装置umaにセキュアな状態で提供して保持させる。
これにより、受信装置umaが保持するラベルデータの数をlogN(=logN+1−1)だけ削減できる。
従来のBasic_LSD方式では受信装置umが保持するラベルデータの総数はlog3/2N+1であるが、本実施形態では、上述のように、受信装置umaが保持するラベルデータの数を、log3/2N−logN+1に削減できる。
【0078】
第3実施形態
本実施形態の管理装置2bおよび受信装置umbは、以下に示す処理以外は、第1および第2実施形態の管理装置2,2aおよび受信装置um,umaと同じである。
本実施形態では、General_LSDに本発明を適用した場合を説明する。
上述した従来のBasic_LSD方式では,1種類の特別レイヤを用いたが、本実施形態では、General_LSDと同様に、重要度の異なる複数の特別レベルを用いる。
すなわち、前述したように受信装置umbをリーフに対応付けたツリー20において、ルートからノード(i)を経てノード(j)に至るパスを1本のグラフとして考える。
ツリー20のルートとノード(j)が端点となり,ツリー20のノードがグラフのノードとなり,端点以外のノードのひとつがノード(j)となっている。このグラフでは,各ノードはルートからの距離で表される。この距離は,d桁のb進数(ただしb=O(log1/dN)で表される。
たとえば,ルートは「0...00」と表され,その隣のノード(ツリー20において、ルートの子ノードであるノード)は「0...01」と表される。
【0079】
この場合に、第1実施形態で規定した集合S(i,j)は、規定された変換(ノードからノードへの遷移)を組み合わせることで、ノード(i)からノード(j)への最終的な遷移であると考える。
上記規定された変換は上記集合に対応し、最終的な遷移に要する個々の遷移が、集合S(i,j)を分割して表すのに必要な集合を示す。
【0080】
例えば、ノード(i),(k1),(k2),(k(d−1)),(j)がこの順で、ツリー20のパス上に存在する場合に、集合S(i,j)は、本実施形態では、下記式(6)に示すように、高々d個の集合の和集合で表される。
【0081】
【数6】
S(i,j)=S(i,k1)∪S(k1,k2)∪...∪S(k(d−1,j) …(6)
【0082】
本実施形態では、ノード(i)が上記のグラフにおいて、(x)a(0)と表されるとき、(x+1)0(ベクトル0)あるいは(x)a’(y)で表されるノード(j)への遷移を全て規定する。
ここで、aは非ゼロの数字のうち1番右にある数字、(x)は任意の数字列、(0)はゼロの列、a’≧a、(y)は(0)と同じ長さの任意の数字列である。
【0083】
すなわち、第2実施形態は、当該第3実施形態においてd=2、(一番右の)最終桁が0である2桁の数字で表されるレベルを特別レベルとしたものである。
本実施形態では、ノード(i)を表す数字における一番右のゼロの列の桁数が、そのレベルの重要度を表し、本実施形態で定義される集合S(i,j)を表すノード(j)は、ノード(i+1)からノード(i)よりも重要度の高い最初のノードまでのいずれのノード(両端のノードを含む)にもなる可能性がある。
例えば、i=825197,j=864563とすると、ノード(i)からノード(j)への遷移、すなわち集合S(i,j)は、「825917→825920→826000→830000→864563」という上述した4つの遷移によって表すことができる。
すなわち、k1=825920,k2=826000,k3=830000とおけば、下記式(7)が成り立つ。
【0084】
【数7】
S(i,j)=S(i,k1)∪S(k1,k2)∪S(k2,k3)∪S(k3,j) …(7)
【0085】
本実施形態では、管理装置2bは、サブセットS(i,j)の要素となる受信装置umbに復号させる暗号データとして、集合S(i,k1),S(k1,k2),S(k2,k3),S(k3,j)に対応するラベルデータLABELから生成した鍵データを用いて暗号化した4つの暗号データを生成および送信する。
【0086】
本実施形態によれば、受信装置umbが保持すべきラベルデータの数は、パラメータdが大きくなるに従って減少し、最終的には下記式(8)となる。
このとき,送信すべき暗号データの数は、d(2r−1)となる。ここで、rはリボークする受信装置の数を示している。
【0087】
【数8】
【0088】
従来のGeneral_LSDでは,受信装置umbは、受信装置umbが復号に使用するラベルデータLABELのうち、ノード(i),(j)が親子関係になっている集合S(i,j)に対応するラベルデータLABAL(i,j)を全てセキュアな状態で保持する。
これは、ノード(i)としてどんな値をとっても,その子ノード(j)、すなわちノード(i+1)への遷移は,上述した遷移の条件に当てはまるためである。
すなわち、受信装置umについて、当該受信装置umが利用するラベルデータのうちノード(i),(j)が親子関係になっているものはlogN個ある。
本実施形態では,受信装置umbは、これらlogN個の第1の特別なラベルデータと1個の第2の特別なラベルデータを、第1実施形態と同様に、一方向置換を基に、1つの中間ラベルデータから作り出す.受信装置umbが当該中間ラベルデータを保持することで、受信装置umbが保持するラベルデータを、従来のGeneral_LSDに比べてlogN個削減できる。
【0089】
本発明は上述した実施形態には限定されない。
上述した実施形態では、2分木を基に構成されたツリーのリーフに受信装置umを対応付けた場合を例示したが、3分木以上の木を少なくとも一つ含むツリーのフーフに受信装置umを対応付けた場合にも本発明は同様に適用可能である。
【0090】
【発明の効果】
以上説明したように、本発明によれば、複数の処理装置に提供した暗号データを、指定した前記処理装置に復号用データを基に復号させる場合に、各処理装置に保持させる復号用データの数を削減できるデータ処理方法、そのプログラムおよびその装置を提供することができる。
【図面の簡単な説明】
【図1】図1は、本発明の第1実施形態に係わる通信システムの全体構成図である。
【図2】図2は、図1に示す管理装置のハードウェア構成図である。
【図3】図3は、図1に示す管理装置のリボケーション処理に先立って行う前処理を説明するためのフローチャートである。
【図4】図4は、図1に示す管理装置が前処理等に使用するツリーを説明するための図である。
【図5】図5は、図1に示す管理装置による中間ラベルデータの生成処理を説明するための図である。
【図6】図6は、本発明の第1実施形態におけるラベルデータの生成方法を説明するための図である。
【図7】図7は、本発明の第1実施形態におけるラベルデータの生成方法を説明するための図である。
【図8】図8は、図1に示す受信装置に前処理で提供するラベルデータおよび中間ラベルデータを説明するための図である。
【図9】図9は、図1に示す管理装置によるリボケーション処理を説明するための図である。
【図10】図10は、図1に示す管理装置によるリボケーション処理を説明するためのフローチャートである。
【図11】図11は、図1に示す管理装置によるリボケーション処理を行う際に選択する集合を説明するための図である。
【図12】図12は、図1に示す受信装置のハードウェア構成図である。
【図13】図13は、図1に示す受信装置の全体動作を説明するためのフローチャートである。
【図14】図14は、図13に示すステップST33の処理を説明するためのフローチャートである。
【図15】図15は、図1に示す受信装置における中間ラベルデータの生成方法を説明するための図である。
【図16】図16は、本発明の第1実施形態に係わる通信システムのリボケーション処理の前処理を説明するための図である。
【図17】図17は、本発明の第2実施形態の通信システムを説明するための図である。
【図18】図18は、本発明の第2実施形態の通信システムを説明するための図である。
【符号の説明】
2…管理装置、u1〜u16…受信装置、11…通信部、12…メモリ、13…処理部、51…通信部、52…メモリ、53…処理部
Claims (13)
- 複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理方法であって、
相互に異なる前記処理装置を要素とする複数の第1の前記集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の前記集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、
前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の工程と、
前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の工程で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の工程と、
前記第1の工程で生成した前記第2の復号用データと、前記第2の工程で生成した前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の工程と
を有するデータ処理方法。 - 前記第3の工程は、
前記複数の処理装置のうち一部の前記処理装置を前記指定し、当該指定した前記処理装置が要素となり前記指定を行わない処理装置を要素としない第1の集合がある場合に、当該第1の集合について前記第1の工程で生成した前記第2の復号用データを基に暗号化した前記暗号データを前記処理装置に提供し、
前記複数の処理装置のうち一部の前記処理装置を前記指定し、当該指定した前記処理装置が要素となり、前記指定を行わない処理装置を要素としない前記第1の集合がなく、前記指定した処理装置が要素となり、前記指定を行わない前記処理装置を要素としない前記第2の集合がある場合に、当該第2の集合の要素となる前記処理装置に対して提供される前記第3の復号用データを基に暗号化した前記暗号データを前記処理装置に提供する
請求項1に記載のデータ処理方法。 - 少なくとも前記第1の集合を一つの階層に含み、最下層の集合である前記第2の集合の要素が単数の前記処理装置となり、同じ階層の複数の集合が相互に異なる前記処理装置を要素とするように階層的に複数の集合が規定される場合に、
前記第2の工程は、各階層の複数の集合のそれぞれについて、当該複数の集合間で相互に異なり前記処理装置に公開された一方向性関数の逆関数を基に、当該集合が規定された一つ上位の階層の集合について生成された復号用データから復号用データを生成する
請求項1に記載のデータ処理方法。 - 最上層が前記第1の集合であり、最下層の集合である前記第2の集合の要素が単数の前記処理装置となり、同じ階層の複数の集合が相互に異なる前記処理装置を要素とするように階層的に複数の集合が規定される場合に、
前記第1の工程は、前記複数の処理装置の全てを前記指定する場合に用いられる前記第1の復号用データから前記第2の復号用データを生成し、
前記第2の工程は、前記最上層の下層にある各階層の複数の集合のそれぞれについて、当該複数の集合間で相互に異なり前記処理装置に公開された一方向性関数の逆関数を基に、当該集合が規定された一つ上位の階層の集合について生成された前記復号用データから復号用データを生成する
請求項1に記載のデータ処理方法。 - 各リーフに単数の前記処理装置が対応付けられ、前記リーフとルートとの間で前記ルートからの距離に応じて前記階層が規定されたツリーを基に、前記ツリーのルート、ノードおよびリーフのうちルートからあるリーフへのパス上に存在する2つの要素からなる組を規定し、各組について、当該組の要素のうちルートに近い一方の要素から分岐したリーフから、他方の要素から分岐したリーフを除いたリーフに割り当てられた前記処理装置を要素とする第3の集合を規定し、
前記第3の集合のうち、前記第1の工程および前記第2の工程で前記復号用データが生成された集合以外の集合に割り当てた復号用データを、当該集合の要素となる前記処理装置に提供する第4の工程
をさらに有する請求項4に記載のデータ処理方法。 - 前記選択された復号用データを当該復号用データの識別データを用いて指定する指定データを前記処理装置に提供する第5の工程をさらに有する
請求項1に記載のデータ処理方法。 - 前記処理装置が、前記第5の工程で受けた前記指定データが前記第2の復号用データを指定する場合に、前記2の工程で受けた前記第3の復号用データと、前記公開された一方向性関数とを基に、前記第2の復号用データを生成する第6の工程と、
前記処理装置が、前記第3の工程で受けた暗号データを、前記第6の工程で生成した前記第2の復号用データを用いて復号する第7の工程と
を有する請求項6に記載のデータ処理方法。 - 複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理装置が実行するプログラムであって、
相互に異なる前記処理装置を要素とする複数の第1の集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、
前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の手順と、
前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手順で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の手順と、
前記第1の手順で生成した前記第2の復号用データと、前記第2の手順で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の手順と
を前記データ処理装置に実行させるプログラム。 - 複数の処理装置のうち同じ集合の要素となる前記処理装置に共通の復号用データを提供し、前記複数の処理装置に提供した暗号データを、指定した前記処理装置に前記復号用データを基に復号させるデータ処理装置であって、
相互に異なる前記処理装置を要素とする複数の第1の集合と、前記複数の第1の集合の各々について規定され当該第1の集合の要素となる相互に異なる前記処理装置を要素とする複数の第2の集合とのそれぞれに、前記複数の処理装置の各々を割り当てた場合に、
前記複数の第1の集合のそれぞれについて、前記処理装置に公開され前記複数の第1の集合間で相互に異なる一方向性関数の逆関数を基に、第1の復号用データから第2の復号用データを生成する第1の手段と、
前記複数の第2の集合のそれぞれについて、前記処理装置に公開され前記複数の第2の集合間で相互に異なる一方向性関数の逆関数を基に、当該第2の集合が規定された前記第1の集合について前記第1の手段で生成された前記第2の復号用データを用いて、当該第2の集合の要素となる前記処理装置にセキュアな状態で提供される第3の復号用データを生成する第2の手段と、
前記第1の手段で生成した前記第2の復号用データと、前記第2の手段で生成された前記第3の復号用データとのうち、前記暗号データを復号させる前記処理装置の前記指定に応じて選択した復号用データを基に暗号化した暗号データを前記処理装置に提供する第3の手段と
を有するデータ処理装置。 - 復号用データを基に暗号データを復号するデータ処理装置が実行するプログラムであって、
指定された復号用データを保持している場合に、前記指定された復号用データを基に前記暗号データを復号する第1の手順と、
前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する第2の手順と
をデータ処理装置に実行させるプログラム。 - 前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に復号用データを生成し、当該復号用データを用いて、前記指定された復号用データを生成する第3の手順
をさらに有する請求項10に記載のプログラム。 - 復号用データを基に暗号データを復号するデータ処理装置であって、
指定された復号用データを保持している場合に、前記指定された復号用データを基に前記暗号データを復号する第1の手段と、
前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に前記指定された復号用データを生成し、当該生成した復号用データを基に前記暗号データを復号する第2の手段と
有するデータ処理装置。 - 前記指定された復号用データを保持しない場合に、予め保持している復号用データと公開されている一方向性関数とを基に復号用データを生成し、当該復号用データを用いて、前記指定された復号用データを生成する第3の手段
をさらに有する請求項12に記載のデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003164287A JP2005005806A (ja) | 2003-06-09 | 2003-06-09 | データ処理方法、そのプログラムおよびその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003164287A JP2005005806A (ja) | 2003-06-09 | 2003-06-09 | データ処理方法、そのプログラムおよびその装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005005806A true JP2005005806A (ja) | 2005-01-06 |
Family
ID=34091121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003164287A Pending JP2005005806A (ja) | 2003-06-09 | 2003-06-09 | データ処理方法、そのプログラムおよびその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005005806A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006253822A (ja) * | 2005-03-08 | 2006-09-21 | Toshiba Corp | 復号装置、復号方法、及びプログラム |
-
2003
- 2003-06-09 JP JP2003164287A patent/JP2005005806A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006253822A (ja) * | 2005-03-08 | 2006-09-21 | Toshiba Corp | 復号装置、復号方法、及びプログラム |
JP4599194B2 (ja) * | 2005-03-08 | 2010-12-15 | 株式会社東芝 | 復号装置、復号方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7340054B2 (en) | Information processing method, decrypting method, information processing apparatus, and computer program | |
JP6096782B2 (ja) | 階層的属性ベースの暗号化及び復号 | |
JP5944893B2 (ja) | 再暗号化装置及びプログラム | |
CN108200181B (zh) | 一种面向云存储的可撤销属性基加密系统及方法 | |
JP5389212B2 (ja) | 再暗号文検証プログラム、再暗号化装置及び再暗号化システム | |
US20070133806A1 (en) | Information processing method, decryption method, information processing device, and computer program | |
JP2013078042A (ja) | サーバ装置及びプログラム | |
CN111740988B (zh) | 云存储数据加密方法、系统和存储介质 | |
JP2005286959A5 (ja) | ||
JP2006086568A5 (ja) | ||
Seo et al. | Revocable hierarchical identity-based encryption | |
JP6384149B2 (ja) | 鍵生成装置、暗号化装置、復号装置およびそれらのプログラム、ならびに、個人情報保護システム | |
Datta et al. | Adaptively secure unrestricted attribute-based encryption with subset difference revocation in bilinear groups of prime order | |
JP2006115464A (ja) | 情報処理方法、復号処理方法、および情報処理装置、並びにコンピュータ・プログラム | |
JP4432350B2 (ja) | データ処理方法、そのプログラム、その装置と受信装置 | |
JP2012165130A (ja) | 通信装置および鍵算出装置 | |
JP4561074B2 (ja) | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム | |
KR101951545B1 (ko) | 와일드 카드를 포함하는 키 발급, 암호화 및 복호화 방법 | |
Lee et al. | Self-updatable encryption: time constrained access control with hidden attributes and better efficiency | |
JP2005005806A (ja) | データ処理方法、そのプログラムおよびその装置 | |
JP2007189597A (ja) | 暗号化装置および暗号化方法、並びに復号化装置および復号化方法 | |
CN110098926B (zh) | 一种属性撤销方法 | |
Asano | Reducing storage at receivers in SD and LSD broadcast encryption schemes | |
JP2005012280A (ja) | データ処理方法、そのプログラムおよびその装置と処理装置 | |
CN111970296A (zh) | 一种高效的文件分等级属性基加密方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060607 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091117 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100112 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100727 |