(57)【要約】【課題】グループ販売やグループ管理が可能なコンテンツ配信システムにおいて、コンテンツに対してさまざまな種類のグループ階層を任意に構成することができるコンテンツ鍵管理機能を備えた配信装置および利用端末装置を提供すること。【解決手段】複数のコンテンツをグループ単位に分類し、これらのグループ単位でコンテンツを復号するためのグループ復号鍵を、乱数等を用いて生成する。このグループ復号鍵を用いて、グループに属するコンテンツを復号するためのコンテンツ復号鍵を暗号化する。暗号化されたコンテンツ復号鍵は、暗号化コンテンツに復号情報として付加され、ユーザに配信される。グループ鍵を購入したユーザは、該グループ鍵を用いて復号情報を復号し、得られたコンテンツ復号鍵を用いて暗号化コンテンツを復号する。【選択図】  図１
2005006033.tif 000002
【特許請求の範囲】
【請求項１】
入力指令に従って、コンテンツをグループ化するコンテンツグループ構成ステップと、
前記コンテンツグループ構成ステップによって構成されたそれぞれのグループに対応付けて鍵を設定するグループ鍵設定ステップと、
前記グループ鍵設定ステップによって設定されたグループ鍵によって、当該グループに属するコンテンツのコンテンツ鍵を暗号化するコンテンツ鍵暗号化ステップと、
を含むことを特徴とする鍵生成方法。
【請求項２】
入力指令に従って、コンテンツをグループ化するコンテンツグループ構成ステップと、
前記コンテンツグループ構成ステップによって構成されたそれぞれのグループに対応付けて鍵を設定するグループ鍵設定ステップと、
前記コンテンツを暗号化するための鍵をコンテンツに対応付けて設定するコンテンツ鍵設定ステップと、
前記グループ鍵設定ステップによって設定されたグループ鍵によって、当該グループに属するコンテンツのコンテンツ鍵を暗号化するコンテンツ鍵暗号化ステップと、
を含むことを特徴とする鍵生成方法。
【請求項３】
請求項１または２において、さらに、
前記コンテンツ鍵に対応付けてコンテンツ鍵復号情報を生成するコンテンツ鍵復号情報生成ステップを含み、このコンテンツ鍵復号情報は、
前記グループ鍵によって暗号化されたコンテンツ鍵と、
当該コンテンツ鍵がどのコンテンツに対応付けられたものかを識別するためのコンテンツ識別情報と、
当該コンテンツ鍵がどのグループのグループ鍵によって暗号化されたかを識別するためのグループ識別情報と
を含むことを特徴とする鍵生成方法。
【請求項４】
請求項３において、さらに、
入力指令に従って、前記グループを下位グループとして、さらに上位のグループを構成する上位グループ構成ステップと、
前記上位グループ構成ステップによって構成されたそれぞれの上位グループに対応付けて鍵を設定する上位グループ鍵設定ステップと、
前記上位グループ鍵設定ステップによって設定された上位グループ鍵によって、当該上位グループに属する前記下位グループのグループ鍵を暗号化するグループ鍵暗号化ステップと、
を含むことを特徴とする鍵生成方法。
【請求項５】
請求項４において、
前記上位グループ構成ステップは、入力指令に従って、先に構成された上位グループを下位グループとして、さらに上位のグループを構成する処理を実行するステップを含み、
前記先に構成された上位グループを下位グループとし且つ当該ステップにより構成されたさらに上位のグループを上位グループとして、前記上位グループ鍵設定ステップと、前記グループ鍵暗号化ステップとを実行する、
ことを特徴とする鍵生成方法。
【請求項６】
請求項４または５において、さらに、
前記下位グループのグループ鍵に対応付けてグループ鍵復号情報を生成するグループ鍵復号情報生成ステップを含み、このグループ鍵復号情報は、
前記上位グループ鍵によって暗号化された当該下位グループのグループ鍵と、
当該グループ鍵がどの下位グループに対応付けられたものかを識別するためのグループ識別情報と、
当該グループ鍵がどの上位グループの上位グループ鍵によって暗号化されたかを識別するための上位グループ識別情報と
を含むことを特徴とする鍵生成方法。
【請求項７】
請求項２ないし６の何れかにおいて、
既に構成済みのグループに対して新たにコンテンツを追加する入力指令があったとき、
前記コンテンツ鍵設定ステップによって当該コンテンツを暗号化するための鍵を設定すると共に、前記コンテンツ鍵暗号化ステップによって当該コンテンツのコンテンツ鍵を当該グループのグループ鍵によって暗号化し、さらに、前記コンテンツ鍵復号情報生成ステップによって当該コンテンツ鍵に対応付けられるコンテンツ鍵復号情報を生成する、
ことを特徴とする鍵生成方法。
【請求項８】
上記請求項１から７の何れかに記載の鍵生成方法の処理ステップをコンピュータに実行させるプログラム。
【請求項９】
上記請求項１から７の何れかに記載の鍵生成方法の処理ステップを実行するための手段を有する鍵生成装置。
【請求項１０】
上記請求項６に記載の鍵生成方法の処理ステップを実行するための手段と、
前記コンテンツを記憶するためのコンテンツ記憶手段と、
前記コンテンツ鍵および前記グループ鍵を記憶するための鍵記憶手段と、
前記コンテンツ鍵復号情報およびグループ鍵復号情報を記憶するための復号情報記憶手段と、
前記コンテンツ鍵によって暗号化されたコンテンツをグループ単位で端末装置に送信する第１の送信手段と、
前記第１の送信手段によって送信される暗号化コンテンツのコンテンツ鍵を復号するために必要な前記コンテンツ鍵復号情報および前記グループ鍵復号情報を前記端末装置に送信する第２の送信手段と、
前記第２の送信手段によって送信される前記コンテンツ鍵復号情報および前記グループ鍵復号情報から前記コンテンツ鍵を復号するために必要な前記グループ鍵を前記端末装置に送信する第３の送信手段と、
を有することを特徴とするコンテンツ配信装置。
【請求項１１】
請求項１０において、
前記コンテンツ記憶手段は、前記コンテンツ鍵で暗号化されたコンテンツを記憶する、ことを特徴とするコンテンツ配信装置。
【請求項１２】
請求項１０または１１に記載のコンテンツ配信装置から配信された暗号化コンテンツを受信して復号する端末装置であって、
受信した前記暗号化コンテンツを記憶する暗号化コンテンツ記憶手段と、
受信した前記コンテンツ鍵復号情報および前記グループ鍵復号情報を記憶する復号情報記憶手段と、
受信したグループ鍵を記憶するグループ鍵記憶手段と、
前記暗号化コンテンツ記憶手段に記憶されたコンテンツのうち、所定のコンテンツの復号指令が入力されたことに応じて、当該コンテンツの復号に必要な前記コンテンツ鍵復号情報および前記グループ鍵復号情報を前記復号情報記憶手段から読み出すと共に、当該コンテンツの復号に必要な前記グループ鍵を前記グループ鍵記憶手段から読み出し、読み出した前記コンテンツ鍵復号情報および前記グループ鍵復号情報と前記グループ鍵から、当該コンテンツのコンテンツ鍵を復号するコンテンツ鍵復号手段と、
復号したコンテンツ鍵を用いて当該暗号化コンテンツを復号するコンテンツ復号手段と
を有することを特徴とする端末装置。
【請求項１３】
請求項１２において、
前記コンテンツ鍵復号手段は、
当該コンテンツの復号に必要なグループ鍵として前記グループ鍵記憶手段から読み出したグループ鍵が、下位グループをさらにグループ化して構成された上位グループに対して設定されたものであるとき、
当該コンテンツを含む前記下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記グループ鍵によって復号して当該下位グループのグループ鍵を取得し、
取得したグループ鍵が、当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵でなければ、当該コンテンツを含むさらに下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記取得したグループ鍵によって復号してさらに下位グループのグループ鍵を取得し、このグループ鍵の取得を当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵を取得するまで繰り返し、
コンテンツ鍵を暗号化した際に用いたグループ鍵を取得すると、当該コンテンツのコンテンツ鍵復号情報中の暗号化コンテンツ鍵を当該グループ鍵によって復号して当該コンテンツのコンテンツ鍵を取得する、
ことを特徴とする端末装置。
【請求項１４】
請求項１０または１１に記載のコンテンツ配信装置から配信される情報を受信して暗号化コンテンツを復号する機能を端末装置に付与するためのプログラムであって、
受信した前記暗号化コンテンツを記憶する処理と、
受信した前記コンテンツ鍵復号情報および前記グループ鍵復号情報を記憶する処理と、
受信したグループ鍵を記憶する処理と、
記憶されたコンテンツのうち、所定のコンテンツに対する復号指令が入力されたことに応じて、当該コンテンツの復号に必要な前記コンテンツ鍵復号情報および前記グループ鍵復号情報を記憶手段から読み出すと共に、当該コンテンツの復号に必要な前記グループ鍵を記憶手段から読み出し、読み出した前記コンテンツ鍵復号情報および前記グループ鍵復号情報と前記グループ鍵から、当該コンテンツのコンテンツ鍵を復号する処理と、
復号したコンテンツ鍵を用いて当該暗号化コンテンツを復号する処理と、
を含むプログラム。
【請求項１５】
請求項１４において、
前記コンテンツ鍵の復号処理は、
当該コンテンツの復号に必要なグループ鍵として記憶手段から読み出したグループ鍵が、下位グループをさらにグループ化して構成された上位グループに対して設定されたものであるとき、
当該コンテンツを含む前記下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記グループ鍵によって復号して当該下位グループのグループ鍵を取得し、
取得したグループ鍵が、当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵でなければ、当該コンテンツを含むさらに下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記取得したグループ鍵によって復号してさらに下位グループのグループ鍵を取得し、このグループ鍵の取得を当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵を取得するまで繰り返し、
コンテンツ鍵を暗号化した際に用いたグループ鍵を取得すると、当該コンテンツのコンテンツ鍵復号情報中の暗号化コンテンツ鍵を当該グループ鍵によって復号して当該コンテンツのコンテンツ鍵を取得する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、暗号化コンテンツを配布した後に復号鍵のみを販売する形態のコンテンツ配信システムにおける、コンテンツ復号鍵の生成および利用に関する。
【０００２】
【従来の技術】
インターネットの普及に伴って、コンテンツ配信が広く行われている。しかし、コンテンツをパーソナルコンピュータへ無防備に提供してしまうと、無断に複製され、利用されることになり、コンテンツ供給者は多大な損害を被ることになる。したがって、販売から利用までのコンテンツの著作権を技術的に保護する必要がある。
【０００３】
現在、暗号技術を用いてコンテンツを保護する仕組みが広く用いられている。中でも、コンテンツを暗号化して配布し、後に復号鍵を販売する形態を持つ配信システムは、手段を選ぶことなくコンテンツを配布できるという特徴がある。また、この方法では復号鍵が販売の単位となるため、コンテンツ毎に異なる復号鍵を用意しておくことにより、例えば、複数の楽曲を収めたアルバムについても、利用者は好きな楽曲だけを選択して購入することができる。
【０００４】
しかし、利用者が関連するコンテンツをまとめて購入する場合、利用者は全ての復号鍵を購入しなければならず、その手続きに時間と手間がかかってしまう。また、利用者が購入したコンテンツが増えるにつれ、管理しなければならない復号鍵が増大するため、管理が複雑になるという問題を含んでいる。
【０００５】
これに対し、以下の特許文献１には、複数の平文データに対してグループを設定し、各平文データに有効な復号鍵と、そのグループに有効な復号鍵を生成し、関連する複数の平分データ（グループに属する平分データ）を、１つの復号鍵（グループに有効な復号鍵）で購入できる技術が示されている。
【０００６】
【特許文献１】特開２００２−３６６０３０号
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来の方法では、平文データに有効な復号鍵が、その平文データが属するグループ（グループ内の全ての平文データ）に有効な復号鍵に依存して生成されるため、例えば、１つの平文データに対し複数のグループが設定されると、その平文データはグループ毎に個別の復号鍵を持つことになる。このため、一つの平文データに設定されるグループ数が増えるにつれ、管理しなければならない復号鍵が増大し、復号鍵の管理が煩雑となるとの問題が生じる。
【０００８】
さらに、暗号化後の平文データをデータベース内に予め記憶しておくような場合には、一つの平文データに複数のグループが設定されると、その平文データに有効な復号鍵もグループ毎に設定されるため、同じ内容の平文データであるにも拘わらず、設定グループ数に応じた暗号化平文データを記憶しなければならない。このため、記憶容量との関係から、設定できるグループ数には自ずと限界が生じ、それほど多くのグループを設定することはできない。
【０００９】
そこで、本発明は、グループ販売やグループ管理が可能なコンテンツ配信システムにおいて、鍵管理の簡素化を図りながら、コンテンツに対してさまざまな種類のグループ階層を任意に設定できる鍵生成方法を提供することを課題とする。
【００１０】
【課題を解決するための手段】
コンテンツをグループ化したときに、このグループに有効な復号鍵（グループ鍵）を生成する。また、コンテンツに有効な復号鍵（コンテンツ鍵）をコンテンツ毎に設定しておく。そして、グループに属するコンテンツのコンテンツ鍵を当該グループのグループ鍵で暗号化する。
【００１１】
これにより、一つのコンテンツに対して複数のグループが設定されても、コンテンツ鍵はコンテンツ毎に一つ設定されていればよく、グループ毎にコンテンツ鍵を変更する必要はない。したがって、暗号化コンテンツをデータベースに予め記憶しておくような場合にも、そのコンテンツの復号鍵に対応した暗号化コンテンツのみを記憶しておけばよく、グループ毎に暗号化コンテンツを個別に記憶しておく必要はない。
【００１２】
各請求項の発明は、それぞれ以下に示す特徴を備える。
【００１３】
請求項１の発明は、鍵生成方法であって、入力指令に従って、コンテンツをグループ化するコンテンツグループ構成ステップと、前記コンテンツグループ構成ステップによって構成されたそれぞれのグループに対応付けて鍵を設定するグループ鍵設定ステップと、前記グループ鍵設定ステップによって設定されたグループ鍵によって、当該グループに属するコンテンツのコンテンツ鍵を暗号化するコンテンツ鍵暗号化ステップとを含むことを特徴とする。
【００１４】
請求項２の発明は、鍵生成方法であって、入力指令に従って、コンテンツをグループ化するコンテンツグループ構成ステップと、前記コンテンツグループ構成ステップによって構成されたそれぞれのグループに対応付けて鍵を設定するグループ鍵設定ステップと、前記コンテンツを暗号化するための鍵をコンテンツに対応付けて設定するコンテンツ鍵設定ステップと、前記グループ鍵設定ステップによって設定されたグループ鍵によって、当該グループに属するコンテンツのコンテンツ鍵を暗号化するコンテンツ鍵暗号化ステップとを含むことを特徴とする。
【００１５】
請求項３の発明は、請求項１および２の鍵生成方法であって、さらに、前記コンテンツ鍵に対応付けてコンテンツ鍵復号情報を生成するコンテンツ鍵復号情報生成ステップを含み、このコンテンツ鍵復号情報は、前記グループ鍵によって暗号化されたコンテンツ鍵と、当該コンテンツ鍵がどのコンテンツに対応付けられたものかを識別するためのコンテンツ識別情報と、当該コンテンツ鍵がどのグループのグループ鍵によって暗号化されたかを識別するためのグループ識別情報とを含むことを特徴とする。
【００１６】
請求項４の発明は、請求項３の鍵生成方法であって、さらに、入力指令に従って、前記グループを下位グループとして、さらに上位のグループを構成する上位グループ構成ステップと、前記上位グループ構成ステップによって構成されたそれぞれの上位グループに対応付けて鍵を設定する上位グループ鍵設定ステップと、前記上位グループ鍵設定ステップによって設定された上位グループ鍵によって、当該上位グループに属する前記下位グループのグループ鍵を暗号化するグループ鍵暗号化ステップとを含むことを特徴とする。
【００１７】
請求項５の発明は、請求項４の鍵生成方法であって、前記上位グループ構成ステップは、入力指令に従って、先に構成された上位グループを下位グループとして、さらに上位のグループを構成する処理を実行するステップを含み、前記先に構成された上位グループを下位グループとし且つ当該ステップにより構成されたさらに上位のグループを上位グループとして、前記上位グループ鍵設定ステップと、前記グループ鍵暗号化ステップとを実行することを特徴とする。
【００１８】
請求項６の発明は、請求項４または５の鍵生成方法であって、さらに、前記下位グループのグループ鍵に対応付けてグループ鍵復号情報を生成するグループ鍵復号情報生成ステップを含み、このグループ鍵復号情報は、前記上位グループ鍵によって暗号化された当該下位グループのグループ鍵と、当該グループ鍵がどの下位グループに対応付けられたものかを識別するためのグループ識別情報と、当該グループ鍵がどの上位グループの上位グループ鍵によって暗号化されたかを識別するための上位グループ識別情報とを含むことを特徴とする。
【００１９】
請求項７の発明は、請求項２ないし６の何れかの鍵生成方法であって、既に構成済みのグループに対して新たにコンテンツを追加する入力指令があったとき、前記コンテンツ鍵設定ステップによって当該コンテンツを暗号化するための鍵を設定すると共に、前記コンテンツ鍵暗号化ステップによって当該コンテンツのコンテンツ鍵を当該グループのグループ鍵によって暗号化し、さらに、前記コンテンツ鍵復号情報生成ステップによって当該コンテンツ鍵に対応付けられるコンテンツ鍵復号情報を生成することを特徴とする。
【００２０】
請求項８の発明は、プログラムであって、上記請求項１から７の何れかに記載の鍵生成方法の処理ステップをコンピュータに実行させることを特徴とする。
【００２１】
請求項９の発明は、鍵生成装置であって、上記請求項１から７の何れかに記載の鍵生成方法の処理ステップを実行するための手段を有することを特徴とする。
【００２２】
請求項１０の発明は、コンテンツ配信装置であって、上記請求項６に記載の鍵生成方法の処理ステップを実行するための手段と、前記コンテンツを記憶するためのコンテンツ記憶手段と、前記コンテンツ鍵および前記グループ鍵を記憶するための鍵記憶手段と、前記コンテンツ鍵復号情報およびグループ鍵復号情報を記憶するための復号情報記憶手段と、前記コンテンツ鍵によって暗号化されたコンテンツをグループ単位で端末装置に送信する第１の送信手段と、前記第１の送信手段によって送信される暗号化コンテンツのコンテンツ鍵を復号するために必要な前記コンテンツ鍵復号情報および前記グループ鍵復号情報を前記端末装置に送信する第２の送信手段と、前記第２の送信手段によって送信される前記コンテンツ鍵復号情報および前記グループ鍵復号情報から前記コンテンツ鍵を復号するために必要な前記グループ鍵を前記端末装置に送信する第３の送信手段とを有することを特徴とする。
【００２３】
請求項１１の発明は、請求項１０のコンテンツ配信装置であって、前記コンテンツ記憶手段は、前記コンテンツ鍵で暗号化されたコンテンツを記憶することを特徴とする。
【００２４】
請求項１２の発明は、請求項１０または１１に記載のコンテンツ配信装置から配信された暗号化コンテンツを受信して復号する端末装置であって、受信した前記暗号化コンテンツを記憶する暗号化コンテンツ記憶手段と、受信した前記コンテンツ鍵復号情報および前記グループ鍵復号情報を記憶する復号情報記憶手段と、受信したグループ鍵を記憶するグループ鍵記憶手段と、前記暗号化コンテンツ記憶手段に記憶されたコンテンツのうち、所定のコンテンツの復号指令が入力されたことに応じて、当該コンテンツの復号に必要な前記コンテンツ鍵復号情報および前記グループ鍵復号情報を前記復号情報記憶手段から読み出すと共に、当該コンテンツの復号に必要な前記グループ鍵を前記グループ鍵記憶手段から読み出し、読み出した前記コンテンツ鍵復号情報および前記グループ鍵復号情報と前記グループ鍵から、当該コンテンツのコンテンツ鍵を復号するコンテンツ鍵復号手段と、復号したコンテンツ鍵を用いて当該暗号化コンテンツを復号するコンテンツ復号手段とを有することを特徴とする。
【００２５】
請求項１３の発明は、請求項１２の端末装置であって、前記コンテンツ鍵復号手段は、当該コンテンツの復号に必要なグループ鍵として前記グループ鍵記憶手段から読み出したグループ鍵が、下位グループをさらにグループ化して構成された上位グループに対して設定されたものであるとき、当該コンテンツを含む前記下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記グループ鍵によって復号して当該下位グループのグループ鍵を取得し、取得したグループ鍵が、当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵でなければ、当該コンテンツを含むさらに下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記取得したグループ鍵によって復号してさらに下位グループのグループ鍵を取得し、このグループ鍵の取得を当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵を取得するまで繰り返し、コンテンツ鍵を暗号化した際に用いたグループ鍵を取得すると、当該コンテンツのコンテンツ鍵復号情報中の暗号化コンテンツ鍵を当該グループ鍵によって復号して当該コンテンツのコンテンツ鍵を取得することを特徴とする。
【００２６】
請求項１４の発明は、請求項１０または１１に記載のコンテンツ配信装置から配信される情報を受信して暗号化コンテンツを復号する機能を端末装置に付与するためのプログラムであって、受信した前記暗号化コンテンツを記憶する処理と、受信した前記コンテンツ鍵復号情報および前記グループ鍵復号情報を記憶する処理と、受信したグループ鍵を記憶する処理と、記憶されたコンテンツのうち、所定のコンテンツに対する復号指令が入力されたことに応じて、当該コンテンツの復号に必要な前記コンテンツ鍵復号情報および前記グループ鍵復号情報を記憶手段から読み出すと共に、当該コンテンツの復号に必要な前記グループ鍵を記憶手段から読み出し、読み出した前記コンテンツ鍵復号情報および前記グループ鍵復号情報と前記グループ鍵から、当該コンテンツのコンテンツ鍵を復号する処理と、復号したコンテンツ鍵を用いて当該暗号化コンテンツを復号する処理と、を含むことを特徴とする。
【００２７】
請求項１５の発明は、請求項１４のプログラムであって、前記コンテンツ鍵の復号処理は、当該コンテンツの復号に必要なグループ鍵として記憶手段から読み出したグループ鍵が、下位グループをさらにグループ化して構成された上位グループに対して設定されたものであるとき、当該コンテンツを含む前記下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記グループ鍵によって復号して当該下位グループのグループ鍵を取得し、取得したグループ鍵が、当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵でなければ、当該コンテンツを含むさらに下位グループのグループ鍵復号情報中の暗号化グループ鍵を前記取得したグループ鍵によって復号してさらに下位グループのグループ鍵を取得し、このグループ鍵の取得を当該コンテンツのコンテンツ鍵を暗号化した際に用いたグループ鍵を取得するまで繰り返し、コンテンツ鍵を暗号化した際に用いたグループ鍵を取得すると、当該コンテンツのコンテンツ鍵復号情報中の暗号化コンテンツ鍵を当該グループ鍵によって復号して当該コンテンツのコンテンツ鍵を取得することを特徴とする。
【００２８】
本発明の特徴は、以下に示す実施の形態の説明により更に明らかとなろう。
ただし、以下の実施の形態は、あくまでも本発明の一つの実施形態であって、本発明ないし各構成要件の用語の意義は、以下の実施の形態に記載されたものに制限されるものではない。
【００２９】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００３０】
【第１実施例】
本実施例に係るコンテンツ配信システムの概要を図１に示す。
本実施例に示すコンテンツ配信システムは、サーバ１０、端末装置２０、コンテンツ配信手段３０とから構成されている。
【００３１】
サーバ１０は、配布する暗号化コンテンツと暗号化コンテンツを復号するための鍵を保持する。この復号鍵は、不正にアクセスされない必要があるため、例えば、耐タンパー性の記憶手段によって安全に保管される。
【００３２】
端末装置２０は、利用者が取得した暗号化コンテンツと購入した復号鍵を保持し、さらに、取得した暗号化コンテンツを、購入した復号鍵で復号して再生する機能を備える。この端末装置２０は、具体的には、パーソナルコンピュータ（ＰＣ）や携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）などにより実現される。なお、サーバ１０から取得した復号鍵は、上記の如く、秘匿性が確保される必要がある。このため、端末装置２０には、その内部に、または、脱着可能な形態で、安全な復号鍵保持手段が配備されている。
【００３３】
コンテンツ配信手段３０は、暗号化コンテンツやこれを復号するための復号鍵を端末装置２０に提供するものである。このコンテンツ配信手段３０は、たとえばインターネットを利用したデータ通信システムによって実現される。この他、ＣＤ−ＲＯＭやＤＶＤ等、記録媒体を用いた物流配送システム等によっても実現され得る。但し、本実施例では、インターネットを介したデータ通信システムによって構成されているものとする。
【００３４】
サーバ１０から端末装置２０に配信されるコンテンツは、対応する暗号化鍵によって予め暗号化されている。この暗号化されたコンテンツは単体では再生できないため、任意の媒体や経路で配布することができ、また利用者間で共有することも可能である。
【００３５】
一方、暗号化されたコンテンツを解く復号鍵は、課金対象とされており、利用者は代金を支払って、別途これを購入・取得する。このため、復号鍵の配布や保管においては、コピーや再配布等の不正利用を防ぐために、上記の如く、適切な保護がなされている。
【００３６】
なお、本実施例では、暗号方式として、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの共通鍵暗号方式が用いられる。
【００３７】
次に、サーバ装置１０に格納されたコンテンツを、所定のカテゴリーに従って分類する際に設定されるクラスとグループについて説明する。
【００３８】
グループとは、サーバ装置１０に格納されている全てのコンテンツから、所定の目的に従うコンテンツを抽出し、抽出したコンテンツを一つにまとめることにより構成されるコンテンツの集合、あるいは、このようにして構成された複数のグループをさらに所定の目的に従ってまとめることによって構成されるコンテンツの集合を表す単位を意味する。このようにコンテンツを所定のグループでまとめ、さらに各グループをその上位のグループでまとめると、各コンテンツとグループは、一つの階層構造に従って位置付けられることとなる。この階層構造は、さらに全く別の目的でコンテンツおよびグループをまとめることにより、他の階層構造として構成される。このように、それぞれの階層構造は、それを設定する目的毎に個別に成立する。クラスとは、このように個別に成立するそれぞれの階層構造全体を表す単位を意味する。
【００３９】
なお、コンテンツの中には、何れのグループにも属さないコンテンツがあっても良い。また、クラスやグループの数に制限は無い。
【００４０】
このような階層化とクラス化によってグループを構成すると、原理的には全てのコンテンツの組み合わせに対するコンテンツグループを存在させることが可能となる。
【００４１】
コンテンツのクラスとグループによる分類例を図２に示す。
【００４２】
図２に示すように、各クラスにおけるグループは階層的に配置されることから木構造でグループの上下関係を表すことができる。例えば、クラスＣＬ１において、グループＧ１０は、コンテンツＣｉ（ｉ＝１，．．，ｘ）を含み、グループＧ１０の親グループＧ２０は、子グループに属する全てのコンテンツを含む。
【００４３】
本実施例では、このコンテンツの分類において、コンテンツ毎に、コンテンツ鍵Ｋｃｉとコンテンツ鍵復号情報ＩＮＦｘｙを設定する。また、コンテンツグループ毎に、コンテンツグループ鍵Ｋｃｇｊとグループ鍵復号情報ＩＮＦｘｙを設定する。なお、これらコンテンツ鍵Ｋｃｉとコンテンツグループ鍵Ｋｃｇｊの詳細については、追って説明する。
【００４４】
図３に、コンテンツ鍵Ｋｃｉとコンテンツ鍵復号情報ＩＮＦｘｙ、コンテンツグループ鍵Ｋｃｇｊとグループ鍵復号情報ＩＮＦｘｙの設定例を示す。なお、図３は、図２に示す分類例の内、クラスＣＬ１に対してコンテンツ鍵Ｋｃｉとコンテンツ鍵復号情報ＩＮＦｘｙ、コンテンツグループ鍵Ｋｃｇｊとグループ鍵復号情報ＩＮＦｘｙを設定した例を示すものである。
【００４５】
同図に示すように、コンテンツ鍵復号情報ＩＮＦｘｙは、コンテンツＣｉに対して設定される。また、グループ鍵復号情報はＩＮＦｘｙは、各コンテンツグループＧｊに対して設定される。よって、グループ鍵復号情報ＩＮＦｘｙは、コンテンツが何れのグループにも属さない場合は設定されない。また、最上位のグループに対しても設定されない。
【００４６】
ここで、コンテンツ鍵Ｋｃｉは、一つ上位のグループ鍵Ｋｃｇ１０によって暗号化され、コンテンツ鍵復号情報ＩＮＦ１ｇ１０に含められる。同様に、グループ鍵Ｋｃｇ１０は、一つ上位のグループ鍵Ｋｃｇ２０によって暗号化され、グループ鍵復号情報ＩＮＦｇ１０ｇ２０に含められる。
【００４７】
このように、各コンテンツおよび各グループに、コンテンツ鍵復号情報ＩＮＦｘｙおよびグループ鍵復号情報ＩＮＦｘｙが設定された場合、例えば、図３において、最上位のグループのグループ鍵Ｋｃｇ３０が与えられると、一つ下位の復号情報ＩＮＦｇ２０に含まれる暗号化されたグループ鍵Ｋｃｇ２０をこのグループ鍵Ｋｃｇ３０にて復号することにより、当該グループのグループ鍵Ｋｃｇ２０を取得できる。同様に、順次、下位のグループ鍵の暗号化を復号により取得したグループ鍵によって解いて行けば、暗号化のないコンテンツ鍵Ｋｃｉを取得できる。
【００４８】
また、最上位のグループ鍵Ｋｃｇ３０が与えられなくとも、途中のグループのグループ鍵（例えばグループ鍵Ｋｃｇ１０）が与えられれば、コンテンツ鍵復号情報ＩＮＦｘｙおよびグループ鍵復号情報ＩＮＦｘｙに含められた暗号化された鍵を順次復号することにより、このグループに属する全てのコンテンツに対応したコンテンツ鍵Ｋｃｉを取得できる。
【００４９】
したがって、コンテンツ配信時に、このコンテンツのコンテンツ鍵を取得するに必要なコンテンツ鍵復号情報ＩＮＦｘｙおよびグループ鍵復号情報ＩＮＦｘｙを同時に配信しておき、その後、鍵の購入時に、適宜、グループ鍵を配信することにより、当該コンテンツのコンテンツ鍵を取得できる。これにより、当該コンテンツの再生が可能となる。
【００５０】
なお、一つのグループ鍵Ｋｃｇｊを購入すると、そのグループに含まれるコンテンツ全てを再生可能となるため、鍵の購入は、必然的にグループ単位となる。よって、そのグループ中に再生を所望しないコンテンツが含まれていたとしても、グループ鍵Ｋｃｇｊを購入する場合には、再生を所望しないコンテンツを含めた当該グループ全体を再生できるグループ鍵Ｋｃｇｊを購入することとなる。
【００５１】
なお、再生を所望するコンテンツのみを再生しようとする場合には、グループ鍵Ｋｃｇｊを購入せずに、再生を希望するコンテンツのコンテンツ鍵Ｋｃｉのみを購入するようにすれば良い。
【００５２】
また、上記の如く、各グループにグループ鍵Ｋｃｇｊを設定し、コンテンツ鍵Ｋｃｉとグループ鍵Ｋｃｇｊを上位のグループのグループ鍵Ｋｃｇｊにて順次暗号化する方法を採用したことにより、グループおよびクラスが種々変更されたとしても、各コンテンツのコンテンツ鍵Ｋｃｉをこれに応じて変更する必要がなくなり、よって、暗号化されたコンテンツデータをサーバ１０に予め格納しておく場合に、コンテンツ毎に一つのみ暗号化コンテンツデータを生成して格納しておけば良いようになる。これにより、暗号化コンテンツデータの容量を抑制しながら、任意のグループおよびクラスを簡易に設定できるようになる。
【００５３】
同様に、所定のグループに新たなコンテンツを追加する場合には、当該コンテンツを追加するグループのグループ鍵によって、そのコンテンツのコンテンツ鍵を暗号化し、これを当該コンテンツのコンテンツ鍵復号情報ＩＮＦｘｙに含めるだけでよいので、新たなコンテンツの追加を容易に行うことができる。
【００５４】
なお、コンテンツ鍵復号情報ＩＮＦｘｙおよびグループ鍵復号情報ＩＮＦｘｙには、暗号化されたコンテンツ鍵およびグループ鍵の他、暗号化される鍵の属性情報（どのコンテンツまたはグループに対して設定された鍵かを示す情報等）と、暗号化に用いられた鍵の属性情報（どのグループに対して設定された鍵かを示す情報等）等が含められる。コンテンツ鍵復号情報ＩＮＦｘｙおよびグループ鍵復号情報ＩＮＦｘｙの詳細については、追って詳述する。
【００５５】
ところで、コンテンツ鍵とグループ鍵の階層構造を木構造（以下、この木構造を鍵木と称する）として表現すると、鍵木の各ノードにコンテンツ鍵、あるいは、グループ鍵が配置されることとなる。すなわち、クラスＣＬｎ（ｎ＝１，２，３，  …）に対応した鍵木Ｔｎは、必ず１つの最上位ノードを持ち、また、最下位ノードには必ずコンテンツ鍵が配置されるように構成される。
【００５６】
この鍵木の構造は、後述するクラス鍵リストＫｌｉｓｔ＃ＣＬｎに記述され、コンテンツ鍵とグループ鍵を木構造に従って探索するとき用いられる。
【００５７】
なお、上記のクラスとグループをよる分類は、配信するコンテンツを分類する一例であり、これに限られるものではない。例えば、クラスという概念を用いずに、全てのコンテンツをグループの組み合わせのみで分類することもできる。この場合、グループに含まれるコンテンツや下位グループはどのように構成されていても良く、当該コンテンツやグループが別のグループに多重して含まれていても良い。
【００５８】
図４に、本実施例において用いられる各種情報の内容・種別を示す。
図において、コンテンツＣｉは、配信および再生対象とされる主たるコンテンツデータを意味する。Ｃｉに付記された記号“ｉ”は、コンテンツの識別子であり、コンテンツ毎にそれぞれ異なる。
【００５９】
コンテンツグループＣＧｊは、複数のコンテンツから構成される一つのグループを意味する。ＣＧｊに付記された記号“ｊ”は、コンテンツグループの識別子であり、コンテンツグループ毎にそれぞれ異なる。
【００６０】
コンテンツ鍵Ｋｃｉは、コンテンツ毎に設定された鍵を意味し、サーバ装置１０において、コンテンツＣｉを暗号化する際に用いられる。
【００６１】
グループ鍵Ｋｃｇｊは、コンテンツグループ毎に設定された鍵を意味し、端末装置２０において、コンテンツ鍵Ｋｃｉを復号際に用いられる。なお、グループ鍵Ｋｃｇｊの具体的な設定・利用方法については、追って詳述する。
【００６２】
暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）は、コンテンツＣｉをコンテンツ鍵Ｋｃｉで暗号化したときの暗号化コンテンツデータを意味する。なお、記号Ｅ（Ｃｉ，Ｋｃｉ）は、暗号化コンテンツデータＥ（Ｃｉ，Ｋｃｉ）をコンテンツ鍵Ｋｃｉで復号するとコンテンツＣｉが得られることをも同時に示すものである。
【００６３】
復号情報ＩＮＦｘｙは、サーバ装置１０において、コンテンツ鍵Ｋｃｉまたはグループ鍵Ｋｃｇｊを暗号化（後述）する際に生成されるものであり、コンテンツ鍵Ｋｃｘまたはグループ鍵Ｋｃｇｘを、一つ上位のグループ鍵Ｋｃｇｙで暗号化したことにより得られる暗号化鍵データと、暗号化される鍵ＫｃｘまたはＫｃｇｘの属性情報および暗号化に用いられた鍵Ｋｃｇｙの属性情報などを含む。なお、この復号情報ＩＮＦｘｙの詳細については、追って、図６を参照しながら説明する。
【００６４】
配布コンテンツＣｉ＃Ｄは、サーバ１０から端末装置２０に配布される配布情報を意味し、コンテンツＣｉをコンテンツ鍵Ｋｃｉで暗号化した暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）と、この暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）に付される復号情報ＩＮＦｘｙを含む。
【００６５】
利用者鍵リストＫｌｉｓｔ＃Ｕは、端末装置２０において、利用者が保有する鍵のリストである。端末装置２０の鍵保持部２０４に保持される。
【００６６】
クラス鍵リストＫｌｉｓｔ＃ＣＬｎは、対応コンテンツのグループ構成を木構造によって表すものである。ここで、記号“ｎ”は、コンテンツクラスの識別子であり、コンテンツクラス毎に異なる番号である。
【００６７】
配信者鍵リストＫｌｉｓｔ＃Ｄは、サーバ１０において、コンテンツとグループの関係、すなわち、クラスにおける保有する鍵の階層関係と有効範囲を示す情報であり、複数のクラス鍵リストＫｌｉｓｔ＃ＣＬから構成される。
【００６８】
図５に、コンテンツ鍵Ｋｃｉおよびグループ鍵Ｋｃｇｊの構成を示す。
各コンテンツ鍵Ｋｃｉおよびグループ鍵Ｋｃｇｊは、鍵タイプＦｔｙｐｅ、コンテンツ識別情報Ｆｉｎｆ＃ｃｏｎｔ、クラス識別情報Ｆｉｎｆ＃ｃｌａｓｓ、グループ識別情報Ｆｉｎｆ＃ｇｒｏｕｐ、鍵値Ｆｖａｌｕｅから構成される。
【００６９】
鍵タイプＦｔｙｐｅは、当該鍵がコンテンツ鍵かグループ鍵かを示す情報である。コンテンツ識別情報Ｆｉｎｆ＃ｃｏｎｔは、当該鍵がコンテンツ鍵であるときに設定されるものであり、これにより、このコンテンツ鍵が何れのコンテンツに対する復号鍵かが特定される。
【００７０】
クラス識別情報Ｆｉｎｆ＃ｃｌａｓｓは、当該鍵がグループ鍵であるときに設定されるものであり、これにより、このグループ鍵が何れのクラスに属するかが特定される。グループ識別情報Ｆｉｎｆ＃ｇｒｏｕｐは、当該鍵がグループ鍵であるときに設定され、これにより、このグループ鍵が何れのグループに対する復号鍵かが特定される。
鍵値Ｆｖａｌｕｅは、コンテンツ鍵あるいはグループ鍵のデータである。
【００７１】
図６に、復号情報ＩＮＦｘｙの構成を示す。
復号情報ＩＮＦｘｙには、コンテンツに対するコンテンツ鍵復号情報とグループに対するグループ鍵復号情報があり、共にクラス識別情報Ｆｉｎｆ＃ｃｌａｓｓ、暗号化情報、非暗号化情報、鍵値Ｆｖａｌｕｅから構成される。
【００７２】
ここで、暗号化情報とは、暗号化に用いる上位の鍵を識別するための情報であり、当該上位の鍵が設定されたグループを識別するためのグループ識別情報Ｆｉｎｆ＃ｕｐｐｅｒにより構成される。
【００７３】
また、非暗号化情報とは、暗号化される鍵を識別するための情報であり、鍵タイプＦｔｙｐｅ、グループ識別情報Ｆｉｎｆ＃ｇｒｏｕｐ、コンテンツ識別情報Ｆｉｎｆ＃ｃｏｎｔにより構成される。ここで、鍵タイプＦｔｙｐｅは、当該鍵がコンテンツ鍵かグループ鍵かを示す。また、グループ識別情報Ｆｉｎｆ＃ｇｒｏｕｐは、当該鍵がグループ鍵であるときに設定され、これにより、このグループ鍵が何れのグループに設定された鍵かが特定される。さらに、コンテンツ識別情報Ｆｉｎｆ＃ｃｏｎｔは、当該鍵がコンテンツ鍵であるときに設定され、これにより、このコンテンツ鍵が何れのコンテンツに対する復号鍵かが特定される。
値Ｆｖａｌｕｅは、上位グループ鍵で暗号化された当該鍵のデータである。
【００７４】
本実施例では、コンテンツ鍵とグループ鍵を提供される鍵とし、暗号化コンテンツデータと復号情報を配布コンテンツとする。
コンテンツ鍵と暗号化コンテンツの機能上の関係および用途は、従来の配信システムと同様である。また、グループ鍵はコンテンツをまとめて提供するための鍵であり、このグループ鍵によって個々のコンテンツを復号するために、復号情報を利用する。
具体的には、コンテンツは、クラスとグループによって分類されており、各グループに対してグループ鍵が生成され、コンテンツ鍵あるいは下位のグループ鍵は、鍵木の構造に従って上位のグループ鍵で暗号化される。この暗号化の状態を示す復号情報は、暗号化コンテンツに付加され配布される。
暗号化コンテンツを復号する際、鍵木の構造に従って、復号情報中の暗号化された鍵（グループ鍵またはコンテンツ鍵）が、取得したグループ鍵を用いて、順次復号される。この復号により得られたコンテンツ鍵を用いて、暗号化コンテンツが復号される。
【００７５】
次に、第１実施例におけるサーバ１０および端末装置２０の構成について説明する。
図７にサーバ１０の構成を示す。
サーバ１０は、制御部１００と、表示部１０１、入力部１０２、コンテンツ保持部１０３、鍵保持部１０４、リスト解析部１０５、暗号化部１０６、乱数生成部１０７、コンテンツ合成部１０８、バス１０９から構成される。
【００７６】
制御部１００は、上記各機能部に処理の実行を指示し、サーバ１０全体の処理を制御する。表示部１０１は、視覚情報を表示する。入力部１０２は、外部からの入力を処理する。
【００７７】
コンテンツ保持部１０３は、暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）を保持する。鍵保持部１０４は、コンテンツ鍵Ｋｃｉ、グループ鍵Ｋｃｇｊ、配信者鍵リストＫｌｉｓｔ＃Ｄを保持する。
【００７８】
リスト解析部１０５は、鍵保持部１０８から読み出された鍵リストＫｌｉｓｔ＃Ｄを解析する。暗号化部１０６は、入力された鍵とデータに基づいて暗号演算処理を行い、暗号化データを生成する。乱数生成部１０７は、乱数を発生することによりグループ鍵Ｋｃｇｊを生成する。
【００７９】
コンテンツ合成部１０８は、暗号化されたグループ鍵またはコンテンツ鍵と、グループやコンテンツを識別する情報等を含む復号情報を生成し、これと暗号化コンテンツをまとめて、１つの配布用コンテンツとして生成する。バス１０９は、上記機能部を接続するデータバスである。
【００８０】
図８に端末装置２０の構成を示す。
端末装置２０は、制御部２００と、表示部２０１、入力部２０２、記憶部２０３、鍵保持部２０４、鍵リスト解析部２０５、コンテンツ解析部２０６、復号部２０７、鍵バッファ２０８、再生部２０９、各機能部を接続するバス２１０から構成される。
【００８１】
制御部２００は、上記各機能部に処理の実行を指示し、端末装置２０全体の処理を制御する。表示部２０１は、端末操作による処理結果等を表示する。入力部２０２は、利用者が入力した情報を処理する。
【００８２】
記憶部２０３は、暗号化コンテンツ（配布コンテンツ）、復号情報を保持する。鍵保持部２０４は、購入した鍵とこれを管理する利用者鍵リストＫｌｉｓｔ＃Ｕを保持するものであり、耐タンパーな性質を持つ安全な記憶手段によって構成されている。この鍵保持部２０４は、端末装置２０に内蔵されている形態の他、端末装置２０に対し脱着可能な形態であっても良い。
【００８３】
鍵リスト解析部２０５は、鍵保持部２０８から取得された利用者鍵リストＫｌｉｓｔ＃Ｕを解析し、目的のグループ鍵の存在などを調べる。コンテンツ解析部２０６は、記憶部２０３から取得された配布コンテンツＣｉ＃Ｄを解析し、暗号化コンテンツデータＥ（Ｃｉ，Ｋｃｉ）と各復号情報ＩＮＦｘｙを分離し、これらを必要に応じて復号部２０７へ出力する。
【００８４】
復号部２０７は、入力された鍵と暗号化データを復号し、そのデータを出力する。鍵バッファ２０８は、復号部２０７の復号結果を一時的に保持する。再生部２０９は、復号されたコンテンツＣｉを再生する。バス２１０は、上記機能部を接続するデータバスである。
【００８５】
次に、第１実施例における各処理について説明する。
まず、クラスおよびグループ設定時の処理について説明する。このときの処理フローを図９に示す。
【００８６】
サーバ１０は、コンテンツＣｉと各コンテンツに対するコンテンツ鍵Ｋｃｉを、予め保有している。コンテンツＣｉは、対応するコンテンツ鍵Ｋｃｉで暗号化され、暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）としてコンテンツ保持部１０３に保持されている。また、グループ鍵Ｋｃｇｊと鍵リストＫｌｉｓｔ＃Ｄは、鍵保持部１０４に保持されている。
【００８７】
まず、制御部１００は、コンテンツの種類を表示部１０１に表示し、サーバのユーザ（配信者）に対してグループおよびクラスの設定を促す。そして、入力部１０２を介して入力されたグループとクラスの設定情報に基づいて、制御部１００は、配信者鍵リストＫｌｉｓｔ＃Ｄを作成し、これを鍵保持部１０４に出力する（ステップＳ１００）。
【００８８】
制御部１００は、配信者鍵リストＫｌｉｓｔ＃Ｄの中から１つのクラスを選択し（これをクラスＣＬｎｏｗと表す）、クラス鍵リストＫｌｉｓｔ＃ＣＬｎｏｗをバス１０９を介して、リスト解析部１０５に入力する（ステップＳ１０１）。続いて、制御部１００は、クラス鍵リストＫｌｉｓｔ＃ＣＬｎｏｗに記述された鍵木Ｔｎ（ｎ＝ｎｏｗ）の最上位ノードに対するグループ鍵Ｋｃｇｊを、乱数生成部１０７によって生成させ、生成されたグループ鍵Ｋｃｇｊを鍵保持部１０４に出力する（ステップＳ１０２）。
【００８９】
リスト解析部１０５では、鍵木Ｔｎｏｗのノード（最上位ノードを除く）の中から１つのノードＧｎｏｗを取り出す。ここで、ノードは、鍵木Ｔｎｏｗから幅探索順（最上位から下位）に取り出される。（ステップＳ１０３）。
【００９０】
制御部１００は、取り出したノードＧｎｏｗが鍵木Ｔｎ（ｎ＝ｎｏｗ）の最下位ノードであるか否かを検証する（ステップＳ１０４）。このとき最下位ノードでなければ、制御部１００はこのノードに設定される鍵Ｋｃｇｊ（ｊ＝ｎｏｗ）を乱数生成部１０７によって生成させる。生成された鍵Ｋｃｇｊ（ｊ＝ｎｏｗ）は、このグループＧｎｏｗのグループ鍵Ｋｃｇｊとして鍵保持部１０４に出力される（ステップＳ１０５）。
【００９１】
一方、Ｓ１０４において、前記ノードＧｎｏｗが最下位ノードである場合は、上記Ｓ１０５の処理はスキップされる。
【００９２】
次に、制御部１００は、前記ノードＧｎｏｗの上位ノードＧｕｐに対応するグループ鍵Ｋｃｇｊ（ｊ＝ｕｐ）を、バス１０９を介して鍵保持部１０４から読み出し、暗号化部１０６に暗号化鍵として与える。
【００９３】
このとき、ステップＳ１０５を実行した場合には、前記生成したグループ鍵Ｋｃｇｊ（ｊ＝ｎｏｗ）を鍵保持部１０４から読み出して暗号化部１０６に出力する。一方、ステップＳ１０５を実行しなかった場合には、コンテンツ鍵Ｋｃｉをバス１０９を介して鍵保持部１０４から読み出し、これを暗号化部１０６に出力する。
【００９４】
暗号化部１０６は、入力されたグループ鍵Ｋｃｇｊ（ｊ＝ｕｐ）を用いて、グループ鍵Ｋｃｇｊ  （ｊ＝ｎｏｗ）またはコンテンツ鍵Ｋｃｉを暗号化する（ステップＳ１０６）。
【００９５】
続いて、制御部１００は、暗号化部１０６によって暗号化されたグループ鍵Ｋｃｇｊ  （ｊ＝ｎｏｗ）またはコンテンツ鍵Ｋｃｉをコンテンツ合成部１０８に入力し、さらに、ノードＧｎｏｗに属するコンテンツＣｉ（ｉ∈ｊ，ｊ＝ｎｏｗ）の暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）を、コンテンツ保持部１０３から取り出し、バス１０９を介してコンテンツ合成部１０８に入力する。
【００９６】
コンテンツ合成部１０８は、グループＫｇｎｏｗまたはコンテンツＣｉに設定される復号情報ＩＮＦｘｙのＦｖａｌｕｅとして暗号化されたグループ鍵Ｋｃｇｊ  （ｊ＝ｎｏｗ）またはコンテンツ鍵Ｋｃｉを含め、この復号情報ＩＮＦｘｙを暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）に付加する（ステップＳ１０７）。そして、復号情報ＩＮＦｘｙが付加された暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）を、配布コンテンツＣｉ＃Ｄとしてコンテンツ保持部１０３に保持する。
【００９７】
続いて、制御部１００は、リスト解析部１０５が鍵木Ｔｎ（ｎ＝ｎｏｗ）から全てのノードを取り出したか否かを判定する（ステップＳ１０８）。ノードの取り出しが完了していない場合、ステップＳ１０４へ移行し、幅探索順によるノード出力を続行する。
【００９８】
一方、鍵木Ｔｎ（ｎ＝ｎｏｗ）の取り出しが完了している場合、制御部１００は、配信者鍵リストＫｌｉｓｔ＃Ｄのクラス全てのクラス鍵リストＫｌｉｓｔ＃ＣＬを、リスト解析部１０６に入力し終えたかを判定する（ステップＳ１０９）。そして、未だ入力されていないクラス鍵リストＫｌｉｓｔ＃ＣＬがある場合、ステップＳ１０１に移行する。一方、全てのクラス鍵リストＫｌｉｓｔ＃ＣＬが入力を終えた場合、本処理を終了する。
【００９９】
以上の処理により、暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）に、コンテンツ鍵復号情報ＩＮＦｘｙおよび幾つかのグループ鍵復号情報ＩＮＦｘｙが付加された配布コンテンツＣｉ＃Ｄが得られる。
【０１００】
上記の処理において、ステップＳ１０６において暗号化されるグループ鍵Ｋｃｇｊ  （ｊ＝ｎｏｗ）は、ステップＳ１０８からの移行により、再びステップＳ１０６を実行する際に、グループ鍵Ｋｃｇｊ（ｊ＝ｕｐ）として用いることになるため、使用した暗号化鍵を次の暗号処理までバッファ等に格納しておくと、暗号化鍵の読み込み処理を簡易にすることができる。
【０１０１】
また、上記の処理において、ノード単位で実行されるステップＳ１０７をスキップし、ステップＳ１０６で作成した復号情報をバッファ等に順次蓄えておき、例えば、ステップＳ１０１で別のクラス鍵リストＫｌｉｓｔ＃ＣＬが読み込まれたとき、ステップＳ１０６で作成した復号情報をまとめて処理するようにしても良い。このように処理すると、ステップＳ１０７におけるコンテンツ保持部１０３からの暗号化コンテンツ読み込み回数を削減することができる。
【０１０２】
上記のように、本実施例の配布コンテンツ作成処理は、鍵木Ｔｎの１つのノードに対し復号情報を作成し、これを関係する暗号化コンテンツに付加する処理を、全てのノードに対して実行するものである。
【０１０３】
このほか、まず１つの暗号化コンテンツに付加されるべき復号情報を作成し、暗号化コンテンツに付加する処理を、全ての暗号化コンテンツに対して実行する方法であっても良い。
【０１０４】
さらに、復号情報の生成処理と暗号化コンテンツへ付加する処理を、鍵木の構造に従って効率よく織り交ぜてもよい。これらの処理順序の違いは、本配布コンテンツ生成処理の本質と異なるものである。したがって、例えば、図９に示すステップＳ１０１およびステップＳ１０３におけるノード出力において、深さ探索等の別の鍵木探索手順を用いて行うことができる。
【０１０５】
次に、一旦、配布コンテンツＣｉ＃Ｄを作成した後に、グループにコンテンツおよび別のグループを追加する処理について説明する。
【０１０６】
図１０に、作成済みのクラスＣＬｎのグループＧｊに、新たなコンテンツＣｉを追加する処理フローを示す。このとき、追加するコンテンツＣｉは、新たに作成したものでも、既存のものでも良く、クラスＣＬｎ内において、何れのグループにも属していないものである。
【０１０７】
制御部１００は、コンテンツに関するクラスやグループの構造を表示部１０１に表示し、サーバのユーザ（配信者）に対して新たに追加するコンテンツＣｉと追加先のクラスＣＬｎとグループＧｊの指示入力を促す。入力部１０２を介して入力された情報に基づいて、鍵保持部１０４に保持されるクラス鍵リストＫｌｉｓｔ＃ＣＬｎを更新する（ステップＳ２００）。
【０１０８】
次に、制御部１００は、更新されたクラス鍵リストＫｌｉｓｔ＃ＣＬｎをバス１０９を介してリスト解析部１０５に出力する。リスト解析部１０５は、現在のノードＧｎｏｗの下位ノードであり、コンテンツＣｉが属するノードを取り出し、これをノードＧｎｏｗとする（ステップＳ２０１）。ここで、初めてステップＳ２０１を実行する場合、最上位ノードがＧｎｏｗとして取り出される。
【０１０９】
次に、制御部１００は、ノードＧｎｏｗの下位ノードＧｎｏｗ＃ｄｏｗｎが最下位ノードであるか否かを判定する（ステップＳ２０２）。最下位ノードである場合、ステップＳ２０５へ移行する。最下位ノードでない場合、コンテンツ保持部１０３からノードＧｎｏｗ＃ｄｏｗｎに対して設定されたグループ鍵復号情報ＩＮＦｘｙを取り出し、これをバス１０９を介してコンテンツ合成部１０８に入力する（ステップＳ２０３）。ここで、配布コンテンツＣｉ＃Ｄがコンテンツ合成部１０８に入力されていない場合、コンテンツ保持部１０３から配布コンテンツＣｉ＃Ｄを取り出し、これをバス１０９を介してコンテンツ合成部１０８に入力する。
【０１１０】
コンテンツ合成部１０８は、Ｓ２０３で取得したグループ鍵復号情報ＩＮＦｘｙを配布コンテンツＣｉ＃Ｄに付加し、これを新しく配布コンテンツＣｉ＃Ｄとする（ステップＳ２０４）。
【０１１１】
ステップＳ２０４を終了すると、ステップＳ２０１に移行し、鍵木Ｔｎに従って、上述した配布コンテンツＣｉ＃Ｄに対するグループ鍵復号情報ＩＮＦｘｙの追加処理を繰り返す。これにより、配布コンテンツＣｉ＃Ｄには、探索経路に従った各ノード位置のグループ鍵復号情報ＩＮＦｘｙが逐次追加される。
【０１１２】
一方、ステップＳ２０２において、ノードＧｎｏｗ＃ｄｏｗｎが最下位ノード、すなわち新たに追加するコンテンツＣｉである場合、制御部１００は、鍵保持部１０４からノードＧｎｏｗのグループ鍵Ｋｃｇｎｏｗおよび当該新たに追加するコンテンツＣｉのコンテンツ鍵Ｋｃｉを取り出し、これをバス１０９を介して暗号化部１０６に入力する。
【０１１３】
暗号化部１０６は、コンテンツ鍵Ｋｃｉをグループ鍵Ｋｃｇｎｏｗを用いて暗号化し、これをコンテンツ合成部１０８に入力する（ステップＳ２０５）。
【０１１４】
コンテンツ合成部１０８は、得られた暗号化されたコンテンツ鍵Ｋｃｉをコンテンツ鍵復号情報ＩＮＦｘｙのＦｖａｌｕｅに含める。ここで、配布コンテンツＣｉ＃Ｄがコンテンツ合成部１０８に入力されていない場合、制御部１００は、コンテンツ保持部１０３から配布コンテンツＣｉ＃Ｄを取り出し、これをバス１０９を介してコンテンツ合成部１０８に入力する。
【０１１５】
コンテンツ合成部１０８は、配布コンテンツＣｉ＃Ｄに前記コンテンツ鍵復号情報ＩＮＦｘｙ（ｘ＝ｉ，ｙ＝ｇｎｏｗ）を付加し、これを配布コンテンツＣｉ＃Ｄとして、コンテンツ保持部１０３に再び保存する（ステップＳ２０６）。これにより、新たに追加されるコンテンツに対して実行される、コンテンツ鍵Ｋｃｉの暗号化処理と、グループ鍵復号情報およびコンテンツ鍵復号情報の付加処理を終了する。
【０１１６】
次に、端末装置における暗号化コンテンツ復号処理について説明する。
端末装置において、グループ鍵Ｋｃｇｊおよびコンテンツ鍵Ｋｃｉを用いて、暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）を復号して再生する手順を図１１に示す。
【０１１７】
ここで、上記の如く、グループ鍵Ｋｃｇｊを取得することにより、グループ鍵復号情報ＩＮＦｘｙを用いて、グループＧｊに属する全ての暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）を復号することができる。
【０１１８】
また、以下の処理にあたり、コンテンツ保持部１０３には、予め配布コンテンツＣｉ＃Ｄが保持されており、鍵保持部２０４には、購入した鍵（グループ鍵Ｋｃｇｊおよびコンテンツ鍵Ｋｃｉ）、利用者鍵リストＫｌｉｓｔ＃Ｕが予め作成されているものとする。利用者鍵リストＫｌｉｓｔ＃Ｕには、利用者が購入した鍵の情報がリストとして記載されており、購入した各鍵から取り出された、鍵タイプＦｔｙｐｅ、コンテンツ識別情報Ｆｉｎｆ＃ｃｏｎｔ、クラス識別情報Ｆｉｎｆ＃ｃｌａｓｓ、グループ識別情報Ｆｉｎｆ＃ｇｒｏｕｐによって構成され、これにより、利用者が保持する鍵のグループ関係がわかるようになっている。
【０１１９】
なお、説明上、当初の鍵バッファ２０８には、鍵データが保持されていないものとする。
【０１２０】
まず、制御部２００は、記憶部２０３に保持された配布コンテンツＣｉ＃Ｄや、鍵保持部２０４に保持された利用者鍵リストＫｌｉｓｔ＃Ｕを、表示部２０１に出力し、端末装置のユーザに対して、再生するコンテンツの指示入力を促す。
【０１２１】
入力部２０２を介して入力されたコンテンツＣｉを示す情報に基づいて、制御部２００は、配布コンテンツＣｉ＃Ｄを記憶部２０３から読み出し、バス２１０を介してコンテンツ解析部２０６に入力する（ステップＳ３００）。この配布コンテンツＣｉ＃Ｄの読み出しは、配布コンテンツＣｉ＃Ｄの要素が必要になった時点で行うことにしても良い。
【０１２２】
次に、制御部２００は、コンテンツＣｉ＃Ｄ、および鍵保持部２０４に保持する鍵リストＫｌｉｓｔ＃Ｕを、バス２１０を介して鍵リスト解析部２０５に入力する。
【０１２３】
鍵リスト解析部２０５は、鍵リストＫｌｉｓｔ＃Ｕの中にコンテンツ鍵Ｋｃｉが存在するか判定する（ステップＳ３０１）。コンテンツ鍵Ｋｃｉが存在する場合、ステップＳ３０６へ移行する。コンテンツ鍵Ｋｃｉが存在しない場合、コンテンツＣｉを含むグループＧｎｏｗ（ｉ∈ｎｏｗ）のグループ鍵Ｋｃｇｎｏｗが存在するか判定する（ステップＳ３０２）。
【０１２４】
Ｓ３０２において、グループ鍵Ｋｃｇｎｏｗが存在しない場合、復号不可能として処理を終了する。
【０１２５】
一方、複数のグループ鍵Ｋｃｇｎｏｗが存在する場合、制御部２００は、このうち最下位のグループをグループＧｎｏｗとする。そして、鍵バッファ２０８にデータが保持されているかを判定し、鍵バッファ２０８にデータが保持されている場合、保持されているデータをグループ鍵Ｋｃｇｎｏｗとして復号部２０７へ入力する。一方、鍵バッファ２０８にデータが保持されていない場合、グループＧｎｏｗのグループ鍵Ｋｃｇｎｏｗを鍵保持部２０４から取り出し、バス２１０を介して復号部２０７へ入力する。
【０１２６】
さらに、コンテンツ解析部２０６は、配布コンテンツＣｉ＃Ｄ中のグループ鍵復号情報ＩＮＦｘｙのうち、グループＧｎｏｗよりも一つ下位のグループＧｎｏｗ＃ｄｏｗｎのグループ鍵復号情報ＩＮＦｘｙを特定し、このグループ鍵復号情報ＩＮＦｘｙ中の値Ｆｖａｌｕｅを記憶部２０３から取り出し、制御部２００はこれを復号部２０７へ入力する。復号部２０７は、グループ鍵Ｋｃｇｎｏｗを用いて、値Ｆｖａｌｕｅを復号する（ステップＳ３０３）。
【０１２７】
続いて、制御部２００は、グループＧｎｏｗ＃ｄｏｗｎを新たにグループＧｎｏｗとし（ステップＳ３０４）、これに設定された復号情報ＩＮＦｘｙの非暗号化情報の鍵タイプＦｔｙｐｅが、コンテンツ鍵かグループ鍵かを判定する（ステップＳ３０５）。判定の結果、コンテンツ鍵でない場合、ステップＳ３０３へ移行し上記の処理を繰り返す。一方、コンテンツ鍵である場合、制御部２００は、コンテンツ解析部２０６から暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）を取り出し、これを復号部２０７へ入力する。復号部２０７は、ステップＳ３０３で得られた復号結果をコンテンツ鍵Ｋｃｉとし、これを用いて暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）を復号する（ステップＳ３０６）。
【０１２８】
制御部２００は、この復号結果をコンテンツＣｉとしてバス２１０を介して再生部２０９に入力し、再生部２０９は、コンテンツＣｉを再生し、本処理を終了する。
【０１２９】
上記復号再生処理では、再生するコンテンツＣｉの選択に基づいて、これを復号するためのグループ鍵Ｋｃｇｊ（ｉ∈ｊ）およびコンテンツ鍵Ｋｃｉを検索し、得られた鍵を用いて暗号化コンテンツを復号し再生しているが、このほか、利用者が購入した鍵を指定し、その鍵で復号可能なコンテンツを再生する形態であっても良い。
【０１３０】
このような形態は、例えば、グループに属するコンテンツを、連続して再生する場合に有効である。この形態においても、図１１に示す処理のステップＳ３００において、利用者が指示する情報が鍵を選択するものであり、再生するコンテンツＣｉが番号の若い順序とすることにより実現することができる。
【０１３１】
【第２実施例】
本発明の別の実施形態として、利用者側でグループ鍵を設定する方法について説明する。本実施例では、端末装置２０の利用者が、図２に示すようなクラスとグループを用いて、自由にコンテンツの分類を行い、図３に示すようなコンテンツグループ鍵Ｋｃｇｊと復号情報ＩＮＦｘｙを設定することにより、グループ単位で鍵を生成する。
【０１３２】
本実施例の配信システム、およびシステムを構成するサーバ１０の構成は、第１実施例と同様である。
【０１３３】
また、第１実施例における端末装置３０と同一の機能を有するブロックには、同一番号を付し、その説明は省略する。以下、本発明により新たに提供される機能についてのみ、説明する。
【０１３４】
本実施例の端末装置２０の構成を図１３に示す。第１実施例の端末装置２０の構成に加えて、暗号化部２１１と乱数生成部２１２が追加されている。
【０１３５】
暗号化部２１１は、入力された鍵とデータに基づいて暗号演算処理を行い、暗号化データを生成する。乱数生成部２１２は、グループ鍵Ｋｃｇｊを生成する。
【０１３６】
端末装置２０がこれらの構成を有することにより、第１実施例において、サーバ１０が行っていた鍵の生成を、端末装置４０において行うことができる。具体的には、クラスＣＬｎおよびグループＧｊの設定に基づきグループ鍵Ｋｃｇｊを生成する処理、配信者鍵リストＫｌｉｓｔ＃Ｄを生成する処理、既存のグループに新たにコンテンツを加える処理が、第１実施例のサーバ１０におけるグループに対応したコンテンツ生成処理（図９）および追加処理（図１０）と同様にして実行される。
【０１３７】
但し、本実施例においては、図９の処理フロー中、ステップＳ１００にてクラスとグループの設定対象とされるコンテンツは、コンテンツ鍵Ｋｃｉを持つコンテンツに限られる。すなわち、コンテンツ鍵Ｋｃｉを有さないコンテンツが記憶部２０３に記憶されていたとしても、このコンテンツは、ステップＳ１００の処理対象とはならない。
【０１３８】
また、生成した各復号情報ＩＮＦｘｙは、記憶部２０３にまとめて保持しておけば良く、図９におけるステップＳ１０７を実行する必要はない。
【０１３９】
さらに、本実施例においては、グループ鍵に基づいてコンテンツ鍵を生成することができるため、グループ鍵Ｋｃｇｊを作成した後には、最上位グループに対するグループ鍵Ｋｃｇｊと、何れのグループにも属さないコンテンツのコンテンツ鍵Ｋｃｉを除いて、全ての鍵を消去することができる。
次に、端末装置２０において、コンテンツに対するグループ設定を解除し、個々のコンテンツ鍵を復元する処理手順を図１２に示す。
【０１４０】
まず、制御部２００は、１つのグループ鍵Ｋｃｇｊを選択し、これを復号鍵として復号部２０７に入力する（ステップＳ４００）。
【０１４１】
次に、制御部２００は、記憶部２０３からグループ鍵ＫｃｇｊのグループＧｊより下位の全てのグループＧｊ＃ｄｏｗｎに設定されたグループ鍵復号情報ＩＮＦｘｙを順次取り出し、これを復号部２０７に入力する。復号部２００は、グループＧｊより一つ下位のグループに設定されたグループ鍵復号情報ＩＮＦｘｙを復号鍵Ｋｃｇｊを用いて復号する。さらに、復号されたグループ鍵Ｋｃｇｊ＃ｄｏｗｎを用いてさらに一つ下位のグループに設定されたグループ鍵復号情報ＩＮＦｘｙを復号する。この復号処理を繰り返すことで、グループＧｊより下位の全てのグループＧｊ＃ｄｏｗｎに設定された全てのグループ鍵Ｋｃｇｊ＃ｄｏｗｎを取り出す（ステップＳ４０１）。
【０１４２】
さらに、最下位のグループ鍵Ｋｃｇｊ＃ｕｎｄｅｒを用いて、各暗号化コンテンツに付加されたコンテンツ鍵復号情報ＩＮＦｘｙを復号し、グループＧｊに属する全てのコンテンツ鍵Ｋｃｉを取り出す（ステップＳ４０２）。そして、グループＧｊに属するコンテンツの暗号化コンテンツに付加されたコンテンツ鍵復号情報、グループ鍵復号情報、グループ鍵を、全て消去する（ステップＳ４０３）。
【０１４３】
次に、全てのコンテンツ鍵が得られたか否か判定し（ステップＳ４０４）、コンテンツ鍵が全て得られていない場合、ステップＳ４００へ移行し、別のグループ鍵を選択して上記処理を繰り返す。Ｓ４０４において、コンテンツ鍵が全て得られた場合、これらを復元したコンテンツ鍵として、鍵保持部２０４の利用者鍵リストＫｌｉｓｔ＃Ｕに登録し（ステップＳ４０５）、本処理を終了する。
【０１４４】
このように、端末装置２０によって、コンテンツ利用者は、配信されたコンテンツに対して、グループを設定し、このグループに属するコンテンツを復号するグループ鍵を独自に設定することができる。
【０１４５】
なお、上記実施例では、コンテンツ利用者が、独自にコンテンツをグループ管理する環境を構築した場合に、グループから個々のコンテンツを復元する処理を示したが、このほか、コンテンツをグループで配信するコンテンツ配信システムにおいて、利用者がグループ鍵からコンテンツ鍵を生成して管理するよう変更することもできる。
【０１４６】
【第３実施例】
本実施例は、グループやコンテンツを一意に管理し、既に作成したグループを取り込んで新たに別の上位グループを構成する場合、既に作成したグループ鍵や復号情報等を利用して、当該新たなグループの配布コンテンツを生成するものである。
【０１４７】
本実施例では、図４に示す配信者鍵リストＫｌｉｓｔ＃Ｄ、利用者鍵リストＫｌｉｓｔ＃Ｕ、クラス鍵リストＫｌｉｓｔ＃ＣＬｎに加えて、復号情報リストＩＮＦｌｉｓｔを用いる。ここで、復号情報リストＩＮＦｌｉｓｔとは、配布コンテンツに含まれるコンテンツ鍵復号情報あるいはグループ鍵復号情報ＩＮＦｘｙの属性情報のリストである。
【０１４８】
本実施例では、この復号情報リストＩＮＦｌｉｓｔと、コンテンツＣｉをコンテンツ鍵Ｋｃｉで暗号化した暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）とが配布コンテンツＣｉ＃Ｄとして配布される。
【０１４９】
以下、かかる復号情報リストＩＮＦｌｉｓｔ、および図４に示されたその他のリスト情報の詳細を説明する。
図１４に、配信者鍵リストＫｌｉｓｔ＃Ｄの構成を示す。
【０１５０】
配信者鍵リストＫｌｉｓｔ＃Ｄは、配信者側が管理する鍵のリスト情報であり、コンテンツ鍵の総数Ｍｃ、各コンテンツ鍵の属性情報、グループ鍵の総数Ｍｇ、各グループ鍵の属性情報を含む。ここで、コンテンツ鍵およびグループ鍵の属性情報は、当該コンテンツ鍵およびグループ鍵がどのコンテンツおよびグループに付されたものであるかを示す情報のほか、当該コンテンツ鍵およびグループ鍵の格納場所や作成日等の情報を含む。
【０１５１】
なお、図４に示された利用者鍵リストＫｌｉｓｔ＃Ｕは、利用者側が保持する鍵のリスト情報であり、その構成は、図１４に示す配信者鍵リストＫｌｉｓｔ＃Ｄと同一である。
【０１５２】
図１５に、復号情報リストＩＮＦｌｉｓｔの構成を示す。
復号情報リストＩＮＦｌｉｓｔは、配信者側が管理する復号情報のリスト情報であり、復号情報の総数Ｍｉｎｆ、各復号情報ＩＮＦｘｙの属性情報を含む。ここで、復号情報ＩＮＦｘｙの属性情報は、当該復号情報がどのコンテンツおよびグループに付されたものであるかを示す情報のほか、当該復号情報ＩＮＦｘｙの格納場所や作成日等の情報を含む。
【０１５３】
図１６に、クラス鍵リストＫｌｉｓｔ＃ＣＬの構成を示す。
クラス鍵リストＫｌｉｓｔ＃ＣＬは、配信者側が構成したクラスのリスト情報であり、クラス識別情報ＣＬ、各クラスに含まれるノード数Ｎｕｍ＃Ｎｏｄｅおよび各ノードのノード情報ＩＮＦｎｏｄｅを含む。
【０１５４】
クラス識別情報ＣＬは、クラスを識別するための情報である。
ノード数Ｎｕｍ＃Ｎｏｄｅは、当該クラスが持つノードの数である。
ノード情報ＩＮＦｎｏｄｅは、各ノードについての情報である。
ノード情報ＩＮＦｎｏｄｅの構成を図１７に示す。
ノード情報ＩＮＦｎｏｄｅは、ノード番号Ｎｔ、上位ノード番号Ｎｕ、下位ノード数Ｍ、下位ノード番号Ｎｄとから構成される。
ノード番号Ｎｔは、ノードを一意に識別するために付された番号である。
上位ノード番号Ｎｕは、当該ノードの１つ上位のノードのノード番号である。
下位ノード数Ｍは、当該ノードの１つ下位のノードの数である。
下位ノード番号Ｎｄは、当該ノードの１つ下位のノードノード番号である。
【０１５５】
次に、これらの情報を用いてグループに対応した配布コンテンツを生成する際の処理を説明する。
本実施例では、第１実施例の同処理のフローを示す図９において、ステップＳ１０７の処理、すなわち、“ノードＧｎｏｗに属する全ての暗号化コンテンツに対して、生成したグループ鍵復号情報およびコンテンツ鍵復号情報を付加する”との処理に代わり、生成したグループ鍵復号情報およびコンテンツ鍵復号情報を復号情報リストＩＮＦｌｉｓｔに追加する処理を行う。
【０１５６】
本処理のフローを図１８に示す。
サーバ１０は、コンテンツＣｉと各コンテンツに対するコンテンツ鍵Ｋｃｉを、予め保有している。コンテンツＣｉは、対応するコンテンツ鍵Ｋｃｉで暗号化され、暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）としてコンテンツ保持部１０３に保持されている。また、グループ鍵Ｋｃｇｊと鍵リストＫｌｉｓｔ＃Ｄは、鍵保持部１０４に保持されている。
【０１５７】
まず、制御部１００は、コンテンツの種類を表示部１０１に表示し、サーバのユーザ（配信者）に対してグループおよびクラスの設定を促す。そして、入力部１０２を介して入力されたグループとクラスの設定情報に基づいて、制御部１００は、配信者鍵リストＫｌｉｓｔ＃Ｄ、クラス鍵リストＫｌｉｓｔ＃ＣＬ、復号情報リストＩＮＦｌｉｓｔを作成し、これを鍵保持部１０４に出力する（ステップＳ５００）。
【０１５８】
次に、制御部１００は、配信者鍵リストＫｌｉｓｔ＃Ｄの中から１つのクラスを選択し（これをクラスＣＬｎｏｗと表す）、クラス鍵リストＫｌｉｓｔ＃ＣＬｎｏｗをバス１０９を介して、リスト解析部１０５に入力する（ステップＳ５０１）。続いて、制御部１００は、クラス鍵リストＫｌｉｓｔ＃ＣＬｎｏｗに記述された鍵木Ｔｎ（ｎ＝ｎｏｗ）の最上位ノードに対するグループ鍵Ｋｃｇｊを、乱数生成部１０７によって生成させ、生成されたグループ鍵Ｋｃｇｊを鍵保持部１０４に出力する（ステップＳ５０２）。
【０１５９】
リスト解析部１０５では、鍵木Ｔｎｏｗのノード（最上位ノードを除く）の中から１つのノードＧｎｏｗを取り出す。ここで、ノードは、鍵木Ｔｎｏｗから幅探索順（最上位から下位）に取り出される。また、各クラスにおいて初めて本処理を行う場合、ノードＧｕｐとして、最上位ノードを設定する（ステップＳ５０３）。
【０１６０】
制御部１００は、クラス鍵リストＫｌｉｓｔ＃ＣＬｎｏｗのノードＧｎｏｗとノードＧｕｐとを用いて、復号情報リストＩＮＦｌｉｓｔの中から、これらのノードに対応するグループ鍵復号情報ＩＮＦｘｙ（ｘ＝ｎｏｗ，  ｙ＝ｕｐ）の属性情報を検索し、グループ鍵復号情報ＩＮＦｘｙ（ｘ＝ｎｏｗ，  ｙ＝ｕｐ）が存在するか否かの判断を行う（ステップＳ５０４）。
【０１６１】
ここで、グループ鍵復号情報ＩＮＦｘｙ（ｘ＝ｎｏｗ，  ｙ＝ｕｐ）が既に生成済みであり、復号情報リストＩＮＦｌｉｓｔにグループ鍵復号情報ＩＮＦｘｙ（ｘ＝ｎｏｗ，  ｙ＝ｕｐ）の属性情報が存在する場合、ステップＳ５０９へ移行する。
【０１６２】
一方、ステップＳ５０４において、グループ鍵復号情報ＩＮＦｘｙ（ｘ＝ｎｏｗ，  ｙ＝ｕｐ）が未だ生成されていないと判断された場合、制御部１００は、配信者鍵リストＫｌｉｓｔ＃Ｄの中から、グループ鍵Ｋｇｎｏｗに対応する属性情報を検索し、取り出したノードＧｎｏｗが鍵木Ｔｎ（ｎ＝ｎｏｗ）の最下位ノードであるか否かを検証する（ステップＳ５０５）。
【０１６３】
このとき、最下位ノードでなければ、制御部１００はこのノードに設定される鍵Ｋｃｇｊ（ｊ＝ｎｏｗ）を乱数生成部１０７によって生成させる。生成された鍵Ｋｃｇｊ（ｊ＝ｎｏｗ）は、このグループＧｎｏｗのグループ鍵Ｋｃｇｎｏｗとして鍵保持部１０４に出力される（ステップＳ５０６）。
【０１６４】
一方、Ｓ５０５において、前記ノードＧｎｏｗが最下位ノードである場合は、上記Ｓ５０６の処理はスキップされる。
【０１６５】
次に、制御部１００は、前記ノードＧｎｏｗの上位ノードＧｕｐに対応するグループ鍵Ｋｃｇｊ（ｊ＝ｕｐ）を、バス１０９を介して鍵保持部１０４から読み出し、暗号化部１０６に暗号化鍵として与える。
【０１６６】
このとき、ステップＳ５０６を実行した場合には、前記生成したグループ鍵Ｋｃｇｊ（ｊ＝ｎｏｗ）を鍵保持部１０４から読み出して暗号化部１０６に出力する。一方、ステップＳ５０６を実行しなかった場合には、生成済のグループ鍵Ｋｃｇｊまたはコンテンツ鍵Ｋｃｉをバス１０９を介して鍵保持部１０４から読み出し、これを暗号化部１０６に出力する。
【０１６７】
暗号化部１０６は、入力されたグループ鍵Ｋｃｇ（ｊ＝ｕｐ）を用いて、グループ鍵Ｋｃｇｊ  （ｊ＝ｎｏｗ）またはコンテンツ鍵Ｋｃｉを暗号化する（ステップＳ５０７）。
【０１６８】
続いて、制御部１００は、暗号化部１０６によって暗号化されたグループ鍵Ｋｃｇｊ  （ｊ＝ｎｏｗ）またはコンテンツ鍵Ｋｃｉをバス１０９を介して鍵保持部１０４に出力し、復号情報リストＩＮＦｌｉｓｔを更新する（ステップＳ５０８）。
【０１６９】
続いて、制御部１００は、リスト解析部１０５が鍵木Ｔｎ（ｎ＝ｎｏｗ）から全てのノードを取り出したか否かを判定する（ステップＳ５０９）。ノードの取り出しが完了していない場合、ステップＳ５０２へ移行し、幅探索順によるノード出力を続行する。
【０１７０】
一方、鍵木Ｔｎ（ｎ＝ｎｏｗ）の取り出しが完了している場合、制御部１００は、配信者鍵リストＫｌｉｓｔ＃Ｄのクラス全てのクラス鍵リストＫｌｉｓｔ＃ＣＬを、リスト解析部１０６に入力し終えたかを判定する（ステップＳ５１０）。そして、未だ入力されていないクラス鍵リストＫｌｉｓｔ＃ＣＬがある場合、ステップＳ５０１に移行する。一方、全てのクラス鍵リストＫｌｉｓｔ＃ＣＬが入力を終えた場合、本処理を終了する。
【０１７１】
なお、本実施例では、生成された復号情報リストＩＮＦｌｉｓｔは暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）には付加される形態ではなく、コンテンツ配信時には、鍵保持部１０４に保持される復号情報リストＩＮＦｌｉｓｔと、コンテンツ保持部１０３に保持される当該復号情報リストＩＮＦｌｉｓｔに対応する暗号化コンテンツＥ（Ｃｉ，Ｋｃｉ）とが共に、配布コンテンツとして配信される。
【０１７２】
上記実施例では、復号情報リストＩＮＦｌｉｓｔは、各ノードにおける鍵情報ＫｃｉまたはＫｃｇｉ、鍵復号情報ＩＮＦｘｙを含む構成としたが、これらを別途格納し、格納されたこれらの情報へのポインタを含むようにしてもよい。
【０１７３】
以上、第１〜第３の実施形態によれば、グループ鍵をコンテンツ鍵に依存することなく設定することができ、また、異なる分類を示すクラス毎に独立なグループ階層を構成することができるため、任意のコンテンツの組み合わせに対し、グループ鍵を生成することができる。
【０１７４】
コンテンツを提供するサーバにおいては、各コンテンツ、各グループに対応したコンテンツ鍵、グループ鍵を提供するだけでなく、コンテンツをから構成されるクラスの最上位のグループ鍵のみを保持し、この上位グループ鍵とこのグループ鍵に対応したグループ鍵復号情報とを用いて、下位のグループ鍵およびコンテンツ鍵を動的に生成するようにしても良い。このような形態では、最上位のグループ鍵のみを保持すれば良いため、鍵管理におけるコストを削減することができる。
【０１７５】
また、端末装置３０においてグループ鍵を保持する場合、暗号化されたコンテンツグループの復号用の鍵として使用されるだけでなく、グループ鍵とこのグループ鍵に対応するグループ鍵復号情報を用いて、下位のグループ鍵およびコンテンツ鍵を生成することもできる。このように、コンテンツ利用者側で、コンテンツをグループに分割して扱うことが出来るため、特定コンテンツのみを切り出し、これを安全に転送することなど、ユーザにコンテンツをさまざまな形態の使用環境を提供することができる。
【０１７６】
なお、本発明は、上記実施の形態に限定されるものではなく、他に種々の変更が可能であることは言うまでもない。
【０１７７】
例えば、上記の実施形態では、サーバ１０および端末装置２０の構成を機能ブロック毎に分けて示したが、それぞれのブロックはハードウェアとして明確に区分されている必要はなく、１つのハードウェアによって複数の機能が実行されるようにすることも、勿論可能である。
【０１７８】
また、上記実施の形態に示した各部の機能は、サーバ１０および端末装置２０に内蔵されたメモリ（ＲＯＭ）に予め記憶されたプログラムによって実現されるものの他、これらの機能をコンピュータに付与するためのプログラムを、内蔵メモリ（ＲＡＭ）に外部からダウンロードすることにより、サーバ１０および端末装置２０にこれらの機能を別途付与するようにしても良い。この場合、プログラムは、ＣＤ−ＲＯＭ等の記憶媒体をサーバ１０および端末装置２０に装着することにより、あるいは、インターネットを介して配信サーバから配信を受けることにより、各装置の内蔵メモリ（ＲＡＭ）にダウンロードされる。
【０１７９】
【発明の効果】
以上、本発明によれば、コンテンツ毎にそれぞれ復号鍵を用意するだけでなく、コンテンツを任意の単位でグループ化し、このグループに対する復号鍵を提供することができるため、コンテンツのグループ単位での管理および利用が可能となり、コンテンツ提供者およびコンテンツ利用者の利便性を図ることができる。
【図面の簡単な説明】
【図１】本発明の第１実施例におけるコンテンツ配信システムの概要を示す図である。
【図２】本発明の第１実施例におけるコンテンツのグループ構成を説明する図である。
【図３】本発明の第１実施例におけるグループ構成における復号鍵と復号情報を説明する図である。
【図４】本発明の第１実施例におけるデータの種類を説明する図である。
【図５】本発明の第１実施例における鍵データ構成を説明する図である。
【図６】本発明の第１実施例における復号情報の構成を説明する図である。
【図７】本発明の第１実施例におけるサーバの構成を示す図である。
【図８】本発明の第１実施例における端末装置の構成を示す図である。
【図９】本発明の第１実施例におけるコンテンツグループ設定とコンテンツグループ鍵の設定における処理を示すフローチャートである。
【図１０】本発明の第１実施例におけるコンテンツ追加処理を示すフローチャートである。
【図１１】本発明の第１実施例におけるコンテンツグループ鍵による暗号化コンテンツの復号処理を示すフローチャートである。
【図１２】本発明の第１実施例におけるコンテンツ鍵の復元処理を示すフローチャートである。
【図１３】本発明の第２実施例における端末装置の構成を示す図である。
【図１４】本発明の第３実施例における配信者鍵リストの構成を説明する図である。
【図１５】本発明の第３実施例における復号情報リストの構成を説明する図である。
【図１６】本発明の第３実施例におけるクラス鍵リストの構成を説明する図である。
【図１７】本発明の第３実施例におけるノード情報の構成を説明する図である。
【図１８】本発明の第３実施例における復号情報リストの生成における処理を示すフローチャートである。
【符号の説明】
１０  サーバ
２０  端末装置
３０  コンテンツ配信手段
１００  制御部
１０４  鍵保持部
２００  制御部
２０４  鍵保持部
【図１】
2005006033.tif 000003
【図２】
2005006033.tif 000004
【図３】
2005006033.tif 000005
【図４】
2005006033.tif 000006
【図５】
2005006033.tif 000007
【図６】
2005006033.tif 000008
【図７】
2005006033.tif 000009
【図８】
2005006033.tif 000010
【図９】
2005006033.tif 000011
【図１０】
2005006033.tif 000012
【図１１】
2005006033.tif 000013
【図１２】
2005006033.tif 000014
【図１３】
2005006033.tif 000015
【図１４】
2005006033.tif 000016
【図１５】
2005006033.tif 000017
【図１６】
2005006033.tif 000018
【図１７】
2005006033.tif 000019
【図１８】
2005006033.tif 000020