(57)【要約】【課題】階層的述語暗号を実現することを目的とする。【解決手段】ペアリング演算によって関連付けられた双対ベクトル空間（双対ディストーションベクトル空間）である空間Ｖと空間Ｖ＊とを用いて暗号処理を行う。暗号化装置は、空間Ｖにおけるベクトルであって、送信情報を埋め込んだベクトルを暗号ベクトルとして生成する。復号装置は、空間Ｖ＊における所定のベクトルを鍵ベクトルとして、暗号化装置が生成した暗号ベクトルと鍵ベクトルとについて、ペアリング演算を行い前記暗号ベクトルを復号して送信情報に関する情報を抽出する。【選択図】図６
2010273317.tif 000002
【特許請求の範囲】
【請求項１】
ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とを用いて暗号処理を行う暗号処理システムであり、
前記空間Ｖにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして処理装置により生成する暗号化装置と、
前記空間Ｖ＊における所定のベクトルを鍵ベクトルとして、前記暗号化装置が生成した暗号ベクトルと前記鍵ベクトルとについて、処理装置により前記ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号装置と
を備えることを特徴とする暗号処理システム。
【請求項２】
前記暗号処理システムは、Ｎ次元ベクトル空間である前記空間ＶとＮ次元ベクトル空間である前記空間Ｖ＊とにおいて暗号処理を行い、
前記暗号化装置は、前記空間ＶにおけるＮ次元ベクトルχ：＝（χ０ｇ１，．．．，χＮ−１ｇ１）を暗号ベクトルとして生成し、
前記復号装置は、前記空間Ｖ＊におけるＮ次元ベクトルη：＝（η０ｇ２，．．．，ηＮ−１ｇ２）を鍵ベクトルとして、前記暗号ベクトルχ：＝（χ０ｇ１，．．．，χＮ−１ｇ１）と、前記鍵ベクトルη：＝（η０ｇ２，．．．，ηＮ−１ｇ２）とについて、数１に示すペアリング演算ｅ（χ，η）を行う
ことを特徴とする請求項１に記載の暗号処理システム。
【数１】
2010273317.tif 000211
【請求項３】
前記暗号処理システムは、数２に示す正規直交基底の要件を満たす標準基底Ａ：＝（ａ０，．．．，ａＮ−１）を有する空間Ｖと、標準基底Ａ＊：＝（ａ＊０，．．．，ａ＊Ｎ−１）を有する空間Ｖ＊とにおいて暗号処理を行う
ことを特徴とする請求項１又は２に記載の暗号処理システム。
【数２】
2010273317.tif 000212
【請求項４】
前記空間Ｖと前記空間Ｖ＊とは、それぞれ数３と数４とに示すディストーション写像φｉ，ｊとφ＊ｉ，ｊとを有する標準基底Ａ：＝（ａ０，．．．，ａＮ−１）とＡ＊：＝（ａ＊０，．．．，ａ＊Ｎ−１）とを有する空間である
ことを特徴とする請求項１から３までのいずれかに記載の暗号処理システム。
【数３】
2010273317.tif 000213
【数４】
2010273317.tif 000214
【請求項５】
前記暗号化装置は、前記空間Ｖの標準基底Ａに所定の演算を行った基底Ｂにおけるベクトルを暗号ベクトルとして生成し、
前記復号装置は、前記空間Ｖ＊の標準基底Ａ＊に前記所定の演算から導出される演算を行った基底Ｂ＊であって、前記基底Ｂと正規直交基底である基底Ｂ＊におけるベクトルを前記鍵ベクトルとする
ことを特徴とする請求項１から４までのいずれかに記載の暗号処理システム。
【請求項６】
前記基底Ｂは、前記標準基底Ａに数５に示す演算を行った基底Ｂ：＝（ｂ０，．．．，ｂＮ−１）であり、
前記基底Ｂ＊は、前記標準基底Ａ＊に数６に示す演算を行った基底Ｂ＊：＝（ｂ＊０，．．．，ｂ＊Ｎ−１）である
ことを特徴とする請求項５に記載の暗号処理システム。
【数５】
2010273317.tif 000215
【数６】
2010273317.tif 000216
【請求項７】
前記暗号化装置は、
前記空間Ｖにおける所定の基底Ｂの基底ベクトルｂｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクトルｂｎに対する係数としてρを設定したベクトルを送信情報ベクトルとして処理装置により生成する送信情報設定部と、
基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）に対する係数として属性情報ｘｉ（ｉ＝０，．．．，μＬｘ−１）を設定したベクトルを、前記送信情報設定部が生成した送信情報ベクトルに加えて暗号ベクトルを処理装置により生成する暗号ベクトル生成部とを備え、
前記復号装置は、
前記空間Ｖ＊における所定の基底Ｂ＊の基底ベクトルｂ＊ｉ（ｉ＝０，．．．，Ｎ−１）のうち、所定の基底ベクトルｂ＊ｎに対する係数として所定の値が設定されるとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬｖ−１）（μＬｘ≧μＬｖ）に対する係数として述語情報ｖｉ（ｉ＝０，．．．，μＬｖ−１）が設定されたベクトルを鍵ベクトルとして記憶装置に記憶する鍵ベクトル記憶部と、
前記暗号ベクトル生成部が生成した暗号ベクトルと、前記鍵ベクトル記憶部が記憶した鍵ベクトルとについて処理装置により前記ペアリング演算を行い、前記暗号ベクトルから前記基底ベクトルｂｎの係数として設定したρに関する値を抽出するペアリング演算部を備える
ことを特徴とする請求項１から６までのいずれかに記載の暗号処理システム。
【請求項８】
前記暗号処理システムは、さらに、
前記空間Ｖ＊における所定の基底Ｂ＊の基底ベクトルｂ＊ｉ（ｉ＝０，．．．，ｎ−１）のうち、所定の基底ベクトルｂ＊ｎに対する係数として所定の値を設定するとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬ−１）に対する係数として述語情報ｖｉ（ｉ＝０，．．．，μＬ−１）を設定したベクトルを鍵ベクトルｋＬ，０として処理装置により生成する鍵ベクトル生成部を備える鍵生成装置
を備えることを特徴とする請求項１から７までのいずれかに記載の暗号処理システム。
【請求項９】
前記鍵生成装置は、さらに、
ｉ＝μＬ，．．．，ｎ−１の各ｉについて、基底ベクトルｂ＊ｉに対する係数として所定の値を設定した（（ｎ−１）−μＬ−１）個のベクトルを、前記鍵ベクトルｋＬ，０の下位の鍵ベクトルを生成するための鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ，．．．，ｎ−１）として処理装置により生成する鍵生成用ベクトル生成部
を備えることを特徴とする請求項８に記載の暗号処理システム。
【請求項１０】
前記暗号処理システムは、さらに、
鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ，．．．，μＬ＋１−１）に対する係数として述語情報ｖｉ（ｉ＝μＬ，．．．，μＬ＋１−１）を設定したベクトルｖｉ（ｉ＝μＬ，．．．，μＬ＋１−１）と、前記鍵ベクトルｋＬ，０とを加算して、前記鍵ベクトルｋＬ，０の下位の鍵ベクトルである鍵ベクトルｋＬ＋１，０を処理装置により生成する鍵ベクトル生成部と、
鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ＋１，．．．，ｎ−１）に所定の変更を加えて、前記鍵ベクトルｋＬ＋１，０の下位の鍵ベクトルを生成するための鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ＋１，．．．，ｎ−１）を処理装置により生成する鍵生成用ベクトル生成部と
を備える鍵委譲装置
を備えることを特徴とする請求項１から９までのいずれかに記載の暗号処理システム。
【請求項１１】
述語暗号における秘密鍵である鍵ベクトルｋＬ，０を生成する鍵生成装置であり、
ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とのうちの前記空間Ｖ＊をマスター秘密鍵として記憶装置に記憶するマスター鍵記憶部と、
前記マスター鍵記憶部が記憶したマスター秘密鍵である前記空間Ｖ＊における所定の基底Ｂ＊の基底ベクトルｂ＊ｉ（ｉ＝０，．．．，Ｎ−１）のうち、所定の基底ベクトルｂ＊ｎに対する係数として所定の値を設定するとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬ−１）に対する係数として述語情報ｖｉ（ｉ＝０，．．．，μＬ−１）を設定したベクトルを鍵ベクトルｋＬ，０として処理装置により生成する鍵ベクトル生成部と
を備えることを特徴とする鍵生成装置。
【請求項１２】
前記鍵ベクトル生成部は、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬ−１）に対する係数として、属性情報ｘｉ（ｉ＝０，．．．，μＬ−１）との内積が０となる述語情報ｖｉ（ｉ＝０，．．．，μＬ−１）を設定する
ことを特徴とする請求項１１に記載の鍵生成装置。
【請求項１３】
前記鍵ベクトル生成部は、数７に示す鍵ベクトルｋＬ，０を生成する
ことを特徴とする請求項１１又は１２に記載の鍵生成装置。
【数７】
2010273317.tif 000217
【請求項１４】
前記鍵生成装置は、さらに、
ｉ＝μＬ，．．．，ｎ−１の各ｉについて、基底ベクトルｂ＊ｉに対する係数として所定の値を設定した（（ｎ−１）−μＬ−１）個のベクトルを、前記鍵ベクトルｋＬ，０の下位の鍵ベクトルを生成するための鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ，．．．，ｎ−１）として処理装置により生成する鍵生成用ベクトル生成部
を備えることを特徴とする請求項１１から１３までのいずれかに記載の鍵生成装置。
【請求項１５】
前記鍵ベクトル生成部は、数８に示す鍵ベクトルｋＬ，０を生成し、
前記鍵生成用ベクトル生成部は、数８に示す鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ，．．．，ｎ−１）を生成する
ことを特徴とする請求項１４に記載の鍵生成装置。
【数８】
2010273317.tif 000218
【請求項１６】
述語暗号における秘密鍵である鍵ベクトルを生成する鍵委譲装置であり、
ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とのうちの前記空間Ｖにおける所定の暗号ベクトルを復号可能な前記空間Ｖ＊における鍵ベクトルを取得する鍵ベクトル取得部と、
前記鍵ベクトル取得部が取得した鍵ベクトルに基づき、前記鍵ベクトルで復号可能な前記所定の暗号ベクトルのうちの一部の暗号ベクトルを復号可能な前記空間Ｖ＊における新たな鍵ベクトルを処理装置により生成する鍵ベクトル生成部と
を備えることを特徴とする鍵委譲装置。
【請求項１７】
前記鍵ベクトル取得部は、前記空間Ｖ＊における所定の基底Ｂ＊の所定の基底ベクトルに対する係数として述語情報が設定されたベクトルを鍵ベクトルとして取得し、
前記鍵ベクトル生成部は、前記所定の基底ベクトル以外の前記基底Ｂ＊の基底ベクトルに対する係数として述語情報を設定したベクトルを、前記鍵ベクトル取得部が取得した鍵ベクトルに加算して新たな鍵ベクトルを生成する
ことを特徴とする請求項１６に記載の鍵委譲装置。
【請求項１８】
前記鍵ベクトル取得部は、前記基底Ｂ＊の基底ベクトルｂ＊ｉ（ｉ＝０，．．．，Ｎ−１）のうち基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬ−１）に述語情報ｖｉ（ｉ＝０，．．．，μＬ−１）が設定された第Ｌ層目の鍵ベクトルｋＬ，０と、基底ベクトルｂ＊ｉに対する係数として所定の値が設定された鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ，．．．，μＬ＋１−１）とを取得し、
前記鍵ベクトル生成部は、ｉ＝μＬ，．．．，μＬ＋１−１の各ｉについて、前記鍵ベクトル取得部が取得した鍵生成用ベクトルｋＬ，ｉの基底ベクトルｂ＊ｉに対する係数として述語情報ｖｉを設定したベクトルｖｉ（ｉ＝μＬ，．．．，μＬ＋１−１）を、前記鍵ベクトルｋＬ，０にを加算して第Ｌ＋１層目の鍵ベクトルｋＬ＋１，０を処理装置により生成する
ことを特徴とする請求項１６又は１７に記載の鍵委譲装置。
【請求項１９】
前記鍵ベクトル生成部は、前記鍵生成用ベクトルｋＬ，ｉの基底ベクトルｂ＊ｉに対する係数を、属性情報ｘｉ（ｉ＝μＬ，．．．，μＬ＋１−１）との内積が０となる述語情報ｖｉ（ｉ＝μＬ，．．．，μＬ＋１−１）倍する
ことを特徴とする請求項１８に記載の鍵委譲装置。
【請求項２０】
前記鍵ベクトル生成部は、鍵ベクトルｋＬ，０と鍵生成用ベクトルｋＬ，ｉとに基づき、数９に示す鍵ベクトルｋＬ＋１，０を生成する
ことを特徴とする請求項１８又は１９に記載の鍵委譲装置。
【数９】
2010273317.tif 000219
【請求項２１】
前記鍵委譲装置は、さらに、
鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ，．．．，μＬ＋１−１）に所定の変更を加えて、前記鍵ベクトルｋＬ＋１，０の下位の鍵ベクトルを生成するための鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ＋１，．．．，ｎ−１）を処理装置により生成する鍵生成用ベクトル生成部
を備えることを特徴とする請求項１８から２０までのいずれかに記載の鍵委譲装置。
【請求項２２】
前記鍵ベクトル取得部は、数１０に示す鍵ベクトルｋＬ，０と鍵生成用ベクトルｋＬ，ｉ（ｉ＝μＬ，．．．，ｎ−１）とを取得し、
前記鍵ベクトル生成部は、前記鍵ベクトル取得部が取得した鍵ベクトルｋＬ，０と鍵生成用ベクトルｋＬ，ｉとに基づき、数１０に示す鍵ベクトルｋＬ＋１，０を生成し、
前記鍵生成用ベクトル生成部は、前記鍵ベクトル取得部が取得した鍵生成用ベクトルｋＬ，ｉに基づき、数１０に示す鍵生成用ベクトルｋＬ＋１，ｉ（ｉ＝μＬ＋１，．．．，ｎ−１）を生成する
ことを特徴とする請求項２１に記載の鍵委譲装置。
【数１０】
2010273317.tif 000220
【請求項２３】
ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とのうちの空間Ｖにおける所定の基底Ｂの基底ベクトルｂｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクトルｂｎに対する係数としてρを設定したベクトルを送信情報ベクトルとして処理装置により生成する送信情報設定部と、
基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）に対する係数として属性情報ｘｉ（ｉ＝０，．．．，μＬｘ−１）を設定した属性ベクトルを、前記送信情報設定部が生成した送信情報ベクトルに加算して暗号ベクトルを処理装置により生成する暗号ベクトル生成部と
を備えることを特徴とする暗号化装置。
【請求項２４】
前記送信情報設定部は、数１１に示す送信情報ベクトルρｖを生成し、
前記暗号ベクトル生成部は、数１２に示す属性情報ベクトルｘｖを数１１に示す送信情報ベクトルρｖに加算して暗号ベクトルｃを生成する
ことを特徴とする請求項２３に記載の暗号化装置。
【数１１】
2010273317.tif 000221
【数１２】
2010273317.tif 000222
【請求項２５】
ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とのうちの空間Ｖにおける所定の基底Ｂの基底ベクトルｂｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクトルｂｎの係数としてρが設定されるとともに、基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）の所定の基底ベクトルの係数に属性情報ｘｉ（ｉ＝０，．．．，μＬｘ−１）を設定されたベクトルを暗号ベクトルとして入力するベクトル入力部と、
前記空間Ｖ＊における所定の基底Ｂ＊の基底ベクトルｂ＊ｉ（ｉ＝０，．．．，Ｎ−１）のうち、所定の基底ベクトルｂ＊ｎに対する係数として所定の値が設定されるとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬｖ−１）（μＬｘ≧μＬｖ）に対する係数として述語情報ｖｉ（ｉ＝０，．．．，μＬｖ−１）が設定されたベクトルを鍵ベクトルとして記憶装置に記憶する鍵ベクトル記憶部と、
前記ベクトル入力部が入力した暗号ベクトルと、前記鍵ベクトル記憶部が記憶した鍵ベクトルとについて処理装置により前記ペアリング演算を行い、前記暗号ベクトルから前記基底ベクトルｂｎの係数として設定したρに関する値を抽出するペアリング演算部と
を備えることを特徴とする復号装置。
【請求項２６】
前記ベクトル入力部は、数１３に示す暗号ベクトルｃを入力し、
前記鍵ベクトル記憶部は、数１４に示す鍵ベクトルｋｖを記憶し、
前記ペアリング演算部は、数１５に示すペアリング演算を行い、ｕρを抽出する
ことを特徴とする請求項２５に記載の復号装置。
【数１３】
2010273317.tif 000223
【数１４】
2010273317.tif 000224
【数１５】
2010273317.tif 000225
【請求項２７】
前記暗号化装置は、さらに、
基底ベクトルｂｎと前記基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）と以外の所定の基底ベクトルに対する係数として検証情報を含む情報を設定したベクトルを検証情報ベクトルとして処理装置により生成する検証情報設定部を備え、
前記暗号ベクトル生成部は、前記属性ベクトルと前記送信情報ベクトルと前記検証情報設定部が生成した検証情報ベクトルとを加算して暗号ベクトルを生成し、
前記暗号化装置は、さらに、
前記検証情報設定部が設定した検証情報に基づき検証される署名情報を処理装置により生成する署名情報生成部と、
前記暗号ベクトル生成部が生成した暗号ベクトルと、前記署名情報生成部が生成した署名情報と、前記検証情報とを復号装置へ送信するデータ送信部と
を備えることを特徴とする請求項２３に記載の暗号化装置。
【請求項２８】
前記検証情報設定部は、前記所定の基底ベクトルに対する係数として第１検証情報ｃｏｍを含む情報を設定したベクトルを検証情報ベクトルとして生成し、
前記暗号ベクトル生成部は、前記暗号ベクトルをデータｃ１として生成し、
前記署名情報生成部は、
平文情報ｍと第２検証情報ｄｅｃとを、前記基底ベクトルｂｎに対する係数として設定したρから生成されたセッション鍵で暗号化してデータｃ２を生成するｃ２生成部と、
前記第１検証情報ｃｏｍをデータｃ３として生成するｃ３生成部と、
前記データｃ１と前記データｃ２とを、前記第１検証情報ｃｏｍと前記第２検証情報ｄｅｃとに基づき生成可能な第３検証情報ｒにより暗号化した署名情報をデータｃ４として生成するｃ４生成部と、
前記データ出力部は、前記暗号ベクトル生成部が生成したデータｃ１と、前記ｃ２生成部が生成したデータｃ２と、前記ｃ３生成部が生成したデータｃ３と、前記ｃ４生成部が生成したデータｃ４とを出力する
ことを特徴とする請求項２７に記載の暗号化装置。
【請求項２９】
前記送信情報設定部は、数１６に示す送信情報ベクトルρｖを生成し、
前記検証情報設定部は、数１７に示す検証情報ベクトルｃｖを生成し、
前記ｃ１生成部は、数１８に示す属性情報ベクトルｘｖと、数１６に示す送信情報ベクトルρｖと、数１７に示す検証情報ベクトルｃｖとを加算してデータｃ１を生成し、
前記ｃ２生成部は、数１９に従いデータｃ２を生成し、
前記ｃ４生成部は、数２０に従いデータｃ４を生成する
ことを特徴とする請求項２８に記載の暗号化装置。
【数１６】
2010273317.tif 000226
【数１７】
2010273317.tif 000227
【数１８】
2010273317.tif 000228
【数１９】
2010273317.tif 000229
【数２０】
2010273317.tif 000230
【請求項３０】
前記ベクトル入力部は、前記基底ベクトルｂｎの係数としてρが設定され、前記基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）に対する係数として属性情報ｘｉ（ｉ＝０，．．．，μＬｘ−１）が設定され、前記基底ベクトルｂｎと前記基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）と以外の所定の基底ベクトルに対する係数として検証情報を含む情報が設定された暗号ベクトルと、前記検証情報に基づき検証される署名情報と、前記検証情報とを入力し、
前記復号装置は、さらに、
所定の基底ベクトルに対する係数として前記検証情報を含む情報を設定したベクトルを前記鍵ベクトル記憶部が記憶した鍵ベクトルに加えて鍵ベクトルを処理装置により変形す
る鍵ベクトル変形部を備え、
前記ペアリング演算部は、前記ベクトル入力部が入力した暗号ベクトルと、前記鍵ベクトル変形部が変形した鍵ベクトルとについて、前記ペアリング演算を行い、前記暗号ベクトルから前記基底ベクトルｂｎの係数として設定したρに関する値を抽出し、
前記復号装置は、さらに、
前記検証情報に基づき、前記署名情報に改ざんがないことを処理装置により検証する改ざん検証部
を備えることを特徴とする請求項２５に記載の復号装置。
【請求項３１】
前記ベクトル入力部は、前記検証情報として第１検証情報ｃｏｍを含む情報が設定された暗号ベクトルであるデータｃ１と、
平文情報ｍと第２検証情報ｄｅｃとを、前記データｃ１の前記基底ベクトルｂｎに対する係数として設定したρから生成されたセッション鍵で暗号化したデータｃ２と、
第１検証情報ｃｏｍであるデータｃ３と、
前記データｃ１と前記データｃ２とを、前記第１検証情報ｃｏｍと前記第２検証情報ｄｅｃとに基づき生成可能な第３検証情報ｒにより暗号化した署名情報であるデータｃ４とを入力し、
前記復号装置は、さらに、
前記ペアリング演算部が抽出したρに関する値からセッション鍵を生成して、生成したセッション鍵により前記データｃ２を復号して、前記平文情報ｍと前記第２検証情報ｄｅｃとを取得するｃ２復号部を備え、
前記改ざん検証部は、前記ｃ２復号部が取得した第２検証情報と前記データｃ３とから前記第３検証情報ｒを生成するとともに、生成した前記第３検証情報ｒと前記データｃ４とに基づき、前記データｃ１と前記データｃ２とに改ざんがないことを検証する
ことを特徴とする請求項３０に記載の復号装置。
【請求項３２】
前記データ入力部は、数２１に示すデータｃ１とデータｃ２とデータｃ３とデータｃ４とを入力し、
前記鍵ベクトル記憶部は、数２２に示す鍵ベクトルｋｖを記憶し、
前記鍵ベクトル変形部は、数２３に従い鍵ベクトルｋｖを変換し、
前記ペアリング演算部は、数２４に示すペアリング演算を行って、ρに関する値Ｋを取得し、
前記ｃ２復号部は、数２５に従い前記ρに関する値Ｋから共通鍵を生成して、生成した共通鍵により前記データｃ２を復号して、前記平文情報ｍと前記第２検証情報ｄｅｃとを取得し、
前記改ざん検証部は、数２６に従い前記第３検証情報ｒを生成して、数２７に従い改ざんを検証する
ことを特徴とする請求項３１に記載の復号装置。
【数２１】
2010273317.tif 000231
【数２２】
2010273317.tif 000232
【数２３】
2010273317.tif 000233
【数２４】
2010273317.tif 000234
【数２５】
2010273317.tif 000235
【数２６】
2010273317.tif 000236
【数２７】
2010273317.tif 000237
【請求項３３】
前記送信情報設定部は、ｔ＝０，．．．，ｎ−１の各ｔについて、前記空間Ｖにおける基底Ｂ［ｔ］の基底ベクトルｂ［ｔ］ｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクト
ルｂ［ｔ］ｎに対する係数として平文情報ｍを設定したベクトルを送信情報ベクトルｍｖ［ｔ］として生成し、
前記暗号ベクトル生成部は、ｔ＝０，．．．，ｎ−１の各ｔについて、基底ベクトルｂ［ｔ］ｉ（ｉ＝０，．．．，μＬｘ−１）に対する係数として、数２８に示す係数値ｓ［ｔ］ｉを設定した属性情報ベクトルｘｖ［ｔ］を、前記送信情報設定部が生成した送信情報ベクトルｍｖ［ｔ］に加算して暗号ベクトルｃ［ｔ］を生成する
ことを特徴とする請求項２３に記載の暗号化装置。
【数２８】
2010273317.tif 000238
【請求項３４】
前記送信情報設定部は、数２９に示す送信情報ベクトルｍｖ［ｔ］を生成し、
前記暗号ベクトル生成部は、数３０に示す属性情報ベクトルｘｖ［ｔ］を数２９に示す送信情報ベクトルｍｖ［ｔ］に加算して暗号ベクトルｃ［ｔ］を生成する
ことを特徴とする請求項３３に記載の暗号化装置。
【数２９】
2010273317.tif 000239
【数３０】
2010273317.tif 000240
【請求項３５】
前記ベクトル入力部は、ｔ＝０，．．．，ｎ−１の各ｔについて、前記空間Ｖにおける基底Ｂ［ｔ］の基底ベクトルｂ［ｔ］ｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクトルｂ［ｔ］ｎに対する係数として平文情報ｍが設定されるとともに、基底ベクトルｂ［ｔ］ｉ（ｉ＝０，．．．，μＬｘ−１）に対する係数として、数３１に示す係数値ｓ［ｔ］ｉを設定されたベクトルｖ［ｔ］を暗号ベクトルｃ［ｔ］として入力し、
前記鍵ベクトル記憶部は、ｔ＝０，．．．，ｎ−１の各ｔについて、前記空間Ｖ＊における基底Ｂ［ｔ］＊の基底ベクトルｂ［ｔ］＊ｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクトルｂ［ｔ］＊ｎに対する係数として所定の値が設定されるとともに、ベクトルｂ［ｔ］＊ｉ（ｉ＝０，．．．，μＬｖ−１）（μＬｘ≧μＬｖ）に対する係数として述語情報ｖｉ（ｉ＝０，．．．，μＬｖ−１）が設定されたベクトルｖ［ｔ］を鍵ベクトルｋｖ［ｔ］として記憶装置に記憶し、
前記ペアリング演算部は、ｔ＝０，．．．，ｎ−１の各ｔについて、前記ベクトル入力部が入力した暗号ベクトルｃ［ｔ］と、前記鍵ベクトル記憶部が記憶した鍵ベクトルｋｖ［ｔ］とについて前記ペアリング演算を行い、前記暗号ベクトルから前記基底ベクトルｂ［ｔ］ｎの係数として設定した平文情報ｍに関する情報ｆを生成するとともに、ｔ＝０，．．．，ｎ−１の各ｔについて、基底ベクトルｂ［ｔ］ｎと、前記鍵ベクトルｋｖ［ｔ］とについて前記ペアリング演算を行い、前記値ｆから前記平文情報ｍを抽出するための情報ｇを生成し、
前記復号装置は、さらに、
前記ペアリング演算部が生成した情報ｆについて、情報ｇを底として離散対数問題を計算して、前記平文情報ｍを計算する離散対数計算部
を備えることを特徴とする請求項２５に記載の復号装置。
【数３１】
2010273317.tif 000241
【請求項３６】
前記ベクトル入力部は、数３２に示す暗号ベクトルｃ［ｔ］を入力し、
前記鍵ベクトル記憶部は、数３３に示す鍵ベクトルｋｖ［ｔ］を記憶し、
前記ペアリング演算部は、数３４に示すペアリング演算を行い情報ｆと情報ｇとを生成し、
前記離散対数問題は、数３５に示す離散対数問題を解き平文情報ｍを計算する
ことを特徴とする請求項３５に記載の復号装置。
【数３２】
2010273317.tif 000242
【数３３】
2010273317.tif 000243
【数３４】
2010273317.tif 000244
【数３５】
2010273317.tif 000245
【請求項３７】
前記暗号化装置は、さらに、
ｔ＝０，．．．，ｎ−１の各ｔについて、基底ベクトルｂ［ｔ］ｎと前記基底ベクトルｂ［ｔ］ｉ（ｉ＝０，．．．，μＬｘ−１）と以外の所定の基底ベクトルｂ［ｔ］ｊに対する係数として検証情報ｖｋを含む情報を設定したベクトルｖ［ｔ］を検証情報ベクトルｃｋ［ｔ］として生成する検証情報設定部を備え、
前記暗号ベクトル生成部は、ｔ＝０，．．．，ｎ−１の各ｔについて、前記属性情報ベクトルｘｖ［ｔ］と送信情報ベクトルｍｖ［ｔ］と前記検証情報設定部が生成した検証情報ベクトルｃｋ［ｔ］とを加算して暗号ベクトルｃ［ｔ］を生成し、
前記暗号化装置は、さらに、
前記検証情報設定部が設定した検証情報ｖｋに基づき検証される署名情報Σを生成する署名情報生成部と、
前記暗号ベクトル生成部が生成した暗号ベクトルｃ［ｔ］（ｔ＝０，．．．，ｎ−１）と、前記署名情報生成部が生成した署名情報Σと、前記検証情報ｖｋとを復号装置へ送信するデータ送信部と
を備えることを特徴とする請求項３３に記載の暗号化装置。
【請求項３８】
前記送信情報設定部は、数３６に示す送信情報ベクトルｍｖ［ｔ］を生成し、
前記検証情報設定部は、数３７に示す検証情報ベクトルｃｋ［ｔ］を生成し、
前記暗号ベクトル生成部は、数３８に示す属性情報ベクトルｘｖ［ｔ］を数３６に示す送信情報ベクトルｍｖ［ｔ］と数３７に示す検証情報ベクトルｃｋ［ｔ］とに加算して暗号ベクトルｃ［ｔ］を生成する
ことを特徴とする請求項３７に記載の暗号化装置
【数３６】
2010273317.tif 000246
【数３７】
2010273317.tif 000247
【数３８】
2010273317.tif 000248
【請求項３９】
前記ベクトル入力部は、ｔ＝０，．．．，ｎ−１の各ｔについて、前記基底ベクトルｂ［ｔ］ｎと前記基底ベクトルｂ［ｔ］ｉ（ｉ＝０，．．．，μＬｘ−１）と以外の所定の基底ベクトルｂ［ｔ］ｊに対する係数として検証情報ｖｋを含む情報が設定された暗号ベクトルｃ［ｔ］と、前記検証情報ｖｋに基づき検証される署名情報Σと、前記検証情報ｖｋとを入力し、
前記復号装置は、さらに、
ｔ＝０，．．．，ｎ−１の各ｔについて、所定の基底ベクトルｂ［ｔ］ｋに対する係数として前記検証情報ｖｋを含む情報を設定したベクトルｖ［ｔ］を前記鍵ベクトル記憶部が記憶した鍵ベクトルに加えて鍵ベクトルｋｖ［ｔ］を変形する鍵ベクトル変形部を備え、
前記ペアリング演算部は、ｔ＝０，．．．，ｎ−１の各ｔについて、前記ベクトル入力部が入力した暗号ベクトルｃ［ｔ］と前記鍵ベクトル変形部が変形した鍵ベクトルｋｖ［ｔ］とについて前記ペアリング演算を行い情報ｆを生成するとともに、ｔ＝０，．．．，ｎ−１の各ｔについて、基底ベクトルｂ［ｔ］ｎと前記変形した鍵ベクトルｋｖ［ｔ］とについて前記ペアリング演算を行い情報ｇを生成し、
前記復号装置は、さらに、
前記検証情報ｖｋに基づき、前記署名情報Σに改ざんがないことを検証する改ざん検証
部
を備えることを特徴とする請求項３５に記載の復号装置。
【請求項４０】
前記ベクトル入力部は、数３９に示す暗号ベクトルｃ［ｔ］と、前記検証情報ｖｋに基づき検証される署名情報Σと、前記検証情報ｖｋとを入力し、
前記鍵ベクトル記憶部は、数４０に示す鍵ベクトルｋｖ［ｔ］を記憶し、
前記鍵ベクトル変形部は、数４１に従い鍵ベクトルｋｖ［ｔ］を変換し、
前記ペアリング演算部は、数４２に示すペアリング演算を行い情報ｆと情報ｇとを抽出する
ことを特徴とする請求項３９に記載の復号装置。
【数３９】
2010273317.tif 000249
【数４０】
2010273317.tif 000250
【数４１】
2010273317.tif 000251
【数４２】
2010273317.tif 000252
【請求項４１】
ペアリング演算によって関連付けられた双対加群である空間Ｖと空間Ｖ＊とを用いて暗号処理を行う暗号処理システムであり、
前記空間Ｖにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成する暗号化装置と、
前記空間Ｖ＊における所定のベクトルを鍵ベクトルとして、前記暗号化装置が生成した暗号ベクトルと前記鍵ベクトルとについて、前記ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号装置と
を備えることを特徴とする暗号処理システム。
【請求項４２】
述語暗号における秘密鍵である鍵ベクトルｋＬ，０を生成する鍵生成装置であり、
ペアリング演算によって関連付けられた双対加群である空間Ｖと空間Ｖ＊とのうちの前記空間Ｖ＊をマスター秘密鍵として記憶装置に記憶するマスター鍵記憶部と、
前記マスター鍵記憶部が記憶したマスター秘密鍵である前記空間Ｖ＊における所定の基底Ｂ＊の基底ベクトルｂ＊ｉ（ｉ＝０，．．．，Ｎ−１）のうち、所定の基底ベクトルｂ＊ｎに対する係数として所定の値を設定するとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬ−１）に対する係数として述語情報ｖｉ（ｉ＝０，．．．，μＬ−１）を設定したベクトルを鍵ベクトルｋＬ，０として生成する鍵ベクトル生成部と
を備えることを特徴とする鍵生成装置。
【請求項４３】
述語暗号における秘密鍵である鍵ベクトルを生成する鍵委譲装置であり、
ペアリング演算によって関連付けられた双対加群である空間Ｖと空間Ｖ＊とのうちの前記空間Ｖにおける所定の暗号ベクトルを復号可能な前記空間Ｖ＊における鍵ベクトルを取得する鍵ベクトル取得部と、
前記鍵ベクトル取得部が取得した鍵ベクトルに基づき、前記鍵ベクトルで復号可能な前記所定の暗号ベクトルのうちの一部の暗号ベクトルを復号可能な前記空間Ｖ＊における新たな鍵ベクトルを処理装置により生成する鍵ベクトル生成部と
を備えることを特徴とする鍵委譲装置。
【請求項４４】
ペアリング演算によって関連付けられた双対加群である空間Ｖと空間Ｖ＊とのうちの空間Ｖにおける所定の基底Ｂの基底ベクトルｂｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクトルｂｎに対する係数としてρを設定したベクトルを送信情報ベクトルとして生成する送信情報設定部と、
基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）に対する係数として属性情報ｘｉ（ｉ＝０，．．．，μＬｘ−１）を設定した属性ベクトルを、前記送信情報設定部が生成した送信情報ベクトルに加算して暗号ベクトルを生成する暗号ベクトル生成部と
を備えることを特徴とする暗号化装置。
【請求項４５】
ペアリング演算によって関連付けられた双対加群である空間Ｖと空間Ｖ＊とのうちの空間Ｖにおける所定の基底Ｂの基底ベクトルｂｉ（ｉ＝０，．．．，Ｎ−１）のうち、基底ベクトルｂｎの係数としてρが設定されるとともに、基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）の所定の基底ベクトルの係数に属性情報ｘｉ（ｉ＝０，．．．，μＬｘ−１）を設定されたベクトルを暗号ベクトルとして入力するベクトル入力部と、
前記空間Ｖ＊における所定の基底Ｂ＊の基底ベクトルｂ＊ｉ（ｉ＝０，．．．，Ｎ−１）のうち、所定の基底ベクトルｂ＊ｎに対する係数として所定の値が設定されるとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬｖ−１）（μＬｘ≧μＬｖ）に対する係数として述語情報ｖｉ（ｉ＝０，．．．，μＬｖ−１）が設定されたベクトルを鍵ベクトルとして記憶装置に記憶する鍵ベクトル記憶部と、
前記ベクトル入力部が入力した暗号ベクトルと、前記鍵ベクトル記憶部が記憶した鍵ベクトルとについて前記ペアリング演算を行い、前記暗号ベクトルから前記基底ベクトルｂｎの係数として設定したρに関する値を抽出するペアリング演算部と
を備えることを特徴とする復号装置。
【請求項４６】
ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とを用いて暗号処理を行う暗号処理方法であり、
処理装置が、前記空間Ｖにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成する暗号化ステップと、
処理装置が、前記空間Ｖ＊における所定のベクトルを鍵ベクトルとして、前記暗号化ステップで生成した暗号ベクトルと前記鍵ベクトルとについて、前記ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号ステップと
を備えることを特徴とする暗号処理方法。
【請求項４７】
ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とを用いて暗号処理を行う暗号処理プログラムであり、
前記空間Ｖにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成する暗号化処理と、
前記空間Ｖ＊における所定のベクトルを鍵ベクトルとして、前記暗号化処理で生成した暗号ベクトルと前記鍵ベクトルとについて、前記ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号処理と
をコンピュータに実行させることを特徴とする暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、階層的述語鍵秘匿方式及び階層的述語暗号に関するものである。
【背景技術】
【０００２】
述語暗号（Ｐｒｅｄｉｃａｔｅ  Ｅｎｃｒｙｐｔｉｏｎ，ＰＥ）に関する提案がされている（非特許文献１９）。また、述語暗号における権限委譲に関する提案がされている（非特許文献２６）。さらに、ディストーション固有ベクトル空間に関する提案がされている（非特許文献２１）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｍ．  Ａｂｅ，  Ｒ．  Ｇｅｎｎａｒｏ，  Ｋ．  Ｋｕｒｏｓａｗａ，  ａｎｄ  Ｖ．  Ｓｈｏｕｐ，“Ｔａｇ−ＫＥＭ／ＤＥＭ：  Ａ  Ｎｅｗ  Ｆｒａｍｅｗｏｒｋ  ｆｏｒ  Ｈｙｂｒｉｄ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  Ｎｅｗ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｋｕｒｏｓａｗａ−Ｄｅｓｍｅｄｔ  ＫＥＭ，”Ｅｕｒｏｃｒｙｐｔ  ２００５，  ＬＮＣＳ  ３４９４，  ｐｐ．  １２８−１４６，  ２００５．
【非特許文献２】Ｄ．  Ｂｏｎｅｈ  ａｎｄ  Ｘ．  Ｂｏｙｅｎ，  “Ｅｆｆｉｃｉｅｎｔ  ｓｅｌｅｃｔｉｖｅ−ＩＤ  ｓｅｃｕｒｅ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ，”  ＥＵＲＯＣＲＹＰＴ  ２００４，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００４．
【非特許文献３】Ｄ．  Ｂｏｎｅｈ  ａｎｄ  Ｘ．  Ｂｏｙｅｎ，  “Ｓｅｃｕｒｅ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ，”  ＣＲＹＰＴＯ  ２００４，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００４．
【非特許文献４】Ｄ．  Ｂｏｎｅｈ，  Ｘ．  Ｂｏｙｅｎ  ａｎｄ  Ｅ．  Ｇｏｈ，  “Ｈｉｅｒａｒｃｈｉｃａｌ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  ｃｏｎｓｔａｎｔ  ｓｉｚｅ  ｃｉｐｈｅｒｔｅｘｔ，”  ＥＵＲＯＣＲＹＰＴ  ２００５，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ｐｐ．  ４４０−−４５６，  ２００５．
【非特許文献５】Ｄ．Ｂｏｎｅｈ，  Ｘ．Ｂｏｙｅｎ  ａｎｄ  Ｈ．Ｓｈａｃｈａｍ，  “Ｓｈｏｒｔ  ｇｒｏｕｐ  ｓｉｇｎａｔｕｒｅｓ，”  ＣＲＹＰＴＯ  ２００４，  ＬＮＣＳ  ３１５２，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ｐｐ．  ４１−−５５，  ２００４．
【非特許文献６】Ｄ．  Ｂｏｎｅｈ  ａｎｄ  Ｍ．  Ｆｒａｎｋｌｉｎ，  “Ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｆｒｏｍ  ｔｈｅ  Ｗｅｉｌ  ｐａｉｒｉｎｇ，”  ＣＲＹＰＴＯ  ２００１，  ＬＮＣＳ  ２１３９，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ｐｐ．２１３−−２２９，  ２００１．
【非特許文献７】Ｄ．  Ｂｏｎｅｈ  ａｎｄ  Ｊ．  Ｋａｔｚ，  “Ｉｍｐｒｏｖｅｄ  ｅｆｆｉｃｉｅｎｃｙ  ｆｏｒ  ｃｃａ−ｓｅｃｕｒｅ  ｃｒｙｐｔｏｓｙｓｔｅｍｓ  ｂｕｉｌｔ  ｕｓｉｎｇ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ，”  ＲＳＡ−ＣＴ  ２００５，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ２００５．
【非特許文献８】Ｊ．  Ｂｅｔｈｅｎｃｏｕｒｔ，  Ａ．  Ｓａｈａｉ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ，“Ｃｉｐｈｅｒｔｅｘｔ−ｐｏｌｉｃｙ  ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ，”  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００７  ＩＥＥＥ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｐｒｉｖａｃｙ，  ２００７．
【非特許文献９】Ｄ．Ｂｏｎｅｈ  ａｎｄ  Ｂ．Ｗａｔｅｒｓ，  “Ｃｏｎｊｕｎｃｔｉｖｅ，  ｓｕｂｓｅｔ，  ａｎｄ  ｒａｎｇｅ  ｑｕｅｒｉｅｓ  ｏｎ  ｅｎｃｒｙｐｔｅｄ  ｄａｔａ，”  ＴＣＣ  ２００７，  ＬＮＣＳ  ４３９２，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ｐｐ．  ５３５−−５５４，  ２００７．
【非特許文献１０】Ｘ．Ｂｏｙｅｎ  ａｎｄ  Ｂ．Ｗａｔｅｒｓ，  “Ａｎｏｎｙｍｏｕｓ  ｈｉｅｒａｒｃｈｉｃａｌ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  （ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ），”ＣＲＹＰＴＯ  ２００６，  ｐｐ．  ２９０−−３０７，  ２００６．
【非特許文献１１】Ｒ．  Ｃａｎｅｔｔｉ，  Ｓ．  Ｈａｌｅｖｉ  ａｎｄ  Ｊ．  Ｋａｔｚ，  “Ｃｈｏｓｅｎ−ｃｉｐｈｅｒｔｅｘｔ  ｓｅｃｕｒｉｔｙ  ｆｒｏｍ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ，”  ＥＵＲＯＣＲＹＰＴ  ２００４，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００４．
【非特許文献１２】Ｃ．  Ｃｏｃｋｓ，  “Ａｎ  ｉｄｅｎｔｉｔｙ  ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅ  ｂａｓｅｄ  ｏｎ  ｑｕａｄｒａｔｉｃ  ｒｅｓｉｄｕｅｓ，”  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ８ｔｈ  ＩＭＡ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  Ｃｏｄｉｎｇ，  ｐｐ．  ３６０−−３６３，  Ｌｏｎｄｏｎ，  ＵＫ，  ２００１．  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００１．
【非特許文献１３】Ｃ．  Ｇｅｎｔｒｙ，  “Ｐｒａｃｔｉｃａｌ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈｏｕｔ  ｒａｎｄｏｍ  ｏｒａｃｌｅｓ，”  ＥＵＲＯＣＲＹＰＴ  ２００６，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００６．
【非特許文献１４】Ｃ．Ｇｅｎｔｒｙ  ａｎｄ  Ａ．  Ｓｉｌｖｅｒｂｅｒｇ，“Ｈｉｅｒａｒｃｈｉｃａｌ  ＩＤ−ｂａｓｅｄ  ｃｒｙｐｔｏｇｒａｐｈｙ，”  ＡＳＩＡＣＲＹＰＴ  ２００２，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  ２００２．
【非特許文献１５】Ｖ．  Ｇｏｙａｌ，  Ｏ．  Ｐａｎｄｅｙ，  Ａ．  Ｓａｈａｉ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ，“Ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｆｏｒ  ｆｉｎｅ−ｇｒａｉｎｅｄ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ  ｏｆ  ｅｎｃｒｙｐｔｅｄ  ｄａｔａ，”  ＡＣＭ−ＣＣＣＳ  ２００６，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ２００６．
【非特許文献１６】Ｊ．  Ｇｒｏｔｈ  ａｎｄ  Ａ．  Ｓａｈａｉ，“Ｅｆｆｉｃｉｅｎｔ  ｎｏｎ−ｉｎｔｅｒａｃｔｉｖｅ  ｐｒｏｏｆ  ｓｙａｔｅｍｓ  ｆｏｒ  ｂｉｌｉｎｅａｒ  ｇｒｏｕｐｓ，”ＥＵＲＯＣＲＹＰＴ  ２００８，ＬＮＣＳ  ４９６５，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ｐｐ．  ４１５−−４３２，  ２００８．
【非特許文献１７】Ｊ．  Ｈｏｒｗｉｔｚ  ａｎｄ  Ｂ．  Ｌｙｎｎ，  “Ｔｏｗａｒｄｓ  ｈｉｅｒａｒｃｈｉｃａｌ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ，”  ＥＵＲＯＣＲＹＰＴ  ２００２，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ２００２．
【非特許文献１８】Ｊ．  Ｋａｔｚ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ“Ｃｏｍｐａｃｔ  ｓｉｇｎａｔｕｅｓ  ｆｏｒ  ｎｅｔｗｏｒｋ  ｃｏｄｉｎｇ，”ａｖａｉｌａｂｌｅ  ａｔ  ＩＡＣＲ  ｅＰｒｉｎｔ  ２００８／３１６．
【非特許文献１９】Ｊ．  Ｋａｔｚ，  Ａ．  Ｓａｈａｉ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ“Ｐｒｅｄｉｃａｔｅ  ｅｎｃｒｙｐｔｉｏｎ  ｓｕｐｐｏｒｔｉｎｇ  ｄｉｓｊｕｎｃｔｉｏｎｓ，ｐｏｌｙｎｏｍｉａｌ  ｅｑｕａｔｉｏｎｓ，  ａｎｄ  ｉｎｎｅｒ  ｐｒｏｄｕｃｔｓ，”ＥＵＲＯＣＲＹＰＴ  ２００８，ＬＮＣＳ  ４９６５，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ｐｐ．１４６−−１６２，  ２００８．
【非特許文献２０】Ｄ．Ｈｏｆｈｅｉｎｚ  ａｎｄ  Ｅ．Ｋｉｌｔｚ，“Ｓｅｃｕｒｅ  ｈｙｂｒｉｄ  ｅｎｃｒｙｐｔｉｏｎ  ｆｒｏｍ  ｗｅａｋｅｎｅｄ  ｋｅｙ  ｅｎｃａｐｓｕｌａｔｉｏｎ，”ＣＲＹＰＴＯ  ２００７，  ＬＮＣＳ  ４６２２，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ｐｐ．  ５５３−−５７１，  ２００７．
【非特許文献２１】Ｔ．  Ｏｋａｍｏｔｏ  ａｎｄ  Ｋ．  Ｔａｋａｓｈｉｍａ，“Ｈｏｍｏｍｏｒｐｈｉｃ  ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  ｓｉｇｎａｔｕｒｅｓ  ｆｒｏｍ  ｖｅｃｔｏｒ  ｄｅｃｏｍｐｏｓｉｔｉｏｎ，”Ｐａｉｒｉｎｇ  ２００８．  ＬＮＣＳ  ５２０９，  ｐｐ．  ５７−−７４．Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ２００８．
【非特許文献２２】Ｒ．  Ｏｓｔｒｏｖｓｋｙ，  Ａ．  Ｓａｈａｉ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ，  “Ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  ｎｏｎ−ｍｏｎｏｔｏｎｉｃ  ａｃｃｅｓｓｓｔｒｕｃｔｕｒｅｓ，”  ＡＣＭ  ＣＣＳ  ２００７，  ２００７．
【非特許文献２３】Ｍ．  Ｐｉｒｒｅｔｔｉ，  Ｐ．  Ｔｒａｙｎｏｒ，  Ｐ．  ＭｃＤａｎｉｅｌ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ，  “Ｓｅｃｕｒｅ  ａｔｔｒｉｂｕｔｅ−ｂａｓｅｄ  ｓｙｓｔｅｍｓ，”ＡＣＭ  ＣＣＳ  ２００６，  ２００６．
【非特許文献２４】Ｈ．Ｓｈａｃｈａｍ，  “Ａ  Ｃｒａｍｅｒ−Ｓｈｏｕｐ  ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅ  ｆｒｏｍ  ｔｈｅ  ｌｉｎｅａｒ  ａｓｓｕｍｐｔｉｏｎ  ａｎｄ  ｆｒｏｍ  ｐｒｏｇｒｅｓｓｉｖｅｌｙ  ｗｅａｋｅｒ  ｌｉｎｅａｒ  ｖａｒｉａｎｔｓ，”  ａｖａｉｌａｂｌｅ  ａｔ  ＩＡＣＲ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ，  ２００７／０７４，  ２００７．
【非特許文献２５】Ａ．  Ｓａｈａｉ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ，“Ｆｕｚｚｙ  ｉｄｅｎｔｉｔｙ−ｂａｓｅｄ  ｅｎｃｒｙｐｔｉｏｎ，”  ＥＵＲＯＣＲＹＰＴ  ２００５，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ２００５．
【非特許文献２６】Ｅ．  Ｓｈｉ  ａｎｄ  Ｂ．  Ｗａｔｅｒｓ，“Ｄｅｌｅｇａｔｉｎｇ  ｃａｐａｂｉｌｉｔｙ  ｉｎ  ｐｒｅｄｉｃａｔｅ  ｅｎｃｒｙｐｔｉｏｎ  ｓｙｓｔｅｍｓ，”  ＩＣＡＬＰ  ２００８，  ＬＮＣＳ，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ２００８．
【非特許文献２７】Ｋ．Ｔａｋａｓｈｉｍａ，“Ｅｆｆｉｃｉｅｎｔｌｙ  ｃｏｍｐｕｔａｂｌｅ  ｄｉｓｔｏｒｔｉｏｎ  ｍａｐｓ  ｆｏｒ  ｓｕｐｅｒｓｉｎｇｕｌａｒ  ｃｕｒｖｅｓ，”ＡＮＴＳ，  ＬＮＣＳ  ５０１１，  Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ，  ｐｐ．８８−−１０１，  ２００８．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１９では、述語暗号における権限委譲についての記載はない。また、非特許文献２６では、述語暗号における権限委譲についての記載があるものの、等号関係テストのクラスについての述語暗号に限定されたものである。
この発明は、例えば、適用範囲の広い権限委譲可能な述語暗号処理を提供することを目的とする。
【課題を解決するための手段】
【０００５】
この発明に係る暗号処理システムは、例えば、ペアリング演算によって関連付けられた双対ベクトル空間である空間Ｖと空間Ｖ＊とを用いて暗号処理を行う暗号処理システムであり、
前記空間Ｖにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして処理装置により生成する暗号化装置と、
前記空間Ｖ＊における所定のベクトルを鍵ベクトルとして、前記暗号化装置が生成した暗号ベクトルと前記鍵ベクトルとについて、処理装置により前記ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号装置と
を備えることを特徴とする。
【発明の効果】
【０００６】
この発明に係る暗号システムによれば、適用範囲の広い権限委譲可能な述語暗号処理を実現可能である。
【図面の簡単な説明】
【０００７】
【図１】「階層的」という概念を説明するための図。
【図２】属性情報と述語情報との階層構造を示す図。
【図３】階層的ＩＤベース暗号の例を示す図。
【図４】基底と基底ベクトルとを説明するための図。
【図５】ベクトル空間における階層構造の実現方法を説明するための図。
【図６】暗号処理システム１０の構成図。
【図７】暗号処理システム１０の鍵生成装置１００と第１層目の暗号化装置２００と復号装置３００との動作を示すフローチャート。
【図８】暗号処理システム１０の第Ｌ層目の鍵委譲装置４００と、第Ｌ＋１層目の暗号化装置２００と復号装置３００との動作を示すフローチャート。
【図９】基底変換方法を説明するための図。
【図１０】実施の形態２に係る暗号処理システム１０の機能を示す機能ブロック図。
【図１１】鍵生成装置１００の動作を示すフローチャート。
【図１２】暗号化装置２００の動作を示すフローチャート。
【図１３】復号装置３００の動作を示すフローチャート。
【図１４】鍵委譲装置４００の動作を示すフローチャート。
【図１５】実施の形態２に係る双対ディストーションベクトル空間の基底の構造を示す概念図。
【図１６】（Ｓ５０２）におけるペアリング演算を説明するための図。
【図１７】下位の鍵では、セッション鍵Ｋが計算できないことを説明するための図。
【図１８】上位の鍵で、セッション鍵Ｋが計算できることを説明するための図。
【図１９】階層的述語暗号を実現する暗号処理システム１０の機能を示す機能ブロック図。
【図２０】図１９に示す暗号化装置２００の動作を示すフローチャート。
【図２１】図１９に示す復号装置３００の動作を示すフローチャート。
【図２２】実施の形態４に係る暗号処理システム１０の機能を示す機能ブロック図。
【図２３】暗号化装置２００の動作を示すフローチャート。
【図２４】復号装置３００の動作を示すフローチャート。
【図２５】実施の形態４に係る双対ディストーションベクトル空間の基底の構造を示す概念図。
【図２６】ｎコピーベクトル空間を説明するための図（１）。
【図２７】ｎコピーベクトル空間を説明するための図（２）。
【図２８】実施の形態６に係る暗号処理システム１０の機能を示す機能ブロック図。
【図２９】鍵生成装置１００の動作を示すフローチャート。
【図３０】暗号化装置２００の動作を示すフローチャート。
【図３１】復号装置３００の動作を示すフローチャート。
【図３２】鍵委譲装置４００の動作を示すフローチャート。
【図３３】実施の形態７に係る暗号処理システム１０の機能を示す機能ブロック図。
【図３４】暗号化装置２００の動作を示すフローチャート。
【図３５】復号装置３００の動作を示すフローチャート。
【図３６】鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、図に基づき、発明の実施の形態を説明する。
以下の説明において、処理装置は後述するＣＰＵ９１１等である。記憶装置は後述するＲＯＭ９１３、ＲＡＭ９１４、磁気ディスク９２０等である。通信装置は後述する通信ボード９１５等である。入力装置は後述するキーボード９０２、通信ボード９１５等である。出力装置は後述するＲＡＭ９１４、磁気ディスク９２０、通信ボード９１５、ＬＣＤ９０１等である。つまり、処理装置、記憶装置、通信装置、入力装置、出力装置はハードウェアである。
【０００９】
以下の説明における記法について説明する。
Ａがランダムな変数または分布であるとき、数４３は、Ａの分布に従いＡからｙをランダムに選択することを表す。
【数４３】
2010273317.tif 000003
Ａが集合であるとき、数４４は、Ａからｙを一様に選択することを表す。
【数４４】
2010273317.tif 000004
数４５は、ｙがｚにより定義された集合であること、又はｙがｚを代入された集合であることを表す。
【数４５】
2010273317.tif 000005
ａが定数であるとき、数４６は、機械（アルゴリズム）Ａが入力ｘに対しａを出力することを表す。
【数４６】
2010273317.tif 000006
ベクトル表記は、有限体Ｆｑにおけるベクトル表示を表す。つまり、数４７である。
【数４７】
2010273317.tif 000007
数４８は、数４９に示す２つのベクトルｘ→とｖ→との数５０に示す内積を表す。
【数４８】
2010273317.tif 000008
【数４９】
2010273317.tif 000009
【数５０】
2010273317.tif 000010
０→は、どんなｎに対しても有限体数Ｆｑｎにおいて０ベクトルであることを表す。
ＸＴは、行列Ｘの転置行列を表す。
数５１は、ｘｉ，ｊに行列Ｘの（ｉ，ｊ）番目の値が設定されることを表す。
【数５１】
2010273317.tif 000011
【００１０】
また、以下の説明において、暗号処理とは、暗号化処理、復号処理、鍵生成処理を含むものであり、鍵秘匿処理も含むものである。
【００１１】
実施の形態１．
この実施の形態では、後の実施の形態で説明する「階層的述語鍵秘匿方式（Ｈｉｅｒａｒｃｈｉａｌ  Ｐｒｅｄｉｃａｔｅ  Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍ，ＨＰＫＥＭ）」や「階層的述語暗号（Ｈｉｅｒａｒｃｈｉａｌ  Ｐｒｅｄｉｃａｔｅ  Ｅｎｃｒｙｐｔｉｏｎ，ＨＰＥ）」を実現する基礎となる概念と、階層的述語鍵秘匿方式と階層的述語暗号との基本構成について説明する。
第１に、階層的述語鍵秘匿方式及び階層的述語暗号の一種である「階層的内積述語暗号（階層的内積述語鍵秘匿方式）」という概念を説明する。後の実施の形態で説明する階層的述語鍵秘匿方式及び階層的述語暗号は、階層的内積述語暗号及び階層的内積述語鍵秘匿方式である。階層的内積述語暗号という概念を説明するに当たり、まず「階層的」という概念を説明する。次に、「内積述語暗号」を説明する。そして、階層的という概念を内積述語暗号に加えた「階層的内積述語暗号（階層的内積述語鍵秘匿方式）」を説明する。さらに、階層的内積述語暗号の理解を深めるため、階層的内積述語暗号の応用例を説明する。
第２に、ベクトル空間における階層的内積述語暗号を説明する。この実施の形態及び以下の実施の形態では、階層的述語鍵秘匿方式と階層的述語暗号とをベクトル空間において実現する。
第３に、この実施の形態及び後の実施の形態に係る「階層的述語鍵秘匿方式」と「階層的述語暗号」との基本構成を説明する。併せて、階層的述語鍵秘匿方式と階層的述語暗号とを実行する「暗号処理システム１０」の概要を説明する。
第４に、階層的述語鍵秘匿方式や階層的述語暗号を実現するための概念を説明する。まず、双線形ペアリンググループを説明する。続いて、双線形ペアリンググループを用いて、他の概念を以下の（１）から（６）までの６つに分けて説明する。
（１）１次元ペアリング「Ｇ１×Ｇ２→ＧＴ」の空間Ｖ，空間Ｖ＊に対する高次元化。
（２）標準的な双対基底Ａ，Ａ＊。
（３）ディストーション写像を用いた効率的な線形写像。
（４）基底変換による鍵ペア（Ｂ，Ｂ＊）の生成方法。
（５）暗号処理への応用のための（Ｖ，Ｂ），（Ｖ，Ｂ＊）での計算困難問題。
（６）鍵ペア（Ｂ，Ｂ＊）を用いた内積述語暗号。
第５に、階層的述語鍵秘匿方式と階層的述語暗号とを実現するための空間である「双対ディストーションベクトル空間（Ｄｕａｌ  Ｄｉｓｔｏｒｔｉｏｎ  Ｖｅｃｔｏｒ  Ｓｐａｃｅｓ，ＤＤＶＳ）」という豊かな数学的構造を有する空間を説明する。
そして、第６に、以上の説明を踏まえ、後の実施の形態で詳細に説明する階層的述語鍵秘匿方式と階層的述語暗号との実現方法を簡単に説明する。
【００１２】
＜第１．階層的内積述語暗号＞
＜第１−１．階層的という概念＞
この実施の形態及び以下の実施の形態で説明する階層的述語鍵秘匿方式と階層的述語暗号とにおける「階層的」という概念について説明する。
図１は、「階層的」という概念を説明するための図である。
階層的述語鍵秘匿方式と階層的述語暗号とにおける「階層的」とは、権限委譲できる仕組み（権限委譲システム（Ｄｅｌｅｇａｔｉｏｎ  Ｓｙｓｔｅｍ））を有することである。権限委譲とは、上位の鍵を有する利用者が、その鍵（上位の鍵）よりも機能が制限された下位の鍵を生成することである。
図１では、Ｒｏｏｔ（鍵生成装置）は、マスター秘密鍵を用いて、第１層目（Ｌｅｖｅｌ−１）の利用者へ秘密鍵を生成する。つまり、Ｒｏｏｔは、第１層目の利用者１，２，３それぞれへ鍵１，２，３を生成する。そして、例えば、利用者１であれば、鍵１を用いて、利用者１の下位（第１層目）の利用者である利用者１１，１２，１３それぞれへ鍵１１，１２，１３を生成することができる。ここで、利用者１が有する鍵１よりも、利用者１１，１２，１３が有する鍵１１，１２，１３は機能が制限されている。機能が制限されているとは、その秘密鍵によって復号できる暗号文が限定されているということである。つまり、上位の秘密鍵で復号できる暗号文の一部の暗号文のみ下位の秘密鍵で復号できることを意味する。すなわち、利用者１が有する鍵１で復号できる暗号文のうち、一部の暗号文のみ利用者１１，１２，１３が有する鍵１１，１２，１３で復号することができる。また、通常は、鍵１１と鍵１２と鍵１３とが復号できる暗号文は異なる。一方、鍵１１と鍵１２と鍵１３が復号できる暗号文は、鍵１で復号することができる。
【００１３】
＜第１−２．内積述語暗号＞
次に、「内積述語暗号」について説明する。
まず、述語暗号とは、述語情報ｆｖに属性情報ｘを入力した場合に１（Ｔｒｕｅ）となる場合（ｆｖ（ｘ）＝１となる場合）に、暗号文を復号できる暗号方式である。通常、暗号文に属性情報ｘが埋め込まれ、秘密鍵に述語情報ｆｖが埋め込まれる。つまり、述語暗号では、属性情報ｘに基づき暗号化された暗号文ｃを、述語情報ｆｖに基づき生成された秘密鍵ＳＫｆにより復号する。述語暗号は、例えば、述語情報ｆｖが条件式であり、属性情報ｘがその条件式への入力情報であり、入力情報（属性情報ｘ）が条件式（述語情報ｆｖ）を満たせば（ｆｖ（ｘ）＝１）、暗号文を復号できる暗号方式であるとも言える。
なお、述語暗号について詳しくは非特許文献１９に記載されている。
【００１４】
内積述語暗号とは、属性情報ｘと述語情報ｆｖとの内積が所定の値の場合に、ｆｖ（ｘ）＝１となる述語暗号である。つまり、属性情報ｘと述語情報ｆｖとの内積が所定の値の場合にのみ、属性情報ｘにより暗号化された暗号文ｃを、述語情報ｆｖに基づき生成された秘密鍵ＳＫｆにより復号することができる。以下の説明では、属性情報ｘと述語情報ｆｖとの内積が０の場合に、ｆｖ（ｘ）＝１となるものとする。
【００１５】
＜第１−３．階層的内積述語暗号＞
階層的内積述語暗号（階層的内積述語鍵秘匿方式）とは、上述した「階層的」という概念を有する「内積述語暗号」である。つまり、階層的内積述語暗号（階層的内積述語鍵秘匿方式）とは、権限委譲システムを有する内積述語暗号である。
【００１６】
階層的内積述語暗号は、内積述語暗号に権限委譲システムを持たせるため、属性情報と述語情報とに階層構造を有する。
図２は、属性情報と述語情報との階層構造を示す図である。
図２において、符号が対応する属性情報と述語情報とは対応する（つまり、内積が０となる）ものとする。つまり、属性１と述語１との内積は０となり、属性１１と述語１１との内積は０となり、属性１２と述語１２との内積は０となり、属性１３と述語１３との内積は０となるとする。すなわち、属性１により暗号化された暗号文ｃ１は、述語１に基づき生成された秘密鍵ｋ１であれば復号できる。また、属性１１により暗号化された暗号文ｃ１１は、述語１１に基づき生成された秘密鍵ｋ１１であれば復号できる。属性１２と述語１２、属性１３と述語１３についても同様のことが言える。
上記の通り、階層的内積述語暗号は権限委譲システムを有する。そのため、述語１に基づき生成された秘密鍵ｋ１と、述語１１とに基づき、秘密鍵ｋ１１を生成することができる。つまり、上位の秘密鍵ｋ１を有する利用者は、その秘密鍵ｋ１と下位の述語１１とから、秘密鍵ｋ１の下位の秘密鍵ｋ１１を生成することができる。同様に、秘密鍵ｋ１と述語１２とから秘密鍵ｋ１２を生成でき、秘密鍵ｋ１と述語１３とから秘密鍵ｋ１３を生成できる。
また、下位の秘密鍵に対応する鍵（公開鍵）で暗号化された暗号文を上位の秘密鍵で復号できる。一方、上位の秘密鍵に対応する鍵（公開鍵）で暗号化された暗号文は、下位の秘密鍵で復号できない。つまり、属性１１、属性１２、属性１３により暗号化された暗号文ｃ１１、ｃ１２、ｃ１３は、述語１に基づき生成された秘密鍵ｋ１であれば復号できる。一方、属性１により暗号化された暗号文ｃ１は、述語１１、述語１２、述語１３に基づき生成された秘密鍵ｋ１１、ｋ１２、ｋ１３では復号できない。すなわち、属性１１、属性１２、属性１３と述語１との内積は０となる。一方、属性１と述語１１、述語１２、述語１３との内積は０とならない。
【００１７】
＜第１−４．階層的内積述語暗号の応用例＞
図３は、後述する階層的内積述語暗号の応用例である階層的ＩＤベース暗号（Ｈｉｅｒａｒｃｈｉａｌ  Ｉｄｅｎｔｉｆｉｅｒ  Ｂａｓｅｄ  Ｅｎｃｒｙｐｔｉｏｎ，ＨＩＢＥ）の例を示す図である。なお、階層的ＩＤベース暗号とは、ＩＤベース暗号が階層的になった暗号処理である。ＩＤベース暗号は、述語暗号の一種であり、暗号文に含まれるＩＤと秘密鍵に含まれるＩＤとが一致する場合に暗号文を復号できるマッチング述語暗号である。
図３に示す例では、Ｒｏｏｔ（鍵生成装置）は、マスター秘密鍵ｓｋとＡ会社のＩＤである「Ａ」とに基づき、ＩＤ「Ａ」に対応する秘密鍵（鍵Ａ）を生成する。例えば、Ａ会社のセキュリティ担当者は、鍵Ａと各部門のＩＤとに基づき、そのＩＤに対応する秘密鍵を生成する。例えば、セキュリティ担当者は、営業部門のＩＤである「Ａ−１」に対応する秘密鍵（鍵１）を生成する。次に、例えば、各部門の管理者は、その部門の秘密鍵とその部門に属する各課のＩＤとに基づき、そのＩＤに対応する秘密鍵を生成する。例えば、営業部門の管理者は、営業１課のＩＤである「Ａ−１１」に対応する秘密鍵（鍵１１）を生成する。
ここで、営業１課のＩＤ「Ａ−１１」に対応する秘密鍵である鍵１１により、営業１課のＩＤ「Ａ−１１」で暗号化された暗号文を復号することができる。しかし、鍵１１により、営業２課や営業３課のＩＤで暗号化された暗号文は復号することはできない。また、鍵１１により、営業部門のＩＤで暗号化された暗号文は復号することができない。
営業部門のＩＤ「Ａ−１」に対応する秘密鍵である鍵１により、営業部門のＩＤ「Ａ−１」で暗号化された暗号文を復号することができる。また、鍵１により、営業部門に属する課のＩＤで暗号化された暗号文を復号することができる。つまり、鍵１により、営業１課、営業２課、営業３課のＩＤで暗号化された暗号文を復号することができる。しかし、鍵１により、製造部門（ＩＤ：Ａ−２）やスタッフ部門（ＩＤ：Ａ−３）のＩＤで暗号化された暗号文は復号することができない。また、鍵１により、Ａ会社のＩＤで暗号化された暗号文は復号することができない。
Ａ会社のＩＤ「Ａ」に対応する秘密鍵である鍵Ａにより、Ａ会社のＩＤ「Ａ」で暗号化された暗号文を復号することができる。また、Ａ会社に属する各部門や、その部門に属する課のＩＤで暗号化された暗号文を復号することができる。
【００１８】
ＩＤベース暗号以外へも様々な応用が可能である。特に、以下に説明する暗号処理は、等号関係テストのクラスに限定されたものではないため、非常に多くの応用が可能である。例えば、内積述語暗号の一種である検索可能暗号等についても、階層毎に検索可能な範囲をＡＮＤ条件やＯＲ条件等の条件式を用いて限定する等、従来の権限委譲システムを有する述語暗号では実現できなかった応用が可能である。
つまり、後の実施の形態で説明する階層的述語鍵秘匿方式と階層的述語暗号とは、ＩＤベース暗号や検索可能暗号等へ幅広い応用が可能である。
【００１９】
＜第２．ベクトル空間における階層的内積述語暗号＞
階層的述語鍵秘匿方式と階層的述語暗号とは、後述する双対ディストーションベクトル空間という高次元ベクトル空間において実現される。そこで、ベクトル空間における階層的内積述語暗号を説明する。
【００２０】
まず、ベクトル空間の説明において使用する「基底」と「基底ベクトル」とについて簡単に説明する。
図４は、基底と基底ベクトルとを説明するための図である。
図４は、２次元ベクトル空間におけるベクトルｖを示す。ベクトルｖは、ｃ０ａ０＋ｃ１ａ１である。また、ベクトルｖは、ｙ０ｂ０＋ｙ１ｂ１である。ここで、ａ０，ａ１を基底Ａにおける基底ベクトルといい、基底Ａ：＝（ａ０，ａ１）と表す。また、ｂ０，ｂ１を基底Ｂにおける基底ベクトルといい、基底Ｂ：＝（ｂ０，ｂ１）と表す。また、ｃ０，ｃ１，ｙ０，ｙ１は、各基底ベクトルに対する係数である。図１では、２次元ベクトル空間であったため、各基底における基底ベクトルは２個であった。しかし、Ｎ次元ベクトル空間であれば、各基底における基底ベクトルはＮ個である。
【００２１】
次に、ベクトル空間における内積述語暗号を説明する。
上記の通り、内積述語暗号とは、属性情報ｘと述語情報ｆｖとの内積が所定の値（ここでは、０）の場合に、ｆｖ（ｘ）＝１となる述語暗号である。属性情報ｘと述語情報ｆｖとがベクトルであった場合、つまり属性ベクトルｘ→と述語ベクトルｖ→とであった場合、内積述語は数５２のように定義される。
【数５２】
2010273317.tif 000012
つまり、属性ベクトルｘ→と述語ベクトルｖ→との内積、つまり要素毎の内積の和が０である場合に、述語情報ｆｖに属性情報ｘを入力した結果が１（Ｔｒｕｅ）となり、属性ベクトルｘ→と述語ベクトルｖ→との内積が０でない場合に、述語情報ｆｖに属性情報ｘを入力した結果が０（Ｆａｌｓｅ）となる述語暗号である。
【００２２】
次に、ベクトル空間における階層構造の実現方法を説明する。
図５は、ベクトル空間における階層構造の実現方法を説明するための図である。
ここで扱うベクトル空間は、高次元（Ｎ次元）ベクトル空間であるとする。つまり、ベクトル空間における所定の基底Ｃには、基底ベクトルｃｉ（ｉ＝０，．．．，Ｎ−１）のＮ個の基底ベクトルが存在する。
Ｎ個の基底ベクトルのうちのｎ個の基底ベクトル（基底ベクトルｃｉ（ｉ＝０，．．．，ｎ−１））を階層構造を表すために使用する。また、基底ベクトルｃｉ（ｉ＝０，．．．，ｎ−１）を、基底ベクトルｃｉ（ｉ＝０，．．．，μ１−１）と、基底ベクトルｃｉ（ｉ＝μ１，．．．，μ２−１）と、．．．、基底ベクトルｃｉ（ｉ＝μｄ−１，．．．，ｎ−１）とのｄ個に分割する。ここで、ｄは、階層の深さを表す数となる。
そして、μ１個の基底ベクトルｃｉ（ｉ＝０，．．．，μ１−１）を第１層目の属性情報や述語情報を表すために割り当てる。また、μ２−μ１個の基底ベクトルｃｉ（ｉ＝μ１，．．．，μ２−１）を第２層目の属性情報や述語情報を表すために割り当てる。以下同様に、μｄ−μｄ−１個の基底ベクトルｃｉ（ｉ＝μｄ−１，．．．，μｄ−１（＝ｎ−１））を第ｄ層目の属性情報や述語情報を表すために割り当てる。
また、第Ｌ層目の属性情報によって暗号文を生成する場合には、第Ｌ層目の属性情報だけでなく、第１層目から第Ｌ層目までの属性情報を用いて暗号文を生成する。同様に、第Ｌ層目の述語情報によって秘密鍵を生成する場合には、第Ｌ層目の述語情報だけでなく、第１層目から第Ｌ層目までの述語情報を用いて秘密鍵を生成する。つまり、第Ｌ層目の属性情報によって暗号文を生成する場合や、第Ｌ層目の述語情報によって秘密鍵を生成する場合には、第１層目から第Ｌ層目までに割り当てられたμＬ個の基底ベクトルｃｉ（ｉ＝０，．．．，μＬ−１）を用いる。例えば、第３層目の属性情報によって暗号文を生成する場合には、第１層目から第３層目までに割り当てられたμ３個の基底ベクトルｃｉ（ｉ＝０，．．．，μ３−１）を用いて、第１層目から第３層目までの属性情報を表して暗号文を生成する。同様に、第３層目の述語情報によって秘密鍵を生成する場合には、第１層目から第３層目までに割り当てられたμ３個の基底ベクトルｃｉ（ｉ＝０，．．．，μ３−１）を用いて、第１層目から第３層目までの述語情報を表して秘密鍵を生成する。つまり、下位の層で使用される属性情報や述語情報には、上位の層で使用される属性情報や述語情報が含まれる。これにより、属性情報と述語情報とに階層構造を持たせる。そして、この属性情報と述語情報とに階層構造を利用して、内積述語暗号に権限委譲システムを持たせる。
【００２３】
なお、以下の説明においては、ベクトル空間における階層的構造を示すために、階層情報μ→を用いる。階層情報μ→を数５３に示す。
【数５３】
2010273317.tif 000013
つまり、階層情報μ→は、階層構造を表すために割り当てられた基底ベクトル数（次元数）を示すｎと、階層の深さを示すｄと、各階層に割り当てられた基底ベクトルを示すためのμ１，．．．，μｄとの情報を有する。
【００２４】
次に、ベクトル空間における階層的内積述語暗号を説明する。
まず、各階層の空間における内積述語について説明する。各階層の空間とは、各階層の属性情報や述語情報を表すために割り当てられた空間である。つまり、第ｊ層目の階層の空間であれば、基底ベクトルｃｉ（ｉ＝μｊ−１，．．．，μｊ）で表される空間である。
属性空間Σｉ（ｉ＝１，．．．，ｄ）を、第ｉ層目の属性情報を表すために割り当てられた空間であるとする。同様に、述語空間Ｆｉ（ｉ＝１，．．．，ｄ）を、第ｉ層目の述語情報を表すために割り当てられた空間であるとする。つまり、属性空間Σｉは、所定の基底Σの基底ベクトルσｊ（ｊ＝μｉ−１，．．．，μｉ）で表された属性情報の空間である。同様に、述語空間Ｆｉは、所定の基底Ｆの基底ベクトルｆｊ（ｊ＝μｉ−１，．．．，μｉ）で表された述語情報の空間である。すなわち、属性空間Σ１であれば、基底ベクトルσｊ（ｊ＝０，．．．，μ１−１）で表された属性情報の空間である。また、属性空間Σ２であれば、基底ベクトルσｊ（ｊ＝μ１，．．．，μ２−１）で表された属性情報の空間である。述語空間Ｆｉについても同様である。
つまり、属性空間Σｉ（ｉ＝１，．．．，ｄ）と述語空間Ｆｉ（ｉ＝１，．．．，ｄ）とは、それぞれ数５４に示す属性情報と述語情報との集合である。
【数５４】
2010273317.tif 000014
すると、各属性空間Σｉ（ｉ＝１，．．．，ｄ）について、内積述語は数５５のように定義される。
【数５５】
2010273317.tif 000015
つまり、各階層の空間において、属性ベクトルｘ→と述語ベクトルｖ→との内積が０の場合に、述語情報ｆｖに属性情報ｘを入力した結果が１（Ｔｒｕｅ）となる。すなわち、ある階層の属性ベクトルｘ→と同じ階層の述語ベクトルｖ→との内積が０の場合に、述語情報ｆｖに属性情報ｘを入力した結果が１（Ｔｒｕｅ）となる。
【００２５】
次に、階層的な空間における内積述語について説明する。階層的な空間とは、上位の属性情報や述語情報を表すために割り当てられた空間も含んだ空間である。つまり、第ｊ層目の階層的な空間であれば、基底ベクトルｃｉ（ｉ＝０，．．．，μｊ）で表された空間である。
すなわち、階層的な属性空間Σと階層的な述語空間Ｆとは、それぞれ数５６に示す空間である。
【数５６】
2010273317.tif 000016
ここで、数５６に示す階層的な属性空間Σと階層的な述語空間Ｆとにおける和集合は互いに素な和集合である。数５７に示す階層的な属性情報についての数５８に示す階層的な述語情報は、数５９のように定義される。
【数５７】
2010273317.tif 000017
【数５８】
2010273317.tif 000018
【数５９】
2010273317.tif 000019
つまり、ベクトル空間における階層的内積述語暗号は、（１）階層的な述語ベクトルｖ→の階層Ｌｖが階層的な属性ベクトルｘ→の階層Ｌｘと同じか上位であり、（２）属性空間Σｉ（ｉ＝１，．．．，Ｌｖ）における属性ベクトルｘ→と、各述語空間Ｆｉ（ｉ＝１，．．．，Ｌｖ）における述語ベクトルｖ→との内積が０である場合に、数５８に示す階層的な述語情報へ数５７に示す階層的な属性情報を入力した結果が１（Ｔｒｕｅ）となる述語暗号である。
【００２６】
＜第３．階層的述語鍵秘匿方式と階層的述語暗号との構成＞
＜第３−１．階層的述語鍵秘匿方式＞
階層的述語鍵秘匿方式の構成を簡単に説明する。
階層的述語鍵秘匿方式は、Ｓｅｔｕｐ、ＧｅｎＫｅｙ、Ｅｎｃ、Ｄｅｃ、ＤｅｌｅｇａｔｅＬ（Ｌ＝１，．．．，ｄ−１）の５つの確率的多項式時間アルゴリズムを備える。
（Ｓｅｔｕｐ）
Ｓｅｔｕｐアルゴリズムでは、セキュリティパラメータ１λと階層情報μ→とが入力され、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとが出力される。マスター秘密鍵ｓｋは最も上位の鍵である。
（ＧｅｎＫｅｙ）
ＧｅｎＫｅｙアルゴリズムでは、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと数６０に示す述語ベクトルｖ→１（なお、述語ベクトルｖ→１を単にｖ→１と記載する場合もある）が入力され、数６１に示す第１層目の秘密鍵が出力される。
【数６０】
2010273317.tif 000020
【数６１】
2010273317.tif 000021
（Ｅｎｃ）
Ｅｎｃアルゴリズムでは、マスター公開鍵ｐｋと属性ベクトルｘ→ｉ（ｉ＝１，．．．，Ｌｘ）（１≦Ｌｘ≦ｄ）とが入力され、暗号文ｃとセッション鍵Ｋとが出力される。つまり、Ｅｎｃアルゴリズムでは、所定の情報（ρ）を埋め込み属性ベクトルｘ→ｉ（ｉ＝１，．．．，Ｌｘ）（１≦Ｌｘ≦ｄ）により暗号化された暗号文ｃと、所定の情報（ρ）から生成したセッション鍵Ｋとが出力される。
（Ｄｅｃ）
Ｄｅｃアルゴリズムでは、マスター公開鍵ｐｋと数６２に示す第Ｌｖ層目の秘密鍵（１≦Ｌｖ≦ｄ）と暗号文ｃとが入力され、セッション鍵Ｋ又は識別情報⊥が出力される。識別情報⊥とは、復号に失敗したことを示す情報である。つまり、Ｄｅｃアルゴリズムでは、暗号文ｃを第Ｌｖ層目の秘密鍵で復号して、所定の情報（ρ）に関する情報を抽出し、セッション鍵Ｋを生成する。また、復号に失敗した場合には識別情報⊥を出力する。
【数６２】
2010273317.tif 000022
（ＤｅｌｅｇａｔｅＬ）
ＤｅｌｅｇａｔｅＬアルゴリズムでは、マスター公開鍵ｐｋと数６３に示す第Ｌ層目の秘密鍵と数６４に示す第Ｌ＋１層目の述語ベクトルｖ→Ｌ＋１（なお、述語ベクトルｖ→Ｌ＋１を単にｖ→Ｌ＋１と記載する場合もある）とが入力され、数６５に示す第Ｌ＋１層目の秘密鍵が出力される。つまり、ＤｅｌｅｇａｔｅＬアルゴリズムでは、下位の秘密鍵が出力される。
【数６３】
2010273317.tif 000023
【数６４】
2010273317.tif 000024
【数６５】
2010273317.tif 000025
【００２７】
つまり、第Ｌｖ層目の秘密鍵は、数６６に示すＧｅｎＫｅｙとＤｅｌｅｇａｔｅｉとのアルゴリズムを用いたＤｅｒｉｖｅＬｖアルゴリズムによって計算される。
【数６６】
2010273317.tif 000026
【００２８】
＜第３−２．階層的述語暗号＞
階層的述語暗号の概要を説明する。
階層的述語暗号は、階層的述語鍵秘匿方式と同様に、Ｓｅｔｕｐ、ＧｅｎＫｅｙ、Ｅｎｃ、Ｄｅｃ、ＤｅｌｅｇａｔｅＬ（Ｌ＝１，．．．，ｄ−１）の５つの確率的多項式時間アルゴリズムを備える。
（Ｓｅｔｕｐ）
階層的述語鍵秘匿方式と同様に、Ｓｅｔｕｐアルゴリズムでは、セキュリティパラメータ１λと階層情報μ→とが入力され、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとが出力される。
（ＧｅｎＫｅｙ）
階層的述語鍵秘匿方式と同様に、ＧｅｎＫｅｙアルゴリズムでは、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと数６７に示す述語ベクトルｖ→１が入力され、数６８に示す第１層目の秘密鍵が出力される。
【数６７】
2010273317.tif 000027
【数６８】
2010273317.tif 000028
（Ｅｎｃ）
Ｅｎｃアルゴリズムでは、マスター公開鍵ｐｋと属性ベクトルｘ→ｉ（ｉ＝１，．．．，Ｌｘ）（１≦Ｌｘ≦ｄ）と平文情報ｍとが入力され、暗号文ｃが出力される。つまり、Ｅｎｃアルゴリズムでは、平文情報ｍを埋め込み属性ベクトルｘ→ｉ（ｉ＝１，．．．，Ｌｘ）（１≦Ｌｘ≦ｄ）により暗号化された暗号文ｃが出力される。
（Ｄｅｃ）
Ｄｅｃアルゴリズムでは、マスター公開鍵ｐｋと数６９に示す第Ｌｖ層目の秘密鍵（１≦Ｌｖ≦ｄ）と暗号文ｃとが入力され、平文情報ｍ又は識別情報⊥が出力される。識別情報⊥とは、復号に失敗したことを示す情報である。つまり、Ｄｅｃアルゴリズムでは、暗号文ｃを第Ｌｖ層目の秘密鍵で復号して、平文情報ｍを抽出する。また、復号に失敗した場合には識別情報⊥を出力する。
【数６９】
2010273317.tif 000029
（ＤｅｌｅｇａｔｅＬ）
階層的述語鍵秘匿方式と同様に、ＤｅｌｅｇａｔｅＬでは、マスター公開鍵ｐｋと数７０に示す第Ｌ層目の秘密鍵と数７１に示す第Ｌ＋１層目の述語ベクトルｖ→Ｌ＋１とが入力され、数７２に示す第Ｌ＋１層目の秘密鍵が出力される。つまり、ＤｅｌｅｇａｔｅＬアルゴリズムでは、下位の秘密鍵が出力される。
【数７０】
2010273317.tif 000030
【数７１】
2010273317.tif 000031
【数７２】
2010273317.tif 000032
なお、第Ｌｖ層目の秘密鍵は、階層的述語鍵秘匿方式と同様に、上述した数６６に示すＤｅｒｉｖｅＬｖアルゴリズムによって計算される。
【００２９】
＜第３−３．暗号処理システム１０＞
暗号処理システム１０について説明する。暗号処理システム１０は、上述した階層的述語鍵秘匿方式と階層的述語暗号とのアルゴリズムを実行する。
図６は、暗号処理システム１０の構成図である。
暗号処理システム１０は、鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００を備える。なお、ここでは、復号装置３００は、鍵委譲装置４００を備えるものとする。また、上述したように、暗号処理システム１０は、階層的な暗号処理を実行するものであるため、暗号処理システム１０は、複数の暗号化装置２００、複数の復号装置３００、複数の鍵委譲装置４００を備えるものとする。
鍵生成装置１００は、階層的述語鍵秘匿方式と階層的述語暗号とのＳｅｔｕｐ、ＧｅｎＫｅｙアルゴリズムを実行する。
暗号化装置２００は、階層的述語鍵秘匿方式と階層的述語暗号とのＥｎｃアルゴリズムを実行する。
復号装置３００は、階層的述語鍵秘匿方式と階層的述語暗号とのＤｅｃアルゴリズムを実行する。
鍵委譲装置４００は、階層的述語鍵秘匿方式と階層的述語暗号とのＤｅｌｅｇａｔｅＬアルゴリズムを実行する。
【００３０】
図７は、暗号処理システム１０の鍵生成装置１００と第１層目の暗号化装置２００と復号装置３００との動作を示すフローチャートである。つまり、図７は、マスター鍵（マスター公開鍵とマスター秘密鍵）の生成、第１層目の秘密鍵の生成から、第１層目における暗号化と復号とまでの動作を示すフローチャートである。
（Ｓ１０１：鍵生成ステップ）
鍵生成装置１００は、Ｓｅｔｕｐアルゴリズムを実行してマスター公開鍵ｐｋとマスター秘密鍵ｓｋとを生成する。また、鍵生成装置１００は、生成したマスター公開鍵ｐｋとマスター秘密鍵ｓｋと、所定の復号装置３００（第１層目の復号装置３００）に対応する述語ベクトルｖ→１（ｖ→１＝（ｖ０，．．．，ｖｉ）（ｉ＝μＬ−１））とに基づき、ＧｅｎＫｅｙアルゴリズムを実行して第１層目の秘密鍵を生成する。そして、鍵生成装置１００は、生成したマスター公開鍵ｐｋを公開（配布）するとともに、第１層目の秘密鍵を前記所定の復号装置３００へ秘密裡に配布する。なお、鍵生成装置１００は、マスター秘密鍵を秘密裡に保持する。
（Ｓ１０２：暗号化ステップ）
暗号化装置２００は、（Ｓ１０１）で鍵生成装置１００が配布したマスター公開鍵ｐｋと、前記復号装置３００の属性ベクトルｘ→１（ｘ→１＝（ｘ０，．．．，ｘｉ）（ｉ＝μＬ−１））とに基づき、Ｅｎｃアルゴリズムを実行して暗号文ｃを生成する。なお、階層的述語鍵秘匿方式であれば、暗号化装置２００は、セッション鍵Ｋも併せて生成する。そして、暗号化装置２００は、生成した暗号文ｃを前記復号装置３００へネットワーク等を介して送信する。なお、属性ベクトルｘ→１は、公開されているものとしてもよいし、暗号化装置２００が鍵生成装置１００や復号装置３００から取得するものとしてもよい。
（Ｓ１０３：復号ステップ）
復号装置３００は、（Ｓ１０１）で鍵生成装置１００が配布したマスター公開鍵ｐｋと第１層目の秘密鍵とに基づき、アルゴリズムＤｅｃを実行して、暗号化装置２００から受信した暗号文ｃを復号する。復号装置３００は、暗号文ｃを復号した結果、階層的述語鍵秘匿方式であればセッション鍵Ｋを取得し、階層的述語暗号であれば平文情報ｍを取得する。復号装置３００は、復号に失敗した場合には識別情報⊥を出力する。
【００３１】
図８は、暗号処理システム１０の第Ｌ層目の鍵委譲装置４００と、第Ｌ＋１層目の暗号化装置２００と復号装置３００との動作を示すフローチャートである。つまり、図８は、第Ｌ＋１層目の秘密鍵の生成から、第Ｌ＋１層目における暗号化と復号とまでの動作を示すフローチャートである。
（Ｓ２０１：鍵委譲ステップ）
第Ｌ層目の鍵委譲装置４００（第Ｌ層目の復号装置３００が備える鍵委譲装置４００）は、（Ｓ１０１）で鍵生成装置１００が配布したマスター公開鍵ｐｋと、鍵生成装置１００又は第Ｌ−１層目の鍵委譲装置４００が配布した第Ｌ層目の秘密鍵と、第Ｌ＋１層目の復号装置３００に対応する述語ベクトルｖ→Ｌ＋１（ｖ→Ｌ＋１＝（ｖｉ，．．．，ｖｊ）（ｉ＝μＬ，ｊ＝μＬ＋１−１））とに基づき、アルゴリズムＤｅｌｅｇａｔｅＬを実行して第Ｌ＋１層目の秘密鍵を生成する。そして、第Ｌ層目の鍵委譲装置４００は、生成した秘密鍵を第Ｌ＋１層目の復号装置３００へ秘密裡に配布する。
（Ｓ２０２：暗号化ステップ）
暗号化装置２００は、（Ｓ１０１）で鍵生成装置１００が配布したマスター公開鍵ｐｋと、第Ｌ＋１層目までの復号装置３００の属性ベクトルｘ→１から属性ベクトルｘ→Ｌ＋１（ｘ→ｉ（ｉ＝１，．．．，Ｌ＋１）（＝（ｘ０，．．．，ｘｉ）（ｉ＝μＬ＋１−１）））とに基づき、Ｅｎｃアルゴリズムを実行して暗号文ｃを生成する。なお、階層的述語鍵秘匿方式であれば、暗号化装置２００は、セッション鍵Ｋも併せて生成する。そして、暗号化装置２００は、生成した暗号文ｃを前記復号装置３００へネットワーク等を介して送信する。なお、属性ベクトルｘ→１から属性ベクトルｘ→Ｌ＋１（ｘ→ｉ（ｉ＝１，．．．，Ｌ＋１））は、公開されているものとしてもよいし、暗号化装置２００が鍵生成装置１００や復号装置３００から取得するものとしてもよい。
（Ｓ２０３：復号ステップ）
復号装置３００は、（Ｓ１０１）で鍵生成装置１００が配布したマスター公開鍵ｐｋと、（Ｓ２０１）で第Ｌ層目の鍵委譲装置４００が配布した秘密鍵とに基づき、アルゴリズムＤｅｃを実行して、暗号化装置２００から受信した暗号文ｃを復号する。復号装置３００は、暗号文ｃを復号した結果、階層的述語鍵秘匿方式であればセッション鍵Ｋを取得し、階層的述語暗号であれば平文情報ｍを取得する。
【００３２】
＜第４．階層的述語鍵秘匿方式と階層的述語暗号とを実現するための概念＞
次に、上述した階層的述語鍵秘匿方式と階層的述語暗号との各アルゴリズムを実現するために必要となる概念を説明する。
【００３３】
＜第４−１．双線形ペアリンググループ＞
双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）を説明する。
双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）は、位数ｑの３つの巡回群Ｇ１，Ｇ２，ＧＴの組である。ｇ１はＧ１の生成元であり、ｇ２はＧ２の生成元である。そして、双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）は、以下の非退化双線形ペアリングの条件を満たす。
（条件：非退化双線形ペアリング）
多項式時間で計算可能な数７３に示す非退化双線形ペアリングが存在すること。
【数７３】
2010273317.tif 000033
【００３４】
ここで、Ｇ１＝Ｇ２（＝：Ｇ）である場合、対象双線形ペアリングと呼ぶ。一方、Ｇ１≠Ｇ２である場合、非対称双線形ペアリングと呼ぶ。対象双線形ペアリングは、超特異（超）楕円曲線を用いて構築できる。一方、非対称双線形ペアリングは、どんな（超）楕円曲線を用いても構築できる。非対称双線形ペアリングは、例えば、通常の楕円曲線を用いて構築できる。
【００３５】
ここでは、非対称双線形ペアリングを用いて説明する。つまり、双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）は、非対称双線形ペアリンググループであるとする。そして、非対称双線形ペアリンググループの直積を用いて、後述する双対ディストーションベクトル空間を構築した場合について説明する。なお、後の実施の形態で説明するように、双対ディストーションベクトル空間は、非対称双線形ペアリンググループの直積に限らず、他の方法により構築することも可能である。
【００３６】
＜第４−２．（１）１次元ペアリング「Ｇ１×Ｇ２→ＧＴ」の空間Ｖ，空間Ｖ＊に対する高次元化＞
１次元空間の巡回群を高次元空間（高次元ベクトル空間）へ拡張する。つまり、数７４に示すように、Ｇ１とＧ２との直積によりＮ次元ベクトル空間ＶとＮ次元ベクトル空間Ｖ＊とを構築する。
【数７４】
2010273317.tif 000034
【００３７】
Ｎ次元ベクトル空間Ｖ，Ｖ＊とにおけるペアリング演算ｅを数７５に示すように定義する。
【数７５】
2010273317.tif 000035
つまり、Ｎ次元ベクトル空間Ｖのベクトルｘ：＝（ｘ０ｇ１，ｘ１ｇ１，．．．，ｘＮ−１ｇ１）とＮ次元ベクトル空間Ｖ＊のベクトルｙ：＝（ｙ０ｇ２，ｙ１ｇ２，．．．，ｙＮ−１ｇ２）とのペアリング演算ｅ（ｘ，ｙ）は、ベクトルｘとベクトルｙとの要素毎のペアリング演算の積と定義する。すると、上述した非退化双線形ペアリングの条件から、ペアリング演算ｅ（ｘ，ｙ）は、数７６に示すように表すことができる。
【数７６】
2010273317.tif 000036
なお、ペアリング演算ｅのｅという表記は、（Ｇ１，Ｇ２）と（Ｖ，Ｖ＊）との両方において使用する。
【００３８】
＜第４−３．（２）標準的な双対基底Ａ，Ａ＊＞
Ｎ次元ベクトル空間Ｖの標準基底Ａと、Ｎ次元ベクトル空間Ｖ＊の標準基底Ａ＊とを説明する。
数７７は、標準基底Ａを示す。
【数７７】
2010273317.tif 000037
ここで、Ｎ次元ベクトル空間Ｖの全ての要素ｘ：＝（ｘ０ｇ１，．．．，ｘＮ−１，ｇ１）は、標準基底Ａの線形和によって表すことができる。つまり、Ｎ次元ベクトル空間Ｖの全ての要素ｘ：＝（ｘ０ｇ１，．．．，ｘＮ−１，ｇ１）は、数７８のように表すことができる。
【数７８】
2010273317.tif 000038
数７９は、標準基底Ａ＊を示す。標準基底Ａと同様に、Ｎ次元ベクトル空間Ｖ＊の全ての要素ｙ：＝（ｙ０ｇ２，．．．，ｙＮ−１，ｇ２）は、標準基底Ａ＊の線形和によって表すことができる。
【数７９】
2010273317.tif 000039
【００３９】
標準基底Ａと標準基底Ａ＊とは、数８０に示す条件を満たす。
【数８０】
2010273317.tif 000040
つまり、標準基底Ａと標準基底Ａ＊とは、双対正規直交基底であり、空間Ｖと空間Ｖ＊とは、ペアリング演算ｅによって関連付けられた双対ベクトル空間である。
標準基底Ａと標準基底Ａ＊とが数８０に示す条件を満たすことについて補足する。
まず、ｅ（ａｉ，ａ＊ｉ）＝ｕであることについて説明する。一例として、ｅ（ａ０，ａ＊０）について計算する。上記の通り、ａ０＝（ｇ１，０，．．．，０）であり、ａ＊０＝（ｇ２，０，．．．，０）である。したがって、ｅ（ａ０，ａ＊０）＝ｅ（ｇ１，ｇ２）×ｅ（０，０）×，．．．，×ｅ（０，０）である。ここで、上記の通り、ｅ（ｇ１，ｇ２）＝ｕである。また、ｅ（０，０）＝ｅ（０・ｇ１，０・ｇ２）＝ｅ（ｇ１，ｇ２）０であるから、ｅ（０，０）＝１である。したがって、ｅ（ａ０，ａ＊０）＝ｕとなる。他のｅ（ａｉ，ａ＊ｉ）についても同様の計算が成立し、ｅ（ａｉ，ａ＊ｉ）＝ｕとなる。
次に、ｅ（ａｉ，ａ＊ｊ）＝１（ｉ≠ｊ）であることについて説明する。一例として、ｅ（ａ０，ａ＊１）について計算する。上記の通り、ａ０＝（ｇ１，０，．．．，０）であり、ａ＊１＝（０，ｇ２，０，．．．，０）である。したがって、ｅ（ａ０，ａ＊１）＝ｅ（ｇ１，０）×ｅ（０，ｇ２）×ｅ（０，０）×，．．．，×ｅ（０，０）である。ｅ（ｇ１，０）＝ｅ（ｇ１，０・ｇ２）＝ｅ（ｇ１，ｇ２）０であるから、ｅ（ｇ１，０）＝１である。同様に、ｅ（０，ｇ２）＝１である。また、上記の通り、ｅ（０，０）＝１である。したがって、ｅ（ａｉ，ａ＊ｊ）＝１となる。他のｅ（ａｉ，ａ＊ｊ）についても同様の計算が成立し、ｅ（ａｉ，ａ＊ｊ）＝１となる。
したがって、標準基底Ａと標準基底Ａ＊とにおいて、ｅ（ａｉ，ａ＊ｉ）＝ｕであり、ｅ（ａｉ，ａ＊ｊ）＝１（ｉ≠ｊ）である。
【００４０】
＜第４−４．（３）ディストーション写像を用いた効率的な線形写像＞
標準基底Ａにおける空間Ｖの生成元ｘに対するディストーション写像という線形変換について説明する。
空間Ｖの標準基底Ａにおけるディストーション写像φｉ，ｊは、数８１に示す写像である。
【数８１】
2010273317.tif 000041
数８２が成立するため、ディストーション写像φｉ，ｊは、数８３の変換を行うことができる。
【数８２】
2010273317.tif 000042
【数８３】
2010273317.tif 000043
つまり、標準基底Ａのベクトルｘの基底ベクトルｊの要素を基底ベクトルｉの要素へ変換することができる。この際、変換された基底ベクトルｊの要素を除く他の要素は、全て０となる。すなわち、ベクトルｘの基底ベクトルｊの要素が基底ベクトルｉの要素となり、その他の要素は０となる。
空間Ｖ＊の標準基底Ａ＊におけるディストーション写像φ＊ｉ，ｊも、空間Ｖの標準基底Ａにおけるディストーション写像φｉ，ｊと同様に表すことができる。
【００４１】
ディストーション写像φｉ，ｊ（φ＊ｉ，ｊ）を用いることにより、数８４に示すＮ×Ｎ行列として表される線形変換Ｗであって、ｘ∈Ｖに対するどんな線形変換Ｗも数８５によって効率的に計算することができる。
【数８４】
2010273317.tif 000044
【数８５】
2010273317.tif 000045
【００４２】
＜第４−５．（４）基底変換による鍵ペア（Ｂ，Ｂ＊）の生成方法＞
標準基底Ａと標準基底Ａ＊とから他の基底Ｂと基底Ｂ＊とへ変換する基底変換方法について説明する。図９は、基底変換方法を説明するための図である。
空間Ｖにおける標準基底Ａから空間Ｖにおける他の基底Ｂ：＝（ｂ０，．．．，ｂＮ−１）へ変換する。ここでは、数８６に示す一様に選択された線形変換Ｘを用いて、数８７に示すように空間Ｖにおける標準基底Ａから空間Ｖにおける他の基底Ｂに変換する。
【数８６】
2010273317.tif 000046
【数８７】
2010273317.tif 000047
ここで、ＧＬは、Ｇｅｎｅｒａｌ  Ｌｉｎｅａｒの略である。つまり、ＧＬは、一般線形群であり、行列式が０でない正方行列の集合であり、乗法に関し群である。
以下に説明する暗号処理において、基底Ｂは、公開パラメータ（公開鍵）として使用される。また、Ｘは、トラップドア情報（秘密鍵）として使用される。
【００４３】
Ｘを用いることにより、空間Ｖ＊における標準基底Ａ＊から空間Ｖ＊における基底Ｂ＊：＝（ｂ＊０，．．．，ｂ＊Ｎ−１）を効率的に計算できる。ここでは、数８８に示すようにＸを用いて、空間Ｖ＊における基底Ｂ＊を計算する。
【数８８】
2010273317.tif 000048
【００４４】
ここで、数８９が成立する。
【数８９】
2010273317.tif 000049
つまり、基底Ｂと基底Ｂ＊とは、双対空間ＶとＶ＊における双対正規直交基底である。すなわち、Ｘを用いて標準基底ＡとＡ＊とを変形した場合であっても、双対正規直交基底は保存される。
以下に説明する暗号処理において、基底Ｂ＊は（Ｘに代えて）秘密鍵として使用できる。詳しくは後述するが、これにより、後述する暗号処理において、要求される秘密鍵の要件に応じて様々なレベル又はタイプの秘密鍵を作ることができる。つまり、最上位階層の秘密鍵をＸとして、下位のレベルの秘密鍵を基底Ｂ＊の部分情報とすることにより、上位階層の秘密鍵から下位階層の秘密鍵まで階層化された秘密鍵を作ることができる。
【００４５】
＜第４−６．（５）暗号処理への応用のための（Ｖ，Ｂ），（Ｖ，Ｂ＊）での計算困難問題＞
暗号処理に適した（Ｖ，Ｂ）と（Ｖ＊，Ｂ＊）における計算困難問題の定義及び確立をする。つまり、後述する暗号処理の安全性の根拠となる計算困難問題について説明する。ここで、上述したように、基底Ｂ：＝（ｂ０，．．．，ｂＮ−１）は、空間Ｖの基底であり、基底Ｂ＊：＝（ｂ＊０，．．．，ｂ＊Ｎ−１）は空間Ｖ＊の基底である。
なお、非特許文献２１には、（Ｖ，Ｂ）における計算問題と決定問題とについての記載、及びそれらの問題の関連についての調査結果についての記載がある。
ここでは、非特許文献２１に記載された計算ベクトル分解問題（Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｖｅｃｔｏｒ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ  Ｐｒｏｂｌｅｍ，ＣＶＤＰ）と、決定部分空間問題（Ｄｅｃｉｓｉｏｎａｌ  Ｓｕｂｓｐａｃｅ  Ｐｒｏｂｌｅｍ，ＤＳＰ）とについて簡単に説明する。
【００４６】
最も自然な（計算）問題の１つがＣＶＤＰである。ＣＶＤＰは、部分群分解問題（Ｓｕｂｇｒｏｕｐ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ  Ｐｒｏｂｌｅｍ）の高次元空間類似体である。
（Ｎ１，Ｎ２）ＣＶＤＰの仮定は、「数９０に示すｖが与えられた場合に、数９１に示すｕを計算することは難しい」というものである。
【数９０】
2010273317.tif 000050
【数９１】
2010273317.tif 000051
上記問題を単純化して説明すると、図４においてベクトルｖが与えられた場合に、ベクトルｖを基底Ｂにおけるベクトルｖの成分ｙ０ｂ０（又はｙ１ｂ１）を抽出することは難しい（できない）ということである。つまり、ベクトルｖを基底Ｂにおけるベクトルｖの成分ｙ０ｂ０とｙ１ｂ１とに分解することは難しい（できない）ということである。
なお、たとえＣＶＤＰ仮定が正しいとしても、上述したディストーション写像φｉ，ｊと、トラップドアＸ（上述した基底変換方法における線形変換Ｘ）と非特許文献２１に記載されたアルゴリズムＤｅｃｏとを用いることにより、ＣＶＤＰは効率的に計算することができる。一方、ＣＶＤＰ仮定が正しい場合、トラップドアＸが与えられなければ、ＣＶＤＰを効率的に解くことはできない。つまり、上述した基底変換方法における線形変換Ｘを最上位階層の秘密鍵とすることで、線形変換Ｘを知らない下位階層ではＣＶＤＰを効率的に解くことはできない。
【００４７】
最も自然な決定問題の１つがＤＳＰである。（Ｎ１，Ｎ２）ＤＳＰの仮定は、「数９２に示すｕから数９３に示すｖを決定することは難しい」というものである。
【数９２】
2010273317.tif 000052
【数９３】
2010273317.tif 000053
上記問題を単純化して説明すると、図４においてベクトルｖが与えられた場合に、ｙ０ｂ０（又はｙ１ｂ１）がベクトルｖの成分であると特定することは困難であるということである。
【００４８】
つまり、以上の２つの問題から、Ｎ次元空間におけるベクトルｖ（＝ｃ０ｂ０＋．．．＋ｃＮ−１ｂＮ−１）が与えられた場合に、ベクトルｖの基底ベクトルｂｎについての成分ｃｎｂｎを抽出することはできず、ｃｎｂｎがベクトルｖの成分であると特定することはできないと言える。
【００４９】
＜第４−７．（６）鍵ペア（Ｂ，Ｂ＊）を用いた内積述語暗号＞
２つのベクトルの内積の計算に双対正規直交基底（Ｂ，Ｂ＊）を適用して、内積述語暗号を実現する。
２つのベクトルの内積の計算に双対正規直交基底（Ｂ，Ｂ＊）を適用するとは、数９４を計算することである。
【数９４】
2010273317.tif 000054
【００５０】
以下のように内積述語暗号を実現する。なお、ここでは、鍵秘匿方式について説明するが、当然暗号方式についても同様に実現可能である。
暗号文ｃは、数９５に示すように生成される。
【数９５】
2010273317.tif 000055
秘密鍵ｋ＊は、数９６に示すように生成される。
【数９６】
2010273317.tif 000056
ここで、数９７である。
【数９７】
2010273317.tif 000057
つまり、属性ベクトルｘ→と述語ベクトルｖ→との内積が０であれば、数９８である。
【数９８】
2010273317.tif 000058
なぜなら、上述したように、数９９であるためである。
【数９９】
2010273317.tif 000059
【００５１】
つまり、ここでは、属性ベクトルｘ→と述語ベクトルｖ→との内積が０となるように、属性ベクトルｘ→と述語ベクトルｖ→とを設定することにより、受信側で暗号文ｃから共有情報Ｋ（セッション鍵）を取得することができる。
【００５２】
ここで、セッション鍵Ｋは隠蔽される。つまり、秘密鍵ｋ＊を有さない攻撃者は、暗号文ｃからセッション鍵Ｋについての情報を得ることはできない。なぜなら、上述したＣＶＤＰ仮定によれば、暗号文ｃの成分であるρｂｎを抽出することはできないためである。
また、セッション鍵Ｋだけでなく、属性ベクトルｘ→についても隠蔽される。つまり、秘密鍵ｋ＊を有さない攻撃者は、暗号文ｃからセッション鍵Ｋだけでなく属性ベクトルｘ→についての情報を得ることもできない。ここで、上述したＤＳＰ仮定は属性情報ｘ→を隠蔽することを説明する中心的な役割を果たす。ＤＳＰ仮定によれば、数１００が数１０１から区別できないことを示すためである。
【数１００】
2010273317.tif 000060
【数１０１】
2010273317.tif 000061
【００５３】
＜第５．双対ディストーションベクトル空間＞
第４で説明した概念を踏まえて、双対ディストーションベクトル空間について説明する。上述したように、後述する階層的述語鍵秘匿方式と階層的述語暗号とは、双対ディストーションベクトル空間において実現される。
双対ディストーションベクトル空間（Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ）は、Ｆｑ上の２つのＮ次元ベクトル空間Ｖ，Ｖ＊の組と、位数ｑの巡回群ＧＴと、空間Ｖの標準基底Ａ：＝（ａ０，．．．，ａＮ−１）と空間Ｖ＊の標準基底Ａ＊：＝（ａ＊０，．．．，ａ＊Ｎ−１）を有する空間であって、以下の（１）ディストーション写像が存在する、（２）非退化双線形ペアリングが存在する、（３）２つの空間の標準基底が双対正規直交基底であるという３つの条件を満たす空間である。
（１）ディストーション写像（上記第４−４参照）
多項式時間で計算可能なディストーション写像φｉ，ｊとφ＊ｉ，ｊが存在すること。
つまり、数１０２に示す空間Ｖの準同型φｉ，ｊと空間Ｖ＊の準同型φ＊ｉ，ｊが多項式時間で計算可能であることが１つ目の条件である。
【数１０２】
2010273317.tif 000062
（２）非退化双線形ペアリング（上記第４−１参照）
多項式時間で計算可能な非退化双線形ペアリングｅが存在すること。
つまり、数１０３に示す非退化双線形ペアリングｅが存在することが２つ目の条件である。
【数１０３】
2010273317.tif 000063
（３）双対正規直交基底（上記第４−２参照）
空間Ｖの標準基底Ａと空間Ｖ＊の標準基底Ａ＊とが双対正規直交基底であること。
つまり、空間Ｖの標準基底Ａと空間Ｖ＊の標準基底Ａ＊とが、数１０４に示す条件を満たすことが３つ目の条件である。
【数１０４】
2010273317.tif 000064
なお、３つ目の条件を満たすことにより、空間Ｖと空間Ｖ＊とがペアリング演算ｅ（上記第４−２参照）によって関連付けられた双対空間であるということも言える。
【００５４】
ここで、ＥｎｄＦｑ（Ｖ）をＦｑ上の空間Ｖの準同型のＦｑベクトル空間であるとする。同様に、ＥｎｄＦｑ（Ｖ＊）をＦｑ上の空間Ｖ＊の準同型のＦｑベクトル空間であるとする。すると、ディストーション写像φｉ，ｊ（ｒｅｓｐ．φ＊ｉ，ｊ）は、Ｎ２次元Ｆｑベクトル空間ＥｎｄＦｑ（Ｖ）（ｒｅｓｐ．ＥｎｄＦｑ（Ｖ＊））の基底を形成する。
数１０５に示すランダムな係数を用いて、数１０６に示すＶ／Ｆｑ（ｒｅｓｐ．Ｖ＊／Ｆｑ）のランダムな多項式時間で計算可能な準同型を効率的にサンプリングすることができる。
【数１０５】
2010273317.tif 000065
【数１０６】
2010273317.tif 000066
なお、後の実施の形態で、双対ディストーションベクトル空間の例について説明する。
【００５５】
＜第６．階層的述語鍵秘匿方式と階層的述語暗号との実現方法の概要＞
上述した概念（上記第４参照）と、双対ディストーションベクトル空間（上記第５参照）とを踏まえて、上述した暗号処理システム１０（上記第３参照）が階層的述語鍵秘匿方式と階層的述語暗号とを実現する方法を簡単に説明する。
まず、暗号処理システム１０は、双対ディストーションベクトル空間において、階層的述語鍵秘匿方式と階層的述語暗号とを実現する。つまり、暗号処理システム１０は、ディストーション写像と、非退化双線形ペアリングと、双対正規直交基底とを有する高次元ベクトル空間であって、ペアリング演算ｅによって関連付けられた高次元双対ベクトル空間において、階層的述語鍵秘匿方式と階層的述語暗号とを実現する。なお、２つの空間を関連付けるペアリング演算ｅ（高次元ベクトル空間におけるペアリング演算）は、上記第４−２にて定義されたペアリング演算である。
また、上記第４−５によれば、暗号処理システム１０は、各空間ＶとＶ＊との標準基底ＡとＡ＊とから所定の変換により生成された双対正規直交基底ＢとＢ＊とを鍵ペア（公開鍵と秘密鍵とのペア）として用いて、階層的述語鍵秘匿方式と階層的述語暗号とを実現する。上記第４−７によれば、暗号処理システム１０の鍵生成装置１００は、双対正規直交基底ＢとＢ＊との一方（以下、基底Ｂ）をマスター公開鍵とし、他方（以下、基底Ｂ＊）をマスター秘密鍵とする。
つまり、図７の（Ｓ１０１）で鍵生成装置１００は、高次元ベクトル空間である双対ディストーションベクトル空間の基底Ｂを含む情報をマスター公開鍵として生成し、基底Ｂ＊を含む情報をマスター秘密鍵として生成する。また、鍵生成装置１００は、述語ベクトルｖ→１（ｖ→１＝（ｖ０，．．．，ｖｉ）（ｉ＝μ１−１））に基づき基底Ｂ＊におけるベクトルを第１層目の秘密鍵として生成する。図７の（Ｓ１０２）で暗号化装置２００は、ｘ→１（ｘ→１＝（ｘ０，．．．，ｘｉ）（ｉ＝μ１−１））に基づきマスター公開鍵である基底Ｂにおけるベクトルにセッション鍵Ｋを生成するための情報ρ又は平文情報ｍを埋め込んで暗号文ｃとして生成する。図７の（Ｓ１０３）で復号装置３００は、基底Ｂにおけるベクトルである暗号文ｃと、基底Ｂ＊におけるベクトルである第１層目の秘密鍵とについてペアリング演算ｅを行い、暗号文ｃに埋め込まれたセッション鍵Ｋ又は平文情報ｍを抽出する。なお、復号装置３００が実行する高次元ベクトルについてのペアリング演算ｅは上記第４−２にて定義されたペアリング演算である。
また、図８の（Ｓ２０１）で鍵委譲装置４００は、述語ベクトルｖ→Ｌ＋１（ｖ→Ｌ＋１＝（ｖｉ，．．．，ｖｊ）（ｉ＝μ１，ｊ＝μＬ＋１−１））に基づき基底Ｂ＊におけるベクトルを第Ｌ＋１層目の秘密鍵として生成する。図８の（Ｓ２０２）で暗号化装置２００は、属性ベクトルｘ→１からｘ→Ｌ＋１までの属性ベクトル（ｘ→ｉ（ｉ＝１，．．．，Ｌ＋１）（＝（ｘ０，．．．，ｘｉ）（ｉ＝μＬ＋１−１）））に基づきマスター公開鍵である基底Ｂにおけるベクトルにセッション鍵Ｋを生成するための情報ρ又は平文情報ｍを埋め込んで暗号文ｃとして生成する。図８の（Ｓ２０３）で復号装置３００は、基底Ｂにおけるベクトルである暗号文ｃと、基底Ｂ＊におけるベクトルである第Ｌ＋１層目の秘密鍵とについてペアリング演算ｅを行い、暗号文ｃに埋め込まれたセッション鍵Ｋ又は平文情報ｍを抽出する。
なお、上記第４−６で述べた計算困難問題に基づき、この暗号処理の安全性（セッション鍵Ｋ又は平文情報ｍ及び属性ベクトルの秘匿性）は保障される。
【００５６】
実施の形態２．
この実施の形態では、実施の形態１で説明した概念に基づき、階層的述語鍵秘匿方式を実現する暗号処理システム１０について説明する。
【００５７】
図１０から図１５に基づき、暗号処理システム１０の機能と動作とについて説明する。
図１０は、この実施の形態に係る暗号処理システム１０の機能を示す機能ブロック図である。暗号処理システム１０は、上述したように、鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００を備える。また、ここでも、復号装置３００が鍵委譲装置４００を備えるものとする。
図１１は、鍵生成装置１００の動作を示すフローチャートである。図１２は、暗号化装置２００の動作を示すフローチャートである。図１３は、復号装置３００の動作を示すフローチャートである。図１４は、鍵委譲装置４００の動作を示すフローチャートである。
図１５は、双対ディストーションベクトル空間の基底の構造を示す概念図である。
【００５８】
鍵生成装置１００の機能と動作とについて説明する。鍵生成装置１００は、マスター鍵生成部１１０、マスター鍵記憶部１２０、鍵ベクトル生成部１３０、鍵生成用ベクトル生成部１４０、鍵配布部１５０を備える。
【００５９】
（Ｓ３０１：マスター鍵生成ステップ）
マスター鍵生成部１１０は、数１０７を計算して、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを処理装置により生成してマスター鍵記憶部１２０に記憶する。
【数１０７】
2010273317.tif 000067
つまり、（１）マスター鍵生成部１１０は、セキュリティパラメータ１λで、Ｎ（＝ｎ＋２）次元の双対ディストーションベクトル空間（Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ）を処理装置により生成する。ここで、Ｇｄｄｖｓは、１λとＮとを入力として、セキュリティパラメータ１λとＮ次元空間Ｖとについての（Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ）を出力する双対ディストーションベクトル空間生成アルゴリズムである。
（２）マスター鍵生成部１１０は、標準基底Ａから基底Ｂを生成するための線形変換Ｘを処理装置によりランダムに選択する。
（３）マスター鍵生成部１１０は、選択した線形変換Ｘに基づき、基底Ａ：＝（ａ０，．．．，ａｎ−１）から基底Ｂ：＝（ｂ０，．．．，ｂｎ−１）を処理装置により生成する。
（４）マスター鍵生成部１１０は、基底Ａ＊：＝（ａ＊０，．．．，ａ＊ｎ−１）から基底Ｂ＊：＝（ｂ＊０，．．．，ｂ＊ｎ−１）を生成するための線形変換（ＸＴ）−１を線形変換Ｘから処理装置により生成する。
（５）マスター鍵生成部１１０は、生成した線形変換（ＸＴ）−１に基づき、基底Ａ＊から基底Ｂ＊を処理装置により生成する。
（６）マスター鍵生成部１１０は、生成した基底Ｂ＊をマスター秘密鍵ｓｋとし、生成した基底Ｂを含む（１λ，μ→，Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ，Ｂ）をマスター公開鍵ｐｋとする。そして、マスター鍵記憶部１２０は、マスター鍵生成部１１０が生成したマスター公開鍵ｐｋとマスター秘密鍵ｓｋとを記憶装置に記憶する。
なお、双対ディストーションベクトル空間の次元数は、Ｎ（＝ｎ＋２）であるとした。ここで、ｎは、階層情報μ→が有する階層構造をあらわすために割り当てられている基底数を表すｎである。つまり、ここでは、階層構造をあらわすために割り当てられている基底数ｎに加え、２つの基底ベクトルが設けられている。もちろん、これよりも多くの基底ベクトルを設けてもよい。
図１５に示すように、Ｎ（＝ｎ＋２）個の基底ベクトルのうち、ｎ個の基底ベクトルが階層構造をあらわすために割り当てられている。階層構造をあらわすために割り当てられている基底ベクトルの構造は、図５に示す構造と同様である。残り２つの基底ベクトルのうちの１つの基底ベクトル（ｎ番目の基底ベクトル）は、セッション鍵を生成する情報（送信情報ρ）のための基底ベクトルである。残り２つの基底ベクトルのうちのもう１つの基底ベクトル（ｎ＋１番目の基底ベクトル）は、暗号文ｃをランダム化するための基底ベクトルである。
【００６０】
すなわち、（Ｓ３０１）において、マスター鍵生成部１１０は、数１０８に示すＳｅｔｕｐアルゴリズムを実行して、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを生成する。
【数１０８】
2010273317.tif 000068
【００６１】
（Ｓ３０２：鍵ベクトルｋ＊１，０生成ステップ）
鍵ベクトル生成部１３０は、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと、述語ベクトルｖ→１（ｖ→１＝（ｖ０，．．．，ｖｉ）（ｉ＝μＬ−１））とに基づき、数１０９を計算して、第１層目（レベル１）の秘密鍵の先頭要素である鍵ベクトルｋ＊１，０を処理装置により生成する。
【数１０９】
2010273317.tif 000069
つまり、（１）鍵ベクトル生成部１３０は、乱数σ１，０を処理装置により生成する。
（２）鍵ベクトル生成部１３０は、空間Ｖ＊の基底Ｂ＊における基底ベクトルｂ＊ｎに対する係数として所定の値（ここでは、１）を処理装置により設定するとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μ１−１）に対する係数として生成した乱数σ１，０でランダム化した述語ベクトルｖ→１の各要素を処理装置により設定して、鍵ベクトルｋ＊１，０を生成する。
【００６２】
（Ｓ３０３：鍵生成用ベクトルｋ＊１，ｊ生成ステップ）
鍵生成用ベクトル生成部１４０は、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと、述語ベクトルｖ→１とに基づき、数１１０を計算して、下位の秘密鍵（下位の鍵ベクトル）を生成するための鍵生成用ベクトルｋ＊１，ｊを処理装置により生成する。鍵生成用ベクトルｋ＊１，ｊは、第１層目の秘密鍵のｊ番目の要素である。
【数１１０】
2010273317.tif 000070
つまり、（１）鍵生成用ベクトル生成部１４０は、乱数σ１，ｊ（ｊ＝μ１，．．．，ｎ−１）を処理装置により生成する。
（２）鍵生成用ベクトル生成部１４０は、ｊ＝μ１，．．．，ｎ−１の各ｊについて、空間Ｖ＊の基底Ｂ＊における基底ベクトルｂ＊ｊに対する係数として所定の値（ここでは、１）を処理装置により設定するとともに、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μ１−１）に対する係数として生成した乱数σ１，ｊでランダム化した述語ベクトルｖ→１の各要素を処理装置により設定して、鍵生成用ベクトルｋ＊１，ｊを生成する。
【００６３】
すなわち、（Ｓ３０２）と（Ｓ３０３）とにおいて、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とは、数１１１に示すＧｅｎＫｅｙアルゴリズムを実行して、鍵ベクトルｋ＊１，０と鍵生成用ベクトルｋ＊１，ｊとを含む第１層目の秘密鍵（鍵情報ｋ→＊１）を処理装置により生成する。
【数１１１】
2010273317.tif 000071
【００６４】
（Ｓ３０４：鍵配布ステップ）
鍵配布部１５０は、マスター鍵生成部１１０が生成したマスター公開鍵と、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とが生成した鍵情報ｋ→＊１とを復号装置３００へ通信装置を介して送信する。また、鍵配布部１５０は、マスター公開鍵を暗号化装置２００へ通信装置を介して送信する。ここで、鍵情報ｋ→＊１は秘密裡に復号装置３００へ送信されるが、鍵情報ｋ→＊１を秘密裡に復号装置３００へ送信する方法に関しては、どのような方法であっても構わない。例えば、従来の暗号処理を使用して送信してもよい。
【００６５】
暗号化装置２００の機能と動作とについて説明する。暗号化装置２００は、送信情報設定部２１０、暗号ベクトル生成部２２０、データ送信部２３０、セッション鍵生成部２４０を備える。
【００６６】
（Ｓ４０１：送信情報設定ステップ）
送信情報設定部２１０は、マスター公開鍵ｐｋに基づき、数１１２を処理装置により計算して送信情報ベクトルρｖを生成する。
【数１１２】
2010273317.tif 000072
つまり、送信情報設定部２１０は、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂｎに対する係数として送信情報ρ（ここでは、乱数）を処理装置により設定して、送信情報ベクトルρｖを生成する。
【００６７】
（Ｓ４０２：暗号ベクトル生成ステップ）
暗号ベクトル生成部２２０は、マスター公開鍵ｐｋとｘ→１から属性ベクトルｘ→Ｌ（ｘ→ｉ（ｉ＝１，．．．，Ｌ）（＝（ｘ０，．．．，ｘｉ）（ｉ＝μＬ−１）））とに基づき、数１１３を処理装置により計算して暗号ベクトルｃを生成する。ここで、Ｌは、階層の深さである。
【数１１３】
2010273317.tif 000073
つまり、（１）暗号ベクトル生成部２２０は、乱数ｘ→ｉ（ｉ＝Ｌ＋１，．．．，ｄ）と、乱数δｉ（ｉ＝１，．．．，ｄ，ｎ＋１）を処理装置により生成する。
（２）暗号ベクトル生成部２２０は、以下のように、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂｉ（ｉ＝０，．．．，μＬ−１）に対する係数として属性ベクトルの各要素を処理装置により設定するとともに、基底ベクトルｂｉ（ｉ＝μＬ，．．．，ｎ−１）に対する係数として乱数を処理装置により設定して属性情報ベクトルｘｖを生成する。
まず、暗号ベクトル生成部２２０は、基底ベクトルｂｉ（ｉ＝０，．．．，μ１−１）に対する係数として乱数δ１でランダム化した属性ベクトルｘ→１を設定する。また、暗号ベクトル生成部２２０は、基底ベクトルｂｉ（ｉ＝μ１，．．．，μ２−１）に対する係数として乱数δ２でランダム化した属性ベクトルｘ→２（ｘ→２＝（ｘｉ，．．．，ｘｊ）（ｉ＝μ１，ｊ＝μ２−１））を設定する。以下同様に、暗号ベクトル生成部２２０は、基底ベクトルｂｉ（ｉ＝μｋ−１，．．．，μｋ−１）（ｋ＝３，．．．，Ｌ）に対する係数として乱数δｋでランダム化した属性ベクトルｘ→ｋ（ｘ→ｋ＝（ｘｉ，．．．，ｘｊ）（ｉ＝μｊ−１，ｊ＝μｊ−１））を設定する。
また、暗号ベクトル生成部２２０は、基底ベクトルｂｉ（ｉ＝μＬ，．．．，ｎ−１）に対する係数として乱数ｘ→ｉ（ｉ＝Ｌ＋１，．．．，ｄ）と乱数δｉ（ｉ＝Ｌ＋１，．．．，ｄ）とから計算した乱数値を設定する。
（３）暗号ベクトル生成部２２０は、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂｎ＋１に対する係数として乱数δｎ＋１を処理装置により設定して、乱数ベクトルｒｖを生成する。
（４）暗号ベクトル生成部２２０は、生成した属性情報ベクトルｘｖと乱数ベクトルｒｖとを、送信情報設定部２１０が生成した送信情報ベクトルρｖに加算して暗号ベクトルｃを処理装置により生成する。
【００６８】
（Ｓ４０３：データ送信ステップ）
データ送信部２３０は、暗号ベクトル生成部２２０が生成した暗号ベクトルｃを復号装置３００へ通信装置を介して送信する。
【００６９】
（Ｓ４０４：セッション鍵生成ステップ）
セッション鍵生成部２４０は、数１１４を処理装置により計算してセッション鍵Ｋを生成する。
【数１１４】
2010273317.tif 000074
【００７０】
すなわち、暗号化装置２００は、数１１５に示すＥｎｃアルゴリズムを実行して、暗号ベクトルｃと、セッション鍵Ｋとを生成する。
【数１１５】
2010273317.tif 000075
【００７１】
復号装置３００の機能と動作とについて説明する。復号装置３００は、ベクトル入力部３１０、鍵ベクトル記憶部３２０、ペアリング演算部３３０を備える。
【００７２】
（Ｓ５０１：ベクトル入力ステップ）
ベクトル入力部３１０は、暗号化装置２００のデータ送信部２３０が送信した暗号ベクトルｃを通信装置を介して受信して入力する。
【００７３】
（Ｓ５０２：ペアリング演算ステップ）
ペアリング演算部３３０は、マスター公開鍵ｐｋと第Ｌ層目の秘密鍵の先頭要素である鍵ベクトルｋ＊Ｌ，０とに基づき、数１１６を処理装置により計算してセッション鍵Ｋ’（＝Ｋ）を生成する。
【数１１６】
2010273317.tif 000076
つまり、ペアリング演算部３３０は、ベクトル入力部３１０が入力した暗号ベクトルｃと、鍵ベクトル記憶部３２０が記憶装置に記憶した鍵ベクトルｋ＊Ｌ，０とについて、マスター公開鍵ｐｋに含まれる空間Ｖと空間Ｖ＊とを関連付けるペアリング演算ｅを処理装置により行うことによりセッション鍵Ｋ’を計算する。なお、鍵ベクトル記憶部３２０は、鍵生成装置１００又は上位の鍵委譲装置４００から鍵ベクトルｋ＊Ｌ，０を配布された際、鍵ベクトルｋ＊Ｌ，０を記憶装置に記憶する。
このペアリング演算により、セッション鍵Ｋが計算できることについて詳しくは後述する。
【００７４】
つまり、復号装置３００は、数１１７に示すＤｅｃアルゴリズムを実行して、セッション鍵Ｋ’を生成する。
【数１１７】
2010273317.tif 000077
【００７５】
鍵委譲装置４００の機能と動作とについて説明する。鍵委譲装置４００は、鍵ベクトル取得部４１０、鍵ベクトル生成部４２０、鍵生成用ベクトル生成部４３０、鍵配布部４４０を備える。
【００７６】
（Ｓ６０１：鍵ベクトルｋ＊Ｌ，０取得ステップ）
鍵ベクトル取得部４１０は、第Ｌ層目の秘密鍵の先頭要素である鍵ベクトルｋ＊Ｌ，０と、第Ｌ層目の秘密鍵のｊ番目（ｊ＝μ１，．．．，ｎ−１）の要素である鍵生成用ベクトルｋ＊Ｌ，ｊとを含む第Ｌ層目の秘密鍵（鍵情報ｋ→＊Ｌ）を通信装置を介して取得する。つまり、鍵生成装置１００が配布した鍵ベクトルｋ＊１，０と鍵生成用ベクトルｋ＊１，ｊとを含む鍵情報ｋ→＊１、又は、上位の鍵委譲装置４００が配布した鍵ベクトルｋ＊Ｌ，０と鍵生成用ベクトルｋ＊Ｌ，ｊとを含む鍵情報ｋ→＊Ｌを通信装置を介して取得する。
（Ｓ６０２：鍵ベクトルｋ＊Ｌ＋１，０生成ステップ）
鍵ベクトル生成部４２０は、マスター公開鍵ｐｋと鍵情報ｋ→＊Ｌと述語ベクトルｖ→Ｌ＋１（ｖ→Ｌ＋１＝（ｖｉ，．．．，ｖｊ）（ｉ＝μＬ，ｊ＝μＬ＋１−１））とに基づき、数１１８を計算して、第Ｌ＋１層目の秘密鍵の先頭要素である鍵ベクトルｋ＊Ｌ＋１，０を処理装置により生成する。
【数１１８】
2010273317.tif 000078
つまり、（１）鍵ベクトル生成部４２０は、乱数σＬ＋１，０を処理装置により生成する。
（２）鍵ベクトル生成部４２０は、鍵生成用ベクトルｋ＊Ｌ，ｉ（ｉ＝μＬ，．．．，μＬ＋１−１）に対する係数に乱数σＬ＋１，０でランダム化した述語ベクトルｖ→Ｌ＋１の各要素を設定したベクトルｖｉ（ｉ＝μＬ，．．．，μＬ＋１−１）を、鍵ベクトルｋ＊Ｌ，０に加算して鍵ベクトルｋ＊Ｌ＋１，０を処理装置により生成する。
【００７７】
（Ｓ６０３：鍵生成用ベクトルｋ＊Ｌ＋１，ｊ生成ステップ）
鍵生成用ベクトル生成部４３０は、マスター公開鍵ｐｋと鍵情報ｋ→＊Ｌと述語ベクトルｖ→Ｌ＋１とに基づき、数１１９を計算して、下位の秘密鍵（下位の鍵ベクトル）を生成するための鍵生成用ベクトルｋ＊Ｌ＋１，ｊ（ｊ＝μ１＋１，．．．，ｎ−１）を処理装置により生成する。鍵生成用ベクトルｋ＊Ｌ＋１，ｊは、第Ｌ＋１層目の秘密鍵のｊ番目の要素である。
【数１１９】
2010273317.tif 000079
つまり、（１）鍵生成用ベクトル生成部４３０は、乱数σＬ＋１，ｊ（ｊ＝μＬ＋１，．．．，ｎ−１）を処理装置により生成する。
（２）鍵生成用ベクトル生成部１４０は、ｊ＝μＬ＋１，．．．，ｎ−１の各ｊについて、鍵生成用ベクトルｋ＊Ｌ，ｊに、鍵生成用ベクトルｋ＊Ｌ，ｉ（ｉ＝μＬ，．．．，μＬ＋１−１）に対する係数として乱数σＬ＋１，ｊでランダム化した述語ベクトルｖ→Ｌ＋１の各要素を設定したベクトルを加算して、鍵ベクトルｋ＊Ｌ＋１，０の下位の鍵ベクトルを生成するための鍵生成用ベクトルｋ＊Ｌ＋１，ｊを処理装置により生成する。
【００７８】
すなわち、（Ｓ６０２）と（Ｓ６０３）とにおいて、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とは、数１２０に示すＤｅｌｅｇａｔｅＬアルゴリズムを実行して、鍵ベクトルｋ＊Ｌ＋１，０と鍵生成用ベクトルｋ＊Ｌ＋１，ｊとを含む第Ｌ＋１層目の秘密鍵（鍵情報ｋ→＊Ｌ＋１）を処理装置により生成する。
【数１２０】
2010273317.tif 000080
つまり、数１２０に示す鍵情報ｋ→＊Ｌ＋１のうち、先頭（１番目）の要素ｋ＊Ｌ，０が復号鍵Ｌ＋１となる鍵ベクトルｋ＊Ｌ＋１，０である。また、数１２０に示す鍵情報ｋ→＊Ｌ＋１のうち、２番目以降の要素が鍵委譲のためのタグである。
【００７９】
（Ｓ６０４：鍵配布ステップ）
鍵配布部４４０は、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とが生成した鍵情報ｋ→＊Ｌ＋１とを下位の復号装置３００へ通信装置を介して送信する。ここで、鍵情報ｋ→＊Ｌ＋１は秘密裡に復号装置３００へ送信されるが、鍵情報ｋ→＊Ｌ＋１を秘密裡に復号装置３００へ送信する方法に関しては、どのような方法であっても構わない。例えば、従来の暗号処理を使用して送信してもよい。
【００８０】
図１６は、（Ｓ５０２）におけるペアリング演算を説明するための図である。
図１６に基づき、（Ｓ５０２）において、ペアリング演算部３３０が上記数１１６に示すペアリング演算によりセッション鍵Ｋ（＝Ｋ’）を抽出できることを説明する。なお、図１６では、簡単のため、乱数σと乱数δとの添え字を省略して示している。
上述したように、第Ｌ階層における暗号文ｃは、基底ベクトルｂｉ（ｉ＝０，．．．，μＬ−１）に対する係数としてランダム化した属性ベクトルが設定されている。また、暗号文ｃは、基底ベクトルｂｉ（ｉ＝μＬ，．．．，ｎ−１）に対する係数として乱数ｘ→が設定されている。また、暗号文ｃは、基底ベクトルｂｎに対する係数としてρが設定されている。さらに、暗号文ｃは、基底ベクトルｂｎ＋１に対する係数として乱数δが設定されている。
一方、第Ｌ階層における鍵ベクトルｋ＊Ｌ，０は、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬ−１）に対する係数としてランダム化した述語ベクトルが設定されている。また、鍵ベクトルｋ＊Ｌ，０は、基底ベクトルｂ＊ｉ（ｉ＝μＬ，．．．，ｎ−１）に対する係数は設定されていない、つまり、係数として０が設定されている。また、鍵ベクトルｋ＊Ｌ，０は、基底ベクトルｂ＊ｎに対する係数として１が設定されている。さらに、鍵ベクトルｋ＊Ｌ，０は、基底ベクトルｂｎ＋１に対する係数として０が設定されている。
ここで、数１１６に示すペアリング演算を行うと、鍵ベクトルｋ＊Ｌ，０において、係数として０が設定されている基底ベクトルｂ＊ｉ（ｉ＝μＬ，．．．，ｎ−１，ｎ＋１）と、対応する暗号文ｃの基底ベクトルｂｉ（ｉ＝μＬ，．．．，ｎ−１，ｎ＋１）との内積は０になる。
また、暗号文ｃにおいて係数として属性ベクトルが設定された基底ベクトルｂｉ（ｉ＝０，．．．，μＬ−１）と、鍵ベクトルｋ＊Ｌ，０において係数として述語ベクトルが設定された基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬ−１）との内積は０となる。属性ベクトルと述語ベクトルとは内積が０となるように設定されたものであるためである。
したがって、数１１６に示すペアリング演算の結果ｅ（ρｂｎ，ｂ＊ｎ）のみが内積０とならずに残る。よって、ｅ（ρｂｎ，ｂ＊ｎ）＝ｕρ＝Ｋであり、数１１６に示すペアリング演算を計算することにより、セッション鍵Ｋを計算できる。
【００８１】
図１７は、下位の鍵では、セッション鍵Ｋが計算できないことを説明するための図である。
図１７に基づき、（Ｓ５０２）において、上位階層の属性ベクトルに基づき暗号化した暗号文ｃと、下位階層の鍵ベクトルｋ＊Ｌｖ，０とについて、ペアリング演算部３３０が上記数１１６に示すペアリング演算によりセッション鍵Ｋを抽出できないことを説明する。なお、図１７では、簡単のため、乱数σと乱数δとの添え字を省略して示している。また、図１７についての説明において、Ｌｘ（＝Ｌｘ）＜Ｌｖ（＝Ｌｖ）である。
第Ｌｘ階層における暗号文ｃは、基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）に対する係数としてランダム化した属性ベクトルが設定されている。また、暗号文ｃは、基底ベクトルｂｉ（ｉ＝μＬｘ，．．．，ｎ−１）に対する係数として乱数ｘ→が設定されている。また、暗号文ｃは、基底ベクトルｂｎに対する係数としてρが設定されている。さらに、暗号文ｃは、基底ベクトルｂｎ＋１に対する係数として乱数δが設定されている。
一方、第Ｌｖ階層における鍵ベクトルｋ＊Ｌｖ，０は、基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬｖ−１）に対する係数としてランダム化した述語ベクトルが設定されている。また、鍵ベクトルｋ＊Ｌｖ，０は、基底ベクトルｂ＊ｉ（ｉ＝μＬｖ，．．．，ｎ−１）に対する係数は設定されていない、つまり、係数として０が設定されている。また、鍵ベクトルｋ＊Ｌｖ，０は、基底ベクトルｂ＊ｎに対する係数として１が設定されている。さらに、鍵ベクトルｋ＊Ｌｖ，０は、基底ベクトルｂｎ＋１に対する係数として０が設定されている。
ここで、数１１６に示すペアリング演算を行うと、鍵ベクトルｋ＊Ｌ，０において、係数として０が設定されている基底ベクトルｂ＊ｉ（ｉ＝μＬｖ，．．．，ｎ−１，ｎ＋１）と、対応する暗号文ｃの基底ベクトルｂｉ（ｉ＝μＬｖ，．．．，ｎ−１，ｎ＋１）との内積は０になる。
また、暗号文ｃにおいて係数として属性ベクトルが設定された基底ベクトルｂｉ（ｉ＝０，．．．，μＬｘ−１）と、鍵ベクトルｋ＊Ｌ，０において係数として述語ベクトルが設定された基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬｘ−１）との内積は０となる。
しかし、暗号文ｃにおいて係数として乱数が設定された基底ベクトルｂｉ（ｉ＝μＬｘ，．．．，μＬｖ−１）と、鍵ベクトルｋ＊Ｌ，０において係数として述語ベクトルが設定された基底ベクトルｂ＊ｉ（ｉ＝μＬｘ，．．．，μＬｖ−１）との内積は０とならない。
したがって、ｅ（ρｂｎ，ｂ＊ｎ）以外にも値が残ってしまいセッション鍵Ｋを計算できない。
【００８２】
図１８は、上位の鍵で、セッション鍵Ｋが計算できることを説明するための図である。
図１８に基づき、（Ｓ５０２）において、下位階層の属性ベクトルに基づき暗号化した暗号文ｃと、上位階層の鍵ベクトルｋ＊Ｌｖ，０とについて、ペアリング演算部３３０が上記数１１６に示すペアリング演算によりセッション鍵Ｋを抽出できることを説明する。なお、図１８では、簡単のため、乱数σと乱数δとの添え字を省略して示している。また、図２０についての説明において、Ｌｘ（＝Ｌｘ）＞Ｌｖ（＝Ｌｖ）である。
暗号文ｃと鍵ベクトルｋ＊Ｌｖ，０との各基底ベクトルに対する係数としては、図１７の場合と同様に設定されている。但し、上記の通り、Ｌｘ（＝Ｌｘ）＞Ｌｖ（＝Ｌｖ）である。
ここで、数１１６に示すペアリング演算を行うと、鍵ベクトルｋ＊Ｌ，０において、係数として０が設定されている基底ベクトルｂ＊ｉ（ｉ＝μＬｖ，．．．，ｎ−１，ｎ＋１）と、対応する暗号文ｃの基底ベクトルｂｉ（ｉ＝μＬｖ，．．．，ｎ−１，ｎ＋１）との内積は０になる。
また、暗号文ｃにおいて係数として属性ベクトルが設定された基底ベクトルｂｉ（ｉ＝０，．．．，μＬｖ−１）と、鍵ベクトルｋ＊Ｌ，０において係数として述語ベクトルが設定された基底ベクトルｂ＊ｉ（ｉ＝０，．．．，μＬｖ−１）との内積は０となる。
したがって、数１１６に示すペアリング演算の結果ｅ（ρｂｎ，ｂ＊ｎ）のみが内積０とならずに残る。よって、ｅ（ρｂｎ，ｂ＊ｎ）＝ｕρ＝Ｋであり、数１１６に示すペアリング演算を計算することにより、セッション鍵Ｋを計算できる。
【００８３】
なお、以上の説明から明らかなように、上記（Ｓ４０２）の（２）で、基底ベクトルｂｉ（ｉ＝μｊ，．．．，μｊ＋１−１）（ｊ＝Ｌ＋１，．．．，ｄ）に対する係数としてでランダム化した乱数値を設定したのは、下位の鍵ベクトルに対する優位性を保つためである。つまり、鍵ベクトルｋ＊Ｌ，０であれば、暗号ベクトルｃを復号できるが、鍵ベクトルｋ＊Ｌ，０よりも下位の鍵ベクトルでは暗号ベクトルｃを復号することができないようにするためである。
【００８４】
以上のように、この実施の形態に係る暗号処理システム１０は、実施の形態１で説明した概念に基づき、階層的述語鍵秘匿方式を実現することができる。
【００８５】
なお、上記説明において、鍵生成装置１００は、第１層目の秘密鍵を生成した。つまり、鍵生成装置１００は、（Ｓ３０２）でｋ＊１，０を生成し、（Ｓ３０３）でｋ＊１，ｊ（ｊ＝μ１，．．．，ｎ−１）を生成した。
しかし、鍵生成装置１００は、第１層目の鍵ではなく、第Ｌ層目（Ｌ≧２）の鍵を生成するとしてもよい。つまり、鍵生成装置１００は、（Ｓ３０２）でｋ＊Ｌ，０を生成し、（Ｓ３０３）でｋ＊Ｌ，ｊ（ｊ＝μＬ，．．．，ｎ−１）を生成してもよい。
【００８６】
すなわち、（Ｓ３０２）で、鍵ベクトル生成部１３０は、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと、数１２１に示す述語ベクトル（ｖ→１，．．．，ｖ→Ｌ）とに基づき、数１２２を計算して、第Ｌ層目（レベルＬ）の秘密鍵の先頭要素である鍵ベクトルｋ＊Ｌ，０を処理装置により生成する。
【数１２１】
2010273317.tif 000081
【数１２２】
2010273317.tif 000082
【００８７】
また、鍵生成用ベクトル生成部１４０は、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと、数１２１に示す述語ベクトル（ｖ→１，．．．，ｖ→Ｌ）とに基づき、数１２３を計算して、下位の秘密鍵を生成するための鍵生成用ベクトルｋ＊１，ｊを処理装置により生成する。
【数１２３】
2010273317.tif 000083
【００８８】
つまり、（Ｓ３０２）と（Ｓ３０３）とにおいて、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とは、数１２４に示すＧｅｎＫｅｙアルゴリズムを実行して、鍵ベクトルｋ＊Ｌ，０と鍵生成用ベクトルｋ＊Ｌ，ｊとを含む第Ｌ層目の秘密鍵（鍵情報ｋ→＊１）を処理装置により生成するとしてもよい。
【数１２４】
2010273317.tif 000084
【００８９】
なお、以下の説明においても、鍵生成装置１００は、ＧｅｎＫｅｙアルゴリズムによって、第１層目の秘密鍵を生成するものとして説明する。しかし、以下の説明においても、鍵生成装置１００は、第Ｌ層目の秘密鍵を生成するとしてもよい。
【００９０】
また、以下のようにこの実施の形態に係る暗号処理システム１０を変更することにより、暗号処理システム１０は階層的述語暗号を実現することができる。
図１９は、階層的述語暗号を実現する暗号処理システム１０の機能を示す機能ブロック図である。図１９に示す暗号処理システム１０の鍵生成装置１００と鍵委譲装置４００とは、図１０に示す暗号処理システム１０の鍵生成装置１００と鍵委譲装置４００と同一である。図１９に示す暗号処理システム１０の暗号化装置２００は、図１０に示す暗号処理システム１０の暗号化装置２００が備えるセッション鍵生成部２４０を備えていない。図１９に示す暗号処理システム１０の復号装置３００は、図１０に示す暗号処理システム１０の復号装置３００が備える機能に加え、離散対数計算部３４０を備える。
図２０は、図１９に示す暗号化装置２００の動作を示すフローチャートである。図２１は、図１９に示す復号装置３００の動作を示すフローチャートである。なお、鍵生成装置１００と鍵委譲装置４００との動作は、図１０に示す暗号処理システム１０の鍵生成装置１００と鍵委譲装置４００との動作と同一であるため、説明を省略する。
（Ｓ７０１）で、暗号化装置２００の送信情報設定部２１０は、（Ｓ４０１）での送信情報ρに代えて、平文情報ｍを基底ベクトルｂｎに対する係数として処理装置により設定して、平文ベクトルｍｖを生成する。次に、（Ｓ７０２）で、暗号ベクトル生成部２２０は、（Ｓ４０２）と同様に属性情報ベクトルｘｖと乱数ベクトルｒｖとを生成する。そして、暗号ベクトル生成部２２０は、生成した属性情報ベクトルｘｖと乱数ベクトルｒｖとを、平文ベクトルｍｖに加算して暗号ベクトルｃを処理装置により生成する。そして、（Ｓ７０３）で、データ送信部２３０は、（Ｓ４０２）と同様に生成した暗号ベクトルｃを復号装置３００へ通信装置を介して送信する。
（Ｓ８０１）で、復号装置３００のベクトル入力部３１０は、（Ｓ５０１）と同様に暗号ベクトルｃを通信装置を介して受信して入力する。（Ｓ８０２）で、ペアリング演算部３３０は、（Ｓ５０２）と同様に暗号ベクトルｃと鍵ベクトルｋ＊Ｌ，０とについて、マスター公開鍵ｐｋに含まれる空間Ｖと空間Ｖ＊とを関連付けるペアリング演算ｅを処理装置により行う。そして、鍵ベクトル記憶部３２０は、平文情報ｍに関する情報ｆ（＝ｕｍ）を取得する。（Ｓ８０３）で、離散対数計算部３４０は、ｆについて、ｕを底とする離散対数問題を解き、平文情報ｍを計算する。つまり、離散対数計算部３４０は、数１２５を計算する。
【数１２５】
2010273317.tif 000085
ここで入力する平文情報ｍは、所定の小さな整数τよりも小さな数であるとする。つまり、０≦ｍ＜τである。これは、上述したように、復号装置３００が平文情報ｍを計算する際、離散対数問題を解く必要があるためである。つまり、平文情報ｍを自由に設定できるようにしてしまうと、復号装置３００が平文情報ｍを計算するために多くの時間が必要になるためである。そこで、平文情報ｍを所定の小さな整数τよりも小さな数に制限することで、例えば、平文情報ｍがとり得る全ての値を全探索で調べたとしても、短時間で平文情報ｍを計算することができる。
このように、平文情報ｍを小さな値に制限した場合であっても、多くの応用が可能であることは一般に知られている。
なお、上記説明では、平文情報ｍを１つの基底ベクトルｂｎにのみ設定する例を説明した。しかし、以上の説明に基づけば、容易に複数の基底ベクトルに平文情報ｍを設定することも可能である。
【００９１】
また、上述した階層的述語鍵秘匿方式及び階層的述語暗号では、双対ディストーションベクトル空間であることの条件に含まれていたディストーション写像を利用していない。ディストーション写像については、暗号処理を実現するアルゴリズムでは使用せず、暗号処理の安全性を証明するために使用する。したがって、上述した階層的述語鍵秘匿方式及び階層的述語暗号は、ディストーション写像がない空間であっても成立するということができる。すなわち、上述した階層的述語鍵秘匿方式及び階層的述語暗号を実現する空間にディストーション写像があることは、必須ではない。
【００９２】
実施の形態３．
この実施の形態では、実施の形態２で説明した階層的述語鍵秘匿方式の安全性について説明する。
まず、この実施の形態では、階層的述語鍵秘匿方式の正当性を説明する。そして、実施の形態２で説明した階層的述語鍵秘匿方式がこの正当性の要件を満たすことを説明する。次に、階層的述語鍵秘匿方式についての「属性秘匿安全」を説明する。次に、安全性の基準としてＣＰＡ（Ｃｈｏｓｅｎ  Ｐｌａｉｎｔｅｘｔ  Ａｔｔａｃｋｓ）に対する適応的属性秘匿について定義する。そして、実施の形態２で説明した階層的述語鍵秘匿方式は、ＣＰＡに対する適応的属性秘匿の要件を満たす。
【００９３】
＜階層的述語鍵秘匿方式の正当性＞
階層的述語鍵秘匿方式は数１２６に示す要件を満たすことが必要である。
【数１２６】
2010273317.tif 000086
【００９４】
＜実施の形態２で説明した階層的述語鍵秘匿方式の正当性＞
実施の形態２で説明した階層的述語鍵秘匿方式が上述した正当性の要件を満たすことを説明する。
以下の説明において、数１２７に示す表記を用いる。
【数１２７】
2010273317.tif 000087
【００９５】
まず、以下の補題１が成立することを説明する。
（補題１）
Ｌを１≦Ｌ≦ｄとする。数１２８に示す第Ｌ層目の秘密鍵は、数１２９に示す式の係数φＬ，ｉ，ｊ∈Ｆｑの線形結合によって与えられる。
【数１２８】
2010273317.tif 000088
【数１２９】
2010273317.tif 000089
（補題１が成立することの説明）
Ｌにおける帰納法を用いて説明する。
Ｌ＝１に対して、数１３０であるから補題１は成立する。
【数１３０】
2010273317.tif 000090
Ｌ−１の場合に補題１が成立すると仮定する。つまり、数１３１である。
【数１３１】
2010273317.tif 000091
ここで、数１３２である。
【数１３２】
2010273317.tif 000092
これは、数１２９がｋ＊Ｌ，０に対して成立することを示す。同様に、数１２９はｋ＊Ｌ，ｉ（ｉ＝μＬ，．．．，ｎ−１）に対して成立することも言える。
【００９６】
（補題２）
実施の形態２で説明した階層的述語鍵秘匿方式が上述した正当性の要件を満たす。
（補題２が成立することの説明）
ｃを数１３３に示す属性ベクトルｘ→Ｌｘに対応する秘匿されたセッション鍵であるとする。基底ＢとＢ＊との正規直交性、つまり数１３４と補題１とによって、復元されたセッション鍵Ｋ’は、数１３５となる。
【数１３３】
2010273317.tif 000093
【数１３４】
2010273317.tif 000094
【数１３５】
2010273317.tif 000095
そのため、数１３６となる。
【数１３６】
2010273317.tif 000096
ここで、数１３７である場合には、数１３８である。
【数１３７】
2010273317.tif 000097
【数１３８】
2010273317.tif 000098
なぜなら、数１３５において数１３９はＦｑにおいて一様にランダムであり、Ｋ’はＧＴにおいて一様にランダムであるためである。
【数１３９】
2010273317.tif 000099
数１４０である場合、定義から数１４１であるｊが存在する。
【数１４０】
2010273317.tif 000100
【数１４１】
2010273317.tif 000101
そこで、Ｌｖ＞Ｌｘの場合についてのみ考える。Ｌｖ＞Ｌｘであるなら、ｃにおいて用いられた数１４２に示すベクトル（属性ではない）は、一様にランダムである。
【数１４２】
2010273317.tif 000102
さらに、数１４３に示す述語は非ゼロである。
【数１４３】
2010273317.tif 000103
そのため、無視し得る確率を除いて、数１４４である。
【数１４４】
2010273317.tif 000104
【００９７】
＜属性秘匿安全＞
階層的述語鍵秘匿方式についての属性秘匿安全とは、暗号文（暗号ベクトル）を生成するために使用した属性ベクトルについての秘匿性が保たれることである。つまり、属性秘匿安全である階層的述語鍵秘匿方式において、攻撃者Ａは、暗号文を取得した場合であっても、暗号文を生成するために使用した属性ベクトルについて、送信情報ρに関する情報（セッション鍵Ｋ）と同様に知ることができない。
述語鍵秘匿方式についての属性秘匿安全についての正確な定義は、非特許文献１９に記載がある。なお、非特許文献１９では、「階層的」という概念を考慮していない。そこで、「階層的」という概念、すなわち鍵委譲という処理を考慮するため、数１４５に示す（１）（２）の２つの場合も扱い、非特許文献１９に記載された述語鍵秘匿方式についての属性秘匿安全についての定義を、階層的述語鍵秘匿方式を含むように一般化する。以下の説明において、ビットτは、上記２つの場合を切り替えるために使用される。
【数１４５】
2010273317.tif 000105
【００９８】
＜ＣＰＡに対する適応的属性秘匿の定義＞
階層的属性Σにおける階層的述語Ｆについての階層的述語鍵秘匿方式がＣＰＡに対して適応的属性秘匿であることの要件は、全ての確率的多項式時間の攻撃者Ａについて、以下に示す実験（ＣＰＡ適応的属性秘匿ゲーム）における攻撃者Ａのアドバンテージがセキュリティパラメータにおいて無視し得ることである。
（実験：ＣＰＡ適応的属性秘匿ゲーム）
１．Ｓｅｔｕｐアルゴリズムが実行され、マスター公開鍵ｐｋとマスター秘密鍵ｓｋが生成される。そして、マスター公開鍵ｐｋが攻撃者Ａに与えられる。
２．攻撃者Ａは、数１４６に示すベクトルに対応する鍵を適応的に要求できる。
【数１４６】
2010273317.tif 000106
その要求に対する応答として、攻撃者Ａは、数１４７に示す要求に対応する鍵が与えられる。
【数１４７】
2010273317.tif 000107
３．攻撃者Ａは、数１４８の制限の下で数１４９を出力する。
【数１４８】
2010273317.tif 000108
【数１４９】
2010273317.tif 000109
４．ランダムなビットθが選択される。また、数１５０が計算される。
【数１５０】
2010273317.tif 000110
そして、鍵Ｋ’は、数１５１に示すように、関連付けられたセッション鍵の空間からランダムに選択される。
【数１５１】
2010273317.tif 000111
５．攻撃者Ａは、上記の制限の下、さらに数１５２に示すベクトルについての鍵を要求し続けることができる。
【数１５２】
2010273317.tif 000112
６．攻撃者Ａはビットθ’を出力する。θ’＝θであれば、成功である。
ここで、攻撃者Ａのアドバンテージを数１５３として定義する。
【数１５３】
2010273317.tif 000113
【００９９】
実施の形態２で説明した階層的述語鍵秘匿方式は、ＣＰＡに対する適応的属性秘匿の要件を満たす。
【０１００】
実施の形態４．
この実施の形態では、実施の形態２で説明した階層的述語鍵秘匿方式を応用した安全性の高い階層的述語暗号について説明する。ここで安全性が高いとは、後の実施の形態で説明するＣＣＡ（Ｃｈｏｓｅｎ  Ｃｉｐｈｅｒｔｅｘｔ  Ａｔｔａｃｋｓ）に対する適応的属性秘匿の安全性を満たすという意味である。
まず、ＣＣＡに対する適応的属性秘匿の安全性を満たす階層的述語暗号を実現するための概念として、（１）安全なメッセージ認証、（２）安全な秘匿方式、（３）安全な共通鍵暗号、（４）安全な鍵生成関数の４つの概念を説明する。なお、（１）から（４）の４つの概念は、以下に説明するように先行技術文献に記載された概念であるため、ここでは簡単に説明する。
次に、上記４つの概念を用いて、ＣＣＡに対する適応的属性秘匿の安全性を満たす階層的述語暗号を実現する暗号処理システム１０について説明する。
【０１０１】
＜（１）安全なメッセージ認証＞
（Ｍａｃ，Ｖｒｆｙ）を、ワンタイム選択メッセージ攻撃（ｏｎｅ−ｔｉｍｅ  ｃｈｏｓｅｎ−ｍｅｓｓａｇｅ  ａｔａｃｋｓ）に対して安全なメッセージ認証コードであるとする。なお、ワンタイム選択メッセージ攻撃に対して安全なメッセージ認証コードについての定義は、非特許文献７に記載されている。
（Ｍａｃ，Ｖｒｆｙ）は、対をなす処理であり、それぞれ以下のように動作する。
Ｍａｃは、データを暗号化して認証情報を生成する処理である。Ｍａｃｋｅｙ（ｘ）は、データｘに対して鍵ｋｅｙにより暗号化する。つまり、ｙ＝Ｍａｃｋｅｙ（ｘ）であれば、データｙは、データｘを鍵ｋｅｙで暗号化したデータ（認証情報）である。
Ｖｒｆｙは、Ｍａｃによって生成された認証情報を検証する処理である。Ｖｒｆｙｋｅｙ’（ｘ’，ｙ’）は、ｙ＝Ｍａｃｋｅｙ（ｘ）であるとき、ｘ＝ｘ’、ｙ＝ｙ’、ｋｅｙ＝ｋｅｙ’である場合に１を返し、ｘ＝ｘ’、ｙ＝ｙ’、ｋｅｙ＝ｋｅｙ’のいずれか１つでも成立しない場合に０を返す処理である。
【０１０２】
＜（２）安全な秘匿方式＞
（Ｓｅｔｕｐｅｎｃ，Ｓｅｎｃ，Ｒｅｎｃ）を、安全な秘匿方式であるとする。また、（Ｓｅｔｕｐｅｎｃ，Ｓｅｎｃ，Ｒｅｎｃ）とともに、後述する第１検証情報ｃｏｍ、第２検証情報ｄｅｃ、第３検証情報ｒを用いる。なお、安全な秘匿方式についての定義は、非特許文献７に記載されている。
（Ｓｅｔｕｐｅｎｃ，Ｓｅｎｃ，Ｒｅｎｃ）は一体をなす処理であり、それぞれ以下のように動作する。
Ｓｅｔｕｐｅｎｃは、セキュリティパラメータ１ｋを入力として、文字列ｐｕｂをランダムに選択して出力する。
Ｓｅｎｃは、１ｋと文字列ｐｕｂとを入力として、第１検証情報ｃｏｍと第２検証情報ｄｅｃとｒ∈{０，１}ｋである第３検証情報ｒとをランダムに選択して出力する。
Ｒｅｎｃは、文字列ｐｕｂと第１検証情報ｃｏｍと第２検証情報ｄｅｃとを入力として、ｒ∈{０，１}ｋ∪{⊥}である第３検証情報ｒを出力する。ここで、Ｒｅｎｃは、Ｓｅｔｕｐｅｎｃが出力した文字列ｐｕｂと、そのｐｕｂによってＳｅｎｃが出力した第１検証情報ｃｏｍと第２検証情報ｄｅｃとが入力された場合、ｒ∈{０，１}ｋである第３検証情報ｒを出力し、その他の情報が入力された場合ｒ∈{⊥}である第３検証情報ｒを出力する。
【０１０３】
＜（３）安全な共通鍵暗号＞
（ＳＥ，ＳＤ）を、安全な共通鍵暗号方式であるとする。なお、安全な共通鍵暗号方式についての定義は、非特許文献１に記載されている。
（ＳＥ、ＳＤ）は、対をなす処理であり、それぞれ以下のように動作する。
ＳＥは、共通鍵を用いて暗号化する処理である。ＳＥｋｅｙ（ｘ）は、データｘを共通鍵ｋｅｙにより暗号化する処理である。ｙ＝ＳＥｋｅｙ（ｘ）であれば、データｙは、データｘを共通鍵ｋｅｙにより暗号化したデータである。
ＳＤは、共通鍵を用いて復号する処理である。ＳＤｋｅｙ（ｙ）は、データｙを共通鍵ｋｅｙにより復号する処理である。つまり、ｙ＝ＳＥｋｅｙ（ｘ）である場合に、ｘ＝ＳＤｋｅｙ（ｙ）である。
【０１０４】
＜（４）安全な鍵生成関数＞
ＫＤＦを、安全な鍵生成関数であるとする。なお、安全な鍵生成関数についての定義は、非特許文献１に記載されている。
ＫＤＦ（ｘ）は、データｘに基づき鍵を生成する処理である。ｋｅｙ＝ＫＤＦ（ｘ）であれば、鍵ｋｅｙはデータｘに基づき生成された鍵である。
【０１０５】
＜ＣＣＡに対する適応的属性秘匿の安全性を満たす階層的述語暗号＞
図２２から図２５と、図１１と図１４とに基づき、暗号処理システム１０の機能と動作とについて説明する。
図２２は、この実施の形態に係る暗号処理システム１０の機能を示す機能ブロック図である。暗号処理システム１０は、実施の形態２に係る暗号処理システム１０と同様に、鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００を備える。また、ここでも、復号装置３００が鍵委譲装置４００を備えるものとする。
図２３は、暗号化装置２００の動作を示すフローチャートである。図２４は、復号装置３００の動作を示すフローチャートである。なお、鍵生成装置１００と鍵委譲装置４００との動作の流れは、実施の形態２に係る鍵生成装置１００と鍵委譲装置４００との動作の流れと同一である。そのため、鍵生成装置１００の動作については、図１１に基づき説明する。また、鍵委譲装置４００の動作については、図１４に基づき説明する。
図２５は、双対ディストーションベクトル空間の基底の構造を示す概念図である。
【０１０６】
鍵生成装置１００の機能と動作とについて説明する。鍵生成装置１００の機能構成は、図１０に示す実施の形態２に係る鍵生成装置１００の機能構成と同一である。また、鍵生成装置１００の動作の流れも、図１１に示す実施の形態２に係る鍵生成装置１００の動作の流れと同一である。そのため、図１１に基づき鍵生成装置１００の機能と動作を説明する。
【０１０７】
（Ｓ３０１：マスター鍵生成ステップ）
マスター鍵生成部１１０は、数１５４を計算して、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを処理装置により生成してマスター鍵記憶部１２０に記憶する。
【数１５４】
2010273317.tif 000114
なお、数１５４に示す（１）から（５）は、数１０７に示す（１）から（５）と同一である。但し、Ｎ＝ｎ＋４である点で異なる。Ｎ＝ｎ＋４であることに関しては後述する。（６）マスター鍵生成部１１０は、Ｓｅｔｕｐｅｎｃを処理装置により実行して文字列ｐｕｂを生成する。（７）マスター鍵生成部１１０は、生成した基底Ｂ＊をマスター秘密鍵ｓｋとし、生成した基底Ｂを含む（１λ，μ→，Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ，Ｂ，ｐｕｂ）をマスター公開鍵ｐｋとする。つまり、マスター公開鍵ｐｋに文字列ｐｕｂが含まれる点で、実施の形態２に係るマスター鍵生成部１１０が生成するマスター鍵と異なる。そして、マスター鍵記憶部１２０は、マスター鍵生成部１１０が生成したマスター公開鍵ｐｋとマスター秘密鍵ｓｋと記憶装置に記憶する。
なお、双対ディストーションベクトル空間の次元数は、Ｎ（＝ｎ＋４）であるとした。ここで、ｎは、階層情報μ→が有する階層構造をあらわすために割り当てられている基底数を表すｎである。つまり、ここでは、階層構造をあらわすために割り当てられている基底数ｎに加え、４つの基底ベクトルが設けられている。もちろん、これよりも多くの基底ベクトルを設けてもよい。
図２５に示すように、Ｎ（＝ｎ＋４）個の基底ベクトルのうち、ｎ個の基底ベクトルが階層構造をあらわすために割り当てられている。階層構造をあらわすために割り当てられている基底ベクトルの構造は、図５に示す構造と同様である。そして、残り４つの基底ベクトルのうちの１つの基底ベクトル（ｎ番目の基底ベクトル）は、平文情報ｍのための基底ベクトルである。残り４つの基底ベクトルのうちの他の１つの基底ベクトル（ｎ＋１番目の基底ベクトル）は、暗号文ｃをランダム化するための基底ベクトルである。残り４つの基底ベクトルのうちの他の２つの基底ベクトル（ｎ＋２，ｎ＋３番目の基底ベクトル）は、検証情報（第１検証情報ｃｏｍ）のための基底ベクトルである。
【０１０８】
すなわち、（Ｓ３０１）において、マスター鍵生成部１１０は、数１５５に示すＳｅｔｕｐアルゴリズムを実行して、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを生成する。
【数１５５】
2010273317.tif 000115
【０１０９】
（Ｓ３０２：鍵ベクトルｋ＊１，０生成ステップ）
実施の形態２と同様に、鍵ベクトル生成部１３０は、数１５６を計算して鍵ベクトルｋ＊１，０を処理装置により生成する。
【数１５６】
2010273317.tif 000116
【０１１０】
（Ｓ３０３：鍵生成用ベクトルｋ＊１，ｊ生成ステップ）
実施の形態２と同様に、鍵生成用ベクトル生成部１４０は、数１５７を計算して鍵生成用ベクトルｋ＊１，ｊを処理装置により生成する。
【数１５７】
2010273317.tif 000117
但し、鍵生成用ベクトル生成部１４０は、鍵生成用ベクトルｋ＊１，ｊ（ｊ＝μ１，．．．，ｎ−１，ｎ＋２，ｎ＋３）を生成する。つまり、鍵生成用ベクトル生成部１４０は、鍵生成用ベクトルｋ＊１，ｎ＋２と、鍵生成用ベクトルｋ＊１，ｎ＋３とを生成する点で図１０に示す鍵生成用ベクトル生成部１４０と異なる。
【０１１１】
すなわち、（Ｓ３０２）と（Ｓ３０３）とにおいて、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とは、数１５８に示すＧｅｎＫｅｙアルゴリズムを実行して、鍵ベクトルｋ＊１，０と鍵生成用ベクトルｋ＊１，ｊとを含む第１層目の秘密鍵（鍵情報ｋ→＊１）を処理装置により生成する。
【数１５８】
2010273317.tif 000118
【０１１２】
（Ｓ３０４：鍵配布ステップ）
実施の形態２の鍵配布部１５０と同様に、鍵配布部１５０は、マスター鍵生成部１１０が生成したマスター公開鍵と、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とが生成した鍵情報ｋ→＊１とを復号装置３００へ通信装置を介して送信する。また、鍵配布部１５０は、マスター公開鍵を暗号化装置２００へ通信装置を介して送信する。
【０１１３】
暗号化装置２００の機能と動作とについて説明する。暗号化装置２００は、図１０に示す実施の形態２に係る暗号化装置２００が備える機能に加え、検証情報生成部２５０、検証情報設定部２６０、署名情報生成部２７０（ｃ２生成部、ｃ３生成部、ｃ４生成部）を備える。
【０１１４】
（Ｓ９０１：検証情報生成ステップ）
検証情報生成部２５０は、数１５９を処理装置により計算して第１検証情報ｃｏｍ、第２検証情報ｄｅｃ、第３検証情報ｒを生成する。
【数１５９】
2010273317.tif 000119
つまり、検証情報生成部２５０は、マスター公開鍵に含まれる文字列ｐｕｂを入力として、Ｓｅｎｃ（１λ，ｐｕｂ）を処理装置により実行して、第１検証情報ｃｏｍ、第２検証情報ｄｅｃ、第３検証情報ｒを生成する。
【０１１５】
（Ｓ９０２：送信情報設定ステップ）
実施の形態２と同様に、送信情報設定部２１０は、数１６０を処理装置により計算して送信情報ベクトルρｖを生成する。
【数１６０】
2010273317.tif 000120
【０１１６】
（Ｓ９０３：検証情報設定ステップ）
検証情報設定部２６０は、マスター公開鍵ｐｋに基づき、数１６１を処理装置により計算して検証情報ベクトルｃｖを生成する。
【数１６１】
2010273317.tif 000121
つまり、（１）検証情報設定部２６０は、乱数δｎ＋２を処理装置により生成する。
（２）検証情報設定部２６０は、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂｎ＋２に対する係数として乱数δｎ＋２でランダム化した所定の値（ここでは、１）を処理装置により設定するとともに、基底ベクトルｂｎ＋３に対する係数として乱数δｎ＋２でランダム化した第１検証情報ｃｏｍを処理装置により設定して、検証情報ベクトルｃｖを生成する。
【０１１７】
（Ｓ９０４：暗号ベクトル（データｃ１）生成ステップ）
暗号ベクトル生成部２２０は、マスター公開鍵ｐｋと属性ベクトルｘ→１から属性ベクトルｘ→Ｌ（ｘ→ｉ（ｉ＝１，．．．，Ｌ）（＝（ｘ０，．．．，ｘｉ）（ｉ＝μＬ−１）））（Ｌは、階層の深さ）とに基づき、数１６２を処理装置により計算して暗号ベクトルｃを生成する。
【数１６２】
2010273317.tif 000122
つまり、（１）実施の形態２と同様に、暗号ベクトル生成部２２０は、乱数ｘ→ｉ（ｉ＝Ｌ＋１，．．．，ｄ）と、乱数δｉ（ｉ＝１，．．．，ｄ，ｎ＋１）を処理装置により生成する。
（２）実施の形態２と同様に、暗号ベクトル生成部２２０は、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂｉ（ｉ＝０，．．．，μＬ−１）に対する係数として属性ベクトルの各要素を処理装置により設定するとともに、基底ベクトルｂｉ（ｉ＝μＬ，．．．，ｎ−１）に対する係数として乱数を処理装置により設定して属性情報ベクトルｘｖを生成する。
（３）実施の形態２と同様に、暗号ベクトル生成部２２０は、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂｎ＋１に対する係数として乱数を処理装置により設定して、乱数ベクトルｒｖを生成する。
（４）暗号ベクトル生成部２２０は、生成した属性情報ベクトルｘｖと乱数ベクトルｒｖと、送信情報設定部２１０が生成した送信情報ベクトルρｖと、検証情報設定部２６０が生成した検証情報ベクトルｃｖとを加算して暗号ベクトルｃ（データｃ１）を処理装置により生成する。
【０１１８】
（Ｓ９０５：セッション鍵生成ステップ）
セッション鍵生成部２４０は、数１６３を処理装置により計算してセッション鍵Ｋを生成する。
【数１６３】
2010273317.tif 000123
【０１１９】
（Ｓ９０６：データｃ２生成ステップ）
署名情報生成部２７０は、数１６４を処理装置により計算してデータｃ２を生成する。
【数１６４】
2010273317.tif 000124
つまり、署名情報生成部２７０は、セッション鍵ＫからＫＤＦを処理装置により実行して、共通鍵を生成する。署名情報生成部２７０は、生成した共通鍵により、ＳＥを処理装置により実行して、平文情報ｍと第２検証情報ｄｅｃとを暗号化してデータｃ２を生成する。
【０１２０】
（Ｓ９０７：データｃ３生成ステップ）
署名情報生成部２７０は、第１検証情報ｃｏｍをデータｃ３とする。
【０１２１】
（Ｓ９０８：データｃ４生成ステップ）
署名情報生成部２７０は、以下の数１６５を処理装置により計算してデータｃ４を生成する。
【数１６５】
2010273317.tif 000125
つまり、署名情報生成部２７０は、暗号ベクトル生成部２２０が生成したデータｃ１と署名情報生成部２７０が生成したデータｃ２とを、第３検証情報ｒに基づき処理装置により暗号化する。
【０１２２】
（Ｓ９０９：データ送信ステップ）
データ送信部２３０は、暗号ベクトル生成部２２０が生成したデータｃ１と、署名情報生成部２７０が生成したデータｃ２，ｃ３，ｃ４とを復号装置３００へ通信装置を介して送信する。
【０１２３】
つまり、暗号化装置２００は、数１６６に示すＥｎｃアルゴリズムを実行して、データｃ１，ｃ２，ｃ３，ｃ４を生成する。
【数１６６】
2010273317.tif 000126
【０１２４】
復号装置３００の機能と動作とについて説明する。復号装置３００は、図１０に示す実施の形態２に係る復号装置３００が備える機能に加え、ベクトル変形部３５０、復号部３６０（ｃ２復号部）、改ざん検証部３７０を備える。
【０１２５】
（Ｓ１００１：ベクトル入力ステップ）
実施の形態２と同様に、ベクトル入力部３１０は、暗号化装置２００のデータ送信部２３０が送信したデータｃ１，ｃ２，ｃ３，ｃ４を通信装置を介して受信して入力する。
【０１２６】
（Ｓ１００２：鍵ベクトル変形ステップ）
ベクトル変形部３５０は、数１６７を処理装置により計算して、鍵ベクトルｋ＊Ｌ，０を変形する。
【数１６７】
2010273317.tif 000127
つまり、ベクトル変形部３５０は、後のステップで実行するペアリング演算によって、暗号化装置２００の検証情報生成部２５０が設定した検証情報ｃｏｍが消える（検証情報ｃｏｍを含む情報を設定した基底ベクトル（基底ベクトルｂｎ＋２，ｂｎ＋３と基底ベクトルｂ＊ｎ＋２，ｂ＊ｎ＋３）についての内積が０になる）ように第Ｌ層目の秘密鍵の先頭要素である鍵ベクトルｋ＊Ｌ，０をデータｃ３（検証情報ｃｏｍ）により変形する。
【０１２７】
（Ｓ１００３：ペアリング演算ステップ）
ペアリング演算部３３０は、マスター公開鍵ｐｋと変形後の鍵ベクトルｋ＊Ｌ，０とに基づき、数１６８を処理装置により計算してセッション鍵Ｋ’（＝Ｋ）を生成する。
【数１６８】
2010273317.tif 000128
つまり、ペアリング演算部３３０は、ベクトル入力部３１０が入力したデータｃ１（暗号ベクトルｃ）と、（Ｓ１００２）で変形した鍵ベクトルｋ＊Ｌ，０とについて、マスター公開鍵ｐｋに含まれる空間Ｖと空間Ｖ＊とを関連付けるペアリング演算ｅを処理装置により行うことによりセッション鍵Ｋ’を計算する。
なお、データｃ１が改ざんされていなければ、ベクトル変形部３５０が鍵ベクトルを変形したことにより、データｃ１に設定された検証情報ｃｏｍを含む情報（基底ベクトルｂｎ＋２，ｂｎ＋３に設定された情報）は、ペアリング演算の結果消える。そのため、データｃ１が改ざんされていなければ、ペアリング演算部３３０は、暗号化装置２００が生成したセッション鍵Ｋと同一のセッション鍵Ｋを生成することができる。
【０１２８】
（Ｓ１００４：ｃ２復号ステップ）
復号部３６０は、数１６９を処理装置により計算してデータｃ２を復号する。
【数１６９】
2010273317.tif 000129
つまり、復号部３６０は、セッション鍵ＫからＫＤＦを処理装置により実行して、共通鍵を生成する。復号部３６０は、生成した共通鍵により、ＳＤを処理装置により実行して、平文情報ｍ’（＝ｍ）と第２検証情報ｄｅｃ’（＝ｄｅｃ）とを生成する。つまり、データｃ１が改ざんされておらず、正しくセッション鍵Ｋが生成されるとともに、データｃ２が改ざんされていなければ、暗号化装置２００がデータｃ２に埋め込んだ平文ｍと第２検証情報ｄｅｃとが生成される。
【０１２９】
（Ｓ１００５：改ざん検証ステップ）
改ざん検証部３７０は、数１７０と数１７１とが成立するか否かを処理装置により判定してデータｃ１，ｃ２，ｃ３，ｃ４が改ざんされていないことを検証する。すなわち、改ざん検証部３７０は、平文情報ｍが改ざんされていないことを検証する。
【数１７０】
2010273317.tif 000130
【数１７１】
2010273317.tif 000131
つまり、（１）改ざん検証部３７０は、数１７０に示すように、マスター公開鍵ｐｋに含まれる文字列ｐｕｂと、暗号化装置２００から受信したデータｃ３（第１検証情報ｃｏｍ）と、生成した第２検証情報ｄｅｃ’とに基づき、Ｒｅｎｃを処理装置により実行して、第３検証情報ｒ’（＝ｒ）を生成する。データｃ３が改ざんされておらず、第２検証情報ｄｅｃ’が正しければ、暗号化装置２００がＳｅｎｃを実行して生成した第３検証情報ｒが生成される。一方、データｃ３が改ざんされているか、あるいは第２検証情報ｄｅｃ’が正しくなければ、第３検証情報ｒではなく、識別情報⊥が生成される。つまり、改ざん検証部３７０は、識別情報⊥ではないデータが生成された場合、そのデータは暗号化装置２００がＳｅｎｃを実行して生成した正しい第３検証情報ｒであると判定できる。
（２）改ざん検証部３７０は、数１７１に示すように、生成した第３検証情報ｒ’と、暗号化装置２００から受信したデータｃ１，ｃ２，ｃ４とに基づき、Ｖｒｆｙを処理装置により実行する。第３検証情報ｒ’が正しく、データｃ１，ｃ２，ｃ４が改ざんされていなければ、Ｖｒｆｙの実行結果は１となる。一方、第３検証情報ｒ’が正しくないか、あるいはデータｃ１，ｃ２，ｃ４のいずれかが改ざんされていれば、Ｖｒｆｙの実行結果は０となる。
改ざん検証部３７０は、第３検証情報ｒが正しく生成されるとともに、Ｖｒｆｙの実行結果が１であれば、生成した平文情報ｍ’は暗号化装置２００が送信した平文情報ｍであると判定する。平文情報ｍ’が平文情報ｍであると判定した場合、改ざん検証部３７０は平文情報ｍ’を出力する。一方、平文情報ｍ’が平文情報ｍでないと判定した場合、改ざん検証部３７０は識別情報⊥を出力する。
【０１３０】
つまり、復号装置３００は、数１７２に示すＤｅｃアルゴリズムを実行して、平文情報ｍ’又は識別情報⊥を生成する。
【数１７２】
2010273317.tif 000132
【０１３１】
鍵委譲装置４００の機能と動作とについて説明する。鍵委譲装置４００の機能構成は、図１０に示す実施の形態２に係る鍵委譲装置４００の機能構成と同一である。また、鍵委譲装置４００の動作の流れも、図１４に示す実施の形態２に係る鍵委譲装置４００の動作の流れと同一である。そのため、図１４に基づき鍵委譲装置４００の機能と動作を説明する。
【０１３２】
（Ｓ６０１：鍵ベクトルｋ＊Ｌ，０取得ステップ）
実施の形態２と同様に、鍵ベクトル取得部４１０は、第Ｌ層目の秘密鍵の先頭要素である鍵ベクトルｋ＊Ｌ，０と、第Ｌ層目の秘密鍵のｊ番目（ｊ＝μ１，．．．，ｎ−１）の要素である鍵生成用ベクトルｋ＊Ｌ，ｊとを含む第Ｌ層目の秘密鍵（鍵情報ｋ→＊Ｌ）を通信装置を介して取得する。
（Ｓ６０２：鍵ベクトルｋ＊Ｌ，０生成ステップ）
実施の形態２と同様に、鍵ベクトル生成部４２０は、数１７３を計算して、第Ｌ＋１層目の秘密鍵の先頭要素である鍵ベクトルｋ＊Ｌ＋１，０を処理装置により生成する。
【数１７３】
2010273317.tif 000133
【０１３３】
（Ｓ６０３：鍵生成用ベクトルｋ＊Ｌ，ｊ生成ステップ）
実施の形態２と同様に、鍵生成用ベクトル生成部４３０は、数１７４を計算して、鍵生成用ベクトルｋ＊Ｌ＋１，ｊを処理装置により生成する。鍵生成用ベクトルｋ＊Ｌ＋１，ｊは、第Ｌ＋１層目の秘密鍵のｊ番目の要素である。
【数１７４】
2010273317.tif 000134
但し、鍵生成用ベクトル生成部４３０は、鍵生成用ベクトルｋ＊Ｌ＋１，ｊ（ｊ＝μ１，．．．，ｎ−１，ｎ＋２，ｎ＋３）を生成する。つまり、鍵生成用ベクトル生成部１４０は、鍵生成用ベクトルｋ＊Ｌ＋１，ｎ＋２と、鍵生成用ベクトルｋ＊Ｌ＋１，ｎ＋３とを生成する点で図１０に示す鍵生成用ベクトル生成部１４０と異なる。
【０１３４】
すなわち、（Ｓ６０２）と（Ｓ６０３）とにおいて、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とは、数１７５に示すＤｅｌｅｇａｔｅＬアルゴリズムを実行して、鍵ベクトルｋ＊Ｌ＋１，０と鍵生成用ベクトルｋ＊Ｌ＋１，ｊとを含む第Ｌ＋１層目の秘密鍵（鍵情報ｋ→＊Ｌ＋１）を処理装置により生成する。
【数１７５】
2010273317.tif 000135
【０１３５】
（Ｓ６０４：鍵配布ステップ）
実施の形態２と同様に、鍵配布部４４０は、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とが生成した鍵情報ｋ→＊Ｌ＋１を下位の復号装置３００へ通信装置を介して送信する。
【０１３６】
以上のように、この実施の形態に係る暗号処理システム１０は、実施の形態２で説明した階層的述語鍵秘匿方式を応用して、階層的述語暗号を実現する。なお、この実施の形態で説明した階層的述語暗号は、ＣＣＡに対する適応的属性秘匿の安全性を満たす安全性の高い暗号方式である。
【０１３７】
上述した階層的述語暗号は、実施の形態２で説明した階層的述語鍵秘匿方式に、非特許文献７に記載された方式を応用して構築した。しかし、以下のように、実施の形態２で説明した階層的述語鍵秘匿方式に、非特許文献１１に記載された方式を応用して安全性の高い（ＣＣＡに対する適応的属性秘匿の安全性を満たす）階層的述語暗号を構築することもできる。ここでは、Ｓｅｔｕｐ、Ｇｅｎｋｅｙ、Ｅｎｃ、Ｄｅｃ、ＤｅｌｅｇａｔｅＬの各アルゴリズムを簡単に説明をする。
【０１３８】
実施の形態２で説明した階層的述語鍵秘匿方式に、非特許文献１１に記載された方式を応用した暗号処理システム１０では、安全なワンタイム署名方式を用いて階層的述語暗号を実現する。ここで、「安全な」とは、偽造することができないという意味である。安全なワンタイム署名方式の定義は、非特許文献１１に記載されている。そこで、ここでは、簡単に説明する。
Ｓｉｇ：＝（Ｇｓｉｇ，Ｓｉｇｎ，Ｖｒｆｙ）を、安全なワンタイム署名方式であるとする。（Ｇｓｉｇ，Ｓｉｇｎ，Ｖｒｆｙ）は、それぞれ以下のように動作する。
Ｇｓｉｇ（１λ）は、Ｆｑの認証用の鍵（検証鍵ｖｋ，署名鍵ｓｋ）を出力する処理である。
Σ＝Ｓｉｇｎｓｋ（ｘ）は、データｘに対して署名鍵ｓｋで署名情報Σを生成する処理である。
Ｖｒｆｙｖｋ（ｘ，Σ）は、署名情報Σがデータｘに対して署名鍵ｓｋで生成された正しい署名情報である場合に１を返し、正しい署名情報でない場合に０を返す処理である。
【０１３９】
数１７６にＳｅｔｕｐアルゴリズムを示す。
【数１７６】
2010273317.tif 000136
数１７７にＧｅｎｋｅｙアルゴリズムを示す。
【数１７７】
2010273317.tif 000137
数１７８にＥｎｃアルゴリズムを示す。
【数１７８】
2010273317.tif 000138
数１７９にＤｅｃアルゴリズムを示す。
【数１７９】
2010273317.tif 000139
数１８０にＤｅｌｅｇａｔｅＬアルゴリズムを示す。
【数１８０】
2010273317.tif 000140
【０１４０】
また、上述したＣＣＡに対する適応的属性秘匿の安全性を満たす階層的述語暗号のＥｎｃアルゴリズムにおける平文情報ｍを乱数ｒｎに変更するとともに、Ｄｅｃアルゴリズムの出力をＫ’に変更することにより、階層的述語暗号を階層的述語鍵秘匿方式に変形することができる。
例えば、ＥｎｃアルゴリズムとＤｅｃアルゴリズムとを数１８１、数１８２に示すようにすることで、実施の形態２で説明した階層的述語鍵秘匿方式に、非特許文献７に記載された方式を応用して構築した階層的述語暗号を階層的述語鍵秘匿方式に変更できる。
【数１８１】
2010273317.tif 000141
【数１８２】
2010273317.tif 000142
なお、Ｓｅｔｕｐアルゴリズム、ＧｅｎＫｅｙアルゴリズム、ＤｅｌｅｇａｔｅＬアルゴリズムは変更する必要はない。また、上記説明では、平文情報ｍに代えて乱数ｒｎを用いたが、単にＥｎｃアルゴリズムにおける平文情報ｍをなくしても、つまりデータｃ２の計算にｍを用いないようにしても階層的述語暗号を階層的述語鍵秘匿方式に変形することができる。
【０１４１】
実施の形態２で説明した階層的述語鍵秘匿方式に、非特許文献１１に記載された方式を応用した階層的述語暗号については、単純に、Ｅｎｃアルゴリズムで平文情報ｍに代えて送信情報ρを埋め込んだ暗号ベクトルｃを生成して、Ｄｅｃアルゴリズムで送信情報ρに関する情報ｕρを抽出することで、容易に階層的述語鍵秘匿方式に変換することができる。
【０１４２】
実施の形態５．
この実施の形態では、実施の形態４で説明した階層的述語暗号の安全性について説明する。
まず、この実施の形態では、階層的述語暗号の正当性を説明する。次に、安全性の基準としてＣＣＡ（Ｃｈｏｓｅｎ  Ｃｉｐｈｅｒｔｅｘｔ  Ａｔｔａｃｋｓ）に対する適応的属性秘匿について定義する。そして、実施の形態４で説明した階層的述語暗号がＣＣＡに対する適応的属性秘匿の要件を満たすことを説明する。
【０１４３】
＜階層的述語暗号の正当性＞
階層的述語暗号は数１８３に示す要件を満たすことが必要である。
【数１８３】
2010273317.tif 000143
なお、ＤｅｒｉｖｅＬｖ（ここで、ＬｖはＬｖである）は、上述した通り、ＧｅｎＫｅｙとＤｅｌｅｇａｔｅｉとを用いて定義される。
【０１４４】
＜ＣＣＡに対する適応的属性秘匿の定義＞
階層的属性Σにおける階層的述語Ｆについての階層的述語暗号がＣＣＡに対して適応的属性秘匿であることの要件は、全ての確率的多項式時間の攻撃者Ａについて、以下に示す実験（ＣＣＡ適応的属性秘匿ゲーム）における攻撃者Ａのアドバンテージがセキュリティパラメータにおいて無視し得ることである。
（実験：ＣＣＡ適応的属性秘匿ゲーム）
１．Ｓｅｔｕｐアルゴリズムが実行され、マスター公開鍵ｐｋとマスター秘密鍵ｓｋが生成される。そして、マスター公開鍵ｐｋが攻撃者Ａに与えられる。
２．攻撃者Ａは、数１８４に示すベクトルに対応する鍵を適応的に要求できる。
【数１８４】
2010273317.tif 000144
その要求に対する応答として、攻撃者Ａは、数１８５に示す要求に対応する鍵が与えられる。
【数１８５】
2010273317.tif 000145
３．攻撃者は、暗号文ｃと数１８６に示す属性ベクトルにより問い合わせを行い、その属性ベクトルに関して暗号文ｃの復号を適応的に要求することができる。
【数１８６】
2010273317.tif 000146
その要求に対する応答として、攻撃者Ａは、数１８７に示す平文情報ｍ’が与えられる。
【数１８７】
2010273317.tif 000147
４．攻撃者Ａは、数１８８の制限の下で数１８９を出力する。
【数１８８】
2010273317.tif 000148
【数１８９】
2010273317.tif 000149
５．ランダムなビットθが選択される。そして、攻撃者Ａは、数１９０に示すｃθが与えられる。
【数１９０】
2010273317.tif 000150
６．攻撃者Ａは、さらに上記の制限の下、数１９１に示すベクトルについての鍵を要求し続けることができる。
【数１９１】
2010273317.tif 000151
７．攻撃者Ａは、暗号文ｃと数１９２に示す属性ベクトルにより問い合わせを行い、その属性ベクトルに関連した暗号文ｃの復号を適応的に要求することができる。
【数１９２】
2010273317.tif 000152
８．攻撃者Ａはビットθ’を出力する。θ’＝θであれば、成功である。
ここで、攻撃者Ａのアドバンテージを数１９３として定義する。
【数１９３】
2010273317.tif 000153
【０１４５】
＜実施の形態４で説明した階層的述語暗号の安全性＞
実施の形態４で説明した非特許文献７に記載された方式を応用した階層的述語暗号が、ＣＣＡに対する適応的属性秘匿の要件を満たすことを説明する。
なお、ここでの説明は、非特許文献７に記載された証明に基づくものである。したがって、ここでは、ＣＣＡに対する適応的属性秘匿の要件を満たすことの概要を説明する。
【０１４６】
上述したＣＣＡ適応的属性秘匿ゲームにおいて、階層的述語暗号を攻撃する攻撃者Ａが与えられる。上述したＣＰＡ適応的属性秘匿ゲームにおいて、（ｎ＋２）次元の内積述語の階層的述語暗号に対して攻撃する攻撃者Ａ’を構築する。ここで、Ｓｅｔｕｐ，ＧｅｎＫｅｙ，ＤｅｌｅｇａｔｅＬアルゴリズムは、上述した階層的述語暗号（つまり、内積述語に対する（ｎ＋２）次元の部分空間は、階層的述語鍵秘匿方式についての階層情報μ→ＨＰＫＥＭを除き、＜ｂ０,．．．，ｂｎ−１，ｂｎ＋２，ｂｎ＋３＞）と同一である。階層的述語鍵秘匿方式についての階層情報μ→ＨＰＫＥＭは、μ→ＨＰＫＥＭ：＝（ｎ，ｄ；μ１，．．．，μｄ，μｄ＋２）でありｄ＋１レベルである。一方、階層的述語暗号についての階層情報μ→ＨＰＥは、μ→ＨＰＥ：＝（ｎ，ｄ；μ１，．．．，μｄ）でありｄレベルである。
【０１４７】
攻撃者Ａ’は以下のように定義される。
１．階層的述語鍵秘匿方式の公開鍵ｐｋＨＰＫＥＭ：＝（μ→ＨＰＫＥＭ，Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ，Ｂ）が攻撃者Ａ’に与えられる。攻撃者Ａ’（１λ）は、Ｓｅｔｕｐｅｎｃ（１λ）を実行してｐｕｂを生成する。また、階層的述語暗号の公開鍵ｐｋ：＝（ｐｋＨＰＫＥＭ，ｐｕｂ）を設定して、攻撃者Ａに与える。
２．攻撃者Ａが数１９４に示すベクトルを鍵問い合わせオラクル（ＣＣＡに対する適応的属性秘匿の定義参照）へ送信したなら、攻撃者Ａ’は、数１９４に示すベクトルを鍵問い合わせオラクル（ＣＰＡに対する適応的属性秘匿の定義参照）へ送信する。そして、攻撃者Ａへ応答が返る。
【数１９４】
2010273317.tif 000154
３．攻撃者Ａが属性ベクトル（ｘ→１，．．．，ｘ→Ｌ）とともに暗号文（ｃ１，ｃ２，ｃ３，ｃ４）を復号オラクルへ送信したなら、攻撃者Ａ’は以下の（１）から（３）の処理を行う。
（１）攻撃者Ａ’は、数１９５に示す述語ベクトルを計算する。
【数１９５】
2010273317.tif 000155
（２）攻撃者Ａ’は数１９６に示すベクトル（ｄ＋１レベル）を鍵問い合わせオラクル（ＣＰＡに対する適応的属性秘匿の定義参照）へ送信して、ｋ＊ｄ＋１，０が応答として返る。
【数１９６】
2010273317.tif 000156
（３）攻撃者Ａ’は、数１９７を設定する。
【数１９７】
2010273317.tif 000157
また、攻撃者Ａ’は、Ｄｅｃ（ｋ＊Ｌ，０，ｋ＊Ｌ，ｎ＋２，ｋ＊Ｌ，ｎ＋３，（ｃ１，ｃ２，ｃ３，ｃ４））を計算する。ここで、Ｄｅｃ（ｋ＊Ｌ，０，ｋ＊Ｌ，ｎ＋２，ｋ＊Ｌ，ｎ＋３，（ｃ１，ｃ２，ｃ３，ｃ４））は、階層的述語暗号におけるＤｅｃアルゴリズムである。また、Ｄｅｃ（ｋ＊Ｌ，０，ｋ＊Ｌ，ｎ＋２，ｋ＊Ｌ，ｎ＋３，（ｃ１，ｃ２，ｃ３，ｃ４））の計算においては、ｋ＊Ｌ，０，ｋ＊Ｌ，ｎ＋２，ｋ＊Ｌ，ｎ＋３から計算される値に代えて数１９８の値を直接的に用いる。そして、結果を攻撃者Ａへ返す。
【数１９８】
2010273317.tif 000158
４．攻撃者Ａが数１９９を出力したなら、攻撃者Ａ’は、数２００に示すようにθを選択する。
【数１９９】
2010273317.tif 000159
【数２００】
2010273317.tif 000160
また、攻撃者Ａ’は、数２０１を計算する。ここで、数２０１に示すＥｎｃアルゴリズムは、階層的述語暗号におけるＥｎｃアルゴリズムである。そして、攻撃者Ａ’は、（ｃ（θ）１，ｃ（θ）２，ｃ（θ）３，ｃ（θ）４）を攻撃者Ａへ返す。
【数２０１】
2010273317.tif 000161
５．攻撃者Ａが数２０２に示すベクトルを鍵問い合わせオラクル（ＣＣＡに対する適応的属性秘匿の定義参照）へ送信した場合、攻撃者Ａ’は、ステップ２と同じ処理を実行する。
【数２０２】
2010273317.tif 000162
６．攻撃者Ａが属性ベクトル（ｘ→１，．．．，ｘ→Ｌ）とともに暗号文（ｃ１，ｃ２，ｃ３，ｃ４）を復号オラクルへ送信したなら、攻撃者Ａ’は以下の（１）（２）の処理を行う。
（１）ｃ３＝ｃ（θ）３である場合、攻撃者Ａ’は識別情報⊥を返す。
（２）ｃ３≠ｃ（θ）３である場合、攻撃者Ａ’はステップ３と同じ処理を実行する。
７．最後に、攻撃者Ａは予想したθ’を出力する。攻撃者Ａ’は同じ予想を出力する。
そして、非特許文献７に記載された方法と同様に、数２０３を示すことができる。
【数２０３】
2010273317.tif 000163
【０１４８】
実施の形態６．
この実施の形態では、以上の実施の形態で説明した暗号処理よりも安全性が高くなるように変更した暗号処理について説明する。なお、この実施の形態では、実施の形態２で説明した暗号処理と同様に、ＣＰＡに対する適応的属性秘匿の安全性を満たす暗号処理であって、安全性が高くなるように変更した暗号処理について説明する。そして、後の実施の形態において、実施の形態４と同様に、ＣＣＡに対する適応的属性秘匿の安全性を満たす暗号処理であって、安全性が高くなるように変更した暗号処理について説明する。
まず、安全性が高くなるようにするために用いる「ｎコピーベクトル空間」という概念を説明する。そして、ｎコピーベクトル空間に基づき、安全性が高くなるように変更した暗号処理について説明する。ここでは、階層的述語暗号について説明するが、階層的述語鍵秘匿方式を実現することも可能である。
なお、この実施の形態に係る階層的述語暗号では、ｎコピーベクトル空間や、上記実施の形態に係る階層的述語暗号では用いていない複数の乱数を用いる。
【０１４９】
＜ｎコピーベクトル空間＞
上記実施の形態では、空間Ｖにおける標準基底Ａから生成した基底Ｂと、空間Ｖ＊における標準基底Ａ＊から生成した基底Ｂ＊との１個の双対正規直交規定において暗号処理を実現した。ここでは、基底（Ｂ［０］，．．．，Ｂ［ｎ−１］）と基底（Ｂ［０］＊，．．．，Ｂ［ｎ−１］＊）とのｎ個の双対正規直交規定において暗号処理を実現する。
図２６と図２７とは、ｎコピーベクトル空間を説明するための図である。
図２６に示すように、ｎ個の双対ベクトル空間（Ｖ［０］，．．．，Ｖ［ｎ−１］）と（Ｖ［０］＊，．．．，Ｖ［ｎ−１］＊）とがある。そして、各空間（Ｖ［０］，．．．，Ｖ［ｎ−１］）と（Ｖ［０］＊，．．．，Ｖ［ｎ−１］＊）との標準基底（Ａ［０］，．．．，Ａ［ｎ−１］）と（Ａ［０］＊，．．．，Ａ［ｎ−１］＊）とがある。ここで、各基底Ａ［ｔ］（ｔ＝０，．．．，ｎ−１）とＡ［ｔ］＊（ｔ＝０，．．．，ｎ−１）とは双対正規直交基底である。つまり、基底Ａ［０］とＡ［０］＊とは双対正規直交基底であり、基底Ａ［１］とＡ［１］＊とは双対正規直交基底であり、・・・、基底Ａ［ｎ−１］とＡ［ｎ−１］＊とは双対正規直交基底である。また、標準基底（Ａ［０］，．．．，Ａ［ｎ−１］）と（Ａ［０］＊，．．．，Ａ［ｎ−１］＊）とから基底（Ｂ［０］，．．．，Ｂ［ｎ−１］）と基底（Ｂ［０］＊，．．．，Ｂ［ｎ−１］＊）とを生成する。ここで、標準基底（Ａ［０］，．．．，Ａ［ｎ−１］）から基底（Ｂ［０］，．．．，Ｂ［ｎ−１］）を生成するには、線形変換Ｘ［ｔ］（ｔ＝０，．．．，ｎ−１）を用いる。一方、標準基底（Ａ［０］＊，．．．，Ａ［ｎ−１］＊）から基底（Ｂ［０］＊，．．．，Ｂ［ｎ−１］＊）とを生成するには、線形変換Ｘ［ｔ］（ｔ＝０，．．．，ｎ−１）から生成された（（Ｘ［ｔ］）Ｔ）−１（ｔ＝０，．．．，ｎ−１）を用いる。その結果、各基底Ｂ［ｔ］（ｔ＝０，．．．，ｎ−１）とＢ［ｔ］＊（ｔ＝０，．．．，ｎ−１）とは双対正規直交基底である。つまり、基底Ｂ［０］とＢ［０］＊とは双対正規直交基底であり、基底Ｂ［１］とＢ［１］＊とは双対正規直交基底であり、・・・、基底Ｂ［ｎ−１］とＢ［ｎ−１］＊とは双対正規直交基底である。
なお、ここでは、図２７に示すように、１つの双対空間ＶとＶ＊との標準基底ＡとＡ＊とから、それぞれｎ個の基底（Ｂ［０］，．．．，Ｂ［ｎ−１］）と基底（Ｂ［０］＊，．．．，Ｂ［ｎ−１］＊）とを生成して、暗号処理を実現する。このように、それぞれｎ個の基底（Ｂ［０］，．．．，Ｂ［ｎ−１］）と基底（Ｂ［０］＊，．．．，Ｂ［ｎ−１］＊）とを生成しても、各基底Ｂ［ｔ］（ｔ＝０，．．．，ｎ−１）とＢ［ｔ］＊（ｔ＝０，．．．，ｎ−１）とは双対正規直交基底である。
【０１５０】
＜暗号処理＞
上述したｎコピーベクトル空間を用いた安全性の高い階層的述語暗号を実現する暗号処理システム１０について説明する。
図２８から図３２に基づき、暗号処理システム１０の機能と動作とについて説明する。
図２８は、ｎコピーベクトル空間を用いた安全性の高い階層的述語暗号を実現する暗号処理システム１０の機能を示す機能ブロック図である。暗号処理システム１０は、実施の形態２に係る暗号処理システム１０と同様に、鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００を備える。また、ここでも、復号装置３００が鍵委譲装置４００を備えるものとする。
図２９は、鍵生成装置１００の動作を示すフローチャートである。図３０は、暗号化装置２００の動作を示すフローチャートである。図３１は、復号装置３００の動作を示すフローチャートである。図３２は、鍵委譲装置４００の動作を示すフローチャートである。
【０１５１】
鍵生成装置１００の機能と動作とについて説明する。鍵生成装置１００の機能構成は、図１９に示す実施の形態２に係る鍵生成装置１００の機能構成と同一である。
【０１５２】
（Ｓ１３０１：マスター鍵生成ステップ）
マスター鍵生成部１１０は、数２０４を計算して、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを処理装置により生成してマスター鍵記憶部１２０に記憶する。
【数２０４】
2010273317.tif 000164
つまり、まず、（１）マスター鍵生成部１１０は、セキュリティパラメータ１λで、Ｎ（＝ｎ＋２）次元の双対ディストーションベクトル空間（Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ）を処理装置により生成する。
次に、マスター鍵生成部１１０は、以下の（２）から（５）を各ｔ（ｔ＝０，．．．，ｎ−１）について実行する。
（２）マスター鍵生成部１１０は、標準基底Ａ：＝（ａ０，．．．，ａｎ−１）から基底Ｂ［ｔ］：＝（ｂ［ｔ］０，．．．，ｂ［ｔ］ｎ−１）を生成するための線形変換Ｘ［ｔ］を処理装置によりランダムに選択する。
（３）マスター鍵生成部１１０は、選択した線形変換Ｘ［ｔ］に基づき、基底Ａから基底Ｂ［ｔ］を処理装置により生成する。
（４）マスター鍵生成部１１０は、基底Ａ＊：＝（ａ＊０，．．．，ａ＊ｎ−１）から基底Ｂ［ｔ］＊：＝（ｂ［ｔ］＊０，．．．，ｂ［ｔ］＊ｎ−１）を生成するための線形変換（（Ｘ［ｔ］）Ｔ）−１を線形変換Ｘ［ｔ］から処理装置により生成する。
（５）マスター鍵生成部１１０は、生成した線形変換（（Ｘ［ｔ］）Ｔ）−１に基づき、基底Ａ＊から基底Ｂ［ｔ］＊を処理装置により生成する。
そして、（６）マスター鍵生成部１１０は、生成した線形変換Ｘ［ｔ］（ｔ＝０，．．．，ｎ−１）と基底Ｂ［ｔ］＊（ｔ＝０，．．．，ｎ−１）とをマスター秘密鍵ｓｋとし、生成した基底Ｂ［ｔ］（ｔ＝０，．．．，ｎ−１）を含む（１λ，μ→，Ｖ，Ｖ＊，ＧＴ，Ａ，Ａ＊，ｑ，Ｂ［０］，．．．，Ｂ［ｎ−１］）をマスター公開鍵ｐｋとする。そして、マスター鍵記憶部１２０は、マスター鍵生成部１１０が生成したマスター公開鍵ｐｋとマスター秘密鍵ｓｋと記憶装置に記憶する。
なお、実施の形態２に係る暗号処理システム１０と同様に、双対ディストーションベクトル空間の次元数は、Ｎ（＝ｎ＋２）であるとした。つまり、双対ディストーションベクトル空間の基底ベクトルの構造は、図１５に示す構造である。
【０１５３】
すなわち、（Ｓ１３０１）において、マスター鍵生成部１１０は、数２０５に示すＳｅｔｕｐアルゴリズムを実行して、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを生成する。
【数２０５】
2010273317.tif 000165
【０１５４】
次に、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とは、（Ｓ１３０２）と（Ｓ１３０３）とを各ｔ（ｔ＝０，．．．，ｎ−１）について実行する。
（Ｓ１３０２：鍵ベクトルｋ[t] ＊１，０生成ステップ）
鍵ベクトル生成部１３０は、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと、述語ベクトルｖ→１とに基づき、数２０６を計算して、第１層目（レベル１）の秘密鍵の先頭要素である鍵ベクトルｋ[t]＊１，０を処理装置により生成する。
【数２０６】
2010273317.tif 000166
つまり、（１）鍵ベクトル生成部１３０は、乱数τ１と乱数σ１，０と乱数ζ[t]１，０とを処理装置により生成する。
（２）鍵ベクトル生成部１３０は、基底Ｂ[t]＊における基底ベクトルｂ[t]＊ｎに対する係数として乱数ζ[t]１，０でランダム化した所定の値（ここでは、１）を処理装置により設定するとともに、基底ベクトルｂ[t]＊ｉ（ｉ＝０，．．．，μ１−１）に対する係数として乱数σ１，０でランダム化した述語ベクトルｖ→１の各要素を処理装置により設定し、全体を乱数τ１でランダム化した鍵ベクトルｋ[t]＊１，０を生成する。
【０１５５】
（Ｓ１３０３：鍵生成用ベクトルｋ[t]＊１，ｊ生成ステップ）
鍵生成用ベクトル生成部１４０は、マスター公開鍵ｐｋとマスター秘密鍵ｓｋと、述語ベクトルｖ→１（ｖ→１＝（ｖ０，．．．，ｖｉ）（ｉ＝μＬ−１））とに基づき、数２０７を計算して、下位の秘密鍵（下位の鍵ベクトル）を生成するための鍵生成用ベクトルｋ[t]＊１，ｊを処理装置により生成する。鍵生成用ベクトルｋ[t]＊１，ｊは、第１層目の秘密鍵のｊ番目の要素である。
【数２０７】
2010273317.tif 000167
つまり、（１）鍵生成用ベクトル生成部１４０は、乱数τ１と乱数σ１，ｊ（ｊ＝１，μ１，．．．，ｎ−１）と乱数ζ[t]１，ｊ（ｊ＝１，μ１，．．．，ｎ−１）とを処理装置により生成する。
（２）鍵生成用ベクトル生成部１４０は、基底Ｂ[t]＊における基底ベクトルｂ[t]＊ｎに対する係数として乱数ζ[t]１，１でランダム化した所定の値（ここでは、１）を処理装置により設定するとともに、基底ベクトルｂ[t]＊ｉ（ｉ＝０，．．．，μ１−１）に対する係数として乱数σ１，１でランダム化した述語ベクトルｖ→１の各要素を処理装置により設定し、全体を乱数τ１でランダム化した鍵生成用ベクトルｋ［ｔ］＊１，１を生成する。
（３）鍵生成用ベクトル生成部１４０は、ｊ＝μ１，．．．，ｎ−１の各ｊについて、基底Ｂ[t]＊における基底ベクトルｂ[t]＊ｊに対する係数として所定の値（ここでは、１）を処理装置により設定し、基底ベクトルｂ[t]＊ｉ（ｉ＝０，．．．，μ１−１）に対する係数として乱数σ１，ｉでランダム化した述語ベクトルｖ→１の各要素を処理装置により設定し、基底ベクトルｂ[t]＊ｎに対する係数として乱数ζ[t]１，ｊでランダム化した所定の値（ここでは、１）を設定して、全体を乱数τ１でランダム化した鍵生成用ベクトルｋ[t]＊１，ｊを生成する。
【０１５６】
すなわち、（Ｓ１３０２）と（１Ｓ３０３）とにおいて、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とは、数２０８に示すＧｅｎＫｅｙアルゴリズムを実行して、鍵ベクトルｋ[t]＊１，０と鍵生成用ベクトルｋ[t]＊１，ｊとを含む第１層目の秘密鍵（鍵情報ｋ→[t]＊１）を処理装置により生成する。
【数２０８】
2010273317.tif 000168
【０１５７】
（Ｓ１３０４：鍵配布ステップ）
鍵配布部１５０は、マスター鍵生成部１１０が生成したマスター公開鍵と、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とが生成した鍵情報ｋ→[t]＊１（ｔ＝０，．．．，ｎ−１）とを復号装置３００へ通信装置を介して送信する。また、鍵配布部１５０は、マスター公開鍵を暗号化装置２００へ通信装置を介して送信する。
【０１５８】
暗号化装置２００の機能と動作とについて説明する。暗号化装置２００の機能構成は、図１９に示す実施の形態２に係る暗号化装置２００の機能構成と同一である。
【０１５９】
（Ｓ１４０１：平文情報設定ステップ）
送信情報設定部２１０は、マスター公開鍵ｐｋに基づき、数２０９を処理装置により計算して平文情報ベクトルｍｖ[t]（ｔ＝０，．．．，ｎ−１）を生成する。
【数２０９】
2010273317.tif 000169
つまり、送信情報設定部２１０は、各ｔ（ｔ＝０，．．．，ｎ−１）について、マスター公開鍵ｐｋに含まれる基底Ｂ[t]の基底ベクトルｂ[t]ｎに対する係数として平文情報ｍを処理装置により設定して、平文情報ベクトルｍｖ[t]を生成する。
【０１６０】
（Ｓ１４０２：暗号ベクトル生成ステップ）
暗号ベクトル生成部２２０は、マスター公開鍵ｐｋと属性ベクトルｘ→１から属性ベクトルｘＬ（ｘ→ｉ（ｉ＝１，．．．，Ｌ）（＝（ｘ０，．．．，ｘｉ）（ｉ＝μＬ−１）））（Ｌは、階層の深さ）とに基づき、数２１０を処理装置により計算して暗号ベクトルｃ[t]（ｔ＝０，．．．，ｎ−１）を生成する。
【数２１０】
2010273317.tif 000170
つまり、（１）暗号ベクトル生成部２２０は、乱数ｘ→ｉ（ｉ＝Ｌ＋１，．．．，ｄ）と、乱数δｉ（ｉ＝１，．．．，ｄ）と、乱数δ[t]ｎ＋１（ｔ＝０，．．．，ｎ−１）とを処理装置により生成する。
（２）暗号ベクトル生成部２２０は、マスター公開鍵ｐｋに含まれる基底Ｂ[t]（ｔ＝０，．．．，ｎ−１）の各基底Ｂ[t]について、属性ベクトルの各要素等を処理装置により設定して属性情報ベクトルｘｖ［ｔ］を生成する。
ｉ＝０，．．．，μ１−１の各ｉについて、ｔ＝０，．．．，ｎ−１の基底ベクトルｂ[t]ｉに対する係数の合計がランダム化された属性ベクトルｘ→ｉとなるように、基底ベクトルｂ[t]ｉ（ｔ＝０，．．．，ｎ−１）に対する係数を設定する。ここでは、ｔ＝０，．．．，ｎ−２の基底ベクトルｂ[t]ｉに対する係数として乱数ｓ[t]ｉを設定して、ｔ＝ｎ−１の基底ベクトルｂ[t]ｉに対する係数で合計値がランダム化された属性ベクトルｘ→ｉとなるように調整している。
また、ｉ＝μＬ，．．．，ｎ−１については、基底ベクトルｂ[t]ｉ（ｔ＝０，．．．，ｎ−１）に対する係数として乱数を設定する。
（３）暗号ベクトル生成部２２０は、基底Ｂ[t]（ｔ＝０，．．．，ｎ−１）の各基底Ｂ[t]について、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂ[ｔ]ｎ＋１に対する係数として乱数δ[ｔ]ｎ＋１を処理装置により設定して、乱数ベクトルｒｖ[ｔ]を生成する。
（４）暗号ベクトル生成部２２０は、基底Ｂ[t]（ｔ＝０，．．．，ｎ−１）の各基底Ｂ[t]について、生成した属性情報ベクトルｘｖ[t]と乱数ベクトルｒｖ[t]とを、送信情報設定部２１０が生成した平文情報ベクトルｍｖ[t]に加算して暗号ベクトルｃ[t]を処理装置により生成する。
【０１６１】
（Ｓ１４０３：データ送信ステップ）
データ送信部２３０は、暗号ベクトル生成部２２０が生成した暗号ベクトルｃ［ｔ］を復号装置３００へ通信装置を介して送信する。
【０１６２】
つまり、暗号化装置２００は、数２１１に示すＥｎｃアルゴリズムを実行して、暗号ベクトルｃ［ｔ］を生成する。
【数２１１】
2010273317.tif 000171
【０１６３】
復号装置３００の機能と動作とについて説明する。復号装置３００の機能構成は、図１９に示す実施の形態２に係る復号装置３００の機能構成と同一である。
【０１６４】
（Ｓ１５０１：ベクトル入力ステップ）
ベクトル入力部３１０は、暗号化装置２００のデータ送信部２３０が送信した暗号ベクトルｃ［ｔ］（ｔ＝０，．．．，ｎ−１）を通信装置を介して受信して入力する。
【０１６５】
（Ｓ１５０２：ペアリング演算ステップ）
ペアリング演算部３３０は、マスター公開鍵ｐｋと第Ｌ層目の秘密鍵の先頭要素である鍵ベクトルｋ［ｔ］＊Ｌ，０（ｔ＝０，．．．，ｎ−１）とに基づき、数２１２を処理装置により計算して平文情報ｍに関する情報ｆを生成する。
【数２１２】
2010273317.tif 000172
つまり、ペアリング演算部３３０は、ベクトル入力部３１０が入力した暗号ベクトルｃと、鍵ベクトル記憶部３２０が記憶装置に記憶した鍵ベクトルｋ［ｔ］＊Ｌ，０とについて、マスター公開鍵ｐｋに含まれる空間Ｖと空間Ｖ＊とを関連付けるペアリング演算ｅを処理装置により行い情報ｆを生成する。
また、ペアリング演算部３３０は、マスター公開鍵ｐｋと鍵ベクトルｋ＊［ｔ］Ｌ，０（ｔ＝０，．．．，ｎ−１）とに基づき、数２１３を処理装置により計算して情報ｆから平文情報ｍを抽出するために用いる情報ｇを生成する。
【数２１３】
2010273317.tif 000173
つまり、ペアリング演算部３３０は、マスター公開鍵ｐｋに含まれる基底Ｂ［ｔ］の基底ｂ［ｔ］ｎと、鍵ベクトル記憶部３２０が記憶装置に記憶した鍵ベクトルｋ［ｔ］＊Ｌ，０とについて、マスター公開鍵ｐｋに含まれる空間Ｖと空間Ｖ＊とを関連付けるペアリング演算ｅを処理装置により行い情報ｇを生成する。
【０１６６】
（Ｓ１５０３：離散対数計算ステップ）
離散対数計算部３４０は、情報ｆについて、情報ｇを底とする離散対数問題を解き、平文情報ｍを計算する。つまり、離散対数計算部３４０は、数２１４を計算する。
【数２１４】
2010273317.tif 000174
【０１６７】
なお、実施の形態２で説明した階層的述語暗号を実現する暗号処理システム１０と同様に、ここで入力する平文情報ｍは、所定の小さな整数τよりも小さな数であるとする。これは、上述したように、復号装置３００が平文情報ｍを計算する際、離散対数問題を解く必要があるためである。また、実施の形態２で説明した階層的述語暗号を実現する暗号処理システム１０と同様に、複数の基底ベクトルに平文情報ｍを設定することも可能である。
【０１６８】
つまり、復号装置３００は、数２１５に示すＤｅｃアルゴリズムを実行して、平文情報ｍ’又は識別情報⊥を生成する。
【数２１５】
2010273317.tif 000175
【０１６９】
鍵委譲装置４００の機能と動作とについて説明する。鍵委譲装置４００の機能構成は、図１９に示す実施の形態２に係る鍵委譲装置４００の機能構成と同一である。
【０１７０】
（Ｓ１６０１：鍵ベクトルｋ［ｔ］＊Ｌ，０取得ステップ）
鍵ベクトル取得部４１０は、各ｔ（ｔ＝０，．．．，ｎ−１）について、第Ｌ層目の秘密鍵の先頭要素である鍵ベクトルｋ［ｔ］＊Ｌ，０と、第Ｌ層目の秘密鍵のｊ番目（ｊ＝μ１，．．．，ｎ−１）の要素である鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｊとを含む第Ｌ層目の秘密鍵（鍵情報ｋ→[t]＊Ｌ）を通信装置を介して取得する。
【０１７１】
鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とは、（Ｓ１６０２）と（Ｓ１６０３）とを各ｔ（ｔ＝０，．．．，ｎ−１）について実行する。
（Ｓ１６０２：鍵ベクトルｋ［ｔ］＊Ｌ，０生成ステップ）
鍵ベクトル生成部４２０は、マスター公開鍵ｐｋと鍵情報ｋ→[t]＊Ｌと述語ベクトルｖ→Ｌ＋１（ｖ→Ｌ＋１＝（ｖｉ，．．．，ｖｊ）（ｉ＝μＬ，ｊ＝μＬ＋１−１））とに基づき、数２１６を計算して、第Ｌ＋１層目の秘密鍵の先頭要素である鍵ベクトルｋ［ｔ］＊Ｌ＋１，０を処理装置により生成する。
【数２１６】
2010273317.tif 000176
つまり、（１）鍵ベクトル生成部４２０は、乱数τＬ＋１，０と乱数ψＬ＋１，０，ｉ（ｉ＝０，．．．，Ｌ）と乱数σＬ＋１，０とを処理装置により生成する。
（２）鍵ベクトル生成部４２０は、鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｉ（ｉ＝μＬ，．．．，μＬ＋１−１）に対する係数として乱数σＬ＋１，０でランダム化した述語ベクトルｖ→Ｌ＋１の各要素を設定したベクトルｖｉ（ｉ＝μＬ，．．．，μＬ＋１−１）と、乱数ψＬ＋１，０，０でランダム化した鍵ベクトルｋ［ｔ］＊Ｌ，０と、乱数ψＬ＋１，０，ｉ（ｉ＝１，．．．，Ｌ）でランダム化した鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｉ（ｉ＝１，．．．，Ｌ）とを、鍵ベクトルｋ［ｔ］＊Ｌ，０に加算して鍵ベクトルｋ［ｔ］＊Ｌ＋１，０を処理装置により生成する。
【０１７２】
（Ｓ１６０３：鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｊ生成ステップ）
鍵生成用ベクトル生成部４３０は、マスター公開鍵ｐｋと鍵情報ｋ→[t]＊Ｌと述語ベクトルｖ→Ｌ＋１とに基づき、数２１７を計算して、下位の秘密鍵（下位の鍵ベクトル）を生成するための鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊを処理装置により生成する。鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊは、第Ｌ＋１層目の秘密鍵のｊ番目の要素である。
【数２１７】
2010273317.tif 000177
つまり、（１）鍵生成用ベクトル生成部４３０は、乱数τＬ＋１と乱数ψＬ＋１，ｊ，ｉ（ｉ＝０，．．．，Ｌ）（ｊ＝１，．．．，Ｌ＋１，μＬ＋１，．．．，ｎ−１）と乱数σＬ＋１，ｊ（ｊ＝μＬ＋１，．．．，ｎ−１）とを処理装置により生成する。
（２）鍵生成用ベクトル生成部１４０は、ｊ＝１，．．．，Ｌ＋１，μＬ＋１，．．．，ｎ−１の各ｊについて、鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｊに、鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｉ（ｉ＝μＬ，．．．，μＬ＋１−１）に対する係数として乱数σＬ＋１，ｊでランダム化した述語ベクトルｖ→Ｌ＋１の各要素を処理装置により設定したベクトルと、乱数ψＬ＋１，ｊ，０でランダム化した鍵ベクトルｋ［ｔ］＊Ｌ，０と、乱数ψＬ＋１，ｊ，ｉ（ｉ＝１，．．．，Ｌ）でランダム化した鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｉとを加算して、鍵ベクトルｋ［ｔ］＊Ｌ＋１，０の下位の鍵ベクトルを生成するための鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊを生成する。
【０１７３】
すなわち、（Ｓ１６０１）と（Ｓ１６０２）とにおいて、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とは、数２１８に示すＤｅｌｅｇａｔｅＬアルゴリズムを実行して、鍵ベクトルｋ［ｔ］＊Ｌ＋１，０と鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊとを含む第Ｌ＋１層目の秘密鍵（鍵情報ｋ→[t]＊Ｌ＋１）を処理装置により生成する。
【数２１８】
2010273317.tif 000178
【０１７４】
（Ｓ１６０４：鍵配布ステップ）
鍵配布部４４０は、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とが生成した鍵情報ｋ→[t]＊Ｌ＋１とを下位の復号装置３００へ通信装置を介して送信する。
【０１７５】
（Ｓ１５０２）で計算するペアリング演算について補足説明する。
実施の形態２では、図１６に基づき説明したように、属性ベクトルと述語ベクトルとの内積が０になることを利用して、暗号文ｃのうち基底ベクトルｂｎに関する成分以外をペアリング演算により０にして、基底ベクトルｂｎに関する成分を抽出した。同様に、この実施の形態でも（Ｓ１５０２）でペアリング演算を行うことにより、数２１９に示すように暗号文ｃのうち基底ベクトルｂｎに関する成分が抽出される。数２１９は、ペアリング演算の説明のための式である。数２１９においては、簡単のため、乱数の添え字を簡略化している。
【数２１９】
2010273317.tif 000179
【０１７６】
以上のように、この実施の形態に係る暗号処理システム１０は、ＣＰＡに対する適応的属性秘匿の安全性を満たす階層的述語暗号であって、安全性が高くなるように変更した階層的述語暗号を実現する。
なお、この実施の形態に係る暗号処理システム１０も上記実施の形態に係る暗号処理システム１０と同様に、容易に階層的述語鍵秘匿方式を実現することができる。
【０１７７】
実施の形態７．
この実施の形態では、実施の形態６で説明したＣＰＡに対する適応的属性秘匿の要件を満たす暗号処理に基づき構築したＣＣＡに対する適応的属性秘匿の要件を満たす暗号処理について説明する。
【０１７８】
実施の形態６で説明したｎコピー空間を利用した階層的述語暗号に、非特許文献１１に記載された方式を応用して、ＣＣＡに対する適応的属性秘匿の要件を満たすである階層的述語暗号を構築する。
なお、実施の形態４では、非特許文献７に記載された方式を応用した階層的述語暗号を主として説明し、非特許文献１１に記載された方式を応用した階層的述語暗号は簡単に説明した。ここでは、非特許文献１１に記載された方式を応用した階層的述語暗号を説明する。
【０１７９】
図３３から図３５と、図２９と図３２とに基づき、暗号処理システム１０の機能と動作とについて説明する。
図３３は、この実施の形態に係る暗号処理システム１０の機能を示す機能ブロック図である。暗号処理システム１０は、実施の形態２に係る暗号処理システム１０と同様に、鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００を備える。また、ここでも、復号装置３００が鍵委譲装置４００を備えるものとする。
図３４は、暗号化装置２００の動作を示すフローチャートである。図３５は、復号装置３００の動作を示すフローチャートである。なお、鍵生成装置１００と鍵委譲装置４００との動作の流れは、実施の形態６に係る鍵生成装置１００と鍵委譲装置４００との動作の流れと同一である。そのため、鍵生成装置１００の動作については、図２９に基づき説明する。また、鍵委譲装置４００の動作については、図３２に基づき説明する。
なお、以下の説明において、Ｓｉｇ：＝（Ｇｓｉｇ，Ｓｉｇｎ，Ｖｒｆｙ）は、実施の形態４で説明した安全なワンタイム署名方式である。
【０１８０】
鍵生成装置１００の機能と動作とについて説明する。鍵生成装置１００の機能構成は、図２８に示す実施の形態６に係る鍵生成装置１００の機能構成と同一である。また、鍵生成装置１００の動作の流れは、図２９に示す実施の形態６に係る鍵生成装置１００の動作の流れと同一であるため、図２９に基づき鍵生成装置１００の機能と動作を説明する。
【０１８１】
（Ｓ１３０１：マスター鍵生成ステップ）
実施の形態６と同様に、マスター鍵生成部１１０は、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを処理装置により生成してマスター鍵記憶部１２０に記憶する。
なお、実施の形態４と同様に、双対ディストーションベクトル空間の次元数は、Ｎ（＝ｎ＋４）であるとした。つまり、双対ディストーションベクトル空間の基底ベクトルの構造は、図２５に示す構造である。
【０１８２】
すなわち、（Ｓ１３０１）において、マスター鍵生成部１１０は、数２２０に示すＳｅｔｕｐアルゴリズムを実行して、マスター公開鍵ｐｋとマスター秘密鍵ｓｋとを生成する。
【数２２０】
2010273317.tif 000180
【０１８３】
次に、実施の形態６と同様に、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とは、（Ｓ１３０２）と（Ｓ１３０３）とを各ｔ（ｔ＝０，．．．，ｎ−１）について実行する。
（Ｓ１３０２：鍵ベクトルｋ[t]＊１，０生成ステップ）
実施の形態６と同様に、鍵ベクトル生成部１３０は、数２２１を計算して、第１層目（レベル１）の秘密鍵の先頭要素である鍵ベクトルｋ[t]＊１，０を処理装置により生成する。
【数２２１】
2010273317.tif 000181
【０１８４】
（Ｓ１３０３：鍵生成用ベクトルｋ[t]＊１，ｊ生成ステップ）
実施の形態６と同様に、鍵生成用ベクトル生成部１４０は、数２２２を計算して鍵生成用ベクトルｋ[t]＊１，ｊを処理装置により生成する。鍵生成用ベクトルｋ[t]＊１，ｊは、第１層目の秘密鍵のｊ番目の要素である。
【数２２２】
2010273317.tif 000182
但し、鍵生成用ベクトル生成部１４０は、鍵生成用ベクトルｋ[t]＊１，ｊ（ｊ＝１，μ１，．．．，ｎ−１，ｎ＋２，ｎ＋３）を生成する。つまり、鍵生成用ベクトル生成部１４０は、鍵生成用ベクトルｋ[t]＊１，ｎ＋２と、鍵生成用ベクトルｋ[t]＊１，ｎ＋３とを生成する点で図２８に示す鍵生成用ベクトル生成部１４０と異なる。
【０１８５】
すなわち、（Ｓ１３０２）と（Ｓ１３０３）とにおいて、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とは、数２２３に示すＧｅｎＫｅｙアルゴリズムを実行して、鍵ベクトルｋ[t]＊１，０と鍵生成用ベクトルｋ[t]＊１，ｊとを含む第１層目の秘密鍵（鍵情報ｋ→[t]＊１）を処理装置により生成する。
【数２２３】
2010273317.tif 000183
【０１８６】
（Ｓ１３０４：鍵配布ステップ）
実施の形態６と同様に、鍵配布部１５０は、マスター鍵生成部１１０が生成したマスター公開鍵と、鍵ベクトル生成部１３０と鍵生成用ベクトル生成部１４０とが生成した鍵情報ｋ→[t]＊１（ｔ＝０，．．．，ｎ−１）とを復号装置３００へ通信装置を介して送信する。また、鍵配布部１５０は、マスター公開鍵を暗号化装置２００へ通信装置を介して送信する。
【０１８７】
暗号化装置２００の機能と動作とについて説明する。暗号化装置２００は、図２８に示す実施の形態６に係る暗号化装置２００の機能に加え、検証情報生成部２５０、検証情報設定部２６０、署名情報生成部２７０を備える。
【０１８８】
（Ｓ１７０１：検証情報生成ステップ）
検証情報生成部２５０は、数２２４を処理装置により計算して検証鍵ｖｋ、署名鍵ｓｋを生成する。
【数２２４】
2010273317.tif 000184
【０１８９】
（Ｓ１７０２：平文情報設定ステップ）
実施の形態６と同様に、送信情報設定部２１０は、数２２５を処理装置により計算してマスター公開鍵ｐｋに基づき、平文情報ベクトルｍｖ[t]（ｔ＝０，．．．，ｎ−１）を処理装置により生成する。
【数２２５】
2010273317.tif 000185
【０１９０】
（Ｓ１７０３：検証情報設定ステップ）
検証情報設定部２６０は、マスター公開鍵ｐｋに基づき、数２２６を処理装置により計算して検証情報ベクトルｃｖ[t]（ｔ＝０，．．．，ｎ−１）を生成する。
【数２２６】
2010273317.tif 000186
つまり、（１）検証情報設定部２６０は、乱数δ［ｔ］ｎ＋２（ｔ＝０，．．．，ｎ−１）を処理装置により生成する。
（２）検証情報設定部２６０は、各ｔ（ｔ＝０，．．．，ｎ−１）に対して、マスター公開鍵ｐｋに含まれる基底Ｂの基底ベクトルｂ[t]ｎ＋２に対する係数として乱数δ［ｔ］ｎ＋２でランダム化した所定の値（ここでは、１）を処理装置により設定するとともに、基底ベクトルｂ[t]ｎ＋３に対する係数として乱数δ［ｔ］ｎ＋２でランダム化した検証鍵ｖｋを処理装置により設定して、検証情報ベクトルｃｖ[t]（ｔ＝０，．．．，ｎ−１）を生成する。
【０１９１】
（Ｓ１７０４：暗号ベクトル生成ステップ）
暗号ベクトル生成部２２０は、マスター公開鍵ｐｋと属性ベクトルｘ→１から属性ベクトルｘ→Ｌ（ｘ→ｉ（ｉ＝１，．．．，Ｌ）（＝（ｘ０，．．．，ｘｉ）（ｉ＝μＬ−１）））（Ｌは、階層の深さ）とに基づき、数２２７を処理装置により計算して暗号ベクトルｃ[t]（ｔ＝０，．．．，ｎ−１）を生成する。
【数２２７】
2010273317.tif 000187
なお、数２２７に示す（１）から（３）は、数２３８に示す（１）から（３）と同一である。（４）暗号ベクトル生成部２２０は、基底Ｂ[t]（ｔ＝０，．．．，ｎ−１）の各基底Ｂ[t]について、生成した属性情報ベクトルｘｖ[t]と乱数ベクトルｒｖ[t]と、送信情報設定部２１０が生成した平文情報ベクトルｍｖ[t]と、検証情報設定部２６０が生成した検証情報ベクトルｃｖ[t]とを加算して暗号ベクトルｃ[t]を処理装置により生成する。
【０１９２】
（Ｓ１７０５：署名情報生成ステップ）
署名情報生成部２７０は、数２２８を処理装置により計算して署名情報Σを生成する。
【数２２８】
2010273317.tif 000188
つまり、署名情報生成部２７０は、署名鍵ｓｋに基づきＳｉｇｎを処理装置により実行して、署名情報Σを生成する。
【０１９３】
（Ｓ１７０６：データ送信ステップ）
データ送信部２３０は、暗号ベクトル生成部２２０が生成した暗号ベクトルｃ［ｔ］と、検証情報生成部２５０が生成した検証鍵ｖｋと、署名情報生成部２７０が生成した署名情報Σとを復号装置３００へ通信装置を介して送信する。
【０１９４】
つまり、暗号化装置２００は、数２２９に示すＥｎｃアルゴリズムを実行して、暗号ベクトルｃ［ｔ］（ｔ＝０，．．．，ｎ−１）と検証鍵ｖｋと署名情報Σとを生成する。
【数２２９】
2010273317.tif 000189
【０１９５】
復号装置３００の機能と動作とについて説明する。復号装置３００は、図２８に示す実施の形態６に係る復号装置３００が備える機能に加え、改ざん検証部３７０を備える。
【０１９６】
（Ｓ１８０１：ベクトル入力ステップ）
ベクトル入力部３１０は、暗号化装置２００のデータ送信部２３０が送信した暗号ベクトルｃ［ｔ］（ｔ＝０，．．．，ｎ−１）と検証鍵ｖｋと署名情報Σとを通信装置を介して受信して入力する。
【０１９７】
（Ｓ１８０２：署名検証ステップ）
改ざん検証部３７０は、数２３０が成立するか否かを処理装置により判定する。
【数２３０】
2010273317.tif 000190
つまり、改ざん検証部３７０は、署名情報Σについて検証鍵ｖｋによってＶｒｆｙを実行することにより検証を行う。
【０１９８】
（Ｓ１８０３：鍵ベクトル変形ステップ）
ベクトル変形部３５０は、数２３１を処理装置により計算して、鍵ベクトルｋ［ｔ］＊Ｌ，０を変形する。
【数２３１】
2010273317.tif 000191
つまり、ベクトル変形部３５０は、後のステップで実行するペアリング演算によって、暗号化装置２００の検証情報生成部２５０が設定した検証鍵ｖｋが消える（検証鍵ｖｋを含む情報を設定した基底ベクトルの係数が０になる）ように鍵ベクトルを検証鍵ｖｋにより変形する。
【０１９９】
（Ｓ１８０４：ペアリング演算ステップ）
ペアリング演算部３３０は、数２３２を計算して、マスター公開鍵ｐｋと変形後の鍵ベクトルｋ［ｔ］＊Ｌ，０（ｔ＝０，．．．，ｎ−１）とに基づき、平文情報ｍに関する情報ｆを生成する。
【数２３２】
2010273317.tif 000192
また、ペアリング演算部３３０は、数２３３を計算して、マスター公開鍵ｐｋと変形後の鍵ベクトルｋ［ｔ］＊Ｌ，０（ｔ＝０，．．．，ｎ−１）とに基づき、情報ｆから平文情報ｍを抽出するために用いる情報ｇを生成する。
【数２３３】
2010273317.tif 000193
【０２００】
（Ｓ１８０５：離散対数計算ステップ）
実施の形態６と同様に、離散対数計算部３４０は、情報ｆについて、情報ｇを底とする離散対数問題を解き、平文情報ｍを計算する。つまり、離散対数計算部３４０は、数２３４を計算する。
【数２３４】
2010273317.tif 000194
【０２０１】
なお、実施の形態２で説明した階層的述語暗号を実現する暗号処理システム１０と同様に、ここで入力する平文情報ｍは、所定の小さな整数τよりも小さな数であるとする。これは、上述したように、復号装置３００が平文情報ｍを計算する際、離散対数問題を解く必要があるためである。また、実施の形態２で説明した階層的述語暗号を実現する暗号処理システム１０と同様に、複数の基底ベクトルに平文情報ｍを設定することも可能である。
【０２０２】
つまり、復号装置３００は、数２３５に示すＤｅｃアルゴリズムを実行して、平文情報ｍ’又は識別情報⊥を生成する。
【数２３５】
2010273317.tif 000195
【０２０３】
鍵委譲装置４００の機能と動作とについて説明する。鍵委譲装置４００の機能構成は、図２８に示す実施の形態６に係る鍵委譲装置４００の機能構成と同一である。また、鍵委譲装置４００の動作の流れも、図３２に示す実施の形態２に係る鍵委譲装置４００の動作の流れと同一であるため、図３２に基づき鍵委譲装置４００の機能と動作を説明する。
【０２０４】
（Ｓ１６０１：鍵ベクトルｋ［ｔ］＊Ｌ，０取得ステップ）
実施の形態６と同様に、鍵ベクトル取得部４１０は、第Ｌ層目の秘密鍵の先頭要素である鍵ベクトルｋ［ｔ］＊Ｌ，０と、第Ｌ層目の秘密鍵のｊ番目（ｊ＝μ１，．．．，ｎ−１）の要素である鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｊとを含む第Ｌ層目の秘密鍵（鍵情報ｋ→[t]＊Ｌ）を通信装置を介して取得する。
【０２０５】
実施の形態６と同様に、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とは、（Ｓ１６０２）と（Ｓ１６０３）とを各ｔ（ｔ＝０，．．．，ｎ−１）について実行する。
（Ｓ１６０２：鍵ベクトルｋ［ｔ］＊Ｌ，０生成ステップ）
実施の形態６と同様に、鍵ベクトル生成部４２０は、数２３６を計算して、第Ｌ＋１層目の秘密鍵の先頭要素である鍵ベクトルｋ［ｔ］＊Ｌ＋１，０を処理装置により生成する。
【数２３６】
2010273317.tif 000196
【０２０６】
（Ｓ１６０３：鍵生成用ベクトルｋ［ｔ］＊Ｌ，ｊ生成ステップ）
実施の形態６と同様に、鍵生成用ベクトル生成部４３０は、数２３７を計算して、鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊを処理装置により生成する。鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊは、第Ｌ＋１層目の秘密鍵のｊ番目の要素である。
【数２３７】
2010273317.tif 000197
但し、鍵生成用ベクトル生成部４３０は、鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊ（ｊ＝μ１，．．．，ｎ−１，ｎ＋２，ｎ＋３）を生成する。つまり、鍵生成用ベクトル生成部４３０は、鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｎ＋２と、鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｎ＋３とを生成する点で図１０に示す鍵生成用ベクトル生成部１４０と異なる。
【０２０７】
すなわち、（Ｓ１６０２）と（Ｓ１６０３）とにおいて、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とは、数２３８に示すＤｅｌｅｇａｔｅＬアルゴリズムを実行して、鍵ベクトルｋ［ｔ］＊Ｌ＋１，０と鍵生成用ベクトルｋ［ｔ］＊Ｌ＋１，ｊとを含む鍵情報ｋ→[t]＊Ｌ＋１を処理装置により生成する。
【数２３８】
2010273317.tif 000198
【０２０８】
（Ｓ１６０４：鍵配布ステップ）
実施の形態６と同様に、鍵配布部４４０は、鍵ベクトル生成部４２０と鍵生成用ベクトル生成部４３０とが生成した鍵情報ｋ→[t]＊Ｌ＋１を下位の復号装置３００へ通信装置を介して送信する。
【０２０９】
以上のように、この実施の形態に係る暗号処理システム１０は、実施の形態６で説明したＣＰＡに対する適応的属性秘匿の安全性を満たす階層的述語暗号を応用して、ＣＣＡに対する適応的属性秘匿の安全性を満たす階層的述語暗号を実現する。
【０２１０】
実施の形態８．
この実施の形態では、双対ディストーションベクトル空間の実現方法について説明する。まず、上記実施の形態で双対ディストーションベクトル空間の例として用いた非対称双線形ペアリンググループの直積による実現方法について説明する。次に、対称双線形ペアリンググループの直積による実現方法について説明する。そして、種数１以上の超特異曲線のヤコビ多様体による実現方法について説明する。
【０２１１】
＜非対称双線形ペアリンググループの直積による実現方法＞
非対称双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）と、非対称双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）におけるペアリング演算ｅとが与えられる。なお、非対称双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）とペアリング演算とについては実施の形態１で説明した通りである。
以下のように、双対ディストーションベクトル空間を実現する。
Ｖ，Ｖ＊，ａ０，．．．，ａＮ−１，ａ＊０，．．．，ａ＊Ｎ−１は、数２３９に示す通りである。
【数２３９】
2010273317.tif 000199
ベクトルｘ，ｙは、数２４０のようになる。
【数２４０】
2010273317.tif 000200
（Ｖ，Ｖ＊）におけるペアリング演算ｅを数２４１のように定義する。
【数２４１】
2010273317.tif 000201
ここで、なお、ペアリング演算ｅのｅという表記は、（Ｇ１，Ｇ２）と（Ｖ，Ｖ＊）との両方において使用する。また、ペアリング演算ｅの非退化性と双線形性とは明らかに成立する。ここで、数２４２である。
【数２４２】
2010273317.tif 000202
また、ディストーション写像φｉ，ｊは、数２４３のように単純に定義される。
【数２４３】
2010273317.tif 000203
【０２１２】
＜対称双線形ペアリンググループの直積による実現方法＞
上記実施の形態で説明した対称双線形ペアリンググループ（Ｇ，ＧＴ，ｇ，ｑ）を用いても、非対称双線形ペアリンググループ（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｑ）を用いた場合と同様に、直積を構築できる。つまり、Ｖ＝Ｖ＊であり、Ａ＝Ａ＊である構造となる。そのため、ペアリング演算ｅと基底Ａ＝Ａ＊における基底ベクトルへの射影を用いて、空間Ｖ＝Ｖ＊におけるどんな非ゼロのベクトルｘとｘ’とに対しても、ｘ＝ｃｘ’であるｃ∈Ｆｑが存在することを確認できる。
【０２１３】
＜種数１以上の超特異曲線のヤコビ多様体による実現方法＞
双対ディストーションベクトル空間は、いくつかの特別な超特異楕円曲線Ｃのヤコビ多様体における有理数ｑの点の集合として認識される。つまり、Ｖ＝Ｖ＊：＝ＪａｃＣ［ｑ］である。空間Ｖ（とＶ＊）の次元Ｎは、超特異楕円曲線Ｃの２倍である。空間Ｖの標準基底Ａ＝（ａ０，．．．，ａＮ−１）は、フロベニウス自己準同型の固有ベクトルによって与えられる。数２４４であるような全ての値κｉ，ｊ∈Ｆｑは非特許文献２７に記載されたＷｅｉｌペアリングｅによって決定される。そのような明白な値κｉ，ｊを用いれば、空間Ｖ＊の双対正規直交基底Ａ＊を構築できる。
【数２４４】
2010273317.tif 000204
ここで、非特許文献２１では、自己準同型φｉ，ｊをディストーション写像と呼び、ｋ≠ｊであるとき、φｉ，ｊ（ａｋ）＝０であることを満たす必要はなかった。しかし、非特許文献２１は、＜ａｊ＞に対する射影作用素Ｐｒｊ、つまり、Ｐｒｊ（ａｋ）＝δｊ，ｋａｊが多項式時間で計算可能であることを示した。そのため、φｉ，ｊＰｒｊの構成は、φｉ，ｊＰｒｊ（ａｋ）＝δｊ，ｋａｉである。そして、これは多項式時間で計算可能である。ここでは、φｉ，ｊＰｒｊをディストーション写像と呼ぶ。
【０２１４】
実施の形態９．
以上の実施の形態では、双対ベクトル空間において暗号処理を実現する方法について説明した。この実施の形態では、双対加群において暗号処理を実現する方法について説明する。
【０２１５】
つまり、以上の実施の形態では、素数位数ｑの巡回群において暗号処理を実現した。しかし、合成数Ｍを用いて数２４５のように環Ｒを表した場合、環Ｒを係数とする加群においても、上記実施の形態で説明した暗号処理を適用することができる。
【数２４５】
2010273317.tif 000205
例えば、実施の形態２で説明した階層的述語鍵秘匿方式を、環Ｒを係数とする加群において実現すると数２４６から数２５０のようになる。
【数２４６】
2010273317.tif 000206
【数２４７】
2010273317.tif 000207
【数２４８】
2010273317.tif 000208
【数２４９】
2010273317.tif 000209
【数２５０】
2010273317.tif 000210
すなわち、原則として、以上の実施の形態で体Ｆｑとして説明した処理を、環Ｒに置き換えることにより、以上の実施の形態で説明した暗号処理を、環Ｒを係数とする加群において実現できる。
【０２１６】
次に、実施の形態における暗号処理システム１０（鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００）のハードウェア構成について説明する。
図３６は、鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００のハードウェア構成の一例を示す図である。
図３６に示すように、鍵生成装置１００、暗号化装置２００、復号装置３００、鍵委譲装置４００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、ＬＣＤ９０１（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、通信ボード９１５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０（固定ディスク装置）の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置９２０は、所定の固定ディスクインタフェースを介して接続される。
【０２１７】
ＲＯＭ９１３、磁気ディスク装置９２０は、不揮発性メモリの一例である。ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３とＲＡＭ９１４と磁気ディスク装置９２０とは、記憶装置（メモリ）の一例である。また、キーボード９０２、通信ボード９１５は、入力装置の一例である。また、通信ボード９１５は、通信装置（ネットワークインタフェース）の一例である。さらに、ＬＣＤ９０１は、表示装置の一例である。
【０２１８】
磁気ディスク装置９２０又はＲＯＭ９１３などには、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【０２１９】
プログラム群９２３には、上記の説明において「マスター鍵生成部１１０」、「マスター鍵記憶部１２０」、「鍵ベクトル生成部１３０」、「鍵生成用ベクトル生成部１４０」、「鍵配布部１５０」、「送信情報設定部２１０」、「暗号ベクトル生成部２２０」、「データ送信部２３０」、「セッション鍵生成部２４０」、「検証情報生成部２５０」、「検証情報設定部２６０」、「署名情報生成部２７０」、「ベクトル入力部３１０」、「鍵ベクトル記憶部３２０」、「ペアリング演算部３３０」、「離散対数計算部３４０」、「ベクトル変形部３５０」、「復号部３６０」、「改ざん検証部３７０」、「鍵ベクトル取得部４１０」、「鍵ベクトル生成部４２０」、「鍵生成用ベクトル生成部４３０」、「鍵配布部４４０」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、上記の説明において「マスター公開鍵ｐｋ」、「マスター秘密鍵ｓｋ」、「暗号ベクトルｃ」、「鍵ベクトル」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【０２２０】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、その他光ディスク等の記録媒体やＩＣチップに記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ９１３等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【０２２１】
１０  暗号処理システム、１００  鍵生成装置、１１０  マスター鍵生成部、１２０  マスター鍵記憶部、１３０  鍵ベクトル生成部、１４０  鍵生成用ベクトル生成部、１５０  鍵配布部、２００  暗号化装置、２１０  送信情報設定部、２２０  暗号ベクトル生成部、２３０  データ送信部、２４０  セッション鍵生成部、２５０  検証情報生成部、２６０  検証情報設定部、２７０  署名情報生成部、３００  復号装置、３１０  ベクトル入力部、３２０  鍵ベクトル記憶部、３３０  ペアリング演算部、３４０  離散対数計算部、３５０  ベクトル変形部、３６０  復号部、３７０  改ざん検証部、４００  鍵委譲装置、４１０  鍵ベクトル取得部、４２０  鍵ベクトル生成部、４３０  鍵生成用ベクトル生成部、４４０  鍵配布部。
【図１】
2010273317.tif 000253
【図２】
2010273317.tif 000254
【図３】
2010273317.tif 000255
【図４】
2010273317.tif 000256
【図５】
2010273317.tif 000257
【図６】
2010273317.tif 000258
【図７】
2010273317.tif 000259
【図８】
2010273317.tif 000260
【図９】
2010273317.tif 000261
【図１０】
2010273317.tif 000262
【図１１】
2010273317.tif 000263
【図１２】
2010273317.tif 000264
【図１３】
2010273317.tif 000265
【図１４】
2010273317.tif 000266
【図１５】
2010273317.tif 000267
【図１６】
2010273317.tif 000268
【図１７】
2010273317.tif 000269
【図１８】
2010273317.tif 000270
【図１９】
2010273317.tif 000271
【図２０】
2010273317.tif 000272
【図２１】
2010273317.tif 000273
【図２２】
2010273317.tif 000274
【図２３】
2010273317.tif 000275
【図２４】
2010273317.tif 000276
【図２５】
2010273317.tif 000277
【図２６】
2010273317.tif 000278
【図２７】
2010273317.tif 000279
【図２８】
2010273317.tif 000280
【図２９】
2010273317.tif 000281
【図３０】
2010273317.tif 000282
【図３１】
2010273317.tif 000283
【図３２】
2010273317.tif 000284
【図３３】
2010273317.tif 000285
【図３４】
2010273317.tif 000286
【図３５】
2010273317.tif 000287
【図３６】
2010273317.tif 000288