説明

情報処理装置、および情報処理方法、並びにコンピュータ・プログラム

【課題】 特定のユーザ集合において、データの共有をセキュアに効率的に実行する構成を提供する。
【解決手段】 階層型木構造を適用した情報配信構成において、共有対象のデータをデータキーDKによって暗号化し、さらにデータキーDKを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットを生成して、例えばブロードキャストによってユーザに提供する。また、受信データについての編集データを、データキーDKで暗号化したデータと、オリジナルファイルに含まれる暗号文セットと、データ共有集合Sに関する情報のコピーを格納したファイルをブロードキャストすることで、オリジナルデータの共有集合Sと同様の集合Sにおいてのみ利用可能とした編集データの配信を可能とした。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに、詳細には、階層木構造を適用したブロードキャストエンクリプションシステムに従って配信される暗号データについて、セキュアに効率的にユーザ間で共有し、また編集データなどの再配信を行なうことを可能とした情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【0002】
昨今、音楽等のオーディオデータ、映画等の画像データ、ゲームプログラム、各種アプリケーションプログラム等、様々なソフトウエアデータ(以下、これらをコンテンツ(Content)と呼ぶ)が、インターネット等のネットワークを介して、あるいはCD(Compact Disc)、DVD(Digital Versatile Disk)、MD(Mini Disk)等の情報記録媒体(メディア)を介して流通している。これらの流通コンテンツは、ユーザの所有するPC(Personal Computer)やプレーヤ、あるいはゲーム機器等、様々な情報処理装置において再生され利用される。
【0003】
音楽データ、画像データ等、多くのコンテンツは、一般的にその作成者あるいは販売者に頒布権等が保有されている。従って、これらのコンテンツの配布に際しては、一定の利用制限、すなわち、正規なユーザに対してのみ、コンテンツの利用を許諾し、許可のない複製等が行われないようにする構成をとるのが一般的となっている。
【0004】
特に、近年においては、情報をデジタル的に記録する記録装置や記憶媒体が普及しつつある。このようなデジタル記録装置および記憶媒体によれば、例えば画像や音声を劣化させることなく記録、再生を繰り返すことが可能であり、不正コピーコンテンツのインターネットを介した配信や、CD−R等の記録媒体に対する不正コピーという問題が発生している。
【0005】
このようなコンテンツの不正利用を防止する1つの方式として、コンテンツあるいは暗号化コンテンツを復号するための鍵を暗号化して配布し、特定の正規ユーザまたは正規デバイスにおいてのみ配布データの復号を可能としたシステムがある。例えばブロードキャストエンクリプション(Broadcast Encryption)方式の一態様である階層型木構造を適用した構成が知られている。
【0006】
例えば2分木構造のような階層木の分岐点であるノードと、階層木の最下層に設定されたリーフの各々に異なる暗号鍵を対応付ける。階層木のノードやリーフに対応する暗号鍵を選択的に適用して暗号化情報を生成してブロードキャスト配信することで、リーフ対応のユーザ機器から選択された特定のユーザ機器のみが復号可能な暗号化データを配信することができる。例えば特許文献1は、この階層木構成を適用したブロードキャストエンクリプション方式を適用した暗号化データ配信構成を開示している。
【0007】
この階層木構成を適用したブロードキャストエンクリプション方式は、ある特定のデータ配信センタから複数のデータ受信先(ユーザ機器)に対してデータ送信する場合には、有効な方法であるが、例えば、ある1つのユーザ機器が受信したデータや編集データを再度、他の特定のユーザ機器に安全に、すなわちデータの漏洩を防止して送信しようとすると、データを送信しようとするユーザ機器は、当初、データ配信センタで生成した暗号化データと同様の暗号化データを生成することが必要となり、複数の鍵を適用したデータ量の多い暗号化データを生成して、送信することが必要となるという問題がある。
【特許文献1】特開2001−352322号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明は、このような状況に鑑みてなされたものであり、階層木構造を適用したブロードキャストエンクリプション方式を適用した暗号データの配信構成を適用し、ユーザ間で効率的にかつ安全に情報を共有し、さらに編集データなどの再配信を行なうことを可能とした情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の第1の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するステップと、
を有することを特徴とする情報処理方法にある。
【0010】
さらに、本発明の情報処理方法の一実施態様において、前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、暗号関数E、および暗号関数Eは公開された関数であることを特徴とする。
【0011】
さらに、本発明の情報処理方法の一実施態様において、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする。
【0012】
さらに、本発明の第2の側面は、
暗号化データの復号処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法にある。
【0013】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、平文データ取得ステップにおいて取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集ステップと、前記編集データ(Data2)に、さらに、前記(b),(c)の各データのコピーデータを含むファイルを生成するファイル生成ステップと、前記ファイル生成ステップにおいて生成したファイルを出力するステップとを有することを特徴とする。
【0014】
さらに、本発明の情報処理方法の一実施態様において、前記暗号文選択ステップは、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする。
【0015】
さらに、本発明の第3の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するデータ出力ステップと、
を有することを特徴とする情報処理方法にある。
【0016】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法において、前記データ生成ステップは、さらに、(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、を生成し、前記データ出力ステップは、前記データ生成ステップにおいて生成した上記(a)〜(d)の各データを出力するステップであることを特徴とする。
【0017】
さらに、本発明の情報処理方法の一実施態様において、前記階層木は、下位ノードのノード対応値に基づくRabin暗号を適用した暗号化処理(順方向演算)によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくRabin暗号を適用した復号処理(逆方向演算)によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする。
【0018】
さらに、本発明の情報処理方法の一実施態様において、前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、暗号関数E、および暗号関数Eは公開された関数であることを特徴とする。
【0019】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、法Mのサイズ|M|を定め、任意サイズの値をサイズ|M|のランダムな値にマッピングするマッピング関数H、および、サイズ|M|の値をサイズCのランダムな値にマッピングするマッピング関数Hc、これらのマッピング関数を定め、公開するステップを有することを特徴とする。
【0020】
さらに、本発明の情報処理方法の一実施態様において、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする。
【0021】
さらに、本発明の第4の側面は、
暗号化データの復号処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法にある。
【0022】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法において、前記データ入力ステップは、さらに、(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、を入力し、前記ノードキー生成ステップは、前記ノード付加変数(salt)を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする。
【0023】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、平文データ取得ステップにおいて取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集ステップと、前記編集データ(Data2)に、さらに、前記(b),(c),(d)の各データのコピーデータを含むファイルを生成するファイル生成ステップと、前記ファイル生成ステップにおいて生成したファイルを出力するステップと、を有することを特徴とする。
【0024】
さらに、本発明の情報処理方法の一実施態様において、前記暗号文選択ステップは、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする。
【0025】
さらに、本発明の第5の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記(a)〜(c)の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置にある。
【0026】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段の生成する前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、前記データ生成手段の適用する暗号関数E、および暗号関数Eは公開関数として設定されることを特徴とする。
【0027】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段は、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーDKを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする。
【0028】
さらに、本発明の第6の側面は、
暗号化データの復号処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力手段と、
前記(c)暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文を自己の保持するノードキーを適用して復号し、データキーDKを取得するデータキー取得手段と、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置にある。
【0029】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、平文データ取得手段において取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集手段と、前記編集データ(Data2)に、さらに、前記(b),(c)の各データのコピーデータを含むファイルを生成するファイル生成手段と、前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、を有することを特徴とする。
【0030】
さらに、本発明の情報処理装置の一実施態様において、前記暗号文選択手段は、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする。
【0031】
さらに、本発明の第7の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記(a)〜(c)の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置にある。
【0032】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置において、前記データ生成手段は、さらに、(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、を生成し、前記データ出力手段は、前記データ生成手段において生成した上記(a)〜(d)の各データを出力することを特徴とする。
【0033】
さらに、本発明の情報処理装置の一実施態様において、前記階層木は、下位ノードのノード対応値に基づくRabin暗号を適用した暗号化処理(順方向演算)によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくRabin暗号を適用した復号処理(逆方向演算)によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする。
【0034】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段の生成する前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、前記データ生成手段の適用する暗号関数E、および暗号関数Eは公開関数として設定されることを特徴とする。
【0035】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段は、さらに、法Mのサイズ|M|を定め、任意サイズの値をサイズ|M|のランダムな値にマッピングするマッピング関数H、および、サイズ|M|の値をサイズCのランダムな値にマッピングするマッピング関数Hc、これらのマッピング関数を決定する構成であることを特徴とする。
【0036】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段は、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーDKを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする。
【0037】
さらに、本発明の第8の側面は、
暗号化データの復号処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力手段と、
前記(c)暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成手段と、
前記暗号文選択手段において選択した暗号文を、前記ノードキー生成手段において生成したノードキーを適用して復号し、データキーDKを取得するデータキー取得手段と、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置にある。
【0038】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置において、前記データ入力手段は、さらに、(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、を入力し、前記ノードキー生成手段は、前記ノード付加変数(salt)を適用して、選択した暗号文に適用されたノードキーを生成することを特徴とする。
【0039】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、平文データ取得手段において取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集手段と、前記編集データ(Data2)に、さらに、前記(b),(c),(d)の各データのコピーデータを含むファイルを生成するファイル生成手段と、前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、を有することを特徴とする。
【0040】
さらに、本発明の情報処理装置の一実施態様において、前記暗号文選択手段は、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする。
【0041】
さらに、本発明の第9の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【0042】
さらに、本発明の第10の側面は、
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【0043】
さらに、本発明の第11の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【0044】
さらに、本発明のコンピュータ・プログラムの一実施態様において、前記コンピュータ・プログラムおいて、前記データ生成ステップは、さらに、(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、を生成し、前記データ出力ステップは、前記データ生成ステップにおいて生成した上記(a)〜(d)の各データを出力するステップであることを特徴とする。
【0045】
さらに、本発明の第12の側面は、
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【0046】
さらに、本発明のコンピュータ・プログラムの一実施態様において、前記コンピュータ・プログラムにおいて、前記データ入力ステップは、さらに、(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、を入力し、前記ノードキー生成ステップは、前記ノード付加変数(salt)を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする。
【0047】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、CDやFD、MOなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【0048】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0049】
本発明の構成によれば、ブロードキャストエンクリプション(Broadcast Encryption)方式の一態様である階層型木構造を適用した情報配信構成において、特定の選択されたユーザ(受信機)の集合においてのみ復号可能としたデータを生成し、提供することが可能となり、特定のユーザの集合におけるデータ共有をセキュアに効率的に実行することができる。具体的には、共有対象のデータをデータキーDKによって暗号化し、さらにデータキーDKを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットを生成して、例えばブロードキャストによってユーザに提供する。
【0050】
さらに、本発明の構成によれば、共有データを受信した受信機において、データを編集して生成した編集データについても、オリジナルデータの共有集合Sにおいてのみ利用可能とした形態で、再配信することができる。具体的には、編集データをデータキーDKで暗号化した暗号化データを格納したファイルを生成し、オリジナルファイルに含まれるデータキーDKを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットと、データ共有集合Sに関する情報をコピーして、編集データの暗号化データを格納したファイルに格納してこのファイルを、例えばブロードキャストすることで、オリジナルデータの共有集合Sと同様の集合Sにおいてのみ利用可能とした形態で、編集データを再配信することができる。
【発明を実施するための最良の形態】
【0051】
以下、図面を参照しながら本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【0052】
なお、説明は、以下の項目に従って行なう。
1.階層型木構造を適用した暗号データ配信処理の基本構成
2.情報処理装置の構成
3.暗号化データの共有処理
(3.1)セットアップ
(3.2)ファイル生成・配付
(3.3)ファイル利用
4.Rabin Treeを適用した処理構成
(4.1)Rabin Treeの構成について
(4.2)Rabin Treeを適用した暗号化データの共有処理
(4.2.1)セットアップ
(4.2.2)ファイル生成・配付
(4.2.3)ファイル利用
【0053】
[1.階層型木構造を適用した暗号データ配信処理の基本構成]
まず、階層型木構造を適用した暗号データ配信処理の基本構成について、図を参照して説明する。まず既存の階層型木構造を適用したブロードキャストエンクリプション(Broadcast Encryption)方式として知られているComplete Subtree(CS)方式の概要について説明する。
【0054】
図1に示す階層型木構造は2分木構造を用いており、その最下層がリーフ(葉)と呼ばれ、頂点、各分岐部およびリーフを含む部分をノードと称する。なお、頂点をルート、あるいはルートノードと呼ぶ。図1に示す2分木階層型木構造において、各リーフに受信機を割り当てる(図1におけるu1〜u16)。図1は、受信機数N=16の例である。また、木の各ノード(節)を用いて、「そのノードを頂点とする部分木のリーフ(葉)に割り当てられた受信機からなる集合」を表す。図1におけるノードi101は、受信機u5とu6からなる集合を表す。
【0055】
そして、図1に示す2分木の各構成ノードに鍵(ノードキー)が定義される。各受信機には、各受信機が割り当てられているリーフ(葉)から木のルート(頂点)に至るパス上のノードに割り当てられたノードキーが与えられ、受信機はこれらのノードキーを安全なメモリに保持する。木の定義やノードキーの定義、受信機の割り当てやノードキーの配布などは、Trusted Center(TC)と呼ばれる信頼される管理センタが行なう。
【0056】
図2に示すように、階層木には16台の受信機u1〜u16が割り当てられ、ノードは1〜31の31個、存在する。受信機u4には、ノード1,2,4,9,19に割り当てられた5個のノードキーが与えられる。すなわち、全受信機数をNとした場合には、各受信機はlogN+1個のノードキーを保持することになる。
【0057】
図3を用いて、このセッティングを用いて秘密情報(たとえば、暗号化されたコンテンツを復号するためのコンテンツキー)をどのようにリボークされない受信機に送信するかについて説明する。ここでは、管理センタ(TC)が秘密情報の送信者になるとする。いま、受信機u2,u11,u12がリボークされる受信機とする。すなわち、受信機u2,u11,u12を不正な機器として排除(リボーク)し、それ以外の受信機においてのみ安全に情報を受領、すなわち同報配信される暗号文に基づく復号を行なうことを可能とする。
【0058】
管理センタ(TC)が秘密情報の送信を行なう場合、リボーク受信機u2,u11,u12が割り当てられているリーフ(葉)から木のルートに至るパス上のノードに割り当てられたノードキーを暗号鍵として使用せず、暗号文のセットを生成して同報送信する。
【0059】
リボーク受信機u2,u11,u12が割り当てられているリーフ(葉)から木のルートに至るパス上のリーフまたはノードに割り当てられたノードキーを使用すると、これらは、リボークすべき受信機が持つキーであるため、リボーク機器において秘密情報を入手できてしまう。従って、これらのキーを用いずに暗号文のセットを生成して同報送信する。
【0060】
リボーク受信機u2,u11,u12が割り当てられているリーフ(葉)から木のルートに至るパス上のノードおよびパスを木から除外すると、1つ以上の部分木が残る。例えば、ノード5を頂点とする部分木、あるいはノード12を頂点とする部分木などである。
【0061】
秘密情報の送信者は、それぞれの部分木の頂点に最も近いノード、すなわち、図3に示す例では、ノード5,7,9,12,16に割り当てられたノードキーを用いて秘密情報を暗号化した暗号文のセットを送信する。例えば送信秘密情報を暗号化コンテンツの復号に適用するコンテンツキーKcであるとし、ノード5,7,9,12,16に割り当てられたノードキーをNK5,NK7,NK9,NK12,NK16とすると、秘密情報の送信者は、
E(NK5,Kc),E(NK7,Kc),E(NK9,Kc),E(NK12,Kc),E(NK16,Kc)
の暗号文セットを生成して、ネットワーク配信あるいは記録媒体に格納して提供する。なお、E(A,B)はデータBを鍵Aで暗号化したデータを意味する。
【0062】
上記暗号文セットは、リボーク受信機u2,u11,u12のみが復号することができず、その他の受信機では復号可能である。このような暗号文セットを生成し送信することで、効率的で安全な秘密情報の伝送が行える。
【0063】
受信機は、伝送された暗号文のうち、自分が復号できるもの、すなわち、自身が割り当てられたリーフ(葉)からルートに至るまでのパス上のノードに対応するノードキーを用いて暗号化されたものを復号して秘密情報を得ることができる。上記の例では、受信機u4はノード9のノードキーを保持しているので、これを用いて暗号化された暗号文E(NK9,Kc)を復号することができる。このように、リボークされていない受信機が復号できる暗号文は受信した暗号文セット中に必ずひとつ存在する。
【0064】
[2.情報処理装置の構成]
次に、暗号化データの送信エンティティとしての管理センタ(TC)(送信機)と、暗号化データの受信エンティティであるユーザ(受信機)を構成する情報処理装置の構成例について説明する。図4は、情報処理装置の一例としてのブロック図である。
【0065】
図4に示す情報処理装置200は、コントローラ201、演算ユニット202、入出力インタフェース203、セキュア記憶部204、メイン記憶部205、ネットワークインタフェース206、メディアインタフェース207を備える。
【0066】
コントローラ201は、情報処理装置200の実行する処理全体をの制御を行なう。例えばコンピュータ・プログラムに従ったデータ処理を実行する制御部としての機能を有するCPUによって構成される。演算ユニット802は、例えば暗号鍵の生成、乱数生成、及び暗号処理のための専用の演算部および暗号処理部として機能する。
【0067】
入出力インタフェース203は、キーボード、マウス等の入力手段からのデータ入力や、外部出力装置に対するデータ出力に対応するインタフェースである。
【0068】
情報処理装置200が暗号文生成処理を実行する情報処理装置である場合、セキュア記憶部204は、例えば後述するセットアップフェイズにおいて生成するノードキー、各種IDなど、安全にまたは秘密に保持すべきデータを保存する。情報処理装置200が受信機としての情報処理装置である場合、セキュア記憶部204にはノードキーなどの暗号鍵などが格納される。
【0069】
メイン記憶部205は、例えばコントローラ201において実行するデータ処理プログラム、その他、一時記憶処理パラメータ、プログラム実行のためのワーク領域等に使用されるメモリ領域である。セキュア記憶部204及びメイン記憶部205は、例えばRAM、ROM等によって構成されるメモリである。ネットワークインタフェース206は、ネットワークを介したデータ送受信処理に対応するインタフェースである。メディアインタフェース207は、CD、DVD、MD等のメディアに対する読出/書込機能を提供する。
【0070】
[3.暗号化データの共有処理]
次に、暗号化データの送信エンティティとしての管理センタ(TC)(送信機)と、暗号化データの受信エンティティであるユーザ(受信機)とがデータファイルを共有する方法を説明する。データファイルの共有シーケンスは、次の3つの処理フェーズに区分される。
(1)セットアップ
(2)ファイル生成・配付
(3)ファイル利用
以下、これらの3つのフェーズにおける具体的な処理について、順次、説明する。
【0071】
(3.1.セットアップ)
セットアップ処理は、システムの立ち上げ時に1度だけ行う。これ以降の情報配信および受信と復号の処理は、送信すべき情報が生じるたびに行なわれる。例えば、新しいコンテンツを格納したDVDなどの情報記録媒体が配布される場合、あるいはネットワークを介して新しい情報が配信される場合など毎に実行される。なお、セットアップ処理は、実際に暗号文配信を実行するエンティティとは独立した管理センタ(TC)によって実行してもよいし、また、暗号文配信を実行するエンティティが実行してもよい。ここでは一例として、セットアップ処理を管理センタ(TC)が実行する例として説明する。
【0072】
a.ステップ1
管理センタ(TC)は、2分木でありN個の葉を持つ木を定義する。木中の各ノードについてk(k=1,2,...,2N−1)と、ノード対応の番号を設定する。ただし2分木における最上位ノードであるルートを1とし、以降を幅優先(breadth first order)で番号設定を行う。すなわち、図2、図3に示す1〜31のようなノード対応番号の設定を行なう。この処理により2分木中の各ノードに1〜2N−1のノード番号が設定される。さらに、受信機um(m=1,2,...,N)を木の各葉(リーフ)に割り当てる。
【0073】
b.ステップ2
管理センタ(TC)は、
配信データの暗号化に適用するデータ用暗号関数Eと、
暗号鍵の暗号化用に適用する鍵用暗号関数Eと、
を定めて公開する。
なお、データ用暗号関数Eと鍵用暗号関数Eとは同じ関数を適用してもよい。
次に、管理センタ(TC)は、ステップ1において定義した階層木の各ノードiに対応するノードキーNKを定める。具体的には、各ノードiに対応するCビットの乱数を発生し、この乱数Cを各ノードiのノードキーNKとする。なお、ここでCは、暗号関数Eの鍵のサイズである。
【0074】
c.ステップ3
管理センタ(TC)は、木の末端ノードとしての葉(リーフ)に対応して設定される受信機um(m=1,2,...,N)の各々に対して、受信機が割り当てられたリーフ(葉)からルートに至るパス上のノードに設定されたノードキーNKを与える。各リーフ(葉)に対応して設定される受信機um(m=1,2,...,N)の各々に対して、それぞれlogN+1個のノードキーが与えられる。
【0075】
例えば、図2に示す構成において、葉であるノード19に割り当てられた受信機u4には、logN+1=log16+1=5個のノードキーとして、ノード19からルートへのパス上のノードのノードキーとしての、
NK19、NK、NK、NK、NK
が与えられる。
受信機は、ノード対応値を漏洩がないように、秘密に保管する。
【0076】
上述したセットアップ処理のフローを図5に示す。図5のフローの各ステップについて説明する。まず、ステップS101において、管理センタ(TC)は、N個の葉を持つ2分木を定義する。2分木における最上位ノードであるルートを1とし、以降を幅優先(breadth first order)で番号設定を行う。すなわち、図2、3に示すようなノード対応番号1〜31の設定を行なう。さらに、受信機um(m=1,2,...,N)を木の各葉(リーフ)に割り当てる。
【0077】
次にステップS102において、管理センタ(TC)は、
配信データの暗号化に適用するデータ用暗号関数Eと、
暗号鍵の暗号化用に適用する鍵用暗号関数Eと、
を定めて公開する。
さらに、階層木の各ノードiに対応するノードキーNKを定める。
【0078】
次に、ステップS103において、管理センタ(TC)は、木の末端ノードとしての葉(リーフ)に対応して設定される受信機um(m=1,2,...,N)に対して、受信機が割り当てられたリーフ(葉)からルートに至るパス上のノードに設定されたノードキーNKを与える。各リーフ(葉)に対応して設定される受信機um(m=1,2,...,N)の各々に対して、それぞれlogN+1個のノードキーが与えられる。
【0079】
(3.2.ファイル生成・配布)
次に、暗号化データの送信エンティティとしての管理センタ(TC)(送信機)と、暗号化データの受信エンティティであるユーザ(受信機)とがデータファイルを共有するために実行するファイル生成および配布処理の詳細について説明する。この処理は、暗号化データの送信エンティティとしての管理センタ(TC)が実行する。
【0080】
まず、管理センタ(TC)は、情報(データ)共有するユーザ(受信機)の集合S⊆Nを定義する。
管理センタ(TC)は、CビットのランダムなデータキーDKを生成し、これを用いて、ユーザui∈Sと共有したい情報(データ)を暗号化する。例えばあるコンテンツデータを共有する場合、コンテンツは、データキーDKによって暗号化されて提供される。
【0081】
なお、本実施例では、ユーザおよびユーザが所有する受信機を共にuiと表す。ここで、Cは、前述したデータ用の暗号関数Eの鍵サイズである。本実施例では、管理センタ(TC)は、暗号化したデータをファイルに格納するものとする。
【0082】
次に、情報(データ)を共有するユーザ(受信機)の集合S⊆Nに含まれない排他対象のユーザをujとする。ujは、uj∈S\Nである。この排他対象のユーザujをリボークするものと仮定して、適用ノードキーを決定する。なお、ここでは、ノードキーは、上述のデータキーDK、すなわち、共有情報(例えばコンテンツ)の暗号化に適用する鍵であるデータキーDKの暗号化鍵として適用する。
【0083】
たとえば、図3に示したように、u1からu16の16台の受信機(16人のユーザ)から、u1,u11,u12の3台の受信機(3人のユーザ)を除いた13人のユーザが、情報(データ)を共有するユーザ(受信機)の集合Sを構成するのであれば、5,7,9,12,16のノードに対応する5つのノードキー(NK,NK,NK,NK12,NK16
をデータキーDKの暗号化鍵として適用する。
【0084】
そして、暗号化データとして、データキーDKで暗号化したコンテンツ等のデータ(Data)、すなわち、
(a)暗号化データ:E(DK,Data)、
を格納したファイルに、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(本例では、ユーザ(受信機)番号=u1,u3−u10,u13−u16)
(c)選択ノードキー(NK,NK,NK,NK12,NK16)でデータキーDKを暗号化した暗号文、すなわち、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
を追加して格納する。なお、これらの情報は、ファイルのヘッダに格納してもよい。
なお、Ea(X,Y)は、暗号関数Eaを適用してデータYを鍵Xを適用して暗号化したデータであることを示す。
【0085】
また、情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報は、上述のユーザ(受信機)番号=u1,u3−u10,u13−u16ではなく、暗号化に使用したノードキー(NK,NK,NK,NK12,NK16)を指定する情報で置き換えてもよい。この場合、上記例においては、5,7,9,12,16とノードキーの番号を列挙してもよいし、あるいは、表現木を適用した方法などが適用可能である。
【0086】
また、データキーDKを各ノードキーで暗号化した暗号文は、ノードキーの対応するノード番号の若い順に格納する。すなわち、上述の例では、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
の順に格納する。
【0087】
この構成を用いることにより、上述の例では、16人のユーザ(図2、図3のu1〜u16)の中で13人のユーザ(u1,u3〜u10,u13〜u16)と暗号化ファイルを共有しようとする場合に、5個の暗号文、すなわち、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
を、共有するデータの暗号化データ:E(DK,Data)を格納したファイルに格納すればよい。
【0088】
13人の個別鍵を適用してそれぞれの暗号化データを生成すると、13個の暗号化データを生成して配布することが必要であるが、上述の例では5個の暗号文のみで、13の異なるユーザにおいて共有することを可能とした暗号化データファイルを生成することができる。このように、本実施例の構成では、メッセージサイズ(通信量)を減らし,効率的なファイル共有が可能となる。
【0089】
図6にファイル生成・配布のフローを示す。処理手順について説明する。管理センタ(TC)は、ステップS201において、まずその情報を共有する受信機(ユーザ)を決定する。すなわち、情報(データ)を共有するユーザ(受信機)の集合Sを決定する。
【0090】
次に、ステップS202において、暗号化データの生成、すなわちデータキーDKを適用して、共有すべきデータ(Data)を暗号化し、暗号化データ:E(DK,Data)を生成する。
【0091】
次に、ステップS203において、暗号文の生成に適用するノードキー、すなわちデータキーDKをノードキーで暗号化した暗号文セットの生成に適用するノードキーを選択する。情報(データ)を共有するユーザ(受信機)の集合S⊆Nに含まれない排他対象のユーザをuj(uj∈S\N)として、この排他対象のユーザujをリボークするものと仮定して、適用ノードキーを決定する。ノードキーは、共有情報(例えばコンテンツ)の暗号化に適用する鍵であるデータキーDKの暗号化鍵として適用する。
【0092】
次に、ステップS204において、暗号文を受信する受信機において、復号可能な暗号文を選択するための索引データとしての使用ノードキー指定情報またはユーザ指定情報を生成する。これは、どのノードキーを選択したかを表すタグ情報や表現コードなどである。
【0093】
ステップS205において、暗号化データとして、データキーDKで暗号化したコンテンツ等のデータ(Data)、すなわち、
(a)暗号化データ:E(DK,Data)、
を格納したファイルに、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報
(c)選択ノードキーでデータキーDKを暗号化した暗号文、すなわち、
(NK,DK)など、
これらを格納したファイルを生成して、同報通信路を用いて送信する。あるいは情報記録媒体に格納して配布する。
【0094】
図7に特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置の機能構成を説明するブロック図を示す。セットアップ処理手段310は、先に図5のフローを参照して説明した処理を実行して、各ノードにノードキーを設定するとともに、各受信機に所定のノードキーを付与した階層木構成を構築する。
【0095】
データ生成手段320は、暗号化データ生成手段321、データ共有集合情報生成手段322、暗号文セット生成手段323を有する。
暗号化データ生成手段321は、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
データ共有集合情報生成手段322は、
(b)データ共有機器を識別可能とした集合Sの情報、
暗号文セット生成手段323は、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、データ共有機器に基づいて選択された選択ノードキーを適用してデータキーDKを暗号化して生成した暗号文セット、
これらのデータをそれぞれ生成する。
【0096】
暗号化データ生成手段321は、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)を生成し、暗号文セット生成手段323は、データキーDKを、データ共有機器に基づいて決定される選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)を生成する。すなわち、データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用してデータキーDKを暗号化して暗号文セットの生成処理を行なう。データ出力手段330は、データ生成手段320の生成したデータ(a)〜(c)をたとえばブロードキャスト出力する。
【0097】
(3.3.ファイル利用)
次に、情報を受信したユーザ側の受信機におけるファイルの利用処理について説明する。上述のファイル、すなわち、
(a)暗号化データ:E(DK,Data)、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報
(c)選択ノードキーでデータキーDKを暗号化した暗号文、
これらのデータを含むファイルは、同報配信により受信機に提供される。あるいは情報記録媒体に格納されて受信機に提供される。このファイルは、すべての受信機が受領可能であるが、情報(データ)を共有するユーザ(受信機)の集合S以外の受信機、すなわち、情報(データ)を共有するユーザ(受信機)の集合S⊆Nに含まれない排他対象のユーザをuj(uj∈S\N)は、選択ノードキーでデータキーDKを暗号化した暗号文の復号に適用するノードキーを得ることができないのでデータキーDKを得ることができない。
【0098】
送信されたファイルを受信したら、まず、ユーザ(受信機)uiは、自身が集合Sに含まれることを確認する。管理センタ(TC)が配布したファイルにおいて、集合Sが直接指定されていれば、ui∈Sを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Sに含まれていなければ、処理をそこで終了する。
【0099】
情報(データ)を共有するユーザ(受信機)の集合Sに含まれることを確認した受信機は、受領した暗号文(選択ノードキーでデータキーDKを暗号化した暗号文)のセットから自己が復号できる暗号文と、使用すべきノードキーを特定する。受領した暗号文のセットに含まれる暗号文の暗号化に用いられているノードキーの中には、自身が直接保持しているノードキーが含まれる。
【0100】
ファイルにノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードでそこに含まれるものが求めるノードキーであり、それに対応する順番の暗号文が復号すべき暗号文となる。集合Sが直接指定されている場合には、その情報から、管理センタ(TC)がどのノードキーを用いて暗号文を作成したかを求め、その情報に基づいて、上述のように、暗号化に利用されかつ自身が所有するノードキーを特定し、対応する暗号文を特定する。そして、そのノードキーで対応する暗号文を復号してデータキーDKを導出する。
【0101】
たとえば上記の例における具体的処理例について説明する。受信ファイルには、
(a)暗号化データ:E(DK,Data)、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(本例では、ユーザ(受信機)番号=u1,u3−u10,u13−u16)、
(c)選択ノードキー(NK,NK,NK,NK12,NK16)でデータキーDKを暗号化した暗号文、すなわち、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
これらのデータが含まれる。
【0102】
集合Sに含まれる一ユーザ(受信機)u9の処理について説明する。ユーザ(受信機)u9は、データキーDKの暗号化に用いられたノードキーNK12と、対応する暗号文E(NK12,DK)を特定し、この暗号文を、このノードキーNK12を用いて復号してデータキーDKを得る。
次に、暗号化データE(DK,Data)を、求めたデータキーDKを用いて復号することにより、平文データ(Data)を得る。
【0103】
なお、上述の処理例は、複数の選択されたユーザの集合Sと、管理センタ(TC)において情報を共有する処理例として説明したが、例えば、集合Sに含まれるユーザuiが復号によって取得したデータ(Data)を編集して、この編集データを集合S内のほかのユーザや管理センタ(TC)と共有したい場合、上述の処理において、管理センタ(TC)が実行したと同様の処理を、ユーザuiが編集データに対して再度実行して、送信することで編集データの共有が可能となる。
【0104】
この場合、ユーザが平文データを編集し編集データ(Data2)をデータキーDKで暗号化したデータ、すなわち、
(a)暗号化データE(DK,Data2)を含むファイルを作り、このファイルに、管理センタ(TC)から受信したオリジナルのファイルに含まれる情報、すなわち、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(例えば、ユーザ(受信機)番号=u1,u3−u10,u13−u16)、
(c)選択ノードキーでデータキーDKを暗号化した暗号文、
これらのデータをオリジナルファイルからコピーして、編集データの暗号化データを含むファイルに追加格納し、同報通信路を用いて送信する。
【0105】
この編集データを含むファイルを受信した集合S内のユーザおよび管理センタ(TC)は、上述のユーザuiが行ったのと同様にして選択ノードキーでデータキーDKを暗号化した暗号文を復号してデータキーDKを取得し、取得したデータキーDKを適用して、暗号化データE(DK,Data2)の復号処理を実行して平文編集データ(Data2)を得ることができる。なお、集合Sのユーザまたは管理センタ(TC)は、さらに編集データを、再度編集して、再編集データを同様に暗号化データとして再送信することが可能である。
【0106】
図8に示すフローチャートを参照して、ファイル利用のシーケンスについて説明する。まず、ステップS301において、ファイルを受信する。ファイルには、
(a)暗号化データ:E(DK,Data)、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(例えば、ユーザ(受信機)番号=u1,u3−u10,u13−u16)、
(c)選択ノードキー(NK,NK,NK,NK12,NK16)でデータキーDKを暗号化した暗号文、例えば、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
これらのデータが含まれる。
【0107】
ステップS302において、ユーザ(受信機)uiは、自身が集合Sに含まれることを確認する。管理センタ(TC)が配布したファイルにおいて、集合Sが直接指定されていれば、ui∈Sを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Sに含まれていなければ、処理をそこで終了する。
【0108】
情報(データ)を共有するユーザ(受信機)の集合Sに含まれることを確認した受信機は、ステップS303において、受領した暗号文(選択ノードキーでデータキーDKを暗号化した暗号文)のセットから自己が復号できる暗号文と、使用すべきノードキーを特定する。
【0109】
ステップS304において、所有するノードキーによって、対応する暗号文を復号してデータキーDKを取得する。ステップS305において、暗号化データE(DK,Data)を、求めたデータキーDKを用いて復号することにより、平文データ(Data)を得る。
【0110】
次に、図9に示すフローを参照して、復号して取得したデータ(Data)の編集によってデータ(Data2)を生成して、再送信する処理シーケンスについ手説明する。ステップS321において、復号処理によって取得したデータ(Data)を編集し、データ(Data2)を生成する。
【0111】
ステップS322において、データ(Data2)を、データキーDKによって暗号化し、暗号化データ:E(DK,Data2)を生成して、この暗号化データを格納したファイルを生成する。ステップS323において、オリジナルファイル、すなわち、編集前のデータ(Data)の暗号化データを格納したファイルに格納されていた集合Sの定義情報と、選択ノードキーによるデータキーDKの暗号化データである暗号文セットを、オリジナルファイルから取得して、これらをコピーして、編集データ格納ファイルに格納する。
【0112】
ステップS324において、生成ファイルを送信する。生成ファイルには、
(a)暗号化データ:E(DK,Data2)、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(例えば、ユーザ(受信機)番号=u1,u3−u10,u13−u16)、
(c)選択ノードキー(NK,NK,NK,NK12,NK16)でデータキーDKを暗号化した暗号文、例えば、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
これらのデータが含まれる。
【0113】
この編集データを含むファイルを受信した集合S内のユーザおよび管理センタ(TC)は、上述のユーザuiが行ったのと同様にして選択ノードキーでデータキーDKを暗号化した暗号文を復号してデータキーDKを取得し、取得したデータキーDKを適用して、暗号化データE(DK,Data2)の復号処理を実行して編集データ(Data2)を得る。
【0114】
図10に、暗号化データの復号処理を実行するユーザ機器としての受信機に相当する情報処理装置の機能構成を説明するブロック図を示す。データ入力手段351は、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力する。
【0115】
暗号文選択手段352は、上記(c)暗号文セットから、自己のメモリ353に格納されたノードキーによって復号可能な暗号文を選択する。階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する。ノードキー取得手段354は、暗号文選択手段352において選択した暗号文の復号に適用するノードキーをメモリ353から取得する。
【0116】
データキー取得手段355は、メモリ353に保持されたノードキーを適用して、暗号文選択手段352において選択した暗号文を復号し、データキーDKを取得する。平文データ取得手段356は、取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する。
【0117】
データ編集手段357は、平文データ取得手段356において取得した平文データ(Data)を編集し、編集データ(Data2)を生成し、ファイル生成手段358は、編集データ(Data2)に、さらに、前述の(b),(c)の各データのコピーデータを含むファイルを生成する。データ出力手段359は、ファイル生成手段358において生成したファイルを出力する。
【0118】
以上、説明したように、本実施例の構成では、ブロードキャストエンクリプション技術を利用して、データキーDKによって暗号化したデータを配信するとともに、木構造に配置したノードキーの中で複数のユーザが共有しているノードキーを用いてデータキーDKを暗号化して配布する構成とした。本構成により、情報を共有する各人の個別鍵を適用してそれぞれの暗号化データを生成して配信する構成に比較して、メッセージサイズ(通信量)を削減した効率のよい暗号化ファイル共有システムが構築される。
【0119】
具体的には、前述したように、図2、図3の木構造において、u1,u3〜u10,u12〜u16の13人において情報を共有しようとする場合、個別鍵を用いると、13個の暗号化データを生成して配布することが必要であるが、上述の例では5個のデータキーを暗号化した暗号文、すなわち、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
を生成して、配信するのみで、13の異なるユーザにおいて共有することがを可能となる。このように、本実施例の構成では、メッセージサイズ(通信量)を減らし,効率的なファイル共有が可能となる。
【0120】
さらに情報共有集合Sに含まれるユーザuiが復号して取得したデータを編集した後に,再度同じユーザ集合S内で、編集データを共有するためにファイルを暗号化して送信する場合にも、編集後のデータをデータキーDKで暗号化して、サラニオリジナルファイルに含まれる集合Sの定義情報と、選択ノードキーによるデータキーDKの暗号化データである暗号文セットをコピーして、編集データ格納ファイルに格納して送信することで、編集ファイルについての集合Sのメンバにおける共有も効率的で安全に行なうことができる。
【0121】
[4.Rabin Treeを適用した処理構成]
(4.1)Rabin Treeの構成について
次に、Rabin Treeを適用した処理構成について説明する。Rabin Treeも階層木を用いたデータ配信構成を実現するものである。Rabin Treeは受信機の保持すべき鍵情報の削減を実現した構成である。まず、Rabin Treeの構成の説明の前に、その基礎となるRSA暗号を用いた方式を説明する。この方式は、例えば、「2004年暗号と情報セキュリティシンポジウム予稿集、pp.189−194」、「2004年暗号と情報セキュリティシンポジウム予稿集、pp.195−199」において、野島らおよび尾形らが提案した方式である。
【0122】
この方式では、図11に示すように、例えばRSA暗号の順方向置換(f)と逆方向置換(f−1)を用いる。RSA暗号の法をM、公開指数をe、秘密指数をdとすると、法:Mと、公開指数:eとを知っていれば行えるのが順方向置換(f)、秘密指数:dを知らないと実行困難であるのが逆方向置換(f−1)である。
【0123】
RSA暗号についての詳細は、たとえば、A.J.Menezes,P.C.van Oorschot and S.A.Vanstone著,"Handbook of Applied Cryptography,"CRC Press,1996に紹介されている。
【0124】
RSA暗号を用いた方式では、管理センタ(TC)のみが秘密指数:dを秘密に保持し、法:Mと、公開指数:eとは各受信機に公開する。管理センタ(TC)は、
秘密の値:K∈Z
を定め、これをルートの鍵NKとする。すなわち、
NK=Kとする。なお、K∈Zは、Kが、群Z(すなわち,群Z={0,1,...,M−1}の要素中,逆元を持つものからなる群)の元であることを意味する。
【0125】
ルート以外のノードl(エル)の鍵は、その親ノードの鍵、
【数1】

と、そのノードの番号lから、下式、
【数2】

に従って算出する。
上記式において、Hは任意のサイズの入力をZの要素にマッピングする公開関数である。
【0126】
このように、親ノードの鍵から子ノードの鍵を求めることは、秘密指数:dを知る管理センタ(TC)のみが行えるが、逆に子ノードの鍵NKを知っている受信機は、公開されている法:Mと、公開指数:eと公開関数:Hとを用いて、下式、
【数3】

により親ノードの鍵(ノードキー)、
【数4】

を導出することができる。
【0127】
次に、一方向木として設定されるRabin Treeについて説明する。なお、「Rabin Tree」とは、一般的な用語ではなく本発明の説明のために用いる言葉である。N個の葉を持つ完全2分木に対し、ルートを1、それ以降のノードを上位、左から2,3,...,2N−1と幅優先で番号付けし、下記の手順に従って、Rabin Treeを構成する。
【0128】
前述のRSA暗号を適用した構成と同様、2つの大きな素数の積Mを管理センタ(TC)が定め、公開する。管理センタ(TC)は、
秘密の値:Y∈Z
を定め、これを頂点(ノード1)に対応する値NVとする。なお、Y∈Zは、Yが、群Zの元であることを意味する。
【0129】
頂点以外のノードl(エル)(l=2,3,・・・,2N−1)に対応する値NVは、そのノードの番号lと親ノードに対応するノード対応値、
【数5】

を用いてを求める。
【0130】
まず、下式によって、tmpを定義する。
【数6】

【0131】
上記式によって定義される値tmpが、前述した2つの大きな素数の積Mを法とする平方剰余になるような最小の非負整数saltを見つける。saltは、ノードl(エル)に対応して設定されるノード付加変数である。
【0132】
なお、上記式において、l‖saltは、lとsaltとの連結を表し、Hは、任意のサイズの入力を前述した2つの大きな素数の積Mのサイズ|M|にマッピングする公開関数である。このような関数の例として、任意の長さの入力に対し160ビットの出力を出す縮約関数としてのSHA−1ハッシュ関数を用いて、|M|−160ビットの0と、SHA−1にlを入力したときの出力をビット連結した|M|ビットの値をH(l)として用いることが挙げられる。なお、縮約関数としてのSHA−1については、例えば、A.J.Menezes,P.C.van Oorschot and S.A.Vanstone著,"Handbook of Applied Cryptography,"CRC Press,1996に紹介されている。
【0133】
ここで、ある数KがMを法とする平方剰余であるということは、下式、
modM=K
が成立する数aが存在することをいい、これを、
K∈QR
として表す。ある数KがK∈QRを満たすかどうかは、Mの素因数p,qを知っていれば、下式、
【数7】

上記両式を満たすかどうかにより判別できる。なお、上記式において、(a/p)はルジャンドル(Legendre)記号である。
すなわち、上記両式を満たした場合、またその場合のみ、KがK∈QRを満たす。
【0134】
さらに、Mの素因数p,qを知っているものは、
modM=K
なる数aを求めることもできる。その方法は、たとえば、岡本龍明、山本博資著、「現代暗号」、産業図書の114ページに記されている。
【0135】
逆に、
K∈QRであるとき、
modM=K
なる数aを求めることは、Mの素因数p,qを知らないものには困難となる。実際、これはMを素因数分解することと等価であることが証明されている。
【0136】
上記のようにして、
tmp∈QR
となる最小の非負整数saltを見つけたら、
tmp1/2modM
を計算し、この解として得られる4つの数のうちのいずれかを、ノードl(エル)に対応する値、すなわち、ノードl(エル)のノード対応値NVとする。
【0137】
このようにして、ルートの値NVから、その子ノード2,3のノード対応値NV,NVを定め、これを繰り返してNV2N−1まですべてのノードの値(ノード対応値)を決定する。
【0138】
このようにして定められた各ノードl(エル)のノード対応値NV(l=2,3,・・・,2N−1)は、下式、
【数8】

・・・(数式1)
の関係を満たす。すなわち、あるノードの値であるノード対応値NVとノード付加変数saltからその親ノードのノード対応値、
【数9】

を求めることは、関数:Hおよび、法:Mが公開されているため容易である。
【0139】
葉がN個である2分木のRabin Treeを構成するアルゴリズムの例を下記に示す。このアルゴリズムの入力は、
[入力]
2分木を構成する葉(リーフ)の数:Nと、
法Mのサイズ:|M|
|M|ビット出力のマッピング関数H
であり、このアルゴリズムの出力は、
[出力]
2N−1個の|M|ビットの数(ノード対応値):NV,NV,・・・,NV2N−1と、
2N−2個の数(ノード付加変数):salt,salt,・・・,salt2N−1である。
【0140】
上記の[入力]に基づいて、上記の[出力]を得るアルゴリズムは以下のようになる。
1.サイズ|M|/2の2つの大きな素数を定め、その積Mを計算する。
2.ルートノードのノード対応値としての値NV∈Zをランダムに選択する。
3.l(エル)をカウンタとして2から2N−1まで1ずつ増加させながら下記a,bの処理を行う。
a.下記式、
【数10】

・・・(数式2)
が、Mを法とする平方剰余になるような最小の非負整数saltを見つける。
b.tmp1/2modMを求め、4つの解のうちのいずれかを、ノードl(エル)のノード対応値NVと定める。
4.2N−1個の|M|ビットの数(ノード対応値):NV,NV,・・・,NV2N−1と、2N−2個の数(ノード付加変数):salt,salt,・・・,salt2N−1
を出力して終了する。
【0141】
出力値NVがRabin Treeのノードl(エル)のノード対応値となる。なお、葉(リーフ)の数がNの完全2分木のノード総数は2N−1であり、上記出力によって、すべてのノードのノード対応値が出力される。
【0142】
図12に、上記アルゴリズムのフローを示す。フローの各ステップについて説明する。ステップS401において、2分木を構成する葉(リーフ)の数Nと、法Mのサイズ|M|、および|M|ビット出力のマッピング関数Hを入力する。
【0143】
ステップS402において、サイズ|M|/2の2つの大きな素数を定め、その積Mを計算し、ルートノードのノード対応値としての値NV∈Zをランダムに選択する。ステップS403において、値:lの初期設定として、l=2とする設定を行なう。
【0144】
ステップS404において、上記した数式2において定義されるtmpがMを法とする平方剰余になるような最小の非負整数saltを見つける。これをノード付加変数とする。
ステップS405において、tmp1/2modMを求め、4つの解のうちのいずれかを、ノードl(エル)のノード対応値NVと定める。
【0145】
ステップS406において、l=2N−1であるか否かを判定し、l=2N−1でない場合は、ステップS407に進み、lを1つインクリメントして、ステップS404,S405の処理を実行する。ステップS407において、l=2N−1と判定されるまで、ステップS404,S405を繰り返し実行して、ステップS407において、l=2N−1と判定されると、ステップS408において、2N−1個の|M|ビットの数(ノード対応値):NV,NV,・・・,NV2N−1と、2N−2個の数(ノード付加変数):salt,salt,・・・,salt2N−1を出力して終了する。
【0146】
上記処理によって各ノードのノード対応値NVを定めたRabin Treeの構成を図13に示す。上記の処理によって定めたノード対応値NVにより構成された木は、あるノードのノード対応値NVおよびノード付加変数saltからその親ノードのノード対応値、
【数11】

を求めることは容易だが、その逆は困難なものとなる。
【0147】
図13において、関数fに沿って示されている直線矢印は、下位ノードのノード対応値NVを入力として関数fを適用することで、上位ノードのノード対応値が求められることを示している。関数fは、順方向演算(modM上の2乗算)Fを用いた演算である。あるノード(子ノード)の親ノードのノード対応値は、子ノードのノード対応値NVおよびsaltからその公開された関数:Hおよび、法:Mを適用して、前述の数式1に従って算出することができる。
【0148】
図13において、関数f−1に沿って示されている直線矢印は、上位ノードのノード対応値を入力として関数f−1を摘用することで、下位ノードのノード対応値が求められることを示している。関数f−1は、逆方向演算(modM上の1/2乗算)F−1を用いた演算である。上位ノードのノード対応値から子ノードのノード対応値を求めるには、秘密情報p,q(Mの素因数)を知ることが必要であり、管理センタ(TC)のみが行える。
【0149】
このようにノード対応値NVは下位から上位の一方向については、公開された関数:Hおよび、法:Mを適用して、前述の数式1に従って算出することができるが、逆方向は困難である一方向木が生成される。このような設定を持つノード対応値NVにより構成された一方向木をRabin Treeと呼ぶ。これはRabin暗号が、暗号化(順方向演算)にmodM上の自乗算、復号(逆方向演算)にmodM上のルート(1/2乗)演算を用いているためである。
【0150】
すなわち、一方向木としてのRabin Treeのノードに設定されるノード対応値は以下のような設定を持つ。すなわち、下位ノードのノード対応値に基づくRabin暗号を適用した暗号化処理(順方向演算)によって上位ノードのノード対応値が算出され、上位ノードのノード対応値に基づくRabin暗号を適用した復号処理(逆方向演算)によって下位ノードのノード対応値が算出される構成である。本構成により、下位から上位のノード対応値の算出は公開された関数:Hおよび、法:Mを適用して、前述の数式1に従って算出することができるが、上位から下位のノード対応値の算出は公開された関数:Hおよび、法:Mのみでは算出が困難であり、秘密情報p,q(Mの素因数)を知る管理センタ(TC)のみが算出できる。なお、Rabin暗号については、たとえば上述のA.J.Menezes,P.C.van Oorschot and S.A.Vanstone著,"Handbook of Applied Cryptography,"CRC Press,1996のpp.292−294に詳しい説明がある。
【0151】
上記のように構成したRabin Treeにおいて、階層木の各ノードに対しノードキーNKを定めるが、これは上記で定めたノード対応値NVを用いて算出可能な値とする。すなわち、ノードl(エル)のノードキーNKは、
NK=Hc(NV
とする。なお、関数Hcは、サイズ|M|の値を、サイズCのランダムな値にマップするハッシュ関数である。たとえばCが160bitの場合、任意のサイズの入力に対し160bitの値を出力する関数としては上記のSHA−1があり、また、Cが128bitの場合、任意のサイズの入力に対し128bitの値を出力する関数としては、MD5などが知られており、これらの関数を適用することができる。なお、MD5についても、上述のA.J.Menezes,P.C.van Oorschot and S.A.Vanstone著,"Handbook of Applied Cryptography,"CRC Press,1996に詳しい説明がある。
【0152】
ノードキーはセッションキーなど受信機に送信すべき情報の暗号化に用いられるため、このサイズCの決め方は、そこに用いる暗号アルゴリズムの鍵のサイズとすればよい。たとえば暗号アルゴリズムとして128bit鍵のAES(Advanced Encryption Standard FIPS197)を用いる場合には、Cを128bitとすればよい。
【0153】
また、このRabin TreeのN個の葉を、それぞれ左からleaf,leaf,・・・・,leafと番号づけ(つまり、左端のleafのノード番号はNであるため、leafのノード番号はN−1+iとなる)、leafに受信機uiを割り当てる。受信機uiには、leafの葉(ノード)に対応する値NVN−1+iと、leafからルートへ至るパス上のノードのlogN個のノード付加変数saltを与える。
【0154】
図14に示したように受信機を割り当てた場合、葉であるノード19に割り当てられた受信機u4には、ノード19のノード対応値NV19と、ノード19からルートへのパス上のノードのノード付加変数であるsalt19,salt,salt,saltを与える。
【0155】
このような設定とすることにより、受信機u4は与えられたノード対応値:NV19と、ノード19からルートへのパス上のノードのノード付加変数:salt19,salt,salt,saltを用いて、ノード19からルートへのパス上の全てのノードの値、すなわちノード対応値NVを求めることができる。またそれぞれのノードのノードキーNKは、前述したように、ノード対応値NVから算出、すなわち、
NK=Hc(NV
によって算出することができる。
【0156】
図14に示す受信機割り当て構成において、葉であるノード19に割り当てられた受信機u4には、ノード19のノード対応値NV19と、ノード19からルートへのパス上のノードのノード付加変数であるsalt19,salt,salt,saltが与えられる。受信機u4における上位ノード(ノード番号=1,2,4,9)のノード対応値NVの算出と、ノードキーNKの算出は、以下の処理手順で実行されることになる。
【0157】
(a1)ノード19のノード対応値NV19から上位ノード9のノード対応値NVの算出、
NV=((NV19 XOR H(19||salt19))modM
(a2)ノード9のノード対応値NVから上位ノード4のノード対応値NVの算出、
NV=((NV XOR H(9||salt))modM
(a3)ノード4のノード対応値NVから上位ノード2のノード対応値NVの算出、
NV=((NV XOR H(4||salt))modM
(a4)ノード2のノード対応値NVから上位ノード1のノード対応値NVの算出、
NV=((NV XOR H(2||salt))modM
上記式に基づく演算により、下位ノードのノード対応値から上位ノードのノード対応値を算出する。
【0158】
さらに、各ノードのノード対応値からノードキーが以下の式によって算出できる。
(b1)ノード19のノード対応値NV19からノード19のノードキーNK19を算出、
NK19=Hc(NV19
(b2)ノード9のノード対応値NVからノード9のノードキーNKを算出、
NK=Hc(NV
(b3)ノード4のノード対応値NVからノード4のノードキーNKを算出、
NK=Hc(NV
(b4)ノード2のノード対応値NVからノード2のノードキーNKを算出、
NK=Hc(NV
(b5)ノード1のノード対応値NVからノード1のノードキーNKを算出、
NK=Hc(NV
【0159】
ところで、受信機u4は、ノード対応値NV19は秘密に保管しておく必要があるが、各ノード付加変数saltは秘密にしておく必要はない。このため,全受信機がすべてのsaltを保持しておくような構成としてもよい.
【0160】
ここで、各ノード付加変数saltのサイズを考える。ある数が法Mの下で平方剰余になる確率は約1/4であるため、saltとして4つの値を試すと、tmpが平方剰余となるようなものが平均1つはあると期待されるので、ノード付加変数saltを表すのに必要なサイズは2ビットであると期待される。
【0161】
一方、4つの値のいずれも平方剰余にならない場合もある。たとえばノード付加変数saltとしてL個の値を試したとき、tmpがいずれも平方剰余でない(平方非剰余である)確率は3/4であるため、L=4の場合には、3/4≒42.2%の確率でいずれのtmpも平方剰余にならない。しかし、ノード付加変数saltとして8ビットの値を考え、256個の数を試したとすれば、いずれのtmpも平方剰余にならない確率は3256/4256≒1.0×10−32と非常に小さくなり、たとえ葉(リーフ)の数Nとして、230≒10や、240≒1012などの大きな数を考えたとしても、いずれかのノードにおいてtmpが平方剰余になるようなノード付加変数saltが見つからない確率は無視できるほど小さいものとなる。
【0162】
(4.2)Rabin Treeを適用した暗号化データの共有処理
次に、上述した処理によって2分木の各ノードlに対応するノード対応値NVを設定した木構造であるRabin Treeを用いて、データを共有する処理について説明する。ここでは、暗号化データの送信エンティティとしての管理センタ(TC)(送信機)と、暗号化データの受信エンティティであるユーザ(受信機)とがデータファイルを共有する方法を説明する。データファイルの共有シーケンスは、次の3つの処理フェーズに区分される。
(1)セットアップ
(2)ファイル生成・配付
(3)ファイル利用
以下、これらの3つのフェーズにおける具体的な処理について、順次、説明する。
【0163】
(4.2.1)セットアップ
セットアップ処理は、システムの立ち上げ時に1度だけ行う。これ以降の情報配信および受信と復号の処理は、送信すべき情報が生じるたびに行なわれる。例えば、新しいコンテンツを格納したDVDなどの情報記録媒体が配布される場合、あるいはネットワークを介して新しい情報が配信される場合など毎に実行される。なお、セットアップ処理は、実際に暗号文配信を実行するエンティティとは独立した管理センタ(TC)によって実行してもよいし、また、暗号文配信を実行するエンティティが実行してもよい。ここでは一例として、セットアップ処理を管理センタ(TC)が実行する例として説明する。
【0164】
a.ステップ1
管理センタ(TC)は、2分木でありN個の葉を持つ木を定義する。木中の各ノードについてk(k=1,2,...,2N−1)と、ノード対応の番号を設定する。ただし2分木における最上位ノードであるルートを1とし、以降を幅優先(breadth first order)で番号設定を行う。すなわち、図14に示す1〜31のようなノード対応番号の設定を行なう。この処理により2分木中の各ノードに1〜2N−1のノード番号が設定される。さらに、受信機um(m=1,2,...,N)を木の各葉(リーフ)に割り当てる。
【0165】
b.ステップ2
管理センタ(TC)は、
配信データの暗号化に適用するデータ用暗号関数Eと、
暗号鍵の暗号化用に適用する鍵用暗号関数Eと、
を定めて公開する。
なお、データ用暗号関数Eと鍵用暗号関数Eとは同じ関数を適用してもよい。
【0166】
さらに、管理センタ(TC)は、
法Mのサイズ|M|を定め、任意サイズの値をサイズ|M|のランダムな値にマッピングするマッピング関数Hを定める。マッピング関数Hは公開する。また、サイズ|M|の値をサイズCのランダムな値にマッピングする関数Hcを定め、公開する。なお、ここでCは、暗号関数Eの鍵のサイズである。
次に、木構造の葉(リーフ)数N、法Mのサイズ|M|、マッピング関数Hを入力として用い、図12のフローを参照して説明したアルゴリズムに従って、N個の葉を持つ2分木のRabin Treeを作成する。すなわち、ノード1からノード2N−1に対応するノード対応値、NV,NV,・・・,NV2N−1と、ノード2からノード2N−1に対応する2N−2個の数(ノード付加変数):salt,salt,・・・,salt2N−1を定める。
管理センタ(TC)は、ステップ1で作成したノードlに対応する鍵、すなわち、木のノードl(エル)のノードキーNKをノード対応値NVからの算出値、すなわち、
NK=Hc(NV
として設定する。
【0167】
c.ステップ3
管理センタ(TC)は、木の末端ノードとしての葉(リーフ)に対応して設定される受信機um(m=1,2,...,N)に対し、以下のルールに基づいてノードキーを与える。受信機は図14に示すように木の葉(リーフ)、すなわちノード番号16〜31に割り当てられている。図14に示す例では、受信機は、ノード番号16〜31に割り当てられたu1〜u16の16個設定される。
【0168】
なお、受信機umが割り当てられた葉からルートへのパスをパスm[path−m]と表す。また、パスm[path−m]上のノードの集合をパスノードm[PathNodes−m]と表す。
【0169】
図14の例では、
PathNodes−1={1,2,4,8,16}
PathNodes−4={1,2,4,9,19}
PathNodes−11={1,3,6,13,26}
となる。
【0170】
図14に示すノード1,2,4,8,16を結ぶラインが、受信機u1のパス1[path−1]であり、PathNodes−1={1,2,4,8,16}によって構成される。受信機u4のパス4[path−4]は、図14に示すノード1,2,4,9,19を結ぶラインであり、PathNodes−4={1,2,4,9,19}によって構成される。
【0171】
管理センタ(TC)は、各受信機umに対し、
(a)受信機umの割り当てられた葉ノード(リーフ)のノード対応値NV
(b)受信機umのパス上のルートを除くパスノード対応のsalt値
を付与する。
【0172】
図14に示す構成において、葉であるノード19に割り当てられた受信機u4には、ノード19のノード対応値NV19と、ノード19からルートへのパス上のノードのノード付加変数であるsalt19,salt,salt,saltを与える。
【0173】
すなわち、受信機uiには、leafの葉(ノード)に対応するノード対応値NVN−1+iと、leafからルートへ至るパス上のノードのlogN個のノード付加変数saltを与える。
【0174】
受信機は、ノード対応値を漏洩がないように、秘密に保管する。なお、ノード付加変数saltは公開値としてよい値であり、秘密に保持することは必要ではない。
【0175】
上述したセットアップ処理のフローを図15に示す。図15のフローの各ステップについて説明する。
【0176】
まず、ステップS501において、管理センタ(TC)は、N個の葉を持つ2分木を定義する。2分木における最上位ノードであるルートを1とし、以降を幅優先(breadth first order)で番号設定を行う。すなわち、図13、10に示すようなノード対応番号1〜31の設定を行なう。さらに、受信機um(m=1,2,...,N)を木の各葉(リーフ)に割り当てる。
【0177】
次にステップS502において、管理センタ(TC)は、
配信データの暗号化に適用するデータ用暗号関数Eと、
暗号鍵の暗号化用に適用する鍵用暗号関数Eと、
を定めて公開する。
さらに、管理センタ(TC)は、
法Mのサイズ|M|を定め、任意サイズの値をサイズ|M|のランダムな値にマッピングするマッピング関数Hを定める。マッピング関数Hは公開する。また、サイズ|M|の値をサイズCのランダムな値にマッピングする関数Hcを定め、公開する。さらに、木構造の葉(リーフ)数N、法Mのサイズ|M|、マッピング関数Hを入力として用い、図12のフローを参照して説明したアルゴリズムに従って、N個の葉を持つ2分木のRabin Treeを作成する。すなわち、ノード1からノード2N−1に対応するノード対応値、NV,NV,・・・,NV2N−1と、ノード2からノード2N−1に対応する2N−2個の数(ノード付加変数):salt,salt,・・・,salt2N−1を定める。さらに、管理センタ(TC)は、ステップ1で作成したノードlに対応する鍵、すなわち、木のノードl(エル)のノードキーNKをノード対応値NVからの算出値、すなわち、
NK=Hc(NV
として設定する。
【0178】
次に、ステップS503において、管理センタ(TC)は、木の末端ノードとしての葉(リーフ)に対応して設定される受信機um(m=1,2,...,N)に対し、前述したデータ、すなわち、
(a)受信機umの割り当てられた葉ノード(リーフ)のノード対応値NV
(b)受信機umのパス上のルートを除くパスノード対応のsalt値
を付与する。
【0179】
なお、上述の
(b)受信機umのパス上のルートを除くパスノード対応のsalt値
についての受信機に対する配付は、このセットアップ処理時ではなく、次のファイル生成、配付処理において実行してもよい。
【0180】
(4.2.2.ファイル生成・配布)
次に、暗号化データの送信エンティティとしての管理センタ(TC)(送信機)と、暗号化データの受信エンティティであるユーザ(受信機)とがデータファイルを共有するために実行するファイル生成および配布処理の詳細について説明する。この処理は、暗号化データの送信エンティティとしての管理センタ(TC)が実行する。
【0181】
まず、管理センタ(TC)は、情報(データ)共有するユーザ(受信機)の集合S⊆Nを定義する。
管理センタ(TC)は、CビットのランダムなデータキーDKを生成し、これを用いて、ユーザui∈Sと共有したい情報(データ)を暗号化する。例えばあるコンテンツデータを共有する場合、コンテンツは、データキーDKによって暗号化されて提供される。
【0182】
なお、本実施例では、ユーザおよびユーザが所有する受信機を共にuiと表す。ここで、Cは、前述したデータ用の暗号関数Eの鍵サイズである。本実施例では、管理センタ(TC)は、暗号化したデータをファイルに格納するものとする。
【0183】
次に、情報(データ)を共有するユーザ(受信機)の集合S⊆Nに含まれない排他対象のユーザをujとする。ujは、uj∈S\Nである。この排他対象のユーザujをリボークするものと仮定して、適用ノードキーを決定する。なお、ここでは、ノードキーは、上述のデータキーDK、すなわち、共有情報(例えばコンテンツ)の暗号化に適用する鍵であるデータキーDKの暗号化鍵として適用する。
【0184】
たとえば、図16に示すように、u1からu16の16台の受信機(16人のユーザ)から、u1,u11,u12の3台の受信機(3人のユーザ)を除いた13人のユーザが、情報(データ)を共有するユーザ(受信機)の集合Sを構成するのであれば、5,7,9,12,16のノードに対応する5つのノードキー(NK,NK,NK,NK12,NK16
をデータキーDKの暗号化鍵として適用する。
【0185】
そして、暗号化データとして、データキーDKで暗号化したコンテンツ等のデータ(Data)、すなわち、
(a)暗号化データ:E(DK,Data)、
を格納したファイルに、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(本例では、ユーザ(受信機)番号=u1,u3−u10,u13−u16)
(c)選択ノードキー(NK,NK,NK,NK12,NK16)でデータキーDKを暗号化した暗号文、すなわち、図16に示す例では、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
(d)選択したノードキーに対応するノードの子孫ノードのノード付加変数(salt)。すなわち、図16に示す例では、(salt10,salt11,salt14,salt15,salt18,salt19,salt20,salt21,salt22,salt23,salt24,salt25,salt28,salt29,salt30,salt31
を追加して格納する。なお、これらの情報は、ファイルのヘッダに格納してもよい。なお、Ea(X,Y)は、暗号関数Eaを適用してデータYを鍵Xを適用して暗号化したデータであることを示す。
【0186】
また、情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報は、上述のユーザ(受信機)番号=u1,u3−u10,u13−u16ではなく、暗号化に使用したノードキー(NK,NK,NK,NK12,NK16)を指定する情報で置き換えてもよい。この場合、上記例においては、5,7,9,12,16とノードキーの番号を列挙してもよいし、あるいは、表現木を適用した方法などが適用可能である。
【0187】
また、データキーDKを各ノードキーで暗号化した暗号文は、ノードキーの対応するノード番号の若い順に格納する。すなわち、上述の例では、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
の順に格納する。
同様に、ノード付加変数(salt)は、対応するノード番号の若い順に格納する。
【0188】
この構成を用いることにより、上述の例では、16人のユーザ(図16のu1〜u16)の中で13人のユーザ(u1,u3〜u10,u13〜u16)と暗号化ファイルを共有しようとする場合に、
5個の暗号文、すなわち、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)と、
16個のノード付加変数(salt)、すなわち、
(salt10,salt11,salt14,salt15,salt18,salt19,salt20,salt21,salt22,salt23,salt24,salt25,salt28,salt29,salt30,salt31
を、共有するデータの暗号化データ:E(DK,Data)を格納したファイルに格納すればよい。
【0189】
ここで、1つの暗号文のサイズ16バイト、1つのノード付加変数(salt)のサイズを1バイトとすると、5個の暗号文、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)と、
16個のノード付加変数(salt)、
(salt10,salt11,salt14,salt15,salt18,salt19,salt20,salt21,salt22,salt23,salt24,salt25,salt28,salt29,salt30,salt31
これら、全体のデータサイズは、96バイトとなる。
【0190】
一方、13人の個別鍵を適用してそれぞれの暗号化データを生成すると、13個の暗号化データを生成して配布することが必要であるが、1つの暗号文のサイズ16バイトとした場合、
13×16=208バイト
のサイズが必要となり、上述の例で必要とするデータサイズ96バイトに比較して大きなサイズが必要となる。
【0191】
このように、本実施例では、5個の暗号文と16個のノード付加変数のみで、13の異なるユーザにおいて共有することを可能とした暗号化データファイルを生成することができ、本実施例の構成では、メッセージサイズ(通信量)を減らし,効率的なファイル共有が可能となる。
【0192】
図17にファイル生成・配布のフローを示す。処理手順について説明する。管理センタ(TC)は、ステップS601において、まずその情報を共有する受信機(ユーザ)を決定する。すなわち、情報(データ)を共有するユーザ(受信機)の集合Sを決定する。
【0193】
次に、ステップS602において、暗号化データの生成、すなわちデータキーDKを適用して、共有すべきデータ(Data)を暗号化し、暗号化データ:E(DK,Data)を生成する。
【0194】
次に、ステップS603において、暗号文の生成に適用するノードキー、すなわちデータキーDKをノードキーで暗号化した暗号文セットの生成に適用するノードキーを選択する。情報(データ)を共有するユーザ(受信機)の集合S⊆Nに含まれない排他対象のユーザをuj(uj∈S\N)として、この排他対象のユーザujをリボークするものと仮定して、適用ノードキーを決定する。ノードキーは、共有情報(例えばコンテンツ)の暗号化に適用する鍵であるデータキーDKの暗号化鍵として適用する。
【0195】
次に、ステップS604において、暗号文を受信する受信機において、復号可能な暗号文を選択するための索引データとしての使用ノードキー指定情報またはユーザ指定情報を生成する。これは、どのノードキーを選択したかを表すタグ情報や表現コードなどである。
【0196】
ステップS605において、暗号化データとして、データキーDKで暗号化したコンテンツ等のデータ(Data)、すなわち、
(a)暗号化データ:E(DK,Data)、
を格納したファイルに、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報
(c)選択ノードキーでデータキーDKを暗号化した暗号文、すなわち、
(NK,DK)など、
(d)さらに、選択したノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
これらを格納したファイルを生成して、同報通信路を用いて送信する。あるいは情報記録媒体に格納して配布する。
【0197】
図18に特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置の機能構成を説明するブロック図を示す。セットアップ処理手段410は、先に図15のフローを参照して説明した処理を実行して、各ノードに対応するノード対応値(NV)、およびノード付加変数(salt)を設定するとともに、各受信機に所定のノード対応値、ノード付加変数を付与した階層木構成を構築する。
【0198】
データ生成手段420は、暗号化データ生成手段421、データ共有集合情報生成手段422、暗号文セット生成手段423、ノード付加変数(salt)生成(選択)手段424を有する。
暗号化データ生成手段421は、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
データ共有集合情報生成手段422は、
(b)データ共有機器を識別可能とした集合Sの情報、
暗号文セット生成手段423は、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、データ共有機器に基づいて選択された選択ノードキーを適用してデータキーDKを暗号化して生成した暗号文セット、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
これらのデータをそれぞれ生成または選択する。データ出力手段430は、データ生成手段420の生成したデータ(a)〜(d)をたとえばブロードキャスト出力する。
【0199】
なお、ここで利用する階層木は、下位ノードのノード対応値に基づくRabin暗号を適用した暗号化処理(順方向演算)によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくRabin暗号を適用した復号処理(逆方向演算)によって下位ノードのノード対応値が算出可能な設定を有する一方向木である。
【0200】
また、データ生成手段420の暗号化データ生成手段421の生成する暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、暗号文セット生成手段423の生成する暗号文セットは、データキーDKを、選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)である。階層木構成において、データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用してデータキーDKを暗号化して暗号文セットの生成処理を行なう。
【0201】
また、データ生成手段420は、さらに、法Mのサイズ|M|を定め、任意サイズの値をサイズ|M|のランダムな値にマッピングするマッピング関数H、および、サイズ|M|の値をサイズCのランダムな値にマッピングするマッピング関数Hc、これらのマッピング関数を決定する処理も実行する。
【0202】
(4.2.2.ファイル利用)
次に、情報を受信したユーザ側の受信機におけるファイルの利用処理について説明する。上述のファイル、すなわち、
(a)暗号化データ:E(DK,Data)、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報
(c)選択ノードキーでデータキーDKを暗号化した暗号文、
(d)さらに、選択したノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
これらのデータを含むファイルは、同報配信により受信機に提供される。あるいは情報記録媒体に格納されて受信機に提供される。このファイルは、すべての受信機が受領可能であるが、情報(データ)を共有するユーザ(受信機)の集合S以外の受信機、すなわち、情報(データ)を共有するユーザ(受信機)の集合S⊆Nに含まれない排他対象のユーザをuj(uj∈S\N)は、選択ノードキーでデータキーDKを暗号化した暗号文の復号に適用するノードキーを得ることができないのでデータキーDKを得ることができない。
【0203】
送信されたファイルを受信したら、まず、ユーザ(受信機)uiは、自身が集合Sに含まれることを確認する。管理センタ(TC)が配布したファイルにおいて、集合Sが直接指定されていれば、ui∈Sを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Sに含まれていなければ、処理をそこで終了する。
【0204】
情報(データ)を共有するユーザ(受信機)の集合Sに含まれることを確認した受信機は、受領した暗号文(選択ノードキーでデータキーDKを暗号化した暗号文)のセットから自己が復号できる暗号文と、使用すべきノードキーを特定する。
【0205】
受領した暗号文のセットに含まれる暗号文の暗号化に用いられているノードキーの中には、自身が直接保持しているノード対応値NVと、保持またはファイルから取得できるsaltから導出できるノードキーが含まれる。情報(データ)を共有するユーザ(受信機)の集合Sに含まれる受信機は、ノード対応値NVと、saltから、暗号化に適用されたノードキーNKに対応するノード対応値NVを導出し、ノード対応値NVからノードキーNKを導出して、導出したノードキーを用いて暗号文を復号すれば秘密情報としてのデータキーDKを得ることができる。受信機が復号すべき暗号文を特定するためには、前述のノードキー指定情報を用いればよい。
【0206】
受信機umは、自身が割り当てられた葉l(エル)のノード対応値NVを保持している。もし、特定した復号すべき暗号文に適用されているノードキーが、自身のリーフ(葉)に対応するノードキーであれば、自身が所有するノード対応値(NV)をハッシュ関数HCに適用することで、ノードキーを下式、
NK=Hc(NV
によって算出することができる。
【0207】
一方、特定した暗号文に適用されたノードキーが、この葉(リーフ)に対応するノードキーでない場合は、保持またはファイルから取得するノード付加変数saltからlの親ノードのノード対応値、
【数12】

を、下式、
【数13】

により求め、さらにこれを繰り返すことにより、自己ノードlからルートまでのパス上の任意のノードkのノード対応値NVを導出する。そして、ノードkのノード対応値NVから、ノードkのノードキーNKを、
NK=Hc(NV
により導出する。導出したノードキーを適用して暗号文を復号する。
【0208】
具体的な例について図19を参照して説明する。今、受信機u4(ノード番号=19)が、情報(データ)を共有するユーザ(受信機)の集合Sに含まれる受信機であると仮定し、受信機u4の処理について考察する。暗号化に使われたノードキーには、受信機u4からルートに至るノード{1,2,4,9,19}に含まれるノード番号と一致するものが必ず含まれる。
【0209】
秘密情報としてのデータキー[DK]とすると、E(NK,DK),E(NK,DK)、E(NK,DK),E(NK,DK),E(NK19,DK)のいずれかを含む暗号文セットが、ネットワーク配信あるいは記録媒体に格納されて提供される。なお、E(A,B)はデータBを鍵Aで暗号化したデータを意味する。受信機u4は、受信暗号文セットから、この受信機u4からルートに至るパスノード={1,2,4,9,19}に含まれるノード番号と一致するものを検出する。
【0210】
ノードキーNK,NK,NK,NK,NK19のいずれが、暗号文の暗号化に適用されたノードキーであるかを判別した後、受信機u4は、判別されたノードキーを算出するため、自己の保持するノード対応値NVと、ノード付加変数salt、salt、salt、salt19を適用して、上位ノードのノード対応値を算出して、さらに算出したノード対応値からノードキーを算出する。算出手法は、前述したように、
NV=((NV19 XOR H(19||salt19))modM
NV=((NV XOR H(9||salt))modM
NV=((NV XOR H(4||salt))modM
NV=((NV XOR H(2||salt))modM
上記式に基づく演算により、下位ノードのノード対応値から上位ノードのノード対応値を算出する。
【0211】
さらに、各ノードのノード対応値からノードキーを、
NK19=Hc(NV19
NK=Hc(NV
NK=Hc(NV
NK=Hc(NV
NK=Hc(NV
の各式によって算出する。
【0212】
受信機u4は、受信機u4からルートに至るパスノード={1,2,4,9,19}に含まれるノードのノードキー:NK19,NK,NK,NK,NKのいずれかを適用して、暗号文セットに含まれる暗号文を復号して秘密情報としてのデータキーDKを得ることができる。
【0213】
例えば、上述した例におけるユーザ(受信機)u9の処理例について説明する。ユーザ(受信機)u9は、データキーDKの暗号化に用いられたノードキーNK12と、対応する暗号文E(NK12,DK)を特定する。ユーザ(受信機)u9は、ノード対応値NV24を所持しており、またノード付加変数salt24は、受信したファイルに格納されている。これらを用いて、ユーザ(受信機)u9は、ノードキーNK12を、下式に従って導出する。
NV12=((NV24 XOR H(24||salt24))modM
NK12=Hc(NV12
上記式に従って、ユーザ(受信機)u9は、ノードキーNK12を算出し、算出したノートキーを用いて、暗号文E(NK12,DK)を復号して秘密情報としてのデータキーDKを得ることができる。
【0214】
なお、上述の処理例は、複数の選択されたユーザの集合Sと、管理センタ(TC)において情報を共有する処理例として説明したが、例えば、集合Sに含まれるユーザuiが復号によって取得したデータ(Data)を編集して、この編集データを集合S内のほかのユーザや管理センタ(TC)と共有したい場合、上述の処理において、管理センタ(TC)が実行したと同様の処理を、ユーザuiが編集データに対して再度実行して、送信することで編集データの共有が可能となる。
【0215】
この場合、ユーザが平文データを編集し編集データ(Data2)をデータキーDKで暗号化したデータ、すなわち、
(a)暗号化データE(DK,Data2)を含むファイルを作り、このファイルに、管理センタ(TC)から受信したオリジナルのファイルに含まれる情報、すなわち、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(例えば、ユーザ(受信機)番号=u1,u3−u10,u13−u16)、
(c)選択ノードキーでデータキーDKを暗号化した暗号文、
(d)さらに、選択したノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
これらのデータをオリジナルファイルからコピーして、編集データの暗号化データを含むファイルに追加格納し、同報通信路を用いて送信する。
【0216】
この編集データを含むファイルを受信した集合S内のユーザおよび管理センタ(TC)は、上述のユーザuiが行ったのと同様にして選択ノードキーでデータキーDKを暗号化した暗号文を復号してデータキーDKを取得し、取得したデータキーDKを適用して、暗号化データE(DK,Data2)の復号処理を実行して平文編集データ(Data2)を得ることができる。なお、集合Sのユーザまたは管理センタ(TC)は、さらに編集データを、再度編集して、再編集データを同様に暗号化データとして再送信することが可能である。
【0217】
図20に示すフローチャートを参照して、ファイル利用のシーケンスについて説明する。まず、ステップS701において、ファイルを受信する。ファイルには、
(a)暗号化データ:E(DK,Data)、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(例えば、図16に示す例では、ユーザ(受信機)番号=u1,u3−u10,u13−u16)、
(c)選択ノードキー(NK,NK,NK,NK12,NK16)でデータキーDKを暗号化した暗号文、例えば、図16に示す例では、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
(d)選択したノードキーに対応するノードの子孫ノードのノード付加変数(salt)。すなわち、図16に示す例では、(salt10,salt11,salt14,salt15,salt18,salt19,salt20,salt21,salt22,salt23,salt24,salt25,salt28,salt29,salt30,salt31
これらのデータが含まれる。
【0218】
ステップS702において、ユーザ(受信機)uiは、自身が集合Sに含まれることを確認する。管理センタ(TC)が配布したファイルにおいて、集合Sが直接指定されていれば、ui∈Sを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Sに含まれていなければ、処理をそこで終了する。
【0219】
情報(データ)を共有するユーザ(受信機)の集合Sに含まれることを確認した受信機は、ステップS703において、受領した暗号文のセットに含まれる暗号文の暗号化に用いられているノードキーの中から、自身が直接保持しているノード対応値NV、保持またはファイルから取得可能なノード付加変数saltから導出可能なノード対応値に基づいて算出可能なノードキーによって暗号化された暗号文を抽出する。
【0220】
ステップS704において、暗号化に使用されたノードキーを、自己が保持するノード対応値NVと、ノード付加変数saltを適用して算出する。この算出は、前述の(数式1)によって上位ノード対応値を算出し、算出したノード対応値に基づいて、下式、
NK=Hc(NV
に従って、必要なノードキーNKを求める処理として実行される。
【0221】
暗号化に使われたノードキーが算出されると、ステップS705に進み、算出したノードキーを適用して暗号文を復号し、秘密情報としてのデータキーDKを取得する。次に、ステップS706において、暗号化データE(DK,Data)を、求めたデータキーDKを用いて復号することにより、平文データ(Data)を得る。
【0222】
次に、図21に示すフローを参照して、復号して取得したデータ(Data)の編集によってデータ(Data2)を生成して、再送信する処理シーケンスについ手説明する。ステップS721において、復号処理によって取得したデータ(Data)を編集し、データ(Data2)を生成する。
【0223】
ステップS722において、データ(Data2)を、データキーDKによって暗号化し、暗号化データ:E(DK,Data2)を生成して、この暗号化データを格納したファイルを生成する。ステップS723において、オリジナルファイル、すなわち、編集前のデータ(Data)の暗号化データを格納したファイルに格納されていた集合Sの定義情報と、選択ノードキーによるデータキーDKの暗号化データである暗号文セットと、ノード付加変数(salt)とをオリジナルファイルから取得して、これらをコピーして、編集データ格納ファイルに格納する。
【0224】
ステップS724において、生成ファイルを送信する。生成ファイルには、
(a)暗号化データ:E(DK,Data2)、
(b)情報(データ)を共有するユーザ(受信機)の集合Sを指定する情報(例えば、図16に示す例では、ユーザ(受信機)番号=u1,u3−u10,u13−u16)、
(c)選択ノードキー(NK,NK,NK,NK12,NK16)でデータキーDKを暗号化した暗号文、例えば、図16に示す例では、
(NK,DK)、E(NK,DK)、E(NK,DK)、E(NK12,DK)、E(NK16,DK)
(d)選択したノードキーに対応するノードの子孫ノードのノード付加変数(salt)。すなわち、図16に示す例では、(salt10,salt11,salt14,salt15,salt18,salt19,salt20,salt21,salt22,salt23,salt24,salt25,salt28,salt29,salt30,salt31
これらのデータが含まれる。
【0225】
この編集データを含むファイルを受信した集合S内のユーザおよび管理センタ(TC)は、上述のユーザuiが行ったのと同様にして、ノード対応値(NV)と、ノード付加変数(salt)を適用して生成したノードキー、データキーDKを暗号化した暗号文を復号してデータキーDKを取得し、取得したデータキーDKを適用して、暗号化データE(DK,Data2)の復号処理を実行して編集データ(Data2)を得る。
【0226】
図22に、暗号化データの復号処理を実行するユーザ機器としての受信機に相当する情報処理装置の機能構成を説明するブロック図を示す。
データ入力手段451は、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
上記(a)〜(d)の各データを入力する。
【0227】
暗号文選択手段452は、上述の(c)暗号文セットから、自己のメモリ453に保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する。自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する。ノードキー生成手段454は、暗号文選択手段452において選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成する。データキー取得手段455は、暗号文選択手段452において選択した暗号文を、ノードキー生成手段454において生成したノードキーを適用して復号し、データキーDKを取得する。平文データ取得手段456は、取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する。
【0228】
データ編集手段457は、平文データ取得手段456において取得した平文データ(Data)を編集し、編集データ(Data2)を生成し、ファイル生成手段458は、編集データ(Data2)に、さらに、前述の(b),(c),(d)の各データのコピーデータを含むファイルを生成する。データ出力手段459は、ファイル生成手段458において生成したファイルを出力する。
【0229】
以上、説明したように、本実施例の構成では、ブロードキャストエンクリプション技術を利用して、データキーDKによって暗号化したデータを配信するとともに、木構造に配置したノードキーの中で複数のユーザが共有しているノードキーを用いてデータキーDKを暗号化して配布する構成とした。本構成により、情報を共有する各人の個別鍵を適用してそれぞれの暗号化データを生成して配信する構成に比較して、メッセージサイズ(通信量)を削減した効率のよい暗号化ファイル共有システムが構築される。
【0230】
さらに情報共有集合Sに含まれるユーザuiが復号して取得したデータを編集した後に,再度同じユーザ集合S内で、編集データを共有するためにファイルを暗号化して送信する場合にも、編集後のデータをデータキーDKで暗号化して、サラニオリジナルファイルに含まれる集合Sの定義情報と、選択ノードキーによるデータキーDKの暗号化データである暗号文セットと、ノード付加変数(salt)をコピーして、編集データ格納ファイルに格納して送信することで、編集ファイルについての集合Sのメンバにおける共有も効率的で安全に行なうことができる。
【0231】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0232】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【0233】
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【0234】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0235】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0236】
以上、説明したように、本発明の構成によれば、ブロードキャストエンクリプション(Broadcast Encryption)方式の一態様である階層型木構造を適用した情報配信構成において、特定の選択されたユーザ(受信機)の集合においてのみ復号可能としたデータを生成し、提供することが可能となり、特定のユーザの集合におけるデータ共有をセキュアに効率的に実行することができる。具体的には、共有対象のデータをデータキーDKによって暗号化し、さらにデータキーDKを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットを生成して、例えばブロードキャストによってユーザに提供する。
【0237】
さらに、本発明の構成によれば、共有データを受信した受信機において、データを編集して生成した編集データについても、オリジナルデータの共有集合Sにおいてのみ利用可能とした形態で、再配信することができる。具体的には、編集データをデータキーDKで暗号化した暗号化データを格納したファイルを生成し、オリジナルファイルに含まれるデータキーDKを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットと、データ共有集合Sに関する情報をコピーして、編集データの暗号化データを格納したファイルに格納してこのファイルを、例えばブロードキャストすることで、オリジナルデータの共有集合Sと同様の集合Sにおいてのみ利用可能とした形態で、編集データを再配信することができる。
【図面の簡単な説明】
【0238】
【図1】ノードが2つに分岐する階層型木構造を説明する図である。
【図2】階層型木構造のリーフに対応して設定される受信機の持つノードキーについて説明する図である。
【図3】データ共有受信機のみに選択的にデータを提供する構成について説明する図である。
【図4】データ送信または受信を実行する情報処理装置の構成例について説明する図である。
【図5】階層型木構造を適用した暗号データ配信処理におけるセットアップ処理のフローを示す図である。
【図6】階層型木構造を適用した暗号データ配信処理情報配信処理の手順について説明するフロー図である。
【図7】階層型木構造を適用した暗号データ配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【図8】階層型木構造を適用した暗号データ配信処理におけるファイル利用のシーケンスについて説明するフローを示す図である。
【図9】階層型木構造を適用した暗号データ配信処理における編集データの再配信シーケンスについて説明するフローを示す図である。
【図10】階層型木構造を適用した暗号データの受信、復号、編修、再配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【図11】RSA暗号の順方向置換および逆方向置換を用いて定義される木構造について説明する図である。
【図12】本発明において適用する一方向置換木としてのRabin Treeの生成処理、ノード対応値、ノード付加変数の算出手順を説明するフロー図である。
【図13】本発明において適用する一方向置換木としてのRabin Treeの木構造について説明する図である。
【図14】Rabin Treeを適用した方式において、受信機に付与するデータを説明する図である。
【図15】Rabin Treeを適用した方式におけるセットアップ処理のフローを示す図である。
【図16】データ共有受信機のみに選択的にデータを提供する場合の適用ノードキーについて説明する図である。
【図17】Rabin Treeを適用した方式における情報配信処理の手順について説明するフロー図である。
【図18】Rabin Treeを適用した方式において、暗号データ配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【図19】Rabin Treeを適用した方式において、受信機に付与するデータを説明する図である。
【図20】Rabin Treeを適用した方式において、受信機における暗号文の復号処理手順を説明するフロー図である。
【図21】Rabin Treeを適用した方式において、編集データの再配信シーケンスについて説明するフローを示す図である。
【図22】Rabin Treeを適用した方式において、暗号データの受信、復号、編修、再配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【符号の説明】
【0239】
101 ノード
200 情報処理装置
201 コントローラ
202 演算ユニット
203 入出力インタフェース
204 セキュア記憶部
205 メイン記憶部
206 ネットワークインタフェース
207 メディアインタフェース
310 セットアップ手段
320 データ処理手段
321 暗号化データ生成手段
322 データ共有集合情報生成手段
323 暗号文セット生成手段
330 データ出力手段
351 データ入力手段
352 暗号文選択手段
353 メモリ
354 ノードキー取得手段
355 データキー取得手段
356 平文データ取得手段
357 データ編集手段
358 ファイル生成手段
359 データ出力手段
410 セットアップ手段
420 データ処理手段
421 暗号化データ生成手段
422 データ共有集合情報生成手段
423 暗号文セット生成手段
424 ノード付加変数生成(選択)手段
430 データ出力手段
451 データ入力手段
452 暗号文選択手段
453 メモリ
454 ノードキー生成手段
455 データキー取得手段
456 平文データ取得手段
457 データ編集手段
458 ファイル生成手段
459 データ出力手段

【特許請求の範囲】
【請求項1】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するステップと、
を有することを特徴とする情報処理方法。
【請求項2】
前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、
前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、
暗号関数E、および暗号関数Eは公開された関数であることを特徴とする請求項1に記載の情報処理方法。
【請求項3】
前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする請求項1に記載の情報処理方法。
【請求項4】
暗号化データの復号処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法。
【請求項5】
前記情報処理方法は、さらに、
平文データ取得ステップにおいて取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集ステップと、
前記編集データ(Data2)に、さらに、前記(b),(c)の各データのコピーデータを含むファイルを生成するファイル生成ステップと、
前記ファイル生成ステップにおいて生成したファイルを出力するステップと、
を有することを特徴とする請求項4に記載の情報処理方法。
【請求項6】
前記暗号文選択ステップは、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする請求項4に記載の情報処理方法。
【請求項7】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するデータ出力ステップと、
を有することを特徴とする情報処理方法。
【請求項8】
前記情報処理方法において、
前記データ生成ステップは、さらに、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
を生成し、
前記データ出力ステップは、
前記データ生成ステップにおいて生成した上記(a)〜(d)の各データを出力するステップであることを特徴とする請求項7に記載の情報処理方法。
【請求項9】
前記階層木は、下位ノードのノード対応値に基づくRabin暗号を適用した暗号化処理(順方向演算)によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくRabin暗号を適用した復号処理(逆方向演算)によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする請求項7に記載の情報処理方法。
【請求項10】
前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、
前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、
暗号関数E、および暗号関数Eは公開された関数であることを特徴とする請求項7に記載の情報処理方法。
【請求項11】
前記情報処理方法は、さらに、
法Mのサイズ|M|を定め、任意サイズの値をサイズ|M|のランダムな値にマッピングするマッピング関数H、および、
サイズ|M|の値をサイズCのランダムな値にマッピングするマッピング関数Hc、
これらのマッピング関数を定め、公開するステップを有することを特徴とする請求項7に記載の情報処理方法。
【請求項12】
前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする請求項7に記載の情報処理方法。
【請求項13】
暗号化データの復号処理を実行する情報処理方法であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法。
【請求項14】
前記情報処理方法において、
前記データ入力ステップは、さらに、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
を入力し、
前記ノードキー生成ステップは、
前記ノード付加変数(salt)を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする請求項13に記載の情報処理方法。
【請求項15】
前記情報処理方法は、さらに、
平文データ取得ステップにおいて取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集ステップと、
前記編集データ(Data2)に、さらに、前記(b),(c),(d)の各データのコピーデータを含むファイルを生成するファイル生成ステップと、
前記ファイル生成ステップにおいて生成したファイルを出力するステップと、
を有することを特徴とする請求項13に記載の情報処理方法。
【請求項16】
前記暗号文選択ステップは、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする請求項13に記載の情報処理方法。
【請求項17】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記(a)〜(c)の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置。
【請求項18】
前記データ生成手段の生成する前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、
前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、
前記データ生成手段の適用する暗号関数E、および暗号関数Eは公開関数として設定されることを特徴とする請求項17に記載の情報処理装置。
【請求項19】
前記データ生成手段は、
前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーDKを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする請求項17に記載の情報処理装置。
【請求項20】
暗号化データの復号処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力手段と、
前記(c)暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文を自己の保持するノードキーを適用して復号し、データキーDKを取得するデータキー取得手段と、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置。
【請求項21】
前記情報処理装置は、さらに、
平文データ取得手段において取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集手段と、
前記編集データ(Data2)に、さらに、前記(b),(c)の各データのコピーデータを含むファイルを生成するファイル生成手段と、
前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、
を有することを特徴とする請求項20に記載の情報処理装置。
【請求項22】
前記暗号文選択手段は、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする請求項20に記載の情報処理装置。
【請求項23】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記(a)〜(c)の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置。
【請求項24】
前記情報処理装置において、
前記データ生成手段は、さらに、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
を生成し、
前記データ出力手段は、
前記データ生成手段において生成した上記(a)〜(d)の各データを出力することを特徴とする請求項23に記載の情報処理装置。
【請求項25】
前記階層木は、下位ノードのノード対応値に基づくRabin暗号を適用した暗号化処理(順方向演算)によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくRabin暗号を適用した復号処理(逆方向演算)によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする請求項23に記載の情報処理装置。
【請求項26】
前記データ生成手段の生成する前記暗号化データは、共有対象のデータ(Data)を、データキーDKを適用して暗号関数Eによって暗号化した暗号化データE(DK,Data)であり、
前記暗号文セットは、前記データキーDKを、前記選択ノードキー(NKn)を適用して暗号関数Eによって暗号化した暗号化データE(NKn,DK)であり、
前記データ生成手段の適用する暗号関数E、および暗号関数Eは公開関数として設定されることを特徴とする請求項23に記載の情報処理装置。
【請求項27】
前記データ生成手段は、さらに、
法Mのサイズ|M|を定め、任意サイズの値をサイズ|M|のランダムな値にマッピングするマッピング関数H、および、
サイズ|M|の値をサイズCのランダムな値にマッピングするマッピング関数Hc、
これらのマッピング関数を決定する構成であることを特徴とする請求項23に記載の情報処理装置。
【請求項28】
前記データ生成手段は、
前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーDKを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする請求項23に記載の情報処理装置。
【請求項29】
暗号化データの復号処理を実行する情報処理装置であり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力手段と、
前記(c)暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成手段と、
前記暗号文選択手段において選択した暗号文を、前記ノードキー生成手段において生成したノードキーを適用して復号し、データキーDKを取得するデータキー取得手段と、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置。
【請求項30】
前記情報処理装置において、
前記データ入力手段は、さらに、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
を入力し、
前記ノードキー生成手段は、
前記ノード付加変数(salt)を適用して、選択した暗号文に適用されたノードキーを生成することを特徴とする請求項29に記載の情報処理装置。
【請求項31】
前記情報処理装置は、さらに、
平文データ取得手段において取得した平文データ(Data)を編集し、編集データ(Data2)を生成するデータ編集手段と、
前記編集データ(Data2)に、さらに、前記(b),(c),(d)の各データのコピーデータを含むファイルを生成するファイル生成手段と、
前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、
を有することを特徴とする請求項29に記載の情報処理装置。
【請求項32】
前記暗号文選択手段は、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする請求項29に記載の情報処理装置。
【請求項33】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項34】
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項35】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記(a)〜(c)の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項36】
前記コンピュータ・プログラムおいて、
前記データ生成ステップは、さらに、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
を生成し、
前記データ出力ステップは、
前記データ生成ステップにおいて生成した上記(a)〜(d)の各データを出力するステップであることを特徴とする請求項35に記載のコンピュータ・プログラム。
【請求項37】
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
(a)共有対象のデータ(Data)をデータキーDKで暗号化した暗号化データ、
(b)データ共有機器を識別可能とした集合Sの情報、および、
(c)ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーDKを暗号化して生成した暗号文セット、
上記(a)〜(c)の各データを入力するデータ入力ステップと、
前記(c)暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーDKを取得するステップと、
取得したデータキーDKを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項38】
前記コンピュータ・プログラムにおいて、
前記データ入力ステップは、さらに、
(d)選択ノードキーに対応するノードの子孫ノードのノード付加変数(salt)、
を入力し、
前記ノードキー生成ステップは、
前記ノード付加変数(salt)を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする請求項37に記載のコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2007−20025(P2007−20025A)
【公開日】平成19年1月25日(2007.1.25)
【国際特許分類】
【出願番号】特願2005−201165(P2005−201165)
【出願日】平成17年7月11日(2005.7.11)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】