"評価者装置とユーザ装置とを含み、当該ユーザ装置が提供した情報に対する評価を当該ユーザ装置に行わせる評価対象情報自己評価システムであって、公開パラメータpkとマスター鍵skが定められた暗号が、KeyGen→ski:鍵生成アルゴリズムマスター鍵skと情報iを入力とし、当該情報iに対応する秘密鍵skiを出力する確率的多項式時間アルゴリズムと、Enc→cj:暗号化アルゴリズム公開パラメータpkと情報jと暗号化対象の情報以下、平文というxを入力とし、暗号文cjを出力する確率的多項式時間アルゴリズムと、Dec→y:復号アルゴリズム公開パラメータpkと秘密鍵skiと暗号文cjを入力とし、情報yを出力する確率的多項式時間アルゴリズムとを含み、上記情報iと上記情報jが予め定められた関係Rを満たすときに上記情報yとして上記平文xが得られるように構成されており、上記評価者装置は、上記情報iを上記ユーザ装置が送信した情報以下、評価対象情報というとして、上記暗号の鍵生成アルゴリズムKeyGenを実行して秘密鍵ski←KeyGenを生成する秘密鍵生成部と、上記情報jを上記評価対象情報iに対する評価基準を表す情報以下、評価基準というとして、上記暗号の暗号化アルゴリズムEncを実行して暗号文cj←Encを生成する暗号文生成部とを含み、上記ユーザ装置は、上記評価対象情報iを上記評価者装置に送信する送信部と、上記評価者装置が送信した上記秘密鍵skiと上記暗号文cjを用いて、上記暗号の復号アルゴリズムDecを実行する復号部とを含む評価対象情報自己評価システム。請求項1に記載の評価対象情報自己評価システムにおいて、上記関係Rは、評価対象を述語変数として記述された述語である上記評価基準jと当該述語変数に代入されうる上記評価対象情報iとの関係であることを特徴とする評価対象情報自己評価システム。請求項2に記載の評価対象情報自己評価システムにおいて、上記評価基準jは、上記ユーザ装置を識別するためのユーザ識別子が代入されうる述語変数と上記ユーザ装置が送信したユーザ識別子との一致について真偽を与える述語を含むことを特徴とする評価対象情報自己評価システム。請求項2または請求項3に記載の評価対象情報自己評価システムにおいて、上記評価基準jは、閾値秘密分散を定義する閾値ゲートを記述する述語を含むことを特徴とする評価対象情報自己評価システム。請求項4に記載の評価対象情報自己評価システムにおいて、上記暗号文生成部は、上記閾値ごとに上記暗号文を生成し、上記復号部は、上記閾値ごとに生成された各上記暗号文を復号し、上記ユーザ装置は、上記閾値ごとに生成された各上記暗号文の復号に成功したもののうち、上記閾値が最良のものを上記評価者装置に送信する送信部を含むことを特徴とする評価対象情報自己評価システム。請求項1に記載の評価対象情報自己評価システムにおいて、上記関係Rは、述語変数を用いて記述された述語である上記評価対象情報iと当該述語変数に代入されうる上記評価基準jとの関係であることを特徴とする評価対象情報自己評価システム。評価者装置とユーザ装置とを含み、当該ユーザ装置が提供した情報に対する評価を当該ユーザ装置に行わせる評価対象情報自己評価システムにおける評価対象情報自己評価方法であって、公開パラメータpkとマスター鍵skが定められた暗号が、KeyGen→ski:鍵生成アルゴリズムマスター鍵skと情報iを入力とし、当該情報iに対応する秘密鍵skiを出力する確率的多項式時間アルゴリズムと、Enc→cj:暗号化アルゴリズム公開パラメータpkと情報jと暗号化対象の情報以下、平文というxを入力とし、暗号文cjを出力する確率的多項式時間アルゴリズムと、Dec→y:復号アルゴリズム公開パラメータpkと秘密鍵skiと暗号文cjを入力とし、情報yを出力する確率的多項式時間アルゴリズムとを含み、上記情報iと上記情報jが予め定められた関係Rを満たすときに上記情報yとして上記平文xが得られるように構成されており、上記情報iを評価対象情報として、上記ユーザ装置の送信部が、当該評価対象情報iを上記評価者装置に送信する送信ステップと、上記評価者装置の秘密鍵生成部が、上記評価対象情報iを用いて、上記暗号の鍵生成アルゴリズムKeyGenを実行して秘密鍵ski←KeyGenを生成する秘密鍵生成ステップと、上記情報jを上記評価対象情報iに対する評価基準を表す情報として、上記評価者装置の暗号文生成部が、上記暗号の暗号化アルゴリズムEncを実行して暗号文cj←Encを生成する暗号文生成ステップと、上記ユーザ装置の復号部が、上記秘密鍵skiと上記暗号文cjを用いて、上記暗号の復号アルゴリズムDecを実行する復号ステップとを有する評価対象情報自己評価方法。請求項1から請求項6のいずれかに記載の評価対象情報自己評価システムにおいて用いられる評価者装置。請求項1から請求項6のいずれかに記載の評価対象情報自己評価システムにおいて用いられるユーザ装置。請求項8に記載の評価者装置、請求項9に記載のユーザ装置のいずれかとしてコンピュータを機能させるプログラム。このため、個人に固有の情報を含む評価対象情報の授受のセキュアな運用や、当該評価対象情報あるいは個人に固有の情報の管理などは、相応のコストを要するものとなっている。なぜなら、評価対象情報や個人に固有の情報が漏洩すると個人のプライバシー権侵害など法的、社会的、経済的に大きな問題となりえるからである。このような情報管理や運用のコストは、運用者や管理者にとってしばしば大きな問題となる。もし、評価対象情報の評価を安全にユーザ自身が行うことができれば、上述の問題は解消されることになるが、現在、そのような技術は知られていない。なお、ここで安全にとは、ユーザが、評価対象情報に対する評価基準を知ったり、あるいは当該評価基準を改竄したりすることができないことを云う。換言すれば、安全にとは、ユーザ以外の評価者が評価対象情報を評価した場合の安全性および正当性と同等レベルの安全性および正当性を確保できることを云う。そこで本発明は、ユーザ装置が提供した評価対象情報に対する評価を当該ユーザ装置自身に安全に行わせる評価対象情報自己評価技術を提供することを目的とする。本発明の評価対象情報自己評価技術は、次のとおりである。この技術で用いる暗号は、公開パラメータpkとマスター鍵skが定められた暗号が、KeyGen→ski:鍵生成アルゴリズムマスター鍵skと情報iを入力とし、当該情報iに対応する秘密鍵skiを出力する確率的多項式時間アルゴリズムと、Enc→cj:暗号化アルゴリズム公開パラメータpkと情報jと暗号化対象の情報平文xを入力とし、暗号文cjを出力する確率的多項式時間アルゴリズムと、Dec→y:復号アルゴリズム公開パラメータpkと秘密鍵skiと暗号文cjを入力とし、情報yを出力する確率的多項式時間アルゴリズムとを含み、情報iと情報jが予め定められた関係Rを満たすときに情報yとして平文xが得られるように構成されている。評価対象情報自己評価システムに含まれるユーザ装置は、情報iを評価対象情報として、当該評価対象情報iを上記評価者装置に送信する。評価対象情報自己評価システムに含まれる評価者装置では、評価対象情報iを用いて、暗号の鍵生成アルゴリズムKeyGenを実行して秘密鍵ski←KeyGenを生成し、情報jを評価対象情報iに対する評価基準を表す情報として、暗号の暗号化アルゴリズムEncを実行して暗号文cj←Encを生成する。ユーザ装置では、秘密鍵skiと暗号文cjを用いて、暗号の復号アルゴリズムDecを実行する。本発明に拠れば、上記暗号の構成を利用することによって、ユーザ装置が提供した評価対象情報に対する評価を当該ユーザ装置自身に安全に行わせることができる。初めに、本明細書において個人に固有の情報は、個人情報の保護に関する法律平成一五年五月三十日法律第五十七号に規定される個人情報と同義に限定するものではなく、より広い範囲の情報を包含し、個人識別性を有しない情報であってもよく、およそ個人に関連性の認められる情報を含む。例えば、選択肢から解答を選択する選択式試験問題に対する解答、即ち、受験者が選択した選択肢そのものは当該受験者を直截に識別する性質を有しないが、当該受験者の意思に基づき選択された選択肢であるという意味において当該受験者個人に関連性の認められる情報であるから、当該選択肢も個人に固有の情報に含まれることになる。《原理》本発明の評価対象情報自己評価技術は関数型暗号を利用して実現される。そこでまず関数型暗号について説明する。<関数型暗号>近年、関数型暗号と呼ばれるIDベース暗号の拡張暗号が話題となっている。関数型暗号は下記の4つのアルゴリズムから構成される。プロトコルの概略は下記のとおりである。《プロトコルFE》========================================Setup→:セットアップアルゴリズムセキュリティパラメータ1λを入力とし、公開パラメータpkとマスター鍵skを出力する確率的多項式時間アルゴリズムKeyGen→ski:鍵生成アルゴリズムマスター鍵skと鍵識別子iを入力とし、当該鍵識別子iに対応する秘密鍵skiを出力する確率的多項式時間アルゴリズムEnc→cj:暗号化アルゴリズム公開パラメータpkと受信者識別子jと暗号化対象の情報平文xを入力とし、暗号文cjを出力する確率的多項式時間アルゴリズムDec→y:復号アルゴリズム公開パラメータpkと秘密鍵skiと暗号文cjを入力とし、平文yを出力する確率的多項式時間アルゴリズム========================================関数型暗号では、IDベース暗号の正当性が拡張されており、暗号文の受信者は鍵識別子iを持つ秘密鍵と受信者識別子jを持つ暗号文から平文xに関する何らかの関数fijを評価することができるようになっている。即ち、或る関数fijが存在し∀i,∀j,∀x∈01polyに対して式1で表される確率Prがλに関して圧倒的1との差が無視しうるであるとき、その関数型暗号は正当であると云う。なお、polyはλで決まる多項式長を表している。特に、或る関係Rが存在し、式2で表されるタイプの関数fijを持つ関数型暗号は様々な暗号を包含している⊥は正常に復号できなかったことを表す記号である。例えばIDベース暗号は式3で表される関数fijを持つ関数型暗号と定義することができる。より高度な関係Rを持つ様々な関数型暗号が研究されている。このタイプの関数型暗号のうち最も汎用性の高いものは属性ベース暗号あるいは述語暗号等と呼ばれ、よく研究されている。2010年に岡本龍明らは多項式サイズの述語および述語変数の集合に対応し、標準的な暗号学的仮定の下で適応的識別子攻撃に対してCCA安全が証明できる比較的実用的なこのタイプの関数型暗号を提案した参考文献1参照。参考文献1TatsuakiOkamotoandKatsuyukiTakashimaFullySecureFunctionalEncryptionwithGeneralRelationsfromtheDecisionalLinearAssumptionInAdvancesinCryptologyCRYPTO2010LectureNotesinComputerScienceVolume6223191208SpringerVerlag2010Fullpaperhttpeprintiacrorg2010563鍵識別子iを述語、受信者識別子jを述語変数のインスタンスとして式4で表される関係Rを持つ関数型暗号は鍵ポリシー関数型暗号と呼ばれる。このとき、暗号文が平文xだけでなく述語変数のインスタンスjも秘匿する事を属性秘匿と云う。鍵識別子iを述語変数、受信者識別子jを述語のインスタンスとして式5で表される関係Rを持つ関数型暗号は暗号文ポリシー関数型暗号と呼ばれる。このとき、暗号文が平文xだけでなく述語jも秘匿する事を述語秘匿と云う。属性秘匿を持つ鍵ポリシー関数型暗号あるいは述語秘匿を持つ暗号文ポリシー関数型暗号を述語暗号と呼ばれる参考文献2参照。参考文献2TatsuakiOkamotoandKatsuyukiTakashimaHierarchicalPredicateEncryptionforInnerProductsASIACRYPT2009pp2142312009<閾値ゲート>関数型暗号における閾値ゲートの構成は、N個の分散情報のうち任意のt個が与えられれば秘密を復元できるが、任意のt1個以下の分散情報が与えられても秘密を復元できない閾値秘密分散方式、即ちtoutofN秘密分散方式を用いて実現される。toutofN秘密分散については参考文献3などを参照されたい。toutofN秘密分散方式を用いた閾値ゲートはtoutofN閾値ゲートと呼ばれる。toutofN閾値ゲートは入力のN個の条件式のうちt個以上の条件が成立すると真を出力し、それ以外は偽を出力するゲート構造を有する。toutofN閾値ゲートの出力の否定は全入力の否定のoutofN閾値ゲートと等価である。参考文献3AShamirHowtoShareaSecretCommunicationsoftheACMNovember1979Volume22Number11pp612613<秘密鍵検証可能関数型暗号>関数暗号のうち、秘密鍵skiが鍵識別子iに対して正しく作られていることが納得できるものは、秘密鍵検証可能関数型暗号と呼ばれる。鍵生成手続きが正しく行われたことを証明する非対話零知識証明参考文献4参照を秘密鍵に付加することによって、秘密鍵検証可能関数型暗号を構成することができる。秘密鍵検証可能関数型暗号を用いれば秘密鍵skiが鍵識別子iに対して正しく作られていることが納得できる。参考文献4JensGrothandAmitSahaiEfficientNoninteractiveProofSystemsforBilinearGroupsAdvancesinCryptologyEUROCRYPT2008LNCS4965pp415432March2010<暗号文公開検証可能関数型暗号>関数暗号のうち、暗号文に対してKeyGenアルゴリズムから得られる如何なる鍵を持たなくとも、暗号文が正しく作られていることが納得できるものは暗号文公開検証可能関数型暗号と呼ばれる。暗号化手続きが正しく行われたことを証明する非対話零知識証明上記参考文献4参照を暗号文に付加することによって、暗号文公開検証可能関数型暗号を構成することができる。暗号文公開検証可能関数型暗号を用いれば暗号文に対して復号可能などの鍵を使っても同じ結果が得られることが納得できる。<電子署名>電子署名とは次の3つのアルゴリズムのことである。プロトコルの概略は下記のとおりである。《プロトコルES》========================================KeyGenΣ→:鍵生成アルゴリズムセキュリティパラメータ1λを入力とし、電子署名検証用公開鍵pkΣと電子署名用秘密鍵skΣを出力する確率的多項式時間アルゴリズムSignΣ→σ:署名アルゴリズム電子署名用秘密鍵skΣと署名対象情報mを入力とし、署名σを出力する確率的多項式時間アルゴリズムVerifyΣ→01:署名検証アルゴリズム電子署名検証用公開鍵pkΣと署名対象情報mと署名σを入力とし、検証結果または受理を出力する確率的多項式時間アルゴリズム========================================なお、適当な暗号学的仮定の下、適応的選択文書攻撃に対して存在的偽造不可が証明可能な電子署名方式が提案されている例えば、RSAPSS参考文献5参照。参考文献5藤岡淳、暗号アルゴリズム評価報告書RSAPSS、日本電信電話株式会社、2001年《実施形態》一般に、資格試験、入学試験、記名式アンケート、電子商取引入札、オークションなどなどのような、大勢のユーザに対して何らかの評価を行うシステム、即ち評価システムは、ユーザ、運用者、評価者の間のプロトコルが事前に取り決められたシステムと考えることができる。例えば評価対象情報を試験問題に対する解答とすると、まず各解答者各ユーザに試験問題が送られ、それぞれの解答者ユーザが試験問題の解答を採点者運用者に送信する。採点者運用者は、採点結果を評価者に送り、評価者が評価例えば合否を出力する。[評価対象情報自己評価システム]このような観点から、実施形態の評価対象情報自己評価システム1は、図1に示すように、評価者装置100と、運用者装置200と、ユーザ装置300とを少なくとも含んで構成される。これらの各装置は、例えばインターネットなどの通信網5を経由して、相互に通信可能とされている。本発明の評価対象情報自己評価システムでは、評価者装置100と運用者装置200とが同一である場合は妨げられないが、より一般性を有する構成を例示する観点から、評価者装置100と運用者装置200は異なる装置とする。また、本発明の評価対象情報自己評価システムは、運用の形態に応じて一つまたは複数の評価者装置100と一つまたは複数の運用者装置200を含みえるが、本発明の理解を容易にするため、後述の実施形態では、評価対象情報自己評価システム1は、1個の評価者装置100と1個の運用者装置200とN個のユーザ装置300-1,,300-n,,300-Nを含むとする。ただし、Nは1以上の整数とする。評価対象情報自己評価システム1における評価対象情報自己評価処理を、図3-10を参照しながら叙述する。各装置の機能構成については、図2を参照されたい。なお、N個のユーザ装置300-1,,300-n,,300-Nのうちのどのユーザ装置についても同じ情報処理となるから、この説明では、任意性を考慮してn番目のユーザ装置300-nにおける情報処理を想定する。実施例では、説明を具体的に行うために、評価対象情報を試験問題に対する解答とし、運用者を採点者とする。以下、説明の用語や語法もこの状況を想定したものとする。また、一つのユーザ装置300-nには、一人のユーザ解答者が対応しているとする。実施例1関係Rが存在し、式2のタイプのfijを持つ関数型暗号を用いると次のような評価対象情報自己評価システム自己採点システムを構成できる。評価対象情報自己評価処理は図3を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。ここで、公開パラメータpkを公開するとは、採点者装置200が公開パラメータpkを利用する装置に対して当該装置から要求に応じて公開パラメータpkを送信すること、あるいは、公開パラメータpkを利用する装置が自由に採点者装置200にアクセスして制約無く公開パラメータpkを取得できること、あるいは、或るサーバ装置の記憶部に公開パラメータpkが登録されて、サーバ装置が公開パラメータpkを利用する装置に対して当該装置から要求に応じて公開パラメータpkを送信すること、あるいは、公開パラメータpkを利用する装置が自由にサーバ装置にアクセスして制約無く公開パラメータpkを取得できること、などを意味する。つまり、公開パラメータpkを公開するとは、公開という情報処理よりも、公開パラメータpkを利用する装置が自由に公開パラメータpkを取得できる状態やシステム構成が構築されていることを意味する。以下、公開パラメータpkを公開するとの趣旨の記載は、上記説明と同様の意味である。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報試験問題を受信する。そして、ユーザ装置300-nの送信部308は試験問題の解答iを採点者装置200に送信する。解答iは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから解答iを受信する。そして、採点者装置200の秘密鍵生成部202は解答iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準jと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準jは、例えば事前に採点者装置200から評価者装置100に送信されているとする。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは解答iが評価基準jを満足する、つまり解答iが正解である場合であるから、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。RFalseのとき、これは解答iが評価基準jを満足しない、つまり解答iが誤答である場合であるから、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。実施例2試験問題が選択肢を選択して解答する選択式試験問題であるとき、暗号文ポリシー関数型暗号を用いて、ユーザ解答者が選択した選択肢を属性とし、評価者の評価基準をポリシーとする、評価対象情報自己評価システム自己採点システムを次のように構成できる。評価対象情報自己評価処理は図3を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答用変数answer1answer2...が含まれるとする。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報選択式試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答用変数answer1answer2...に各試験問題に対する解答である選択肢choice1choice2...が設定された述語変数のインスタンスiを採点者装置200に送信する。選択肢choice1choice2...は、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語jと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語jは、例えば事前に採点者装置200から評価者装置100に送信されているとする。採点の評価基準である述語jは、各試験問題の正解correctanswer1correctanswer2...を用いてanswerqcorrectanswerqとなるq∈12...の個数が予め定められた一定数を超えたときに真となる述語である。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスiが述語jを充足するとき、即ち、ユーザ解答者が選択した選択肢choice1choice2...に関して、choiceqcorrectanswerqとなるq∈12...の個数が予め定められた一定数を超えたとき、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。実施例3この実施例は、復号結果の平文が変化する条件に氏名や受験番号などユーザ解答者の識別子に関する条件を含めることによって、なり済ましを防止する形態である。評価対象情報自己評価処理は図4を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答者識別子用変数nameが含まれるとする。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報試験問題を受信する。ユーザ装置300-nの送信部308は、解答者識別子用変数nameにユーザ解答者の識別子氏名や受験番号などnameinstanceが設定され、解答用変数に試験問題に対する解答が設定された述語変数のインスタンスiを採点者装置200に送信する。識別子nameinstanceと解答は、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3ユーザ装置300-nの送信部308は、識別子nameinstanceを評価者装置100に送信する。●ステップS4評価者装置100の受信部109は、ユーザ装置300-nからの識別子nameinstanceを受信する。そして、評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語jと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語jは、例えば事前に採点者装置200から評価者装置100に送信されている試験問題の正解だけでなく、解答者識別子用変数nameに関してnamenameinstanceの成立も必要条件として含む述語である。●ステップS5ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスiが述語jを充足するとき、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。このとき、namenameinstanceの成立が必要条件となるので、name≠nameinstanceの場合の秘密鍵を用いて暗号文cjを復号することはできない。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。実施例4この実施例は、平文xに評価者の電子署名σを含める事によって、ユーザ解答者が解答に応じて適切な評価者の電子署名σを含む平文yを自力で得ることができる形態である。評価対象情報自己評価処理は図5を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答者識別子用変数nameが含まれるとする。●ステップS1評価者装置100の鍵生成部102は、電子署名用の鍵生成アルゴリズムKeyGenΣ→を実行し、評価者装置100の電子署名検証用公開鍵pkΣを公開し、評価者装置100の電子署名用秘密鍵skΣを評価者装置100の記憶部110に安全に記憶する。電子署名検証用公開鍵pkΣの公開は、公開パラメータpkの公開と同様の意味である。●ステップS2ユーザ装置300-nの受信部309は、例えば採点者装置200から情報試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答者識別子用変数nameにユーザ解答者の識別子氏名や受験番号などnameinstanceが設定され、解答用変数ansに試験問題に対する解答ansinstanceが設定された述語変数のインスタンスiを採点者装置200に送信する。識別子nameinstanceと解答ansinstanceは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS3採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS4ユーザ装置300-nの送信部308は、識別子nameinstanceを評価者装置100に送信する。●ステップS5評価者装置100の受信部109は、ユーザ装置300-nからの識別子nameinstanceを受信する。そして、評価者装置100の署名生成部103は、ユーザ解答者が合格したことを証明する情報mに対して、電子署名用秘密鍵skΣを用いて署名アルゴリズムSignΣ→σを実行する。さらに、評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語jと、平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語jは、例えば事前に採点者装置200から評価者装置100に送信されている試験問題の正解だけでなく、解答者識別子用変数nameに関してnamenameinstanceの成立も必要条件として含む述語である。平文xは例えば情報mと電子署名σとのビット結合m∥σである以下同様。●ステップS6ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスiが述語jを充足するとき、ユーザ装置300-nの復号部301は平文yx、つまり、ユーザ解答者が合格したことを証明する情報mと評価者装置100の電子署名σを得る。また、namenameinstanceの成立が必要条件となるので、name≠nameinstanceの場合の秘密鍵を用いて暗号文cjを復号することはできない。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。なお、ユーザ装置300-nの署名検証部302が、電子署名検証用公開鍵pkΣと署名対象情報mと署名σを入力として、署名検証アルゴリズムVerifyΣ→01を実行し、検証結果または受理を得る。この処理によって、平文yの信用性を確認できる。実施例4の変形例この実施例は、実施例4の変形例である。実施例4では公開パラメータpkに含まれる述語変数に解答者識別子用変数nameが含まれたが、この変形例では、述語変数に解答者識別子用変数nameが含まれない。評価対象情報自己評価処理は図5を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。●ステップS1評価者装置100の鍵生成部102は、電子署名用の鍵生成アルゴリズムKeyGenΣ→を実行し、評価者装置100の電子署名検証用公開鍵pkΣを公開し、評価者装置100の電子署名用秘密鍵skΣを評価者装置100の記憶部110に安全に記憶する。電子署名検証用公開鍵pkΣの公開は、公開パラメータpkの公開と同様の意味である。●ステップS2ユーザ装置300-nの受信部309は、例えば採点者装置200から情報試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答用変数ansに試験問題に対する解答ansinstanceが設定された述語変数のインスタンスiを採点者装置200に送信する。解答ansinstanceは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS3採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS4評価者装置100の署名生成部103は、ユーザ解答者が合格したことを証明する情報mに対して、電子署名用秘密鍵skΣを用いて署名アルゴリズムSignΣ→σを実行する。さらに、評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語jと、平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語jは、例えば事前に採点者装置200から評価者装置100に送信されている試験問題の正解を必要条件として含む述語である。●ステップS5ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスiが述語jを充足するとき、ユーザ装置300-nの復号部301は平文yx、つまり、ユーザ解答者が合格したことを証明する情報mと評価者装置100の電子署名σを得る。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。なお、ユーザ装置300-nの署名検証部302が、電子署名検証用公開鍵pkΣと署名対象情報mと署名σを入力として、署名検証アルゴリズムVerifyΣ→01を実行し、検証結果または受理を得る。この処理によって、平文yの信用性を確認できる。実施例5この実施例は、電子署名の対象となる文書にユーザ解答者の識別子を含めることによって、なり済ましを防止する形態である。評価対象情報自己評価処理は図5を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答者識別子用変数nameが含まれるとする。●ステップS1評価者装置100の鍵生成部102は、電子署名用の鍵生成アルゴリズムKeyGenΣ→を実行し、評価者装置100の電子署名検証用公開鍵pkΣを公開し、評価者装置100の電子署名用秘密鍵skΣを評価者装置100の記憶部110に安全に記憶する。電子署名検証用公開鍵pkΣの公開は、公開パラメータpkの公開と同様の意味である。●ステップS2ユーザ装置300-nの受信部309は、例えば採点者装置200から情報試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答者識別子用変数nameにユーザ解答者の識別子氏名や受験番号などnameinstanceが設定され、解答用変数ansに試験問題に対する解答ansinstanceが設定された述語変数のインスタンスiを採点者装置200に送信する。識別子nameinstanceと解答ansinstanceは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS3採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS4ユーザ装置300-nの送信部308は、識別子nameinstanceを評価者装置100に送信する。●ステップS5評価者装置100の受信部109は、ユーザ装置300-nからの識別子nameinstanceを受信する。そして、評価者装置100の署名生成部103は、受信した識別子nameinstanceを用いて、当該識別子nameinstanceで特定される者が合格したことを証明する情報mに対して、電子署名用秘密鍵skΣを用いて署名アルゴリズムSignΣ→σを実行する。さらに、評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語jと、平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語jは、例えば事前に採点者装置200から評価者装置100に送信されている試験問題の正解だけでなく、解答者識別子用変数nameに関してnamenameinstanceの成立も必要条件として含む述語である。●ステップS6ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスiが述語jを充足するとき、ユーザ装置300-nの復号部301は平文yx、つまり、識別子nameinstanceで特定される者が合格したことが合格したことを証明する情報mと評価者装置100の電子署名σを得る。また、namenameinstanceの成立が必要条件となるので、name≠nameinstanceの場合の秘密鍵を用いて暗号文cjを復号することはできない。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。なお、ユーザ装置300-nの署名検証部302が、電子署名検証用公開鍵pkΣと署名対象情報mと署名σを入力として、署名検証アルゴリズムVerifyΣ→01を実行し、検証結果または受理を得る。この処理によって、平文yの信用性を確認できる。実施例6この実施例は、関数型暗号として、秘密鍵検証可能関数型暗号を用いることによって、採点者装置の出力する秘密鍵がユーザ解答者の解答を正しく反映していることをユーザ解答者が納得できることを特徴とする形態である。評価対象情報自己評価処理は図6を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報試験問題を受信する。そして、ユーザ装置300-nの送信部308は試験問題の解答iを採点者装置200に送信する。解答iは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから解答iを受信する。そして、採点者装置200の秘密鍵生成部202は、解答iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、さらに、秘密鍵skiが正しく鍵生成アルゴリズムKeyGen→skiによって生成されたことを証明する非対話零知識証明φiを生成する。そして、採点者装置200の送信部208は秘密鍵skiと非対話零知識証明φiとの組をユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準jと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準jは、例えば事前に採点者装置200から評価者装置100に送信されているとする。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiと非対話零知識証明φiとの組を受信する。ユーザ装置300-nの知識証明部303は、非対話零知識証明φiを用いて非対話零知識証明を実行し、鍵生成アルゴリズムに納得がいかない場合には、復号処理を行わない。ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは解答iが評価基準jを満足する、つまり解答iが正解である場合であるから、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。RFalseのとき、これは解答iが評価基準jを満足しない、つまり解答iが誤答である場合であるから、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。実施例7この実施例は、関数型暗号として、暗号文公開検証可能関数型暗号を用いることによって、評価者装置が出力する暗号文が正しく作成されており、評価が正しく行われることをユーザ解答者が納得できることを特徴とする形態である。評価対象情報自己評価処理は図7を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報試験問題を受信する。そして、ユーザ装置300-nの送信部308は試験問題の解答iを採点者装置200に送信する。解答iは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから解答iを受信する。そして、採点者装置200の秘密鍵生成部202は、解答iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準jと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行して暗号文cjを生成し、さらに、暗号文cjが正しく暗号化アルゴリズムEnc→cjによって生成されたことを証明する非対話零知識証明φjを生成する。そして、評価者装置100の送信部108は暗号文cjと非対話零知識証明φiとの組をユーザ装置300-nに送信する。採点の評価基準jは、例えば事前に採点者装置200から評価者装置100に送信されているとする。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjと非対話零知識証明φiとの組を、採点者装置200からは秘密鍵skiを受信する。ユーザ装置300-nの知識証明部303は、非対話零知識証明φjを用いて非対話零知識証明を実行し、暗号化アルゴリズムに納得がいかない場合には、復号処理を行わない。ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは解答iが評価基準jを満足する、つまり解答iが正解である場合であるから、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。RFalseのとき、これは解答iが評価基準jを満足しない、つまり解答iが誤答である場合であるから、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。実施例8実施例2にてステップS3の処理をステップS1の処理よりも前に実行した場合、一般に暗号文ポリシー関数型暗号は述語秘匿の安全性を持たない為にユーザ解答者はステップS3で得られた述語からcorrectanswerqを抽出してchoiceq←correctanswerqとすることで、常に正答を得ることができてしまう。この攻撃を防ぐためには述語秘匿の安全性を持つ関数型暗号、即ち述語暗号を用いればよい。この実施例は、述語暗号を用いることによって、解答前に暗号文を配布しても評価者の評価基準をユーザ解答者から秘匿可能なことを特徴とする形態であり、述語暗号を用いた評価対象情報自己評価システム自己採点システムは次のように構成できる。評価対象情報自己評価処理は図8を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答用変数answer1answer2...が含まれるとする。●ステップS1評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語jと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語jは、例えば事前に採点者装置200から評価者装置100に送信されているとする。採点の評価基準である述語jは、各試験問題の正解correctanswer1correctanswer2...を用いてanswerqcorrectanswerqとなるq∈12...の個数が予め定められた一定数を超えたときに真となる述語である。ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを受信する。●ステップS2ユーザ装置300-nの受信部309は、例えば採点者装置200から情報選択式試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答用変数answer1answer2...に各試験問題に対する解答である選択肢choice1choice2...が設定された述語変数のインスタンスiを採点者装置200に送信する。選択肢choice1choice2...は、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS3採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS4ユーザ装置300-nの受信部309は、採点者装置200から秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスiが述語jを充足するとき、即ち、ユーザ解答者が選択した選択肢choice1choice2...に関して、choiceqcorrectanswerqとなるq∈12...の個数が予め定められた一定数を超えたとき、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。述語暗号の述語秘匿の性質によって、ユーザ解答者は暗号文cjから述語jに関する如何なる情報も得ることはできないので、先述の攻撃を防止できる。実施例9この実施例は、閾値ゲートを用いることを特徴とする形態である。評価対象情報自己評価処理は図3を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答用変数answer1answer2...answerQが含まれるとする。Qは2以上の予め定められた整数である。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報選択式試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答用変数answer1answer2...answerQに各試験問題に対する解答である選択肢choice1choice2...choiceQが設定された述語変数のインスタンスiを採点者装置200に送信する。選択肢choice1choice2...choiceQは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語jと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語jは、例えば事前に採点者装置200から評価者装置100に送信されているとする。採点の評価基準である述語jは、各試験問題の正解correctanswer1correctanswer2...correctanswerQを用いてq∈12...Qに関してanswerqcorrectanswerqとなる述語を入力とするboutofQ閾値ゲートで構成された述語であるつまりQ問中b問以上の正解で合格する評価基準である。bは1以上の予め定められた整数である。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスiが述語jを充足するとき、即ち、ユーザ解答者が選択した選択肢choice1choice2...choiceQに関して、choiceqcorrectanswerqとなるq∈12...Qの個数がb以上のとき、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。実施例10この実施例は、複数の暗号文をユーザ解答者に与えることによって、ユーザ解答者の相対的な順位に依存して評価が行えることを特徴とする形態である。評価対象情報自己評価処理は図9を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答用変数answer1answer2...answerQが含まれるとする。Qは2以上の予め定められた整数である。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報選択式試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答用変数answer1answer2...answerQに各試験問題に対する解答である選択肢choice1choice2...choiceQが設定された述語変数のインスタンスiを採点者装置200に送信する。選択肢choice1choice2...choiceQは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である各tt∈12...Qに対応した述語jtと、ユーザ解答者がt問以上正解したことを証明する平文xtを用いて、各tt∈12...Qについて暗号化アルゴリズムEnc→cjtを実行し、Q個の暗号文cjtを生成する。そして、評価者装置100の送信部108はQ個の暗号文cjtをユーザ装置300-nに送信する。採点の評価基準である述語jtt∈12...Qは、例えば事前に採点者装置200から評価者装置100に送信されているとする。採点の評価基準である述語jtt∈12...Qは、各試験問題の正解correctanswer1correctanswer2...correctanswerQを用いてq∈12...Qに関してanswerqcorrectanswerqとなる述語を入力とするtoutofQ閾値ゲートで構成された述語であるつまりQ問中t問以上の正解で合格する評価基準である。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からはQ個の暗号文cjtを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、Q個の暗号文cjtのうちの一つとを入力とし、各tt∈12...Qについて復号アルゴリズムDec→ytを実行し、平文ytを得る。そして、ユーザ装置300-nの送信部308は、正常に復号できたytxtについて最大のtに対応する平文xtを評価者装置100に送信する。Q10として具体的に説明すると、ユーザ解答者が選択した選択肢choice1choice2...choice10に関してchoiceqcorrectanswerqとなるq∈12...Qの個数が8のとき、述語変数のインスタンスiは述語jtt∈12...8を充足するが、述語jtt∈910を充足しない。よって、t∈12...8についてytxtとなるが、t∈910についてyt⊥となる。従って、ユーザ装置300-nの送信部308は、ytxtを満たす最大のt8に対応する平文x8を評価者装置100に送信することになる。●ステップS5評価者装置100の受信部109は、ユーザ装置300-nから平文xtを受信する。ユーザ装置300-nn∈12...Nは全部でN個なので、評価者装置100には、N個の平文xtが集まる。そこで、平文xtとユーザ装置300-nn∈12...Nとの対応関係を明示するため、ユーザ装置300-nから受信した平文xtをxtnと表すことにする。評価者装置100のソート判定部104は、tに関してソートを実行し、tが大きい方から平文xtnを並べ、tが予め定められた選別基準T以上を満たす平文xtnを送信してきたユーザ装置300-nを合格と判定する。選別基準Tは、試験問題の例であれば合格点や合格者として採用する人数に相当する。評価者装置100は、合格と判定されたユーザ装置300-nの識別子を公開するか、当該ユーザ装置300-nに対して合格したことを表す情報を送信する。ここで、合格と判定されたユーザ装置300-nの識別子の公開は、公開パラメータpkの公開と同様の意味である。Q10,T7ただし、選別基準Tは合格点とする,N6とし、6個のユーザ装置から評価者装置100に集まった平文を、x21,x102,x83,x34,x45,x76として具体的に説明する。ソート判定部104は、tに関してソートを実行し、tの大きい方から平文xtnを並べてx102,x83,x76,x45,x34,x21という並びを得る。T7であるから、ソート判定部104は、x102,x83,x76が合格と判定される平文であると特定し、これらの平文を送信してきたユーザ装置300-2,300-3,300-6を合格と判定する。なお、ソート判定部104がユーザ装置300-nから受信した平文のソートを実行可能であるためには、試験問題における正答数ないし得点のように、あるいは、toutofQ閾値ゲートの閾値tのように、ソート対象がいわゆる順序関係を持つことが前提となっている。実施例11この実施例は、必要に応じて逐次、新しい評価基準を持つ暗号文をユーザ解答者に与えることによって、ユーザ解答者の相対的な順位に依存して評価が行えることを特徴とする形態である。評価対象情報自己評価処理は図10を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答用変数answer1answer2...answerQが含まれるとする。Qは2以上の予め定められた整数である。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報選択式試験問題を受信する。そして、ユーザ装置300-nの送信部308は、解答用変数answer1answer2...answerQに各試験問題に対する解答である選択肢choice1choice2...choiceQが設定された述語変数のインスタンスiを採点者装置200に送信する。選択肢choice1choice2...choiceQは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから述語変数のインスタンスiを受信する。そして、採点者装置200の秘密鍵生成部202は述語変数のインスタンスiとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成し、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準であるtここでtは、集合12...Qから選択された一つの値であるに対応した述語jtと、ユーザ解答者がt問以上正解したことを証明する平文xtを用いて、当該tについて暗号化アルゴリズムEnc→cjtを実行し、1個の暗号文cjtを生成する。そして、評価者装置100の送信部108は当該暗号文cjtをユーザ装置300-nに送信する。採点の評価基準である述語jtは、例えば事前に採点者装置200から評価者装置100に送信されているとする。採点の評価基準である述語jtは、各試験問題の正解correctanswer1correctanswer2...correctanswerQを用いてq∈12...Qに関してanswerqcorrectanswerqとなる述語を入力とするtoutofQ閾値ゲートで構成された述語であるつまりQ問中t問以上の正解で合格する評価基準である。なお、後述するステップS6の処理によってステップS3の処理が2回以上実行される可能性があり、tはステップS3の処理が実行されるたびに更新される。過去においてステップS3の処理が実行される際に選択されたtの値の集合をSetpとすると、新しくステップS3の処理が実行される際に選択されるtの値は、集合12...QSetpから選択される。例えば、tが属する集合が正整数の大小を順序関係とする順序集合12...Qであって、上記選別基準Tが順序集合12...Qの元の大小に依存する場合には、例えばtの初期値を順序集合12...Qに含まれる最大元Qとし、後述するステップS6の処理を受けてステップS3の処理が実行される際に用いられるtを、一つ前に実行されたステップS3の処理で用いられたtの値から1を引いた値とすればよい。具体的には、上記選別基準Tが合格者として採用する人数である場合には、通常、成績上位者正答数が多い者であり、正答数は順序集合12...Qに属する元値であるを合格とするから、tの初期値を順序集合12...Qに含まれる最大元Qとし、後述するステップS6の処理を受けてステップS3の処理が実行される際に用いられるtを、一つ前に実行されたステップS3の処理で用いられたtの値から1を引いた値とすることによって、効率良く成績上位者を決定できることになる。もちろん、運用形態に応じて、例えばtの初期値を順序集合12...Qに含まれる最小元1とし、後述するステップS6の処理を受けてステップS3の処理が実行される際に用いられるtを、一つ前に実行されたステップS3の処理で用いられたtの値に1を加えた値としてもよい。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からは1個の暗号文cjtを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjtとを入力とし、復号アルゴリズムDec→ytを実行し、平文ytを得る。そして、ユーザ装置300-nの送信部308は、正常に復号できたならば平文ytxtを評価者装置100に送信する。●ステップS5評価者装置100の受信部109は、ユーザ装置300-nから平文xtを受信する。評価者装置100の平文判定部105は、ユーザ装置300-nから受信した平文xtが、ステップS3の処理で用いられたユーザ解答者がt問以上正解したことを証明する平文xtと一致するならば、当該ユーザ装置300-nを合格と判定する。ユーザ装置300-nn∈12...Nは全部でN個なので、評価者装置100には、最大でもN個の平文xtが集まることになることに留意されたい。なお、平文判定部105は、ステップS5の処理が実行されるたびに後述するステップS6の処理によってステップS3の処理が実行されることに応じて、ステップS5の処理が2回以上行われる可能性がある、合格と判定されたユーザ装置300の数を累積計上する。累積計上された合格者総数を表す変数をPとする。Pの初期値は0である。平文判定部105は、一つ前に実行されたステップS5の処理で得られたPの値一つ前に実行されたステップS5の処理がなければPの初期値に、現在のステップS5の処理で得られた合格と判定されたユーザ装置300の数を加える。●ステップS6評価者装置100の制御部107は、選別基準Tを合格者として採用する人数とし、φを空集合として、12...QSetp≠φ且つP<Tならば、ステップS3の処理を実行する制御を行い、それ以外の場合には、一連の処理を終了する制御を行う。上述の各実施例では、評価者装置100と運用者装置200とが異なる装置として説明したが、既述のように評価者装置100と運用者装置200とが同一であってもよく、この場合、上述の各実施例の説明において、例えば採点者装置200を評価者装置100に読み替えればよい。上述の実施例は、必ずしも暗号文ポリシー関数型暗号による実施に限定されるものではなく、鍵ポリシー関数型暗号による実施も可能である。例えば、上述の実施例2では、1暗号文ポリシー関数型暗号による実施例として、述語変数に解答用変数answer1answer2...が含まれており、2ユーザ装置では、解答用変数answer1answer2...に各試験問題に対する解答である選択肢choice1choice2...が設定された述語変数のインスタンスiが生成され、3採点者装置では、述語変数のインスタンスiとマスター鍵skを用いた鍵生成アルゴリズムKeyGen→skiによって秘密鍵skiが生成され、4評価者装置では、各試験問題の正解correctanswer1correctanswer2...を用いてanswerqcorrectanswerqとなるq∈12...の個数が予め定められた一定数を超えたときに真となる述語を採点の評価基準である述語jとして、暗号化アルゴリズムEnc→cjによって暗号文cjを生成した。上述の実施例2の変形例として鍵ポリシー関数型暗号による場合の例を説明する。実施例2の変形例試験問題が選択肢を選択して解答する選択式試験問題であるとき、鍵ポリシー関数型暗号を用いて、ユーザ解答者が選択した選択肢をポリシーとし、評価者の評価基準を属性とする、評価対象情報自己評価システム自己採点システムを次のように構成できる。評価対象情報自己評価処理は図3を参照のこと。●ステップS0採点者装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。採点者装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、採点者装置200の記憶部210に安全に記憶する。このとき、公開パラメータpkに含まれる述語変数に、解答用変数answer1answer2...が含まれるとする。●ステップS1ユーザ装置300-nの受信部309は、例えば採点者装置200から情報選択式試験問題を受信する。そして、ユーザ装置300-nの送信部308は、述語iを採点者装置200に送信する。述語iは、解答用変数answer1answer2...に各試験問題に対する解答である選択肢choice1choice2...が対応付けられており、正答数が予め定められた一定数合格ラインを超えたときに真となる述語である。合格ラインは予めシステムパラメータとして定められており、正答数が予め定められた一定数合格ラインを超えたときに真となる述語iはテンプレートとしてユーザ装置300-nの記憶部に保存されているとする。例えば合格ラインがQ問全てに正解である場合には、述語iのテンプレートは、¬...で表される。記号¬は否定命題であることを表す。選択肢choice1choice2...は、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。図示しない述語生成部は、選択肢choice1choice2...が入力されると、上記テンプレートを用いてcqにchoiceqq∈12...Qを代入して述語i、つまり、¬...を生成する。なお、運用形態によっては、ユーザ装置300-nの受信部309が試験問題などの情報をどこかから受信する処理が不要となる場合があることに注意されたい。●ステップS2採点者装置200の受信部209はユーザ装置300-nから述語iを受信する。そして、採点者装置200の秘密鍵生成部202は述語iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、採点者装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS3評価者装置100の暗号文生成部101は、公開パラメータpkと、採点の評価基準である述語変数のインスタンスjと、ユーザ解答者が合格したことを証明する平文xを用いて暗号化アルゴリズムEnc→cjを実行し、評価者装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。採点の評価基準である述語変数のインスタンスjは、例えば事前に採点者装置200から評価者装置100に送信されているとする。採点の評価基準である述語変数のインスタンスjは、正答そのものであり、つまり各試験問題の正解correctanswer1correctanswer2...である。●ステップS4ユーザ装置300-nの受信部309は、評価者装置100からは暗号文cjを、採点者装置200からは秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。述語変数のインスタンスjが述語iを充足するとき、即ち、ユーザ解答者が選択した選択肢choice1choice2...に関して、correctanswerqchoiceqとなるq∈12...の個数が予め定められた一定数を超えたとき、ユーザ装置300-nの復号部301は、ユーザ解答者が合格したことを証明する平文yxを得る。これ以外の場合、ユーザ装置300-nの復号部301は、ユーザ解答者が不合格であることを意味する平文y⊥を得る。<応用例>以下、本発明の応用例を説明する。ここで説明する応用例は、チケット発行システム、処方箋発行システム、行政文書発行システム、宝くじ発行システム、ポイントサービス発行システムである。チケット発行システム、処方箋発行システム、行政文書発行システム、宝くじ発行システムについては、上述の実施例1に即して説明するが、いずれの応用例も実施例1以外の実施例に即して実施することが可能である。ポイントサービス発行システムについては、上述の実施例8に即して説明する。チケット発行システム上述の実施例1において、採点者装置200を鍵発行装置200に、評価者装置100をチケット発行装置100に、読み替える。各装置の構成要素は実施例1を踏襲する。●ステップS0鍵発行装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。鍵発行装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、鍵発行装置200の記憶部210に安全に記憶する。●ステップS1ユーザ装置300-nの送信部308はユーザの属性iを鍵発行装置200に送信する。ユーザの属性iは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。属性iとしては、チケット発行システムの場合、ユーザの氏名、住所、年齢、性別、チケット発行装置100から予め与えられたユーザIDやパスワード、ユーザが希望する応募対象例えば観覧対象、観覧日時、座席などなどである。●ステップS2鍵発行装置200の受信部209はユーザ装置300-nから属性iを受信する。そして、鍵発行装置200の秘密鍵生成部202は属性iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、鍵発行装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS2aユーザ装置300-nの受信部309は、鍵発行装置200から秘密鍵skiを受信する。そして、ユーザ装置300-nの送信部308は、チケット発行装置100に対して、チケット発行の要求を表す情報リクエスト情報を送信する。●ステップS3チケット発行装置100の受信部109がユーザ装置300-nからリクエスト情報を受信すると、チケット発行装置100の暗号文生成部101は、公開パラメータpkと、チケット発行の評価基準チケット発行条件jと、チケットである平文xを用いて暗号化アルゴリズムEnc→cjを実行し、チケット発行装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。チケット発行条件jは、例えば事前にチケット発行装置100が決めている。チケット発行条件jは、例えば観覧対象に年齢制限がある場合には所定年齢以上であることを条件に含み、例えば事前にチケット発行装置100に登録されたユーザだけにチケットを発行する場合には、ユーザの氏名、住所、年齢、性別、ユーザIDとパスワードを条件に含むことができる。●ステップS4ユーザ装置300-nの受信部309は、チケット発行装置100から暗号文cjを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは属性iがチケット発行条件jを満足する場合であるから、ユーザ装置300-nの復号部301は、チケットである平文yxを得る。RFalseのとき、これは属性iがチケット発行条件jを満足しない場合であるから、ユーザ装置300-nの復号部301は、チケットではない平文y⊥を得ることとなる。チケットを正しく入手できたユーザは、サービス事業者にチケットを提示してサービスの提供を得ることができる。このように、正当なユーザ装置300はチケットを入手できたことを自身で確認できる。他方、チケット発行装置100は、チケットを発行する際に、ユーザの属性がチケット発行条件を満足するか否かの判断をする必要がないので運用コストを低減でき、さらには、ユーザに固有の情報が含まれる属性の情報管理をする必要がないので管理コストも低減できる。処方箋発行システム現状では、医師がカルテなどを見て患者の属性氏名や病名などを確認してから処方箋を発行している。上述の実施例1において、ユーザ装置300を患者装置300、採点者装置200を医療データ管理装置200に、評価者装置100をドクター専用装置100に、読み替える。各装置の構成要素は実施例1を踏襲する。●ステップS0医療データ管理装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。医療データ管理装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、医療データ管理装置200の記憶部210に安全に記憶する。また、医療データ管理装置200の記憶部210には、各患者の氏名、年齢、性別、患者ID、パスワード、通院履歴、病歴、通院中の病名、処方薬の名前、最後に医師の対面診察を受けた年月日などが記憶されている。●ステップS1患者装置300-nの送信部308は患者の属性iを医療データ管理装置200に送信する。患者の属性iは、例えば、患者装置300-nを操作する患者人間によって患者装置300-nに入力される。属性iとしては、処方箋発行システムの場合、患者の氏名、年齢、性別、医療データ管理装置200から予め与えられた患者IDやパスワード、処方薬が必要な病名、処方薬の名前などである。●ステップS2医療データ管理装置200の受信部209は患者装置300-nから属性iを受信する。そして、医療データ管理装置200の判定部図示しないは、例えば、属性iに含まれる患者の氏名、年齢、性別、患者ID、パスワードが記憶部210に記憶されている当該患者の氏名、年齢、性別、患者ID、パスワードに一致するか否か判定し、これに合格しないと鍵生成処理を行わない患者装置300に氏名、年齢、性別、患者ID、パスワードの入力に間違いがないか確かめることを促す通知を送信するようにしてもよい。この判定に合格しても、判定部は、属性iに含まれる病名と処方薬の名前が、記憶部210に記憶されている当該患者の通院中の病名と処方薬の名前と一致しない場合、または、現在の年月日が記憶部210に記憶されている最後に医師の対面診察を受けた年月日から所定期間以上開いている場合には、鍵生成処理を行わないこの場合には、患者装置300に、医師の対面診察を受けることを促す通知を送信するようにしてもよい。判定部による所定の判定に合格すると、医療データ管理装置200の秘密鍵生成部202は属性iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、医療データ管理装置200の送信部208は秘密鍵skiを患者装置300-nに送信する。●ステップS2a患者装置300-nの受信部309は、医療データ管理装置200から秘密鍵skiを受信する。そして、医療データ管理装置200の送信部208は、ドクター専用装置100に対して、処方箋の発行要求を表す情報リクエスト情報を送信する。リクエスト情報には、患者装置300-nから受信した属性iが含まれる。●ステップS3ドクター専用装置100の受信部109が医療データ管理装置200からリクエスト情報患者装置300-nの属性iを含むを受信すると、ドクター専用装置100の暗号文生成部101は、公開パラメータpkと、処方箋発行の評価基準処方箋発行条件jと、処方箋である平文xを用いて暗号化アルゴリズムEnc→cjを実行し、ドクター専用装置100の送信部108は暗号文cjを患者装置300-nに送信する。処方箋発行条件jは、例えば患者の氏名、年齢、性別、患者ID、パスワード、処方薬が必要な病名、処方薬の名前を含むことができ、つまり、処方箋発行条件jは患者装置300-nの属性iの全部または一部を含む。このような処方箋発行条件jは、定型化しておくことができる。●ステップS4患者装置300-nの受信部309は、ドクター専用装置100から暗号文cjを受信する。そして、患者装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは属性iが処方箋発行条件jを満足する場合であるから、患者装置300-nの復号部301は、処方箋である平文yxを得る。RFalseのとき、これは属性iが処方箋発行条件jを満足しない場合であるから、患者装置300-nの復号部301は、処方箋ではない平文y⊥を得ることとなる。処方箋を正しく入手できた患者は、薬局に処方箋を提示して処方薬の提供を得ることができる。このように、正当な患者装置300は処方箋を入手できたことを自身で確認できる。他方、ドクター専用装置100を使用する医師は、処方箋を発行する際に、患者の属性が処方箋発行条件を満足するか否かの判断をする必要がないので医師の負担を低減できる。行政文書発行システム上述の実施例1において、採点者装置200を鍵発行装置200に、評価者装置100を行政庁装置100に、読み替える。各装置の構成要素は実施例1を踏襲する。●ステップS0鍵発行装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。鍵発行装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、鍵発行装置200の記憶部210に安全に記憶する。●ステップS1ユーザ装置300-nの送信部308はユーザの属性iを鍵発行装置200に送信する。ユーザの属性iは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。属性iとしては、行政文書発行システムの場合、ユーザの氏名、住所、年齢、性別、行政庁装置100から予め与えられたユーザIDやパスワード、ユーザが希望する文書戸籍謄本、住民票などなどである。●ステップS2鍵発行装置200の受信部209はユーザ装置300-nから属性iを受信する。そして、鍵発行装置200の秘密鍵生成部202は属性iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、鍵発行装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS2aユーザ装置300-nの受信部309は、鍵発行装置200から秘密鍵skiを受信する。そして、ユーザ装置300-nの送信部308は、行政庁装置100に対して、文書発行の要求を表す情報リクエスト情報を送信する。●ステップS3行政庁装置100の受信部109がユーザ装置300-nからリクエスト情報を受信すると、行政庁装置100の暗号文生成部101は、公開パラメータpkと、文書発行の評価基準文書発行条件jと、発行要求された文書である平文xを用いて暗号化アルゴリズムEnc→cjを実行し、行政庁装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。文書発行条件jは、例えば事前に行政庁装置100が決めている。文書発行条件jは、例えばユーザの氏名、住所、年齢、性別、ユーザID、パスワード、ユーザが希望する文書などを含むことができ、つまり、文書発行条件jはユーザ装置300-nの属性iの全部または一部を含む。●ステップS4ユーザ装置300-nの受信部309は、行政庁装置100から暗号文cjを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは属性iが文書発行条件jを満足する場合であるから、ユーザ装置300-nの復号部301は、所望の文書である平文yxを得る。RFalseのとき、これは属性iが文書発行条件jを満足しない場合であるから、ユーザ装置300-nの復号部301は、所望の文書ではない平文y⊥を得ることとなる。文書を正しく入手できたユーザは、文書提出先の機関に文書を提示することができる。このように、正当なユーザ装置300は所望の文書を入手できたことを自身で確認できる。他方、行政庁装置100は、文書を発行する際に、ユーザの属性が文書発行条件を満足するか否かの判断をする必要がないので運用コストを低減でき、さらには、ユーザに固有の情報が含まれる属性の情報管理をする必要がないので管理コストも低減できる。宝くじ発行システム上述の実施例1において、採点者装置200を籤発行装置200に、評価者装置100を抽選装置100に、読み替える。各装置の構成要素は実施例1を踏襲する。●ステップS0籤発行装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。籤発行装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、籤発行装置200の記憶部210に安全に記憶する。●ステップS1ユーザは籤発行者に対して宝くじ購入代金を支払う。この支払いは、例えばユーザがユーザ装置300-nを利用して籤発行装置200に電子マネーを支払う方法であってもよいし、技術的手段に拠らない通常の商取引における現金支払いなどであってもよい。宝くじの申込番号をユーザが決めることができる場合、宝くじ購入代金の支払いの際に、ユーザ装置300-nの送信部308は申込番号iを籤発行装置200に送信する。申込番号iは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。●ステップS2籤発行装置200の受信部209はユーザ装置300-nから申込番号iを受信する。宝くじの申込番号を籤発行装置200が決める場合、籤発行装置200の申込番号決定部図示しないがランダムに申込番号iを決定する。そして、籤発行装置200の秘密鍵生成部202は申込番号iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、籤発行装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。宝くじの申込番号を籤発行装置200が決めた場合は、送信部208は、秘密鍵skiだけでなく申込番号iもユーザ装置300-nに送信する。●ステップS2aユーザ装置300-nの受信部309は、鍵発行装置200から秘密鍵skiを受信する。宝くじの申込番号を籤発行装置200が決めた場合は、受信部309は申込番号iも鍵発行装置200から受信する。そして、抽選装置100の抽選番号決定部図示しないがランダムに抽選番号を決定する。ユーザ装置300-nの送信部308は、抽選装置100に対して、当選金の支払い要求を表す情報リクエスト情報を送信する。●ステップS3抽選装置100の受信部109がユーザ装置300-nからリクエスト情報を受信すると、抽選装置100の暗号文生成部101は、公開パラメータpkと、当選金支払いの評価基準当選金支払条件jと、当選金電子マネーである平文xを用いて暗号化アルゴリズムEnc→cjを実行し、抽選装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。当選金支払条件jは、例えば事前に抽選装置100が決めている。当選金支払条件jは、例えば申込数字と抽選番号との完全一致を条件として含むことや、申込数字と抽選番号との間で一致する数字の個数に応じて異なる当選金を定めた条件を含むことができる。後者の一例を説明する。当選金支払条件jとして、6桁の抽選番号123456の下4桁が6桁の申込番号の下4桁と一致した場合に当選金が1万円、6桁の抽選番号123456の下5桁が6桁の申込番号の下5桁と一致した場合に当選金が10万円、6桁の抽選番号123456が6桁の申込番号と一致した場合に当選金が100万円、である場合、Enc→cj,1、Enc→cj,2、Enc→cj,3、という3個の暗号文を生成すればよい。このように複数の暗号文が生成された場合、抽選装置100の送信部108は全ての暗号文cj,kk123...をユーザ装置300-nに送信する。●ステップS4ユーザ装置300-nの受信部309は、抽選装置100から暗号文cjを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは申込番号iが当選金支払条件jを満足する場合であるから、ユーザ装置300-nの復号部301は、電子マネーである平文yxを得る。RFalseのとき、これは申込番号iが当選金支払条件jを満足しない場合であるから、ユーザ装置300-nの復号部301は、電子マネーではない平文y⊥を得ることとなる。受信部309が複数の暗号文を受信した場合、復号部301は受信した全ての暗号文の復号処理を実行する。上述の6桁の抽選番号が123456の場合の例であれば、受信部309は、抽選装置100から3個の暗号文cj,kk123を受信する。従って、復号部301は、Dec→y1、Dec→y2、Dec→y3を求める。申込番号iが例えば223456である場合つまり、抽選番号と申込番号の下5桁が一致する場合、復号部301は、電子マネーである平文y11万円および平文y29万円を得るが、暗号文cj,3についてはy3⊥となり電子マネーを得ることができず、結果的に、1万円と9万円の合計額10万円の電子マネーを得ることになる。これは、当選金支払条件jの、6桁の抽選番号123456の下5桁が6桁の申込番号の下5桁と一致した場合に当選金が10万円である場合に相当する。同様にして、申込番号iが例えば233456である場合つまり、抽選番号と申込番号の下4桁が一致する場合には復号部301は1万円の電子マネーを得て、申込番号iが例えば123456である場合つまり、抽選番号と申込番号の下6桁が一致する場合には復号部301は1万円と9万円と90万円の合計額100万円の電子マネーを得ることになる。このように、当選したユーザ装置300は電子マネーを入手できたことを自身で確認できる。他方、抽選装置100は、電子マネーを発行する際に、ユーザの申込番号が当選金支払条件を満足するか否かの判断をする必要がないので運用コストを低減できる。ポイントサービス発行システム上述の実施例8において、採点者装置200をポイント管理装置200に、評価者装置100をチケット発行装置100に、読み替える。各装置の構成要素は実施例1を踏襲する。この応用例では、実施例8で述べたように、述語秘匿の安全性を持つ関数型暗号、即ち述語暗号を用いる。●ステップS0ポイント管理装置200のセットアップ部201は、セットアップアルゴリズムSetup→を実行して、公開パラメータpkとマスター鍵skを生成する。ポイント管理装置200の制御部図示しないは、公開パラメータpkを公開し、マスター鍵skを、ポイント管理装置200の記憶部210に安全に記憶する。●ステップS1チケット発行装置100の暗号文生成部101は、公開パラメータpkと、チケット発行の評価基準チケット発行条件jと、チケットである平文xを用いて暗号化アルゴリズムEnc→cjを実行し、チケット発行装置100の送信部108は暗号文cjをユーザ装置300-nに送信する。チケット発行条件jは、事前にチケット発行装置100が決めている。チケット発行条件jは、例えばユーザの氏名、住所、年齢、性別、チケット発行装置100から予め与えられたユーザIDやパスワード、所定のポイント以上であることを条件に含むことができる。ユーザ装置300-nの受信部309は、チケット発行装置100から暗号文cjを受信する。●ステップS2ユーザ装置300-nの送信部308はユーザの属性iをポイント管理装置200に送信する。ユーザの属性iは、通常、ユーザ装置300-nを操作するユーザ人間によってユーザ装置300-nに入力される。属性iとしては、ポイントサービス発行システムの場合、ユーザの氏名、住所、年齢、性別、チケット発行装置100から予め与えられたユーザIDやパスワード、ポイントなどである。●ステップS3ポイント管理装置200の受信部209はユーザ装置300-nから属性iを受信する。そして、ポイント管理装置200の秘密鍵生成部202は属性iとマスター鍵skを用いて鍵生成アルゴリズムKeyGen→skiを実行して秘密鍵skiを生成する。そして、ポイント管理装置200の送信部208は秘密鍵skiをユーザ装置300-nに送信する。●ステップS4ユーザ装置300-nの受信部309は、ポイント管理装置200から秘密鍵skiを受信する。そして、ユーザ装置300-nの復号部301は、公開パラメータpkと、秘密鍵skiと、暗号文cjとを入力とし、復号アルゴリズムDec→yを実行し、平文yを得る。RTrueのとき、これは属性iがチケット発行条件jを満足する場合であるから、ユーザ装置300-nの復号部301は、チケットである平文yxを得る。RFalseのとき、これは属性iがチケット発行条件jを満足しない場合であるから、ユーザ装置300-nの復号部301は、チケットではない平文y⊥を得ることとなる。チケットを正しく入手できたユーザは、サービス事業者にチケットを提示してサービスの提供を得ることができる。このように、正当なユーザ装置300はチケットを入手できたことを自身で確認できる。他方、チケット発行装置100は、チケットを発行する際に、ユーザの属性がチケット発行条件を満足するか否かの判断をする必要がないので運用コストを低減でき、さらには、ユーザに固有の情報が含まれる属性の情報管理をする必要がないので管理コストも低減できる。上述の説明から明らかなように、評価対象情報自己評価システムにおいて、評価基準がユーザの相対的な順位などに依存しない場合に、運用者や評価者が採点結果のような個人に固有の情報を取り扱わなくても、評価処理を安全にユーザ自身に行わせることができ、情報管理や運用のコストを省力化できる。また、評価基準がユーザの相対的な順位などに依存する場合には、複数の暗号文をユーザに与えることによって評価処理を安全にユーザ自身に行わせることができ、情報管理や運用のコストを省力化できる。以下、関数型暗号について概説する。説明に先立ち記号等を定義する。定義行列:行列とは演算が定義された集合の元を矩形に並べたものを表す。環の元を要素とするものだけではなく、群の元を要素とするものも行列と表現する。T:Tはの転置行列を表す。1:1はの逆行列を表す。∧:∧は論理積ANDを表す論理記号である。∨:∨は論理和ORを表す論理記号である。¬:¬は否定NOTを表す論理記号である。命題変数:命題変数は命題の真偽falsetrueを要素とする集合{真,偽}上の変数である。命題変数及び命題変数の否定を総称してリテラルliteralと呼ぶ。論理式:論理式とは数理論理学における命題を表す形式的文法を有する式を意味する。具体的には真及び偽は論理式であり、命題変数は論理式であり、論理式の否定は論理式であり、論理式と論理式との論理積は論理式であり、論理式と論理式との論理和は論理式である。Z:Zは整数集合を表す。sec:secはセキュリティパラメータsec∈Zsec0を表す。0:0は個の0からなる列を表す。1:1は個の1からなる列を表す。Fq:Fqは位数qの有限体を表す。位数qは1以上の整数であり、例えば、素数や素数のべき乗値を位数qとする。すなわち、有限体Fqの例は素体やそれを基礎体とした拡大体である。なお、有限体Fqが素体である場合の演算は、例えば、位数qを法とする剰余演算によって容易に構成できる。また、有限体Fqが拡大体である場合の演算は、例えば、既約多項式を法とする剰余演算によって容易に構成できる。有限体Fqの具体的な構成方法は、例えば、参考文献1ISOIEC180332InformationtechnologySecuritytechniquesEncryptionalgorithmsPart2Asymmetricciphersに開示されている。0F:0Fは有限体Fqの加法単位元を表す。1F:1Fは有限体Fqの乗法単位元を表す。δ:δはクロネッカーのデルタ関数を表す。ijの場合にδ1Fを満たし、i≠jの場合にδ0Fを満たす。E:Eは有限体Fq上で定義された楕円曲線を表す。Eはアフィンaffine座標版のWeierstrass方程式y2a1xya3yx3a2x2a4xa6ただし、a1a2a3a4a6∈Fqを満たすxy∈Fqからなる点の集合に無限遠点と呼ばれる特別な点Oを付加したもので定義される。楕円曲線E上の任意の2点に対して楕円加算と呼ばれる二項演算及び楕円曲線E上の任意の1点に対して楕円逆元と呼ばれる単項演算-がそれぞれ定義できる。また、楕円曲線E上の有理点からなる有限集合が楕円加算に関して群をなすこと、楕円加算を用いて楕円スカラー倍算と呼ばれる演算が定義できること、及びコンピュータ上での楕円加算などの楕円演算の具体的な演算方法はよく知られている例えば、参考文献1、参考文献2RFC5091IdentityBasedCryptographyStandard1SupersingularCurveImplementationsoftheBFandBB1Cryptosystems、参考文献3イアンFブラケ、ガディエルセロッシ、ナイジェルPスマート=著、楕円曲線暗号、出版=ピアソンエデュケーション、ISBN4894714310等参照。また、楕円曲線E上の有理点からなる有限集合は位数pの部分群を持つ。例えば、楕円曲線E上の有理点からなる有限集合の要素数をEとし、pをEを割り切る大きい素数とした場合、楕円曲線Eのp等分点からなる有限集合Epは、楕円曲線E上の有理点からなる有限集合の部分群を構成する。なお、楕円曲線Eのp等分点とは、楕円曲線E上の点Aのうち、楕円曲線E上での楕円スカラー倍算値pAがpA=Oを満たす点を意味する。G1G2GT:G1G2GTは位数qの巡回群を表す。巡回群G1G2の具体例は、楕円曲線Eのp等分点からなる有限集合Epやその部分群である。G1G2であってもよいしG1≠G2であってもよい。また、巡回群GTの具体例は、有限体Fqを基礎体とする拡大体を構成する有限集合である。その一例は、有限体Fqの代数閉包における1のp乗根からなる有限集合である。巡回群G1G2GTの位数と有限体Fqの位数とを同一とすることで安全性が向上する。なお、本形態では、巡回群G1G2上で定義された演算を加法的に表現し、巡回群GT上で定義された演算を乗法的に表現する。すなわち、χ∈Fq及びΩ∈G1に対するχΩ∈G1は、Ω∈G1に対して巡回群G1で定義された演算をχ回施すことを意味し、Ω1Ω2∈G1に対するΩ1Ω2∈G1は、Ω1∈G1とΩ2∈G1とを被演算子として巡回群G1で定義された演算を行うことを意味する。同様に、χ∈Fq及びΩ∈G2に対するχΩ∈G2は、Ω∈G2に対して巡回群G2で定義された演算をχ回施すことを意味し、Ω1Ω2∈G2に対するΩ1Ω2∈G2は、Ω1∈G2とΩ2∈G2とを被演算子として巡回群G2で定義された演算を行うことを意味する。一方、χ∈Fq及びΩ∈GTに対するΩχ∈GTは、Ω∈GTに対して巡回群GTで定義された演算をχ回施すことを意味し、Ω1Ω2∈GTに対するΩ1Ω2∈GTは、Ω1∈GTとΩ2∈GTとを被演算子として巡回群GTで定義された演算を行うことを意味する。Ψ:Ψは1以上の整数を表す。ψ:ψは0以上Ψ以下の整数ψ0Ψを表す。λ:λは1以上Ψ以下の整数λ1Ψを表す。n:nは1以上の整数を表す。ζ:ζは0以上の整数を表す。G1nζ:G1nζはnζ個の巡回群G1の直積を表す。G2nζ:G2nζはnζ個の巡回群G2の直積を表す。g1g2gT:g1g2gTは巡回群GG1G2GTの生成元を表す。V:Vはnζ個の巡回群G1の直積からなるnζ次元のベクトル空間を表す。V:Vはnζ個の巡回群G2の直積からなるnζ次元のベクトル空間を表す。eψ:eψは直積G1nζと直積G2nζとの直積G1nζ×G2nζを巡回群GTに写す非退化な双線形写像bilinearmapを表す。双線形写像eψは、巡回群G1のnζ個の元γβζと巡回群G2のnζ個の元γβζとを入力とし、巡回群GTの1個の元を出力する。eψ:G1nζ×G2nζ→GT...双線形写像eψは以下の性質を満たす。[双線形性]すべてのΓ1∈G1nζ,Γ2∈G2nζ及びν,κ∈Fqについて以下の関係を満たす。eψeψνκ...[非退化性]すべてのΓ1∈G1nζ,Γ2∈G2nζを巡回群GTの単位元に写す写像ではない。[計算可能性]あらゆるΓ1∈G1nζ,Γ2∈G2nζ...についてeψを効率的に計算するアルゴリズムが存在する。本形態では、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像PairG1×G2→GT...を用いて双線形写像eψを構成する。本形態の双線形写像eψは、巡回群G1のnζ個の元γβζからなるnζ次元ベクトルζと、巡回群G2のnζ個の元γβζからなるnζ次元ベクトルζとの入力に対し、巡回群GTの1個の元を出力する。eψ:Πβ1nζPair...なお、双線形写像Pairは、巡回群G1の1個の元と巡回群G2の1個の元との組を入力とし、巡回群GTの1個の元を出力する。双線形写像Pairは、以下の性質を満たす。[双線形性]すべてのΩ1∈G1,Ω2∈G2及びν,κ∈Fqについて以下の関係を満たす。PairPairνκ...[非退化性]すべてのΩ1∈G1,Ω2∈G2...を巡回群GTの単位元に写す写像ではない。[計算可能性]あらゆるΩ1∈G1,Ω2∈G2についてPairを効率的に計算するアルゴリズムが存在する。双線形写像Pairの具体例は、WeilペアリングやTateペアリングなどのペアリング演算を行うための関数である例えば、参考文献4AlfredJMenezes,ELLIPTICCURVEPUBLICKEYCRYPTOSYSTEMS,KLUWERACADEMICPUBLISHERS,ISBN0792393686,pp6181等参照。また、楕円曲線Eの種類に応じ、Tateペアリングなどのペアリング演算を行うための関数と所定の関数phiを組み合わせた変更ペアリング関数eΩ1∈G1,Ω2∈G2を双線形写像Pairとして用いてもよい例えば、参考文献2等参照。また、ペアリング演算をコンピュータ上で行うためのアルゴリズムとしては、周知のMillerのアルゴリズム参考文献5VSMillerShortProgramsforfunctionsonCurves1986,インターネット<httpcryptostanfordedumillermillerpdf>などが存在する。また、ペアリング演算を効率的に行うための楕円曲線や巡回群の構成方法はよく知られている例えば、参考文献2、参考文献6AMiyajiMNakabayashiSTakanoNewexplicitconditionsofellipticcurveTracesforFRReductionIEICETransFundamentalsvolE84Ano05pp12341243May2001、参考文献7PSLMBarretoBLynnMScottConstructingellipticcurveswithprescribedembeddingdegreesProcSCN2002LNCS2576pp257267SpringerVerlag2003、参考文献8RDupontAEngeFMorainBuildingcurveswitharbitrarysmallMOVdegreeoverfiniteprimefieldshttpeprintiacrorg2002094等参照。aiζ:aiは巡回群G1のnζ個の元を要素とするnζ次元の基底ベクトルを表す。基底ベクトルaiの一例は、κ1g1∈G1をi次元目の要素とし、残りのnζ1個の要素を巡回群G1の単位元加法的に0と表現とするnζ次元の基底ベクトルである。この場合、nζ次元の基底ベクトルaiζの各要素をそれぞれ列挙して表現すると、以下のようになる。a1a2...anζここで、κ1は加法単位元0F以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ11Fである。基底ベクトルaiは直交基底であり、巡回群G1のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルaiζの線形和によって表される。すなわち、nζ次元の基底ベクトルaiは前述のベクトル空間Vを張る。aiζ:巡回群G2のnζ個の元を要素とするnζ次元の基底ベクトルを表す。基底ベクトルaiの一例は、κ2g2∈G2をi次元目の要素とし、残りのnζ1個の要素を巡回群G2の単位元加法的に0と表現とするnζ次元の基底ベクトルである。この場合、基底ベクトルaiζの各要素をそれぞれ列挙して表現すると、以下のようになる。a1a2...anζここで、κ2は加法単位元0F以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ21Fである。基底ベクトルaiは直交基底であり、巡回群G2のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルaiζの線形和によって表される。すなわち、nζ次元の基底ベクトルaiは前述のベクトル空間Vを張る。なお、基底ベクトルaiと基底ベクトルaiとは、0Fを除く有限体Fqの元τκ1κ2についてeψajgTτδ...を満たす。すなわち、ijの場合には、式の関係から、eψajPairPairPairPairκ1κ2Pair00Pair00Pairκ1κ2gTτを満たす。なお、上付き添え字κ1,κ2はそれぞれκ1,κ2を表す。一方、i≠jの場合には、eψajΠi1nζPairajの右辺は、Pairを含まず、PairとPairとPairとの積になる。さらに、式の関係からPairPairPair0を満たす。そのため、i≠jの場合には、eψajeψ0gT0を満たす。特に、τκ1κ21Fである場合例えば、κ1κ21Fの場合、eajgTδ...を満たす。ここで、gT01は巡回群GTの単位元であり、gT1gTは巡回群GTの生成元である。この場合、基底ベクトルaiと基底ベクトルaiとは双対正規直交基底であり、ベクトル空間Vとベクトル空間Vとは、双線形写像を構成可能な双対ベクトル空間双対ペアリングベクトル空間DPVSDualParingVectorspaceである。A:基底ベクトルaiζを要素とするnζ行nζ列の行列を表す。例えば、基底ベクトルaiζが式によって表現される場合、行列Aは、となる。A:基底ベクトルaiζを要素とするnζ行nζ列の行列を表す。例えば、基底ベクトルaiζが式によって表現される場合、行列Aは、となる。X:Xは有限体Fqの元を要素とするnζ行nζ列の行列を表す。行列Xは基底ベクトルaiの座標変換に用いられる。行列Xのi行j列ζj1nζの要素をχij∈Fqとすると、行列Xは、となる。なお、行列Xの各要素χijを変換係数と呼ぶ。X:Xと行列XとはXτ1Tの関係を満たす。ただし、τ∈Fqは有限体Fqに属する任意の定数であり、例えば、τ1Fである。Xは基底ベクトルaiの座標変換に用いられる。行列Xのi行j列の要素をχij∈Fqとすると、行列Xは、となる。なお、行列Xの各要素χijを変換係数と呼ぶ。この場合、nζ行nζ列の単位行列をIとするとXTτIを満たす。すなわち、単位行列に対し、を満たす。ここで、nζ次元ベクトルχi→χinζ...χj→χjnζ...を定義する。すると、式の関係から、nζ次元ベクトルχi→とχj→との内積は、χi→χj→τδ...となる。bi:biは巡回群G1のnζ個の元を要素とするnζ次元の基底ベクトルを表す。biは行列Xを用いて基底ベクトルaiζを座標変換することで得られる。具体的には、基底ベクトルbiは、biΣj1nζχijaj...の演算によって得られる。例えば、基底ベクトルajζが式によって表現される場合、基底ベクトルbiの各要素をそれぞれ列挙して表現すると、以下のようになる。biκ1g1χi2κ1g1χinζκ1g1...巡回群G1のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルbiζの線形和によって表される。すなわち、nζ次元の基底ベクトルbiは前述のベクトル空間Vを張る。bi:biは巡回群G2のnζ個の元を要素とするnζ次元の基底ベクトルを表す。biは行列Xを用いて基底ベクトルaiζを座標変換することで得られる。具体的には、基底ベクトルbiは、biΣj1nζχijaj...の演算によって得られる。例えば、基底ベクトルajζが式によって表現される場合、基底ベクトルbiの各要素をそれぞれ列挙して表現すると、以下のようになる。biκ2g2χi2κ2g2χinζκ2g2...となる。巡回群G2のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルbiζの線形和によって表される。すなわち、nζ次元の基底ベクトルbiは前述のベクトル空間Vを張る。なお、基底ベクトルbiと基底ベクトルbiとは、0Fを除く有限体Fqの元τκ1κ2についてeψbjgTττδ...を満たす。すなわち、式の関係から、を満たす。特にτκ1κ21F例えば、κ1κ21F及びτ1Fである場合、eψbjgTδ...を満たす。この場合、基底ベクトルbiと基底ベクトルbiとは、双対ペアリングベクトル空間ベクトル空間Vとベクトル空間Vの双対正規直交基底である。なお、式の関係を満たすのであれば、式で例示したもの以外の基底ベクトルai及びaiや、式で例示したもの以外の基底ベクトルbi及びbiを用いてもよい。B:Bは基底ベクトルbiζを要素とするnζ行nζ列の行列である。BXAを満たす。例えば、基底ベクトルbiが式によって表現される場合、行列Bは、となる。B:Bは基底ベクトルbiζを要素とするnζ行nζ列の行列を表す。BXAを満たす。例えば、基底ベクトルbiζが式によって表現される場合、行列Bは、となる。v→:v→は有限体Fqの元を要素とするn次元ベクトルを表す。v→vn∈Fqn...vμ:vμはn次元ベクトルv→のμ番目の要素を表す。w→:w→は有限体Fqの元を要素とするn次元ベクトルを表す。w→wn∈Fqn...wμ:wμはn次元ベクトルw→のμ番目の要素を表す。Enc:Encは共通鍵暗号方式の暗号化処理を示す共通鍵暗号関数を表す。EncK:EncKは、共通鍵Kを用い、共通鍵暗号関数Encに従って平文Mを暗号化して得られた暗号文を表す。Dec:Decは、共通鍵暗号方式の復号処理を示す共通鍵復号関数を表す。DecK:DecKは、共通鍵Kを用い、共通鍵復号関数Decに従って暗号文Cを復号して得られた復号結果を表す。関数型暗号方式次に、関数型暗号方式の基本的な構成について説明する。関数型暗号方式とは、第1情報と第2情報との組み合わせによって定まる論理式の真理値が真となる場合に暗号文が復号される方式である。第1情報と第2情報の一方が暗号文に埋め込まれ、他方が鍵情報に埋め込まれる。例えば、PredicateEncryptionSupportingDisjunctionsPolynomialEquationsandInnerProductswithAmitSahaiandBrentWatersOneof4papersfromEurocrypt2008invitedtotheJournalofCryptology参考文献9に開示された述語暗号方式は関数型暗号方式の一種である。これ以外にも様々な公知の関数型暗号方式が存在するが、以下に説明する関数型暗号方式では秘密情報に応じた値が所定の論理式に応じた態様で階層的に秘密分散される。所定の論理式は、第1情報と第2情報との組み合わせによって真理値が定まる命題変数を含み、必要に応じてさらに論理記号∧,∨,¬の何れか又はすべてを含む。そして、各命題変数の真理値が特定されることで定まる当該所定の論理式の真理値が真となる場合に秘密情報に応じた値が復元され、それに基づいて暗号文が復号される。<論理式と階層的な秘密分散との関係>上述した所定の論理式と階層的な秘密分散との関係を説明する。秘密分散とは、しきい値Kt個以上のシェア情報が得られた場合にのみ秘密情報が復元されるように、秘密情報をN個のシェア情報に分散することである。KtNを満たす秘密分散の方式SSSSecretSharingSchemeをNoutofN分散方式或いはNoutofNしきい値分散方式といい、Kt<Nを満たす秘密分散の方式をKtoutofN分散方式或いはKtoutofNしきい値分散方式という例えば、参考文献10黒沢馨、尾形わかは、現代暗号の基礎数理、コロナ社、2004年3月、p116119、参考文献11AShamirHowtoShareaSecretCommunicationsoftheACMNovember1979Volume22Number11pp612613等参照。NoutofN分散方式は、すべてのシェア情報shareshareが与えられれば秘密情報SEを復元できるが、任意のN1個のシェア情報shareshareが与えられても秘密情報SEの情報はまったく得られない方式である。以下に、その一例を示す。SH1SHN1をランダムに選択する。SHNSEの計算を行う。SH1SHNを各シェア情報shareshareとする。すべてのシェア情報shareshareが与えられれば、SEshareshare...の復元処理によって秘密情報SEの復元が可能である。KtoutofN分散方式は、任意の相違なるKt個のシェア情報shareshareが与えられれば秘密情報SEを復元できるが、任意のKt1個のシェア情報shareshareが与えられても秘密情報SEの情報はまったく得られない方式である。なお、添え字のKtはKtを表す。以下にKtoutofN分散方式の一例を示す。fSEを満たすKt1次の多項式fξ0ξ1xξ2x2ξKt1xKt1をランダムに選ぶ。すなわち、ξ0SEとし、ξ1ξKt1をランダムに選ぶ。シェア情報をshareρ1Nとする。なお、はρ及びfの値をそれぞれ抽出可能な情報であり、例えばρとfとのビット結合値である。任意の相違なるKt個のシェア情報shareshare⊂が得られた場合、例えば、ラグランジェの補間公式を用い、以下のような復元処理によって秘密情報SEの復元が可能である。SEfLA1fLAKtf...は先頭からρ番目の被演算子分母の要素、分子の要素が存在しないことを意味する。すなわち、式の分母は、であり、式の分子は、である。上述した各秘密分散は体上でも実行可能である。また、これらを拡張して秘密情報SEに応じた値をシェア情報shareに秘密分散することもできる。秘密情報SEに応じた値とは秘密情報SEそのものや秘密情報SEの関数値であり、シェア情報shareに応じた値とはシェア情報shareそのものやシェア情報の関数値である。例えば、有限体Fqの元である秘密情報SE∈Fqに応じた巡回群GTの元gTSE∈GTを秘密情報SEの各シェア情報shareshareに応じた巡回群GTの元gTsharegTshare∈GTに秘密分散することもできる。また、上述した秘密情報SEはシェア情報shareの線形結合となる式。このように秘密情報SEがシェア情報shareの線形結合となる秘密分散方式を線形秘密分散方式と呼ぶ。上述した所定の論理式は、秘密情報を階層的に秘密分散して得られる木構造データによって表現できる。すなわち、ドモルガンの法則により、上述した所定の論理式はリテラルからなる論理式、又は、論理記号∧,∨の少なくとも一部とリテラルとからなる論理式これらを標準形論理式と呼ぶことにするによって表現でき、この標準形論理式は秘密情報を階層的に秘密分散して得られる木構造データによって表現できる。標準形論理式を表現する木構造データは複数のノードを含み、少なくとも一部のノードは1個以上の子ノードの親ノードとされ、親ノードの1つはルートノードとされ、子ノードの少なくとも一部は葉ノードとされる。ルートノードの親ノードや、葉ノードの子ノードは存在しない。ルートノードには秘密情報に応じた値が対応し、各親ノードの子ノードには当該親ノードに対応する値を秘密分散したシェア情報に応じた値が対応する。各ノードでの秘密分散形態秘密分散方式やしきい値は標準形論理式に応じて定まる。また、各葉ノードには標準形論理式を構成する各リテラルが対応し、当該各リテラルの真理値は第1情報と第2情報との組み合わせによって定まる。ここで、真理値が真となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られるが、真理値が偽となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られないものとする。また、上述した秘密分散の性質により、親ノードに対応するシェア情報に応じた値その親ノードがルートノードであれば秘密情報に応じた値は、その子ノードに対応するシェア情報に応じた値が当該親ノードに対応するしきい値以上の個数だけ得られた場合にのみ復元される。そのため、どの葉ノードに対応するリテラルの真理値が真になったのかと木構造データの構成各ノードでの秘密分散の形態を含むとに応じ、最終的にルートノードに対応する秘密情報に応じた値が復元できるか否かが定まる。そして、各葉ノードに対応する各リテラルの真理値が標準形論理式の真理値を真にする場合にのみ最終的にルートノードに対応する秘密情報に応じた値が復元できるように木構造データが構成されている場合、このような木構造データは標準形論理式を表現する。このような標準形論理式を表現する木構造データは容易に設定できる。以下に具体例を示す。図11は、命題変数PROPROと命題変数PROの否定¬PROと論理記号∧,∨とを含む標準形論理式PRO∧PRO∨¬PROを表現する木構造データを例示する図である。図11に例示する木構造データは複数のノードN1N5を含む。ノードN1はノードN2N5の親ノードとされ、ノードN2はノードN3N4の親ノードとされ、親ノードの1つノードN1がルートノードとされ、子ノードの一部であるノードN3N4N5が葉ノードとされる。ノードN1には秘密情報SEに応じた値が対応し、ノードN1の子ノードN2N5には、秘密情報SEに応じた値が1outof2分散方式で秘密分散された各シェア情報SESEに応じた値がそれぞれ対応する。ノードN2の子ノードN3N4には、シェア情報SEに応じた値が2outof2分散方式で秘密分散された各シェア情報SESH1SH1に応じた値がそれぞれ対応する。すなわち、葉ノードN3にはシェア情報shareSESH1に応じた値が対応し、葉ノードN4にはシェア情報shareSH1に応じた値が対応し、葉ノードN5にはシェア情報shareSEに応じた値が対応する。また、葉ノードN3N4N5には標準形論理式PRO∧PRO∨¬PROを構成する各リテラルPROPRO¬PROがそれぞれ対応し、当該各リテラルPROPRO¬PROの真理値は第1情報と第2情報との組み合わせによって定まる。ここで、真理値が真となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られるが、真理値が偽となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られない。この場合、第1情報と第2情報との組み合わせが標準形論理式PRO∧PRO∨¬PROの真理値を真にする場合にのみ秘密情報SEに応じた値が復元される。図12は、命題変数PROPROPROPROPROと命題変数PROPROの否定¬PRO¬PROと論理記号∧,∨とを含む標準形論理式PRO∧PRO∨PRO∧PRO∨PRO∧PRO∨¬PRO∨∧PRO∧PROを表現する木構造データを例示する図である。図12に例示する木構造データは複数のノードN1N11を含む。ノードN1はノードN2N6N7の親ノードとされ、ノードN2はノードN3N4N5の親ノードとされ、ノードN7はノードN8N11の親ノードとされ、ノードN8はノードN9N10の親ノードとされ、親ノードの1つであるノードN1がルートノードとされ、ノードN3N4N5N6N9N10N11が葉ノードとされる。ノードN1には秘密情報SEに応じた値が対応し、ノードN1の子ノードN2N6N7には、秘密情報SEに応じた値が1outof3分散方式で秘密分散された各シェア情報SESESEに応じた値がそれぞれ対応する。ノードN2の子ノードN3N4N5には、シェア情報SEに応じた値が2outof3分散方式で秘密分散された各シェア情報に応じた値がそれぞれ対応する。ノードN7の子ノードN8N11には、シェア情報SEに応じた値が2outof2分散方式で秘密分散された各シェア情報SH4SESH4に応じた値がそれぞれ対応する。ノードN8の子ノードN9N10には、シェア情報SH4に応じた値が1outof2分散方式で秘密分散された各シェア情報SH4SH4に応じた値がそれぞれ対応する。すなわち、葉ノードN3にはシェア情報shareに応じた値が対応し、葉ノードN4にはシェア情報shareに応じた値が対応し、葉ノードN5にはシェア情報shareに応じた値が対応し、葉ノードN6にはシェア情報shareSEに応じた値が対応し、葉ノードN9にはシェア情報shareSH4に応じた値が対応し、葉ノードN10にはシェア情報shareSH4に応じた値が対応し、葉ノードN11にはシェア情報shareSESH4に応じた値が対応する。また、葉ノードであるノードN3N4N5N6N9N10N11には標準形論理式PRO∧PRO∨PRO∧PRO∨PRO∧PRO∨¬PRO∨∧PRO∧PROを構成する各リテラルPROPROPROPROPROPRO¬PRO¬PROPROPROがそれぞれ対応し、各リテラルPROPROPROPROPROPRO¬PRO¬PROPROPROの真理値は第1情報と第2情報との組み合わせによって定まる。ここで、真理値が真となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られるが、真理値が偽となったリテラルに対応する葉ノードに対応するシェア情報に応じた値は得られない。この場合、第1情報と第2情報との組み合わせが標準形論理式PRO∧PRO∨PRO∧PRO∨PRO∧PRO∨¬PRO∨∧PRO∧PROの真理値を真にする場合にのみ秘密情報SEに応じた値が復元される。<アクセス構造>上述のように秘密情報を階層的に秘密分散して得られる木構造データによって所定の論理式を表現した場合、第1情報と第2情報との組み合わせに対して得られる葉ノードでのシェア情報に応じた値から秘密情報に応じた値を復元できるか否かによって、第1情報と第2情報との組み合わせによって定まる論理式の真理値が真となるか偽となるかを判定できる。以下、第1情報と第2情報との組み合わせによって定まる論理式の真理値が真となる場合に第1情報と第2情報との組み合わせを受け入れ、偽となる場合に第1情報と第2情報との組み合わせを拒絶する仕組みをアクセス構造と呼ぶ。上述のように所定の論理式を表現した木構造データの葉ノードの総数をΨとし、各葉ノードに対応する識別子をλ1Ψとする。各葉ノードに対応するn次元ベクトルv→の集合v→λ1Ψを第1情報とし、n次元ベクトルw→の集合w→λ1Ψを第2情報とする。また、上述した木構造データをラベル付き行列LMTとして実装する。ラベル付き行列LMTは、Ψ行COL列COL≧1の行列と、行列MTの各行λ1Ψに対応付けられたラベルLABとを含む。行列MTの各要素mtλcolcol1COLは次の2つの要件を満たす。第1に、上述のように所定の論理式を表現した木構造データのルートノードに秘密情報SE∈Fqに応じた値が対応する場合、予め定められた有限体Fqの元を要素とするCOL次元ベクトルGV→∈FqCOL...と、秘密情報SEに応じた有限体Fqの元を要素とするCOL次元ベクトルCV→∈FqCOL...とに対してSEGV→T...が成立する。COL次元ベクトルGV→の具体例は、GV→∈FqCOL...であるが、GV→∈FqCOLなどのその他のCOL次元ベクトルであってもよい。第2に、識別子λに対応する葉ノードにシェア情報share∈Fqに応じた値が対応する場合、shareTMTT...が成立する。上述のように所定の論理式を表現した木構造データが定まれば、これら2つの要件を満たす行列MTを選択することは容易である。また、秘密情報SEやシェア情報shareが変数であったとしても、これら2つの要件を満たす行列MTを選択することは容易である。すなわち、行列MTを定めた後で秘密情報SEやシェア情報shareの値が定められてもよい。また、行列MTの各行λ1Ψに対応付けられたラベルLABは、識別子λに対応する葉ノードに対応するリテラルPRO又は¬PROに対応する。ここで、命題変数PROの真理値が真であることと第1情報VSET1λv→λ1Ψが含むv→と第2情報VSET2λw→λ1Ψが含むw→との内積v→w→が0となることとが等価であると扱い、命題変数PROの真理値が偽であることと内積v→w→が0とならないこととが等価であると扱う。そして、PROに対応するラベルLABがv→を表し、¬PROに対応するラベルLABが¬v→を表すものとする。なお、¬v→はv→の否定を表す論理式であり、¬v→からv→の特定が可能である。また、LABがv→を表すことをLABv→と表記し、LABが¬v→を表すことをLAB¬v→と表記する。また、LABλ1Ψの集合LABλ1ΨをLABと表記する。さらに、Ψ次元ベクトルTFV→tfv...を定義する。要素tfvは、内積v→w→が0のときにtfv1となり、0以外のときにtfv0となる。tfv1PROが真ifv→w→0...tfv0PROが偽ifv→w→≠0...さらに、論理式v→∧1∨¬v→∧0...の真理値が真になるときLIT1と表記し偽になるときLIT0と表記する。すなわち、識別子λに対応する葉ノードに対応するリテラルの真理値が真になるときLIT1と表記し偽になるときLIT0と表記する。すると、行列MTが含む行ベクトルのうちLIT1となる行ベクトルmtλ→のみからなる部分行列MTTFVは以下のように表記できる。MTTFVLIT1...上述した秘密分散方式が線形秘密分散方式である場合、識別子λに対応するシェア情報shareに応じた値から秘密情報SEに応じた値が復元できることと、識別子λに対応する行ベクトルmtλ→で張られるベクトル空間にCOL次元ベクトルGV→が属することとは等価である。すなわち、識別子λに対応する行ベクトルmtλ→で張られるベクトル空間にCOL次元ベクトルGV→が属するか否かを判定することで、識別子λに対応するシェア情報shareに応じた値から秘密情報SEに応じた値が復元できるか否かが判定できる。なお、行ベクトルmtλ→で張られるベクトル空間とは、行ベクトルmtλ→の線形結合で表すことができるベクトル空間を意味する。ここで、上述の部分行列MTTFVの各行ベクトルmtλ→で張られるベクトル空間spanにCOL次元ベクトルGV→が属する場合に第1情報と第2情報との組み合わせが受け入れられ、そうでない場合に第1情報と第2情報との組み合わせが拒絶されることにする。これにより、上述のアクセス構造が具体化される。なお、上述したようにラベル付き行列LMTが第1情報に対応する場合、アクセス構造が第1情報と第2情報との組み合わせを受け入れることをアクセス構造が第2情報を受け入れるといい、アクセス構造が第1情報と第2情報との組み合わせを受け入れないことをアクセス構造が第2情報を拒絶するという。受け入れifGV→∈span拒絶if¬また、GV→∈spanの場合、SEΣμ∈SETconstshare...const∈Fqμ∈SETSET⊆1λLIT1を満たす係数constが存在し、このような係数constは行列MTのサイズの多項式時間で求めることができる。<アクセス構造を用いた関数型暗号方式の基本構成>以下では、アクセス構造を用いた関数型暗号方式によって鍵カプセル化メカニズムKEMを構成する場合の基本構成を例示する。この構成はSetupn,GenKey,Enc→λ1Ψ1F,Decを含む。また、第2情報VSET2λw→λ1Ψの1番目の要素w1が1Fとされる。[Setupn:セットアップ]-入力:1sec,n-出力:マスター鍵情報MSK,公開パラメータPKSetupでは各ψ0Ψについて以下の処理が実行される。1secを入力としてセキュリティパラメータsecでの位数q、楕円曲線E、巡回群G1G2GT、双線形写像eψが生成されるparam。τ∈Fqが選択され、Xτ1Tを満たす行列X,Xが選択される。基底ベクトルaiζが式に従って座標変換され、nζ次元の基底ベクトルbiζが生成される。基底ベクトルbiζを要素とするnζ行nζ列の行列Bが生成される。基底ベクトルaiζが式に従って座標変換され、nζ次元の基底ベクトルbiζが生成される。基底ベクトルbiζを要素とするnζ行nζ列の行列Bが生成される。B^の集合B^ψ0Ψをマスター鍵情報MSKB^ψ0Ψとする。また、B^の集合B^ψ0Ψと1secとparamとを公開パラメータPKとする。ただし、B^は行列B又はその部分行列であり、B^は行列B又はその部分行列である。また、集合B^ψ0Ψは、少なくとも、b1b1...bnλ1Ψを含む。また、集合B^ψ0Ψは、少なくとも、b1b1...bnλ1Ψを含む。以下に一例を示す。nζ≧5ζ3nB^b3b5TB^...bnb3n1...b4nTλ1ΨB^b3b4TB^...bnb2n1...b3nTλ1Ψ[GenKey:鍵情報生成]-入力:公開パラメータPK,マスター鍵情報MSK,第1情報VSET1λv→λ1Ψに対応するラベル付き行列LMT-出力:鍵情報SKS式を満たす秘密情報SEに対して以下の処理が実行される。DSEb1Σι2Icoefιbι...ただし、Iは2以上nζ以下の定数である。coefι∈Fqは定数又は乱数である。乱数とは真性乱数や擬似乱数を意味する。以下にDの一例を示す。なお、式のcoef4は乱数である。DSEb1b3coef4b4...式を満たすshareに対して以下の処理が実行される。LABv→となるλに対してDcoefv1b1Σι2ncoefvιbιΣιn1nζcoefιbι...が生成され、LAB¬v→となるλに対してDshareΣι1nvιbιΣιn1nζcoefιbι...が生成される。ただしcoefcoefι∈Fqは定数又は乱数である。以下に一例を示す。LABv→となるλに対してDcoefv1b1Σι2ncoefvιbιΣι2n13ncoefιbι...が生成され、LAB¬v→となるλに対してDshareΣι1nvιbιΣι2n13ncoefιbι...が生成される。なお、式のcoef及びcoefιは乱数である。鍵情報SKSDDD...生成される。[Enc:暗号化]-入力:公開パラメータPK,平文M,第2情報VSET2λw→λ1Ψ1F-出力:暗号文C以下の処理によって共通鍵Kの暗号文Cが生成される。Cυb1Σι2Iυιbι...CυΣι1nwιbιΣιn1nζυιbι...ただし、υυι∈Fqは定数又は乱数であり、coefIυIυ...coefιυι0F1nζ...を満たす。υの例はυ2υIの何れか1個である。例えば、υυ3υ5υ3n1υ4nが乱数であり、ζ3n、I5であり、υI0Fυ5υυ31υ3nである。共通鍵KgTττυ∈GT...が生成される。例えば、ττ1Fの場合、KgTυ∈GT...である。共通鍵Kを用いて平文Mの暗号文CEncK...が生成される。なお、共通鍵暗号方式Encは、例えば共通鍵Kを用いて暗号化可能に構成されたカメリアCamellia登録商標やAESや共通鍵と平文との排他的論理和などでよいが、その他の簡単な例として以下のようにEncKを生成してもよい。ただし、式の例ではM∈GTとされる。CgTυM...暗号文CC→∈VSET2C...が生成される。ただし、下付き添え字のw→はw→を表す。[Dec:復号]-入力:公開パラメータPK,鍵情報SKS,暗号文C-出力:平文Mλ1Ψについて、鍵情報SKSが含むラベル付き行列LMTの各ラベルLABであるn次元ベクトルv→と暗号文CのVSET2が含むn次元ベクトルw→との内積v→w→が0となるか否かが判定され、これとLMTの各ラベルLABとによってGV→∈spanであるか否かが判定される式。GV→∈spanでなければ暗号文Cが拒絶され、GV→∈spanであれば暗号文Cが受け入れられる。暗号文Cが受け入れられると、SET⊆1λLIT1と式を満たす係数constとが計算される。共通鍵が生成される。ここで、式から、を満たす。また、式及びw11Fからを満たす。また、式からを満たす。よって、式からを満たす。例えば、ττ1Fの場合、KgTυ∈GT...を満たす。共通鍵Kを用いて平文MDecKDecK...が生成される。例えば、式に例示した共通鍵暗号方式の場合、MCK...によって平文Mが生成される。なお、gTをGTの生成元とする代わりにgTτやgTτやgTττをGTの生成元と扱ってもよい。また、鍵情報SKSのλと暗号文のλとを対応関係を特定する写像を用いてCとDとの組み合わせを特定し、[Dec:復号]の処理が実行されてもよい。また、第2情報VSET2λw→λ1Ψの1番目の要素w1が1Fとされるだけではなく、第1情報VSET1λv→λ1Ψのn番目の要素vnが1Fとされてもよい。また、要素w1が1Fでない場合にはw→の代わりにw→w1を用いてもよく、要素vnが1Fでない場合にはv→の代わりにv→vnを用いてもよい。また、第1情報VSET1λv→λ1Ψの代わりに第2情報VSET2λw→λ1Ψが用いられ、第2情報VSET2λw→λ1Ψの代わりに第1情報VSET1λv→λ1Ψが用いられてもよい。この場合には第1情報VSET1λv→λ1Ψの1番目の要素v1が1Fとされる。次に、関数型暗号の一形態である述語暗号の一例として内積を用いた述語暗号について説明する。なお、数式の番号は本節で改めて付け直している。また、説明の都合、上述の説明で用いた文言や記号と同じ文言や記号であっても意味が異なる場合があるので注意されたい。述語暗号は1outof1分散方式を用いた関数型暗号に相当する。定義次に、用語や記号を定義する。行列:行列とは演算が定義された集合の元を矩形に並べたものを表す。環の元を要素とするものだけではなく、群の元を要素とするものも行列と表現する。T:Tはの転置行列を表す。1:1はの逆行列を表す。∧:∧は論理積を表す。∨:∨は論理和を表す。Z:Zは整数集合を表す。sec:secはセキュリティパラメータsec∈Zsec0を表す。Fq:Fqは位数qの有限体を表す。位数qは1以上の整数であり、例えば、素数や素数のべき乗値を位数qとする。すなわち、有限体Fqの例は素体やそれを基礎体とした拡大体である。0F:0Fは有限体Fqの加法単位元零元を表す。一般化した加法単位元を0と表す。1F:1Fは有限体Fqの乗法単位元を表す。一般化した乗法単位元を1と表す。δ:δはクロネッカーのデルタ関数を表す。ijの場合にδ1Fを満たし、i≠jの場合にδ0Fを満たす。E:Eは有限体Fq上で定義された楕円曲線を表す。G1G2GT:G1G2GTは位数qの巡回群を表す。巡回群G1G2の具体例は、楕円曲線Eのp等分点からなる有限集合Epやその部分群である。G1G2であってもよいしG1≠G2であってもよい。また、巡回群GTの具体例は、有限体Fqを基礎体とする拡大体を構成する有限集合である。その一例は、有限体Fqの代数閉包における1のp乗根からなる有限集合である。なお、本形態では、巡回群G1G2上で定義された演算を加法的に表現し、巡回群GT上で定義された演算を乗法的に表現する。すなわち、χ∈Fq及びΩ∈G1に対するχΩ∈G1は、Ω∈G1に対して巡回群G1で定義された演算をχ回施すことを意味し、Ω1Ω2∈G1に対するΩ1Ω2∈G1は、Ω1∈G1とΩ2∈G1とを被演算子として巡回群G1で定義された演算を行うことを意味する。同様に、χ∈Fq及びΩ∈G2に対するχΩ∈G2は、Ω∈G2に対して巡回群G2で定義された演算をχ回施すことを意味し、Ω1Ω2∈G2に対するΩ1Ω2∈G2は、Ω1∈G2とΩ2∈G2とを被演算子として巡回群G2で定義された演算を行うことを意味する。一方、χ∈Fq及びΩ∈GTに対するΩχ∈GTは、Ω∈GTに対して巡回群GTで定義された演算をχ回施すことを意味し、Ω1Ω2∈GTに対するΩ1Ω2∈GTは、Ω1∈GTとΩ2∈GTとを被演算子として巡回群GTで定義された演算を行うことを意味する。n:nは1以上の整数を表す。ζ:ζは1以上の整数を表す。ζの一例は2又は3である。G1nζ:G1nζはnζ個の巡回群G1の直積を表す。G2nζ:G2nζはnζ個の巡回群G2の直積を表す。g1g2gT:g1g2gTは巡回群GG1G2GTの生成元を表す。V:Vはnζ個の巡回群G1の直積からなるnζ次元のベクトル空間を表す。V:Vはnζ個の巡回群G2の直積からなるnζ次元のベクトル空間を表す。e:eは直積G1nζと直積G2nζとの直積G1nζ×G2nζを巡回群GTに写す非退化な双線形写像bilinearmapを表す。双線形写像eは、巡回群G1のnζ個の元γβと巡回群G2のnζ個の元γβとを入力とし、巡回群GTの1個の元を出力する。e:G1nζ×G2nζ→GT...双線形写像eは以下の性質を満たす。[双線形性]すべてのΓ1∈G1nζ,Γ2∈G2nζ及びν,κ∈Fqについて以下の関係を満たす。eeνκ...[非退化性]すべてのΓ1∈G1nζ,Γ2∈G2nζを巡回群GTの単位元に写すものではない。[計算可能性]あらゆるΓ1∈G1nζ,Γ2∈G2nζ...についてeを効率的に計算するアルゴリズムが存在する。本形態では、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像を計算するための関数PairG1×G2→GT...を用いて双線形写像eを構成する。本形態の双線形写像eは、巡回群G1のnζ個の元γβからなるnζ次元ベクトルと、巡回群G2のnζ個の元γβからなるnζ次元ベクトルとの入力に対し、巡回群GTの1個の元eΠβ1nζPair...を出力する。なお、双線形写像Pairは、巡回群G1の1個の元と巡回群G2の1個の元との組を入力とし、巡回群GTの1個の元を出力するものであり、以下の性質を満たす。[双線形性]すべてのΩ1∈G1,Ω2∈G2及びν,κ∈Fqについて以下の関係を満たす。PairPairνκ...[非退化性]すべてのΩ1∈G1,Ω2∈G2...を巡回群GTの単位元に写すものではない。[計算可能性]あらゆるΩ1∈G1,Ω2∈G2についてPairを効率的に計算するアルゴリズムが存在する。なお、双線形写像Pairの具体例は、WeilペアリングやTateペアリングなどのペアリングである例えば、参考文献1AlfredJMenezes,ELLIPTICCURVEPUBLICKEYCRYPTOSYSTEMS,KLUWERACADEMICPUBLISHERS,ISBN0792393686,pp6181、参考文献2RFC5091IdentityBasedCryptographyStandard1SupersingularCurveImplementationsoftheBFandBB1Cryptosystems等参照。ai:aiは巡回群G1のnζ個の元を要素とするnζ次元の基底ベクトルを表す。基底ベクトルaiの一例は、κ1g1∈G1をi次元目の要素とし、残りのn個の要素を巡回群G1の単位元加法的に0と表現とするnζ次元の基底ベクトルである。この場合、nζ次元の基底ベクトルaiの各要素をそれぞれ列挙して表現すると、以下のようになる。a1a2...anζここで、κ1は加法単位元0F以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ11Fである。基底ベクトルaiは直交基底であり、巡回群G1のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルaiの線形和によって表される。すなわち、nζ次元の基底ベクトルaiはベクトル空間Vを張る。ai:巡回群G2のnζ個の元を要素とするnζ次元の基底ベクトルを表す。基底ベクトルaiの一例は、κ2g2∈G2をi次元目の要素とし、残りのn個の要素を巡回群G2の単位元加法的に0と表現とするnζ次元の基底ベクトルである。この場合、基底ベクトルaiの各要素をそれぞれ列挙して表現すると、以下のようになる。a1a2...anζここで、κ2は加法単位元0F以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ21Fである。基底ベクトルaiは直交基底であり、巡回群G2のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルaiの線形和によって表される。すなわち、nζ次元の基底ベクトルaiはベクトル空間Vを張る。なお、基底ベクトルaiと基底ベクトルaiとは、0Fを除く有限体Fqの元τκ1κ2についてegTτδ...を満たす。すなわち、ijの場合には、式の関係から、ePairPairPairPairκ1κ2Pair00Pair00Pairκ1κ2gTτを満たす。一方、i≠jの場合には、eΠi1nζPairの右辺は、Pairを含まず、PairとPairとPairとの積になる。さらに、式の関係からPairPairPair0を満たす。そのため、i≠jの場合には、ee0gT0を満たす。特に、τκ1κ21Fである場合例えば、κ1κ21Fの場合、egTδ...を満たす。ここで、gT01は巡回群GTの単位元であり、gT1gTは巡回群GTの生成元である。この場合、基底ベクトルaiと基底ベクトルaiとは双対正規直交基底であり、ベクトル空間Vとベクトル空間Vとは、双線形写像を構成可能な双対ベクトル空間双対ペアリングベクトル空間DPVSDualParingVectorspaceである。A:基底ベクトルaiを要素とするnζ行nζ列の行列を表す。例えば、基底ベクトルaiが式によって表現される場合、行列Aは、となる。A:基底ベクトルaiを要素とするnζ行nζ列の行列を表す。例えば、基底ベクトルaiが式によって表現される場合、行列Aは、となる。X:有限体Fqの元を要素とするnζ行nζ列の行列を表す。基底ベクトルaiの座標変換に用いられる。行列Xのi行j列の要素をχij∈Fqとすると、行列Xは、となる。なお、行列Xの各要素χijを変換係数と呼ぶ。X:Xは行列Xの逆行列の転置行列XTを表す。基底ベクトルaiの座標変換に用いられる。行列Xのi行j列の要素をχij∈Fqとすると、行列Xは、となる。なお、行列Xの各要素χijを変換係数と呼ぶ。この場合、nζ行nζ列の単位行列をIとするとXTIを満たす。すなわち、単位行列に対し、を満たす。ここで、nζ次元ベクトルχi→...χj→...を定義する。すると、式の関係から、nζ次元ベクトルχi→とχj→との内積は、χi→χj→δ...となる。bi:biは巡回群G1のnζ個の元を要素とするnζ次元の基底ベクトルを表す。行列Xを用いて基底ベクトルaiを座標変換することで得られる。具体的には、基底ベクトルbiは、biΣj1nζχijaj...の演算によって得られる。例えば、基底ベクトルajが式によって表現される場合、基底ベクトルbiの各要素をそれぞれ列挙して表現すると、以下のようになる。bi...巡回群G1のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルbiの線形和によって表される。すなわち、nζ次元の基底ベクトルbiは前述のベクトル空間Vを張る。bi:biは巡回群G2のnζ個の元を要素とするnζ次元の基底ベクトルを表す。行列Xを用いて基底ベクトルaiを座標変換することで得られる。具体的には、基底ベクトルbiは、biΣj1nζχijaj...の演算によって得られる。例えば、基底ベクトルajが式によって表現される場合、基底ベクトルbiの各要素をそれぞれ列挙して表現すると、以下のようになる。bi...となる。巡回群G2のnζ個の元を要素とするすべてのnζ次元ベクトルは、nζ次元の基底ベクトルbiの線形和によって表される。すなわち、nζ次元の基底ベクトルbiは前述のベクトル空間Vを張る。なお、基底ベクトルbiと基底ベクトルbiとは、0Fを除く有限体Fqの元τκ1κ2についてegTτδ...を満たす。すなわち、式の関係から、を満たす。特に、τκ1κ21Fである場合例えば、κ1κ21Fの場合、egTδ...を満たす。この場合、基底ベクトルbiと基底ベクトルbiとは、双対ペアリングベクトル空間ベクトル空間Vとベクトル空間Vの双対正規直交基底である。なお、式の関係を満たすのであれば、式で例示したもの以外の基底ベクトルai及びaiや、式で例示したもの以外の基底ベクトルbi及びbiを用いてもよい。B:Bは基底ベクトルbiを要素とするnζ行nζ列の行列。BXAを満たす。例えば、基底ベクトルbiが式によって表現される場合、行列Bは、となる。B:Bは基底ベクトルbiを要素とするnζ行nζ列の行列を表す。BXAを満たす。例えば、基底ベクトルbiが式によって表現される場合、行列Bは、となる。内積述語暗号方式次に、内積述語暗号方式について説明する。内積述語暗号方式とは、暗号文に対応するベクトルと復号鍵に対応するベクトルとの内積が0となるときに当該暗号文が当該復号鍵で復号可能となる暗号方式である。内積述語暗号方式では、内積が0となることと論理式の真理値が真となることとが等価である。[内積と論理式の真理値との関係]内積述語暗号では、論理和や論理積からなる論理式を多項式で表現する。まず、x1がη1であるという命題1とx2がη2であるという命題2との論理和∨を...という多項式で表現する。すると、各真理値と式の関数値との関係は以下のようになる。表1から分かるように、論理和∨が真である場合、式の関数値は0になり、論理和∨が偽である場合、式の関数値は0以外の値となる。すなわち、論理和∨が真であることと、式の関数値が0となることとは等価である。よって、論理和は式で表現できる。また、x1がη1であるという命題1とx2がη2であるという命題2との論理積∧をι1ι2...という多項式で表現する。ただし、ι1及びι2は乱数である。すると、真理値と式の関数値とは以下の関係となる。表2から分かるように、論理積∧が真である場合、式の関数値は0になり、論理積∧が偽である場合、式の関数値は0以外の値となる。すなわち、論理積∧が真であることと、式の関数値が0となることとは等価である。よって、論理積は式で表現できる。以上から、論理和や論理積からなる任意の論理式を多項式で表現できることが分かる。例えば、論理式∨∧∧は、多項式ι1ι2ι3...で表現できる。以下、このように論理式を表現する多項式のことを述語多項式と呼ぶ。述語多項式は2つのベクトルの内積で表現できる。すなわち、述語多項式は、各項の不定元成分と1とを各要素とするベクトルと、各項の係数成分を各要素とするベクトルとの内積に等しい。例えば、式の述語多項式は、各項の不定元成分と1を各要素とするベクトルと、各項の係数成分を各要素とするベクトルとの内積に等しい。そのため、述語多項式の値が0であるか否かと、述語多項式の各項の不定元成分と1とを各要素とするベクトルと各項の係数成分を各要素とするベクトルとの内積が0であるか否かとは等価である。言い換えると、論理式の真理値が真であるか否かと、当該論理式を示す述語多項式の各項の不定元成分と1とを各要素とするベクトルと各項の係数成分を各要素とするベクトルとの内積が0であるか否かとは等価である。内積述語暗号方式では、上述の各項の不定元成分と1を各要素とするベクトル及び各項の係数成分を各要素とするベクトルの何れか一方のベクトルが暗号文に埋め込まれ、他方のベクトルが復号鍵に埋め込まれる。以下では、暗号文に埋め込まれるベクトルをw→とし、復号鍵に埋め込まれるベクトルをv→とする。[内積述語暗号方式の基本構成]内積述語暗号方式で鍵カプセル化メカニズムKEMを構成する例を示す。この構成はSetup,GenKey,Enc,Decを含む。《Setup:セットアップ》-入力:セキュリティパラメータsec-出力:マスター鍵情報MSK,公開パラメータPKSetupの一例では、まず、セキュリティパラメータsecをnとして、nζ次元の基底ベクトルaiを要素とするnζ行nζ列の行列Aと、基底ベクトルaiを要素とするnζ行nζ列の行列Aと、座標変換のためのnζ行nζ列の行列X,Xとが選択される。次に、式に従って座標変換されたnζ次元の基底ベクトルbiが算出され、式に従って座標変換されたnζ次元の基底ベクトルbiが算出される。そして、基底ベクトルbiを要素とするnζ行nζ列の行列Bがマスター鍵情報MSKとして出力され、ベクトル空間VV、基底ベクトルbiを要素とするnζ行nζ列の行列B、セキュリティパラメータsec、有限体Fq、楕円曲線E、巡回群G1G2GT、生成元g1g2gT、双線形写像eなどが公開パラメータPKとして出力される。《GenKey:復号鍵生成》-入力:マスター鍵情報MSK,ベクトルv→-出力:ベクトルv→に対応する復号鍵DGenKeyの一例では、まず、有限体Fqから元σσιn∈Fqが選択される。そして、マスター鍵情報MSKである行列Bを用い、ベクトルv→に対応する復号鍵DσΣιn1nζσιnbι∈G2nζ...が生成され、出力される。ただし、σσιnは乱数などの変数や定数などであり、ζ≦ζである例えばζ3ζ2。またΣιn1nζσιnはシステムで共有される定数値とされる。以下ではΣιn1nζσιn1F...とされた例を説明する。これは本発明を限定しない。《Enc:暗号化》-入力:公開パラメータPK,ベクトルw→,平文mes-出力:暗号文Encの一例では、行列Bなどの公開パラメータPKと、有限体Fqの元である乱数υ0υ1υζと、ベクトルw→とを用い、暗号文C1υ0Σμn1nζυμnbμ∈G1nζ...が生成される。ただし、υ1υζ...を満たす例えばζ2のときにはυ1υ2。また、gTτυ1を共通鍵Kとし、所定の共通鍵暗号方式第2暗号方式に則って平文mesの暗号文C2が生成される。暗号文C2の一例は、C2gTτυ1mes...である。添え字のυ1はυ1を意味する。前述のように定数τの一例はτ1Fである。生成された暗号文は出力される。《Dec:復号》-入力:ベクトルv→に対応する復号鍵D,暗号文-出力:復号値mesDecの一例では、まず、暗号文C1と復号鍵Dとが式の双線形写像eに入力され、その演算結果を共通鍵Keとし、以下のように復号値mesが求められる。mesC2e∈GT...ここで、式の性質から、を満たす。内積w→v→0であれば、式は、を満たす。式から、内積w→v→0であればmesmesとなり、正しく復号されることがわかる。[階層的内積述語暗号方式の基本構成]階層的内積述語暗号方式は内積述語暗号方式の一種であり、暗号文に対応するベクトルと復号鍵に対応するベクトルとの内積が0となるときに当該暗号文が当該復号鍵で復号可能となる。さらに階層的内積述語暗号方式では階層的な処理によって復号鍵を生成できる。すなわち、階層的内積述語暗号方式では属性が階層化され、各階層までの属性に対応する鍵情報が存在するとともに、上位の階層に対応する鍵情報を用いて下位の階層に対応する鍵情報を生成できる。そして、このような階層的な処理によって生成された最終的な鍵情報が復号鍵となる。以下に階層的内積述語暗号方式の基本構成を例示する。以下では、階層的内積述語暗号方式を用いて鍵カプセル化メカニズムKEMを構成する場合の基本構成を例示する。ただし、これは本発明を限定するものではない。《前提》深さdの属性空間の階層フォーマットを以下の式によって定義する。ただし、dは1以上n以下の整数である。ξ→...有限体Fqの元を要素とするξωξω1次元のベクトル零ベクトルを除くを階層ωに対応するベクトルとし、階層1から階層mm≦dまでに対応するベクトルをとする。有限体Fqの元を要素とするξωξω1次元ω1dのベクトル零ベクトルを除くを階層ωに対応するベクトルとし、階層1から階層mまでに対応するベクトルをとする。《Setup:セットアップ》-入力:セキュリティパラメータsec-出力:階層フォーマットξ→,マスター秘密鍵MSK,公開パラメータmpkSetupの一例では、セキュリティパラメータsecの単調増加関数値をnとし、階層フォーマットξ→が定められる。また、この例ではζ3とし、n3次元の基底ベクトルaiを要素とするn3行n3列の行列Aと、基底ベクトルaiを要素とするn3行n3列の行列Aと、座標変換のためのn3行n3列の行列X,Xとが選択される。次に、式に従って座標変換されたn3次元の基底ベクトルbiが算出され、式に従って座標変換されたn3次元の基底ベクトルbiが算出される。この例では、基底ベクトルと行列Xとがマスター秘密鍵MSKとして出力され、基底ベクトル、ベクトル空間VV、セキュリティパラメータsec、有限体Fq、楕円曲線E、巡回群G1G2GT、生成元g1g2gT、双線形写像eなどが公開パラメータmpkとして出力される。《GenKey:鍵情報生成》-入力:マスター秘密鍵MSK,公開パラメータmpk,ベクトル-出力:ベクトルに対応する鍵情報kmGenKeyの一例では、まず、有限体Fqから元σα,ω,Ψ,Φα∈Fqが任意に選択される。この例では、これらとマスター秘密鍵MSKである基底ベクトルとベクトルとを用い、ベクトルに対応する鍵情報が生成されて出力される。ただし、である。《Delegate:鍵情報生成委譲》-入力:公開パラメータmpk,鍵情報km,ベクトルvm1→-出力:ベクトルに対応する鍵情報km1階層的内積述語暗号方式では、マスター秘密鍵MSKを用いることなく、公開パラメータmpk,鍵情報km,ベクトルvm1→からベクトルに対応する鍵情報km1を生成できる。ただし、m1d1である。Delegateの一例では、有限体Fqから元σα,ω,Ψ,Φα∈Fqが任意に選択される。この例では、これらと鍵情報kmとベクトルvm1→と用い、ベクトルに対応する鍵情報が生成されて出力される。ただし、である。《Enc:暗号化》-入力:公開パラメータmpk,ベクトル,平文mes-出力:暗号文Encの一例では、まず、有限体Fqから任意の元υ1υdυn3υが選択される。そして、これらと公開パラメータmpkとベクトルとを用い、暗号文が生成される。また、gTτυを共通鍵Kとし、所定の共通鍵暗号方式第2暗号方式に則って平文mesの暗号文C2が生成される。暗号文C2の一例は、C2gTτυmes...である。なお、前述のように定数τの一例はτ1Fである。その後、以上のように生成された暗号文が出力される。《Dec:復号》-入力:公開パラメータmpk,ベクトルに対応する鍵情報km,暗号文-出力:復号値mesDecの一例では、mesC2e...によって復号値mesを計算する。暗号文C1と鍵情報kmのkm0とが式の双線形写像eこの例ではζ3に入力されると、式の性質から、を満たす。なお、σω及びσは有限体Fqの元である。Delegateがなされることなく鍵情報kmが生成された場合にはσωσ0,ωである。Delegateが1回以上なされた場合には、GenKeyに使用された有限体Fqの元σα,ωやDelegate時に使用された有限体Fqの元σα,ωやΦαに応じてσωの値が定まる。ここで、すべてのω1mについて内積vω→wω→0Fであれば、式は、egTτυ...と変形できる。式より、すべてのω1mについて内積vω→wω→0Fである場合にmesmesとなり、正しく復号がなされることがわかる。<補記>評価対象情報自己評価システムに含まれるハードウェアエンティティ評価者装置、運用者装置、ユーザ装置は、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置例えば通信ケーブルが接続可能な通信部、CPUCentralProcessingUnitキャッシュメモリやレジスタなどを備えていてもよい。、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置ドライブなどを設けるとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくなどでもよい。。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。上述の説明では、演算結果やその格納領域のアドレスなどを記憶するRAMやレジスタなどの記憶装置を単に記憶部とした。ハードウェアエンティティでは、外部記憶装置あるいはROMなどに記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行処理される。その結果、CPUが所定の機能例えば、セットアップ部、秘密鍵生成部、暗号文生成部、鍵生成部、署名生成部、署名検証部、知識証明部、ソート判定部、平文判定部、復号部などを実現する。各実施形態で説明したハードウェアエンティティの細部においては、数論における数値計算処理が必要となる場合があるが、数論における数値計算処理自体は、周知技術と同様にして達成されるので、その演算処理方法などの詳細な説明は省略したこの点の技術水準を示す数論における数値計算処理が可能なソフトウェアとしては、例えばPARI/GP、KANT/KASHなどが挙げられる。PARI/GPについては、例えばインターネットURLhttpparimathubordeauxfr[平成23年5月11日検索]を参照のこと。KANT/KASHについては、例えばインターネットURLhttpwwwmathtuberlindealgebraやhttpwwwmathtuberlindekantkashhtml[平成23年5月11日検索]を参照のこと。。また、この点に関する文献として、参考文献Aを挙げることができる。参考文献AHCohenACourseinComputationalAlgebraicNumberTheoryGTM138SpringerVerlag1993本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。上述の二つ以上の実施例を組み合わせた実施例や、或る実施例に記載された技術的特徴を他の実施例に組み込んだ実施例ただし、当該技術的特徴の導入によって当該他の実施例の実施が不可能になる場合を除くも本発明の実施例に含まれる。例えば、上述の実施例9,10,11では、公開パラメータpkに含まれる述語変数に解答者識別子用変数nameが含まれていないが、公開パラメータpkに含まれる述語変数に解答者識別子用変数nameが含め、上述の実施例3,4,5で説明したように、解答者識別子用変数nameに関してnamenameinstanceの成立を必要条件として含むように述語jを構成することによって、name≠nameinstanceの場合に秘密鍵を用いて暗号文cjを復号することができないように実施することもできる。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。また、上記実施形態において説明したハードウェアエンティティにおける処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVDDigitalVersatileDisc、DVD-RAMRandomAccessMemory、CD-ROMCompactDiscReadOnlyMemory、CD-RRecordable/RWReWritable等を、光磁気記録媒体として、MOMagnetoOpticaldisc等を、半導体メモリとしてEEP-ROMElectronicallyErasableandProgrammableReadOnlyMemory等を用いることができる。また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASPApplicationServiceProvider型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるものコンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等を含むものとする。また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。"