(57)【要約】  暗号化装置（５０）は、暗号化トークンｅｔｋを用いて情報ｘを暗号化した暗号文ｃｔを生成する。復号鍵生成装置（６０）は、暗号化トークンｅｔｋに対応する復号トークンｄｔｋを用いて、ベクトルｙが設定されたユーザ秘密鍵ｓｋから復号鍵ｄｋを生成する。秘匿分析装置（７０）は、復号鍵生成装置（６０）によって生成された復号鍵ｄｋにより、暗号化装置（５０）によって生成された暗号文ｃｔを復号して、ベクトルｘとベクトルｙとについての演算結果を生成する。
2019142260.tif 000002
【特許請求の範囲】
【請求項１】
暗号化トークンｅｔｋを用いて情報ｘが暗号化された暗号文ｃｔを取得する暗号文取得部と、
前記暗号化トークンｅｔｋに対応する復号トークンｄｔｋを用いて、情報ｙが設定されたユーザ秘密鍵ｓｋから生成された復号鍵ｄｋにより、前記暗号文取得部によって取得された前記暗号文ｃｔを復号して、前記情報ｘと前記情報ｙとについての演算結果を生成する復号部と
を備える秘匿分析装置。
【請求項２】
前記復号部は、暗号文に設定された情報と、ユーザ秘密鍵に設定された情報との内積を計算可能な関数型暗号における復号アルゴリズムを用いて、前記復号鍵により前記暗号文ｃｔを復号する
請求項１に記載の秘匿分析装置。
【請求項３】
前記暗号文ｃｔは、前記情報ｘと前記暗号化トークンｅｔｋとの和を入力として、前記関数型暗号における暗号化アルゴリズムを用いて暗号化された
請求項２に記載の秘匿分析装置。
【請求項４】
前記ユーザ秘密鍵ｓｋは、前記関数型暗号の鍵生成アルゴリズムを用いて生成され、
前記復号鍵ｄｋは、前記ユーザ秘密鍵ｓｋと前記復号トークンｄｔｋとの組である
請求項２又は３に記載の秘匿分析装置。
【請求項５】
前記暗号文取得部は、ｉ＝１，．．．，ｎの各整数ｉについて、暗号化トークンｅｔｋｉを用いて情報ｘｉが暗号化された暗号文ｃｔｉを取得し、
前記復号部は、前記各整数ｉについてのユーザ秘密鍵ｓｋｉであって、前記各整数ｉについての前記暗号化トークンｅｔｋｉに対応する復号トークンｄｔｋを用いて情報ｙｉが設定されたユーザ秘密鍵ｓｋｉから生成された復号鍵ｄｋにより、前記各整数ｉについての暗号文ｃｔｉを復号して、前記各整数ｉについての前記情報ｘｉと前記情報ｙｉとについての演算結果を生成する
請求項１から４までのいずれか１項に記載の秘匿分析装置。
【請求項６】
前記復号トークンｄｔｋは、前記各整数ｉについての前記暗号化トークンｅｔｋｉの集合であり、
前記復号鍵ｄｋは、前記各整数ｉについての前記ユーザ秘密鍵ｓｋｉと、前記各整数ｉについての前記暗号化トークンｅｔｋｉと前記情報ｙｉとの内積の和ｚとの組であり、
前記復号部は、暗号文に設定された情報と、ユーザ秘密鍵に設定された情報との内積を計算可能な関数型暗号における復号アルゴリズムを用いて、前記各整数ｉについて、ユーザ秘密鍵ｓｋｉにより暗号文ｃｔｉを復号して復号データＤｉを生成して、前記各整数ｉについての前記復号データＤｉから前記和ｚを減じて、演算結果を生成する
請求項５に記載の秘匿分析装置。
【請求項７】
暗号化トークンｅｔｋを用いて情報ｘを暗号化した暗号文ｃｔを生成する暗号化装置と、
前記暗号化トークンｅｔｋに対応する復号トークンｄｔｋを用いて、情報ｙが設定されたユーザ秘密鍵ｓｋから復号鍵ｄｋを生成する復号鍵生成装置と、
前記復号鍵生成装置によって生成された前記復号鍵ｄｋにより、前記暗号化装置によって生成された前記暗号文ｃｔを復号して、前記情報ｘと前記情報ｙとについての演算結果を生成する秘匿分析装置と
を備える秘匿分析システム。
【請求項８】
暗号文取得部が、暗号化トークンｅｔｋを用いて情報ｘが暗号化された暗号文ｃｔを取得し、
復号部が、前記暗号化トークンｅｔｋに対応する復号トークンｄｔｋを用いて、情報ｙが設定されたユーザ秘密鍵ｓｋから生成された復号鍵ｄｋにより、前記暗号文ｃｔを復号して、前記情報ｘと前記情報ｙとについての演算結果を生成する秘匿分析方法。
【請求項９】
暗号文取得部が、暗号化トークンｅｔｋを用いて情報ｘが暗号化された暗号文ｃｔを取得する暗号文取得処理と、
復号部が、前記暗号化トークンｅｔｋに対応する復号トークンｄｔｋを用いて、情報ｙが設定されたユーザ秘密鍵ｓｋから生成された復号鍵ｄｋにより、前記暗号文取得処理によって取得された前記暗号文ｃｔを復号して、前記情報ｘと前記情報ｙとについての演算結果を生成する復号処理と
をコンピュータに実行させる秘匿分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号化したまま演算を実行する技術に関する。
【背景技術】
【０００２】
原則として、データを暗号化してしまうと復号しなければ内部のデータを閲覧及び編集することは不可能である。そのため、複数の暗号文のデータを編集する場合には、暗号文を一度復号し平文にした上で編集を行い、再度暗号化する必要がある。【０００３】
内積を計算可能な関数型暗号（以下、内積暗号と呼ぶ）がある（特許文献１及び非特許文献１参照）。内積暗号では、暗号化実行時にベクトルｘを設定し、ユーザ秘密鍵にベクトルｙを設定し、暗号文を復号する際にはベクトルｘとベクトルｙとの内積＜ｘ，ｙ＞を出力する。つまり、内積暗号は、暗号化したまま内積計算が可能な暗号である。以下の説明では、ベクトルｘとベクトルｙとの内積を＜ｘ，ｙ＞と書く。【０００４】
内積暗号は、単一入力可能な内積暗号と、複数入力可能な内積暗号とに分けられる。単一入力可能な内積暗号は、復号時に計算できる内積が１つのみである。これに対して、複数入力可能な内積暗号は、秘密鍵にＮ個のベクトルｙ１，．．．，ｙＮがを設定することが可能であり、復号時にはＮ個の暗号文を入力として、＜ｘ１，ｙ１＞＋＜ｘ２，ｙ２＞＋・・・＋＜ｘＮ，ｙＮ＞を計算できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２７２９９５号公報
【非特許文献】
【０００６】
【非特許文献１】Ｍｕｌｔｉ−Ｉｎｐｕｔ  Ｆｕｎｃｔｉｏｎａｌ  Ｅｎｃｒｙｐｔｉｏｎ  ｆｏｒ  Ｉｎｎｅｒ  Ｐｒｏｄｕｃｔｓ：  Ｆｕｎｃｔｉｏｎ−Ｈｉｄｉｎｇ  Ｒｅａｌｉｚａｔｉｏｎｓ  ａｎｄ  Ｃｏｎｓｔｒｕｃｔｉｏｎｓ  ｗｉｔｈｏｕｔ  Ｐａｉｒｉｎｇｓ  Ｍｉｃｈｅｌ  Ａｂｄａｌｌａ  ａｎｄ  Ｄａｒｉｏ  Ｃａｔａｌａｎｏ  ａｎｄ  Ｄａｒｉｏ  Ｆｉｏｒｅ  ａｎｄ  Ｒｏｍａｉｎ  Ｇａｙ  ａｎｄ  Ｂｏｇｄａｎ  Ｕｒｓｕ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ：
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１に記載されている方法は、Ｎ個の内積の和を計算することはできる。しかし、非特許文献１に記載されている方法は、１つでもユーザ秘密鍵を所持し、かつ、暗号化を実行できるユーザであれば、暗号文に紐づいているベクトルを類推することが可能である。【０００８】
複数入力可能な内積暗号は、クラウドにアップロードされた複数の暗号文を復号せずに、内積のような分析することが期待される。しかし、非特許文献１に記載されている方法のように、本来は漏洩するべきではない、個々の暗号文に設定された情報、例えば内積の場合はベクトルの値が、漏洩してしまう。【０００９】
この発明は、暗号化したまま内積といった演算を可能にしつつ、暗号文に設定された情報の漏えいを防止することを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る秘匿分析装置は、
暗号化トークンｅｔｋを用いて情報ｘが暗号化された暗号文ｃｔを取得する暗号文取得部と、
前記暗号化トークンｅｔｋに対応する復号トークンｄｔｋを用いて、情報ｙが設定されたユーザ秘密鍵ｓｋから生成された復号鍵ｄｋにより、前記暗号文取得部によって取得された前記暗号文ｃｔを復号して、前記情報ｘと前記情報ｙとについての演算結果を生成する復号部と
を備える。
【発明の効果】
【００１１】
この発明では、ユーザ秘密鍵ｓｋではなく、復号トークンｄｔｋを用いてユーザ秘密鍵ｓｋから生成された復号鍵ｄｋにより、情報ｘと情報ｙとについての演算結果を生成する。ユーザ秘密鍵ｓｋを持っていても演算を行うことができないため、ユーザ秘密鍵ｓｋを持ったユーザに情報が漏えいすることを防止できる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る秘匿分析システム１０の構成図。
【図２】実施の形態１に係るマスター鍵生成装置２０の構成図。
【図３】実施の形態１に係るユーザ秘密鍵生成装置３０の構成図。
【図４】実施の形態１に係るトークン生成装置４０の構成図。
【図５】実施の形態１に係る暗号化装置５０の構成図。
【図６】実施の形態１に係る復号鍵生成装置６０の構成図。
【図７】実施の形態１に係る秘匿分析装置７０の構成図。
【図８】実施の形態１に係るマスター鍵生成装置２０の動作を示すフローチャート。
【図９】実施の形態１に係るユーザ秘密鍵生成装置３０の動作を示すフローチャート。
【図１０】実施の形態１に係るトークン生成装置４０の動作を示すフローチャート。
【図１１】実施の形態１に係る暗号化装置５０の動作を示すフローチャート。
【図１２】実施の形態１に係る復号鍵生成装置６０の動作を示すフローチャート。
【図１３】実施の形態１に係る秘匿分析装置７０の動作を示すフローチャート。
【図１４】変形例２に係るマスター鍵生成装置２０の構成図。
【図１５】変形例２に係るユーザ秘密鍵生成装置３０の構成図。
【図１６】変形例２に係るトークン生成装置４０の構成図。
【図１７】変形例２に係る暗号化装置５０の構成図。
【図１８】変形例２に係る復号鍵生成装置６０の構成図。
【図１９】変形例２に係る秘匿分析装置７０の構成図。
【発明を実施するための形態】
【００１３】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を参照して、実施の形態１に係る秘匿分析システム１０の構成を説明する。
秘匿分析システム１０は、マスター鍵生成装置２０と、１台以上のユーザ秘密鍵生成装置３０と、１台以上のトークン生成装置４０と、１台以上の暗号化装置５０と、１台以上の復号鍵生成装置６０と、１台以上の秘匿分析装置７０とを備える。
マスター鍵生成装置２０と、ユーザ秘密鍵生成装置３０と、トークン生成装置４０と、暗号化装置５０と、復号鍵生成装置６０と、秘匿分析装置７０とは、伝送路９０を介して接続される。伝送路９０は、具体例としては、インターネット又はＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。
【００１４】
図２を参照して、実施の形態１に係るマスター鍵生成装置２０の構成を説明する。
マスター鍵生成装置２０は、プロセッサ２１と、メモリ２２と、ストレージ２３と、通信インタフェース２４とのハードウェアを備える。プロセッサ２１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１５】
マスター鍵生成装置２０は、機能構成要素として、パラメータ取得部２１１と、マスター鍵生成部２１２と、送信部２１３とを備える。マスター鍵生成装置２０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ２３には、マスター鍵生成装置２０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ２１によりメモリ２２に読み込まれ、プロセッサ２１によって実行される。これにより、マスター鍵生成装置２０の各機能構成要素の機能が実現される。
また、ストレージ２３は、マスター鍵記憶部２３１の機能を実現する。
【００１６】
図３を参照して、実施の形態１に係るユーザ秘密鍵生成装置３０の構成を説明する。
ユーザ秘密鍵生成装置３０は、プロセッサ３１と、メモリ３２と、ストレージ３３と、通信インタフェース３４とのハードウェアを備える。プロセッサ３１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１７】
ユーザ秘密鍵生成装置３０は、機能構成要素として、マスター鍵取得部３１１と、ベクトル取得部３１２と、ユーザ秘密鍵生成部３１３と、送信部３１４とを備える。ユーザ秘密鍵生成装置３０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ３３には、ユーザ秘密鍵生成装置３０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ３１によりメモリ３２に読み込まれ、プロセッサ３１によって実行される。これにより、ユーザ秘密鍵生成装置３０の各機能構成要素の機能が実現される。
また、ストレージ３３は、マスター鍵記憶部３３１の機能を実現する。
【００１８】
図４を参照して、実施の形態１に係るトークン生成装置４０の構成を説明する。
トークン生成装置４０は、プロセッサ４１と、メモリ４２と、ストレージ４３と、通信インタフェース４４とのハードウェアを備える。プロセッサ４１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１９】
トークン生成装置４０は、機能構成要素として、ベクトル選択部４１１と、トークン生成部４１２と、送信部４１３とを備える。トークン生成装置４０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ４３には、トークン生成装置４０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ４１によりメモリ４２に読み込まれ、プロセッサ４１によって実行される。これにより、トークン生成装置４０の各機能構成要素の機能が実現される。
【００２０】
図５を参照して、実施の形態１に係る暗号化装置５０の構成を説明する。
暗号化装置５０は、プロセッサ５１と、メモリ５２と、ストレージ５３と、通信インタフェース５４とのハードウェアを備える。プロセッサ５１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００２１】
暗号化装置５０は、機能構成要素として、マスター鍵取得部５１１と、トークン取得部５１２と、ベクトル取得部５１３と、暗号化部５１４と、送信部５１５とを備える。暗号化装置５０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ５３には、暗号化装置５０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ５１によりメモリ５２に読み込まれ、プロセッサ５１によって実行される。これにより、暗号化装置５０の各機能構成要素の機能が実現される。
また、ストレージ５３は、マスター鍵記憶部５３１と、トークン記憶部５３２との機能を実現する。
【００２２】
図６を参照して、実施の形態１に係る復号鍵生成装置６０の構成を説明する。
復号鍵生成装置６０は、プロセッサ６１と、メモリ６２と、ストレージ６３と、通信インタフェース６４とのハードウェアを備える。プロセッサ６１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００２３】
復号鍵生成装置６０は、機能構成要素として、ユーザ秘密鍵取得部６１１と、トークン取得部６１２と、復号鍵生成部６１３と、送信部６１４とを備える。復号鍵生成装置６０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ６３には、復号鍵生成装置６０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ６１によりメモリ６２に読み込まれ、プロセッサ６１によって実行される。これにより、復号鍵生成装置６０の各機能構成要素の機能が実現される。
ストレージ６３は、ユーザ秘密鍵記憶部６３１と、トークン記憶部６３２との機能を実現する。
【００２４】
図７を参照して、実施の形態１に係る秘匿分析装置７０の構成を説明する。
秘匿分析装置７０は、プロセッサ７１と、メモリ７２と、ストレージ７３と、通信インタフェース７４とのハードウェアを備える。プロセッサ７１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００２５】
秘匿分析装置７０は、機能構成要素として、暗号文取得部７１１と、復号鍵取得部７１２と、復号部７１３と、送信部７１４とを備える。秘匿分析装置７０の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ７３には、秘匿分析装置７０の各機能構成要素の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ７１によりメモリ７２に読み込まれ、プロセッサ７１によって実行される。これにより、秘匿分析装置７０の各機能構成要素の機能が実現される。
ストレージ７３は、暗号文記憶部７３１と、復号鍵記憶部７３２との機能を実現する。
【００２６】
プロセッサ２１，３１，４１，５１，６１，７１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ２１，３１，４１，５１，６１，７１は、具体例としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００２７】
メモリ２２，３２，４２，５２，６２，７２は、データを一時的に記憶する記憶装置である。メモリ２２，３２，４２，５２，６２，７２は、具体例としては、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００２８】
ストレージ２３，３３，４３，５３，６３，７３は、データを保管する記憶装置である。ストレージ２３，３３，４３，５３，６３，７３は、具体例としては、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。また、ストレージ２３，３３，４３，５３，６３，７３は、ＳＤ（登録商標，Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（ＣｏｍｐａｃｔＦｌａｓｈ，登録商標）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）といった可搬記憶媒体であってもよい。
【００２９】
通信インタフェース２４，３４，４４，５４，６４，７４は、外部の装置と通信するためのインタフェースである。通信インタフェース２４，３４，４４，５４，６４，７４は、具体例としては、Ｅｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＨＤＭＩ（登録商標，Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）のポートである。
【００３０】
図２では、プロセッサ２１は、１つだけ示されている。しかし、マスター鍵生成装置２０は、プロセッサ２１を代替する複数のプロセッサを備えていてもよい。同様に、ユーザ秘密鍵生成装置３０は、プロセッサ３１を代替する複数のプロセッサを備えていてもよい。トークン生成装置４０は、プロセッサ４１を代替する複数のプロセッサを備えていてもよい。暗号化装置５０は、プロセッサ５１を代替する複数のプロセッサを備えていてもよい。復号鍵生成装置６０は、プロセッサ６１を代替する複数のプロセッサを備えていてもよい。秘匿分析装置７０は、プロセッサ７１を代替する複数のプロセッサを備えていてもよい。
これら複数のプロセッサは、各機能構成要素の機能を実現するプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ２１，３１，４１，５１，６１，７１と同じように、演算処理を行うＩＣである。
【００３１】
＊＊＊動作の説明＊＊＊
図８から図１３を参照して、実施の形態１に係る秘匿分析システム１０の動作を説明する。
【００３２】
秘匿分析システム１０は、既存の単一入力可能な内積暗号を用いる。既存の単一入力可能な内積暗号とは、具体例としては、非特許文献１に記載された方式である。
単一入力可能な内積暗号は、Ｓｅｔｕｐアルゴリズムと、ＫｅｙＧｅｎアルゴリズムと、Ｅｎｃアルゴリズムと、Ｄｅｃアルゴリズムとを有する。
Ｓｅｔｕｐアルゴリズムは、マスター鍵生成アルゴリズムである。Ｓｅｔｕｐアルゴリズムは、鍵のビット長λを入力として、マスター秘密鍵ｍｓｋと、マスター公開鍵ｍｐｋとを生成する。
ＫｅｙＧｅｎアルゴリズムは、ユーザ秘密鍵生成アルゴリズムである。ＫｅｙＧｅｎアルゴリズムは、ｍ次元のベクトルｙと、マスター鍵ｍｋとを入力として、秘密鍵ｓｋを生成する。ｍは１以上の整数である。
Ｅｎｃアルゴリズムは、暗号化アルゴリズムである。Ｅｎｃアルゴリズムは、ｍ次元のベクトルｘと、マスター鍵ｍｋとを入力として、暗号文ｃｔを生成する。
Ｄｅｃアルゴリズムは、復号アルゴリズムである。Ｄｅｃアルゴリズムは、暗号文ｃｔと、秘密鍵ｓｋとを入力として、ベクトルｘとベクトルｙとの内積＜ｘ，ｙ＞を生成する。
【００３３】
図８を参照して、実施の形態１に係るマスター鍵生成装置２０の動作を説明する。
実施の形態１に係るマスター鍵生成装置２０の動作は、実施の形態１に係るマスター鍵生成方法に相当する。また、実施の形態１に係るマスター鍵生成装置２０の動作は、実施の形態１に係るマスター鍵生成プログラムの処理に相当する。
【００３４】
（ステップＳ１１：パラメータ取得処理）
パラメータ取得部２１１は、鍵のビット長λを取得する。
具体的には、パラメータ取得部２１１は、通信インタフェース２４を介して接続された入力装置等によって入力された鍵のビット長λを取得する。パラメータ取得部２１１は、鍵のビット長λをメモリ２２に書き込む。
なお、鍵のビット長λ以外に必要なパラメータが存在する場合には、パラメータ取得部２１１は、そのパラメータも取得する。
【００３５】
（ステップＳ１２：マスター鍵生成処理）
マスター鍵生成部２１２は、マスター鍵ｍｋを生成する。
具体的には、マスター鍵生成部２１２は、鍵のビット長λをメモリ２２から読み出す。マスター鍵生成部２１２は、ｉ＝１，．．．，ｎの各整数ｉについて、鍵のビット長λを入力として、Ｓｅｔｕｐアルゴリズムを実行して、マスター秘密鍵ｍｓｋｉとマスター公開鍵ｍｐｋｉとのペアを生成する。ｎは１以上の整数である。マスター鍵生成部２１２は、ｉ＝１，．．．，ｎの各整数ｉについてのマスター秘密鍵ｍｓｋｉとマスター公開鍵ｍｐｋｉとの集合をマスター鍵ｍｋとして扱う。つまり、ｍｋ：＝（ｍｓｋ１，ｍｓｋ２，．．．，ｍｓｋｎ，ｍｐｋ１，ｍｐｋ２，．．．，ｍｐｋｎ）である。マスター鍵生成部２１２は、マスター鍵ｍｋをメモリ２２に書き込む。
なお、Ｓｅｔｕｐアルゴリズムを実行するために乱数の生成が必要な場合には、マスター鍵生成部２１２は、乱数生成機能を備えてもよい。
【００３６】
（ステップＳ１３：送信処理）
送信部２１３は、マスター鍵ｍｋを、ユーザ秘密鍵生成装置３０と暗号化装置５０とに送信する。
具体的には、送信部２１３は、マスター鍵ｍｋをメモリ２２から読み出す。送信部２１３は、通信インタフェース２４を介して、マスター鍵ｍｋをユーザ秘密鍵生成装置３０と暗号化装置５０とに送信する。
すると、ユーザ秘密鍵生成装置３０のマスター鍵取得部３１１は、通信インタフェース３４を介して、マスター鍵ｍｋを受信する。マスター鍵取得部３１１は、マスター鍵ｍｋをマスター鍵取得部３１１に書き込む。また、暗号化装置５０のマスター鍵取得部５１１は、通信インタフェース５４を介して、マスター鍵ｍｋを受信する。マスター鍵取得部５１１は、マスター鍵ｍｋをマスター鍵記憶部５３１に書き込む。
なお、送信部２１３は、マスター鍵ｍｋのうち、マスター秘密鍵ｍｓｋ１，ｍｓｋ２，．．．，ｍｓｋｎだけをユーザ秘密鍵生成装置３０に送信し、マスター鍵ｍｋのうち、マスター公開鍵ｍｐｋ１，ｍｐｋ２，．．．，ｍｐｋｎだけを暗号化装置５０に送信してもよい。
また、送信部２１３は、マスター鍵ｍｋをマスター鍵記憶部２３１に書き込む。
【００３７】
図９を参照して、実施の形態１に係るユーザ秘密鍵生成装置３０の動作を説明する。
実施の形態１に係るユーザ秘密鍵生成装置３０の動作は、実施の形態１に係るユーザ秘密鍵生成方法に相当する。また、実施の形態１に係るユーザ秘密鍵生成装置３０の動作は、実施の形態１に係るユーザ秘密鍵生成プログラムの処理に相当する。
【００３８】
（ステップＳ２１：ベクトル取得処理）
ベクトル取得部３１２は、ｉ＝１，．．．，ｎの各整数ｉについてのｍ次元のベクトルｙｉを取得する。
具体的には、ベクトル取得部３１２は、通信インタフェース２４を介して接続された入力装置等によって入力されたベクトルｙｉを取得する。ベクトル取得部３１２は、ベクトルｙｉをメモリ３２に書き込む。
【００３９】
（ステップＳ２２：ユーザ秘密鍵生成処理）
ユーザ秘密鍵生成部３１３は、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉを生成する。
具体的には、ユーザ秘密鍵生成部３１３は、ｉ＝１，．．．，ｎの各整数ｉについてのベクトルｙｉをメモリ３２から読み出す。また、ユーザ秘密鍵生成部３１３は、マスター鍵ｍｋをマスター鍵記憶部３３１から読み出す。ユーザ秘密鍵生成部３１３は、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｙｉと、マスター秘密鍵ｍｓｋｉとを入力として、ＫｅｙＧｅｎアルゴリズムを実行して、ユーザ秘密鍵ｓｋｉを生成する。ユーザ秘密鍵ｓｋｉには、ベクトルｙｉが設定された鍵ｋｅｙｉとベクトルｙｉとが含まれている。ユーザ秘密鍵生成部３１３は、ユーザ秘密鍵ｓｋｉをメモリ３２に書き込む。
なお、ＫｅｙＧｅｎアルゴリズムを実行するために乱数の生成が必要な場合には、ユーザ秘密鍵生成部３１３は、乱数生成機能を備えてもよい。
【００４０】
（ステップＳ２３：送信処理）
送信部３１４は、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉを復号鍵生成装置６０に送信する。
具体的には、送信部３１４は、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉをメモリ３２から読み出す。送信部３１４は、通信インタフェース３４を介して、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉを復号鍵生成装置６０に送信する。
すると、復号鍵生成装置６０のユーザ秘密鍵取得部６１１は、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉを受信する。ユーザ秘密鍵取得部６１１は、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉをユーザ秘密鍵記憶部６３１に書き込む。
【００４１】
ここでは、１つのユーザ秘密鍵生成装置３０によってｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉが生成された。しかし、複数のユーザ秘密鍵生成装置３０によってｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉが生成されてもよい。例えば、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵生成装置３０ｉによってユーザ秘密鍵ｓｋｉが生成されてもよい。
【００４２】
図１０を参照して、実施の形態１に係るトークン生成装置４０の動作を説明する。
実施の形態１に係るトークン生成装置４０の動作は、実施の形態１に係るトークン生成方法に相当する。また、実施の形態１に係るトークン生成装置４０の動作は、実施の形態１に係るトークン生成プログラムの処理に相当する。
【００４３】
（ステップＳ３１：ベクトル選択処理）
ベクトル選択部４１１は、ｉ＝１，．．．，ｎの各整数ｉについてのｍ次元のベクトルｕｉを選択する。
具体的には、ベクトル選択部４１１は、ｉ＝１，．．．，ｎの各整数ｉについてのｍ次元のベクトルｕｉを乱数発生機能等を用いてランダムに選択する。ベクトル選択部４１１は、ベクトルｕｉをメモリ４２に書き込む。
【００４４】
（ステップＳ３２：トークン生成処理）
トークン生成部４１２は、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉと、復号トークンｄｔｋとを生成する。復号トークンｄｔｋは、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉに対応する。
具体的には、トークン生成部４１２は、ｉ＝１，．．．，ｎの各整数ｉについてのベクトルｕｉをメモリ４２から読み出す。トークン生成部４１２は、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｕｉを暗号化トークンｅｔｋｉとして扱う。つまり、ｅｔｋｉ：＝ｕｉである。また、トークン生成部４１２は、ｉ＝１，．．．，ｎの各整数ｉについてのベクトルｕｉの集合を復号トークンｄｔｋとして扱う。つまり、ｄｔｋ：＝（ｕ１，ｕ２，．．．，ｕｎ）である。トークン生成部４１２は、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉと、復号トークンｄｔｋとをメモリ４２に書き込む。
【００４５】
（ステップＳ３３：送信処理）
送信部４１３は、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉを暗号化装置５０に送信する。また、送信部４１３は、復号トークンｄｔｋを復号鍵生成装置６０に送信する。
具体的には、送信部４１３は、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉと、復号トークンｄｔｋとをメモリ４２から読み出す。送信部４１３は、通信インタフェース４４を介して、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉを暗号化装置５０に送信する。また、送信部４１３は、通信インタフェース４４を介して、復号トークンｄｔｋを復号鍵生成装置６０に送信する。
すると、暗号化装置５０のトークン取得部５１２は、通信インタフェース５４を介して、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉを受信する。トークン取得部５１２は、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉをトークン記憶部５３２に書き込む。また、復号鍵生成装置６０のトークン取得部６１２は、通信インタフェース６４を介して、復号トークンｄｔｋを受信する。トークン取得部６１２は、復号トークンｄｔｋをトークン記憶部６３２に書き込む。
【００４６】
ここでは、１つのトークン生成装置４０によってｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉが生成された。しかし、複数のトークン生成装置４０によってｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉが生成されてもよい。例えば、ｉ＝１，．．．，ｎの各整数ｉについてのトークン生成装置４０ｉによって暗号化トークンｅｔｋｉが生成されてもよい。この場合、各トークン生成装置４０からあるトークン生成装置４０にｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉが送信され、あるトークン生成装置４０によって復号トークンｄｔｋが生成される。
【００４７】
図１１を参照して、実施の形態１に係る暗号化装置５０の動作を説明する。
実施の形態１に係る暗号化装置５０の動作は、実施の形態１に係る暗号化方法に相当する。また、実施の形態１に係る暗号化装置５０の動作は、実施の形態１に係る暗号化プログラムの処理に相当する。
【００４８】
（ステップＳ４１：ベクトル取得処理）
ベクトル取得部５１３は、ｉ＝１，．．．，ｎの各整数ｉについてのｍ次元のベクトルｘｉを取得する。
具体的には、ベクトル取得部５１３は、通信インタフェース５４を介して接続された入力装置等によって入力されたベクトルｘｉを取得する。ベクトル取得部５１３は、ベクトルｘｉをメモリ３２に書き込む。
【００４９】
（ステップＳ４２：暗号化処理）
暗号化部５１４は、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｘｉを設定した暗号文ｃｔｉを生成する。
具体的には、暗号化部５１４は、マスター鍵ｍｋをマスター鍵記憶部５３１から読み出す。また、暗号化部５１４は、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉをトークン記憶部５３２から読み出す。また、暗号化部５１４は、ｉ＝１，．．．，ｎの各整数ｉについてのベクトルｘｉをメモリ５２から読み出す。
暗号化部５１４は、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｘｉと暗号化トークンｅｔｋｉとの和をメッセージｍｉとして生成する。つまり、ｍｉ：＝ｘｉ＋ｅｔｋｉ＝ｘｉ＋ｕｉである。暗号化部５１４は、ｉ＝１，．．．，ｎの各整数ｉについて、メッセージｍｉと、マスター公開鍵ｍｐｋｉとを入力として、Ｅｎｃアルゴリズムを実行して、暗号文ｃｔｉを生成する。暗号化部５１４は、暗号文ｃｔｉをメモリ５２に書き込む。
なお、Ｅｎｃアルゴリズムを実行するために乱数の生成が必要な場合には、暗号化部５１４は、乱数生成機能を備えてもよい。
【００５０】
（ステップＳ４３：送信処理）
送信部５１５は、ｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉを秘匿分析装置７０に送信する。
具体的には、送信部５１５は、ｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉをメモリ５２から読み出す。送信部５１５は、通信インタフェース５４を介して、ｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉを秘匿分析装置７０に送信する。
すると、秘匿分析装置７０の暗号文取得部７１１は、通信インタフェース７４を介して、ｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉを受信する。暗号文取得部７１１は、ｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉを暗号文記憶部７３１に書き込む。
【００５１】
ここでは、１つの暗号化装置５０によってｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉが生成された。しかし、複数の暗号化装置５０によってｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉが生成されてもよい。例えば、ｉ＝１，．．．，ｎの各整数ｉについての暗号化装置５０ｉによって暗号文ｃｔｉが生成されてもよい。この場合には、図１０のステップＳ３３では、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉは、暗号化装置５０ｉに送信される。
【００５２】
図１２を参照して、実施の形態１に係る復号鍵生成装置６０の動作を説明する。
実施の形態１に係る復号鍵生成装置６０の動作は、実施の形態１に係る復号鍵生成方法に相当する。また、実施の形態１に係る復号鍵生成装置６０の動作は、実施の形態１に係る復号鍵生成プログラムの処理に相当する。
【００５３】
（ステップＳ５１：復号鍵生成処理）
復号鍵生成部６１３は、復号鍵ｄｋを生成する。
具体的には、復号鍵生成部６１３は、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉをユーザ秘密鍵記憶部６３１から読み出す。また、復号鍵生成部６１３は、復号トークンｄｔｋをトークン記憶部６３２から読み出す。
復号鍵生成部６１３は、ｉ＝１，．．．，ｎの各整数ｉについてのベクトルｙｉとベクトルｕｉとの内積の和を鍵要素ｚとして計算する。つまり、ｚ：＝Σｉ＝１ｎ＜ｘｉ，ｕｉ＞である。ここで、ベクトルｙｉは、ユーザ秘密鍵ｓｋｉに含まれている。また、ベクトルｕｉは、復号トークンｄｔｋに含まれている。
復号鍵生成部６１３は、ｉ＝１，．．．，ｎの各整数ｉについてのユーザ秘密鍵ｓｋｉと、鍵要素ｚとの集合を復号鍵ｄｋとして扱う。復号鍵生成部６１３は、復号鍵ｄｋをメモリ６２に書き込む。
【００５４】
（ステップＳ５２：送信処理）
送信部６１４は、復号鍵ｄｋを秘匿分析装置７０に送信する。
具体的には、送信部６１４は、復号鍵ｄｋをメモリ６２から読み出す。送信部６１４は、通信インタフェース６４を介して、復号鍵ｄｋを秘匿分析装置７０に送信する。
すると、秘匿分析装置７０の復号鍵取得部７１２は、通信インタフェース７４を介して、復号鍵ｄｋを受信する。復号鍵取得部７１２は、復号鍵ｄｋを復号鍵記憶部７３２に書き込む。
【００５５】
図１３を参照して、実施の形態１に係る秘匿分析装置７０の動作を説明する。
実施の形態１に係る秘匿分析装置７０の動作は、実施の形態１に係る秘匿分析方法に相当する。また、実施の形態１に係る秘匿分析装置７０の動作は、実施の形態１に係る秘匿分析プログラムの処理に相当する。
【００５６】
（ステップＳ６１：復号処理）
復号部７１３は、復号鍵ｄｋにより、ｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉを復号して、ｉ＝１，．．．，ｎの各整数ｉについてのベクトルｘｉとベクトルｙｉとについての演算結果Ｄを生成する。ここで、暗号文ｃｔｉは、暗号化トークンｅｔｋｉを用いて情報ｘｉ（ベクトルｘｉ）が暗号化され生成されている。また、復号鍵ｄｋは、ｉ＝１，．．．，ｎの各整数ｉについての暗号化トークンｅｔｋｉに対応する復号トークンｄｔｋを用いて情報ｙｉ（ベクトルｙｉ）が設定されたユーザ秘密鍵ｓｋｉから生成されている。
具体的には、復号部７１３は、ｉ＝１，．．．，ｎの各整数ｉについての暗号文ｃｔｉを暗号文記憶部７３１から読み出す。また、復号部７１３は、復号鍵ｄｋを復号鍵記憶部７３２から読み出す。
復号部７１３は、ｉ＝１，．．．，ｎの各整数ｉについて、暗号文ｃｔｉと、ユーザ秘密鍵ｓｋｉとを入力として、Ｄｅｃアルゴリズムを実行して、復号データＤｉを生成する。復号部７１３は、ｉ＝１，．．．，ｎの各整数ｉについての復号データＤｉの和から鍵要素ｚを減じて演算結果Ｄを生成する。つまり、Ｄ：＝（Σｉ＝１ｎＤｉ）−ｚである。復号部７１３は、演算結果Ｄをメモリ７２に書き込む。
ここで、Ｄｉ＝＜（ｘｉ＋ｕｉ），ｙｉ＞である。そのため、Σｉ＝１ｎＤｉ＝Σｉ＝１ｎ＜（ｘｉ＋ｕｉ），ｙｉ＞である。また、ｚ：＝Σｉ＝１ｎ＜ｘｉ，ｕｉ＞である。したがって、Ｄ：＝（Σｉ＝１ｎＤｉ）−ｚ＝Σｉ＝１ｎ＜（ｘｉ＋ｕｉ），ｙｉ＞−Σｉ＝１ｎ＜ｘｉ，ｕｉ＞＝Σｉ＝１ｎ＜ｘｉ，ｙｉ＞である。つまり、演算結果Ｄは、ｉ＝１，．．．，ｎの各整数ｉについてのベクトルｘｉとベクトルｙｉとの内積の和である。
【００５７】
ここで、演算結果Ｄを得るには、ユーザ秘密鍵ｓｋではなく、復号鍵ｄｋが必要である。そのため、ユーザ秘密鍵ｓｋがユーザに配布されている場合であっても、ユーザがユーザ秘密鍵ｓｋを用いて演算結果Ｄを計算することはできない。
演算結果Ｄを得るためには、ユーザ秘密鍵ｓｋを復号鍵生成装置６０に与えるとともに、演算対象の暗号文ｃｔｉの生成に用いられた暗号化トークンｅｔｋｉに対応する復号トークンｄｔｋを復号鍵生成装置６０に与える必要がある。したがって、ユーザ秘密鍵ｓｋがユーザに配布されている場合であっても、ユーザが自由に演算結果Ｄを得ることはできない。
【００５８】
（ステップＳ６２：送信処理）
送信部７１４は、演算結果Ｄを表示装置といった出力装置に送信する。
具体的には、送信部７１４は、演算結果Ｄをメモリ７２から読み出す。送信部７１４は、通信インタフェース７４を介して、演算結果Ｄを表示装置といった出力装置に送信する。
【００５９】
＊＊＊実施の形態１の効果＊＊＊
以上のように、実施の形態１に係る秘匿分析システム１０は、暗号文ｃｔに設定されたベクトルｘとユーザ秘密鍵ｓｋに設定されたベクトルｙとの内積を、暗号文ｃｔを復号することなく計算することができる。そして、実施の形態１に係る秘匿分析システム１０は、ベクトルｘとベクトルｙとの内積を計算するためには、ユーザ秘密鍵ｓｋではなく、復号トークンｄｔｋを用いてユーザ秘密鍵ｓｋから生成された復号鍵ｄｋが必要である。そのため、ユーザ秘密鍵ｓｋを持ったユーザに、ベクトルｘとベクトルｙとの内積と、ベクトルｘといった情報が漏えいすることを防止できる。
【００６０】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、暗号化トークンｅｔｋを用いて暗号文ｃｔを生成し、暗号化トークンに対応する復号トークンｄｔｋを用いてユーザ秘密鍵ｓｋから復号鍵ｄｋを生成するという技術を内積暗号に適用した。これにより、情報の漏えいを防止しつつ、暗号文ｃｔに設定されたベクトルｘとユーザ秘密鍵ｓｋに設定されたベクトルｙとの内積である演算結果Ｄを計算することを可能とした。
内積暗号ではなく、暗号化したまま他の演算を行う暗号技術に、上記技術を適用することにより、情報の漏えいを防止しつつ、内積ではない他の演算を行った演算結果を計算することも可能である。また、この場合には、暗号文及びユーザ秘密鍵に設定されるのは、ベクトルｘ及びベクトルｙではなく、何らかの形式の情報ｘ及び情報ｙである可能性がある。
【００６１】
＜変形例２＞
実施の形態１では、各機能構成要素がソフトウェアで実現された。しかし、変形例２として、各機能構成要素はハードウェアで実現されてもよい。この変形例２について、実施の形態１と異なる点を説明する。
【００６２】
図１４を参照して、変形例２に係るマスター鍵生成装置２０の構成を説明する。
機能がハードウェアで実現される場合、マスター鍵生成装置２０は、プロセッサ２１とメモリ２２とストレージ２３とに代えて、電子回路２５を備える。電子回路２５は、マスター鍵生成装置２０の機能構成要素と、メモリ２２とストレージ２３との機能とを実現する専用の回路である。
【００６３】
図１５を参照して、変形例２に係るユーザ秘密鍵生成装置３０の構成を説明する。
機能がハードウェアで実現される場合、ユーザ秘密鍵生成装置３０は、プロセッサ３１とメモリ３２とストレージ３３とに代えて、電子回路３５を備える。電子回路３５は、ユーザ秘密鍵生成装置３０の機能構成要素と、メモリ３２とストレージ３３との機能とを実現する専用の回路である。
【００６４】
図１６を参照して、変形例２に係るトークン生成装置４０の構成を説明する。
機能がハードウェアで実現される場合、トークン生成装置４０は、プロセッサ４１とメモリ４２とストレージ４３とに代えて、電子回路４５を備える。電子回路４５は、トークン生成装置４０の機能構成要素と、メモリ４２とストレージ４３との機能とを実現する専用の回路である。
【００６５】
図１７を参照して、変形例２に係る暗号化装置５０の構成を説明する。
機能がハードウェアで実現される場合、暗号化装置５０は、プロセッサ５１とメモリ５２とストレージ５３とに代えて、電子回路５５を備える。電子回路５５は、暗号化装置５０の機能構成要素と、メモリ５２とストレージ５３との機能とを実現する専用の回路である。
【００６６】
図１８を参照して、変形例２に係る復号鍵生成装置６０の構成を説明する。
機能がハードウェアで実現される場合、復号鍵生成装置６０は、プロセッサ６１とメモリ６２とストレージ６３とに代えて、電子回路６５を備える。電子回路６５は、復号鍵生成装置６０の機能構成要素と、メモリ６２とストレージ６３との機能とを実現する専用の回路である。
【００６７】
図１９を参照して、変形例２に係る秘匿分析装置７０の構成を説明する。
機能がハードウェアで実現される場合、秘匿分析装置７０は、プロセッサ７１とメモリ７２とストレージ７３とに代えて、電子回路７５を備える。電子回路７５は、秘匿分析装置７０の機能構成要素と、メモリ７２とストレージ７３との機能とを実現する専用の回路である。
【００６８】
電子回路２５，３５，４５，５５，６５，７５は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
マスター鍵生成装置２０の各機能構成要素の機能を１つの電子回路２５で実現してもよいし、各機能構成要素の機能を複数の電子回路２５に分散させて実現してもよい。同様に、ユーザ秘密鍵生成装置３０とトークン生成装置４０と暗号化装置５０と復号鍵生成装置６０と秘匿分析装置７０とのそれぞれについて、各機能構成要素の機能を１つの電子回路３５，４５，５５，６５，７５で実現してもよいし、各機能構成要素の機能を複数の電子回路３５，４５，５５，６５，７５に分散させて実現してもよい。
【００６９】
＜変形例３＞
変形例３として、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。つまり、各機能構成要素のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【００７０】
プロセッサ２１，３１，４１，５１，６１，７１とメモリ２２，３２，４２，５２，６２，７２とストレージ２３，３３，４３，５３，６３，７３と電子回路２５，３５，４５，５５，６５，７５とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
【符号の説明】
【００７１】
１０  秘匿分析システム、２０  マスター鍵生成装置、２１  プロセッサ、２２  メモリ、２３  ストレージ、２４  通信インタフェース、２５  電子回路、２１１  パラメータ取得部、２１２  マスター鍵生成部、２１３  送信部、２３１  マスター鍵記憶部、３０  ユーザ秘密鍵生成装置、３１  プロセッサ、３２  メモリ、３３  ストレージ、３４  通信インタフェース、３５  電子回路、３１１  マスター鍵取得部、３１２  ベクトル取得部、３１３  ユーザ秘密鍵生成部、３１４  送信部、３３１  マスター鍵記憶部、４０  トークン生成装置、４１  プロセッサ、４２  メモリ、４３  ストレージ、４４  通信インタフェース、４５  電子回路、４１１  ベクトル選択部、４１２  トークン生成部、４１３  送信部、５０  暗号化装置、５１  プロセッサ、５２  メモリ、５３  ストレージ、５４  通信インタフェース、５５  電子回路、５１１  マスター鍵取得部、５１２  トークン取得部、５１３  ベクトル取得部、５１４  暗号化部、５１５  送信部、５３１  マスター鍵記憶部、５３２  トークン記憶部、６０  復号鍵生成装置、６１  プロセッサ、６２  メモリ、６３  ストレージ、６４  通信インタフェース、６５  電子回路、６１１  ユーザ秘密鍵取得部、６１２  トークン取得部、６１３  復号鍵生成部、６１４  送信部、６３１  ユーザ秘密鍵記憶部、６３２  トークン記憶部、７０  秘匿分析装置、７１  プロセッサ、７２  メモリ、７３  ストレージ、７４  通信インタフェース、７５  電子回路、７１１  暗号文取得部、７１２  復号鍵取得部、７１３  復号部、７１４  送信部、７３１  暗号文記憶部、７３２  復号鍵記憶部。
【図１】
2019142260.tif 000003
【図２】
2019142260.tif 000004
【図３】
2019142260.tif 000005
【図４】
2019142260.tif 000006
【図５】
2019142260.tif 000007
【図６】
2019142260.tif 000008
【図７】
2019142260.tif 000009
【図８】
2019142260.tif 000010
【図９】
2019142260.tif 000011
【図１０】
2019142260.tif 000012
【図１１】
2019142260.tif 000013
【図１２】
2019142260.tif 000014
【図１３】
2019142260.tif 000015
【図１４】
2019142260.tif 000016
【図１５】
2019142260.tif 000017
【図１６】
2019142260.tif 000018
【図１７】
2019142260.tif 000019
【図１８】
2019142260.tif 000020
【図１９】
2019142260.tif 000021
【手続補正書】
【提出日】平成30年10月31日(2018.10.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１以上の整数ｎに関して、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｕｉである暗号化トークンｅｔｋｉと情報ｘｉとの和ｍｉが暗号化された暗号文ｃｔｉを取得する暗号文取得部と、
前記各整数ｉについてのベクトルｕｉを含む復号トークンｄｔｋと、前記各整数ｉについての情報ｙｉが設定されたユーザ秘密鍵ｓｋｉとを用いて生成された復号鍵ｄｋであって、前記各整数ｉについて前記ベクトルｕｉと前記情報ｙｉとの内積の和ｚを含む復号鍵ｄｋを取得する復号鍵取得部と、
暗号文に設定された情報と、ユーザ秘密鍵に設定された情報との内積を計算可能な暗号方式における復号アルゴリズムを用いて、前記各整数ｉについての暗号文ｃｔｉを復号して復号データＤｉを生成し、前記各整数ｉについての復号データＤｉの和から、前記復号鍵ｄｋに含まれる前記和ｚを減じて、前記各整数ｉについての前記情報ｘｉと前記情報ｙｉとの内積の和を計算する復号部と
を備える秘匿分析装置。
【請求項２】
１以上の整数ｎに関して、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｕｉである暗号化トークンｅｔｋｉと情報ｘｉとの和ｍｉを暗号化した暗号文ｃｔｉを生成する暗号化装置と、
前記各整数ｉについてのベクトルｕｉを含む復号トークンｄｔｋと、前記各整数ｉについての情報ｙｉが設定されたユーザ秘密鍵ｓｋｉとを用いて、前記各整数ｉについて前記ベクトルｕｉと前記情報ｙｉとの内積の和ｚを含む復号鍵ｄｋを生成する復号鍵生成装置と、
暗号文に設定された情報と、ユーザ秘密鍵に設定された情報との内積を計算可能な暗号方式における復号アルゴリズムを用いて、前記暗号化装置によって生成された前記各整数ｉについての暗号文ｃｔｉを復号して復号データＤｉを生成し、前記各整数ｉについての復号データＤｉの和から、前記復号鍵生成装置によって生成された前記復号鍵ｄｋに含まれる前記和ｚを減じて、前記各整数ｉについての前記情報ｘｉと前記情報ｙｉとの内積の和を計算する秘匿分析装置と
を備える秘匿分析システム。
【請求項３】
秘匿分析装置における暗号文取得部が、１以上の整数ｎに関して、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｕｉである暗号化トークンｅｔｋｉと情報ｘｉとの和ｍｉが暗号化された暗号文ｃｔｉを取得し、
前記秘匿分析装置における復号鍵取得部が、前記各整数ｉについてのベクトルｕｉを含む復号トークンｄｔｋと、前記各整数ｉについての情報ｙｉが設定されたユーザ秘密鍵ｓｋｉとを用いて生成された復号鍵ｄｋであって、前記各整数ｉについて前記ベクトルｕｉと前記情報ｙｉとの内積の和ｚを含む復号鍵ｄｋを取得し、
前記秘匿分析装置における復号部が、暗号文に設定された情報と、ユーザ秘密鍵に設定された情報との内積を計算可能な暗号方式における復号アルゴリズムを用いて、前記各整数ｉについての暗号文ｃｔｉを復号して復号データＤｉを生成し、前記各整数ｉについての復号データＤｉの和から、前記復号鍵ｄｋに含まれる前記和ｚを減じて、前記各整数ｉについての前記情報ｘｉと前記情報ｙｉとの内積の和を計算する秘匿分析方法。
【請求項４】
暗号文取得部が、１以上の整数ｎに関して、ｉ＝１，．．．，ｎの各整数ｉについて、ベクトルｕｉである暗号化トークンｅｔｋｉと情報ｘｉとの和ｍｉが暗号化された暗号文ｃｔｉを取得する暗号文取得処理と、
復号鍵取得部が、前記各整数ｉについてのベクトルｕｉを含む復号トークンｄｔｋと、前記各整数ｉについての情報ｙｉが設定されたユーザ秘密鍵ｓｋｉとを用いて生成された復号鍵ｄｋであって、前記各整数ｉについて前記ベクトルｕｉと前記情報ｙｉとの内積の和ｚを含む復号鍵ｄｋを取得する復号鍵取得処理と、
復号部が、暗号文に設定された情報と、ユーザ秘密鍵に設定された情報との内積を計算可能な暗号方式における復号アルゴリズムを用いて、前記各整数ｉについての暗号文ｃｔｉを復号して復号データＤｉを生成し、前記各整数ｉについての復号データＤｉの和から、前記復号鍵ｄｋに含まれる前記和ｚを減じて、前記各整数ｉについての前記情報ｘｉと前記情報ｙｉとの内積の和を計算する復号処理と
を行う秘匿分析装置としてコンピュータに機能させる秘匿分析プログラム。
【国際調査報告】
2019142260.tif 000022
2019142260.tif 000023
2019142260.tif 000024
2019142260.tif 000025