(57)【特許請求の範囲】
【請求項１】
属性ベース暗号の公開鍵および秘密鍵を生成する鍵生成装置と、
前記鍵生成装置で生成された公開鍵を用いて、属性ベース暗号によるデータの暗号化処理の一部を行う中間暗号化装置であって、
暗号化の対象となる前記データを入力するデータ入力手段と、
復号条件となるポリシーとして、線形秘密分散法により復号条件を表したアクセス行列Ａと、当該アクセス行列Ａの各行ｊに対応する属性の属性種別を属性値に変換する写像ρとを入力するポリシー入力手段と、
前記データをＭとし、ｍ行ｎ列の前記アクセス行列Ａの列数ｎに対して、乱数ｓ，ｙ２，…，ｙｎ，β１，β２，…，βｎを、Ｚｐから選択し、ベクトルｖを、
【数１】
0006700797.tif 000036
により演算し、前記公開鍵の一部であるｅ（ｇ，ｇ）のα乗およびｇにより、
【数２】
0006700797.tif 000037
を演算し、前記アクセス行列Ａの行ｉごとに、要素の値が“１”である列番号Ｊｉから、
【数３】
0006700797.tif 000038
を演算し、その演算結果Ｃ，Ｃ′，Ｅｉ，ｖを要素とする中間暗号化データを生成する中間暗号化データ生成手段と、
前記アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報ｐｏｓＡと、前記公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、前記乱数ｓと、当該中間暗号化装置のユーザを識別するユーザＩＤであるＩＤとにより、証明書πを、
【数４】
0006700797.tif 000039
により生成し、前記中間暗号化データに付与することで証明書付き中間暗号化データを生成する証明書付与手段と、
前記ポリシーと、前記証明書付き中間暗号化データと、前記ユーザＩＤとを関連付けて、ＩＤ・ポリシー・証明書付き中間暗号化データを生成するデータ関連付け手段と、を備えた中間暗号化装置と、
前記鍵生成装置で生成された公開鍵を用いて、前記中間暗号化装置によって属性ベース暗号の一部が処理された残りの暗号化処理を行う委託暗号化装置であって、
前記中間暗号化装置で生成された中間暗号化データに関連付けられているポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行ｉ（１≦ｉ≦ｍ）ごとに、Ａｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）をアクセス行列Ａのｉ行目ベクトルとして、前記中間暗号化データに含まれるベクトルｖとの内積λｉ′を
【数５】
0006700797.tif 000040
により演算し、前記アクセス行列Ａの行数ｍに対して、乱数ｒ１，ｒ２，…，ｒｍを、Ｚｐから選択し、前記公開鍵の一部であるｇａ、ｇおよびハッシュ関数Ｈと、前記ポリシーに含まれる写像ρと、前記中間暗号化データに含まれる要素Ｅｉとにより、暗号化データの要素｛Ｃｉ，Ｄｉ｝（１≦ｉ≦ｍ）を、
【数６】
0006700797.tif 000041
により演算し、前記中間暗号化データに含まれている要素Ｃ，Ｃ′とともに、暗号化データとして生成する暗号化データ生成手段と、
前記中間暗号化データに関連付けられているポリシー、ユーザＩＤおよび証明書と、前記暗号化データとを関連付けて、ＩＤ・ポリシー・証明書付き暗号化データを生成するデータ関連付け手段と、を備えた委託暗号化装置と、
前記鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、前記中間暗号化装置および前記委託暗号化装置で暗号化された暗号化データを復号する属性ベース暗号の復号装置であって、
前記ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択し、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉが存在するか否かにより、前記属性付き秘密鍵の属性が、前記委託暗号化装置で生成されたＩＤ・ポリシー・証明書付き暗号化データに含まれるポリシーを満たすか否かを判定するポリシー判定手段と、
前記属性が前記ポリシーを満たす場合のみ、前記値ｗｉと、前記秘密鍵の要素Ｋ，Ｌ，Ｋｘと、前記公開鍵の一部である双線形写像ｅと、前記暗号化データの要素Ｃｉ，Ｄｉ（１≦ｉ≦ｍ）とにより、
【数７】
0006700797.tif 000042
を演算し、前記アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報と、前記公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、前記ユーザＩＤを示すＩＤとにより、証明書検証データπ′を、
【数８】
0006700797.tif 000043
により生成し、前記ＩＤ・ポリシー・証明書付き暗号化データに含まれる証明書πと比較することで、当該証明書を検証する証明書検証手段と、
前記ポリシー判定手段で前記属性が前記ポリシーを満たすと判定され、かつ、前記証明書検証手段で前記証明書が正しく検証された場合に、前記暗号化データに含まれる要素Ｃを前記Ｂで除算することで、元のデータを復号するデータ復号手段と、を備えた復号装置と、を有するシステムにおける前記鍵生成装置であって、
素数位数ｐと、当該素数位数ｐの巡回群Ｇ，ＧＴと、当該巡回群Ｇ，ＧＴがＧ×Ｇ→ＧＴとなる双線形写像ｅと、生成元ｇ（ｇ∈Ｇ）と、ｅ（ｇ，ｇ）を乱数α（α∈Ｚｐ）乗した演算結果と、前記生成元ｇを乱数ａ（ａ∈Ｚｐ）乗した演算結果と、任意のビット列の値を与えたとき前記巡回群Ｇに属する値を返すハッシュ関数Ｈと、第１，第２引数として前記巡回群ＧＴに属する値、第３，第４引数として任意のビット列の値を与えたとき、任意のビット列の値を返すハッシュ関数Ｈ′と、任意のビット列の値を与えたとき、任意のビット列の値を返すハッシュ関数Ｈ″とを、前記公開鍵として生成する公開鍵生成手段と、
前記生成元ｇを前記乱数α乗した演算結果をマスタ鍵として生成するマスタ鍵生成手段と、
前記マスタ鍵と、Ｚｐから選択した乱数ｔと、前記公開鍵の一部である生成元ｇと生成元ｇのａ乗とにより、
【数９】
0006700797.tif 000044
を演算するとともに、属性Ｓのすべての属性値ｘにおいて、前記ハッシュ関数Ｈと前記乱数ｔとにより、
【数１０】
0006700797.tif 000045
を演算し、その演算結果Ｋ，Ｌ，Ｋｘを前記秘密鍵として生成する秘密鍵生成手段と、
この秘密鍵生成手段で生成された秘密鍵に、前記属性を関連付けて、前記属性付き秘密鍵を生成する属性関連付け手段と、
を備えることを特徴とする鍵生成装置。
【請求項２】
請求項１に記載の鍵生成装置と、
前記鍵生成装置で生成された公開鍵を用いて、属性ベース暗号によるデータの暗号化処理の一部を行う中間暗号化装置と、
前記鍵生成装置で生成された公開鍵を用いて、前記中間暗号化装置によって属性ベース暗号の一部が処理された残りの暗号化処理を行う委託暗号化装置であって、
前記中間暗号化装置で生成された中間暗号化データに関連付けられているポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行ｉ（１≦ｉ≦ｍ）ごとに、Ａｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）をアクセス行列Ａのｉ行目ベクトルとして、前記中間暗号化データに含まれるベクトルｖとの内積λｉ′を
【数１１】
0006700797.tif 000046
により演算し、前記アクセス行列Ａの行数ｍに対して、乱数ｒ１，ｒ２，…，ｒｍを、Ｚｐから選択し、前記公開鍵の一部であるｇａ、ｇおよびハッシュ関数Ｈと、前記ポリシーに含まれる写像ρと、前記中間暗号化データに含まれる要素Ｅｉとにより、暗号化データの要素｛Ｃｉ，Ｄｉ｝（１≦ｉ≦ｍ）を、
【数１２】
0006700797.tif 000047
により演算し、前記中間暗号化データに含まれている要素Ｃ，Ｃ′とともに、暗号化データとして生成する暗号化データ生成手段と、
前記中間暗号化データに関連付けられているポリシー、ユーザＩＤおよび証明書と、前記暗号化データとを関連付けて、ＩＤ・ポリシー・証明書付き暗号化データを生成するデータ関連付け手段と、を備えた委託暗号化装置と、
前記鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、前記中間暗号化装置および前記委託暗号化装置で暗号化された暗号化データを復号する属性ベース暗号の復号装置であって、
前記ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択し、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉが存在するか否かにより、前記属性付き秘密鍵の属性が、前記委託暗号化装置で生成されたＩＤ・ポリシー・証明書付き暗号化データに含まれるポリシーを満たすか否かを判定するポリシー判定手段と、
前記属性が前記ポリシーを満たす場合のみ、前記値ｗｉと、前記秘密鍵の要素Ｋ，Ｌ，Ｋｘと、前記公開鍵の一部である双線形写像ｅと、前記暗号化データの要素Ｃｉ，Ｄｉ（１≦ｉ≦ｍ）とにより、
【数１３】
0006700797.tif 000048
を演算し、前記アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報と、前記公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、前記ユーザＩＤを示すＩＤとにより、証明書検証データπ′を、
【数１４】
0006700797.tif 000049
により生成し、前記ＩＤ・ポリシー・証明書付き暗号化データに含まれる証明書πと比較することで、当該証明書を検証する証明書検証手段と、
前記ポリシー判定手段で前記属性が前記ポリシーを満たすと判定され、かつ、前記証明書検証手段で前記証明書が正しく検証された場合に、前記暗号化データに含まれる要素Ｃを前記Ｂで除算することで、元のデータを復号するデータ復号手段と、を備えた復号装置と、を有するシステムにおける前記中間暗号化装置であって、
暗号化の対象となる前記データを入力するデータ入力手段と、
復号条件となるポリシーとして、線形秘密分散法により復号条件を表したアクセス行列Ａと、当該アクセス行列Ａの各行ｊに対応する属性の属性種別を属性値に変換する写像ρとを入力するポリシー入力手段と、
前記データをＭとし、ｍ行ｎ列の前記アクセス行列Ａの列数ｎに対して、乱数ｓ，ｙ２，…，ｙｎ，β１，β２，…，βｎを、Ｚｐから選択し、ベクトルｖを、
【数１５】
0006700797.tif 000050
により演算し、前記公開鍵の一部であるｅ（ｇ，ｇ）のα乗およびｇにより、
【数１６】
0006700797.tif 000051
を演算し、前記アクセス行列Ａの行ｉごとに、要素の値が“１”である列番号Ｊｉから、
【数１７】
0006700797.tif 000052
を演算し、その演算結果Ｃ，Ｃ′，Ｅｉ，ｖを要素とする中間暗号化データを生成する中間暗号化データ生成手段と、
前記アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報ｐｏｓＡと、前記公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、前記乱数ｓと、当該中間暗号化装置のユーザを識別するユーザＩＤであるＩＤとにより、証明書πを、
【数１８】
0006700797.tif 000053
により生成し、前記中間暗号化データに付与することで証明書付き中間暗号化データを生成する証明書付与手段と、
前記ポリシーと、前記証明書付き中間暗号化データと、前記ユーザＩＤとを関連付けて、ＩＤ・ポリシー・証明書付き中間暗号化データを生成するデータ関連付け手段と、
を備えることを特徴とする中間暗号化装置。
【請求項３】
請求項１に記載の鍵生成装置と、
請求項２に記載の中間暗号化装置と、
前記鍵生成装置で生成された公開鍵を用いて、前記中間暗号化装置によって属性ベース暗号の一部が処理された残りの暗号化処理を行う委託暗号化装置と、
前記鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、前記中間暗号化装置および前記委託暗号化装置で暗号化された暗号化データを復号する属性ベース暗号の復号装置であって、
前記ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択し、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉが存在するか否かにより、前記属性付き秘密鍵の属性が、前記委託暗号化装置で生成されたＩＤ・ポリシー・証明書付き暗号化データに含まれるポリシーを満たすか否かを判定するポリシー判定手段と、
前記属性が前記ポリシーを満たす場合のみ、前記値ｗｉと、前記秘密鍵の要素Ｋ，Ｌ，Ｋｘと、前記公開鍵の一部である双線形写像ｅと、前記暗号化データの要素Ｃｉ，Ｄｉ（１≦ｉ≦ｍ）とにより、
【数１９】
0006700797.tif 000054
を演算し、前記アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報と、前記公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、前記ユーザＩＤを示すＩＤとにより、証明書検証データπ′を、
【数２０】
0006700797.tif 000055
により生成し、前記ＩＤ・ポリシー・証明書付き暗号化データに含まれる証明書πと比較することで、当該証明書を検証する証明書検証手段と、
前記ポリシー判定手段で前記属性が前記ポリシーを満たすと判定され、かつ、前記証明書検証手段で前記証明書が正しく検証された場合に、前記暗号化データに含まれる要素Ｃを前記Ｂで除算することで、元のデータを復号するデータ復号手段と、を備えた復号装置と、を有するシステムにおける前記委託暗号化装置であって、
前記中間暗号化装置で生成された中間暗号化データに関連付けられているポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行ｉ（１≦ｉ≦ｍ）ごとに、Ａｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）をアクセス行列Ａのｉ行目ベクトルとして、前記中間暗号化データに含まれるベクトルｖとの内積λｉ′を
【数２１】
0006700797.tif 000056
により演算し、前記アクセス行列Ａの行数ｍに対して、乱数ｒ１，ｒ２，…，ｒｍを、Ｚｐから選択し、前記公開鍵の一部であるｇａ、ｇおよびハッシュ関数Ｈと、前記ポリシーに含まれる写像ρと、前記中間暗号化データに含まれる要素Ｅｉとにより、暗号化データの要素｛Ｃｉ，Ｄｉ｝（１≦ｉ≦ｍ）を、
【数２２】
0006700797.tif 000057
により演算し、前記中間暗号化データに含まれている要素Ｃ，Ｃ′とともに、暗号化データとして生成する暗号化データ生成手段と、
前記中間暗号化データに関連付けられているポリシー、ユーザＩＤおよび証明書と、前記暗号化データとを関連付けて、ＩＤ・ポリシー・証明書付き暗号化データを生成するデータ関連付け手段と、
を備えることを特徴とする委託暗号化装置。
【請求項４】
請求項１に記載の鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、請求項２の中間暗号化装置および請求項３に記載の委託暗号化装置で暗号化された暗号化データを復号する属性ベース暗号の復号装置であって、
前記ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択し、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉが存在するか否かにより、前記属性付き秘密鍵の属性が、前記委託暗号化装置で生成されたＩＤ・ポリシー・証明書付き暗号化データに含まれるポリシーを満たすか否かを判定するポリシー判定手段と、
前記属性が前記ポリシーを満たす場合のみ、前記値ｗｉと、前記秘密鍵の要素Ｋ，Ｌ，Ｋｘと、前記公開鍵の一部である双線形写像ｅと、前記暗号化データの要素Ｃｉ，Ｄｉ（１≦ｉ≦ｍ）とにより、
【数９】
0006700797.tif 000058
を演算し、前記アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報と、前記公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、前記ユーザＩＤを示すＩＤとにより、証明書検証データπ′を、
【数１０】
0006700797.tif 000059
により生成し、前記ＩＤ・ポリシー・証明書付き暗号化データに含まれる証明書πと比較することで、当該証明書を検証する証明書検証手段と、
前記ポリシー判定手段で前記属性が前記ポリシーを満たすと判定され、かつ、前記証明書検証手段で前記証明書が正しく検証された場合に、前記暗号化データに含まれる要素Ｃを前記Ｂで除算することで、元のデータを復号するデータ復号手段と、
を備えることを特徴とする復号装置。
【請求項５】
コンピュータを、請求項１に記載の鍵生成装置として機能させるための鍵生成プログラム。
【請求項６】
コンピュータを、請求項２に記載の中間暗号化装置として機能させるための中間暗号化プログラム。
【請求項７】
コンピュータを、請求項３に記載の委託暗号化装置として機能させるための委託暗号化プログラム。
【請求項８】
コンピュータを、請求項４に記載の復号装置として機能させるための復号プログラム。
【請求項９】
ユーザの個人情報を保護して、サービス事業者がユーザにサービスを提供する個人情報保護システムであって、ネットワーク上に、
前記サービス事業者に与える属性と対応付けた属性付き秘密鍵を生成する請求項１に記載の鍵生成装置と、
前記個人情報を復号可能なサービス事業者の評価値をポリシーとして、ユーザＩＤと証明書とを対応付けて、前記個人情報のデータから、ＩＤ・ポリシー・証明書付き中間暗号化データを生成する前記ユーザの装置である請求項２に記載の中間暗号化装置と、
前記ＩＤ・ポリシー・証明書付き中間暗号化データから、ＩＤ・ポリシー・証明書付き暗号化データを生成する請求項３に記載の委託暗号化装置と、
この委託暗号化装置で生成されたユーザＩＤに対応するＩＤ・ポリシー・証明書付き暗号化データを取得し、前記鍵生成装置で生成された属性付き秘密鍵で復号する前記サービス事業者の装置である請求項４に記載の復号装置と、
を備えることを特徴とする個人情報保護システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、属性情報を利用して、データの暗号化および復号を行うための鍵生成装置、中間暗号化装置、委託暗号化装置、復号装置およびそれらのプログラム、ならびに、個人情報保護システムに関する。
【背景技術】
【０００２】
従来、秘密鍵や暗号文にユーザの属性（居住地、性別等）を関連付け、復号条件（ポリシー）を満たすユーザのみが暗号文を復号可能な暗号方式である属性ベース暗号（ＡＢＥ：Attribute-Based Encryption）に関する方式が種々提案されている。この属性ベース暗号は、１つの暗号文を復号することができるユーザを複数存在させることができるため、ファイル共有システムのアクセス制御、コンテンツ配信サービス等への応用が期待されている。
【０００３】
この属性ベース暗号には、大きく２つの方式が存在する。第１の方式は、属性に基づいてデータを暗号化し、ポリシーに基づいて発行された秘密鍵を有するユーザのみが暗号文を復号することが可能な鍵ポリシー属性ベース暗号（ＫＰ−ＡＢＥ：Key-Policy Attribute-Based Encryption）である。第２の方式は、ポリシーに基づいてデータを暗号化し、属性に基づいて発行された秘密鍵を有するユーザのみが暗号文を復号することが可能な暗号文ポリシー属性ベース暗号（ＣＰ−ＡＢＥ：Ciphertext-Policy Attribute-Based Encryption）である。
【０００４】
以下、本発明が対象とするＣＰ−ＡＢＥについて説明する。
ＣＰ−ＡＢＥは、数多くの方式が提案されている（例えば、非特許文献１等）。このＣＰ−ＡＢＥを用いると、例えば、放送通信連携サービスにおいて、視聴履歴を暗号化してクラウドサーバ上に保存するとともに、視聴者が指定したポリシーを満たす属性を有するサービスプロバイダのみが視聴履歴を復号し、個人向けサービスに活用することが可能なプライバシー保護システムを実現することができる。
【０００５】
しかし、ＣＰ−ＡＢＥは、従来の公開鍵暗号方式（ＲＳＡ暗号、ＥｌＧａｍａｌ暗号等）に比べ、暗号化処理の負荷が大きいという欠点がある。例えば、非特許文献１の方式では、暗号文サイズが属性の数のオーダで増加してしまうため、暗号化処理時間が属性の数に比例して長くなってしまう。また、放送通信連携サービスにおいて前記したプライバシー保護システムを実現する場合、テレビ受信機、スマートフォン等のユーザ端末上で暗号化処理を実行することになるが、これらのユーザ端末は、ＰＣ（Personal Computer）に比べてＣＰＵ性能が低いため、暗号化処理時間が長くなってしまう。
【０００６】
このような欠点を克服するため、近年、暗号化処理をクラウドサーバに委託することが可能なＣＰ−ＡＢＥが提案されている（例えば、非特許文献２〜４等）。これらの方式では、ＣＰ−ＡＢＥの暗号化処理の一部をユーザ端末上で実行し、残りの暗号化処理をクラウドサーバに委託することにより、ユーザ端末の負荷を軽減することができる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】B. Waters, “Ciphertext-Policy Attribute-Based Encryption: An Expressive, Efficient, and Provably Secure Realization,” eprint2008/290, 2008.
【非特許文献２】Z. Zhou and D. Huang, “Efficient and Secure Data Storage Operations for Mobile Cloud Computing,” eprint 2011/185, 2011.
【非特許文献３】J. Li, C. Jia, J. Li, and X. Chen, “Outsourcing Encryption of Attribute-Based Encryption with MapReduce,” Proc. of ICICS’12, LNCS 7618, pp. 191-201, 2012.
【非特許文献４】S. Hohenberger and B. Waters, “Online/Offline Attribute-Based Encryption,” Proc. of PKC’14, LNCS 8383, pp. 293-310, 2014.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、従来の非特許文献２〜４に記載の方式は、クラウドサーバが暗号化処理を忠実に実行し、データの改ざんを行わないことを前提とした方式である。もし、悪意のあるクラウドサーバに暗号化処理を委託した場合、視聴者が指定したポリシーを満たさない、すなわち、本来であれば復号できないサービスプロバイダが、クラウドサーバと結託して視聴履歴を復号できる可能性があるという問題がある。
【０００９】
本発明は、このような問題に鑑みてなされたもので、属性ベース暗号の暗号化処理の一部を外部に委託することにより、ユーザ端末の負荷を軽減するとともに、外部でデータの改ざんが行われた場合でも、それらを検出し復号できなくすることが可能な属性ベース暗号システムを提供することを課題とする。
【課題を解決するための手段】
【００１０】
前記課題を解決するため、請求項１に記載の鍵生成装置は、属性ベース暗号の公開鍵および秘密鍵を生成する鍵生成装置であって、公開鍵生成手段と、マスタ鍵生成手段と、秘密鍵生成手段と、属性関連付け手段と、を備える構成とした。
【００１１】
かかる構成において、鍵生成装置は、公開鍵生成手段によって、素数位数ｐと、当該素数位数ｐの巡回群Ｇ，ＧＴと、当該巡回群Ｇ，ＧＴがＧ×Ｇ→ＧＴとなる双線形写像ｅと、生成元ｇ（ｇ∈Ｇ）と、ｅ（ｇ，ｇ）を乱数α（α∈Ｚｐ）乗した演算結果と、生成元ｇを乱数ａ（ａ∈Ｚｐ）乗した演算結果と、任意のビット列の値を与えたとき巡回群Ｇに属する値を返すハッシュ関数（第１ハッシュ関数）Ｈと、第１，第２引数として巡回群ＧＴに属する値、第３，第４引数として任意のビット列の値を与えたとき、任意のビット列の値を返すハッシュ関数（第２ハッシュ関数）Ｈ′と、任意のビット列の値を与えたとき、任意のビット列の値を返すハッシュ関数（第３ハッシュ関数）Ｈ″とを、公開鍵として生成する。さらに、鍵生成装置は、マスタ鍵生成手段によって、生成元ｇを乱数α乗した演算結果をマスタ鍵として生成する。
【００１２】
そして、鍵生成装置は、秘密鍵生成手段によって、マスタ鍵と、Ｚｐから選択した乱数ｔと、公開鍵の一部である生成元ｇと生成元ｇのａ乗とにより、
【数１】
0006700797.tif 000002
を演算するとともに、属性Ｓのすべての属性値ｘにおいて、ハッシュ関数Ｈと乱数ｔとにより、
【数２】
0006700797.tif 000003
を演算し、その演算結果Ｋ，Ｌ，Ｋｘを秘密鍵として生成する。
【００１３】
そして、鍵生成装置は、属性関連付け手段によって、秘密鍵生成手段で生成された秘密鍵に、属性を関連付けて、属性付き秘密鍵を生成する。なお、この関連付けは、予め定めたデータフォーマットで、秘密鍵と属性とを連結することとしてもよいし、予め定めた固有の識別子で対応付けることとしてもよい。
これによって、鍵生成装置は、ポリシーを指定してデータの暗号化／復号を行う際に使用する公開鍵と秘密鍵（属性付き秘密鍵）を生成することができる。
【００１４】
また、請求項２に記載の中間暗号化装置は、請求項１に記載の鍵生成装置で生成された公開鍵を用いて、属性ベース暗号によるデータの暗号化処理の一部を行う中間暗号化装置であって、データ入力手段と、ポリシー入力手段と、中間暗号化データ生成手段と、証明書付与手段と、データ関連付け手段と、を備える構成とした。
【００１５】
かかる構成において、中間暗号化装置は、データ入力手段によって、暗号化の対象となるデータを入力する。また、中間暗号化装置は、ポリシー入力手段によって、復号条件となるポリシーとして、線形秘密分散法により復号条件を表したアクセス行列Ａと、当該アクセス行列Ａの各行に対応する属性の属性種別を属性値に変換する写像ρとを入力する。ここで、アクセス行列は、線形秘密分散法によるポリシー（復号条件）を表した行列である。
そして、中間暗号化装置は、中間暗号化データ生成手段によって、データをＭとし、ｍ行ｎ列のアクセス行列Ａの列数ｎに対して、乱数ｓ，ｙ２，…，ｙｎ，β１，β２，…，βｎを、Ｚｐから選択し、ベクトルｖを、
【数３】
0006700797.tif 000004
により演算し、公開鍵の一部であるｅ（ｇ，ｇ）のα乗およびｇにより、
【数４】
0006700797.tif 000005
を演算し、アクセス行列Ａの行ｉごとに、要素の値が“１”である列番号Ｊｉから、
【数５】
0006700797.tif 000006
を演算し、その演算結果Ｃ，Ｃ′，Ｅｉ，ｖを要素とする中間暗号化データを生成する。
【００１６】
また、中間暗号化装置は、証明書付与手段によって、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報ｐｏｓＡと、公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、乱数ｓと、当該中間暗号化装置のユーザを識別するユーザＩＤであるＩＤとにより、証明書πを、
【数６】
0006700797.tif 000007
により生成し、中間暗号化データに付与することで証明書付き中間暗号化データを生成する。
【００１７】
そして、中間暗号化装置は、データ関連付け手段によって、ポリシーと、証明書付き中間暗号化データと、ユーザＩＤとを関連付けて、ＩＤ・ポリシー・証明書付き中間暗号化データを生成する。
このように、中間暗号化装置は、データＭを暗号化した中間暗号化データの要素Ｃを含んで証明書を生成するため、委託暗号化装置に委託した暗号化処理において、中間暗号化データが改ざんされても、復号装置でその検出が可能になる。
【００１８】
また、請求項３に記載の委託暗号化装置は、請求項１に記載の鍵生成装置で生成された公開鍵を用いて、請求項２に記載の中間暗号化装置によって属性ベース暗号の一部が処理された残りの暗号化処理を行う委託暗号化装置であって、暗号化データ生成手段と、データ関連付け手段と、を備える構成とした。
【００１９】
かかる構成において、委託暗号化装置は、暗号化データ生成手段によって、中間暗号化装置で生成された中間暗号化データに関連付けられているポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行ｉ（１≦ｉ≦ｍ）ごとに、Ａｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）をアクセス行列Ａのｉ行目ベクトルとして、中間暗号化データに含まれるベクトルｖとの内積λｉ′を
【数７】
0006700797.tif 000008
により演算し、アクセス行列Ａの行数ｍに対して、乱数ｒ１，ｒ２，…，ｒｍを、Ｚｐから選択し、公開鍵の一部であるｇａ、ｇおよびハッシュ関数Ｈと、ポリシーに含まれる写像ρと、中間暗号化データに含まれる要素Ｅｉとにより、暗号化データの要素｛Ｃｉ，Ｄｉ｝（１≦ｉ≦ｍ）を、
【数８】
0006700797.tif 000009
により演算し、中間暗号化データに含まれている要素Ｃ，Ｃ′とともに、暗号化データとして生成する。
【００２０】
そして、委託暗号化装置は、データ関連付け手段によって、中間暗号化データに関連付けられているポリシー、ユーザＩＤおよび証明書と、暗号化データとを関連付けて、ＩＤ・ポリシー・証明書付き暗号化データを生成する。
これによって、委託暗号化装置は、ポリシーと証明書とを付加したユーザＩＤごとの暗号化データを生成することができる。
【００２１】
また、請求項４に記載の復号装置は、請求項１に記載の鍵生成装置で生成された公開鍵および属性付き秘密鍵を用いて、請求項２に記載の中間暗号化装置および請求項３に記載の委託暗号化装置で暗号化された暗号化データを復号する属性ベース暗号の復号装置であって、ポリシー判定手段と、証明書検証手段と、データ復号手段と、を備える構成とした。
【００２２】
かかる構成において、復号装置は、ポリシー判定手段によって、ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択し、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉが存在するか否かにより、属性付き秘密鍵の属性が委託暗号化装置で生成されたＩＤ・ポリシー・証明書付き暗号化データに含まれるポリシーを満たすか否かを判定する。
【００２３】
また、復号装置は、証明書検証手段によって、属性がポリシーを満たす場合のみ、値ｗｉと、秘密鍵の要素Ｋ，Ｌ，Ｋｘと、公開鍵の一部である双線形写像ｅと、暗号化データの要素Ｃｉ，Ｄｉ（１≦ｉ≦ｍ）とにより、
【数９】
0006700797.tif 000010
を演算し、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報ｐｏｓＡと、公開鍵であるｅ（ｇ，ｇ）α，ハッシュ関数Ｈ′，Ｈ″と、ユーザＩＤを示すＩＤとにより、証明書検証データπ′を、
【数１０】
0006700797.tif 000011
により生成し、ＩＤ・ポリシー・証明書付き暗号化データに含まれる証明書πと比較することで、当該証明書を検証する。
【００２４】
そして、復号装置は、データ復号手段によって、ポリシー判定手段で属性がポリシーを満たすと判定され、かつ、証明書検証手段で証明書が正しく検証された場合に、暗号化データに含まれる要素Ｃを前記Ｂで除算することで、元のデータを復号する。
これによって、復号装置は、中間暗号化装置と委託暗号化装置とで暗号化された暗号化データを復号する際に、データの改ざんを検出することができる。
なお、鍵生成装置、中間暗号化装置、委託暗号化装置および復号装置は、それぞれ、コンピュータを、前記した各手段として機能させるためのプログラムで動作させることができる（請求項５〜８）。
【００２５】
また、ユーザの個人情報を保護して、サービス事業者がユーザにサービスを提供する個人情報保護システムとして、ネットワーク上に、請求項１に記載の鍵生成装置と、請求項２に記載の中間暗号化装置と、請求項３に記載の委託暗号化装置と、請求項４に記載の復号装置と、を備える構成としてもよい（請求項９）。
【発明の効果】
【００２６】
本発明は、以下に示す優れた効果を奏するものである。
請求項１，５に記載の発明によれば、属性ベース暗号に使用する公開鍵と秘密鍵とを生成することができる。このとき、公開鍵としてハッシュ関数を公開するため、データの暗号側と復号側とで、ハッシュ値を用いた証明書により、データ改ざんを検出することが可能になる。
【００２７】
請求項２，６に記載の発明によれば、属性ベース暗号の一部の暗号処理を行うため、負荷を抑えることができる。また、請求項２，６に記載の発明によれば、公開鍵として公開されているハッシュ関数によって証明書を生成するため、データ改ざんが行われても、復号側で検出することができる。
【００２８】
請求項３，７に記載の発明によれば、データの暗号化処理の一部を委託されて処理することができる。これによって、ユーザ端末としての中間暗号化装置の負荷を抑えることができる。
【００２９】
請求項４，８に記載の発明によれば、中間暗号化装置および委託暗号化装置で暗号化された暗号化データを復号することができる。このとき、暗号化データには、証明書が付与されているため、データの改ざんを検出することができる。
【００３０】
請求項９に記載に発明によれば、属性ベース暗号の暗号化処理の一部をクラウド上の委託暗号化装置に委託することができ、ユーザ側の中間暗号化装置の負荷を軽減させることができる。また、請求項９に記載に発明によれば、証明書により委託暗号化装置における暗号化処理の検証を行うことができるため、クラウド上におけるデータの改ざんを検出することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施形態に係る属性ベース暗号システムの構成を示すシステム構成図である。
【図２】アクセス行列の生成手法の例を説明するための図であって、（ａ）は属性の例、（ｂ）はポリシーの例、（ｃ）はポリシーのツリー構造、（ｄ）はポリシーのツリー構造に対応したアクセス行列を示す図である。
【図３】本発明の実施形態に係る鍵生成装置の構成を示すブロック構成図である。
【図４】本発明の実施形態に係る中間暗号化装置の構成を示すブロック構成図である。
【図５】本発明の実施形態に係る委託暗号化装置の構成を示すブロック構成図である。
【図６】本発明の実施形態に係るデータ管理装置の構成を示すブロック構成図である。
【図７】本発明の実施形態に係る復号装置の構成を示すブロック構成図である。
【図８】本発明の実施形態に係る属性ベース暗号システムにおける鍵生成および鍵配信の動作を示すフローチャートである。
【図９】図８の動作において、基本情報を生成する動作を詳細に示すフローチャートである。
【図１０】図８の動作において、公開鍵・マスタ鍵を生成する動作を詳細に示すフローチャートである。
【図１１】図８の動作において、秘密鍵を生成する動作を詳細に示すフローチャートである。
【図１２】本発明の実施形態に係る属性ベース暗号システムにおけるユーザＩＤの配信の動作を示すフローチャートである。
【図１３】本発明の実施形態に係る属性ベース暗号システムにおけるデータの中間暗号化および暗号化の動作を示すフローチャートである。
【図１４】図１３の動作において、中間暗号化データを生成する動作を詳細に示すフローチャートである。
【図１５】図１３の動作において、証明書を生成する動作を詳細に示すフローチャートである。
【図１６】図１３の動作において、暗号化データを生成する動作を詳細に示すフローチャートである。
【図１７】本発明の実施形態に係る属性ベース暗号システムにおけるデータの復号の動作を示すフローチャートである。
【図１８】図１７の動作において、証明書を検証するための証明書検証データを生成する動作を詳細に示すフローチャートである。
【図１９】図１７の動作において、暗号化データを復号する動作を詳細に示すフローチャートである。
【図２０】本発明の実施形態に係る属性ベース暗号システムを個人情報保護システムとして構成した例を示すシステム構成図である。
【発明を実施するための形態】
【００３２】
以下、本発明の実施形態について図面を参照して説明する。
［属性ベース暗号システムの構成］
まず、図１を参照して、本発明の実施形態に係る属性ベース暗号システムＳＡの構成について説明する。
属性ベース暗号システムＳＡは、復号条件となる属性の属性値を示すポリシーに基づいて送信者のデータを暗号化し、受信者の属性の属性値が、ポリシーに適合した場合だけ、暗号化データを復号するシステムである。
【００３３】
ここでは、属性ベース暗号システムＳＡは、鍵生成装置１と、中間暗号化装置２と、クラウドサーバ３（委託暗号化装置４およびデータ管理装置５）と、復号装置６とを、ネットワーク（通信回線）Ｎを介して接続して構成している。なお、ここでは、説明を簡略化するため、各装置を１台ずつ図示しているが、これらは、ネットワークＮに複数接続することとしてもよい。
【００３４】
鍵生成装置１は、属性ベース暗号によりデータを暗号化するための公開鍵を生成するとともに、暗号化データを復号するための復号装置６において固有の秘密鍵を生成するものである。公開鍵は、中間暗号化装置２、クラウドサーバ３および復号装置６に対して公開される情報であって、ここでは、ネットワークＮを介して中間暗号化装置２、クラウドサーバ３および復号装置６に送信される。また、秘密鍵は、暗号化データを復号する復号装置６ごとに秘密情報として送信される情報である。
なお、ここでは、鍵生成装置１は、種別情報（属性種別）とその内容を示す値（属性値）とからなる属性を秘密鍵に関連付け、属性付き秘密鍵として、復号装置６に送信する。
また、鍵生成装置１は、データを送信する送信者を識別するユーザＩＤを生成し、中間暗号化装置２に送信する。このユーザＩＤは、送信者ごとの暗号化されたデータを識別するための情報である。
【００３５】
中間暗号化装置２は、属性ベース暗号におけるデータの暗号化処理の一部を行い、中間暗号化データを生成するものである。なお、ここでは、中間暗号化装置２は、中間暗号化データを生成し、証明書を付与し、証明書付き中間暗号化データとして、ユーザＩＤおよびポリシー（復号条件）とともに、クラウドサーバ３に送信する。
【００３６】
クラウドサーバ３は、クラウド上に配置され、委託暗号化装置４とデータ管理装置５とで構成される。
委託暗号化装置４は、属性ベース暗号におけるデータの暗号化処理の一部を行い、暗号化データ（証明書付き暗号化データ）を生成するものである。この委託暗号化装置４は、ユーザＩＤおよびポリシーに対応付けて、証明書付き暗号化データをデータ管理装置５に送信する。
【００３７】
データ管理装置５は、暗号化データ（証明書付き暗号化データ）を管理するデータベースである。このデータ管理装置５は、復号装置６からのユーザＩＤに対応する暗号化データの要求に対して、データ検索を行い、対応する暗号化データ（ユーザＩＤ、ポリシー、証明書付き暗号化データ）を復号装置６に送信する。なお、ここでは、委託暗号化装置４とデータ管理装置５と個別に構成しているが、一体の構成としても構わない。
【００３８】
復号装置６は、属性ベース暗号により中間暗号化装置２および委託暗号化装置４において生成された証明書付き暗号化データを元のデータに復号するものである。
この復号装置６は、ポリシー（復号条件）が、鍵生成装置１で生成される属性付き秘密鍵で特定される属性の属性値に適合し、かつ、証明書が正しく検証された場合のみ復号を行う。
【００３９】
〔属性およびポリシーについて〕
以下、属性ベース暗号システムＳＡの各構成について説明する前に、属性ベース暗号システムＳＡで使用する属性およびポリシーについて、具体例を挙げて説明する。
【００４０】
（属性）
属性は、暗号化データを復号するユーザ（受信者）を区分するための個別情報である。
この属性は、属性種別に対する属性値で構成される。属性種別は、属性の種類を示す識別情報であって、例えば、図２（ａ）に示すように、会員種別、居住地、性別、年齢等である。また、属性値は、個々の属性種別の内容を示す値であって、例えば、図２（ａ）に示すように、属性種別を、「会員種別」としたときの、通常会員およびプレミアム会員を示す数値｛１，２｝等である。
なお、図２（ａ）では、属性値として、属性種別を「居住地」としたときの東日本および西日本を示す数値｛３，４｝、属性種別を「性別」としたときの男性および女性を示す数値｛５，６｝、属性種別を「年齢」としたときの未成年および成人を示す数値｛７，８｝を例示している。
【００４１】
（ポリシー）
ポリシーは、暗号化データを復号するための条件（復号条件）を示す情報である。すなわち、ポリシーは、どの属性のどの属性値を有するユーザに対して復号の許可を与えるかを示す情報である。
ここでは、ポリシーは、線形秘密分散法（Linear Secret Sharing Scheme：ＬＳＳＳ）によって生成されるアクセス行列Ａと、アクセス行列Ａの各行に対応する属性の属性種別を属性値に変換する写像ρとで構成される。
【００４２】
このアクセス行列は、例えば、「A. Lewkoand B. Waters, “Decentralizing Attribute-Based Encryption,” Proc. of Eurocrypt’ 11, LNCS 6632, pp. 568-588, 2011.」に記載の方法によって生成される行列である。
【００４３】
ここで、図２を参照して、アクセス行列Ａと写像ρの内容について具体的に説明する。
まず、アクセス行列Ａの生成手法の例について説明する。
ここでは、図２（ａ）に示した属性を例とし、ポリシーを図２（ｂ）で表した論理形式で示す条件とする。
【００４４】
図２（ｃ）に示すように、図２（ｂ）のポリシーは、「ＡＮＤ」，「ＯＲ」をノード、属性値を葉ノードとするツリー構造（アクセス木）で記述することができる。
このとき、ルートノードには、ＬＳＳＳの秘密情報ｓを設定する。そして、親ノードが「ＯＲ」となる子ノードには、親ノードに設定された情報（秘密情報ｓまたは乱数）をそのまま引き継いで設定する。また、親ノードが「ＡＮＤ」となる一方の子ノードには、新たな乱数を設定し、他方の子ノードには、一方の子ノードに設定された乱数と親ノードに設定された情報（秘密情報ｓまたは乱数）との和を設定する。
例えば、図２（ｃ）に示すように、属性値「２：プレミアム」に秘密情報ｓと乱数ｙ２との和を設定し、属性値「３：東日本」に乱数ｙ２を設定すれば、「プレミアム」ＡＮＤ「東日本」を満たすユーザは、（ｓ＋ｙ２）−（ｙ２）によって、秘密情報ｓを取得することができる。
このように、ＬＳＳＳは、乱数によって秘密情報ｓを分散することができる。
【００４５】
そして、図２（ｄ）に示すように、アクセス行列Ａは、秘密情報ｓと乱数（ここではｙ２，ｙ３）から、葉ノードの属性値に設定される情報に変換する“０”，“１”を要素とする変換行列として生成することができる。
このとき、アクセス行列Ａの行数は、ポリシーのツリー構造における葉ノードの数と一致し、列数は、ポリシーの「ＡＮＤ」のノード数に“１”を加算した数となる。
なお、ここでは、アクセス行列Ａの生成手法を説明するため、各ノードに設定する情報を秘密情報ｓと乱数ｙ２，ｙ３として説明したが、本発明においては、それらの情報にさらに乱数を加算する。その内容については、後記する。
【００４６】
次に、写像ρについて説明する。
この写像ρは、アクセス行列Ａの行のインデックスをｊとしたとき、ρ（ｊ）を属性値に変換する写像である。
例えば、図２で説明したアクセス行列Ａの場合、ρ（１）は、アクセス行列Ａの１行目のポリシーである「会員種別」の属性値「２：プレミアム」を示す。すなわち、図２の例では、ρ（１）＝２、ρ（２）＝３、ρ（３）＝６、ρ（４）＝８となる。
以下、図１に示した属性ベース暗号システムＳＡの各構成について説明する。
【００４７】
〔鍵生成装置の構成〕
まず、図３を参照（適宜図１参照）して、本発明の実施形態に係る鍵生成装置１の構成について説明する。ここでは、鍵生成装置１は、第一鍵生成手段１０と、第二鍵生成手段１１と、ユーザＩＤ発行手段１２と、を備える。
【００４８】
第一鍵生成手段１０は、外部から入力されるセキュリティパラメータに基づいて、属性ベース暗号方式における公開鍵およびマスタ鍵を生成するものである。ここでは、第一鍵生成手段１０は、パラメータ入力手段１００と、基本情報生成手段１０１と、公開鍵生成手段１０２と、マスタ鍵生成手段１０３と、公開鍵記憶手段１０４と、マスタ鍵記憶手段１０５と、公開鍵送信手段１０６と、を備える。
【００４９】
パラメータ入力手段１００は、セキュリティパラメータを外部からパラメータとして入力するものである。
ここで、セキュリティパラメータは、セキュリティのレベルを示す数値（例えば、鍵長）である。より具体的には、セキュリティパラメータは、後記する基本情報生成手段１０１で使用される素数位数ｐの大きさ（ビット長）である。
このパラメータ入力手段１００は、入力されたセキュリティパラメータを、基本情報生成手段１０１に出力する。
【００５０】
基本情報生成手段１０１は、公開鍵生成手段１０２およびマスタ鍵生成手段１０３において、それぞれ、公開鍵およびマスタ鍵を生成するために用いる基本情報を生成するものである。
具体的には、基本情報生成手段１０１は、セキュリティパラメータで特定される大きさ（ビット長）の素数ｐを選択し、当該素数ｐを位数（素数位数ｐ）とする巡回群Ｇ，ＧＴを選択する。そして、基本情報生成手段１０１は、巡回群ＧおよびＧＴがＧ×Ｇ→ＧＴとなる双線形写像ｅを選択する。例えば、基本情報生成手段１０１は、ｅ：Ｇ×Ｇ→ＧＴとなる双線形写像ｅとして、一般的な“Ｗｅｉｌ  Ｐａｉｒｉｎｇ”、“Ｔａｔｅ  Ｐａｉｒｉｎｇ”等に基づいて楕円曲線のパラメータを選択する。ここで、双線形写像ｅは、２つの引数を持つｅ（・，・）で表される写像である。
【００５１】
また、基本情報生成手段１０１は、巡回群Ｇの中からランダムに１つの生成元ｇを選択（ｇ∈Ｇ）する。
また、基本情報生成手段１０１は、乱数α，ａを、Ｚｐからランダムに選択する。なお、Ｚｐは、｛０，…，ｐ−１｝の整数の集合である。
さらに、基本情報生成手段１０１は、以下の式（１）〜式（３）のハッシュ関数Ｈ，Ｈ′，Ｈ″を予め準備した複数のハッシュ関数の中から選択する。
【００５２】
【数１１】
0006700797.tif 000012
【００５３】
ここで、｛０，１｝＊は、任意のビット列を示す。
すなわち、式（１）のハッシュ関数（第１ハッシュ関数）Ｈは、引数が１つ（Ｈ（・））で、任意のビット列の値を与えたとき、巡回群Ｇに属する値を返す関数である。式（２）のハッシュ関数（第２ハッシュ関数）Ｈ′は、引数が４つ（Ｈ′（・，・，・，・））で、第１，第２引数として巡回群ＧＴに属する値、第３，第４引数として任意のビット列の値を与えたとき、任意のビット列の値を返す関数である。また、式（３）のハッシュ関数（第３ハッシュ関数）Ｈ″は、引数が１つ（Ｈ″（・））で、任意のビット列の値を与えたとき、任意のビット列の値を返す関数である。
【００５４】
この基本情報生成手段１０１は、生成した各種の基本情報（ｐ，Ｇ，ＧＴ，ｅ，ｇ，ａ，α，Ｈ，Ｈ′，Ｈ″）を、公開鍵生成手段１０２に出力する。また、基本情報生成手段１０１は、生成した基本情報（ｇ，α）を、マスタ鍵生成手段１０３に出力する。もちろん、この基本情報は、図示を省略したメモリに記憶しておき、公開鍵生成手段１０２およびマスタ鍵生成手段１０３が、それぞれ必要な情報を参照することとしてもよい。
【００５５】
公開鍵生成手段１０２は、基本情報生成手段１０１で生成された基本情報に基づいて、属性ベース暗号における公開鍵を生成するものである。
ここでは、公開鍵生成手段１０２は、基本情報に基づいて、ｅ（ｇ，ｇ）のα乗およびｇのａ乗を演算し、以下の式（４）に示すように、基本情報生成手段１０１で生成された素数位数ｐ、巡回群Ｇ，ＧＴ、双線形写像ｅ、生成元ｇおよびハッシュ関数Ｈ，Ｈ′，Ｈ″とともに、公開鍵ＰＫを生成する。
【００５６】
【数１２】
0006700797.tif 000013
【００５７】
この公開鍵生成手段１０２は、生成した公開鍵ＰＫを公開鍵記憶手段１０４に書き込み記憶する。
【００５８】
マスタ鍵生成手段１０３は、基本情報生成手段１０１で生成された基本情報に基づいて、属性ベース暗号におけるマスタ鍵を生成するものである。
ここでは、マスタ鍵生成手段１０３は、以下の式（５）に示すように、基本情報に基づいて、生成元ｇのα乗を演算してマスタ鍵ＭＫを生成する。
【００５９】
【数１３】
0006700797.tif 000014
【００６０】
このマスタ鍵生成手段１０３は、生成したマスタ鍵ＭＫをマスタ鍵記憶手段１０５に書き込み記憶する。
【００６１】
公開鍵記憶手段１０４は、公開鍵生成手段１０２で生成された公開鍵を記憶するものである。この公開鍵記憶手段１０４は、半導体メモリ等の一般的な記憶媒体で構成することができる。
この公開鍵記憶手段１０４に記憶された公開鍵は、公開鍵送信手段１０６および第二鍵生成手段１１によって読み出される。
【００６２】
マスタ鍵記憶手段１０５は、マスタ鍵生成手段１０３で生成されたマスタ鍵を記憶するものである。このマスタ鍵記憶手段１０５は、半導体メモリ等の一般的な記憶媒体で構成することができる。
このマスタ鍵記憶手段１０５に記憶されたマスタ鍵は、第二鍵生成手段１１によって読み出される。
【００６３】
公開鍵送信手段１０６は、公開鍵生成手段１０２で生成され、公開鍵記憶手段１０４に記憶された公開鍵を、中間暗号化装置２、委託暗号化装置４および復号装置６に公開するものである。
ここでは、公開鍵送信手段１０６は、公開鍵記憶手段１０４から公開鍵を読み出し、ネットワークＮを介して、読み出した公開鍵を中間暗号化装置２、委託暗号化装置４および復号装置６に送信する。この公開鍵送信手段１０６は、例えば、中間暗号化装置２、委託暗号化装置４および復号装置６から、それぞれ公開鍵を要求されたタイミングで、公開鍵を送信する。
【００６４】
第二鍵生成手段１１は、外部から入力される個別の復号装置６のユーザの属性に基づいて、個別の復号装置６が使用する、属性ベース暗号方式における秘密鍵を生成するものである。ここでは、第二鍵生成手段１１は、属性入力手段１１０と、属性付き秘密鍵生成手段１１１と、属性付き秘密鍵送信手段１１２と、を備える。
【００６５】
属性入力手段１１０は、個別の復号装置６のユーザに対する属性を入力するものである。ここで、属性は、予め定めた属性種別に対応するユーザの属性値である。ここでは、属性Ｓは、以下の式（６）に示すように、属性種別ごとの属性値Ｓｊ（１≦ｊ≦ｍ；ｍは属性種別の数）で表すこととする。
【００６６】
【数１４】
0006700797.tif 000015
【００６７】
この属性入力手段１１０は、入力された属性を、属性付き秘密鍵生成手段１１１に出力する。
【００６８】
属性付き秘密鍵生成手段１１１は、属性入力手段１１０で入力された属性と、第一鍵生成手段１０で生成された公開鍵およびマスタ鍵とに基づいて、属性ベース暗号における秘密鍵を生成し、入力された属性を関連付けることで属性付き秘密鍵を生成するものである。ここでは、属性付き秘密鍵生成手段１１１は、秘密鍵生成手段１１１ａと、属性関連付け手段１１１ｂと、を備える。
【００６９】
秘密鍵生成手段１１１ａは、属性入力手段１１０で入力された属性に対応する属性ベース暗号方式における秘密鍵を生成するものである。
具体的には、秘密鍵生成手段１１１ａは、以下の演算を行うことで、秘密鍵を生成する。
まず、秘密鍵生成手段１１１ａは、乱数ｔをＺｐからランダムに選択する。
そして、秘密鍵生成手段１１１ａは、公開鍵記憶手段１０４に記憶されている公開鍵の一部であるｇａと、マスタ鍵記憶手段１０５に記憶されているマスタ鍵ＭＫ（＝ｇα）を用いて、以下の式（７）の演算を行い、秘密鍵の要素Ｋを求める。
【００７０】
【数１５】
0006700797.tif 000016
【００７１】
また、秘密鍵生成手段１１１ａは、公開鍵記憶手段１０４に記憶されている公開鍵の一部であるｇを用いて、以下の式（８）の演算を行い、秘密鍵の要素Ｌを求める。
【００７２】
【数１６】
0006700797.tif 000017
【００７３】
さらに、秘密鍵生成手段１１１ａは、属性Ｓ（前記式（６））のすべての属性値ｘにおいて、公開鍵記憶手段１０４に記憶されている公開鍵の一部であるハッシュ関数Ｈを用いて、以下の式（９）の演算を行い、秘密鍵の要素Ｋｘ、すなわち、属性Ｓの属性値の個数分のハッシュ値を求める。
【００７４】
【数１７】
0006700797.tif 000018
【００７５】
秘密鍵生成手段１１１ａは、前記式（７）〜式（９）で演算された各要素で構成される以下の式（１０）に示す秘密鍵ＳＫを生成し、属性関連付け手段１１１ｂに出力する。
【００７６】
【数１８】
0006700797.tif 000019
【００７７】
属性関連付け手段１１１ｂは、秘密鍵生成手段１１１ａで生成された秘密鍵ＳＫに、属性入力手段１１０で入力された属性を関連付けて、属性付き秘密鍵を生成するものである。例えば、属性関連付け手段１１１ｂは、秘密鍵ＳＫと属性Ｓとを予め定めたデータフォーマットで連結することで、属性付き秘密鍵を生成する。もちろん、秘密鍵ＳＫと属性Ｓとを予め定めた固有の識別子で対応付けることとしてもよい。
この属性関連付け手段１１１ｂは、生成した属性付き秘密鍵を属性付き秘密鍵送信手段１１２に出力する。
【００７８】
属性付き秘密鍵送信手段１１２は、属性付き秘密鍵生成手段１１１で生成された属性付き秘密鍵を、復号装置６に送信するものである。
ここでは、属性付き秘密鍵送信手段１１２は、属性付き秘密鍵を、ネットワークＮを介して、例えば、ＳＳＬ／ＴＬＳ（Secure Sockets Layer／Transport Layer Security）等の暗号化通信プロトコルを用いて復号装置６に送信する。なお、復号装置６の送信先については、外部から設定されるものとする。
【００７９】
ユーザＩＤ発行手段１２は、データの送信元（送信者）となる中間暗号化装置２のユーザの識別情報（ＩＤ）を発行するものである。ここでは、ユーザＩＤ発行手段１２は、ユーザＩＤ生成手段１２０と、ユーザＩＤ送信手段１２１と、を備える。
【００８０】
ユーザＩＤ生成手段１２０は、中間暗号化装置２のユーザごとに個別の識別情報（ユーザＩＤ）を生成するものである。ここでは、ユーザＩＤ生成手段１２０は、中間暗号化装置２のユーザに対するユーザ登録を外部から指示された段階で、ユーザＩＤを生成する。このユーザＩＤ生成手段１２０は、中間暗号化装置２から、ネットワークＮを介して、ユーザ登録の要求を受信することで、ユーザＩＤを生成することとしてもよい。
なお、ユーザＩＤ生成手段１２０が生成するユーザＩＤの生成手法は、属性ベース暗号システムＳＡ内で固有のＩＤを生成する手法であれば、その生成手法を問わない。例えば、ユーザ登録を要求されるたびに、予め定めた初期値を１ずつインクリメントしてユーザＩＤを生成することとしてもよい。
【００８１】
このユーザＩＤ生成手段１２０で生成されたユーザＩＤは、中間暗号化装置２が生成する中間暗号化データをクラウドサーバ３（委託暗号化装置４、データ管理装置５）で識別するために使用される。
このユーザＩＤ生成手段１２０は、生成したユーザＩＤを、ユーザＩＤ送信手段１２１に出力する。なお、このとき、ユーザＩＤ生成手段１２０は、ユーザＩＤの送信先となる中間暗号化装置２のアドレス等をユーザＩＤと併せてユーザＩＤ送信手段１２１に通知することとする。
【００８２】
ユーザＩＤ送信手段１２１は、ユーザＩＤ生成手段１２０で生成されたユーザＩＤを、指定された中間暗号化装置２に送信するものである。これによって、中間暗号化装置２のユーザに対して、ユーザＩＤが割り当てられることになる。
【００８３】
このように鍵生成装置１を構成することで、鍵生成装置１は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定してデータを暗号化／復号することが可能なＣＰ−ＡＢＥの公開鍵および秘密鍵（属性付き秘密鍵）を生成することができる。
また、鍵生成装置１は、中間暗号化装置２に対してユーザＩＤを割り当てることができる。なお、ユーザＩＤ発行手段１２は、鍵生成装置１から分離して、ユーザＩＤ発行装置として構成してもよい。
【００８４】
この鍵生成装置１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（鍵生成プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【００８５】
〔中間暗号化装置の構成〕
次に、図４を参照（適宜図１参照）して、本発明の実施形態に係る中間暗号化装置２の構成について説明する。ここでは、中間暗号化装置２は、データ入力手段２０と、ポリシー入力手段２１と、公開鍵受信手段２２と、公開鍵記憶手段２３と、ユーザＩＤ受信手段２４と、ユーザＩＤ記憶手段２５と、証明書付き中間暗号化データ生成手段２６と、データ関連付け手段２７と、データ送信手段２８と、を備える。
【００８６】
データ入力手段２０は、暗号化の対象となるデータを外部から入力するものである。このデータ入力手段２０は、入力されたデータを証明書付き中間暗号化データ生成手段２６に出力する。
【００８７】
ポリシー入力手段２１は、復号装置６において、暗号化データを復号するための条件（復号条件）となるポリシーを外部から入力するものである。ここでは、ポリシー入力手段２１は、線形秘密分散法（ＬＳＳＳ）によって予め生成されたアクセス行列Ａと、そのアクセス行列Ａの各行に対応する属性の属性種別を属性値に変換する写像ρとを、外部から入力する。
このポリシー入力手段２１は、入力されたポリシーを証明書付き中間暗号化データ生成手段２６と、データ関連付け手段２７とに出力する。
【００８８】
公開鍵受信手段２２は、鍵生成装置１で生成された属性ベース暗号の公開鍵を受信するものである。ここでは、公開鍵受信手段２２は、ネットワークＮを介して、公開鍵を受信し、受信した公開鍵を公開鍵記憶手段２３に書き込み記憶する。
なお、公開鍵受信手段２２は、定期的に公開鍵を鍵生成装置１に要求し取得することとしてもよいし、証明書付き中間暗号化データ生成手段２６が公開鍵を参照するタイミングで鍵生成装置１に要求し取得することとしてもよい。
【００８９】
公開鍵記憶手段２３は、公開鍵受信手段２２で受信した公開鍵を記憶するものである。この公開鍵記憶手段２３は、半導体メモリ等の一般的な記憶媒体で構成することができる。この公開鍵記憶手段２３に記憶された公開鍵は、証明書付き中間暗号化データ生成手段２６によって読み出される。
【００９０】
ユーザＩＤ受信手段２４は、鍵生成装置１で生成された中間暗号化装置２のユーザ個別の識別情報（ユーザＩＤ）を受信するものである。ここでは、ユーザＩＤ受信手段２４は、鍵生成装置１においてユーザ登録が実行された段階で、ユーザＩＤを受信することとする。なお、ユーザＩＤ受信手段２４は、ネットワークＮを介して、ユーザ登録を要求することで、ユーザＩＤを取得することとしてもよい。
このユーザＩＤ受信手段２４は、受信したユーザＩＤを、ユーザＩＤ記憶手段２５に書き込み記憶する。
【００９１】
ユーザＩＤ記憶手段２５は、ユーザＩＤ受信手段２４で受信したユーザＩＤを記憶するものである。このユーザＩＤ記憶手段２５は、半導体メモリ等の一般的な記憶媒体で構成することができる。このユーザＩＤ記憶手段２５に記憶されたユーザＩＤは、証明書付き中間暗号化データ生成手段２６およびデータ関連付け手段２７によって読み出される。
【００９２】
証明書付き中間暗号化データ生成手段２６は、公開鍵記憶手段２３に記憶されている公開鍵と、ポリシー入力手段２１で入力されたポリシーとに基づいて、データ入力手段２０で入力されたデータに対して中間的な暗号化を行い、証明書を付与した証明書付き中間暗号化データを生成するものである。
ここでは、証明書付き中間暗号化データ生成手段２６は、中間暗号化データ生成手段２６０と、証明書付与手段２６１と、を備える。
【００９３】
中間暗号化データ生成手段２６０は、公開鍵とポリシーとにより、属性ベース暗号による暗号化データを生成する際の中間的なデータ（中間暗号化データ）を生成するものである。
具体的には、中間暗号化データ生成手段２６０は、以下の演算を行うことで、中間暗号化データを生成する。
まず、中間暗号化データ生成手段２６０は、ポリシーとして入力されるアクセス行列の列の数をｎとしたとき、（２×ｎ）個分の乱数ｓ，ｙ２，…，ｙｎ，β１，β２，…，βｎを、Ｚｐからランダムに選択する。なお、Ｚｐは、公開鍵の一部である素数位数ｐに対する｛０，…，ｐ−１｝の整数の集合である。
そして、中間暗号化データ生成手段２６０は、選択した乱数から、以下の式（１１）により、中間暗号化データの要素となるベクトルｖを求める。
【００９４】
【数１９】
0006700797.tif 000020
【００９５】
また、中間暗号化データ生成手段２６０は、乱数ｓと、公開鍵記憶手段２３に記憶されている公開鍵の一部であるｅ（ｇ，ｇ）αおよびｇとにより、以下の式（１２）を演算することで、中間暗号化データの要素Ｃ，Ｃ′を求める。
【００９６】
【数２０】
0006700797.tif 000021
【００９７】
ここで、Ｍは、データ入力手段２０で入力された暗号化対象のデータである。
さらに、中間暗号化データ生成手段２６０は、ポリシーに含まれるアクセス行列Ａをｍ行ｎ列としたとき、以下の式（１３）に示すように、アクセス行列Ａの行ｉごとに、要素の値が“１”である列番号Ｊｉを選択する。
【００９８】
【数２１】
0006700797.tif 000022
【００９９】
例えば、アクセス行列Ａが、以下の式（１４）に示す３行２列の行列であった場合、Ｊ１＝｛２｝、Ｊ２＝｛１，２｝、Ｊ３＝｛１｝となる。
【０１００】
【数２２】
0006700797.tif 000023
【０１０１】
そして、中間暗号化データ生成手段２６０は、以下の式（１５）を演算することで、中間暗号化データの要素Ｅｉ（１≦ｉ≦ｍ）を求める。
【０１０２】
【数２３】
0006700797.tif 000024
【０１０３】
そして、中間暗号化データ生成手段２６０は、前記式（１１），式（１２），式（１５）で演算された各要素で構成される以下の式（１６）に示す中間暗号化データＣＴ′を生成し、証明書付与手段２６１に出力する。
【０１０４】
【数２４】
0006700797.tif 000025
【０１０５】
ここで、＜＞は、データの連結を示し、予め定めたデータフォーマットで連結することを意味する。なお、連結の順番は、予めデータを利用する側と共通であれば、どのような順番でも構わない（以下、同様）。
【０１０６】
証明書付与手段２６１は、中間暗号化データ生成手段２６０で生成された中間暗号化データに対して、当該中間暗号化データの正当性を検証するための情報である証明書を付与するものである。
具体的には、証明書付与手段２６１は、以下の式（１７）を演算することで、証明書πを生成する。
【０１０７】
【数２５】
0006700797.tif 000026
【０１０８】
ここで、ｅ（ｇ，ｇ）α、ハッシュ関数Ｈ′，Ｈ″は、公開鍵記憶手段２３に記憶されている公開鍵の一部である。ｓは、中間暗号化データ生成手段２６０で選択された乱数である。ＩＤは、ユーザＩＤ記憶手段２５に記憶されているユーザＩＤの値である。
【０１０９】
また、ｐｏｓＡは、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報（文字列）である。例えば、アクセス行列Ａが前記式（１４）の場合、ｐｏｓＡは、アクセス行列Ａの要素が“１”となるすべての位置を文字列で表した、｛（１，２），（２，１），（２，２），（３，１）｝となる。
【０１１０】
そして、証明書付与手段２６１は、中間暗号化データ生成手段２６０で生成された中間暗号化データに、生成した証明書を付与する。
例えば、証明書付与手段２６１は、中間暗号化データＣＴ′（式（１６））と、証明書π（式（１７））とを、予め定めたデータフォーマットで連結することで、証明書付き中間暗号化データを生成する。
この証明書付与手段２６１は、生成した証明書付き中間暗号化データを、データ関連付け手段２７に出力する。
【０１１１】
データ関連付け手段２７は、証明書付き中間暗号化データ生成手段２６で生成された証明書付き中間暗号化データに対して、ユーザＩＤ記憶手段２５に記憶されているユーザＩＤと、ポリシー入力手段２１で入力されたポリシー（Ａ，ρ）とを関連付けるものである。例えば、データ関連付け手段２７は、ユーザＩＤ、ポリシーおよび証明書付き中間暗号化データを予め定めたデータフォーマットで連結することで各データを関連付ける。もちろん、ユーザＩＤ、ポリシーおよび証明書付き中間暗号化データを予め定めた固有の識別子で対応付けることとしてもよい。
このデータ関連付け手段２７は、関連付けたデータ（ＩＤ・ポリシー・証明書付き中間暗号化データ）を、データ送信手段２８に出力する。
【０１１２】
データ送信手段２８は、データ関連付け手段２７で関連付けられたデータ（ＩＤ・ポリシー・証明書付き中間暗号化データ）を、ネットワークＮを介して、委託暗号化装置４に送信するものである。なお、委託暗号化装置４の送信先については、外部から設定されるものとする。
【０１１３】
このように、中間暗号化装置２を構成することで、中間暗号化装置２は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定してデータを暗号化することができる。なお、この中間暗号化装置２における暗号化は、属性ベース暗号方式における暗号化処理の一部を実施するもので、中間暗号化装置２をユーザ端末とする際の処理を軽減することができる。また、中間暗号化装置２は、証明書を中間暗号化データに付与することで、復号装置６において、クラウドサーバ３におけるデータ改ざんを検出することが可能になる。
【０１１４】
この中間暗号化装置２は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（中間暗号化プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【０１１５】
〔委託暗号化装置の構成〕
次に、図５を参照（適宜図１参照）して、本発明の実施形態に係る委託暗号化装置４の構成について説明する。ここでは、委託暗号化装置４は、公開鍵受信手段４０と、公開鍵記憶手段４１と、データ受信手段４２と、データ分離手段４３と、暗号化データ生成手段４４と、データ関連付け手段４５と、データ送信手段４６と、を備える。
【０１１６】
公開鍵受信手段４０は、鍵生成装置１で生成された属性ベース暗号の公開鍵を受信するものである。ここでは、公開鍵受信手段４０は、ネットワークＮを介して、公開鍵を受信し、受信した公開鍵を公開鍵記憶手段４１に書き込み記憶する。
なお、公開鍵受信手段４０は、定期的に公開鍵を鍵生成装置１に要求し取得することとしてもよいし、暗号化データ生成手段４４が公開鍵を参照するタイミングで鍵生成装置１に要求し取得することとしてもよい。
【０１１７】
公開鍵記憶手段４１は、公開鍵受信手段４０で受信した公開鍵を記憶するものである。この公開鍵記憶手段４１は、半導体メモリ等の一般的な記憶媒体で構成することができる。この公開鍵記憶手段４１に記憶された公開鍵は、暗号化データ生成手段４４によって読み出される。
【０１１８】
データ受信手段４２は、中間暗号化装置２で生成され、ユーザＩＤおよびポリシーが関連付けられたＩＤ・ポリシー・証明書付き中間暗号化データを、ネットワークＮを介して受信するものである。
このデータ受信手段４２は、受信したＩＤ・ポリシー・証明書付き中間暗号化データを、データ分離手段４３に出力する。
【０１１９】
データ分離手段４３は、データ受信手段４２で受信したＩＤ・ポリシー・証明書付き中間暗号化データを、個々のデータ（ユーザＩＤ、ポリシー、証明書、中間暗号化データ）に分離するものである。
このデータ分離手段４３は、分離したユーザＩＤ、ポリシーおよび証明書をデータ関連付け手段４５に出力する。さらに、データ分離手段４３は、分離したポリシーおよび中間暗号化データを暗号化データ生成手段４４に出力する。
【０１２０】
暗号化データ生成手段４４は、公開鍵記憶手段４１に記憶されている公開鍵と、データ分離手段４３で分離されたポリシーとに基づいて、データ分離手段４３で分離された中間暗号化データにさらに暗号化処理を継続して実行して、暗号化データを生成するものである。
具体的には、暗号化データ生成手段４４は、以下の演算を行うことで、暗号化データを生成する。
まず、暗号化データ生成手段４４は、ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行ｉ（１≦ｉ≦ｍ）ごとに、Ａｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）をアクセス行列Ａのｉ行目ベクトルとして、以下の式（１８）に示すように、中間暗号化データＣＴ′（式（１６）参照）に含まれるベクトルｖとの内積λｉ′を演算する。
【０１２１】
【数２６】
0006700797.tif 000027
【０１２２】
また、暗号化データ生成手段４４は、ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行数分（ｍ個）の乱数ｒ１，ｒ２，…，ｒｍを、Ｚｐからランダムに選択する。なお、Ｚｐは、公開鍵の一部である素数位数ｐに対する｛０，…，ｐ−１｝の整数の集合である。
そして、暗号化データ生成手段４４は、選択した乱数ｒ１，ｒ２，…，ｒｍと、公開鍵記憶手段４１に記憶されている公開鍵の一部であるｇａ、ｇおよびハッシュ関数Ｈと、ポリシーに含まれる写像ρと、中間暗号化データＣＴ′（式（１６）参照）に含まれる要素Ｅｉとにより、以下の式（１９）を演算することで、暗号化データの要素｛Ｃｉ，Ｄｉ｝（１≦ｉ≦ｍ）を求める。
【０１２３】
【数２７】
0006700797.tif 000028
【０１２４】
そして、暗号化データ生成手段４４は、中間暗号化データに含まれている要素Ｃ，Ｃ′と、前記式（１９）で演算された各要素とで構成される以下の式（２０）に示す暗号化データＣＴを生成し、データ関連付け手段４５に出力する。
【０１２５】
【数２８】
0006700797.tif 000029
【０１２６】
データ関連付け手段４５は、データ分離手段４３で分離されたユーザＩＤ、証明書およびポリシーと、暗号化データ生成手段４４で生成された暗号化データとを関連付けるものである。例えば、データ関連付け手段４５は、ユーザＩＤ、証明書、ポリシーおよび暗号化データを予め定めたデータフォーマットで連結することで各データを関連付ける。
このデータ関連付け手段４５は、関連付けたデータ（ＩＤ・ポリシー・証明書付き暗号化データ）を、データ送信手段４６に出力する。
【０１２７】
データ送信手段４６は、データ関連付け手段４５で関連付けられたデータ（ＩＤ・ポリシー・証明書付き暗号化データ）を、データ管理装置５に送信するものである。
このように、委託暗号化装置４を構成することで、委託暗号化装置４は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定してデータを暗号化することができる。なお、この委託暗号化装置４における暗号化は、属性ベース暗号方式における暗号化処理の一部を実施するもので、中間暗号化装置２の暗号化処理を補完するものである。これによって、委託暗号化装置４は、データを送信する中間暗号化装置２の処理を軽減させることができる。
【０１２８】
この委託暗号化装置４は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（委託暗号化プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【０１２９】
〔データ管理装置の構成〕
次に、図６を参照（適宜図１参照）して、本発明の実施形態に係るデータ管理装置５の構成について説明する。ここでは、データ管理装置５は、データ受信手段５０と、暗号化データ記憶手段５１と、データ要求受信手段５２と、データ検索手段５３と、データ送信手段５４と、を備える。
【０１３０】
データ受信手段５０は、委託暗号化装置４で生成され、ユーザＩＤおよびポリシーが関連付けられたＩＤ・ポリシー・証明書付き暗号化データを受信するものである。
このデータ受信手段５０は、受信したＩＤ・ポリシー・証明書付き暗号化データを、暗号化データ記憶手段５１に書き込み記憶する。
【０１３１】
暗号化データ記憶手段５１は、データ受信手段５０で受信したＩＤ・ポリシー・証明書付き暗号化データを記憶するものである。この暗号化データ記憶手段５１は、半導体メモリ等の一般的な記憶媒体で構成することができる。この暗号化データ記憶手段５１に記憶されたＩＤ・ポリシー・証明書付き暗号化データは、データ検索手段５３によって、検索され、読み出される。
【０１３２】
データ要求受信手段５２は、復号装置６から、ネットワークＮを介して、暗号化データの要求（データ要求）を受信するものである。なお、データ要求には、暗号化データを特定するためのユーザＩＤが含まれている。
このデータ要求受信手段５２は、ユーザＩＤを含むデータ要求をデータ検索手段５３に出力する。
【０１３３】
データ検索手段５３は、データ要求受信手段５２を介して受信した、復号装置６からのデータ要求に基づいて、暗号化データ記憶手段５１に記憶されている暗号化データを検索するものである。
すなわち、データ検索手段５３は、データ要求に含まれているユーザＩＤを検索キーとして、暗号化データ記憶手段５１に記憶されている複数のＩＤ・ポリシー・証明書付き暗号化データの中から、ユーザＩＤが一致するＩＤ・ポリシー・証明書付き暗号化データを検索する。
このデータ検索手段５３は、検索結果したＩＤ・ポリシー・証明書付き暗号化データをデータ送信手段５４に出力する。
【０１３４】
データ送信手段５４は、データ検索手段５３で検索されたＩＤ・ポリシー・証明書付き暗号化データを、ネットワークＮを介して、当該データを要求した復号装置６に送信するものである。
このようにデータ管理装置５を構成することで、データ管理装置５は、クラウドサーバとして機能し、復号装置６から要求のあった暗号化データを提供することができる。
【０１３５】
このデータ管理装置５は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（データ管理プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【０１３６】
〔復号装置の構成〕
次に、図７を参照（適宜図１参照）して、本発明の実施形態に係る復号装置６の構成について説明する。ここで、復号装置６は、公開鍵受信手段６０と、公開鍵記憶手段６１と、属性付き秘密鍵受信手段６２と、属性付き秘密鍵記憶手段６３と、データ要求送信手段６４と、データ受信手段６５と、検証・復号手段６６と、を備える。
【０１３７】
公開鍵受信手段６０は、鍵生成装置１で生成された属性ベース暗号の公開鍵を受信するものである。ここでは、公開鍵受信手段６０は、ネットワークＮを介して、公開鍵を受信し、受信した公開鍵を公開鍵記憶手段６１に書き込み記憶する。
なお、公開鍵受信手段６０は、定期的に公開鍵を鍵生成装置１に要求し取得することとしてもよいし、検証・復号手段６６が公開鍵を参照するタイミングで鍵生成装置１に要求し取得することとしてもよい。
【０１３８】
公開鍵記憶手段６１は、公開鍵受信手段６０で受信した公開鍵を記憶するものである。この公開鍵記憶手段６１は、半導体メモリ等の一般的な記憶媒体で構成することができる。この公開鍵記憶手段６１に記憶された公開鍵は、検証・復号手段６６によって読み出される。
【０１３９】
属性付き秘密鍵受信手段６２は、鍵生成装置１で生成された属性付き秘密鍵を受信するものである。ここでは、属性付き秘密鍵受信手段６２は、ネットワークＮを介して、例えば、ＳＳＬ／ＴＬＳ等の暗号化通信プロトコルを用いて属性付き秘密鍵を受信し、受信した属性付き秘密鍵を属性付き秘密鍵記憶手段６３に書き込み記憶する。
なお、属性付き秘密鍵受信手段６２は、検証・復号手段６６が、暗号化データを復号する前に、予め属性付き秘密鍵を取得しておく。例えば、復号装置６が、図示を省略した登録手段によって、予め鍵生成装置１に対してユーザ登録等を行うことで、属性付き秘密鍵を取得する。
【０１４０】
属性付き秘密鍵記憶手段６３は、属性付き秘密鍵受信手段６２で受信した属性付き秘密鍵を記憶するものである。この属性付き秘密鍵記憶手段６３は、半導体メモリ等の一般的な記憶媒体で構成することができる。この属性付き秘密鍵記憶手段６３に記憶された属性付き秘密鍵は、検証・復号手段６６によって読み出される。
【０１４１】
データ要求送信手段６４は、データの送信元（中間暗号化装置２）のユーザＩＤを含んだデータ要求を、ネットワークＮを介して、データ管理装置５に送信するものである。なお、ユーザＩＤは、データを送信する送信者（中間暗号化装置２）と、データを受信する受信者（復号装置６）との間で、予め共有しているものとする。
【０１４２】
データ受信手段６５は、データ要求送信手段６４で要求したデータ管理装置５で管理（記憶）されているＩＤ・ポリシー・証明書付き暗号化データを、ネットワークＮを介して受信するものである。
このデータ受信手段６５は、受信したＩＤ・ポリシー・証明書付き暗号化データを、検証・復号手段６６に出力する。
【０１４３】
検証・復号手段６６は、データ受信手段６５で受信したＩＤ・ポリシー・証明書付き暗号化データを検証し、復号するものである。ここでは、検証・復号手段６６は、属性付き秘密鍵分離手段６６０と、ポリシー分離手段６６１と、ポリシー判定手段６６２と、証明書検証手段６６３と、データ復号手段６６４と、を備える。
【０１４４】
属性付き秘密鍵分離手段６６０は、属性付き秘密鍵記憶手段６３に記憶されている属性付き秘密鍵を、属性と秘密鍵とに分離するものである。
この属性付き秘密鍵分離手段６６０は、分離した属性（属性種別ごとの属性値：前記式（６）参照）をポリシー判定手段６６２に出力する。また、属性付き秘密鍵分離手段６６０は、分離した秘密鍵（前記式（１０）参照）を証明書検証手段６６３に出力する。
【０１４５】
ポリシー分離手段６６１は、データ受信手段６５で受信したＩＤ・ポリシー・証明書付き暗号化データからポリシーを分離するものである。
このポリシー分離手段６６１は、分離したポリシーを、ポリシー判定手段６６２に出力し、残りのＩＤ・証明書付き暗号化データを証明書検証手段６６３に出力する。
【０１４６】
ポリシー判定手段６６２は、属性がポリシーを満たすか否かを判定するものである。
具体的には、ポリシー判定手段６６２は、以下の式（２１）に示すように、アクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択する。
【０１４７】
【数２９】
0006700797.tif 000030
【０１４８】
そして、ポリシー判定手段６６２は、アクセス行列Ａの行ベクトルＡｉ（ｉ∈Ｉ）を用いて、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉを求める。
【０１４９】
【数３０】
0006700797.tif 000031
【０１５０】
この式（２２）において、「Ｘ  ｓ．ｔ．  Ｙ」は、Ｙを満たすＸを示す。
このとき、ポリシー判定手段６６２は、式（２２）の条件を満たす値ｗｉが存在する場合、属性がポリシーを満たすと判定する。
一方、ポリシー判定手段６６２は、式（２２）の条件を満たす値ｗｉが存在しない場合、属性がポリシーを満たさないと判定する。
【０１５１】
このポリシー判定手段６６２は、属性がポリシーを満たす場合だけ、式（２１）で求めた集合Ｉおよび式（２２）で求めた値ｗｉを証明書検証手段６６３に出力する。なお、ポリシー判定手段６６２は、属性がポリシーを満たさない場合、図示を省略した表示装置にエラーメッセージを表示することとしてもよい。
【０１５２】
証明書検証手段６６３は、暗号化データに付与されている証明書を検証するものである。ここでは、証明書検証手段６６３は、ポリシー分離手段６６１で分離されたＩＤ・証明書付き暗号化データと、ポリシー判定手段６６２から入力される集合Ｉおよび値ｗｉと、属性付き秘密鍵分離手段６６０で分離された秘密鍵と、公開鍵記憶手段６１に記憶されている公開鍵とに基づいて、証明書を検証する。
具体的には、証明書検証手段６６３は、以下の式（２３）に示す演算を行う。
【０１５３】
【数３１】
0006700797.tif 000032
【０１５４】
ここで、ｅは公開鍵の一部である双線形写像である（前記式（４）参照）。また、Ｋ、Ｌ、Ｋｘは秘密鍵の各要素である（前記式（１０）参照）。また、Ｃ′，Ｃｉ，Ｄｉは、暗号化データの要素である（前記式（２０）参照）。
さらに、証明書検証手段６６３は、式（２３）の演算結果Ｂを用いて、以下の式（２４）に示す演算を行うことで、証明書検証データπ′を生成する。
【０１５５】
【数３２】
0006700797.tif 000033
【０１５６】
ここで、Ｃは、暗号化データの要素である（前記式（２０）参照）。また、Ｈ′，Ｈ″は、公開鍵の一部であるハッシュ関数である。また、ＩＤは、ポリシー分離手段６６１で分離されたＩＤ・証明書付き暗号化データに含まれ、証明書付き暗号化データに関連付けられているユーザＩＤである。また、ｐｏｓＡは、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報（文字列）である。
また、式（２４）におけるＢは、データの改ざん等がなされなければ、前記式（１７）のｅ（ｇ，ｇ）αｓと一致するものである。
ここで、前記式（２３）によって、Ｂ、すなわちｅ（ｇ，ｇ）αｓが算出されることについて証明しておく。
以下、式（２５）により、式（２３）の右辺を変形することで、ｅ（ｇ，ｇ）αｓとなる。
【０１５７】
【数３３】
0006700797.tif 000034
【０１５８】
なお、この式（２５）において、式（25-2）から式（25-3）の変形は、双線形写像の性質であるｅ（ｇ１，ｇ２ｇ３）＝ｅ（ｇ１，ｇ２）ｅ（ｇ１，ｇ３）を利用することで変形することができる。また、式（25-5）から式（25-6）の変形は、双線形写像の性質であるｅ（ｇａ，ｇｂ）＝ｅ（ｇ，ｇ）ａｂを利用することで変形することができる。なお、式（25-9）から式（25-10）の変形は、Σの演算結果が、前記式（２２）によって、（１，０，…，０）になるからである。
図７に戻って、復号装置６の構成について説明を続ける。
【０１５９】
証明書検証手段６６３は、式（２４）で生成した証明書検証データπ′と、証明書付き暗号化データに付与されている証明書πとを比較し、一致している場合のみ、前記式（２３）の演算結果Ｂ、すなわち、ｅ（ｇ，ｇ）αｓの値と、暗号化データに含まれる要素Ｃ（前記式（２０）参照）とを、データ復号手段６６４に出力する。
なお、証明書検証手段６６３は、証明書検証データπ′と証明書πとが一致しない場合、図示を省略した表示装置にエラーメッセージを表示することとしてもよい。
【０１６０】
データ復号手段６６４は、暗号化データを復号するものである。ここでは、データ復号手段６６４は、証明書検証手段６６３から、証明書が正しく検証された場合にのみ出力される、前記式（２３）の演算結果Ｂ（すなわち、ｅ（ｇ，ｇ）αｓ）と、暗号化データに含まれる要素Ｃとから、以下の式（２６）により、元のデータＭを復号する。
【０１６１】
【数３４】
0006700797.tif 000035
【０１６２】
このように復号装置６を構成することで、復号装置６は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定して暗号化されたデータを、復号装置６のユーザの属性に応じて復号することができる。
【０１６３】
この復号装置６は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、通信インタフェース等（図示を省略）を備え、ＣＰＵがＨＤＤ等に格納されたプログラム（復号プログラム）をＲＡＭに展開することにより、ＣＰＵ（コンピュータ）を、前記した各手段として機能させることができる。
【０１６４】
［属性ベース暗号システムの動作］
次に、本発明の実施形態に係る属性ベース暗号システムＳＡの動作について説明する。ここでは、鍵（公開鍵、秘密鍵）の生成・配信動作と、ユーザＩＤの配信動作と、データの中間暗号化および暗号化動作と、データの復号動作とに分けて説明する。
【０１６５】
〔鍵（公開鍵、秘密鍵）生成・配信動作〕
最初に、図８を参照（構成については、適宜図３，図４，図５，図７参照）して、属性ベース暗号システムＳＡの鍵（公開鍵、秘密鍵）の生成・配信動作について説明する。
まず、鍵生成装置１は、パラメータ入力手段１００によって、セキュリティパラメータを外部から入力する（ステップＳ１０）。
そして、鍵生成装置１は、基本情報生成手段１０１によって、ステップＳ１０で入力されたパラメータに基づいて、公開鍵およびマスタ鍵を生成するために用いる基本情報を生成する（ステップＳ１１）。なお、このステップＳ１１における基本情報生成動作については、図９を参照して後で詳細に説明する。
【０１６６】
そして、鍵生成装置１は、公開鍵生成手段１０２およびマスタ鍵生成手段１０３によって、ステップＳ１１で生成された基本情報に基づいて、属性ベース暗号における公開鍵と、秘密鍵を生成するためのマスタ鍵とを生成する（ステップＳ１２）。なお、このステップＳ１２における公開鍵・マスタ鍵生成動作については、図１０を参照して後で詳細に説明する。
【０１６７】
そして、鍵生成装置１は、公開鍵生成手段１０２によって、生成した公開鍵を公開鍵記憶手段１０４に書き込み記憶し、マスタ鍵生成手段１０３によって、生成したマスタ鍵をマスタ鍵記憶手段１０５に書き込み記憶する（ステップＳ１３）。
その後、鍵生成装置１は、公開鍵送信手段１０６によって、ステップＳ１３で公開鍵記憶手段１０４に記憶されている公開鍵を、中間暗号化装置２、委託暗号化装置４および復号装置６に送信（公開）する（ステップＳ１４）。
【０１６８】
一方、中間暗号化装置２は、公開鍵受信手段２２によって、ステップＳ１４で送信された公開鍵を受信し（ステップＳ１５）、公開鍵記憶手段２３に書き込み記憶する（ステップＳ１６）。また、委託暗号化装置４は、公開鍵受信手段４０によって、ステップＳ１４で送信された公開鍵を受信し（ステップＳ１７）、公開鍵記憶手段４１に書き込み記憶する（ステップＳ１８）。また、復号装置６は、公開鍵受信手段６０によって、ステップＳ１４で送信された公開鍵を受信し（ステップＳ１９）、公開鍵記憶手段６１に書き込み記憶する（ステップＳ２０）。
【０１６９】
さらに、鍵生成装置１は、以下の動作によって、個別の復号装置６を対象として属性付き秘密鍵を生成する。
すなわち、鍵生成装置１は、属性入力手段１１０によって、個別の復号装置６のユーザに対する属性を入力する（ステップＳ２１）。
【０１７０】
そして、鍵生成装置１は、属性付き秘密鍵生成手段１１１の秘密鍵生成手段１１１ａによって、ステップＳ１３で公開鍵記憶手段１０４に記憶された公開鍵と、マスタ鍵記憶手段１０５に記憶されたマスタ鍵と、ステップＳ２１で入力された属性とに基づいて、秘密鍵を生成する（ステップＳ２２）。なお、このステップＳ２２における秘密鍵生成動作については、図１１を参照して後で詳細に説明する。
【０１７１】
さらに、鍵生成装置１は、属性付き秘密鍵生成手段１１１の属性関連付け手段１１１ｂによって、ステップＳ２２で生成された秘密鍵に、ステップＳ２１で入力された属性を関連付けて、属性付き秘密鍵を生成する（ステップＳ２３）。
その後、鍵生成装置１は、属性付き秘密鍵送信手段１１２によって、ステップＳ２３で生成された属性付き秘密鍵を、復号装置６に送信する（ステップＳ２４）。
【０１７２】
一方、復号装置６は、属性付き秘密鍵受信手段６２によって、ステップＳ２４で送信された属性付き秘密鍵を受信し（ステップＳ２５）、属性付き秘密鍵記憶手段６３に書き込み記憶する（ステップＳ２６）。
以上の動作により、属性ベース暗号システムＳＡは、鍵生成装置１によって、属性ベース暗号における鍵（公開鍵、秘密鍵）を生成し、鍵を必要とする中間暗号化装置２、委託暗号化装置４および復号装置６に送信することができる。
【０１７３】
（基本情報生成動作）
次に、図９を参照（構成については、適宜図３参照）して、図８のステップＳ１１の動作（基本情報生成動作）について詳細に説明する。
まず、鍵生成装置１は、基本情報生成手段１０１によって、セキュリティパラメータで特定される大きさ（ビット長）の素数ｐを選択し、当該素数ｐを位数（素数位数ｐ）とする巡回群Ｇ，ＧＴを選択する（ステップＳ１１０）。
また、基本情報生成手段１０１は、巡回群Ｇ，ＧＴがＧ×Ｇ→ＧＴとなる双線形写像ｅを選択する（ステップＳ１１１）。そして、基本情報生成手段１０１は、巡回群Ｇの中からランダムに１つの生成元ｇを選択（ｇ∈Ｇ）する（ステップＳ１１２）。
【０１７４】
また、基本情報生成手段１０１は、乱数α，ａを、Ｚｐからランダムに選択する（ステップＳ１１３）。
さらに、基本情報生成手段１０１は、予め準備した複数のハッシュ関数の中から、ハッシュ関数Ｈ，Ｈ′，Ｈ″を選択する（ステップＳ１１４）。
以上の動作により、鍵生成装置１は、公開鍵およびマスタ鍵を生成するために用いる基本情報を生成することができる。
【０１７５】
（公開鍵・マスタ鍵生成動作）
次に、図１０を参照（構成については、適宜図３参照）して、図８のステップＳ１２の動作（公開鍵・マスタ鍵生成動作）について詳細に説明する。
まず、鍵生成装置１は、公開鍵生成手段１０２によって、基本情報生成手段１０１で生成された基本情報であるｅ（ｇ，ｇ）のα乗およびｇのａ乗を演算する（ステップＳ１２０）。
そして、鍵生成装置１は、公開鍵生成手段１０２によって、基本情報生成手段１０１で生成（選択）された基本情報である素数位数ｐ、巡回群Ｇ，ＧＴ、双線形写像ｅ、生成元ｇおよびハッシュ関数Ｈ，Ｈ′，Ｈ″と、ステップＳ１２０の演算結果とを含んだ公開鍵ＰＫ（前記式（４）参照）を生成する（ステップＳ１２１）。
【０１７６】
さらに、鍵生成装置１は、マスタ鍵生成手段１０３によって、基本情報生成手段１０１で生成された基本情報である生成元ｇのα乗を演算してマスタ鍵ＭＫ（前記式（５）参照）を生成する（ステップＳ１２２）。
以上の動作により、鍵生成装置１は、属性ベース暗号における公開鍵およびマスタ鍵を生成することができる。
【０１７７】
（秘密鍵生成動作）
次に、図１１を参照（構成については、適宜図３参照）して、図８のステップＳ２２の動作（秘密鍵生成動作）について詳細に説明する。
まず、鍵生成装置１は、秘密鍵生成手段１１１ａによって、乱数ｔをＺｐからランダムに選択する（ステップＳ２２０）。
そして、秘密鍵生成手段１１１ａは、公開鍵記憶手段１０４に記憶されている公開鍵の一部であるｇａと、マスタ鍵記憶手段１０５に記憶されているマスタ鍵ＭＫ（＝ｇα）を用いて、ｇαｇａｔを演算（前記式（７）参照）し、秘密鍵の要素Ｋを求める（ステップＳ２２１）。
【０１７８】
そして、秘密鍵生成手段１１１ａは、公開鍵記憶手段１０４に記憶されている公開鍵の一部である生成元ｇのｔ乗を演算（前記式（８）参照）し、秘密鍵の要素Ｌを求める（ステップＳ２２２）。
また、秘密鍵生成手段１１１ａは、属性Ｓのすべての属性値ｘにおいて、公開鍵記憶手段１０４に記憶されている公開鍵の一部であるハッシュ関数Ｈを用いて、Ｈ（ｘ）のｔ乗を演算し、秘密鍵の要素Ｋｘ（前記式（９）参照）を求める（ステップＳ２２３）。
そして、秘密鍵生成手段１１１ａは、ステップＳ２２１〜Ｓ２２３で演算された各要素で構成される秘密鍵ＳＫ（前記式（１０）参照）を生成する（ステップＳ２２４）。
以上の動作により、鍵生成装置１は、属性ベース暗号における秘密鍵を生成することができる。
【０１７９】
〔ユーザＩＤ配信動作〕
次に、図１２を参照（構成については、適宜図３，図４参照）して、属性ベース暗号システムＳＡのユーザＩＤの配信動作について説明する。
まず、鍵生成装置１は、ユーザＩＤ生成手段１２０によって、中間暗号化装置２のユーザに対するユーザ登録を受け付けることで、そのユーザ個別の識別情報（ユーザＩＤ）を生成する（ステップＳ３０）。
そして、鍵生成装置１は、ユーザＩＤ送信手段１２１によって、ステップＳ３０で生成されたユーザＩＤを、中間暗号化装置２に送信する（ステップＳ３１）。
一方、中間暗号化装置２は、ユーザＩＤ受信手段２４によって、鍵生成装置１から送信されたユーザＩＤを受信し（ステップＳ３２）、ユーザＩＤ記憶手段２５に書き込み記憶する（ステップＳ３３）。
以上の動作により、属性ベース暗号システムＳＡは、鍵生成装置１から、中間暗号化装置２の個別のユーザに対して、ユーザＩＤを発行することができる。
【０１８０】
〔データ暗号化（中間暗号化を含む）動作〕
次に、図１３を参照（構成については、適宜図４，図５，図６参照）して、属性ベース暗号システムＳＡのデータの中間暗号化および暗号化動作について説明する。
まず、中間暗号化装置２は、ポリシー入力手段２１によって、暗号化データを復号するための条件（復号条件）となるポリシーを外部から入力する（ステップＳ４０）。なお、このポリシーは、線形秘密分散法（ＬＳＳＳ）によって予め生成されたアクセス行列Ａと、アクセス行列Ａの各行に対応する属性の属性種別を属性値に変換する写像ρとで構成される。
【０１８１】
また、中間暗号化装置２は、データ入力手段２０によって、暗号化の対象となるデータを外部から入力する（ステップＳ４１）。
そして、中間暗号化装置２は、中間暗号化データ生成手段２６０によって、公開鍵に基づいて、ステップＳ４０で入力されたポリシーに対応する中間暗号化データを生成する（ステップＳ４２）。さらに、中間暗号化装置２は、証明書付与手段２６１によって、中間暗号化データに付与する証明書を生成する（ステップＳ４３）。なお、このステップＳ４２，Ｓ４３における中間暗号化データ生成動作および証明書生成動作については、図１４，図１５を参照して後で詳細に説明する。
【０１８２】
そして、中間暗号化装置２は、証明書付与手段２６１によって、ステップＳ４２で生成された中間暗号化データに、ステップＳ４３で生成された証明書を付与して、証明書付き中間暗号化データを生成する（ステップＳ４４）。
さらに、中間暗号化装置２は、データ関連付け手段２７によって、ステップＳ４４で生成された証明書付き中間暗号化データに、ユーザＩＤ記憶手段２５に記憶されているユーザＩＤと、ステップＳ４０で入力されたポリシー（Ａ，ρ）とを関連付けて、ＩＤ・ポリシー・証明書付き中間暗号化データを生成する（ステップＳ４５）。
そして、中間暗号化装置２は、データ送信手段２８によって、ステップＳ４５で生成されたＩＤ・ポリシー・証明書付き中間暗号化データを、委託暗号化装置４に送信する（ステップＳ４６）。
【０１８３】
そして、委託暗号化装置４は、データ受信手段４２によって、ステップＳ４６で送信されたＩＤ・ポリシー・証明書付き中間暗号化データを受信する（ステップＳ４７）。
その後、委託暗号化装置４は、データ分離手段４３によって、ステップＳ４７で受信したＩＤ・ポリシー・証明書付き中間暗号化データを、個々のデータ（ユーザＩＤ、ポリシー、証明書、中間暗号化データ）に分離する（ステップＳ４８）。
そして、委託暗号化装置４は、暗号化データ生成手段４４によって、公開鍵記憶手段４１に記憶されている公開鍵と、ステップＳ４８で分離されたポリシーとに基づいて、ステップＳ４８で分離された中間暗号化データにさらに暗号化処理を継続して実行して、暗号化データを生成する（ステップＳ４９）。なお、このステップＳ４９における暗号化データ生成動作については、図１６を参照して後で詳細に説明する。
【０１８４】
さらに、委託暗号化装置４は、データ関連付け手段４５によって、ステップＳ４８で分離されたユーザＩＤ、証明書およびポリシーと、ステップＳ４９で生成された暗号化データとを関連付けて、ＩＤ・ポリシー・証明書付き暗号化データを生成する（ステップＳ５０）。
そして、委託暗号化装置４は、データ送信手段４６によって、ステップＳ５０で生成されたＩＤ・ポリシー・証明書付き暗号化データを、データ管理装置５に送信する（ステップＳ５１）。
【０１８５】
一方、データ管理装置５は、データ受信手段５０によって、委託暗号化装置４から送信されたＩＤ・ポリシー・証明書付き暗号化データを受信し（ステップＳ５２）、暗号化データ記憶手段５１に書き込み記憶する（ステップＳ５３）。
以上の動作により、属性ベース暗号システムＳＡは、中間暗号化装置２と委託暗号化装置４とで暗号化処理を分散して行い、暗号化データをデータ管理装置５に記憶させることができる。
【０１８６】
（中間暗号化データ生成動作）
次に、図１４を参照（構成については、適宜図４参照）して、図１３のステップＳ４２の動作（中間暗号化データ生成動作）について詳細に説明する。
まず、中間暗号化装置２は、中間暗号化データ生成手段２６０によって、ポリシーとして入力されるアクセス行列の列の数をｎとしたとき、（２×ｎ）個分の乱数ｓ，ｙ２，…，ｙｎ，β１，β２，…，βｎを、Ｚｐからランダムに選択する（ステップＳ４２０）。
さらに、中間暗号化データ生成手段２６０は、ステップＳ４２０で生成した乱数から、前記式（１１）の演算を行い、中間暗号化データの要素となるベクトルｖを求める（ステップＳ４２１）。
【０１８７】
そして、中間暗号化データ生成手段２６０は、暗号化対象のデータＭと、ステップＳ４２０で選択した乱数ｓと、公開鍵記憶手段２３に記憶されている公開鍵の一部であるｅ（ｇ，ｇ）αおよびｇとにより、前記式（１２）を演算することで、中間暗号化データの要素Ｃ，Ｃ′を求める（ステップＳ４２２）。
さらに、中間暗号化データ生成手段２６０は、ポリシーに含まれるアクセス行列Ａをｍ行ｎ列としたとき、前記式（１３）に示すように、アクセス行列Ａの行ｉごとに、要素の値が“１”である列番号Ｊｉを選択する（ステップＳ４２３）。
【０１８８】
そして、中間暗号化データ生成手段２６０は、ステップＳ４２０で選択した乱数βｊ（１≦ｊ≦ｎ）のうちで、ステップＳ４２３で選択した列番号Ｊｉに対応する乱数と、公開鍵記憶手段２３に記憶されている公開鍵の一部であるｇａとに基づいて、前記式（１５）を演算することで、中間暗号化データの要素Ｅｉ（１≦ｉ≦ｍ）を求める（ステップＳ４２４）。
そして、中間暗号化データ生成手段２６０は、ステップＳ４２１，Ｓ４２２，Ｄ４２４で演算された各要素で構成される中間暗号化データＣＴ′（前記式（１６）参照）を生成する（ステップＳ４２５）。
以上の動作により、中間暗号化データ生成手段２６０は、暗号化処理の一部の処理（中間暗号化処理）を行うことができる。
【０１８９】
（証明書生成動作）
次に、図１５を参照（構成については、適宜図４参照）して、図１３のステップＳ４３の動作（証明書生成動作）について詳細に説明する。
中間暗号化装置２は、証明書付与手段２６１によって、前記式（１７）により、証明書πを生成する（ステップＳ４３０）。
すなわち、証明書付与手段２６１は、図１４のステップＳ４２５で生成された中間暗号化データＣＴ′の要素Ｃと、ステップＳ４２０で選択された乱数ｓを用いてｅ（ｇ，ｇ）αをｓ乗した値と、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報をハッシュ関数Ｈ″で演算したハッシュ値と、ユーザＩＤ記憶手段２５に記憶されているユーザＩＤとを４つの引数とし、ハッシュ関数Ｈ′によるハッシュ値として証明書πを生成する。
【０１９０】
（暗号化データ生成動作）
次に、図１６を参照（構成については、適宜図５参照）して、図１３のステップＳ４９の動作（暗号化データ生成動作）について詳細に説明する。
まず、委託暗号化装置４は、暗号化データ生成手段４４によって、前記式（１８）に示すように、ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行ｉ（１≦ｉ≦ｍ）ごとに、Ａｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）をアクセス行列Ａのｉ行目ベクトルとして、図１４のステップＳ４２５で生成された中間暗号化データＣＴ′に含まれるベクトルｖとの内積λｉ′を演算する（ステップＳ４９０）。
さらに、暗号化データ生成手段４４は、ポリシーに含まれるｍ行ｎ列のアクセス行列Ａの行数分（ｍ個）の乱数ｒ１，ｒ２，…，ｒｍを、Ｚｐからランダムに選択する（ステップＳ４９１）。
【０１９１】
そして、暗号化データ生成手段４４は、公開鍵の一部であるｇ，ｇａ，Ｈ′と、ステップＳ４９０の演算結果（λｉ′）と、ステップＳ４９１で選択された乱数ｒｉ（１≦ｉ≦ｍ）とにより、前記式（１９）を演算することで、暗号化データの要素｛Ｃｉ，Ｄｉ｝（１≦ｉ≦ｍ）を求める（ステップＳ４９２）。
そして、暗号化データ生成手段４４は、中間暗号化データＣＴ′に含まれる要素Ｃ，Ｃ′と、ステップＳ４９２で演算された各要素とで構成される暗号化データＣＴ（前記式（２０）参照）を生成する（ステップＳ４９３）。
以上の動作により、暗号化データ生成手段４４は、中間暗号化データＣＴ′に対して、残りの暗号化処理を行うことができる。
【０１９２】
〔データ復号動作〕
次に、図１７を参照（構成については、適宜図６，図７参照）して、属性ベース暗号システムＳＡの暗号化データの復号動作について説明する。
まず、復号装置６は、データ要求送信手段６４によって、ユーザＩＤを含んだデータ要求を、データ管理装置５に送信する（ステップＳ６０）。
そして、データ管理装置５は、データ要求受信手段５２によって、復号装置６から、暗号化データの要求（データ要求）を受信する（ステップＳ６１）。
【０１９３】
その後、データ管理装置５は、データ検索手段５３によって、データ要求に含まれているユーザＩＤを検索キーとして、暗号化データ記憶手段５１に記憶されている複数のＩＤ・ポリシー・証明書付き暗号化データの中から、ユーザＩＤが一致するＩＤ・ポリシー・証明書付き暗号化データを検索する（ステップＳ６２）。
そして、データ管理装置５は、データ送信手段５４によって、ステップＳ６２で検索されたＩＤ・ポリシー・証明書付き暗号化データを、当該データを要求した復号装置６に送信する（ステップＳ６３）。
【０１９４】
一方、復号装置６は、データ受信手段６５によって、データ管理装置５から送信されたＩＤ・ポリシー・証明書付き暗号化データを受信する（ステップＳ６４）。
そして、復号装置６は、ポリシー分離手段６６１によって、ステップＳ６４で受信したＩＤ・ポリシー・証明書付き暗号化データからポリシーを分離する（ステップＳ６５）。
また、復号装置６は、属性付き秘密鍵分離手段６６０によって、属性付き秘密鍵記憶手段６３に記憶されている属性付き秘密鍵を、属性と秘密鍵とに分離する（ステップＳ６６）。
【０１９５】
そして、復号装置６は、ポリシー判定手段６６２によって、復号装置６に登録されているステップＳ６６で分離された属性が、暗号化データに関連付けられているステップＳ６５で分離されたポリシーを満たすか否かを判定する（ステップＳ６７）。
すなわち、ポリシー判定手段６６２は、アクセス行列Ａの行のインデックス｛１，２，…，ｍ｝の中から、写像ρ（ｉ）の値が属性Ｓに含まれるｉを集合Ｉとして選択する（前記式（２１）参照）。
そして、ポリシー判定手段６６２は、アクセス行列Ａの行ベクトルＡｉ（ｉ∈Ｉ）を用いて、Ｚｐに属する値ｗｉとして、アクセス行列Ａのｉ行目のベクトルＡｉ＝（Ａｉ，１  Ａｉ，２  …  Ａｉ，ｎ）との積の集合Ｉの要素数分の総和が（１，０，…，０）となるｗｉを求めることができるか否かにより、ポリシーを満たすか否かを判定する（前記式（２２）参照）。
ここで、属性がポリシーを満たさない場合（ステップＳ６７でＮｏ）、復号装置６は、復号動作を終了する。なお、この場合、復号装置６は、図示を省略した表示装置にエラーメッセージを表示することとしてもよい。
【０１９６】
一方、属性がポリシーを満たす場合（ステップＳ６７でＹｅｓ）、復号装置６は、証明書検証手段６６３によって、暗号化データに付与されている証明書を検証するための証明書検証データを生成する（ステップＳ６８）。なお、このステップＳ６８における証明書検証データ生成動作については、図１８を参照して後で詳細に説明する。
【０１９７】
さらに、復号装置６は、証明書検証手段６６３によって、証明書による検証が成功したか否かを判定する（ステップＳ６９）。このステップＳ６９では、ステップＳ６８で生成された証明書検証データと暗号化データに付与されている証明書とが一致する場合、検証が成功したと判定し、一致しない場合、検証に失敗したと判定する。
ここで、検証に失敗した場合（ステップＳ６９でＮｏ）、復号装置６は、復号動作を終了する。なお、この場合、復号装置６は、図示を省略した表示装置にエラーメッセージを表示することとしてもよい。
【０１９８】
一方、検証に成功した場合（ステップＳ６９でＹｅｓ）、復号装置６は、データ復号手段６６４によって、暗号化データを復号し（ステップＳ７０）、元データとして外部に出力する（ステップＳ７１）。なお、このステップＳ７０における暗号化データ復号動作については、図１９を参照して後で詳細に説明する。
以上の動作により、属性ベース暗号システムＳＡは、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定して暗号化された暗号化データを、属性に応じて復号することができる。
【０１９９】
（証明書検証データ生成動作）
次に、図１８を参照（構成については、適宜図７参照）して、図１７のステップＳ６８の動作（証明書検証データ生成動作）について詳細に説明する。
まず、復号装置６は、証明書検証手段６６３によって、公開鍵の一部である双線形写像ｅ（前記式（４）参照）、秘密鍵の各要素であるＫ、Ｌ、Ｋｘ（前記式（１０）参照）、暗号化データの要素Ｃ′，Ｃｉ，Ｄｉ（前記式（２０）参照）と、ステップＳ６７のポリシー判定時に求めたｗｉを用いて、前記式（２３）の演算を行う（ステップＳ６８０）。
そして、証明書検証手段６６３は、暗号化データの要素Ｃと、ステップＳ６８０の演算結果Ｂと、アクセス行列Ａの要素が“１”となるすべての位置を表す位置情報をハッシュ関数Ｈ″で演算したハッシュ値と、ユーザＩＤとを４つの引数とし、ハッシュ関数Ｈ′によるハッシュ値として証明書検証データπ′を生成する（ステップＳ６８１）。
【０２００】
（暗号化データ復号動作）
次に、図１９を参照（構成については、適宜図７参照）して、図１７のステップＳ７０の動作（暗号化データ復号動作）について詳細に説明する。
復号装置６は、データ復号手段６６４によって、前記式（２６）により、暗号化データを復号する（ステップＳ４３０）。
すなわち、データ復号手段６６４は、暗号化データの要素Ｃを、図１８のステップＳ６８２での演算結果Ｂで除することで、元データＭを復号する。
以上の動作により、データ復号手段６６４は、線形秘密分散法（ＬＳＳＳ）のアクセス行列によってポリシーを指定して暗号化されたデータを復号することができる。
【０２０１】
［属性ベース暗号システムの応用例］
次に、図２０を参照して、本発明の実施形態に係る属性ベース暗号システムの応用例について説明する。
図２０は、属性ベース暗号システムＳＡ（図１参照）を、個人情報を保護してサービスを提供する個人情報保護システムとして構成した例を示している。
ここで、個人情報とは、個人のプライバシー保護の対象となる情報であって、例えば、放送番組の視聴履歴、ユーザの嗜好等である。
【０２０２】
図２０に示す個人情報保護システムＳＢは、ユーザがサービス事業者の評価（信頼度等）をポリシーとして設定することで、そのポリシーを満たす属性のサービス事業者のみが、ユーザに対してサービスを提供することを可能にするシステムである。
ここでは、サービスとして、レコメンド情報（例えば、ユーザの放送番組の視聴履歴を分析した結果から得られるそのユーザにお勧めの番組案内等）を提供するサービスを一例に説明する。
【０２０３】
個人情報保護システムＳＢは、鍵生成装置１と、中間暗号化装置２と、クラウドサーバ３（委託暗号化装置４およびデータ管理装置５）と、復号装置６とを、ネットワーク（通信回線）Ｎを介して接続して構成している。
鍵生成装置１、中間暗号化装置２、クラウドサーバ３（委託暗号化装置４，データ管理装置５）および復号装置６は、それぞれ、図３〜図７で説明した各装置と同じものである。
【０２０４】
以下、個人情報保護システムＳＢの動作について説明する。
鍵生成装置１は、サービス事業者ごとに予め定めた評価を属性として、サービス事業者の復号装置６に送信する。
例えば、属性の属性種別を、「プライバシーマーク」と「ユーザ評価」とし、「プライバシーマーク」の属性値を「６：あり」、「７：なし」、「ユーザ評価」の属性値を「１」〜「５」の５段階とする。そして、鍵生成装置１は、あるサービス事業者Ａ，Ｂ，Ｃに対する属性ＳＡ，ＳＢ，ＳＣを、それぞれ以下のように設定して、サービス事業者Ａ，Ｂ，Ｃのそれぞれの復号装置６に送信する。
【０２０５】
ＳＡ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，５）｝
ＳＢ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，２）｝
ＳＣ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，３）｝
【０２０６】
なお、ここで、プライバシーマークは、個人情報について適切な保護措置を講ずる体制を整備している事業者等を認定するものとして一般的に用いられる属性である。すなわち、この属性値が「６：あり」であれば、そのサービス事業者は、個人情報について適切な保護措置を講ずる体制を整備している事業者ということになる。
また、ここで、ユーザ評価は、サービス事業者に対する評価（信頼度等）を示す属性種別であって、５段階（１〜５）の属性値（評価値）を有することとする。なお、この属性値は、その値が大きいほど、高評価であることを示す。
【０２０７】
中間暗号化装置２は、例えば、図示を省略したテレビ受信機等に備えられ、ユーザの視聴履歴等の個人情報を暗号化対象のデータとする。
また、中間暗号化装置２は、ユーザがサービスの提供を許可するサービス事業者の評価（評価値）をポリシーとして設定する。例えば、レコメンド情報の提供を許可するサービス事業者の評価を“５”とする場合、中間暗号化装置２は、ポリシーを（‘プライバシーマーク’＝６）ＡＮＤ（‘ユーザ評価’＝５）のように設定する。
そして、中間暗号化装置２は、個人情報を暗号化した証明書付き中間暗号化個人情報にユーザＩＤとポリシーとを関連付けて、委託暗号化装置４に送信する。
【０２０８】
委託暗号化装置４は、さらに暗号化を行い、ユーザＩＤ、ポリシー、証明書付き暗号化個人情報を、データ管理装置５に記憶する。
復号装置６は、例えば、図示を省略したサービス提供装置等に備えられ、データ管理装置５からユーザＩＤに対応するポリシー、証明書付き暗号化個人情報を取得する。このとき、復号装置６は、自身の属性がポリシーを満たす場合のみ、個人情報を復号することができる。
【０２０９】
例えば、前記のようにポリシーが（‘プライバシーマーク’＝６）ＡＮＤ（‘ユーザ評価’＝５）のとき、サービス事業者Ａの復号装置６は、自身に設定された属性が、前記ＳＡ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，５）｝であるので、個人情報を復号することができるが、サービス事業者Ｂの復号装置６は、自身に設定された属性が、前記ＳＢ＝｛（‘プライバシーマーク’，６），（‘ユーザ評価’，２）｝であるので、個人情報を復号することができない。
そして、サービス提供装置（不図示）は、復号装置６で復号された個人情報（視聴履歴等）を解析し、お勧め番組等のレコメンド情報をユーザのテレビ受信機（不図示）に送信する。
このように、ユーザは、希望するサービス事業者のみから、サービス（レコメンド情報）の提供を受けることができる。
【０２１０】
以上説明した個人情報保護システムＳＢによれば、中間暗号化装置２においてデータ（ここでは個人情報）を暗号化する際に、一部の暗号化処理をクラウドサーバ３の委託暗号化装置４が処理し、データ管理装置５に保存することにより、ユーザの中間暗号化装置２の負荷を抑え、膨大な個人情報をサービス事業者の属性に応じて適切にアクセス管理することが可能になる。また、サービス事業者は、自身に対する評価に応じて、これまでアクセスできなかった個人情報にアクセスすることができるようになるため、顧客の新規開拓が可能になる。
【符号の説明】
【０２１１】
ＳＡ    属性ベース暗号システム
ＳＢ    個人情報保護システム
１      鍵生成装置
１００  パラメータ入力手段
１０１  基本情報生成装置
１０２  公開鍵生成手段
１０３  マスタ鍵生成手段
１０４  公開鍵記憶手段
１０５  マスタ鍵記憶手段
１０６  公開鍵送信手段
１１０    属性入力手段
１１１  属性付き秘密鍵生成手段
１１１ａ  秘密鍵生成手段
１１１ｂ  属性関連付け手段
１１２    属性付き秘密鍵送信手段
１２０  ユーザＩＤ生成手段
１２１  ユーザＩＤ送信手段
２      中間暗号化装置
２０    データ入力手段
２１    ポリシー入力手段
２２    公開鍵受信手段
２３    公開鍵記憶手段
２４    ユーザＩＤ受信手段
２５    ユーザＩＤ記憶手段
２６    証明書付き中間暗号化データ生成手段
２６０  中間暗号化データ生成手段
２６１  証明書付与手段
２７    データ関連付け手段
２８    データ送信手段
３      クラウドサーバ
４      委託暗号化装置
４０    公開鍵受信手段
４１    公開鍵記憶手段
４２    データ受信手段
４３    データ分離手段
４４    暗号化データ生成手段
４５    データ関連付け手段
４６    データ送信手段
５      データ管理装置
５０    データ受信手段
５１    暗号化データ記憶手段
５２    データ要求受信手段
５３    データ検索手段
５４    データ送信手段
６      復号手段
６０    公開鍵受信手段
６１    公開鍵記憶手段
６２    属性付き秘密鍵受信手段
６３    属性付き秘密鍵記憶手段
６４    データ要求送信手段
６５    データ受信手段
６６    検証・復号手段
６６０  属性付き秘密鍵分離手段
６６１  ポリシー分離手段
６６２  ポリシー判定手段
６６３  証明書検証手段
６６４  データ復号手段
【図１】
0006700797.tif 000060
【図２】
0006700797.tif 000061
【図３】
0006700797.tif 000062
【図４】
0006700797.tif 000063
【図５】
0006700797.tif 000064
【図６】
0006700797.tif 000065
【図７】
0006700797.tif 000066
【図８】
0006700797.tif 000067
【図９】
0006700797.tif 000068
【図１０】
0006700797.tif 000069
【図１１】
0006700797.tif 000070
【図１２】
0006700797.tif 000071
【図１３】
0006700797.tif 000072
【図１４】
0006700797.tif 000073
【図１５】
0006700797.tif 000074
【図１６】
0006700797.tif 000075
【図１７】
0006700797.tif 000076
【図１８】
0006700797.tif 000077
【図１９】
0006700797.tif 000078
【図２０】
0006700797.tif 000079