(57)【要約】【課題】  特定のユーザ集合において、データの共有をセキュアに効率的に実行する構成を提供する。【解決手段】  階層型木構造を適用した情報配信構成において、共有対象のデータをデータキーＤＫによって暗号化し、さらにデータキーＤＫを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットを生成して、例えばブロードキャストによってユーザに提供する。また、受信データについての編集データを、データキーＤＫで暗号化したデータと、オリジナルファイルに含まれる暗号文セットと、データ共有集合Ｓに関する情報のコピーを格納したファイルをブロードキャストすることで、オリジナルデータの共有集合Ｓと同様の集合Ｓにおいてのみ利用可能とした編集データの配信を可能とした。【選択図】  図１０
2007020025.tif 000002
【特許請求の範囲】
【請求項１】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するステップと、
を有することを特徴とする情報処理方法。
【請求項２】
前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、
前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、
暗号関数ＥＤ、および暗号関数ＥＫは公開された関数であることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする請求項１に記載の情報処理方法。
【請求項４】
暗号化データの復号処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法。
【請求項５】
前記情報処理方法は、さらに、
平文データ取得ステップにおいて取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集ステップと、
前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ）の各データのコピーデータを含むファイルを生成するファイル生成ステップと、
前記ファイル生成ステップにおいて生成したファイルを出力するステップと、
を有することを特徴とする請求項４に記載の情報処理方法。
【請求項６】
前記暗号文選択ステップは、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする請求項４に記載の情報処理方法。
【請求項７】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するデータ出力ステップと、
を有することを特徴とする情報処理方法。
【請求項８】
前記情報処理方法において、
前記データ生成ステップは、さらに、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
を生成し、
前記データ出力ステップは、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｄ）の各データを出力するステップであることを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記階層木は、下位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した暗号化処理（順方向演算）によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した復号処理（逆方向演算）によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、
前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、
暗号関数ＥＤ、および暗号関数ＥＫは公開された関数であることを特徴とする請求項７に記載の情報処理方法。
【請求項１１】
前記情報処理方法は、さらに、
法Ｍのサイズ｜Ｍ｜を定め、任意サイズの値をサイズ｜Ｍ|のランダムな値にマッピングするマッピング関数Ｈ、および、
サイズ｜Ｍ｜の値をサイズＣのランダムな値にマッピングするマッピング関数Ｈｃ、
これらのマッピング関数を定め、公開するステップを有することを特徴とする請求項７に記載の情報処理方法。
【請求項１２】
前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする請求項７に記載の情報処理方法。
【請求項１３】
暗号化データの復号処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法。
【請求項１４】
前記情報処理方法において、
前記データ入力ステップは、さらに、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
を入力し、
前記ノードキー生成ステップは、
前記ノード付加変数（ｓａｌｔ）を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする請求項１３に記載の情報処理方法。
【請求項１５】
前記情報処理方法は、さらに、
平文データ取得ステップにおいて取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集ステップと、
前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ），（ｄ）の各データのコピーデータを含むファイルを生成するファイル生成ステップと、
前記ファイル生成ステップにおいて生成したファイルを出力するステップと、
を有することを特徴とする請求項１３に記載の情報処理方法。
【請求項１６】
前記暗号文選択ステップは、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする請求項１３に記載の情報処理方法。
【請求項１７】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記（ａ）〜（ｃ）の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置。
【請求項１８】
前記データ生成手段の生成する前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、
前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、
前記データ生成手段の適用する暗号関数ＥＤ、および暗号関数ＥＫは公開関数として設定されることを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
前記データ生成手段は、
前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーＤＫを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする請求項１７に記載の情報処理装置。
【請求項２０】
暗号化データの復号処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力手段と、
前記（ｃ）暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文を自己の保持するノードキーを適用して復号し、データキーＤＫを取得するデータキー取得手段と、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置。
【請求項２１】
前記情報処理装置は、さらに、
平文データ取得手段において取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集手段と、
前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ）の各データのコピーデータを含むファイルを生成するファイル生成手段と、
前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、
を有することを特徴とする請求項２０に記載の情報処理装置。
【請求項２２】
前記暗号文選択手段は、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする請求項２０に記載の情報処理装置。
【請求項２３】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記（ａ）〜（ｃ）の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置。
【請求項２４】
前記情報処理装置において、
前記データ生成手段は、さらに、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
を生成し、
前記データ出力手段は、
前記データ生成手段において生成した上記（ａ）〜（ｄ）の各データを出力することを特徴とする請求項２３に記載の情報処理装置。
【請求項２５】
前記階層木は、下位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した暗号化処理（順方向演算）によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した復号処理（逆方向演算）によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする請求項２３に記載の情報処理装置。
【請求項２６】
前記データ生成手段の生成する前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、
前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、
前記データ生成手段の適用する暗号関数ＥＤ、および暗号関数ＥＫは公開関数として設定されることを特徴とする請求項２３に記載の情報処理装置。
【請求項２７】
前記データ生成手段は、さらに、
法Ｍのサイズ｜Ｍ｜を定め、任意サイズの値をサイズ｜Ｍ|のランダムな値にマッピングするマッピング関数Ｈ、および、
サイズ｜Ｍ｜の値をサイズＣのランダムな値にマッピングするマッピング関数Ｈｃ、
これらのマッピング関数を決定する構成であることを特徴とする請求項２３に記載の情報処理装置。
【請求項２８】
前記データ生成手段は、
前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーＤＫを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする請求項２３に記載の情報処理装置。
【請求項２９】
暗号化データの復号処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力手段と、
前記（ｃ）暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成手段と、
前記暗号文選択手段において選択した暗号文を、前記ノードキー生成手段において生成したノードキーを適用して復号し、データキーＤＫを取得するデータキー取得手段と、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置。
【請求項３０】
前記情報処理装置において、
前記データ入力手段は、さらに、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
を入力し、
前記ノードキー生成手段は、
前記ノード付加変数（ｓａｌｔ）を適用して、選択した暗号文に適用されたノードキーを生成することを特徴とする請求項２９に記載の情報処理装置。
【請求項３１】
前記情報処理装置は、さらに、
平文データ取得手段において取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集手段と、
前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ），（ｄ）の各データのコピーデータを含むファイルを生成するファイル生成手段と、
前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、
を有することを特徴とする請求項２９に記載の情報処理装置。
【請求項３２】
前記暗号文選択手段は、
前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする請求項２９に記載の情報処理装置。
【請求項３３】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項３４】
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項３５】
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項３６】
前記コンピュータ・プログラムおいて、
前記データ生成ステップは、さらに、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
を生成し、
前記データ出力ステップは、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｄ）の各データを出力するステップであることを特徴とする請求項３５に記載のコンピュータ・プログラム。
【請求項３７】
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラム。
【請求項３８】
前記コンピュータ・プログラムにおいて、
前記データ入力ステップは、さらに、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
を入力し、
前記ノードキー生成ステップは、
前記ノード付加変数（ｓａｌｔ）を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする請求項３７に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに、詳細には、階層木構造を適用したブロードキャストエンクリプションシステムに従って配信される暗号データについて、セキュアに効率的にユーザ間で共有し、また編集データなどの再配信を行なうことを可能とした情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、音楽等のオーディオデータ、映画等の画像データ、ゲームプログラム、各種アプリケーションプログラム等、様々なソフトウエアデータ（以下、これらをコンテンツ（Content）と呼ぶ）が、インターネット等のネットワークを介して、あるいはＣＤ(Compact Disc)、ＤＶＤ(Digital Versatile Disk)、ＭＤ(Mini Disk)等の情報記録媒体（メディア）を介して流通している。これらの流通コンテンツは、ユーザの所有するＰＣ（Personal Computer）やプレーヤ、あるいはゲーム機器等、様々な情報処理装置において再生され利用される。
【０００３】
音楽データ、画像データ等、多くのコンテンツは、一般的にその作成者あるいは販売者に頒布権等が保有されている。従って、これらのコンテンツの配布に際しては、一定の利用制限、すなわち、正規なユーザに対してのみ、コンテンツの利用を許諾し、許可のない複製等が行われないようにする構成をとるのが一般的となっている。
【０００４】
特に、近年においては、情報をデジタル的に記録する記録装置や記憶媒体が普及しつつある。このようなデジタル記録装置および記憶媒体によれば、例えば画像や音声を劣化させることなく記録、再生を繰り返すことが可能であり、不正コピーコンテンツのインターネットを介した配信や、ＣＤ−Ｒ等の記録媒体に対する不正コピーという問題が発生している。
【０００５】
このようなコンテンツの不正利用を防止する１つの方式として、コンテンツあるいは暗号化コンテンツを復号するための鍵を暗号化して配布し、特定の正規ユーザまたは正規デバイスにおいてのみ配布データの復号を可能としたシステムがある。例えばブロードキャストエンクリプション（Broadcast Encryption）方式の一態様である階層型木構造を適用した構成が知られている。
【０００６】
例えば２分木構造のような階層木の分岐点であるノードと、階層木の最下層に設定されたリーフの各々に異なる暗号鍵を対応付ける。階層木のノードやリーフに対応する暗号鍵を選択的に適用して暗号化情報を生成してブロードキャスト配信することで、リーフ対応のユーザ機器から選択された特定のユーザ機器のみが復号可能な暗号化データを配信することができる。例えば特許文献１は、この階層木構成を適用したブロードキャストエンクリプション方式を適用した暗号化データ配信構成を開示している。
【０００７】
この階層木構成を適用したブロードキャストエンクリプション方式は、ある特定のデータ配信センタから複数のデータ受信先（ユーザ機器）に対してデータ送信する場合には、有効な方法であるが、例えば、ある１つのユーザ機器が受信したデータや編集データを再度、他の特定のユーザ機器に安全に、すなわちデータの漏洩を防止して送信しようとすると、データを送信しようとするユーザ機器は、当初、データ配信センタで生成した暗号化データと同様の暗号化データを生成することが必要となり、複数の鍵を適用したデータ量の多い暗号化データを生成して、送信することが必要となるという問題がある。
【特許文献１】特開２００１−３５２３２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、このような状況に鑑みてなされたものであり、階層木構造を適用したブロードキャストエンクリプション方式を適用した暗号データの配信構成を適用し、ユーザ間で効率的にかつ安全に情報を共有し、さらに編集データなどの再配信を行なうことを可能とした情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するステップと、
を有することを特徴とする情報処理方法にある。
【００１０】
さらに、本発明の情報処理方法の一実施態様において、前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、暗号関数ＥＤ、および暗号関数ＥＫは公開された関数であることを特徴とする。
【００１１】
さらに、本発明の情報処理方法の一実施態様において、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする。
【００１２】
さらに、本発明の第２の側面は、
暗号化データの復号処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法にある。
【００１３】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、平文データ取得ステップにおいて取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集ステップと、前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ）の各データのコピーデータを含むファイルを生成するファイル生成ステップと、前記ファイル生成ステップにおいて生成したファイルを出力するステップとを有することを特徴とする。
【００１４】
さらに、本発明の情報処理方法の一実施態様において、前記暗号文選択ステップは、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする。
【００１５】
さらに、本発明の第３の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するデータ出力ステップと、
を有することを特徴とする情報処理方法にある。
【００１６】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法において、前記データ生成ステップは、さらに、（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、を生成し、前記データ出力ステップは、前記データ生成ステップにおいて生成した上記（ａ）〜（ｄ）の各データを出力するステップであることを特徴とする。
【００１７】
さらに、本発明の情報処理方法の一実施態様において、前記階層木は、下位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した暗号化処理（順方向演算）によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した復号処理（逆方向演算）によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする。
【００１８】
さらに、本発明の情報処理方法の一実施態様において、前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、暗号関数ＥＤ、および暗号関数ＥＫは公開された関数であることを特徴とする。
【００１９】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、法Ｍのサイズ｜Ｍ｜を定め、任意サイズの値をサイズ｜Ｍ|のランダムな値にマッピングするマッピング関数Ｈ、および、サイズ｜Ｍ｜の値をサイズＣのランダムな値にマッピングするマッピング関数Ｈｃ、これらのマッピング関数を定め、公開するステップを有することを特徴とする。
【００２０】
さらに、本発明の情報処理方法の一実施態様において、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セットの生成に適用するノードキーは、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを含む設定であることを特徴とする。
【００２１】
さらに、本発明の第４の側面は、
暗号化データの復号処理を実行する情報処理方法であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とする情報処理方法にある。
【００２２】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法において、前記データ入力ステップは、さらに、（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、を入力し、前記ノードキー生成ステップは、前記ノード付加変数（ｓａｌｔ）を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする。
【００２３】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、平文データ取得ステップにおいて取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集ステップと、前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ），（ｄ）の各データのコピーデータを含むファイルを生成するファイル生成ステップと、前記ファイル生成ステップにおいて生成したファイルを出力するステップと、を有することを特徴とする。
【００２４】
さらに、本発明の情報処理方法の一実施態様において、前記暗号文選択ステップは、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択するステップであることを特徴とする。
【００２５】
さらに、本発明の第５の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記（ａ）〜（ｃ）の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置にある。
【００２６】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段の生成する前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、前記データ生成手段の適用する暗号関数ＥＤ、および暗号関数ＥＫは公開関数として設定されることを特徴とする。
【００２７】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段は、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーＤＫを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする。
【００２８】
さらに、本発明の第６の側面は、
暗号化データの復号処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力手段と、
前記（ｃ）暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文を自己の保持するノードキーを適用して復号し、データキーＤＫを取得するデータキー取得手段と、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置にある。
【００２９】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、平文データ取得手段において取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集手段と、前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ）の各データのコピーデータを含むファイルを生成するファイル生成手段と、前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、を有することを特徴とする。
【００３０】
さらに、本発明の情報処理装置の一実施態様において、前記暗号文選択手段は、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする。
【００３１】
さらに、本発明の第７の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成手段と、
前記データ生成手段において生成した上記（ａ）〜（ｃ）の各データを出力するデータ出力手段と、
を有することを特徴とする情報処理装置にある。
【００３２】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置において、前記データ生成手段は、さらに、（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、を生成し、前記データ出力手段は、前記データ生成手段において生成した上記（ａ）〜（ｄ）の各データを出力することを特徴とする。
【００３３】
さらに、本発明の情報処理装置の一実施態様において、前記階層木は、下位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した暗号化処理（順方向演算）によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した復号処理（逆方向演算）によって下位ノードのノード対応値が算出可能な設定を有する一方向木であることを特徴とする。
【００３４】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段の生成する前記暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、前記暗号文セットは、前記データキーＤＫを、前記選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）であり、前記データ生成手段の適用する暗号関数ＥＤ、および暗号関数ＥＫは公開関数として設定されることを特徴とする。
【００３５】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段は、さらに、法Ｍのサイズ｜Ｍ｜を定め、任意サイズの値をサイズ｜Ｍ|のランダムな値にマッピングするマッピング関数Ｈ、および、サイズ｜Ｍ｜の値をサイズＣのランダムな値にマッピングするマッピング関数Ｈｃ、これらのマッピング関数を決定する構成であることを特徴とする。
【００３６】
さらに、本発明の情報処理装置の一実施態様において、前記データ生成手段は、前記階層木構成において、前記データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用して前記データキーＤＫを暗号化して暗号文セットの生成処理を行なう構成であることを特徴とする。
【００３７】
さらに、本発明の第８の側面は、
暗号化データの復号処理を実行する情報処理装置であり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力手段と、
前記（ｃ）暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択手段と、
前記暗号文選択手段において選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成手段と、
前記暗号文選択手段において選択した暗号文を、前記ノードキー生成手段において生成したノードキーを適用して復号し、データキーＤＫを取得するデータキー取得手段と、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得手段と、
を有することを特徴とする情報処理装置にある。
【００３８】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置において、前記データ入力手段は、さらに、（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、を入力し、前記ノードキー生成手段は、前記ノード付加変数（ｓａｌｔ）を適用して、選択した暗号文に適用されたノードキーを生成することを特徴とする。
【００３９】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、平文データ取得手段において取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成するデータ編集手段と、前記編集データ（Ｄａｔａ２）に、さらに、前記（ｂ），（ｃ），（ｄ）の各データのコピーデータを含むファイルを生成するファイル生成手段と、前記ファイル生成手段において生成したファイルを出力するデータ出力手段と、を有することを特徴とする。
【００４０】
さらに、本発明の情報処理装置の一実施態様において、前記暗号文選択手段は、前記階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する構成であることを特徴とする。
【００４１】
さらに、本発明の第９の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４２】
さらに、本発明の第１０の側面は、
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持するノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文を自己の保持するノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４３】
さらに、本発明の第１１の側面は、
特定の選択機器においてのみ復号可能とした暗号化データ生成処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを生成するデータ生成ステップと、
前記データ生成ステップにおいて生成した上記（ａ）〜（ｃ）の各データを出力するステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４４】
さらに、本発明のコンピュータ・プログラムの一実施態様において、前記コンピュータ・プログラムおいて、前記データ生成ステップは、さらに、（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、を生成し、前記データ出力ステップは、前記データ生成ステップにおいて生成した上記（ａ）〜（ｄ）の各データを出力するステップであることを特徴とする。
【００４５】
さらに、本発明の第１２の側面は、
暗号化データの復号処理をコンピュータ上で実行させるコンピュータ・プログラムであり、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力するデータ入力ステップと、
前記（ｃ）暗号文セットから、自己の保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する暗号文選択ステップと、
前記暗号文選択ステップにおいて選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成するノードキー生成ステップと、
前記暗号文選択ステップにおいて選択した暗号文を、前記ノードキー生成ステップにおいて生成したノードキーを適用して復号し、データキーＤＫを取得するステップと、
取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する平文データ取得ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４６】
さらに、本発明のコンピュータ・プログラムの一実施態様において、前記コンピュータ・プログラムにおいて、前記データ入力ステップは、さらに、（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、を入力し、前記ノードキー生成ステップは、前記ノード付加変数（ｓａｌｔ）を適用して、選択した暗号文に適用されたノードキーを生成するステップであることを特徴とする。
【００４７】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００４８】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４９】
本発明の構成によれば、ブロードキャストエンクリプション（Broadcast Encryption）方式の一態様である階層型木構造を適用した情報配信構成において、特定の選択されたユーザ（受信機）の集合においてのみ復号可能としたデータを生成し、提供することが可能となり、特定のユーザの集合におけるデータ共有をセキュアに効率的に実行することができる。具体的には、共有対象のデータをデータキーＤＫによって暗号化し、さらにデータキーＤＫを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットを生成して、例えばブロードキャストによってユーザに提供する。
【００５０】
さらに、本発明の構成によれば、共有データを受信した受信機において、データを編集して生成した編集データについても、オリジナルデータの共有集合Ｓにおいてのみ利用可能とした形態で、再配信することができる。具体的には、編集データをデータキーＤＫで暗号化した暗号化データを格納したファイルを生成し、オリジナルファイルに含まれるデータキーＤＫを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットと、データ共有集合Ｓに関する情報をコピーして、編集データの暗号化データを格納したファイルに格納してこのファイルを、例えばブロードキャストすることで、オリジナルデータの共有集合Ｓと同様の集合Ｓにおいてのみ利用可能とした形態で、編集データを再配信することができる。
【発明を実施するための最良の形態】
【００５１】
以下、図面を参照しながら本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【００５２】
なお、説明は、以下の項目に従って行なう。
１．階層型木構造を適用した暗号データ配信処理の基本構成
２．情報処理装置の構成
３．暗号化データの共有処理
（３．１）セットアップ
（３．２）ファイル生成・配付
（３．３）ファイル利用
４．Ｒａｂｉｎ  Ｔｒｅｅを適用した処理構成
（４．１）Ｒａｂｉｎ  Ｔｒｅｅの構成について
（４．２）Ｒａｂｉｎ  Ｔｒｅｅを適用した暗号化データの共有処理
（４．２．１）セットアップ
（４．２．２）ファイル生成・配付
（４．２．３）ファイル利用
【００５３】
［１．階層型木構造を適用した暗号データ配信処理の基本構成］
まず、階層型木構造を適用した暗号データ配信処理の基本構成について、図を参照して説明する。まず既存の階層型木構造を適用したブロードキャストエンクリプション（Broadcast Encryption）方式として知られているＣｏｍｐｌｅｔｅ  Ｓｕｂｔｒｅｅ（ＣＳ）方式の概要について説明する。
【００５４】
図１に示す階層型木構造は２分木構造を用いており、その最下層がリーフ（葉）と呼ばれ、頂点、各分岐部およびリーフを含む部分をノードと称する。なお、頂点をルート、あるいはルートノードと呼ぶ。図１に示す２分木階層型木構造において、各リーフに受信機を割り当てる（図１におけるｕ１〜ｕ１６）。図１は、受信機数Ｎ＝１６の例である。また、木の各ノード（節）を用いて、「そのノードを頂点とする部分木のリーフ（葉）に割り当てられた受信機からなる集合」を表す。図１におけるノードｉ１０１は、受信機ｕ５とｕ６からなる集合を表す。
【００５５】
そして、図１に示す２分木の各構成ノードに鍵（ノードキー）が定義される。各受信機には、各受信機が割り当てられているリーフ（葉）から木のルート（頂点）に至るパス上のノードに割り当てられたノードキーが与えられ、受信機はこれらのノードキーを安全なメモリに保持する。木の定義やノードキーの定義、受信機の割り当てやノードキーの配布などは、Ｔｒｕｓｔｅｄ  Ｃｅｎｔｅｒ（ＴＣ）と呼ばれる信頼される管理センタが行なう。
【００５６】
図２に示すように、階層木には１６台の受信機ｕ１〜ｕ１６が割り当てられ、ノードは１〜３１の３１個、存在する。受信機ｕ４には、ノード１，２，４，９，１９に割り当てられた５個のノードキーが与えられる。すなわち、全受信機数をＮとした場合には、各受信機はｌｏｇＮ＋１個のノードキーを保持することになる。
【００５７】
図３を用いて、このセッティングを用いて秘密情報（たとえば、暗号化されたコンテンツを復号するためのコンテンツキー）をどのようにリボークされない受信機に送信するかについて説明する。ここでは、管理センタ（ＴＣ）が秘密情報の送信者になるとする。いま、受信機ｕ２，ｕ１１，ｕ１２がリボークされる受信機とする。すなわち、受信機ｕ２，ｕ１１，ｕ１２を不正な機器として排除（リボーク）し、それ以外の受信機においてのみ安全に情報を受領、すなわち同報配信される暗号文に基づく復号を行なうことを可能とする。
【００５８】
管理センタ（ＴＣ）が秘密情報の送信を行なう場合、リボーク受信機ｕ２，ｕ１１，ｕ１２が割り当てられているリーフ（葉）から木のルートに至るパス上のノードに割り当てられたノードキーを暗号鍵として使用せず、暗号文のセットを生成して同報送信する。
【００５９】
リボーク受信機ｕ２，ｕ１１，ｕ１２が割り当てられているリーフ（葉）から木のルートに至るパス上のリーフまたはノードに割り当てられたノードキーを使用すると、これらは、リボークすべき受信機が持つキーであるため、リボーク機器において秘密情報を入手できてしまう。従って、これらのキーを用いずに暗号文のセットを生成して同報送信する。
【００６０】
リボーク受信機ｕ２，ｕ１１，ｕ１２が割り当てられているリーフ（葉）から木のルートに至るパス上のノードおよびパスを木から除外すると、１つ以上の部分木が残る。例えば、ノード５を頂点とする部分木、あるいはノード１２を頂点とする部分木などである。
【００６１】
秘密情報の送信者は、それぞれの部分木の頂点に最も近いノード、すなわち、図３に示す例では、ノード５，７，９，１２，１６に割り当てられたノードキーを用いて秘密情報を暗号化した暗号文のセットを送信する。例えば送信秘密情報を暗号化コンテンツの復号に適用するコンテンツキーＫｃであるとし、ノード５，７，９，１２，１６に割り当てられたノードキーをＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６とすると、秘密情報の送信者は、
Ｅ（ＮＫ５，Ｋｃ），Ｅ（ＮＫ７，Ｋｃ），Ｅ（ＮＫ９，Ｋｃ），Ｅ（ＮＫ１２，Ｋｃ），Ｅ（ＮＫ１６，Ｋｃ）
の暗号文セットを生成して、ネットワーク配信あるいは記録媒体に格納して提供する。なお、Ｅ（Ａ，Ｂ）はデータＢを鍵Ａで暗号化したデータを意味する。
【００６２】
上記暗号文セットは、リボーク受信機ｕ２，ｕ１１，ｕ１２のみが復号することができず、その他の受信機では復号可能である。このような暗号文セットを生成し送信することで、効率的で安全な秘密情報の伝送が行える。
【００６３】
受信機は、伝送された暗号文のうち、自分が復号できるもの、すなわち、自身が割り当てられたリーフ（葉）からルートに至るまでのパス上のノードに対応するノードキーを用いて暗号化されたものを復号して秘密情報を得ることができる。上記の例では、受信機ｕ４はノード９のノードキーを保持しているので、これを用いて暗号化された暗号文Ｅ（ＮＫ９，Ｋｃ）を復号することができる。このように、リボークされていない受信機が復号できる暗号文は受信した暗号文セット中に必ずひとつ存在する。
【００６４】
［２．情報処理装置の構成］
次に、暗号化データの送信エンティティとしての管理センタ（ＴＣ）（送信機）と、暗号化データの受信エンティティであるユーザ（受信機）を構成する情報処理装置の構成例について説明する。図４は、情報処理装置の一例としてのブロック図である。
【００６５】
図４に示す情報処理装置２００は、コントローラ２０１、演算ユニット２０２、入出力インタフェース２０３、セキュア記憶部２０４、メイン記憶部２０５、ネットワークインタフェース２０６、メディアインタフェース２０７を備える。
【００６６】
コントローラ２０１は、情報処理装置２００の実行する処理全体をの制御を行なう。例えばコンピュータ・プログラムに従ったデータ処理を実行する制御部としての機能を有するＣＰＵによって構成される。演算ユニット８０２は、例えば暗号鍵の生成、乱数生成、及び暗号処理のための専用の演算部および暗号処理部として機能する。
【００６７】
入出力インタフェース２０３は、キーボード、マウス等の入力手段からのデータ入力や、外部出力装置に対するデータ出力に対応するインタフェースである。
【００６８】
情報処理装置２００が暗号文生成処理を実行する情報処理装置である場合、セキュア記憶部２０４は、例えば後述するセットアップフェイズにおいて生成するノードキー、各種ＩＤなど、安全にまたは秘密に保持すべきデータを保存する。情報処理装置２００が受信機としての情報処理装置である場合、セキュア記憶部２０４にはノードキーなどの暗号鍵などが格納される。
【００６９】
メイン記憶部２０５は、例えばコントローラ２０１において実行するデータ処理プログラム、その他、一時記憶処理パラメータ、プログラム実行のためのワーク領域等に使用されるメモリ領域である。セキュア記憶部２０４及びメイン記憶部２０５は、例えばＲＡＭ、ＲＯＭ等によって構成されるメモリである。ネットワークインタフェース２０６は、ネットワークを介したデータ送受信処理に対応するインタフェースである。メディアインタフェース２０７は、ＣＤ、ＤＶＤ、ＭＤ等のメディアに対する読出／書込機能を提供する。
【００７０】
［３．暗号化データの共有処理］
次に、暗号化データの送信エンティティとしての管理センタ（ＴＣ）（送信機）と、暗号化データの受信エンティティであるユーザ（受信機）とがデータファイルを共有する方法を説明する。データファイルの共有シーケンスは、次の３つの処理フェーズに区分される。
（１）セットアップ
（２）ファイル生成・配付
（３）ファイル利用
以下、これらの３つのフェーズにおける具体的な処理について、順次、説明する。
【００７１】
（３．１．セットアップ）
セットアップ処理は、システムの立ち上げ時に１度だけ行う。これ以降の情報配信および受信と復号の処理は、送信すべき情報が生じるたびに行なわれる。例えば、新しいコンテンツを格納したＤＶＤなどの情報記録媒体が配布される場合、あるいはネットワークを介して新しい情報が配信される場合など毎に実行される。なお、セットアップ処理は、実際に暗号文配信を実行するエンティティとは独立した管理センタ（ＴＣ）によって実行してもよいし、また、暗号文配信を実行するエンティティが実行してもよい。ここでは一例として、セットアップ処理を管理センタ（ＴＣ）が実行する例として説明する。
【００７２】
ａ．ステップ１
管理センタ（ＴＣ）は、２分木でありＮ個の葉を持つ木を定義する。木中の各ノードについてｋ（ｋ＝１，２，...，２Ｎ−１）と、ノード対応の番号を設定する。ただし２分木における最上位ノードであるルートを１とし、以降を幅優先（ｂｒｅａｄｔｈ  ｆｉｒｓｔ  ｏｒｄｅｒ）で番号設定を行う。すなわち、図２、図３に示す１〜３１のようなノード対応番号の設定を行なう。この処理により２分木中の各ノードに１〜２Ｎ−１のノード番号が設定される。さらに、受信機ｕｍ（ｍ＝１，２，...，Ｎ）を木の各葉（リーフ）に割り当てる。
【００７３】
ｂ．ステップ２
管理センタ（ＴＣ）は、
配信データの暗号化に適用するデータ用暗号関数ＥＤと、
暗号鍵の暗号化用に適用する鍵用暗号関数ＥＫと、
を定めて公開する。
なお、データ用暗号関数ＥＤと鍵用暗号関数ＥＫとは同じ関数を適用してもよい。
次に、管理センタ（ＴＣ）は、ステップ１において定義した階層木の各ノードｉに対応するノードキーＮＫｉを定める。具体的には、各ノードｉに対応するＣＫビットの乱数を発生し、この乱数ＣＫを各ノードｉのノードキーＮＫｉとする。なお、ここでＣＫは、暗号関数ＥＫの鍵のサイズである。
【００７４】
ｃ．ステップ３
管理センタ（ＴＣ）は、木の末端ノードとしての葉（リーフ）に対応して設定される受信機ｕｍ（ｍ＝１，２，...，Ｎ）の各々に対して、受信機が割り当てられたリーフ（葉）からルートに至るパス上のノードに設定されたノードキーＮＫｉを与える。各リーフ（葉）に対応して設定される受信機ｕｍ（ｍ＝１，２，...，Ｎ）の各々に対して、それぞれｌｏｇＮ＋１個のノードキーが与えられる。
【００７５】
例えば、図２に示す構成において、葉であるノード１９に割り当てられた受信機ｕ４には、ｌｏｇＮ＋１＝ｌｏｇ１６＋１＝５個のノードキーとして、ノード１９からルートへのパス上のノードのノードキーとしての、
ＮＫ１９、ＮＫ９、ＮＫ４、ＮＫ２、ＮＫ１、
が与えられる。
受信機は、ノード対応値を漏洩がないように、秘密に保管する。
【００７６】
上述したセットアップ処理のフローを図５に示す。図５のフローの各ステップについて説明する。まず、ステップＳ１０１において、管理センタ（ＴＣ）は、Ｎ個の葉を持つ２分木を定義する。２分木における最上位ノードであるルートを１とし、以降を幅優先（ｂｒｅａｄｔｈ  ｆｉｒｓｔ  ｏｒｄｅｒ）で番号設定を行う。すなわち、図２、３に示すようなノード対応番号１〜３１の設定を行なう。さらに、受信機ｕｍ（ｍ＝１，２，...，Ｎ）を木の各葉（リーフ）に割り当てる。
【００７７】
次にステップＳ１０２において、管理センタ（ＴＣ）は、
配信データの暗号化に適用するデータ用暗号関数ＥＤと、
暗号鍵の暗号化用に適用する鍵用暗号関数ＥＫと、
を定めて公開する。
さらに、階層木の各ノードｉに対応するノードキーＮＫｉを定める。
【００７８】
次に、ステップＳ１０３において、管理センタ（ＴＣ）は、木の末端ノードとしての葉（リーフ）に対応して設定される受信機ｕｍ（ｍ＝１，２，...，Ｎ）に対して、受信機が割り当てられたリーフ（葉）からルートに至るパス上のノードに設定されたノードキーＮＫｉを与える。各リーフ（葉）に対応して設定される受信機ｕｍ（ｍ＝１，２，...，Ｎ）の各々に対して、それぞれｌｏｇＮ＋１個のノードキーが与えられる。
【００７９】
（３．２．ファイル生成・配布）
次に、暗号化データの送信エンティティとしての管理センタ（ＴＣ）（送信機）と、暗号化データの受信エンティティであるユーザ（受信機）とがデータファイルを共有するために実行するファイル生成および配布処理の詳細について説明する。この処理は、暗号化データの送信エンティティとしての管理センタ（ＴＣ）が実行する。
【００８０】
まず、管理センタ（ＴＣ）は、情報（データ）共有するユーザ（受信機）の集合Ｓ⊆Ｎを定義する。
管理センタ（ＴＣ）は、ＣＤビットのランダムなデータキーＤＫを生成し、これを用いて、ユーザｕｉ∈Ｓと共有したい情報（データ）を暗号化する。例えばあるコンテンツデータを共有する場合、コンテンツは、データキーＤＫによって暗号化されて提供される。
【００８１】
なお、本実施例では、ユーザおよびユーザが所有する受信機を共にｕｉと表す。ここで、ＣＤは、前述したデータ用の暗号関数ＥＤの鍵サイズである。本実施例では、管理センタ（ＴＣ）は、暗号化したデータをファイルに格納するものとする。
【００８２】
次に、情報（データ）を共有するユーザ（受信機）の集合Ｓ⊆Ｎに含まれない排他対象のユーザをｕｊとする。ｕｊは、ｕｊ∈Ｓ＼Ｎである。この排他対象のユーザｕｊをリボークするものと仮定して、適用ノードキーを決定する。なお、ここでは、ノードキーは、上述のデータキーＤＫ、すなわち、共有情報（例えばコンテンツ）の暗号化に適用する鍵であるデータキーＤＫの暗号化鍵として適用する。
【００８３】
たとえば、図３に示したように、ｕ１からｕ１６の１６台の受信機（１６人のユーザ）から、ｕ１，ｕ１１，ｕ１２の３台の受信機（３人のユーザ）を除いた１３人のユーザが、情報（データ）を共有するユーザ（受信機）の集合Ｓを構成するのであれば、５，７，９，１２，１６のノードに対応する５つのノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）
をデータキーＤＫの暗号化鍵として適用する。
【００８４】
そして、暗号化データとして、データキーＤＫで暗号化したコンテンツ等のデータ（Ｄａｔａ）、すなわち、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
を格納したファイルに、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（本例では、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）
（ｃ）選択ノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）でデータキーＤＫを暗号化した暗号文、すなわち、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
を追加して格納する。なお、これらの情報は、ファイルのヘッダに格納してもよい。
なお、Ｅａ（Ｘ，Ｙ）は、暗号関数Ｅａを適用してデータＹを鍵Ｘを適用して暗号化したデータであることを示す。
【００８５】
また、情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報は、上述のユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６ではなく、暗号化に使用したノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）を指定する情報で置き換えてもよい。この場合、上記例においては、５，７，９，１２，１６とノードキーの番号を列挙してもよいし、あるいは、表現木を適用した方法などが適用可能である。
【００８６】
また、データキーＤＫを各ノードキーで暗号化した暗号文は、ノードキーの対応するノード番号の若い順に格納する。すなわち、上述の例では、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
の順に格納する。
【００８７】
この構成を用いることにより、上述の例では、１６人のユーザ（図２、図３のｕ１〜ｕ１６）の中で１３人のユーザ（ｕ１，ｕ３〜ｕ１０，ｕ１３〜ｕ１６）と暗号化ファイルを共有しようとする場合に、５個の暗号文、すなわち、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
を、共有するデータの暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）を格納したファイルに格納すればよい。
【００８８】
１３人の個別鍵を適用してそれぞれの暗号化データを生成すると、１３個の暗号化データを生成して配布することが必要であるが、上述の例では５個の暗号文のみで、１３の異なるユーザにおいて共有することを可能とした暗号化データファイルを生成することができる。このように、本実施例の構成では、メッセージサイズ（通信量）を減らし，効率的なファイル共有が可能となる。
【００８９】
図６にファイル生成・配布のフローを示す。処理手順について説明する。管理センタ（ＴＣ）は、ステップＳ２０１において、まずその情報を共有する受信機（ユーザ）を決定する。すなわち、情報（データ）を共有するユーザ（受信機）の集合Ｓを決定する。
【００９０】
次に、ステップＳ２０２において、暗号化データの生成、すなわちデータキーＤＫを適用して、共有すべきデータ（Ｄａｔａ）を暗号化し、暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）を生成する。
【００９１】
次に、ステップＳ２０３において、暗号文の生成に適用するノードキー、すなわちデータキーＤＫをノードキーで暗号化した暗号文セットの生成に適用するノードキーを選択する。情報（データ）を共有するユーザ（受信機）の集合Ｓ⊆Ｎに含まれない排他対象のユーザをｕｊ（ｕｊ∈Ｓ＼Ｎ）として、この排他対象のユーザｕｊをリボークするものと仮定して、適用ノードキーを決定する。ノードキーは、共有情報（例えばコンテンツ）の暗号化に適用する鍵であるデータキーＤＫの暗号化鍵として適用する。
【００９２】
次に、ステップＳ２０４において、暗号文を受信する受信機において、復号可能な暗号文を選択するための索引データとしての使用ノードキー指定情報またはユーザ指定情報を生成する。これは、どのノードキーを選択したかを表すタグ情報や表現コードなどである。
【００９３】
ステップＳ２０５において、暗号化データとして、データキーＤＫで暗号化したコンテンツ等のデータ（Ｄａｔａ）、すなわち、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
を格納したファイルに、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報
（ｃ）選択ノードキーでデータキーＤＫを暗号化した暗号文、すなわち、
ＥＫ（ＮＫ５，ＤＫ）など、
これらを格納したファイルを生成して、同報通信路を用いて送信する。あるいは情報記録媒体に格納して配布する。
【００９４】
図７に特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置の機能構成を説明するブロック図を示す。セットアップ処理手段３１０は、先に図５のフローを参照して説明した処理を実行して、各ノードにノードキーを設定するとともに、各受信機に所定のノードキーを付与した階層木構成を構築する。
【００９５】
データ生成手段３２０は、暗号化データ生成手段３２１、データ共有集合情報生成手段３２２、暗号文セット生成手段３２３を有する。
暗号化データ生成手段３２１は、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
データ共有集合情報生成手段３２２は、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、
暗号文セット生成手段３２３は、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、データ共有機器に基づいて選択された選択ノードキーを適用してデータキーＤＫを暗号化して生成した暗号文セット、
これらのデータをそれぞれ生成する。
【００９６】
暗号化データ生成手段３２１は、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）を生成し、暗号文セット生成手段３２３は、データキーＤＫを、データ共有機器に基づいて決定される選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）を生成する。すなわち、データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用してデータキーＤＫを暗号化して暗号文セットの生成処理を行なう。データ出力手段３３０は、データ生成手段３２０の生成したデータ（ａ）〜（ｃ）をたとえばブロードキャスト出力する。
【００９７】
（３．３．ファイル利用）
次に、情報を受信したユーザ側の受信機におけるファイルの利用処理について説明する。上述のファイル、すなわち、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報
（ｃ）選択ノードキーでデータキーＤＫを暗号化した暗号文、
これらのデータを含むファイルは、同報配信により受信機に提供される。あるいは情報記録媒体に格納されて受信機に提供される。このファイルは、すべての受信機が受領可能であるが、情報（データ）を共有するユーザ（受信機）の集合Ｓ以外の受信機、すなわち、情報（データ）を共有するユーザ（受信機）の集合Ｓ⊆Ｎに含まれない排他対象のユーザをｕｊ（ｕｊ∈Ｓ＼Ｎ）は、選択ノードキーでデータキーＤＫを暗号化した暗号文の復号に適用するノードキーを得ることができないのでデータキーＤＫを得ることができない。
【００９８】
送信されたファイルを受信したら、まず、ユーザ（受信機）ｕｉは、自身が集合Ｓに含まれることを確認する。管理センタ（ＴＣ）が配布したファイルにおいて、集合Ｓが直接指定されていれば、ｕｉ∈Ｓを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Ｓに含まれていなければ、処理をそこで終了する。
【００９９】
情報（データ）を共有するユーザ（受信機）の集合Ｓに含まれることを確認した受信機は、受領した暗号文（選択ノードキーでデータキーＤＫを暗号化した暗号文）のセットから自己が復号できる暗号文と、使用すべきノードキーを特定する。受領した暗号文のセットに含まれる暗号文の暗号化に用いられているノードキーの中には、自身が直接保持しているノードキーが含まれる。
【０１００】
ファイルにノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードでそこに含まれるものが求めるノードキーであり、それに対応する順番の暗号文が復号すべき暗号文となる。集合Ｓが直接指定されている場合には、その情報から、管理センタ（ＴＣ）がどのノードキーを用いて暗号文を作成したかを求め、その情報に基づいて、上述のように、暗号化に利用されかつ自身が所有するノードキーを特定し、対応する暗号文を特定する。そして、そのノードキーで対応する暗号文を復号してデータキーＤＫを導出する。
【０１０１】
たとえば上記の例における具体的処理例について説明する。受信ファイルには、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（本例では、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）、
（ｃ）選択ノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）でデータキーＤＫを暗号化した暗号文、すなわち、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
これらのデータが含まれる。
【０１０２】
集合Ｓに含まれる一ユーザ（受信機）ｕ９の処理について説明する。ユーザ（受信機）ｕ９は、データキーＤＫの暗号化に用いられたノードキーＮＫ１２と、対応する暗号文ＥＫ（ＮＫ１２，ＤＫ）を特定し、この暗号文を、このノードキーＮＫ１２を用いて復号してデータキーＤＫを得る。
次に、暗号化データＥＤ（ＤＫ，Ｄａｔａ）を、求めたデータキーＤＫを用いて復号することにより、平文データ（Ｄａｔａ）を得る。
【０１０３】
なお、上述の処理例は、複数の選択されたユーザの集合Ｓと、管理センタ（ＴＣ）において情報を共有する処理例として説明したが、例えば、集合Ｓに含まれるユーザｕｉが復号によって取得したデータ（Ｄａｔａ）を編集して、この編集データを集合Ｓ内のほかのユーザや管理センタ（ＴＣ）と共有したい場合、上述の処理において、管理センタ（ＴＣ）が実行したと同様の処理を、ユーザｕｉが編集データに対して再度実行して、送信することで編集データの共有が可能となる。
【０１０４】
この場合、ユーザが平文データを編集し編集データ（Ｄａｔａ２）をデータキーＤＫで暗号化したデータ、すなわち、
（ａ）暗号化データＥＤ（ＤＫ，Ｄａｔａ２）を含むファイルを作り、このファイルに、管理センタ（ＴＣ）から受信したオリジナルのファイルに含まれる情報、すなわち、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（例えば、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）、
（ｃ）選択ノードキーでデータキーＤＫを暗号化した暗号文、
これらのデータをオリジナルファイルからコピーして、編集データの暗号化データを含むファイルに追加格納し、同報通信路を用いて送信する。
【０１０５】
この編集データを含むファイルを受信した集合Ｓ内のユーザおよび管理センタ（ＴＣ）は、上述のユーザｕｉが行ったのと同様にして選択ノードキーでデータキーＤＫを暗号化した暗号文を復号してデータキーＤＫを取得し、取得したデータキーＤＫを適用して、暗号化データＥＤ（ＤＫ，Ｄａｔａ２）の復号処理を実行して平文編集データ（Ｄａｔａ２）を得ることができる。なお、集合Ｓのユーザまたは管理センタ（ＴＣ）は、さらに編集データを、再度編集して、再編集データを同様に暗号化データとして再送信することが可能である。
【０１０６】
図８に示すフローチャートを参照して、ファイル利用のシーケンスについて説明する。まず、ステップＳ３０１において、ファイルを受信する。ファイルには、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（例えば、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）、
（ｃ）選択ノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）でデータキーＤＫを暗号化した暗号文、例えば、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
これらのデータが含まれる。
【０１０７】
ステップＳ３０２において、ユーザ（受信機）ｕｉは、自身が集合Ｓに含まれることを確認する。管理センタ（ＴＣ）が配布したファイルにおいて、集合Ｓが直接指定されていれば、ｕｉ∈Ｓを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Ｓに含まれていなければ、処理をそこで終了する。
【０１０８】
情報（データ）を共有するユーザ（受信機）の集合Ｓに含まれることを確認した受信機は、ステップＳ３０３において、受領した暗号文（選択ノードキーでデータキーＤＫを暗号化した暗号文）のセットから自己が復号できる暗号文と、使用すべきノードキーを特定する。
【０１０９】
ステップＳ３０４において、所有するノードキーによって、対応する暗号文を復号してデータキーＤＫを取得する。ステップＳ３０５において、暗号化データＥＤ（ＤＫ，Ｄａｔａ）を、求めたデータキーＤＫを用いて復号することにより、平文データ（Ｄａｔａ）を得る。
【０１１０】
次に、図９に示すフローを参照して、復号して取得したデータ（Ｄａｔａ）の編集によってデータ（Ｄａｔａ２）を生成して、再送信する処理シーケンスについ手説明する。ステップＳ３２１において、復号処理によって取得したデータ（Ｄａｔａ）を編集し、データ（Ｄａｔａ２）を生成する。
【０１１１】
ステップＳ３２２において、データ（Ｄａｔａ２）を、データキーＤＫによって暗号化し、暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ２）を生成して、この暗号化データを格納したファイルを生成する。ステップＳ３２３において、オリジナルファイル、すなわち、編集前のデータ（Ｄａｔａ）の暗号化データを格納したファイルに格納されていた集合Ｓの定義情報と、選択ノードキーによるデータキーＤＫの暗号化データである暗号文セットを、オリジナルファイルから取得して、これらをコピーして、編集データ格納ファイルに格納する。
【０１１２】
ステップＳ３２４において、生成ファイルを送信する。生成ファイルには、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ２）、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（例えば、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）、
（ｃ）選択ノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）でデータキーＤＫを暗号化した暗号文、例えば、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
これらのデータが含まれる。
【０１１３】
この編集データを含むファイルを受信した集合Ｓ内のユーザおよび管理センタ（ＴＣ）は、上述のユーザｕｉが行ったのと同様にして選択ノードキーでデータキーＤＫを暗号化した暗号文を復号してデータキーＤＫを取得し、取得したデータキーＤＫを適用して、暗号化データＥＤ（ＤＫ，Ｄａｔａ２）の復号処理を実行して編集データ（Ｄａｔａ２）を得る。
【０１１４】
図１０に、暗号化データの復号処理を実行するユーザ機器としての受信機に相当する情報処理装置の機能構成を説明するブロック図を示す。データ入力手段３５１は、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
上記（ａ）〜（ｃ）の各データを入力する。
【０１１５】
暗号文選択手段３５２は、上記（ｃ）暗号文セットから、自己のメモリ３５３に格納されたノードキーによって復号可能な暗号文を選択する。階層木構成において、自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する。ノードキー取得手段３５４は、暗号文選択手段３５２において選択した暗号文の復号に適用するノードキーをメモリ３５３から取得する。
【０１１６】
データキー取得手段３５５は、メモリ３５３に保持されたノードキーを適用して、暗号文選択手段３５２において選択した暗号文を復号し、データキーＤＫを取得する。平文データ取得手段３５６は、取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する。
【０１１７】
データ編集手段３５７は、平文データ取得手段３５６において取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成し、ファイル生成手段３５８は、編集データ（Ｄａｔａ２）に、さらに、前述の（ｂ），（ｃ）の各データのコピーデータを含むファイルを生成する。データ出力手段３５９は、ファイル生成手段３５８において生成したファイルを出力する。
【０１１８】
以上、説明したように、本実施例の構成では、ブロードキャストエンクリプション技術を利用して、データキーＤＫによって暗号化したデータを配信するとともに、木構造に配置したノードキーの中で複数のユーザが共有しているノードキーを用いてデータキーＤＫを暗号化して配布する構成とした。本構成により、情報を共有する各人の個別鍵を適用してそれぞれの暗号化データを生成して配信する構成に比較して、メッセージサイズ（通信量）を削減した効率のよい暗号化ファイル共有システムが構築される。
【０１１９】
具体的には、前述したように、図２、図３の木構造において、ｕ１，ｕ３〜ｕ１０，ｕ１２〜ｕ１６の１３人において情報を共有しようとする場合、個別鍵を用いると、１３個の暗号化データを生成して配布することが必要であるが、上述の例では５個のデータキーを暗号化した暗号文、すなわち、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
を生成して、配信するのみで、１３の異なるユーザにおいて共有することがを可能となる。このように、本実施例の構成では、メッセージサイズ（通信量）を減らし，効率的なファイル共有が可能となる。
【０１２０】
さらに情報共有集合Ｓに含まれるユーザｕｉが復号して取得したデータを編集した後に，再度同じユーザ集合Ｓ内で、編集データを共有するためにファイルを暗号化して送信する場合にも、編集後のデータをデータキーＤＫで暗号化して、サラニオリジナルファイルに含まれる集合Ｓの定義情報と、選択ノードキーによるデータキーＤＫの暗号化データである暗号文セットをコピーして、編集データ格納ファイルに格納して送信することで、編集ファイルについての集合Ｓのメンバにおける共有も効率的で安全に行なうことができる。
【０１２１】
［４．Ｒａｂｉｎ  Ｔｒｅｅを適用した処理構成］
（４．１）Ｒａｂｉｎ  Ｔｒｅｅの構成について
次に、Ｒａｂｉｎ  Ｔｒｅｅを適用した処理構成について説明する。Ｒａｂｉｎ  Ｔｒｅｅも階層木を用いたデータ配信構成を実現するものである。Ｒａｂｉｎ  Ｔｒｅｅは受信機の保持すべき鍵情報の削減を実現した構成である。まず、Ｒａｂｉｎ  Ｔｒｅｅの構成の説明の前に、その基礎となるＲＳＡ暗号を用いた方式を説明する。この方式は、例えば、「２００４年暗号と情報セキュリティシンポジウム予稿集、ｐｐ．１８９−１９４」、「２００４年暗号と情報セキュリティシンポジウム予稿集、ｐｐ．１９５−１９９」において、野島らおよび尾形らが提案した方式である。
【０１２２】
この方式では、図１１に示すように、例えばＲＳＡ暗号の順方向置換（ｆ）と逆方向置換（ｆ−１）を用いる。ＲＳＡ暗号の法をＭ、公開指数をｅ、秘密指数をｄとすると、法：Ｍと、公開指数：ｅとを知っていれば行えるのが順方向置換（ｆ）、秘密指数：ｄを知らないと実行困難であるのが逆方向置換（ｆ−１）である。
【０１２３】
ＲＳＡ暗号についての詳細は、たとえば、Ａ．Ｊ．Ｍｅｎｅｚｅｓ，Ｐ．Ｃ．ｖａｎ  Ｏｏｒｓｃｈｏｔ  ａｎｄ  Ｓ．Ａ．Ｖａｎｓｔｏｎｅ著，"Ｈａｎｄｂｏｏｋ  ｏｆ  Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ，"ＣＲＣ  Ｐｒｅｓｓ，１９９６に紹介されている。
【０１２４】
ＲＳＡ暗号を用いた方式では、管理センタ（ＴＣ）のみが秘密指数：ｄを秘密に保持し、法：Ｍと、公開指数：ｅとは各受信機に公開する。管理センタ（ＴＣ）は、
秘密の値：Ｋ∈Ｚ＊Ｍ
を定め、これをルートの鍵ＮＫ１とする。すなわち、
ＮＫ１＝Ｋとする。なお、Ｋ∈Ｚ＊Ｍは、Ｋが、群Ｚ＊Ｍ（すなわち，群ＺＭ＝｛０，１，...，Ｍ−１｝の要素中，逆元を持つものからなる群）の元であることを意味する。
【０１２５】
ルート以外のノードｌ（エル）の鍵は、その親ノードの鍵、
【数１】
2007020025.tif 000003
と、そのノードの番号ｌから、下式、
【数２】
2007020025.tif 000004
に従って算出する。
上記式において、Ｈは任意のサイズの入力をＺＭの要素にマッピングする公開関数である。
【０１２６】
このように、親ノードの鍵から子ノードの鍵を求めることは、秘密指数：ｄを知る管理センタ（ＴＣ）のみが行えるが、逆に子ノードの鍵ＮＫｌを知っている受信機は、公開されている法：Ｍと、公開指数：ｅと公開関数：Ｈとを用いて、下式、
【数３】
2007020025.tif 000005
により親ノードの鍵（ノードキー）、
【数４】
2007020025.tif 000006
を導出することができる。
【０１２７】
次に、一方向木として設定されるＲａｂｉｎ  Ｔｒｅｅについて説明する。なお、「Ｒａｂｉｎ  Ｔｒｅｅ」とは、一般的な用語ではなく本発明の説明のために用いる言葉である。Ｎ個の葉を持つ完全２分木に対し、ルートを１、それ以降のノードを上位、左から２，３，...，２Ｎ−１と幅優先で番号付けし、下記の手順に従って、Ｒａｂｉｎ  Ｔｒｅｅを構成する。
【０１２８】
前述のＲＳＡ暗号を適用した構成と同様、２つの大きな素数の積Ｍを管理センタ（ＴＣ）が定め、公開する。管理センタ（ＴＣ）は、
秘密の値：Ｙ∈Ｚ＊Ｍ
を定め、これを頂点（ノード１）に対応する値ＮＶ１とする。なお、Ｙ∈Ｚ＊Ｍは、Ｙが、群Ｚ＊Ｍの元であることを意味する。
【０１２９】
頂点以外のノードｌ（エル）（ｌ＝２，３，・・・，２Ｎ−１）に対応する値ＮＶｌは、そのノードの番号ｌと親ノードに対応するノード対応値、
【数５】
2007020025.tif 000007
を用いてを求める。
【０１３０】
まず、下式によって、ｔｍｐｌを定義する。
【数６】
2007020025.tif 000008
【０１３１】
上記式によって定義される値ｔｍｐｌが、前述した２つの大きな素数の積Ｍを法とする平方剰余になるような最小の非負整数ｓａｌｔｌを見つける。ｓａｌｔｌは、ノードｌ（エル）に対応して設定されるノード付加変数である。
【０１３２】
なお、上記式において、ｌ‖ｓａｌｔｌは、ｌとｓａｌｔｌとの連結を表し、Ｈは、任意のサイズの入力を前述した２つの大きな素数の積Ｍのサイズ｜Ｍ｜にマッピングする公開関数である。このような関数の例として、任意の長さの入力に対し１６０ビットの出力を出す縮約関数としてのＳＨＡ−１ハッシュ関数を用いて、｜Ｍ｜−１６０ビットの０と、ＳＨＡ−１にｌを入力したときの出力をビット連結した｜Ｍ｜ビットの値をＨ（ｌ）として用いることが挙げられる。なお、縮約関数としてのＳＨＡ−１については、例えば、Ａ．Ｊ．Ｍｅｎｅｚｅｓ，Ｐ．Ｃ．ｖａｎ  Ｏｏｒｓｃｈｏｔ  ａｎｄ  Ｓ．Ａ．Ｖａｎｓｔｏｎｅ著，"Ｈａｎｄｂｏｏｋ  ｏｆ  Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ，"ＣＲＣ  Ｐｒｅｓｓ，１９９６に紹介されている。
【０１３３】
ここで、ある数ＫがＭを法とする平方剰余であるということは、下式、
ａ２ｍｏｄＭ＝Ｋ
が成立する数ａが存在することをいい、これを、
Ｋ∈ＱＲＭ
として表す。ある数ＫがＫ∈ＱＲＭを満たすかどうかは、Ｍの素因数ｐ，ｑを知っていれば、下式、
【数７】
2007020025.tif 000009
上記両式を満たすかどうかにより判別できる。なお、上記式において、（ａ／ｐ）はルジャンドル（Ｌｅｇｅｎｄｒｅ）記号である。
すなわち、上記両式を満たした場合、またその場合のみ、ＫがＫ∈ＱＲＭを満たす。
【０１３４】
さらに、Ｍの素因数ｐ，ｑを知っているものは、
ａ２ｍｏｄＭ＝Ｋ
なる数ａを求めることもできる。その方法は、たとえば、岡本龍明、山本博資著、「現代暗号」、産業図書の１１４ページに記されている。
【０１３５】
逆に、
Ｋ∈ＱＲＭであるとき、
ａ２ｍｏｄＭ＝Ｋ
なる数ａを求めることは、Ｍの素因数ｐ，ｑを知らないものには困難となる。実際、これはＭを素因数分解することと等価であることが証明されている。
【０１３６】
上記のようにして、
ｔｍｐｌ∈ＱＲＭ
となる最小の非負整数ｓａｌｔｌを見つけたら、
ｔｍｐｌ１／２ｍｏｄＭ
を計算し、この解として得られる４つの数のうちのいずれかを、ノードｌ（エル）に対応する値、すなわち、ノードｌ（エル）のノード対応値ＮＶｌとする。
【０１３７】
このようにして、ルートの値ＮＶ１から、その子ノード２，３のノード対応値ＮＶ２，ＮＶ３を定め、これを繰り返してＮＶ２Ｎ−１まですべてのノードの値（ノード対応値）を決定する。
【０１３８】
このようにして定められた各ノードｌ（エル）のノード対応値ＮＶｌ（ｌ＝２，３，・・・，２Ｎ−１）は、下式、
【数８】
2007020025.tif 000010
・・・（数式１）
の関係を満たす。すなわち、あるノードの値であるノード対応値ＮＶｌとノード付加変数ｓａｌｔｌからその親ノードのノード対応値、
【数９】
2007020025.tif 000011
を求めることは、関数：Ｈおよび、法：Ｍが公開されているため容易である。
【０１３９】
葉がＮ個である２分木のＲａｂｉｎ  Ｔｒｅｅを構成するアルゴリズムの例を下記に示す。このアルゴリズムの入力は、
［入力］
２分木を構成する葉（リーフ）の数：Ｎと、
法Ｍのサイズ：｜Ｍ｜
｜Ｍ｜ビット出力のマッピング関数Ｈ
であり、このアルゴリズムの出力は、
［出力］
２Ｎ−１個の｜Ｍ｜ビットの数（ノード対応値）：ＮＶ１，ＮＶ２，・・・，ＮＶ２Ｎ−１と、
２Ｎ−２個の数（ノード付加変数）：ｓａｌｔ２，ｓａｌｔ３，・・・，ｓａｌｔ２Ｎ−１である。
【０１４０】
上記の［入力］に基づいて、上記の［出力］を得るアルゴリズムは以下のようになる。
１．サイズ｜Ｍ｜／２の２つの大きな素数を定め、その積Ｍを計算する。
２．ルートノードのノード対応値としての値ＮＶ１∈Ｚ＊Ｍをランダムに選択する。
３．ｌ（エル）をカウンタとして２から２Ｎ−１まで１ずつ増加させながら下記ａ，ｂの処理を行う。
ａ．下記式、
【数１０】
2007020025.tif 000012
・・・（数式２）
が、Ｍを法とする平方剰余になるような最小の非負整数ｓａｌｔｌを見つける。
ｂ．ｔｍｐｌ１／２ｍｏｄＭを求め、４つの解のうちのいずれかを、ノードｌ（エル）のノード対応値ＮＶｌと定める。
４．２Ｎ−１個の｜Ｍ｜ビットの数（ノード対応値）：ＮＶ１，ＮＶ２，・・・，ＮＶ２Ｎ−１と、２Ｎ−２個の数（ノード付加変数）：ｓａｌｔ２，ｓａｌｔ３，・・・，ｓａｌｔ２Ｎ−１
を出力して終了する。
【０１４１】
出力値ＮＶｌがＲａｂｉｎ  Ｔｒｅｅのノードｌ（エル）のノード対応値となる。なお、葉（リーフ）の数がＮの完全２分木のノード総数は２Ｎ−１であり、上記出力によって、すべてのノードのノード対応値が出力される。
【０１４２】
図１２に、上記アルゴリズムのフローを示す。フローの各ステップについて説明する。ステップＳ４０１において、２分木を構成する葉（リーフ）の数Ｎと、法Ｍのサイズ｜Ｍ｜、および｜Ｍ｜ビット出力のマッピング関数Ｈを入力する。
【０１４３】
ステップＳ４０２において、サイズ｜Ｍ｜／２の２つの大きな素数を定め、その積Ｍを計算し、ルートノードのノード対応値としての値ＮＶ１∈Ｚ＊Ｍをランダムに選択する。ステップＳ４０３において、値：ｌの初期設定として、ｌ＝２とする設定を行なう。
【０１４４】
ステップＳ４０４において、上記した数式２において定義されるｔｍｐｌがＭを法とする平方剰余になるような最小の非負整数ｓａｌｔｌを見つける。これをノード付加変数とする。
ステップＳ４０５において、ｔｍｐｌ１／２ｍｏｄＭを求め、４つの解のうちのいずれかを、ノードｌ（エル）のノード対応値ＮＶｌと定める。
【０１４５】
ステップＳ４０６において、ｌ＝２Ｎ−１であるか否かを判定し、ｌ＝２Ｎ−１でない場合は、ステップＳ４０７に進み、ｌを１つインクリメントして、ステップＳ４０４，Ｓ４０５の処理を実行する。ステップＳ４０７において、ｌ＝２Ｎ−１と判定されるまで、ステップＳ４０４，Ｓ４０５を繰り返し実行して、ステップＳ４０７において、ｌ＝２Ｎ−１と判定されると、ステップＳ４０８において、２Ｎ−１個の｜Ｍ｜ビットの数（ノード対応値）：ＮＶ１，ＮＶ２，・・・，ＮＶ２Ｎ−１と、２Ｎ−２個の数（ノード付加変数）：ｓａｌｔ２，ｓａｌｔ３，・・・，ｓａｌｔ２Ｎ−１を出力して終了する。
【０１４６】
上記処理によって各ノードのノード対応値ＮＶｌを定めたＲａｂｉｎ  Ｔｒｅｅの構成を図１３に示す。上記の処理によって定めたノード対応値ＮＶｌにより構成された木は、あるノードのノード対応値ＮＶｌおよびノード付加変数ｓａｌｔｌからその親ノードのノード対応値、
【数１１】
2007020025.tif 000013
を求めることは容易だが、その逆は困難なものとなる。
【０１４７】
図１３において、関数ｆに沿って示されている直線矢印は、下位ノードのノード対応値ＮＶｌを入力として関数ｆを適用することで、上位ノードのノード対応値が求められることを示している。関数ｆは、順方向演算（ｍｏｄＭ上の２乗算）Ｆを用いた演算である。あるノード（子ノード）の親ノードのノード対応値は、子ノードのノード対応値ＮＶｌおよびｓａｌｔｌからその公開された関数：Ｈおよび、法：Ｍを適用して、前述の数式１に従って算出することができる。
【０１４８】
図１３において、関数ｆ−１に沿って示されている直線矢印は、上位ノードのノード対応値を入力として関数ｆ−１を摘用することで、下位ノードのノード対応値が求められることを示している。関数ｆ−１は、逆方向演算（ｍｏｄＭ上の１／２乗算）Ｆ−１を用いた演算である。上位ノードのノード対応値から子ノードのノード対応値を求めるには、秘密情報ｐ，ｑ（Ｍの素因数）を知ることが必要であり、管理センタ（ＴＣ）のみが行える。
【０１４９】
このようにノード対応値ＮＶは下位から上位の一方向については、公開された関数：Ｈおよび、法：Ｍを適用して、前述の数式１に従って算出することができるが、逆方向は困難である一方向木が生成される。このような設定を持つノード対応値ＮＶｌにより構成された一方向木をＲａｂｉｎ  Ｔｒｅｅと呼ぶ。これはＲａｂｉｎ暗号が、暗号化（順方向演算）にｍｏｄＭ上の自乗算、復号（逆方向演算）にｍｏｄＭ上のルート（１／２乗）演算を用いているためである。
【０１５０】
すなわち、一方向木としてのＲａｂｉｎ  Ｔｒｅｅのノードに設定されるノード対応値は以下のような設定を持つ。すなわち、下位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した暗号化処理（順方向演算）によって上位ノードのノード対応値が算出され、上位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した復号処理（逆方向演算）によって下位ノードのノード対応値が算出される構成である。本構成により、下位から上位のノード対応値の算出は公開された関数：Ｈおよび、法：Ｍを適用して、前述の数式１に従って算出することができるが、上位から下位のノード対応値の算出は公開された関数：Ｈおよび、法：Ｍのみでは算出が困難であり、秘密情報ｐ，ｑ（Ｍの素因数）を知る管理センタ（ＴＣ）のみが算出できる。なお、Ｒａｂｉｎ暗号については、たとえば上述のＡ．Ｊ．Ｍｅｎｅｚｅｓ，Ｐ．Ｃ．ｖａｎ  Ｏｏｒｓｃｈｏｔ  ａｎｄ  Ｓ．Ａ．Ｖａｎｓｔｏｎｅ著，"Ｈａｎｄｂｏｏｋ  ｏｆ  Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ，"ＣＲＣ  Ｐｒｅｓｓ，１９９６のｐｐ．２９２−２９４に詳しい説明がある。
【０１５１】
上記のように構成したＲａｂｉｎ  Ｔｒｅｅにおいて、階層木の各ノードに対しノードキーＮＫｌを定めるが、これは上記で定めたノード対応値ＮＶｌを用いて算出可能な値とする。すなわち、ノードｌ（エル）のノードキーＮＫｌは、
ＮＫｌ＝Ｈｃ（ＮＶｌ）
とする。なお、関数Ｈｃは、サイズ｜Ｍ｜の値を、サイズＣのランダムな値にマップするハッシュ関数である。たとえばＣが１６０ｂｉｔの場合、任意のサイズの入力に対し１６０ｂｉｔの値を出力する関数としては上記のＳＨＡ−１があり、また、Ｃが１２８ｂｉｔの場合、任意のサイズの入力に対し１２８ｂｉｔの値を出力する関数としては、ＭＤ５などが知られており、これらの関数を適用することができる。なお、ＭＤ５についても、上述のＡ．Ｊ．Ｍｅｎｅｚｅｓ，Ｐ．Ｃ．ｖａｎ  Ｏｏｒｓｃｈｏｔ  ａｎｄ  Ｓ．Ａ．Ｖａｎｓｔｏｎｅ著，"Ｈａｎｄｂｏｏｋ  ｏｆ  Ａｐｐｌｉｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ，"ＣＲＣ  Ｐｒｅｓｓ，１９９６に詳しい説明がある。
【０１５２】
ノードキーはセッションキーなど受信機に送信すべき情報の暗号化に用いられるため、このサイズＣの決め方は、そこに用いる暗号アルゴリズムの鍵のサイズとすればよい。たとえば暗号アルゴリズムとして１２８ｂｉｔ鍵のＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ  ＦＩＰＳ１９７）を用いる場合には、Ｃを１２８ｂｉｔとすればよい。
【０１５３】
また、このＲａｂｉｎ  ＴｒｅｅのＮ個の葉を、それぞれ左からｌｅａｆ１，ｌｅａｆ２，・・・・，ｌｅａｆＮと番号づけ（つまり、左端のｌｅａｆ１のノード番号はＮであるため、ｌｅａｆｉのノード番号はＮ−１＋ｉとなる）、ｌｅａｆｉに受信機ｕｉを割り当てる。受信機ｕｉには、ｌｅａｆｉの葉（ノード）に対応する値ＮＶＮ−１＋ｉと、ｌｅａｆｉからルートへ至るパス上のノードのｌｏｇＮ個のノード付加変数ｓａｌｔｌを与える。
【０１５４】
図１４に示したように受信機を割り当てた場合、葉であるノード１９に割り当てられた受信機ｕ４には、ノード１９のノード対応値ＮＶ１９と、ノード１９からルートへのパス上のノードのノード付加変数であるｓａｌｔ１９，ｓａｌｔ９，ｓａｌｔ４，ｓａｌｔ２を与える。
【０１５５】
このような設定とすることにより、受信機ｕ４は与えられたノード対応値：ＮＶ１９と、ノード１９からルートへのパス上のノードのノード付加変数：ｓａｌｔ１９，ｓａｌｔ９，ｓａｌｔ４，ｓａｌｔ２を用いて、ノード１９からルートへのパス上の全てのノードの値、すなわちノード対応値ＮＶを求めることができる。またそれぞれのノードのノードキーＮＫｌは、前述したように、ノード対応値ＮＶｌから算出、すなわち、
ＮＫｌ＝Ｈｃ（ＮＶｌ）
によって算出することができる。
【０１５６】
図１４に示す受信機割り当て構成において、葉であるノード１９に割り当てられた受信機ｕ４には、ノード１９のノード対応値ＮＶ１９と、ノード１９からルートへのパス上のノードのノード付加変数であるｓａｌｔ１９，ｓａｌｔ９，ｓａｌｔ４，ｓａｌｔ２が与えられる。受信機ｕ４における上位ノード（ノード番号＝１，２，４，９）のノード対応値ＮＶの算出と、ノードキーＮＫの算出は、以下の処理手順で実行されることになる。
【０１５７】
（ａ１）ノード１９のノード対応値ＮＶ１９から上位ノード９のノード対応値ＮＶ９の算出、
ＮＶ９＝（（ＮＶ１９）２  ＸＯＲ  Ｈ（１９||ｓａｌｔ１９））ｍｏｄＭ
（ａ２）ノード９のノード対応値ＮＶ９から上位ノード４のノード対応値ＮＶ４の算出、
ＮＶ４＝（（ＮＶ９）２  ＸＯＲ  Ｈ（９||ｓａｌｔ９））ｍｏｄＭ
（ａ３）ノード４のノード対応値ＮＶ４から上位ノード２のノード対応値ＮＶ２の算出、
ＮＶ２＝（（ＮＶ４）２  ＸＯＲ  Ｈ（４||ｓａｌｔ４））ｍｏｄＭ
（ａ４）ノード２のノード対応値ＮＶ２から上位ノード１のノード対応値ＮＶ１の算出、
ＮＶ１＝（（ＮＶ２）２  ＸＯＲ  Ｈ（２||ｓａｌｔ２））ｍｏｄＭ
上記式に基づく演算により、下位ノードのノード対応値から上位ノードのノード対応値を算出する。
【０１５８】
さらに、各ノードのノード対応値からノードキーが以下の式によって算出できる。
（ｂ１）ノード１９のノード対応値ＮＶ１９からノード１９のノードキーＮＫ１９を算出、
ＮＫ１９＝Ｈｃ（ＮＶ１９）
（ｂ２）ノード９のノード対応値ＮＶ９からノード９のノードキーＮＫ９を算出、
ＮＫ９＝Ｈｃ（ＮＶ９）
（ｂ３）ノード４のノード対応値ＮＶ４からノード４のノードキーＮＫ４を算出、
ＮＫ４＝Ｈｃ（ＮＶ４）
（ｂ４）ノード２のノード対応値ＮＶ２からノード２のノードキーＮＫ２を算出、
ＮＫ２＝Ｈｃ（ＮＶ２）
（ｂ５）ノード１のノード対応値ＮＶ１からノード１のノードキーＮＫ１を算出、
ＮＫ１＝Ｈｃ（ＮＶ１）
【０１５９】
ところで、受信機ｕ４は、ノード対応値ＮＶ１９は秘密に保管しておく必要があるが、各ノード付加変数ｓａｌｔは秘密にしておく必要はない。このため，全受信機がすべてのｓａｌｔｌを保持しておくような構成としてもよい.
【０１６０】
ここで、各ノード付加変数ｓａｌｔのサイズを考える。ある数が法Ｍの下で平方剰余になる確率は約１／４であるため、ｓａｌｔｌとして４つの値を試すと、ｔｍｐｌが平方剰余となるようなものが平均１つはあると期待されるので、ノード付加変数ｓａｌｔｌを表すのに必要なサイズは２ビットであると期待される。
【０１６１】
一方、４つの値のいずれも平方剰余にならない場合もある。たとえばノード付加変数ｓａｌｔｌとしてＬ個の値を試したとき、ｔｍｐｌがいずれも平方剰余でない（平方非剰余である）確率は３Ｌ／４Ｌであるため、Ｌ＝４の場合には、３４／４４≒４２．２％の確率でいずれのｔｍｐｌも平方剰余にならない。しかし、ノード付加変数ｓａｌｔｌとして８ビットの値を考え、２５６個の数を試したとすれば、いずれのｔｍｐｌも平方剰余にならない確率は３２５６／４２５６≒１．０×１０−３２と非常に小さくなり、たとえ葉（リーフ）の数Ｎとして、２３０≒１０９や、２４０≒１０１２などの大きな数を考えたとしても、いずれかのノードにおいてｔｍｐｌが平方剰余になるようなノード付加変数ｓａｌｔｌが見つからない確率は無視できるほど小さいものとなる。
【０１６２】
（４．２）Ｒａｂｉｎ  Ｔｒｅｅを適用した暗号化データの共有処理
次に、上述した処理によって２分木の各ノードｌに対応するノード対応値ＮＶｌを設定した木構造であるＲａｂｉｎ  Ｔｒｅｅを用いて、データを共有する処理について説明する。ここでは、暗号化データの送信エンティティとしての管理センタ（ＴＣ）（送信機）と、暗号化データの受信エンティティであるユーザ（受信機）とがデータファイルを共有する方法を説明する。データファイルの共有シーケンスは、次の３つの処理フェーズに区分される。
（１）セットアップ
（２）ファイル生成・配付
（３）ファイル利用
以下、これらの３つのフェーズにおける具体的な処理について、順次、説明する。
【０１６３】
（４．２．１）セットアップ
セットアップ処理は、システムの立ち上げ時に１度だけ行う。これ以降の情報配信および受信と復号の処理は、送信すべき情報が生じるたびに行なわれる。例えば、新しいコンテンツを格納したＤＶＤなどの情報記録媒体が配布される場合、あるいはネットワークを介して新しい情報が配信される場合など毎に実行される。なお、セットアップ処理は、実際に暗号文配信を実行するエンティティとは独立した管理センタ（ＴＣ）によって実行してもよいし、また、暗号文配信を実行するエンティティが実行してもよい。ここでは一例として、セットアップ処理を管理センタ（ＴＣ）が実行する例として説明する。
【０１６４】
ａ．ステップ１
管理センタ（ＴＣ）は、２分木でありＮ個の葉を持つ木を定義する。木中の各ノードについてｋ（ｋ＝１，２，...，２Ｎ−１）と、ノード対応の番号を設定する。ただし２分木における最上位ノードであるルートを１とし、以降を幅優先（ｂｒｅａｄｔｈ  ｆｉｒｓｔ  ｏｒｄｅｒ）で番号設定を行う。すなわち、図１４に示す１〜３１のようなノード対応番号の設定を行なう。この処理により２分木中の各ノードに１〜２Ｎ−１のノード番号が設定される。さらに、受信機ｕｍ（ｍ＝１，２，...，Ｎ）を木の各葉（リーフ）に割り当てる。
【０１６５】
ｂ．ステップ２
管理センタ（ＴＣ）は、
配信データの暗号化に適用するデータ用暗号関数ＥＤと、
暗号鍵の暗号化用に適用する鍵用暗号関数ＥＫと、
を定めて公開する。
なお、データ用暗号関数ＥＤと鍵用暗号関数ＥＫとは同じ関数を適用してもよい。
【０１６６】
さらに、管理センタ（ＴＣ）は、
法Ｍのサイズ｜Ｍ｜を定め、任意サイズの値をサイズ｜Ｍ|のランダムな値にマッピングするマッピング関数Ｈを定める。マッピング関数Ｈは公開する。また、サイズ｜Ｍ｜の値をサイズＣのランダムな値にマッピングする関数Ｈｃを定め、公開する。なお、ここでＣは、暗号関数ＥＫの鍵のサイズである。
次に、木構造の葉（リーフ）数Ｎ、法Ｍのサイズ｜Ｍ｜、マッピング関数Ｈを入力として用い、図１２のフローを参照して説明したアルゴリズムに従って、Ｎ個の葉を持つ２分木のＲａｂｉｎ  Ｔｒｅｅを作成する。すなわち、ノード１からノード２Ｎ−１に対応するノード対応値、ＮＶ１，ＮＶ２，・・・，ＮＶ２Ｎ−１と、ノード２からノード２Ｎ−１に対応する２Ｎ−２個の数（ノード付加変数）：ｓａｌｔ２，ｓａｌｔ３，・・・，ｓａｌｔ２Ｎ−１を定める。
管理センタ（ＴＣ）は、ステップ１で作成したノードｌに対応する鍵、すなわち、木のノードｌ（エル）のノードキーＮＫｌをノード対応値ＮＶｌからの算出値、すなわち、
ＮＫｌ＝Ｈｃ（ＮＶｌ）
として設定する。
【０１６７】
ｃ．ステップ３
管理センタ（ＴＣ）は、木の末端ノードとしての葉（リーフ）に対応して設定される受信機ｕｍ（ｍ＝１，２，...，Ｎ）に対し、以下のルールに基づいてノードキーを与える。受信機は図１４に示すように木の葉（リーフ）、すなわちノード番号１６〜３１に割り当てられている。図１４に示す例では、受信機は、ノード番号１６〜３１に割り当てられたｕ１〜ｕ１６の１６個設定される。
【０１６８】
なお、受信機ｕｍが割り当てられた葉からルートへのパスをパスｍ［ｐａｔｈ−ｍ］と表す。また、パスｍ［ｐａｔｈ−ｍ］上のノードの集合をパスノードｍ［ＰａｔｈＮｏｄｅｓ−ｍ］と表す。
【０１６９】
図１４の例では、
ＰａｔｈＮｏｄｅｓ−１＝｛１，２，４，８，１６｝
ＰａｔｈＮｏｄｅｓ−４＝｛１，２，４，９，１９｝
ＰａｔｈＮｏｄｅｓ−１１＝｛１，３，６，１３，２６｝
となる。
【０１７０】
図１４に示すノード１，２，４，８，１６を結ぶラインが、受信機ｕ１のパス１［ｐａｔｈ−１］であり、ＰａｔｈＮｏｄｅｓ−１＝｛１，２，４，８，１６｝によって構成される。受信機ｕ４のパス４［ｐａｔｈ−４］は、図１４に示すノード１，２，４，９，１９を結ぶラインであり、ＰａｔｈＮｏｄｅｓ−４＝｛１，２，４，９，１９｝によって構成される。
【０１７１】
管理センタ（ＴＣ）は、各受信機ｕｍに対し、
（ａ）受信機ｕｍの割り当てられた葉ノード（リーフ）のノード対応値ＮＶｌ
（ｂ）受信機ｕｍのパス上のルートを除くパスノード対応のｓａｌｔ値
を付与する。
【０１７２】
図１４に示す構成において、葉であるノード１９に割り当てられた受信機ｕ４には、ノード１９のノード対応値ＮＶ１９と、ノード１９からルートへのパス上のノードのノード付加変数であるｓａｌｔ１９，ｓａｌｔ９，ｓａｌｔ４，ｓａｌｔ２を与える。
【０１７３】
すなわち、受信機ｕｉには、ｌｅａｆｉの葉（ノード）に対応するノード対応値ＮＶＮ−１＋ｉと、ｌｅａｆｉからルートへ至るパス上のノードのｌｏｇＮ個のノード付加変数ｓａｌｔｌを与える。
【０１７４】
受信機は、ノード対応値を漏洩がないように、秘密に保管する。なお、ノード付加変数ｓａｌｔは公開値としてよい値であり、秘密に保持することは必要ではない。
【０１７５】
上述したセットアップ処理のフローを図１５に示す。図１５のフローの各ステップについて説明する。
【０１７６】
まず、ステップＳ５０１において、管理センタ（ＴＣ）は、Ｎ個の葉を持つ２分木を定義する。２分木における最上位ノードであるルートを１とし、以降を幅優先（ｂｒｅａｄｔｈ  ｆｉｒｓｔ  ｏｒｄｅｒ）で番号設定を行う。すなわち、図１３、１０に示すようなノード対応番号１〜３１の設定を行なう。さらに、受信機ｕｍ（ｍ＝１，２，...，Ｎ）を木の各葉（リーフ）に割り当てる。
【０１７７】
次にステップＳ５０２において、管理センタ（ＴＣ）は、
配信データの暗号化に適用するデータ用暗号関数ＥＤと、
暗号鍵の暗号化用に適用する鍵用暗号関数ＥＫと、
を定めて公開する。
さらに、管理センタ（ＴＣ）は、
法Ｍのサイズ｜Ｍ｜を定め、任意サイズの値をサイズ｜Ｍ|のランダムな値にマッピングするマッピング関数Ｈを定める。マッピング関数Ｈは公開する。また、サイズ｜Ｍ｜の値をサイズＣのランダムな値にマッピングする関数Ｈｃを定め、公開する。さらに、木構造の葉（リーフ）数Ｎ、法Ｍのサイズ｜Ｍ｜、マッピング関数Ｈを入力として用い、図１２のフローを参照して説明したアルゴリズムに従って、Ｎ個の葉を持つ２分木のＲａｂｉｎ  Ｔｒｅｅを作成する。すなわち、ノード１からノード２Ｎ−１に対応するノード対応値、ＮＶ１，ＮＶ２，・・・，ＮＶ２Ｎ−１と、ノード２からノード２Ｎ−１に対応する２Ｎ−２個の数（ノード付加変数）：ｓａｌｔ２，ｓａｌｔ３，・・・，ｓａｌｔ２Ｎ−１を定める。さらに、管理センタ（ＴＣ）は、ステップ１で作成したノードｌに対応する鍵、すなわち、木のノードｌ（エル）のノードキーＮＫｌをノード対応値ＮＶｌからの算出値、すなわち、
ＮＫｌ＝Ｈｃ（ＮＶｌ）
として設定する。
【０１７８】
次に、ステップＳ５０３において、管理センタ（ＴＣ）は、木の末端ノードとしての葉（リーフ）に対応して設定される受信機ｕｍ（ｍ＝１，２，...，Ｎ）に対し、前述したデータ、すなわち、
（ａ）受信機ｕｍの割り当てられた葉ノード（リーフ）のノード対応値ＮＶｌ
（ｂ）受信機ｕｍのパス上のルートを除くパスノード対応のｓａｌｔ値
を付与する。
【０１７９】
なお、上述の
（ｂ）受信機ｕｍのパス上のルートを除くパスノード対応のｓａｌｔ値
についての受信機に対する配付は、このセットアップ処理時ではなく、次のファイル生成、配付処理において実行してもよい。
【０１８０】
（４．２．２．ファイル生成・配布）
次に、暗号化データの送信エンティティとしての管理センタ（ＴＣ）（送信機）と、暗号化データの受信エンティティであるユーザ（受信機）とがデータファイルを共有するために実行するファイル生成および配布処理の詳細について説明する。この処理は、暗号化データの送信エンティティとしての管理センタ（ＴＣ）が実行する。
【０１８１】
まず、管理センタ（ＴＣ）は、情報（データ）共有するユーザ（受信機）の集合Ｓ⊆Ｎを定義する。
管理センタ（ＴＣ）は、ＣＤビットのランダムなデータキーＤＫを生成し、これを用いて、ユーザｕｉ∈Ｓと共有したい情報（データ）を暗号化する。例えばあるコンテンツデータを共有する場合、コンテンツは、データキーＤＫによって暗号化されて提供される。
【０１８２】
なお、本実施例では、ユーザおよびユーザが所有する受信機を共にｕｉと表す。ここで、ＣＤは、前述したデータ用の暗号関数ＥＤの鍵サイズである。本実施例では、管理センタ（ＴＣ）は、暗号化したデータをファイルに格納するものとする。
【０１８３】
次に、情報（データ）を共有するユーザ（受信機）の集合Ｓ⊆Ｎに含まれない排他対象のユーザをｕｊとする。ｕｊは、ｕｊ∈Ｓ＼Ｎである。この排他対象のユーザｕｊをリボークするものと仮定して、適用ノードキーを決定する。なお、ここでは、ノードキーは、上述のデータキーＤＫ、すなわち、共有情報（例えばコンテンツ）の暗号化に適用する鍵であるデータキーＤＫの暗号化鍵として適用する。
【０１８４】
たとえば、図１６に示すように、ｕ１からｕ１６の１６台の受信機（１６人のユーザ）から、ｕ１，ｕ１１，ｕ１２の３台の受信機（３人のユーザ）を除いた１３人のユーザが、情報（データ）を共有するユーザ（受信機）の集合Ｓを構成するのであれば、５，７，９，１２，１６のノードに対応する５つのノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）
をデータキーＤＫの暗号化鍵として適用する。
【０１８５】
そして、暗号化データとして、データキーＤＫで暗号化したコンテンツ等のデータ（Ｄａｔａ）、すなわち、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
を格納したファイルに、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（本例では、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）
（ｃ）選択ノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）でデータキーＤＫを暗号化した暗号文、すなわち、図１６に示す例では、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
（ｄ）選択したノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）。すなわち、図１６に示す例では、（ｓａｌｔ１０，ｓａｌｔ１１，ｓａｌｔ１４，ｓａｌｔ１５，ｓａｌｔ１８，ｓａｌｔ１９，ｓａｌｔ２０，ｓａｌｔ２１，ｓａｌｔ２２，ｓａｌｔ２３，ｓａｌｔ２４，ｓａｌｔ２５，ｓａｌｔ２８，ｓａｌｔ２９，ｓａｌｔ３０，ｓａｌｔ３１）
を追加して格納する。なお、これらの情報は、ファイルのヘッダに格納してもよい。なお、Ｅａ（Ｘ，Ｙ）は、暗号関数Ｅａを適用してデータＹを鍵Ｘを適用して暗号化したデータであることを示す。
【０１８６】
また、情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報は、上述のユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６ではなく、暗号化に使用したノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）を指定する情報で置き換えてもよい。この場合、上記例においては、５，７，９，１２，１６とノードキーの番号を列挙してもよいし、あるいは、表現木を適用した方法などが適用可能である。
【０１８７】
また、データキーＤＫを各ノードキーで暗号化した暗号文は、ノードキーの対応するノード番号の若い順に格納する。すなわち、上述の例では、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
の順に格納する。
同様に、ノード付加変数（ｓａｌｔ）は、対応するノード番号の若い順に格納する。
【０１８８】
この構成を用いることにより、上述の例では、１６人のユーザ（図１６のｕ１〜ｕ１６）の中で１３人のユーザ（ｕ１，ｕ３〜ｕ１０，ｕ１３〜ｕ１６）と暗号化ファイルを共有しようとする場合に、
５個の暗号文、すなわち、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）と、
１６個のノード付加変数（ｓａｌｔ）、すなわち、
（ｓａｌｔ１０，ｓａｌｔ１１，ｓａｌｔ１４，ｓａｌｔ１５，ｓａｌｔ１８，ｓａｌｔ１９，ｓａｌｔ２０，ｓａｌｔ２１，ｓａｌｔ２２，ｓａｌｔ２３，ｓａｌｔ２４，ｓａｌｔ２５，ｓａｌｔ２８，ｓａｌｔ２９，ｓａｌｔ３０，ｓａｌｔ３１）
を、共有するデータの暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）を格納したファイルに格納すればよい。
【０１８９】
ここで、１つの暗号文のサイズ１６バイト、１つのノード付加変数（ｓａｌｔ）のサイズを１バイトとすると、５個の暗号文、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）と、
１６個のノード付加変数（ｓａｌｔ）、
（ｓａｌｔ１０，ｓａｌｔ１１，ｓａｌｔ１４，ｓａｌｔ１５，ｓａｌｔ１８，ｓａｌｔ１９，ｓａｌｔ２０，ｓａｌｔ２１，ｓａｌｔ２２，ｓａｌｔ２３，ｓａｌｔ２４，ｓａｌｔ２５，ｓａｌｔ２８，ｓａｌｔ２９，ｓａｌｔ３０，ｓａｌｔ３１）
これら、全体のデータサイズは、９６バイトとなる。
【０１９０】
一方、１３人の個別鍵を適用してそれぞれの暗号化データを生成すると、１３個の暗号化データを生成して配布することが必要であるが、１つの暗号文のサイズ１６バイトとした場合、
１３×１６＝２０８バイト
のサイズが必要となり、上述の例で必要とするデータサイズ９６バイトに比較して大きなサイズが必要となる。
【０１９１】
このように、本実施例では、５個の暗号文と１６個のノード付加変数のみで、１３の異なるユーザにおいて共有することを可能とした暗号化データファイルを生成することができ、本実施例の構成では、メッセージサイズ（通信量）を減らし，効率的なファイル共有が可能となる。
【０１９２】
図１７にファイル生成・配布のフローを示す。処理手順について説明する。管理センタ（ＴＣ）は、ステップＳ６０１において、まずその情報を共有する受信機（ユーザ）を決定する。すなわち、情報（データ）を共有するユーザ（受信機）の集合Ｓを決定する。
【０１９３】
次に、ステップＳ６０２において、暗号化データの生成、すなわちデータキーＤＫを適用して、共有すべきデータ（Ｄａｔａ）を暗号化し、暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）を生成する。
【０１９４】
次に、ステップＳ６０３において、暗号文の生成に適用するノードキー、すなわちデータキーＤＫをノードキーで暗号化した暗号文セットの生成に適用するノードキーを選択する。情報（データ）を共有するユーザ（受信機）の集合Ｓ⊆Ｎに含まれない排他対象のユーザをｕｊ（ｕｊ∈Ｓ＼Ｎ）として、この排他対象のユーザｕｊをリボークするものと仮定して、適用ノードキーを決定する。ノードキーは、共有情報（例えばコンテンツ）の暗号化に適用する鍵であるデータキーＤＫの暗号化鍵として適用する。
【０１９５】
次に、ステップＳ６０４において、暗号文を受信する受信機において、復号可能な暗号文を選択するための索引データとしての使用ノードキー指定情報またはユーザ指定情報を生成する。これは、どのノードキーを選択したかを表すタグ情報や表現コードなどである。
【０１９６】
ステップＳ６０５において、暗号化データとして、データキーＤＫで暗号化したコンテンツ等のデータ（Ｄａｔａ）、すなわち、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
を格納したファイルに、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報
（ｃ）選択ノードキーでデータキーＤＫを暗号化した暗号文、すなわち、
ＥＫ（ＮＫ５，ＤＫ）など、
（ｄ）さらに、選択したノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
これらを格納したファイルを生成して、同報通信路を用いて送信する。あるいは情報記録媒体に格納して配布する。
【０１９７】
図１８に特定の選択機器においてのみ復号可能とした暗号化データ生成処理を実行する情報処理装置の機能構成を説明するブロック図を示す。セットアップ処理手段４１０は、先に図１５のフローを参照して説明した処理を実行して、各ノードに対応するノード対応値（ＮＶ）、およびノード付加変数（ｓａｌｔ）を設定するとともに、各受信機に所定のノード対応値、ノード付加変数を付与した階層木構成を構築する。
【０１９８】
データ生成手段４２０は、暗号化データ生成手段４２１、データ共有集合情報生成手段４２２、暗号文セット生成手段４２３、ノード付加変数（ｓａｌｔ）生成（選択）手段４２４を有する。
暗号化データ生成手段４２１は、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
データ共有集合情報生成手段４２２は、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、
暗号文セット生成手段４２３は、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、データ共有機器に基づいて選択された選択ノードキーを適用してデータキーＤＫを暗号化して生成した暗号文セット、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
これらのデータをそれぞれ生成または選択する。データ出力手段４３０は、データ生成手段４２０の生成したデータ（ａ）〜（ｄ）をたとえばブロードキャスト出力する。
【０１９９】
なお、ここで利用する階層木は、下位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した暗号化処理（順方向演算）によって上位ノードのノード対応値が算出可能であり、上位ノードのノード対応値に基づくＲａｂｉｎ暗号を適用した復号処理（逆方向演算）によって下位ノードのノード対応値が算出可能な設定を有する一方向木である。
【０２００】
また、データ生成手段４２０の暗号化データ生成手段４２１の生成する暗号化データは、共有対象のデータ（Ｄａｔａ）を、データキーＤＫを適用して暗号関数ＥＤによって暗号化した暗号化データＥＤ（ＤＫ，Ｄａｔａ）であり、暗号文セット生成手段４２３の生成する暗号文セットは、データキーＤＫを、選択ノードキー（ＮＫｎ）を適用して暗号関数ＥＫによって暗号化した暗号化データＥＫ（ＮＫｎ，ＤＫ）である。階層木構成において、データ共有機器からルートに至るノードに設定されたノードキーを選択ノードキーとして適用してデータキーＤＫを暗号化して暗号文セットの生成処理を行なう。
【０２０１】
また、データ生成手段４２０は、さらに、法Ｍのサイズ｜Ｍ｜を定め、任意サイズの値をサイズ｜Ｍ|のランダムな値にマッピングするマッピング関数Ｈ、および、サイズ｜Ｍ｜の値をサイズＣのランダムな値にマッピングするマッピング関数Ｈｃ、これらのマッピング関数を決定する処理も実行する。
【０２０２】
（４．２．２．ファイル利用）
次に、情報を受信したユーザ側の受信機におけるファイルの利用処理について説明する。上述のファイル、すなわち、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報
（ｃ）選択ノードキーでデータキーＤＫを暗号化した暗号文、
（ｄ）さらに、選択したノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
これらのデータを含むファイルは、同報配信により受信機に提供される。あるいは情報記録媒体に格納されて受信機に提供される。このファイルは、すべての受信機が受領可能であるが、情報（データ）を共有するユーザ（受信機）の集合Ｓ以外の受信機、すなわち、情報（データ）を共有するユーザ（受信機）の集合Ｓ⊆Ｎに含まれない排他対象のユーザをｕｊ（ｕｊ∈Ｓ＼Ｎ）は、選択ノードキーでデータキーＤＫを暗号化した暗号文の復号に適用するノードキーを得ることができないのでデータキーＤＫを得ることができない。
【０２０３】
送信されたファイルを受信したら、まず、ユーザ（受信機）ｕｉは、自身が集合Ｓに含まれることを確認する。管理センタ（ＴＣ）が配布したファイルにおいて、集合Ｓが直接指定されていれば、ｕｉ∈Ｓを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Ｓに含まれていなければ、処理をそこで終了する。
【０２０４】
情報（データ）を共有するユーザ（受信機）の集合Ｓに含まれることを確認した受信機は、受領した暗号文（選択ノードキーでデータキーＤＫを暗号化した暗号文）のセットから自己が復号できる暗号文と、使用すべきノードキーを特定する。
【０２０５】
受領した暗号文のセットに含まれる暗号文の暗号化に用いられているノードキーの中には、自身が直接保持しているノード対応値ＮＶｌと、保持またはファイルから取得できるｓａｌｔから導出できるノードキーが含まれる。情報（データ）を共有するユーザ（受信機）の集合Ｓに含まれる受信機は、ノード対応値ＮＶｌと、ｓａｌｔから、暗号化に適用されたノードキーＮＫｋに対応するノード対応値ＮＶｋを導出し、ノード対応値ＮＶｋからノードキーＮＫｋを導出して、導出したノードキーを用いて暗号文を復号すれば秘密情報としてのデータキーＤＫを得ることができる。受信機が復号すべき暗号文を特定するためには、前述のノードキー指定情報を用いればよい。
【０２０６】
受信機ｕｍは、自身が割り当てられた葉ｌ（エル）のノード対応値ＮＶｌを保持している。もし、特定した復号すべき暗号文に適用されているノードキーが、自身のリーフ（葉）に対応するノードキーであれば、自身が所有するノード対応値（ＮＶｌ）をハッシュ関数ＨＣに適用することで、ノードキーを下式、
ＮＫｌ＝Ｈｃ（ＮＶｌ）
によって算出することができる。
【０２０７】
一方、特定した暗号文に適用されたノードキーが、この葉（リーフ）に対応するノードキーでない場合は、保持またはファイルから取得するノード付加変数ｓａｌｔｌからｌの親ノードのノード対応値、
【数１２】
2007020025.tif 000014
を、下式、
【数１３】
2007020025.tif 000015
により求め、さらにこれを繰り返すことにより、自己ノードｌからルートまでのパス上の任意のノードｋのノード対応値ＮＶｋを導出する。そして、ノードｋのノード対応値ＮＶｋから、ノードｋのノードキーＮＫｋを、
ＮＫｋ＝Ｈｃ（ＮＶｋ）
により導出する。導出したノードキーを適用して暗号文を復号する。
【０２０８】
具体的な例について図１９を参照して説明する。今、受信機ｕ４（ノード番号＝１９）が、情報（データ）を共有するユーザ（受信機）の集合Ｓに含まれる受信機であると仮定し、受信機ｕ４の処理について考察する。暗号化に使われたノードキーには、受信機ｕ４からルートに至るノード｛１，２，４，９，１９｝に含まれるノード番号と一致するものが必ず含まれる。
【０２０９】
秘密情報としてのデータキー［ＤＫ］とすると、Ｅ（ＮＫ１，ＤＫ），Ｅ（ＮＫ２，ＤＫ）、Ｅ（ＮＫ４，ＤＫ），Ｅ（ＮＫ９，ＤＫ），Ｅ（ＮＫ１９，ＤＫ）のいずれかを含む暗号文セットが、ネットワーク配信あるいは記録媒体に格納されて提供される。なお、Ｅ（Ａ，Ｂ）はデータＢを鍵Ａで暗号化したデータを意味する。受信機ｕ４は、受信暗号文セットから、この受信機ｕ４からルートに至るパスノード＝｛１，２，４，９，１９｝に含まれるノード番号と一致するものを検出する。
【０２１０】
ノードキーＮＫ１，ＮＫ２，ＮＫ４，ＮＫ９，ＮＫ１９のいずれが、暗号文の暗号化に適用されたノードキーであるかを判別した後、受信機ｕ４は、判別されたノードキーを算出するため、自己の保持するノード対応値ＮＶ４と、ノード付加変数ｓａｌｔ２、ｓａｌｔ４、ｓａｌｔ９、ｓａｌｔ１９を適用して、上位ノードのノード対応値を算出して、さらに算出したノード対応値からノードキーを算出する。算出手法は、前述したように、
ＮＶ９＝（（ＮＶ１９）２  ＸＯＲ  Ｈ（１９||ｓａｌｔ１９））ｍｏｄＭ
ＮＶ４＝（（ＮＶ９）２  ＸＯＲ  Ｈ（９||ｓａｌｔ９））ｍｏｄＭ
ＮＶ２＝（（ＮＶ４）２  ＸＯＲ  Ｈ（４||ｓａｌｔ４））ｍｏｄＭ
ＮＶ１＝（（ＮＶ２）２  ＸＯＲ  Ｈ（２||ｓａｌｔ２））ｍｏｄＭ
上記式に基づく演算により、下位ノードのノード対応値から上位ノードのノード対応値を算出する。
【０２１１】
さらに、各ノードのノード対応値からノードキーを、
ＮＫ１９＝Ｈｃ（ＮＶ１９）
ＮＫ９＝Ｈｃ（ＮＶ９）
ＮＫ４＝Ｈｃ（ＮＶ４）
ＮＫ２＝Ｈｃ（ＮＶ２）
ＮＫ１＝Ｈｃ（ＮＶ１）
の各式によって算出する。
【０２１２】
受信機ｕ４は、受信機ｕ４からルートに至るパスノード＝｛１，２，４，９，１９｝に含まれるノードのノードキー：ＮＫ１９，ＮＫ９，ＮＫ４，ＮＫ２，ＮＫ１のいずれかを適用して、暗号文セットに含まれる暗号文を復号して秘密情報としてのデータキーＤＫを得ることができる。
【０２１３】
例えば、上述した例におけるユーザ（受信機）ｕ９の処理例について説明する。ユーザ（受信機）ｕ９は、データキーＤＫの暗号化に用いられたノードキーＮＫ１２と、対応する暗号文ＥＫ（ＮＫ１２，ＤＫ）を特定する。ユーザ（受信機）ｕ９は、ノード対応値ＮＶ２４を所持しており、またノード付加変数ｓａｌｔ２４は、受信したファイルに格納されている。これらを用いて、ユーザ（受信機）ｕ９は、ノードキーＮＫ１２を、下式に従って導出する。
ＮＶ１２＝（（ＮＶ２４）２  ＸＯＲ  Ｈ（２４||ｓａｌｔ２４））ｍｏｄＭ
ＮＫ１２＝Ｈｃ（ＮＶ１２）
上記式に従って、ユーザ（受信機）ｕ９は、ノードキーＮＫ１２を算出し、算出したノートキーを用いて、暗号文ＥＫ（ＮＫ１２，ＤＫ）を復号して秘密情報としてのデータキーＤＫを得ることができる。
【０２１４】
なお、上述の処理例は、複数の選択されたユーザの集合Ｓと、管理センタ（ＴＣ）において情報を共有する処理例として説明したが、例えば、集合Ｓに含まれるユーザｕｉが復号によって取得したデータ（Ｄａｔａ）を編集して、この編集データを集合Ｓ内のほかのユーザや管理センタ（ＴＣ）と共有したい場合、上述の処理において、管理センタ（ＴＣ）が実行したと同様の処理を、ユーザｕｉが編集データに対して再度実行して、送信することで編集データの共有が可能となる。
【０２１５】
この場合、ユーザが平文データを編集し編集データ（Ｄａｔａ２）をデータキーＤＫで暗号化したデータ、すなわち、
（ａ）暗号化データＥＤ（ＤＫ，Ｄａｔａ２）を含むファイルを作り、このファイルに、管理センタ（ＴＣ）から受信したオリジナルのファイルに含まれる情報、すなわち、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（例えば、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）、
（ｃ）選択ノードキーでデータキーＤＫを暗号化した暗号文、
（ｄ）さらに、選択したノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
これらのデータをオリジナルファイルからコピーして、編集データの暗号化データを含むファイルに追加格納し、同報通信路を用いて送信する。
【０２１６】
この編集データを含むファイルを受信した集合Ｓ内のユーザおよび管理センタ（ＴＣ）は、上述のユーザｕｉが行ったのと同様にして選択ノードキーでデータキーＤＫを暗号化した暗号文を復号してデータキーＤＫを取得し、取得したデータキーＤＫを適用して、暗号化データＥＤ（ＤＫ，Ｄａｔａ２）の復号処理を実行して平文編集データ（Ｄａｔａ２）を得ることができる。なお、集合Ｓのユーザまたは管理センタ（ＴＣ）は、さらに編集データを、再度編集して、再編集データを同様に暗号化データとして再送信することが可能である。
【０２１７】
図２０に示すフローチャートを参照して、ファイル利用のシーケンスについて説明する。まず、ステップＳ７０１において、ファイルを受信する。ファイルには、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ）、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（例えば、図１６に示す例では、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）、
（ｃ）選択ノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）でデータキーＤＫを暗号化した暗号文、例えば、図１６に示す例では、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
（ｄ）選択したノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）。すなわち、図１６に示す例では、（ｓａｌｔ１０，ｓａｌｔ１１，ｓａｌｔ１４，ｓａｌｔ１５，ｓａｌｔ１８，ｓａｌｔ１９，ｓａｌｔ２０，ｓａｌｔ２１，ｓａｌｔ２２，ｓａｌｔ２３，ｓａｌｔ２４，ｓａｌｔ２５，ｓａｌｔ２８，ｓａｌｔ２９，ｓａｌｔ３０，ｓａｌｔ３１）
これらのデータが含まれる。
【０２１８】
ステップＳ７０２において、ユーザ（受信機）ｕｉは、自身が集合Ｓに含まれることを確認する。管理センタ（ＴＣ）が配布したファイルにおいて、集合Ｓが直接指定されていれば、ｕｉ∈Ｓを直接確かめればよいし、ノードキーを指定する情報が格納されていれば、自身が割り当てられた葉もしくはその先祖のノードがそこに含まれることを確認すればよい。自身が、集合Ｓに含まれていなければ、処理をそこで終了する。
【０２１９】
情報（データ）を共有するユーザ（受信機）の集合Ｓに含まれることを確認した受信機は、ステップＳ７０３において、受領した暗号文のセットに含まれる暗号文の暗号化に用いられているノードキーの中から、自身が直接保持しているノード対応値ＮＶ、保持またはファイルから取得可能なノード付加変数ｓａｌｔから導出可能なノード対応値に基づいて算出可能なノードキーによって暗号化された暗号文を抽出する。
【０２２０】
ステップＳ７０４において、暗号化に使用されたノードキーを、自己が保持するノード対応値ＮＶと、ノード付加変数ｓａｌｔを適用して算出する。この算出は、前述の（数式１）によって上位ノード対応値を算出し、算出したノード対応値に基づいて、下式、
ＮＫｋ＝Ｈｃ（ＮＶｋ）
に従って、必要なノードキーＮＫｋを求める処理として実行される。
【０２２１】
暗号化に使われたノードキーが算出されると、ステップＳ７０５に進み、算出したノードキーを適用して暗号文を復号し、秘密情報としてのデータキーＤＫを取得する。次に、ステップＳ７０６において、暗号化データＥＤ（ＤＫ，Ｄａｔａ）を、求めたデータキーＤＫを用いて復号することにより、平文データ（Ｄａｔａ）を得る。
【０２２２】
次に、図２１に示すフローを参照して、復号して取得したデータ（Ｄａｔａ）の編集によってデータ（Ｄａｔａ２）を生成して、再送信する処理シーケンスについ手説明する。ステップＳ７２１において、復号処理によって取得したデータ（Ｄａｔａ）を編集し、データ（Ｄａｔａ２）を生成する。
【０２２３】
ステップＳ７２２において、データ（Ｄａｔａ２）を、データキーＤＫによって暗号化し、暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ２）を生成して、この暗号化データを格納したファイルを生成する。ステップＳ７２３において、オリジナルファイル、すなわち、編集前のデータ（Ｄａｔａ）の暗号化データを格納したファイルに格納されていた集合Ｓの定義情報と、選択ノードキーによるデータキーＤＫの暗号化データである暗号文セットと、ノード付加変数（ｓａｌｔ）とをオリジナルファイルから取得して、これらをコピーして、編集データ格納ファイルに格納する。
【０２２４】
ステップＳ７２４において、生成ファイルを送信する。生成ファイルには、
（ａ）暗号化データ：ＥＤ（ＤＫ，Ｄａｔａ２）、
（ｂ）情報（データ）を共有するユーザ（受信機）の集合Ｓを指定する情報（例えば、図１６に示す例では、ユーザ（受信機）番号＝ｕ１，ｕ３−ｕ１０，ｕ１３−ｕ１６）、
（ｃ）選択ノードキー（ＮＫ５，ＮＫ７，ＮＫ９，ＮＫ１２，ＮＫ１６）でデータキーＤＫを暗号化した暗号文、例えば、図１６に示す例では、
ＥＫ（ＮＫ５，ＤＫ）、ＥＫ（ＮＫ７，ＤＫ）、ＥＫ（ＮＫ９，ＤＫ）、ＥＫ（ＮＫ１２，ＤＫ）、ＥＫ（ＮＫ１６，ＤＫ）
（ｄ）選択したノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）。すなわち、図１６に示す例では、（ｓａｌｔ１０，ｓａｌｔ１１，ｓａｌｔ１４，ｓａｌｔ１５，ｓａｌｔ１８，ｓａｌｔ１９，ｓａｌｔ２０，ｓａｌｔ２１，ｓａｌｔ２２，ｓａｌｔ２３，ｓａｌｔ２４，ｓａｌｔ２５，ｓａｌｔ２８，ｓａｌｔ２９，ｓａｌｔ３０，ｓａｌｔ３１）
これらのデータが含まれる。
【０２２５】
この編集データを含むファイルを受信した集合Ｓ内のユーザおよび管理センタ（ＴＣ）は、上述のユーザｕｉが行ったのと同様にして、ノード対応値（ＮＶ）と、ノード付加変数（ｓａｌｔ）を適用して生成したノードキー、データキーＤＫを暗号化した暗号文を復号してデータキーＤＫを取得し、取得したデータキーＤＫを適用して、暗号化データＥＤ（ＤＫ，Ｄａｔａ２）の復号処理を実行して編集データ（Ｄａｔａ２）を得る。
【０２２６】
図２２に、暗号化データの復号処理を実行するユーザ機器としての受信機に相当する情報処理装置の機能構成を説明するブロック図を示す。
データ入力手段４５１は、
（ａ）共有対象のデータ（Ｄａｔａ）をデータキーＤＫで暗号化した暗号化データ、
（ｂ）データ共有機器を識別可能とした集合Ｓの情報、および、
（ｃ）ブロードキャストエンクリプション方式における階層木構成に基づいて、前記データ共有機器に基づいて選択された選択ノードキーを適用して前記データキーＤＫを暗号化して生成した暗号文セット、
（ｄ）選択ノードキーに対応するノードの子孫ノードのノード付加変数（ｓａｌｔ）、
上記（ａ）〜（ｄ）の各データを入力する。
【０２２７】
暗号文選択手段４５２は、上述の（ｃ）暗号文セットから、自己のメモリ４５３に保持する保持データに基づいて生成可能なノードキーによって復号可能な暗号文を選択する。自己の対応するノードからルートに至るノードに設定されたノードキーによって暗号化された暗号文を選択する。ノードキー生成手段４５４は、暗号文選択手段４５２において選択した暗号文に適用されたノードキーを、自己の保持する保持データに基づいて生成する。データキー取得手段４５５は、暗号文選択手段４５２において選択した暗号文を、ノードキー生成手段４５４において生成したノードキーを適用して復号し、データキーＤＫを取得する。平文データ取得手段４５６は、取得したデータキーＤＫを適用して暗号化データを復号し、平文データを取得する。
【０２２８】
データ編集手段４５７は、平文データ取得手段４５６において取得した平文データ（Ｄａｔａ）を編集し、編集データ（Ｄａｔａ２）を生成し、ファイル生成手段４５８は、編集データ（Ｄａｔａ２）に、さらに、前述の（ｂ），（ｃ），（ｄ）の各データのコピーデータを含むファイルを生成する。データ出力手段４５９は、ファイル生成手段４５８において生成したファイルを出力する。
【０２２９】
以上、説明したように、本実施例の構成では、ブロードキャストエンクリプション技術を利用して、データキーＤＫによって暗号化したデータを配信するとともに、木構造に配置したノードキーの中で複数のユーザが共有しているノードキーを用いてデータキーＤＫを暗号化して配布する構成とした。本構成により、情報を共有する各人の個別鍵を適用してそれぞれの暗号化データを生成して配信する構成に比較して、メッセージサイズ（通信量）を削減した効率のよい暗号化ファイル共有システムが構築される。
【０２３０】
さらに情報共有集合Ｓに含まれるユーザｕｉが復号して取得したデータを編集した後に，再度同じユーザ集合Ｓ内で、編集データを共有するためにファイルを暗号化して送信する場合にも、編集後のデータをデータキーＤＫで暗号化して、サラニオリジナルファイルに含まれる集合Ｓの定義情報と、選択ノードキーによるデータキーＤＫの暗号化データである暗号文セットと、ノード付加変数（ｓａｌｔ）をコピーして、編集データ格納ファイルに格納して送信することで、編集ファイルについての集合Ｓのメンバにおける共有も効率的で安全に行なうことができる。
【０２３１】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０２３２】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０２３３】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０２３４】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０２３５】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０２３６】
以上、説明したように、本発明の構成によれば、ブロードキャストエンクリプション（Broadcast Encryption）方式の一態様である階層型木構造を適用した情報配信構成において、特定の選択されたユーザ（受信機）の集合においてのみ復号可能としたデータを生成し、提供することが可能となり、特定のユーザの集合におけるデータ共有をセキュアに効率的に実行することができる。具体的には、共有対象のデータをデータキーＤＫによって暗号化し、さらにデータキーＤＫを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットを生成して、例えばブロードキャストによってユーザに提供する。
【０２３７】
さらに、本発明の構成によれば、共有データを受信した受信機において、データを編集して生成した編集データについても、オリジナルデータの共有集合Ｓにおいてのみ利用可能とした形態で、再配信することができる。具体的には、編集データをデータキーＤＫで暗号化した暗号化データを格納したファイルを生成し、オリジナルファイルに含まれるデータキーＤＫを階層木構成の選択されたノードキーを利用して暗号化した暗号文セットと、データ共有集合Ｓに関する情報をコピーして、編集データの暗号化データを格納したファイルに格納してこのファイルを、例えばブロードキャストすることで、オリジナルデータの共有集合Ｓと同様の集合Ｓにおいてのみ利用可能とした形態で、編集データを再配信することができる。
【図面の簡単な説明】
【０２３８】
【図１】ノードが２つに分岐する階層型木構造を説明する図である。
【図２】階層型木構造のリーフに対応して設定される受信機の持つノードキーについて説明する図である。
【図３】データ共有受信機のみに選択的にデータを提供する構成について説明する図である。
【図４】データ送信または受信を実行する情報処理装置の構成例について説明する図である。
【図５】階層型木構造を適用した暗号データ配信処理におけるセットアップ処理のフローを示す図である。
【図６】階層型木構造を適用した暗号データ配信処理情報配信処理の手順について説明するフロー図である。
【図７】階層型木構造を適用した暗号データ配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【図８】階層型木構造を適用した暗号データ配信処理におけるファイル利用のシーケンスについて説明するフローを示す図である。
【図９】階層型木構造を適用した暗号データ配信処理における編集データの再配信シーケンスについて説明するフローを示す図である。
【図１０】階層型木構造を適用した暗号データの受信、復号、編修、再配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【図１１】ＲＳＡ暗号の順方向置換および逆方向置換を用いて定義される木構造について説明する図である。
【図１２】本発明において適用する一方向置換木としてのＲａｂｉｎ  Ｔｒｅｅの生成処理、ノード対応値、ノード付加変数の算出手順を説明するフロー図である。
【図１３】本発明において適用する一方向置換木としてのＲａｂｉｎ  Ｔｒｅｅの木構造について説明する図である。
【図１４】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式において、受信機に付与するデータを説明する図である。
【図１５】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式におけるセットアップ処理のフローを示す図である。
【図１６】データ共有受信機のみに選択的にデータを提供する場合の適用ノードキーについて説明する図である。
【図１７】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式における情報配信処理の手順について説明するフロー図である。
【図１８】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式において、暗号データ配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【図１９】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式において、受信機に付与するデータを説明する図である。
【図２０】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式において、受信機における暗号文の復号処理手順を説明するフロー図である。
【図２１】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式において、編集データの再配信シーケンスについて説明するフローを示す図である。
【図２２】Ｒａｂｉｎ  Ｔｒｅｅを適用した方式において、暗号データの受信、復号、編修、再配信処理を実行する情報処理装置の構成例を説明するブロック図である。
【符号の説明】
【０２３９】
１０１  ノード
２００  情報処理装置
２０１  コントローラ
２０２  演算ユニット
２０３  入出力インタフェース
２０４  セキュア記憶部
２０５  メイン記憶部
２０６  ネットワークインタフェース
２０７  メディアインタフェース
３１０  セットアップ手段
３２０  データ処理手段
３２１  暗号化データ生成手段
３２２  データ共有集合情報生成手段
３２３  暗号文セット生成手段
３３０  データ出力手段
３５１  データ入力手段
３５２  暗号文選択手段
３５３  メモリ
３５４  ノードキー取得手段
３５５  データキー取得手段
３５６  平文データ取得手段
３５７  データ編集手段
３５８  ファイル生成手段
３５９  データ出力手段
４１０  セットアップ手段
４２０  データ処理手段
４２１  暗号化データ生成手段
４２２  データ共有集合情報生成手段
４２３  暗号文セット生成手段
４２４  ノード付加変数生成（選択）手段
４３０  データ出力手段
４５１  データ入力手段
４５２  暗号文選択手段
４５３  メモリ
４５４  ノードキー生成手段
４５５  データキー取得手段
４５６  平文データ取得手段
４５７  データ編集手段
４５８  ファイル生成手段
４５９  データ出力手段
【図１】
2007020025.tif 000016
【図２】
2007020025.tif 000017
【図３】
2007020025.tif 000018
【図４】
2007020025.tif 000019
【図５】
2007020025.tif 000020
【図６】
2007020025.tif 000021
【図７】
2007020025.tif 000022
【図８】
2007020025.tif 000023
【図９】
2007020025.tif 000024
【図１０】
2007020025.tif 000025
【図１１】
2007020025.tif 000026
【図１２】
2007020025.tif 000027
【図１３】
2007020025.tif 000028
【図１４】
2007020025.tif 000029
【図１５】
2007020025.tif 000030
【図１６】
2007020025.tif 000031
【図１７】
2007020025.tif 000032
【図１８】
2007020025.tif 000033
【図１９】
2007020025.tif 000034
【図２０】
2007020025.tif 000035
【図２１】
2007020025.tif 000036
【図２２】
2007020025.tif 000037