(57)【要約】  グループでデータを共有している場合に、ユーザの役割や権限に応じて検索可能なデータを柔軟に制御することが可能な秘匿検索を実現することを目的とする。秘匿検索システム１００は、属性ベクトルと述語ベクトルとの内積が所定の値である場合に、属性ベクトルに基づき生成された暗号データと、述語ベクトルに基づき生成された復号鍵とについてペアリング演算を行うことにより、暗号データを復号可能な内積述語暗号処理を利用して秘匿検索を実現する。特に、秘匿検索システム１００は、属性ベクトルと述語ベクトルとの生成方法を工夫することにより、ユーザの役割や権限に応じて検索可能なデータを柔軟に制御することを可能にする。
2011086687.tif 000002
【特許請求の範囲】
【請求項１】
暗号化データを蓄積する暗号化データ蓄積装置と、前記暗号化データ蓄積装置に蓄積された暗号化データから所定の検索条件を満たす暗号化データを検索する検索装置とを備える秘匿検索システムであり、
前記暗号化データ蓄積装置は、
所定の基底Ｂを構成する基底ベクトルｂｉ（ｉ＝１，．．．，ｎ）（ｎは２以上の整数）の少なくとも一部の基底ベクトルに対して、検索可能な範囲を示す第１属性情報から生成された属性ベクトルの各要素が係数として設定された暗号ベクトルｃ１を含む暗号化データを記憶装置に蓄積する暗号化データ蓄積部を備え、
前記検索装置は、
所定の基底Ｂ＊を構成する基底ベクトルｂ*ｉ（ｉ＝１，．．．，ｎ）の一部の基底ベクトルに対して、ユーザの属性を示す第２属性情報から生成された第１述語ベクトルの各要素が前記係数として設定された鍵ベクトルｋ＊Ｌ，０を記憶装置に記憶するユーザ秘密鍵記憶部と、
前記ユーザ秘密鍵記憶部が記憶した鍵ベクトルｋ＊Ｌ，０において前記第１述語ベクトルの要素が設定されていない所定の基底ベクトルに対して、前記所定の検索条件を示す第３属性情報から生成された第２述語ベクトルの各要素が前記係数として設定された検索条件ベクトルＳＶを生成し、生成した前記検索条件ベクトルＳＶを前記鍵ベクトルｋ＊Ｌ，０に加算してできるベクトルをトラップドアＸとして処理装置により生成するトラップドア生成部と、
前記トラップドア生成部が生成したトラップドアＸを前記暗号化データ蓄積装置へ通信装置を介して送信するデータ送信部とを備え、
前記暗号化データ蓄積装置は、さらに、
前記暗号化データ蓄積部が蓄積した暗号化データに含まれる暗号ベクトルｃ１と前記データ送信部が送信したトラップドアＸとを用いて処理装置により所定の演算を行い、前記所定の演算によって得られた結果に基づき、前記暗号化データが前記検索条件を満たすか否かを判定して、前記暗号化データ蓄積部が蓄積した暗号化データから前記検索条件を満たす暗号化データを検索する検索実行部と
を備えることを特徴とする秘匿検索システム。
【請求項２】
前記暗号化データ蓄積部は、前記基底Ｂを構成する基底ベクトルｂｉ（ｉ＝１，．．．，ｎ，．．．，Ｎ）（Ｎはｎ＋１以上の整数）のうち基底ベクトルｂｉ（ｉ＝１，．．．，ｎ）の少なくとも一部の基底ベクトルに対して、前記属性ベクトルの各要素が係数として設定されるとともに、基底ベクトルｂｎ＋１に対して情報ρが係数として設定された暗号ベクトルｃ１と、前記情報ρから計算される共通鍵Ｋにより平文情報ｍが所定の暗号方式で暗号化された暗号文ｃ２とを含む暗号化データを蓄積し、
前記ユーザ秘密鍵記憶部は、所定の基底Ｂ＊を構成する基底ベクトルｂ*ｉ（ｉ＝１，．．．，ｎ，．．．，Ｎ）のうち基底ベクトルｂ*ｉ（ｉ＝１，．．．，ｎ）の一部の基底ベクトルに対して、前記第１述語ベクトルの各要素が前記係数として設定された鍵ベクトルｋ＊Ｌ，０を記憶し、
前記検索装置は、さらに、
基底ベクトルｂ＊ｎ＋１に対して所定の値が係数として設定されたベクトルを前記鍵ベクトルｋ＊Ｌ，０に加算してできるベクトルを復号鍵として生成し、前記検索実行部が検索した暗号化データに含まれる暗号ベクトルｃ１と生成した復号鍵とを用いて処理装置により前記所定の演算を行うことにより、前記暗号ベクトルｃ１を復号して共通鍵Ｋを取得する共通鍵取得部と、
前記共通鍵取得部が取得した共通鍵Ｋを用いて、前記暗号化データに含まれる暗号文ｃ２を処理装置により復号して、平文情報ｍを取得するデータ復号部と
を備えることを特徴とする請求項１に記載の秘匿検索システム。
【請求項３】
前記検索装置は、さらに、
前記鍵ベクトルｋ＊Ｌ，０において、基底ベクトルｂ*ｉ（ｉ＝１，．．．，ｎ）のうち前記述語ベクトルの各要素が設定されていない基底ベクトルに対して所定の値を係数として設定して、前記鍵ベクトルｋ＊Ｌ，０よりも検索可能な範囲及び復号可能な範囲が限定された下位の鍵ベクトルｋ＊Ｌ＋１，０を処理装置により生成する委譲ユーザ秘密鍵生成部
を備えることを特徴とする請求項１に記載の秘匿検索システム。
【請求項４】
前記秘匿検索システムは、さらに、鍵生成装置を備え、
前記鍵生成装置は、
ｉ＝１，．．．，ｎのうち、述語ベクトルの要素ｖｉに値０又は固定値のみが設定される固定要素を示すｉについて、基底ベクトルｂ*ｉに対して前記固定値が係数として設定された部分鍵ベクトルｐｋ＊Ｌ，０を処理装置により生成する部分ユーザ秘密鍵生成部と、
ｉ＝１，．．．，ｎのうち、述語ベクトルの要素ｖｉに属性情報に応じて変化する値が設定される変化要素を示すｉについて、基底ベクトルｂ*ｉに対してユーザの属性を示す属性情報から生成された述語ベクトルの要素ｖｉが係数として設定された第１ベクトルと、前記固定要素を示すｉのうち、前記ユーザの属性を示す属性情報から生成された述語ベクトルの要素ｖｉに値０が設定されたｉについて、基底ベクトルｂ*ｉに対して前記固定値が係数として設定された第２ベクトルとを含むグループ証明書を処理装置により生成するグループ証明書生成部とを備え、
前記検索装置は、さらに、
前記部分ユーザ秘密鍵生成部が生成した部分鍵ベクトルｐｋ＊Ｌ，０に、前記グループ証明書生成部が生成したグループ証明書に含まれる第１ベクトルを加算するとともに、前記グループ証明書に含まれる第２ベクトルを減算して鍵ベクトルｋ＊Ｌ，０を処理装置により生成するユーザ秘密鍵再構成部を備え、
前記ユーザ秘密鍵記憶部は、前記ユーザ秘密鍵再構成部が生成した鍵ベクトルｋ＊Ｌ，０を記憶する
ことを特徴とする請求項１に記載の秘匿検索システム。
【請求項５】
前記グループ証明書生成部は、ユーザの属性に変更があった場合に、変更後のユーザの属性を示す属性情報から生成された述語ベクトルに基づき、前記第１ベクトルと前記第２ベクトルとを含む新たなグループ証明書を生成し、
前記ユーザ秘密鍵再構成部は、前記部分鍵ベクトルｐｋ＊Ｌ，０に、前記新たなグループ証明書に含まれる第１ベクトルを加算するとともに、前記新たなグループ証明書に含まれる第２ベクトルを減算して新たな鍵ベクトルｋ＊Ｌ，０を生成する
ことを特徴とする請求項４に記載の秘匿検索システム。
【請求項６】
前記暗号化データ蓄積部は、数１に示す暗号ベクトルｃ１を含む暗号化データを蓄積し、
前記ユーザ秘密鍵記憶部は、数２に示す鍵ベクトルｋ＊Ｌ，０を記憶し、
前記トラップドア生成部は、数３に示すトラップドアＸを生成し、
前記検索実行部は、前記所定の演算である数４に示すペアリング演算ｅ（ｃ１，Ｘ）を実行する
ことを特徴とする請求項２に記載の秘匿検索システム。
【数１】
2011086687.tif 000026
【数２】
2011086687.tif 000027
【数３】
2011086687.tif 000028
【数４】
2011086687.tif 000029
【請求項７】
前記ユーザ秘密鍵記憶部は、前記鍵ベクトルｋ＊Ｌ，０と、数５に示す鍵生成用ベクトルｋ＊Ｌ，ｈとを含むユーザ秘密鍵ｋ＊Ｌを記憶し、
前記検索装置は、さらに、
前記鍵ベクトルｋ＊Ｌ，０よりも検索範囲や復号可能な範囲が限定された下位の鍵ベクトルｋ＊Ｌ＋１，０であって、数６に示す下位の鍵ベクトルｋ＊Ｌ＋１，０を処理装置により生成する委譲ユーザ秘密鍵生成部
を備えることを特徴とする請求項６に記載の秘匿検索システム。
【数５】
2011086687.tif 000030
【数６】
2011086687.tif 000031
【請求項８】
前記秘匿検索システムは、さらに、鍵生成装置を備え、
前記鍵生成装置は、
数７に示す部分鍵ベクトルｐｋ＊Ｌ，０を処理装置により生成する部分ユーザ秘密鍵生成部と、
数８に示すグループ証明書ｃｅｒｔ＊Ｌ，０を処理装置により生成するグループ証明書生成部とを備え、
前記検索装置は、さらに、
前記部分ユーザ秘密鍵生成部が生成した部分鍵ベクトルｐｋ＊Ｌ，０と、前記グループ証明書生成部が生成したグループ証明書ｃｅｒｔ＊Ｌ，０とに基づき、数９に示す鍵ベクトルｋ＊Ｌ，０を処理装置により生成するユーザ秘密鍵再構成部を備え、
前記ユーザ秘密鍵記憶部は、前記ユーザ秘密鍵再構成部が生成した鍵ベクトルｋ＊Ｌ，０を記憶する
ことを特徴とする請求項２に記載の秘匿検索システム。
【数７】
2011086687.tif 000032
【数８】
2011086687.tif 000033
【数９】
2011086687.tif 000034
【請求項９】
前記秘匿検索システムは、さらに、鍵生成装置を備え、
前記鍵生成装置は、
数１０に示す中間秘密鍵ｋ＊Ｌ−１を記憶装置に記憶する鍵記憶部と、
前記鍵記憶部が記憶した中間秘密鍵ｋ＊Ｌ−１に基づき、数１１に示す部分鍵ベクトルｐｋ＊Ｌ，０を処理装置により生成する部分ユーザ秘密鍵生成部と、
数１２に示すグループ証明書ｃｅｒｔ＊Ｌ，０を生成するグループ証明書生成部とを備え、
前記検索装置は、さらに、
数１３に示す鍵ベクトルｋ＊Ｌ，０を処理装置により生成するユーザ秘密鍵再構成部を備え、
前記ユーザ秘密鍵記憶部は、前記ユーザ秘密鍵再構成部が生成した鍵ベクトルｋ＊Ｌ，０を記憶する
ことを特徴とする請求項２に記載の秘匿検索システム。
【数１０】
2011086687.tif 000035
【数１１】
2011086687.tif 000036
【数１２】
2011086687.tif 000037
【数１３】
2011086687.tif 000038
【請求項１０】
属性ベクトルと述語ベクトルとの内積が所定の値である場合に、前記属性ベクトルに基づき生成された暗号ベクトルｃ１と、前記述語ベクトルに基づき生成された復号鍵とを用いて所定の演算を行うことにより前記暗号ベクトルｃ１を復号可能な述語暗号処理を行う暗号処理システムであって、鍵生成装置と復号装置とを備える暗号処理システムであり、
前記鍵生成装置は、
ｉ＝１，．．．，ｎ（ｎは２以上の整数）のうち、述語ベクトルの要素ｖｉに値０又は固定値のみが設定される固定要素を示すｉについて、所定の基底Ｂ＊を構成する基底ベクトルｂ＊ｉ（ｉ＝１，．．．，ｎ）の基底ベクトルｂ*ｉに対して前記固定値が係数として設定された部分鍵ベクトルｐｋ＊Ｌ，０を処理装置により生成する部分ユーザ秘密鍵生成部と、
ｉ＝１，．．．，ｎのうち、述語ベクトルの要素ｖｉに属性情報に応じて変化する値が設定される変化要素を示すｉについて、前記所定の基底Ｂ＊を構成する基底ベクトルｂ*ｉに対してユーザの属性に基づき生成された述語ベクトルの要素ｖｉが係数として設定された第１ベクトルと、前記固定要素を示すｉのうち、前記ユーザの属性に基づき生成された述語ベクトルの要素ｖｉに値０が設定されたｉについて、基底ベクトルｂ*ｉに対して前記固定値が係数として設定された第２ベクトルとを含むグループ証明書を処理装置により生成するグループ証明書生成部とを備え、
前記検索装置は、
前記部分ユーザ秘密鍵生成部が生成した部分鍵ベクトルｐｋ＊Ｌ，０に、前記グループ証明書生成部が生成したグループ証明書に含まれる第１ベクトルを加算するとともに、前記グループ証明書に含まれる第２ベクトルを減算して鍵ベクトルｋ＊Ｌ，０を処理装置により生成するユーザ秘密鍵再構成部と、
暗号ベクトルｃ１と、前記ユーザ秘密鍵再構成部が生成した鍵ベクトルｋ＊Ｌ，０に基づき生成される前記復号鍵とを用いて処理装置により前記所定の演算を行うことにより、前記暗号ベクトルｃ１を復号する復号部と
を備えることを特徴とする暗号処理システム。
【請求項１１】
前記グループ証明書生成部は、ユーザの属性に変更があった場合に、変更後のユーザの属性を示す属性情報から生成された述語ベクトルに基づき、新たなグループ証明書を生成し、
前記ユーザ秘密鍵再構成部は、前記部分鍵ベクトルｐｋ＊Ｌ，０に、前記新たなグループ証明書に含まれる第１ベクトルを加算するとともに、前記新たなグループ証明書に含まれる第２ベクトルを減算して新たな鍵ベクトルｋ＊Ｌ，０を生成する
ことを特徴とする請求項１０に記載の暗号処理システム。
【請求項１２】
属性ベクトルと述語ベクトルとの内積が所定の値である場合に、前記属性ベクトルに基づき生成された暗号文と、前記述語ベクトルに基づき生成された復号鍵とを用いて所定の演算を行うことにより、前記暗号文を復号可能な述語暗号処理を行う暗号処理システムであって、暗号文を生成する暗号化装置と、前記暗号化装置が生成する暗号文を復号する復号装置とを備える暗号処理システムであり、
前記暗号化装置は、
複数の属性項目の各属性項目が割り当てられた符号化列の各項目に、暗号文を復号可能なユーザを限定する属性情報であって、その項目に割り当てられた属性項目に対応する属性情報を設定するとともに、前記属性情報を設定しない符号化列の項目には所定の情報＊を設定して第１符号化情報を処理装置により生成する第１符号化情報生成部と、
前記第１符号化情報生成部が生成した第１符号化情報から、属性ベクトルの各要素を処理装置により生成する属性ベクトル生成部であって、前記第１符号化情報のうち前記所定の情報＊が設定された項目に対応する属性ベクトルの要素を値０にする属性ベクトル生成部と、
前記属性ベクトル設定部が生成した属性ベクトルの要素に基づき、暗号文を処理装置により生成する暗号化データ生成部とを備え、
前記復号装置は、
復号鍵を使用するユーザの属性を示す属性情報が割り当てられた述語ベクトルに基づき生成された復号鍵を記憶装置に記憶する鍵記憶部と、
前記暗号化装置の前記暗号化データ生成部が生成した暗号文と、前記鍵記憶部が記憶した復号鍵とを用いて処理装置により前記所定の演算を行うことにより、前記暗号文を復号する復号部と
を備えることを特徴とする暗号処理システム。
【請求項１３】
前記暗号処理システムは、さらに、前記復号鍵の元になるユーザ秘密鍵を生成する鍵生成装置を備え、
前記鍵生成装置は、
前記符号化列の各項目に、復号鍵を使用するユーザの属性を示す属性情報であって、その項目に割り当てられた属性項目に対応する属性情報を設定するとともに、前記属性情報を設定しない符号化列の項目には所定の情報＊を設定して第２符号化情報を処理装置により生成する第２符号化情報生成部と、
前記第２符号化情報生成部が生成した第２符号化情報から、述語ベクトルの各要素を処理装置により生成する述語ベクトル生成部であって、前記第２符号化情報のうち前記所定の情報＊が設定された項目に対応する述語ベクトルの要素を値０にする述語ベクトル生成部と、
前記述語ベクトル生成部が生成した述語ベクトルの要素に基づき、ユーザ秘密鍵を処理装置により生成するユーザ秘密鍵生成部とを備え、
前記復号装置の前記鍵記憶部は、前記鍵生成装置の前記ユーザ秘密鍵生成部が生成したユーザ秘密鍵に基づき生成された復号鍵を記憶する
ことを特徴とする請求項１２に記載の暗号処理システム。
【請求項１４】
前記符号化列の所定の項目ｔ１，．．．，ｔｍ（ｍ≧２）に設定された前記第１符号化情報ａ１，．．．，ａｍと、前記符号化列の前記所定の項目ｔ１，．．．，ｔｍに設定された前記第２符号化情報ｂ１，．．．，ｂｍとが、ｉ＝１，．．．，ｍの全てのｉについてｂｉ＝ａｉとなる場合に限って、前記属性ベクトルと前記述語ベクトルとの内積を前記所定の値とする場合おいて、
前記属性ベクトル生成部は、前記第１符号化情報ａ１，．．．，ａｍに対応する属性ベクトルの要素として、１，−ａ１，．．．，１，−ａｍ又は１，ａ１，．．．，１，ａｍを生成するとともに、前記第１符号化情報ａ１，．．．，ａｍに所定の情報＊が設定された項目が含まれる場合には、その項目に対応する属性ベクトルの要素として、０，０を生成し、
前記述語ベクトル生成部は、前記第２符号化情報ｂ１，．．．，ｂｍに対応する属性ベクトルの要素として、前記属性ベクトル生成部が１，−ａ１，．．．，１，−ａｍを生成した場合にはｂ１，１，．．．，ｂｍ，１を生成し、前記属性ベクトル生成部が１，ａ１，．．．，１，ａｍを生成した場合には−ｂ１，１，．．．，−ｂｍ，１を生成するとともに、前記第２符号化情報ｂ１，．．．，ｂｍに所定の情報＊が設定された項目が含まれる場合には、その項目に対応する属性ベクトルの要素として、０，０を生成する
ことを特徴とする請求項１３に記載の暗号処理システム。
【請求項１５】
属性ベクトルと述語ベクトルとの内積が所定の値である場合に、前記属性ベクトルに基づき生成された暗号文と、前記述語ベクトルに基づき生成された復号鍵とを用いて所定の演算を行うことにより、前記暗号文を復号可能な述語暗号処理を行う暗号処理システムであって、暗号文を生成する暗号化装置と、前記復号鍵を生成する鍵生成装置と、前記暗号化装置が生成する暗号文を前記鍵生成装置が生成する復号鍵で復号する復号装置とを備える暗号処理システムであり、
前記暗号化装置は、
複数の属性の各属性が割り当てられた符号化列の項目ｔ１，．．．，ｔｍ（ｍ≧２）のうち、暗号文を復号可能なユーザの属性に該当する属性が割り当てられた項目には該当することを示す該当値を設定するとともに、前記該当値を設定しない符号化列の項目には乱数Ｒを設定して第１符号化情報ａ１，．．．，ａｍを処理装置により生成する第１符号化情報生成部と、
前記第１符号化情報生成部が生成した第１符号化情報ａ１，．．．，ａｍから、属性ベクトルの要素ｘ１，．．．，ｘｎを処理装置により生成する属性ベクトル生成部と、
前記属性ベクトル設定部が生成した属性ベクトルの要素ｘ１，．．．，ｘｎに基づき、暗号文を処理装置により生成する暗号化データ生成部とを備え、
前記鍵生成装置は、
符号化列の前記各項目ｔ１，．．．，ｔｍのうち、復号鍵を使用するユーザの属性に該当する属性が割り当てられた項目には前記該当値を設定するとともに、前記該当値を設定しない符号化列の項目には所定の情報＊を設定して第２符号化情報ｂ１，．．．，ｂｍを処理装置により生成する第２符号化情報生成部と、
前記第２符号化情報生成部が生成した第２符号化情報ｂ１，．．．，ｂｍから、述語ベクトルの要素ｖ１，．．．，ｖｎを処理装置により生成する述語ベクトル生成部であって、前記第２符号化情報ｂ１，．．．，ｂｍのうち前記所定の情報＊が設定された項目に対応する述語ベクトルの要素を値０として生成する述語ベクトル生成部と、
前記述語ベクトル生成部が生成した述語ベクトルの要素ｖ１，．．．，ｖｎに基づき、前記ユーザ秘密鍵を処理装置により生成するユーザ秘密鍵生成部とを備え、
前記復号装置は、
前記暗号化装置の前記暗号化データ生成部が生成した暗号文と、前記鍵生成装置の前記ユーザ秘密鍵生成部が生成したユーザ秘密鍵に基づく復号鍵とを用いて処理装置により前記所定の演算を行うことにより、前記暗号文を復号する復号部
を備えることを特徴とする暗号処理システム。
【請求項１６】
前記属性ベクトル生成部は、前記第１符号化情報ａ１，．．．，ａｍに対応する属性ベクトルの要素として、１，−ａ１，．．．，１，−ａｍ又は１，ａ１，．．．，１，ａｍを生成し、
前記述語ベクトル生成部は、前記第２符号化情報ｂ１，．．．，ｂｍに対応する属性ベクトルの要素として、前記属性ベクトル生成部が１，−ａ１，．．．，１，−ａｍを生成した場合にはｂ１，１，．．．，ｂｍ，１を生成し、前記属性ベクトル生成部が１，ａ１，．．．，１，ａｍを生成した場合には−ｂ１，１，．．．，−ｂｍ，１を生成するとともに、前記第２符号化情報ｂ１，．．．，ｂｍに所定の情報＊が設定された項目が含まれる場合には、その第２符号化情報に対応する属性ベクトルの要素として、０，０を生成する
ことを特徴とする請求項１５に記載の暗号処理システム。
【請求項１７】
属性ベクトルと述語ベクトルとの内積が所定の値である場合に、前記属性ベクトルに基づき生成された暗号文と、前記述語ベクトルに基づき生成された復号鍵とを用いて所定の演算を行うことにより、前記暗号文を復号可能な述語暗号処理を行う暗号処理システムであって、暗号文を生成する暗号化装置と、前記復号鍵を生成する鍵生成装置と、前記暗号化装置が生成する暗号文を前記鍵生成装置が生成する復号鍵で復号する復号装置とを備える暗号処理システムであり、
前記暗号化装置は、
複数の属性の各属性が割り当てられた符号化列の項目ｔ１，．．．，ｔｍ（ｍ≧２）のうち、暗号文を復号可能なユーザの属性に該当する属性が割り当てられた項目には該当することを示す該当値を設定するとともに、前記該当値を設定しない符号化列の項目には乱数Ｒを設定して第１符号化情報ａ１，．．．，ａｍを処理装置により生成する第１符号化情報生成部と、
前記第１符号化情報生成部が生成した第１符号化情報ａ１，．．．，ａｍから、属性ベクトルの要素ｘ１，．．．，ｘｎを処理装置により生成する属性ベクトル生成部と、
前記属性ベクトル設定部が生成した属性ベクトルの要素ｘ１，．．．，ｘｎに基づき、暗号文を処理装置により生成する暗号化データ生成部とを備え、
前記鍵生成装置は、
符号化列の前記各項目ｔ１，．．．，ｔｍのうち、復号鍵を使用するユーザの属性に該当する属性情報が割り当てられた項目には前記該当値を設定するとともに、前記該当値を設定しない符号化列の項目には乱数Ｒを設定して第２符号化情報ｂ１，．．．，ｂｍを処理装置により生成する第２符号化情報生成部と、
前記第２符号化情報生成部が生成した第２符号化情報ｂ１，．．．，ｂｍから、述語ベクトルの要素ｖ１，．．．，ｖｎを処理装置により生成する述語ベクトル生成部と、
前記述語ベクトル生成部が生成した述語ベクトルの要素ｖ１，．．．，ｖｎに基づき、前記ユーザ秘密鍵を生成するユーザ秘密鍵生成部とを備え、
前記復号装置は、
前記暗号化装置の前記暗号化データ生成部が生成した暗号文と、前記鍵生成装置の前記ユーザ秘密鍵生成部が生成したユーザ秘密鍵に基づく復号鍵とを用いて処理装置により前記所定の演算を行うことにより、前記暗号文を復号する復号部
を備えることを特徴とする暗号処理システム。
【請求項１８】
前記属性ベクトル生成部は、前記第１符号化情報ａ１，．．．，ａｍに対応する属性ベクトルの要素として、（ｂ１−ａ１）×．．．×（ｂｍ−ａｍ）を展開して得られる各項からａｉ（ｉ＝１，．．．，ｍ）に関する値を生成し、
前記述語ベクトル生成部は、前記第２符号化情報ｂ１，．．．，ｂｍに対応する属性ベクトルの要素として、（ｂ１−ａ１）×．．．×（ｂｍ−ａｍ）を展開して得られる各項からｂｉ（ｉ＝１，．．．，ｍ）に関する値を生成する
ことを特徴とする請求項１７に記載の暗号処理システム。
【請求項１９】
属性ベクトルと述語ベクトルとの内積が所定の値である場合に、前記属性ベクトルに基づき生成された暗号文と、前記述語ベクトルに基づき生成された復号鍵とを用いて所定の演算を行うことにより、前記暗号文を復号可能な述語暗号処理を行う暗号処理システムであって、暗号文を生成する暗号化装置と、前記暗号化装置が生成する暗号文を復号する復号装置とを備える暗号処理システムであり、
前記暗号化装置は、
開始年月を設定する開始年月符号化列であって、開始年を設定する開始年設定列と、各月の情報を設定する１２個の開始月設定列とを有する開始年月符号化列と、終了年月を設定する終了年月符号化列であって、終了年を設定する終了年設定列と、各月の情報を設定する１２個の終了月設定列とを有する終了年月符号化列と、前記開始年月と前記終了年月との間の年を設定する中間年符号化列とを有する期間情報符号化列に、暗号文の設定年月を設定して第１符号化情報を処理装置により生成する第１符号化情報生成部であって、暗号化されるデータの作成年を前記開始年設定列と前記終了年設定列と前記中間年設定列とに設定するとともに、前記データの作成月を前記開始月設定列と前記終了月設定列とに設定する第１符号化情報生成部と、
前記第１符号化情報生成部が生成した第１符号化情報から、属性ベクトルの各要素を処理装置により生成する属性ベクトル生成部と、
前記属性ベクトル設定部が生成した属性ベクトルの要素に基づき、前記データを暗号化して暗号文を処理装置により生成する暗号化データ生成部とを備え、
前記鍵生成装置は、
前記期間情報符号化列に、復号鍵を使用するユーザが復号可能な年月が割り当てられた第２符号化情報を処理装置により生成する第２符号化情報生成部であって、前記復号可能な年月の開始年を前記開始年設定列に設定するとともに、開始月を前記開始月設定列に設定し、前記復号可能な年月の終了年を前記終了年設定列に設定するとともに、終了月を前記終了月設定列に設定し、前記復号可能な年月の開始年と終了年との間の年を前記中間年設定列に設定する第２符号化情報生成部と、
前記第２符号化情報生成部が生成した第２符号化情報から、述語ベクトルの各要素を処理装置により生成する述語ベクトル生成部と、
前記述語ベクトル生成部が生成した述語ベクトルに基づき、前記ユーザ秘密鍵を処理装置により生成するユーザ秘密鍵生成部とを備え、
前記復号装置は、
前記暗号化装置の前記暗号化データ生成部が生成した暗号文と、前記鍵生成装置の前記ユーザ秘密鍵生成部が生成したユーザ秘密鍵に基づく復号鍵とを用いて処理装置により前記所定の演算を行うことにより、前記暗号文を復号する復号部
を備えることを特徴とする暗号処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内積述語暗号、及び内積述語暗号を用い、情報を暗号化した状態で検索する秘匿検索に関する。
【背景技術】
【０００２】
近年では、データの機密を守るため、ハードディスクなどの記録媒体にデータを保管する際、そのデータの管理者であるユーザの共通鍵でデータの暗号化を行うことが一般的になりつつある。この場合、ユーザは自分の共通鍵で暗号化データを復号し、データを利用することが可能となる。
例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）社のＷｉｎｄｏｗｓ（登録商標）では、ＥＦＳと呼ばれる暗号化ファイルシステムが実現されている。この暗号化ファイルシステムでは、ログイン名と関連付けてＷｉｎｄｏｗｓ（登録商標）にて管理されている共通鍵を用いて、ハードディスクに記憶されたファイル（データ）が暗号化される。【０００３】
しかし、暗号化データは復号しなければ内容が分からないため、データに所定のキーワードが含まれるかどうかを検索しようとすると、一度全てのデータを復号しなければならないという弱点がある。
例えば、企業内では機密情報をファイルサーバで一括管理することが一般的になりつつある。ここで、そのサーバに記憶されたデータが暗号化されていると仮定する。この場合、サーバに記憶された全ての暗号化データを端末側にダウンロードし、さらに復号した後に、キーワード検索を行う必要が生ずる。そのため、通信路によっては極めて時間がかかることや、他ユーザの通信にも遅延を生ずるなどの課題がある。【０００４】
これらの課題を解決する方法として、暗号化データを復号することなく、暗号化されたままの状態でキーワード検索を可能にした秘匿検索と呼ばれる技術がある。
特許文献１、非特許文献３には、暗号化データにタグと呼ばれる情報を付加することで、暗号化されたデータを復号することなく、キーワードの検索ができるようにする秘匿検索方式についての記載がある。【０００５】
非特許文献３に記載された秘匿検索では、任意のユーザがユーザＡ宛にデータを暗号化する際、ユーザＡの公開鍵を用いてキーワードを暗号化してタグを生成し、暗号化データに添付してサーバに保管する。この方式では、暗号化データの検索を実施できるのは、キーワードの暗号化に使用した公開鍵に対応する秘密鍵を持つユーザＡのみである。【０００６】
非特許文献３に記載された秘匿検索が公開鍵暗号に基づいて実現されていたのに対して、特許文献１に記載された秘匿検索は、シーザ暗号などの共通鍵暗号に基づいて実現されたものである。そのため、共通鍵を知るユーザのみがデータを暗号化（タグを生成）することができ、かつ、検索することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−２７８９７０号公報
【特許文献２】特開２００８−１７６０４０号公報
【特許文献３】特開２００８−２８８８３７号公報
【非特許文献】
【０００８】
【非特許文献１】Ｔ．Ｏｋａｍｏｔｏ、Ｋ．Ｔａｋａｓｈｉｍａ、“Ｈｏｍｏｍｏｒｐｈｉｃ  ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  ｓｉｇｎａｔｕｒｅｓ  ｆｒｏｍ  ｖｅｃｔｏｒ  ｄｅｃｏｍｐｏｓｉｔｉｏｎ”、Ｐａｉｒｉｎｇ  ２００８、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．５２０９、２００８．
【非特許文献２】Ｔ．Ｏｋａｍｏｔｏ、Ｋ．Ｔａｋａｓｈｉｍａ、“Ｈｉｅｒａｒｃｈｉｃａｌ  Ｐｒｅｄｉｃａｔｅ  Ｅｎｃｒｙｐｔｉｏｎ  ｆｏｒ  Ｉｎｎｅｒ−Ｐｒｏｄｕｃｔｓ”、ＡＳＩＡＣＲＹＰＴ  ２００９、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．５９１２、２００９．
【非特許文献３】Ｄ．Ｂｏｎｅｈ、Ｇ．Ｄ．Ｃｒｅｓｃｅｎｚｏ、Ｒ．Ｏｓｔｒｏｖｓｋｙ、Ｇ．Ｐｅｒｓｉａｎｏ、“Ｐｕｂｌｉｃ  Ｋｅｙ  Ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  Ｋｅｙｗｏｒｄ  Ｓｅａｒｃｈ”、ＥＵＲＯＣＲＹＰＴ  ２００４、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．３０２７、２００４．
【非特許文献４】Ｊ．Ｋａｔｚ、Ａ．Ｓａｈａｉ、Ｂ．Ｗａｔｅｒｓ、“Ｐｒｅｄｉｃａｔｅ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｕｐｐｏｒｔｉｎｇ  Ｄｉｓｊｕｎｃｔｉｏｎｓ，Ｐｏｌｙｎｏｍｉａｌ  Ｅｑｕａｔｉｏｎｓ，ａｎｄ  Ｉｎｎｅｒ  Ｐｒｏｄｕｃｔｓ”、ＥＵＲＯＣＲＹＰＴ  ２００８、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．４９６５、２００８．
【非特許文献５】Ｈ．Ａ．Ｐａｒｋ、Ｊ．Ｗ．Ｂｙｕｎ、Ｄ．Ｈ．Ｌｅｅ、“Ｓｅｃｕｒｅ  Ｉｎｄｅｘ  Ｓｅａｒｃｈ  ｆｏｒ  Ｇｒｏｕｐｓ”、ＴｒｕｓｔＢｕｓ  ２００５、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．３５９２、２００５．
【非特許文献６】Ｐ．Ｗａｎｇ、Ｈ．Ｗａｎｇ、Ｊ．Ｐｉｅｐｒｚｙｋ、“Ｋｅｙｗｏｒｄ  Ｆｉｅｌｄ−Ｆｒｅｅ  Ｃｏｎｊｕｎｃｔｉｖｅ  Ｋｅｙｗｏｒｄ  Ｓｅａｒｃｈｅｓ  ｏｎ  Ｅｎｃｒｙｐｔｅｄ  Ｄａｔａ  ａｎｄ  Ｅｘｔｅｎｓｉｏｎ  ｆｏｒ  Ｄｙｎａｍｉｃ  Ｇｒｏｕｐｓ”、ＣＡＮＳ  ２００８、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ、Ｖｏｌ．５３３９、２００８．
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来の秘匿検索では、グループでデータを共有している場合に、ユーザの役割や権限に応じて検索可能なデータを柔軟に制御することができない。
この発明は、グループでデータを共有している場合に、ユーザの役割や権限に応じて検索可能なデータを柔軟に制御することが可能な秘匿検索を実現することを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る秘匿検索システムは、
暗号化データを蓄積する暗号化データ蓄積装置と、前記暗号化データ蓄積装置に蓄積された暗号化データから所定の検索条件を満たす暗号化データを検索する検索装置とを備える秘匿検索システムであり、
前記暗号化データ蓄積装置は、
所定の基底Ｂを構成する基底ベクトルｂｉ（ｉ＝１，．．．，ｎ）（ｎは２以上の整数）の少なくとも一部の基底ベクトルに対して、検索可能な範囲を示す第１属性情報から生成された属性ベクトルの各要素が係数として設定された暗号ベクトルｃ１を含む暗号化データを記憶装置に蓄積する暗号化データ蓄積部を備え、
前記検索装置は、
所定の基底Ｂ＊を構成する基底ベクトルｂ*ｉ（ｉ＝１，．．．，ｎ）の一部の基底ベクトルに対して、ユーザの属性を示す第２属性情報から生成された第１述語ベクトルの各要素が前記係数として設定された鍵ベクトルｋ＊Ｌ，０を記憶装置に記憶するユーザ秘密鍵記憶部と、
前記ユーザ秘密鍵記憶部が記憶した鍵ベクトルｋ＊Ｌ，０において前記第１述語ベクトルの要素が設定されていない所定の基底ベクトルに対して、前記所定の検索条件を示す第３属性情報から生成された第２述語ベクトルの各要素が前記係数として設定された検索条件ベクトルＳＶを生成し、生成した前記検索条件ベクトルＳＶを前記鍵ベクトルｋ＊Ｌ，０に加算してできるベクトルをトラップドアＸとして処理装置により生成するトラップドア生成部と、
前記トラップドア生成部が生成したトラップドアＸを前記暗号化データ蓄積装置へ通信装置を介して送信するデータ送信部とを備え、
前記暗号化データ蓄積装置は、さらに、
前記暗号化データ蓄積部が蓄積した暗号化データに含まれる暗号ベクトルｃ１と前記データ送信部が送信したトラップドアＸとを用いて処理装置により所定の演算を行い、前記所定の演算によって得られた結果に基づき、前記暗号化データが前記検索条件を満たすか否かを判定して、前記暗号化データ蓄積部が蓄積した暗号化データから前記検索条件を満たす暗号化データを検索する検索実行部と
を備えることを特徴とする。
【発明の効果】
【００１１】
この発明に係る秘匿検索システムでは、検索可能なユーザの役割や権限に応じて属性ベクトルを設定するとともに、鍵ベクトルを使用するユーザの役割や権限に応じて述語ベクトルを設定することにより、グループでデータを共有している場合に、検索可能なデータを制御することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】秘匿検索システム１００の構成例を示す図。
【図２】鍵管理サーバ２０１の機能を示す機能ブロック図。
【図３】アクセス端末３０１の機能を示す機能ブロック図。
【図４】データセンタ４０１の機能を示す機能ブロック図。
【図５】一般的な内積述語暗号を用いた場合の暗号化データ３００１の構成例を示す図。
【図６】暗号化データＡに含まれる各データや、上記説明において登場した各データの関係を示す図。
【図７】非特許文献２に記載された内積述語暗号を用いた場合の暗号化データ３１０１の構成例を示す図。
【図８】暗号化データＢに含まれる各データや、上記説明において登場した各データの関係を示す図。
【図９】属性情報符号化列５０１の構成例を示す図。
【図１０】個人ＩＤ５０２の設定例を示す図。
【図１１】所属情報符号化列５０３の構成例を示す図。
【図１２】所属情報符号化列５０３の設定例を示す図。
【図１３】役職情報符号化列５０４の構成例を示す図。
【図１４】１番目の設定例における役職情報符号化列５０４の設定例を示す図。
【図１５】２番目の設定例における役職情報符号化列５０４の設定例を示す図。
【図１６】カテゴリ符号化列５０５の構成例を示す図。
【図１７】カテゴリ符号化列５０５の設定例を示す図。
【図１８】機密度符号化列５０６の構成例を示す図。
【図１９】１番目の設定例における機密度符号化列５０６の設定例を示す図。
【図２０】２番目の設定例における機密度符号化列５０６の設定例を示す図。
【図２１】雇用形態符号化列５０７の構成例を示す図。
【図２２】１番目の設定例における雇用形態符号化列５０７の設定例を示す図。
【図２３】２番目の設定例における雇用形態符号化列５０７の設定例を示す図。
【図２４】期間情報符号化列５０８の構成例１を示す図。
【図２５】構成例１の場合の１番目の設定例における期間情報符号化列５０８の設定例を示す図。
【図２６】構成例１の場合の２番目の設定例における期間情報符号化列５０８の設定例を示す図。
【図２７】期間情報符号化列５０８の構成例２を示す図。
【図２８】構成例２の場合の期間情報符号化列５０８の設定例を示す図。
【図２９】構成例２の場合の期間情報符号化列５０８の設定例を示す図。
【図３０】構成例２の場合の期間情報符号化列５０８の設定例を示す図。
【図３１】期間情報符号化列５０８の構成例３を示す図。
【図３２】期間情報符号化列５０８の構成例３の設定例を示す図。
【図３３】委譲先情報符号化列５０９の構成例を示す図。
【図３４】委譲先情報符号化列５０９の設定例を示す図。
【図３５】鍵用途フラグ５１０の設定例を示す図。
【図３６】検索語符号化列５１１の設定例１を示す図。
【図３７】検索語符号化列５１１の設定例２を示す図。
【図３８】属性情報符号化列５０１における符号化列をＡＮＤ判定で比較する場合についてのベクトル化方法の説明図。
【図３９】属性情報符号化列５０１における符号化列をＯＲ判定で比較する場合についてのベクトル化方法の説明図。
【図４０】属性情報符号化列５０１における符号化列を包含関係判定で比較する場合についてのベクトル化方法の説明図。
【図４１】（１）システム初期設定の処理の流れを示すフローチャート。
【図４２】（２）中間秘密鍵生成の処理の流れを示すフローチャート。
【図４３】（３）ユーザ秘密鍵生成の処理の流れを示すフローチャート。
【図４４】（４）暗号化データ生成の処理の流れを示すフローチャート。
【図４５】（５）キーワード検索の処理の流れを示すフローチャート。
【図４６】（６）委譲ユーザ秘密鍵生成の処理の流れを示すフローチャート。
【図４７】秘匿検索システム１００で使用する属性情報符号化列５０１の構造の一例を示す図。
【図４８】ＡＮＤ判定の場合の属性ＩＤであるＡＩＤの割り振り、及びインデックス番号ＢＩを割り振った例を示す図。
【図４９】ＡＮＤ判定の場合の属性ＩＤであるＡＩＤの割り振り、及びインデックス番号ＢＩを割り振った例を示す図。
【図５０】ＡＮＤ判定の場合の属性ＩＤであるＡＩＤの割り振り、及びインデックス番号ＢＩを割り振った例を示す図。
【図５１】ＯＲ判定の場合のＡＩＤの割り振り、及びインデックス番号ＢＩを割り振った例を示す図。
【図５２】ユーザ属性情報データベースの構成例を示す図。
【図５３】中間秘密鍵属性情報符号化列の例を示す図。
【図５４】ユーザ秘密鍵属性情報符号化列の例を示す図。
【図５５】暗号化データ属性情報符号化列の例を示す図。
【図５６】検索用属性情報符号化列の例を示す図。
【図５７】委譲ユーザ秘密鍵属性情報符号化列の例を示す図。
【図５８】実施の形態２に係る鍵管理サーバ２０１の機能を示す機能ブロック図。
【図５９】実施の形態２に係るアクセス端末３０１の機能を示す機能ブロック図。
【図６０】述語ベクトルから固定述語ベクトルと可変述語ベクトルとを生成する方式を示した図。
【図６１】（７）部分ユーザ秘密鍵生成の処理の流れを示すフローチャート。
【図６２】（８）グループ証明書生成の処理の流れを示すフローチャート。
【図６３】実施の形態２に係る秘匿検索システム１００の処理の流れを示すフローチャート。
【図６４】グループ証明書に関する属性情報符号化列５０１の例を示す図。
【図６５】グループ証明書に関する属性情報符号化列５０１の例を示す図。
【図６６】グループ証明書に関する属性情報符号化列５０１の例を示す図。
【図６７】グループ証明書に関する属性情報符号化列５０１の例を示す図。
【図６８】グループ証明書に関する属性情報符号化列５０１の例を示す図。
【図６９】鍵管理サーバ２０１、アクセス端末３０１、データセンタ４０１のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【００１３】
以下、図に基づき本発明の実施の形態について説明する。
なお、以下の説明において、数１０１は、Ａからｙを一様に選択することを表す。つまり、数１０１において、ｙは一様乱数である。
【数１０１】
2011086687.tif 000003
【００１４】
また、以下の説明において、処理装置は後述するＣＰＵ１９１１等である。記憶装置は後述するＲＯＭ１９１３、ＲＡＭ１９１４、磁気ディスク１９２０等である。通信装置は後述する通信ボード１９１５等である。入力装置は後述するキーボード１９０２、通信ボード１９１５等である。つまり、処理装置、記憶装置、通信装置、入力装置はハードウェアである。
【００１５】
また、以下の説明では、暗号化データの生成及びタグの生成を行う際に、検索可能なユーザの属性を指定するため、述語暗号と呼ばれる暗号を用いる。述語暗号とは、データＭを暗号化して暗号化データＣを生成する際に属性ｘを指定することができ、秘密鍵ｓｋの生成には述語ｆｖを指定することができる。さらに、ある条件（例えばｆｖ（ｘ）＝１）を満たす秘密鍵ｓｋを持つユーザだけが、属性ｘで暗号化された暗号化データＣを復号できるという特徴を持つ暗号方式である。
【００１６】
この述語暗号の具体的なアルゴリズムは、非特許文献２や非特許文献４に記載されている。これら方式は述語暗号の中でも、内積述語暗号と呼ばれるアルゴリズムである。この内積述語暗号は、ユーザの属性が属性ベクトルｘ→＝（ｘ１，．．．，ｘＮ）で表され、このベクトルが暗号化データＣに埋め込まれる。また、述語は述語ベクトルｖ→＝（ｖ１，ｖ２，．．．，ｖＮ）で表され、これが秘密鍵ｓｋに埋め込まれる。この属性ベクトルと述語ベクトルの内積値が所定の値（ここでは、所定の値は“０”として説明する）になる場合に限って、その秘密鍵ｓｋの所有者はデータを復号できる。
【００１７】
ユーザの役割や権限に応じて検索可能な範囲や復号可能な範囲の制御を可能とする秘匿検索の実現においては、企業の組織情報、社員の役職、文書の種類や機密度などの属性を考慮して、企業内システムに適した属性ベクトルや述語ベクトルの生成を行う必要がある。
例えば、Ａ部Ｂ課Ｃさんは、Ａ部宛の暗号化データやＢ課宛の暗号化データを復号できる権限を持つ。しかし、Ａ部宛用の秘密鍵、Ｂ課宛用の秘密鍵など、複数の秘密鍵を１ユーザに発行すると、ユーザの鍵管理の手間が複雑化する。そのため、１個の秘密鍵を持つだけで、アクセス権限を持つ全てのデータを検索、復号できることが好ましい。以下の実施の形態では、この様な秘密鍵の管理の手間を削減可能な属性ベクトル、述語ベクトルを生成する。
【００１８】
ここで、非特許文献２に記載された内積述語暗号のアルゴリズムのうち、以下の説明に必要となる範囲に限って簡単に説明する（詳細は、非特許文献２を参照）。
【００１９】
非特許文献２に記載された内積述語暗号は、楕円曲線を用いて定義されるペアリングベクトル空間を用いた暗号である。このペアリングベクトル空間を構成する方法は複数考えられるが、ここでは楕円曲線の直積により構成する方法に基づいて説明する。なお、楕円曲線上の群の演算は一般に加法群の演算として記述されることが多いが、ここでは有限体上の演算も含めすべて乗法群として記述する。また、ここでは記述が最もシンプルとなる対称ペアリングを用いて説明を行うが、非対称ペアリングを用いた一般的な方式に拡張することは容易である。
【００２０】
Ｇ、ＧＴをそれぞれ素数位数ｑの群とする。また、Ｆｑ＝｛０，１，…，ｑ−１｝とする。また、ｅ：Ｇ×Ｇ→ＧＴを、双線型性（任意のｕ，ｖ∈Ｇ、ａ，ｂ∈Ｆｑに対してｅ（ｕａ，ｖｂ）＝ｅ（ｕ，ｖ）ａｂとなる性質）、及び、非退化性（ｅ（ｇ，ｇ）≠１であるようなｇ∈Ｇが存在する性質）を満たすペアリングとする。また、Ｎ個の群Ｇの直積集合をＶ＝Ｇ×Ｇ×…×Ｇとする。ここで、ｘ→＝（ｘ１，ｘ２，．．．，ｘＮ）＝ＦＮｑに対して、直積集合の要素ｘ＝（ｇｘ１，ｇｘ２，．．．，ｇｘＮ）∈Ｖを対応づける。
このとき、ｘ＝（ｇｘ１，ｇｘ２，．．．，ｇｘＮ）∈Ｖ、ｙ＝（ｇｙ１，ｇｙ２，．．．，ｇｙＮ）∈Ｖ、α∈Ｆｑに対して、以下のように定義すると、Ｖはベクトル空間を構成する。
ｘ＋ｙ＝（ｇｘ１＋ｙ１，ｇｘ２＋ｙ２，．．．，ｇｘＮ＋ｙＮ），αｘ＝（ｇαｘ１，ｇαｘ２，．．．，ｇαｘＮ）
【００２１】
このベクトル空間Ｖのペアリングとして、ｕ＝（ｕ１，ｕ２，．．．，ｕＮ）∈Ｖ、ｖ＝（ｖ１，ｖ２，．．．，ｖＮ）∈Ｖに対するペアリングを数１０２のように定義する。
【数１０２】
2011086687.tif 000004
【００２２】
ベクトル空間Ｖにおいて、以下のようなベクトルを定義する。
ａ１＝（ｇ，１，１，．．．，１），ａ２＝（１，ｇ，．．．，１），．．．，ａＮ＝（１，１，１，．．．，ｇ）
この時、Ａ＝（ａ１，ａ２，．．．，ａＮ）は、ベクトル空間Ｖの基底となる。この基底Ａを標準基底と呼ぶ。
ここで、２つのベクトルｘ＝（ｇｘ１，ｇｘ２，．．．，ｇｘＮ）∈Ｖ、ｙ＝（ｇｙ１，ｇｙ２，．．．，ｇｙＮ）∈Ｖがあった時、これは標準基底Ａを用いて、ｘ＝ｘ１ａ１＋ｘ２ａ２＋．．．＋ｘＮａＮ，ｙ＝ｙ１ａ１＋ｙ２ａ２＋．．．＋ｙＮａＮと表すことができる。
また、標準基底Ａは、数１０３を満たす。
【数１０３】
2011086687.tif 000005
ここでδｉ，ｊはクロネッカーのデルタである。そのため、ベクトルｘ＝ｘ１ａ１＋ｘ２ａ２＋．．．＋ｘＮａＮ及びｙ＝ｙ１ａ１＋ｙ２ａ２＋．．．＋ｙＮａＮが与えられた時、そのペアリングは数１０４であることが分かる。
【数１０４】
2011086687.tif 000006
【００２３】
Ｘ＝（ｘｉ，ｊ）を、各要素がＦｑから一様ランダムに選ばれた値で構成されるＮ行Ｎ列の正方行列とする。このように構成したＸは、極めて高い確率で正則行列となる。このような正則行列を用いて、数１０５と定義する。
【数１０５】
2011086687.tif 000007
すると、Ｂ＝（ｂ１，ｂ２，．．．，ｂＮ）もまたベクトル空間Ｖの基底となる。この基底Ｂをランダム基底と呼ぶ。また、基底Ｂの各要素ｂ１，ｂ２，．．．，ｂＮを基底Ｂの基底ベクトルと呼ぶ。
【００２４】
また、前記行列Ｘの転置行列の逆行列を用いて、（ｖｉ，ｊ）＝（ＸＴ）−１と定義する。この行列（ｖｉ，ｊ）を用いて数１０６と定義する。
【数１０６】
2011086687.tif 000008
すると、Ｂ＊＝（ｂ＊１，ｂ＊２，．．．，ｂ＊Ｎ）もまたベクトル空間Ｖのランダム基底となる。なお、基底Ｂの各要素ｂ＊１，ｂ＊２，．．．，ｂ＊Ｎも基底Ｂ＊の基底ベクトルと呼ぶ。
【００２５】
ここで、このランダム基底Ｂ，Ｂ＊においても、標準基底Ａと同様に、数１０７を満たす。
【数１０７】
2011086687.tif 000009
ここでδｉ，ｊはクロネッカーのデルタである。
これにより、ランダム基底Ｂを用いてベクトルｘ＝ｘ１ｂ１＋ｘ２ｂ２＋．．．＋ｘＮｂＮが表され、ランダム基底Ｂ＊を用いてベクトルｙ＝ｙ１ｂ＊１＋ｙ２ｂ＊２＋．．．＋ｙＮｂ＊Ｎが表される時、数１０８であることが分かる。
【数１０８】
2011086687.tif 000010
【００２６】
非特許文献１によれば、ベクトル空間Ｖにおけるランダム基底Ｂ＝（ｂ１，ｂ２，．．．，ｂＮ）に関して、次の性質が成り立つ。ＦＮｑの要素（ｘ１，ｘ２，．．．，ｘＮ）が与えられたとき、ｘ＝ｘ１ｂ１＋ｘ２ｂ２＋．．．＋ｘＮｂＮを得ることは容易である。しかし、ｘ＝ｘ１ｂ１＋ｘ２ｂ２＋．．．＋ｘＬｂＬ（１＜Ｌ≦Ｎ）が与えられたときに、Ｘ＝（ｘｉ，ｊ）を用いずに、ベクトルｙ＝ｙ１ｂ＊１＋ｙ２ｂ＊２＋．．．＋ｙｌｂ＊ｌ（１≦ｌ＜Ｌ）を得ることは、一般化されたＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ計算問題と同程度に難しい。
【００２７】
非特許文献２では、以上の性質を利用して内積述語暗号のアルゴリズムを構成している。
【００２８】
実施の形態１．
実施の形態１では、情報を暗号化した状態で検索可能な秘匿検索システム１００（暗号処理システム）について説明する。
実施の形態１では、以下の順に説明する。
第１に、秘匿検索システム１００の構成と機能について説明する。
第２に、暗号化データの構造について説明する。また、併せて、暗号化データ及び他のデータの流れについて説明する。
第３に、属性ベクトルや述語ベクトルを生成する方法について説明する。ここでは、まず、属性情報符号化列５０１について説明する。属性情報符号化列５０１は、属性ベクトルや述語ベクトルを生成するための元になる符号化情報を生成するためのものである。次に、属性情報符号化列５０１を用いて生成された符号化情報から属性ベクトルや述語ベクトルを生成する方法について説明する。非特許文献２や非特許文献４には、内積述語暗号についての記載はあるものの、属性ベクトルや述語ベクトルを決定する具体的な方法についての記載はない。特に、秘匿検索の実現において属性ベクトルと述語ベクトルの構成をシステムで統一しなければ、一つのトラップドアで全てのドキュメントを横断した検索ができない点の指摘はない。そのため、この属性ベクトルや述語ベクトルを生成する方法は１つのポイントである。
第４に、秘匿検索システム１００の動作について説明する。つまり、秘匿検索システム１００が秘匿検索を実現する具体的な方法について説明する。ここでは、秘匿検索システム１００の動作を６つの処理に分けて説明する。なお、ここでは、非特許文献２に記載された内積述語暗号に基づき説明を行う。非特許文献２には、秘匿検索を実現する具体的な方法についての記載はない。そのため、この秘匿検索システム１００が秘匿検索を実現する方法も１つのポイントである。
【００２９】
なお、ここでは、企業内で作成されたデータ（文書など）がデータセンタ４０１で保管されており、各データが部や課の単位で共有される様な状況を想定する。また、各ユーザ（社員）に関連づけられた所属等の属性に基づいて、ユーザに対してユーザ秘密鍵が発行される。また、データをデータセンタ４０１に保管する際は復号可能な範囲や検索可能な範囲を示す属性情報を設定して暗号化することによって、権限を持つユーザのみが暗号化されたデータの復号や検索を実施可能となる。
【００３０】
＜第１．秘匿検索システム１００の構成と機能＞
図１は、秘匿検索システム１００の構成例を示す図である。
秘匿検索システム１００は、鍵管理サーバ２０１（２０１ａ〜２０１ｎ）、アクセス端末３０１（３０１ａ〜３０１ｍ）、データセンタ４０１を備える。鍵管理サーバ２０１とアクセス端末３０１とは、社内ＬＡＮ１０２に接続されている。社内ＬＡＮ１０２は、ネットワーク１０１を介してデータセンタ４０１と接続されている。
【００３１】
鍵管理サーバ２０１（鍵生成装置）は、暗号化のための公開パラメータを生成するとともに、ユーザに対してユーザ秘密鍵を発行するために用いるマスター鍵や中間秘密鍵を生成する。また、各ユーザの所属や役職などの属性情報を管理するとともに、その属性情報に基づいて社員に対してユーザ秘密鍵を発行する。一般的な構成では、マスター鍵を管理するのは例えば鍵管理サーバ２０１ａであり、事業所毎に中間秘密鍵を管理する鍵管理サーバ２０１ｂ〜２０１ｎを設置して運用する。
【００３２】
アクセス端末３０１（検索装置、暗号化装置、復号装置）は、企業のユーザが利用するＰＣ（パーソナルコンピュータ）である。アクセス端末３０１は、データを作成した後に暗号化してデータセンタ４０１に保管するとともに、データセンタ４０１に蓄積したデータを検索し、データセンタ４０１から取り出した暗号化データを復号して編集する。
【００３３】
データセンタ４０１（暗号化データ蓄積装置）は、企業内で作成された暗号化データを保管する大容量の記憶装置を持つサーバである。データは暗号化された状態で保管されるため、データセンタ４０１では中身を閲覧することができない。
【００３４】
ネットワーク１０１は、社内ＬＡＮ１０２とデータセンタ４０１を接続する通信路である。例えば、インターネットなどが代表的なネットワーク１０１の例である。
【００３５】
社内ＬＡＮ１０２は、企業内に施設された通信路であり、企業内で利用される様々なサーバやパソコンが接続される。なお、複数の建物にオフィスを持つ場合は、ルータや専用線などを介して複雑な通信路構成となる。
【００３６】
図２は、鍵管理サーバ２０１の機能を示す機能ブロック図である。
鍵管理サーバ２０１は、マスター鍵生成部２０２、中間秘密鍵生成部２０３、ユーザ秘密鍵生成部２０４、ユーザ属性情報管理部２０５、符号化情報生成部２０６、ベクトル生成部２０７、各種鍵保管部２０８、ＰＫＧ側データ送受信部２０９を備える。
【００３７】
マスター鍵生成部２０２は、システムで利用する鍵長を元にして、秘匿検索を利用するユーザ全員が共通で利用する公開パラメータを処理装置により生成するとともに、各種秘密鍵を生成する元になるマスター鍵を処理装置により生成する。
【００３８】
中間秘密鍵生成部２０３は、鍵管理サーバ２０１を複数設置する場合において、他の鍵管理サーバ２０１に対して、ユーザ秘密鍵を発行するために用いる中間秘密鍵を処理装置により生成する。なお、中間秘密鍵生成部２０３は、後述するベクトル生成部２０７が生成する述語ベクトルを用いて、中間秘密鍵を生成する。
【００３９】
ユーザ秘密鍵生成部２０４は、後述するベクトル生成部２０７が生成する述語ベクトルを用いて、マスター鍵もしくは中間秘密鍵からユーザ秘密鍵を処理装置により生成する。
【００４０】
ユーザ属性情報管理部２０５は、ユーザの所属や役職、アクセスしてよい文書の機密度、雇用形態などの様々な属性を示す属性情報を記憶装置で管理する。また、ユーザ属性情報管理部２０５は、現時点での属性情報だけでなく、過去の属性情報も履歴として管理する。
【００４１】
符号化情報生成部２０６（第２符号化情報生成部）は、ユーザ属性情報管理部２０５が管理する属性情報に基づき、符号化情報（第２符号化情報）を処理装置により生成する。
【００４２】
ベクトル生成部２０７は、符号化情報生成部２０６が生成した符号化情報に基づき、述語ベクトルを処理装置により生成する。
【００４３】
各種鍵保管部２０８（鍵記憶部）は、マスター鍵生成部２０２で生成したマスター鍵や、中間秘密鍵生成部２０３で生成した中間秘密鍵や、ユーザ秘密鍵生成部２０４で生成したユーザ秘密鍵を記憶装置に記憶する。
【００４４】
ＰＫＧ側データ送受信部２０９は、中間秘密鍵や公開パラメータを通信装置を介して他の鍵管理サーバ２０１へ通信装置を介して送信するとともに、公開パラメータやユーザ秘密鍵を通信装置を介してユーザが使用するアクセス端末３０１へ送信する。
【００４５】
図３は、アクセス端末３０１の機能を示す機能ブロック図である。
アクセス端末３０１は、ユーザ秘密鍵記憶部３０２、トラップドア生成部３０３、委譲ユーザ秘密鍵生成部３０４、データ暗号化鍵復号部３０５、端末側データ送受信部３１１、符号化情報生成部３０６、ベクトル生成部３０７、タグ・暗号化データ暗号化鍵生成部３０８、データ暗号化部３０９、データ復号部３１０を備える。
【００４６】
ユーザ秘密鍵記憶部３０２（鍵記憶部）は、ユーザに個別に発行されたユーザ秘密鍵や、他ユーザから発行してもらった委譲ユーザ秘密鍵、及び公開パラメータを記憶装置に記憶する。
【００４７】
トラップドア生成部３０３は、ユーザ秘密鍵記憶部３０２が記憶したユーザ秘密鍵もしくは委譲ユーザ秘密鍵と、検索したいキーワードから生成される述語ベクトルとに基づき、検索要求に相当するトラップドアを処理装置により生成する。
【００４８】
委譲ユーザ秘密鍵生成部３０４は、ユーザが自身の持つ検索、復号権限を他ユーザに対して制限付きで委譲する場合に、委譲ユーザ秘密鍵を処理装置により生成する。委譲ユーザ秘密鍵生成部３０４は、ユーザ秘密鍵記憶部３０２が記憶したユーザ秘密鍵もしくは委譲ユーザ秘密鍵と、委譲先ユーザに与える委譲権限を示す属性情報から生成される述語ベクトルとに基づき、委譲ユーザ秘密鍵を生成する。
【００４９】
データ暗号化鍵復号部３０５（共通鍵取得部）は、後述する端末側データ送受信部３１１がデータセンタ４０１から受信した暗号化データに添付された暗号化データ暗号化鍵もしくはタグ兼暗号化データ暗号化鍵を、ユーザ秘密鍵もしくは委譲ユーザ秘密鍵で復号する。これにより、データ暗号化鍵復号部３０５は、データ暗号化鍵を処理装置により取り出す。
なお、暗号化データの構造については後述する。
【００５０】
符号化情報生成部３０６（第１符号化情報生成部）は、データから検索されるであろうキーワードを自動的に抽出するとともに、ユーザから検索されるであろうキーワードを受け取る。そして、符号化情報生成部３０６は、キーワードから符号化情報（第１符号化情報）を処理装置により生成する。
また、符号化情報生成部３０６は、ユーザから復号可能ユーザの属性を示す属性情報を受け取る。そして、符号化情報生成部３０６は、属性情報から符号化情報（第１符号化情報）を処理装置により生成する。
【００５１】
ベクトル生成部３０７は、符号化情報生成部３０６が生成した符号化情報に基づき、属性ベクトル又は述語ベクトルを処理装置により生成する。
【００５２】
タグ・暗号化データ暗号化鍵生成部３０８（暗号化データ生成部）は、ベクトル生成部３０７が生成した属性ベクトルと、乱数とに基づき、複数のタグを処理装置により作成する。また、タグ・暗号化データ暗号化鍵生成部３０８は、タグを作成する時に用いた乱数を元にデータ暗号化鍵を処理装置により生成する。そして、タグ・暗号化データ暗号化鍵生成部３０８は、生成したデータ暗号化鍵を、復号可能ユーザの属性情報に基づき暗号化して、暗号化データ暗号化鍵を処理装置により生成する。
なお、後述するように非特許文献２に記載された内積述語暗号を用いた場合は、タグと暗号化データ暗号化鍵とを共通化することができる。そのため、タグ・暗号化データ暗号化鍵生成部３０８は、非特許文献２に記載された内積述語暗号を用いた場合は、タグと暗号化データ暗号化鍵とを共通化したタグ兼暗号化データ暗号化鍵を生成する。
【００５３】
データ暗号化部３０９は、タグ・暗号化データ暗号化鍵生成部３０８が生成したデータ暗号化鍵を用いてデータ本体を処理装置により暗号化して、暗号化データ本体を生成する。さらに、データ暗号化部３０９は、タグ・暗号化データ暗号化鍵生成部３０８が生成した複数のタグと暗号化データ暗号化鍵とを、暗号化データ本体に付加することで、暗号化データを処理装置により生成する。
なお、データ暗号化部３０９は、非特許文献２に記載された内積述語暗号を用いた場合は、暗号化データ本体にタグ兼暗号化データ暗号化鍵を付加することで、暗号化データを生成する。
【００５４】
データ復号部３１０は、データセンタ４０１から受け取った暗号化データに含まれるの暗号化データ本体を、データ暗号化鍵復号部３０５で取得したデータ暗号鍵を用いて、処理装置により復号する。
【００５５】
端末側データ送受信部３１１（データ送信部）は、アクセス端末３０１で作成した暗号化データをデータセンタ４０１へ通信装置を介して送信するとともに、データセンタ４０１に保管された暗号化データを通信装置を介して受信する。
また、端末側データ送受信部３１１は、鍵管理サーバ２０１からユーザ秘密鍵を通信装置を介して受信する。さらに、端末側データ送受信部３１１は、他のアクセス端末３０１から委譲ユーザ秘密鍵を通信装置を介して受信するとともに、他のアクセス端末３０１へ委譲ユーザ秘密鍵を通信装置を介して送信する。
【００５６】
図４は、データセンタ４０１の機能を示す機能ブロック図である。
データセンタ４０１は、センタ側データ送受信部４０２、データ管理部４０３、検索要求受信部４０４、検索実行部４０５、検索結果送信部４０６を備える。
【００５７】
センタ側データ送受信部４０２は、アクセス端末３０１から暗号化データを通信装置を介して受信する。
また、センタ側データ送受信部４０２は、鍵管理サーバ２０１から公開パラメータを通信装置を介して受信する。
【００５８】
データ管理部４０３（暗号化データ蓄積部）は、アクセス端末３０１から受信した暗号化データや、鍵管理サーバ２０１から受信した公開パラメータなどを記憶装置に記憶する。
【００５９】
検索要求受信部４０４は、アクセス端末３０１から暗号化データの検索要求であるトラップドアを通信装置を介して受信する。
【００６０】
検索実行部４０５は、検索要求受信部４０４が受信したトラップドアと、データ管理部４０３が保管した暗号化データのタグもしくはタグ兼暗号化データ暗号化鍵とについて、処理装置によりテスト処理を実行する。これにより、検索実行部４０５は、データ管理部４０３が保管した暗号化データに、キーワードが一致する暗号化データが含まれるかどうかを判定する。
【００６１】
検索結果送信部４０６は、アクセス端末３０１から受信した検索要求の結果として、検索にヒットした暗号化データをアクセス端末３０１へ通信装置を介して送信する。
【００６２】
＜第２．暗号化データの構造とデータの流れ＞
暗号化データの構造について説明する。
図５は、一般的な内積述語暗号を用いた場合の暗号化データ３００１の構成例を示す図である。
ここでは、この構成例を暗号化データＡとする。暗号化データ本体３００２は、データ暗号化鍵を用いて、例えばＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＣａｍｅｌｌｉａ（登録商標）等の共通鍵暗号でデータを暗号化したものである。暗号化データ暗号化鍵３００３は、内積述語暗号でデータ暗号化鍵を暗号化したものである。タグ３００４は、本文に含まれるキーワードと属性ベクトルとを用いて生成したタグである。
【００６３】
図６は、暗号化データＡに含まれる各データや、上記説明において登場した各データの関係を示す図である。
初めに、鍵管理サーバ２０１の符号化情報生成部２０６はユーザ属性情報管理部２０５が管理するユーザの属性から符号化情報を生成し、ベクトル生成部２０７は生成された符号化情報から述語ベクトル３２０２を生成する。そして、ユーザ秘密鍵生成部２０４は、述語ベクトル３２０２とマスター鍵３２０１とを用いてユーザ秘密鍵３２０３を生成する。ＰＫＧ側データ送受信部２０９は、生成されたユーザ秘密鍵３２０３をユーザへ安全な方法で配布する。
データを暗号化するユーザが使用するアクセス端末３０１のデータ暗号化部３０９は、データ暗号化鍵３２０６でデータを暗号化する。また、符号化情報生成部３０６は検索や復号が可能なユーザの属性を示す符号化情報を生成し、ベクトル生成部３０７は生成された符号化情報から属性ベクトル３２０４を生成する。タグ・暗号化データ暗号化鍵生成部３０８は、属性ベクトル３２０４を用いて、データを暗号化するのに用いたデータ暗号化鍵３２０６を内積述語暗号で暗号化し、暗号化データ暗号化鍵３２０８を生成する。また、タグ・暗号化データ暗号化鍵生成部３０８は、データに含まれるキーワード３２０５と属性ベクトル３２０４とを元にして、内積述語暗号を用いてタグ３２０７を生成する。一般的には、キーワード３２０５と属性ベクトル３２０４とが公開鍵であり、この公開鍵で定数１や乱数を暗号化することでタグを生成する。このタグ３２０７と暗号化データ暗号化鍵３２０８とは、検索や復号が可能なユーザの属性ベクトル３２０４の数だけ作成し、暗号化データ本体とともに暗号化データＡとして受信者に送信される。なお、送信先のユーザが複数であった場合でも、属性ベクトル３２０４が１個で構成できるのであれば、タグ３２０７や暗号化データ暗号化鍵３２０８は、ぞれぞれ１個だけ作成すればよい。
データを検索するユーザが使用するアクセス端末３０１のトラップドア生成部３０３は、ユーザ秘密鍵記憶部３０２が記憶したユーザ秘密鍵３２０３と、検索したい検索キーワード３２０９とを元にしてトラップドア３２１０を生成する。一般に、検索キーワード３２０９を述語ベクトル３２０２の末尾に付加したベクトルに対応する秘密鍵を生成することで、トラップドア３２１０を生成する。データセンタ４０１の検索要求受信部４０４は、このトラップドア３２１０を用いてタグ３２０７を復号することで、タグ３２０７を生成するのに用いた定数１もしくは乱数を復元することができれば、キーワード３２０５が含まれることが分かる。もし定数１や乱数が復元できない場合、キーワード３２０５が含まれていないことが分かる。
データを復号するユーザが使用するアクセス端末３０１のデータ暗号化鍵復号部３０５は、ユーザ秘密鍵記憶部３０２が記憶したユーザ秘密鍵３２０３を用いて、暗号化データ暗号化鍵３２０８を復号し、データ暗号化鍵３２１２を取り出す。データ復号部３１０は、このデータ暗号化鍵３２１２で、暗号化データ本体を復号することで、データを取得することができる。
【００６４】
なお、非特許文献２に記載された内積述語暗号を用いた場合は、タグ３２０７と暗号化データ暗号化鍵３２０８とを共通化してデータ量を削減することができる。
図７は、非特許文献２に記載された内積述語暗号を用いた場合の暗号化データ３１０１の構成例を示す図である。
ここでは、この構成例を暗号化データＢとする。暗号化データ本体３１０２（暗号文ｃ２）は、図５に示す暗号化データ本体３００２と同様であり、データ暗号化鍵を用いてデータ（平文情報ｍ）を暗号化したものである。タグ兼暗号化データ暗号化鍵３１０３（暗号化ベクトルｃ１）は、キーワードと属性ベクトルとを公開鍵とみなし、データ暗号化鍵を暗号化したものである。
【００６５】
図８は、暗号化データＢに含まれる各データや、上記説明において登場した各データの関係を示す図である。
ユーザ秘密鍵の生成、及びデータの検索の流れに関しては、図６に基づき説明した手順と同様であるため、説明を省略する。
データを暗号化するユーザが使用するアクセス端末３０１のデータ暗号化部３０９は、データ暗号化鍵３２０６でデータを暗号化する。また、符号化情報生成部３０６は、検索や復号が可能なユーザの属性示す符号化情報を生成し、ベクトル生成部３０７は生成された符号化情報から属性ベクトル３２０４を生成する。タグ・暗号化データ暗号化鍵生成部３０８は、属性ベクトル３２０４と、データに含まれるキーワード３２０５とを元にして、データ暗号化鍵３２１２を生成するのに用いた乱数３３１３を内積述語暗号で暗号化し、タグ兼暗号化データ暗号化鍵３３１４を作成する。このタグ兼暗号化データ暗号化鍵３３１４は、検索や復号が可能なユーザの属性ベクトル３２０４の数だけ作成し、暗号化データ本体とともに暗号化データＢとして受信者へ送信される。なお、送信先のユーザが複数であった場合でも、属性ベクトル３２０４が１個で構成できるのであれば、タグ兼暗号化データ暗号化鍵３３１４は、１個だけ作成すればよい。
データを復号するユーザが使用するアクセス端末３０１のデータ暗号化鍵復号部３０５は、ユーザ秘密鍵記憶部３０２が記憶したユーザ秘密鍵３２０３を変形させ、復号用秘密鍵３３１５を生成する。そして、データ暗号化鍵復号部３０５は、生成した復号用秘密鍵３３１５を用いて、タグ兼暗号化データ暗号化鍵３３１４を復号し、データ暗号化鍵３２１２を取り出す。データ復号部３１０は、このデータ暗号化鍵３２１２で、暗号化データ本体を復号することで、データを取得することができる。
【００６６】
なお、図６と図８に示したデータの流れの中で、ユーザ秘密鍵を生成するためにマスター鍵を用いたが、マスター鍵に代えて中間秘密鍵を用いてもよい。また、ユーザ秘密鍵に代えて委譲ユーザ秘密鍵を用いてもよい。
【００６７】
＜第３．属性ベクトルと述語ベクトルとの生成方法＞
属性情報符号化列５０１について説明する。
属性情報符号化列５０１は、鍵管理サーバ２０１の符号化情報生成部２０６と、アクセス端末３０１の符号化情報生成部３０６とが符号化情報を生成するために使用する配列である。つまり、属性情報符号化列５０１は、ユーザ秘密鍵や中間秘密鍵等を生成する際に用いる述語ベクトルと、暗号化データを生成する際に用いる属性ベクトルとを生成する元になる符号化情報を生成するために用いられる。
符号化情報生成部２０６と符号化情報生成部３０６とは、属性情報符号化列５０１に以下で説明する方法に従い値を設定することで、符号化情報を生成する。
【００６８】
ここで、内積述語暗号では、属性ベクトルと述語ベクトルの内積値が０かどうかを判定可能であると言う特徴を持つ。この特徴を用いて、ＡＮＤ条件、ＯＲ条件、包含関係判定の判定が実現できることが知られている。
属性情報符号化列５０１は、ユーザ秘密鍵を持つユーザの属性と、暗号化データを復号可能なユーザの属性とを、ＡＮＤ条件とＯＲ条件と包含条件とを用いて比較できるように属性情報を符号化するためのものである。なお、属性情報符号化列５０１は固定長の情報であり、下記に示す各符号化列の構成要素が幾つ存在するべきかは、システム利用時に事前に決定しておくべき情報である。
【００６９】
図９は、属性情報符号化列５０１の構成例を示す図である。
属性情報符号化列５０１は、個人ＩＤ５０２、所属情報符号化列５０３、役職情報符号化列５０４、カテゴリ符号化列５０５、機密度符号化列５０６、雇用形態符号化列５０７、期間情報符号化列５０８、委譲先情報符号化列５０９、鍵用途フラグ５１０、検索語符号化列５１１を備える。
個人ＩＤ５０２は、ユーザを特定する。所属情報符号化列５０３は、ユーザの所属を示す。役職情報符号化列５０４は、ユーザの役職を示す。カテゴリ符号化列５０５は、アクセス可能な文書の種類を示す。機密度符号化列５０６は、アクセス可能な文書の機密度を示す。雇用形態符号化列５０７は、ユーザの雇用形態を示す。期間情報符号化列５０８は、アクセス可能な文書の作成期間を示す。委譲先情報符号化列５０９は、ユーザ秘密鍵が委譲ユーザ秘密鍵である場合に、どの立場の人へ委譲された委譲ユーザ秘密鍵であるかを示す。鍵用途フラグ５１０は、ユーザ秘密鍵からトラップドアを生成する際に、トラップドアであることを示すフラグがセットされる。検索語符号化列５１１は、トラップドアを生成する際に検索したいキーワードがセットされる。
【００７０】
中間秘密鍵、ユーザ秘密鍵、委譲ユーザ秘密鍵を生成する属性として用いる場合には、属性情報符号化列５０１の各符号化列は、その秘密鍵を使用するユーザあるいはグループの属性が設定される。つまり、鍵管理サーバ２０１の符号化情報生成部２０６又はアクセス端末３０１の符号化情報生成部３０６は、属性情報符号化列５０１の各符号化列に、その秘密鍵を使用するユーザあるいはグループの属性を設定することで符号化情報を生成する。
一方、暗号化データに設定する属性として用いる場合には、属性情報符号化列５０１の各符号化列は、暗号化データを復号、もしくは検索できるユーザやグループの属性が設定される。つまり、アクセス端末３０１の符号化情報生成部３０６は、属性情報符号化列５０１の各符号化列に、暗号化データを復号、もしくは検索できるユーザやグループの属性を設定することで符号化情報を生成する。
【００７１】
後述するように属性情報符号化列５０１の一部の符号化列については、符号化列毎に、ＡＮＤ判定と、ＯＲ判定と、包含関係判定とのいずれで比較するかを決める必要がある。なお、ＡＮＤ判定とは、その符号化列を構成する要素が全て一致することを判定する処理である。ＯＲ判定とは、いずれかの要素が一致することを判定する処理である。包含関係判定とは、一方の要素集合が他方の要素集合に含まれることを判定する処理である。
つまり、ユーザ秘密鍵に設定された述語ベクトルの生成元である符号化情報と、タグや暗号化データ暗号化鍵あるいはタグ兼暗号化データ暗号化鍵に設定された属性ベクトルの生成元である符号化情報との各符号化列について、ＡＮＤ判定と、ＯＲ判定と、包含関係判定とのいずれで比較される。そして、全ての符号化列で判定が真となる場合、すなわちＡＮＤ判定によって判定を行う事で全ての符号化列で判定が真となる場合、検索もしくは復号が可能となる。
【００７２】
次に、属性情報符号化列５０１の各構成要素について説明する。
なお、以下の属性情報符号化列５０１の各構成要素の説明では、ユーザ秘密鍵を生成する場合と、暗号化データを生成する場合とについて説明する。中間秘密鍵を生成する場合や委譲ユーザ秘密鍵を生成する場合は、ユーザ秘密鍵を生成する場合と同様である。
【００７３】
個人ＩＤ５０２について説明する。
個人ＩＤ５０２には個人を示す社員番号などのＩＤが設定される。ユーザ秘密鍵を生成する場合は、個人ＩＤ５０２は必ず設定される。暗号化データを生成する場合は、個人宛に暗号化データを送付する場合には、その個人のＩＤが設定されるが、特に復号可能な個人を特定しない場合は、全ての値にマッチする所定の情報“＊”が設定される。
個人ＩＤ５０２について、ユーザ秘密鍵と暗号化データとは、ＡＮＤ判定にて比較される。なお、以降の説明でも記号“＊”は全ての値と一致する特殊な記号（いわゆるワイルドカード）として使用する。
【００７４】
図１０は、個人ＩＤ５０２の設定例を示す図である。
例えば、ユーザ秘密鍵には個人ＩＤ１の様に“Ａさん”を示す値が設定されていたと仮定する。もし、暗号化データにも個人ＩＤ２の様に“Ａさん”を示す値が設定された場合、ユーザ秘密鍵と暗号化データとの値が一致するため、検索もしくは復号が可能である。しかし、暗号化データに個人ＩＤ３の様に“Ｂさん”が設定されていた場合、ユーザ秘密鍵と暗号化データとの値が異なるため検索や復号は実施できない。
また、暗号化データに個人ＩＤ４の様に“＊”が設定されていた場合、個人ＩＤ１の様に設定されたユーザ秘密鍵でも、個人ＩＤ３の様に設定されたユーザ秘密鍵でも、ＡＮＤ判定で真となるため、検索もしくは復号が可能となる。
【００７５】
所属情報符号化列５０３について説明する。
図１１は、所属情報符号化列５０３の構成例を示す図である。
所属情報符号化列５０３には、ユーザの所属が階層の上位から順に設定される。例えば、ユーザが属する会社を示す会社ＩＤ６０１、どこの事業所に所属しているかを示す事業所ＩＤ６０２、どの部に属しているかを示す部ＩＤ６０３、どの課に属しているかを示す課ＩＤ６０４、どのユニットに属しているかを示すユニットＩＤ６０５が順に設定される。
所属情報符号化列５０３について、ユーザ秘密鍵と暗号化データとは、全ての要素が一致するか否かを判定するＡＮＤ判定にて比較され、真である場合に条件が成立するとみなす。
【００７６】
図１２は、所属情報符号化列５０３の設定例を示す図である。
例えば、所属情報符号化列１は、“Ａ社／Ｂ事業所／Ｃ部／Ｄ課／Ｅユニット”に属するユーザに対して生成されたユーザ秘密鍵についての例である。
Ｄ課のユーザであれば誰でも復号や検索ができるような暗号化データを生成する場合は、所属情報符号化列２で示す“Ａ社／Ｂ事業所／Ｃ部／Ｄ課／＊”が設定される。この場合、Ｄ課のユーザであれば誰でも、ＡＮＤ判定を行うと全ての要素が一致するため、結果は真となり、検索や復号が可能となる。また、Ｃ部のユーザであれば誰でも復号や検索ができるようにしたい場合、所属情報符号化列３に示す属性が設定される。
また、Ｅ課のメンバが復号や検索できるような暗号化データの場合、所属情報符号化列４で示す属性が設定される。この場合、所属情報符号化列１で示す属性が設定された秘密鍵を持つＤ課のユーザでは、課の情報が“Ｄ課”と“Ｅ課”で異なるためＡＮＤ判定の結果が偽となり、検索や復号ができない。
同様に、Ｄ課のユーザであるが、ユニットに属さないユーザのみ復号や検索できるような暗号化データを生成する場合、所属情報符号化列５に示すように、ユニットＩＤ６０５に乱数Ｒを設定すればよい。所属情報符号化列１に示すように“Ｅユニット”に属するユーザでは、ユニットＩＤ６０５が異なるためＡＮＤ判定の結果が偽となるため、検索や復号ができない。一方で、ユニットに属さないＤ課のユーザは、所属情報符号化列２の様な属性が設定されたユーザ秘密鍵を持つため、全ての要素が一致してＡＮＤ判定の結果が真となり、検索や復号ができる。
なお、上記では乱数をＲと言う記号を用いて表した。以降でも同様に乱数を記号Ｒを用いて表すが、乱数Ｒはランダムに選んだ値を指すため、符号化列中の２カ所に乱数Ｒと乱数Ｒが出てきた場合でも、互いに異なるランダムな値である。
【００７７】
役職情報符号化列５０４について説明する。
図１３は、役職情報符号化列５０４の構成例を示す図である。
役職情報符号化列５０４には、ユーザがついている役職に関する情報が設定される。
例えば、役職情報符号化列５０４は、役員クラスの役職についていることを示す役員クラスフラグ７０１、所長クラスの役職に就いていることを示す所長クラスフラグ７０２、同様に部長クラスフラグ７０３、課長クラスフラグ７０４、係長クラスフラグ７０５、役職に就いていないことを示す担当クラスフラグ７０６のフラグで構成される。
【００７８】
役職情報符号化列５０４のフラグの設定方法として、ここでは２種類の例を示す。
１番目の設定例では、ユーザ秘密鍵を生成する場合、就いている役職のフラグに値“１”が設定され、就いていない役職のフラグには“＊”が設定される。暗号化データを生成する場合、アクセス可能な役職のフラグには値“１”が設定され、アクセス不可能な役職のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、役職情報符号化列５０４について、ユーザ秘密鍵と暗号化データとは、全ての要素が一致するか否かを判定するＡＮＤ判定にて比較され、判定結果が真である時に限って、検索や復号ができる。
【００７９】
図１４は、１番目の設定例における役職情報符号化列５０４の設定例を示す図である。
例えば、課長が持つユーザ秘密鍵には、役職情報符号化列１に示したように、課長クラスフラグ７０４に値“１”が設定され、その他のフラグには“＊”が設定される。一方、係長が持つユーザ秘密鍵には、役職情報符号化列２に示すように、係長クラスフラグ７０５に値“１”が設定され、その他のフラグには“＊”が設定される。
部長及び課長が検索や復号できるような暗号化データの場合、役職情報符号化列３のような属性が設定される。つまり、部長と課長のフラグに値“１”が設定され、その他はそれぞれ異なる乱数Ｒが設定される。この暗号化データと上述した課長のユーザ秘密鍵とが比較されると、全ての要素が一致するためＡＮＤ判定の結果が真となるため、課長のユーザ秘密鍵で検索や復号が実施できる。一方、上述した係長のユーザ秘密鍵の場合、係長クラスフラグ７０５の値が“１”と乱数“Ｒ”で異なるため、判定結果が偽となり、検索も復号もできない。
また、部長／課長／係長／担当者の全員が検索や復号できるような暗号化データの場合、役職情報符号化列４に示したような属性が設定される。この場合、上述した課長のユーザ秘密鍵でも、係長のユーザ秘密鍵でも、全ての要素が一致するためＡＮＤ判定の結果が真となり検索や復号ができる。
【００８０】
２番目の設定例では、ユーザ秘密鍵を生成する場合、就いている役職のフラグに値“１”が設定され、就いていない役職のフラグにはそれぞれ異なる乱数Ｒが設定される。暗号化データを生成する場合、アクセス可能な役職のフラグには値“１”が設定され、アクセス不可能な役職のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、役職情報符号化列５０４について、ユーザ秘密鍵と暗号化データとは、いずれか１つでも一致すればよいというＯＲ判定で比較され、判定結果が真である時に限って、検索や復号ができる。
【００８１】
図１５は、２番目の設定例における役職情報符号化列５０４の設定例を示す図である。
例えば、課長が持つユーザ秘密鍵には、役職情報符号化列５に示したように、課長クラスフラグ７０４に値“１”が設定され、その他のフラグにはぞれぞれ異なる乱数Ｒが設定される。一方、部長と課長を掛け持ちするユーザのユーザ秘密鍵には、部長クラスフラグ７０３と課長クラスフラグ７０４に値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。
課長が検索や復号できるような暗号化データの場合、役職情報符号化列７のように、課長のフラグに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。この暗号化データと上述した課長のユーザ秘密鍵とが比較されると、課長クラスフラグ７０４が一致するためＯＲ判定の結果が真となり、課長のユーザ秘密鍵で検索や復号が実施できる。また、上述した部長／課長兼務のユーザ秘密鍵でも同様である。
一方、部長が検索や復号できる暗号化データの場合、役職情報符号化列８のような属性が設定される。この場合、上述した部長／課長兼務のユーザ秘密鍵の場合、部長クラスフラグ７０３が値“１”で一致するため、検索や復号ができる。一方、上述した課長のユーザ秘密鍵の場合、いずれの要素も値が一致しないため、ＯＲ判定の結果は偽となり、検索も復号も実施できない。
なお、図中の乱数は全てＲと記しているが、それぞれ異なる乱数値を割り振っているため、一致する確率が極めて小さく、無視し得る程度である。
【００８２】
カテゴリ符号化列５０５について説明する。
図１６は、カテゴリ符号化列５０５の構成例を示す図である。
カテゴリ符号化列５０５は、検索や復号ができる文書のジャンルを制限するために利用するものである。
例えば、カテゴリ符号化列５０５は、大分類を示す大分類識別ＩＤ８０１、中分類を示す中分類識別ＩＤ８０２、小分類を示す小分類識別ＩＤ８０３から構成される。
カテゴリ符号化列５０５について、ユーザ秘密鍵と暗号化データとは、全ての要素が一致するかどうかを確認するＡＮＤ判定で比較される。
【００８３】
図１７は、カテゴリ符号化列５０５の設定例を示す図である。
例えば、全てのデータにアクセス可能なユーザの場合、ユーザ秘密鍵はカテゴリ符号化列１に示すように、全てのＩＤに“＊”が設定される。一方、Ａ開発関連のデータにのみアクセスしてよいユーザの場合、ユーザ秘密鍵はカテゴリ符号化列２の様に、大分類識別ＩＤ８０１に“Ａ開発”が設定される。
暗号化データを生成する場合は、全ての分類を特定するように値が設定される。例えば、Ａ開発の外部仕様書の場合、暗号化データは例えばカテゴリ符号化列３の様に属性が設定される。この場合、前述したカテゴリ符号化列１のユーザ秘密鍵でも、カテゴリ符号化列２のユーザ秘密鍵でも、全ての要素が一致するため、ＡＮＤ判定の結果は真となり、検索も復号もできる。
カテゴリ符号化列４に示すように、０９年度の人件費の予算計画を示すような分類が設定されている場合、カテゴリ符号化列１のユーザ秘密鍵ではＡＮＤ判定の結果は真となり、検索も復号も可能である。しかし、カテゴリ符号化列２のユーザ秘密鍵では、大分類の値が異なるためＡＮＤ判定の結果は偽となり、検索も復号もできない。
【００８４】
機密度符号化列５０６について説明する。
図１８は、機密度符号化列５０６の構成例を示す図である。
機密度符号化列５０６は、検索や復号ができる文書の機密度を制限するために利用するものである。
例えば、極秘のデータであることを示す極秘フラグ９０１、秘のデータであることを示す秘フラグ９０２、社外秘のデータであることを示す社外秘フラグ９０３、いずれにも該当しないことを示す非該当フラグ９０４で構成される。
【００８５】
機密度符号化列５０６のフラグの設定方法として、ここでは２種類の例を示す。
１番目の設定例では、ユーザ秘密鍵を生成する場合、検索や復号が可能な機密等級に対応するフラグに値“１”が設定され、検索や復号が不可能な機密等級に対応するフラグにはそれぞれ異なる乱数Ｒが設定される。暗号化データを生成する場合、データの機密等級に該当するフラグには値“１”が設定され、該当しないフラグには“＊”が設定される。ユーザ秘密鍵と暗号化データとは、全ての要素が一致するか否かを判定するＡＮＤ判定にて比較され、判定結果が真である時に限って、検索や復号ができる。
【００８６】
図１９は、１番目の設定例における機密度符号化列５０６の設定例を示す図である。
例えば、極秘より機密度が低いデータにアクセス可能なユーザ秘密鍵の場合、機密度符号化列１に示すように、秘フラグ９０２と社外秘フラグ９０３と非該当フラグ９０４とに値“１”が設定され、極秘フラグ９０１には乱数Ｒが設定される。一方、全ての機密等級のデータにアクセス可能なユーザ秘密鍵の場合、機密度符号化列２に示すように、全てのフラグに値“１”が設定される。
暗号化データを生成する場合は、データの機密等級に該当するフラグに“１”が設定され、その他のフラグに“＊”が設定される。例えば、秘のデータを暗号化する場合、機密度符号化列３に示すように、秘フラグ９０２に値“１”が設定され、その他のフラグに“＊”が設定される。この場合、上述した極秘より機密度が低いデータにアクセス可能な機密度符号化列１が設定されたユーザ秘密鍵とＡＮＤ判定を行うと、全ての要素が一致するため結果が真となり、検索や復号ができる。同様に、上述した全ての機密等級のデータにアクセス可能な機密度符号化列２が設定されたユーザ秘密鍵とＡＮＤ判定を行った場合も、全ての要素が一致するため結果が真となり、検索や復号ができる。
一方、極秘のデータを暗号化する場合、機密度符号化列４に示すように、極秘フラグ９０１に値“１”が設定され、その他のフラグに“＊”が設定される。この場合、上述した極秘より機密度が低いデータにアクセス可能な機密度符号化列１が設定されたユーザ秘密鍵とＡＮＤ判定を行うと、極秘フラグ９０１の値が異なるため結果が偽となり、検索や復号は実施できない。しかし、上述した全ての機密等級のデータにアクセス可能な機密度符号化列２が設定されたユーザ秘密鍵とＡＮＤ判定を行った場合は、全ての要素が一致するため結果が真となり、検索や復号ができる。
【００８７】
２番目の設定例としては、ユーザ秘密鍵を生成する場合、検索や復号が可能な機密等級に対応するフラグに値“１”が設定され、検索や復号が不可能な機密等級に対応するフラグにはそれぞれ異なる乱数Ｒが設定される。暗号化データを生成する場合、データの機密等級に該当するフラグには値“１”が設定され、該当しないフラグにはそれぞれ異なる乱数Ｒが設定される。ユーザ秘密鍵と暗号化データとは、いずれか１つでも一致すればよいというＯＲ判定で比較され、判定結果が真である時に限って、検索や復号ができる。
【００８８】
図２０は、２番目の設定例における機密度符号化列５０６の設定例を示す図である。
ユーザ秘密鍵に含める機密度符号化列の設定例は、図１９に示したケースと同様であるため、説明は省略する。
暗号化データを生成する場合は、データの機密等級に該当するフラグに値“１”が設定され、その他はそれぞれ異なる乱数Ｒが設定される。例えば、秘のデータを暗号化する場合、機密度符号化列５に示すように、秘フラグ９０２に値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、上述した極秘より機密度が低いデータにアクセス可能な機密度符号化列１が設定されたユーザ秘密鍵とＯＲ判定を行うと、秘フラグ９０２の値が一致するため結果が真となり、検索や復号ができる。同様に、上述した全ての機密等級のデータにアクセス可能な機密度符号化列２が設定されたユーザ秘密鍵とＯＲ判定を行った場合も、秘フラグ９０２の値が一致するため結果が真となり、検索や復号ができる。
極秘のデータを暗号化する場合、機密度符号化列６に示すように、極秘フラグ９０１に値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、上述した極秘より機密度が低いデータにアクセス可能な機密度符号化列１が設定されたユーザ秘密鍵とＯＲ判定を行うと、全てのフラグの値が異なるため結果が偽となり、検索や復号は実施できない。しかし、上述した全ての機密等級のデータにアクセス可能な機密度符号化列２が設定されたユーザ秘密鍵とＯＲ判定を行った場合は、極秘フラグの値が一致するため結果が真となり、検索や復号ができる。
【００８９】
雇用形態符号化列５０７について説明する。
図２１は、雇用形態符号化列５０７の構成例を示す図である。
雇用形態符号化列５０７は、雇用形態に応じて検索や復号ができるユーザを制限するために利用するものである。
例えば、総合職であることを示す総合職フラグ１００１、一般職であることを示す一般職フラグ１００２、正社員であるものの他地区から駐在している社員であることを示す駐在者フラグ１００３、関係会社社員であることを示す関係社員フラグ１００４、派遣されている社員であることを示す派遣社員フラグ１００５、前記以外の雇用形態であるその他フラグ１００６で構成される。
【００９０】
雇用形態符号化列５０７のフラグの設定方法として、ここでは２種類の例を示す。
１番目の設定例では、ユーザ秘密鍵を生成する場合、該当する雇用形態のフラグに値“１”が設定され、該当しない雇用形態のフラグには“＊”が設定される。暗号化データを生成する場合、アクセス可能な雇用形態のフラグには値“１”が設定され、アクセス不可能な雇用形態のフラグにはそれぞれ異なる乱数Ｒが設定される。ユーザ秘密鍵と暗号化データとは、全ての要素が一致するか否かを判定するＡＮＤ判定にて比較され、判定結果が真である時に限って、検索や復号ができる。
【００９１】
図２２は、１番目の設定例における雇用形態符号化列５０７の設定例を示す図である。
例えば、総合職で採用されたユーザのユーザ秘密鍵の場合、雇用形態符号化列１に示すように、総合職フラグ１００１に値“１”が設定され、その他のフラグには“＊”が設定される。一方、駐在者のユーザ秘密鍵の場合、雇用形態符号化列２に示すように、駐在者フラグ１００３に値“１”が設定され、その他のフラグには“＊”が設定される。
暗号化データを生成する場合は、検索や復号ができるユーザの雇用形態に応じて、該当するフラグに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。例えば、社員であれば復号可能なデータを暗号化する場合、雇用形態符号化列３に示すように、社員を指す総合職フラグ１００１と一般職フラグ１００２と駐在者フラグ１００３とに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、上述した総合職を指す雇用形態符号化列１とＡＮＤ判定を行うと、全ての要素が一致するため結果が真となり、検索や復号ができる。同様に、上述した駐在者を指す雇用形態符号化列２とＡＮＤ判定を行った場合も、全ての要素が一致するため結果が真となり、検索や復号ができる。
総合職と一般職のみ検索や復号ができる様にデータを暗号化する場合、雇用形態符号化列４に示すように、総合職フラグ１００１と一般職フラグ１００２とに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、上述した駐在者を示す雇用形態符号化列２の例とＡＮＤ判定を行うと、駐在者フラグの値が異なるため結果が偽となり、検索や復号は実施できない。しかし、上述した総合職を指す雇用形態符号化列１の例とＡＮＤ判定を行った場合は、全ての要素が一致するため結果が真となり、検索や復号ができる。
【００９２】
２番目の設定例としては、ユーザ秘密鍵を生成する場合、該当する雇用形態のフラグに値“１”が設定され、該当しない雇用形態のフラグにはそれぞれ異なる乱数Ｒが設定される。暗号化データを生成する場合、アクセス可能な雇用形態のフラグには値“１”が設定され、アクセス不可能な雇用形態のフラグにはそれぞれ異なる乱数Ｒが設定される。ユーザ秘密鍵と暗号化データとは、いずれか１つでも一致すればよいというＯＲ判定にて比較され、判定結果が真である時に限って、検索や復号ができる。
【００９３】
図２３は、２番目の設定例における雇用形態符号化列５０７の設定例を示す図である。
例えば、総合職で採用されたユーザのユーザ秘密鍵の場合、雇用形態符号化列５に示すように、総合職フラグに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。一方、駐在者のユーザ秘密鍵の場合、雇用形態符号化列６に示すように、駐在者フラグに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。
データを暗号化する場合のフラグの設定方法は、上述した１番目の設定例で示した雇用形態符号化列３及び雇用形態符号化列４の場合と同様である。上述した総合職を指す雇用形態符号化列５と、上述した雇用形態符号化列３のＯＲ判定を行うと、総合職フラグの値が一致するため結果が真となり、検索や復号ができる。同様に、上述した駐在者を指す雇用形態符号化列６と、上述した雇用形態符号化列３のＯＲ判定を行った場合も、駐在者フラグの値が一致するため結果が真となり、検索や復号ができる。
上述した駐在者を示す雇用形態符号化列６と、上述した雇用形態符号化列４のＯＲ判定を行うと、全てのフラグの値が異なるため結果が偽となり、検索や復号は実施できない。しかし、上述した総合職を指す雇用形態符号化列５と、上述した雇用形態符号化列４のＯＲ判定を行った場合は、総合職フラグの値が一致するため結果が真となり、検索や復号ができる。
【００９４】
期間情報符号化列５０８について説明する。
図２４は、期間情報符号化列５０８の構成例１を示す図である。
期間情報符号化列５０８は、データの作成日時を元に、ユーザのアクセス可否を制御するために用いる。
構成例１では、例えば、２０００年フラグ１１０１ａ、２００１年フラグ１１０１ｂというように年ごとに用意されたフラグで構成される。
【００９５】
期間情報符号化列５０８の構成例１のフラグの設定方法として、ここでは２種類の例を示す。
１番目の設定例では、ユーザ秘密鍵を生成する場合、アクセス可能な文書の作成年に該当するフラグに値“１”が設定され、アクセス不可能な文書の作成年に該当するフラグにはそれぞれ異なる乱数Ｒが設定される。暗号化データを生成する場合、作成した年に対応するフラグには値“１”が設定され、他のフラグには“＊”が設定される。ユーザ秘密鍵と暗号化データとは、全ての要素が一致するか否かを判定するＡＮＤ判定にて比較され、判定結果が真である時に限って、検索や復号ができる。
【００９６】
図２５は、構成例１の場合の１番目の設定例における期間情報符号化列５０８の設定例を示す図である。なお、図２５では説明の簡単のため、図２４に比べ範囲を２００７年から２０１２年までに短縮している。
例えば、２００７年から２００９年までのデータを検索や復号できるユーザのユーザ秘密鍵の場合、期間情報符号化列１に示すように、２００７年フラグ、２００８年フラグ、２００９年フラグに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。
データを暗号化する場合は、データの作成年を示すフラグに値“１”が設定され、その他のフラグには“＊”が設定される。例えば、２００９年に作成したデータの場合、期間情報符号化列２に示すように、２００９年フラグに値“１”が設定され、その他は“＊”が設定される。この場合、上述した２００７年から２００９年までのデータを検索や復号できる期間情報符号化列１とＡＮＤ判定を行うと、全ての要素が一致するため結果が真となり、検索や復号ができる。
２０１０年に作成したデータの場合、期間情報符号化列３に示すように、２０１０年フラグに値“１”が設定され、その他のフラグには“＊”が設定される。この場合、ユーザ秘密鍵の期間情報符号化列１とＡＮＤ判定を行うと、２０１０年フラグの値が異なるため結果が偽となり、検索や復号は実施できない。
【００９７】
２番目の設定例では、ユーザ秘密鍵を生成する場合、アクセス可能な文書の作成年に該当するフラグに値“１”が設定され、アクセス不可能な文書の作成年に該当するフラグにはそれぞれ異なる乱数Ｒが設定される。暗号化データを生成する場合、作成した年に対応するフラグには値“１”が設定され、他のフラグにはそれぞれ異なる乱数Ｒが設定される。ユーザ秘密鍵と暗号化データとは、いずれか１つでも一致すればよいというＯＲ判定にて比較され、判定結果が真である時に限って、検索や復号ができる。
【００９８】
図２６は、構成例１の場合の２番目の設定例における期間情報符号化列５０８の設定例を示す図である。なお、図２６では説明の簡単のため、図２５と同様に、図２４に比べ範囲を２００７年から２０１２年までに短縮している。
ユーザ秘密鍵の作成に用いる期間情報符号化列の設定は、１番目の設定例と同一であるため説明は省略する。
データを暗号化する場合は、データの作成年を示すフラグに値“１”が設定され、その他はそれぞれ異なる乱数Ｒが設定される。例えば、２００９年に作成したデータの場合、期間情報符号化列４に示すように、２００９年フラグに値“１”が設定され、その他はそれぞれ異なる乱数Ｒが設定される。この場合、上述した２００７年から２００９年までのデータを検索や復号できる期間情報符号化列１とＯＲ判定を行うと、２００９年フラグの値が一致するため結果が真となり、検索や復号ができる。
２０１０年に作成したデータの場合、期間情報符号化列５に示すように、２０１０年フラグに値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、ユーザ秘密鍵の期間情報符号化列１とＯＲ判定を行うと、全てのフラグの値が異なるため結果が偽となり、検索や復号は実施できない。
【００９９】
図２７は、期間情報符号化列５０８の構成例２を示す図である。
構成例２は、構成例１に比べて少ないフラグ数で、より細かな制御が行えるようにしたものである。本符号化列は、アクセス可能な期間の開始年１２０４の情報を含める開始年月符号化列１２０１、期間の終了年の情報を含める終了年月符号化列１２０３、その間の年の情報を含める中間年符号化列１２０２から構成される。
開始年月符号化列１２０１は、年を示す開始年（開始年符号化列）、各月に作成されたデータへのアクセスが可能かどうかを示す１月フラグ１２０５ａから１２月フラグ１２０５ｌ（開始月符号化列）にて構成される。終了年月符号化列１２０３も開始年月符号化列１２０１と構成は同一であり、終了年符号化列と終了月符号化列にて構成される。中間年符号化列１２０２は、開始年と終了年との間の年の情報である中間年設定値１２０６を列挙した符号化列である。
ユーザ秘密鍵を生成する場合は、アクセス可能な期間の情報に基づき、開始年月符号化列１２０１に開始年の情報が設定され、終了年月符号化列１２０３に終了年の情報が設定され、中間年符号化列１２０２にその中間の年が設定される。暗号化データを生成する場合は、それぞれ開始年月符号化列１２０１、中間年符号化列１２０２、終了年月符号化列１２０３に、暗号化データの生成の年月情報が設定される。
期間情報符号化列５０８についてユーザ秘密鍵と暗号化データとが比較される場合は、開始年月符号化列１２０１と中間年符号化列１２０２と終了年月符号化列１２０３とを個別に比較され、いずれかの比較結果が真である時、すなわちＯＲ判定を行って結果が真である時、条件が成立したと見なす。開始年月符号化列１２０１が比較される場合は、開始年が同一であって、１月フラグから１２月フラグまでは構成例１で示した方法でＡＮＤ判定かＯＲ判定すればよい。終了年月符号化列１２０３の比較も、開始年月符号化列１２０１の比較と同一である。中間年符号化列１２０２はＯＲ判定もしくは包含関係判定を行い、いずれかの要素が一致することを判定すればよい。
【０１００】
図２８から図３０は、構成例２の場合の期間情報符号化列５０８の設定例を示す図である。
図２８に示す期間情報符号化列６は、２００３年４月から２００９年１２月までに作成されたデータを検索や復号できるユーザのユーザ秘密鍵に設定する期間情報符号化列５０８の設定例である。ここでは、開始年月符号化列１２０１と終了年月符号化列１２０３とに含まれる各月フラグはＯＲ検索で比較されるケースを示す。
図２８に示すように、開始年月符号化列６は２００３年に関するアクセス可否の情報が設定される。具体的には、開始年には２００３年が設定される。また、アクセスできない１月から３月に対応するフラグはそれぞれ異なる乱数Ｒが設定され、アクセス可能な４月から１２月のフラグには値“１”が設定される。中間年符号化列６は、アクセス可能な２００４年から２００８年が列挙して設定され、余白領域はそれぞれ異なる乱数Ｒが設定される。終了年月符号化列６には、アクセス可能期間の最終年である２００９年が設定され、アクセス可能な１月から１２月までのフラグには値“１”が設定される。
【０１０１】
図２９に示す期間情報符号化列７は、期間情報符号化列６に比べて、アクセス可能な期間の終了が２０１０年３月までである点が異なるユーザ秘密鍵に設定する期間情報符号化列５０８の設定例である。
そのため、開始年月符号化列７は、開始年月符号化列６と同一である。中間年符号化列７は、中間年符号化列６に対して２００９年という情報が追加で設定されている。終了年月符号化列７は、終了年である２０１０年に関する情報が、終了年月符号化列６と同一のルールに従って設定されている。
【０１０２】
図３０に示す期間情報符号化列８は、２００９年４月に作成した暗号化データの期間情報符号化列５０８の設定例である。開始年月符号化列１２０１には、開始年に２００９年が設定され、月フラグにはデータを作成した４月に対応するフラグのみ値“１”が設定され、その他の月フラグにはそれぞれ異なる乱数Ｒが設定される。終了年月符号化列１２０３も、同様に設定される。中間年符号化列１２０２は、全ての中間年に対して２００９年が設定される。
例えば図２８で示したユーザ秘密鍵の期間情報符号化列６と、図３０で示した暗号化データの期間情報符号化列８が比較される場合は、開始年月符号化列６と開始年月符号化列８、中間年符号化列６と中間年符号化列８、終了年月符号化列６と終了年月符号化列８とがそれぞれ比較される。この場合、終了年月符号化列６と終了年月符号化列８を比較すると、終了年同士が同一で真となり、月フラグは４月フラグが同一であるため真となるため、終了年月符号化列の比較結果も真となる。その結果、期間情報符号化列６で生成したユーザ秘密鍵で、期間情報符号化列８で生成した暗号化データを検索することが可能となる。
同様にして、図２９で示したユーザ秘密鍵の期間情報符号化列７と、図３０で示した暗号化データの期間情報符号化列８を比較すると、中間年符号化列７内の中間年と、中間年符号化列８内の中間年で一致するものがあるため、列挙した中間年同士のＯＲ判定の結果が真となり、中間年符号化列の比較結果が真となる。その結果、期間情報符号化列７で生成したユーザ秘密鍵で、期間情報符号化列８で生成した暗号化データを検索することが可能となる。
【０１０３】
図３１は、期間情報符号化列５０８の構成例３を示す図である。
構成例３では、構成例１に比べてフラグの利用効率を向上させたものである。本符号化列は、年を設定する年情報１から年情報１０で構成される。ユーザ秘密鍵と暗号化データとは、暗号化データに含まれる期間情報符号化列５０８の値が、ユーザ秘密鍵に設定されている期間情報符号化列５０８の値に出現するかどうかを、包含関係判定にて比較される。
ユーザ秘密鍵を生成する場合は、アクセス可能な期間の情報に基づき、年情報１から年情報１０に対して、年が設定される。暗号化データを生成する場合は、年情報１に対して作成年が設定される。
【０１０４】
図３２は、期間情報符号化列５０８の構成例３の設定例を示す図である。
例えば２００７年から２００９年までのデータにアクセス可能な場合、ユーザ秘密鍵には期間情報符号化列９に示すように、２００７年と２００８年と２００９年が指定された期間情報符号化列が設定される。一方、２００９年に作成した暗号化データに対しては、期間情報符号化列１０に示すように年情報１に対して２００９年を設定した期間情報符号化列が設定される。この両者を包含関係判定すると、暗号化データに設定した２００９年という値は、秘密鍵に設定した期間情報符号化列９に現れるため、データを復号や検索することができる。
【０１０５】
ここでは、構成例３として年情報だけを持たせたが、同様の構成で開始年と終了年については、月情報を持たせてもよい。つまり、図３２に示す例であれば、開始年である２００７年と、終了年である２００９年とについて、月情報を持たせてもよい。すなわち、月情報１から月情報１２で構成される月情報を開始年と終了年とに持たせ、ユーザ秘密鍵を生成する場合は、アクセス可能な期間の情報に基づき、月が設定される。暗号化データを生成する場合は、月情報に対して作成月が設定される。
この場合、構成例２に比べてより簡単に月単位の期間情報を設定することが可能である。
【０１０６】
委譲先情報符号化列５０９について説明する。
図３３は、委譲先情報符号化列５０９の構成例を示す図である。
委譲先情報符号化列５０９は、役員や所長などの役職に就いているユーザに関しては、秘書に業務の代理を依頼する場合があるが、その際にアクセスできる文書に制約を設けるために利用するフラグである。
委譲先情報符号化列５０９は、役員が秘書に委譲したことを示す役員秘書フラグ１３０１、所長の業務を代行可能な秘書や副所長に委譲したことを示す所長代理フラグ１３０２、以下同様に部長代理フラグ１３０３、課長代理フラグ１３０４、同僚フラグ１３０５で構成される。委譲ユーザ秘密鍵を生成する場合は、委譲先ユーザの属性に応じて対応するフラグを値“１”が設定される。暗号化データを生成する場合は、アクセスを許可する場合に値“１”が設定される。
委譲先情報符号化列５０９についてユーザ秘密鍵と暗号化データとは、ＡＮＤ判定にて比較される。
【０１０７】
図３４は、委譲先情報符号化列５０９の設定例を示す図である。
ユーザ本人が所持しているユーザ秘密鍵には、委譲先情報符号化列１に示すように、全てのフラグに“＊”が設定される。もし役員が役員秘書にデータへのアクセス権限を委譲する場合、委譲先情報符号化列２に示すように、役員秘書フラグ１３０１に値“１”が設定され、他のフラグには“＊”が設定されて委譲ユーザ秘密鍵が作成され、委譲ユーザ秘密鍵が秘書へ送信される。また、所長が所長代理である秘書にデータへのアクセス権限を委譲する場合、委譲先情報符号化列３に示すように、所長代理フラグ１３０２に値“１”が設定され、他のフラグには“＊”が設定されて委譲ユーザ秘密鍵が作成され、委譲ユーザ秘密鍵が秘書へ送信される。
データを作成する場合、代理者はアクセスできず、本人に限定してアクセスを許可したい場合は、委譲先情報符号化列４に示すように、全てのフラグにそれぞれ異なる乱数Ｒが設定される。この場合、委譲先情報符号化列１で示したユーザ秘密鍵を持つ本人のみが、ＡＮＤ判定の結果が真となるため、データへのアクセスが可能となる。一方、委譲先情報符号化列２や委譲先情報符号化列３で示したような委譲ユーザ秘密鍵を持つユーザは、値“１”が設定されたフラグが異なるため、ＡＮＤ判定の結果が偽となり、検索も復号もできないようになる。
本人だけでなく役員秘書であれば復号できるようにしたい場合は、委譲先情報符号化列５に示したように、役員秘書フラグ１３０１に値“１”が設定され、その他のフラグにはそれぞれ異なる乱数Ｒが設定される。この場合、委譲先情報符号化列１をもつユーザ秘密鍵と、委譲先情報符号化列２を持つ委譲ユーザ秘密鍵のみ、ＡＮＤ判定の結果が真となり、検索や復号が可能となる。しかし、委譲先情報符号化列３の様な委譲ユーザ秘密鍵を持つ場合は、ＡＮＤ判定の結果が偽となり、検索も復号もできない。
【０１０８】
図３５は、鍵用途フラグ５１０の設定例を示す図である。
ユーザ秘密鍵を生成する場合、鍵用途フラグ５１０には、データ復号にもトラップドア生成にも使えることを示す“＊”が設定される。ユーザ秘密鍵からトラップドアを生成する場合、鍵用途フラグ５１０には、“検索”を示す値が設定される。暗号化データを生成する場合において、検索に利用するタグを生成する場合、鍵用途フラグ５１０には“検索”を示す値が設定され、データ暗号化鍵を暗号化する場合、鍵用途フラグ５１０には、“鍵”を示す値が設定される。
ユーザ秘密鍵と暗号化データとは、ＡＮＤ判定にて比較される。
【０１０９】
例えば、トラップドアではフラグとして“検索”を示す値が設定されている。つまり、暗号化データのタグのフラグと同じ“検索”を示す値が設定されているため、検索が可能となる。しかし、暗号化データ暗号化鍵と比較すると、常に値が異なるため、復号はできない。一方、ユーザ秘密鍵はフラグとして“＊”が格納されているため、暗号化データ暗号化鍵のフラグとＡＮＤ判定すると常に真となるため、復号ができる。
【０１１０】
なお、鍵用途フラグ５１０について、ここでは、検索用のタグと、データ暗号化鍵を暗号化した暗号化データ暗号化鍵は、別々に暗号化して添付された場合（図５に示す暗号化データＡ）を仮定して説明した。
しかし、非特許文献２に記載された内積述語暗号は、タグと暗号化データ暗号化鍵を共通化してタグ兼データ暗号化鍵とすることが可能である。つまり、図７に示す暗号化データＢの構成とすることが可能である。この場合、鍵用途フラグ５１０は符号化列に含める必要はない。
【０１１１】
検索語符号化列５１１について説明する。
検索語符号化列５１１は、データを検索する場合に設定されるフィールドで、企業が管理するデータの構造に合わせて適切な構造を設定する必要がある。例えば、データベースのようにデータが構造化されて管理されている場合、列毎にキーワードが一致するかどうかを検証するため、検索語符号化列も合わせて構造化する必要がある。一方、一般的な書類を考えた場合、データは構造化されていないため、キーワードの並び順に影響しないように符号化列を工夫する必要がある。
【０１１２】
図３６は、検索語符号化列５１１の設定例１を示す図である。図３６は、物品購入・廃棄の履歴を管理したデータベースに対して、キーワードのＡＮＤ検索を行う場合を想定した設定例である。
データを暗号化する場合、検索語符号化列５１１にはデータベースに格納した各要素のデータが設定される。例えば、データベースの１行目に２００９年１０月５日にＰＣ３台を１０万円／台で購入した場合のデータを保管した場合、検索語符号化列５１１は検索語符号化列１のようにデータベースの各列に対応して符号化列の各要素が設定される。同様に、データベースの２行目に２００９年１１月１０日にＰＣ２台を８万円／台で購入した場合のデータを保管した場合、検索語符号化列５１１は検索語符号化列２の様に符号化列が構成される。同様に、データベースの３行目に２０１０年１月１５日にＰＣ１台を廃棄した場合のデータを保管した場合、検索語符号化列５１１は検索語符号化列３の様に符号化列が構成される。なお、検索語符号化列３の列７のように、データベースの要素が空（未設定）の場合には、“−”と表記する。
ユーザ秘密鍵を生成する場合、一般にはどの列に対しても検索できるようにするため、検索語符号化列４に示すように、検索語符号化列５１１には各列に対応する全ての要素が“＊”に設定される。
トラップドアを生成する場合、ユーザは検索したいキーワードとして、２００９年にＰＣを購入した履歴が欲しいと指定した場合、検索語符号化列５１１は検索語符号化列５の様に構成される。この検索語符号化列５の生成は、ユーザ秘密鍵からトラップドアを生成する際に実施される。この検索語符号化列５の各要素と、検索語符号化列１及び検索語符号化列２の各要素をＡＮＤ判定することで、全ての要素が一致することから判定結果は真となり、検索することができるこれは、トラップドアで暗号化データを検索した場合、検索にヒットと判定されることを意味する。一方、検索語符号化列５の各要素と、検索語符号化列３の各要素をＡＮＤ判定すると、列８の要素が異なることから判定結果は偽となる。これは、トラップドアで暗号化データを検索した場合、検索にヒットしないことを意味する。つまり、ＰＣを廃棄した履歴は検索されない。
【０１１３】
図３７は、検索語符号化列５１１の設定例２を示す図である。図３７は、一般的な書類を想定した場合に使う設定例である。特に、図３７は、出現するキーワードの順番を問わずに、検索キーワードが、データ中に現れているかどうかを包含関係判定したい場合の例である。
データを暗号化する場合、検索語符号化列５１１には文書に含まれるキーワードで、後ほど検索に使われるであろうキーワードを、任意の順で設定する。例えば、２００９年１１月に東京にあるＡ社に商談のため出張して、受注が決定したことを報告する報告書の場合、検索語符号化列５１１は検索語符号化列６の様に構成される。また、２００９年に展示会に出展した結果、５０名ほどの来客があり、特にＢ社の田中さんから後ほど電話で商談を申し込みされた場合、検索語符号化列５１１は検索語符号化列７の様に構成される。
ユーザ秘密鍵を生成する場合は、図３６で示した例と同様に、どの様なキーワードでも検索できるようにするため、検索語符号化列８に示すように、検索語符号化列５１１には全ての要素が空（“−”）に設定される。
トラップドアを生成する場合において、ユーザが２００９年に作成した文書を検索したいとする。この場合、２００９年を指定した検索語符号化列９が作成される。検索語符号化列は、暗号化データの検索語符号化列に対して、トラップドアの検索語符号化列が含まれるかどうかの包含関係判定にて比較される。この場合、検索語符号化列９の要素１に指定した２００９年というキーワードを含む暗号化データ、本例では検索語符号化列６と検索語符号化列７の両方共に、包含関係判定の結果が真となる。つまり、検索語符号化列６と検索語符号化列７の両方が検索にヒットする。
検索したいキーワードが展示会であった場合、検索語符号化列１０に示すような検索語符号化列を生成する。検索語符号化列の比較を行うと、検索語符号化列１０の要素１に示す展示会を含むのは検索語符号化列７であるので、この検索語符号化列同士の包含関係判定の結果は真となる。一方、検索語符号化列６には展示会というキーワードが含まれないため、この検索語符号化列同士の包含関係判定の結果は偽となる。つまり、検索語符号化列７は検索にヒットするが、検索語符号化列６は検索にヒットしない。
【０１１４】
以上のように、属性情報符号化列５０１には、様々なタイプの符号化列がある。
例えば、所属情報符号化列５０３のように、符号化列の各項目に、ユーザの属性が設定される属性項目が割り当てられた符号化列がある。所属情報符号化列５０３では、符号化列の各項目に、会社ＩＤ６０１や事業所ＩＤ６０２等の属性項目が割り当てられている。そして、例えば、会社ＩＤ６０１であれば、会社を示す属性情報が設定される。
また、例えば、役職情報符号化列５０４のように、符号化列の各項目にユーザの属性が割り当てられた符号化列がある。役職情報符号化列５０４では、符号化列の各項目に、役員であることを示す役員クラスフラグ７０１や、所長であることを示す所長クラスフラグ７０２等のユーザの属性が割り当てられている。そして、ユーザの役職のフラグに該当することを示す値“１”が設定される。
また、例えば、機密度符号化列５０６のように、符号化列の各項目に暗号化されるデータの属性が割り当てられた符号化列がある。機密度符号化列５０６では、極秘扱いのデータであることを示す極秘フラグ９０１等のデータの属性が割り当てられている。そして、データの機密度のフラグに該当することを示す値“１”が設定される。
また、期間情報符号化列５０８等のように、他とは異なる独特な構造の符号化列もある。
【０１１５】
鍵管理サーバ２０１の符号化情報生成部２０６と、アクセス端末３０１の符号化情報生成部３０６とは、属性情報符号化列５０１における符号化列のタイプに応じて、符号の割り当て方を変える。
【０１１６】
符号化列の各項目に、属性項目が割り当てられた符号化列の場合、鍵管理サーバ２０１の符号化情報生成部２０６は、復号鍵を使用するユーザの属性を示す属性情報であって、その項目に割り当てられた属性項目に対応する属性情報を設定する。符号化情報生成部２０６は、属性情報を設定しない符号化列の項目には“＊”を設定して符号化情報を生成する。
また、この場合、アクセス端末３０１の符号化情報生成部３０６は、符号化列の各項目に、暗号化データを復号可能なユーザを限定する属性情報であって、その項目に割り当てられた属性項目に対応する属性情報を設定する。符号化情報生成部３０６は、属性情報を設定しない符号化列の項目には“＊”を設定する。
そして、ユーザ秘密鍵と暗号化データとは、ＡＮＤ判定にて比較される。
【０１１７】
符号化列の各項目にユーザの属性が割り当てられた符号化列の場合、鍵管理サーバ２０１の符号化情報生成部２０６は、復号鍵を使用するユーザの属性に該当する属性が割り当てられた項目には該当値“１”を設定する。そして、ユーザ秘密鍵と暗号化データとをＡＮＤ判定で比較を行う場合には、符号化情報生成部２０６は、該当値“１”を設定しない符号化列の項目には“＊”を設定する。ユーザ秘密鍵と暗号化データとをＯＲ判定で比較を行う場合には、符号化情報生成部２０６は、該当値“１”を設定しない符号化列の項目には乱数Ｒを設定する。
また、この場合、アクセス端末３０１の符号化情報生成部３０６は、符号化列の各項目に、暗号化データを復号可能なユーザに該当する属性が割り当てられた項目には該当値“１”を設定する。符号化情報生成部３０６は、該当値“１”を設定しない符号化列の項目には乱数Ｒを設定する。
【０１１８】
符号化列の各項目に暗号化されるデータの属性が割り当てられた符号化列の場合、鍵管理サーバ２０１の符号化情報生成部２０６は、復号鍵を使用するユーザの属性（権限）に該当する属性が割り当てられた項目には該当値“１”を設定する。符号化情報生成部２０６は、該当値“１”を設定しない符号化列の項目には乱数Ｒを設定する。
また、この場合、アクセス端末３０１の符号化情報生成部３０６は、データの属性に該当する属性が割り当てられた項目には該当値“１”を設定する。そして、ユーザ秘密鍵と暗号化データとをＡＮＤ判定で比較を行う場合には、符号化情報生成部３０６は、該当値“１”を設定しない符号化列の項目には“＊”を設定する。ユーザ秘密鍵と暗号化データとをＯＲ判定で比較を行う場合には、符号化情報生成部３０６は、該当値“１”を設定しない符号化列の項目には乱数Ｒを設定する。
【０１１９】
なお、上述した属性情報符号化列５０１には含まれていないが、符号化列の各項目に、暗号化されるデータの属性が設定される属性項目が割り当てられた符号化列がある。例えば、機密度符号化列５０６が機密度毎にフラグが割り当てられているのではなく、機密度のＩＤを設定するようになっている場合が想定される。
この場合、鍵管理サーバ２０１の符号化情報生成部２０６は、復号鍵を使用するユーザの属性（権限）を示す属性情報であって、その項目に割り当てられた属性項目に対応する属性情報を設定する。符号化情報生成部２０６は、属性情報を設定しない符号化列の項目には“＊”を設定して符号化情報を生成する。
また、この場合、アクセス端末３０１の符号化情報生成部３０６は、符号化列の各項目に、データの属性を示す属性情報であって、その項目に割り当てられた属性項目に対応する属性情報を設定する。符号化情報生成部３０６は、属性情報を設定しない符号化列の項目には“＊”を設定する。
そして、ユーザ秘密鍵と暗号化データとは、ＡＮＤ判定で比較される。
【０１２０】
次に、上述した属性情報符号化列５０１を用いて生成される符号化情報からユーザ秘密鍵における述語ベクトルや、暗号化データにおける属性ベクトルに変換するベクトル化方法について説明する。つまり、鍵管理サーバ２０１のベクトル生成部２０７が符号化情報から述語ベクトルを生成する方法と、アクセス端末３０１のベクトル生成部３０７が符号化情報から属性ベクトル又は述語ベクトルを生成する方法とを説明する。
なお、ここではＡＮＤ判定、ＯＲ判定、包含関係判定を行う場合のそれぞれについて、別々にベクトル化の方法を示す。しかし、実際の属性情報符号化列５０１では、符号化列毎にＡＮＤ判定、ＯＲ判定、包含関係判定が任意に選択される。そのため、作成された符号化情報は、ＡＮＤ判定で比較される部分、ＯＲ判定で比較される部分、包含関係判定で比較される部分を含んでいる可能性がある。つまり、所属情報符号化列５０３はＡＮＤ判定で比較され、役職情報符号化列５０４はＯＲ判定で比較される場合のように、属性情報符号化列５０１の符号化列によって判定方法が異なる場合がある。この場合には、符号化情報のうち、ＡＮＤ判定で比較される部分についてはＡＮＤ判定で比較する場合のベクトル化方法を用い、ＯＲ判定で比較される部分についてはＯＲ判定で比較する場合のベクトル化方法を用い、包含関係判定で比較される部分については包含関係判定で比較する場合のベクトル化方法を用いて、属性ベクトルや述語ベクトルを生成すればよい。
【０１２１】
図３８は、属性情報符号化列５０１における符号化列をＡＮＤ判定で比較する場合についてのベクトル化方法の説明図である。
【０１２２】
基本的な考え方を以下の多項式１に基づき説明する。
（多項式１）
ｒ１（ｂ１−ａ１）＋ｒ２（ｂ２−ａ２）＋ｒ３（ｂ３−ａ３）
多項式１は、乱数ｒ１，ｒ２，ｒ３と、値ａ１，ａ２，ａ３，ｂ１，ｂ２，ｂ３とからなる多項式である。この多項式の値が乱数ｒ１，ｒ２，ｒ３に依存せず常に０となるのは、ｂ１＝ａ１，ｂ２＝ａ２，ｂ３＝ａ３の全てが成立する時である。つまり、この多項式の値が乱数ｒ１，ｒ２，ｒ３に依存せず常に０となるのは、ｂ１＝ａ１  ＡＮＤ  ｂ２＝ａ２  ＡＮＤ  ｂ３＝ａ３が成立する時である。
値ａ１，ａ２，ａ３を暗号化データを作成する際の符号化列の要素と考え、値ｂ１，ｂ２，ｂ３を秘密鍵に含める符号化列の要素と考える。この場合に、多項式１を評価した結果が０となるかどうかを内積を用いて判定できれば、内積を用いて、ｂ１＝ａ１  ＡＮＤ  ｂ２＝ａ２  ＡＮＤ  ｂ３＝ａ３が成立するか否かを判定できると言える。
【０１２３】
そこで、次のように、符号化列の要素である値ａ１，ａ２，ａ３から属性ベクトルを生成し、符号化列の要素である値ｂ１，ｂ２，ｂ３から述語ベクトルを生成する。
属性ベクトルを作成する場合、ｉ番目の要素であれば、値“１”と値“−ａｉ”との２要素を生成し、これを全ての要素に関して順番に並べたものを属性ベクトルｘとする。つまり、属性ベクトルｘは図３８に示すようになる。なお、符号化列の要素ａｉが数値の場合はそのまま利用するが、符号化列の要素ａｉが文字列の場合はそれを数値化した値を利用する。また特殊な例として、符号化列の要素ａｉが“＊”である場合、符号化列の要素ａｉに対応する属性ベクトルの要素は０と０の２要素を設定する。
述語ベクトルを作成する場合、ｉ番目の要素であれば、値“ｂｉ”と値“１”との２要素を生成し、これを全ての要素に関して順番に並べたものを述語ベクトルｖとする。つまり、述語ベクトルｖは図３８に示すようになる。なお、符号化列の要素ｂｉが数値の場合はそのまま利用するが、符号化列の要素ｂｉが文字列の場合はそれを数値化した値を利用する。また特殊な例として、符号化列の要素ｂｉが “＊”である場合、符号化列の要素ｂｉに対応する属性ベクトルの要素は０と０の２要素を設定する。
つまり、属性ベクトルｘ→＝（１、−ａ１，１，−ａ２，１，−ａ３）である。また、述語ベクトルｖ→＝（ｂ１，１，ｂ２，１，ｂ３，１）である。
なお、属性ベクトルｘの要素ａｉと述語ベクトルｖの要素ｂｉの負号を逆にして、属性ベクトルｘ→＝（１、ａ１，１，ａ２，１，ａ３），述語ベクトルｖ→＝（−ｂ１，１，−ｂ２，１，−ｂ３，１）としてもよい。
【０１２４】
ここで、多項式１では乱数ｒ１，ｒ２，ｒ３を掛け合わせていたが、上記のベクトル化では乱数を掛け合わせていない。これは、非特許文献２に記載された内積述語暗号で暗号化する際に乱数を掛け合わせているため、ベクトル化の際には乱数が不要であるためである。なお、使用する内積述語暗号で暗号化する際に乱数を掛け合わせていない場合には、ベクトル化の際に、各要素を乱数倍してもよい。
【０１２５】
なお、ＡＮＤ判定の場合は、各要素ａ１，ａ２，ａ３やｂ１，ｂ２，ｂ３は独立した要素としてベクトル化できるため、後述する属性ＩＤは、ＡＮＤ判定符号化列内の各要素に付与される。
【０１２６】
図３９は、属性情報符号化列５０１における符号化列をＯＲ判定で比較する場合についてのベクトル化方法の説明図である。図３９では、例の複雑化を防止するため、３要素を比較して、いずれかが一致すればよい場合のベクトル化例を示す。なお、一般のｎ個の要素であっても、同様の手順で実施可能である。
【０１２７】
基本的な考え方を以下の多項式２に基づき説明する。
（多項式２）
（ｂ１−ａ１）（ｂ２−ａ２）（ｂ３−ａ３）
＝ｂ１ｂ２ｂ３−ａ３ｂ１ｂ２−ａ２ｂ１ｂ３−ａ１ｂ２ｂ３＋ａ２ａ３ｂ１＋ａ１ａ３ｂ２＋ａ１ａ２ｂ３−ａ１ａ２ａ３
多項式２は３変数の多項式であるが、この多項式の値が０となるのは、ｂ１＝ａ１，ｂ２＝ａ２，ｂ３＝ａ３のうち少なくともいずれか１つが成立する時である。つまり、この多項式の値が０となるのは、ｂ１＝ａ１  ＯＲ  ｂ２＝ａ２  ＯＲ  ｂ３＝ａ３が成立する時である。
値ａ１，ａ２，ａ３を暗号化データを作成する際の符号化列の要素と考え、値ｂ１，ｂ２，ｂ３を秘密鍵に含める符号化列の要素と考える。この場合に、多項式２を評価した結果が０となるかどうかを内積を用いて判定できれば、内積を用いて、ｂ１＝ａ１  ＯＲ  ｂ２＝ａ２  ＯＲ  ｂ３＝ａ３が成立するか否かを判定できると言える。
【０１２８】
そこで、次のように、符号化列の要素である値ａ１，ａ２，ａ３から属性ベクトルを生成し、符号化列の要素である値ｂ１，ｂ２，ｂ３から述語ベクトルを生成する。
属性ベクトルを作成する場合、多項式２の各項に関して、暗号化データを作成する場合の符号化列の要素である値ａ１，ａ２，ａ３に関するもののみを抽出し、ベクトル化する。例えば、第１項目はｂ１ｂ２ｂ３であり、要素ａ１，ａ２，ａ３に関する情報はないため、ベクトルの第１要素は１とする。第２項目は−ａ３ｂ１ｂ２であり、要素ａ１，ａ２，ａ３に関する情報として−ａ３を取り出し、ベクトルの第２要素とする。同様にして、全ての項に対して上記操作を繰り返すことで、図３９に示す属性ベクトルｘを得る。なお、符号化列のいずれかの要素が“＊”であった場合、ＯＲ判定は常に真となる。そこで、符号化列のいずれかの要素が“＊”であった場合、その符号化列に対応する属性ベクトルは全ての要素が０である０ベクトルとする。
【０１２９】
同様の手順で述語ベクトルも構成可能である。しかし、値ａ１，ａ２，ａ３ではなく値ｂ１，ｂ２，ｂ３に着目する点で異なる。例えば、第１項目はｂ１ｂ２ｂ３であり、要素ｂ１ｂ２ｂ３に関する情報としてｂ１ｂ２ｂ３を取り出し、ベクトルの第１要素とする。第２項目は−ａ３ｂ１ｂ２であり、要素ｂ１ｂ２ｂ３に関する情報としてｂ１ｂ２を取り出し、ベクトルの第２要素とする。なお、属性ベクトル生成の際に負数を設定した場合は、こちらは正の数として設定する。同様にして、全ての項に対して上記操作を繰り返すことで、図３９に示す述語ベクトルを得る。なお、属性ベクトル生成の際に負数を設定した場合は、こちらは正の数として設定する。また、符号化列のいずれかの要素が“＊”であった場合、ＯＲ判定は常に真となる。そこで、符号化列のいずれかの要素が“＊”であった場合、その符号化列に対応する述語ベクトルは全ての要素が０である０ベクトルとする。
【０１３０】
なお、ＯＲ判定の場合は、各要素ａ１，ａ２，ａ３やｂ１，ｂ２，ｂ３は密接に関連付けられてベクトル化されるため、後述する属性ＩＤは、ＯＲ判定を行うＯＲ判定符号化列に対して１つ付加される。
【０１３１】
図４０は、属性情報符号化列５０１における符号化列を包含関係判定で比較する場合についてのベクトル化方法の説明図である。ここで述べる包含関係判定とは、包含関係符号化列２に現れる要素の全てが、包含関係符号化列１で示す要素として現れるかどうかを判定することである。図４０では、例の複雑化を防止するため、３要素を比較して、いずれかが一致すればよい場合のベクトル化例を示す。なお、一般のｎ個の要素であっても、同様の手順で実施可能である。
【０１３２】
基本的な考え方を以下の多項式３に基づき説明する。
（多項式３）
（ｂ−ａ１）（ｂ−ａ２）（ｂ−ａ３）
＝ｂ３−（ａ１＋ａ２＋ａ３）ｂ２＋（ａ１ａ２＋ａ１ａ３＋ａ２ａ３）ｂ−ａ１ａ２ａ３
この多項式の値が０となるのは、ｂ＝ａ１，ｂ＝ａ２，ｂ＝ａ３のうち少なくともいずれか１つが成立する時である。つまり、ｂがａ１，ａ２，ａ３の少なくともいずれかに含まれる時である。
値ａ１，ａ２，ａ３を暗号化データを作成する際の符号化列の要素と考え、値ｂを秘密鍵に含める符号化列の要素と考える。この場合に、多項式３を評価した結果が０となるかどうかを内積を用いて判定できれば、内積を用いて、ｂがａ１，ａ２，ａ３の少なくともいずれかに含まれるか否かを判定できると言える。
【０１３３】
そこで、次のように、符号化列の要素である値ａ１，ａ２，ａ３から属性ベクトルを生成し、符号化列の要素である値ｂから述語ベクトルを生成する。
属性ベクトルを作成する場合、多項式３の各項に関して、暗号化データを作成する場合の符号化列の要素である値ａ１，ａ２，ａ３に関するもののみを抽出し、ベクトル化する。例えば、第１項目はｂ３であり、要素ａ１，ａ２，ａ３に関する情報はないため、ベクトルの第１要素は１とする。第２項目は−（ａ１＋ａ２＋ａ３）ｂ２であるため、要素ａ１，ａ２，ａ３に関する情報として−（ａ１＋ａ２＋ａ３）を取り出し、ベクトルの第２要素とする。同様にして、全ての項に対して上記操作を繰り返すことで、図４０に示すように属性ベクトルを得る。
【０１３４】
同様の手順で述語ベクトルも構成可能である。しかし、値ａ１，ａ２，ａ３ではなく値ｂに着目する点で異なる。例えば、第１項目はｂ３であるため、要素ｂに関する情報としてｂ３を取り出し、ベクトルの第１要素とする。第２項目は、−（ａ１＋ａ２＋ａ３）ｂ２であるため、要素ｂに関する情報としてｂ２を取り出し、ベクトルの第２要素とする。なお、属性ベクトル生成の際に負数を設定した場合は、こちらは正の数として設定する。同様にして、全ての項に対して上記操作を繰り返すことで、述語ベクトルを得る。
【０１３５】
また、多項式４が０になるのは、上記説明と同様に考えるとｂ１＝ａ１，ｂ１＝ａ２，ｂ１＝ａ３の少なくともいずれか１つが成り立ち、かつ、ｂ２＝ａ１，ｂ２＝ａ２，ｂ２＝ａ３の少なくともいずれか１つが成り立つ時である。
（多項式４）
（ｂ１−ａ１）（ｂ１−ａ２）（ｂ１−ａ３）＋（ｂ２−ａ１）（ｂ２−ａ２）（ｂ２−ａ３）
＝（ｂ１３＋ｂ２３）−（ａ１＋ａ２＋ａ３）（ｂ１２＋ｂ２２）＋（ａ１ａ２＋ａ１ａ３＋ａ２ａ３）（ｂ１＋ｂ２）−ａ１ａ２ａ３
値ａ１，ａ２，ａ３を暗号化データを作成する際の符号化列の要素と考え、値ｂ１，ｂ２を秘密鍵に含める符号化列の要素と考える。この場合に、多項式４を評価した結果が０となるかどうかを内積を用いて判定できれば、内積を用いて、ｂ１がａ１，ａ２，ａ３の少なくともいずれかに含まれ、かつ、ｂ２がａ１，ａ２，ａ３の少なくともいずれかに含まれるか否かを判定できると言える。
【０１３６】
属性ベクトルは、多項式３の場合と同様であるため、説明を省略する。
述語ベクトルを作成する場合、多項式４の各項に関して、符号化列の要素である値ｂ１，ｂ２に関するもののみを抽出し、ベクトル化する。例えば、第１項目は（ｂ１３＋ｂ２３）＝Σｂｉ３であるため、要素ｂ１，ｂ２に関する情報としてΣｂｉ３を取り出し、ベクトルの第１要素とする。第２項目は、−（ａ１＋ａ２＋ａ３）（ｂ１２＋ｂ２２）であるため、要素ｂ１，ｂ２に関する情報として（ｂ１２＋ｂ２２）＝Σｂｉ２を取り出し、ベクトルの第２要素とする。同様にして、全ての項に対して上記操作を繰り返すことで、図４０に示すように述語ベクトルを得る。
もし値が未指定を示す記号“−”の場合、その値はベクトル化時には利用しない事を意味する。例えば、述語に指定した要素ｂ２が未指定である場合、Σｂｉ３を計算する際、ｉ＝２に関しては除外すればよい。また、属性に指定した要素ａ３が未指定である場合、ａ３を０や乱数と見なしてもよいし、そもそも多項式を計算する際に（ｂｉ−ａ３）を掛けないようにしてもよい。
【０１３７】
なお、包含関係判定の場合は、各要素ａ１，ａ２，ａ３やｂ１，ｂ２，ｂ３は密接に関連付けられてベクトル化するため、後述する属性ＩＤは、包含関係判定符号化列に対して１つ付加される。
【０１３８】
上記説明では、ＡＮＤ判定、ＯＲ判定、包含関係判定のそれぞれの場合に関して別々に考え方を示した。しかし、ＡＮＤ判定やＯＲ判定を組みあわせた場合は、上記手法を組みあわせて属性ベクトルや述語ベクトルを作成することで実現可能である。例えば、所属情報符号化列５０３についてはＡＮＤ判定を行い、役職情報符号化列５０４についてはＯＲ判定を行う場合には、所属情報符号化列５０３については上述したＡＮＤ判定の手法で属性ベクトルと述語ベクトルとを生成し、役職情報符号化列５０４については上述したＯＲ判定の手法で属性ベクトルと述語ベクトルとを生成すればよい。
【０１３９】
＜第４．秘匿検索システム１００の動作＞
秘匿検索システム１００の動作について説明する。
なお、以下の説明では、内積述語暗号として、非特許文献２に記載された内積述語暗号を用いた場合について説明する。したがって、暗号化データの構成は、図７に示す暗号化データＢの構成となり、データの流れは図８に示す流れとなる。
【０１４０】
秘匿検索システム１００の動作は、（１）システム初期設定、（２）中間秘密鍵生成、（３）ユーザ秘密鍵生成、（４）暗号化データ生成、（５）キーワード検索、（６）委譲ユーザ秘密鍵生成の６つに分けられる。
（１）システム初期設定は、鍵管理サーバ２０１が公開パラメータとマスター鍵とを生成する処理である。（２）中間秘密鍵生成は、鍵管理サーバ２０１がマスター鍵もしくは中間秘密鍵から、新しく中間秘密鍵を生成する処理である。（３）ユーザ秘密鍵生成は、鍵管理サーバ２０１がマスター鍵もしくは中間秘密鍵からユーザ秘密鍵を生成する処理である。（４）暗号化データ生成は、主にユーザがアクセス端末３０１を用いてデータを暗号化し、データセンタ４０１に保管する処理である。（５）キーワード検索は、主にユーザがアクセス端末３０１を用いて、検索したいキーワードを用いて、データセンタ４０１に保管された暗号化データを検索し、データを得る処理である。（６）委譲ユーザ秘密鍵生成は、主にユーザがアクセス端末３０１を用いて、ユーザ秘密鍵から委譲ユーザ秘密鍵を生成する処理である。
【０１４１】
以下、フローチャートに基づき、各動作を説明する。
図４１は、（１）システム初期設定の処理の流れを示すフローチャートである。
図４２は、（２）中間秘密鍵生成の処理の流れを示すフローチャートである。
図４３は、（３）ユーザ秘密鍵生成の処理の流れを示すフローチャートである。
図４４は、（４）暗号化データ生成の処理の流れを示すフローチャートである。
図４５は、（５）キーワード検索の処理の流れを示すフローチャートである。
図４６は、（６）委譲ユーザ秘密鍵生成の処理の流れを示すフローチャートである。
【０１４２】
図４１に基づき、（１）システム初期設定の処理について説明する。
（１）システム初期設定は、鍵管理サーバ２０１で実施される処理であり、特に最初に設置される鍵管理サーバ２０１にて実施される処理である。
【０１４３】
（Ｓ１０１）
符号化情報生成部２０６は、システムで利用する属性情報符号化列５０１の構造及びその要素である符号化列の長さ、格納すべき値のルール、比較方法、及び属性ベクトルや述語ベクトルへのマッピング方法を決定する。例えば、符号化情報生成部２０６は、鍵管理サーバ２０１を設定する管理者等に、上記項目を入力装置から入力させることで上記項目を決定する。
属性情報符号化列５０１の構成例は、上述したとおりである。しかし、用途によっては、組織情報だけで制御できれば良く、役職やデータの種別などで制御が不要な場合などが考えられる。そこで、符号化情報生成部２０６は、例えば、図９で示した属性情報符号化列５０１の中から、必要なもののみを選択させ、あるいは追加、変更させて、秘匿検索システム１００で使用する属性情報符号化列５０１を決定する。
【０１４４】
本例では、図４７に示すシステム共通属性符号化列のように属性情報符号化列５０１の構造が決定されたとする。
また、個人ＩＤ、所属情報符号化列、役職情報符号化列、カテゴリ符号化列、機密度符号化列、雇用形態符号化列、期間情報符号化列、委譲先情報符号化列、検索語符号化列は、全てＡＮＤ判定で比較を行うものとする。
さらに、属性ベクトルや述語ベクトルへのマッピングの最小単位の要素には属性ＩＤとしてＡＩＤを割り振り、対応する属性ベクトルや述語ベクトルの各要素に対してインデックス番号としてＢＩを割り振る。
なお、属性ＩＤの割り振り方は、ＡＮＤ判定であるか、ＯＲ判定であるか、包含関係判定であるかによって異なる。各判定方法における属性ＩＤの割り振り方は、図３８から図４０に基づき説明した各判定方法についてのベクトル化の説明において述べた通りである。また、インデックス番号ＢＩの最大値をｎとする。但し、非特許文献２に記載された内積述語暗号では、タグと暗号化データ暗号化鍵を共通化することができるため、鍵用途フラグは特殊な扱いを行う必要がある。そこで、ここではＡＩＤとＢＩは割り振らず、（４）データ暗号化の処理等の際に対応する。
【０１４５】
図４８から図５０は、属性ＩＤであるＡＩＤの割り振り、及びインデックス番号ＢＩを割り振った例を示す図である。上述したように、全ての要素についてＡＮＤ判定を行うため、図３８に示したように、符号化列の各要素は、２つのベクトル要素に値が割り当てられる。例えば、個人ＩＤであれば、属性ＩＤは１であり、属性ベクトルと述語ベクトルの第１要素（ＢＩ＝１）と第２要素（ＢＩ＝２）に値がマッピングされる。また、カテゴリ符号化列の大分類は、属性ＩＤは１３であり、属性ベクトルと述語ベクトルの第２５要素（ＢＩ＝２５）と第２６要素（ＢＩ＝２６）に値がマッピングされる。
なお、各要素に対してＯＲ判定を行う場合、図３９の変換方式に示したように、複数の要素を一括して属性ベクトルや述語ベクトルにマッピングする必要がある。例えば役職情報符号化列をＯＲ判定する場合、全ての役職情報を一括してベクトル化する必要がある。そのため、図５１に示すように、役職情報符号化列に対して１つのＡＩＤが割り振られ、属性ベクトルや述語ベクトルの各要素にインデックス番号ＢＩが割り振られる。
【０１４６】
（Ｓ１０２）
ユーザ属性情報管理部２０５は、ユーザの属性情報を保管するユーザ属性情報データベースを構築する。
ユーザ属性情報データベースは、属性情報符号化列５０１を作成するために必要な情報が保管されているものである。例えば、図５２に示すように、ユーザ属性情報データベースには、個人ＩＤである氏名、所属情報、役職情報、アクセス可能なデータのデータカテゴリ、アクセス可能なデータの機密度、雇用形態、その所属／役職等にいた期間、等が格納される。また、ユーザ属性情報データベースには、最新の状況だけでなく、過去の履歴を全て格納するようにしてもよい。
【０１４７】
（Ｓ１０３）
マスター鍵生成部２０２は、システムで利用する内積述語暗号のパラメータを処理装置により生成する。このパラメータ生成では、非特許文献２に記載された内積述語暗号で利用する群や基底などを生成する。具体的には、初めに群位数ｑ、群Ｇ、ＧＴ、生成元ｇ∈Ｇを定め、ベクトル空間の次元ＮをＮ＝ｎ＋２とする。ベクトル空間をＶ＝Ｇ×Ｇ×Ｇとし、標準基底Ａ＝（ａ１，ａ２，．．．，ａＮ）を定める。次に、Ｎ行Ｎ列の正則行列Ｘ＝（ｘｉ，ｊ）をランダムに選び、ランダム基底Ｂ＝（ｂ１，ｂ２，．．．，ｂＮ）と基底Ｂ＊＝（ｂ＊１，ｂ＊２，．．．，ｂ＊Ｎ）とを算出する。
つまり、マスター鍵生成部２０２は、非特許文献２に記載されたｓｅｔｕｐアルゴリズムを処理装置により実行して、ランダム基底Ｂ＝（ｂ１，ｂ２，．．．，ｂＮ）とランダム基底Ｂ＊＝（ｂ＊１，ｂ＊２，．．．，ｂ＊Ｎ）とを算出する。
【０１４８】
（Ｓ１０４）
ＰＫＧ側データ送受信部２０９は、（Ｓ１０１）で定めた属性情報符号化列５０１の構成、格納すべき値のルール、属性ベクトルや述語ベクトルへのマッピング方法、及び、（Ｓ１０３）で作成した群位数ｑ、群Ｇ、ＧＴ、生成元ｇ∈Ｇ、ベクトル空間Ｖ＝Ｇ×Ｇ×Ｇ、ランダム基底Ｂ＝（ｂ１，ｂ２，．．．，ｂＮ）を公開パラメータとしてネットワークを介して公開する。もちろん、公開パラメータは他の方法により公開されてもよい。
また、各種鍵保管部２０８は、公開パラメータを記憶装置に記憶する。
【０１４９】
（Ｓ１０５）
各種鍵保管部２０８は、（Ｓ１０３）で生成したランダム基底Ｂ＊＝（ｂ＊１，ｂ＊２，．．．，ｂ＊Ｎ）をマスター鍵として記憶装置に記憶する。
【０１５０】
なお、（Ｓ１０２）で生成したユーザ属性情報データベースは、システムの運用において、ユーザの人事異動や入社や退社があるたびに内容がメンテナンスされる。
【０１５１】
次に、図４２を用いて、（２）中間秘密鍵生成の処理について説明する。
（２）中間秘密鍵生成は、新しく鍵管理サーバ２０１を設置するための処理であって、既に設置されている鍵管理サーバ２０１が、新しく設置された鍵管理サーバ２０１に対してユーザ秘密鍵を発行するために必要な中間秘密鍵を生成する処理である。
なお、図４２についての説明では、既に設置されている鍵管理サーバ２０１を鍵管理サーバ１と呼び、新しく設置された鍵管理サーバ２０１を鍵管理サーバ２と呼ぶ。
【０１５２】
（Ｓ２０１）
鍵管理サーバ１の中間秘密鍵生成部２０３は、新しく設置する鍵管理サーバ２に対して、どの属性範囲で管理を行わせるかという管理範囲を設定する。例えば、中間秘密鍵生成部２０３は、本社社員に対するユーザ秘密鍵生成を担当させる、等を管理者に入力装置から入力させて管理範囲を設定する。
【０１５３】
（Ｓ２０２）
まず、鍵管理サーバ１の符号化情報生成部２０６は、公開パラメータに含まれる属性情報符号化列５０１等に従い、（Ｓ２０１）で設定した管理範囲に対応する中間秘密鍵属性情報符号化列（符号化情報）を処理装置により生成する。
図５３は、中間秘密鍵属性情報符号化列の例を示す図である。図５３に示すように、鍵管理サーバ２がＡ社の本社社員に対するユーザ秘密鍵生成を担当するのであれば、符号化情報生成部２０６は、所属情報符号化列の会社ＩＤにＡ社、事業所ＩＤに本社を設定した中間秘密鍵属性情報符号化列を生成する。
【０１５４】
次に、鍵管理サーバ１のベクトル生成部２０７は、符号化情報生成部２０６が生成した中間秘密鍵属性情報符号化列に対応した中間秘密鍵述語ベクトルｖ→ＳＰＫＧ＝（ｖ１，ｖ２，．．．，ｖｎ）を生成する。なお、符号化列から中間秘密鍵述語ベクトルを生成する方法は、図３８から図４０に基づき説明した通りである。
この時、ベクトル生成部２０７は、中間秘密鍵属性情報符号化列の中で“＊”が設定されている箇所、及び値が設定されていない箇所（図では“−”と表示）の中から、後で鍵管理サーバ２が値を設定可能な属性を選択し、これを委譲属性集合ＤＡＩＤとする。また、この委譲属性集合に対応する述語ベクトルのインデックス番号をＤＢＩとする。例えば、図５３では、個人ＩＤや、所属情報符号化列の部ＩＤ／課ＩＤ／ユニットＩＤや、役職情報符号化列の“＊”が設定されている箇所などを委譲属性集合ＤＡＩＤとして決定する。
【０１５５】
（Ｓ２０３）
鍵管理サーバ１の中間秘密鍵生成部２０３は、（Ｓ２０２）で生成した中間秘密鍵述語ベクトルを用いて、対応する中間秘密鍵を処理装置により生成する。この中間秘密鍵生成には、マスター鍵から生成する方式と、別の中間秘密鍵から生成する方式の２方式がある。
【０１５６】
まず、マスター鍵から中間秘密鍵ｋ＊１を生成する場合について説明する。
中間秘密鍵生成部２０３は、処理装置により数１０９を計算することにより、マスター鍵から中間秘密鍵ｋ＊１を生成する。
なお、以下の説明において、中間秘密鍵ｋ＊Ｌ、ユーザ秘密鍵ｋ＊ＬにおけるＬは、Ｌ階層目の鍵であることを示す。つまり、中間秘密鍵ｋ＊１であれば、１階層目の秘密鍵であることを示し、中間秘密鍵ｋ＊Ｌ＋１であれば、Ｌ階層目の１つ下のＬ＋１階層目の秘密鍵であることを示す。
【数１０９】
2011086687.tif 000011
【０１５７】
属性集合ＡＩＤ１は、今回の中間秘密鍵生成の際に値を決定した属性の属性ＩＤの集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤ１のうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。
委譲インデックス集合ＤＢＩ１は、鍵管理サーバ２によって後で設定可能と決定された委譲属性集合ＤＡＩＤに対応するインデックス番号の集合である。委譲インデックス集合ＤＢＩ１には、既に設定済みの属性集合ＡＩＤ１に対応するインデックス番号集合ＢＩＳ１は含まれない。
【０１５８】
つまり、中間秘密鍵生成部２０３は、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉを設定して、鍵ベクトルｋ＊１，０を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｊによってランダム化される。
また、中間秘密鍵生成部２０３は、委譲インデックス集合ＤＢＩ１に含まれる各インデックス番号ｈ及びｈ＝ｎ＋１について、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉを設定するとともに、基底ベクトルｂ＊ｈに対する係数として値“１”を設定した鍵生成用ベクトルｋ＊１，ｈを生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊによってランダム化される。
そして、中間秘密鍵生成部２０３は、鍵ベクトルｋ＊１，０と鍵生成用ベクトルｋ＊１，ｈとを中間秘密鍵ｋ＊１とする。
【０１５９】
次に、別の中間秘密鍵ｋ＊Ｌから新しく中間秘密鍵ｋ＊Ｌ＋１を生成する場合について説明する。
中間秘密鍵生成部２０３は、処理装置により数１１０を計算することにより、別の中間秘密鍵ｋ＊Ｌから新しく中間秘密鍵ｋ＊Ｌ＋１を生成する。
【数１１０】
2011086687.tif 000012
【０１６０】
属性集合ＡＩＤＬ＋１は、今回の中間秘密鍵生成の際に値を決定した属性の属性ＩＤの集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤＬ＋１のうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。
委譲インデックス集合ＤＢＩＬは、鍵管理サーバ２によって後で設定可能と決定した委譲属性集合ＤＡＩＤに対応するインデックス番号の集合である。委譲インデックス集合ＤＢＩＬには、既に設定済みの属性集合ＡＩＤ１から属性集合ＡＩＤＬに対応するインデックス番号集合ＢＩＳ１からＢＩＳＬは含まれない。
【０１６１】
つまり、中間秘密鍵生成部２０３は、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルを、中間秘密鍵ｋ＊Ｌに含まれる鍵ベクトルｋ＊Ｌ，０に加算して鍵ベクトルｋ＊Ｌ＋１，０を生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルには、基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉが設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σ０，ｊによってランダム化される。
また、中間秘密鍵生成部２０３は、委譲インデックス集合ＤＢＩＬに含まれる各インデックス番号ｈ及びｈ＝ｎ＋１について、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルを、中間秘密鍵ｋ＊Ｌに含まれる鍵生成用ベクトルｋ＊Ｌ，ｈに加算して鍵生成用ベクトルｋ＊Ｌ＋１，ｈを生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルには、基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉが設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊによってランダム化される。
そして、中間秘密鍵生成部２０３は、鍵ベクトルｋ＊Ｌ＋１，０と鍵生成用ベクトルｋ＊Ｌ＋１，ｈとを中間秘密鍵ｋ＊Ｌ＋１とする。
【０１６２】
（Ｓ２０４）
鍵管理サーバ１のＰＫＧ側データ送受信部２０９は、生成した中間秘密鍵を、公開パラメータとともに鍵管理サーバ２へ送付する。この時、中間秘密鍵は、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードや耐タンパ暗号装置などの専用Ｈ／Ｗを用いて送付するか、ＶＰＮやＳＳＬ通信プロトコルなどの安全な手段で送付される。
【０１６３】
（Ｓ２０５）
鍵管理サーバ２のＰＫＧ側データ送受信部２０９は、（Ｓ２０４）で送付された中間秘密鍵と公開パラメータとを受領し、各種鍵保管部２０８は、受領した中間秘密鍵と公開パラメータをと記憶装置に記憶する。
【０１６４】
（Ｓ２０６）
鍵管理サーバ２のユーザ属性情報管理部２０５は、ユーザ属性情報データベースを構築し、必要であれば鍵管理サーバ１とデータの同期を行う。なお、これ以降、ユーザ属性情報データベースは、ユーザの人事異動や入社や退社があるたびに内容がメンテナンスされる。
【０１６５】
次に、図４３を用いて、（３）ユーザ秘密鍵生成の処理について説明する。
（３）ユーザ秘密鍵生成は、ユーザが追加された場合や、人事異動が起こった場合などに、鍵管理サーバ２０１が新しくユーザ秘密鍵（鍵ベクトル）を生成する処理である。
【０１６６】
（Ｓ３０１）
まず、符号化情報生成部２０６は、公開パラメータに含まれる属性情報符号化列５０１等に従い、ユーザ属性情報データベースからユーザの属性を読み込み、ユーザ秘密鍵に設定するユーザ秘密鍵属性情報符号化列（符号化情報）を処理装置により生成する。
図５４は、Ａ社の本社／総務部／総務課／福祉ユニットに属する田中さんに対してユーザ秘密鍵を発行する際のユーザ秘密鍵属性情報符号化列の例を示す図である。この場合、個人ＩＤと所属情報符号化列は、例えば氏名と所属が設定される。また、役職が担当であり、アクセス可能なデータの機密度が秘／社外秘／非該当にアクセス可能であり、総合職採用であり、２００７年から２０１０年までの作成データにアクセス可能であるという設定がされている。
【０１６７】
次に、ベクトル生成部２０７は、符号化情報生成部２０６が生成したユーザ属性情報データベースからユーザ秘密鍵述語ベクトルｖ→ＵＳＥＲ＝（ｖ１，ｖ２，．．．，ｖｎ）を処理装置により生成する。なお、符号化列からユーザ秘密鍵述語ベクトルを生成する方法は、図３８から図４０に基づき説明した通りである。
ここで、鍵管理サーバ２０１が中間秘密鍵を用いてユーザ秘密鍵を発行する場合、既に中間秘密鍵に設定済みの述語ベクトルｖ→ＳＰＫＧ＝（ｖ１，ｖ２，．．．，ｖｎ）の値は変更できない。設定が可能な値は、中間秘密鍵生成時に、（Ｓ２０２）で設定された委譲属性集合ＤＡＩＤ及び委譲属性集合に対応する述語ベクトルのインデックス番号をＤＢＩが示す箇所のみである。
また、ベクトル生成部２０７は、ユーザ秘密鍵属性情報符号化列の中で“＊”が設定されている箇所、及び値が設定されていない箇所（図では“−”と表示）の中から、後でユーザが値を設定可能な属性を選択し、これを同様に委譲属性集合ＤＡＩＤとする。また、この委譲属性集合に対応する述語ベクトルのインデックス番号をＤＢＩとする。例えば、図５４では、値が設定されている所属情報符号化列や役職情報符号化列は、ユーザによって値が変更されるのを防ぐために委譲属性集合には含ませない。カテゴリ符号化列や委譲先情報符号化列や鍵用途フラグや検索語符号化列などが委譲属性集合ＤＡＩＤに設定される。同様に、対応する委譲インデックス集合ＤＢＩも決定される。
【０１６８】
（Ｓ３０２）
ユーザ秘密鍵生成部２０４は、（Ｓ３０１）で生成したユーザ秘密鍵述語ベクトルを用いて、対応するユーザ秘密鍵を処理装置により生成する。ユーザ秘密鍵は、マスター鍵からダイレクトに生成する方式と、中間秘密鍵から生成する方式の２方式がある。
【０１６９】
まず、マスター鍵からユーザ秘密鍵ｋ＊１を生成する場合について説明する。
ユーザ秘密鍵生成部２０４は、処理装置により数１１１を計算することにより、マスター鍵からユーザ秘密鍵ｋ＊１を生成する。
【数１１１】
2011086687.tif 000013
【０１７０】
属性集合ＡＩＤ１は、今回のユーザ秘密鍵生成の際に値を決定した属性の属性ＩＤの集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤ１のうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。
委譲インデックス集合ＤＢＩ１は、生成されたユーザ秘密鍵を使用するユーザによって後で設定可能と決定した委譲属性集合ＤＡＩＤに対応するインデックス番号の集合である。委譲インデックス集合ＤＢＩ１には、既に設定済みの属性集合ＡＩＤ１に対応するインデックス番号集合ＢＩＳ１は含まれない。
【０１７１】
つまり、ユーザ秘密鍵生成部２０４は、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉを設定して、鍵ベクトルｋ＊１，０を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｊによってランダム化される。
また、ユーザ秘密鍵生成部２０４は、委譲インデックス集合ＤＢＩ１に含まれる各インデックス番号ｈ及びｈ＝ｎ＋１について、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉを設定するとともに、基底ベクトルｂ＊ｈに対する係数として値“１”を設定した鍵生成用ベクトルｋ＊１，ｈを生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊによってランダム化される。
そして、ユーザ秘密鍵生成部２０４は、鍵ベクトルｋ＊１，０と鍵生成用ベクトルｋ＊１，ｈとをユーザ秘密鍵ｋ＊１とする。
【０１７２】
次に、中間秘密鍵ｋ＊Ｌからユーザ秘密鍵ｋ＊Ｌ＋１を生成する場合について説明する。
ユーザ秘密鍵生成部２０４は、処理装置により数１１２を計算することにより、中間秘密鍵ｋ＊Ｌからユーザ秘密鍵ｋ＊Ｌ＋１を生成する。
【数１１２】
2011086687.tif 000014
【０１７３】
属性集合ＡＩＤＬ＋１は、今回のユーザ秘密鍵生成の際に値を決定した属性の属性ＩＤの集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤＬ＋１のうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。
委譲インデックス集合ＤＢＩＬは、ユーザによって後で設定可能と決定した委譲属性集合ＤＡＩＤに対応するインデックス番号の集合である。委譲インデックス集合ＤＢＩＬには、既に設定済みの属性集合ＡＩＤ１から属性集合ＡＩＤＬに対応するインデックス番号集合ＢＩＳ１からＢＩＳＬは含まれない。
【０１７４】
つまり、ユーザ秘密鍵生成部２０４は、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルを、中間秘密鍵ｋ＊Ｌに含まれる鍵ベクトルｋ＊Ｌ，０に加算して鍵ベクトルｋ＊Ｌ＋１，０を生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルには、基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉが設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σ０，ｊによってランダム化される。
また、ユーザ秘密鍵生成部２０４は、委譲インデックス集合ＤＢＩＬに含まれる各インデックス番号ｈ及びｈ＝ｎ＋１について、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルを、中間秘密鍵ｋ＊Ｌに含まれる鍵生成用ベクトルｋ＊Ｌ，ｈに加算して鍵生成用ベクトルｋ＊Ｌ＋１，ｈを生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルには、基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉが設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊによってランダム化される。
そして、ユーザ秘密鍵生成部２０４は、鍵ベクトルｋ＊Ｌ＋１，０と鍵生成用ベクトルｋ＊Ｌ＋１，ｈとをユーザ秘密鍵ｋ＊Ｌ＋１とする。
【０１７５】
なお、数１１１及び数１１２とは、中間秘密鍵生成の処理で説明した中間秘密鍵を生成する際の数１０９及び数１１０と同一である。両者の違いは、作成する属性情報符号化列が鍵管理サーバの管理範囲に若干限定されるか、ユーザの属性に応じて大部分が指定されるかの違いが一番大きい。また、委譲属性集合も、中間秘密鍵生成にはユーザ秘密鍵発行のために大部分が委譲されるのに対して、ユーザ秘密鍵生成の際には検索に必要な主要部分に限定されるなどの違いがある。
【０１７６】
（Ｓ３０３）
ＰＫＧ側データ送受信部２０９は、ユーザ秘密鍵と公開パラメータとをアクセス端末へ送付する。ＰＫＧ側データ送受信部２０９は、中間秘密鍵を送付する場合と同様に安全な手段で配送を行う。
【０１７７】
（Ｓ３０４）
ユーザが使用するアクセス端末３０１の端末側データ送受信部３１１は、（Ｓ３０３）で送付されたユーザ秘密鍵と公開パラメータとを受領し、ユーザ秘密鍵記憶部３０２は、受領したユーザ秘密鍵と公開パラメータをと記憶装置に記憶する。
【０１７８】
次に、図４４を用いて、（４）データを暗号化の処理について説明する。
（４）データを暗号化の処理は、アクセス端末３０１が、システムに登録されている組織のユーザ宛、もしくは個人に対してデータを暗号化して、暗号化されたデータをデータセンタ４０１に登録する処理である。
【０１７９】
（Ｓ４０１）
まず、アクセス端末３０１の符号化情報生成部３０６は、作成したデータを復号可能なユーザもしくはグループを決定する。例えば、符号化情報生成部３０６は、アクセス端末３０１を使用するユーザに、復号可能なユーザやグループを入力装置から入力させることで、復号可能なユーザやグループを決定する。
そして、符号化情報生成部３０６は、公開パラメータに含まれる属性情報符号化列５０１等に従い、決定したユーザやグループを一意に特定可能な暗号化データ属性情報符号化列（符号化情報）を処理装置により生成する。もし、１つの暗号化データ属性情報符号化列で決定したユーザやグループを一意に特定できない場合、複数の暗号化データ属性情報符号化列を生成してもよい。
【０１８０】
図５５は、暗号化データ属性情報符号化列の例を示す図である。
図５５に示す例では、カテゴリ符号化列に示すように、データは０９年度の物品費の予算計画に関するものである。また、機密度符号化列に示すように情報は社外秘であり、所属情報符号化列に示すようにＡ社／本社／総務部／総務課に属するユーザであって、雇用形態符号化列に示すように総合職と一般職の社員が読んでよいことを示す。また、委譲先情報符号化列に示すように本人のみが復号可能であり、秘書や代理人は読めないこととする。また、作成した年度は２００９年であるので、期間情報符号化列に示すようにフラグを設定する。更に、検索語符号化列に示すように、データは１５番目のデータであり、２００９／１０／５にＰＣ３台を１０万円で購入した時の情報であることが設定される。
なお、鍵用途フラグには、暗号化データ鍵を生成する元となる乱数ρが設定される。この乱数は、暗号化データを生成する際にランダムに生成すれば良く、異なるデータであれば異なる乱数を用いる。もし、１つのデータに対して、複数の暗号化データ属性情報符号化列を構成する必要がある場合は、全ての暗号化データ属性情報符号化列で、この乱数ρは同じものを設定する必要がある。
【０１８１】
次に、ベクトル生成部３０７は、生成した全ての暗号化データ属性情報符号化列に対応した属性ベクトルｘ→＝（ｘ１，ｘ２，．．．，ｘｎ）を処理装置により生成する。なお、符号化列から属性ベクトルを生成する方法は、図３８から図４０に基づき説明した通りである。
【０１８２】
（Ｓ４０２）
タグ・暗号化データ暗号化鍵生成部３０８は、（Ｓ４０２）で生成した全ての属性ベクトルに対して、タグ兼暗号化データ暗号化鍵ｔａｇ（暗号ベクトルｃ１）を処理装置により生成する。タグ兼暗号化データ暗号化鍵ｔａｇは、ユーザ秘密鍵記憶部３０２が保管した公開パラメータを用いて、数１１３を計算することにより生成される。
【数１１３】
2011086687.tif 000015
【０１８３】
属性集合ＡＩＤは、全ての属性ＩＤの集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤのうちＡＩＤ＝ｊとなる要素に対応する属性ベクトルのインデックス番号の集合である。
【０１８４】
つまり、タグ・暗号化データ暗号化鍵生成部３０８は、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す基底ベクトルｂｉに対する係数として、属性ベクトルの要素ｖｉを設定する。なお、各基底ベクトルの係数は、乱数σｊによってランダム化される。また、タグ・暗号化データ暗号化鍵生成部３０８は、基底ベクトルｂｎ＋１に対する係数として、乱数ρを設定する。また、タグ・暗号化データ暗号化鍵生成部３０８は、基底ベクトルｂｎ＋２に対する係数として、乱数δｎ＋２を設定する。そして、タグ・暗号化データ暗号化鍵生成部３０８は、タグ兼暗号化データ暗号化鍵ｔａｇを生成する。
【０１８５】
（Ｓ４０３）
タグ・暗号化データ暗号化鍵生成部３０８は、（Ｓ４０１）で生成した乱数ρを用いて、データ暗号化鍵Ｋ＝ｅ（ｇ，ｇ）ρを生成する。
データ暗号化部３０９は、データ暗号化鍵Ｋ（共通鍵）を用いてデータ本体（平文情報ｍ）をＡＥＳやＣａｍｅｌｌｉａ（登録商標）等の共通鍵暗号を用いて暗号化して、暗号化データ本体（暗号文ｃ２）を処理装置により生成する。そして、データ暗号化部３０９は、生成した暗号化データ本体と、タグ兼暗号化データ暗号化鍵ｔａｇとを含む暗号化データを処理装置により生成する。つまり、暗号化データの構成は、図７に示した暗号化データＢである。
【０１８６】
（Ｓ４０４）
端末側データ送受信部３１１は、作成した暗号化データをデータセンタ４０１に送付し、暗号化データの保管を依頼する。
【０１８７】
（Ｓ４０５）
データセンタ４０１のセンタ側データ送受信部４０２は、保管依頼を受けた暗号化データを受信する。そして、データ管理部４０３は、受信したデータを記憶装置に記憶する。
【０１８８】
次に、図４５を用いて、（５）キーワード検索の処理について説明する。
（５）キーワード検索の処理は、アクセス端末３０１が、キーワードを指定して、データセンタ４０１に保管された暗号化データを検索する処理である。
【０１８９】
（Ｓ５０１）
まず、アクセス端末３０１の符号化情報生成部３０６は、ユーザが入力した検索キーワードを受け取り、検索用属性情報符号化列（符号化情報）を処理装置により生成する。この検索用属性情報符号化列は、ユーザ秘密鍵属性情報符号化列に対して、検索キーワードを設定したものである。
【０１９０】
図５６は、検索用属性情報符号化列の例を示す図である。
図５６に示す例では、図５４で示したユーザ秘密鍵属性情報符号化列に対応するユーザ秘密鍵を持つユーザが、「２００９年」「購入」を検索キーワードとして指定した例である。そのため、対応する検索語符号化列の列２と列８に値が設定されている。また、トラップドアを生成する場合は、鍵用途フラグには０が設定される。
【０１９１】
次に、ベクトル生成部３０７は、生成した検索用属性情報符号化列に対応する検索用述語ベクトルｖ→ＳＥＲＣＨ＝（ｖ１，ｖ２，．．．，ｖｎ）を処理装置により生成する。なお、符号化列から検索用述語ベクトルを生成する方法は、図３８から図４０に基づき説明した通りである。
【０１９２】
（Ｓ５０２）
トラップドア生成部３０３は、（Ｓ５０１）で生成した検索用述語ベクトルを用いて、トラップドアを処理装置により生成する。トラップドアｔｒａｐｄｏｏｒは、ユーザ秘密鍵ｋ＊Ｌを用いて、数１１４を計算することにより生成される。
【数１１４】
2011086687.tif 000016
【０１９３】
属性集合ＡＩＤＬ＋１は、検索用属性情報符号化列を生成する際に値を決定した属性の属性ＩＤの集合である。属性集合ＡＩＤＬ＋１は、通常、鍵用途フラグと検索語符号化列とのＡＩＤである。
インデックス集合ＢＩｊは、属性集合ＡＩＤＬ＋１のうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。
【０１９４】
つまり、トラップドア生成部３０３は、インデックス集合ＢＩＬ＋１に含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトル（検索条件ベクトルＳＶ）を、ユーザ秘密鍵ｋ＊Ｌ，０に加算して、トラップドアｔｒａｐｄｏｏｒを生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルには、基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉが設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σＬ＋１，ｊによってランダム化される。
【０１９５】
（Ｓ５０３）
端末側データ送受信部３１１は、（Ｓ５０２）で生成したトラップドアをデータセンタ４０１に送付し、暗号化データの検索を依頼する。データセンタ４０１の検索要求受信部４０４は、トラップドアを受信し、暗号化データの検索を受け付ける。
【０１９６】
（Ｓ５０４）
データセンタ４０１の検索実行部４０５は、データ管理部４０３が保管している全ての暗号化データに対して付加されているタグ兼暗号化データ暗号化鍵のぞれぞれと、（Ｓ５０３）で受信したトラップドアとを処理装置により比較する。これにより、検索実行部４０５は、保管している暗号化データにキーワードを含む暗号化データが存在するか否かを判定する。なお、暗号化データに対して複数のタグ兼暗号化データ暗号化鍵が付加されている場合には、検索実行部４０５は、各タグ兼暗号化データ暗号化鍵と受信したトラップドアとの比較を行う。
そして、検索実行部４０５は、暗号化データのタグ兼暗号化データ暗号化鍵のいずれか１つでもキーワードを含むと判定された暗号化データは、検索にヒットしたと見なす。
なお、１個のタグ兼暗号化データ暗号化鍵とトラップドアの比較は、Ｖ＝ｅ（ｔａｇ，ｔｒａｐｄｏｏｒ）を計算することにより行う。計算した結果が、Ｖ＝１であればキーワードを含み、Ｖ≠１であればキーワードを含まないか、検索権限がないかのいずれかであることが分かる。
【０１９７】
（Ｓ５０５）
検索結果送信部４０６は、（Ｓ５０４）で検索にヒットしたと判定した暗号化データを全て取り出し、トラップドアの送信元のアクセス端末３０１へ返送する。そして、アクセス端末３０１の端末側データ送受信部３１１は、暗号化データを受信する。もし、検索結果として返す暗号化データがない場合は、検索結果送信部４０６は、その旨を示す情報をアクセス端末３０１へ送付する。
【０１９８】
（Ｓ５０６）
アクセス端末３０１のデータ暗号化鍵復号部３０５は、ユーザ秘密鍵ｋ＊Ｌから復号用ユーザ秘密鍵ｄｅｃ−ｋｅｙ（復号鍵ベクトル，復号鍵）を処理装置により生成する。復号用ユーザ秘密鍵ｄｅｃ−ｋｅｙは、ｄｅｃ−ｋｅｙ＝ｋ＊Ｌ，０＋ｋ＊Ｌ，ｎ＋１を計算することにより生成される。この計算は、元々のユーザ秘密鍵ｋ＊Ｌの第一成分ｋ＊Ｌ，０には、ランダム基底の要素ｂ＊ｎ＋１が含まれないため、要素ｂ＊ｎ＋１を加える作業を意味する。
【０１９９】
（Ｓ５０７）
データ暗号化鍵復号部３０５は、受信した暗号化データのタグ兼暗号化データ暗号化鍵を復号用ユーザ秘密鍵ｄｅｃ−ｋｅｙで処理装置により復号することで、データ暗号化鍵Ｋ＝ｅ（ｇ，ｇ）ρを取得する。つまり、データ暗号化鍵復号部３０５は、ｅ（ｇ，ｇ）ρ＝ｅ（ｔａｇ，ｄｅｃ−ｋｅｙ）を計算することで、データ暗号化鍵Ｋ＝ｅ（ｇ，ｇ）ρを取得する。
なお、暗号化データに、複数のタグ兼暗号化データ暗号化鍵が添付されている場合も考えられる。この場合は、（Ｓ５０２）で生成したトラップドアを用いて、各タグ兼暗号化データ暗号化鍵とトラップドアとを比較（Ｖ＝ｅ（ｔａｇ，ｔｒａｐｄｏｏｒ））して、Ｖ＝１となるタグ兼暗号化データ暗号化鍵を特定することで、復号すべきタグ兼暗号化データ暗号化鍵を特定することができる。
【０２００】
（Ｓ５０８）
データ復号部３１０は、（Ｓ５０７）で取得したデータ暗号化鍵Ｋを用いて、暗号化データに含まれる暗号化データ本体をＡＥＳやＣａｍｅｌｌｉａ（登録商標）で復号する。なお、復号に利用するアルゴリズムは暗号化に用いたアルゴリズムと同一である必要がある。そのため、システムで用いるアルゴリズムを予め特定しておくか、暗号化データに何で暗号化したかを示す情報を暗号化データに含めるなどして、アルゴリズムを特定可能にする必要がある。
【０２０１】
次に、図４６を用いて、（６）委譲ユーザ秘密鍵生成の処理について説明する。
（６）委譲ユーザ秘密鍵生成の処理は、ユーザ秘密鍵を持つユーザが、自身の代理で作業を行う秘書などに対して委譲ユーザ秘密鍵を発行することで、作業の代行を依頼する処理である。つまり、（６）委譲ユーザ秘密鍵生成の処理は、アクセス端末３０１が、他のアクセス端末３０１へ委譲ユーザ秘密鍵を発行する処理である。
なお、図４６についての説明では、委譲ユーザ秘密鍵を生成するアクセス端末３０１をアクセス端末１と呼び、生成された委譲ユーザ秘密鍵を受け取るアクセス端末３０１をアクセス端末２と呼ぶ。
【０２０２】
（Ｓ６０１）
まず、アクセス端末１の符号化情報生成部３０６は、委譲先ユーザに対して、どの様な検索、復号権限を委譲するかを決定する。例えば、符号化情報生成部３０６は、アクセス端末１のユーザに入力装置からどの検索、復号権限を委譲するかを入力させて検索、復号権限を委譲するかを決定する。
符号化情報生成部３０６は、決定した検索、復号権限に対応する委譲ユーザ秘密鍵属性情報符号化列（符号化情報）を処理装置により生成する。
【０２０３】
図５７は、委譲ユーザ秘密鍵属性情報符号化列の例を示す図である。
図５７に示す例では、図５４で示したユーザ秘密鍵属性情報符号化列に対応するユーザ秘密鍵を持つユーザが、自身のユーザ属性情報符号化列に対して、委譲先が同僚であることを指定し、かつ検索語として「２００９年」が含まれるものに限定している。
【０２０４】
次に、ベクトル生成部３０７は、生成した委譲ユーザ秘密鍵属性情報符号化列に対応する委譲ユーザ秘密鍵述語ベクトルｖ→Ｄｅｌｅｇａｔｅ＝（ｖ１，ｖ２，．．．，ｖｎ）を処理装置により生成する。なお、符号化列から委譲ユーザ秘密鍵述語ベクトルを生成する方法は、図３８から図４０に基づき説明した通りである。
ここで、ユーザが委譲ユーザ秘密鍵を発行する場合、既にユーザ秘密鍵に設定済みの述語ベクトルｖ→ＵＳＥＲ＝（ｖ１，ｖ２，．．．，ｖｎ）の値は変更できない。設定が可能な値は、ユーザ秘密鍵生成時に、（Ｓ３０１）で設定された委譲属性集合ＤＡＩＤ及び委譲属性集合に対応する述語ベクトルのインデックス番号をＤＢＩが示す箇所のみである。
また、ユーザ秘密鍵属性情報符号化列の中で“＊”が設定されている箇所、及び値が設定されていない箇所（図では“−”と表示）の中から、後で委譲先ユーザが値を設定可能な属性を選択し、これを同様に委譲属性集合ＤＡＩＤとする。また、この委譲属性集合に対応する述語ベクトルのインデックスをＤＢＩとする。例えば、図５７では、値が設定されていないカテゴリ符号化列や、検索語符号化列の列１及び列３から列８などが委譲属性集合ＤＡＩＤに設定される。同様に、対応する委譲インデックス集合ＤＢＩも決定される。
【０２０５】
（Ｓ６０２）
アクセス端末１の委譲ユーザ秘密鍵生成部３０４は、（Ｓ６０１）で生成した委譲ユーザ秘密鍵述語ベクトルを元にして、ユーザ秘密鍵ｋ＊Ｌから委譲ユーザ秘密鍵ｋ＊Ｌ＋１を処理装置により生成する。委譲ユーザ秘密鍵ｋ＊Ｌ＋１は、数１１５を計算することにより生成される。
【数１１５】
2011086687.tif 000017
【０２０６】
属性集合ＡＩＤＬ＋１は、今回の移譲ユーザ秘密鍵生成の際に値を決定した属性の属性ＩＤの集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤＬ＋１のうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。
委譲インデックス集合ＤＢＩＬは、移譲先ユーザによって後で設定可能と決定した委譲属性集合ＤＡＩＤに対応するインデックス番号の集合である。委譲インデックス集合ＤＢＩＬには、既に設定済みの属性集合ＡＩＤ１から属性集合ＡＩＤＬに対応するインデックス番号集合ＢＩＳ１からＢＩＳＬは含まれない。
【０２０７】
つまり、委譲ユーザ秘密鍵生成部３０４は、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルを、ユーザ秘密鍵ｋ＊Ｌに含まれる鍵ベクトルｋ＊Ｌ，０に加算して鍵ベクトルｋ＊Ｌ＋１，０を生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルには、基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉが設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σ０，ｊによってランダム化される。
また、委譲ユーザ秘密鍵生成部３０４は、委譲インデックス集合ＤＢＩＬに含まれる各インデックス番号ｈ及びｈ＝ｎ＋１について、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルを、ユーザ秘密鍵ｋ＊Ｌに含まれる鍵生成用ベクトルｋ＊Ｌ，ｈに加算して鍵生成用ベクトルｋ＊Ｌ＋１，ｈを生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉを述語ベクトルの要素ｖｉ倍して生成されるベクトルには、基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉが設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊによってランダム化される。
そして、委譲ユーザ秘密鍵生成部３０４は、鍵ベクトルｋ＊Ｌ＋１，０と鍵生成用ベクトルｋ＊Ｌ＋１，ｈとを委譲ユーザ秘密鍵ｋ＊Ｌ＋１とする。
【０２０８】
（Ｓ６０３）
アクセス端末１の端末側データ送受信部３１１は、（Ｓ６０２）で生成した委譲ユーザ秘密鍵と公開パラメータとをアクセス端末２へ送付する。
【０２０９】
（Ｓ６０４）
アクセス端末２の端末側データ送受信部３１１は、委譲ユーザ秘密鍵と公開パラメータとを受領する。そして、ユーザ秘密鍵記憶部３０２は、受領した委譲ユーザ秘密鍵と公開パラメータとを記憶装置に記憶する。
【０２１０】
なお、ここで生成した委譲ユーザ秘密鍵はユーザ秘密鍵の一種であるので、図４５に示した（５）キーワード検索の処理に従いトラップドアを生成し、暗号化データを検索し、取得した暗号化データを復号することが可能である。
【０２１１】
以上のように、秘匿検索システム１００は、個人を特定する氏名や社員番号などの個人ＩＤ、企業の組織情報、社員の役職、文書のカテゴリ、機密度等の情報と、データに含まれるキーワードから構成される属性情報符号化列５０１の構造、比較方法、値の割り当て方法を上記説明のように決定し、実行することで、符号化情報を生成する。そして、生成した符号化情報から属性ベクトルや述語ベクトルへ上記説明のようにマッピングし、属性ベクトルや述語ベクトルを生成する。これにより、秘匿検索システム１００は、アクセス可能ユーザを表す属性ベクトルとユーザの属性を示す述語ベクトル同士の内積を計算するだけで、データへのアクセス可否を決定することができる。
【０２１２】
また、秘匿検索システム１００は、属性ベクトルを用いて暗号化データを作成し、述語ベクトルを用いてユーザ秘密鍵を生成するように内積述語暗号を用いる。これにより、秘匿検索システム１００は、データセンタ４０１に保管するデータの機密性を守ることができるだけでなく、アクセス可能なユーザのみが暗号化データを復号することができる。
例えば、秘匿検索システム１００は、属性ベクトルに部や課を指定することで、部や課に属するユーザのみが復号できるように暗号化データを作成することができる。
【０２１３】
また、秘匿検索システム１００は、暗号化する際に作成する属性情報符号化列には、データに含まれるキーワードを設定し、またユーザ秘密鍵から検索キーワードを追加設定してトラップドアを生成する。これにより、秘匿検索システム１００は、アクセス可能なユーザのみが検索キーワードをデータセンタ４０１に漏らすことなく、データの検索を行うことができる。
特に、一つのトラップドアをデータセンタ４０１に送付するだけで、検索可能なデータの全てに対して一致／不一致の判定ができる様になる。
例えば、秘匿検索システム１００は、属性ベクトルに部や課を指定することで、部や課に属するユーザのみが検索できるように暗号化データを作成することができる。
【０２１４】
また、秘匿検索システム１００は、例えば属性情報符号化列５０１の所属情報の会社／事業所名などの一部の値を決定して、それに対応する中間秘密鍵を発行することができる。これにより、秘匿検索システム１００は、メインの鍵管理サーバ２０１だけでなく、事業所毎に鍵管理サーバ２０１を設置して、事業所毎にユーザ管理とユーザ秘密鍵生成を行う様なシステム運用を行うこともできる。
【０２１５】
また、秘匿検索システム１００は、ユーザ秘密鍵からトラップドアと復号用秘密鍵を生成する構成を取り、タグと暗号化データ暗号化鍵を共通化することができる。これにより、秘匿検索システム１００は、暗号化データに添付すべきデータの量を減らすことができる。そのため、秘匿検索システム１００は、データセンタ４０１の記憶領域の使用量を削減することができる。また、秘匿検索システム１００は、データセンタ４０１からアクセス端末３０１への暗号化データ送付に必要とする通信回線の使用量も減らすことができる。
【０２１６】
また、秘匿検索システム１００は、ユーザ秘密鍵から委譲ユーザ秘密鍵を生成する際に、その委譲ユーザ秘密鍵属性情報符号化列に誰に委譲されたかという情報を含める。また、秘匿検索システム１００は、暗号化データを作成する際に用いる暗号化データ属性情報符号化列に委譲されたユーザは復号できないことを指定することができる。これにより、秘匿検索システム１００は、ユーザ秘密鍵を持つ本人のみが検索や復号できるように制御することができる。
【０２１７】
また、秘匿検索システム１００は、符号化列をＡＮＤ判定、ＯＲ判定、包含関係判定する際の符号化列から属性ベクトルもしくは述語ベクトルへのマッピング方法を上記説明の通りに行う。これにより、秘匿検索システム１００は、データ本体が伝票やデータベースのように構造化されたデータを持つ場合も、一般的なワープロの文書の様に構造化されていない場合においても、暗号化したまま検索を行うことができる。
【０２１８】
なお、上記説明では、企業内システムを主にして実例を示したが、組織構造や役職構造などの分類方法は一例である。例えば、事業所ＩＤの前に国ＩＤを入れてもよいし、ユニットＩＤの代わりにプロジェクトＩＤを用いてもよい。また、所長クラスフラグと部長クラスフラグの間に副所長クラスフラグを設定してもよい。これらの符号化列は一例であるため、組織の状況に応じて色々な要素を追加したり、削除したりすることもできる。
【０２１９】
また、図１２で示した所属情報符号化列では、例えばＤ課に属しているがユニットには属していないユーザに対してユーザ秘密鍵を生成する場合、所属情報符号化列２の様にユニットＩＤに“＊”を指定する。この場合、このユーザ秘密鍵を用いれば、Ｄ課の文書であれば全て読めるようになる。もし、Ｄ課宛の文書だけが読め、その課のユニット宛の文書は読めないようにしたい場合、ユニットＩＤとして“＊”ではなく乱数Ｒを設定する様にしてもよい。
また、役職情報符号化列などの他符号化列と組みあわせて実現する事もできる。つまり、一般に課長であればユニットには属していない。一方、一般に担当者であればユニットに属している。そこで、この特徴を利用して、ユニットに属しているユーザだけが文書を読める、あるいはユニットに属していないユーザだけが文書を読めるという制御を役職情報符号化列を用いて行ってもよい。
【０２２０】
また、上記説明では、企業内システムで社員が管理するデータを対象として例示したが、企業内システムに限定する必要はない。例えば、医療情報システムで患者の電子カルテやレセプトを管理する場合にも利用できる。この場合、企業内システムに合わせて作成した組織階層や役職情報なども、医療情報システムに合わせて作成する。例えば、組織階層の代わりに病院や医者を特定可能な医療機関階層情報、役職情報の代わりに医者、看護婦、薬剤師などの役割などを割り当ててもよい。
【０２２１】
また、上記説明では、システムの管理者が企業であり、アクセス端末を利用するのがユーザであると仮定したが、利用システムに応じて柔軟に変更することができる。例えば、ユーザが鍵管理サーバの役割を担い、他ユーザに対してユーザ秘密鍵を発行するようなシステム構成を取る場合、本システムよりさらに柔軟なアクセス権限の委譲を行えるシステムが構築できる。
【０２２２】
また、上記説明では、アクセス端末３０１にユーザ秘密鍵を保管して、トラップドア生成や暗号化データ暗号化鍵の復号も実施させるようにした。しかし、より安全性を高めるために、ユーザ秘密鍵の管理をアクセス端末３０１ではなくＩＣカードなどのデバイスを用いて実施してもよい。この場合、ＩＣカードを利用するためにパスワードを用いて認証を行い、セキュリティの向上を図ることもできる。
また、鍵管理サーバ２０１からアクセス端末３００にユーザ秘密鍵を配布する場合は、ＩＣカードにユーザ秘密鍵を格納して、ＩＣカードを安全にユーザに配布するようにしても良い。
【０２２３】
また、上記説明では、主にＡＮＤ判定で属性情報符号化列５０１を比較するケースを示したが、ＯＲ判定で比較したり、包含関係判定で比較することも可能である。
【０２２４】
また、上記説明では、システムセットアップの際に検索キーワードを保管する検索語符号化列も含めて、属性情報符号化列５０１の構造を決定するようにした。これは、説明の分かりやすさを優先したためである。しかし、伝票などの構造化されたデータや、ワープロ文書などの非構造のデータが混在した環境では、事前に検索語符号化列の構造を決定することが難しいケースが多い。そのため、検索語符号化列の構造はシステムセットアップ時には定めないようにして、代わりに自由に使える属性を用意することで、文書の種別毎や内容毎に検索語符号化列の構造を定めるようにしてもよい。
【０２２５】
また、上記説明では、属性情報符号化列５０１として事前に構造を決定するようにしたが、企業内での職種が多岐にわたる場合、全てを事前に決定することは困難である場合も考えられる。この様な場合は、一部の符号化列は事業所毎や職種毎に自由に使える属性を用意しておき、ユーザが利用時に自由に使うようにしてもよい。
【０２２６】
また、上記説明では、個人ＩＤや会社ＩＤを示す際に「田中」や「Ａ社」などの文字列を使って表現した。これは、説明の分かりやすさを優先したためで、実際には文字列だけでなく番号をＩＤとして利用してもよい。同様に、各種フラグには値“１”を設定すると値を特定したが、値“１”である必要はなく、自由に値を決定してよい。
【０２２７】
また、上記説明では、対称ペアリングを用いた場合の例を示したが、非対称ペアリングに基づいて実装することも可能である。この場合、より柔軟なパラメータ設定を行うことが可能となり、速度の最適化を行うこともできる。
【０２２８】
また、上記説明では、鍵管理サーバの各種鍵保管部ではユーザ秘密鍵も保管できるようにしたが、再度鍵発行を行うことが可能であるため、保管の必要がなければ保管しなくても構わない。
【０２２９】
また、上記説明では、図９で示した属性情報符号化列５０１には、データを作成した年月を保管する期間情報符号化列を設定したが、これに加えてデータを復号してよい日付を復号可能期間情報符号化列として格納するようにしてもよい。この様にすると、暗号化した時には復号できないが、将来に復号可能となるタイムカプセル暗号を実現することができる。この場合、暗号化データに設定する復号可能期間情報には復号可能とする年月を保管し、ユーザ秘密鍵の復号可能期間情報には現在の年月を設定すればよい。
【０２３０】
また、上記説明では、図２４で示した期間情報符号化列では、年ごとにフラグを用意したが必ずしも年ごとに限るものではなく、月ごとや週毎に用意してもよい。但し、細かく分割すると演算時間が掛かるため、制御したい期間の単位と処理時間との兼ね合いで決めることが必要である。
【０２３１】
また、上記説明では、（Ｓ５０６）でユーザ秘密鍵から復号用ユーザ秘密鍵を生成したが、これは毎回行わなくとも、最初に１回行い、復号用ユーザ秘密鍵を生成した後、ユーザ秘密鍵記憶部３０２が記憶装置に記憶しておけばよい。復号用ユーザ秘密鍵の生成は、初めて（Ｓ５０６）を行う際に実施してもよいし、鍵管理サーバからユーザ秘密鍵を受領した時点で実施してもよい。
【０２３２】
また、上記説明では、鍵管理サーバ２０１にてユーザの属性情報を管理するようにしたが、別のサーバにて属性情報を管理するようにしてもよい。例えば、既に社員の人事情報を管理するＬＤＡＰ（Ｌｉｇｈｔｗｅｉｇｈｔ  Ｄｉｒｅｃｔｏｒｙ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）サーバが存在した場合、鍵管理サーバは自身で社員の属性情報は管理せず、ＬＤＡＰサーバを利用するようにしてもよい。
【０２３３】
また、上記説明では、属性情報符号化列の各要素を比較する時にＡＮＤ判定やＯＲ判定を用いる例を主として記載した。しかし、これらの比較を包含関係判定を用いて実施する事も可能である。
例えば、所属情報符号化列５０３をＡＮＤ判定する場合、ユーザ秘密鍵（述語）に設定する所属情報の集合に、暗号化データ（属性）に設定した所属情報が含まれるかどうかを包含関係で判定するように変形できる。
また、例えば、役職情報符号化列５０４の場合、暗号化データ（属性）には役職フラグの代わりに役職ＩＤの集合を設定し、ユーザ秘密鍵（述語）に設定されたユーザの役職ＩＤが含まれるかどうかを、包含関係で判定するように変形できる。
同様に、期間情報符号化列などの他の符号化列に関しても、包含関係を用いて比較するように容易に変形する事が可能である。
【０２３４】
実施の形態２．
実施の形態１では、ユーザの属性情報を元に生成した述語ベクトルからユーザ秘密鍵を生成していた。この場合、ユーザの属性情報が変化した場合には、新たにユーザ秘密鍵を再発行する必要がある。また、ユーザが異動した場合にも、新たにユーザ秘密鍵を再発行する必要がある。また、ユーザ秘密鍵に期間情報を含めた場合、定期的に秘密鍵を再発行する必要がある。しかし、ユーザ秘密鍵はデータの復号に利用できるため機密性の高い情報であるため、例えばＩＣカードに格納して配布する必要があり、配布のコストがかかる。
実施の形態２では、ユーザ秘密鍵のうちユーザの異動等で変化しない部分のみを初めに安全に配送し、変化する所属などの属性情報は別途グループ証明書として配送することで、ユーザ秘密鍵配布のコストを削減した方式を説明する。また、別途配送するグループ証明書には、所属情報が設定された所属情報符号化列に加え、その所属に属していた期間を期間情報符号化列として表したものを含めることで、限られた期間だけ復号できるように厳密にアクセス制御することを可能とする。
なお、ここでは、非特許文献２に記載された内積述語暗号に基づき説明を行う。非特許文献２には、ユーザ秘密鍵を安全に配布する具体的な方法についての記載はない。そのため、このユーザ秘密鍵を安全に配布する方法も１つのポイントである。
【０２３５】
なお、実施の形態２では、原則として実施の形態１と異なる部分のみを説明する。
【０２３６】
実施の形態２に係る秘匿検索システム１００の構成は、実施の形態１に係る秘匿検索システム１００の構成と同一であるため説明を省略する。
【０２３７】
図５８は、実施の形態２に係る鍵管理サーバ２０１の機能を示す機能ブロック図である。
マスター鍵生成部２０２、中間秘密鍵生成部２０３、ユーザ秘密鍵生成部２０４、ユーザ属性情報管理部２０５、符号化情報生成部２０６、ベクトル生成部２０７、各種鍵保管部２０８、ＰＫＧ側データ送受信部２０９に関しては、実施の形態１で示した機能と同一であるため、説明は省略する。
鍵管理サーバ２０１は、上記機能に加え、部分ユーザ秘密鍵生成部２１０、ユーザ秘密鍵情報管理部２１１、グループ証明書生成部２１２を備える。
【０２３８】
部分ユーザ秘密鍵生成部２１０は、マスター鍵もしくは中間秘密鍵を用いて、ユーザの所属や役職などの属性情報符号化列に基づき、部分ユーザ秘密鍵を処理装置により生成する。特に、部分ユーザ秘密鍵生成部２１０は、属性情報符号化列から生成される述語ベクトルのうち所属や役職によって変化しない固定値の情報のみを用いて部分ユーザ秘密鍵を生成する。
【０２３９】
ユーザ秘密鍵情報管理部２１１は、部分ユーザ秘密鍵生成部２１０が部分ユーザ秘密鍵を生成するために用いた情報を記憶装置に記憶する。部分ユーザ秘密鍵を生成するために用いた情報とは、例えば、部分ユーザ秘密鍵を生成する際に用いた乱数値等である。
【０２４０】
グループ証明書生成部２１２は、ユーザ秘密鍵情報管理部２１１が記憶した情報と、述語ベクトルとに基づき、部分ユーザ秘密鍵からユーザ秘密鍵を構成するために必要なグループ証明書を処理装置により生成する。
【０２４１】
図５９は、実施の形態２に係るアクセス端末３０１の機能を示す機能ブロック図である。
ユーザ秘密鍵記憶部３０２、トラップドア生成部３０３、委譲ユーザ秘密鍵生成部３０４、データ暗号化鍵復号部３０５、符号化情報生成部３０６、ベクトル生成部３０７、タグ・暗号化データ暗号化鍵生成部３０８、データ暗号化部３０９、データ復号部３１０、端末側データ送受信部３１１に関しては、実施の形態１で示した機能と同一であるため、説明は省略する。
アクセス端末３０１は、上記機能に加え、部分ユーザ秘密鍵管理部３１２、ユーザ秘密鍵再構成部３１４、グループ証明書管理部３１３を備える。
【０２４２】
部分ユーザ秘密鍵管理部３１２は、鍵管理サーバ２０１から受け取った部分ユーザ秘密鍵を記憶装置に記憶する。
【０２４３】
グループ証明書管理部３１３は、鍵管理サーバ２０１から受け取ったグループ証明書を記憶装置に記憶する。
【０２４４】
ユーザ秘密鍵再構成部３１４は、部分ユーザ秘密鍵管理部３１２が記憶する部分ユーザ秘密鍵と、グループ証明書管理部３１３が記憶するグループ証明書とに基づき、ユーザ秘密鍵を処理装置により生成する。
【０２４５】
実施の形態２に係るデータセンタ４０１の機能構成は、実施の形態１に係るデータセンタ４０１の機能構成と同一であるため、説明は省略する。
【０２４６】
また、属性情報符号化列５０１の構成と、暗号化データの構成も、実施の形態１で示した構成と同一であるため、説明は省略する。さらに、属性情報符号化列５０１から属性ベクトル、属性情報符号化列５０１から述語ベクトルへのマッピング方法も実施の形態１と同一であるため、説明は省略する。
【０２４７】
次に、部分ユーザ秘密鍵とグループ証明書とを生成する方法について説明する。
部分ユーザ秘密鍵とグループ証明書とを生成する場合、まず、述語ベクトルから固定述語ベクトルと可変述語ベクトルとが生成される。そして、固定述語ベクトルから部分ユーザ秘密鍵が生成され、可変述語ベクトルからグループ証明書が生成される。
ここでは、固定述語ベクトルと可変述語ベクトルの生成方法を説明する。固定述語ベクトルから部分ユーザ秘密鍵を生成する方法と、可変述語ベクトルからグループ証明書を生成する方法とは、処理の流れの中で説明する。
【０２４８】
図６０は、述語ベクトルから固定述語ベクトルと可変述語ベクトルとを生成する方式を示した図である。
実施の形態１で述べたように、述語ベクトルの要素には値“１”が格納されるケースと、属性情報符号化列の要素ｂｉの和や積が格納されるケースとがある。
固定述語ベクトルは、述語ベクトルの要素のうち値“１”が設定される要素（固定要素）のみを抽出し、それ以外の要素に値 “０”を設定したベクトルである。一方、可変述語ベクトルは、述語ベクトルの要素のうち属性情報符号化列の要素ｂｉの和や積が設定される要素（変化要素）のみを抽出し、それ以外の要素に値“０”を設定したベクトルである。つまり、この固定述語ベクトルと可変述語ベクトルとの和を計算すると、述語ベクトルとなる。
【０２４９】
秘匿検索システム１００の動作について説明する。
（１）システム初期設定、（２）中間秘密鍵生成、（３）ユーザ秘密鍵生成、（４）暗号化データ生成、（５）キーワード検索、（６）委譲ユーザ秘密鍵生成の処理に関しては、実施の形態１で示した処理と同一である。実施の形態２では、これらの処理に加えて、（７）部分ユーザ秘密鍵生成、（８）グループ証明書生成の処理が追加される。ここでは追加される処理について説明する。
【０２５０】
以下、フローチャートに基づき、各動作を説明する。
図６１は、（７）部分ユーザ秘密鍵生成の処理の流れを示すフローチャートである。
図６２は、（８）グループ証明書生成の処理の流れを示すフローチャートである。
【０２５１】
図６１に基づき、（７）部分ユーザ秘密鍵生成の処理に関して説明する。
（７）部分ユーザ秘密鍵生成は、鍵管理サーバ２０１が部分ユーザ秘密鍵（部分鍵ベクトル）を生成する処理である。
【０２５２】
（Ｓ７０１）
鍵管理サーバ２０１の部分ユーザ秘密鍵生成部２１０は、公開パラメータに含まれる属性情報符号化列５０１の構造から、属性情報符号化列５０１の値に依存せずに常に値“１”が設定される述語ベクトルの要素を処理装置により抽出する。そして、部分ユーザ秘密鍵生成部２１０は、常に値“１”が設定されると判定された述語ベクトルの要素に値“１”を設定し、他の要素に値“０”を設定した全要素固定述語ベクトルを生成する。
例えば、部分ユーザ秘密鍵生成部２１０は、属性情報符号化列の全ての要素に適当な値（任意）を設定して述語ベクトルを生成する。そして、生成した述語ベクトルのうち、係数として“１”が設定された要素を抽出することで、属性情報符号化列５０１の値に依存せずに常に値“１”が設定される述語ベクトルの要素を抽出することができる。
なお、ここで値“１”が設定された全要素固定述語ベクトルの要素のインデックス番号をＢＩｆｉｘとする。
【０２５３】
（Ｓ７０２）
部分ユーザ秘密鍵生成部２１０は、（Ｓ７０１）で生成した全要素固定述語ベクトルに基づき、処理装置により部分ユーザ秘密鍵を生成する。部分ユーザ秘密鍵は、マスター鍵からダイレクトに生成する方式と、中間秘密鍵から生成する方式の２方式がある。
【０２５４】
まず、マスター鍵から部分ユーザ秘密鍵ｐｋ＊１を生成する場合について説明する。
部分ユーザ秘密鍵生成部２１０は、処理装置により数１１６を計算することにより、マスター鍵から部分ユーザ秘密鍵ｐｋ＊１を生成する。
なお、以下の説明において、部分ユーザ秘密鍵ｐｋ＊Ｌ、グループ証明書ｃｅｒｔ＊ＬにおけるＬは、Ｌ階層目の鍵であることを示す。つまり、部分ユーザ秘密鍵ｐｋ＊１であれば、１階層目の秘密鍵であることを示し、部分ユーザ秘密鍵ｐｋ＊Ｌ＋１であれば、Ｌ階層目の１つ下のＬ＋１階層目の秘密鍵であることを示す。
【数１１６】
2011086687.tif 000018
【０２５５】
属性集合ＡＩＤは、全属性ＩＤの集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤのうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。固定インデックス集合ＢＩｆｉｘは、全要素固定述語ベクトルの要素のうち値“１”が設定された要素のインデックス番号の集合である。ＢＩｊ∩ＢＩｆｉｘは、インデックス集合ＢＩｊと固定インデックス集合ＢＩｆｉｘの積集合であり属性によらず値が一定のインデックス番号の集合である。
インデックス集合ＢＩＳは、全てのインデックス番号の集合である。
【０２５６】
つまり、部分ユーザ秘密鍵生成部２１０は、ＢＩｊ∩ＢＩｆｉｘに含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、値“１”を設定して、部分鍵ベクトルｐｋ＊１，０を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｊによってランダム化される。
また、部分ユーザ秘密鍵生成部２１０は、インデックス集合ＢＩＳに含まれる各インデックス番号ｈ及びｈ＝ｎ＋１について、インデックス集合ＢＩｊに含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、値“１”を設定するとともに、基底ベクトルｂ＊ｈに対する係数として値“１”を設定した部分鍵生成用ベクトルｐｋ＊１，ｈを生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊによってランダム化される。
そして、部分ユーザ秘密鍵生成部２１０は、部分鍵ベクトルｐｋ＊１，０と部分鍵生成用ベクトルｐｋ＊１，ｈとを部分ユーザ秘密鍵ｐｋ＊１とする。
【０２５７】
次に、中間秘密鍵ｋ＊Ｌから部分ユーザ秘密鍵ｐｋ＊Ｌ＋１を生成する場合について説明する。
ユーザ秘密鍵生成部２０４は、処理装置により数１１７を計算することにより、マスター鍵から部分ユーザ秘密鍵ｐｋ＊Ｌ＋１を生成する。
【数１１７】
2011086687.tif 000019
【０２５８】
属性集合ＡＩＤ＼ＡＩＤ１，Ｌは、全ての属性の属性集合ＡＩＤから、既に中間秘密鍵にて決定済みの属性の属性集合ＡＩＤ１から属性集合ＡＩＤＬを除いた属性ＩＤ集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤ＼ＡＩＤ１，ＬのうちＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。固定インデックス集合ＢＩｆｉｘは、全要素固定述語ベクトルの要素のうち値“１”が設定された要素のインデックス番号の集合である。ＢＩｊ∩ＢＩｆｉｘは、インデックス集合ＢＩｊと固定インデックス集合ＢＩｆｉｘの積集合であり属性によらず値が一定のインデックス番号の集合である。
インデックス集合ＢＩＳ＼ＢＩＳ１，Ｌは、属性集合ＡＩＤ＼ＡＩＤ１，Ｌに含まれる属性に対応するインデックス番号の集合である。
【０２５９】
つまり、部分ユーザ秘密鍵生成部２１０は、ＢＩｊ∩ＢＩｆｉｘに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを、中間秘密鍵ｋ＊Ｌに含まれる鍵ベクトルｋ＊Ｌ，０に加算して部分鍵ベクトルｐｋ＊Ｌ＋１，０を生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉには、基底ベクトルｂ＊ｉに対する係数として、値“１”が設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σ０，ｊによってランダム化される。
また、部分ユーザ秘密鍵生成部２１０は、インデックス集合ＢＩＳ＼ＢＩＳ１，Ｌに含まれる各インデックス番号ｈ及びｈ＝ｎ＋１について、ＢＩｊ∩ＢＩｆｉｘに含まれるインデックス番号ｉが示す鍵生成用ベクトルｋ＊Ｌ，ｉを、中間秘密鍵ｋ＊Ｌに含まれる鍵生成用ベクトルｋ＊Ｌ，ｈに加算して部分鍵生成用ベクトルｐｋ＊Ｌ＋１，ｈを生成する。ここで、鍵生成用ベクトルｋ＊Ｌ，ｉには、基底ベクトルｂ＊ｉに対する係数として、値“１”が設定されている。なお、新たに述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊによってランダム化される。
そして、部分ユーザ秘密鍵生成部２１０は、部分鍵ベクトルｐｋ＊Ｌ＋１，０と部分鍵生成用ベクトルｐｋ＊Ｌ＋１，ｈとを部分ユーザ秘密鍵ｐｋ＊Ｌ＋１とする。
【０２６０】
（Ｓ７０３）
ユーザ秘密鍵情報管理部２１１は、（Ｓ７０２）で生成した乱数値σｊ，σｈ，ｊを記憶装置に記憶する。
【０２６１】
（Ｓ７０４）
ＰＫＧ側データ送受信部２０９は、公開パラメータと、（Ｓ７０２）で生成した部分ユーザ秘密鍵とをアクセス端末３０１へ送付する。
【０２６２】
（Ｓ７０５）
アクセス端末３０１の端末側データ送受信部３１１は、公開パラメータと部分ユーザ秘密鍵とを受領する。そして、部分ユーザ秘密鍵管理部３１２は、受領した公開パラメータと部分ユーザ秘密鍵とを記憶装置に記憶する。
【０２６３】
次に、図６２を用いて、（８）グループ証明書生成の処理について説明する。
（８）グループ証明書生成は、鍵管理サーバ２０１が、グループ証明書を生成する処理である。
【０２６４】
（Ｓ８０１）
符号化情報生成部２０６とベクトル生成部２０７とは、ユーザ属性情報データベースからユーザの属性を読み込み、対応するユーザ秘密鍵述語ベクトルを処理装置により生成する。また、この際、委譲属性集合ＤＡＩＤも決定される。なお、この処理は、実施の形態１の（Ｓ３０１）で示した処理と同様である。
【０２６５】
（Ｓ８０２）
グループ証明書生成部２１２は、部分ユーザ秘密鍵の生成時に生成した乱数値σｊ，σｈ，ｊを記憶装置から取り出す。
【０２６６】
（Ｓ８０３）
グループ証明書生成部２１２は、（Ｓ８０１）で生成したユーザ秘密鍵述語ベクトルに基づき、グループ証明書を処理装置により生成する。
グループ証明書は、マスター鍵からダイレクトに生成する方式と、中間秘密鍵から生成する方式の２方式がある。
【０２６７】
まず、マスター鍵からグループ証明書ｃｅｒｔ＊１を生成する場合について説明する。
グループ証明書生成部２１２は、処理装置により数１１８を計算することにより、マスター鍵からグループ証明書ｃｅｒｔ＊１を生成する。
【数１１８】
2011086687.tif 000020
【０２６８】
属性集合ＡＩＤは、全属性ＩＤの集合であり、属性集合ＡＩＤ１はユーザ秘密鍵に設定する属性の属性ＩＤの集合である。属性集合ＡＩＤ＼ＡＩＤ１は、全属性ＩＤからユーザ秘密鍵に設定する属性ＩＤを取り除いた属性ＩＤ集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤ１もしくは属性集合ＡＩＤ＼ＡＩＤ１のうち、ＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックス番号の集合である。固定インデックス集合ＢＩｆｉｘは、全要素固定述語ベクトルの要素のうち値“１”が設定された要素のインデックス番号の集合である。ＢＩｊ∩ＢＩｆｉｘは、インデックス集合ＢＩｊと固定インデックス集合ＢＩｆｉｘの積集合であり属性によらず値が一定のインデックス番号の集合である。ＢＩｊ∩ＢＩｆｉｘ＾（固定インデックス集合ＢＩｆｉｘの補集合）はインデックス集合ＢＩｊと補集合ＢＩｆｉｘ＾の積集合で、属性によって値が変化するインデックス番号の集合である。
委譲インデックス集合ＤＢＩは、ユーザによって後で設定可能と決定した委譲属性集合ＤＡＩＤに対応するインデックス番号の集合である。委譲インデックス集合ＤＢＩには、既に設定済みの属性集合ＡＩＤ１に対応するインデックス番号集合は含まれない。
【０２６９】
つまり、数１１９に示すように、グループ証明書生成部２１２は、ＢＩｊ∩ＢＩｆｉｘ＾に含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉを設定したベクトルｃｅｒｔ＊１，０，１（第１ベクトル）を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｊと乱数σｊ’との積（σｊσｊ’）によってランダム化される。
また、グループ証明書生成部２１２は、所定の基底ベクトルｂ＊ｉに対する係数として、値“１”を設定したベクトルｃｅｒｔ＊１，０，２（第２ベクトル）を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｊと乱数σｊ’とによってランダム化される。
そして、グループ証明書生成部２１２は、ベクトルｃｅｒｔ＊１，０，１とｃｅｒｔ＊１，０，２との和を鍵ベクトルｃｅｒｔ＊１，０とする。
【数１１９】
2011086687.tif 000021
【０２７０】
また、数１２０に示すように、グループ証明書生成部２１２は、ＢＩｊ∩ＢＩｆｉｘ＾に含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉを設定したベクトルｃｅｒｔ＊１，ｈ，１（第１ベクトル）を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊと乱数σｈ，ｊ’との積（σｈ，ｊσｈ，ｊ’）によってランダム化される。
また、グループ証明書生成部２１２は、所定の基底ベクトルｂ＊ｉに対する係数として、値“１”を設定したベクトルｃｅｒｔ＊１，ｈ，２（第２ベクトル）を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｊと乱数σｊ’とによってランダム化される。
そして、グループ証明書生成部２１２は、ベクトルｃｅｒｔ＊１，ｈ，１とベクトルｃｅｒｔ＊１，ｈ，２との和を鍵ベクトルｃｅｒｔ＊１，ｈとする。
【数１２０】
2011086687.tif 000022
【０２７１】
次に、中間秘密鍵ｋ＊Ｌからグループ証明書ｃｅｒｔ＊Ｌ＋１を生成する場合について説明する。
グループ証明書生成部２１２は、処理装置により数１２１を計算することにより、中間秘密鍵ｋ＊Ｌからグループ証明書ｃｅｒｔ＊Ｌ＋１を生成する。
【数１２１】
2011086687.tif 000023
【０２７２】
属性集合ＡＩＤは全属性ＩＤの集合であり、属性集合ＡＩＤＬ＋１は今回のグループ証明書生成の際に値を決定した属性の属性ＩＤの集合である。属性集合ＡＩＤ１，Ｌ＋１は、グループ証明書生成に用いる中間秘密鍵の生成と、今回のグループ証明書生成の際に決定した属性の属性ＩＤの集合である。属性集合ＡＩＤ＼ＡＩＤ１，Ｌ＋１は、全属性ＩＤから属性集合ＡＩＤ１，Ｌ＋１で示される属性ＩＤを取り除いた属性ＩＤ集合である。
インデックス集合ＢＩｊは、属性集合ＡＩＤＬ＋１もしくは属性集合ＡＩＤ＼ＡＩＤ１，Ｌ＋１のうち、ＡＩＤ＝ｊとなる要素に対応する述語ベクトルのインデックスの集合である。固定インデックス集合ＢＩｆｉｘは、全要素固定述語ベクトルの要素のうち値“１”が設定された要素のインデックス番号である。ＢＩｊ∩ＢＩｆｉｘは、インデックス集合ＢＩｊと固定インデックス集合ＢＩｆｉｘの積集合である。ＢＩｊ∩ＢＩｆｉｘ＾は、インデックス集合ＢＩｊと補集合ＢＩｆｉｘ＾の積集合である。
委譲インデックス集合ＤＢＩＬ＋１は、ユーザによって後で設定可能と決定した委譲属性集合ＤＡＩＤに対応するインデックス番号の集合である。委譲インデックス集合ＤＢＩＬ＋１には、既に値が設定済みの属性集合ＡＩＤ１，Ｌ＋１に対応するインデックス番号集合は含まれない。
【０２７３】
つまり、数１２２に示すように、グループ証明書生成部２１２は、ＢＩｊ∩ＢＩｆｉｘ＾に含まれるインデックス番号ｉが示す基底ベクトルｂ＊ｉに対する係数として、述語ベクトルの要素ｖｉを設定したベクトルｃｅｒｔ＊Ｌ＋１，ｈ，１（第１ベクトル）を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｈ，ｊと乱数σｈ，ｊ’との積（σｈ，ｊσｈ，ｊ’）によってランダム化される。
また、グループ証明書生成部２１２は、所定の基底ベクトルｂ＊ｉに対する係数として、値“１”を設定したベクトルｃｅｒｔ＊Ｌ＋１，ｈ，２（第２ベクトル）を生成する。なお、述語ベクトルの要素が設定される各基底ベクトルの係数は、乱数σｊと乱数σｊ’とによってランダム化される。
そして、グループ証明書生成部２１２は、ベクトルｃｅｒｔ＊Ｌ＋１，ｈ，１とベクトルｃｅｒｔ＊Ｌ＋１，ｈ，２との和を鍵ベクトルｃｅｒｔ＊Ｌ＋１，ｈとする。
【数１２２】
2011086687.tif 000024
【０２７４】
（Ｓ８０４）
ＰＫＧ側データ送受信部２０９は、（Ｓ８０３）で生成したグループ証明書をアクセス端末３０１へ送付する。
【０２７５】
（Ｓ８０５）
アクセス端末３０１の端末側データ送受信部３１１は、グループ証明書を受領する。
ユーザ秘密鍵再構成部３１４は、グループ証明書ｃｅｒｔ＊Ｌ＋１と、部分ユーザ秘密鍵管理部３１２が記憶装置に記憶した部分ユーザ秘密鍵ｐｋ＊Ｌから、処理装置により数１２３を計算することによりユーザ秘密鍵ｋ＊Ｌ＋１を生成する。ユーザ秘密鍵記憶部３０２は、生成したユーザ秘密鍵ｋ＊Ｌ＋１を記憶装置に記憶する。
【数１２３】
2011086687.tif 000025
【０２７６】
つまり、ユーザ秘密鍵再構成部３１４は、部分ユーザ秘密鍵ｐｋ＊Ｌ＋１（又はｐｋ＊１）に、グループ証明書ｃｅｒｔ＊Ｌ＋１（ｃｅｒｔ＊１）を加算することにより、ユーザ秘密鍵ｋ＊Ｌ＋１（ｋ＊１）を生成する。
ここで、グループ証明書ｃｅｒｔ＊Ｌ＋１（ｃｅｒｔ＊１）のうち、ベクトルｃｅｒｔ＊Ｌ＋１，ｈ，１（ｃｅｒｔ＊１，ｈ，１）は、部分ユーザ秘密鍵ｐｋ＊Ｌ＋１（又はｐｋ＊１）に不足している述語ベクトルの変化要素が設定されたベクトルである。したがって、ベクトルｃｅｒｔ＊Ｌ＋１，ｈ，１（ｃｅｒｔ＊１，ｈ，１）を部分ユーザ秘密鍵ｐｋ＊Ｌ＋１（又はｐｋ＊１）に加算することにより、不足部分が補われる。
また、グループ証明書ｃｅｒｔ＊Ｌ＋１（ｃｅｒｔ＊１）のうち、ベクトルｃｅｒｔ＊Ｌ＋１，ｈ，２（ｃｅｒｔ＊１，ｈ，２）は、部分ユーザ秘密鍵ｐｋ＊Ｌ＋１（又はｐｋ＊１）に過剰に加えられている述語ベクトルの固定要素を取り除き、必要な固定要素を設定するためのベクトルである。ベクトルｃｅｒｔ＊Ｌ＋１，ｈ，２（ｃｅｒｔ＊１，ｈ，２）を部分ユーザ秘密鍵ｐｋ＊Ｌ＋１（又はｐｋ＊１）に加算することにより、過剰に加えられている述語ベクトルの固定要素が取り除かれ、必要な固定要素が設定される。
【０２７７】
なお、グループ証明書は、部分ユーザ秘密鍵発行時に用いた乱数値σｊやσｈ，ｊが含まれるため、乱数が一致する部分ユーザ秘密鍵との組み合わせでのみユーザ秘密鍵を生成可能である。つまり、乱数が一致する部分ユーザ秘密鍵を有するアクセス端末３０１でなければ、グループ証明書からユーザ秘密鍵を生成することはできない。
【０２７８】
上記説明では、属性情報符号化列５０１の構成方法に特に制約は加えず汎用的な記載にした。しかし、実施の形態２に示す秘匿検索システム１００は、ユーザの所属が毎年や半年に１回変わるなど、属性が頻繁に変化する際に特に効果を発揮する。そこで、以下では、具体例を交えて、属性が頻繁に変化する場合について説明する。
【０２７９】
次のような状況を考える。田中さんは、２００７年から２００９年まで総務課、福祉ユニットに所属しており、その間に作られたデータには全てアクセス可能である。２０１０年になった時、田中さんは引き続き福祉ユニットに属していたため、継続して２０１０年に作成したデータにもアクセス可能とする。ところが、２０１０年中に係長に昇進したため、２０１０年に作成したデータは係長の権限としてアクセス可能できるようにすることとする。しかし、２０１１年になった際に、人事課採用ユニットに異動することになった。
この様な状況では、実施の形態１に係る秘匿検索システム１００では、２００７年の配属時、その後に異動はないものの２００８年、２００９年、２０１０年になった時点、係長に昇進した時点、２０１１年に異動した時点で、田中さんのユーザ秘密鍵の配布が必要である。
上述したように、ユーザ秘密鍵は極めて機密度の高い情報であるため、通常はＩＣカードなどに格納して配布される。ＩＣカードでユーザ秘密鍵を配布するケースでは、一度田中さんのＩＣカードを回収し、ユーザ秘密鍵を書き込んだ後に、田中さんにＩＣカードを手渡しする必要である。そのため、ユーザ秘密鍵の配布の手間は極めて高い。
【０２８０】
この状況における実施の形態２に係る秘匿検索システム１００の処理について説明する。
図６３は、実施の形態２に係る秘匿検索システム１００の処理の流れを示すフローチャートである。
【０２８１】
（Ｓ９０１）
鍵管理サーバ２０１は、ユーザが新しく会社に入社した時、もしくは異動で鍵管理サーバの管理範囲に加わった場合などのタイミングで、（７）部分ユーザ秘密鍵生成の処理を実行して、ユーザに対して部分ユーザ秘密鍵を発行する。
この部分ユーザ秘密鍵は機密性が高い情報であるため、ＩＣカードなどを用いて安全にユーザへ送付する。
【０２８２】
（Ｓ９０２）
鍵管理サーバ２０１は、ユーザの属性や期間に基づきグループ証明書を作成し、アクセス端末３０１へ送付する。
このグループ証明書は、部分ユーザ秘密鍵発行時に用いた乱数値が含まれるため、乱数が一致する部分ユーザ秘密鍵との組合せでのみユーザ秘密鍵を生成可能である。そのため、部分ユーザ秘密鍵が安全に守られている限り、グループ証明書は通信路を介して配布すればよいため、配布のコストは極めて少なくて済む。
【０２８３】
（Ｓ９０３）
アクセス端末３０１は、（Ｓ９０１）で配布された部分ユーザ秘密鍵と、（Ｓ９０２）で配布されたグループ証明書とからユーザ秘密鍵を生成する。アクセス端末３０１は、このユーザ秘密鍵を用いて、データの検索や復号を行う。
【０２８４】
図６４は、グループ証明書に関する属性情報符号化列５０１の例を示す図である。図６４は、２００７年に田中さんが福祉ユニットに加わった時点で発行されるグループ証明書に関する属性情報符号化列５０１の例を示す。
図６４に示す例では、総務課、福祉ユニットの田中さんは、２００７年に担当の役職に就いていたフラグがセットされている。そのため、このグループ証明書と部分ユーザ秘密鍵に基づき生成したユーザ秘密鍵は、図６４で示した属性情報符号化列５０１に対応している。したがって、属性情報符号化列５０１で指定された属性で読める範囲の暗号化データを検索、復号することができる。
【０２８５】
（Ｓ９０４）
鍵管理サーバ２０１は、ユーザの属性が変化したかどうかを監視する。属性が変化していない場合は特に何も処理は行わず、アクセス端末３０１は、（Ｓ９０３）で生成したユーザ秘密鍵を用いて暗号化データを利用する。鍵管理サーバ２０１は、属性が変化した場合は、（Ｓ９０２）へ処理を戻し、新しい属性に対応したグループ証明書を生成し、アクセス端末３０１へ配布する。
そして、（Ｓ９０３）でアクセス端末３０１は、既に配布されている部分ユーザ秘密鍵と、新しいグループ証明書とに基づき、新しいユーザ秘密鍵を生成する。
【０２８６】
図６５は、図６４で示した属性から数年が経過して２０１０年になった時に、ユーザである田中さんに発行されるグループ証明書の属性情報符号化列５０１を示す。
上述した状況では、２０１０年になるまで属性に変化はなく、年だけが経過する。そのため、属性情報符号化列５０１は、期間情報符号化列の２００８年から２０１０年の属性値のみ変更される。そして、変更された属性情報符号化列５０１に基づき、新しいグループ証明書が生成される。生成された新しいグループ証明書を用いてユーザ秘密鍵を生成することで、田中さんは２００７年から２０１０年までに作成された暗号化データの内、福祉ユニットの担当者の権限で暗号化データを利用できる。
なお、ここでは省略したが、２００８年、２００９年になった時点でも、同様に期間のみを延長したグループ証明書が配布されている。
【０２８７】
図６６は、２０１０年中に田中さんが係長に昇進した場合に、ユーザである田中さんに発行されるグループ証明書の属性情報符号化列５０１を示す図である。
図６６では、役職が係長に変更され、かつ期間情報として２０１０年のみ設定される。これは、福祉課には２００７年から属しているが、係長の役職に就いたのが２０１０年であるため、２０１０年に生成された暗号化データにのみ係長の権限でアクセスできるようにするためである。そして、この属性情報符号化列５０１に基づき、新しいグループ証明書が生成される。生成された新しいグループ証明書を用いてユーザ秘密鍵を生成することで、２０１０年に生成された暗号化データに係長の権限でアクセスできるようになる。なお、２００９年以前に生成された暗号化データに関しては係長の権限ではアクセスすることはできない。
【０２８８】
図６７は、２０１１年になったタイミングで田中さんが人事課採用ユニットに異動した場合、ユーザである田中さんに発行されるグループ証明書の属性情報符号化列５０１を示す図である。
図６７では、所属が人事課採用ユニットに変更され、かつ期間情報として２０１１年のみ設定される。そして、この属性情報符号化列５０１に基づき、新しいグループ証明書が生成される。生成された新しいグループ証明書を用いてユーザ秘密鍵を生成することで、２０１１年に人事課採用ユニットで生成された暗号化データにアクセスできるようになる。一方、総務課福祉ユニットで２０１１年に生成された暗号化データに関しては、その期間情報が設定されたグループ証明書が発行されないため、アクセスすることはできない。
但し、人事課採用ユニットに異動した時に、人事課採用ユニットの過去１年間の文書を読めるようにしたい場合は、図６８に示すように期間情報符号化列の２０１１年フラグだけでなく、２０１０年フラグを立てることで、２０１０年に作成した暗号化データもアクセスすることが可能となる。
【０２８９】
以上のように、秘匿検索システム１００は、部分ユーザ秘密鍵とグループ証明書を組みあわせることで初めてユーザ秘密鍵を構築できるようにする。これにより、部分ユーザ秘密鍵だけは安全に配布する必要があるが、グループ証明書は安全に配布する必要がない。そのため、例えば、秘匿検索システム１００は、最初に部分ユーザ秘密鍵はＩＣカードなどで安全に配布し、グループ証明書はネットワークを介して配送することができる。その結果、秘匿検索システム１００は、グループ証明書の配布コストを低減することができ、人事異動などの属性の変更が発生するようなシステムで、その運用コストを低減することができる。
【０２９０】
また、秘匿検索システム１００は、グループ証明書を発行する際に、所属情報や役職情報に加え、その属性が付与されていた期間情報を厳密に含める。そのため、秘匿検索システム１００は、例えばユーザが別の部に異動した場合、元々属していた部で新規に作成した暗号化データにはアクセスできないように制限を行うことができる。また、秘匿検索システム１００は、ユーザが新しく属した部においても、過去に作成した暗号化データはアクセスできないように制限を行いつつ、異動後に作成した暗号化データにはアクセスできるような制御を行うことができる。なお、秘匿検索システム１００は、過去１年に作成した暗号化データにはアクセスを許すような場合にも対応可能である。
【０２９１】
また、上記説明では、期間情報を年単位で設定する例であったため、ユーザの人事異動によるアクセス権限の変更は１年単位でしか制御することができない。しかし、期間情報の単位を細かくすることで、よりきめ細かなアクセス権限を制御することができる。
例えば、期間情報を１ヶ月単位にすることで、毎月１回の人事異動のタイミングでアクセス権限を変更することも可能である。この場合でも、グループ証明書はネットワーク経由で配送すればよいため、運用の手間やコストを増やすことなく実現できる。
【０２９２】
また、上記説明では、鍵管理サーバ２０１の属性は固定されるのに対し、ユーザの属性が変化する点に着目し、ユーザ秘密鍵を部分ユーザ秘密鍵をグループ証明書に分割して配布する方法を示した。しかし、鍵管理サーバ２０１の属性も変更される場合には、鍵管理サーバ２０１に対しても部分中間秘密鍵とグループ証明書とを発行するようにしてもよい。鍵管理サーバ２０１に対する部分中間秘密鍵とグループ証明書とを生成する方法は、基本的にユーザに対する部分ユーザ秘密鍵とグループ証明書とを生成する方法と同一である。
【０２９３】
また、上記説明では、（Ｓ７０１）で全要素固定述語ベクトルを生成しているが、これは１回だけ実施すれば良く、毎回実施しなくてもよい。例えば、システム設定時に１回生成し、公開パラメータとして配布することで、全ユーザに対して実施しなくても良くなると言うメリットもある。
【０２９４】
また、上記説明では、述語ベクトルのうち定数部分から固定述語ベクトルを作成し、可変部分（属性部分）から可変述語ベクトルを作成するようにした。しかし、必ずしも固定部分と可変部分とを境として固定述語ベクトルと可変述語ベクトルとに分けなくてはならない訳ではなく、固定述語ベクトルと可変述語ベクトルとを足した結果が述語ベクトルとなる様に分ければよい。例えば、ランダムに要素を決定した固定述語ベクトルから秘密鍵（部分ユーザ秘密鍵や部分中間秘密鍵）を生成し、述語ベクトルから固定述語ベクトルを引いたものを可変述語ベクトルとしてグループ証明書を発行するようにしても良い。また、氏名などの固定化された情報は、属性であるが固定述語ベクトルに含めるようにしても良い。
【０２９５】
また、上記説明では、また、数１１８で生成したグループ証明書は、生成中に用いる乱数としてσｊσｊ’を利用するため、部分ユーザ秘密鍵と組みあわせる事で、乱数σｊσｊ’を用いて作成したユーザ秘密鍵が復元できる。しかし、σｊσｊ’の代わりに乱数σｊ＋σｊ’を用いてグループ証明書を生成し、部分ユーザ秘密鍵と組みあわせる事で、乱数σｊ＋σｊ’を用いて作成したユーザ秘密鍵を復元する事もできる。また、乱数σｊと乱数σｊ’だけでなく、他の乱数を用いて生成するようにしてもよい。
【０２９６】
次に、上記実施の形態における秘匿検索システム１００（鍵管理サーバ２０１、アクセス端末３０１、データセンタ４０１）のハードウェア構成について説明する。
図６９は、鍵管理サーバ２０１、アクセス端末３０１、データセンタ４０１のハードウェア構成の一例を示す図である。
図６９に示すように、鍵管理サーバ２０１、アクセス端末３０１、データセンタ４０１は、プログラムを実行するＣＰＵ１９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ１９１１は、バス１９１２を介してＲＯＭ１９１３、ＲＡＭ１９１４、ＬＣＤ１９０１（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、キーボード１９０２（Ｋ／Ｂ）、通信ボード１９１５、磁気ディスク装置１９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置１９２０（固定ディスク装置）の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置１９２０は、所定の固定ディスクインタフェースを介して接続される。
【０２９７】
ＲＯＭ１９１３、磁気ディスク装置１９２０は、不揮発性メモリの一例である。ＲＡＭ１９１４は、揮発性メモリの一例である。ＲＯＭ１９１３とＲＡＭ１９１４と磁気ディスク装置１９２０とは、記憶装置（メモリ）の一例である。また、キーボード１９０２、通信ボード１９１５は、入力装置の一例である。また、通信ボード１９１５は、通信装置（ネットワークインタフェース）の一例である。さらに、ＬＣＤ１９０１は、表示装置の一例である。
【０２９８】
磁気ディスク装置１９２０又はＲＯＭ１９１３などには、オペレーティングシステム１９２１（ＯＳ）、ウィンドウシステム１９２２、プログラム群１９２３、ファイル群１９２４が記憶されている。プログラム群１９２３のプログラムは、ＣＰＵ１９１１、オペレーティングシステム１９２１、ウィンドウシステム１９２２により実行される。
【０２９９】
プログラム群１９２３には、上記の説明において「マスター鍵生成部２０２」、「中間秘密鍵生成部２０３」、「ユーザ秘密鍵生成部２０４」、「ユーザ属性情報管理部２０５」、「符号化情報生成部２０６」、「ベクトル生成部２０７」、「各種鍵保管部２０８」、「ＰＫＧ側データ送受信部２０９」、「部分ユーザ秘密鍵生成部２１０」、「ユーザ秘密鍵情報管理部２１１」、「グループ証明書生成部２１２」、「ユーザ秘密鍵記憶部３０２」、「トラップドア生成部３０３」、「委譲ユーザ秘密鍵生成部３０４」、「データ暗号化鍵復号部３０５」、「符号化情報生成部３０６」、「ベクトル生成部３０７」、「タグ・暗号化データ暗号化鍵生成部３０８」、「データ暗号化部３０９」、「データ復号部３１０」、「端末側データ送受信部３１１」、「部分ユーザ秘密鍵管理部３１２」、「ユーザ秘密鍵再構成部３１４」、「グループ証明書管理部３１３」、「センタ側データ送受信部４０２」、「データ管理部４０３」、「検索要求受信部４０４」、「検索実行部４０５」、「検索結果送信部４０６」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、ＣＰＵ１９１１により読み出され実行される。
ファイル群１９２４には、上記の説明において「マスター鍵」、「公開パラメータ」、「暗号化データ」、「中間秘密鍵」、「ユーザ秘密鍵」、「部分ユーザ秘密鍵」、「グループ証明書」、「部分中間秘密鍵」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ１９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ１９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ１９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【０３００】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ１９１４のメモリ、その他光ディスク等の記録媒体やＩＣチップに記録される。また、データや信号は、バス１９１２や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ１９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ＲＯＭ１９１３等の記録媒体に記憶される。プログラムはＣＰＵ１９１１により読み出され、ＣＰＵ１９１１により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【０３０１】
１００  秘匿検索システム、１０１  ネットワーク、１０２  社内ＬＡＮ、２０１  鍵管理サーバ、２０２  マスター鍵生成部、２０３  中間秘密鍵生成部、２０４  ユーザ秘密鍵生成部、２０５  ユーザ属性情報管理部、２０６  符号化情報生成部、２０７  ベクトル生成部、２０８  各種鍵保管部、２０９  ＰＫＧ側データ送受信部、２１０  部分ユーザ秘密鍵生成部、２１１  ユーザ秘密鍵情報管理部、２１２  グループ証明書生成部、３０１  アクセス端末、３０２  ユーザ秘密鍵記憶部、３０３  トラップドア生成部、３０４  委譲ユーザ秘密鍵生成部、３０５  データ暗号化鍵復号部、３０６  符号化情報生成部、３０７  ベクトル生成部、３０８  タグ・暗号化データ暗号化鍵生成部、３０９  データ暗号化部、３１０  データ復号部、３１１  端末側データ送受信部、３１２  部分ユーザ秘密鍵管理部、３１３  グループ証明書管理部、３１４  ユーザ秘密鍵再構成部、４０１  データセンタ、４０２  センタ側データ送受信部、４０３  データ管理部、４０４  検索要求受信部、４０５  検索実行部、４０６  検索結果送信部、５０１  属性情報符号化列、５０２  個人ＩＤ、５０３  所属情報符号化列、５０４  役職情報符号化列、５０５  カテゴリ符号化列、５０６  機密度符号化列、５０７  雇用形態符号化列、５０８  期間情報符号化列、５０９  委譲先情報符号化列、５１０  鍵用途フラグ、５１１  検索語符号化列、６０１  会社ＩＤ、６０２  事業所ＩＤ、６０３  部ＩＤ、６０４  課ＩＤ、６０５  ユニットＩＤ、７０１  役員クラスフラグ、７０２  所長クラスフラグ、７０３  部長クラスフラグ、７０４  課長クラスフラグ、７０５  係長クラスフラグ、７０６  担当クラスフラグ、８０１  大分類識別ＩＤ、８０２  中分類識別ＩＤ、８０３  小分類識別ＩＤ、９０１  極秘フラグ、９０２  秘フラグ、９０３  社外秘フラグ、９０４  非該当フラグ、１００１  総合職フラグ、１００２  一般職フラグ、１００３  駐在者フラグ、１００４  関係社員フラグ、１００５  派遣社員フラグ、１００６  その他フラグ、１２０１  開始年月符号化列、１２０２  中間年符号化列、１２０３  終了年月符号化列、１３０１  役員秘書フラグ、１３０２  所長代理フラグ、１３０３  部長代理フラグ、１３０４  課長代理フラグ、１３０５  同僚フラグ。
【図１】
2011086687.tif 000039
【図２】
2011086687.tif 000040
【図３】
2011086687.tif 000041
【図４】
2011086687.tif 000042
【図５】
2011086687.tif 000043
【図６】
2011086687.tif 000044
【図７】
2011086687.tif 000045
【図８】
2011086687.tif 000046
【図９】
2011086687.tif 000047
【図１０】
2011086687.tif 000048
【図１１】
2011086687.tif 000049
【図１２】
2011086687.tif 000050
【図１３】
2011086687.tif 000051
【図１４】
2011086687.tif 000052
【図１５】
2011086687.tif 000053
【図１６】
2011086687.tif 000054
【図１７】
2011086687.tif 000055
【図１８】
2011086687.tif 000056
【図１９】
2011086687.tif 000057
【図２０】
2011086687.tif 000058
【図２１】
2011086687.tif 000059
【図２２】
2011086687.tif 000060
【図２３】
2011086687.tif 000061
【図２４】
2011086687.tif 000062
【図２５】
2011086687.tif 000063
【図２６】
2011086687.tif 000064
【図２７】
2011086687.tif 000065
【図２８】
2011086687.tif 000066
【図２９】
2011086687.tif 000067
【図３０】
2011086687.tif 000068
【図３１】
2011086687.tif 000069
【図３２】
2011086687.tif 000070
【図３３】
2011086687.tif 000071
【図３４】
2011086687.tif 000072
【図３５】
2011086687.tif 000073
【図３６】
2011086687.tif 000074
【図３７】
2011086687.tif 000075
【図３８】
2011086687.tif 000076
【図３９】
2011086687.tif 000077
【図４０】
2011086687.tif 000078
【図４１】
2011086687.tif 000079
【図４２】
2011086687.tif 000080
【図４３】
2011086687.tif 000081
【図４４】
2011086687.tif 000082
【図４５】
2011086687.tif 000083
【図４６】
2011086687.tif 000084
【図４７】
2011086687.tif 000085
【図４８】
2011086687.tif 000086
【図４９】
2011086687.tif 000087
【図５０】
2011086687.tif 000088
【図５１】
2011086687.tif 000089
【図５２】
2011086687.tif 000090
【図５３】
2011086687.tif 000091
【図５４】
2011086687.tif 000092
【図５５】
2011086687.tif 000093
【図５６】
2011086687.tif 000094
【図５７】
2011086687.tif 000095
【図５８】
2011086687.tif 000096
【図５９】
2011086687.tif 000097
【図６０】
2011086687.tif 000098
【図６１】
2011086687.tif 000099
【図６２】
2011086687.tif 000100
【図６３】
2011086687.tif 000101
【図６４】
2011086687.tif 000102
【図６５】
2011086687.tif 000103
【図６６】
2011086687.tif 000104
【図６７】
2011086687.tif 000105
【図６８】
2011086687.tif 000106
【図６９】
2011086687.tif 000107
【国際調査報告】
2011086687.tif 000108
2011086687.tif 000109
2011086687.tif 000110
2011086687.tif 000111