(57)【特許請求の範囲】
【請求項１】
計算式及び当該計算式の対象データを入力する入力部と、
準同型暗号を用いた特定の演算を行う複数の演算ノードから、当該演算ノードのリソース及び演算コストの情報を取得する取得部と、
前記リソース及び演算コストの情報に基づいて、前記計算式を分解した個々の演算を、前記複数の演算ノードのいずれに配分するかの計算手順を決定する決定部と、
前記決定された計算手順に従って、前記複数の演算ノードを利用して前記対象データに対する準同型暗号を用いた秘密計算を実行し、計算結果を出力する実行部と、を備える秘密計算制御装置。
【請求項２】
前記計算式を変形し、当該変形後の計算式に含まれる演算の回数に基づき算出される計算コストを減少させる式変形部を備え、
前記決定部は、前記変形後の計算式の計算手順を決定する請求項１に記載の秘密計算制御装置。
【請求項３】
前記式変形部は、前記準同型暗号における暗号及び復号の処理回数を減少させるように前記計算式を変形する請求項２に記載の秘密計算制御装置。
【請求項４】
前記決定部は、指定時間内に前記計算結果を得られる計算手順のうち、前記演算コストの総計が最低となるように前記計算手順を決定する請求項１から請求項３のいずれかに記載の秘密計算制御装置。
【請求項５】
前記決定部は、木構造に分解された計算式の出力に近い側の演算から順に、演算ノードを変更することにより、前記演算コストを低減させる請求項４に記載の秘密計算制御装置。
【請求項６】
前記決定部は、前記木構造に分解された計算式の分岐において、全ての枝が同等の計算時間となるように演算ノードを変更することにより、前記演算コストを低減させる請求項請求項５に記載の秘密計算制御装置。
【請求項７】
前記実行部は、前記個々の演算のための暗号方式が異なる場合、当該演算毎の暗号方式を通知し、当該暗号方式により暗号化された演算対象のデータを取得する請求項１から請求項６のいずれかに記載の秘密計算制御装置。
【請求項８】
前記決定部は、前記対象データのそれぞれに対して所定回数以上の演算を行った以降の計算手順において、前記複数の演算ノードとは異なる前記準同型暗号を用いない演算ノードに演算を配分する請求項１から請求項７のいずれかに記載の秘密計算制御装置。
【請求項９】
計算式及び当該計算式の対象データを入力する入力ステップと、
準同型暗号を用いた特定の演算を行う複数の演算ノードから、当該演算ノードのリソース及び演算コストの情報を取得する取得ステップと、
前記リソース及び演算コストの情報に基づいて、前記計算式を分解した個々の演算を、前記複数の演算ノードのいずれに配分するかの計算手順を決定する決定ステップと、
前記決定された計算手順に従って、前記複数の演算ノードを利用して前記対象データに対する準同型暗号を用いた秘密計算を実行し、計算結果を出力する実行ステップと、をコンピュータの制御部が実行する秘密計算制御方法。
【請求項１０】
請求項９に記載の秘密計算制御方法の各ステップを前記コンピュータに実行させるための秘密計算制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密計算を制御する装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来、個人情報を含むようなセンシティブなデータを統計処理する場合等に、入力データを秘匿したまま演算結果を得る秘密計算システムが提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２４８０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術は、単一のサーバによる特定の演算に特化したものである。様々な演算要求に対応するためには、演算装置の処理負荷、さらには、利用者が負担するコストが増大し、利便性が低下してしまう。
【０００５】
本発明は、特定の演算に限定されない秘密計算を効率的に行える秘密計算制御装置、秘密計算制御方法及び秘密計算制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る秘密計算制御装置は、計算式及び当該計算式の対象データを入力する入力部と、準同型暗号を用いた特定の演算を行う複数の演算ノードから、当該演算ノードのリソース及び演算コストの情報を取得する取得部と、前記リソース及び演算コストの情報に基づいて、前記計算式を分解した個々の演算を、前記複数の演算ノードのいずれに配分するかの計算手順を決定する決定部と、前記決定された計算手順に従って、前記複数の演算ノードを利用して前記対象データに対する準同型暗号を用いた秘密計算を実行し、計算結果を出力する実行部と、を備える。
【０００７】
前記秘密計算制御装置は、前記計算式を変形し、当該変形後の計算式に含まれる演算の回数に基づき算出される計算コストを減少させる式変形部を備え、前記決定部は、前記変形後の計算式の計算手順を決定してもよい。
【０００８】
前記式変形部は、前記準同型暗号における暗号及び復号の処理回数を減少させるように前記計算式を変形してもよい。
【０００９】
前記決定部は、指定時間内に前記計算結果を得られる計算手順のうち、前記演算コストの総計が最低となるように前記計算手順を決定してもよい。
【００１０】
前記決定部は、木構造に分解された計算式の出力に近い側の演算から順に、演算ノードを変更することにより、前記演算コストを低減させてもよい。
【００１１】
前記決定部は、前記木構造に分解された計算式の分岐において、全ての枝が同等の計算時間となるように演算ノードを変更することにより、前記演算コストを低減させてもよい。
【００１２】
前記実行部は、前記個々の演算のための暗号方式が異なる場合、当該演算毎の暗号方式を通知し、当該暗号方式により暗号化された演算対象のデータを取得してもよい。
【００１３】
前記決定部は、前記対象データのそれぞれに対して所定回数以上の演算を行った以降の計算手順において、前記複数の演算ノードとは異なる前記準同型暗号を用いない演算ノードに演算を配分してもよい。
【００１４】
本発明に係る秘密計算制御方法は、計算式及び当該計算式の対象データを入力する入力ステップと、準同型暗号を用いた特定の演算を行う複数の演算ノードから、当該演算ノードのリソース及び演算コストの情報を取得する取得ステップと、前記リソース及び演算コストの情報に基づいて、前記計算式を分解した個々の演算を、前記複数の演算ノードのいずれに配分するかの計算手順を決定する決定ステップと、前記決定された計算手順に従って、前記複数の演算ノードを利用して前記対象データに対する準同型暗号を用いた秘密計算を実行し、計算結果を出力する実行ステップと、をコンピュータの制御部が実行する。
【００１５】
本発明に係る秘密計算制御プログラムは、前記秘密計算制御方法の各ステップを前記コンピュータに実行させる。
【発明の効果】
【００１６】
本発明によれば、特定の演算に限定されない秘密計算を効率的に行える。
【図面の簡単な説明】
【００１７】
【図１】実施形態に係る秘密計算制御装置の機能構成を示す図である。
【図２】実施形態に係る計算手順の一例を示す模式図である。
【図３】実施形態に係る秘密計算制御装置の処理を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態の一例について説明する。
本実施形態の秘密計算制御装置１は、サーバ装置又はパーソナルコンピュータ等の情報処理装置（コンピュータ）であり、ユーザ端末２からの計算要求に対して、入力データを暗号化したまま複数の演算ノード３を用いて計算結果を出力する。
【００１９】
演算ノード３は、加法準同型又は乗法準同型等、準同型暗号を用いて特定の演算（例えば、加算又は乗算）が可能なパブリッククラウド上の処理装置であり、秘密計算制御装置１からの演算依頼に応じて、データを秘匿（暗号化）したまま演算し、その結果を返す。複数の演算ノード３は、それぞれＣＰＵ等の処理能力、又はメモリ容量等に依存して処理可能データ量等が異なる。また、演算ノード３は、暗号方式の異なる特定の演算アルゴリズムに特化した専用の回路（ハードウェアアクセラレータ）を搭載することで処理速度を向上させる場合もある。
【００２０】
図１は、本実施形態に係る秘密計算制御装置１の機能構成を示す図である。
秘密計算制御装置１は、入力部１１と、式変形部１２と、取得部１３と、決定部１４と、実行部１５と、暗号処理部１６とを備える。
【００２１】
入力部１１は、ユーザ端末２からの入力として、秘密計算を行う計算式と、この計算式の対象データを受信する。
以下、計算式は、一例として加算及び乗算の組み合わせで表されるものとして説明するが、演算の種類はこれらには限られず、大小比較等、準同型暗号を利用できる演算を組み合わせることができる。
【００２２】
式変形部１２は、入力された計算式を変形し、計算式に含まれる演算の回数に基づき算出される計算コストを減少させて処理効率の最適化を図る。なお、乗算と加算とで各処理に必要な計算コストは同一とは限らず、式変形部１２は、計算式全体の計算コストを、予め設定した演算の種類毎の計算コスト比に基づいて算出することとしてもよい。
具体的には、式変形部１２は、例えば「ａｂ＋ａｃ」という計算式を、「ａ（ｂ＋ｃ）」のように括弧でくくり、乗算の回数を減少させる。また、式変形部１２は、乗算と加算との計算コスト比によっては、乗算を加算に置き換える（例えば、２ａ＝ａ＋ａ）、又は加算を乗算に置き換える等の式変形を行ってもよい。
【００２３】
さらに、式変形部１２は、準同型暗号における暗号及び復号の処理回数を減少させるように計算式を変形する。乗法準同型と加法準同型とでは、暗号方式が異なるため、例えば、乗算の結果を加算する場合に、対象データを一旦復号して別の暗号方式によって暗号化する必要がある。したがって、式変形部１２は、同種の演算が連続するように計算式を変形し、暗号方式の切り替え回数を減少させる。
【００２４】
取得部１３は、準同型暗号を用いた特定の演算を行う複数の演算ノード３それぞれから、この演算ノード３のリソース（処理速度、メモリ容量等）及び演算コスト（演算依頼に対する価格）の情報を取得する。
【００２５】
決定部１４は、リソース及び演算コストの情報に基づいて、計算式を分解した個々の演算を、複数の演算ノード３のいずれに配分するかの計算手順を決定する。
具体的には、決定部１４は、ユーザ端末２から指定された時間内に計算結果を得られる計算手順のうち、演算コストの総計が最低となるように計算手順を決定する。通常、高い処理能力（速度）を有する演算ノード３であるほど、演算コスト（価格）は高くなるため、時間の制限を緩めることにより、時間は掛かっても演算コストの低い演算ノード３を選択できる。したがって、決定部１４は、指定時間内に総演算時間が収まるように、比較的遅い、すなわち演算コストが低い演算ノード３を選択する。
【００２６】
また、決定部１４は、木構造に分解された計算式の出力に近い側の演算から順に、演算ノード３を変更することにより、演算コストを低減させる。
さらに、決定部１４は、木構造に分解された計算式の分岐において、全ての枝が同等の計算時間となるように演算ノード３を変更することにより、演算コストを低減させる。
【００２７】
図２は、本実施形態に係る計算手順の一例を示す模式図である。
この例は、数値Ａ及び数値Ｂの加算結果と、数値Ｃ及び数値Ｄの加算結果とを乗算し、さらに、数値Ｅとの加算を行って計算結果を出力する一連の計算手順を示している。
【００２８】
ここで、決定部１４は、各演算ノード３のリソース情報に基づいて計算結果出力までの時間を推定するが、処理速度の速い演算ノード３が選択されている場合には、時間の余裕が存在する。
この場合、決定部１４は、出力に近い側の演算２１から順に、たとえ処理時間が増えるとしても演算コストの低いノードに同一の演算を配分する。これにより、決定部１４は、効率的に処理手順の最適化を図ることができる。
【００２９】
また、計算手順が複数の演算（２３及び２４）に分岐している場合、演算２２において一方の演算の処理待ちが生じると、この待ち時間分だけ演算コスト低下の余地がある。したがって、決定部１４は、この処理待ちを極力生じさせないように、全ての枝（演算２３及び演算２４）を、同等の処理時間となるノードに配分する。これにより、決定部１４は、効率的に処理手順の最適化を図ることができる。
【００３０】
実行部１５は、決定された計算手順に従って、複数の演算ノード３を利用して対象データに対する準同型暗号を用いた秘密計算を実行し、計算結果をユーザ端末２へ出力する。
実行部１５は、演算ノード３毎に用いられる暗号化方式を識別し、この暗号化方式に従って、暗号処理部１６によって演算毎の対象データを暗号化する。連続する演算間で暗号化方式が異なる場合、実行部１５は、暗号処理部１６によって一旦データを復号した後、新たな暗号化方式によって暗号化する。
【００３１】
暗号処理部１６は、実行部１５の指示に従って、指定された暗号化方式によりデータの暗号化、又は暗号化されたデータの復号を行い、実行部１５へ提供する。
【００３２】
図３は、本実施形態に係る秘密計算制御装置１の処理を示すフローチャートである。
ステップＳ１において、入力部１１は、ユーザ端末２から秘密計算を行う計算式及び計算の対象データを受信する。なお、秘密計算制御装置１がユーザに信頼されている場合、対象データは、暗号化されていない平文であってよい。
【００３３】
ステップＳ２において、式変形部１２は、入力された計算式を変形し、計算の負荷を最適化するために個々の演算の回数を低減させる。
【００３４】
ステップＳ３において、決定部１４は、各演算ノード３のリソースを選別して最適化するために、指定時間内に計算結果が得られると推定される範囲において、演算コストがより低い演算ノード３を選択して計算手順を決定する。
【００３５】
ステップＳ４において、秘密計算制御装置１は、ステップＳ３で決定された計算手順による推定計算時間及び計算コストをユーザ端末２へ通知してユーザの承認を求め、承認を得たか否かを判定する。この判定がＹＥＳの場合、処理はステップＳ５に移り、判定がＮＯの場合、処理はステップＳ３に戻り、ユーザの指示に従って計算手順を調整する。
【００３６】
ステップＳ５において、実行部１５は、計算手順における個々の演算を順に選択する。
ステップＳ６において、実行部１５は、選択された演算を依頼する演算ノード３が用いる暗号化方式を識別し、演算対象データに暗号化、又は異なる暗号方式によって再暗号化が必要か否かを判定する。この判定がＹＥＳの場合、処理はステップＳ７に移り、判定がＮＯの場合、処理はステップＳ８に移る。
【００３７】
ステップＳ７において、暗号処理部１６は、演算ノード３の暗号方式に従って、対象データに対して、復号及び暗号化を行う。
【００３８】
ステップＳ８において、実行部１５は、演算ノード３に暗号化されたデータを送信し、演算依頼を行う。
【００３９】
ステップＳ９において、実行部１５は、計算手順における全ての演算を行い、要求された計算が終了したか否かを判定する。この判定がＹＥＳの場合、処理はステップＳ１０に移り、判定がＮＯの場合、処理はステップＳ５に移って次の計算手順に進む。
【００４０】
ステップＳ１０において、実行部１５は、暗号処理部１６によって計算結果を復号して、ユーザ端末２へ出力する。
【００４１】
本実施形態によれば、秘密計算制御装置１は、準同型暗号を用いた特定の演算を行う複数の演算ノード３を利用することにより、各演算ノード３で可能な演算を組み合わせて特定の演算に限定されない秘密計算を行える。このとき、秘密計算制御装置１は、演算ノード３のリソース及び演算コストの情報に基づいて、ユーザの要求に適合するように各演算の配分先を決定し、秘密計算を効率的に行える。
【００４２】
また、秘密計算制御装置１は、計算式を分解した際の演算の回数を減少させるように式変形をすることにより、計算結果を得るまでの計算手順を効率化できる。
さらに、秘密計算制御装置１は、演算の種類によって準同型暗号の暗号方式が異なる場合に、必要に応じて復号及び暗号の処理を繰り返す必要があるが、復号及び暗号の処理回数を減少させるように演算の順序を調整して計算式を変形するので、処理負荷を低減して効率的に秘密計算を行える。
【００４３】
さらに、秘密計算制御装置１は、演算コストの総計（例えば、計算結果を得るための価格）が低くなるように計算手順を調整するので、ユーザにより指定された時間内に、より低コストで計算結果を提供できる。
このとき、秘密計算制御装置１は、木構造に分解された計算式の出力に近い側の演算から順に、低コストの演算ノード３に変更し、分岐においては、全ての枝が同等の計算時間となるように演算ノード３を変更する。秘密計算制御装置１は、これらの調整方法により効率的に演算コストを低減し、ユーザの要求に適合した秘密計算を行える。
【００４４】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【００４５】
本実施形態では、秘密計算制御装置１は、ユーザ端末２から計算の対象データを平文のまま受け付けることとしたが、ユーザが秘密計算制御装置１に対しても元データを提供したくない等の場合には、暗号化されたデータが入力されてもよい。
このとき、実行部１５は、個々の演算のための暗号方式が異なる場合、これら演算毎の暗号方式をユーザ端末２に通知し、この暗号方式により暗号化された演算対象のデータを取得する。これにより、ユーザは、秘密計算制御装置１に対しても計算の対象データを秘匿したまま計算結果を得られる。
【００４６】
また、本実施形態では、全ての演算ノード３は準同型暗号に対応し、秘密計算制御装置１は、計算手順における全ての演算を暗号化したデータに対して行うように演算ノード３へ配分したが、これには限られない。決定部１４は、対象データのそれぞれに対して所定回数以上の演算を行った以降の計算手順において、準同型暗号を用いない演算コストの低い演算ノードに演算を配分してもよい。
計算手順の途中であっても、元データに対して何らかの演算が行われれば秘密情報ではなくなる場合がある。例えば、平均を求める計算において、最後の割り算の直前の加算が終了したデータは、もはや秘密ではないと考えられる。したがって、秘密計算制御装置１は、例えば計算式を分解した木構造の所定の階層以降について、暗号処理を行わず、演算コストの低い演算ノードを用いることにより効率的に計算結果を得られる。
【００４７】
秘密計算制御装置１による制御方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置（秘密計算制御装置１）にインストールされる。また、これらのプログラムは、ＣＤ−ＲＯＭのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータ（秘密計算制御装置１）に提供されてもよい。
【符号の説明】
【００４８】
１  秘密計算制御装置
１１  入力部
１２  式変形部
１３  取得部
１４  決定部
１５  実行部
１６  暗号処理部
【図１】
0006370230.tif 000002
【図２】
0006370230.tif 000003
【図３】
0006370230.tif 000004