(57)【要約】  情報出力装置が、関数暗号方式に従ったプロトコルごとに定められた規則、又は当該プロトコルの組み合わせごとに定められた規則に従い、関数暗号方式に従った特定のプロトコル又は当該特定のプロトコルの組み合わせに対応する１種類の識別子又は複数種類の識別子を特定し、それら対応する特定の第１対応情報を設定し、特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報を出力する。情報処理装置が、第１情報、及び特定の第２対応情報に対応する関数暗号方式の鍵情報又は暗号文である第２情報を関数暗号方式の復号関数に入力し、第１情報に対応する特定の第１対応情報及び第２情報に対応する特定の第２対応情報の組み合わせに対応する論理式の真理値が真の場合に復号結果を生成する。
2011016401.tif 000002
【特許請求の範囲】
【請求項１】
第１対応情報及び第２対応情報の組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式に従ったプロトコルごとに定められた規則、又は前記関数暗号方式に従ったプロトコルの組み合わせごとに定められた規則に従い、前記関数暗号方式に従った特定のプロトコル又は前記関数暗号方式に従った特定のプロトコルの組み合わせに対応する１種類の識別子又は複数種類の識別子を特定する識別子特定部と、  前記１種類の識別子又は前記複数種類の識別子の組み合わせに対応する特定の第１対応情報を設定する対応情報設定部と、  前記特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報を出力する出力部と、を含む情報出力装置と、  前記第１情報、及び特定の第２対応情報に対応する関数暗号方式の鍵情報又は暗号文である第２情報を関数暗号方式の復号関数に入力し、前記第１情報に対応する前記特定の第１対応情報及び前記第２情報に対応する前記特定の第２対応情報の組み合わせに対応する論理式の真理値が真の場合に復号結果を生成する復号部と、を含む情報処理装置と、を有し、  前記特定の第２対応情報は、前記特定の第１対応情報に対応する前記第１情報、及び前記特定の第２対応情報に対応する前記第２情報が前記復号関数に入力された場合、前記特定の第１対応情報がとる１種類の値又は複数種類の値に対してそれぞれ復号結果が得られる値をとり、  前記第１情報が前記特定の第１対応情報に対応する暗号文である場合には前記第２情報は前記特定の第２対応情報に対応する鍵情報であり、前記第１情報が前記特定の第１対応情報に対応する鍵情報である場合には前記第２情報は前記特定の第２対応情報に対応する暗号文である、関数暗号応用システム。
【請求項２】
請求項１の関数暗号応用システムであって、  前記特定の第２対応情報は、前記特定の第１対応情報に対応する前記第１情報、及び前記特定の第２対応情報に対応する前記第２情報が前記復号関数に入力された場合、前記特定の第１対応情報がとる複数種類の値に対してそれぞれ復号結果が得られる値をとる、関数暗号応用システム。
【請求項３】
請求項１又は２の関数暗号応用システムであって、  前記識別子特定部は、前記特定のプロトコルの組み合わせに対応する前記１種類の識別子又は複数種類の識別子を特定し、  前記特定のプロトコルの組み合わせは、前記関数暗号方式に従った複数種類のプロトコルからなる組み合わせである、関数暗号応用システム。
【請求項４】
請求項３の関数暗号応用システムであって、  前記情報出力装置は、前記特定のプロトコルに応じ、前記第１情報が暗号文であるか鍵情報であるかを切り替える第１切り替え部をさらに有し、  前記情報処理装置は、前記特定のプロトコルに応じ、前記第２情報が鍵情報であるか暗号文であるかを切り替える第２切り替え部をさらに有する、関数暗号応用システム。
【請求項５】
請求項１又は２の関数暗号応用システムであって、  前記情報出力装置は、前記特定のプロトコルに応じ、前記第１情報が暗号文であるか鍵情報であるかを切り替える第１切り替え部をさらに有し、  前記情報処理装置は、前記特定のプロトコルに応じ、前記第２情報が鍵情報であるか暗号文であるかを切り替える第２切り替え部をさらに有する、関数暗号応用システム。
【請求項６】
請求項１の関数暗号応用システムであって、  前記第２対応情報は、当該第２対応情報と前記第１対応情報とが予め定められた関数に入力された場合に、前記第１対応情報がとる１種類又は複数種類の値に対して当該関数の関数値を予め定められた値にし、  前記復号関数は、前記第１情報に対応する前記特定の第１対応情報と前記第２情報に対応する前記特定の第２対応情報とが前記予め定められた関数に入力された場合の関数値が前記予め定められた値となる場合に、正しい復号結果を生成する関数である、関数暗号応用システム。
【請求項７】
請求項６の関数暗号応用システムであって、  前記第２対応情報は、当該第２対応情報と前記第１対応情報とが予め定められた関数に入力された場合に、前記第１対応情報がとる複数種類の値に対して当該関数の関数値を前記予め定められた値にする、関数暗号応用システム。
【請求項８】
請求項７の関数暗号応用システムであって、  前記第１対応情報及び前記第２対応情報はベクトルであり、  前記予め定められた関数は、前記第１対応情報と前記第２対応情報との内積を算出する関数であり、前記予め定められた値は０である、関数暗号応用システム。
【請求項９】
請求項８の関数暗号応用システムであって、  少なくとも一部の前記第１対応情報は、一部の要素である第１予備領域の値が予め固定されたベクトルであり、  少なくとも一部の前記第２対応情報は、一部の要素である第２予備領域の値が予め固定されたベクトルであり、  前記第１予備領域を含む前記第１対応情報の当該第１予備領域の位置と、前記第２対応情報の前記第２予備領域の位置とは、互いに等しく、  前記第１予備領域を含む前記第１対応情報の当該第１予備領域をなすベクトルと前記第２対応情報の前記第２予備領域をなすベクトルとの内積は、前記１種類の識別子又は前記複数種類の識別子の組み合わせにかかわらず０である、関数暗号応用システム。
【請求項１０】
請求項９の関数暗号応用システムであって、  前記第１予備領域の値はすべて０である、関数暗号応用システム。
【請求項１１】
請求項９の関数暗号応用システムであって、  前記第２予備領域の値はすべて０である、関数暗号応用システム。
【請求項１２】
請求項１０の関数暗号応用システムであって、  前記第２予備領域の少なくとも一部の値は０以外である、関数暗号応用システム。
【請求項１３】
請求項１１の関数暗号応用システムであって、  前記第１予備領域の少なくとも一部の値は０以外である、関数暗号応用システム。
【請求項１４】
請求項８から１３の何れかの関数暗号応用システムであって、  前記第１対応情報は、論理和及び／又は論理積を含む論理式を示す多項式の各項の不定元成分に前記識別子が代入された値を各要素とするベクトルであり、  前記第２対応情報は、前記論理式を示す多項式の各項の係数成分を各要素とするベクトルであり、  前記論理式を示す多項式は、不定元と定数との差をとる多項式によって当該不定元が当該定数であるという命題を表現し、命題をそれぞれ表現する多項式の積によって当該命題の論理和を表現し、命題又は命題の論理和をそれぞれ表現する多項式の線形和によって当該命題又は命題の論理和の論理積を表現し、それによって前記論理式を表現した多項式であり、  前記論理式を示す多項式は、前記第１対応情報と前記第２対応情報との内積に等しく、前記論理式が真であることと前記論理式を示す多項式が０であることとが等価である、関数暗号応用システム。
【請求項１５】
請求項１４の関数暗号応用システムであって、  前記第１対応情報及び前記第２対応情報は、前記１種類の識別子又は前記複数種類の識別子の組み合わせにかかわらず予め真となるように設定された命題の論理積を一部に含む前記論理式に対応する、関数暗号応用システム。
【請求項１６】
請求項１の関数暗号応用システムであって、  前記第１対応情報は１又は複数の第１部分対応情報を含み、前記第２対応情報は１又は複数の第２部分対応情報を含み、  前記第１部分対応情報及び前記第２部分対応情報が予め定められた関数に入力された場合に、前記第１部分対応情報の値及び前記第２部分対応情報の値の組み合わせに応じて当該関数の関数値が予め定められた値となるか、又は、当該予め定められた値以外の値となり、  前記第１部分対応情報及び前記第２部分対応情報の組み合わせごとに、前記関数の関数値が前記予め定められた値となる場合を前記第１部分対応情報及び前記第２部分対応情報の組み合わせが真であるとするか、又は、前記関数の関数値が前記予め定められた値とならない場合を前記第１部分対応情報及び前記第２部分対応情報の組み合わせが真であるとするかが定められており、  前記復号関数は、真となる前記第１部分対応情報及び前記第２部分対応情報の組み合わせの集合が予め定められた条件を満たした場合に、正しい復号結果を生成する関数である、関数暗号応用システム。
【請求項１７】
請求項１６の関数暗号応用システムであって、  前記第１部分対応情報のそれぞれ又は前記第２部分対応情報のそれぞれにベクトルが対応付けられており、  前記復号関数は、真となる前記第１部分対応情報及び前記第２部分対応情報の組み合わせがそれぞれ含む、前記第１部分対応情報又は前記第２部分対応情報に対応付けられたベクトルで張られるベクトル空間内に特定のベクトルが存在する場合に、正しい復号結果を生成する関数である、関数暗号応用システム。
【請求項１８】
請求項１６又は１７の関数暗号応用システムであって、  前記第１部分対応情報及び前記第２部分対応情報はベクトルであり、  前記予め定められた関数は、前記第１部分対応情報と前記第２部分対応情報との内積を算出する関数であり、前記予め定められた値は０である、関数暗号応用システム。
【請求項１９】
請求項１８の関数暗号応用システムであって、  少なくとも一部の前記第１部分対応情報は値が予め固定されたベクトルであり、  少なくとも一部の前記第２部分対応情報は値が予め固定されたベクトルであり、  値が予め固定されたベクトルである前記第１部分対応情報と値が予め固定されたベクトルである前記第２部分対応情報との内積は、前記１種類の識別子又は前記複数種類の識別子の組み合わせにかかわらず０である、関数暗号応用システム。
【請求項２０】
請求項１９の関数暗号応用システムであって、  値が予め固定されたベクトルである前記第１部分対応情報はすべての要素が０のベクトルである、関数暗号応用システム。
【請求項２１】
請求項１９の関数暗号応用システムであって、  値が予め固定されたベクトルである前記第２部分対応情報はすべての要素が０のベクトルである、関数暗号応用システム。
【請求項２２】
請求項２０の関数暗号応用システムであって、  値が予め固定されたベクトルである前記第２部分対応情報は０以外の要素を含むベクトルである、関数暗号応用システム。
【請求項２３】
請求項２１の関数暗号応用システムであって、  値が予め固定されたベクトルである前記第１部分対応情報は０以外の要素を含むベクトルである、関数暗号応用システム。
【請求項２４】
請求項１の関数暗号応用システムであって、  前記情報処理装置は、１種類の前記特定の第２対応情報に対応する１種類の前記第２情報を格納する、関数暗号応用システム。
【請求項２５】
請求項１の関数暗号応用システムであって、  前記関数暗号方式に従ったプロトコル又は前記関数暗号方式に従ったプロトコルの組み合わせに対して使用すべき第１対応情報の種別が定められており、前記規則は、前記特定のプロトコル又は前記特定のプロトコルの組み合わせに使用すべき種別の前記特定の第１対応情報を定める前記１種類の識別子又は前記複数種類の識別子の組み合わせを特定するものである、関数暗号応用システム。
【請求項２６】
請求項１又は２５の関数暗号応用システムであって、  前記プロトコルは、Timed-Release暗号プロトコル、Forward Secure暗号プロトコル、Key Insulated暗号プロトコル、CCA2安全暗号プロトコル、Keyword検索暗号プロトコルの少なくとも１つを含む集合から選択されたものであり、  前記プロトコルがTimed-Release暗号プロトコルである場合の前記規則は、前記第１情報の生成時点より未来の時点を特定する情報を前記識別子とする規則であり、  前記プロトコルがForward Secure暗号プロトコル又はKey Insulated暗号プロトコルである場合の前記規則は、それぞれ、前記第１情報の生成時点を含む時間区間又は前記第１情報の生成時点より未来の時間区間を特定する情報を前記識別子とする規則であり、  前記プロトコルがCCA2安全暗号プロトコルである場合の前記規則は、前記第１情報の生成ごとに新たに設定される使い捨て情報を特定する情報を前記識別子とする規則であり、  前記プロトコルがKeyword検索暗号プロトコルである場合の前記規則は、データベースの検索用キーワードを特定する情報を前記識別子とする規則である、関数暗号応用システム。
【請求項２７】
第１対応情報及び第２対応情報の組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式に従ったプロトコルごとに定められた規則、又は前記関数暗号方式に従ったプロトコルの組み合わせごとに定められた規則に従い、前記関数暗号方式に従った特定のプロトコル又は前記関数暗号方式に従った特定のプロトコルの組み合わせに対応する１種類の識別子又は複数種類の識別子を特定する識別子特定部と、  前記１種類の識別子又は前記複数種類の識別子の組み合わせに対応する特定の第１対応情報を設定する対応情報設定部と、  前記特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報を出力する出力部と、を有する情報出力装置。
【請求項２８】
請求項２７の情報出力装置であって、  前記識別子特定部は、前記特定のプロトコルの組み合わせに対応する前記１種類の識別子又は複数種類の識別子を特定し、  前記特定のプロトコルの組み合わせは、前記関数暗号方式に従った複数種類のプロトコルからなる組み合わせである、情報出力装置。
【請求項２９】
請求項２７又は２８の情報出力装置であって、  前記特定のプロトコルに応じ、前記第１情報が暗号文であるか鍵情報であるかを切り替える第１切り替え部をさらに有する、情報出力装置。
【請求項３０】
第１対応情報及び第２対応情報の組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式に従ったプロトコルごとに定められた規則、又は前記関数暗号方式に従ったプロトコルの組み合わせごとに定められた規則に従って定まる１種類の識別子又は複数種類の識別子の組み合わせに対応する特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報、及び特定の第２対応情報に対応する前記関数暗号方式の鍵情報又は暗号文である第２情報を関数暗号方式の復号関数に入力し、前記第１情報に対応する特定の第１対応情報及び前記第２情報に対応する前記特定の第２対応情報の組み合わせに対応する論理式の真理値が真の場合に復号結果を生成する復号部を有し、  前記特定の第２対応情報は、前記特定の第１対応情報に対応する前記第１情報、及び前記特定の第２対応情報に対応する前記第２情報が前記復号関数に入力された場合、前記特定の第１対応情報がとる１種類の値又は複数種類の値に対してそれぞれ復号結果が得られる値をとり、  前記第１情報が前記特定の第１対応情報に対応する暗号文である場合には前記第２情報は前記特定の第２対応情報に対応する鍵情報であり、前記第１情報が前記特定の第１対応情報に対応する鍵情報である場合には前記第２情報は前記特定の第２対応情報に対応する暗号文である、情報処理装置。
【請求項３１】
請求項３０の情報処理装置であって、  前記特定の第２対応情報は、前記特定の第１対応情報に対応する前記第１情報、及び前記特定の第２対応情報に対応する前記第２情報が前記復号関数に入力された場合、前記特定の第１対応情報がとる複数種類の値に対してそれぞれ復号結果が得られる値をとる、情報処理装置。
【請求項３２】
請求項３０又は３１の情報処理装置であって、  前記識別子特定部は、前記特定のプロトコルの組み合わせに対応する前記１種類の識別子又は複数種類の識別子を特定し、  前記特定のプロトコルの組み合わせは、前記関数暗号方式に従った複数種類のプロトコルからなる組み合わせである、情報処理装置。
【請求項３３】
請求項３２の情報処理装置であって、  前記特定のプロトコルに応じ、前記第２情報が鍵情報又は暗号文であるかを切り替える第２切り替え部をさらに有する、情報処理装置。
【請求項３４】
請求項３０又は３１の情報処理装置であって、  前記特定のプロトコルに応じ、前記第２情報が鍵情報又は暗号文であるかを切り替える第２切り替え部をさらに有する、情報処理装置。
【請求項３５】
情報出力装置が、第１対応情報及び第２対応情報の組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式に従ったプロトコルごとに定められた規則、又は前記関数暗号方式に従ったプロトコルの組み合わせごとに定められた規則に従い、前記関数暗号方式に従った特定のプロトコル又は前記関数暗号方式に従った特定のプロトコルの組み合わせに対応する１種類の識別子又は複数種類の識別子を特定する識別子特定ステップと、  前記情報出力装置が、前記１種類の識別子又は前記複数種類の識別子の組み合わせに対応する特定の第１対応情報を設定する対応情報設定ステップと、  前記情報出力装置が、前記特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報を出力する出力ステップと、  情報処理装置が、前記第１情報、及び特定の第２対応情報に対応する関数暗号方式の鍵情報又は暗号文である第２情報を関数暗号方式の復号関数に入力し、前記第１情報に対応する前記特定の第１対応情報及び前記第２情報に対応する前記特定の第２対応情報の組み合わせに対応する論理式の真理値が真の場合に復号結果を生成する復号ステップと、を有し、  前記特定の第２対応情報は、前記特定の第１対応情報に対応する前記第１情報、及び前記特定の第２対応情報に対応する前記第２情報が前記復号関数に入力された場合、前記特定の第１対応情報がとる１種類の値又は複数種類の値に対してそれぞれ復号結果が得られる値をとり、  前記第１情報が前記特定の第１対応情報に対応する暗号文である場合には前記第２情報は前記特定の第２対応情報に対応する鍵情報であり、前記第１情報が前記特定の第１対応情報に対応する鍵情報である場合には前記第２情報は前記特定の第２対応情報に対応する暗号文である、暗号プロトコル実行方法。
【請求項３６】
識別子特定部が、第１対応情報及び第２対応情報の組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式に従ったプロトコルごとに定められた規則、又は前記関数暗号方式に従ったプロトコルの組み合わせごとに定められた規則に従い、前記関数暗号方式に従った特定のプロトコル又は前記関数暗号方式に従った特定のプロトコルの組み合わせに対応する１種類の識別子又は複数種類の識別子を特定する識別子特定ステップと、  対応情報設定部が、前記１種類の識別子又は前記複数種類の識別子の組み合わせに対応する特定の第１対応情報を設定する対応情報設定ステップと、  出力部が、前記特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報を出力する出力ステップと、を有する情報出力方法。
【請求項３７】
請求項３６の情報出力方法であって、  前記識別子特定ステップは、前記特定のプロトコルの組み合わせに対応する前記１種類の識別子又は複数種類の識別子を特定するステップであり、  前記特定のプロトコルの組み合わせは、前記関数暗号方式に従った複数種類のプロトコルからなる組み合わせである、情報出力方法。
【請求項３８】
請求項３６又は３７の情報出力方法であって、  切り替え部が、前記特定のプロトコルに応じ、前記第１情報が暗号文であるか鍵情報であるかを切り替えるステップをさらに有する、情報出力方法。
【請求項３９】
復号部が、第１対応情報及び第２対応情報の組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式に従ったプロトコルごとに定められた規則、又は前記関数暗号方式に従ったプロトコルの組み合わせごとに定められた規則に従って定まる１種類の識別子又は複数種類の識別子の組み合わせに対応する特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報、及び特定の第２対応情報に対応する前記関数暗号方式の鍵情報又は暗号文である第２情報を関数暗号方式の復号関数に入力し、前記第１情報に対応する特定の第１対応情報及び前記第２情報に対応する前記特定の第２対応情報の組み合わせに対応する論理式の真理値が真の場合に復号結果を生成する復号ステップを有し、  前記特定の第２対応情報は、前記特定の第１対応情報に対応する前記第１情報、及び前記特定の第２対応情報に対応する前記第２情報が前記復号関数に入力された場合、前記特定の第１対応情報がとる１種類の値又は複数種類の値に対してそれぞれ復号結果が得られる値をとり、  前記第１情報が前記特定の第１対応情報に対応する暗号文である場合には前記第２情報は前記特定の第２対応情報に対応する鍵情報であり、前記第１情報が前記特定の第１対応情報に対応する鍵情報である場合には前記第２情報は前記特定の第２対応情報に対応する暗号文である、情報処理方法。
【請求項４０】
請求項３９の情報処理方法であって、  前記特定の第２対応情報は、前記特定の第１対応情報に対応する前記第１情報、及び前記特定の第２対応情報に対応する前記第２情報が前記復号関数に入力された場合、前記特定の第１対応情報がとる複数種類の値に対してそれぞれ復号結果が得られる値をとる、情報処理方法。
【請求項４１】
請求項３９又は４０の情報処理方法であって、  前記１種類の識別子又は複数種類の識別子は、前記特定のプロトコルの組み合わせに対応し、前記特定のプロトコルの組み合わせは、前記関数暗号方式に従った複数種類のプロトコルからなる組み合わせである、情報処理方法。
【請求項４２】
請求項４１の情報処理方法であって、  切り替え部が、前記特定のプロトコルに応じ、前記第２情報が鍵情報又は暗号文であるかを切り替えるステップをさらに有する、情報処理方法。
【請求項４３】
請求項３９又は４０の情報処理方法であって、  切り替え部が、前記特定のプロトコルに応じ、前記第２情報が鍵情報又は暗号文であるかを切り替えるステップをさらに有する、情報処理方法。
【請求項４４】
請求項２７の情報出力装置としてコンピュータを機能させるためのプログラム。
【請求項４５】
請求項３０の情報処理装置としてコンピュータを機能させるためのプログラム。
【請求項４６】
請求項２７の情報出力装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項４７】
請求項３０の情報処理装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、暗号技術に関し、特に、関数暗号技術に関する。
【背景技術】
【０００２】  IDベース暗号(IBE: Identity-based Encryption)方式は、公開パラメータと或る識別子(ID)とを用いて暗号文を生成することができ、当該識別子と一対一で対応する鍵情報SKIDを用いて当該暗号文を復号できる方式である（例えば、非特許文献１等参照）。近年、このようなIDベース暗号方式を応用した様々なプロトコルが提案されている。【０００３】  例えば、IDベース暗号方式において、現在の日時を含む時間区間に対応する値と受信者装置の固有識別子とを含む値を識別子として暗号化や鍵情報生成を行うことで、Forward-secure暗号やKey-Insulated暗号を構成できることが知られている（例えば、非特許文献２，３等参照）。また、IDベース暗号方式において、検索対象に対応するキーワードを含む情報を識別子とした暗号文を暗号化された検索対象に対応付けた暗号化データベースを格納しておき、キーワードを含む情報を識別子とした鍵情報を用いて暗号化データベースを検索するKeyword検索暗号を構成できることが知られている（例えば、非特許文献４等参照）。その他、例えば、暗号文を復号すべき時点を識別子とすればTimed-Release暗号が実現でき、ランダム数のような使い捨て情報を識別子とすればCCA2(Chosen Ciphertext Attack 2)暗号を実現できる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】D.Boneh, M. Franklin, "Identity Based Encryption from the Weil Pairing," Crypto 2001, Lecture Notes in Computer Science, Vol. 2139, Springer-Verlag, pp.213-229, 2001.
【非特許文献２】R. Canetti, S. Halevi, J. Katz, "A Forward-Secure Public-Key Encryption Scheme," EUROCRYPT'2003, 255-271.
【非特許文献３】Y. Dodis, M. Franklin, J. Katz, A. Miyaji and M. Yung, "Intrusion-Resilient Public-Key Encryption," CT RSA 2003, Lecture Notes in Computer Science, 2612(2003), Springer-Verlag, 19-32.
【非特許文献４】D. Boneh, G. Di Crescenzo, R. Ostrovsky, and G. Persiano, "Public Key Encryption with keyword Serch," Eurocrypt 2004.
【発明の概要】
【発明が解決しようとする課題】
【０００５】  上述のように、IDベース暗号方式では、使用する識別子に応じて様々なプロトコルを構成できる。そのため、使用する識別子を切り替えることでプロトコルを切り替えることができる。また、複数のプロトコルに対応する識別子の組み合わせを新たな識別子として用いれば、複数のプロトコルの組み合わせ、すなわち、複数のプロトコルの特徴を兼ね備えた新たなプロトコルを構成することもできる。【０００６】  しかしながら、IDベース暗号方式の鍵情報と識別子とは一対一で対応する。すなわち、IDベース暗号方式を応用したプロトコルでは、プロトコルごとに別個の鍵情報が必要となる。そのため、暗号文を生成する側の装置が暗号文の生成に使用する識別子を選択し、選択した識別子に応じてプロトコルを切り替えるシステムを構成した場合、暗号文の復号を行う装置は、切り替えられる各プロトコルにそれぞれ別個に対応する各鍵情報を保持しておく必要がある。このような鍵情報の生成・管理は煩雑であり、好ましくない。【０００７】  同様に、１つの平文に対するIDベース暗号方式の暗号文と識別子とは一対一で対応する。すなわち、IDベース暗号方式を応用したプロトコルでは、プロトコルごとに別個の暗号文が必要となる。そのため、鍵情報を生成する側の装置が鍵情報の生成に使用する識別子を選択し、選択した識別子に応じてプロトコルを切り替えるシステムを構成した場合、暗号文の生成を行う装置は、切り替えられる各プロトコルにそれぞれ別個に対応する各暗号文を保持しておく必要がある。このような暗号文の生成・管理は煩雑であり、好ましくない。【０００８】  このような問題は、鍵情報を生成する側の装置が鍵情報の生成に使用する識別子を選択し、選択した識別子に応じてプロトコルを切り替えることが可能であるとともに、暗号文を生成する側の装置が暗号文の生成に使用する識別子を選択し、選択した識別子に応じてプロトコルを切り替えることも可能なシステムを構成する場合でも同様に生じる。【０００９】  本発明はこのような点に鑑みてなされたものであり、煩雑な処理・管理を必要とせずに、選択した識別子に応じてプロトコルを切り替えることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】  本発明では上記課題を解決するために、第１対応情報及び第２対応情報の組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式に従ったプロトコルを構成する。【００１１】  本発明の情報出力装置は、関数暗号方式に従ったプロトコルごとに定められた規則、又は関数暗号方式に従ったプロトコルの組み合わせごとに定められた規則に従い、関数暗号方式に従った特定のプロトコル又は関数暗号方式に従った特定のプロトコルの組み合わせに対応する１種類の識別子又は複数種類の識別子を特定し、１種類の識別子又は複数種類の識別子の組み合わせに対応する特定の第１対応情報を設定し、特定の第１対応情報に対応する関数暗号方式の暗号文又は鍵情報である第１情報を出力する。【００１２】  本発明の情報処理装置は、第１情報、及び特定の第２対応情報に対応する関数暗号方式の鍵情報又は暗号文である第２情報を関数暗号方式の復号関数に入力し、第１情報に対応する特定の第１対応情報及び第２情報に対応する特定の第２対応情報の組み合わせに対応する論理式の真理値が真の場合に復号結果を生成する。なお、第１情報が特定の第１対応情報に対応する暗号文である場合には第２情報は特定の第２対応情報に対応する鍵情報であり、第１情報が特定の第１対応情報に対応する鍵情報である場合には第２情報は特定の第２対応情報に対応する暗号文である。【００１３】  上述のように、関数暗号方式では、第１情報に対応する特定の第１対応情報と第２情報に対応する特定の第２対応情報との組み合わせに対応する論理式の真理値が真の場合に、正しい復号結果が生成される。また、特定の第１対応情報は、１種類の識別子又は複数種類の識別子の組み合わせに対して定まる情報である。また、特定の第２対応情報は、特定の第１対応情報に対応する第１情報、及び特定の第２対応情報に対応する第２情報が復号関数に入力された場合、特定の第１対応情報がとる１種類の値又は複数種類の値に対してそれぞれ復号結果が得られる値をとる。すなわち、本発明では、１種類以上の第１情報に対して同一の第２情報を共用して、正しい復号を行うことができる。
【発明の効果】
【００１４】  以上のように本発明では、１種類以上の第１情報に対して同一の第２情報を共用できる。そのため、情報出力装置が１種類の識別子又は２種類以上の当該識別子の組み合わせを選択し、選択した識別子に応じてプロトコルを切り替えて第１情報を生成する場合であっても、情報処理装置は切り替えられるプロトコルごとに別個に第２情報を生成する必要はない。その結果、本発明では、煩雑な処理・管理を必要とせずに、選択した識別子に応じてプロトコルを切り替えることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、第１実施形態の関数暗号応用システムの全体構成を説明するためのブロック図である。
【図２】図２は、図１の送信者装置（情報出力装置）の構成を説明するためのブロック図である。
【図３】図３は、図１の受信者装置（情報処理装置）の構成を説明するためのブロック図である。
【図４】図４は、図１の鍵生成装置の構成を説明するためのブロック図である。
【図５】図５Ａは、第１実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。図５Ｂは、第１実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【図６】図６Ａは、第１実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。図６Ｂは、第１実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。
【図７】図７は、第１実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。
【図８】図８Ａは、１種類の識別子ID(h)又は２種類以上の識別子ID(h)の組み合わせに対して１つの属性情報ATTを特定するための属性情報テーブルの一例を説明するための図であり、図８Ｂは、当該属性情報テーブルによって定まる属性情報ATTのデータ構成を説明するための図である。
【図９】図９Ａは、１種類の識別子ID(h)又は２種類以上の識別子ID(h)の組み合わせに対して１つの属性情報ATTを特定するための属性情報テーブルの一例を説明するための図である。図９Ｂは、当該属性情報テーブルによって定まる属性情報ATTのデータ構成を説明するための図である。
【図１０】図１０Ａは、それぞれ、多項式f(x0,...,xH-1)に対応する述語情報PREの一例を説明するための図である。図１０Ｂは、当該述語情報PREのデータ構成を説明するための図である。
【図１１】図１１Ａは、それぞれ、多項式f(x0,...,xH-1)に対応する述語情報PREの一例を説明するための図である。図１１Ｂは、当該述語情報PREのデータ構成を説明するための図である。
【図１２】図１２Ａは、第１実施形態の暗号化処理を説明するためのフローチャートである。図１２Ｂは、第１実施形態の鍵情報生成処理を説明するためのフローチャートである。
【図１３】図１３は、第１実施形態の復号処理を説明するためのフローチャートである。
【図１４】図１４Ａは、属性情報ATT及び述語情報PREの一部の領域を予備領域とした例を説明するための図である。図１４Ｂは、属性情報ATT及び述語情報PREの一部の領域を予備領域とした例を説明するための図である。
【図１５】図１５Ａは、属性情報ATT及び述語情報PREの一部の領域を予備領域とした例を説明するための図である。図１５Ｂは、属性情報ATT及び述語情報PREの一部の領域を予備領域とした例を説明するための図である。
【図１６】図１６は、特定情報PIの値にかかわらず、予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定する場合の一例を説明するための図である。
【図１７】図１７Ａは、特定情報PIの値にかかわらず、予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定する場合の一例を説明するための図である。図１７Ｂは、特定情報PIの値にかかわらず、予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定する場合の一例を説明するための図である。
【図１８】図１８Ａは、特定情報PIの値にかかわらず、予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定する場合の一例を説明するための図である。図１８Ｂは、特定情報PIの値にかかわらず、予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定する場合の一例を説明するための図である。
【図１９】図１９は、第２実施形態の関数暗号応用システムの全体構成を説明するためのブロック図である。
【図２０】図２０は、図１９の送信者装置（情報出力装置）の構成を説明するためのブロック図である。
【図２１】図２１は、図１９の受信者装置（情報処理装置）の構成を説明するためのブロック図である。
【図２２】図２２Ａは、第２実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。図２２Ｂは、第２実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【図２３】図２３Ａは、第２実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。図２３Ｂは、第２実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。
【図２４】図２４は、第２実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。
【図２５】図２５は、第２実施形態の暗号化DBの一例を説明するための図である。
【図２６】図２６Ａは、第２実施形態の検索依頼処理を説明するためのフローチャートである。図２６Ｂは、第２実施形態の鍵情報生成処理を説明するためのフローチャートである。
【図２７】図２７は、第２実施形態の検索処理を説明するためのフローチャートである。
【図２８】図２８は、第３実施形態の関数暗号応用システムの全体構成を説明するためのブロック図である。
【図２９】図２９は、図２８の送信者装置（情報出力装置）の構成を説明するためのブロック図である。
【図３０】図３０は、図２８の受信者装置（情報処理装置）の構成を説明するためのブロック図である。
【図３１】図３１Ａは、第３実施形態の送信者装置の処理を説明するためのフローチャートである。図３１Ｂは、第３実施形態の受信者装置の処理を説明するためのフローチャートである。
【図３２】図３２は、標準形論理式を表現する木構造データを例示する図である。
【図３３】図３３は、標準形論理式を表現する木構造データを例示する図である。
【図３４】図３４は、関数暗号の(Dec-1)の処理の具体例を説明するための図である。
【図３５】図３５は、第４実施形態の関数暗号応用システムの全体構成を説明するためのブロック図である。
【図３６】図３６は、第４実施形態の送信者装置（情報出力装置）の構成を説明するためのブロック図である。
【図３７】図３７は、第４実施形態の受信者装置（情報処理装置）野構成を説明するためのブロック図である。
【図３８】図３８は、第４実施形態の鍵生成装置の構成を説明するためのブロック図である。
【図３９】図３９Ａは、第４実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。図３９Ｂは、第４実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【図４０】図４０Ａは、第４実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。図４０Ｂは、第４実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。
【図４１】図４１は、第４実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。
【図４２】図４２Ａは、属性情報VSET1のデータ構成を説明するための図である。図４２Ｂは、条件情報VSET2のデータ構成を説明するための図である。
【図４３】図４３Ａは、第４実施形態の暗号化処理を説明するためのフローチャートである。図４３Ｂは、第４実施形態の鍵情報生成処理を説明するためのフローチャートである。
【図４４】図４４は、第４実施形態の復号処理を説明するためのフローチャートである。
【図４５】図４５Ａは、属性情報VSET1の一部の領域を予備領域とした例を説明するための図である。図４５Ｂは、条件情報VSET2の一部の領域を予備領域とした例を説明するための図である。
【図４６】図４６は、第５実施形態の送信者装置（情報出力装置）の構成を説明するためのブロック図である。
【図４７】図４７は、第５実施形態の受信者装置（情報処理装置）の構成を説明するためのブロック図である。
【図４８】図４８Ａは、第５実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。図４８Ｂは、第５実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【図４９】図４９Ａは、第５実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。図４９Ｂは、第５実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。
【図５０】図５０は、第５実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。
【図５１】図５１は、第５実施形態の暗号化DBの一例を説明するための図である。
【図５２】図５２は、第５実施形態の検索依頼処理を説明するためのフローチャートである。
【図５３】図５３Ａは、第５実施形態の鍵情報生成処理を説明するためのフローチャートである。図５３Ｂは、第５実施形態の検索処理を説明するためのフローチャートである。
【図５４】図５４は、第６実施形態の送信者装置（情報出力装置）の構成を説明するためのブロック図である。
【図５５】図５５は、第６実施形態の受信者装置（情報処理装置）の構成を説明するためのブロック図である。
【図５６】図５６Ａは、第６実施形態の送信者装置の処理を説明するためのフローチャートである。図５６Ｂは、第６実施形態の受信者装置の処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】  以下、本発明を実施するための形態を説明する。  〔第１〜３実施形態での定義〕  まず、第１〜３実施形態で使用する用語や記号を定義する。
【００１７】  行列：「行列」とは演算が定義された集合の元を矩形に並べたものを表す。環の元を要素とするものだけではなく、群の元を要素とするものも「行列」と表現する。  (・)T：(・)Tは・の転置行列を表す。  (・)-1：(・)-1は・の逆行列を表す。  ∧：∧は論理積を表す。  ∨：∨は論理和を表す。  Ｚ：Ｚは整数集合を表す。  ｋ：ｋはセキュリティパラメータ（k∈Z, k>0）を表す。
【００１８】  {0,1}*：{0,1}*は任意ビット長のバイナリ系列を表す。その一例は、整数0及び1からなる系列である。しかし、{0,1}*は整数0及び1からなる系列に限定されない。{0,1}*は位数2の有限体又はその拡大体と同義である。  q：qは１以上の整数を表す。Zq：Zqは位数qの有限環を表す。有限環上の演算は、例えば、位数qを法とする剰余演算によって容易に構成できる。
【００１９】  Fq：Fqは位数qの有限体を表す。Fqが有限体であるためには、位数qは素数又は素数のべき乗値でなければならない。有限体Fqの例は素体やそれを基礎体とした拡大体である。なお、有限体Fqが素体である場合の演算は、例えば、位数qを法とする剰余演算によって容易に構成できる。また、有限体Fqが拡大体である場合の演算は、例えば、既約多項式を法とする剰余演算によって容易に構成できる。有限体Fqの具体的な構成方法は、例えば、参考文献１「ISO/IEC 18033-2: Information technology - Security techniques - Encryption algorithms - Part 2: Asymmetric ciphers」に開示されている。
【００２０】  0F：0Fは有限体Fqの加法単位元（零元）を表す。  1F：1Fは有限体Fqの乗法単位元を表す。  δ(i,j)：δ(i,j)はクロネッカーのデルタ関数を表す。i=jの場合にδ(i,j)=1Fを満たし、i≠jの場合にδ(i,j)=0 Fを満たす。
【００２１】  E：Eは有限体Fq上で定義された楕円曲線を表す。楕円曲線Eはアフィン（affine）座標版のWeierstrass方程式      y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6          …(1)（ただし、a1,a2,a3,a4,a6∈Fq）を満たすx,y∈Fqからなる点(x,y)の集合に無限遠点と呼ばれる特別な点Ｏを付加したもので定義される。楕円曲線E上の任意の２点に対して楕円加算と呼ばれる二項演算＋及び楕円曲線E上の任意の１点に対して楕円逆元と呼ばれる単項演算−がそれぞれ定義できる。また、楕円曲線E上の有理点からなる有限集合が楕円加算に関して群をなすこと、楕円加算を用いて楕円スカラー倍算と呼ばれる演算が定義できること、及びコンピュータ上での楕円加算などの楕円演算の具体的な演算方法はよく知られている（例えば、参考文献１、参考文献２「RFC 5091: Identity-Based Cryptography Standard (IBCS) #1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems」、参考文献３「イアン・Ｆ・ブラケ、ガディエル・セロッシ、ナイジェル・Ｐ・スマート＝著、「楕円曲線暗号」、出版＝ピアソン・エデュケーション、ISBN4-89471-431-0」等参照）。
【００２２】  また、楕円曲線E上の有理点からなる有限集合は位数p(p≧1)の部分群を持つ。例えば、楕円曲線E上の有理点からなる有限集合の要素数を＃Eとし、pを＃Eを割り切る大きい素数とした場合、楕円曲線Eのp等分点からなる有限集合E[p]は、楕円曲線E上の有理点からなる有限集合の部分群を構成する。なお、楕円曲線Eのp等分点とは、楕円曲線E上の点Aのうち、楕円曲線E上での楕円スカラー倍算値p・Aがp・A＝Ｏを満たす点を意味する。
【００２３】  G1, G2,GT：G1, G2, GTは位数qの巡回群を表す。巡回群G1, G2の具体例は、楕円曲線Eのp等分点からなる有限集合E[p]やその部分群である。G1=G2であってもよいしG1≠G2であってもよい。また、巡回群GTの具体例は、有限体Fqを基礎体とする拡大体の加法についての部分群である。その一例は、有限体Fqの代数閉包における１のｐ乗根からなる有限集合である。
【００２４】  なお、第１〜３実施形態では、巡回群G1, G2上で定義された演算を加法的に表現し、巡回群GT上で定義された演算を乗法的に表現する。すなわち、χ∈Fq及びΩ∈G1に対するχ・Ω∈G1は、Ω∈G1に対して巡回群G1で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G1に対するΩ1+Ω2∈G1は、Ω1∈G1とΩ2∈G1とを被演算子として巡回群G1で定義された演算を行うことを意味する。同様に、χ∈Fq及びΩ∈G2に対するχ・Ω∈G2は、Ω∈G2に対して巡回群G2で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G2に対するΩ1+Ω2∈G2は、Ω1∈G2とΩ2∈G2とを被演算子として巡回群G2で定義された演算を行うことを意味する。一方、χ∈Fq及びΩ∈GTに対するΩχ∈GTは、Ω∈GTに対して巡回群GTで定義された演算をχ回施すことを意味し、Ω1,Ω2∈GTに対するΩ1・Ω2∈GTは、Ω1∈GTとΩ2∈GTとを被演算子として巡回群GTで定義された演算を行うことを意味する。
【００２５】  G1n+1：G1n+1はn+1(n≧1)個の巡回群G1の直積を表す。  G2n+1：n+1個の巡回群G2の直積を表す。  g1, g2,gT：g1, g2, gTは巡回群G1, G2,GTの生成元を表す。  V：Vはn+1個の巡回群G1の直積からなるn+1次元のベクトル空間を表す。  V*：V*はn+1個の巡回群G2の直積からなるn+1次元のベクトル空間を表す。  e：eは直積G1n+1と直積G2n+1との直積G1n+1×G2n+1を巡回群GTに写す非退化な双線形写像（bilinear map）を表す。双線形写像eは、巡回群G1のn+1個の元γL(L=1,...,n+1)(n≧1)と巡回群G2のn+1個の元γL*(L=1,...,n+1)とを入力とし、巡回群GTの１個の元を出力する。      e：G1n+1×G2n+1→GT            …(2)
【００２６】  双線形写像eは以下の性質を満たす。  ［双線形性］すべてのΓ1∈G1n+1，Γ2∈G2n+1及びν，κ∈Fqについて以下の関係を満たす。      e(ν・Γ1,κ・Γ2)=e(Γ1,Γ2)ν・κ          …(3)  ［非退化性］すべてのΓ1∈G1n+1，Γ2∈G2n+1を巡回群GTの単位元に写すものではない。  ［計算可能性］あらゆるΓ1∈G1n+1，Γ2∈G2n+1についてe(Γ1,Γ2)を効率的に計算するアルゴリズムが存在する。
【００２７】  第１〜３実施形態では、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像      Pair:G1×G2→GT            …(4)を用いて双線形写像eを構成する。第１〜３実施形態の双線形写像eは、巡回群G1のn+1個の元γL(L=1,...,n+1)からなるn+1次元ベクトル(γ1,...,γn+1)と、巡回群G2のn+1個の元γL*(i=1,...,n+1)からなるn+1次元ベクトル(γ1*,...,γn+1*)との入力に対し、巡回群GTの１個の元      e=ΠL=1n+1Pair(γL, γL*)          …(5)を出力する。
【００２８】  なお、双線形写像Pairは、巡回群G1の１個の元と巡回群G2の１個の元との組を入力とし、巡回群GTの１個の元を出力するものであり、以下の性質を満たす。  ［双線形性］すべてのΩ1∈G1，Ω2∈G2及びν，κ∈Fqについて以下の関係を満たす。      Pair(ν・Ω1,κ・Ω2)=Pair(Ω1,Ω2)ν・κ          …(6)  ［非退化性］すべてのΩ1∈G1，Ω2∈G2を巡回群GTの単位元に写すものではない。  ［計算可能性］あらゆるΩ1∈G1，Ω2∈G2についてPair(Ω1,Ω2)を効率的に計算するアルゴリズムが存在する。
【００２９】  なお、双線形写像Pairの具体例は、WeilペアリングやTateペアリングなどのペアリング演算を行うための関数である（例えば、参考文献４「Alfred. J. Menezes，ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS， KLUWER ACADEMIC PUBLISHERS， ISBN0-7923-9368-6，pp. 61-81」等参照）。また、楕円曲線Eの種類に応じ、Tateペアリングなどのペアリング演算を行うための関数と所定の関数phiを組み合わせた変更ペアリング関数e(Ω1,phi(Ω2))（Ω1∈G1，Ω2∈G2）を双線形写像Pairとして用いてもよい（例えば、参考文献２等参照）。また、ペアリング演算をコンピュータ上で行うためのアルゴリズムとしては、周知のMiller のアルゴリズム（参考文献５「V. S. Miller, “Short Programs for functions on Curves,”1986，インターネット＜http://crypto.stanford.edu/miller/miller.pdf＞」などが存在する。また、ペアリング演算を効率的に行うための楕円曲線や巡回群の構成方法はよく知られている（例えば、参考文献２、参考文献６「A. Miyaji, M. Nakabayashi, S.Takano, "New explicit conditions of elliptic curve Traces for FR-Reduction," IEICE Trans. Fundamentals, vol. E84-A, no05, pp. 1234-1243, May 2001」、参考文献７「P.S.L.M. Barreto, B. Lynn, M. Scott, "Constructing elliptic curves with prescribed embedding degrees," Proc. SCN '2002, LNCS 2576, pp.257-267, Springer-Verlag. 2003」、参考文献８「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」等参照）。
【００３０】  ai(i=1,...,n+1)：aiは巡回群G1のn+1個の元を要素とするn+1次元の基底ベクトルを表す。基底ベクトルaiの一例は、κ1・g1∈G1をi次元目の要素とし、残りのn個の要素を巡回群G1の単位元（加法的に「0」と表現）とするn+1次元の基底ベクトルである。この場合、n+1次元の基底ベクトルai(i=1,...,n+1)の各要素をそれぞれ列挙して表現すると、以下のようになる。      a1=(κ1・g1,0,0,...,0)      a2=(0,κ1・g1,0,...,0)           …(7)                ...      an+1=(0,0,0,...,κ1・g1)
【００３１】  ここで、κ1は加法単位元0F以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ1=1Fである。基底ベクトルaiは直交基底であり、巡回群G1のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルai(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルaiは前述のベクトル空間Vを張る。
【００３２】  ai*(i=1,...,n+1)：ai*は巡回群G2のn+1個の元を要素とするn+1次元の基底ベクトルを表す。基底ベクトルai*の一例は、κ2・g2∈G2をi次元目の要素とし、残りのn個の要素を巡回群G2の単位元（加法的に「0」と表現）とするn+1次元の基底ベクトルである。この場合、基底ベクトルai*(i=1,...,n+1)の各要素をそれぞれ列挙して表現すると、以下のようになる。      a1*=(κ2・g2,0,0,...,0)      a2*=(0,κ2・g2,0,...,0)            …(8)              ...      an+1*=(0,0,0,...,κ2・g2)
【００３３】  ここで、κ2は加法単位元0F以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ2=1Fである。基底ベクトルai*は直交基底であり、巡回群G2のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルai*(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルai*は前述のベクトル空間V*を張る。
【００３４】  なお、基底ベクトルaiと基底ベクトルai*とは、0Fを除く有限体Fqの元τ=κ1・κ2について      e(ai, aj*)=gTτ・δ(i,j)           …(9)を満たす。すなわち、i=jの場合には、式(5)(6)の関係から、      e(ai, aj*)= Pair(κ1・g1,κ2・g2)・Pair(0, 0)・...・Pair(0, 0)              = Pair(g1, g2)κ1・κ2・Pair(g1, g2)0・0・...・Pair(g1, g2)0・0              = Pair(g1, g2)κ1・κ2=gTτを満たす。一方、i≠jの場合には、e(ai, aj*)は、Pair(κ1・g1,κ2・g2)を含まず、Pair(κ1・g1,0)と Pair(0,κ2・g2)とPair(0,0)との積になる。さらに、式(6)の関係からPair(g1, 0)=Pair(0, g2)=Pair(g1, g2)0を満たす。そのため、i≠jの場合には、      e(ai, aj*)=e(g1, g2)0=gT0を満たす。
【００３５】  特に、τ=κ1・κ2=1Fである場合（例えば、κ1=κ2=1Fの場合）、      e(ai, aj*)=gTδ(i,j)           …(10)を満たす。ここで、gT0=1は巡回群GTの単位元であり、gT1= gTは巡回群GTの生成元である。この場合、基底ベクトルaiと基底ベクトルai*とは双対正規直交基底であり、ベクトル空間Vとベクトル空間V*とは、双線形写像を構成可能な双対ベクトル空間〔双対ペアリングベクトル空間（DPVS:Dual Paring Vector space)〕である。
【００３６】  A：Aは基底ベクトルai(i=1,...,n+1)を要素とするn+1行n+1列の行列を表す。例えば、基底ベクトルai(i=1,...,n+1)が式(7)によって表現される場合、行列Aは、
【００３７】
【数１】
2011016401.tif 000003
【００３８】となる。  A*：A*は基底ベクトルai*(i=1,...,n+1)を要素とするn+1行n+1列の行列を表す。例えば、基底ベクトルai*(i=1,...,n+1)が式(8)によって表現される場合、行列A*は、
【００３９】
【数２】
2011016401.tif 000004
【００４０】となる。  X：Xは有限体Fqの元を要素とするn+1行n+1列の行列を表す。基底ベクトルaiの座標変換に用いられる。行列Ｘのi行j列(i=1,...,n+1,j=1,...,n+1)の要素をχi,j∈Fqとすると、行列Xは、
【００４１】
【数３】
2011016401.tif 000005
【００４２】となる。なお、行列Ｘの各要素χi,jを変換係数と呼ぶ。  X *：X *は行列Xの逆行列の転置行列Ｘ*=(Ｘ-1)Tを表す。基底ベクトルai*の座標変換に用いられる。行列X*のi行j列の要素をχi,j*∈Fqとすると、行列Ｘ*は、
【００４３】
【数４】
2011016401.tif 000006
【００４４】となる。なお、行列Ｘ*の各要素χi,j*を変換係数と呼ぶ。  この場合、n+1行n+1列の単位行列をIとするとＸ・(Ｘ*)T=Ｉを満たす。すなわち、単位行列
【００４５】
【数５】
2011016401.tif 000007
【００４６】に対し、
【００４７】
【数６】
2011016401.tif 000008
【００４８】を満たす。ここで、n+1次元ベクトル      χi→=(χi,1,...,χi,n+1)            …(17)      χj→*=(χj,1*,...,χj,n+1*)           …(18)を定義する。すると、式(16)の関係から、n+1次元ベクトルχi→とχj→*との内積は、      χi→・χj→*=δ(i,j)          …(19)となる。
【００４９】  bi：biは巡回群G1のn+1個の元を要素とするn+1次元の基底ベクトルを表す。biは行列Xを用いて基底ベクトルai(i=1,...,n+1)を座標変換することで得られる。具体的には、基底ベクトルbiは、      bi=Σj=1n+1χi,j・aj          …(20)の演算によって得られる。例えば、基底ベクトルaj(j=1,...,n+1)が式(7)によって表現される場合、基底ベクトルbiの各要素をそれぞれ列挙して表現すると、以下のようになる。      bi=(χi,1・κ1・g1 ,χi,2・κ1・g1 ,...,χi,n+1・κ1・g1)       …(21)
【００５０】  巡回群G1のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルbi(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルbiは前述のベクトル空間Vを張る。
【００５１】  bi*：bi*は巡回群G2のn+1個の元を要素とするn+1次元の基底ベクトルを表す。bi*は行列X*を用いて基底ベクトルai*(i=1,...,n+1)を座標変換することで得られる。具体的には、基底ベクトルbi*は、      bi*=Σj=1n+1χi,j*・aj*          …(22)の演算によって得られる。例えば、基底ベクトルaj*(j=1,...,n+1)が式(8)によって表現される場合、基底ベクトルbi*の各要素をそれぞれ列挙して表現すると、以下のようになる。      bi*=(χi,1*・κ2・g2 ,χi,2*・κ2・g2 ,...,χi,n+1*・κ2・g2)     …(23)
【００５２】  巡回群G2のn+1個の元を要素とするすべてのn+1次元ベクトルは、n+1次元の基底ベクトルbi*(i=1,...,n+1)の線形和によって表される。すなわち、n+1次元の基底ベクトルbi*は前述のベクトル空間V*を張る。
【００５３】  なお、基底ベクトルbiと基底ベクトルbi*とは、0Fを除く有限体Fqの元τ=κ1・κ2について      e(bi, bj*)=gTτ・δ(i,j)           …(24)を満たす。すなわち、式(5)(19)(21)(23)の関係から、
【００５４】
【数７】
2011016401.tif 000009
【００５５】を満たす。特に、τ=κ1・κ2=1Fである場合（例えば、κ1=κ2=1Fの場合）、      e(bi, bj*)=gTδ(i,j)           …(25)を満たす。この場合、基底ベクトルbiと基底ベクトルbi*とは、双対ペアリングベクトル空間（ベクトル空間Vとベクトル空間V*）の双対正規直交基底である。  なお、式(24)の関係を満たすのであれば、式(7)(8)で例示したもの以外の基底ベクトルai及びai*や、式(20)(22)で例示したもの以外の基底ベクトルbi及びbi*を用いてもよい。
【００５６】  B：Bは基底ベクトルbi(i=1,...,n+1)を要素とするn+1行n+1列の行列を表す。BはB=X・Aを満たす。例えば、基底ベクトルbiが式(21)によって表現される場合、行列Bは、
【００５７】
【数８】
2011016401.tif 000010
【００５８】となる。  B*：B*は基底ベクトルbi*(i=1,...,n+1)を要素とするn+1行n+1列の行列を表す。B*=X*・A*を満たす。例えば、基底ベクトルbi*(i=1,...,n+1)が式(23)によって表現される場合、行列B*は、
【００５９】
【数９】
2011016401.tif 000011
【００６０】となる。
【００６１】  w→：w→は有限体Fqの元を要素とするn次元ベクトルを表す。      w→=(w1,...,wn)∈Fqn           …(28)  wμ：wμはn次元ベクトルのμ(μ=1,...,n)番目の要素を表す。  v→：v→は有限体Fqの元を要素とするn次元ベクトルを表す。      v→=(v1,...,vn)∈Fqn           …(29)  vμ：vμはn次元ベクトルのμ(μ=1,...,n)番目の要素を表す。  Enc：Encは共通鍵暗号方式の暗号化処理を示す共通鍵暗号関数。共通鍵暗号方式の具体例は、カメリア（Camellia）(登録商標)やAESなどを表す。  Enck(M)：Enck(M)は共通鍵Kを用い、共通鍵暗号関数Encに従って平文Mを暗号化して得られた暗号文を表す。  Dec：Decは共通鍵暗号方式の復号処理を示す共通鍵復号関数を表す。  Deck(C)：Deck(C)は共通鍵Kを用い、共通鍵復号関数Decに従って暗号文Cを復号して得られた復号結果を表す。
【００６２】  〔内積述語暗号〕  次に、関数暗号の一種である内積述語暗号の基本的な構成を例示する。
【００６３】  ＜関数暗号＞  関数暗号とは、「属性情報」と呼ばれる情報と「述語情報」と呼ばれる情報との組み合わせが所定の論理式の真理値を「真」にする場合に暗号文が復号できる方式である。すなわち、関数暗号では、「属性情報」と「述語情報」の一方が暗号文に埋め込まれ、他方が鍵情報に埋め込まれ、暗号文又は鍵情報である第１情報に対応する属性情報と、鍵情報又は暗号文である第２情報に対応する述語情報とが予め定められた関数に入力された場合の当該関数値が予め定められた値となる場合に、正しい復号結果を生成する。例えば、参考文献９「"Predicate Encryption Supporting Disjunctions, Polynomial Equations, and Inner Products," with Amit Sahai and Brent Waters One of 4 papers from Eurocrypt 2008 invited to the Journal of Cryptology」等に開示された述語暗号は関数暗号の一種である。
【００６４】  ＜内積述語暗号＞  内積述語暗号は、属性情報や述語情報として互いに次元が等しいベクトルを用い、それらの内積が０となる場合に暗号文が復号される述語暗号である。内積述語暗号では、内積が０となることと論理式が「真」となることとが等価である。なお、参考文献９に記載された述語暗号も内積述語暗号の一種である。
【００６５】  ［論理式と多項式との関係］  内積述語暗号では、論理和や論理積からなる論理式を多項式で表現する。  まず、「xがη0である」という命題１と「xがη1である」という命題２との論理和 (x=η0)∨(x=η1)を      (x-η0)・(x-η1)          …(30)という多項式で表現する。すると、各真理値と式(30)の関数値との関係は以下のようになる。
【００６６】
【表１】
2011016401.tif 000012
【００６７】  [表1]から分かるように、論理和(x=η0)∨(x=η1)が真である場合、式(30)の関数値は0になり、論理和(x=η0)∨(x=η1)が偽である場合、式(30)の関数値は0以外の値となる。すなわち、論理和(x=η0)∨(x=η1)が真であることと、式(30)の関数値が0となることとは等価である。よって、論理和は式(30)で表現できる。
【００６８】  また、「xがη0である」という命題１と「xがη1である」という命題２との論理積 (x=η0)∧(x=η1)を      ι0・(x-η0)+ι1・(x-η1)          …(31)という多項式で表現する。ただし、ι0及びι1は乱数である（その他の添え字が付いたιも同様）。すると、真理値と式(31)の関数値とは以下の関係となる。
【００６９】
【表２】
2011016401.tif 000013
【００７０】  [表２]から分かるように、論理積 (x=η0)∧(x=η1)が真である場合、式(31)の関数値は0になり、論理積 (x=η0)∧(x=η1)が偽である場合、式(31)の関数値は0以外の値となる。すなわち、論理積 (x=η0)∧(x=η1)が真であることと、式(31)の関数値が0となることとは等価である。よって、論理積は式(31)で表現できる。
【００７１】  以上のように、式(30)と式(31)とを用いることで論理和や論理積からなる論理式を多項式f(x)で表現できる。例えば、論理式{(x=η0)∨(x=η1)∨(x=η2)}∧(x=η3)∧(x=η4)は、多項式f(x)=ι0・{(x-η0)・(x-η1)・(x-η2)}+ι1・(x=η3)+ι2・(x=η4)    …(32)で表現できる。
【００７２】  なお、式(30）では、１つの不定元xを用いて論理和を表現したが、複数の不定元を用いて論理和を表現することも可能である。例えば、２つの不定元x0及びx1を用い、「x0がη0である」という命題１と「x1がη1である」という命題２との論理和 (x0=η0)∨(x1=η1)を      (x0-η0)・(x1-η1)          …(33)という多項式で表現することも可能であり、３つ以上の不定元を用い、論理和を多項式で表現することも可能である。
【００７３】  また、式(31）では、１つの不定元xを用いて論理積を表現したが、複数の不定元を用いて論理積を表現することも可能である。例えば、また、「x0がη0である」という命題１と「x1がη1である」という命題２との論理積 (x0=η0)∧(x1=η1)を      ι0・(x0-η0)+ι1・(x1-η1)          …(34)という多項式で表現することも可能であり、３つ以上の不定元を用い、論理積を多項式で表現することも可能である。
【００７４】  以下では、論理和及び／又は論理積を含む論理式をH(H≧1)個の不定元x0,...,xH-1を用いて表現した多項式をf(x0,...,xH-1) と表現する。また、各不定元x0,...,xH-1に対応する命題を「xhがηhである」とする。ただし、ηh（h=0,...H-1）は命題ごとに定まる定数である。この場合、当該論理式を示す多項式f(x0,...,xH-1)は、不定元xhと定数ηhとの差をとる多項式によって当該不定元xhが当該定数ηhであるという命題を表現し、命題をそれぞれ表現する多項式の積によって当該命題の論理和を表現し、命題又は命題の論理和をそれぞれ表現する多項式の線形和によって当該命題又は命題の論理和の論理積を表現し、それによって論理式を表現した多項式となる。例えば、５つの不定元x0,...,x4を用い、論理式{(x0=η0)∨(x1=η1)∨(x2=η2)}∧(x3=η3)∧(x4=η4)を多項式で表現すると、  f(x0,...,x4)=ι0・{(x0-η0)・(x1-η1)・(x2-η2)}+ι1・(x3=η3)+ι2・(x4=η4)となる。
【００７５】  ［多項式と内積の関係］  論理式を示す多項式f(x0,...,xH-1)は、２つのn次元ベクトルの内積で表現できる。すなわち、多項式f(x0,...,xH-1)は、当該多項式f(x0,...,xH-1)の各項の不定元成分を各要素とするベクトル      v→=(v1,...,vn)          …(35)と、当該多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトル      w→=(w1,...,wn)          …(36)との内積      f(x0,...,xH-1)=w→・v→           …(37)に等しい。例えば、１つの不定元xで表現された多項式f(x)=θ0・x0+θ1・x+...+θn-1・xn-1は、２つのn次元ベクトル      v→=(v1,...,vn)=(x0,...,xn-1)           …(38)      w→=(w1,...,wn)=(θ0,...,θn-1)         …(39)の内積      f(x)= w→・v→          …(40)に等しい。
【００７６】  すなわち、論理式を示す多項式f(x0,...,xH-1)が0であるか否かと、多項式f(x0,...,xH-1)の各項の不定元成分を各要素とするベクトルv→と、多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトルw→との内積が0であるか否かとは等価である。      f(x0,...,xH-1)=0  ←→  w→・v→=0          …(41)
【００７７】  第１〜３実施形態で例示する内積述語暗号では、当該不定元成分にプロトコルごと又は当該プロトコルの組み合わせごとに定められた識別子が代入された値を各要素とするベクトルv→=(v0,...,vn-1)を属性情報ATTとし、係数成分を各要素とするベクトルw→=(w0,...,wn-1)を述語情報PREとする。すなわち、      属性情報ATT：v→=(v1,...,vn)           …(42)      述語情報PRE：w→=(w1,...,wn)           …(43)である。そして、属性情報ATTと述語情報PREの一方が暗号文に埋め込まれ、他方が鍵情報に埋め込まれる。
【００７８】  ［内積述語暗号の基本構成例１］  次に、内積述語暗号の具体例を示す。基本構成例１は、内積述語暗号によって鍵カプセル化メカニズムKEM (Key Encapsulation Mechanisms)を構成する例である。基本構成例１では、述語情報PREに対応する暗号文が生成され、属性情報ATTに対応する鍵情報が生成される。基本構成例１は、Setup(1k)，GenKey(MSK,w→)，Enc(PA,v→)，Dec(SKw,C1,C2)を含む。
【００７９】  《Setup(1k)：セットアップ》  −入力：セキュリティパラメータk  −出力：マスター秘密情報MSK，公開パラメータPK  Setup(1k)の一例では、まず、セキュリティパラメータkをnとして、n+1次元の基底ベクトルai(i=1,...,n+1)を要素とするn+1行n+1列の行列Aと、基底ベクトルai*(i=1,...,n+1)を要素とするn+1行n+1列の行列A*と、座標変換のためのn+1行n+1列の行列X，X*とが選択される。次に、式(20)に従って座標変換されたn+1次元の基底ベクトルbi(i=1,...,n+1)が算出され、式(22)に従って座標変換されたn+1次元の基底ベクトルbi*(i=1,...,n+1)が算出される。そして、基底ベクトルbi*(i=1,...,n+1)を要素とするn+1行n+1列の行列B*がマスター秘密情報MSKとして出力され、ベクトル空間V, V*、基底ベクトルbi(i=1,...,n+1)を要素とするn+1行n+1列の行列B、セキュリティパラメータk、有限体Fq、楕円曲線E、巡回群G1, G2,GT、生成元g1, g2, gT、双線形写像eなどが公開パラメータPKとして出力される。
【００８０】  《GenKey(MSK,w→)：鍵情報生成》  −入力：マスター秘密情報MSK，ベクトルw→  −出力：ベクトルw→に対応する鍵情報D*GenKey(MSK,w→)の一例では、まず、有限体Fqから元α∈Fqが選択される。そして、マスター秘密情報MSKである行列B*を用い、ベクトルw→に対応する鍵情報      D*=α・(Σμ=1nwμ・bμ*)+bn+1*∈G2n+1        …(44)が生成され、出力される。なお、巡回群G2上での離散対数問題の求解が困難である場合、鍵情報D*からwμ・bμ*やbn+1*の成分を分離抽出することは困難である。
【００８１】  《Enc(PA,v→)：暗号化》  −入力：公開パラメータPK，ベクトルv→，平文M  −出力：暗号文C1，C2，共通鍵K  Enc(PA,v→)の一例では、まず、共通鍵Kと有限体Fqの元である乱数υ1とが生成される。そして、行列Bなどの公開パラメータPKと、共通鍵Kを含む値に対応する有限体Fqの元υ2と、ベクトルv→と、乱数υ1とを用い、暗号文      C2=υ1・(Σμ=1nvμ・bμ)+υ2・bn+1∈G1n+1        …(45)が生成される。
【００８２】  そして、暗号文      C1=Enck(M)         …(46)が生成され、暗号文C1と暗号文C2と共通鍵Kとが出力される。共通鍵Kの一例はK=gTτ・υ2∈GTである。ここで、添え字のυ2はυ2を意味する。また、前述のようにτの一例はτ=1Fである。なお、巡回群G1上での離散対数問題の求解が困難である場合、暗号文C2からvμ・bμやυ2・bn+1の成分を分離抽出することは困難である。
【００８３】  《Dec(SKw,C1,C2)：鍵共有・復号》  −入力：ベクトルw→に対応する鍵情報D1*，暗号文C1，C2  −出力：共通鍵K，平文M  Dec(SKw,C1,C2)の一例では、まず、暗号文C2と鍵情報D1*とが式(2)の双線形写像eに入力される。すると、式(3)(24)の性質から、
【００８４】
【数１０】
2011016401.tif 000014
【００８５】を満たす。  ここで、内積w→・v→=0であれば、式(47)は、
【００８６】
【数１１】
2011016401.tif 000015
【００８７】と変形できる。この結果から共通鍵Kが生成され出力される。共通鍵Kの一例はK=gTτ・υ2∈GTである。  次に、当該共通鍵Kと暗号文C1とを用い、復号結果      M=Deck(C1)           …(49)が算出され出力される。
【００８８】  ［内積述語暗号の基本構成例２］  基本構成例２も、内積述語暗号を用いて鍵カプセル化メカニズムKEMを構成する場合の基本構成例であるが、基本構成例２では、属性情報ATTに対応する暗号文が生成され、述語情報PREに対応する鍵情報が生成される。この構成は、Setup(1k)，GenKey(MSK,v→)，Enc(PA,w→)，Dec(SKv,C1,C2)を含む。基本構成例２は、基本構成例１のベクトルv→とベクトルw→とを逆にした構成となる。
【００８９】  すなわち、GenKey(MSK,v→)では、式(44)の代わりに、鍵情報      D*=α・(Σμ=1nvμ・bμ*)+bn+1*∈G2n+1        …(50)が生成され、出力される。また、Enc(PA,w→)では、式(45)の代わりに、暗号文      C2=υ1・(Σμ=1nwμ・bμ)+υ2・bn+1∈G1n+1        …(51)が生成される。また、Dec(SKv,C1,C2)では、式(44)で生成された鍵情報の代わりに式(50)で生成された鍵情報が用いられる。その他は、基本構成例１と同様である。
【００９０】  〔第１〜３実施形態の原理〕  次に、第１〜３実施形態の原理を説明する。  第１〜３実施形態では関数暗号として述語暗号が用いられる。第１〜３実施形態の関数暗号応用システムは、送信者装置（情報出力装置）と受信者装置（情報処理装置）とを含み、属性情報ATT（第１対応情報）と述語情報PRE（第２対応情報）とを用いる述語暗号方式を応用したプロトコル（関数暗号方式に従ったプロトコル）を実行する。
【００９１】  まず、送信者装置の識別子特定部に、実行する述語暗号方式を応用した１種類以上のプロトコルを特定するための特定情報が入力される。識別子特定部は、当該特定情報によって特定されるプロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って、当該プロトコルごと又は当該プロトコルの組み合わせごとに識別子を特定し、特定した１種類以上の当該識別子を出力する。
【００９２】  なお、述語暗号方式を応用したプロトコルには、それぞれ、それに使用すべき属性情報ATTの種別（言い換えると属性情報ATTの性質）が定められている。当該規則は、特定情報によって特定されるプロトコル又は当該プロトコルの組み合わせに使用すべき種別の属性情報ATTを定める識別子を特定するものである。例えば、当該プロトコルがTimed-Release暗号プロトコルである場合の当該規則は、第１情報の生成時点より未来の時点を特定する情報を識別子とする規則であり、当該プロトコルがForward Secure暗号プロトコル又はKey Insulated暗号プロトコルである場合の当該規則は、それぞれ、第１情報の生成時点を含む時間区間又は第１情報の生成時点より未来の時間区間を特定する情報を識別子とする規則であり、当該プロトコルがCCA2安全暗号プロトコルである場合の当該規則は、第１情報の生成ごとに新たに設定される使い捨て情報を特定する情報を識別子とする規則であり、当該プロトコルがKeyword検索暗号プロトコルである場合の規則は、データベースの検索用キーワードを特定する情報を識別子とする規則である。
【００９３】  識別子特定部で特定された１種類以上の識別子は、送信者装置の属性情報設定部に入力される。属性情報設定部は、１種類の当該識別子又は２種類以上の当該識別子の組み合わせに対して定まる１つの属性情報ATT（特定の第１対応情報）を設定し、設定した当該属性情報ATTを出力する。そして、送信者装置の出力部は、属性情報設定部から出力された属性情報ATTが述語暗号方式の暗号化関数又は鍵生成関数に入力されることで得られた、当該属性情報ATTに対応する述語暗号方式の暗号文又は鍵情報である第１情報を出力する。
【００９４】  受信者装置の復号部には、第１情報と記憶部から読み出した第２情報とが入力される。なお、第２情報は、述語暗号方式の鍵情報又は暗号文であり、第１情報が属性情報ATTに対応する暗号文である場合には第２情報は述語情報PRE（特定の第２対応情報）に対応する鍵情報であり、第１情報が属性情報ATTに対応する鍵情報である場合には第２情報は述語情報PRE（特定の第２対応情報）に対応する暗号文である。また、述語情報PREは、当該述語情報PREと何れか１つの属性情報ATTとが予め定められた関数に入力された場合に、１種類以上の属性情報ATTについて当該関数の関数値が予め定められた値となる情報である。また、前述のように、属性情報ATT及び述語情報PREの例は、互いに次元が等しいベクトルであり、当該予め定められた関数の例は、属性情報ATTと述語情報PREとの内積を算出する関数であり、予め定められた値の例は０（零元）である。
【００９５】  受信者装置の復号部は、当該第１情報と当該第２情報とを述語暗号方式の復号関数に入力して復号処理を実行し、それによって得られた復号結果を出力する。なお、述語暗号方式の復号関数は、第１情報に対応する属性情報ATTと第２情報に対応する述語情報PREとが予め定められた関数に入力された場合の関数値が予め定められた値となる場合に、正しい復号結果を生成する関数である。言い換えると、第１情報に対応する属性情報ATT及び第２情報に対応する述語情報PREの組み合わせに対応する論理式の真理値が真の場合に正しい復号結果を生成する関数である。
【００９６】  上述のように、述語暗号方式では、第１情報に対応する属性情報ATTと第２情報に対応する述語情報PREとが予め定められた関数に入力された場合の関数値が予め定められた値となる場合に、正しい復号結果が生成される。また、属性情報ATTは、１種類の識別子又は２種類以上の当該識別子の組み合わせに対して定まる情報であり、述語情報PREと何れか１つの属性情報ATTとが予め定められた関数に入力された場合に、１種類以上の属性情報ATTについて当該関数の関数値が予め定められた値となる。すなわち、第１〜３実施形態では、１種類以上の第１情報に対して同一の第２情報を共用し、正しい復号を行うことができる。そのため、送信者装置が１種類の識別子又は２種類以上の当該識別子の組み合わせを選択し、選択した識別子に応じてプロトコルを切り替えて第１情報を生成する場合であっても、受信者装置は切り替えられるプロトコルごとに別個に第２情報を生成する必要はない。すなわち、受信者装置の記憶部に１種類の述語情報PREに対応する１種類の第２情報のみが格納されていたとしても、受信者装置は、選択された１種類以上のプロトコル又はプロトコルの組み合わせに対する第１情報に対応することができる。その結果、第１〜３実施形態では、煩雑な処理を必要とせずに、選択した識別子に応じてプロトコルを切り替えることができる。このような効果は、すべての述語情報PREが、当該述語情報PREと何れか１つの属性情報ATTとが予め定められた関数に入力された場合に、２種類以上の属性情報ATTについて当該関数の関数値が予め定められた値となる場合に特に大きくなる。なお、前述の論理式が論理和を含む場合、述語情報PREと何れか１つの属性情報ATTとが予め定められた関数に入力された場合に、２種類以上の属性情報ATTについて当該関数の関数値が予め定められた値「０」（零元）となる。
【００９７】  また、識別子特定部に、２種類以上のプロトコルを特定するための特定情報が入力される場合、２種類以上のプロトコルの組み合わせ、すなわち、２種類以上のプロトコルの特徴を兼ね備えた新たなプロトコルを構成することもできる。
【００９８】  また、第１〜３実施形態では、述語暗号方式を用いるため、プロトコルの組み合わせ方の自由度が高い。すなわち、第１〜３実施形態では、第１情報に対応する属性情報ATTと第２情報に対応する述語情報PREとが予め定められた関数に入力された場合の関数値が予め定められた値となる場合に正しい復号結果が生成される。２種類以上のプロトコルの組み合わせは識別子の組み合わせに対応し、当該識別子の組み合わせは属性情報ATTに対応するが、当該関数値が予め定められた値となるのであれば、当該識別子の組み合わせ方法に制限はない。
【００９９】  これに対し、IDベース暗号方式を応用した階層型IDベース暗号方式（例えば、参考文献１０「C. Gentry, A. Silverberg, "Hierarchical ID-based cryptography," Proceedings of ASIACRYPT 2002, Lecture Notes in Computer Science, Springer-Verlag, 2002.」等）を用いた場合には、プロトコルの組み合わせ方が制限される。すなわち、階層型IDベース暗号方式では、複数のプロトコルにそれぞれ対応する複数の識別子の組み合わせ方が制限される。つまり、階層型IDベース暗号方式では、複数の識別子の組み合わせによって生成された新たな識別子が木構造をなす必要あり、新たな識別子は必ずその親の識別子を含まなければならない。例えば、識別子ID1と識別子ID2との組み合わせID1|ID2を新たな識別子とした場合、それ以降、例えば、識別子ID1と識別子ID2と識別子ID3との組み合わせを新たな識別子ID1|ID2|ID3とすることはできるが、識別子ID1と識別子ID3との組み合わせを新たな識別子ID1|ID3とすることはできない。
【０１００】  また、送信者装置が、特定情報によって特定されるプロトコルに応じ、属性情報ATTを述語暗号方式の暗号化関数に入力させるか、属性情報ATTを述語暗号方式の鍵生成関数に入力させるかを切り替える第１切り替え部をさらに有し、受信者装置が、特定情報によって特定されるプロトコルに応じ、述語情報PREを述語暗号方式の鍵生成関数に入力させるか、述語情報PREを述語暗号方式の暗号化関数に入力させるかを切り替える第２切り替え部をさらに有してもよい。これにより、プロトコルの選択の幅が広がる。
【０１０１】  また、属性情報ATT及び述語情報PREの一部の領域を、使い道が決まっていない予備領域としておいてもよい。例えば、属性情報ATT及び述語情報PREが互いに次元が等しいベクトルであり、属性情報ATTと述語情報PREとの内積が０のときに正しい復号ができるシステムの場合には、少なくとも一部の属性情報ATTにおける一部の要素（予備領域）の値が予め固定されたベクトルであり、述語情報PREの一部の要素（予備領域）の値が予め固定されたベクトルであり、当該属性情報ATTの予備領域の位置と当該述語情報PREの予備領域の位置とが互いに等しく、当該属性情報ATTの予備領域の要素からなるベクトルと当該述語情報PREの予備領域の要素からなるベクトルとの内積が、特定情報の値にかかわらず０となるように設定しておいてもよい。これにより、後に、選択可能なプロトコルを増加させたり、論理式を示す多項式の項を増加させたりする必要が生じた場合であっても、予備領域にそれらの増加分を割り当てればシステムの設定を変更することなく、これらの増加を行うことができる。
【０１０２】  また、属性情報ATTの予備領域の値をすべて０（零元）としておいた場合、当該予備領域を含む属性情報ATTに対応する第１情報は、当該予備領域に何らかの値が入れられた更新後の第１情報に対して上位互換性を持つ。つまり、属性情報ATTや述語情報PREの予備領域に何らかの値が与えられることで属性情報ATTや述語情報PREが更新されたとしても、更新前に正しい復号が行われたのであれば、更新前の属性情報ATTに対応する第１情報と更新後の述語情報PREに対応する第２情報とによって正しい復号が行われる。更新後の述語情報PREの予備領域に入れられた値にかかわらず、属性情報ATT及び述語情報PREの予備領域同士の内積は０になるからである。同様な理由により、述語情報PREの予備領域の値をすべて０としておいた場合、当該予備領域を含む述語情報PREに対応する第２情報は、当該予備領域に何らかの値が入れられた更新後の第２情報に対して上位互換性を持つ。
【０１０３】  属性情報ATTの予備領域の値をすべて０（零元）としておき、かつ、述語情報PREの予備領域の少なくとも一部の値を０以外としておいた場合、当該予備領域を含む属性情報ATTに対応する第１情報は、当該予備領域に何らかの値が入れられた更新後の第１情報に対して上位互換性を持つが、当該予備領域を含む述語情報PREに対応する第２情報は、当該予備領域に何らかの値が入れられた更新後の第２情報に対して上位互換性を持たない。逆に、述語情報PREの予備領域の値をすべて０としておき、かつ、属性情報ATTの予備領域の少なくとも一部の値を０以外としておいた場合、当該予備領域を含む述語情報PREに対応する第２情報は、当該予備領域に何らかの値が入れられた更新後の第２情報に対して上位互換性を持つが、当該予備領域を含む属性情報ATTに対応する第１情報は、当該予備領域に何らかの値が入れられた更新後の第１情報に対して上位互換性を持たない。このように、予備領域の値をどのように設定しておくかに応じ、更新前後での上位互換性を変化させることができる。
【０１０４】  また、属性情報ATTや述語情報PREの一部の要素を予備領域にするのではなく、特定情報の値にかかわらず予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定してもよい。そして、当該特定情報の値にかかわらず予め真となるように設定された命題を、後に、特定情報の値に応じて真又は偽となる命題に置き換えることで論理式を更新し、この更新後の論理式に対応する属性情報ATT及び述語情報PREを新たな属性情報ATT及び述語情報PREとしてもよい。
【０１０５】  〔第１実施形態〕  次に、本発明の第１実施形態を説明する。第１実施形態は、第１情報が属性情報ATTに対応する暗号文であり、第２情報が述語情報PREに対応する鍵情報であり、送信者装置が暗号化を行い、受信者装置が復号を行う形態である。このような形態は、例えば、述語暗号方式を応用したプロトコルが、Timed-Release暗号プロトコル、Forward Secure暗号プロトコル、Key Insulated暗号プロトコル若しくはCCA2安全暗号プロトコル、又は、その組み合わせである場合などに適用できる。
【０１０６】  ＜構成＞  図１は、第１実施形態の関数暗号応用システム１の全体構成を説明するためのブロック図である。図１に示すように、本形態の関数暗号応用システム１は、ネットワーク１４０に接続された、送信者装置１１０（情報出力装置）と受信者装置１２０（情報処理装置）と鍵生成装置１３０とを有する。なお、説明の便宜上、図１には、送信者装置１１０と受信者装置１２０と鍵生成装置１３０とが１個ずつ表記されているが、２個以上の送信者装置１１０や受信者装置１２０や鍵生成装置１３０が存在してもよい。
【０１０７】  ［送信者装置１１０（情報出力装置）］  図２は、図１の送信者装置１１０の構成を説明するためのブロック図である。  図２に示すように、本形態の送信者装置１１０は、一時メモリ１１１ａと、記憶部１１１ｂ，１１１ｃと、入力部１１２と、制御部１１３と、識別子特定部１１４ａと、属性情報設定部１１４ｂ（対応情報設定部）と、暗号化部１１４ｃと、通信部１１５とを有する。
【０１０８】  送信者装置１１０は、例えば、CPU(central processing unit)、RAM(random-access memory)、ROM(read-only memory)等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。すなわち、制御部１１３、識別子特定部１１４ａ、属性情報設定部１１４ｂ及び暗号化部１１４ｃは、例えば、CPUが所定のプログラムを実行することで構成される処理部である。また、送信者装置１１０の処理部の少なくとも一部が集積回路であってもよい。また、一時メモリ１１１ａや記憶部１１１ｂ，１１１ｃは、例えば、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。また、入力部１１２は、例えば、キーボード、マウス、入力ポート等であり、通信部１１５は、例えば、モデム、LANカード等の通信装置である。
【０１０９】  また、送信者装置１１０は、制御部１１３の制御のもと各処理を実行する。また、以下では説明を省略するが、送信者装置１１０の各処理部から出力されたデータや通信部１１５で受信されたデータは、逐一、一時メモリ１１１ａに格納される。一時メモリ１１１ａに格納されたデータは、必要に応じて読み出され、送信者装置１１０の各処理部に入力されてその処理に利用される。
【０１１０】  ［受信者装置１２０（情報処理装置）］  図３は、図１の受信者装置１２０の構成を説明するためのブロック図である。  図３に示すように、本形態の受信者装置１２０は、一時メモリ１２１ａと、記憶部１２１ｂと、制御部１２３と、識別子特定部１２４ａと、多項式生成部１２４ｂと、述語情報生成部１２４ｃと、鍵生成処理部１２４ｄと、復号部１２４ｅと、通信部１２５とを有する。なお、図面表記の便宜上、図３には、通信部１２５を示すブロックが２つ表記されているが、これは別個の通信部１２５が２つ必要なことを意味しない。
【０１１１】  受信者装置１２０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。すなわち、制御部１２３、識別子特定部１２４ａ、多項式生成部１２４ｂ、述語情報生成部１２４ｃ、鍵生成処理部１２４ｄ及び復号部１２４ｅは、例えば、CPUが所定のプログラムを実行することで構成される処理部である。また、受信者装置１２０の処理部の少なくとも一部が集積回路であってもよい。また、一時メモリ１２１ａや記憶部１２１ｂは、例えば、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。また、通信部１１５は、例えば、モデム、LANカード等の通信装置である。
【０１１２】  また、受信者装置１２０は、制御部１２３の制御のもと各処理を実行する。また、以下では説明を省略するが、受信者装置１２０の各処理部から出力されたデータや通信部１２５で受信されたデータは、逐一、一時メモリ１２１ａに格納される。一時メモリ１２１ａに格納されたデータは、必要に応じて読み出され、受信者装置１２０の各処理部に入力されてその処理に利用される。
【０１１３】  ［鍵生成装置１３０］  図４は、図１の鍵生成装置１３０の構成を説明するためのブロック図である。  図４に示すように、本形態の鍵生成装置１３０は、一時メモリ１３１ａと、記憶部１３１ｂと、制御部１３３と、鍵生成部１３４と、通信部１３５とを有する。
【０１１４】  鍵生成装置１３０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。すなわち、制御部１３３及び鍵生成部１３４は、例えば、CPUが所定のプログラムを実行することで構成される処理部である。また、鍵生成装置１３０の処理部の少なくとも一部が集積回路であってもよい。また、一時メモリ１３１ａや記憶部１３１ｂは、例えば、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。また、通信部１３５は、例えば、モデム、LANカード等の通信装置である。
【０１１５】  また、鍵生成装置１３０は、制御部１３３の制御のもと各処理を実行する。また、以下では説明を省略するが、鍵生成装置１３０の各処理部から出力されたデータや通信部１３５で受信されたデータは、逐一、一時メモリ１３１ａに格納される。一時メモリ１３１ａに格納されたデータは、必要に応じて読み出され、鍵生成装置１３０の各処理部に入力されてその処理に利用される。
【０１１６】  ＜事前設定＞  次に、本形態の関数暗号応用システム１の事前設定を説明する。
【０１１７】  ［特定情報］  図５Ａ及び図５Ｂは、第１実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【０１１８】  図５Ａの例では、プロトコルごとに特定情報PIが割り当てられている。すなわち、この例では、特定情報PI=0に対してTimed-Release暗号プロトコルが割り当てられ、特定情報PI=1に対してForward Secure暗号プロトコルが割り当てられ、特定情報PI=2に対してKey Insulated暗号プロトコルが割り当てられ、特定情報PI=3に対してCCA2安全暗号プロトコルが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせを特定する。
【０１１９】  一方、図５Ｂの例では、プロトコルごとに特定情報PIが割り当てられているほか、２種類以上のプロトコルの組み合わせに対しても特定情報PIが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルの組み合わせに対応する特定情報PIを特定する。
【０１２０】  なお、図５に示した特定情報PIは一例であり、その他の方法によって１種類以上のプロトコルに対応する特定情報PIが特定されてもよい。
【０１２１】  ［識別子］  図６Ａ，図６Ｂ及び図７は、第１実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。  図６Ａの例では、選択可能なプロトコルごとに識別子ID(h)が割り当てられる。
【０１２２】  選択されたプロトコルに割り当てられた識別子ID(h)には、そのプロトコルに定められた規則に従った値が入力される。例えば、Timed-Release暗号プロトコルが選択された場合には、未来の時点を特定する情報（日時やカウント値など）が識別子ID(0)に入力される。なお、「未来の時点」の一例は、第１情報の生成時点よりも未来の時点である。また、例えば、Forward Secure暗号プロトコルやKey Insulated暗号プロトコルが選択された場合には、受信者装置１２０やその利用者の固有識別子（メールアドレスや電話番号やMACアドレスなど）と現在時点を含む時間区間（日時区間やカウント値区間など）との組み合わせで定まる値（ビット結合値など）が識別子ID(1)や識別子ID(2)に入力される。なお、「現在時点」の一例は、第１情報の生成時点である。また、例えば、CCA2安全暗号プロトコルが選択された場合には、使い捨て情報（ランダム数）が識別子ID(3)に入力される。
【０１２３】  一方、選択されなかったプロトコルに割り当てられた識別子ID(h)には、定数(const.)が入力される。例えば、Timed-Release暗号プロトコルのみが選択された場合には、未来の時点を特定する情報が識別子ID(0)に入力され、その他の識別子ID(1),ID(2),ID(3)には定数(const.)が入力される。なお、定数(const.)の例は０や１である。なお、各識別子ID(h)に入力される定数(const.)は同一値であってもよいし、異なる値であってもよい。
【０１２４】  また、複数のプロトコルの組み合わせが選択された場合には、その組み合わせを構成する複数のプロトコルが選択されたものとして識別子ID(h)の値が決定される。例えば、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、受信者装置１２０やその利用者の固有識別子と現在時点を含む時間区間との組み合わせで定まる値が識別子ID(1)に入力され、使い捨て情報が識別子ID(3)に入力され、その他の識別子ID(0)，ID(2)には定数(const.)が入力される。
【０１２５】  図６Ｂの例では、選択されたプロトコルのみに識別子ID(h)が割り当てられる。例えば、Timed-Release暗号プロトコルのみが選択された場合には、未来の時点を特定する情報を示す識別子ID(0)のみが割り当てられる。また、例えば、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、受信者装置１２０やその利用者の固有識別子と現在時点を含む時間区間との組み合わせで定まる値を示す識別子ID(1)と、使い捨て情報を示す識別子ID(3)とのみが割り当てられる。
【０１２６】  図７の例では、選択可能なプロトコル及びプロトコルの組み合わせごとに識別子ID(h)が割り当てられる。選択されたプロトコル及びプロトコルの組み合わせに割り当てられた識別子ID(h)には、選択されたプロトコル又は組み合わせを構成する各プロトコルに定められた各規則に従った値が入力され、選択されなかったプロトコルや組み合わせに割り当てられた識別子ID(h)には定数(const.)が入力される。例えば、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、受信者装置１２０やその利用者の固有識別子と現在時点を含む時間区間と使い捨て情報との組み合わせで定まる値が識別子ID(5)に入力され、その他の識別子ID(h)には定数(const.)が入力される。
【０１２７】  また、上述の識別子の決定方法は一例に過ぎず、その他の方法で識別子が特定してもよい。例えば、図７の例の変形として、選択されたプロトコル及びプロトコルの組み合わせのみに識別子ID(h)が割り当てられてもよい。また、上述のように得られた各識別子ID(h)の組み合わせ（例えばビット結合）によって１つの識別子を構成してもよい。
【０１２８】  ［属性情報（第１対応情報）］  図８Ａ及び図９Ａは、１種類の識別子ID(h)又は２種類以上の識別子ID(h)の組み合わせに対して１つの属性情報ATTを特定するための属性情報テーブルの一例を説明するための図であり、図８Ｂ及び図９Ｂは、当該属性情報テーブルによって定まる属性情報ATTのデータ構成を説明するための図である。
【０１２９】  本形態では、前述した論理式を示す多項式f(x0,...,xH-1)の各項の不定元成分に識別子ID(h)が代入された値を各要素とするベクトルv→=(v0,...,vn-1)を属性情報ATTとする（式(42)等参照）。また、属性情報ATTの次元nは、多項式f(x0,...,xH-1)に許容される項数（定数項を含む）の最大値となる。図８Ａ及び図９Ａでは、各項の不定元成分と、各不定元成分に対応する要素値と、各要素に対応する要素番号とを対応付けている。また、図８Ｂ及び図９Ｂに記載された各番号は、それぞれ、図８Ａ及び図９Ａの要素番号を示し、図８Ｂ及び図９Ｂに記載された各番号の位置には、図８Ａ及び図９Ａの要素番号に対応する要素値が配置される。
【０１３０】  図８Ａは、不定元の種類を４種類（H=4）とし、多項式f(x0,x1,x2,x3)に不定元のべき乗を含む項が許容されない場合の属性情報テーブルの一例である。多項式f(x0,x1,x2,x3)に不定元のべき乗を含む項が許容されない場合、多項式f(x0,x1,x2,x3)の項数（定数項を含む）の最大値は１６となり、取り得る不定元成分は、x0・x1・x2・x3，x0・x1・x2，x0・x1・x3，x0・x2・x3，...,{x0}0・{x1}0・{x2}0・{x3}0の１６種類となる。図８Ａの例では、これらの１６種類の不定元成分に各識別子ID(0),...,ID(3)を代入した値を各要素とするベクトルv→=(v0,...,vn-1)を属性情報ATTとする。なお、図６Ｂのように、選択されたプロトコルやプロトコルの組み合わせのみに識別子ID(h)が割り当てられている場合、割り当てられていない識別子ID(h)を定数（例えば０や１）として不定元成分に各識別子を代入すればよい。図８の例では、不定元xhに識別子ID(h)が代入され、ID(0)・ID(1)・ID(2)・ID(3)，ID(0)・ID(1)・ID(2)，ID(0)・ID(1)・ID(3)，ID(0)・ID(2)・ID(3)，...,{ID(0)}0・{ ID(1)}0・{ ID(2)}0・{ ID(3)}0を各要素とする１６次元のベクトルv→=(v0,...,vn-1)が属性情報ATTとされる。
【０１３１】  図９Ａは、不定元の種類を４種類（H=4）とし、多項式f(x0,x1,x2,x3)に不定元の２乗を含む項が許容されるが不定元の３乗以上のべき乗を含む項が許容されない場合の属性情報テーブルの一例である。図９Ａの例では、この場合の各不定元成分に各識別子ID(0),...,ID(3)を代入した値を各要素とするベクトルv→=(v0,...,vn-1)を属性情報ATTとする。図９の例でも、不定元xhに識別子ID(h)が代入される。また、図６Ｂのように、選択されたプロトコルやプロトコルの組み合わせのみに識別子ID(h)が割り当てられている場合、割り当てられていない識別子ID(h)を定数（例えば０や１）として不定元成分に各識別子を代入すればよい。
【０１３２】  なお、図８や図９の属性情報ATTの生成方法は一例に過ぎず、不定元の種類が４以外であってもよいし、多項式f(x0,...,xH-1)に不定元の３乗以上のべき乗を含む項が許容されてもよい。また、特定の不定元の２乗を含む項は許容されるがその他の不定元の２乗を含む項は許容されないなど、属性情報ATTが、多項式f(x0,...,xH-1)に許容されない不定元成分に対応する要素を含まない構成であってもよい。或いは、識別子ID(h)や識別子ID(h)の論理式（{ID(0)∨ID(1)}∧ID(3)など）のそれぞれと当該論理式に対応する属性情報ATTとが対応付けられたテーブルを、属性情報テーブルとしてもよい。
【０１３３】  ［述語情報（第２対応情報）］  図１０Ａ及び図１１Ａは、それぞれ、多項式f(x0,...,xH-1)に対応する述語情報PREの一例を説明するための図であり、図１０Ｂ及び図１１Ｂは、当該述語情報PREのデータ構成を説明するための図である。
【０１３４】  本形態では、前述した論理式を示す多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトルw→=(w0,...,wn-1)を述語情報PREとする（式(43)等参照）。また、述語情報PREの次元nは、多項式f(x0,...,xH-1)に許容される項数（定数項を含む）の最大値となる。図１０Ａ及び図１１Ａでは、各項の不定元成分と、各不定元成分に対応する各項の係数成分である要素値と、各要素に対応する要素番号とを対応付けている。また、図１０Ｂ及び図１１Ｂに記載された各番号は、それぞれ、図１０Ａ及び図１１Ａでの要素番号を示し、図１０Ｂ及び図１１Ｂに記載された各番号の位置には、図１０Ａ及び図１１Ａの要素番号に対応する要素値が配置される。
【０１３５】  図１０Ａの例は、不定元の種類を４種類（H=4）とし、不定元のべき乗を含む項が許容されない条件化で設定された多項式f(x0,x1,x2,x3)=ι0・(x1-ID'(1))・(x2-ID'(2))+ι1・(x3-ID'(3))             =ι0・x1・x2-ι0・ID'(2)・x1-ι0・ID'(1)・x2+ι1・x3 …(52)              +(ι0・ID'(1)・ID'(2)-ι1・ID'(3))に対応する。なお、ID'(1)，ID'(2)及びID'(3)は、それぞれ、前述したように各プロトコルに対応する規則で定められた識別子であり、この例の多項式f(x0,x1,x2,x3)は、論理式{(x1=ID'(1))∨(x2=ID'(2))}∧(x3=ID'(3))に対応する。例えば、ID'(1)，ID'(2)及びID'(3)が、それぞれ、Forward Secure暗号プロトコル、Key Insulated暗号プロトコル及びCCA2安全暗号プロトコルに対応する規則で定められた識別子であるとすると、式(52)の多項式f(x0,x1,x2,x3)は、Forward Secure暗号プロトコル又はKey Insulated暗号プロトコルと、CCA2安全暗号プロトコルとの組み合わせに対して真となる論理式に対応する。この例の場合、要素番号８の要素をι0とし、要素番号１２の要素を-ι0・ID'(2)とし、要素番号１３の要素を-ι0・ID'(1)とし、要素番号１４の要素をι１とし、要素番号１５の要素をι0・ID'(1)・ID'(2)-ι1・ID'(3)とし、その他の要素を０とした１６次元のベクトルw→が述語情報PREとなる。この例の述語情報PREと、{(x1=ID(1))∨(x2=ID(2))}∧(x3=ID(3))の場合に図８に従って生成された属性情報ATTとの内積は０となる。
【０１３６】  図１１Ａの例は、不定元の種類を４種類（H=4）とし、不定元の２乗を含む項が許容されるが不定元の３乗以上のべき乗を含む項が許容されない条件化で設定された多項式f(x0,x1,x2,x3)={ι0・(x1-ID'(1))+ι1・(x3-ID'(3))}・(x3-ID'(3))             =ι1・(x3)2+{-ι0・ID'(1)-2・ι1・ID'(3)}・x3+ι0・x1・x3              -ι0・ID'(3)・x1+{ι0・ID'(1)・ID'(3) +ι1・{ID'(3)}2}…(53)に対応する。なお、ID'(1)，ID'(2)及びID'(3)は、それぞれ、前述したように各プロトコルに対応する規則で定められた識別子であり、この例の多項式f(x0,x1,x2,x3)は、論理式{(x1=ID'(1))∧(x2=ID'(3))}∨(x3=ID'(3))に対応する。例えば、ID'(1)及びID'(3)がそれぞれ、Forward Secure暗号プロトコル及びCCA2安全暗号プロトコルに対応する規則で定められた識別子であるとすると、式(52)の多項式f(x0,x1,x2,x3)は、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせ、又は、CCA2安全暗号プロトコルに対して真となる論理式に対応する。この例の場合、要素番号９の要素をι0とし、要素番号１２の要素を-ι0・ID'(3)とし、要素番号１４の要素を-ι0・ID'(1)-2・ι1・ID'(3)とし、要素番号１５の要素をι0・ID'(1)・ID'(3)+ι1・{ID'(3)}2とし、要素番号enの要素をι1とし、その他の要素を０とした１６次元のベクトルw→が述語情報PREとなる。この例の述語情報PREと、{(x1=ID(1))∧(x2=ID(3))}∨(x3=ID(3))の場合に図９に従って生成された属性情報ATTとの内積は０となる。
【０１３７】  図１０や図１１の述語情報PREの生成方法は一例に過ぎず、不定元の種類が４以外であってもよいし、多項式f(x0,...,xH-1)に不定元の３乗以上のべき乗を含む項が許容されてもよい。また、特定の不定元の２乗を含む項は許容されるがその他の不定元の２乗を含む項は許容されないなど一部の不定元成分が許容されない構成であってもよい。また、１つの属性情報ATTとの内積が０となる述語情報PREは１つだけではなく、上記以外の方法によって、所望の属性情報ATTとの内積が０となる述語情報PREが設定されてもよい。
【０１３８】  ［平文］  本形態では、送信者装置１１０の記憶部１１１ｃに暗号化対象の平文Mtが格納される。
【０１３９】  ［受信者装置１２０で予め定められた論理式］  本形態では、受信者装置１２０おいて、いくつかのプロトコル及び／又は当該プロトコルの組み合わせからなる条件に対応する論理式の構成（例えば、{(x1=ID'(1))∨(x2=ID'(2))}∧(x3=ID'(3))）が予め定められている。ただし、当該論理式を構成する識別子ID'(h)の値は特定されておらず、当該識別子ID'(h)の値が定まることで述語情報PREが定まる。
【０１４０】  ［マスター秘密情報］  本形態の鍵生成装置１３０の記憶部１３１ｂには、述語暗号方式のマスター秘密情報MSKが格納される。マスター秘密情報MSKの一例は、前述した基底ベクトルbi*(i=1,...,n+1)を要素とするn+1行n+1列の行列B*である。
【０１４１】  ＜処理＞  図１２Ａは、第１実施形態の暗号化処理を説明するためのフローチャートである。図１２Ｂは、第１実施形態の鍵情報生成処理を説明するためのフローチャートである。また、図１３は、第１実施形態の復号処理を説明するためのフローチャートである。以下、これらの図を用いて本形態の処理を説明する。
【０１４２】  ［暗号化処理］  本形態の暗号化処理では、まず、実行する述語暗号方式を応用した１種類以上のプロトコルを特定するための特定情報PIが、送信者装置１１０（図２）の入力部１１２に入力される（ステップＳ１１１）。例えば、特定情報PIが図５Ａように定まるのであれば、利用者に選択された１種類のプロトコルに対応する特定情報PI、又は、利用者に選択された２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせが入力部１１２に入力される。また、例えば、特定情報PIが図５Ｂように定まるのであれば、利用者に選択された１種類のプロトコル又は２種類以上のプロトコルに対応する特定情報PIが入力部１１２に入力される。
【０１４３】  入力部１１２に入力された特定情報PIは、識別子特定部１１４ａに入力される。識別子特定部１１４ａは、当該特定情報PIによって特定されるプロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って（図６及び図７等参照）、当該プロトコルごと又は当該プロトコルの組み合わせごとに識別子ID(h)を特定し、特定した１種類以上の当該識別子ID(h)を出力する（ステップＳ１１２）。
【０１４４】  識別子特定部１１４ａから出力された１種類以上の識別子ID(h)は属性情報設定部１１４ｂに入力される。属性情報設定部１１４ｂは、記憶部１１１ｂに格納された属性情報テーブル（図８、図９等参照）を用い、１種類の当該識別子ID(h)又は２種類以上の当該識別子ID(h)の組み合わせに対して定まる１つの属性情報ATTを設定し、設定した当該属性情報ATTを出力する（ステップＳ１１３）。
【０１４５】  属性情報設定部１１４ｂから出力された属性情報ATTは、暗号化部１１４ｃに入力される。暗号化部１１４ｃは、記憶部１１１ｃから平文Mtを読み出し、属性情報ATTと平文Mtとを述語暗号方式の暗号化関数に入力し、平文Mtの暗号文Ctを生成する（ステップＳ１１４）。述語暗号方式の暗号化関数の一例は前述の式(45)(46)である。
【０１４６】  生成された暗号文Ctは通信部１１５に送られる。通信部１１５（出力部）は、当該暗号文Ct（第１情報）をネットワーク１４０経由で受信者装置１２０に送信する（ステップＳ１１５）。
【０１４７】  ［復号処理・鍵情報生成処理］  本形態の復号処理では、まず、受信者装置１２０（図３）の通信部１２５が暗号文Ct（第１情報）を受信する（ステップＳ１２１）。
【０１４８】  これを契機とし、識別子特定部１２４ａが、プロトコルごと又は当該プロトコルの組み合わせごとに、当該プロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って、前述した受信者装置１２０で予め定められた論理式に用いられる１種類以上の識別子ID'(h)を特定する（ステップＳ１２２）。なお、当該規則は、送信者装置１１０の識別子特定部１１４ａで識別子ID(h)を特定するための規則と同一である。
【０１４９】  識別子特定部１２４ａで特定された１種類以上の識別子ID'(h)は多項式生成部１２４ｂに入力される。多項式生成部１２４ｂは、当該識別子ID'(h)を用いて、前述した受信者装置１２０で予め定められた論理式を構成する識別子ID'(h)の値を定め、それによって定まる論理式に対応する多項式f(x0,...,xH-1)を生成し（例えば、式(52)(53)参照）、生成した多項式f(x0,...,xH-1)を出力する（ステップ１２３）。
【０１５０】  多項式生成部１２４ｂから出力された多項式f(x0,...,xH-1)は、述語情報生成部１２４ｃに入力される。述語情報生成部１２４ｃは、入力された多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトルw→=(w0,...,wn-1)を述語情報PREとして生成し（例えば、図１０及び図１１参照）、当該述語情報PREを出力する（ステップＳ１２４）。
【０１５１】  述語情報生成部１２４ｃから出力された述語情報PREは、鍵生成処理部１２４ｄに入力される。鍵生成処理部１２４ｄは、述語情報PREを通信部１２５からネットワーク１４０経由で鍵生成装置１３０に送信し、述語情報PREに対応する鍵情報SKrの生成を依頼する（ステップＳ１２５）。
【０１５２】  本形態の鍵情報生成処理では、まず、鍵生成装置１３０（図４）の通信部１３５が上記の述語情報PREを受信する（ステップＳ１３１）。通信部１３５で受信された述語情報PREは、鍵生成部１３４に入力される。鍵生成部１３４は、記憶部１３１ｂからマスター秘密情報MSKを読み出し、マスター秘密情報MSKと述語情報PREとを述語暗号方式の鍵生成関数に入力し、述語情報PREに対応する鍵情報SKrを生成して出力する（ステップＳ１３２）。なお、鍵生成関数の一例は式(44)の関数である。生成された鍵情報SKrは通信部１３５に送られ、通信部１３５は当該鍵情報SKrをネットワーク１４０経由で受信者装置１２０に送信する（ステップＳ１３３）。
【０１５３】  受信者装置１２０（図３）の通信部１２５は、送信された鍵情報SKrを受信し、鍵生成処理部１２４ｄに送る。鍵生成処理部１２４ｄは、当該鍵情報SKr（第２情報）を記憶部１２１ｂに格納する（ステップＳ１２６）。
【０１５４】  次に、ステップＳ１２１で通信部１２５が受信した暗号文Ct（第１情報）と、記憶部１２１ｂから読み出された鍵情報SKr（第２情報）とが復号部１２４ｅに入力される。復号部１２４ｅは、暗号文Ct（第１情報）と鍵情報SKr（第２情報）を述語暗号方式の復号関数に入力して復号処理を実行し、それによって得られた復号結果Mrを出力する（ステップＳ１２７）。なお、復号関数の一例は式(47)〜(49)である。
【０１５５】  ここで、暗号文Ct（第１情報）に対応する属性情報ATTと、鍵情報SKr（第２情報）に対応する述語情報PREとが予め定められた関数に入力された場合の関数値が予め定められた値となる場合（例えば、当該属性情報ATTと当該述語情報PREとの内積が０となる場合）には、正しい復号結果が得られ、復号結果Mr=平文Mtとなる（例えば、式(48)(49)参照）。一方、当該属性情報ATTと当該述語情報PREとが予め定められた関数に入力された場合の関数値が予め定められた値とならない場合（例えば、当該属性情報ATTと当該述語情報PREとの内積が０とならない場合）には、正しい復号結果が得られない。これは、受信者装置１２０で予め定められたプロトコル及び／又は当該プロトコルの組み合わせからなる条件に合致する暗号文Ctのみが正しく復号されることを意味する。
【０１５６】  以上のように、本形態では、送信者装置１１０が使用するプロトコルやプロトコルの組み合わせを選択でき、受信者装置１２０において復号可能となる暗号文のプロトコルやプロトコルの組み合わせの条件を設定しておくことができる。そして、送信者装置１１０で選択されたプロトコルやプロトコルの組み合わせが、受信者装置１２０に設定された条件に合致した場合にのみ、受信者装置１２０は送信された暗号文を正しく復号できる。また、受信者装置１２０において復号可能となる暗号文のプロトコルやプロトコルの組み合わせの条件は、論理和や論理積を自由に組み合わせて設定できる。特に、受信者装置１２０で論理和を含む条件を設定しておけば、受信者装置１２０が送信者装置１１０で選択されたプロトコル等に応じて鍵情報を使い分ける必要がなくなる。
【０１５７】  〔第１実施形態の変形例１〕  前述のように、属性情報ATT及び述語情報PREの一部の領域を予備領域としておいてもよい。これにより、後に、選択可能なプロトコルを増加させたり、論理式を示す多項式の項を増加させたりする必要が生じた場合であっても、予備領域にそれらの増加分を割り当てればシステムの設定を変更することなく、これらの増加を行うことができる。
【０１５８】  図１４Ａ、図１４Ｂ、図１５Ａ及び図１５Ｂは、属性情報ATT及び述語情報PREの一部の領域を予備領域とした例を説明するための図である。
【０１５９】  図１４Ａ、図１４Ｂ、図１５Ａ及び図１５Ｂでは、属性情報ATT及び述語情報PREが互いに次元が等しいベクトルであり、属性情報ATTと述語情報PREとの内積が０のときに正しい復号ができる場合の予備領域を例示している。この例では、特定情報PIの値にかかわらず、属性情報ATTの要素番号0,...,4の要素（予備領域）の値が、それぞれ、定数const.(0),...,const.(4)とされ、述語情報PREの要素番号0,...,4の要素（予備領域）の値が、それぞれ、定数const.'(0),...,const.'(4)とされる。これらの予備領域は、属性情報ATTの要素番号0,...,4の要素からなるベクトルと述語情報PREの要素番号0,...,4の要素からなるベクトルとの内積が、特定情報PIの値にかかわらず０となるように設定されている。例えば、定数const.(0),...,const.(4)がすべて０であってもよいし、定数const.'(0),...,const.'(4)がすべて０であってもよし、定数const.(0),...,const.(4)がすべて０であって定数const.'(0),...,const.'(4)の一部が０以外であってもよいし、定数const.'(0),...,const.'(4)がすべて０であって定数const.(0),...,const.(4)の一部が０以外であってもよいし、定数const.(0),...,const.(4)の一部が０以外であって定数const.'(0),...,const.'(4)の一部が０以外であってconst.(0)・const.'(0)+...+ const.(4)・const.'(4)=0であってもよい。
【０１６０】  〔第１実施形態の変形例２〕  また、前述のように、属性情報ATTや述語情報PREの一部の要素を予備領域にするのではなく、特定情報PIの値にかかわらず予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定してもよい。これにより、後に、選択可能なプロトコルを増加させたり、論理式を示す多項式の項を増加させたりする必要が生じた場合であっても、予備領域にそれらの増加分を割り当てればシステムの設定を変更することなく、これらの増加を行うことができる。
【０１６１】  図１６から図１８は、特定情報PIの値にかかわらず、予め真となるように設定された命題の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREを設定する場合の一例を説明するための図である。
【０１６２】  この例では、識別子ID(3)を未使用の識別子とし、特定情報PIの値にかかわらず予め真となるように設定された命題「不定元x3がID(3)である」の論理積を一部に含む論理式に対応する属性情報ATT及び述語情報PREが設定される。
【０１６３】  例えば、図１６〜図１８Ｂの例は、特定情報PIの値にかかわらず識別子ID(3)及び識別子ID'(3)を同一の定数(const.)とし、前述のように属性情報ATT及び述語情報PREが設定された例である。このような設定では、命題「不定元x3がID(3)である」は特定情報PIの値にかかわらず真となる。実際、図１７Ａ及び図１７Ｂの属性情報ATTと図１８Ａ及び図１８Ｂの述語情報PREとの内積は、特定情報PIの値にかかわらず真となる。そして、後に識別子ID(3)を使用するようなシステムに拡張された場合には、識別子ID(3)に特定情報PIに対応する値を入力して属性情報ATT及び述語情報PREを更新することができる。
【０１６４】  〔第２実施形態〕  次に、本発明の第２実施形態を説明する。
【０１６５】  第２実施形態は、第１情報が属性情報ATTに対応する鍵情報であり、第２情報が述語情報PREに対応する暗号文であり、送信者装置が鍵情報を出力し、受信者装置に格納された暗号文が復号される形態である。このような形態は、述語暗号方式を応用したプロトコルが、例えば、Keyword検索暗号プロトコルである場合、又は、Keyword検索暗号プロトコルとForward Secure暗号プロトコル、Key Insulated暗号プロトコル若しくはCCA2安全暗号プロトコルとの組み合わせである場合などに適用できる。以下では、第１実施形態との相違点を中心に説明し、第１実施形態と共通する事項については説明を簡略化する。
【０１６６】  ＜構成＞  図１９は、第２実施形態の関数暗号応用システム２の全体構成を説明するためのブロック図である。図１９に示すように、本形態の関数暗号応用システム２は、ネットワーク１４０に接続された、送信者装置２１０（情報出力装置）と受信者装置２２０（情報処理装置）と鍵生成装置１３０とを有する。なお、説明の便宜上、図１９には、送信者装置２１０と受信者装置２２０と鍵生成装置１３０とが１個ずつ表記されているが、２個以上の送信者装置２１０や受信者装置２２０や鍵生成装置１３０が存在してもよい。
【０１６７】  ［送信者装置２１０（情報出力装置）］  図２０は、図１９の送信者装置２１０の構成を説明するためのブロック図である。なお、本形態において、第１実施形態と共通する部分については第１実施形態と同じ符号を付して説明を省略する（以下、同様）。
【０１６８】  図２０に示すように、本形態の送信者装置２１０は、一時メモリ１１１ａと、記憶部１１１ｂ，２１１ｄと、入力部１１２と、制御部１１３と、識別子特定部１１４ａと、属性情報設定部１１４ｂと、鍵生成処理部２１４ｄと、通信部１１５とを有する。
【０１６９】  送信者装置２１０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、鍵生成処理部２１４ｄは、CPUが所定のプログラムを実行することで構成される処理部や集積回路などであり、記憶部２１１ｄは、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。
【０１７０】  ［受信者装置２２０（情報処理装置）］  図２１は、図１９の受信者装置２２０の構成を説明するためのブロック図である。
【０１７１】  図２１に示すように、本形態の受信者装置２２０は、一時メモリ１２１ａと、記憶部２２１ｂ，２２１ｃと、制御部１２３と、識別子特定部１２４ａと、多項式生成部１２４ｂと、述語情報生成部１２４ｃと、暗号化部２２４ｄと、復号部１２４ｅと、通信部１２５とを有する。
【０１７２】  受信者装置２２０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、暗号化部２２４ｄは、CPUが所定のプログラムを実行することで構成される処理部や集積回路などであり、記憶部２２１ｂ，２２１ｃは、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。
【０１７３】  ＜事前設定＞  次に、本形態の関数暗号応用システム２の事前設定を説明する。
【０１７４】  ［特定情報］  図２２Ａ及び図２２Ｂは、第２実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【０１７５】  図２２Ａの例では、プロトコルごとに特定情報PIが割り当てられている。すなわち、この例では、特定情報PI=0に対してKeyword検索暗号プロトコルが割り当てられ、特定情報PI=1に対してForward Secure暗号プロトコルが割り当てられ、特定情報PI=2に対してKey Insulated暗号プロトコルが割り当てられ、特定情報PI=3に対してCCA2安全暗号プロトコルが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせを特定する。
【０１７６】  一方、図２２Ｂの例では、プロトコルごとに特定情報PIが割り当てられているほか、２種類以上のプロトコルの組み合わせに対しても特定情報PIが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルの組み合わせに対応する特定情報PIを特定する。
【０１７７】  なお、図２２に示した特定情報PIは一例であり、その他の方法によって１種類以上のプロトコルに対応する特定情報PIが特定されてもよい。
【０１７８】  ［識別子］  図２３Ａ及び図２３Ｂ及び図２４は、第２実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(h)を特定するための規則の一例を説明するための図である。
【０１７９】  図２３Ａの例では、選択可能なプロトコルごとに識別子ID(h)が割り当てられる。選択されたプロトコルに割り当てられた識別子ID(h)には、そのプロトコルに定められた規則に従った値が入力される。例えば、Keyword検索暗号プロトコルが選択された場合には、検索用キーワードが識別子ID(0)に入力される。一方、選択されなかったプロトコルに割り当てられた識別子ID(h)には、定数(const.)が入力される。また、複数のプロトコルの組み合わせが選択された場合には、その組み合わせを構成する複数のプロトコルが選択されたものとして識別子ID(h)の値が決定される。例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードが識別子ID(0)に入力され、使い捨て情報が識別子ID(3)に入力され、その他の識別子ID(1)，ID(3)には定数(const.)が入力される。
【０１８０】  図２３Ｂの例では、選択されたプロトコルのみに識別子ID(h)が割り当てられる。例えば、Keyword検索暗号プロトコルが選択された場合には、検索用キーワードを示す識別子ID(0)のみが割り当てられる。また、例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードを示す識別子ID(0)と、使い捨て情報を示す識別子ID(3)とのみが割り当てられる。
【０１８１】  図２４の例では、選択可能なプロトコル及びプロトコルの組み合わせごとに識別子ID(h)が割り当てられる。選択されたプロトコル及びプロトコルの組み合わせに割り当てられた識別子ID(h)には、選択されたプロトコル又は組み合わせを構成する各プロトコルに定められた各規則に従った値が入力され、選択されなかったプロトコルや組み合わせに割り当てられた識別子ID(h)には定数(const.)が入力される。例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードと使い捨て情報との組み合わせで定まる値が識別子ID(3)に入力され、その他の識別子ID(h)には定数(const.)が入力される。
【０１８２】  また、上述の識別子の決定方法は一例に過ぎず、その他の方法で識別子が特定してもよい。例えば、図２４の例の変形として、選択されたプロトコル及びプロトコルの組み合わせのみに識別子ID(h)が割り当てられてもよい。また、上述のように得られた各識別子ID(h)の組み合わせ（例えばビット結合）によって１つの識別子を構成してもよい。
【０１８３】  ［属性情報・述語情報］  第１実施形態と同様であるため説明を省略する。
【０１８４】  ［暗号化データベース（DB）］  図２５は、第２実施形態の暗号化DBの一例を説明するための図である。
【０１８５】  図２５におけるMr1〜Mr99は、それぞれ、ドキュメントなどの検索対象情報であり、KWr1〜KWr9は、それぞれ単語などのキーワードであり、Trueは「真」を意味する「１」などのデータである。また、C(Mr1),...,C(Mr99)は、それぞれ、検索対象情報Mr1〜Mr99の暗号文である。暗号文C(Mr1),...,C(Mr99)の暗号化方式は、共通鍵暗号方式、公開鍵暗号方式、ＩＤベース暗号方式、述語暗号方式などどのようなものであってもよい。また、Cr(KWr1,True),...,Cr(KWr9,True)は、それぞれ、述語情報PREと平文Trueとを述語暗号方式の暗号化関数に入力して得られる述語暗号方式の暗号文（第２情報）である。暗号文Cr(KWr1,True),...,Cr(KWr9,True)は、それぞれ、キーワードKWr1〜KWr9にそれぞれ対応する各属性情報ATTに対応する鍵情報を用いて正しく復号可能である。すなわち、例えば、キーワードKWr1に対応する属性情報ATTと、暗号文Cr(KWr1,True)を暗号化するために用いた述語情報PREとが予め定められた関数に入力された場合に当該関数の関数値は予め定められた値となる（例えば、当該属性情報ATTと当該属性情報ATTとの内積が０となる）。
【０１８６】  暗号化DBは、検索対象情報（「Mr」と総称する）の暗号文C(Mr1),...,C(Mr99)に対し、それぞれ、対応するキーワードに対応する暗号文をCr(KWr1,True),...,Cr(KWr9,True)を対応付けたものである。例えば、検索対象情報Mr1に対応するキーワードがKWr1, KWr2, KWr3, KWr4である場合、検索対象情報Mr1の暗号文C(Mr1)と、キーワードKWr1, KWr2, KWr3, KWr4に対応する暗号文Cr(KWr1,True),Cr(KWr2,True),Cr(KWr3,True),Cr(KWr4,True)と、が対応付けられる。これにより、例えば、キーワードKWr1に対応する属性情報ATTに対応する鍵情報を用いて暗号文Cr(KWr1,True)が正しく復号できたことをもって、検索対象情報Mr1の暗号文C(Mr1)を復号することなく、キーワードKWr1が検索対象情報Mr1に対応することを知ることができる。
【０１８７】  本形態では、このような暗号化DBが受信者装置２２０の記憶部２２１ｃに格納され、記憶部２２１ｃには、各キーワード（「KWr」と総称する）と平文Trueとが格納される。また、暗号化DBを構成する各キーワードKWrに対応する各暗号文Cr(KWr,True)は、後述のように順次更新される。
【０１８８】  ［受信者装置２２０で予め定められた論理式］  本形態でも、受信者装置２２０おいて、いくつかのプロトコル及び／又は当該プロトコルの組み合わせからなる条件に対応する論理式が予め定められている。ただし、当該論理式を構成する識別子ID'(h)の値は特定されておらず、当該識別子ID'(h)の値が定まることで述語情報PREが定まる。
【０１８９】  ［マスター秘密情報］  本形態の鍵生成装置１３０の記憶部１３１ｂには、述語暗号方式のマスター秘密情報MSKが格納される。マスター秘密情報MSKの一例は、前述した基底ベクトルbi*(i=1,...,n+1)を要素とするn+1行n+1列の行列B*である。
【０１９０】  ＜処理＞  図２６Ａは、第２実施形態の検索依頼処理を説明するためのフローチャートである。図２６Ｂは、第２実施形態の鍵情報生成処理を説明するためのフローチャートである。また、図２７は、第２実施形態の検索処理を説明するためのフローチャートである。以下、これらの図を用いて本形態の処理を説明する。
【０１９１】  ［検索依頼処理・鍵情報生成処理］  本形態の暗号化処理では、まず、実行する述語暗号方式を応用した１種類以上のプロトコルを特定するための特定情報PIと、検索用キーワードKWtとが、送信者装置２１０（図２０）の入力部１１２に入力される（ステップＳ２１１）。例えば、特定情報PIが図２２Ａように定まるのであれば、利用者に選択された１種類のプロトコルに対応する特定情報PI、又は、利用者に選択された２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせが入力部１１２に入力される。また、例えば、特定情報PIが図２２Ｂように定まるのであれば、利用者に選択された１種類のプロトコル又は２種類以上のプロトコルに対応する特定情報PIが入力部１１２に入力される。なお、本形態では、選択されるプロトコル又はプロトコルの組み合わせにKeyword検索暗号プロトコルが含まれるものとする。
【０１９２】  入力部１１２に入力された特定情報PIと検索用キーワードKWtとは、識別子特定部１１４ａに入力される。識別子特定部１１４ａは、当該特定情報PIによって特定されるプロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って（図２３及び図２４等参照）、当該プロトコルごと又は当該プロトコルの組み合わせごとに、検索用キーワードKWtに対応する識別子ID(h)を特定し、特定した１種類以上の当該識別子ID(h)を出力する（ステップＳ２１２）。
【０１９３】  識別子特定部１１４ａから出力された１種類以上の識別子ID(h)は属性情報設定部１１４ｂに入力される。属性情報設定部１１４ｂは、記憶部１１１ｂに格納された属性情報テーブル（図８、図９等参照）を用い、１種類の当該識別子ID(h)又は２種類以上の当該識別子ID(h)の組み合わせに対して定まる１つの属性情報ATTを設定し、設定した当該属性情報ATTを出力する（ステップＳ２１３）。
【０１９４】  属性情報設定部１１４ｂから出力された属性情報ATTは、鍵生成処理部２１４ｄに入力される。鍵生成処理部２１４ｄは、属性情報ATTを通信部１１５からネットワーク１４０経由で鍵生成装置１３０に送信し、属性情報ATTに対応する鍵情報SKtの生成を依頼する（ステップＳ２１４）。
【０１９５】  本形態の鍵情報生成処理では、まず、鍵生成装置１３０（図４）の通信部１３５が上記の属性情報ATTを受信する（ステップＳ２３１）。通信部１３５で受信された属性情報ATTは、鍵生成部１３４に入力される。鍵生成部１３４は、記憶部１３１ｂからマスター秘密情報MSKを読み出し、マスター秘密情報MSKと属性情報ATTとを述語暗号方式の鍵生成関数に入力し、属性情報ATTに対応する鍵情報SKtを生成して出力する（ステップＳ２３２）。なお、鍵生成関数の一例は式(50)の関数である。生成された鍵情報SKtは通信部１３５に送られ、通信部１３５は当該鍵情報SKrをネットワーク１４０経由で送信者装置２１０に送信する（ステップＳ２３３）。
【０１９６】  送信者装置２１０（図２０）の通信部１１５は鍵情報SKtを受信し、鍵生成処理部２１４ｄに送る。鍵生成処理部２１４ｄは当該鍵情報SKtを記憶部２１１ｄに格納する（ステップＳ２１５）。次に、記憶部２１１ｄから読み出された、検索用キーワードKWtに対応する鍵情報SKt（第１情報）は通信部１１５に送られ、そこからネットワーク１４０経由で受信者装置２２０に送信される（ステップＳ２１６）。
【０１９７】  ［検索処理］  本形態の検索処理では、まず、受信者装置２２０（図２１）の通信部１２５が、送信された検索用キーワードKWtに対応する鍵情報SKt（第１情報）を受信し、記憶部２２１ｂに格納する（ステップＳ２２１）。
【０１９８】  これを契機とし、識別子特定部１２４ａが、前述した受信者装置２２０で予め定められた論理式に対応するプロトコルごと又は当該プロトコルの組み合わせごとに、当該プロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って、各検索対象情報Mrにそれぞれ対応する各キーワードKWrに対応する１種類以上の識別子ID'(h)を特定する（ステップＳ２２２）。なお、当該規則は、送信者装置２１０の識別子特定部１１４ａで識別子ID(h)を特定するための規則と同一である。
【０１９９】  識別子特定部１２４ａでキーワードKWrごとに特定された１種類以上の識別子ID'(h)は多項式生成部１２４ｂに入力される。多項式生成部１２４ｂは、各キーワードKWrに対し、それぞれ、対応する識別子ID'(h)を用いて、前述した受信者装置２２０で予め定められた論理式を構成する識別子ID'(h)の値を定め、それによって定まる論理式に対応する多項式f(x0,...,xH-1)を生成し、生成した多項式f(x0,...,xH-1)を出力する（ステップＳ２２３）。
【０２００】  多項式生成部１２４ｂから出力された各多項式f(x0,...,xH-1)は、述語情報生成部１２４ｃに入力される。述語情報生成部１２４ｃは、各キーワードKWrに対し、それぞれ、入力された多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトルw→=(w0,...,wn-1)を述語情報PREとして生成し、当該述語情報PREを出力する（ステップＳ２２４）。
【０２０１】  述語情報生成部１２４ｃから出力された各キーワードKWrに対する各述語情報PREは、暗号化部２２４ｄに入力される。暗号化部２２４ｄは、記憶部１１１ｃから平文Trueを読み出し、各キーワードKWrに対する各述語情報PREと平文Trueとをそれぞれ述語暗号方式の暗号化関数に入力し、各キーワードKWrに対し、それぞれ、平文Trueの暗号文Cr(KWr,True)（第２情報）を生成し、これらによって暗号化DBの各キーワードに対応する各暗号文を更新し、暗号化DBを更新する（ステップＳ２２５）。なお、述語暗号方式の暗号化関数の一例は前述の式(51)(46)である。
【０２０２】  次に、ステップＳ２２１で通信部１２５が受信した検索用キーワードKWtに対応する鍵情報SKt（第１情報）と、記憶部２２１ｃから読み出された暗号化DBの何れかの暗号文Cr(KWr,True)（第２情報）とが復号部１２４ｅに入力される。復号部１２４ｅは、鍵情報SKt（第１情報）と暗号文Cr(KWr,True)（第２情報）を述語暗号方式の復号関数に入力して復号処理を実行し、それによって得られた復号結果Mr="True" or Notを出力する（ステップＳ２２６）。なお、復号関数の一例は式(47)〜(49)である。
【０２０３】  ここで、情報SKt（第１情報）に対応する属性情報ATTと、暗号文Cr(KWr,True)（第２情報）に対応する述語情報PREとが予め定められた関数に入力された場合の関数値が予め定められた値となる場合（例えば、当該属性情報ATTと当該述語情報PREとの内積が０となる場合）には、正しい復号結果が得られ、復号結果Mr=平文Trueとなる（例えば、式(48)(49)参照）。一方、当該属性情報ATTと当該述語情報PREとが予め定められた関数に入力された場合の関数値が予め定められた値とならない場合（例えば、当該属性情報ATTと当該述語情報PREとの内積が０とならない場合）には、正しい復号結果が得られない。そして、正しい復号結果が得られた場合には、その暗号文Cr(KWr,True)に対応付けられた検索対象情報Mrの暗号文C(Mr)が検索結果として抽出される。このようなステップＳ２２６の処理は、暗号化DBを構成するすべての暗号文Cr(KWr,True)に対してそれぞれ実行される。
【０２０４】  検索用キーワードKWtに対応する鍵情報SKt（第１情報）が受信者装置２２０で予め定められたプロトコル及び／又は当該プロトコルの組み合わせ及び／又はキーワードからなる条件に合致するものであった場合には、当該検索用キーワードKWtと同一のキーワードKWに対応する検索対象情報Mrの暗号文C(Mr)が検索結果として抽出される。
【０２０５】  一方、検索用キーワードKWtに対応する鍵情報SKt（第１情報）が受信者装置２２０で予め定められたプロトコル及び／又は当該プロトコルの組み合わせ及び／又はキーワードからなる条件に合致しないものであった場合には、正しい復号がなされないため、検索用キーワードKWtと同一のキーワードKWに対応する検索対象情報Mrの暗号文C(Mr)は抽出されない。つまり、実質的には、暗号化DBの検索が実行できない。
【０２０６】  以上のように、本形態では、送信者装置２１０が使用するプロトコルやプロトコルの組み合わせやキーワードを選択でき、受信者装置２２０において暗号化DBの検索が可能な鍵情報SKt（第１情報）のプロトコルやプロトコルの組み合わせやキーワードの条件を設定しておくことができる。そして、実質的には、受信者装置２２０は、送信者装置２１０で選択されたプロトコルやプロトコルの組み合わせやキーワードが、受信者装置２２０に設定された条件に合致した場合にのみ、暗号化DBの検索を実行することになる。
【０２０７】  〔第２実施形態の変形例〕  第２実施形態においても、属性情報ATT及び述語情報PREに対し、第１実施形態の変形例１，２で説明したような予備領域を設けてもよい。
【０２０８】  また、本形態では、第１情報が属性情報ATTに対応する鍵情報であり、第２情報が述語情報PREに対応する暗号文である場合の一例として、Keyword検索暗号プロトコルを基本としたプロトコルが実行される場合を例示した。しかし、本発明はこれに限定されない。
【０２０９】  〔第３実施形態〕  第３実施形態は、第１実施形態と第２実施形態との切り替えが可能な形態である。すなわち、送信者装置が、特定情報PIによって特定されるプロトコルに応じ、属性情報ATTを述語暗号方式の暗号化関数に入力させるか鍵生成関数に入力させるかを切り替え、受信者装置が、特定情報PIによって特定されるプロトコルに応じ、述語情報を述語暗号方式の鍵生成関数に入力させるか暗号化関数に入力させるかを切り替える形態である。以下では、第１実施形態との相違点を中心に説明し、第１実施形態と共通する部分については説明を省略する。
【０２１０】  ＜構成＞  図２８は、第３実施形態の関数暗号応用システム３の全体構成を説明するためのブロック図である。図２８に示すように、本形態の関数暗号応用システム３は、ネットワーク１４０に接続された、送信者装置３１０（情報出力装置）と受信者装置３２０（情報処理装置）と鍵生成装置１３０とを有する。なお、説明の便宜上、図２８には、送信者装置３１０と受信者装置３２０と鍵生成装置１３０とが１個ずつ表記されているが、２個以上の送信者装置３１０や受信者装置３２０や鍵生成装置１３０が存在してもよい。
【０２１１】  ［送信者装置３１０（情報出力装置）］  図２９は、図２８の送信者装置３１０の構成を説明するためのブロック図である。なお、本形態において、第１，２実施形態と共通する部分については第１，２実施形態と同じ符号を付して説明を省略する（以下、同様）。
【０２１２】  図２９に示すように、本形態の送信者装置３１０は、一時メモリ１１１ａと、記憶部１１１ｂ，１１１ｃ，２１１ｄと、入力部１１２と、制御部１１３と、識別子特定部１１４ａと、属性情報設定部１１４ｂと、暗号化部１１４ｃと、鍵生成処理部２１４ｄと、切り替え部３１４と、通信部１１５とを有する。
【０２１３】  送信者装置３１０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、切り替え部３１４は、CPUが所定のプログラムを実行することで構成される処理部や集積回路などである。
【０２１４】  ［受信者装置３２０（情報処理装置）］  図３０は、図２８の受信者装置３２０の構成を説明するためのブロック図である。  図３０に示すように、本形態の受信者装置３２０は、一時メモリ１２１ａと、記憶部１２１ｂ，２２１ｃと、制御部１２３と、識別子特定部１２４ａと、多項式生成部１２４ｂと、述語情報生成部１２４ｃと、鍵生成処理部１２４ｄと、暗号化部２２４ｄと、復号部１２４ｅと、切り替え部３２４ａ，３２４ｂと、通信部１２５とを有する。なお、説明の便宜上、図３０には、通信部１２５を示すブロックが２つ表記されているが、これは別個の通信部１２５が２つ必要なことを意味しない。
【０２１５】  受信者装置３２０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、切り替え部３２４ａ，３２４ｂは、CPUが所定のプログラムを実行することで構成される処理部や集積回路などである。
【０２１６】  ＜事前設定＞  第１，２実施形態と同様であるため説明を省略する。
【０２１７】  ＜処理＞  図３１Ａは、第３実施形態の送信者装置３１０の処理を説明するためのフローチャートである。図３１Ｂは、第３実施形態の受信者装置３２０の処理を説明するためのフローチャートである。以下、これらの図を用いて本形態の処理を説明する。
【０２１８】  本形態の送信者装置３１０の処理では、まず、実行する述語暗号方式を応用した１種類以上のプロトコルを特定するための特定情報PIが、送信者装置３１０（図２９）の入力部１１２に入力される（ステップＳ３１１）。
【０２１９】  ここで、特定情報PIによって特定されるプロトコル又はプロトコルの組合せが、第１実施形態のような属性情報ATTを述語暗号方式の暗号化関数に入力させて暗号文を生成する暗号化処理であった場合には、切り替え部３１４の制御のもと、第１実施形態のステップＳ１１１〜Ｓ１１５の暗号化処理が実行される。ただし、本形態の送信者装置３１０は、暗号文Ctとともに特定情報PIを受信者装置３２０に送信する。
【０２２０】  一方、特定情報PIによって特定されるプロトコル又はプロトコルの組合せが、第２実施形態のような属性情報ATTを述語暗号方式の鍵生成関数に入力させて鍵情報を生成する検索依頼処理及び鍵情報生成処理であった場合には、切り替え部３１４の制御のもと、第２実施形態のステップＳ２１１〜Ｓ２１６，Ｓ２３１〜Ｓ２３３の検索依頼処理及び鍵情報生成処理が実行される。ただし、本形態の送信者装置３１０は、鍵情報SKtとともに特定情報PIを受信者装置３２０に送信する。
【０２２１】  本形態の受信者装置３２０の処理では、まず、受信者装置３２０（図３０）の通信部１２５が、送信者装置３１０から送信された暗号文Ctと特定情報PIとの組、又は、鍵情報SKtと特定情報PIとの組を受信する（ステップＳ３１１）。
【０２２２】  ここで、特定情報PIによって特定されるプロトコル又はプロトコルの組合せが、第１実施形態のような述語情報PREを述語暗号方式の鍵生成関数に入力させて鍵情報を生成する復号処理及び鍵情報生成処理であった場合には、切り替え部３２４ａ，３２４ｂの制御のもと、第１実施形態のステップＳ１２１〜Ｓ１２７，Ｓ１３１〜Ｓ１３３の復号処理及び鍵情報生成処理が実行される。
【０２２３】  一方、特定情報PIによって特定されるプロトコル又はプロトコルの組合せが、第２実施形態のような述語情報PREを述語暗号方式の暗号化関数に入力させて暗号文を生成する検索処理であった場合には、切り替え部３２４ａ，３２４ｂの制御のもと、第２実施形態のステップＳ２２１〜Ｓ２２６の検索処理が実行される。
【０２２４】  〔第１〜３実施形態のその他の変形例〕  なお、本発明は上述の第１〜３の実施形態に限定されるものではない。例えば、前述の基本構成例１，２で例示した暗号文C2はn+1次元の基底ベクトルを用いて構成されたが（式(45)(51)）、互いに直交するn+2次元以上の基底ベクトルb1,...bn+ξを用いて暗号文C2が構成されてもよい。例えば、以下の式(54)(55)の暗号文C2が生成されてもよい。なお、ξは２以上の整数であり、υξ+1は定数や変数（乱数など）などである。      C2=υ1・(Σμ=1nvμ・bμ)+υ2・bn+1+…+υξ+1・bn+ξ∈G1n+ξ    …(54)      C2=υ1・(Σμ=1nwμ・bμ)+υ2・bn+1+…+υξ+1・bn+ξ∈G1n+ξ    …(55)
【０２２５】  また、式(44)の代わりに      D*=α・(Σμ=1nwμ・bμ*)+υn+1・bn+1*∈G2n+1        …(56)又は      D*=α・(Σμ=1nwμ・bμ*)+Σι=n+1n+ξυι・bι*∈G2n+ξ        …(57)を用いてもよい。
【０２２６】  また、式(50)の代わりに      D*=α・(Σμ=1nvμ・bμ*)+υn+1・bn+1*∈G2n+1        …(58)又は      D*=α・(Σμ=1nvμ・bμ*)+Σι=n+1n+ξυι・bι*∈G2n+ξ        …(59)を用いてもよい。ただし、υιは定数や変数（乱数など）などである。また、式(57)(59)の場合には、Σι=n+1n+ξυιが定数となるように各υιが選択されてもよい。例えば、      Σι=n+1n+ξυι=0F        …(60)となるように各υιがランダムに選択されてもよい。
【０２２７】  また、上述の有限体Fq上で定義された各演算を位数qの有限環Zq上で定義された演算に置き換えてもよい。有限体Fq上で定義された各演算を有限環Zq上で定義された演算に置き換える方法の一例は、素数やそのべき乗値以外のqを許容する方法である。  その他、KEM方式ではなく、参考文献９の内積述語暗号のように、内積述語暗号によって平文Mを直接暗号化する方式を用いてもよい。なお、参考文献９の内積述語暗号方式の具体的な構成は参考文献９のP24-25等に開示されているためここでは説明を省略するが、参考文献９の内積述語暗号方式も、互いに次元が等しいベクトルである述語情報と属性情報との内積が０である場合に正しく復号される方式である。その他、どのような述語暗号方式を用いてもかまわない。
【０２２８】  また、第１〜３実施形態では、送信者装置や受信者装置の外部に鍵生成装置が設けられていたが、送信者装置や受信者装置が鍵生成装置の機能を具備していてもよい。このような送信者装置や受信者装置は、鍵情報の生成を鍵生成装置に依頼することなく、自ら鍵情報を生成できる。
【０２２９】  また、第１〜３実施形態では、受信者装置が送信者装置から送信された暗号文又は鍵情報を受信した後に、受信者装置で述語情報PREが定められた。しかし、プロトコルによっては、受信者装置が送信者装置から送信された暗号文又は鍵情報を受信する前に受信者装置で述語情報PREを定めることができる場合もある。この場合には、受信者装置が、送信者装置から送信された暗号文又は鍵情報を受信する前に述語情報PREを定め、当該述語情報PREに対応する鍵情報又は暗号文を生成してもよい。
【０２３０】  また、属性情報ATTの代わりに述語情報PREを用い、述語情報PREの代わりに属性情報ATTを用いてもよい。すなわち、述語情報PREが第１対応情報に相当し、属性情報ATTが第２対応情報に相当してもよい。
【０２３１】  また、第１〜３実施形態では、各装置がネットワークを通じて情報のやり取りを行った。しかし、各装置がＵＳＢメモリなどの可搬型記録媒体を通じて情報のやり取りを行ってもよい。
【０２３２】  また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【０２３３】  〔第４〜６実施形態での定義〕  次に、第４〜６実施形態で使用する用語や記号を定義する。
【０２３４】  行列：「行列」とは演算が定義された集合の元を矩形に並べたものを表す。環の元を要素とするものだけではなく、群の元を要素とするものも「行列」と表現する。  (・)T：(・)Tは・の転置行列を表す。  (・)-1：(・)-1は・の逆行列を表す。  ∧：∧は論理積（ＡＮＤ）を表す論理記号である。  ∨：∨は論理和（ＯＲ）を表す論理記号である。  ¬：¬は否定（ＮＯＴ）を表す論理記号である。  命題変数：命題変数は命題の「真」,「偽」（"false","true"）を要素とする集合｛真，偽｝上の変数である。命題変数及び命題変数の否定を総称してリテラル（literal）と呼ぶ。
【０２３５】  論理式：論理式とは数理論理学における命題を表す形式的文法を有する式を意味する。具体的には「真」及び「偽」は論理式であり、命題変数は論理式であり、論理式の否定は論理式であり、論理式と論理式との論理積は論理式であり、論理式と論理式との論理和は論理式である。  Ｚ：Ｚは整数集合を表す。  sec：secはセキュリティパラメータ（sec∈Z, sec>0）を表す。  0*：0*は*個の0からなる列を表す。  1*：1*は*個の１からなる列を表す。
【０２３６】  Fq：Fqは位数qの有限体を表す。位数qは１以上の整数であり、例えば、素数や素数のべき乗値を位数qとする。すなわち、有限体Fqの例は素体やそれを基礎体とした拡大体である。なお、有限体Fqが素体である場合の演算は、例えば、位数qを法とする剰余演算によって容易に構成できる。また、有限体Fqが拡大体である場合の演算は、例えば、既約多項式を法とする剰余演算によって容易に構成できる。有限体Fqの具体的な構成方法は、例えば、参考文献１「ISO/IEC 18033-2: Information technology - Security techniques - Encryption algorithms - Part 2: Asymmetric ciphers」に開示されている。
【０２３７】  0F：0Fは有限体Fqの加法単位元を表す。  1F：1Fは有限体Fqの乗法単位元を表す。  δ(i,j)：δ(i,j)はクロネッカーのデルタ関数を表す。i=jの場合にδ(i,j)=1Fを満たし、i≠jの場合にδ(i,j)=0 Fを満たす。  E：Eは有限体Fq上で定義された楕円曲線を表す。Eはアフィン（affine）座標版のWeierstrass方程式      y2+a1・x・y+a3・y=x3+a2・x2+a4・x+a6（ただし、a1,a2,a3,a4,a6∈Fq）を満たすx,y∈Fqからなる点(x,y)の集合に無限遠点と呼ばれる特別な点Ｏを付加したもので定義される。楕円曲線E上の任意の２点に対して楕円加算と呼ばれる二項演算＋及び楕円曲線E上の任意の１点に対して楕円逆元と呼ばれる単項演算−がそれぞれ定義できる。また、楕円曲線E上の有理点からなる有限集合が楕円加算に関して群をなすこと、楕円加算を用いて楕円スカラー倍算と呼ばれる演算が定義できること、及びコンピュータ上での楕円加算などの楕円演算の具体的な演算方法はよく知られている（例えば、参考文献１、参考文献２「RFC 5091: Identity-Based Cryptography Standard (IBCS) #1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems」、参考文献３「イアン・Ｆ・ブラケ、ガディエル・セロッシ、ナイジェル・Ｐ・スマート＝著、「楕円曲線暗号」、出版＝ピアソン・エデュケーション、ISBN4-89471-431-0」等参照）。
【０２３８】  また、楕円曲線E上の有理点からなる有限集合は位数p(p≧1)の部分群を持つ。例えば、楕円曲線E上の有理点からなる有限集合の要素数を＃Eとし、pを＃Eを割り切る大きい素数とした場合、楕円曲線Eのp等分点からなる有限集合E[p]は、楕円曲線E上の有理点からなる有限集合の部分群を構成する。なお、楕円曲線Eのp等分点とは、楕円曲線E上の点Aのうち、楕円曲線E上での楕円スカラー倍算値p・Aがp・A＝Ｏを満たす点を意味する。
【０２３９】  G1, G2,GT：G1, G2, GTは位数qの巡回群を表す。巡回群G1, G2の具体例は、楕円曲線Eのp等分点からなる有限集合E[p]やその部分群である。G1=G2であってもよいしG1≠G2であってもよい。また、巡回群GTの具体例は、有限体Fqを基礎体とする拡大体を構成する有限集合である。その一例は、有限体Fqの代数閉包における１のｐ乗根からなる有限集合である。巡回群G1, G2,GTの位数と有限体Fqの位数とを同一とすることで安全性が向上する。
【０２４０】  なお、本形態では、巡回群G1, G2上で定義された演算を加法的に表現し、巡回群GT上で定義された演算を乗法的に表現する。すなわち、χ∈Fq及びΩ∈G1に対するχ・Ω∈G1は、Ω∈G1に対して巡回群G1で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G1に対するΩ1+Ω2∈G1は、Ω1∈G1とΩ2∈G1とを被演算子として巡回群G1で定義された演算を行うことを意味する。同様に、χ∈Fq及びΩ∈G2に対するχ・Ω∈G2は、Ω∈G2に対して巡回群G2で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G2に対するΩ1+Ω2∈G2は、Ω1∈G2とΩ2∈G2とを被演算子として巡回群G2で定義された演算を行うことを意味する。一方、χ∈Fq及びΩ∈GTに対するΩχ∈GTは、Ω∈GTに対して巡回群GTで定義された演算をχ回施すことを意味し、Ω1,Ω2∈GTに対するΩ1・Ω2∈GTは、Ω1∈GTとΩ2∈GTとを被演算子として巡回群GTで定義された演算を行うことを意味する。
【０２４１】  Ψ：Ψは1以上の整数を表す。  ψ：ψは0以上Ψ以下の整数ψ=0,...,Ψを表す。  λ：λは1以上Ψ以下の整数λ=1,...,Ψを表す。  n(ψ)：n(ψ)は1以上の整数を表す。  ζ(ψ)：ζ(ψ)は0以上の整数を表す。  G1n(ψ)+ζ(ψ)：G1n(ψ)+ζ(ψ)はn(ψ)+ζ(ψ)個の巡回群G1の直積を表す。  G2n(ψ)+ζ(ψ)：G2n(ψ)+ζ(ψ)はn(ψ)+ζ(ψ)個の巡回群G2の直積を表す。  g1, g2,gT：g1, g2, gTは巡回群G, G1, G2, GTの生成元を表す。  V(ψ)：V(ψ)はn(ψ)+ζ(ψ)個の巡回群G1の直積からなるn(ψ)+ζ(ψ)次元のベクトル空間を表す。  V*(ψ)：V*(ψ)はn(ψ)+ζ(ψ)個の巡回群G2の直積からなるn(ψ)+ζ(ψ)次元のベクトル空間を表す。
【０２４２】  eψ：eψは直積G1n(ψ)+ζ(ψ)と直積G2n(ψ)+ζ(ψ)との直積G1n(ψ)+ζ(ψ)×G2n(ψ)+ζ(ψ)を巡回群GTに写す非退化な双線形写像（bilinear map）を表す。双線形写像eψは、巡回群G1のn(ψ)+ζ(ψ)個の元γβ(β=1,...,n(ψ)+ζ(ψ))と巡回群G2のn(ψ)+ζ(ψ)個の元γβ*(β=1,...,n(ψ)+ζ(ψ))とを入力とし、巡回群GTの１個の元を出力する。      eψ：G1n(ψ)+ζ(ψ)×G2n(ψ)+ζ(ψ)→GT          …(61)
【０２４３】  双線形写像eψは以下の性質を満たす。  ［双線形性］すべてのΓ1∈G1n(ψ)+ζ(ψ)，Γ2∈G2n(ψ)+ζ(ψ)及びν，κ∈Fqについて以下の関係を満たす。      eψ(ν・Γ1,κ・Γ2)=eψ(Γ1,Γ2)ν・κ          …(62)  ［非退化性］すべてのΓ1∈G1n(ψ)+ζ(ψ)，Γ2∈G2n(ψ)+ζ(ψ)を巡回群GTの単位元に写す写像ではない。  ［計算可能性］あらゆる      Γ1∈G1n(ψ)+ζ(ψ)，Γ2∈G2n(ψ)+ζ(ψ)          …(63)についてeψ(Γ1,Γ2)を効率的に計算するアルゴリズムが存在する。
【０２４４】  本形態では、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像      Pair:G1×G2→GT          …(64)を用いて双線形写像eψを構成する。本形態の双線形写像eψは、巡回群G1のn(ψ)+ζ(ψ)個の元γβ(β=1,...,n(ψ)+ζ(ψ))からなるn(ψ)+ζ(ψ)次元ベクトル(γ1,...,γn(ψ)+ζ(ψ))と、巡回群G2のn(ψ)+ζ(ψ)個の元γβ*(β=1,...,n(ψ)+ζ(ψ))からなるn(ψ)+ζ(ψ)次元ベクトル(γ1*,...,γn(ψ)+ζ(ψ)*)との入力に対し、巡回群GTの１個の元を出力する。      eψ：Πβ=1n(ψ)+ζ(ψ)Pair(γβ, γβ*)          …(65)
【０２４５】  なお、双線形写像Pairは、巡回群G1の１個の元と巡回群G2の１個の元との組を入力とし、巡回群GTの１個の元を出力する。双線形写像Pairは、以下の性質を満たす。  ［双線形性］すべてのΩ1∈G1，Ω2∈G2及びν，κ∈Fqについて以下の関係を満たす。      Pair(ν・Ω1,κ・Ω2)=Pair(Ω1,Ω2)ν・κ          …(66)  ［非退化性］すべての      Ω1∈G1，Ω2∈G2          …(67)を巡回群GTの単位元に写す写像ではない。  ［計算可能性］あらゆるΩ1∈G1，Ω2∈G2についてPair(Ω1,Ω2)を効率的に計算するアルゴリズムが存在する。
【０２４６】  双線形写像Pairの具体例は、WeilペアリングやTateペアリングなどのペアリング演算を行うための関数である（例えば、参考文献４「Alfred. J. Menezes，ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS， KLUWER ACADEMIC PUBLISHERS， ISBN0-7923-9368-6，pp. 61-81」等参照）。また、楕円曲線Eの種類に応じ、Tateペアリングなどのペアリング演算を行うための関数と所定の関数phiを組み合わせた変更ペアリング関数e(Ω1,phi(Ω2))（Ω1∈G1，Ω2∈G2）を双線形写像Pairとして用いてもよい（例えば、参考文献２等参照）。また、ペアリング演算をコンピュータ上で行うためのアルゴリズムとしては、周知のMiller のアルゴリズム（参考文献５「V. S. Miller, “Short Programs for functions on Curves,”1986，インターネット＜http://crypto.stanford.edu/miller/miller.pdf＞」などが存在する。また、ペアリング演算を効率的に行うための楕円曲線や巡回群の構成方法はよく知られている（例えば、参考文献２、参考文献６「A. Miyaji, M. Nakabayashi, S.Takano, "New explicit conditions of elliptic curve Traces for FR-Reduction," IEICE Trans. Fundamentals, vol. E84-A, no05, pp. 1234-1243, May 2001」、参考文献７「P.S.L.M. Barreto, B. Lynn, M. Scott, "Constructing elliptic curves with prescribed embedding degrees," Proc. SCN '2002, LNCS 2576, pp.257-267, Springer-Verlag. 2003」、参考文献８「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」等参照）。
【０２４７】  ai(ψ)(i=1,...,n(ψ)+ζ(ψ))：ai(ψ)は巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。基底ベクトルai(ψ)の一例は、κ1・g1∈G1をi次元目の要素とし、残りのn(ψ)+ζ(ψ)-1個の要素を巡回群G1の単位元（加法的に「0」と表現）とするn(ψ)+ζ(ψ)次元の基底ベクトルである。この場合、n(ψ)+ζ(ψ)次元の基底ベクトルai(ψ)(i=1,...,n(ψ)+ζ(ψ))の各要素をそれぞれ列挙して表現すると、以下のようになる。
【０２４８】      a1(ψ)=(κ1・g1,0,0,...,0)      a2(ψ)=(0,κ1・g1,0,...,0)          …(68)...      an(ψ)+ζ(ψ)(ψ)=(0,0,0,...,κ1・g1)
【０２４９】  ここで、κ1は加法単位元0F以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ1=1Fである。基底ベクトルai(ψ)は直交基底であり、巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルai(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルai(ψ)は前述のベクトル空間V(ψ)を張る。
【０２５０】  ai*(ψ)(i=1,...,n(ψ)+ζ(ψ))：巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。基底ベクトルai*(ψ)の一例は、κ2・g2∈G2をi次元目の要素とし、残りのn(ψ)+ζ(ψ)-1個の要素を巡回群G2の単位元（加法的に「0」と表現）とするn(ψ)+ζ(ψ)次元の基底ベクトルである。この場合、基底ベクトルai*(ψ)(i=1,...,n(ψ)+ζ(ψ))の各要素をそれぞれ列挙して表現すると、以下のようになる。
【０２５１】      a1*(ψ)=(κ2・g2,0,0,...,0)      a2*(ψ)=(0,κ2・g2,0,...,0)          …(69)                ...      an(ψ)+ζ(ψ)*(ψ)=(0,0,0,...,κ2・g2)
【０２５２】  ここで、κ2は加法単位元0F以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ2=1Fである。基底ベクトルai*(ψ)は直交基底であり、巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルai*(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルai*(ψ)は前述のベクトル空間V*(ψ)を張る。
【０２５３】  なお、基底ベクトルai(ψ)と基底ベクトルai*(ψ)とは、0Fを除く有限体Fqの元τ=κ1・κ2について      eψ(ai(ψ), aj*(ψ))=gTτ・δ(i,j)           …(70)を満たす。すなわち、i=jの場合には、式(65)(66)の関係から、    eψ(ai(ψ), aj*(ψ))  = Pair(κ1・g1,κ2・g2)・Pair(0, 0)・...・Pair(0, 0)            = Pair(g1, g2)κ1・κ2・Pair(g1, g2)0・0・...・Pair(g1, g2)0・0            = Pair(g1, g2)κ1・κ2=gTτを満たす。なお、上付き添え字κ1，κ2はそれぞれκ1，κ2を表す。一方、i≠jの場合には、eψ(ai(ψ), aj*(ψ))=Πi=1n(ψ)+ζ(ψ) Pair(ai(ψ), aj*(ψ))の右辺は、Pair(κ1・g1,κ2・g2)を含まず、Pair(κ1・g1,0)と Pair(0,κ2・g2)とPair(0,0)との積になる。さらに、式(66)の関係からPair(g1, 0)=Pair(0, g2)=Pair(g1, g2)0を満たす。そのため、i≠jの場合には、      eψ(ai(ψ), aj*(ψ))=eψ(g1, g2)0=gT0を満たす。
【０２５４】  特に、τ=κ1・κ2=1Fである場合（例えば、κ1=κ2=1Fの場合）、      e(ai(ψ), aj*(ψ))=gTδ(i,j)           …(71)を満たす。ここで、gT0=1は巡回群GTの単位元であり、gT1=gTは巡回群GTの生成元である。この場合、基底ベクトルai(ψ)と基底ベクトルai*(ψ)とは双対正規直交基底であり、ベクトル空間V(ψ)とベクトル空間V*(ψ)とは、双線形写像を構成可能な双対ベクトル空間〔双対ペアリングベクトル空間（DPVS:Dual Paring Vector space)〕である。
【０２５５】  A(ψ)：基底ベクトルai(ψ)(i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。例えば、基底ベクトルai(ψ)(i=1,...,n(ψ)+ζ(ψ))が式(68)によって表現される場合、行列A(ψ)は、
【０２５６】
【数１２】
2011016401.tif 000016
【０２５７】となる。  A*(ψ)：基底ベクトルai*(ψ)(i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。例えば、基底ベクトルai*(ψ)(i=1,...,n(ψ)+ζ(ψ))が式(69)によって表現される場合、行列A*(ψ)は、
【０２５８】
【数１３】
2011016401.tif 000017
【０２５９】となる。  X(ψ)：X(ψ)は有限体Fqの元を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。行列X(ψ)は基底ベクトルai(ψ)の座標変換に用いられる。行列X(ψ)のi行j列(i=1,...,n(ψ)+ζ(ψ),j=1,...,n(ψ)+ζ(ψ))の要素をχi,j(ψ)∈Fqとすると、行列X(ψ)は、
【０２６０】
【数１４】
2011016401.tif 000018
【０２６１】となる。なお、行列X(ψ)の各要素χi,j(ψ)を変換係数と呼ぶ。  X *(ψ)：X*(ψ)と行列X(ψ)とはX*(ψ)=τ'・(X(ψ)-1)Tの関係を満たす。ただし、τ'∈Fqは有限体Fqに属する任意の定数であり、例えば、τ'=1Fである。X*(ψ)は基底ベクトルai*(ψ)の座標変換に用いられる。行列X*(ψ)のi行j列の要素をχi,j*(ψ)∈Fqとすると、行列Ｘ*(ψ)は、
【０２６２】
【数１５】
2011016401.tif 000019
【０２６３】となる。なお、行列Ｘ*(ψ)の各要素χi,j*(ψ)を変換係数と呼ぶ。  この場合、n(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の単位行列をI(ψ)とするとX(ψ)・(X*(ψ))T=τ'・I(ψ)を満たす。すなわち、単位行列
【０２６４】
【数１６】
2011016401.tif 000020
【０２６５】に対し、
【０２６６】
【数１７】
2011016401.tif 000021
【０２６７】を満たす。ここで、n(ψ)+ζ(ψ)次元ベクトル      χi→(ψ)=(χi,1(ψ),...,χi,n(ψ)+ζ(ψ)(ψ))          …(78)      χj→*(ψ)=(χj,1*(ψ),...,χj,n(ψ)+ζ(ψ)*(ψ))        …(79)を定義する。すると、式(77)の関係から、n(ψ)+ζ(ψ)次元ベクトルχi→(ψ)とχj→*(ψ)との内積は、      χi→(ψ)・χj→*(ψ)=τ'・δ(i,j)          …(80)となる。
【０２６８】  bi(ψ)：bi(ψ)は巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。bi(ψ)は行列X(ψ)を用いて基底ベクトルai(ψ) (i=1,...,n(ψ)+ζ(ψ))を座標変換することで得られる。具体的には、基底ベクトルbi(ψ)は、      bi(ψ)=Σj=1n(ψ)+ζ(ψ)χi,j(ψ)・aj(ψ)          …(81)の演算によって得られる。例えば、基底ベクトルaj(ψ)(j=1,...,n(ψ)+ζ(ψ))が式(68)によって表現される場合、基底ベクトルbi(ψ)の各要素をそれぞれ列挙して表現すると、以下のようになる。      bi(ψ)=(χi,1(ψ)・κ1・g1,χi,2(ψ)・κ1・g1,              ...,χi,n(ψ)+ζ(ψ)(ψ)・κ1・g1)          …(82)
【０２６９】  巡回群G1のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルbi(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルbi(ψ)は前述のベクトル空間V(ψ)を張る。
【０２７０】  bi*(ψ)：bi*(ψ)は巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするn(ψ)+ζ(ψ)次元の基底ベクトルを表す。bi*(ψ)は行列X*(ψ)を用いて基底ベクトルai*(ψ)(i=1,...,n(ψ)+ζ(ψ))を座標変換することで得られる。具体的には、基底ベクトルbi*(ψ)は、      bi*(ψ)=Σj=1n(ψ)+ζ(ψ)χi,j*(ψ)・aj*(ψ)          …(83)の演算によって得られる。例えば、基底ベクトルaj*(ψ) (j=1,...,n(ψ)+ζ(ψ))が式(69)によって表現される場合、基底ベクトルbi*(ψ)の各要素をそれぞれ列挙して表現すると、以下のようになる。      bi*(ψ)=(χi,1*(ψ)・κ2・g2 ,χi,2*(ψ)・κ2・g2,                      ...,χi,n(ψ)+ζ(ψ)*(ψ)・κ2・g2)        …(84)となる。巡回群G2のn(ψ)+ζ(ψ)個の元を要素とするすべてのn(ψ)+ζ(ψ)次元ベクトルは、n(ψ)+ζ(ψ)次元の基底ベクトルbi*(ψ)(i=1,...,n(ψ)+ζ(ψ))の線形和によって表される。すなわち、n(ψ)+ζ(ψ)次元の基底ベクトルbi*(ψ)は前述のベクトル空間V*(ψ)を張る。
【０２７１】  なお、基底ベクトルbi(ψ)と基底ベクトルbi*(ψ)とは、0Fを除く有限体Fqの元τ=κ1・κ2について      eψ(bi(ψ), bj*(ψ))=gTτ・τ'・δ(i,j)          …(85)を満たす。すなわち、式(65)(80)(82)(84)の関係から、
【０２７２】
【数１８】
2011016401.tif 000022
【０２７３】を満たす。特にτ=κ1・κ2=1F（例えば、κ1=κ2=1F）及びτ'=1Fである場合、      eψ(bi(ψ), bj*(ψ))=gTδ(i,j)          …(86)を満たす。この場合、基底ベクトルbi(ψ)と基底ベクトルbi*(ψ)とは、双対ペアリングベクトル空間（ベクトル空間V(ψ)とベクトル空間V*(ψ)）の双対正規直交基底である。  なお、式(85)の関係を満たすのであれば、式(68)(69)で例示したもの以外の基底ベクトルai(ψ)及びai*(ψ)や、式(81)(83)で例示したもの以外の基底ベクトルbi(ψ)及びbi*(ψ)を用いてもよい。
【０２７４】  B(ψ)：B(ψ)は基底ベクトルbi(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列である。B(ψ)=X(ψ)・A(ψ)を満たす。例えば、基底ベクトルbi(ψ)が式(82)によって表現される場合、行列B(ψ)は、
【０２７５】
【数１９】
2011016401.tif 000023
【０２７６】となる。  B*(ψ)：B*(ψ)は基底ベクトルbi*(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列を表す。B*(ψ)=X*(ψ)・A*(ψ)を満たす。例えば、基底ベクトルbi*(ψ) (i=1,...,n(ψ)+ζ(ψ))が式(84)によって表現される場合、行列B*(ψ)は、
【０２７７】
【数２０】
2011016401.tif 000024
【０２７８】となる。
【０２７９】  v(λ)→：v(λ)→は有限体Fqの元を要素とするn(λ)次元ベクトルを表す。      v(λ)→=(v1(λ),...,vn(λ)(λ))∈Fqn(λ)          …(89)  vμ(λ)：vμ(λ)はn(λ)次元ベクトルv(λ)→のμ(μ=1,...,n(λ))番目の要素を表す。  w(λ)→：w(λ)→は有限体Fqの元を要素とするn(λ)次元ベクトルを表す。      w(λ)→=(w1(λ),...,wn(λ)(λ))∈Fqn(λ)          …(90)  wμ(λ)：wμ(λ)はn(λ)次元ベクトルw(λ)→のμ(μ=1,...,n(λ))番目の要素を表す。  Enc：Encは共通鍵暗号方式の暗号化処理を示す共通鍵暗号関数を表す。  EncK(M)：EncK(M)は、共通鍵Kを用い、共通鍵暗号関数Encに従って平文Mを暗号化して得られた暗号文を表す。  Dec：Decは、共通鍵暗号方式の復号処理を示す共通鍵復号関数を表す。  DecK(C)：DecK(C)は、共通鍵Kを用い、共通鍵復号関数Decに従って暗号文Cを復号して得られた復号結果を表す。
【０２８０】  〔関数暗号方式〕  次に、第４〜６実施形態での関数暗号方式の基本的な構成について説明する。  関数暗号方式とは、条件情報と属性情報との組み合わせによって定まる論理式の真理値が「真」となる場合に暗号文が復号される方式である。「条件情報」と「属性情報」の一方が暗号文に埋め込まれ、他方が鍵情報に埋め込まれる。例えば、「"Predicate Encryption Supporting Disjunctions, Polynomial Equations, and Inner Products," with Amit Sahai and Brent Waters One of 4 papers from Eurocrypt 2008 invited to the Journal of Cryptology」（参考文献９）に開示された述語暗号方式は関数暗号方式の一種である。
【０２８１】  これ以外にも様々な公知の関数暗号方式が存在するが、以下では未公開の新たな関数暗号方式を説明する。以下に説明する新たな関数暗号方式では秘密情報に応じた値が所定の論理式に応じた態様で階層的に秘密分散される。所定の論理式は、条件情報と属性情報との組み合わせによって真理値が定まる命題変数を含み、必要に応じてさらに論理記号∧，∨，¬の何れか又はすべてを含む。そして、各命題変数の真理値が特定されることで定まる当該所定の論理式の真理値が「真」となる場合に秘密情報に応じた値が復元され、それに基づいて暗号文が復号される。
【０２８２】  ＜論理式と階層的な秘密分散との関係＞  上述した所定の論理式と階層的な秘密分散との関係を説明する。
【０２８３】  秘密分散とは、しきい値Kt(Kt≧1)個以上のシェア情報が得られた場合にのみ秘密情報が復元されるように、秘密情報をN(N≧2)個のシェア情報に分散することである。Kt=Nを満たす秘密分散の方式（SSS: Secret Sharing Scheme）をN-out-of-N分散方式（或いは「N-out-of-Nしきい値分散方式」）といい、Kt＜Nを満たす秘密分散の方式をKt-out-of-N分散方式（或いは「Kt-out-of-Nしきい値分散方式」）という（例えば、参考文献１１「黒沢馨、尾形わかは、“現代暗号の基礎数理 (電子情報通信レクチャーシリーズ)”、コロナ社 、２００４年３月、p.116-119」、参考文献１２「A. Shamir, "How to Share a Secret", Communications of the ACM, November 1979, Volume 22, Number 11, pp.612-613.」等参照）。
【０２８４】  N-out-of-N分散方式は、すべてのシェア情報share(1),...,share(N)が与えられれば秘密情報SEを復元できるが、任意のN-1個のシェア情報share(φ1),...,share(φN-1)が与えられても秘密情報SEの情報はまったく得られない方式である。以下に、その一例を示す。  ・SH1,...,SHN-1をランダムに選択する。  ・SHN=SE-(SH1+...+SHN-1)の計算を行う。  ・SH1,...,SHNを各シェア情報share(1),...,share(N)とする。  ・すべてのシェア情報share(1),...,share(N)が与えられれば、      SE=share(1)+...+share(N)          …(91)の復元処理によって秘密情報SEの復元が可能である。
【０２８５】  Kt-out-of-N分散方式は、任意の相違なるKt個のシェア情報share(φ1),...,share(φKt)が与えられれば秘密情報SEを復元できるが、任意のKt-1個のシェア情報share(φ1),...,share(φKt-1)が与えられても秘密情報SEの情報はまったく得られない方式である。なお、添え字のKtはKtを表す。以下にKt-out-of-N分散方式の一例を示す。  ・f(0)=SEを満たすKt-1次の多項式f(x)=ξ0+ξ1・x+ξ2・x2+...+ξKt-1・xKt-1をランダムに選ぶ。すなわち、ξ0=SEとし、ξ1,..., ξKt-1をランダムに選ぶ。シェア情報をshare(ρ)=(ρ, f(ρ))（ρ=1,...,N）とする。なお、(ρ, f(ρ))はρ及びf(ρ)の値をそれぞれ抽出可能な情報であり、例えばρとf(ρ)とのビット結合値である。  ・任意の相違なるKt個のシェア情報share(φ1),...,share(φKt)（(φ1,...,φKt)⊂(1,...,N)）が得られた場合、例えば、ラグランジェ(Lagrange)の補間公式を用い、以下のような復元処理によって秘密情報SEの復元が可能である。      SE=f(0)=LA1・f(φ1)+...+ LAKt・f(φKt)          …(92)
【０２８６】
【数２１】
2011016401.tif 000025
【０２８７】は先頭からρ番目の被演算子〔分母の要素(φρ-φρ)、分子の要素(x-φρ)〕が存在しないことを意味する。すなわち、式(93)の分母は、      (φρ-φ1)・...・(φρ-φρ-1)・(φρ-φρ+1)・...・(φρ-φKt)であり、式(93)の分子は、      (x-φ1)・...・(x-φρ-1)・(x-φρ+1)・...・(x-φKt)である。
【０２８８】  上述した各秘密分散は体上でも実行可能である。また、これらを拡張して秘密情報SEに応じた値をシェア情報shareに秘密分散することもできる。秘密情報SEに応じた値とは秘密情報SEそのものや秘密情報SEの関数値であり、シェア情報shareに応じた値とはシェア情報shareそのものやシェア情報の関数値である。例えば、有限体Fqの元である秘密情報SE∈Fqに応じた巡回群GTの元gTSE∈GTを秘密情報SEの各シェア情報share(1),share(2)に応じた巡回群GTの元gTshare(1),gTshare(2)∈GTに秘密分散することもできる。また、上述した秘密情報SEはシェア情報shareの線形結合となる（式(91)(92)）。このように秘密情報SEがシェア情報shareの線形結合となる秘密分散方式を線形秘密分散方式と呼ぶ。
【０２８９】  上述した所定の論理式は、秘密情報を階層的に秘密分散して得られる木構造データによって表現できる。すなわち、ド・モルガンの法則により、上述した所定の論理式はリテラルからなる論理式、又は、論理記号∧，∨の少なくとも一部とリテラルとからなる論理式（これらを「標準形論理式」と呼ぶことにする）によって表現でき、この標準形論理式は秘密情報を階層的に秘密分散して得られる木構造データによって表現できる。
【０２９０】  標準形論理式を表現する木構造データは複数のノードを含み、少なくとも一部のノードは１個以上の子ノードの親ノードとされ、親ノードの１つはルートノードとされ、子ノードの少なくとも一部は葉ノードとされる。ルートノードの親ノードや、葉ノードの子ノードは存在しない。ルートノードには秘密情報に応じた値が対応し、各親ノードの子ノードには当該親ノードに対応する値を秘密分散したシェア情報に応じた値が対応する。各ノードでの秘密分散形態（秘密分散方式やしきい値）は標準形論理式に応じて定まる。また、各葉ノードには標準形論理式を構成する各リテラルが対応し、当該各リテラルの真理値は条件情報と属性情報との組み合わせによって定まる。
【０２９１】  ここで、真理値が真となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られるが、真理値が偽となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られないものとする。また、上述した秘密分散の性質により、親ノードに対応するシェア情報に応じた値（その親ノードがルートノードであれば秘密情報に応じた値）は、その子ノードに対応するシェア情報に応じた値が当該親ノードに対応するしきい値以上の個数だけ得られた場合にのみ復元される。そのため、どの葉ノードに対応するリテラルの真理値が真になったのかと木構造データの構成（各ノードでの秘密分散の形態を含む）とに応じ、最終的にルートノードに対応する秘密情報に応じた値が復元できるか否かが定まる。そして、各葉ノードに対応する各リテラルの真理値が標準形論理式の真理値を真にする場合にのみ最終的にルートノードに対応する秘密情報に応じた値が復元できるように木構造データが構成されている場合、このような木構造データは標準形論理式を表現する。このような標準形論理式を表現する木構造データは容易に設定できる。以下に具体例を示す。
【０２９２】  図３２は、命題変数PRO(1),PRO(2)と命題変数PRO(3)の否定¬PRO(3)と論理記号∧，∨とを含む標準形論理式PRO(1)∧PRO(2)∨¬PRO(3)を表現する木構造データを例示する図である。図３２に例示する木構造データは複数のノードN1,...,N5を含む。ノードN1はノードN2,N5の親ノードとされ、ノードN2はノードN3,N4の親ノードとされ、親ノードの１つノードN1がルートノードとされ、子ノードの一部であるノードN3,N4,N5が葉ノードとされる。ノードN1には秘密情報SEに応じた値が対応し、ノードN1の子ノードN2,N5には、秘密情報SEに応じた値が1-out-of-2分散方式で秘密分散された各シェア情報SE,SEに応じた値がそれぞれ対応する。ノードN2の子ノードN3,N4には、シェア情報SEに応じた値が2-out-of-2分散方式で秘密分散された各シェア情報SE-SH1,SH1に応じた値がそれぞれ対応する。すなわち、葉ノードN3にはシェア情報share(1)=SE-SH1に応じた値が対応し、葉ノードN4にはシェア情報share(2)=SH1に応じた値が対応し、葉ノードN5にはシェア情報share(3)=SEに応じた値が対応する。また、葉ノードN3,N4,N5には標準形論理式PRO(1)∧PRO(2)∨¬PRO(3)を構成する各リテラルPRO(1),PRO(2),¬PRO(3)がそれぞれ対応し、当該各リテラルPRO(1),PRO(2),¬PRO(3)の真理値は条件情報と属性情報との組み合わせによって定まる。ここで、真理値が真となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られるが、真理値が偽となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られない。この場合、条件情報と属性情報との組み合わせが標準形論理式PRO(1)∧PRO(2)∨¬PRO(3)の真理値を真にする場合にのみ秘密情報SEに応じた値が復元される。
【０２９３】  図３３は、命題変数PRO(1),PRO(2),PRO(3),PRO(6),PRO(7)と命題変数PRO(4),PRO(5)の否定¬PRO(4),¬PRO(5)と論理記号∧，∨とを含む標準形論理式PRO(1)∧PRO(2)∨PRO(2)∧PRO(3)∨PRO(1)∧PRO(3)∨¬PRO(4)∨(¬PRO(5)∧PRO(6))∧PRO(7)を表現する木構造データを例示する図である。
【０２９４】  図３３に例示する木構造データは複数のノードN1,...,N11を含む。ノードN1はノードN2,N6,N7の親ノードとされ、ノードN2はノードN3,N4,N5の親ノードとされ、ノードN7はノードN8,N11の親ノードとされ、ノードN8はノードN9,N10の親ノードとされ、親ノードの１つであるノードN1がルートノードとされ、ノードN3,N4,N5,N6,N9,N10,N11が葉ノードとされる。ノードN1には秘密情報SEに応じた値が対応し、ノードN1の子ノードN2,N6,N7には、秘密情報SEに応じた値が1-out-of-3分散方式で秘密分散された各シェア情報SE,SE,SEに応じた値がそれぞれ対応する。ノードN2の子ノードN3,N4,N5には、シェア情報SEに応じた値が2-out-of-3分散方式で秘密分散された各シェア情報(1,f(1)),(2,f(2)),(3,f(3))に応じた値がそれぞれ対応する。ノードN7の子ノードN8,N11には、シェア情報SEに応じた値が2-out-of-2分散方式で秘密分散された各シェア情報SH4,SE-SH4に応じた値がそれぞれ対応する。ノードN8の子ノードN9,N10には、シェア情報SH4に応じた値が1-out-of-2分散方式で秘密分散された各シェア情報SH4,SH4に応じた値がそれぞれ対応する。すなわち、葉ノードN3にはシェア情報share(1)=(1,f(1))に応じた値が対応し、葉ノードN4にはシェア情報share(2)=(2,f(2))に応じた値が対応し、葉ノードN5にはシェア情報share(3)=(3,f(3))に応じた値が対応し、葉ノードN6にはシェア情報share(4)=SEに応じた値が対応し、葉ノードN9にはシェア情報share(5)=SH4に応じた値が対応し、葉ノードN10にはシェア情報share(6)=SH4に応じた値が対応し、葉ノードN11にはシェア情報share(7)=SE-SH4に応じた値が対応する。また、葉ノードであるノードN3,N4,N5,N6,N9,N10,N11には標準形論理式PRO(1)∧PRO(2)∨PRO(2)∧PRO(3)∨PRO(1)∧PRO(3)∨¬PRO(4)∨(¬PRO(5)∧PRO(6))∧PRO(7)を構成する各リテラルPRO(1),PRO(2),PRO(2),PRO(3),PRO(1),PRO(3),¬PRO(4),¬PRO(5),PRO(6),PRO(7)がそれぞれ対応し、各リテラルPRO(1),PRO(2),PRO(2),PRO(3),PRO(1),PRO(3),¬PRO(4),¬PRO(5),PRO(6),PRO(7)の真理値は条件情報と属性情報との組み合わせによって定まる。ここで、真理値が真となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られるが、真理値が偽となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られない。この場合、条件情報と属性情報との組み合わせが標準形論理式PRO(1)∧PRO(2)∨PRO(2)∧PRO(3)∨PRO(1)∧PRO(3)∨¬PRO(4)∨(¬PRO(5)∧PRO(6))∧PRO(7)の真理値を真にする場合にのみ秘密情報SEに応じた値が復元される。
【０２９５】  ＜アクセス構造＞  上述のように秘密情報を階層的に秘密分散して得られる木構造データによって所定の論理式を表現した場合、条件情報と属性情報との組み合わせに対して得られる葉ノードでのシェア情報に応じた値から秘密情報に応じた値を復元できるか否かによって、条件情報と属性情報との組み合わせによって定まる論理式の真理値が「真」となるか「偽」となるかを判定できる。以下、条件情報と属性情報との組み合わせによって定まる論理式の真理値が「真」となる場合に条件情報と属性情報との組み合わせを受け入れ、「偽」となる場合に条件情報と属性情報との組み合わせを拒絶する仕組みをアクセス構造と呼ぶ。
【０２９６】  上述のように所定の論理式を表現した木構造データの葉ノードの総数をΨとし、各葉ノードに対応する識別子をλ=1,...,Ψとする。各葉ノードに対応するn(λ)次元ベクトルv(λ)→の集合{v(λ)→}λ=1,...,Ψを条件情報とし、n(λ)次元ベクトルw(λ)→の集合{w(λ)→}λ=1,...,Ψを属性情報とする。また、上述した木構造データをラベル付き行列LMT(MT,LAB)として実装する。
【０２９７】  ラベル付き行列LMT(MT,LAB)は、Ψ行COL列（COL≧1）の行列
【０２９８】
【数２２】
2011016401.tif 000026
【０２９９】と、行列MTの各行λ=1,...,Ψに対応付けられたラベルLAB(λ)とを含む。
【０３００】  行列MTの各要素mtλ,col（col=1,...,COL）は次の２つの要件を満たす。第１に、上述のように所定の論理式を表現した木構造データのルートノードに秘密情報SE∈Fqに応じた値が対応する場合、予め定められた有限体Fqの元を要素とするCOL次元ベクトル      GV→=(gv1,...,gvCOL)∈FqCOL          …(95)と、秘密情報SEに応じた有限体Fqの元を要素とするCOL次元ベクトル      CV→=(cv1,...,cvCOL)∈FqCOL          …(96)とに対して      SE=GV→・(CV→)T          …(97)が成立する。COL次元ベクトルGV→の具体例は、      GV→=(1F,...,1F)∈FqCOL          …(98)であるが、GV→=(1F,0F,...,0F)∈FqCOLなどのその他のCOL次元ベクトルであってもよい。第２に、識別子λに対応する葉ノードにシェア情報share(λ)∈Fqに応じた値が対応する場合、      (share(1),...,share(Ψ))T=MT・(CV→)T          …(99)が成立する。上述のように所定の論理式を表現した木構造データが定まれば、これら２つの要件を満たす行列MTを選択することは容易である。また、秘密情報SEやシェア情報share(λ)が変数であったとしても、これら２つの要件を満たす行列MTを選択することは容易である。すなわち、行列MTを定めた後で秘密情報SEやシェア情報share(λ)の値が定められてもよい。
【０３０１】  また、行列MTの各行λ=1,...,Ψに対応付けられたラベルLAB(λ)は、識別子λに対応する葉ノードに対応するリテラル（PRO(λ)又は¬PRO(λ)）に対応する。ここで、命題変数PRO(λ)の真理値が「真」であることと条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}が含むv(λ)→と属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}が含むw(λ)→との内積v(λ)→・w(λ)→が０となることとが等価であると扱い、命題変数PRO(λ)の真理値が「偽」であることと内積v(λ)→・w(λ)→が０とならないこととが等価であると扱う。そして、PRO(λ)に対応するラベルLAB(λ)がv(λ)→を表し、¬PRO(λ)に対応するラベルLAB(λ)が¬v(λ)→を表すものとする。なお、¬v(λ)→はv(λ)→の否定を表す論理式であり、¬v(λ)→からv(λ)→の特定が可能である。また、LAB(λ)がv(λ)→を表すことを「LAB(λ)=v(λ)→」と表記し、LAB(λ)が¬v(λ)→を表すことを「LAB(λ)=¬v(λ)→」と表記する。また、LAB(λ)（λ=1,...,Ψ）の集合{LAB(λ)}λ=1,...,ΨをLABと表記する。
【０３０２】  さらに、Ψ次元ベクトル      TFV→=(tfv(1),...,tfv(Ψ))          …(100)を定義する。要素tfv(λ)は、内積v(λ)→・w(λ)→が０のときにtfv(λ)=１となり、０以外のときにtfv(λ)=0となる。    tfv(λ)=1  （PRO(λ)が真）    if  v(λ)→・w(λ)→=0      …(101)    tfv(λ)=0  （PRO(λ)が偽）    if  v(λ)→・w(λ)→≠0      …(102)
【０３０３】  さらに、論理式  {(LAB(λ)=v(λ)→)∧(tfv(λ)=1)}∨{(LAB(λ)=¬v(λ)→)∧(tfv(λ)=0)}  …(103)の真理値が「真」になるときLIT(λ)=1と表記し「偽」になるときLIT(λ)=0と表記する。すなわち、識別子λに対応する葉ノードに対応するリテラルの真理値が「真」になるときLIT(λ)=1と表記し「偽」になるときLIT(λ)=0と表記する。すると、行列MTが含む行ベクトルのうちLIT(λ)=1となる行ベクトルmtλ→=(mtλ,1,...,mtλ,COL)のみからなる部分行列MTTFVは以下のように表記できる。      MTTFV=(MT)LIT(λ)=1          …(104)
【０３０４】  上述した秘密分散方式が線形秘密分散方式である場合、識別子λに対応するシェア情報share(λ)に応じた値から秘密情報SEに応じた値が復元できることと、識別子λに対応する行ベクトルmtλ→で張られるベクトル空間にCOL次元ベクトルGV→が属することとは等価である。すなわち、識別子λに対応する行ベクトルmtλ→で張られるベクトル空間にCOL次元ベクトルGV→が属するか否かを判定することで、識別子λに対応するシェア情報share(λ)に応じた値から秘密情報SEに応じた値が復元できるか否かが判定できる。なお、行ベクトルmtλ→で張られるベクトル空間とは、行ベクトルmtλ→の線形結合で表すことができるベクトル空間を意味する。
【０３０５】  ここで、上述の部分行列MTTFVの各行ベクトルmtλ→で張られるベクトル空間span<MTTFV>にCOL次元ベクトルGV→が属する場合に条件情報と属性情報との組み合わせが受け入れられ、そうでない場合に条件情報と属性情報との組み合わせが拒絶されることにする。これにより、上述のアクセス構造が具体化される。なお、上述したようにラベル付き行列LMT(MT,LAB)が条件情報に対応する場合、アクセス構造が条件情報と属性情報との組み合わせを受け入れることを「アクセス構造が属性情報を受け入れる」といい、アクセス構造が条件情報と属性情報との組み合わせを受け入れないことを「アクセス構造が属性情報を拒絶する」という。      受け入れ  if  GV→∈span<MTTFV>      拒絶      if  ¬(GV→∈span<MTTFV>)  また、GV→∈span<MTTFV>の場合、      SE=Σμ∈SETconst(μ)・share(μ)          …(105)      {const(μ)∈Fq|μ∈SET},SET⊆{1,...,λ|LIT(λ)=1}を満たす係数const(μ)が存在し、このような係数const(μ)は行列MTのサイズの多項式時間で求めることができる。
【０３０６】  ＜アクセス構造を用いた関数暗号方式の基本構成＞  以下では、アクセス構造を用いた関数暗号方式によって鍵カプセル化メカニズムKEM (Key Encapsulation Mechanisms)を構成する場合の基本構成を例示する。この構成はSetup(1sec，(Ψ;n(1),...,n(Ψ)))，GenKey(PK,MSK,LMT(MT,LAB))，Enc(PK,M,{λ,v(λ)→|λ=1,...,Ψ})(v1(λ)=1F)，Dec(PK,SKS,C)を含む。また、属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}の1番目の要素w1(λ)が1Fとされる。
【０３０７】  ［Setup(1sec，(Ψ;n(1),...,n(Ψ)))：セットアップ］  −入力：1sec，(Ψ;n(1),...,n(Ψ))  −出力：マスター秘密情報MSK，公開パラメータPK  Setupでは各ψ=0,...,Ψについて以下の処理が実行される。
【０３０８】  (Setup-1) 1secを入力としてセキュリティパラメータsecでの位数q、楕円曲線E、巡回群G1, G2,GT、双線形写像eψ(ψ=0,...,Ψ)が生成される（param=(q, E, G1, G2,GT, eψ)）。  (Setup-2) τ'∈Fqが選択され、X*(ψ)=τ'・(X(ψ)-1)Tを満たす行列X(ψ)，X*(ψ)が選択される。
【０３０９】  (Setup-3) 基底ベクトルai(ψ) (i=1,...,n(ψ)+ζ(ψ))が式(81)に従って座標変換され、n(ψ)+ζ(ψ)次元の基底ベクトルbi(ψ) (i=1,...,n(ψ)+ζ(ψ))が生成される。基底ベクトルbi(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列B(ψ)が生成される。
【０３１０】  (Setup-4) 基底ベクトルai*(ψ) (i=1,...,n(ψ)+ζ(ψ))が式(83)に従って座標変換され、n(ψ)+ζ(ψ)次元の基底ベクトルbi*(ψ)(i=1,...,n(ψ)+ζ(ψ))が生成される。基底ベクトルbi*(ψ) (i=1,...,n(ψ)+ζ(ψ))を要素とするn(ψ)+ζ(ψ)行n(ψ)+ζ(ψ)列の行列B*(ψ)が生成される。
【０３１１】  (Setup-5) B*(ψ)＾の集合{B*(ψ)＾}ψ=0,...,Ψをマスター秘密情報MSK={B*(ψ)＾}ψ=0,...,Ψとする。また、B(ψ)＾の集合{B(ψ)＾}ψ=0,...,Ψと1secとparamとを公開パラメータPKとする。ただし、B*(ψ)＾は行列B*(ψ)又はその部分行列であり、B(ψ)＾は行列B(ψ)又はその部分行列である。また、集合{B*(ψ)＾}ψ=0,...,Ψは、少なくとも、b1*(0),b1*(λ) …,bn(λ)*(λ)（λ=1,...,Ψ）を含む。また、集合{B(ψ)＾}ψ=0,...,Ψは、少なくとも、b1(0),b1(λ),…,bn(λ)(λ)（λ=1,...,Ψ）を含む。以下に一例を示す。  ・n(0)+ζ(0)≧5, ζ(λ)=3・n(λ)  ・B(0)＾=(b1(0) b3(0) b5(0))T  ・B(λ)＾=(b1(λ) … bn(λ)(λ) b3・n(λ)+1(λ) … b4・n(λ)(λ))T（λ=1,...,Ψ）  ・B*(0)＾=(b1*(0) b3*(0) b4*(0))T  ・B*(λ)＾=(b1*(λ) … bn(λ)*(λ) b2・n(λ)+1*(λ) … b3・n(λ)*(λ))T（λ=1,...,Ψ）
【０３１２】  ［GenKey(PK,MSK,LMT(MT,LAB))：鍵情報生成］  −入力：公開パラメータPK，マスター秘密情報MSK，条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}に対応するラベル付き行列LMT(MT,LAB)  −出力：鍵情報SKS
【０３１３】  (GenKey-1) 式(95)-(99)を満たす秘密情報SEに対して以下の処理が実行される。      D*(0)=-SE・b1*(0)+Σι=2Icoefι(0)・bι*(0)          …(106)  ただし、Iは2以上n(0)+ζ(0)以下の定数である。coefι(0)∈Fqは定数又は乱数である。「乱数」とは真性乱数や擬似乱数を意味する。以下にD*(0)の一例を示す。なお、式(107)のcoef4(0)は乱数である。      D*(0)=-SE・b1*(0)+b3*(0)+coef4(0)・b4*(0)          …(107)
【０３１４】  (GenKey-2) 式(95)-(99)を満たすshare(λ)(λ=1,...,Ψ)に対して以下の処理が実行される。  LAB(λ)=v(λ)→となるλに対して      D*(λ)=(share(λ)+coef(λ)・v1(λ))・b1*(λ)              +Σι=2n(λ)coef(λ)・vι(λ)・bι*(λ)              +Σι=n(λ)+1n(λ)+ζ(λ)coefι(λ)・bι*(λ)          …(108)が生成され、  LAB(λ)=¬v(λ)→となるλに対して      D*(λ)=share(λ)・Σι=1n(λ)vι(λ)・bι*(λ)              +Σι=n(λ)+1n(λ)+ζ(λ)coefι(λ)・bι*(λ)          …(109)が生成される。ただしcoef(λ),coefι(λ)∈Fqは定数又は乱数である。以下に一例を示す。  LAB(λ)=v(λ)→となるλに対して      D*(λ)=(share(λ)+coef(λ)・v1(λ))・b1*(λ)              +Σι=2n(λ)coef(λ)・vι(λ)・bι*(λ)              +Σι=2・n(λ)+13・n(λ)coefι(λ)・bι*(λ)          …(110)が生成され、  LAB(λ)=¬v(λ)→となるλに対して      D*(λ)=share(λ)・Σι=1n(λ)vι(λ)・bι*(λ)              +Σι=2・n(λ)+13・n(λ)coefι(λ)・bι*(λ)          …(111)が生成される。なお、式(110)(111)のcoef(λ)及びcoefι(λ)は乱数である。
【０３１５】  (GenKey-3) 鍵情報      SKS=(LMT(MT,LAB),D*(0),D*(1),...,D(Ψ))          …(112)生成される。
【０３１６】  ［Enc(PK,M,VSET1)：暗号化］  −入力：公開パラメータPK，平文M，属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}(w1(λ)=1F)  −出力：暗号文C  (Enc-1) 以下の処理によって共通鍵Kの暗号文C(ψ)(ψ=0,...,Ψ)が生成される。
【０３１７】    C(0)=υ・b1(0)+Σι=2Iυι(0)・bι(0)          …(113)    C(λ)=υ・Σι=1n(λ)wι(λ)・bι(λ)+Σι=n(λ)+1n(λ)+ζ(λ)υι(λ)・bι(λ)  …(114)  ただし、υ,υι(ψ)∈Fq(ψ=0,...,Ψ)は定数又は乱数であり、      (coef2(0),...,coefI(0))・(υ2(0),...,υI(0))=υ'      …(115)      coefι(λ)・υι(λ)=0F (ι=n(λ)+1,...,n(λ)+ζ(λ))  …(116)を満たす。υ'の例はυ2(0),...,υI(0)の何れか１個である。例えば、υ,υ3(0),υ5(0),υ3・n(λ)+1(λ),...,υ4・n(λ)(λ)が乱数であり、ζ(λ)=3・n(λ)、I=5であり、      (υ2(0),...,υI(0))=(0F,υ3(0),0F,υ5(0))      υ'=υ3(0)      (υn(λ)+1(λ),...,υ3・n(λ)(λ))=(0F,...,0F)である。
【０３１８】  (Enc-2) 共通鍵      K=gTτ・τ'・υ'∈GT          …(117)が生成される。例えば、τ=τ'=1Fの場合、      K=gTυ'∈GT          …(118)である。
【０３１９】  (Enc-3) 共通鍵Kを用いて平文Mの暗号文      C(Ψ+1)=EncK(M)          …(119)が生成される。なお、共通鍵暗号方式Encは、例えば共通鍵Kを用いて暗号化可能に構成されたカメリア（Camellia）（登録商標）やAESや共通鍵と平文との排他的論理和などでよいが、その他の簡単な例として以下のようにEncK(M)を生成してもよい。ただし、式(120)の例ではM∈GTとされる。      C(Ψ+1)=gTυ'・M          …(120)
【０３２０】  (Enc-4) 暗号文      C=(VSET1,C(0),{C(λ)}(λ,w(λ)→)∈VSET1,C(Ψ+1))          …(121)が生成される。ただし、下付き添え字の「w(λ)→」は「w(λ)→」を表す。  ［Dec(PK,SKS,C)：復号］  −入力：公開パラメータPK，鍵情報SKS，暗号文C  −出力：平文M'
【０３２１】  (Dec-1) λ=1,...,Ψについて、鍵情報SKSが含むラベル付き行列LMT(MT,LAB)の各ラベルLAB(λ)であるn(λ)次元ベクトルv(λ)→と暗号文CのVSET1が含むn(λ)次元ベクトルw(λ)→との内積v(λ)→・w(λ)→が0となるか否かが判定され、これとLMT(MT,LAB)の各ラベルLAB(λ)とによってGV→∈span<MTTFV>であるか否かが判定される（式(100)-(105)）。GV→∈span<MTTFV>でなければ暗号文Cが拒絶され、GV→∈span<MTTFV>であれば暗号文Cが受け入れられる。
【０３２２】  (Dec-2) 暗号文Cが受け入れられると、SET⊆{1,...,λ|LIT(λ)=1}と式(105)を満たす係数const(μ)(μ∈SET)とが計算される。  (Dec-3) 共通鍵
【０３２３】
【数２３】
2011016401.tif 000027
【０３２４】が生成される。ここで、式(66)(85)(115)から、
【０３２５】
【数２４】
2011016401.tif 000028
【０３２６】を満たす。また、式(66)(85)(101)(108)(114)(116)及びw1(λ)=1Fから
【０３２７】
【数２５】
2011016401.tif 000029
【０３２８】を満たす。また、式(66)(85)(102)(109)(114)(116)から
【０３２９】
【数２６】
2011016401.tif 000030
【０３３０】を満たす。よって、式(105)(123)-(125)から
【０３３１】
【数２７】
2011016401.tif 000031
【０３３２】を満たす。例えば、τ=τ'=1Fの場合、      K=gTυ'∈GT          …(127)を満たす。  (Dec-4) 共通鍵Kを用いて平文      M'=DecK(C(Ψ+1))=DecK(C(Ψ+1))          …(128)が生成される。例えば、式(120)に例示した共通鍵暗号方式の場合、      M'=C(Ψ+1)/K          …(129)によって平文M'が生成される。
【０３３３】  ［(Dec-1)の処理の具体例］  以下に(Dec-1)の処理の具体例を説明する。なお、以下では説明の簡略化のため、式(98)のCOL次元ベクトルGV→が用いられる場合を例示する。ただし、これは本発明を限定するものではなく、式(96)のように一般化されたCOL次元ベクトルGV→が用いられる場合に以下の処理を拡張して適用してもよい。
【０３３４】  図３４に例示するように、まず復号部は、ラベル付き行列LMT(MT,LAB)に対応する条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}、暗号文C1'が含む属性情報VSET1'={λ,w(λ)→|λ=1,...,Ψ}、及びLMT(MT,LAB)の各ラベルLAB(λ)とを用い、式(101)-(104)に示した部分行列MTTFVを生成する。ここではMTTFVを以下のように表現する。
【０３３５】
【数２８】
2011016401.tif 000032
【０３３６】  ただし、式(130)のMTTFVはω行COL列の行列であり、ωは１以上の整数であり、ROW(1),...,ROW(ω)はそれぞれLIT(ROW(1))=1,..., LIT(ROW(ω))=1となる行列MT（式(34)）の行番号ROW(1),...,ROW(ω)⊂{1,...,Ψ}である（ステップＳ４０１）。
【０３３７】  次に、復号部は、MTTFVの行ベクトルmtλ'→=(mtλ',1,...,mtλ',COL)（λ'= ROW(1),...,ROW(ω)）ごとの演算やMTTFVの行ベクトルmtλ'→間の演算を行って、対角成分を乗法単位元1FとしたΩ×Ωの上三角行列を１行１列からΩ行Ω列までの部分行列とし、Ω+１行以降の行ベクトルmtλ'→が存在する場合にはΩ+１行以降の行ベクトルmtλ'→の全要素を加法単位元0Fとした上三角化行列MTTFV'を生成する。ただし、Ωは１以上であって部分行列MTTFVの行数及び列数以下の整数である。MTTFV'は例えば以下のようになる。
【０３３８】
【数２９】
2011016401.tif 000033
【０３３９】  ただしΩ+１行以降の各要素が存在しない場合もあり得、また、Ω+１列以降の各要素が存在しない場合もあり得る。
【０３４０】  このような上三角化行列MTTFV'は例えば、ガウスの消去法を利用して生成できる。すなわち、例えばまず、部分行列MTTFVの１行目の行ベクトルmt1→=(mt1,1,...,mt1,COL)をmt1,1で除算したものをMTTFV'の１行目の行ベクトルとする。次に、部分行列MTTFVの２行目の行ベクトルmt2→=(mt2,1,...,mt2,COL)からMTTFV'の１行目の行ベクトルをmt2,1倍した行ベクトルを減じた行ベクトル(0F,mt2,2'',...,mt2,COL'')をmt2,2''で除算したものをMTTFV'の２行目の行ベクトルとする。同様に、既に生成したMTTFV'の各行ベクトルを用いてそれよりも大きな行番号の行ベクトルを加工していくことにより、上三角化行列MTTFV'が生成できる。なお、上三角化行列MTTFV'を生成するための演算は、行ベクトル単位の演算と行ベクトル間の演算であり、同一の行ベクトルの異なる要素に対して異なる演算を行うことは許されない。また、除算するための法が加法単位元0Fとなった場合には加工対象の行ベクトルが選びなおされる。また、部分行列MTTFVが互いに線形独立でない複数の行ベクトル（すなわち一次従属な複数の行ベクトル）を含む場合、そのような行ベクトルを代表する１つの行ベクトルがΩ×Ωの上三角行列の要素を含む行ベクトルとなり、その他の行ベクトルは加法単位元0Fのみを要素とした行ベクトルとなる（ステップＳ４０２）。
【０３４１】  次に、復号部はλ'=2に設定する（ステップＳ４０３）。復号部は  (mt1,1' ... mt1,COL')-(mt1,λ' - 1F)・(mtλ',1' ... mtλ',COL')  …(132)を新たな(mt1,1' ... mt1,COL')として、上三角化行列MTTFV'の１行目の行ベクトル(mt1,1' ... mt1,COL')を更新する。なお、(mtλ',1' ... mtλ',COL')は上三角化行列MTTFV'のλ'行目の行ベクトルを表す。復号部はλ'=Ωであるか否かを判定し（ステップＳ４０５）、λ'=Ωでなければλ'+１を新たなλ'とし（ステップＳ４０６）、ステップＳ４３４の処理に戻る。一方、λ'=Ωであれば復号部は(mt1,1' ... mt1,COL')=(1F,...,1F)        …(133)を満たすか否かを判定し（ステップＳ４０７）、これを満たすならばK'の復号が可能であるとし（ステップＳ４０８）、これを満たさないならばK'の復号が不可能であるとする（ステップＳ４０９）。
【０３４２】  なお、ステップＳ４０２の上三角化行列MTTFV'を生成するためのすべての演算内容とステップＳ４０４でのすべての演算内容とを記憶部に格納しておき、これらの演算を部分行列MTTFVの各要素を不定元とした行列に施して得られる１行目の要素の係数を式(105)を満たす係数const(ind)とすることができる。すなわち、これらの演算を部分行列MTTFVの各要素を不定元とした行列に施して得られる、行列MTのind行目の行ベクトルに対応する部分行列MTTFVの行ベクトルに対応する不定元を要素とする１行目の行ベクトルの係数を、係数const(ind)とすることができる（式(97)(99)の関係参照）。
【０３４３】  [変形例]  なお、gTをGTの生成元とする代わりにgTτやgTτ'やgTτ・τ'をGTの生成元と扱ってもよい。また、鍵情報SKSのλと暗号文のλとを対応関係を特定する写像を用いてC(λ)とD*(λ)との組み合わせを特定し、［Dec(PK,SKS,C)：復号］の処理が実行されてもよい。また、属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}の1番目の要素w1(λ)が1Fとされるだけではなく、条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}のn(λ)番目の要素vn(λ)(λ)が1Fとされてもよい。また、要素w1(λ)が1Fでない場合にはw(λ)→の代わりにw(λ)→/w1(λ)を用いてもよく、要素vn(λ)(λ)が1Fでない場合にはv(λ)→の代わりにv(λ)→/vn(λ)(λ)を用いてもよい。
【０３４４】  また、上述のように属性情報VSET1が暗号文に対応し、条件情報VSET2が鍵情報に対応する方式をキーポリシー（KP）方式と呼ぶ。これに対し、属性情報VSET1が鍵情報に対応し、条件情報VSET2が暗号文に対応するサイファーテキスト（CP）方式が用いられてもよい。すなわち、条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}の代わりに属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}が用いられ、属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}の代わりに条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}が用いられてもよい。
【０３４５】  CP方式の場合には条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}の1番目の要素v1(λ)が1Fとされ、PRO(λ)に対応するラベルLAB(λ)がｗ(λ)→を表し、¬PRO(λ)に対応するラベルLAB(λ)が¬ｗ(λ)→を表す。また、CP方式の場合には、式(108)(109)の代わりに、  LAB(λ)=w(λ)→となるλに対して      D*(λ)=(share(λ)+coef(λ)・w1(λ))・b1*(λ)              +Σι=2n(λ)coef(λ)・wι(λ)・bι*(λ)              +Σι=n(λ)+1n(λ)+ζ(λ)coefι(λ)・bι*(λ)      …(134)が生成され、  LAB(λ)=¬w(λ)→となるλに対して      D*(λ)=share(λ)・Σι=1n(λ)wι(λ)・bι*(λ)              +Σι=n(λ)+1n(λ)+ζ(λ)coefι(λ)・bι*(λ)      …(135)が生成される。また、CP方式の場合には、式(114)の代わりに、  C(λ)=υ・Σι=1n(λ)vι(λ)・bι(λ)+Σι=n(λ)+1n(λ)+ζ(λ)υι(λ)・bι(λ)                                                            …(136)が生成され、式(121)の代わりに、      C=(VSET2,C(0),{C(λ)}(λ,v(λ)→)∈VSET2,C(Ψ+1))        …(137)ただし、下付き添え字の「v(λ)→」は「v(λ)→」を表す。〔第４〜６実施形態の原理〕  次に、第４〜６実施形態の原理を説明する。
【０３４６】  第４〜６実施形態では前述のアクセス構造を用いた関数暗号方式が用いられる。第４〜６実施形態の関数暗号応用システムは、送信者装置（情報出力装置）と受信者装置（情報処理装置）とを含み、属性情報VSET1（第１対応情報）と条件情報VSET2（第２対応情報）との組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される関数暗号方式を応用したプロトコル（関数暗号方式に従ったプロトコル）を実行する。
【０３４７】  まず、送信者装置の識別子特定部に、実行する関数暗号方式を応用した１種類以上のプロトコルを特定するための特定情報が入力される。識別子特定部は、当該特定情報によって特定されるプロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って、当該プロトコルごと又は当該プロトコルの組み合わせごとに識別子を特定し、特定した１種類以上の当該識別子を出力する。第４〜６実施形態における識別子はベクトルである。
【０３４８】  なお、関数暗号方式を応用したプロトコルには、それぞれ、それに使用すべき属性情報VSET1の種別（言い換えると属性情報VSET1の性質）が定められている。当該規則は、特定情報によって特定されるプロトコル又は当該プロトコルの組み合わせに使用すべき種別の属性情報VSET1を定める識別子を特定するものである。例えば、当該プロトコルがTimed-Release暗号プロトコルである場合の当該規則は、第１情報の生成時点より未来の時点を特定する情報を識別子とする規則であり、当該プロトコルがForward Secure暗号プロトコル又はKey Insulated暗号プロトコルである場合の当該規則は、それぞれ、第１情報の生成時点を含む時間区間又は第１情報の生成時点より未来の時間区間を特定する情報を識別子とする規則であり、当該プロトコルがCCA2安全暗号プロトコルである場合の当該規則は、第１情報の生成ごとに新たに設定される使い捨て情報を特定する情報を識別子とする規則であり、当該プロトコルがKeyword検索暗号プロトコルである場合の規則は、データベースの検索用キーワードを特定する情報を識別子とする規則である。
【０３４９】  識別子特定部で特定された１種類以上の識別子は、送信者装置の属性情報設定部に入力される。属性情報設定部は、１種類の当該識別子又は２種類以上の当該識別子の組み合わせに対して定まる１つの属性情報VSET1（特定の第１対応情報）を設定し、設定した当該属性情報VSET1を出力する。そして、送信者装置の出力部は、属性情報設定部から出力された属性情報VSET1に対応する関数暗号方式の暗号文又は鍵情報である第１情報を出力する。
【０３５０】  受信者装置の復号部には、第１情報と記憶部から読み出した第２情報とが入力される。なお、第２情報は、関数暗号方式の鍵情報又は暗号文であり、第１情報が属性情報VSET1に対応する暗号文である場合には第２情報は条件情報VSET2（特定の第２対応情報）に対応する鍵情報であり、第１情報が属性情報VSET1に対応する鍵情報である場合には第２情報は条件情報VSET2（特定の第２対応情報）に対応する暗号文である。
【０３５１】  前述のように、属性情報VSET1（第１対応情報）は１又は複数のベクトルw(λ)→（第１部分対応情報）を含み、条件情報VSET2（第２対応情報）は１又は複数のベクトルv(λ)→（第２部分対応情報）を含む。ベクトルw(λ)→及びベクトルv(λ)→がそれらの内積を算出する関数（予め定められた関数）に入力された場合に、ベクトルw(λ)→の値及びベクトルv(λ)→の値の組み合わせに応じてそれらの内積が０（予め定められた値）となるか、又は、０以外の値となる。ベクトルw(λ)→及びベクトルv(λ)→の組み合わせごとに、それらの内積が０（予め定められた値）となる場合をベクトルw(λ)→及びベクトルv(λ)→の組み合わせが真であるとするか、又は、それらの内積が０とならない場合をベクトルw(λ)→及びベクトルv(λ)→の組み合わせが真であるとするかが定められている（式(101)(102)）。
【０３５２】  受信者装置の復号部は、当該第１情報と当該第２情報とを関数暗号方式の復号関数に入力して復号処理を実行し、それによって得られた復号結果を出力する。前述のように、アクセス構造を用いた関数暗号方式の復号関数は、真となるベクトルw(λ)→及びベクトルv(λ)→の組み合わせの集合が予め定められた条件を満たした場合に、正しい復号結果を生成する関数である。詳しくは、ベクトルw(λ)→のそれぞれ又はベクトルv(λ)→のそれぞれにベクトル(mtλ,1,...,mtλ,ＣＯＬ)が対応付けられている（ラベル付き行列LMT(MT,LAB)、式(34)参照）。すなわち、KP方式の場合にはベクトルv(λ)→がベクトル(mtλ,1,...,mtλ,ＣＯＬ)（LIT(λ)=1）が対応付けられ、CP方式の場合にはベクトルw(λ)→がベクトル(mtλ,1,...,mtλ,ＣＯＬ)（LIT(λ)=1）が対応付けられる。前述のように、アクセス構造を用いた関数暗号方式の復号関数は、真となるベクトルw(λ)→及びベクトルv(λ)→の組み合わせがそれぞれ含む、ベクトルw(λ)→又はベクトルv(λ)→に対応付けられたベクトルベクトル(mtλ,1,...,mtλ,ＣＯＬ)（LIT(λ)=1）で張られるベクトル空間内に特定のベクトルGV→が存在する場合（GV→∈span<MTTFV>）に、正しい復号結果を生成する。前述のように、ベクトル(mtλ,1,...,mtλ,ＣＯＬ)（LIT(λ)=1）で張られるベクトル空間内に特定のベクトルGV→が存在することは、第１情報に対応する属性情報VSET1と第２情報に対応する条件情報VSET2との組み合わせに対応する論理式の真理値が真となることと等価である。すなわち、この関数暗号方式では、属性情報VSET1と条件情報VSET2との組み合わせに対応する論理式の真理値が真の場合に暗号文が正しく復号される。
【０３５３】  また、属性情報VSET1は、１種類の識別子又は２種類以上の当該識別子の組み合わせに対して定まる情報であり、条件情報VSET2と何れか１つの属性情報VSET1とが復号関数に入力された場合、属性情報VSET1がとる複数種類の値に対してそれぞれ正しい復号結果が得られる値をとる。すなわち、第４〜６実施形態では、１種類以上の第１情報に対して同一の第２情報を共用し、正しい復号を行うことができる。そのため、送信者装置が１種類の識別子又は２種類以上の当該識別子の組み合わせを選択し、選択した識別子に応じてプロトコルを切り替えて第１情報を生成する場合であっても、受信者装置は切り替えられるプロトコルごとに別個に第２情報を生成する必要はない。すなわち、受信者装置の記憶部に１種類の条件情報VSET2に対応する１種類の第２情報のみが格納されていたとしても、受信者装置は、選択された１種類以上のプロトコル又はプロトコルの組み合わせに対する第１情報に対応することができる。その結果、本形態では、煩雑な処理を必要とせずに、選択した識別子に応じてプロトコルを切り替えることができる。
【０３５４】  また、識別子特定部に、２種類以上のプロトコルを特定するための特定情報が入力される場合、２種類以上のプロトコルの組み合わせ、すなわち、２種類以上のプロトコルの特徴を兼ね備えた新たなプロトコルを構成することもできる。
【０３５５】  また、第４〜６実施形態では、関数暗号方式を用いるため、プロトコルの組み合わせ方の自由度が高い。すなわち、第４〜６実施形態では、第１情報に対応する属性情報VSET1と第２情報に対応する条件情報VSET2との組合せが論理式の真理値を真にする場合に正しい復号結果が生成される。２種類以上のプロトコルの組み合わせは識別子の組み合わせに対応し、当該識別子の組み合わせは属性情報VSET1に対応するが、当該論理式の真理値が真となるのであれば、当該識別子の組み合わせ方法に制限はない。
【０３５６】  これに対し、IDベース暗号方式を応用した階層型IDベース暗号方式（例えば、参考文献１０「C. Gentry, A. Silverberg, "Hierarchical ID-based cryptography," Proceedings of ASIACRYPT 2002, Lecture Notes in Computer Science, Springer-Verlag, 2002.」等）を用いた場合には、プロトコルの組み合わせ方が制限される。すなわち、階層型IDベース暗号方式では、複数のプロトコルにそれぞれ対応する複数の識別子を組み合わせ方が制限される。つまり、階層型IDベース暗号方式では、複数の識別子の組み合わせによって生成された新たな識別子が木構造をなす必要あり、新たな識別子は必ずその親の識別子を含まなければならない。例えば、識別子ID1と識別子ID2との組み合わせID1|ID2を新たな識別子とした場合、それ以降、例えば、識別子ID1と識別子ID2と識別子ID3との組み合わせを新たな識別子ID1|ID2|ID3とすることはできるが、識別子ID1と識別子ID3との組み合わせを新たな識別子ID1|ID3とすることはできない。
【０３５７】  また、送信者装置が、特定情報によって特定されるプロトコルに応じ、属性情報VSET1を関数暗号方式の暗号化関数に対応させるか、属性情報VSET1を関数暗号方式の鍵生成関数に対応させるかを切り替える第１切り替え部をさらに有し、受信者装置が、特定情報によって特定されるプロトコルに応じ、条件情報VSET2を関数暗号方式の鍵生成関数に対応させるか、条件情報VSET2を関数暗号方式の暗号化関数に対応させるかを切り替える第２切り替え部をさらに有してもよい。これにより、プロトコルの選択の幅が広がる。
【０３５８】  また、属性情報VSET1及び条件情報VSET2の一部の領域を、使い道が決まっていない予備領域としておいてもよい。例えば、属性情報VSET1が含む少なくとも一部のベクトルw(λ)→（第１部分対応情報）の値が予め固定されており、条件情報VSET2（第２対応情報）が含む少なくとも一部のベクトルv(λ)→（第２部分対応情報）の値が予め固定され、これらの値が固定されたベクトルを予備領域のものとしてもよい。例えば、値が予め固定されたベクトルw(λ)→である第１部分対応情報と値が予め固定されたベクトルv(λ)→である第２部分対応情報との内積が１種類の識別子又は複数種類の識別子の組み合わせにかかわらず０（零元）とされてもよい。これにより、後に、選択可能なプロトコルを増加させたり、論理式を構成する命題変数や論理記号を増加させたりする必要が生じた場合であっても、予備領域にそれらの増加分を割り当てればシステムの設定を変更することなく、これらの増加を行うことができる。
【０３５９】  また、予備領域とされたベクトルw(λ)→（第１部分対応情報）をすべての要素が零元のベクトル（零ベクトル）とした場合、当該予備領域を含む属性情報VSET1に対応する第１情報は、当該予備領域に何らかの値が入れられた更新後の第１情報に対して上位互換性を持つ。つまり、属性情報VSET1や条件情報VSET2の予備領域に何らかの値が与えられることで属性情報VSET1や条件情報VSET2が更新されたとしても、更新前に正しい復号が行われたのであれば、更新前の属性情報VSET1に対応する第１情報と更新後の条件情報VSET2に対応する第２情報とによって正しい復号が行われる。更新後の条件情報VSET2の予備領域に入れられた値にかかわらず、属性情報VSET1及び条件情報VSET2の予備領域同士の内積は０になるからである。同様な理由により、予備領域とされたv(λ)→（第２部分対応情報）をすべての要素が零元のベクトル（零ベクトル）とした場合、当該予備領域を含む条件情報VSET2に対応する第２情報は、当該予備領域に何らかの値が入れられた更新後の第２情報に対して上位互換性を持つ。
【０３６０】  属性情報VSET1の予備領域とされたベクトルw(λ)→を零ベクトルとしておき、かつ、条件情報VSET2の予備領域とされたベクトルv(λ)→を零元以外の要素を含むベクトルとしておいた場合、当該予備領域を含む属性情報VSET1に対応する第１情報は、当該予備領域に何らかの値が入れられた更新後の第１情報に対して上位互換性を持つが、当該予備領域を含む条件情報VSET2に対応する第２情報は、当該予備領域に何らかの値が入れられた更新後の第２情報に対して上位互換性を持たない。逆に、条件情報VSET2の予備領域とされたベクトルv(λ)→を零ベクトルとしておき、かつ、属性情報VSET1の予備領域とされたベクトルw(λ)→を零元以外の要素を含むベクトルとしておいた場合、当該予備領域を含む条件情報VSET2に対応する第２情報は、当該予備領域に何らかの値が入れられた更新後の第２情報に対して上位互換性を持つが、当該予備領域を含む属性情報VSET1に対応する第１情報は、当該予備領域に何らかの値が入れられた更新後の第１情報に対して上位互換性を持たない。このように、予備領域の値をどのように設定しておくかに応じ、更新前後での上位互換性を変化させることができる。
【０３６１】  〔第４実施形態〕  次に、本発明の第４実施形態を説明する。第４実施形態は、第１情報が属性情報VSET1に対応する暗号文であり、第２情報が条件情報VSET2に対応する鍵情報であり、送信者装置が暗号化を行い、受信者装置が復号を行う形態である。このような形態は、例えば、関数暗号方式を応用したプロトコルが、Timed-Release暗号プロトコル、Forward Secure暗号プロトコル、Key Insulated暗号プロトコル若しくはCCA2安全暗号プロトコル、又は、その組み合わせである場合などに適用できる。また、本形態ではKP方式を用いる。
【０３６２】  ＜構成＞  図３５は、第４実施形態の関数暗号応用システム４の全体構成を説明するためのブロック図である。図３５に示すように、本形態の関数暗号応用システム４は、ネットワーク１４０に接続された、送信者装置４１０（情報出力装置）と受信者装置４２０（情報処理装置）と鍵生成装置４３０とを有する。なお、説明の便宜上、図３５には、送信者装置４１０と受信者装置４２０と鍵生成装置４３０とが１個ずつ表記されているが、２個以上の送信者装置４１０や受信者装置４２０や鍵生成装置４３０が存在してもよい。
【０３６３】  ［送信者装置４１０（情報出力装置）］  図３６は、図３５の送信者装置４１０の構成を説明するためのブロック図である。  図３６に示すように、本形態の送信者装置４１０は、一時メモリ１１１ａと、記憶部１１１ｃと、入力部１１２と、制御部１１３と、識別子特定部４１４ａと、属性情報設定部４１４ｂ（対応情報設定部）と、暗号化部４１４ｃと、通信部１１５とを有する。
【０３６４】  送信者装置４１０は、例えば、CPU(central processing unit)、RAM(random-access memory)、ROM(read-only memory)等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。すなわち、制御部１１３、識別子特定部４１４ａ、属性情報設定部４１４ｂ及び暗号化部４１４ｃは、例えば、CPUが所定のプログラムを実行することで構成される処理部である。また、送信者装置４１０の処理部の少なくとも一部が集積回路であってもよい。また、一時メモリ１１１ａや記憶部１１１ｃは、例えば、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。また、入力部１１２は、例えば、キーボード、マウス、入力ポート等であり、通信部１１５は、例えば、モデム、LANカード等の通信装置である。
【０３６５】  また、送信者装置４１０は、制御部１１３の制御のもと各処理を実行する。また、以下では説明を省略するが、送信者装置４１０の各処理部から出力されたデータや通信部１１５で受信されたデータは、逐一、一時メモリ１１１ａに格納される。一時メモリ１１１ａに格納されたデータは、必要に応じて読み出され、送信者装置４１０の各処理部に入力されてその処理に利用される。
【０３６６】  ［受信者装置４２０（情報処理装置）］  図３７は、図３５の受信者装置４２０の構成を説明するためのブロック図である。  図３７に示すように、本形態の受信者装置４２０は、一時メモリ１２１ａと、記憶部４２１ｂと、制御部１２３と、識別子特定部４２４ａと、条件情報生成部４２４ｃと、鍵生成処理部４２４ｄと、復号部４２４ｅと、通信部１２５とを有する。なお、図面表記の便宜上、図３７には、通信部１２５を示すブロックが２つ表記されているが、これは別個の通信部１２５が２つ必要なことを意味しない。
【０３６７】  受信者装置４２０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。すなわち、制御部１２３、識別子特定部４２４ａ、条件情報生成部４２４ｃ、鍵生成処理部４２４ｄ及び復号部４２４ｅは、例えば、CPUが所定のプログラムを実行することで構成される処理部である。また、受信者装置４２０の処理部の少なくとも一部が集積回路であってもよい。また、一時メモリ１２１ａや記憶部４２１ｂは、例えば、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。また、通信部１１５は、例えば、モデム、LANカード等の通信装置である。
【０３６８】  また、受信者装置４２０は、制御部１２３の制御のもと各処理を実行する。また、以下では説明を省略するが、受信者装置４２０の各処理部から出力されたデータや通信部１２５で受信されたデータは、逐一、一時メモリ１２１ａに格納される。一時メモリ１２１ａに格納されたデータは、必要に応じて読み出され、受信者装置４２０の各処理部に入力されてその処理に利用される。
【０３６９】  ［鍵生成装置４３０］  図３８は、図３５の鍵生成装置４３０の構成を説明するためのブロック図である。  図３８に示すように、本形態の鍵生成装置４３０は、一時メモリ１３１ａと、記憶部４３１ｂと、制御部１３３と、鍵生成部４３４と、通信部１３５とを有する。
【０３７０】  鍵生成装置４３０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。すなわち、制御部１３３及び鍵生成部４３４は、例えば、CPUが所定のプログラムを実行することで構成される処理部である。また、鍵生成装置４３０の処理部の少なくとも一部が集積回路であってもよい。また、一時メモリ１３１ａや記憶部４３１ｂは、例えば、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。また、通信部１３５は、例えば、モデム、LANカード等の通信装置である。
【０３７１】  また、鍵生成装置４３０は、制御部１３３の制御のもと各処理を実行する。また、以下では説明を省略するが、鍵生成装置４３０の各処理部から出力されたデータや通信部１３５で受信されたデータは、逐一、一時メモリ１３１ａに格納される。一時メモリ１３１ａに格納されたデータは、必要に応じて読み出され、鍵生成装置４３０の各処理部に入力されてその処理に利用される。
【０３７２】  ＜事前設定＞  次に、本形態の関数暗号応用システム４の事前設定を説明する。
【０３７３】  ［特定情報］  図３９Ａ及び図３９Ｂは、第４実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【０３７４】  図３９Ａの例では、プロトコルごとに特定情報PIが割り当てられている。すなわち、この例では、特定情報PI=0に対してTimed-Release暗号プロトコルが割り当てられ、特定情報PI=1に対してForward Secure暗号プロトコルが割り当てられ、特定情報PI=2に対してKey Insulated暗号プロトコルが割り当てられ、特定情報PI=3に対してCCA2安全暗号プロトコルが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせを特定する。
【０３７５】  一方、図３９Ｂの例では、プロトコルごとに特定情報PIが割り当てられているほか、２種類以上のプロトコルの組み合わせに対しても特定情報PIが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルの組み合わせに対応する特定情報PIを特定する。
【０３７６】  なお、図３９に示した特定情報PIは一例であり、その他の方法によって１種類以上のプロトコルに対応する特定情報PIが特定されてもよい。
【０３７７】  ［識別子］  図４０Ａ，図４０Ｂ及び図４１は、第４実施形態において、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。なお、本形態の識別子ID(λ)は有限体Fqの元を要素とするn(λ)次元ベクトルである。  図４０Ａの例では、選択可能なプロトコルごとに識別子ID(λ)が割り当てられる。
【０３７８】  選択されたプロトコルに割り当てられた識別子ID(λ)には、そのプロトコルに定められた規則に従った値が入力される。例えば、Timed-Release暗号プロトコルが選択された場合には、未来の時点を特定する情報（日時やカウント値などに対応するn(λ)次元ベクトル）が識別子ID(1)に入力される。なお、「未来の時点」の一例は、第１情報の生成時点よりも未来の時点である。また、例えば、Forward Secure暗号プロトコルやKey Insulated暗号プロトコルが選択された場合には、受信者装置４２０やその利用者の固有識別子（メールアドレスや電話番号やMACアドレスなど）と現在時点を含む時間区間（日時区間やカウント値区間など）との組み合わせで定まる値（n(λ)次元ベクトル）が識別子ID(2)や識別子ID(3)に入力される。なお、「現在時点」の一例は、第１情報の生成時点である。また、例えば、CCA2安全暗号プロトコルが選択された場合には、n(λ)次元ベクトルである使い捨て情報（ランダム値を要素とするランダムベクトル）が識別子ID(4)に入力される。
【０３７９】  一方、選択されなかったプロトコルに割り当てられた識別子ID(λ)には、n(λ)次元ベクトルである定数(const.)が入力される。例えば、Timed-Release暗号プロトコルのみが選択された場合には、未来の時点を特定する情報が識別子ID(1)に入力され、その他の識別子ID(2),ID(3),ID(4)には定数(const.)が入力される。なお、定数(const.)の例はn(λ)次元の零ベクトルである。なお、各識別子ID(λ)に入力される定数(const.)は同一値であってもよいし、異なる値であってもよい。
【０３８０】  また、複数のプロトコルの組み合わせが選択された場合には、その組み合わせを構成する複数のプロトコルが選択されたものとして識別子ID(λ)の値が決定される。例えば、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、受信者装置４２０やその利用者の固有識別子と現在時点を含む時間区間との組み合わせで定まる値が識別子ID(2)に入力され、使い捨て情報が識別子ID(4)に入力され、その他の識別子ID(1)，ID(3)には定数(const.)が入力される。
【０３８１】  図４０（Ｂ）の例では、選択されたプロトコルのみに識別子ID(λ)が割り当てられる。例えば、Timed-Release暗号プロトコルのみが選択された場合には、未来の時点を特定する情報を示す識別子ID(1)のみが割り当てられる。また、例えば、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、受信者装置４２０やその利用者の固有識別子と現在時点を含む時間区間との組み合わせで定まる値を示す識別子ID(2)と、使い捨て情報を示す識別子ID(4)とのみが割り当てられる。
【０３８２】  図４１の例では、選択可能なプロトコル及びプロトコルの組み合わせごとに識別子ID(λ)が割り当てられる。選択されたプロトコル及びプロトコルの組み合わせに割り当てられた識別子ID(λ)には、選択されたプロトコル又は組み合わせを構成する各プロトコルに定められた各規則に従った値が入力され、選択されなかったプロトコルや組み合わせに割り当てられた識別子ID(λ)には定数(const.)が入力される。例えば、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、受信者装置４２０やその利用者の固有識別子と現在時点を含む時間区間と使い捨て情報との組み合わせで定まる値が識別子ID(6)に入力され、その他の識別子ID(λ)には定数(const.)が入力される。
【０３８３】  また、上述の識別子の決定方法は一例に過ぎず、その他の方法で識別子が特定してもよい。例えば、図４１の例の変形として、選択されたプロトコル及びプロトコルの組み合わせのみに識別子ID(λ)が割り当てられてもよい。また、上述のように得られた各識別子ID(λ)の組み合わせ（例えばビット結合）によって１つの識別子を構成してもよい。
【０３８４】  ［属性情報（第１対応情報）］  図４２Ａは、属性情報VSET1のデータ構成を説明するための図である。  本形態では、各識別子ID(λ)をn(λ)次元ベクトルw(λ)→（第１部分対応情報）とし（w(λ)→=ID(λ)）、n(λ)次元ベクトルw(λ)→（λ=1,...,Ψ）の集合{w(λ)→}λ=1,...,Ψを属性情報VSET1とする。
【０３８５】  ［条件情報（第２対応情報）］  図４２Ｂは、条件情報VSET2のデータ構成を説明するための図である。  本形態では、各識別子ID’(λ)をn(λ)次元ベクトルv(λ)→（第２部分対応情報）とし（v(λ)→=ID’(λ)）、n(λ)次元ベクトルv(λ)→（λ=1,...,Ψ）の集合{v(λ)→}λ=1,...,Ψを条件情報VSET2とする。
【０３８６】  識別子ID’(λ)は、受信者装置４２０側で想定された所定値の識別子ID(λ)に対応するn(λ)次元ベクトルである。すなわち、識別子ID’(λ)と想定された所定値の識別子ID(λ)との内積が０となるように識別子ID’(λ)の値が定められる。例えば、図４０Ａの例によって識別子ID(λ)が設定される場合には、図４０Ａの規則に従って定められる想定された所定値の識別子ID(1), ID(2), ID(3), ID(4)に対して、内積ID(1)・ID’(1)=0, ID(2)・ID’(2)=0, ID(3)・ID’(3)=0, ID(4)・ID’(4)=0となる識別子ID’(λ)が定められる。
【０３８７】  なお「想定された所定値」は受信者装置４２０側で想定されたプロトコル及び／又は当該プロトコルの組み合わせからなる条件に対応する。具体的には、「想定された所定値」は受信者装置４２０側で想定された標準形論理式のリテラルに対応する。例えば、標準形論理式のλ=1に対応するリテラルを「識別子ID(1)は所定時点で復号が可能となるTimed-Release暗号プロトコルに対応する値をとる」という命題の命題変数PRO(1)又はその否定¬PRO(1)とする場合には、所定時点で復号が可能となるTimed-Release暗号プロトコルに対応する値の識別子ID(1)に対して内積ID(1)・ID’(1)=0となる識別子ID’(1)が設定される。例えば、標準形論理式のλ=2に対応するリテラルを「識別子ID(1)はForward Secure暗号プロトコルが選択されないことに対応する値をとる」という命題の命題変数PRO(2)又はその否定¬PRO(2)とする場合には、Forward Secure暗号プロトコルが選択されないことに対応する識別子ID(2)=const.に対して内積ID(2)・ID’(2)=0となる識別子ID’(2)が設定される。このような各識別子ID’(λ)を特定するための規則は予め定められ、受信者装置４２０の識別子特定部４２４ａに設定される。また、前述のように、内積ID(λ)・ID’(λ)が0の場合に標準形論理式のリテラルが真となるのか偽となるか、すなわち、リテラルを命題変数PRO(λ)とするのかその否定¬PRO(λ)とするのかは、ラベル付き行列LMT(MT,LAB)のラベルLAB(λ)によって指定できる。
【０３８８】  ［受信者装置４２０で予め定められた論理式］  本形態では、受信者装置４２０の鍵生成処理部４２４ｄ及び復号部４２４ｅに、いくつかのプロトコル及び／又は当該プロトコルの組み合わせからなる条件に対応する標準形論理式（例えば、PRO(1)∧PRO(2)∨¬PRO(3)）が予め設定されている。言い換えると、当該標準形論理式に対応するラベル付き行列LMT(MT,LAB)が予め鍵生成処理部４２４ｄ及び復号部４２４ｅに定められている。ただし、標準形論理式のリテラルであるPRO(λ)や¬PRO(λ)を特定するPRO(λ)やラベルLAB(λ)を特定するn(λ)次元ベクトルv(λ)→の値は定められていない。すなわち、予めラベルがLAB(λ)=v(λ)→であるかLAB(λ)=¬v(λ)→であるかは定められているが、n(λ)次元ベクトルv(λ)→の値は定められていない。識別子ID’(λ)に対応するn(λ)次元ベクトルv(λ)→が定められることでPRO(λ)やラベルLAB(λ)を特定するn(λ)次元ベクトルv(λ)→の値が定まり、標準形論理式やラベル付き行列LMT(MT,LAB)が特定できる。
【０３８９】  ［平文］  本形態では、送信者装置４１０の記憶部１１１ｃに暗号化対象の平文Mtが格納される。
【０３９０】  ［マスター秘密情報］  本形態の鍵生成装置４３０の記憶部４３１ｂには、関数暗号方式のマスター秘密情報MSK（［Setup(1sec，(Ψ;n(1),...,n(Ψ)))：セットアップ］参照）が格納される。
【０３９１】  ＜処理＞  図４３Ａは、第４実施形態の暗号化処理を説明するためのフローチャートである。図４３Ｂは、第４実施形態の鍵情報生成処理を説明するためのフローチャートである。また、図４４は、第４実施形態の復号処理を説明するためのフローチャートである。以下、これらの図を用いて本形態の処理を説明する。
【０３９２】  ［暗号化処理］  本形態の暗号化処理では、まず、実行する関数暗号方式を応用した１種類以上のプロトコルを特定するための特定情報PIが、送信者装置４１０（図３６）の入力部１１２に入力される（ステップＳ４１１）。例えば、特定情報PIが図３９Ａように定まるのであれば、利用者に選択された１種類のプロトコルに対応する特定情報PI、又は、利用者に選択された２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせが入力部１１２に入力される。また、例えば、特定情報PIが図３９Ｂように定まるのであれば、利用者に選択された１種類のプロトコル又は２種類以上のプロトコルに対応する特定情報PIが入力部１１２に入力される。
【０３９３】  入力部１１２に入力された特定情報PIは、識別子特定部４１４ａに入力される。識別子特定部４１４ａは、当該特定情報PIによって特定されるプロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って（図４０Ａ，図４０Ｂ及び図４１等参照）、当該プロトコルごと又は当該プロトコルの組み合わせごとに識別子ID(λ)を特定し、特定した１種類以上の当該識別子ID(λ)を出力する（ステップＳ４１２）。
【０３９４】  識別子特定部４１４ａから出力された１種類以上の識別子ID(λ)は属性情報設定部４１４ｂに入力される。属性情報設定部４１４ｂは、１種類の当該識別子ID(λ)又は２種類以上の当該識別子ID(λ)の組み合わせに対して定まる１つの属性情報VSET1={w(λ)→}λ=1,...,Ψ（特定の第１対応情報）を設定し、設定した当該属性情報VSET1を出力する（ステップＳ４１３）。
【０３９５】  属性情報設定部４１４ｂから出力された属性情報VSET1は、暗号化部４１４ｃに入力される。暗号化部４１４ｃは、記憶部１１１ｃから平文Mtを読み出し、属性情報VSET1と平文Mtとを関数暗号方式の暗号化関数に入力し、平文Mtの暗号文Ctを生成する（ステップＳ４１４）。関数暗号方式の暗号化関数の一例は前述の式(113)(114)(119)で特定される式(121)である（C=Ct，M=Mt）。
【０３９６】  生成された暗号文Ctは通信部１１５に送られる。通信部１１５（出力部）は、当該暗号文Ct（第１情報）をネットワーク１４０経由で受信者装置４２０に送信する（ステップＳ４１５）。
【０３９７】  ［復号処理・鍵情報生成処理］  本形態の復号処理では、まず、受信者装置４２０（図３７）の通信部１２５が暗号文Ct（第１情報）を受信する（ステップＳ４２１）。
【０３９８】  これを契機とし、識別子特定部４２４ａが、プロトコルごと又は当該プロトコルの組み合わせごとに、当該プロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って、前述した受信者装置４２０で予め定められた標準形論理式に用いられる１種類以上の識別子ID'(λ)を特定する（ステップＳ４２２）。
【０３９９】  識別子特定部４２４ａで特定された１種類以上の識別子ID'(λ)は、条件情報生成部４２４ｃに入力される。条件情報生成部４２４ｃは、      v(λ)→=ID’(λ)        …(138)とし、n(λ)次元ベクトルv(λ)→（λ=1,...,Ψ）の集合{v(λ)→}λ=1,...,Ψを条件情報VSET2（特定の第２対応情報）とし、当該条件情報VSET2を出力する（ステップＳ４２３）。
【０４００】  条件情報生成部４２４ｃから出力された条件情報VSET2は、鍵生成処理部４２４ｄに入力される。鍵生成処理部４２４ｄは、条件情報VSET2が含むn(λ)次元ベクトルv(λ)→を用いてラベルLAB(λ)を特定し、ラベル付き行列LMT(MT,LAB)を定める（ステップＳ４２４）。ラベルLAB(λ)が特定されたラベル付き行列LMT(MT,LAB)は通信部１２５に送られる。通信部１２５は、ネットワーク１４０経由で当該ラベル付き行列LMT(MT,LAB)を鍵生成装置４３０に送信し、当該ラベル付き行列LMT(MT,LAB)に対応する鍵情報SKSの生成を依頼する（ステップＳ４２５）。
【０４０１】  本形態の鍵情報生成処理では、まず、鍵生成装置４３０（図３８）の通信部１３５が上記の条件情報VSET2に対応するラベル付き行列LMT(MT,LAB)を受信する（ステップＳ４３１）。通信部１３５で受信されたラベル付き行列LMT(MT,LAB)は、鍵生成部４３４に入力される。鍵生成部４３４は、記憶部４３１ｂからマスター秘密情報MSKを読み出し、マスター秘密情報MSKとラベル付き行列LMT(MT,LAB)とを用い、ラベル付き行列LMT(MT,LAB)に対応する鍵情報SKSを生成して出力する（ステップＳ４３２）。例えば、鍵生成部４３４は、式(95)-(99)(106)(108)(109)によって特定される式(112)の鍵情報SKSを生成して出力する。例えば、鍵生成部４３４は、有限体Fqの元を要素とするCOL次元ベクトルCV→∈FqCOL（式(36)）を任意に選択し、行列MT（式(94)）とCOL次元ベクトルCV→とを用い、式(99)に従ってシェア情報share(λ)∈Fq（λ=1,...,Ψ）を計算し、COL次元ベクトルCV→を用いて式(97)に従って秘密情報SEを生成し、式(106)に従って鍵情報D*(0)を生成し、ラベル情報LAB(λ)（λ=1,...,Ψ）を用いて鍵生成部１３６ｄは(108)(109)に従って鍵情報D*(λ)（λ=1,...,Ψ）を生成し、式(112)に従って鍵情報SKSを生成する。生成された鍵情報SKSは通信部１３５に送られ、通信部１３５は当該鍵情報SKSをネットワーク１４０経由で受信者装置４２０に送信する（ステップＳ４３３）。
【０４０２】  受信者装置４２０（図３７）の通信部１２５は、送信された鍵情報SKSを受信し、鍵生成処理部４２４ｄに送る。鍵生成処理部４２４ｄは、当該鍵情報SKS（第２情報）を記憶部４２１ｂに格納する（ステップＳ４２６）。
【０４０３】  次に、ステップＳ４２１で通信部１２５が受信した暗号文Ct（第１情報）と、記憶部４２１ｂから読み出された鍵情報SKS（第２情報）とが復号部４２４ｅに入力される。復号部４２４ｅは、暗号文Ct（第１情報）と鍵情報SKS（第２情報）を関数暗号方式の復号関数に入力して復号処理を実行し、それによって得られた復号結果Mrを出力する（ステップＳ４２７）。例えば、復号部４２４ｅは、C=Ct（式(121)）及び鍵情報SKS（式(112)）を用い、前述の(Dec-1)-(Dec-4)に従った処理を行う（式(122)(128)）。
【０４０４】  ここで、暗号文Ct（第１情報）に対応する属性情報VSET1と鍵情報SKS（第２情報）に対応する条件情報VSET2とが鍵生成処理部４２４ｄに設定されていた標準形論理式の真理値を真にする場合にはGV→∈span<MTTFV>となり、正しい復号結果が得られ、復号結果Mr=Mt（Mt=M'=M）となる。一方、当該属性情報VSET1と当該条件情報VSET2とが鍵生成処理部４２４ｄに設定されていた標準形論理式の真理値を偽にする場合にはGV→∈span<MTTFV>とならず、正しい復号結果が得られない。これは、受信者装置４２０で予め定められたプロトコル及び／又は当該プロトコルの組み合わせからなる条件に合致する暗号文Ctのみが正しく復号されることを意味する。
【０４０５】  以上のように、本形態では、送信者装置４１０が使用するプロトコルやプロトコルの組み合わせを選択でき、受信者装置４２０において復号可能となる暗号文のプロトコルやプロトコルの組み合わせの条件を設定しておくことができる。そして、送信者装置４１０で選択されたプロトコルやプロトコルの組み合わせが、受信者装置４２０に設定された条件に合致した場合にのみ、受信者装置４２０は送信された暗号文を正しく復号できる。また、受信者装置４２０において復号可能となる暗号文のプロトコルやプロトコルの組み合わせの条件は、論理和や論理積や否定を自由に組み合わせて設定できる。特に、受信者装置４２０で論理和を含む条件を設定しておけば、受信者装置４２０が送信者装置４１０で選択されたプロトコル等に応じて鍵情報を使い分ける必要がなくなる。
【０４０６】  〔第４実施形態の変形例１〕  前述のように、属性情報VSET1及び条件情報VSET2の一部の領域を予備領域としておいてもよい。すなわち、属性情報VSET1が含むベクトル（第１部分対応情報）及び条件情報VSET2が含むベクトル（第２部分対応情報）の少なくとも一部を予備領域としておいてもよい。これにより、後に、選択可能なプロトコルを増加させたり、論理式を示す多項式の項を増加させたりする必要が生じた場合であっても、予備領域にそれらの増加分を割り当てればシステムの設定を変更することなく、これらの増加を行うことができる。
【０４０７】  図４５Ａ及び図４５Ｂは、属性情報VSET1及び条件情報VSET2の一部の領域を予備領域とした例を説明するための図である。
【０４０８】  図４５Ａ及び図４５Ｂでは、属性情報VSETが含むベクトルv(Ψ-s)→,...,v(Ψ)→及び条件情報VSET2が含むベクトルw(Ψ-s)→,...,w(Ψ)→が予備領域とされる。なお、sは１以上Ψ未満の整数定数である。この例では、特定情報PIの値にかかわらず、ベクトルv(Ψ-s)→,...,v(Ψ)→がそれぞれ定数要素からなる定数ベクトルconst.(Ψ-s),...,const.(Ψ)とされ、ベクトルw(Ψ-s)→,...,w(Ψ)→がそれぞれ定数要素からなる定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)とされる。これらの予備領域は、予備領域のベクトルw(λ)→と予備領域のベクトルv(λ)→との内積が特定情報PIの値にかかわらず０となるように設定されている。例えば、定数ベクトルconst.(Ψ-s),...,const.(Ψ)がすべて零ベクトルであってもよいし、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)がすべて零ベクトルであってもよい。また、定数ベクトルconst.(Ψ-s),...,const.(Ψ)がすべて零ベクトルであって、なおかつ、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)の一部が零ベクトル以外であってもよい。また、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)がすべて零ベクトルであって、なおかつ、定数ベクトルconst.(Ψ-s),...,const.(Ψ)の少なくとも一部が零ベクトル以外であってもよい。定数ベクトルconst.(Ψ-s),...,const.(Ψ)の少なくとも一部が零ベクトル以外であって、なおかつ、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)の一部が零ベクトル以外であって、なおかつ、予備領域のベクトルw(λ)→と予備領域のベクトルv(λ)→との内積が０となってもよい。予備領域に対応するλでのラベルがLAB(λ)=v(λ)→である場合には特定情報PIの値にかかわらずLIT(λ)=1となり、予備領域に対応するλでのラベルがLAB(λ)=¬v(λ)→である場合には特定情報PIの値にかかわらずLIT(λ)=0となる（式(101)-(103)）。
【０４０９】  〔第５実施形態〕  次に、本発明の第５実施形態を説明する。  第５実施形態は、第１情報が属性情報VSET1に対応する鍵情報であり、第２情報が条件情報VSET2に対応する暗号文であり、送信者装置が鍵情報を出力し、受信者装置に格納された暗号文が復号される形態である。このような形態は、関数暗号方式を応用したプロトコルが、例えば、Keyword検索暗号プロトコルである場合、又は、Keyword検索暗号プロトコルとForward Secure暗号プロトコル、Key Insulated暗号プロトコル若しくはCCA2安全暗号プロトコルとの組み合わせである場合などに適用できる。また、本形態ではCP方式を用いる。以下では、第４実施形態との相違点を中心に説明し、第４実施形態と共通する事項については説明を簡略化する。
【０４１０】  ＜構成＞  図３５に示すように、本形態の関数暗号応用システム５は、ネットワーク１４０に接続された、送信者装置５１０（情報出力装置）と受信者装置５２０（情報処理装置）と鍵生成装置４３０とを有する。なお、説明の便宜上、図３５には、送信者装置５１０と受信者装置５２０と鍵生成装置４３０とが１個ずつ表記されているが、２個以上の送信者装置５１０や受信者装置５２０や鍵生成装置４３０が存在してもよい。
【０４１１】  ［送信者装置５１０（情報出力装置）］  図４６は、本形態の送信者装置５１０の構成を説明するためのブロック図である。なお、本形態において、第４実施形態と共通する部分については第４実施形態と同じ符号を付して説明を省略する（以下、同様）。
【０４１２】  図４６に示すように、本形態の送信者装置５１０は、一時メモリ１１１ａと、記憶部５１１ｄと、入力部１１２と、制御部１１３と、識別子特定部４１４ａと、属性情報設定部４１４ｂと、鍵生成処理部５１４ｄと、通信部１１５とを有する。
【０４１３】  送信者装置５１０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、鍵生成処理部５１４ｄは、CPUが所定のプログラムを実行することで構成される処理部や集積回路などであり、記憶部５１１ｄは、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。
【０４１４】  ［受信者装置５２０（情報処理装置）］  図４７は、本形態の受信者装置５２０の構成を説明するためのブロック図である。  図４７に示すように、本形態の受信者装置５２０は、一時メモリ１２１ａと、記憶部４２１ｂ，５２１ｃと、制御部１２３と、識別子特定部５２４ａと、条件情報生成部５２４ｃと、暗号化部５２４ｄと、復号部５２４ｅと、通信部１２５とを有する。
【０４１５】  受信者装置５２０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、暗号化部５２４ｄは、CPUが所定のプログラムを実行することで構成される処理部や集積回路などであり、記憶部４２１ｂ，５２１ｃは、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。
【０４１６】  ＜事前設定＞  次に、本形態の関数暗号応用システム５の事前設定を説明する。
【０４１７】  ［特定情報］  図４８Ａ及び図４８Ｂは、第５実施形態における１種類以上のプロトコルを特定するための特定情報PIとプロトコルとの対応関係を例示した図である。
【０４１８】  図４８Ａの例では、プロトコルごとに特定情報PIが割り当てられている。すなわち、この例では、特定情報PI=0に対してKeyword検索暗号プロトコルが割り当てられ、特定情報PI=1に対してForward Secure暗号プロトコルが割り当てられ、特定情報PI=2に対してKey Insulated暗号プロトコルが割り当てられ、特定情報PI=3に対してCCA2安全暗号プロトコルが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせを特定する。
【０４１９】  一方、図４８Ｂの例では、プロトコルごとに特定情報PIが割り当てられているほか、２種類以上のプロトコルの組み合わせに対しても特定情報PIが割り当てられている。この例で何れかのプロトコルを単体で選択する場合には、選択するプロトコルに対応する１つの特定情報PIを特定し、２種類以上のプロトコルの組み合わせを選択する場合には、選択する２種類以上のプロトコルの組み合わせに対応する特定情報PIを特定する。
【０４２０】  なお、図４８Ａ及び図４８Ｂに示した特定情報PIは一例であり、その他の方法によって１種類以上のプロトコルに対応する特定情報PIが特定されてもよい。
【０４２１】  ［識別子］  図４９Ａ及び図４９Ｂ及び図５０は、第５実施形態おいて、プロトコルごと又は当該プロトコルの組み合わせごとに定められた、識別子ID(λ)を特定するための規則の一例を説明するための図である。なお、本形態の識別子ID(λ)は有限体Fqの元を要素とするn(λ)次元ベクトルである。
【０４２２】  図４９Ａの例では、選択可能なプロトコルごとに識別子ID(λ)が割り当てられる。選択されたプロトコルに割り当てられた識別子ID(λ)には、そのプロトコルに定められた規則に従った値が入力される。例えば、Keyword検索暗号プロトコルが選択された場合には、検索用キーワードに対応するn(λ)次元ベクトルが識別子ID(1)に入力される。一方、選択されなかったプロトコルに割り当てられた識別子ID(λ)には、n(λ)次元ベクトルである定数(const.)が入力される。また、複数のプロトコルの組み合わせが選択された場合には、その組み合わせを構成する複数のプロトコルが選択されたものとして識別子ID(λ)の値が決定される。例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードに対応するn(λ)次元ベクトルが識別子ID(1)に入力され、n(λ)次元ベクトルである使い捨て情報が識別子ID(4)に入力され、その他の識別子ID(2)，ID(3)にはn(λ)次元ベクトルである定数(const.)が入力される。
【０４２３】  図４９Ｂの例では、選択されたプロトコルのみに識別子ID(λ)が割り当てられる。例えば、Keyword検索暗号プロトコルが選択された場合には、検索用キーワードを示すn(λ)次元ベクトルである識別子ID(1)のみが割り当てられる。また、例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードを示すn(λ)次元ベクトルである識別子ID(1)と、n(λ)次元ベクトルである使い捨て情報を示す識別子ID(3)とのみが割り当てられる。
【０４２４】  図５０の例では、選択可能なプロトコル及びプロトコルの組み合わせごとに識別子ID(λ)が割り当てられる。選択されたプロトコル及びプロトコルの組み合わせに割り当てられた識別子ID(λ)には、選択されたプロトコル又は組み合わせを構成する各プロトコルに定められた各規則に従った値が入力され、選択されなかったプロトコルや組み合わせに割り当てられた識別子ID(λ)にはn(λ)次元ベクトルである定数(const.)が入力される。例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードと使い捨て情報との組み合わせで定まるn(λ)次元ベクトルが識別子ID(3)に入力され、その他の識別子ID(λ)にはn(λ)次元ベクトルである定数(const.)が入力される。
【０４２５】  また、上述の識別子の決定方法は一例に過ぎず、その他の方法で識別子が特定してもよい。例えば、図５０の例の変形として、選択されたプロトコル及びプロトコルの組み合わせのみに識別子ID(λ)が割り当てられてもよい。
【０４２６】  ［属性情報（第１対応情報）］  第４実施形態と同様であるため説明を省略する。
【０４２７】  ［条件情報（第２対応情報）］  本形態でも、各識別子ID’(λ)をn(λ)次元ベクトルv(λ)→（第２部分対応情報）とし（v(λ)→=ID’(λ)）、n(λ)次元ベクトルv(λ)→（λ=1,...,Ψ）の集合{v(λ)→}λ=1,...,Ψを条件情報VSET2とする。
【０４２８】  識別子ID’(λ)は、想定された所定値の識別子ID(λ)に対応するn(λ)次元ベクトルである。すなわち、識別子ID’(λ)と想定された所定値の識別子ID(λ)との内積が０となるように識別子ID’(λ)の値が定められる。例えば、図４９Ａの例によって識別子ID(λ)が設定される場合には、図４９Ａの規則に従って定められる想定された所定値の識別子ID(1), ID(2), ID(3), ID(4)に対して、内積ID(1)・ID’(1)=0, ID(2)・ID’(2)=0, ID(3)・ID’(3)=0, ID(4)・ID’(4)=0となる識別子ID’(λ)が定められる。
【０４２９】  なお「想定された所定値」は受信者装置５２０側で想定されたプロトコル及び／又は当該プロトコルの組み合わせ及び／又はキーワードからなる条件に対応する。具体的には、「想定された所定値」は受信者装置５２０側で想定された標準形論理式のリテラルに対応する。例えば、標準形論理式のλ=1に対応するリテラルを「識別子ID(1)はキーワードKWrに対応する値をとる」という命題の命題変数PRO(1)とする場合には、キーワードKWrに対応する識別子ID(1)に対して内積ID(1)・ID’(1)=0となる識別子ID’(1)が設定される。このような各識別子ID’(λ)を特定するための規則は予め定められ、受信者装置５２０の識別子特定部５２４ａに設定される。
【０４３０】  ［暗号化データベース（DB）］  図５１は、第５実施形態の暗号化DBの一例を説明するための図である。  図５１におけるMr1〜Mr99は、それぞれ、ドキュメントなどの検索対象情報であり、KWr1〜KWr9は、それぞれ単語などのキーワードであり、Trueは「真」を意味する「１」などのデータである。また、C(Mr1),...,C(Mr99)は、それぞれ、検索対象情報Mr1〜Mr99の暗号文である。暗号文C(Mr1),...,C(Mr99)の暗号化方式は、共通鍵暗号方式、公開鍵暗号方式、ＩＤベース暗号方式、関数暗号方式などどのようなものであってもよい。また、Cr(KWr1,True),...,Cr(KWr9,True)は、それぞれ、条件情報VSET2と平文Trueとを関数暗号方式の暗号化関数に入力して得られる関数暗号方式の暗号文（第２情報）である。暗号文Cr(KWr1,True),...,Cr(KWr9,True)は、それぞれ、キーワードKWr1〜KWr9にそれぞれ対応する各属性情報VSET1に対応する鍵情報を用いて正しく復号可能である。すなわち、例えば、キーワードKWr1に対応する属性情報VSET1と、暗号文Cr(KWr1,True)を暗号化するために用いた条件情報VSET2とは論理式の倫理値を真にする。
【０４３１】  暗号化DBは、検索対象情報（「Mr」と総称する）の暗号文C(Mr1),...,C(Mr99)に対し、それぞれ、対応するキーワードに対応する暗号文をCr(KWr1,True),...,Cr(KWr9,True)を対応付けたものである。例えば、検索対象情報Mr1に対応するキーワードがKWr1, KWr2, KWr3, KWr4である場合、検索対象情報Mr1の暗号文C(Mr1)と、キーワードKWr1, KWr2, KWr3, KWr4に対応する暗号文Cr(KWr1,True),Cr(KWr2,True),Cr(KWr3,True),Cr(KWr4,True)と、が対応付けられる。これにより、例えば、キーワードKWr1に対応する属性情報VSET1に対応する鍵情報を用いて暗号文Cr(KWr1,True)が正しく復号できたことをもって、検索対象情報Mr1の暗号文C(Mr1)を復号することなく、キーワードKWr1が検索対象情報Mr1に対応することを知ることができる。
【０４３２】  本形態では、このような暗号化DBが受信者装置５２０の記憶部５２１ｃに格納され、記憶部５２１ｃには、各キーワード（「KWr」と総称する）と平文Trueとが格納される。また、暗号化DBを構成する各キーワードKWrに対応する各暗号文Cr(KWr,True)は、後述のように順次更新される。
【０４３３】  ［送信者装置５１０で予め定められた論理式］  本形態では、送信者装置５１０の鍵生成処理部５１４ｄ及び受信者装置５２０の復号部５２４ｅに、いくつかのプロトコル及び／又は当該プロトコルの組み合わせ及び／又はキーワードからなる条件に対応する標準形論理式（例えば、PRO(1)∧PRO(2)∨¬PRO(3)）が予め設定されている。言い換えると、当該標準形論理式に対応するラベル付き行列LMT(MT,LAB)が予め鍵生成処理部５１４ｄ及び復号部５２４ｅに定められている。ただし、標準形論理式のリテラルであるPRO(λ)や¬PRO(λ)を特定するPRO(λ)やラベルLAB(λ)を特定するn(λ)次元ベクトルw(λ)→の値は定められていない。すなわち、予めラベルがLAB(λ)=w(λ)→であるかLAB(λ)=¬w(λ)→であるかは定められているが、n(λ)次元ベクトルw(λ)→の値は定められていない。なお、検索用キーワードに対応するn(λ)次元ベクトルw(λ)→に対応するラベル（図４９Ａの例ではλ＝１のラベル）はLAB(λ)=w(λ)→である。識別子ID(λ)に対応するn(λ)次元ベクトルw(λ)→が定められることでPRO(λ)やラベルLAB(λ)を特定するn(λ)次元ベクトルw(λ)→の値が定まり、標準形論理式やラベル付き行列LMT(MT,LAB)が特定できる。
【０４３４】  ［マスター秘密情報］  本形態の鍵生成装置４３０の記憶部４３１ｂには、関数暗号方式のマスター秘密情報MSK（［Setup(1sec，(Ψ;n(1),...,n(Ψ)))：セットアップ］参照）が格納される。
【０４３５】  ＜処理＞  図５２は、第５実施形態の検索依頼処理を説明するためのフローチャートである。図５３Ａは、第５実施形態の鍵情報生成処理を説明するためのフローチャートである。また、図５３Ｂは、第５実施形態の検索処理を説明するためのフローチャートである。以下、これらの図を用いて本形態の処理を説明する。
【０４３６】  ［検索依頼処理・鍵情報生成処理］  本形態の暗号化処理では、まず、実行する関数暗号方式を応用した１種類以上のプロトコルを特定するための特定情報PIと、検索用キーワードKWtとが、送信者装置５１０（図４６）の入力部１１２に入力される（ステップＳ５１１）。例えば、特定情報PIが図４８Ａように定まるのであれば、利用者に選択された１種類のプロトコルに対応する特定情報PI、又は、利用者に選択された２種類以上のプロトコルにそれぞれ対応する特定情報PIの組み合わせが入力部１１２に入力される。また、例えば、特定情報PIが図４８Ｂように定まるのであれば、利用者に選択された１種類のプロトコル又は２種類以上のプロトコルに対応する特定情報PIが入力部１１２に入力される。なお、本形態では、選択されるプロトコル又はプロトコルの組み合わせにKeyword検索暗号プロトコルが含まれるものとする。
【０４３７】  入力部１１２に入力された特定情報PIと検索用キーワードKWtとは、識別子特定部４１４ａに入力される。識別子特定部４１４ａは、当該特定情報PIによって特定されるプロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って（図４９Ａ，図４９Ｂ及び図５０等参照）、当該プロトコルごと又は当該プロトコルの組み合わせごとに、検索用キーワードKWtに対応する識別子ID(λ)を特定し、特定した１種類以上の当該識別子ID(λ)を出力する（ステップＳ５１２）。
【０４３８】  識別子特定部４１４ａから出力された１種類以上の識別子ID(λ)は属性情報設定部４１４ｂに入力される。属性情報設定部４１４ｂは、      w(λ)→=ID(λ)        …(139)とし、n(λ)次元ベクトルw(λ)→（λ=1,...,Ψ）の集合{w(λ)→}λ=1,...,Ψを属性情報VSET1（特定の第１対応情報）とし、当該属性情報VSET1を出力する（ステップＳ５１３）。
【０４３９】  属性情報設定部４１４ｂから出力された属性情報VSET1は、鍵生成処理部５１４ｄに入力される。鍵生成処理部５１４ｄは、属性情報VSET1が含むn(λ)次元ベクトルw(λ)→を用いてラベルLAB(λ)を特定し、ラベル付き行列LMT(MT,LAB)を定める（ステップＳ５１４）。ラベルLAB(λ)が特定されたラベル付き行列LMT(MT,LAB)は通信部１１５に送られる。通信部１１５は、ネットワーク１４０経由で当該ラベル付き行列LMT(MT,LAB)を鍵生成装置４３０に送信し、当該ラベル付き行列LMT(MT,LAB)に対応する鍵情報SKS（検索用キーワードKWtに対応する鍵情報SKS）の生成を依頼する（ステップＳ５１５）。
【０４４０】  本形態の鍵情報生成処理では、まず、鍵生成装置４３０（図３８）の通信部１３５が上記の属性情報VSET1に対応するラベル付き行列LMT(MT,LAB)を受信する（ステップＳ５３１）。通信部１３５で受信されたラベル付き行列LMT(MT,LAB)は、鍵生成部４３４に入力される。鍵生成部４３４は、記憶部４３１ｂからマスター秘密情報MSKを読み出し、マスター秘密情報MSKとラベル付き行列LMT(MT,LAB)とを用い、ラベル付き行列LMT(MT,LAB)に対応する鍵情報SKSを生成して出力する（ステップＳ５３２）。具体的な生成手順は、例えば、v(λ)→の代わりにw(λ)→が用いられる以外は第４実施形態と同様でよい。生成された鍵情報SKSは通信部１３５に送られ、通信部１３５は当該鍵情報SKSをネットワーク１４０経由で送信者装置５２０に送信する（ステップＳ５３３）。
【０４４１】  送信者装置５１０（図４６）の通信部１１５は鍵情報SKSを受信し、鍵生成処理部５１４ｄに送る。鍵生成処理部５１４ｄは当該鍵情報SKSを記憶部５１１ｄに格納する（ステップＳ５１６）。次に、記憶部５１１ｄから読み出された、検索用キーワードKWtに対応する鍵情報SKS（第１情報）は通信部１１５に送られ、そこからネットワーク１４０経由で受信者装置５２０に送信される（ステップＳ５１７）。
【０４４２】  ［検索処理］  本形態の検索処理では、まず、受信者装置５２０（図４７）の通信部１２５が、送信された検索用キーワードKWtに対応する鍵情報SKS（第１情報）を受信し、記憶部４２１ｂに格納する（ステップＳ５２１）。
【０４４３】  これを契機とし、識別子特定部５２４ａが、プロトコルごと又は当該プロトコルの組み合わせごとに定められた規則に従って、各検索対象情報Mrにそれぞれ対応する各キーワードKWrに対応する１種類以上の識別子ID'(λ)を特定する（ステップＳ５２２）。
【０４４４】  識別子特定部５２４ａでキーワードKWrごとに特定された１種類以上の識別子ID'(λ)は条件情報生成部５２４ｃに入力される。条件情報生成部５２４ｃは、各キーワードKWrに対し、それぞれ、      v(λ)→=ID’(λ)        …(140)とし、n(λ)次元ベクトルv(λ)→（λ=1,...,Ψ）の集合{v(λ)→}λ=1,...,Ψを条件情報VSET2（特定の第２対応情報）とし、各キーワードKWrにそれぞれ対応する各条件情報VSET2を出力する（ステップＳ５２３）。
【０４４５】  条件情報生成部５２４ｃから出力された各キーワードKWrに対する各条件情報VSET2は、暗号化部５２４ｄに入力される。暗号化部５２４ｄは、記憶部１１１ｃから平文Trueを読み出し、各キーワードKWrに対する各条件情報VSET2と平文Trueとをそれぞれ関数暗号方式の暗号化関数に入力し、各キーワードKWrに対し、それぞれ、平文Trueの暗号文Cr(KWr,True)（第２情報）を生成し、これらによって暗号化DBの各キーワードに対応する各暗号文を更新し、暗号化DBを更新する（ステップＳ５２４）。なお、関数暗号方式の暗号化関数の一例は前述の式(113)(136)で特定される式(137)である（C=Cr(KWr,True)，M=KWr）。
【０４４６】  次に、ステップＳ５２１で通信部１２５が受信した検索用キーワードKWtに対応する鍵情報SKS（第１情報）と、記憶部５２１ｃから読み出された暗号化DBの何れかの暗号文Cr(KWr,True)（第２情報）とが復号部５２４ｅに入力される。復号部５２４ｅは、鍵情報SKS（第１情報）と暗号文Cr(KWr,True)（第２情報）を関数暗号方式の復号関数に入力して復号処理を実行し、それによって得られた復号結果Mr="True" or Notを出力する（ステップＳ５２５）。例えば、復号部５２４ｅは、C=Cr(KWr,True)（式(137)）及び鍵情報SKS（式(112)）を用い、前述の(Dec-1)-(Dec-4)の処理中の条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}の代わりに属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}が用いられ、属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}の代わりに条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}が用いられる処理を行う（式(122)(128)）。
【０４４７】  ここで、鍵情報SKS（第１情報）に対応する属性情報VSET1と、暗号文Cr(KWr,True)（第２情報）に対応する条件情報VSET2とが鍵生成処理部５１４ｄ及び復号部５２４ｅに設定されていた標準形論理式の真理値を真にする場合にはGV→∈span<MTTFV>となり、正しい復号結果が得られ、復号結果Mr=平文Trueとなる。一方、当該属性情報VSET1と当該条件情報VSET2とが鍵生成処理部５１４ｄ及び復号部５２４ｅに設定されていた標準形論理式の真理値を偽にする場合にはGV→∈span<MTTFV>とならず、正しい復号結果が得られない。正しい復号結果が得られた場合には、その暗号文Cr(KWr,True)に対応付けられた検索対象情報Mrの暗号文C(Mr)が検索結果として抽出される。このようなステップＳ５２５の処理は、暗号化DBを構成するすべての暗号文Cr(KWr,True)に対してそれぞれ実行される。
【０４４８】  検索用キーワードKWtに対応する鍵情報SKS（第１情報）が受信者装置５２０側で想定されたプロトコル及び／又は当該プロトコルの組み合わせ及び／又はキーワードからなる条件に合致するものであった場合には、当該検索用キーワードKWtと同一のキーワードKWに対応する検索対象情報Mrの暗号文C(Mr)が検索結果として抽出される。
【０４４９】  一方、検索用キーワードKWtに対応する鍵情報SKS（第１情報）が受信者装置５２０で予め定められたプロトコル及び／又は当該プロトコルの組み合わせ及び／又はキーワードからなる条件に合致しないものであった場合には、正しい復号がなされないため、検索用キーワードKWtと同一のキーワードKWに対応する検索対象情報Mrの暗号文C(Mr)は抽出されない。つまり、実質的には、暗号化DBの検索が実行できない。
【０４５０】  以上のように、本形態では、送信者装置５１０が使用するプロトコルやプロトコルの組み合わせやキーワードを選択でき、受信者装置５２０において暗号化DBの検索が可能な鍵情報SKS（第１情報）のプロトコルやプロトコルの組み合わせやキーワードの条件を設定しておくことができる。そして、実質的には、受信者装置５２０は、送信者装置５１０で選択されたプロトコルやプロトコルの組み合わせやキーワードが、受信者装置５２０に設定された条件に合致した場合にのみ、暗号化DBの検索を実行することになる。
【０４５１】  〔第５実施形態の変形例〕  第５実施形態においても、属性情報VSET1及び条件情報VSET2に対し、第４実施形態の変形例１で説明したような予備領域を設けてもよい。  また、本形態では、第１情報が属性情報VSET1に対応する鍵情報であり、第２情報が条件情報VSET2に対応する暗号文である場合の一例として、Keyword検索暗号プロトコルを基本としたプロトコルが実行される場合を例示した。しかし、本発明はこれに限定されない。
【０４５２】  〔第６実施形態〕  第６実施形態は、第４実施形態と第５実施形態との切り替えが可能な形態である。すなわち、本形態の送信者装置は、特定情報PIによって特定されるプロトコルに応じ、属性情報VSET1に対応する暗号文を生成するか属性情報VSET1に対応する鍵情報を生成するかを切り替える。また、本形態の受信者装置は、特定情報PIによって特定されるプロトコルに応じ、条件情報に対応する鍵情報を生成するか条件情報に対応する暗号文を生成するかを切り替える。以下では、第４実施形態との相違点を中心に説明し、第４実施形態と共通する部分については説明を省略する。
【０４５３】  ＜構成＞  図３５に示すように、本形態の関数暗号応用システム６は、ネットワーク１４０に接続された、送信者装置６１０（情報出力装置）と受信者装置６２０（情報処理装置）と鍵生成装置４３０とを有する。なお、説明の便宜上、図３５には、送信者装置６１０と受信者装置６２０と鍵生成装置４３０とが１個ずつ表記されているが、２個以上の送信者装置６１０や受信者装置６２０や鍵生成装置４３０が存在してもよい。
【０４５４】  ［送信者装置６１０（情報出力装置）］  図５４は、本形態の送信者装置６１０の構成を説明するためのブロック図である。なお、本形態において、前述の実施形態と共通する部分については前述の実施形態と同じ符号を付して説明を省略する（以下、同様）。
【０４５５】  図５４に示すように、本形態の送信者装置６１０は、一時メモリ１１１ａと、記憶部１１１ｃ，５１１ｄと、入力部１１２と、制御部１１３と、識別子特定部４１４ａと、属性情報設定部４１４ｂと、暗号化部４１４ｃと、鍵生成処理部５１４ｄと、切り替え部６１４と、通信部１１５とを有する。
【０４５６】  送信者装置６１０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、切り替え部６１４は、CPUが所定のプログラムを実行することで構成される処理部や集積回路などである。
【０４５７】  ［受信者装置６２０（情報処理装置）］  図５５は、本形態の受信者装置６２０の構成を説明するためのブロック図である。  図５５に示すように、本形態の受信者装置６２０は、一時メモリ１２１ａと、記憶部４２１ｂ，５２１ｃと、制御部１２３と、識別子特定部６２４ａと、条件情報生成部６２４ｃと、鍵生成処理部４２４ｄと、暗号化部５２４ｄと、復号部６２４ｅと、切り替え部６２４ａ，６２４ｂと、通信部１２５とを有する。識別子特定部６２４ａは前述の識別子特定部４２４ａ及び５２４ａの両方の機能を備える。条件情報生成部６２４ｃは前述の条件情報生成部４２４ｃ及び５２４ｃの両方の機能を備える。復号部６２４ｅは前述の復号部４２４ｅ及び５２４ｅの両方の機能を備える。なお、説明の便宜上、図５５には、通信部１２５を示すブロックが２つ表記されているが、これは別個の通信部１２５が２つ必要なことを意味しない。
【０４５８】  受信者装置６２０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。例えば、切り替え部６２４ａ，６２４ｂは、CPUが所定のプログラムを実行することで構成される処理部や集積回路などである。
【０４５９】  ＜事前設定＞  第４，５実施形態と同様であるため説明を省略する。
【０４６０】  ＜処理＞  図５６Ａは、第６実施形態の送信者装置６１０の処理を説明するためのフローチャートである。図５６Ｂは、第６実施形態の受信者装置６２０の処理を説明するためのフローチャートである。以下、これらの図を用いて本形態の処理を説明する。
【０４６１】  本形態の送信者装置６１０の処理では、まず、実行する関数暗号方式を応用した１種類以上のプロトコルを特定するための特定情報PIが、送信者装置６１０（図５４）の入力部１１２に入力される（ステップＳ６１１）。
【０４６２】  ここで、特定情報PIによって特定されるプロトコル又はプロトコルの組み合わせが、第４実施形態のような属性情報VSET1に対応する暗号文を生成する暗号化処理であった場合には、切り替え部６１４の制御のもと、第４実施形態のステップＳ４１１〜Ｓ４１５の暗号化処理が実行される。ただし、本形態の送信者装置６１０は、暗号文Ctとともに特定情報PIを受信者装置６２０に送信する。
【０４６３】  一方、特定情報PIによって特定されるプロトコル又はプロトコルの組み合わせが、第５実施形態のような属性情報VSET1に対応する鍵情報を生成する検索依頼処理及び鍵情報生成処理であった場合には、切り替え部６１４の制御のもと、第５実施形態のステップＳ５１１〜Ｓ５１７，Ｓ５３１〜Ｓ５３３の検索依頼処理及び鍵情報生成処理が実行される。ただし、本形態の送信者装置６１０は、鍵情報SKSとともに特定情報PIを受信者装置６２０に送信する。
【０４６４】  本形態の受信者装置６２０の処理では、まず、受信者装置６２０（図５５）の通信部１２５が、送信者装置６１０から送信された暗号文Ctと特定情報PIとの組、又は、鍵情報SKSと特定情報PIとの組を受信する（ステップＳ６２１）。
【０４６５】  ここで、特定情報PIによって特定されるプロトコル又はプロトコルの組み合わせが、第４実施形態のような条件情報VSET2に対応する鍵情報を生成する復号処理及び鍵情報生成処理であった場合には、切り替え部６２４ａ，６２４ｂの制御のもと、第４実施形態のステップＳ４２１〜Ｓ４２７，Ｓ４３１〜Ｓ４３３の復号処理及び鍵情報生成処理が実行される。
【０４６６】  一方、特定情報PIによって特定されるプロトコル又はプロトコルの組み合わせが、第５実施形態のような条件情報VSET2に対応する暗号文を生成する検索処理であった場合には、切り替え部６２４ａ，６２４ｂの制御のもと、第５実施形態のステップＳ５２１〜Ｓ５２５の検索処理が実行される。
【０４６７】  〔第４〜６実施形態のその他の変形例〕  なお、本発明は上述の第４〜６の実施形態に限定されるものではない。例えば、上述の有限体Fq上で定義された各演算を位数qの有限環Zq上で定義された演算に置き換えてもよい。有限体Fq上で定義された各演算を有限環Zq上で定義された演算に置き換える方法の一例は、素数やそのべき乗値以外のqを許容する方法である。
【０４６８】  また、第４〜６実施形態では、送信者装置や受信者装置の外部に鍵生成装置が設けられていたが、送信者装置や受信者装置が鍵生成装置の機能を具備していてもよい。このような送信者装置や受信者装置は、鍵情報の生成を鍵生成装置に依頼することなく、自ら鍵情報を生成できる。
【０４６９】  また、第４〜６実施形態では、受信者装置が送信者装置から送信された暗号文又は鍵情報を受信した後に、受信者装置で条件情報VSET2が定められた。しかし、プロトコルによっては、受信者装置が送信者装置から送信された暗号文又は鍵情報を受信する前に受信者装置で条件情報VSET2を定めることができる場合もある。この場合には、受信者装置が、送信者装置から送信された暗号文又は鍵情報を受信する前に条件情報VSET2を定め、当該条件情報VSET2に対応する鍵情報又は暗号文を生成してもよい。
【０４７０】  また、属性情報VSET1の代わりに条件情報VSET2を用い、条件情報VSET2の代わりに属性情報VSET1を用いてもよい。すなわち、条件情報VSET2が第１対応情報に相当し、属性情報VSET1が第２対応情報に相当してもよい。
【０４７１】  また、第４〜６実施形態では、各装置がネットワークを通じて情報のやり取りを行った。しかし、各装置がＵＳＢメモリなどの可搬型記録媒体を通じて情報のやり取りを行ってもよい。
【０４７２】  また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。   
【０４７３】〔プログラム及び記録媒体〕  また、上述の第１〜６実施形態の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。  この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０４７４】  また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０４７５】  このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０４７６】  また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【０４７７】１〜３  関数暗号応用システム１１０，２１０，３１０  送信者装置（情報出力装置）１２０，２２０，３２０  受信者装置（情報処理装置）１３０  鍵生成装置
【図１】
2011016401.tif 000034
【図２】
2011016401.tif 000035
【図３】
2011016401.tif 000036
【図４】
2011016401.tif 000037
【図５】
2011016401.tif 000038
【図６】
2011016401.tif 000039
【図７】
2011016401.tif 000040
【図８】
2011016401.tif 000041
【図９】
2011016401.tif 000042
【図１０】
2011016401.tif 000043
【図１１】
2011016401.tif 000044
【図１２】
2011016401.tif 000045
【図１３】
2011016401.tif 000046
【図１４】
2011016401.tif 000047
【図１５】
2011016401.tif 000048
【図１６】
2011016401.tif 000049
【図１７】
2011016401.tif 000050
【図１８】
2011016401.tif 000051
【図１９】
2011016401.tif 000052
【図２０】
2011016401.tif 000053
【図２１】
2011016401.tif 000054
【図２２】
2011016401.tif 000055
【図２３】
2011016401.tif 000056
【図２４】
2011016401.tif 000057
【図２５】
2011016401.tif 000058
【図２６】
2011016401.tif 000059
【図２７】
2011016401.tif 000060
【図２８】
2011016401.tif 000061
【図２９】
2011016401.tif 000062
【図３０】
2011016401.tif 000063
【図３１】
2011016401.tif 000064
【図３２】
2011016401.tif 000065
【図３３】
2011016401.tif 000066
【図３４】
2011016401.tif 000067
【図３５】
2011016401.tif 000068
【図３６】
2011016401.tif 000069
【図３７】
2011016401.tif 000070
【図３８】
2011016401.tif 000071
【図３９】
2011016401.tif 000072
【図４０】
2011016401.tif 000073
【図４１】
2011016401.tif 000074
【図４２】
2011016401.tif 000075
【図４３】
2011016401.tif 000076
【図４４】
2011016401.tif 000077
【図４５】
2011016401.tif 000078
【図４６】
2011016401.tif 000079
【図４７】
2011016401.tif 000080
【図４８】
2011016401.tif 000081
【図４９】
2011016401.tif 000082
【図５０】
2011016401.tif 000083
【図５１】
2011016401.tif 000084
【図５２】
2011016401.tif 000085
【図５３】
2011016401.tif 000086
【図５４】
2011016401.tif 000087
【図５５】
2011016401.tif 000088
【図５６】
2011016401.tif 000089
【手続補正書】
【提出日】平成24年1月26日(2012.1.26)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
第１〜３実施形態では、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像
Pair:G1×G2→GT            …(4)
を用いて双線形写像eを構成する。第１〜３実施形態の双線形写像eは、巡回群G1のn+1個の元γL(L=1,...,n+1)からなるn+1次元ベクトル(γ1,...,γn+1)と、巡回群G2のn+1個の元γL*(L=1,...,n+1)からなるn+1次元ベクトル(γ1*,...,γn+1*)との入力に対し、巡回群GTの１個の元
e=ΠL=1n+1Pair(γL, γL*)          …(5)
を出力する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
なお、双線形写像Pairの具体例は、WeilペアリングやTateペアリングなどのペアリング演算を行うための関数である（例えば、参考文献４「Alfred. J. Menezes，ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS， KLUWER ACADEMIC PUBLISHERS， ISBN 0-7923-9368-6，pp. 61-81」等参照）。また、楕円曲線Eの種類に応じ、Tateペアリングなどのペアリング演算を行うための関数と所定の関数phiを組み合わせた変更ペアリング関数e(Ω1,phi(Ω2))（Ω1∈G1，Ω2∈G2）を双線形写像Pairとして用いてもよい（例えば、参考文献２等参照）。また、ペアリング演算をコンピュータ上で行うためのアルゴリズムとしては、周知のMiller のアルゴリズム（参考文献５「V. S. Miller, “Short Programs for functions on Curves,”1986，インターネット＜http://crypto.stanford.edu/miller/miller.pdf＞」などが存在する。また、ペアリング演算を効率的に行うための楕円曲線や巡回群の構成方法はよく知られている（例えば、参考文献２、参考文献６「A. Miyaji, M. Nakabayashi, S.Takano, "New explicit conditions of elliptic curve Traces for FR-Reduction," IEICE Trans. Fundamentals, vol. E84-A, no05, pp. 1234-1243, May 2001」、参考文献７「P.S.L.M. Barreto, B. Lynn, M. Scott, "Constructing elliptic curves with prescribed embedding degrees," Proc. SCN '2002, LNCS 2576, pp.257-267, Springer-Verlag. 2003」、参考文献８「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」等参照）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
【数９】
2011016401.tif 000090
となる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
w→：w→は有限体Fqの元を要素とするn次元ベクトルを表す。
w→=(w1,...,wn)∈Fqn           …(28)
wμ：wμはn次元ベクトルのμ(μ=1,...,n)番目の要素を表す。
v→：v→は有限体Fqの元を要素とするn次元ベクトルを表す。
v→=(v1,...,vn)∈Fqn           …(29)
vμ：vμはn次元ベクトルのμ(μ=1,...,n)番目の要素を表す。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
Enc：Encは共通鍵暗号方式の暗号化処理を示す共通鍵暗号関数。共通鍵暗号方式の具体例は、カメリア（Camellia）(登録商標)やAESなどを表す。
Enck(M)：Enck(M)は共通鍵Kを用い、共通鍵暗号関数Encに従って平文Mを暗号化して得られた暗号文を表す。
Dec：Decは共通鍵暗号方式の復号処理を示す共通鍵復号関数を表す。
Deck(C)：Deck(C)は共通鍵Kを用い、共通鍵復号関数Decに従って暗号文Cを復号して得られた復号結果を表す。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００７１
【補正方法】変更
【補正の内容】
【００７１】
以上のように、式(30)と式(31)とを用いることで論理和や論理積からなる論理式を多項式f(x)で表現できる。例えば、論理式{(x=η0)∨(x=η1)∨(x=η2)}∧(x=η3)∧(x=η4)は、多項式
f(x)=ι0・{(x-η0)・(x-η1)・(x-η2)}+ι1・(x-η3)+ι2・(x-η4)    …(32)
で表現できる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
以下では、論理和及び／又は論理積を含む論理式をH(H≧1)個の不定元x0,...,xH-1を用いて表現した多項式をf(x0,...,xH-1) と表現する。また、各不定元x0,...,xH-1に対応する命題を「xhがηhである」とする。ただし、ηh（h=0,...H-1）は命題ごとに定まる定数である。この場合、当該論理式を示す多項式f(x0,...,xH-1)は、不定元xhと定数ηhとの差をとる多項式によって当該不定元xhが当該定数ηhであるという命題を表現し、命題をそれぞれ表現する多項式の積によって当該命題の論理和を表現し、命題又は命題の論理和をそれぞれ表現する多項式の線形和によって当該命題又は命題の論理和の論理積を表現し、それによって論理式を表現した多項式となる。例えば、５つの不定元x0,...,x4を用い、論理式{(x0=η0)∨(x1=η1)∨(x2=η2)}∧(x3=η3)∧(x4=η4)を多項式で表現すると、
f(x0,...,x4)=ι0・{(x0-η0)・(x1-η1)・(x2-η2)}+ι1・(x3-η3)+ι2・(x4-η4)
となる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１１１
【補正方法】変更
【補正の内容】
【０１１１】
受信者装置１２０は、例えば、CPU、RAM、ROM等を備える公知又は専用のコンピュータに特別なプログラムが読み込まれて実行されることで構成される特別な装置である。すなわち、制御部１２３、識別子特定部１２４ａ、多項式生成部１２４ｂ、述語情報生成部１２４ｃ、鍵生成処理部１２４ｄ及び復号部１２４ｅは、例えば、CPUが所定のプログラムを実行することで構成される処理部である。また、受信者装置１２０の処理部の少なくとも一部が集積回路であってもよい。また、一時メモリ１２１ａや記憶部１２１ｂは、例えば、RAM、レジスタ、キャッシュメモリ、集積回路内の素子若しくはハードディスク等の補助記憶装置、又は、これらの少なくとも一部の結合からなる記憶領域である。また、通信部１２５は、例えば、モデム、LANカード等の通信装置である。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
なお、図５Ａ及び図５Ｂに示した特定情報PIは一例であり、その他の方法によって１種類以上のプロトコルに対応する特定情報PIが特定されてもよい。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１３０
【補正方法】変更
【補正の内容】
【０１３０】
図８Ａは、不定元の種類を４種類（H=4）とし、多項式f(x0,x1,x2,x3)に不定元のべき乗を含む項が許容されない場合の属性情報テーブルの一例である。多項式f(x0,x1,x2,x3)に不定元のべき乗を含む項が許容されない場合、多項式f(x0,x1,x2,x3)の項数（定数項を含む）の最大値は１６となり、取り得る不定元成分は、x0・x1・x2・x3，x0・x1・x2，x0・x1・x3，x0・x2・x3，...,{x0}0・{x1}0・{x2}0・{x3}0の１６種類となる。図８Ａの例では、これらの１６種類の不定元成分に各識別子ID(0),...,ID(3)を代入した値を各要素とするベクトルv→=(v0,...,vn-1)を属性情報ATTとする。なお、図６Ｂのように、選択されたプロトコルやプロトコルの組み合わせのみに識別子ID(h)が割り当てられている場合、割り当てられていない識別子ID(h)を定数（例えば０や１）として不定元成分に各識別子を代入すればよい。図８Ａ及び図８Ｂの例では、不定元xhに識別子ID(h)が代入され、ID(0)・ID(1)・ID(2)・ID(3)，ID(0)・ID(1)・ID(2)，ID(0)・ID(1)・ID(3)，ID(0)・ID(2)・ID(3)，...,{ID(0)}0・{ ID(1)}0・{ ID(2)}0・{ ID(3)}0を各要素とする１６次元のベクトルv→=(v0,...,vn-1)が属性情報ATTとされる。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０１３１
【補正方法】変更
【補正の内容】
【０１３１】
図９Ａは、不定元の種類を４種類（H=4）とし、多項式f(x0,x1,x2,x3)に不定元の２乗を含む項が許容されるが不定元の３乗以上のべき乗を含む項が許容されない場合の属性情報テーブルの一例である。図９Ａの例では、この場合の各不定元成分に各識別子ID(0),...,ID(3)を代入した値を各要素とするベクトルv→=(v0,...,vn-1)を属性情報ATTとする。図９Ａ及び図９Ｂの例でも、不定元xhに識別子ID(h)が代入される。また、図６Ｂのように、選択されたプロトコルやプロトコルの組み合わせのみに識別子ID(h)が割り当てられている場合、割り当てられていない識別子ID(h)を定数（例えば０や１）として不定元成分に各識別子を代入すればよい。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０１３６
【補正方法】変更
【補正の内容】
【０１３６】
図１１Ａの例は、不定元の種類を４種類（H=4）とし、不定元の２乗を含む項が許容されるが不定元の３乗以上のべき乗を含む項が許容されない条件化で設定された多項式
f(x0,x1,x2,x3)={ι0・(x1-ID'(1))+ι1・(x3-ID'(3))}・(x3-ID'(3))
=ι1・(x3)2+{-ι0・ID'(1)-2・ι1・ID'(3)}・x3+ι0・x1・x3
-ι0・ID'(3)・x1+{ι0・ID'(1)・ID'(3) +ι1・{ID'(3)}2}      …(53)
に対応する。なお、ID'(1)，ID'(2)及びID'(3)は、それぞれ、前述したように各プロトコルに対応する規則で定められた識別子であり、この例の多項式f(x0,x1,x2,x3)は、論理式{(x1=ID'(1))∧(x2=ID'(3))}∨(x3=ID'(3))に対応する。例えば、ID'(1)及びID'(3)がそれぞれ、Forward Secure暗号プロトコル及びCCA2安全暗号プロトコルに対応する規則で定められた識別子であるとすると、式(53)の多項式f(x0,x1,x2,x3)は、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせ、又は、CCA2安全暗号プロトコルに対して真となる論理式に対応する。この例の場合、要素番号９の要素をι0とし、要素番号１２の要素を-ι0・ID'(3)とし、要素番号１４の要素を-ι0・ID'(1)-2・ι1・ID'(3)とし、要素番号１５の要素をι0・ID'(1)・ID'(3)+ι1・{ID'(3)}2とし、要素番号enの要素をι1とし、その他の要素を０とした１６次元のベクトルw→が述語情報PREとなる。この例の述語情報PREと、{(x1=ID(1))∧(x2=ID(3))}∨(x3=ID(3))の場合に図９に従って生成された属性情報ATTとの内積は０となる。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０１４４
【補正方法】変更
【補正の内容】
【０１４４】
識別子特定部１１４ａから出力された１種類以上の識別子ID(h)は属性情報設定部１１４ｂに入力される。属性情報設定部１１４ｂは、記憶部１１１ｂに格納された属性情報テーブル（図８Ａ〜図９Ｂ等参照）を用い、１種類の当該識別子ID(h)又は２種類以上の当該識別子ID(h)の組み合わせに対して定まる１つの属性情報ATTを設定し、設定した当該属性情報ATTを出力する（ステップＳ１１３）。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０１４９
【補正方法】変更
【補正の内容】
【０１４９】
識別子特定部１２４ａで特定された１種類以上の識別子ID'(h)は多項式生成部１２４ｂに入力される。多項式生成部１２４ｂは、当該識別子ID'(h)を用いて、前述した受信者装置１２０で予め定められた論理式を構成する識別子ID'(h)の値を定め、それによって定まる論理式に対応する多項式f(x0,...,xH-1)を生成し（例えば、式(52)(53)参照）、生成した多項式f(x0,...,xH-1)を出力する（ステップＳ１２３）。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０１５０
【補正方法】変更
【補正の内容】
【０１５０】
多項式生成部１２４ｂから出力された多項式f(x0,...,xH-1)は、述語情報生成部１２４ｃに入力される。述語情報生成部１２４ｃは、入力された多項式f(x0,...,xH-1)の各項の係数成分を各要素とするベクトルw→=(w0,...,wn-1)を述語情報PREとして生成し（例えば、図１０Ａ〜図１１Ｂ参照）、当該述語情報PREを出力する（ステップＳ１２４）。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０１７９
【補正方法】変更
【補正の内容】
【０１７９】
図２３Ａの例では、選択可能なプロトコルごとに識別子ID(h)が割り当てられる。選択されたプロトコルに割り当てられた識別子ID(h)には、そのプロトコルに定められた規則に従った値が入力される。例えば、Keyword検索暗号プロトコルが選択された場合には、検索用キーワードが識別子ID(0)に入力される。一方、選択されなかったプロトコルに割り当てられた識別子ID(h)には、定数(const.)が入力される。また、複数のプロトコルの組み合わせが選択された場合には、その組み合わせを構成する複数のプロトコルが選択されたものとして識別子ID(h)の値が決定される。例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードが識別子ID(0)に入力され、使い捨て情報が識別子ID(3)に入力され、その他の識別子ID(1)，ID(2)には定数(const.)が入力される。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】０１８５
【補正方法】変更
【補正の内容】
【０１８５】
図２５におけるMr1〜Mr99は、それぞれ、ドキュメントなどの検索対象情報であり、KWr1〜KWr9は、それぞれ単語などのキーワードであり、Trueは「真」を意味する「１」などのデータである。また、C(Mr1),...,C(Mr99)は、それぞれ、検索対象情報Mr1〜Mr99の暗号文である。暗号文C(Mr1),...,C(Mr99)の暗号化方式は、共通鍵暗号方式、公開鍵暗号方式、ＩＤベース暗号方式、述語暗号方式などどのようなものであってもよい。また、Cr(KWr1,True),...,Cr(KWr9,True)は、それぞれ、述語情報PREと平文Trueとを述語暗号方式の暗号化関数に入力して得られる述語暗号方式の暗号文（第２情報）である。暗号文Cr(KWr1,True),...,Cr(KWr9,True)は、それぞれ、キーワードKWr1〜KWr9にそれぞれ対応する各属性情報ATTに対応する鍵情報を用いて正しく復号可能である。すなわち、例えば、キーワードKWr1に対応する属性情報ATTと、暗号文Cr(KWr1,True)を暗号化するために用いた述語情報PREとが予め定められた関数に入力された場合に当該関数の関数値は予め定められた値となる（例えば、当該属性情報ATTと当該述語情報PREとの内積が０となる）。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】０１９５
【補正方法】変更
【補正の内容】
【０１９５】
本形態の鍵情報生成処理では、まず、鍵生成装置１３０（図４）の通信部１３５が上記の属性情報ATTを受信する（ステップＳ２３１）。通信部１３５で受信された属性情報ATTは、鍵生成部１３４に入力される。鍵生成部１３４は、記憶部１３１ｂからマスター秘密情報MSKを読み出し、マスター秘密情報MSKと属性情報ATTとを述語暗号方式の鍵生成関数に入力し、属性情報ATTに対応する鍵情報SKtを生成して出力する（ステップＳ２３２）。なお、鍵生成関数の一例は式(50)の関数である。生成された鍵情報SKtは通信部１３５に送られ、通信部１３５は当該鍵情報SKtをネットワーク１４０経由で送信者装置２１０に送信する（ステップＳ２３３）。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】０２７７
【補正方法】変更
【補正の内容】
【０２７７】
【数２０】
2011016401.tif 000091
となる。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】０２７８
【補正方法】変更
【補正の内容】
【０２７８】
v(λ)→：v(λ)→は有限体Fqの元を要素とするn(λ)次元ベクトルを表す。
v(λ)→=(v1(λ),...,vn(λ)(λ))∈Fqn(λ)          …(89)
vμ(λ)：vμ(λ)はn(λ)次元ベクトルv(λ)→のμ(μ=1,...,n(λ))番目の要素を表す。
w(λ)→：w(λ)→は有限体Fqの元を要素とするn(λ)次元ベクトルを表す。
w(λ)→=(w1(λ),...,wn(λ)(λ))∈Fqn(λ)          …(90)
wμ(λ)：wμ(λ)はn(λ)次元ベクトルw(λ)→のμ(μ=1,...,n(λ))番目の要素を表す。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０２７９
【補正方法】変更
【補正の内容】
【０２７９】
Enc：Encは共通鍵暗号方式の暗号化処理を示す共通鍵暗号関数を表す。
EncK(M)：EncK(M)は、共通鍵Kを用い、共通鍵暗号関数Encに従って平文Mを暗号化して得られた暗号文を表す。
Dec：Decは、共通鍵暗号方式の復号処理を示す共通鍵復号関数を表す。
DecK(C)：DecK(C)は、共通鍵Kを用い、共通鍵復号関数Decに従って暗号文Cを復号して得られた復号結果を表す。
【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】０２８８
【補正方法】変更
【補正の内容】
【０２８８】
上述した各秘密分散は体上でも実行可能である。また、これらを拡張して秘密情報SEに応じた値をシェア情報shareに応じた値に秘密分散することもできる。秘密情報SEに応じた値とは秘密情報SEそのものや秘密情報SEの関数値であり、シェア情報shareに応じた値とはシェア情報shareそのものやシェア情報の関数値である。例えば、有限体Fqの元である秘密情報SE∈Fqに応じた巡回群GTの元gTSE∈GTを秘密情報SEの各シェア情報share(1),share(2)に応じた巡回群GTの元gTshare(1),gTshare(2)∈GTに秘密分散することもできる。また、上述した秘密情報SEはシェア情報shareの線形結合となる（式(91)(92)）。このように秘密情報SEがシェア情報shareの線形結合となる秘密分散方式を線形秘密分散方式と呼ぶ。
【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】０３３２
【補正方法】変更
【補正の内容】
【０３３２】
を満たす。例えば、τ=τ'=1Fの場合、
K=gTυ'∈GT          …(127)
を満たす。
(Dec-4) 共通鍵Kを用いて平文
M'=DecK(C(Ψ+1))          …(128)
が生成される。例えば、式(120)に例示した共通鍵暗号方式の場合、
M'=C(Ψ+1)/K          …(129)
によって平文M'が生成される。
【手続補正２４】
【補正対象書類名】明細書
【補正対象項目名】０３３６
【補正方法】変更
【補正の内容】
【０３３６】
ただし、式(130)のMTTFVはω行COL列の行列であり、ωは１以上の整数であり、ROW(1),...,ROW(ω)はそれぞれLIT(ROW(1))=1,..., LIT(ROW(ω))=1となる行列MT（式(94)）の行番号ROW(1),...,ROW(ω)⊂{1,...,Ψ}である（ステップＳ４０１）。
【手続補正２５】
【補正対象書類名】明細書
【補正対象項目名】０３４１
【補正方法】変更
【補正の内容】
【０３４１】
次に、復号部はλ'=2に設定する（ステップＳ４０３）。復号部は
(mt1,1' ... mt1,COL')-(mt1,λ' - 1F)・(mtλ',1' ... mtλ',COL')  …(132)
を新たな(mt1,1' ... mt1,COL')として、上三角化行列MTTFV'の１行目の行ベクトル(mt1,1' ... mt1,COL')を更新する。なお、(mtλ',1' ... mtλ',COL')は上三角化行列MTTFV'のλ'行目の行ベクトルを表す。復号部はλ'=Ωであるか否かを判定し（ステップＳ４０５）、λ'=Ωでなければλ'+１を新たなλ'とし（ステップＳ４０６）、ステップＳ４０４の処理に戻る。一方、λ'=Ωであれば復号部は
(mt1,1' ... mt1,COL')=(1F,...,1F)        …(133)
を満たすか否かを判定し（ステップＳ４０７）、これを満たすならばK'の復号が可能であるとし（ステップＳ４０８）、これを満たさないならばK'の復号が不可能であるとする（ステップＳ４０９）。
【手続補正２６】
【補正対象書類名】明細書
【補正対象項目名】０３４３
【補正方法】変更
【補正の内容】
【０３４３】
[変形例]
なお、gTをGTの生成元とする代わりにgTτやgTτ'やgTτ・τ'をGTの生成元と扱ってもよい。また、鍵情報SKSのλと暗号文のλとの対応関係を特定する写像を用いてC(λ)とD*(λ)との組み合わせを特定し、［Dec(PK,SKS,C)：復号］の処理が実行されてもよい。また、属性情報VSET1={λ,w(λ)→|λ=1,...,Ψ}の1番目の要素w1(λ)が1Fとされるだけではなく、条件情報VSET2={λ,v(λ)→|λ=1,...,Ψ}のn(λ)番目の要素vn(λ)(λ)が1Fとされてもよい。また、要素w1(λ)が1Fでない場合にはw(λ)→の代わりにw(λ)→/w1(λ)を用いてもよく、要素vn(λ)(λ)が1Fでない場合にはv(λ)→の代わりにv(λ)→/vn(λ)(λ)を用いてもよい。
【手続補正２７】
【補正対象書類名】明細書
【補正対象項目名】０３８１
【補正方法】変更
【補正の内容】
【０３８１】
図４０Ｂの例では、選択されたプロトコルのみに識別子ID(λ)が割り当てられる。例えば、Timed-Release暗号プロトコルのみが選択された場合には、未来の時点を特定する情報を示す識別子ID(1)のみが割り当てられる。また、例えば、Forward Secure暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、受信者装置４２０やその利用者の固有識別子と現在時点を含む時間区間との組み合わせで定まる値を示す識別子ID(2)と、使い捨て情報を示す識別子ID(4)とのみが割り当てられる。
【手続補正２８】
【補正対象書類名】明細書
【補正対象項目名】０３８７
【補正方法】変更
【補正の内容】
【０３８７】
なお「想定された所定値」は受信者装置４２０側で想定されたプロトコル及び／又は当該プロトコルの組み合わせからなる条件に対応する。具体的には、「想定された所定値」は受信者装置４２０側で想定された標準形論理式のリテラルに対応する。例えば、標準形論理式のλ=1に対応するリテラルを「識別子ID(1)は所定時点で復号が可能となるTimed-Release暗号プロトコルに対応する値をとる」という命題の命題変数PRO(1)又はその否定¬PRO(1)とする場合には、所定時点で復号が可能となるTimed-Release暗号プロトコルに対応する値の識別子ID(1)に対して内積ID(1)・ID’(1)=0となる識別子ID’(1)が設定される。例えば、標準形論理式のλ=2に対応するリテラルを「識別子ID(2)はForward Secure暗号プロトコルが選択されないことに対応する値をとる」という命題の命題変数PRO(2)又はその否定¬PRO(2)とする場合には、Forward Secure暗号プロトコルが選択されないことに対応する識別子ID(2)=const.に対して内積ID(2)・ID’(2)=0となる識別子ID’(2)が設定される。このような各識別子ID’(λ)を特定するための規則は予め定められ、受信者装置４２０の識別子特定部４２４ａに設定される。また、前述のように、内積ID(λ)・ID’(λ)が0の場合に標準形論理式のリテラルが真となるのか偽となるか、すなわち、リテラルを命題変数PRO(λ)とするのかその否定¬PRO(λ)とするのかは、ラベル付き行列LMT(MT,LAB)のラベルLAB(λ)によって指定できる。
【手続補正２９】
【補正対象書類名】明細書
【補正対象項目名】０４０１
【補正方法】変更
【補正の内容】
【０４０１】
本形態の鍵情報生成処理では、まず、鍵生成装置４３０（図３８）の通信部１３５が上記の条件情報VSET2に対応するラベル付き行列LMT(MT,LAB)を受信する（ステップＳ４３１）。通信部１３５で受信されたラベル付き行列LMT(MT,LAB)は、鍵生成部４３４に入力される。鍵生成部４３４は、記憶部４３１ｂからマスター秘密情報MSKを読み出し、マスター秘密情報MSKとラベル付き行列LMT(MT,LAB)とを用い、ラベル付き行列LMT(MT,LAB)に対応する鍵情報SKSを生成して出力する（ステップＳ４３２）。例えば、鍵生成部４３４は、式(95)-(99)(106)(108)(109)によって特定される式(112)の鍵情報SKSを生成して出力する。例えば、鍵生成部４３４は、有限体Fqの元を要素とするCOL次元ベクトルCV→∈FqCOL（式(36)）を任意に選択し、行列MT（式(94)）とCOL次元ベクトルCV→とを用い、式(99)に従ってシェア情報share(λ)∈Fq（λ=1,...,Ψ）を計算し、COL次元ベクトルCV→を用いて式(97)に従って秘密情報SEを生成し、式(106)に従って鍵情報D*(0)を生成し、ラベル情報LAB(λ)（λ=1,...,Ψ）を用いて鍵生成部４３４は(108)(109)に従って鍵情報D*(λ)（λ=1,...,Ψ）を生成し、式(112)に従って鍵情報SKSを生成する。生成された鍵情報SKSは通信部１３５に送られ、通信部１３５は当該鍵情報SKSをネットワーク１４０経由で受信者装置４２０に送信する（ステップＳ４３３）。
【手続補正３０】
【補正対象書類名】明細書
【補正対象項目名】０４０８
【補正方法】変更
【補正の内容】
【０４０８】
図４５Ａ及び図４５Ｂでは、属性情報VSET1が含むベクトルv(Ψ-s)→,...,v(Ψ)→及び条件情報VSET2が含むベクトルw(Ψ-s)→,...,w(Ψ)→が予備領域とされる。なお、sは１以上Ψ未満の整数定数である。この例では、特定情報PIの値にかかわらず、ベクトルv(Ψ-s)→,...,v(Ψ)→がそれぞれ定数要素からなる定数ベクトルconst.(Ψ-s),...,const.(Ψ)とされ、ベクトルw(Ψ-s)→,...,w(Ψ)→がそれぞれ定数要素からなる定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)とされる。これらの予備領域は、予備領域のベクトルw(λ)→と予備領域のベクトルv(λ)→との内積が特定情報PIの値にかかわらず０となるように設定されている。例えば、定数ベクトルconst.(Ψ-s),...,const.(Ψ)がすべて零ベクトルであってもよいし、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)がすべて零ベクトルであってもよい。また、定数ベクトルconst.(Ψ-s),...,const.(Ψ)がすべて零ベクトルであって、なおかつ、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)の一部が零ベクトル以外であってもよい。また、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)がすべて零ベクトルであって、なおかつ、定数ベクトルconst.(Ψ-s),...,const.(Ψ)の少なくとも一部が零ベクトル以外であってもよい。定数ベクトルconst.(Ψ-s),...,const.(Ψ)の少なくとも一部が零ベクトル以外であって、なおかつ、定数ベクトルconst.'(Ψ-s),...,const.'(Ψ)の一部が零ベクトル以外であって、なおかつ、予備領域のベクトルw(λ)→と予備領域のベクトルv(λ)→との内積が０となってもよい。予備領域に対応するλでのラベルがLAB(λ)=v(λ)→である場合には特定情報PIの値にかかわらずLIT(λ)=1となり、予備領域に対応するλでのラベルがLAB(λ)=¬v(λ)→である場合には特定情報PIの値にかかわらずLIT(λ)=0となる（式(101)-(103)）。
【手続補正３１】
【補正対象書類名】明細書
【補正対象項目名】０４２４
【補正方法】変更
【補正の内容】
【０４２４】
図５０の例では、選択可能なプロトコル及びプロトコルの組み合わせごとに識別子ID(λ)が割り当てられる。選択されたプロトコル及びプロトコルの組み合わせに割り当てられた識別子ID(λ)には、選択されたプロトコル又は組み合わせを構成する各プロトコルに定められた各規則に従った値が入力され、選択されなかったプロトコルや組み合わせに割り当てられた識別子ID(λ)にはn(λ)次元ベクトルである定数(const.)が入力される。例えば、Keyword検索暗号プロトコルとCCA2安全暗号プロトコルとの組み合わせが選択された場合には、検索用キーワードと使い捨て情報との組み合わせで定まるn(λ)次元ベクトルが識別子ID(4)に入力され、その他の識別子ID(λ)にはn(λ)次元ベクトルである定数(const.)が入力される。
【手続補正３２】
【補正対象書類名】明細書
【補正対象項目名】０４４０
【補正方法】変更
【補正の内容】
【０４４０】
本形態の鍵情報生成処理では、まず、鍵生成装置４３０（図３８）の通信部１３５が上記の属性情報VSET1に対応するラベル付き行列LMT(MT,LAB)を受信する（ステップＳ５３１）。通信部１３５で受信されたラベル付き行列LMT(MT,LAB)は、鍵生成部４３４に入力される。鍵生成部４３４は、記憶部４３１ｂからマスター秘密情報MSKを読み出し、マスター秘密情報MSKとラベル付き行列LMT(MT,LAB)とを用い、ラベル付き行列LMT(MT,LAB)に対応する鍵情報SKSを生成して出力する（ステップＳ５３２）。具体的な生成手順は、例えば、v(λ)→の代わりにw(λ)→が用いられる以外は第４実施形態と同様でよい。生成された鍵情報SKSは通信部１３５に送られ、通信部１３５は当該鍵情報SKSをネットワーク１４０経由で送信者装置５１０に送信する（ステップＳ５３３）。
【手続補正３３】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2011016401.tif 000092
【手続補正３４】
【補正対象書類名】図面
【補正対象項目名】図２６
【補正方法】変更
【補正の内容】
【図２６】
2011016401.tif 000093
【手続補正３５】
【補正対象書類名】図面
【補正対象項目名】図３４
【補正方法】変更
【補正の内容】
【図３４】
2011016401.tif 000094
【手続補正３６】
【補正対象書類名】図面
【補正対象項目名】図４３
【補正方法】変更
【補正の内容】
【図４３】
2011016401.tif 000095
【手続補正３７】
【補正対象書類名】図面
【補正対象項目名】図５０
【補正方法】変更
【補正の内容】
【図５０】
2011016401.tif 000096
【手続補正３８】
【補正対象書類名】図面
【補正対象項目名】図５３
【補正方法】変更
【補正の内容】
【図５３】
2011016401.tif 000097
【手続補正３９】
【補正対象書類名】図面
【補正対象項目名】図５６
【補正方法】変更
【補正の内容】
【図５６】
2011016401.tif 000098
【国際調査報告】
2011016401.tif 000099
2011016401.tif 000100