例えばDRMにおいてコンテンツの編集を実現するために、編集前のコンテンツと編集後のコンテンツを別々の暗号鍵で暗号化することが考えられる。しかし、この場合、編集後のコンテンツを利用可能な状態にするためには、図3に示すように、編集後のコンテンツの暗号化に用いた暗号鍵を含むライセンス・データをライセンス・サーバに登録する必要がある。また、利用者も、編集後のコンテンツを利用するには、編集前のコンテンツのライセンス・データとは別に、編集後のコンテンツのライセンス・データをライセンス・サーバから取得する必要がある。このように、編集される度にライセンス・データを登録したり、また利用者がライセンス・データを取得したりするとなると、ライセンス・サーバの処理負荷が大きくなってしまう。
そこで、本実施の形態では、グループ単位で、そのグループに属するコンテンツの暗号鍵を生成するためのグループ鍵とアクセス権情報などを含むライセンス・データをライセンス・サーバに登録するようにする。そして、コンテンツの暗号化・復号化には、図4に示すように、そのコンテンツが属するグループのライセンス・データに含まれるグループ鍵とコンテンツの識別情報とから生成された暗号鍵を用いるようにする。例えば、編集前のコンテンツと編集後のコンテンツとが同じグループに属するようにすれば、同じライセンス・データに含まれるグループ鍵を用いて編集前後で別々の暗号鍵を生成することができるようになる。すなわち、編集される度にライセンス・データを登録したり、また利用者がライセンス・データを取得したりする必要はない。以下、本技術の実施の形態について説明する。
図5に、本技術の実施の形態におけるシステム構成図を示す。図5では、例えばインターネットであるネットワーク1には、ライセンス・データを管理するサーバ3と、コンテンツ利用者により操作されるクライアント端末5(図5では5A及び5B)とが接続されている。なお、図5では、サーバ3が1台、クライアント端末5が2台の例を示しているが、サーバ3が2台以上の場合もあれば、クライアント端末5が3台以上の場合もある。
サーバ3は、認証部31と、ライセンス配信部32と、グループ管理部33と、ユーザ管理DB34と、アクセス権管理DB35と、鍵管理DB36とを有する。認証部31は、ユーザ管理DB34に格納されているデータを用いて認証処理を行う。ライセンス配信部32は、ユーザ管理DB34とアクセス権管理DB35と鍵管理DB36とに格納されているデータを用いて、ライセンス・データの配信などの処理を実施する。グループ管理部33は、例えば管理者から新たなグループの登録指示があった場合に、新たなグループのグループ鍵を鍵管理DB36に登録したり、アクセス権情報をアクセス権管理DB35に登録したりする。なお、ユーザ管理DB34、アクセス権管理DB35及び鍵管理DB36に格納されるデータについては後で説明する。
図6に、図5に示したクライアント端末5の機能ブロック図を示す。クライアント端末5は、アプリケーション51と、暗号/復号部52と、ファイルシステム53と、送受信部54と、ライセンス管理部55と、コンテンツ識別情報生成部56と、暗号鍵生成部57と、ライセンス取得部58と、ライセンスキャッシュ59と、認証部60とを有する。例えばライセンス管理部55は、暗号/復号部52、コンテンツ識別情報生成部56、暗号鍵生成部57、ライセンス取得部58及び認証部60の各処理部に処理を行うよう指示したり、ライセンスキャッシュ59に格納されているデータを管理したりする。認証部60は、ライセンス管理部55からの指示に応じて、認証情報をサーバ3に送信する。ライセンス取得部58は、ライセンス管理部55からの指示に応じて、サーバ3からライセンス・データを取得し、取得したライセンス・データをライセンス管理部55に出力する。コンテンツ識別情報生成部56は、ライセンス管理部55からの指示に応じて、コンテンツの識別情報を生成するための処理を実施する。暗号鍵生成部57は、ライセンス管理部55からの指示に応じて、暗号鍵を生成するための処理を実施する。なお、暗号鍵生成部57によって生成された暗号鍵は、ライセンス管理部55を介して暗号/復号部52に渡される。暗号/復号部52は、暗号化されたコンテンツをファイルシステム53から読み出し、暗号鍵を用いて復号化し、アプリケーション51に出力する。そして、アプリケーション51は、暗号/復号部52が復号したコンテンツを表示装置に表示したり、再生したりする。また、アプリケーション51は、ユーザによってコンテンツの作成・編集が行われた場合には、作成・編集されたコンテンツのデータを暗号/復号部52に出力する。そして、暗号/復号部52は、アプリケーション51からコンテンツのデータを受け取ると、暗号鍵を用いて暗号化し、ファイルシステム53に格納する。送受信部54は、ファイルシステム53に格納されているデータを他のクライアント端末に送信したり、他のクライアント端末から受信したデータをファイルシステム53に格納したりする。
図7に、サーバ3のユーザ管理DB34に格納されるデータの一例を示す。図7の例では、ユーザ管理DB34には、ユーザIDとパスワードとが格納されるようになっている。ユーザ管理DB34に格納されるデータは、認証処理に用いられる。
図8乃至図13を用いてデータ構成について説明する。まず、図8にサーバ3のアクセス権管理DB35に格納されるデータの一例を示す。図8の例では、アクセス権管理DB35には、グループIDと、ユーザIDと、アクセス権(閲覧/編集/印刷)と、そのグループに属するコンテンツの有効期限とが格納されるようになっている。アクセス権の列には、閲覧、編集、印刷の各操作について、「許可(OK)」又は「禁止(NG)」が設定される。なお、図8の例では、閲覧、編集、印刷の操作の権限を設定するようになっているが、これは一例であって、その他の操作の権限を設定することも可能である。また、あるグループに対して、ユーザ毎に異なるアクセス権が設定される場合には、同じグループIDを含むレコードが、ユーザの数だけ登録される。但し、アクセス権が同じユーザについては、複数のユーザIDを1つのレコードにまとめて登録するような場合もある。
また、図9にサーバ3の鍵管理DB36に格納されるデータの一例を示す。図9の例では、鍵管理DB36には、グループIDとグループ鍵とが格納されるようになっている。
さらに、図10にコンテンツの識別情報の構成例を示す。なお、コンテンツの識別情報は、コンテンツ識別情報生成部56によって生成され、暗号化されたコンテンツと対応付けてファイルシステム53に格納される。図10の例では、コンテンツの識別情報には、保護対象コンテンツであるか否かを表すフラグなどを含むヘッダと、当該コンテンツに関連するライセンス・データを管理しているサーバ3のIDと、コンテンツが属するグループのIDと、コンテンツを作成するのに用いられたクライアント端末のIDと、作成者IDと、作成時刻と、シリアル番号とが含まれる。なお、サーバIDには、例えばサーバの識別番号、URL(Uniform Resource Locator)又はIP(Internet Protocol)アドレスなどが設定される。また、シリアル番号とは、例えばその作成者によって作成されたコンテンツに対して順番に振られる番号などである。例えば図11にコンテンツの識別情報の具体例を示す。図11において、「保護対象フラグOn」は、保護対象コンテンツである旨を示している。図11の例では、ユーザID「123」のユーザが、クライアント端末ID「C002」のクライアント端末を用いて、2009年7月7日12時34分に作成したコンテンツであることを示している。なお、シリアル番号には、「001」が設定されている。さらに、図11の例では、グループID「1234」に属するコンテンツであることを示しており、当該グループのライセンス・データは、サーバID「S001」のサーバが管理していることを示している。なお、コンテンツの識別情報は、必ずしも図10に示すような構成でなければならないわけではない。コンテンツ毎に異なるデータになるような構成であれば、他の構成を採用してもよい。
また、図12にライセンス・データの構成例を示す。図12の例では、ライセンス・データには、種別(コンテンツ/グループ)を表すフラグと、コンテンツ又はグループの識別情報と、暗号鍵又はグループ鍵と、アクセス権情報と、有効期限を表すデータと、依存関係データとが含まれる。例えば、種別がコンテンツであれば、コンテンツの識別情報(図10)と暗号鍵とが含まれることになり、種別がグループであれば、グループの識別情報とグループ鍵とが含まれることになる。ここで、グループの識別情報とは、例えば保護対象コンテンツであるか否かを表すフラグなどを含むヘッダと、サーバIDと、グループIDとを含むデータである。また、依存関係データとは、種別がコンテンツのときに設定されるデータあり、そのコンテンツが他のコンテンツを編集することによって新たに生成されたものである場合に元のコンテンツを特定可能なデータである。なお、ライセンス・データは、アクセス権管理DB35及び鍵管理DB36に格納されているデータに基づいて生成され、サーバ3からクライアント端末5に発行される。そして、ライセンス・データは、クライアント端末5のライセンスキャッシュ59に格納され、有効期限が切れた場合や、一定期間以上使用されなかった場合に、ライセンスキャッシュ59から削除される。例えば図13にライセンス・データの具体例を示す。なお、図13は、種別がグループの場合の例を示している。図13の例では、ユーザAは、グループに属するコンテンツを閲覧することは許可(OK)されているが、編集及び印刷することは禁止(NG)されている。
次に図5に示したシステムの処理について説明する。まず、図14及び図15を用いて、グループ登録時及びコンテンツ作成時の処理について説明する。例えばシステムの管理者が、必要に応じて、サーバ3を操作して新たなグループの登録を指示する。この際、管理者は、新たなグループに係るアクセス権の情報などを入力する。なお、アクセス権について、最初は全て禁止(NG)にしておき、後で一部のユーザにのみ利用を許可するように設定する場合もある。そして、サーバ3のグループ管理部33は、管理者からの指示に応じて、グループ登録処理を実施する(図14:ステップS1)。グループ登録処理については図15を用いて説明する。
まず、グループ管理部33は、管理者から新たなグループに係るアクセス権の設定入力を受け付ける(図15:ステップS81)。そして、グループ管理部33は、乱数を発生させるなどしてグループ鍵を生成し、グループIDに対応付けて鍵管理DB36に格納する(ステップS83)。なお、グループ管理部33が、グループを特定可能なユニークな番号をグループIDとして割り当てる。なお、管理者にグループIDを指定させるような構成も可能であり、その場合には、指定されたグループIDを用いる。また、グループ管理部33は、受け付けたアクセス権の情報をグループID及びユーザIDに対応付けてアクセス権管理DB35に格納する(ステップS85)。その後、元の処理に戻る。
図14の説明に戻って、例えばユーザAがクライアント端末5A(以下、クライアントAと呼ぶ)のアプリケーション51を用いて、あるグループに属するコンテンツAを作成する(ステップS3)。なお、本ステップは、ユーザの動作であるため、図14では点線ブロックで示している。また、コンテンツAが属するグループについては、ユーザAから指定されるものとする。そして、アプリケーション51は、作成されたコンテンツAのデータを暗号/復号部52に出力し、暗号/復号部52は、アプリケーション51からコンテンツAのデータを受け取ると、コンテンツAを暗号化するための暗号鍵をライセンス管理部55に要求する。
そして、クライアントAのライセンス管理部55は、暗号/復号部52からの要求を受けると、コンテンツAが属するグループのライセンス・データが、クライアントAのライセンスキャッシュ59に格納されているか判断する。なお、ここでは、コンテンツAが属するグループのライセンス・データが、ライセンスキャッシュ59に格納されていないものとする。そして、ライセンス・データがライセンスキャッシュ59に格納されていない場合には、ライセンス管理部55が、ライセンス取得部58にライセンス・データを取得するよう指示する。そうすると、ライセンス取得部58は、ライセンス管理部55からの指示に応じて、グループの指定を含むライセンス要求をサーバ3に送信する(ステップS5)。なお、本ステップより前の時点でユーザ認証が完了していなければ、本ステップの処理の前に、ライセンス管理部55が、認証部60に認証情報(例えばユーザID、パスワード)を送信させ、ユーザ認証を行うようにする。
その後、サーバ3のライセンス配信部32は、クライアントAからのライセンス要求を受信する(ステップS7)。そして、ライセンス配信部32は、アクセス権管理DB35と鍵管理DB36とに格納されているデータを用いて、要求に係るグループのライセンス・データを生成し、要求元のクライアントAに送信する(ステップS9)。具体的には、要求に係るグループのグループ鍵を鍵管理DB36から取得するとともに、要求に係るグループのアクセス権情報及び有効期限をアクセス権管理DB35から取得する。そして、取得したグループ鍵、アクセス権情報及び有効期限を含むライセンス・データを生成する。なお、ライセンス・データに含まれる種別には、「グループ」を設定する。また、ライセンス・データに含まれるグループの識別情報には、保護対象コンテンツである旨を表すフラグなどを含むヘッダと、自身のサーバIDと、要求に係るグループのグループIDとを設定する。
そして、クライアントAのライセンス取得部58は、サーバ3からライセンス・データを受信し、ライセンス管理部55に出力する。ライセンス管理部55は、受信したライセンス・データをライセンスキャッシュ59に格納する(ステップS11)。
その後、ライセンス管理部55は、ユーザAによって作成されたコンテンツAの識別情報を生成するようコンテンツ識別情報生成部56に指示する。そうすると、コンテンツ識別情報生成部56は、ライセンス管理部55からの指示に応じて、コンテンツAの識別情報を生成し、ライセンス管理部55に出力する(ステップS13)。具体的には、ライセンス管理部55は、「保護対象フラグOn」を含むヘッダを設定し、クライアントAのIDをクライアント端末IDとして設定し、ユーザAのユーザIDを作成者IDとして設定し、ステップS3においてユーザAがコンテンツAを作成した時点の時刻を作成時刻として設定する。また、ステップS11において受信したライセンス・データからサーバID及びグループIDを抽出し、コンテンツAの識別情報に設定する。さらに、例えば前回ユーザAがコンテンツを作成した際に設定したシリアル番号に1を加算した番号を今回のシリアル番号として設定する。
そして、ライセンス管理部55は、コンテンツAの識別情報を受け取り、コンテンツAの識別情報と、コンテンツAが属するグループのライセンス・データに含まれるグループ鍵とを暗号鍵生成部57に出力する。暗号鍵生成部57は、ライセンス管理部55からコンテンツAの識別情報とグループ鍵とを受け取ると、コンテンツAの識別情報とグループ鍵とを用いて、コンテンツA用の暗号鍵(以下、暗号鍵Aと呼ぶ)を生成する(ステップS15)。例えば、コンテンツの識別情報とグループ鍵とから暗号鍵を出力する所定の関数(例えばハッシュ関数など)を用意しておき、コンテンツAの識別情報とグループ鍵と所定の関数とを用いて暗号鍵Aを生成する。その後、暗号鍵生成部57は、生成した暗号鍵Aをライセンス管理部55に出力する。そして、ライセンス管理部55は、暗号鍵生成部57から暗号鍵Aを受け取り、暗号鍵AとコンテンツAの識別情報とを暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55から暗号鍵AとコンテンツAの識別情報とを受け取ると、暗号鍵Aを用いてコンテンツAを暗号化し、暗号化されたコンテンツAを識別情報と対応付けてファイルシステム53に格納する(ステップS17)。
以上、図14に示したような処理を実施することにより、ユーザによって作成されたコンテンツ(上の説明ではコンテンツA)は、グループ鍵と当該コンテンツの識別情報とから生成された暗号鍵(上の説明では暗号鍵A)を用いて暗号化される。
次に、図16を用いて、コンテンツ閲覧時の処理について説明する。ここでは、ユーザBがクライアント端末5B(以下、クライアントBと呼ぶ)を操作し、ユーザAによって作成されたコンテンツAを閲覧する場面を例に説明する。なお、図16の処理フローは、図14の処理フローからの続きであるものとする。
例えばユーザAがクライアントAを操作して、暗号化されたコンテンツAをクライアントBに配信するよう指示する。そうすると、クライアントAの送受信部54は、ユーザAからの指示に応じて、ファイルシステム53に格納されている、暗号化されたコンテンツAとコンテンツAの識別情報とをクライアントBに配信する(図16:ステップS19)。
そして、クライアントBの送受信部54は、クライアントAから、暗号化されたコンテンツAとコンテンツAの識別情報とを受信し、クライアントBのファイルシステム53に格納する(ステップS21)。
その後、例えばユーザBがクライアントBを操作して、コンテンツAの閲覧を指示する。そうすると、クライアントBの暗号/復号部52は、ユーザBからの指示に応じて、ファイルシステム53から、暗号化されたコンテンツAとコンテンツAの識別情報とを読み出し、コンテンツAの識別情報をライセンス管理部55に出力する。
そして、ライセンス管理部55は、暗号/復号部52からコンテンツAの識別情報を受け取ると、コンテンツAの識別情報から、コンテンツAが属するグループのグループIDを抽出する(ステップS23)。そして、ライセンス管理部55は、コンテンツAが属するグループのライセンス・データが、クライアントBのライセンスキャッシュ59に格納されているか判断する。ここでは、コンテンツAが属するグループのライセンス・データが、ライセンスキャッシュ59に格納されていないものとする。そして、ライセンス・データがライセンスキャッシュ59に格納されていない場合には、ライセンス管理部55が、ライセンス取得部58に、コンテンツAが属するグループのグループIDを含むライセンス要求を送信させる。ライセンス取得部58は、ライセンス管理部55からの指示に応じて、コンテンツAが属するグループのグループIDを含むライセンス要求をサーバ3に送信する(ステップS25)。なお、本ステップより前の時点でユーザ認証が完了していなければ、本ステップの処理の前に、ライセンス管理部55が、認証部60に認証情報(例えばユーザID、パスワード)を送信させ、ユーザ認証を行うようにする。
そして、サーバ3のライセンス配信部32は、クライアントBからのライセンス要求を受信する(ステップS27)。そして、ライセンス配信部32は、グループIDとユーザIDとを用いてアクセス権管理DB35を検索し、要求に係るグループ内のコンテンツに対するアクセス権がユーザBに認められているかを確認する。ユーザBにアクセス権が認められていれば、すなわちライセンス認証に成功した場合、ライセンス配信部32は、アクセス権管理DB35と鍵管理DB36とに格納されているデータを用いて、要求に係るグループのライセンス・データを生成し、要求元のクライアントBに送信する(ステップS29)。なお、ユーザBにアクセス権が認められていない場合には、ライセンス配信部32は、その旨の通知をクライアントBに送信する。
そして、クライアントBのライセンス取得部58は、サーバ3からライセンス・データを受信し、ライセンス管理部55に出力する。ライセンス管理部55は、受信したライセンス・データをライセンスキャッシュ59に格納する(ステップS31)。
そして、ライセンス管理部55は、ライセンスキャッシュ59に格納した、コンテンツAが属するグループのライセンス・データを用いて、コンテンツAの閲覧権限があるか判断する(ステップS33)。コンテンツAの閲覧権限がなければ(ステップS33:Noルート)、処理を終了する(ステップS35)。この際、ライセンス管理部55は、閲覧権限がない旨の表示を表示装置に表示させる。
一方、コンテンツAの閲覧権限がある場合(ステップS33:Yesルート)、ライセンス管理部55は、コンテンツAの識別情報と、ライセンスキャッシュ59に格納されている、コンテンツAが属するグループのライセンス・データに含まれるグループ鍵とを暗号鍵生成部57に出力する。暗号鍵生成部57は、ライセンス管理部55からコンテンツAの識別情報とグループ鍵とを受け取ると、コンテンツAの識別情報とグループ鍵とを用いて、コンテンツA用の暗号鍵Aを生成する(ステップS37)。本ステップでは、ステップS15(図14)と同じアルゴリズムで暗号鍵を生成する。例えば、ステップS15においてハッシュ関数を用いて暗号鍵を生成するようになっている場合には、クライアントBにおいても共通のハッシュ関数を用意しておき、当該ハッシュ関数を用いて暗号鍵を生成する。すなわち、ステップS15と同じデータ(コンテンツAの識別情報及びグループ鍵)及びアルゴリズム(例えば共通のハッシュ関数など)を用いるので、本ステップにおいても暗号鍵Aが生成される。その後、暗号鍵生成部57は、生成した暗号鍵Aをライセンス管理部55に出力する。そして、ライセンス管理部55は、暗号鍵生成部57から暗号鍵Aを受け取り、暗号鍵Aを暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55から暗号鍵Aを受け取ると、暗号鍵Aを用いて、暗号化されたコンテンツAを復号し、アプリケーション51に出力する(ステップS39)。これにより、ユーザBは、アプリケーション51を用いてコンテンツAを閲覧することができる。
以上、図16に示したような処理を実施することにより、コンテンツの識別情報とライセンス・データに含まれるグループ鍵とから当該コンテンツの暗号鍵を生成し、復号することができる。
次に、図17を用いて、コンテンツ編集時の処理について説明する。ここでは、ユーザAがコンテンツAを編集することにより、コンテンツAと同じグループに属するコンテンツBを新たに作成する場面を例に説明する。なお、図17の処理フローは、図16の処理フローからの続きであるものとする。
例えばユーザAがクライアントAのアプリケーション51を用いてコンテンツAを編集することにより、新たなコンテンツBを作成する(図17:ステップS41)。なお、本ステップは、ユーザの動作であるため、図17では点線ブロックで示している。そして、アプリケーション51は、編集後のコンテンツBのデータを暗号/復号部52に出力し、暗号/復号部52は、アプリケーション51からコンテンツBのデータを受け取ると、コンテンツBを暗号化するための暗号鍵をライセンス管理部55に要求する。
そして、クライアントAのライセンス管理部55は、暗号/復号部52からの要求を受けると、編集前のコンテンツAが属するグループのライセンス・データが、クライアントAのライセンスキャッシュ59に格納されているか判断する。なお、上で説明したステップS11において、コンテンツAが属するグループのライセンス・データを既に受信し、ライセンスキャッシュ59に格納している。従って、ここでは、ライセンス・データがライセンスキャッシュ59に格納されていると判断される。そして、ライセンス管理部55は、編集後のコンテンツBの識別情報を生成するようコンテンツ識別情報生成部56に指示する。そうすると、コンテンツ識別情報生成部56は、ライセンス管理部55からの指示に応じて、編集後のコンテンツBの識別情報を生成する(ステップS43)。具体的には、ライセンス管理部55は、「保護対象フラグOn」を含むヘッダを設定し、クライアントAのIDをクライアント端末IDとして設定し、ユーザAのユーザIDを作成者IDとして設定し、ステップS41においてユーザAがコンテンツBを作成した時点の時刻を作成時刻として設定する。また、コンテンツAが属するグループのグループIDと、当該グループのライセンス・データに含まれるサーバIDとを、コンテンツBの識別情報に設定する。さらに、例えば前回ユーザAがコンテンツを作成した際に設定したシリアル番号に1を加算した番号を今回のシリアル番号として設定する。
そして、ライセンス管理部55は、編集後のコンテンツBの識別情報を受け取り、コンテンツBの識別情報と、ライセンスキャッシュ59に格納されている、編集前のコンテンツAが属するグループのライセンス・データに含まれるグループ鍵とを暗号鍵生成部57に出力する。暗号鍵生成部57は、ライセンス管理部55からコンテンツBの識別情報とグループ鍵とを受け取ると、コンテンツBの識別情報とグループ鍵とを用いて、コンテンツB用の暗号鍵(以下、暗号鍵Bと呼ぶ)を生成する(ステップS45)。例えば、コンテンツBの識別情報とグループ鍵と所定の関数(例えばハッシュ関数など)とを用いて暗号鍵Bを生成する。その後、暗号鍵生成部57は、生成した暗号鍵Bをライセンス管理部55に出力する。そして、ライセンス管理部55は、暗号鍵生成部57から暗号鍵Bを受け取り、暗号鍵BとコンテンツBの識別情報とを暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55から暗号鍵BとコンテンツBの識別情報とを受け取ると、暗号鍵Bを用いてコンテンツBを暗号化し、暗号化されたコンテンツBを識別情報と対応付けてファイルシステム53に格納する(ステップS47)。
例えば図18に示すように、グループ鍵にコンテンツ固有の識別情報を組み合わせて暗号鍵を生成するので、編集前のコンテンツAと編集後のコンテンツBとが同一グループである場合には、同じグループ鍵を利用して別々の暗号鍵を生成することができ、別々の暗号鍵で暗号化することができる。従って、編集前のコンテンツと編集後のコンテンツとを別々の暗号鍵で暗号化する場合でも、編集後のコンテンツに係るライセンス・データを新たに登録する必要はないため、サーバ3の処理負荷を抑えられる。
例えばユーザAがクライアントAを操作して、暗号化されたコンテンツBをクライアントBに配信するよう指示する。そうすると、クライアントAの送受信部54は、ユーザAからの指示に応じて、ファイルシステム53に格納されている、暗号化されたコンテンツBとコンテンツBの識別情報とをクライアントBに配信する(ステップS49)。
そして、クライアントBの送受信部54は、クライアントAから、暗号化されたコンテンツBとコンテンツBの識別情報とを受信し、クライアントBのファイルシステム53に格納する(ステップS51)。
その後、例えばユーザBがクライアントBを操作して、コンテンツBの閲覧を指示する。そうすると、クライアントBの暗号/復号部52は、ユーザBからの指示に応じて、ファイルシステム53から、暗号化されたコンテンツBとコンテンツBの識別情報とを読み出し、コンテンツBの識別情報をライセンス管理部55に出力する。
そして、ライセンス管理部55は、暗号/復号部52からコンテンツBの識別情報を受け取ると、コンテンツBの識別情報から、コンテンツBが属するグループのグループIDを抽出する。そして、ライセンス管理部55は、コンテンツBが属するグループのライセンス・データが、クライアントBのライセンスキャッシュ59に格納されているか判断する。なお、上で説明したステップS31において、コンテンツAが属するグループのライセンス・データを受信し、ライセンスキャッシュ59に格納している。また、コンテンツAとコンテンツBとは同じグループに属するため、ここでは、ライセンスA及びライセンスBが属するグループのライセンス・データが、ライセンスキャッシュ59に格納されていると判断される。そして、ライセンス管理部55は、ライセンスキャッシュ59に格納されている、コンテンツBが属するグループのライセンス・データを用いて、コンテンツBの閲覧権限があるか判断する(ステップS53)。コンテンツBの閲覧権限がなければ(ステップS53:Noルート)、処理を終了する(ステップS55)。この際、ライセンス管理部55は、閲覧権限がない旨の表示を表示装置に表示させる。
一方、コンテンツBの閲覧権限がある場合(ステップS53:Yesルート)、ライセンス管理部55は、コンテンツBの識別情報と、ライセンスキャッシュ59に格納されている、コンテンツBが属するグループのライセンス・データに含まれるグループ鍵とを暗号鍵生成部57に出力する。暗号鍵生成部57は、ライセンス管理部55からコンテンツBの識別情報とグループ鍵とを受け取ると、コンテンツBの識別情報とグループ鍵とを用いて、コンテンツB用の暗号鍵Bを生成する(ステップS57)。本ステップでは、ステップS45と同じアルゴリズムで暗号鍵を生成する。例えば、ステップS45においてハッシュ関数を用いて暗号鍵を生成するようになっている場合には、共通のハッシュ関数を用いて暗号鍵を生成する。すなわち、ステップS45と同じデータ(コンテンツBの識別情報及びグループ鍵)及びアルゴリズム(例えば共通のハッシュ関数など)を用いるので、本ステップにおいても暗号鍵Bが生成される。その後、暗号鍵生成部57は、生成した暗号鍵Bをライセンス管理部55に出力する。そして、ライセンス管理部55は、暗号鍵生成部57から暗号鍵Bを受け取り、暗号鍵Bを暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55から暗号鍵Bを受け取ると、暗号鍵Bを用いて、暗号化されたコンテンツBを復号し、アプリケーション51に出力する(ステップS59)。これにより、ユーザBは、アプリケーション51を用いてコンテンツBを閲覧することができる。
以上、図17に示すような処理を実施することにより、編集前と同じグループに属する編集後のコンテンツ(上の説明ではコンテンツB)について、編集前のコンテンツが属するグループのライセンス・データがキャッシュされていれば、ライセンス・データを新たに取得することなく、編集後のコンテンツを利用できる。従って、編集前のコンテンツと編集後のコンテンツとを別々の暗号鍵で暗号化する場合でも、サーバ3の処理負荷を抑えられる。
次に、サーバ3及びクライアント端末5がグループ鍵などを削除する処理について説明する。最初に、図19を用いて、サーバ3における処理について説明する。サーバ3は、定期的に又は任意のタイミング(例えば管理者から削除指示を受け付けた場合など)にて、図19に示すような処理を実施する。まず、グループ管理部33は、管理者から、あるグループについての削除指示を受け付けたか判断する(図19:ステップS61)。削除指示を受け付けていなければ(ステップS61:Noルート)、ステップS65の処理に移行する。
一方、削除指示を受け付けた場合(ステップS61:Yesルート)、グループ管理部33は、鍵管理DB36及びアクセス権管理DB35から、削除指示に係るグループのグループ鍵及びアクセス権情報を削除する(ステップS63)。その後、ステップS65の処理に移行する。
そして、グループ管理部33は、有効期限が切れているアクセス権情報が、アクセス権管理DB35内にあるか判断する(ステップS65)。有効期限が切れているアクセス権情報が、アクセス権管理DB35内になければ(ステップS65:Noルート)、処理を終了する。
一方、有効期限が切れているアクセス権情報が、アクセス権管理DB35内にある場合(ステップS65:Yesルート)、グループ管理部33は、有効期限が切れているアクセス権情報に係るグループを特定する。そして、グループ管理部33は、鍵管理DB36及びアクセス権管理DB35から、該当するグループのグループ鍵及びアクセス権情報を削除する(ステップS67)。その後、処理を終了する。
次に、図20を用いて、クライアント端末5における処理について説明する。クライアント端末5は、定期的に又は任意のタイミングにて、図20に示すような処理を実施する。まず、ライセンス管理部55は、有効期限が切れているライセンス・データが、ライセンスキャッシュ59内にあるか判断する(図20:ステップS71)。有効期限が切れているライセンス・データが、ライセンスキャッシュ59内になければ(ステップS71:Noルート)、ステップS75の処理に移行する。
一方、有効期限が切れているライセンス・データが、ライセンスキャッシュ59内にある場合(ステップS71:Yesルート)、ライセンス管理部55は、ライセンスキャッシュ59から、有効期限が切れているライセンス・データを削除する(ステップS73)。その後、ステップS75の処理に移行する。
そして、ライセンス管理部55は、前回認証してから一定期間以上経過しているか判断する(ステップS75)。例えば、認証部60により前回認証が行われた時刻を記憶装置などに記憶しておき、前回認証時の時刻と現在の時刻との差が、一定期間以上であるか否かで判断する。そして、前回認証してから一定期間以上経過していなければ(ステップS75:Noルート)、処理を終了する。
一方、前回認証してから一定期間以上経過していた場合(ステップS75:Yesルート)、ライセンス管理部55は、ライセンスキャッシュ59からライセンス・データを削除する(ステップS77)。その後、処理を終了する。
以上、図19及び図20に示すような処理を実施することにより、任意のタイミングで、サーバ3及びクライアント端末5からグループ鍵などの情報が削除される。従って、有効期限が切れた場合には他人はコンテンツにアクセスできなくなるので、コンテンツの情報漏洩を防止できる。
なお、上では、編集後のコンテンツを編集前のコンテンツと同じグループに属するようにした例を説明したが、編集を行ったユーザが編集後のコンテンツを編集前のコンテンツとは別のグループに属するようにしたいと考える場合もある。その場合には、コンテンツの編集後、別のグループのライセンス・データを取得するようにし、そのライセンス・データに含まれるグループ鍵を用いるようにすればよい。
また、例えばユーザが、いずれのグループにも所属しないコンテンツを作成したいと考える場合や、後からグループの設定をしたいと考える場合もある。以下、そのような場合におけるサーバ3及びクライアント端末5の処理について説明する。なお、以下の処理では、図21及び図22に示すようなデータを用いる。図21は、サーバ3のアクセス権管理DB35に格納されるデータの一例を示す。図21の例では、アクセス権管理DB35には、コンテンツの識別情報と、ユーザIDと、アクセス権(閲覧/編集/印刷)と、有効期限と、依存関係データとが格納されるようになっている。なお、コンテンツの識別情報は、例えば図11で示したようなデータである。図21の例では、ユーザIDが「001」のユーザは、コンテンツの識別情報が「1−S001−1234−・・・」であるコンテンツについて、2009年9月1日まで、閲覧と編集と印刷とが許可(OK)されていることを示している。また、コンテンツの識別情報が「1−S001−1234−・・・」であるコンテンツは、コンテンツXから派生して作成されたものであることを示している。また、図22は、サーバ3の鍵管理DB36に格納されるデータの一例を示す。図22の例では、鍵管理DB36には、コンテンツの識別情報と暗号鍵とが格納されるようになっている。また、図23に、以下の処理で用いるライセンス・データの具体例を示す。なお、ライセンス・データの構成は、図12に示したものと同じである。図23に示すライセンス・データでは、図13に示したライセンス・データと比べると、グループ識別情報の代わりにコンテンツの識別情報が含まれ、グループ鍵の代わりに暗号鍵が含まれ、さらに依存関係データが含まれる。図23では、そのコンテンツが、ライセンスXから派生したものであることを示している。
まず、図24を用いて、コンテンツ作成時の処理について説明する。例えばユーザAがクライアントAのアプリケーション51を用いて、いずれのグループにも所属しないコンテンツCを作成する(ステップS101)。なお、本ステップは、ユーザの動作であるため、図24では点線ブロックで示している。そして、アプリケーション51は、作成されたコンテンツCのデータを暗号/復号部52に出力し、暗号/復号部52は、アプリケーション51からコンテンツCのデータを受け取ると、コンテンツCを暗号化するための暗号鍵をライセンス管理部55に要求する。
そして、クライアントAのライセンス管理部55は、暗号/復号部52からの要求に応じて、コンテンツCの識別情報を生成するようコンテンツ識別情報生成部56に指示するとともに、コンテンツCを暗号化するための暗号鍵を生成するよう暗号鍵生成部57に指示する。そうすると、コンテンツ識別情報生成部56は、ライセンス管理部55からの指示に応じて、コンテンツCの識別情報を生成し、ライセンス管理部55に出力する。また、暗号鍵生成部57は、例えば乱数を発生させるなどして暗号鍵(以下、暗号鍵Cと呼ぶ)を生成し、ライセンス管理部55に出力する(ステップS103)。なお、コンテンツの識別情報を生成する処理は、基本的には上で説明した処理と同じであるが、コンテンツがいずれのグループにも所属しない場合には、無所属であることを表すデータ(例えば0など)をグループIDに設定する。
そして、ライセンス管理部55は、コンテンツ識別情報生成部56からコンテンツCの識別情報を受け取り、暗号鍵生成部57から暗号鍵Cを受け取る。そして、ライセンス管理部55は、コンテンツCの識別情報と暗号鍵Cとを暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55からコンテンツCの識別情報と暗号鍵Cとを受け取ると、暗号鍵Cを用いてコンテンツCを暗号化し、暗号化されたコンテンツCを識別情報と対応付けてファイルシステム53に格納する(ステップS105)。
また、ライセンス管理部55は、デフォルトの設定を含むアクセス権情報を生成する。そして、ライセンス管理部55は、ライセンス取得部58にコンテンツCの識別情報と暗号鍵Cとアクセス権情報とをサーバ3に送信させる。ライセンス取得部58は、ライセンス管理部55からの指示に応じて、コンテンツCの識別情報と暗号鍵Cとアクセス権情報とをサーバ3に送信する(ステップS107)。
そして、サーバ3のライセンス配信部32は、クライアントAからコンテンツCの識別情報と暗号鍵Cとアクセス権情報とを受信する。そして、ライセンス配信部32は、コンテンツCの識別情報とアクセス権情報とをアクセス権管理DB35に格納し、コンテンツCの識別情報と暗号鍵Cとを鍵管理DB36に格納する(ステップS109)。
以上、図24に示すような処理を実施することにより、作成された無所属のコンテンツ(上の説明ではコンテンツC)は、暗号鍵(上の説明では暗号鍵C)を用いて暗号化され、暗号鍵及びアクセス権情報がサーバ3に登録される。
次に、図25を用いて、コンテンツ閲覧時の処理について説明する。ここでは、ユーザBがクライアントBを操作し、ユーザAによって作成されたコンテンツCを閲覧する場面を例に説明する。なお、図25の処理フローは、図24の処理フローからの続きであるものとする。
例えばユーザAがクライアントAを操作して、暗号化されたコンテンツCをクライアントBに配信するよう指示する。そうすると、クライアントAの送受信部54は、ユーザAからの指示に応じて、ファイルシステム53に格納されている、暗号化されたコンテンツCとコンテンツCの識別情報とをクライアントBに配信する(図25:ステップS111)。
そして、クライアントBの送受信部54は、クライアントAから、暗号化されたコンテンツCとコンテンツCの識別情報とを受信し、クライアントBのファイルシステム53に格納する(ステップS113)。
その後、例えばユーザBがクライアントBを操作して、コンテンツCの閲覧を指示する。そうすると、クライアントBの暗号/復号部52は、ユーザBからの指示に応じて、ファイルシステム53から、暗号化されたコンテンツCとコンテンツCの識別情報とを読み出し、コンテンツCの識別情報をライセンス管理部55に出力する。
そして、ライセンス管理部55は、暗号/復号部52からコンテンツCの識別情報を受け取ると、コンテンツCのライセンス・データがクライアントBのライセンスキャッシュ59に格納されているか判断する。ここでは、コンテンツCのライセンス・データがライセンスキャッシュ59に格納されていないものとする。そして、コンテンツCのライセンス・データがライセンスキャッシュ59に格納されていない場合には、ライセンス管理部55が、ライセンス取得部58に、コンテンツCの識別情報を含むライセンス要求を送信させる。ライセンス取得部58は、ライセンス管理部55からの指示に応じて、コンテンツCの識別情報を含むライセンス要求をサーバ3に送信する(ステップS115)。なお、本ステップより前の時点でユーザ認証が完了していなければ、本ステップの処理の前に、ライセンス管理部55が、認証部60に認証情報(例えばユーザID、パスワード)を送信させ、ユーザ認証を行うようにする。
そして、サーバ3のライセンス配信部32は、クライアントBからライセンス要求を受信する(ステップS117)。そして、ライセンス配信部32は、ライセンス要求に含まれる、コンテンツの識別情報を用いて、アクセス権管理DB35を検索し、要求に係るコンテンツに対するアクセス権がユーザBに認められているかを確認する。ユーザBにアクセス権が認められていれば、すなわちライセンス認証に成功した場合、ライセンス配信部32は、アクセス権管理DB35と鍵管理DB36とに格納されているデータを用いて、要求に係るコンテンツのライセンス・データを生成し、要求元のクライアントBに送信する(ステップS119)。ここでは、コンテンツCのライセンス・データを要求されているので、コンテンツCの識別情報と、アクセス権管理DB35においてコンテンツCの識別情報及びユーザBに対応付けて格納されているアクセス権情報、有効期限及び依存関係データと、鍵管理DB36においてコンテンツCの識別情報に対応付けて格納されている暗号鍵Cとを含むライセンス・データを生成し、クライアントBに送信する。この際、ライセンス・データに含まれる種別には、「コンテンツ」を設定する。なお、ユーザBにアクセス権が認められていない場合には、ライセンス配信部32は、その旨の通知をクライアントBに送信する。
そして、クライアントBのライセンス取得部58は、サーバ3からコンテンツCのライセンス・データを受信し、ライセンス管理部55に出力する。ライセンス管理部55は、受信したライセンス・データをライセンスキャッシュ59に格納する(ステップS121)。
そして、ライセンス管理部55は、ライセンスキャッシュ59に格納した、コンテンツCのライセンス・データを用いて、コンテンツCの閲覧権限があるか判断する(ステップS123)。コンテンツCの閲覧権限がなければ(ステップS123:Noルート)、処理を終了する(ステップS125)。この際、ライセンス管理部55は、閲覧権限がない旨の表示を表示装置に表示させる。
一方、コンテンツCの閲覧権限がある場合(ステップS123:Yesルート)、ライセンス管理部55は、ライセンスキャッシュ59に格納されている、コンテンツCのライセンス・データから暗号鍵Cを取得し、暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55から暗号鍵Cを受け取ると、暗号鍵Cを用いて、暗号化されたコンテンツCを復号し、アプリケーション51に出力する(ステップS127)。これにより、ユーザBは、アプリケーション51を用いてコンテンツCを閲覧することができる。
次に、図26及び図27を用いて、コンテンツ編集時の処理について説明する。ここでは、ユーザAがコンテンツCを編集することにより、コンテンツDを新たに作成する場面を例に説明する。なお、図26の処理フローは、図25の処理フローからの続きであるものとする。
例えばユーザAがクライアントAのアプリケーション51を用いてコンテンツCを編集することにより、新たなコンテンツDを作成する(図26:ステップS129)。なお、本ステップは、ユーザの動作であるため、図26では点線ブロックで示している。そして、アプリケーション51は、編集後のコンテンツDのデータを暗号/復号部52に出力し、暗号/復号部52は、アプリケーション51からコンテンツDのデータを受け取ると、コンテンツDを暗号化するための暗号鍵をライセンス管理部55に要求する。なお、この際、依存関係データ(すなわち、元のコンテンツがコンテンツCであることを示すデータ)もライセンス管理部55へ出力されるものとする。
そして、クライアントAのライセンス管理部55は、暗号/復号部52からの要求に応じて、コンテンツDの識別情報を生成するようコンテンツ識別情報生成部56に指示するとともに、コンテンツDを暗号化するための暗号鍵を生成するよう暗号鍵生成部57に指示する。そうすると、コンテンツ識別情報生成部56は、ライセンス管理部55からの指示に応じて、コンテンツDの識別情報を生成し、ライセンス管理部55に出力する。また、暗号鍵生成部57は、例えば乱数を発生させるなどして暗号鍵(以下、暗号鍵Dと呼ぶ)を生成し、ライセンス管理部55に出力する(ステップS131)。なお、コンテンツの識別情報を生成する処理は、基本的には上で説明した処理と同じであるが、コンテンツがいずれのグループにも所属しない場合には、無所属であることを表すデータ(例えば0など)をグループIDに設定する。
そして、ライセンス管理部55は、コンテンツ識別情報生成部56からコンテンツDの識別情報を受け取り、暗号鍵生成部57から暗号鍵Dを受け取る。そして、ライセンス管理部55は、コンテンツDの識別情報と暗号鍵Dとを暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55からコンテンツDの識別情報と暗号鍵Dとを受け取ると、暗号鍵Dを用いてコンテンツDを暗号化し、暗号化されたコンテンツDを識別情報と対応付けてファイルシステム53に格納する(ステップS133)。
また、ライセンス管理部55は、コンテンツDの元のコンテンツであるコンテンツCのライセンス・データをライセンスキャッシュ59から取得する。そして、コンテンツCのライセンス・データに含まれるアクセス権情報を、コンテンツDのアクセス権情報として設定する。そして、ライセンス管理部55は、ライセンス取得部58にコンテンツDの識別情報と暗号鍵Dとアクセス権情報と依存関係データとをサーバ3に送信させる。ライセンス取得部58は、ライセンス管理部55からの指示に応じて、コンテンツDの識別情報と暗号鍵Dとアクセス権情報と依存関係データをサーバ3に送信する(ステップS135)。
そして、サーバ3のライセンス配信部32は、クライアントAからコンテンツDの識別情報と暗号鍵Dとアクセス権情報と依存関係データとを受信する。そして、ライセンス配信部32は、コンテンツDの識別情報とアクセス権情報と依存関係データとをアクセス権管理DB35に格納し、コンテンツDの識別情報と暗号鍵Dとを鍵管理DB36に格納する(ステップS137)。
その後、例えばユーザAがクライアントAを操作して、暗号化されたコンテンツDをクライアントBに配信するよう指示する。そうすると、クライアントAの送受信部54は、ユーザAからの指示に応じて、ファイルシステム53に格納されている、暗号化されたコンテンツDとコンテンツDの識別情報とをクライアントBに配信する(ステップS139)。
そして、クライアントBの送受信部54は、クライアントAから、暗号化されたコンテンツDとコンテンツDの識別情報とを受信し、クライアントBのファイルシステム53に格納する(ステップS141)。その後、処理は端子A及びBを介して図27に移行する。
図27の説明に移行して、端子Aの後、例えばユーザBがクライアントBを操作して、コンテンツDの閲覧を指示する。そうすると、クライアントBの暗号/復号部52は、ユーザBからの指示に応じて、ファイルシステム53から、暗号化されたコンテンツDとコンテンツDの識別情報とを読み出し、コンテンツDの識別情報をライセンス管理部55に出力する。
そして、ライセンス管理部55は、暗号/復号部52からコンテンツDの識別情報を受け取ると、コンテンツDのライセンス・データがクライアントBのライセンスキャッシュ59に格納されているか判断する。ここでは、コンテンツDのライセンス・データがライセンスキャッシュ59に格納されていないものとする。そして、コンテンツDのライセンス・データがライセンスキャッシュ59に格納されていない場合には、ライセンス管理部55が、ライセンス取得部58に、コンテンツDの識別情報を含むライセンス要求を送信させる。そして、ライセンス取得部58は、ライセンス管理部55からの指示に応じて、コンテンツDの識別情報を含むライセンス要求をサーバ3に送信する(図27:ステップS143)。なお、本ステップより前の時点でユーザ認証が完了していなければ、本ステップの処理の前に、ライセンス管理部55が、認証部60に認証情報(例えばユーザID、パスワード)を送信させ、ユーザ認証を行うようにする。
そして、サーバ3のライセンス配信部32は、クライアントBからライセンス要求を受信する(ステップS145)。そして、ライセンス配信部32は、ライセンス要求に含まれる、コンテンツ識別情報を用いて、アクセス権管理DB35を検索し、要求に係るコンテンツDに対するアクセス権がユーザBに認められているかを確認する。ユーザBにアクセス権が認められていれば、すなわちライセンス認証に成功した場合、ライセンス配信部32は、アクセス権管理DB35と鍵管理DB36とに格納されているデータを用いて、要求に係るコンテンツDのライセンス・データを生成し、要求元のクライアントBに送信する(ステップS147)。ここでは、コンテンツDのライセンス・データを要求されているので、コンテンツDの識別情報と、アクセス権管理DB35においてコンテンツDの識別情報及びユーザBに対応付けて格納されているアクセス権情報、有効期限及び依存関係データと、鍵管理DB36においてコンテンツDの識別情報に対応付けて格納されている暗号鍵Dとを含むライセンス・データを生成し、クライアントBに送信する。この際、ライセンス・データに含まれる種別には、「コンテンツ」を設定する。なお、ユーザBにアクセス権が認められていない場合には、ライセンス配信部32は、その旨の通知をクライアントBに送信する。
そして、クライアントBのライセンス取得部58は、サーバ3からコンテンツDのライセンス・データを受信し、ライセンス管理部55に出力する。ライセンス管理部55は、受信したライセンス・データをライセンスキャッシュ59に格納する(ステップS149)。
そして、ライセンス管理部55は、ライセンスキャッシュ59に格納した、コンテンツDのライセンス・データを用いて、コンテンツDの閲覧権限があるか判断する(ステップS151)。コンテンツCの閲覧権限がなければ(ステップS151:Noルート)、処理を終了する(ステップS153)。この際、ライセンス管理部55は、閲覧権限がない旨の表示を表示装置に表示させる。
一方、コンテンツDの閲覧権限がある場合(ステップS151:Yesルート)、ライセンス管理部55は、ライセンスキャッシュ59に格納されている、コンテンツDのライセンス・データから暗号鍵Dを取得し、暗号/復号部52に出力する。
そして、暗号/復号部52は、ライセンス管理部55から暗号鍵Dを受け取ると、暗号鍵Dを用いて、暗号化されたコンテンツDを復号し、アプリケーション51に出力する(ステップS155)。これにより、ユーザBは、アプリケーション51を用いてコンテンツDを閲覧することができる。
なお、編集後のコンテンツに対するアクセス権は、編集前と同じ設定を引き継ぐようになっているため、ユーザの手間が省ける。
次に、サーバ3及びクライアント端末5が暗号鍵などを削除する処理について説明する。最初に、図28を用いて、サーバ3における処理について説明する。サーバ3は、定期的に又は任意のタイミング(例えばコンテンツが削除された場合など)にて、図28に示すような処理を実施する。まず、ライセンス配信部32は、ユーザによって削除されたコンテンツがあるか判断する(図28:ステップS161)。例えばユーザがクライアント端末5を操作してコンテンツを削除した場合に、クライアント端末5からサーバ3へ通知されるような構成であれば、その通知を受信したか否かで判断する。削除されたコンテンツがなければ(ステップS161:Noルート)、ステップS165の処理に移行する。
一方、削除されたコンテンツがある場合(ステップS161:Yesルート)、ライセンス配信部32は、鍵管理DB36及びアクセス権管理DB35から、削除されたコンテンツの暗号鍵及びアクセス権情報を削除する(ステップS163)。その後、ステップS165の処理に移行する。
そして、ライセンス配信部32は、有効期限が切れているアクセス権情報が、アクセス権管理DB35内にあるか判断する(ステップS165)。有効期限が切れているアクセス権情報が、アクセス権管理DB35内になければ(ステップS165:Noルート)、処理を終了する。
一方、有効期限が切れているアクセス権情報が、アクセス権管理DB35内にある場合(ステップS165:Yesルート)、ライセンス配信部32は、有効期限が切れているアクセス権情報に係るコンテンツを特定する。そして、ライセンス配信部32は、鍵管理DB36及びアクセス権管理DB35から、該当するコンテンツの暗号鍵及びアクセス権情報を削除する(ステップS167)。その後、処理を終了する。
次に、図29を用いて、クライアント端末5における処理について説明する。クライアント端末5は、定期的に又は任意のタイミング(例えばコンテンツが削除された場合など)にて、図29に示すような処理を実施する。まず、ライセンス管理部55は、ユーザがコンテンツを削除したか否か判断する(図29:ステップS171)。削除されたコンテンツがなければ(ステップS171:Noルート)、ステップS175の処理に移行する。
一方、削除されたコンテンツがある場合(ステップS171:Yesルート)、ライセンス管理部55は、ライセンスキャッシュ59から、削除されたコンテンツのライセンス・データを削除する(ステップS173)。その後、ステップS175の処理に移行する。
そして、ライセンス管理部55は、有効期限が切れているライセンス・データが、ライセンスキャッシュ59内にあるか判断する(ステップS175)。有効期限が切れているライセンス・データが、ライセンスキャッシュ59内になければ(ステップS175:Noルート)、ステップS179の処理に移行する。
一方、有効期限が切れているライセンス・データが、ライセンスキャッシュ59内にある場合(ステップS175:Yesルート)、ライセンス管理部55は、ライセンスキャッシュ59から、有効期限が切れているライセンス・データを削除する(ステップS177)。その後、ステップS179の処理に移行する。
そして、ライセンス管理部55は、前回認証してから一定期間以上経過しているか判断する(ステップS179)。例えば、認証部60により前回認証が行われた時刻を記憶装置などに記憶しておき、前回認証時の時刻と現在の時刻との差が、一定期間以上であるか否かで判断する。そして、前回認証してから一定期間以上経過していなければ(ステップS179:Noルート)、処理を終了する。
一方、前回認証してから一定期間以上経過していた場合(ステップS179:Yesルート)、ライセンス管理部55は、ライセンスキャッシュ59からライセンス・データを削除する(ステップS181)。その後、処理を終了する。
以上、図28及び図29に示すような処理を実施することにより、任意のタイミングで、サーバ3及びクライアント端末5から暗号鍵などの情報が削除される。従って、有効期限が切れた場合には他人はコンテンツにアクセスできなくなるので、コンテンツの情報漏洩を防止できる。
以上本技術の本実施の形態について説明したが、本技術はこれに限定されるものではない。例えば図5に示したサーバ3の機能ブロック図や図6に示したクライアント端末5の機能ブロック図は一例であって必ずしも実際のプログラムモジュール構成と一致しない場合もある。また、データ格納部の構成やデータ構造も同様に一例にすぎない。さらに、処理フローについても処理結果が変わらない限り、ステップの順番を入れ替えたり、並列実行することも可能である。
なお、上で述べたサーバ3及びクライアント端末5は、コンピュータ装置であって、図30に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
第1の態様に係るコンテンツ管理方法(図31)は、利用する際にライセンスが必要とされるコンテンツを管理するためのコンテンツ管理方法であって、暗号化されている特定のコンテンツの利用を開始すべき指示を受け付けた場合、グループの識別子と当該グループに属するコンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置において特定のコンテンツが属するグループの識別子に対応付けて格納されているライセンス・データから、グループ鍵を抽出する抽出ステップ(図31:S1001)と、抽出されたグループ鍵と特定のコンテンツの識別情報とを用いて、特定のコンテンツ用の暗号鍵を生成するステップ(図31:S1003)と、特定のコンテンツ用の暗号鍵を用いて、特定のコンテンツを復号するステップ(図31:S1005)とを含む。
このようにすれば、あるコンテンツについては、当該コンテンツが属するグループのライセンス・データがある場合のみ、当該コンテンツ専用の暗号鍵を生成することができ、当該コンテンツを復号することができる。すなわち、ライセンス・データがなければ、そのコンテンツ専用の暗号鍵を生成することはできないので、コンテンツの情報漏洩を防止できる。なお、ライセンス・データに含まれるグループ鍵とコンテンツの識別情報とから当該コンテンツ専用の暗号鍵が生成されるので、コンテンツ毎に異なった暗号鍵が生成されることになる。このようにコンテンツ毎に異なった暗号鍵にすることで、暗号鍵が盗まれにくくなる。また、同じグループに属するコンテンツの暗号鍵は、同じライセンス・データに含まれるグループ鍵を用いて生成されるので、コンテンツ毎にライセンス・データを取得する必要はない。すなわち、ライセンス管理のための処理負荷を抑えられる。
また、上で述べたコンテンツ管理方法が、特定のコンテンツを編集することにより作成された新たなコンテンツのデータの入力を受け付けた場合、記憶装置において特定のコンテンツが属するグループの識別子に対応付けて格納されているライセンス・データから、グループ鍵を抽出するステップと、抽出されたグループ鍵と新たなコンテンツの識別情報とを用いて、新たなコンテンツ用の暗号鍵を生成するステップと、新たなコンテンツ用の暗号鍵を用いて、新たなコンテンツを暗号化するステップとをさらに含むようにしてもよい。このようにすれば、編集後のコンテンツについて、編集前のコンテンツとは異なった暗号鍵を用いて暗号化することができる。なお、暗号鍵の生成には、同じグループ鍵を用いるようになっているので、例えばライセンス・サーバに、新たなライセンス・データを登録する必要はない。すなわち、ライセンス管理のための処理負荷を抑えられる。
さらに、上で述べた抽出ステップが、特定のコンテンツが属するグループの識別子を含むライセンス・データが記憶装置に格納されているか判断し、特定のコンテンツが属するグループの識別子を含むライセンス・データが記憶装置に格納されていない場合、特定のコンテンツが属するグループの識別子を含むライセンス要求を、ライセンス・データを管理するライセンス・サーバに送信するステップと、ライセンス要求に対するライセンス認証が成功した場合にライセンス・サーバから送信されるライセンス・データを受信し、記憶装置に格納するステップとを含むようにしてもよい。このように、記憶装置(例えばキャッシュなど)にライセンス・データが格納されていない場合のみ、ライセンス・サーバからライセンス・データを取得するようにすれば、ライセンス・サーバへのアクセスを最小限に抑えられる。すなわち、ライセンス・サーバの処理負荷を軽減できる。
第2の態様に係るコンテンツ管理方法(図32)は、利用する際にライセンスが必要とされるコンテンツを管理するためのコンテンツ管理方法であって、特定のグループに属する特定のコンテンツのデータの入力を受け付けた場合、グループの識別子と当該グループに属するコンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置において特定のグループの識別子に対応付けて格納されているライセンス・データから、グループ鍵を抽出する抽出ステップ(図32:S1101)と、抽出されたグループ鍵と特定のコンテンツの識別情報とを用いて、特定のコンテンツ用の暗号鍵を生成するステップ(図32:S1103)と、特定のコンテンツ用の暗号鍵を用いて、特定のコンテンツを暗号化するステップ(図32:S1105)とを含む。
このようにすれば、あるコンテンツについては、当該コンテンツが属するグループのライセンス・データに含まれるグループ鍵と当該コンテンツの識別情報とから当該コンテンツ専用の暗号鍵を生成し、生成した暗号鍵を用いて暗号化する。すなわち、コンテンツ毎に異なった暗号鍵を生成し、暗号化することができるようになる。
第3の態様に係るコンテンツ利用端末(図33)は、グループの識別子と当該グループに属するコンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置(図33:1501)と、暗号化されている特定のコンテンツの利用を開始すべき指示を受け付けた場合、記憶装置において特定のコンテンツが属するグループの識別子に対応付けて格納されているライセンス・データから、グループ鍵を抽出する抽出部(図33:1503)と、抽出されたグループ鍵と特定のコンテンツの識別情報とを用いて、特定のコンテンツ用の暗号鍵を生成する暗号鍵生成部(図33:1505)と、特定のコンテンツ用の暗号鍵を用いて、特定のコンテンツを復号する復号部(図33:1507)とを有する。
第4の態様に係るコンテンツ利用端末(図34)は、グループの識別子と当該グループに属するコンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置(図34:1601)と、特定のグループに属する特定のコンテンツのデータの入力を受け付けた場合、記憶装置において特定のグループの識別子に対応付けて格納されているライセンス・データから、グループ鍵を抽出する抽出部(図34:1603)と、抽出されたグループ鍵と特定のコンテンツの識別情報とを用いて、特定のコンテンツ用の暗号鍵を生成する暗号鍵生成部(図34:1605)と、特定のコンテンツ用の暗号鍵を用いて、特定のコンテンツを暗号化する暗号化部(図34:1607)とを有する。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
利用する際にライセンスが必要とされるコンテンツを管理するためのコンテンツ管理方法であって、
暗号化されている特定のコンテンツの利用を開始すべき指示を受け付けた場合、グループの識別子と当該グループに属する前記コンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置において前記特定のコンテンツが属する前記グループの識別子に対応付けて格納されている前記ライセンス・データから、前記グループ鍵を抽出する抽出ステップと、
抽出された前記グループ鍵と前記特定のコンテンツの識別情報とを用いて、前記特定のコンテンツ用の暗号鍵を生成するステップと、
前記特定のコンテンツ用の暗号鍵を用いて、前記特定のコンテンツを復号するステップと、
を含み、コンピュータにより実行されるコンテンツ管理方法。
(付記2)
前記特定のコンテンツを編集することにより作成された新たなコンテンツのデータの入力を受け付けた場合、前記記憶装置において前記特定のコンテンツが属する前記グループの識別子に対応付けて格納されている前記ライセンス・データから、前記グループ鍵を抽出するステップと、
抽出された前記グループ鍵と前記新たなコンテンツの識別情報とを用いて、前記新たなコンテンツ用の暗号鍵を生成するステップと、
前記新たなコンテンツ用の暗号鍵を用いて、前記新たなコンテンツを暗号化するステップと、
をさらに含む、付記1記載のコンテンツ管理方法。
(付記3)
前記抽出ステップが、
前記特定のコンテンツが属する前記グループの識別子を含む前記ライセンス・データが前記記憶装置に格納されているか判断し、前記特定のコンテンツが属する前記グループの識別子を含む前記ライセンス・データが前記記憶装置に格納されていない場合、前記特定のコンテンツが属する前記グループの識別子を含むライセンス要求を、前記ライセンス・データを管理するライセンス・サーバに送信するステップと、
前記ライセンス要求に対するライセンス認証が成功した場合に前記ライセンス・サーバから送信される前記ライセンス・データを受信し、前記記憶装置に格納するステップと、
を含む、付記1又は2記載のコンテンツ管理方法。
(付記4)
利用する際にライセンスが必要とされるコンテンツを管理するためのコンテンツ管理方法であって、
特定のグループに属する特定のコンテンツのデータの入力を受け付けた場合、グループの識別子と当該グループに属する前記コンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置において前記特定のグループの識別子に対応付けて格納されている前記ライセンス・データから、前記グループ鍵を抽出する抽出ステップと、
抽出された前記グループ鍵と前記特定のコンテンツの識別情報とを用いて、前記特定のコンテンツ用の暗号鍵を生成するステップと、
前記特定のコンテンツ用の暗号鍵を用いて、前記特定のコンテンツを暗号化するステップと、
を含み、コンピュータにより実行されるコンテンツ管理方法。
(付記5)
グループの識別子と当該グループに属するコンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置と、
暗号化されている特定のコンテンツの利用を開始すべき指示を受け付けた場合、前記記憶装置において前記特定のコンテンツが属する前記グループの識別子に対応付けて格納されている前記ライセンス・データから、前記グループ鍵を抽出する抽出部と、
抽出された前記グループ鍵と前記特定のコンテンツの識別情報とを用いて、前記特定のコンテンツ用の暗号鍵を生成する暗号鍵生成部と、
前記特定のコンテンツ用の暗号鍵を用いて、前記特定のコンテンツを復号する復号部と、
を有するコンテンツ利用端末。
(付記6)
グループの識別子と当該グループに属するコンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置と、
特定のグループに属する特定のコンテンツのデータの入力を受け付けた場合、前記記憶装置において前記特定のグループの識別子に対応付けて格納されている前記ライセンス・データから、前記グループ鍵を抽出する抽出部と、
抽出された前記グループ鍵と前記特定のコンテンツの識別情報とを用いて、前記特定のコンテンツ用の暗号鍵を生成する暗号鍵生成部と、
前記特定のコンテンツ用の暗号鍵を用いて、前記特定のコンテンツを暗号化する暗号化部と、
を有するコンテンツ利用端末。
(付記7)
利用する際にライセンスが必要とされるコンテンツを管理するためのコンテンツ管理プログラムであって、
暗号化されている特定のコンテンツの利用を開始すべき指示を受け付けた場合、グループの識別子と当該グループに属する前記コンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置において前記特定のコンテンツが属する前記グループの識別子に対応付けて格納されている前記ライセンス・データから、前記グループ鍵を抽出する抽出ステップと、
抽出された前記グループ鍵と前記特定のコンテンツの識別情報とを用いて、前記特定のコンテンツ用の暗号鍵を生成するステップと、
前記特定のコンテンツ用の暗号鍵を用いて、前記特定のコンテンツを復号するステップと、
をコンピュータに実行させるためのコンテンツ管理プログラム。
(付記8)
利用する際にライセンスが必要とされるコンテンツを管理するためのコンテンツ管理方法であって、
特定のグループに属する特定のコンテンツのデータの入力を受け付けた場合、グループの識別子と当該グループに属する前記コンテンツ用の暗号鍵を生成するために用いられるグループ鍵とを含むライセンス・データを格納するための記憶装置において前記特定のグループの識別子に対応付けて格納されている前記ライセンス・データから、前記グループ鍵を抽出する抽出ステップと、
抽出された前記グループ鍵と前記特定のコンテンツの識別情報とを用いて、前記特定のコンテンツ用の暗号鍵を生成するステップと、
前記特定のコンテンツ用の暗号鍵を用いて、前記特定のコンテンツを暗号化するステップと、
をコンピュータに実行させるためのコンテンツ管理プログラム。