(57)【要約】【課題】受信した暗号文を復号装置に入力してから平文を取得するまでの処理時間の短縮が図れる復号装置及び復号方法を提供する。【解決手段】木構造中の任意の２つのノードによりそれぞれ特定される複数の秘密鍵を各秘密鍵に対応する２つのノードの木構造中の位置に基づき予め定められた順序に記憶するとともに、木構造中の任意の１つのリーフに対応する復号装置識別情報を記憶し、各暗号文及び各暗号文を復号するための復号鍵に対応する木構造中の任意の２つのノードを示したインデックス情報を取得すると、取得された暗号文のうちの復号可能な暗号文のインデックス情報が示す２つのノードの木構造中での位置と、復号装置識別情報が示すリーフの木構造中での位置とに基づき、複数の秘密鍵のうち復号可能な暗号文を復号するための復号鍵を導出可能な秘密鍵の記憶されている順番を算出して当該秘密鍵を得、当該秘密鍵を用いて復号鍵を導出して、復号可能と判定された暗号文を復号する。【選択図】図１
2006253822.tif 000002
【特許請求の範囲】
【請求項１】
暗号文を復号する復号装置において、
予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵を記憶する秘密鍵記憶手段と、
前記木構造の任意の１つのリーフに対応する当該復号装置の識別情報を記憶する識別情報記憶手段と、
１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示した１つ又は複数の暗号文インデックス情報を含むデータを取得する取得手段と、
前記取得手段で取得された暗号文インデックス情報が示す２つのノードのうちの一方が、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると判定する判定手段と、
前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する選択手段と、
前記選択手段で選択された秘密鍵を用いて、前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出する導出手段と、
前記判定手段で復号可能と判定された暗号文を前記導出手段で導出された復号鍵を用いて復号する復号手段と、
を具備することを特徴とする復号装置。
【請求項２】
前記判定手段は、前記取得手段で取得された１つ又は複数の暗号文のうち、前記暗号文インデックス情報が示す２つのノードのうちの一方のノードが、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフと共通する祖先のノードの数が最も多い暗号文から順に、復号可能か否かを判定することを特徴とする請求項１記載の復号装置。
【請求項３】
前記秘密鍵記憶手段は、前記１つ又は複数の秘密鍵を、各秘密鍵に対応する前記２つのノードの前記木構造中の位置に基づき予め定められた順序に記憶し、
前記選択手段は、前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵のうち、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵の記憶されている順番を算出することを特徴とする請求項１記載の復号装置。
【請求項４】
前記秘密鍵記憶手段は、前記１つ又は複数の秘密鍵を記憶するとともに、前記１つ又は複数の秘密鍵のそれぞれに対し当該秘密鍵に対応する前記木構造中の２つのノードを示した秘密鍵インデックス情報を記憶することを特徴とする請求項１記載の復号装置。
【請求項５】
暗号文を復号する復号装置において、
予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵及び前記１つ又は複数の秘密鍵のそれぞれに対し当該秘密鍵に対応する前記木構造中の２つのノードを示した１つ又は複数の秘密鍵インデックス情報を記憶する秘密鍵記憶手段と、
前記木構造の任意の１つのリーフに対応する当該復号装置の識別情報を記憶する識別情報記憶手段と、
１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示した１つ又は複数の暗号文インデックス情報を含むデータを取得する取得手段と、
前記取得手段で取得された１つ又は複数の暗号文のうち、前記暗号文インデックス情報が示す２つのノードのうちの一方のノードが、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフと共通する祖先のノードの数が最も多い暗号文から順に、当該暗号文が復号可能か否かを判定し、前記暗号文インデックス情報が示す２つのノードのうちの一方が、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると判定する判定手段と、
前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記秘密鍵記憶手段で記憶された各秘密鍵インデックス情報が示す２つのノードの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する選択手段と、
前記選択手段で選択された秘密鍵を用いて、前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置と、前記選択手段で選択された秘密鍵の秘密鍵インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置とに基づき、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出する導出手段と、
前記判定手段で復号可能と判定された暗号文を前記導出手段で導出された復号鍵を用いて復号する復号手段と、
を具備することを特徴とする復号装置。
【請求項６】
暗号文を復号する復号装置において、
予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵及び前記１つ又は複数の秘密鍵のそれぞれに対し当該秘密鍵に対応する前記木構造中の２つのノードを示した１つ又は複数の秘密鍵インデックス情報を記憶する秘密鍵記憶手段と、
前記木構造の任意の１つのリーフに対応する当該復号装置の識別情報を記憶する識別情報記憶手段と、
１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示した１つ又は複数の暗号文インデックス情報を含むデータを取得する取得手段と、
前記取得手段で取得された１つ又は複数の暗号文のうち、前記暗号文インデックス情報が示す２つのノードのうちの一方のノードが、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフと共通する祖先のノードの数が最も多い暗号文から順に、当該暗号文が復号可能か否かを判定し、前記暗号文インデックス情報が示す２つのノードのうちの一方が、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると判定する判定手段と、
前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記秘密鍵記憶手段で記憶された各秘密鍵インデックス情報が示す２つのノードの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する選択手段と、
前記選択手段で選択された秘密鍵を用いて、前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出する導出手段と、
前記判定手段で復号可能と判定された暗号文を前記導出手段で導出された復号鍵を用いて復号する復号手段と、
を具備することを特徴とする復号装置。
【請求項７】
前記秘密鍵記憶手段は、前記１つ又は複数の秘密鍵を、各秘密鍵に対応する前記２つのノードの前記木構造中の位置に基づき予め定められた順序に記憶することを特徴とする請求項６又は７記載の復号装置。
【請求項８】
暗号文を復号する復号装置において、
予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵及び前記１つ又は複数の秘密鍵のそれぞれに対し当該秘密鍵に対応する前記木構造中の２つのノードを示した１つ又は複数の秘密鍵インデックス情報を記憶する秘密鍵記憶手段と、
前記木構造の任意の１つのリーフに対応する当該復号装置の識別情報を記憶する識別情報記憶手段と、
１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示した１つ又は複数の暗号文インデックス情報を含むデータを取得する取得手段と、
前記取得手段で取得された暗号文の暗号文インデックス情報が示す２つのノードのうちの一方が、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると判定する判定手段と、
前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する選択手段と、
前記選択手段で選択された秘密鍵を用いて、前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置と、前記選択手段で選択された秘密鍵の秘密鍵インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置とに基づき、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出する導出手段と、
前記判定手段で復号可能と判定された暗号文を前記導出手段で導出された復号鍵を用いて復号する復号手段と、
を具備することを特徴とする復号装置。
【請求項９】
前記判定手段は、前記取得手段で取得された１つ又は複数の暗号文のうち、前記暗号文インデックス情報が示す２つのノードのうちの一方のノードが、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフと共通する祖先のノードの数が最も多い暗号文から順に、復号可能か否かを判定することを特徴とする請求項８記載の復号装置。
【請求項１０】
前記秘密鍵記憶手段は、前記１つ又は複数の秘密鍵を、各秘密鍵に対応する前記２つのノードの前記木構造中の位置に基づき予め定められた順序に記憶し、
前記選択手段は、前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵のうち、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵の記憶されている順番を算出することを特徴とする請求項８記載の復号装置。
【請求項１１】
予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵を記憶する秘密鍵記憶手段と、
前記木構造の任意の１つのリーフに対応する当該復号装置の識別情報を記憶する識別情報記憶手段と、
を備えた復号装置における暗号文の復号方法であって、
１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示した１つ又は複数の暗号文インデックス情報を含むデータを取得する取得ステップと、
前記取得ステップで取得された暗号文インデックス情報が示す２つのノードのうちの一方が、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると判定する判定ステップと、
前記判定ステップで復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定ステップで復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する選択ステップと、
前記選択ステップで選択された秘密鍵を用いて、前記判定ステップで復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記判定ステップで復号可能と判定された暗号文を復号するための復号鍵を導出する導出ステップと、
前記判定ステップで復号可能と判定された暗号文を前記導出ステップで導出された復号鍵を用いて復号する復号ステップと、
を有することを特徴とする復号方法。
【請求項１２】
前記判定ステップは、前記取得ステップで取得された１つ又は複数の暗号文のうち、前記暗号文インデックス情報が示す２つのノードのうちの一方のノードが、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフと共通する祖先のノードの数が最も多い暗号文から順に、復号可能か否かを判定することを特徴とする請求項１１記載の復号方法。
【請求項１３】
前記秘密鍵記憶手段は、前記１つ又は複数の秘密鍵を、各秘密鍵に対応する前記２つのノードの前記木構造中の位置に基づき予め定められた順序に記憶し、
前記選択ステップは、前記判定ステップで復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵のうち、前記判定ステップで復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵の記憶されている順番を算出することを特徴とする請求項１１記載の復号方法。
【請求項１４】
前記秘密鍵記憶手段は、前記１つ又は複数の秘密鍵を記憶するとともに、前記１つ又は複数の秘密鍵のそれぞれに対し当該秘密鍵に対応する前記木構造中の２つのノードを示した秘密鍵インデックス情報を記憶することを特徴とする請求項１１記載の復号方法。
【請求項１５】
コンピュータを、
予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵を記憶する秘密鍵記憶手段、
前記木構造の任意の１つのリーフに対応する当該復号装置の識別情報を記憶する識別情報記憶手段、
１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示した１つ又は複数の暗号文インデックス情報を含むデータを取得する取得手段、
前記取得手段で取得された暗号文インデックス情報が示す２つのノードのうちの一方が、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると判定する判定手段、
前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する選択手段、
前記選択手段で選択された秘密鍵を用いて、前記判定手段で復号可能と判定された暗号文の暗号文インデックス情報が示す２つのノードのうちの少なくとも一方の前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出する導出手段と、
前記判定手段で復号可能と判定された暗号文を前記導出手段で導出された復号鍵を用いて復号する復号手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号文を復号する復号装置に関する。
【背景技術】
【０００２】
従来から放送型暗号通信における各種の暗号化方式が知られており、その中でも秘密鍵の無効化を行うことができる方式は有用である。秘密鍵の無効化とは、ある特定の秘密鍵を持つ復号装置（無効復号装置と呼ぶ）では復号不可能であり、かつそれ以外の復号装置では復号可能な形で平文（暗号化対象のデータ）を暗号化することにより、無効復号装置の秘密鍵をシステムから排除することである。
【０００３】
例えば、ある復号装置の秘密鍵が何らかの原因により流出した場合、流出した秘密鍵を入手した（送信者が復号を許可しない）第三者が暗号文を復号する恐れがあるため、当該復号装置の秘密鍵を無効化する必要が生じるが、このような場合に秘密鍵の無効化を行えば、流出した（コピーされたものも含めた）全ての秘密鍵を回収することなく排除できる。
【０００４】
秘密鍵の無効化を達成している暗号化方式として、復号装置集合を二分木構造化したSubset Difference方式（以下、ＳＤ方式と呼ぶ）が知られている（非特許文献１参照）。
【０００５】
上記方式は、送信オーバヘッドが無効復号装置数にのみ比例するという意味において効率的な方式である。ＳＤ方式においては、各復号装置識別情報をリーフ（木構造中の最下位ノードをリーフと呼ぶ）に割り当てた二分木が想定され、二分木構造中の任意の２つのノードからなる各ノード組に対して秘密鍵がそれぞれ割り当てられる。復号装置には、当該復号装置識別情報が示すリーフが上記２つのノードのうちの一方のノードを祖先に持ち、且つ他方のノードを祖先に持たない条件を満たす複数の秘密鍵とそれらの秘密鍵それぞれに対応する２つのノードを表すインデックス情報が割り当てられる。ここで、祖先とは親も含み、例えば、図３において、ノード「１」の祖先ノードはノード「９」「１３」「１５」である。実際には、上記条件を満たす全ての秘密鍵が当該復号装置に与えられるわけではなく、一方向性関数を導入することにより、上記条件を満たす全ての秘密鍵を導出可能な、より少数の秘密鍵とそれらの秘密鍵それぞれに対応するインデックス情報が当該復号装置に与えられる。
【０００６】
送信者が送信する暗号文は一般に複数であり、各暗号文には、暗号文を復号するための復号鍵に割り当てられた２つのノードを表すインデックス情報がそれぞれ付加されている。複数の暗号文を受信した受信者（復号装置）は、各暗号文が当該復号装置にとって復号可能か否かをそれぞれ判定する（以下、この処理を暗号文判定と呼ぶ）。当該復号装置が無効復号装置でなければ、復号可能な暗号文が必ず存在する。
【０００７】
次に、当該復号装置が保持する複数の秘密鍵の中から、復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する（以下、この処理を秘密鍵選択と呼ぶ）。
【０００８】
最後に、選択された秘密鍵から復号鍵を導出し、導出された復号鍵を用いて暗号文を復号する。
【非特許文献１】D. Naor, M. Naor, and J. Lotspiech: "Revocation and Tracing Schemes for Stateless Receivers," In Proc. of CRYPTO '01, LNCS 2139, Springer-Verlag, pp. 41-62, 2001
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述のように、秘密鍵の無効化を達成している暗号化方式として、送信オーバヘッドの観点からは、ＳＤ方式を用いることが望ましいが、ＳＤ方式においては以下の問題がある。
【００１０】
（問題）受信した暗号文を復号装置に入力してから平文を取得するまでの処理時間が長くなってしまう場合がある。暗号文判定と秘密鍵選択には総当たり探索を行わなければならず、最悪の場合、受信した暗号文数回の暗号文判定と、秘密鍵選択には復号装置が保持する秘密鍵数回の探索が必要となる。一般に、受信する暗号文の数と復号装置が保持する秘密鍵の数は多いため、それに伴い暗号文判定と秘密鍵選択に係る処理時間が増加し、その結果、受信した暗号文を復号装置に入力してから平文を取得するまでの処理時間が長くなってしまう場合が少なくない。
【００１１】
そこで、本発明は、上記問題点に鑑み、受信した暗号文を復号装置に入力してから平文を取得するまでの処理時間の短縮が図れる復号装置及び復号方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
（１）本発明は、（ａ）予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵及び前記１つ又は複数の秘密鍵のそれぞれに対し当該秘密鍵に対応する前記木構造中の２つのノードを示した１つ又は複数のインデックス情報を秘密鍵記憶手段で記憶し、（ｂ）前記木構造の任意の１つのリーフに対応する復号装置識別情報を識別情報記憶手段で記憶し、（ｃ）１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示した１つ又は複数のインデックス情報を含むデータを取得手段で取得すると、（ｄ）前記取得手段で取得された暗号文のインデックス情報が示す２つのノードのうちの一方が、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると判定手段で判定する。（ｅ）前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択手段で選択し、（ｆ）前記選択手段で選択された秘密鍵を用いて、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出手段で導出し、（ｇ）前記判定手段で復号可能と判定された暗号文を前記導出手段で導出された復号鍵を用いて復号する。
【００１３】
（２）前記判定手段では、前記取得手段で取得された１つ又は複数の暗号文のうち、前記インデックス情報が示す２つのノードのうちの一方のノードが、前記木構造中で前記識別情報記憶手段で記憶された識別情報が示すリーフと共通する祖先のノードの数が最も多い暗号文から順に、復号可能か否かを判定する。これにより、判定する暗号文の数を大幅に削減することができ、暗号文判定に係る処理時間の短縮が図れる。
【００１４】
（３）前記選択手段では、前記判定手段で復号可能と判定された暗号文のインデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵の中から、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する。これにより、前記復号鍵を導出可能な秘密鍵を全数探索する必要がなく、秘密鍵選択に係る処理時間の短縮が図れる。さらに、前記秘密鍵記憶手段では、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵を、各秘密鍵に対応する前記２つのノードの前記木構造中の位置に基づき予め定められた順序に記憶する。秘密鍵選択の際には、前記判定手段で復号可能と判定された暗号文のインデックス情報が示す２つのノードの前記木構造中での位置と、前記識別情報記憶手段で記憶された識別情報が示すリーフの前記木構造中での位置とに基づき、前記秘密鍵記憶手段で記憶された１つ又は複数の秘密鍵のうち、前記判定手段で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵の記憶されている順番を算出する。これにより、前記復号鍵を導出可能な秘密鍵のメモリ上での格納場所を探索する必要がなく、秘密鍵選択に係る処理時間のさらなる短縮が図れる。
【００１５】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
【００１６】
また、装置又は方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための（あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための）プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【発明の効果】
【００１７】
本発明によれば、受信した暗号文を復号装置に入力してから平文を取得するまでの処理時間の短縮が図れる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照しながら発明の実施の形態を説明する。
【００１９】
（第１の実施形態）
図１は第１の実施形態に係る暗号文データ送信側の送信システム及び暗号文データ受信側の受信システムを含むデータ通信システムの構成例を示す図である。
【００２０】
このデータ通信システムは、図１に示すように、暗号化装置１０を含む送信システム１と、復号装置２０をそれぞれ含むｎ個の受信システム２とがネットワーク３を介して接続されている。
【００２１】
ここで、送信システム１は、平文を暗号化してネットワーク３を介してブロードキャストあるいはマルチキャストするものである。なお、平文とは、例えば、動画データ、音声データ、テキストデータ、静止画データなどのデジタルデータであってもよいし、他の暗号文を復号するための復号鍵又はその復号鍵を導出するためのデータであってもよい。
【００２２】
ｎ個の受信システム２は、送信システム１によりブロードキャストあるいはマルチキャストされた暗号文データをネットワーク３を介して受信し復号するものである。
【００２３】
なお、図１のデータ通信システムでは、各ネットワークノードが、送信システム１及び受信システム２のうちのいずれか一方に対応し、１つのネットワークノードのみ送信システム１である場合を示しているが、送信システム１が複数存在しても構わない。また、１つのネットワークノードが、送信システム１の機能と受信システム２の機能とを兼ね備えてもよい。また、全てのネットワークノードが送信システム１の機能と受信システム２の機能とを兼ね備えることによって、相互に暗号通信可能としてもよい。
【００２４】
ネットワーク３は、有線ネットワークでも、無線ネットワークでもよい。また、有線ネットワークと無線ネットワークを両方使用したものであってもよい。また、双方向ネットワークでも、単方向ネットワークでもよい。また、ネットワーク３は、オフラインであってもよい。すなわち、送信システム１で生成された暗号文等をＤＶＤ等の記録媒体に格納して各受信システム２へ渡し、各受信システム２では、当該記録媒体から暗号文等を読み取り、復号する。
【００２５】
すなわち、以下の実施形態にかかる送信システム１及び受信システム２では、両者の間で情報データを受け渡しするための手段が、有線・無線通信や記録媒体などのうちのどの手段であっても適用可能である。
【００２６】
図１の暗号化装置１０と復号装置２０を説明する前に、復号装置識別情報をリーフに割り当てた木構造と、復号装置へ与えられる秘密鍵について説明する。本実施形態における各復号装置は固有の復号装置識別情報を持ち、各復号装置識別情報は、図２のように木構造上の任意の１つにリーフに対応する。図２は、復号装置識別情報をリーフに割り当てた木構造を模式的に示したものである。
【００２７】
図２において、各復号装置識別情報は木構造の各リーフにそれぞれ割り当てられる。木構造中の最上位ノードをルートと呼ぶ。この木構造のリーフノードの高さ（height）を「０」、ルートノードの高さ（height）を「３１」とすると、リーフの数、すなわち、復号装置の数は全部で２３１個となる。秘密鍵は木構造中の２つのノードに対して１つ割り当てられる。以下、２つのノードをｕノード、ｖノードと表記したとき、特に断りのない限り、ｕノードはより上位に位置するノードであるとする。ある２つのノードであるｕノード、ｖノードに対して割り当てられる秘密鍵をｋｕｖと表記し、ｕノードを祖先に持ち、且つｖノードを祖先に持たないリーフの集合をＳｕｖと表記する。このとき、復号装置識別情報ｄに割り当てられたリーフがＳｕｖに属している場合、秘密鍵としてｋｕｖを与える（もしくは後述のように導出可能とする）。後述のように、復号装置は、秘密鍵を用いて暗号文を復号するための復号鍵を導出する。
【００２８】
図３は、図２に示した木構造をより具体的に示したもので、ルートノード「１５」の高さ（height）が「３」である場合の木構造を示したものである。この場合、リーフの数、すなわち、復号装置の数は全部で２３＝８個となる。ｕノードを図３のノード「１３」、ｖノードを図３のノード「１０」とすると、ｕノードを祖先に持ち、且つｖノードを祖先に持たないリーフの集合をＳｕｖ＝Ｓ（１３，１０）は、｛ノード「１」、ノード「２」｝＝｛１，２｝となり、Ｓ（１３，１０）に属するリーフ（復号装置）には、ｋｕｖ＝ｋ（１３，１０）が割り当てられる。
【００２９】
あり得る全てのｕノード、ｖノードの組み合わせに対して秘密鍵ｋｕｖを生成すれば、全ての復号装置に与える秘密鍵が生成されることになる。ここで、あり得る全てのｕノード、ｖノードの組み合わせに対して秘密鍵ｋｕｖを独立に生成する場合、各復号装置が保持する秘密鍵数が非常に大きくなってしまうので、非特許文献１に述べられているように、図４に示した要領で秘密鍵を与える。
【００３０】
図４では、ノード「１５」をルートとする図３と同様の木構造を例にとり示している。全ての秘密鍵を独立に生成する場合、リーフ「１」に相当する復号装置に与えられる秘密鍵は、ｋ（１５，１４）、ｋ（１５，１１）、ｋ（１５，１２）、ｋ（１５，５）、ｋ（１５，６）、ｋ（１５，７）、ｋ（１５，８）、ｋ（１５，１０）、ｋ（１５，３）、ｋ（１５，４）、ｋ（１５，２）、ｋ（１３，１０）、ｋ（１３，３）、ｋ（１３，４）、ｋ（１３，２）、ｋ（９，２）となる。これに対し、次式で定義される一方向性関数Ｇを導入し、秘密鍵数の削減を行う。
【００３１】
Ｇ：｛０，１｝ｘ→｛０，１｝３ｘ
例えば、次式のように秘密鍵ｋ（１５，１４）を用いて秘密鍵ｋ（１５，１１）、ｋ（１５，１２）を導出可能にする。
【００３２】
Ｇ（ｋ（１５，１４））＝ｋ（１５，１１）｜｜Ｄｋ（１５，１４）｜｜ｋ（１５，１２）
ここで、｜｜はデータの連結を表し、Ｄｋ（１５，１４）はｕノードが「１５」、ｖノードが「１４」を表すインデックス情報が付加されている暗号文を復号するための復号鍵である。また、関数Ｇの構成方法は、例えば、出力長ｘのハッシュ関数Ｈを用いて次式のように構成する方法がある。
【００３３】
Ｇ（ｋ（１５，１４））
＝Ｈ（ｋ（１５，１４）｜｜ｓ０）
｜｜Ｈ（ｋ（１５，１４）｜｜ｓ１）
｜｜Ｈ（ｋ（１５，１４）｜｜ｓ２）
＝ｋ（１５，１１）｜｜Ｄｋ（１５，１４）｜｜ｋ（１５，１２）
ここで、ｓ０、ｓ１、ｓ２は定数である。そして、上記例の場合、ｓ０は、秘密鍵ｋ（１５，１４）から、ｕノードがノード「１５」であり、ｖノードがノード「１４」の左の子ノード「１１」とする秘密鍵ｋ（１５，１１）を求めるための値である。ｓ１は、秘密鍵ｋ（１５，１４）から、ｕノードがノード「１５」、ｖノードがノード「１４」を表すインデックス情報が付加されている暗号文を復号するための復号鍵Ｄｋ（１５，１４）を求めるための値である。ｓ２は、秘密鍵ｋ（１５，１４）から、ｕノードがノード「１５」であり、ｖノードがノード「１４」の右の子ノード「１２」とする秘密鍵ｋ（１５，１２）を求めるための値である。
【００３４】
このような一方向性関数Ｇを導入すれば、リーフ「１」に相当する復号装置に与えられる秘密鍵として、ｋ（１５，１４）、ｋ（１５，１０）、ｋ（１５，２）、ｋ（１３，１０）、ｋ（１３，２）、ｋ（９，２）の６つを与えておけば、それ以外の秘密鍵は一方向性関数Ｇを用いることにより導出可能である。例えば、秘密鍵ｋ（１５，１４）に、上記一方向性関数Ｇを適用することで、秘密鍵ｋ（１５，１１）、ｋ（１５，１２）が得られ、さらにｋ（１５，１１）に上記一方向性関数Ｇを適用することでｋ（１５，５）、ｋ（１５，６）が得られ、ｋ（１５，１２）に上記一方向性関数Ｇを適用することでｋ（１５，７）、ｋ（１５，８）が得られる。同様にして、ｋ（１３，１０）からはｋ（１３，３）、ｋ（１３，４）が得られる。なお、上述の秘密鍵に加え、全ての復号装置に共通の秘密鍵（root key）を与えてもよい。
【００３５】
木構造を分割してそれぞれ独立に扱うことにより、秘密鍵数をさらに削減することが可能であることが知られている。例えば、図３の木構造を２つに分割し、ノード「１３」とノード「１４」をそれぞれルートとする木構造に分割する場合、リーフ「１」に相当する復号装置が与えられる秘密鍵は、上記６つの秘密鍵のうち、ノード「１３」をルートとする木構造上のｋ（１３，１０）、ｋ（１３，２）、ｋ（９，２）の３つとなる。ただし、この場合、送信オーバヘッドが約２倍となってしまう。
【００３６】
図１の説明に戻る。送信システム１の暗号化装置１０は、暗号化鍵格納部１１、無効復号装置識別情報格納部１２、木構造情報格納部１３、メッセージ暗号化部１４、インデックス情報生成部１５から構成される。なお、この他に、ネットワーク３へ接続するためのインターフェース手段など適宜備えるものとする。
【００３７】
暗号化鍵格納部１１は、任意のｕノード、ｖノードの組み合わせに対応する暗号化鍵が格納されている。ここで、平文の暗号化には共通鍵暗号方式、公開鍵暗号方式のいずれを用いてもよい。説明を簡単にするため、以下、平文の暗号化に共通鍵暗号方式を用いる場合を考える。この場合、あるｕノード、ｖノードに対応する暗号化鍵と復号鍵は同一である。また、暗号化鍵格納部１１には全ての暗号鍵を格納せずに、任意のｕノード、ｖノードの組み合わせに対応する暗号化鍵が導出可能となる情報が格納されていてもよい。
【００３８】
無効復号装置識別情報格納部１２は、メッセージの復号を許可しない復号装置の識別情報を格納する。木構造情報格納部１３は、木構造の規模に関する情報（例えば、木構造の高さ、リーフの数などを特定することのできる情報）を格納する。
【００３９】
図５は、暗号化装置１０における暗号化処理動作を説明するためのフローチャートである。暗号化部１４では、無効復号装置識別情報格納部１２から無効復号装置の識別情報を受け取り、また、木構造情報格納部１３から木構造の規模に関する情報を受け取り（ステップＳ１）、非特許文献１に記載された手法を用いて、暗号文の復号が可能な有効復号装置の識別情報が示すリーフの集合をＳｕｖの和集合として表したときの各Ｓｕｖにおけるｕノードとｖノードの組み合わせを求める（ステップＳ２）。
【００４０】
例えば、図６に示すように、リーフ「１」〜「８」が復号装置「１」〜「８」にそれぞれ対応し、復号装置「２」「５」「６」が無効復号装置であるとする。この場合、無効復号装置を除く有効復号装置「１」「３」「４」「７」「８」に対応するリーフの集合｛１，３，４，７，８｝は、ノード「１３」を祖先に持ち且つノード「２」を祖先に持たないリーフの集合Ｓ（１３，２）＝｛１，３、４｝と、ノード「１４」を祖先に持ち且つノード「１１」を祖先に持たないリーフの集合Ｓ（１４，１１）＝｛７，８｝の和集合Ｓ（１３，２）＋Ｓ（１４、１１）、すなわち、
｛１，３，４，７，８｝＝Ｓ（１３，２）＋Ｓ（１４、１１）
と表すことができる。
【００４１】
このとき、Ｓ（１３，２）のｕノード及びｖノードの組み合わせに対応する秘密鍵ｋ（１３，２）は、有効復号装置「１」「３」「４」は与えられている（もしくは導出可能である）が、無効復号装置「２」には与えられていない（且つ導出不可能である）。なお、リーフ「５」〜「８」にも、もともと秘密鍵ｋ（１３，２）は与えられていない（且つ導出不可能である）。また、Ｓ（１４，１１）のｕノード及びｖノードの組み合わせに対応する秘密鍵ｋ（１４，１１）は、リーフ「７」「８」には与えられているが、リーフ「５」「６」には与えられていない（且つ導出不可能である）。なお、リーフ「１」〜「４」にも、もともと秘密鍵ｋ（１４，１１）は与えられていない（且つ導出不可能である）。
【００４２】
従って、図６の場合には、無効復号装置のリーフ「２」には与えられていない秘密鍵ｋ（１３、２）から導出可能な復号鍵Ｄｋ（１３，２）に対応する暗号化鍵（平文の暗号化に共通鍵暗号方式を用いる場合、対応する暗号化鍵もＤｋ（１３，２）である）と、無効復号装置のリーフ「５」「６」には与えられていない秘密鍵ｋ（１４、１１）から導出可能な復号鍵Ｄｋ（１４，１１）に対応する暗号化鍵（平文の暗号化に共通鍵暗号方式を用いる場合、対応する暗号化鍵もＤｋ（１４，１１）である）とが暗号化鍵格納部１１から取得される（ステップＳ３）。そして、得られた暗号化鍵を用いて、入力された平文をそれぞれ暗号化する（ステップＳ４）。
【００４３】
なお、図６に示すような木構造の場合、平文を暗号化鍵Ｄｋ（１３，２）と暗号化鍵Ｄｋ（１４，１１）のそれぞれを用いて暗号化して、２つの暗号文を生成すると、この暗号文を受け取った復号装置「１」〜「８」のうち、有効復号装置「１」「３」「４」「７」「８」のみが、当該暗号文を復号することができる。
【００４４】
次に、インデックス情報生成部１５は、生成された暗号文を復号するための各復号鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報を生成する（ステップＳ５）。そして、それぞれの暗号文に、当該暗号文を復号するための復号鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報を付加し、その結果得られるデータを暗号文データとして出力する（ステップＳ６）。本実施形態においては、特に断りのない限り、暗号文とは平文を暗号化したものであり、暗号文データは、暗号文と当該暗号文に対応するインデックス情報とを含むものである。
【００４５】
図７は、暗号化装置１０から出力される暗号文データのデータ構造の一例を示したものである。図７に示すように、暗号文データは、ステップＳ３で得られた暗号化鍵を用いて生成された暗号文と、当該暗号文を復号するための復号鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報（暗号文インテックス情報）とが含まれている。例えば、暗号化鍵Ｄｋ（１３、２）を用いて生成された暗号文［１］には、「１３、２」というインデックス情報が付加され、暗号化鍵Ｄｋ（１４、１１）を用いて生成された暗号文［２］には、「１４、１１」というインデックス情報が付加されている。
【００４６】
受信システムの復号装置２０は、暗号文データ取得部２１、暗号文判定部２２、復号部２３、秘密鍵格納部２４、装置識別情報格納部２５、秘密鍵選択部２６、復号鍵導出部２７から構成される。なお、この他に、ネットワーク３へ接続するためのインターフェース手段など適宜備えるものとする。
【００４７】
秘密鍵格納部２４には、図８に示すように、復号装置２０に与えられた秘密鍵と当該秘密鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報（秘密鍵インデックス情報）とがそれぞれ格納されている（もしくは後述のように当該復号装置の秘密鍵のみが格納されていてもよい）。
【００４８】
装置識別情報格納部２５には、当該復号装置の識別情報が格納されている。
【００４９】
暗号文データ取得部２１は、復号装置２０に入力された暗号文データを取得する。
【００５０】
暗号文判定部２２は、当該復号装置が暗号文データ取得部２１において取得された暗号文を復号可能であるか否かを判定する。
【００５１】
秘密鍵選択部２６は、秘密鍵格納部２４に格納されている秘密鍵の中から、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する。
【００５２】
復号鍵導出部２７は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文の復号するための復号鍵を導出する。
【００５３】
復号部２３は、復号鍵導出部２７において導出された復号鍵を用いて暗号文判定部２２において復号可能と判定された暗号文を復号する。
【００５４】
秘密鍵格納部２４に格納されている秘密鍵は予め定められた順序に格納されていてもよい。図９に示すフローチャートを参照して、格納順序決定方法を説明する。始めに、変数ｉ、ｊ、ｋをそれぞれ「１」に設定する（ステップＳ１１）。当該復号装置の識別情報を表すリーフをＡ１ノードとする（ステップＳ１２）。Ａｋノードの親ノードをｕノードとし、Ａｊノードの兄弟ノードをｖノードとし（ステップＳ１３）、上記ｕノード、ｖノードの組み合わせに対応する秘密鍵をｉ番目の秘密鍵として格納する（ステップＳ１４）。
【００５５】
次に、与えられた秘密鍵が全て格納されたか否かを判定し（ステップＳ１５）、全て格納済みならば終了する。そうでなければ、ｉを１だけインクリメントし、ｊを１だけデクリメントする（ステップＳ１６）。ｊ＝０であるか否かを判定し、ｊ＝０でない場合（ステップＳ１７）、ステップ１３へ戻る。ｊ＝０である場合（ステップＳ１７）、Ａｋノードの親ノードをＡｋ＋１ノードとした後（ステップＳ１８）、ｋを１だけインクリメントし、（インクリメント後の）ｋの値をｊに代入し（ステップＳ１９）、ステップ１３へ戻る。
【００５６】
例えば、当該復号装置の識別情報が示すリーフ（Ａ１ノード）が、図１０に示す木構造中のリーフ「１」であるとする。このリーフ「１」に相当する復号装置に与えられる秘密鍵は、ｋ（１５，１４）、ｋ（１５，１０）、ｋ（１５，２）、ｋ（１３，１０）、ｋ（１３，２）、ｋ（９，２）である。これらの秘密鍵の格納順序を図９に示したフローチャートに従って決定する場合を例にとり、図１１を参照して、より具体的に説明する。
【００５７】
まず、ｉ＝１の場合（Ａｋ＝Ａ１、Ａｊ＝Ａ１）、Ａ１ノード（リーフ「１」）の親ノードはノード「９」であり、「Ａ１」ノード（リーフ「１」）の兄弟ノードはノード「２」であるから（ステップＳ１３）、ｉ＝１番目の秘密鍵に対応するｕノードとｖノードの組み合わせは、｛９，２｝となる（１回目のステップＳ１３〜ステップＳ１５）。
【００５８】
ｉ＝２の場合（Ａｋ＝Ａ２、Ａｊ＝Ａ２）、「Ａ２」ノード（ノード「９」）の親ノードはノード「１３」であり、「Ａ２」ノード（ノード「９」）の兄弟ノードはノード「１０」であるから（ステップＳ１３）、ｉ＝２番目の秘密鍵に対応するｕノードとｖノードの組み合わせは、｛１３，１０｝となる（２回目のステップＳ１３〜ステップＳ１５）。
【００５９】
ｉ＝３の場合（Ａｋ＝Ａ２、Ａｊ＝Ａ１）、「Ａ２」ノード（ノード「９」）の親ノードはノード「１３」であり、「Ａ１」ノード（リーフ「１」）の兄弟ノードはノード「２」であるから（ステップＳ１３）、ｉ＝３番目の秘密鍵に対応するｕノードとｖノードの組み合わせは、｛１３，２｝となる（３回目のステップＳ１３〜ステップＳ１５）。
【００６０】
ｉ＝４の場合（Ａｋ＝Ａ３、Ａｊ＝Ａ３）、「Ａ３」ノード（ノード「１３」）の親ノードはノード「１５」であり、「Ａ３」ノード（ノード「１３」）の兄弟ノードはノード「１４」であるから（ステップＳ１３）、ｉ＝４番目の秘密鍵に対応するｕノードとｖノードの組み合わせは、｛１５，１４｝となる（４回目のステップＳ１３〜ステップＳ１５）。
【００６１】
ｉ＝５の場合（Ａｋ＝Ａ３、Ａｊ＝Ａ２）、「Ａ３」ノード（ノード「１３」）の親ノードはノード「１５」であり、「Ａ２」ノード（ノード「９」）の兄弟ノードはノード「１０」であるから（ステップＳ１３）、ｉ＝５番目の秘密鍵に対応するｕノードとｖノードの組み合わせは、｛１５，１０｝となる（５回目のステップＳ１３〜ステップＳ１５）。
【００６２】
ｉ＝６の場合（Ａｋ＝Ａ３、Ａｊ＝Ａ１）、「Ａ３」ノード（ノード「１３」）の親ノードはノード「１５」であり、「Ａ１」ノード（リーフ「１」）の兄弟ノードはノード「２」であるから（ステップＳ１３）、ｉ＝６番目の秘密鍵に対応するｕノードとｖノードの組み合わせは、｛１５，２｝となる（６回目のステップＳ１３〜ステップＳ１５）。
【００６３】
図１０において、この格納順序決定方法を適用すると、リーフ「１」に相当する復号装置には、ｋ（９，２）、ｋ（１３，１０）、ｋ（１３，２）、ｋ（１５，１４）、ｋ（１５，１０）、ｋ（１５，２）の順番で秘密鍵が格納されることになる。なお、上述の例では、ｕノードが木構造の中で低い位置にあるものから順に並べたが、逆にｕノードが木構造の中で高い位置にあるものから（図１０ではノード「１５」をｕノードとしたものから）並べてもよい。また、ｖノードについて、上述の例では、同一のｕノードに対しては木構造の中で高い位置にあるものから順に並べたが、逆にｖノードが木構造の中で低い位置にあるものから（図１０では、例えば、ｕノードがノード「１３」であるとき、ノード「１０」とノード「２」がｖノードになり得るが、ノード「２」をｖノードとしたものを先に）並べてもよい。
【００６４】
このようにして秘密鍵を予め定められた順序に格納しておくことにより、後述のように、秘密鍵選択の際に選択すべき秘密鍵がより効率的に探索できる。上述の例では、秘密鍵格納部２４に格納される秘密鍵を予め定められた順序に格納する場合を説明したが、格納順序を設定せずに秘密鍵を格納してもよい。また、後述のように、秘密鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報を用いずに暗号文を復号することも可能であるため、秘密鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報を格納せず、秘密鍵のみ格納してもよい。もちろん、秘密鍵と当該秘密鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報とを格納してもよい。
【００６５】
図１２は、暗号文の復号処理の概略を示したフローチャートである。始めに、暗号文判定部２２において、暗号文データ取得部２１において取得された暗号文データの中から暗号文のインデックス情報を取得する（ステップＳ２１）。次に、暗号文判定部２２において、取得された暗号文のインデックス情報に対応する暗号文を、当該復号装置が復号可能であるか否かを判定し、当該復号装置が復号可能な暗号文を探索する（ステップＳ２２）。その後、秘密鍵選択部２６は、秘密鍵格納部２４に格納された秘密鍵の中から、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を選択する（ステップＳ２３）。そして、復号鍵導出部２７は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出し（ステップＳ２４）、復号部２３は、復号鍵導出部２７において導出された復号鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文を復号する（ステップＳ２５）。
【００６６】
図１３は、図１２のステップＳ２２の暗号文判定処理を説明するためのフローチャートである。始めに、装置識別情報格納部２５に格納されている当該復号装置の識別情報ｄを取得し（ステップＳ３１）、変数ｉを「１」に設定する（ステップＳ３２）。次に、暗号文データ取得部２１から、ｉ番目の暗号文データに含まれる暗号文のインデックス情報［ｉ］を取得し（ステップＳ３３）、当該インデックス情報［ｉ］が示すｕノード、ｖノードを抽出する。そして、当該復号装置の識別情報ｄが示すリーフが、予め与えられた木構造においてｕノードを祖先に持ち且つｖノードは祖先に持たないリーフであるか否かを判定する（ステップＳ３４）。当該復号装置の識別情報ｄが示すリーフが、予め与えられた木構造においてｕノードを祖先に持ち且つｖノードは祖先に持たないリーフである場合（「ｙｅｓ」の場合）には、ステップＳ３５へ進み、当該インデックス情報［ｉ］に対応する暗号文［ｉ］は復号可能であると判定し（ステップＳ３５）、終了する。当該復号装置の識別情報ｄが示すリーフが、予め与えられた木構造においてｕノードを祖先に持ち且つｖノードは祖先に持たないリーフではない場合（「「ｎｏ」の場合」には、ステップＳ３６へ進む。
【００６７】
ステップＳ３６では、暗号文データ取得部２１で取得された全ての暗号文のインデックス情報に対し、ステップＳ３３、ステップＳ３４での検査が行われたか否かを判定し（ステップＳ３６）、未検査の暗号文のインデックス情報があれば（「ｎｏ」の場合）、ステップＳ３７へ進み、ｉを「１」だけインクリメントし、ステップＳ３３へ戻る。ステップＳ３６において、全ての暗号文のインデックス情報について検査した場合には、当該復号装置は無効復号装置であると判定し（ステップＳ３８）、必要に応じてその旨を通知して、終了する。
【００６８】
なお、ステップＳ３１は、必ずしも、ステップＳ３２、ステップＳ３３の前に行う必要はなく、ステップＳ３４を行う前に一度行えばよい。例えば、ステップＳ３２、ステップＳ３３、ステップＳ３１の順に実行してもよいし、ステップＳ３１をステップＳ３２、ステップＳ３３と同時に行ってもよい。
【００６９】
なお、後述のように、暗号文判定処理において、当該復号装置の識別情報ｄを用いることに代えて、秘密鍵のインデックス情報を用いることも可能である。この場合、ステップＳ３１では、当該復号装置の識別情報ｄに代えて、秘密鍵格納部２４において格納された秘密鍵に対応するｕノード、ｖノードの組み合わせを表すインデックス情報を取得する。また、暗号文判定処理において、当該復号装置の識別情報ｄと秘密鍵のインデックス情報とを用いることも可能である。この場合、ステップＳ３１では、当該復号装置の識別情報ｄと秘密鍵のインデックス情報とを取得する。
【００７０】
ここで、ステップＳ３４における具体的な処理を説明する。木構造の中のノードは以下の要領で符号化されている。図１４（ａ）に示すように、木構造の中で、ある親ノードから左の子ノードへ下がる経路に「０」を、右の子ノードへ下がる経路に「１」を割り当て、ルートから対象のノード（リーフを含む）までの経路を上記のように「０」「１」で表した後、その最後に１つの「１」と必要に応じた数の「０」とを付加する、つまり「１０…０」を付加する。また、各ノード（リーフを含む）を示す符号のビット長Ｌは、当該システムへ適用する木構造の高さに応じて予め定められている。
【００７１】
各ノード（リーフを含む）を表す符号のビット長の規定値Ｌは、例えば、図１４（ｂ）に示すように、木構造の高さが３である場合には４ビットであり、図２に示したように、木構造の高さが３１である場合には３２ビットである。
【００７２】
そこで、ルートから対象のノード（リーフを含む）までの経路を上記のように「０」「１」で表した後、その最後に「１」を付加し、さらに、ビット長を上記規定値Ｌに揃えるために、（ビット数が規定値Ｌ未満の場合には）パッディングビット「０」を付加して、対象のノード（リーフを含む）の符号が得られる。
【００７３】
例えば、図１４（ｂ）に示すようなルートが「１５」であるような木構造では、ノードの符号のビット長は４ビットであるから、図１４（ｃ）に示すように、リーフ「１」は「０００１」、リーフ「３」は「０１０１」、ルート「１５」は「１０００」という符号で表すことができる。各符号の最下位ビットからみて、最初に出現する「１」までは、ビット長をＬに揃えるための冗長ビットとも云える。例えば、リーフ「３」やリーフ「１」の符号では、最後の１ビットの「１」が冗長ビットで、ルート「１５」の符号では、「１０００」が冗長ビットである。なお、本実施形態では、最下位ビットとは符号の一番右のビットを意味し、最上位ビットとは符号の一番左のビットを意味する。
【００７４】
図１４（ｂ）に示す木構造上のリーフ「１」に対応する復号装置の装置識別情報格納部２５には、装置識別情報ｄとして「０００１」が格納されている。また、暗号文のインデックス情報に含まれるｕノード、ｖノードも、上記のような符号で表されている。
【００７５】
図１３のステップ３３において取得した暗号文のインデックス情報［ｉ］に含まれるｕノード（例えば図１４（ｂ）のノード「１５」）、ｖノード（例えば図１４（ｂ）のリーフ「３」）の符号を、図１５に示すように、それぞれＵ、Ｖとする。すなわち、Ｕ＝「１０００」、Ｖ＝「０１０１」である。
【００７６】
Ｖの冗長ビットのビット長（パッディング長）をＭｖ、Ｕの冗長ビットのビット長（パッディング長）をＭｕとする。この場合、Ｍｖ＝１、Ｍｕ＝４である。
【００７７】
当該復号装置の識別情報ｄが示すリーフが木構造においてｕノードを祖先に持つとは、次式が成立することを意味する。
【００７８】
（ｄ＾Ｕ）＞＞Ｍｕ＝＝０                …（ｘ１）
ここで、＾はビット毎の排他的論理和、＞＞は右シフト、＝＝は等価を表す。例えば、図１５に示すような長さＬのｄとＵとの排他的論理和をとった後の各ビットを右にＭｕビット（ここでは４ビット）ずらして、空いた部分に「０」を詰めた結果「００００」を（２進数表現から１０進数表現へ）数値化したものが「０」であるから、識別情報ｄが示すリーフは、ｕノードを祖先に持つと云える。
【００７９】
また、ｖノードは祖先に持たないとは、次式が成立することを意味する。
【００８０】
（ｄ＾Ｖ）＞＞Ｍｖ！＝０                  …（ｘ２）
ここで、！＝は非等価を表す。例えば、図１５に示すような長さＬのｄとＶとの排他的論理和をとった後の各ビットを右にＭｖビット（ここでは１ビット）ずらして、空いた部分に「０」を詰めた結果「００１０」を数値化したものが０でないから、識別情報ｄが示すリーフは、ｖノードを祖先に持たないと云える。
【００８１】
図１３のステップＳ３４では、各暗号文［ｉ］について、当該暗号文のインデックス情報［ｉ］に含まれているｕノードとｖノードを表す符号に対し、上記式（ｘ１）と式（ｘ２）を適用して、当該暗号文［ｉ］が識別情報ｄを持つ復号装置で復号可能か否かを判定する。
【００８２】
上述の例では、当該復号装置の識別情報ｄと暗号文のインデックス情報とを用いて判定を行う例を説明したが、これに限らず、秘密鍵のインデックス情報と暗号文のインデックス情報とを用いて判定を行ってもよい。暗号文のインデックス情報［ｉ］に含まれるｕノードを示す符号化データ（Ｕ）の冗長ビットのビット長（パッディング長）をＭｕ、暗号文のインデックス情報［ｉ］に含まれるｖノードを示す符号化データ（Ｖ）の冗長ビットのビット長（パッディング長）をＭｖとし、秘密鍵格納部２４に格納された秘密鍵のインデックス情報［ｊ］に含まれるｕノードを示す符号化データ（Ｕ’とする）の冗長ビットのビット長（パッディング長）をＭｕ’、秘密鍵格納部２４に格納された秘密鍵のインデックス情報［ｊ］に含まれるｖノードを示す符号化データ（Ｖ’とする）の冗長ビットのビット長（パッディング長）をＭｖ’とする。ステップＳ３４において、以下の２つの式を適用して、当該暗号文［ｉ］が識別情報ｄを持つ復号装置で復号可能か否かを判定する。
【００８３】
Ｍｕ＝＝Ｍｕ’                  …（ｘ３）
（Ｖ＆Ｍｖ’）＝＝（Ｖ’＆Ｍｖ’）                  …（ｘ４）
ここで、＆はビット毎の論理積を表す。図４に例示したように、識別情報ｄを持つ復号装置に与えられる秘密鍵に対応するｕノード、ｖノードの全ての組について、当該復号装置の識別情報ｄが示すリーフがｕノードを祖先に持ち且つｖノードは祖先に持たないことが成立する。従って、上記式（ｘ３）及び式（ｘ４）が成立するならば、暗号文［ｉ］に対応するｕノードと秘密鍵［ｊ］に対応するｕノードとは同一ノードであり、且つ暗号文［ｉ］に対応するｖノードは秘密鍵［ｊ］に対応するｖノードの祖先（又は同一ノード）であるため、暗号文［ｉ］に対応するｕノード、ｖノードについて、当該復号装置の識別情報ｄが示すリーフがｕノードを祖先に持ち且つｖノードは祖先に持たないことが成立する。このような方法によっても、当該復号装置の識別情報ｄが示すリーフが、予め与えられた木構造において、当該暗号文に対応するｕノード、ｖノードについて、ｕノードを祖先に持ち且つｖノードは祖先に持たないリーフであるか否かを判定できる。
【００８４】
次に、秘密鍵選択部２６における秘密鍵選択処理について、図１６に示すフローチャートを参照して説明する。図１３のステップＳ３５で復号可能であると判定された暗号文［ｉ］に対応する暗号文のインデックス情報［ｉ］を取得する（ステップＳ５１）。次に、このインデックス情報［ｉ］に含まれるｕノードを示す符号化データ（Ｕ）を抽出し、Ｕのパディング長Ｍｕの値を取得する（ステップＳ５２）。なお、Ｍｕが図１３のステップＳ３４での判定処理の際に取得されている場合、ステップＳ５２を省略してもよい。次に、インデックス情報［ｉ］に含まれるｖノードを示す符号化データ（Ｖ）を抽出する（ステップＳ５３）。なお、Ｖが図１３のステップＳ３４での判定処理の際に取得されている場合、ステップＳ５３を省略してもよい。ステップＳ５３において、後述する復号鍵導出の際に用いられる、Ｖのパディング長Ｍｖの値を取得してもよい。なお、Ｍｖは、前述したように、図１３のステップＳ３４での判定処理の際に取得することもできる。
【００８５】
以下、図１５（図１５では図１４に示した木構造が想定されている）に示すように、装置識別情報ｄがリーフ「１」に対応する「０００１」、Ｖがリーフ「３」に対応する「０１０１」、Ｕがルートノード「１５」に対応する「１０００」、である場合を例にとり説明する。
【００８６】
次に、装置識別情報ｄとＶとの共通プリフィックスを探索し、共通プリフィックスのビット長ｔの値を取得する（ステップＳ５４）。ここで、ｄとＶとの共通プリフィックスとは、符号化データの最上位ビットからｄとＶとをビット毎に比較していき、初めて異なるビットに出合う前までのビット列を意味する。ただし、冗長ビット（パディングビット）は含まない。図１５の場合、１ビット目までが同じであるので、共通プリフィックスは「０」、そのビット長ｔは１となる。なお、この共通プリフィックスにパディングを施した「０１００」はノード「１３」であり、リーフ「１」とリーフ「３」の共通の祖先の中で木構造中の高さが最も低いノードである。
【００８７】
なお、ステップＳ５２〜ステップＳ５４の処理は、必ずしも、この順で行う必要はなく、例えば、ステップＳ５３、ステップＳ５４、ステップＳ５２の順で行ってもよいし、ステップＳ５３、ステップＳ５４の処理と同時にステップＳ５２を行ってもよい。
【００８８】
次に、秘密鍵格納部２４に格納されている秘密鍵の中から、｛（Ｍｕ−１）（Ｍｕ−２）／２＋ｔ−（Ｌ−Ｍｕ）＋１｝番目の秘密鍵（Ｋとおく）を取得する（ステップＳ５５）。ここで、リーフ「１」の復号装置では、当該復号装置に与えられている複数の秘密鍵は、図１１に示すような順に秘密鍵格納部２４に格納されている。すなわち、大きく分けて、リーフ「１」の親ノード「９」がｕノードである第１のグループ、さらにその親ノード「１３」がｕノードである第２のグループ、さらにその親ノード「１５」がｕノードである第３のグループの順に格納されている。そして、１番目に格納されているのは、第１のグループに属する、ｕノードが「９」で、ｖノードがその子ノードの「２」であるような秘密鍵である。また、２番目に格納されているのは、第２のグループに属する、ｕノードが「１３」で、ｖノードがその子ノードの「１０」であるような秘密鍵であり、３番目に格納されているのは、同じく、ｕノードが「１３」で、ｖノードがその孫ノードの「２」であるような秘密鍵である。また、４番目に格納されているのは、第３のグループに属する、ｕノードが「１５」で、ｖノードがその子ノードの「１４」であるような秘密鍵であり、５番目に格納されているのは、同じく、ｕノードが「１５」で、ｖノードがその孫ノードの「１０」であるような秘密鍵であり、６番目に格納されているのは、同じく、ｕノード「１５」で、ｖノードがその曾孫ノードの「２」であるような秘密鍵である。このように、リーフ「１」から見て、より近い順に秘密鍵が格納されている。
【００８９】
暗号文のインデックス情報に含まれているｕノード及びｖノードに対応する暗号文を復号するための復号鍵が、上記６つのうちの何番目の秘密鍵で導出できるかを次式（ｘ５）から求めることができる。
【００９０】
（Ｍｕ−１）（Ｍｕ−２）／２＋ｔ−（Ｌ−Ｍｕ）＋１      …（ｘ５）
上記式（ｘ５）の前半の｛（Ｍｕ−１）（Ｍｕ−２）／２｝の値は、ｕノードがノード「９」の場合には０、ｕノードがノード「１３」の場合には１、ｕノードが「１５」の場合には、３となり、上記第１〜第３のグループのうちのいずれに属するかを表す。
【００９１】
また、上記式（ｘ５）の後半の｛ｔ−（Ｌ−Ｍｕ）＋１｝の値は、各グループの何番目の秘密鍵であるかを表す。
【００９２】
従って、図１５の場合、｛（Ｍｕ−１）（Ｍｕ−２）／２｝＝｛（４−１）（４−２）／２｝＝３、｛ｔ−（Ｌ−Ｍｕ）＋１｝＝｛１−（４−４）＋１｝＝２となり、図１１に示されたような順番で秘密鍵が格納されている秘密鍵格納部２４から、５番目の秘密鍵（上記第３のグループの２番目の秘密鍵）ｋ（１５，１０）を取得する。これをＫとする。
【００９３】
上述の例では、秘密鍵格納部２４に格納される秘密鍵を予め定められた順序に格納し、暗号文判定部２２において当該復号装置で復号可能と判定された暗号文のインデックス情報と装置識別情報格納部２５において格納される当該復号装置の識別情報とを用いて、選択すべき秘密鍵の格納されている順番を算出しており、秘密鍵選択において、秘密鍵のインデックス情報は用いられていない。この方法に限らず、選択すべき秘密鍵に対応するｕノード、ｖノードを示す符号化データ（Ｕ、Ｖ）を取得し、取得したＵ、Ｖと一致するインデックス情報が付加された秘密鍵を秘密鍵格納部２４に格納されている秘密鍵の中から探索してもよい。図１５で説明すると、ステップ５４において、ｄとＶとの共通プリフィックスを求め、ｄの符号化データ「０００１」について、Ｖと最上位ビットから比較したときに初めて異なるビット（ここでは２番目のビット）をビット反転させ、３番目以降のビットをパディング処理した「０１１０」（ノード「１０」に対応）を選択すべき秘密鍵に対応するＶとする。ステップ５２で取得されるＵ（ここでは「１０００」、ノード「１５」に対応）を選択すべき秘密鍵に対応するＵとし、得られたＵ、Ｖと一致するインデックス情報が付加された秘密鍵を秘密鍵格納部２４に格納されている秘密鍵の中から探索する。この秘密鍵選択においては、得られたＵ、Ｖと一致するインデックス情報を探索する際に、秘密鍵のインデックス情報を用いる。
【００９４】
上述のように、秘密鍵選択においては、当該復号装置の識別情報ｄと暗号文のインデックス情報［ｉ］に含まれるｖノードを示す符号化データ（Ｖ）との共通プリフィックスに基づいて、暗号文［ｉ］を復号するための復号鍵を導出可能な秘密鍵を選択する。暗号文が複数の場合、ｄとＶとののインデックス情報を取得し、各暗号文のインデックス情報に含まれるｖノードを示す符号化データＶについて、ｄとＶとの共通プリフィックスのビット長ｔの値が最大となる暗号文を探索し、探索された暗号文のインデックス情報が示すｕノードを抽出する（以前にｖノードを抽出していない場合は、ｖノードも抽出する）。ｄとＶとの共通プリフィック共通プリフィックスのビット長ｔの値がより大きい暗号文が当該復号装置で復号可能である可能性が高い。従って、暗号文判定部２２において、ｄとＶとの共通プリフィックスのビット長ｔの値が最大の暗号文から順に、当該復号装置で復号可能であるか否かを判定してもよい。このようにすれば、ｄとＶとの共通プリフィックスのビット長ｔの値が最大の暗号文が復号可能であれば、１つの暗号文に対する判定を行うのみで当該復号装置で復号可能な暗号文を探索完了できることが期待される。また、ｄとＶとの共通プリフィックスのビット長ｔの値が最大の暗号文が復号不可能であっても、当該ｔの値が２番目に大きい暗号文が復号可能であれば、２つの暗号文に対する判定を行うのみで当該復号装置で復号可能な暗号文を探索完了できる。
【００９５】
この場合の暗号文判定部２２での暗号文判定処理は以下のようになる。当該復号装置の識別情報ｄを取得し、複数の暗号文スのビット長ｔの値が最大となる暗号文の探索では、ｄと各Ｖとをビット毎に比較してｔの値を求め、ｔの値が最大となるＶを探索してもよいし、ｄと各Ｖとをそれぞれ（２進数表示から１０進数表示へ）数値化し、ｄを数値化した値に最も近い値を表すＶを探索してもよい。そして、当該復号装置の識別情報ｄが示すリーフが、予め与えられた木構造においてｕノードを祖先に持ち且つｖノードは祖先に持たないリーフであるか否かを判定する。そうである場合、当該インデックス情報に対応する暗号文は復号可能であると判定する。そうでない場合、ｄとＶとの共通プリフィックスのビット長ｔの値が２番目に大きい暗号文について判定を行ってもよいし、図１３の処理を繰り返してもよい。
【００９６】
ｄとＶとの共通プリフィックスのビット長ｔの値が最大となる暗号文の探索をより効率的に行うために暗号文をソートしておいてもよい。暗号文のソートは、送信システムにて行ってもよいし、受信システムにて行ってもよい。
【００９７】
暗号文のソートを送信システムで行う場合の送信システムの構成例を図２１に示し、暗号文のソートを受信システムで行う場合の受信システムの構成例を図２２にそれぞれ示す。
【００９８】
図２１では、インデックス情報生成部１５が、暗号文ソート部１５１を含み、暗号文のインデックス情報を生成する際に暗号文をソートする場合を示している。すなわち、各暗号文のインデックス情報を生成すると、暗号文ソート部１５１は、各暗号文のインデックス情報に含まれるｖノードを示す符号Ｖを、木構造上の当該ｖノードの位置に従って、ルート側から下流方向の順に、あるいはリーフ側から上流方向の順にソートする。数値化した各符号Ｖを降順あるいは昇順にソートしてもよい。そして、各暗号文のインデックス情報に含まれるｖノードを示す符号Ｖをソートした順番と同じ順番に、暗号文と暗号文のインデックス情報とを並べる。インデックス情報生成部１５は、ソートされた暗号文と暗号文のインデックス情報とを暗号文データとして出力する。
【００９９】
送信システムが、図２１に示す構成の場合、受信システムは、図１に示す構成のままでよい。この場合の受信システムの暗号文判定部２２の暗号文判定処理について図２３に示したフローチャートを参照して説明する。
【０１００】
暗号文データ取得部２１で、送信システムから送信された、ソートされた暗号文データを受信すると、各暗号文データを一時格納する。暗号文判定部２２は、始めに、装置識別情報格納部２５に格納されている当該復号装置の識別情報ｄを取得する（ステップＳ７１）。次に、暗号文データ取得部２１より各暗号文のインデックス情報が示すｖノードのリストを取得する（ステップＳ７２）。このリスト上のｖノードは、上述したように送信システムによりソートされている。次に、ｄとＶとの共通プリフィックスのビット長ｔが最大となるＶを探索する。探索方法として、ｄと各Ｖとをビット毎に比較してｔの値を求め、ｔの値が最大となるＶを二分岐探索してもよいし、ｄと各Ｖとをそれぞれ（２進数表示から１０進数表示へ）数値化し、ｄを数値化した値に最も近い値を表すＶを二分岐探索してもよい。ｄとＶとの共通プリフィックスのビット長ｔが最大となるＶが含まれているインデックス情報の付加されている暗号文の暗号文データ取得部２１での格納番地ｉを取得する（ステップＳ７３）。この後、図１３のステップＳ３４の判定処理を行うが、この判定処理では、ステップＳ７３で取得されたｉ番目の暗号文のインデックス情報を用いて判定が行われる。
【０１０１】
一方、送信システムが、図１に示す構成の場合、受信システムは、図２２に示すように、暗号文データ取得部２１が暗号文ソート部２１１を含み、暗号文データを取得する際に暗号文ソート部２１１にて暗号文をソートする。この場合の暗号文判定部２２の暗号文判定処理について、図２３に示すフローチャートを参照して説明する。
【０１０２】
暗号文データ取得部２１が送信システムから送信された暗号文データを受信すると、暗号文ソート部２１１は、各暗号文のインデックス情報に含まれるｖノードを示す符号Ｖを、木構造上の当該ｖノードの位置に従って、ルート側から下流方向の順に、あるいはリーフ側から上流方向の順にソートする。数値化した各符号Ｖを降順あるいは昇順にソートしてもよい。そして、各暗号文のインデックス情報に含まれるｖノードを示す符号Ｖをソートした順番と同じ順番に、暗号文と暗号文のインデックス情報とを並べ、暗号文データを暗号文データ取得部２１に一時格納する。
【０１０３】
暗号文判定部２２は、始めに、装置識別情報格納部２５に格納されている当該復号装置の識別情報ｄを取得する（ステップＳ７１）。次に、暗号文データ取得部２１より各暗号文のインデックス情報が示すｖノードのリストを取得する（ステップＳ７２）。このリスト上のｖノードは、上述したように暗号文ソート部２１１によりソートされている。次に、ｄとＶとの共通プリフィックスのビット長ｔが最大となるＶを探索する。探索方法として、ｄと各Ｖとをビット毎に比較してｔの値を求め、ｔの値が最大となるＶを二分岐探索してもよいし、ｄと各Ｖとをそれぞれ（２進数表示から１０進数表示へ）数値化し、ｄを数値化した値に最も近い値を表すＶを二分岐探索してもよい。ｄとＶとの共通プリフィックスのビット長ｔが最大となるＶが含まれているインデックス情報の付加されている暗号文の暗号文データ取得部２１での格納番地ｉを取得する（ステップＳ７３）。この後、図１３のステップＳ３４の判定処理を行うが、この判定処理では、ステップＳ７３で取得されたｉ番目の暗号文のインデックス情報を用いて判定が行われる。
【０１０４】
上述の例では、当該復号装置の識別情報ｄと暗号文のインデックス情報に含まれるｖノードを示す符号Ｖとの共通プリフィックスのビット長ｔが最大となるＶを探索しているが、これに限らず、暗号文のインデックス情報に含まれるｖノードを示す符号Ｖと秘密鍵のインデックス情報に含まれるｖノードを示す符号Ｖ’との共通プリフィックスのビット長ｔが最大となるＶを探索してもよい。
【０１０５】
秘密鍵選択について、上述した方法以外に、以下の方法を用いてもよい。暗号文判定部２２において識別情報ｄを持つ復号装置で復号可能と判定された暗号文のインデックス情報と秘密鍵格納部２４に格納された秘密鍵のインデックス情報とを用いて、式（ｘ３）及び式（ｘ４）を満たすインデックス情報を探索し、当該インデックス情報に対応する秘密鍵を選択する。さらに、上述のように、図１３のステップＳ３４において、秘密鍵のインデックス情報と暗号文のインデックス情報とを用いて識別情報ｄを持つ復号装置で暗号文が復号可能であるか否かを判定する場合、ステップＳ３４では、暗号文判定と秘密鍵選択とが同時に行われているとみなすことができる。
【０１０６】
ここで、図１７及び図１８を参照して、本実施形態における秘密鍵選択の効率性を説明する。図１７に示すように、秘密鍵が予め定められた順序に格納されていない場合（従来技術）、ステップＳ１０１の暗号文判定処理に引き続き、ステップＳ１０２において、どの秘密鍵で、復号可能と判定された暗号文を復号するための復号鍵を導出可能であるかを総当たりで探索する必要がある。それに対し、図１８に示すように、本実施形態では、秘密鍵を予め定められた順序に格納してあるため、ステップＳ１０１の暗号文判定処理で、復号可能な暗号文を求めるだけでよく、従来技術を示す図１７のステップＳ１０２にあるような復号鍵導出に用いるべき秘密鍵を選択するための秘密鍵の探索処理は不要となる。これに対し、本実施形態では、当該復号装置の識別情報ｄと、図１３のステップＳ３５で求めた復号可能な暗号文のインデックス情報に含まれるｕノードとｖノードを表す符号とを用いて、秘密鍵の格納されている順番を算出するようになっている。
【０１０７】
暗号文判定について、従来技術では、当該復号装置で復号可能な暗号文を総当たりで探索する必要がある。それに対し、本実施形態では、当該復号装置の識別情報ｄと、暗号文のインデックス情報に含まれるｖノードを表す符号（Ｖ）との共通プリフィックスのビット長が最大となる暗号文から先に当該復号装置で復号可能であるか否かを判定することにより、つまり、復号可能である可能性がより高い暗号文から判定することにより、無駄な探索を省き、暗号判定処理を効率化している。
【０１０８】
次に、復号鍵導出部２７における復号鍵導出処理について、図１９に示すフローチャートを参照して説明する。始めに、図１３のステップＳ３５で復号可能であると判定された暗号文［ｉ］に対応する暗号文のインデックス情報［ｉ］に含まれるｖノードを示す符号化データ（Ｖ）を抽出し、Ｖのパディング長Ｍｖの値を取得する（ステップＳ６１）。なお、Ｍｖは、図１３のステップＳ３４での判定処理の際に取得することもできるし、秘密鍵選択を説明した図１６のステップＳ５３においても取得可能である。Ｍｖを取得済みの場合、ステップＳ６１を省略してもよい。次に、当該復号装置の識別情報ｄと暗号文のインデックス情報に含まれるｖノードを示す符号Ｖとの共通プリフィックスのビット長ｔを用いて、図１６のステップＳ５５で取得した秘密鍵Ｋのｖノードの位置と、暗号文のインデックス情報［ｉ］に含まれる符号Ｖが示すｖノードの位置とが一致するか否かを判定するために、ｔ＋１＝Ｌ−Ｍｖが成立するか否かを判定する（ステップＳ６２）。なお、ｔは図１６のステップＳ５４においても取得できるし、図１６のステップＳ５４と同様の処理を再度行い取得してもよい。ｔ＋１＝Ｌ−Ｍｖが成立しない場合、ｍ＝ｔ＋２とし（ステップＳ６３）、Ｖの（最上位ビットから数えて）ｍ番目のビットｂｍを取得する（ステップＳ６４）。
【０１０９】
図１５を用いて、暗号文のインデックス情報［ｉ］に含まれる符号Ｕが示すｕノードがノード「１５」であり、暗号文のインデックス情報［ｉ］に含まれる符号Ｖが示すｖノードがノード「３」である場合を説明する。なお、木構造は図１４（ｂ）に示されている。Ｋがｋ（１５，１０）の場合、Ｋのｖノードの位置（ノード「１０」）と、暗号文のインデックス情報［ｉ］に含まれる符号Ｖが示すｖノードの位置（ノード「３」）は異なるから、明らかに、ｔ＋１≠Ｌ−Ｍｖであり、ステップＳ６３へ進む。この場合、ｍ＝１＋２＝３であり、Ｖの最上位から３ビット目の「０」がｂｍとして取得される（ステップＳ６４）。取得されたビットｂｍと秘密鍵Ｋを入力として一方向性関数Ｇを用いてＫの値を次式により更新する（ステップＳ６５）。なお、この更新はワーキングメモリ上で行われるものであり、秘密鍵格納部２４に格納された秘密鍵Ｋそのものが更新されるわけではない。
【０１１０】
Ｇ（Ｋ，ｂｍ）＝Ｈ（Ｋ｜｜ｓ０）  （ｂｍ＝０の場合）
＝Ｈ（Ｋ｜｜ｓ２）  （ｂｍ＝１の場合）
…（ｘ６）
上記式（ｘ６）において、関数Ｇは、ｂｍ＝０の場合には、値ｓ０を用いて、入力された秘密鍵Ｋから、ｕノードが秘密鍵Ｋに対応するｕノードで、ｖノードが秘密鍵Ｋに対応するｖノードの左の子ノードである秘密鍵を出力することを表し、ｂｍ＝１の場合には、値ｓ２を用いて、入力された秘密鍵Ｋから、ｕノードが秘密鍵Ｋに対応するｕノードで、ｖノードが秘密鍵Ｋに対応するｖノードの右の子ノードである秘密鍵を出力することを表す。上記例では、ステップＳ６５では、式（ｘ６）を用いて、Ｇ（ｋ（１５，１０），０）を計算する。この計算された値は、ｕノードがノード「１５」、ｖノードがノード「３」の秘密鍵ｋ（１５，３）である。ここで得られた値を秘密鍵Ｋとして処理を進める。
【０１１１】
次に、ステップＳ６６へ進み、Ｖのｍ番目までのビット列がＶから冗長ビットを除いたビット列（ビット数（Ｌ−Ｍｖ））に一致するか否か、すなわち、Ｖのｍ番目までのビット列が、木構造上の符号Ｖが示すノード（ｖノード）を表す（冗長ビットを除いた）符号に一致する否かを判定する。一致しない場合、すなわち、ｍが（Ｌ−Ｍｖ）よりも小さいとき、ステップＳ６７へ進み、ｍを１つインクリメントし、ステップＳ６４〜ステップＳ６６を繰り返す。ステップＳ６６において、Ｖのｍ番目までのビット列が木構造上の符号Ｖが示すノード（ｖノード）を表す（冗長ビットを除いた）符号に一致する場合、すなわち、ｍ＝Ｌ−ｍｖのときには、ステップＳ６８へ進む。
【０１１２】
ステップＳ６８では、次式（ｘ７）により復号鍵Ｄｋを導出する。
【０１１３】
Ｄｋ＝Ｈ（Ｋ｜｜ｓ１）          …（ｘ７）
上記式（ｘ７）は、値ｓ１を用いて、ステップＳ６５で得られた秘密鍵Ｋから、ｕノードが秘密鍵Ｋに対応するｕノードで、ｖノードが秘密鍵Ｋに対応するｖノードである復号鍵Ｄｋを出力することを表す。
【０１１４】
一方、ステップＳ６２において、図１６のステップＳ５５で取得した秘密鍵Ｋに対応するｖノードの位置と、暗号文のインデックス情報［ｉ］に含まれる符号Ｖが示すｖノードの位置とが一致する場合、すなわち、ｔ＋１＝Ｌ−Ｍｖが成立する場合にも、ステップＳ６８へ進み、上記式（ｘ７）を用いて、復号鍵Ｄｋを取得する。ここで、装置識別情報ｄが、図１４（ｂ）に示す木構造上のリーフ「１」に対応する符号「０００１」であり、図１３のステップＳ３５において復号可能と判定された暗号文のインデックス情報に含まれるｕノード及びｖノードが、図１４（ｂ）のノード「１３」、ノード「１０」である場合を例に説明する。この場合、図２０（ａ）に示すように、ｄ＝「０００１」、Ｕ＝「０１００」、Ｖ＝「０１１０」である。また、図２０（ｂ）に示すように、Ｖと装置識別情報ｄとの共通プリフィックスのビット長ｔは１であり、Ｕのパディング長Ｍｕは３、Ｖのパディング長Ｍｖは２である。この場合、図１６のステップＳ５５では、図１１に示すような順番で格納された秘密鍵の中から、｛（Ｍｕ−１）（Ｍｕ−２）／２＋ｔ−（Ｌ−Ｍｕ）＋１｝＝｛（３−１）（３−２）／２＋１−（４−３）＋１｝＝２番目の秘密鍵、すなわち、ｋ（１３、１０）が取得される。そして、ステップＳ６２において、ｔ＋１＝Ｌ−Ｍｖが成立し、この秘密鍵ｋ（１３、１０）に対応するｖノードの位置と、暗号文のインデックス情報に含まれる符号Ｖが示すｖノードの位置とが一致するから、ステップＳ６８へ進み、Ｈ（ｋ（１３、１０）｜｜ｓ１）の値を計算し、この値を復号鍵Ｄｋ（１３、１０）として出力する（ステップＳ６９）。
【０１１５】
ステップＳ６９では、ステップＳ６８で求めた復号鍵Ｄｋを出力する。
【０１１６】
上述の例では、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報に含まれるｖノードを示す符号Ｖ、秘密鍵選択部２６において選択された秘密鍵Ｋ、及び装置識別情報格納部２５において格納された当該復号装置の識別情報ｄから復号鍵を導出しており、秘密鍵選択部２６において選択された秘密鍵のインデックス情報は用いられていない。従って、上述の例は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｖノードの木構造中での位置と、装置識別情報格納部２５において格納された当該復号装置の識別情報ｄが示すリーフの木構造中での位置とに基づき、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出する例であると云える。
【０１１７】
図１５を用いて、暗号文のインデックス情報［ｉ］に含まれる符号Ｕが示すｕノードがノード「１５」であり、暗号文のインデックス情報［ｉ］に含まれる符号Ｖが示すｖノードがノード「３」である場合を説明する。なお、木構造は図１４（ｂ）に示されている。ステップＳ６３で求めたｍの値は３であり、また、Ｌは４、Ｍｖは１である。従って、ｍ＝Ｌ−Ｍｖとなるから、ステップＳ６６からステップＳ６８へ進み、ステップＳ６８では、値ｓ１を用いて、ステップＳ６５で得られた秘密鍵ｋ（１５，３）から、復号鍵Ｄｋ（１５，３）が出力される。この例も、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｖノードの木構造中での位置と、装置識別情報格納部２５において格納された当該復号装置の識別情報ｄが示すリーフの木構造中での位置とに基づき、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出する例である。
【０１１８】
上述の例に限らず、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報に含まれるｖノードを示す符号Ｖ、秘密鍵選択部２６において選択された秘密鍵Ｋ、及び秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報に含まれるｖノードを示す符号Ｖから復号鍵を導出してもよい。例えば、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報に含まれる符号Ｕ、Ｖが示すｕ、ｖノードがそれぞれノード「１５」、ノード「３」であり、秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報に含まれる符号Ｕ、Ｖが示すｕ、ｖノードがそれぞれノード「１５」、ノード「１０」である場合を説明する。なお、木構造は図１４（ｂ）に示されている。
【０１１９】
ノード「１０」、ノード「３」を符号化したものはそれぞれ「０１１０」、「０１０１」であるから、ノード「１０」とノード「３」との共通プリフィックスのビット長ｔは２である。図１９のステップＳ６２における判定式をｔ＝Ｌ−Ｍｖに、ステップＳ６３における代入式をｍ＝ｔ＋１に変更して復号鍵導出処理を行えば、ステップＳ６４においてｂｍ＝０が取得され、ステップＳ６５において秘密鍵ｋ（１５，３）が計算される。最終的に、ステップＳ６３において復号鍵Ｄｋ（１５，３）が出力される。この例は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｖノードの木構造中での位置と、秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報が示すｖノードの木構造中での位置とに基づき、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出する例であると云える。
【０１２０】
上述の例では、秘密鍵選択部２６において選択された秘密鍵Ｋ（もしくは秘密鍵選択部２６において選択された秘密鍵Ｋ及び秘密鍵Ｋに対応するインデックス情報）が、復号鍵導出部２７からの明示的な取得要求なしに、秘密鍵選択部２６から復号鍵導出部２７へ通知される例を説明したが、これに限らず、秘密鍵選択部２６は復号鍵導出部２７からの取得要求を受信してから秘密鍵Ｋを復号鍵導出部２７へ通知してもよい。この場合、図１６のステップＳ５５において、秘密鍵選択部２６は、選択された秘密鍵Ｋの格納されている順番（もしくは秘密鍵Ｋに対応するインデックス情報）を復号鍵導出部２７へ通知する。復号鍵導出部２７は、図１９のステップＳ６５（ステップＳ６２において「Ｙｅｓ」の場合はステップＳ６８）を初めて行う際に、秘密鍵選択部２６へ秘密鍵Ｋの格納されている順番（もしくは秘密鍵Ｋに対応するインデックス情報）を送信するとともに秘密鍵Ｋを要求する。秘密鍵選択部２６は、復号鍵導出部２７からの要求に応じて秘密鍵Ｋ（もしくは秘密鍵Ｋ及び秘密鍵Ｋに対応するインデックス情報）を復号鍵導出部２７へ通知する。なお、図１６のステップＳ５５において、秘密鍵選択部２６は、選択された秘密鍵Ｋの格納されている順番と秘密鍵Ｋに対応するインデックス情報との両方を復号鍵導出部２７へ通知してもよい。
【０１２１】
復号鍵導出部２７が秘密鍵選択部２６へ秘密鍵Ｋの格納されている順番を送信する場合、秘密鍵Ｋの格納されている順番は暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｕノード及びｖノードに基づいているため、上述の、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報に含まれるｖノードを示す符号Ｖ、秘密鍵選択部２６において選択された秘密鍵Ｋ、及び装置識別情報格納部２５において格納された当該復号装置の識別情報ｄから復号鍵を導出する例は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｕノード及びｖノードの木構造中での位置と、装置識別情報格納部２５において格納された当該復号装置の識別情報ｄが示すリーフの木構造中での位置とに基づき、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出する例であると云える。
【０１２２】
復号鍵導出部２７が秘密鍵選択部２６へ秘密鍵Ｋの格納されている順番を送信する場合、秘密鍵Ｋの格納されている順番は暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｕノード及びｖノードに基づいているため、上述の、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報に含まれるｖノードを示す符号Ｖ、秘密鍵選択部２６において選択された秘密鍵Ｋ、及び秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報に含まれるｖノードを示す符号Ｖから復号鍵を導出する例は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｕノード及びｖノードの木構造中での位置と、秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報が示すｖノードの木構造中での位置とに基づき、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出する例であると云える。
【０１２３】
復号鍵導出部２７が秘密鍵選択部２６へ秘密鍵Ｋに対応するインデックス情報を送信する場合、秘密鍵Ｋのインデックス情報はｕノード及びｖノードに基づいているため、上述の、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報に含まれるｖノードを示す符号Ｖ、秘密鍵選択部２６において選択された秘密鍵Ｋ、及び秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報に含まれるｖノードを示す符号Ｖから復号鍵を導出する例は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｖノードの木構造中での位置と、秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報が示すｕノード及びｖノードの木構造中での位置とに基づき、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出する例であると云える。
【０１２４】
復号鍵導出部２７が秘密鍵選択部２６へ秘密鍵Ｋの格納されている順番と秘密鍵Ｋに対応するインデックス情報との両方を送信する場合、秘密鍵Ｋの格納されている順番は暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｕノード及びｖノードに基づいており、秘密鍵Ｋのインデックス情報はｕノード及びｖノードに基づいているため、上述の、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報に含まれるｖノードを示す符号Ｖ、秘密鍵選択部２６において選択された秘密鍵Ｋ、及び秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報に含まれるｖノードを示す符号Ｖから復号鍵を導出する例は、秘密鍵選択部２６において選択された秘密鍵を用いて、暗号文判定部２２において復号可能と判定された暗号文のインデックス情報が示すｕノード及びｖノードの木構造中での位置と、秘密鍵選択部２６において選択された秘密鍵に対応するインデックス情報が示すｕノード及びｖノードの木構造中での位置とに基づき、暗号文判定部２２において復号可能と判定された暗号文を復号するための復号鍵を導出する例であると云える。
【０１２５】
暗号文判定、秘密鍵選択、及び復号鍵導出を行う際に、秘密鍵格納部２４に格納される秘密鍵のインデックス情報を用いる代わりに装置識別情報格納部２５において格納された当該復号装置の識別情報を用いてもよい。この場合、秘密鍵格納部２４に秘密鍵のインデックス情報を格納する必要はないため、復号装置に要求される不揮発性メモリ量の削減が図れる。
【０１２６】
復号部２３では、復号鍵導出部２７において導出された復号鍵を用いて、暗号文判定部２２において当該復号装置で復号可能と判定された暗号文を復号する。
【０１２７】
以上説明したように、上記実施形態によれば、予め定められた木構造中の任意の２つのノードによりそれぞれ特定される１つ又は複数の秘密鍵及び前記１つ又は複数の秘密鍵のそれぞれに対し当該秘密鍵に対応する前記木構造中の２つのノードを示したインデックス情報を秘密鍵格納部２４に格納し、前記木構造の任意の１つのリーフに対応する復号装置識別情報を装置識別情報格納部２５に格納し、１つ又は複数の暗号文及び前記１つ又は複数の暗号文のそれぞれに対し当該暗号文を復号するための復号鍵に対応する前記木構造中の任意の２つのノードを示したインデックス情報を含むデータを暗号文データ取得部２１で取得すると、暗号文データ取得部２１で取得された暗号文のインデックス情報が示す２つのノードのうちの一方が、前記木構造中で装置識別情報格納部２５に格納された識別情報が示すリーフの祖先のノードであり、且つ他方が当該リーフの祖先ではないノードであるとき、当該暗号文が復号可能であると暗号文判定部２２で判定し、秘密鍵格納部２４に格納された１つ又は複数の秘密鍵の中から、暗号文判定部２２で復号可能と判定された暗号文を復号するための復号鍵を導出可能な秘密鍵を秘密鍵選択部２６で選択し、秘密鍵選択部２６で選択された秘密鍵を用いて、暗号文判定部２２で復号可能と判定された暗号文を復号するための復号鍵を復号鍵導出部２７で導出し、暗号文判定部２２で復号可能と判定された暗号文を復号鍵導出部２７で導出された復号鍵を用いて復号する。
【０１２８】
秘密鍵格納部２４には、上記木構造中の任意の２つのノードによりそれぞれ特定される複数の秘密鍵を、各秘密鍵に対応する２つのノードの木構造中の位置に基づき予めソートされた順番に記憶されている（図９、図１１参照）。秘密鍵選択部２６は、秘密鍵を選択する際には、復号可能と判定された暗号文のインデックス情報が示す２つのノードの木構造中での位置と、復号装置識別情報が示すリーフの木構造中での位置とに基づき、複数の秘密鍵のうち、当該復号装置で復号可能な暗号文を復号するための復号鍵を導出可能な秘密鍵の記憶されている順番を算出する（図１６参照）ことにより、秘密鍵選択に係る処理時間の短縮が図れるため、受信した暗号文を復号装置に入力してから平文を取得するまでの処理時間の短縮が図れる。
【０１２９】
また、送信システムの暗号文ソート部１５１あるいは受信システムの暗号文ソート部２１１において、暗号文のインデックス情報に基づいて、暗号文を予めソートしておき、上記二分岐探索を行うことにより、暗号文判定に係る処理時間の短縮が図れるため、受信した暗号文を復号装置に入力してから平文を取得するまでの処理時間の短縮が図れる。
【０１３０】
また、暗号文判定、秘密鍵選択、及び復号鍵導出を行う際に、秘密鍵格納部２４に格納される秘密鍵のインデックス情報を用いる代わりに装置識別情報格納部２５において格納された当該復号装置の識別情報を用いる場合、秘密鍵格納部２４に秘密鍵のインデックス情報を格納する必要はないため、復号装置に要求される不揮発性メモリ量の削減が図れる。
【０１３１】
本発明の実施の形態に記載した本発明の手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、半導体メモリなどの記録媒体に格納して頒布することもできる。すなわち、コンピュータを、暗号文データ取得部２１，暗号文判定部２２，復号部２３，秘密鍵格納部２４，装置識別情報格納部２５、秘密鍵選択部２６、復号鍵導出部２７として機能させるためのプログラムをコンピュータに実行させることにより、上記復号装置２０を実現することができる。
【０１３２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１３３】
【図１】本発明の実施形態に係るデータ通信システムの構成例を示した図。
【図２】復号装置識別情報をリーフに割り当てた木構造の模式図。
【図３】図２の木構造を具体的に示した図。
【図４】復号装置へ与えられる秘密鍵を説明するための図。
【図５】暗号化装置における暗号化処理動作を説明するためのフローチャート。
【図６】暗号化装置において、ＳＤ方式におけるリーフの集合の選択方法を説明するための図。
【図７】暗号文データのデータ構造の一例を示した図。
【図８】秘密鍵格納部に格納される秘密鍵のデータ構造の一例を示した図。
【図９】秘密鍵格納部に格納される秘密鍵の格納順序決定方法を説明するためのフローチャート。
【図１０】木構造の一例を示した図。
【図１１】秘密鍵格納部に格納される秘密鍵の格納順序決定方法を説明するための図。
【図１２】暗号文の復号処理の概略を示したフローチャート。
【図１３】暗号文判定処理を説明するためのフローチャート。
【図１４】暗号文判定処理を説明するための図。
【図１５】復号装置識別情報を示す符号、暗号文のインデックス情報に含まれるｕノードを示す符号、及びｖノードを示す符号を用いて、暗号文が復号可能か否かを判定する手法を説明するための図。
【図１６】秘密鍵選択処理を説明するためのフローチャート。
【図１７】従来の復号装置の処理動作の概略を説明するためのフローチャート。
【図１８】本実施形態に係る復号処理の処理動作の概略を説明するためのフローチャート。
【図１９】復号鍵導出処理を説明するためのフローチャート。
【図２０】復号鍵導出処理を説明するための図。
【図２１】送信システムの他の構成例を示した図。
【図２２】受信システムの他の構成例を示した図。
【図２３】暗号文がソートされている場合の暗号文判定処理を説明するためのフローチャート。
【符号の説明】
【０１３４】
１…送信システム、２…受信システム、３…ネットワーク、１０…暗号化装置、１１…暗号化鍵格納部、１２…無効復号装置識別情報格納部、１３…木構造情報格納部、１４…暗号化部、１５…インデックス情報生成部、２０…復号装置、２１…暗号文データ取得部、２２…暗号文判定部、２３…復号部、２４…秘密鍵格納部、２５…装置識別情報格納部、２６…秘密鍵選択部、２７…復号鍵導出部、１５１…暗号文ソート部、２１１…暗号文ソート部。
【図１】
2006253822.tif 000003
【図２】
2006253822.tif 000004
【図３】
2006253822.tif 000005
【図４】
2006253822.tif 000006
【図５】
2006253822.tif 000007
【図６】
2006253822.tif 000008
【図７】
2006253822.tif 000009
【図８】
2006253822.tif 000010
【図９】
2006253822.tif 000011
【図１０】
2006253822.tif 000012
【図１１】
2006253822.tif 000013
【図１２】
2006253822.tif 000014
【図１３】
2006253822.tif 000015
【図１４】
2006253822.tif 000016
【図１５】
2006253822.tif 000017
【図１６】
2006253822.tif 000018
【図１７】
2006253822.tif 000019
【図１８】
2006253822.tif 000020
【図１９】
2006253822.tif 000021
【図２０】
2006253822.tif 000022
【図２１】
2006253822.tif 000023
【図２２】
2006253822.tif 000024
【図２３】
2006253822.tif 000025