(57)【要約】【課題】暗号化状態での演算を行う秘匿演算処理において、異なる秘密鍵を持つ複数の利用者端末装置に暗号化演算結果を復号させることができる秘匿演算方法を提供すること。【解決手段】上記課題を解決する本発明では、利用者端末装置と演算装置とで別々に管理される２つの秘密鍵からシステム公開鍵を生成する。そしてこのシステム公開鍵を用いて各データを暗号化する。その後、システム公開鍵で暗号化された各データについて、暗号化状態で秘匿演算処理をし、その結果を利用者端末装置の秘密鍵で再暗号化して、暗号化されたものを利用者端末装置に送付する。利用者端末装置は、自身が管理する秘密鍵を用いて復号する。【選択図】図４
2018025587.tif 000002
【特許請求の範囲】
【請求項１】
データを暗号化したまま演算する秘匿演算方法であって、
利用者端末装置と演算装置とが備える２つの秘密鍵からシステム公開鍵を生成するシステム公開鍵生成ステップと、
前記システム公開鍵により前記データを暗号化する暗号化ステップと、
前記暗号化されたデータについて、秘匿演算処理を行う演算ステップと、
前記演算ステップによる演算結果を前記利用者端末装置が備える秘密鍵で再暗号化する再暗号化ステップと、
前記再暗号化したデータを前記利用者端末装置に送付する送付ステップと、
前記再暗号化したデータを前記利用者端末装置が備える秘密鍵で復号化することを特徴とする復号化ステップと、
を備えることを特徴とした秘匿演算方法。
【請求項２】
請求項１に記載の秘匿演算方法において、
前記再暗号化ステップは、前記演算結果の一部を別の公開鍵で暗号化することを特徴とする秘匿演算方法。
【請求項３】
請求項２に記載の秘匿演算方法において、
前記復号化ステップは、前記システム公開鍵の生成に用いた前記２つの秘密鍵および、演算結果の一部を更に暗号化した公開鍵に対応する秘密鍵を、前記利用者端末装置及び前記演算装置間の通信を介して復号処理することを特徴とする秘匿演算方法。
【請求項４】
データを暗号化したまま演算する演算装置であって、
２つの秘密鍵から生成されたシステム公開鍵によって暗号化されたデータを格納する記憶部と、
前記データについて、秘匿演算処理を行う演算部と、
前記演算部による演算結果を利用者端末装置が備える秘密鍵で再暗号化する暗号処理部と、
前記再暗号化したデータを前記利用者端末装置に送付する送信部と、
を備えることを特徴とする演算装置。
【請求項５】
請求項４に記載の演算装置において、
前記２つの秘密鍵は、前記利用者端末装置と当該演算装置とが備える秘密鍵であることを特徴とする演算装置。
【請求項６】
請求項５に記載の演算装置において、
前記暗号処理部は、前記演算結果の一部を別の公開鍵で暗号化することを特徴とする演算装置。
【請求項７】
請求項５に記載の演算装置と前記利用端末装置と、を備えることを特徴とする秘匿演算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化状態のまま数値演算が可能な秘匿演算手法に関するものであり、複数の登録装置から個々の暗号化データをクラウド上のサーバなどに登録でき、また、前記サーバ上で暗号状態のまま正しい演算をすることができ、また、複数の利用者端末装置が前期暗号化演算結果を取得し、復号することができる秘匿演算方法に関する。
【背景技術】
【０００２】
個人情報や企業情報などの機密データ（特に、数値データ）をクラウド上のサーバで管理している状況において、クラウドサーバからの情報漏洩を防止しつつ同時に情報を活用する為に、データを予め暗号化してからクラウドサーバに預けておき、クラウドサーバに預けられた暗号化データを利用する際に、暗号化状態のまま演算をすることができる暗号技術が知られている。
【０００３】
例えば、加法・減法に対して準同型の性質を持つ暗号関数を利用し、暗号化状態のまま加法、減法、乗法、除法の演算をすることができる公開鍵暗号ベースの秘匿演算技術が知られている (特許文献1)。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２２７１９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら従来技術においては、各データは演算結果を取得する装置の公開鍵で暗号化され、前記公開鍵で暗号化された状態のまま演算処理される。この時、演算結果も前記公開鍵で暗号化されている状態である為、暗号化演算結果を復号できるのは、前記公開鍵に対応する秘密鍵を保持している装置のみである。つまり従来技術においては、前記公開鍵を知っていれば、複数の装置から、個々のデータを暗号化し、前記暗号化データを暗号化状態で演算をさせることができるが、複数の装置に暗号化演算結果を復号させることができない。もちろん複数の装置に同一の復号用秘密鍵を事前に配布させておけば、複数の装置にて暗号化演算結果を復号させることができるが、別々の秘密鍵を保持する複数の装置が暗号化演算結果を復号することはできないという課題があった。
【０００６】
上記課題をより具体的に説明すると、個人情報や企業情報などの機密データ（特に、数値データ）をクラウドサーバ上で暗号化状態にて管理させ、その暗号化データから統計値などを調べる為に、クラウドサーバ上で各暗号化データを演算し、その演算結果を利用する場合、その演算結果を利用できる装置は該当する秘密鍵を保持する装置１つのみであり、前記クラウドサーバにアクセスできる他の複数の装置が、前記演算結果を利用することができないという課題があった。
【課題を解決するための手段】
【０００７】
上記課題を解決する本発明では、利用者端末装置と演算装置とで別々に管理される２つの秘密鍵からシステム公開鍵を生成する。そしてこのシステム公開鍵を用いて各データを暗号化する。その後、システム公開鍵で暗号化された各データについて、暗号化状態で秘匿演算処理をし、その結果を利用者端末装置の秘密鍵で再暗号化して、暗号化されたものを利用者端末装置に送付する。利用者端末装置は、自身が管理する秘密鍵を用いて復号する。
【発明の効果】
【０００８】
本発明により、暗号化状態のまま数値演算が可能な秘匿演算手法に関し、複数の利用者端末装置が、要求した演算結果のみを暗号化状態で取得し、復号することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のシステム構成例を示す図である。
【図２】本実施形態における集計装置、受付装置、登録装置および利用者端末装置の            ハードウェア構成例を示す図である。
【図３】本実施形態における処理の全体像を示す図である。
【図４】本実施形態における秘匿演算処理手順を示すシーケンス図である。
【図５】本実施形態における鍵生成などの事前準備処理を示すフロー図である。
【図６】本実施形態におけるデータの暗号化処理を示すフロー図である。
【図７】本実施形態における暗号化状態での演算処理を示すフロー図である。
【図８】本実施形態における暗号化演算結果の復号処理を示すフロー図である。
【発明を実施するための形態】
【００１０】
−−−システム構成−−−
以下に本発明の実施形態について図面を用いて詳細に説明する。
【００１１】
図１は、本実施形態における秘匿演算システム１の全体構成例を示す図である。この図では、全体構成と共に、秘匿演算システム１を構成する各コンピュータの機能構成例についても示している。図１に示す秘匿演算システム１は、各登録装置３０より集計装置１０に登録した暗号化データを、受付装置２０を経由した利用者端末装置４０からの要求に従い、集計装置１０にて暗号化状態のまま加法・減法の演算処理を行い、当該演算結果を暗号化状態のまま利用者端末装置４０に返信し、前記利用者端末装置４０では前記暗号化演算結果を復号して演算結果を取得するシステムである。
【００１２】
本実施形態に係る秘匿システム１は、集計装置１０と、受付装置２０と、登録装置３０と利用者端末装置４０がインターネットなどの適宜なネットワーク５０を介して通信可能に接続されて構成されたコンピュータネットワークシステムである。尚、登録装置３０および利用者端末装置４０は複数存在する。
【００１３】
図１に示すように、集計装置１０は、情報生成部１０１、暗号処理部１０２、データ送受信部１０３、情報入力部１０４、情報出力部１０５、一次記憶部１０６、データ記憶部１０７、鍵記憶部１０８から構成することができる。
【００１４】
このうち情報生成部１０１は、集計装置１０の秘密鍵や秘匿演算システム１のシステム公開鍵などの情報を生成するものであり、例えば情報入力部１０４から入力された信号やデータ送受信部１０３で受信したデータを基に情報を生成するものである。また、暗号処理部１０２は、主に登録装置３０から受信した暗号化データを暗号化状態のまま演算を行うものである。また、鍵記憶部１０８は、情報生成部１０１で生成した秘密鍵を安全に管理するものである。また、一次記憶部１０６は、半導体を用いた一次記憶領域である。
また、データ記憶部１０７は登録装置３０から受信した暗号化データを暗号化状態のまま管理するものである。また、データ送受信部１０３は、暗号化データを送受信する。また、情報入力部１０４は、情報生成部１０１で生成する情報の入力にあたる信号を受け付けるものである。また、情報出力部１０５は、情報入力部１０４で入力した信号などを表示したりするものである。
【００１５】
このような機能を有する集計装置１０は、図２に例示するように一般的な情報処理装置６０により実現できる。例えば、情報生成部１０１、暗号処理部１０２、データ送受信部１０３、情報入力部１０４、情報出力部１０５はＣＰＵ（ＣＥＮＴＲＡＬ ＰＲＯＣＥＳＳＩＮＧ ＵＮＩＴ）等のＣＰＵ６０５により実行されるコンピュータプログラムとして実現できる。こうしたコンピュータプログラムは、例えば、ハードディスクなどの記憶装置６０４に予め格納、保持するか、或いはネットワーク５０から配布を受けて利用することとできる。また、データ記憶部１０７や鍵記憶部１０８も上述の記憶装置６０４として実現できる。尚、鍵記憶部１０８は、ＨＳＭ（Ｈａｒｄｗａｒｅ Ｓｅｃｕｒｉｔｙ Ｍｏｄｕｌｅ）と呼ばれるセキュアなモジュール装置を用いて実現してもよい。
【００１６】
また、一次記憶部１０６はメモリー６０３にて実現出来る。また、情報出力部１０５は、例えば液晶表示装置や有機ＥＬ（ＥＬＥＣＴＲＯ ＬＵＭＩＮＥＳＣＥＮＣＥ）ディスプレイなどの入出力装置６０１として実現できる。また、情報入力部１０４は、利用者からの指示、入力を受け付けるキーボードやマウスなどの入出力装置６０１として実現できる。
【００１７】
この他、集計装置１０は、ネットワーク５０を介して他装置と通信する通信装置６０２を備え、バスなどの内部通信線（以下，バスという）６０６で連結された情報処理装置６０上に構成することができる。
【００１８】
また、図１に示すように、受付装置２０は、情報生成部２０１、暗号処理部２０２、データ送受信部２０３、情報入力部２０４、情報出力部２０５、一次記憶部２０６、データ記憶部２０７、鍵記憶部２０８から構成することができる。
【００１９】
このうち情報生成部２０１は、受付装置２０の秘密鍵および公開鍵などの情報や、利用者端末装置４０に対するアクセス権などの情報を生成するものであり、例えば情報入力部２０４から入力された信号やデータ送受信部２０３で受信したデータを基に情報を生成するものである。また、暗号処理部２０２は、主に集計装置１０から受信した暗号化演算結果を加工処理するものである。また、鍵記憶部２０８は、情報生成部２０１で生成した秘密鍵を安全に管理するものである。また、一次記憶部２０６は、半導体を用いた一次記憶領域である。また、データ記憶部２０７は利用者端末装置４０に対するアクセス権などの情報を管理するものである。また、データ送受信部２０３は、暗号化データを送受信する。また、情報入力部２０４は、情報生成部２０１で生成する情報の入力にあたる信号を受け付けるものである。また、情報出力部２０５は、情報入力部２０４で入力した信号などを表示したりするものである。
【００２０】
このような機能を有する受付装置２０は、図２に例示するように一般的な情報処理装置６０により実現できる。例えば、情報生成部２０１、暗号処理部２０２、データ送受信部２０３、情報入力部２０４、情報出力部２０５はＣＰＵ（ＣＥＮＴＲＡＬ ＰＲＯＣＥＳＳＩＮＧ ＵＮＩＴ）等のＣＰＵ６０５により実行されるコンピュータプログラムとして実現できる。こうしたコンピュータプログラムは、例えば、ハードディスクなどの記憶装置６０４に予め格納、保持するか、或いはネットワーク５０から配布を受けて利用することとできる。また、データ記憶部２０７や鍵記憶部２０８も上述の記憶装置６０４として実現できる。尚、鍵記憶部２０８は、ＨＳＭ（Ｈａｒｄｗａｒｅ Ｓｅｃｕｒｉｔｙ Ｍｏｄｕｌｅ）と呼ばれるセキュアなモジュール装置を用いて実現してもよい。
【００２１】
また、一次記憶部２０６はメモリー６０３にて実現出来る。また、情報出力部２０５は、例えば液晶表示装置や有機ＥＬ（ＥＬＥＣＴＲＯ ＬＵＭＩＮＥＳＣＥＮＣＥ）ディスプレイなどの入出力装置６０１として実現できる。また、情報入力部２０４は、利用者からの指示、入力を受け付けるキーボードやマウスなどの入出力装置６０１として実現できる。
【００２２】
この他、受付装置２０は、ネットワーク５０を介して他装置と通信する通信装置６０２を備え、バスなどの内部通信線（以下，バスという）６０６で連結された情報処理装置６０上に構成することができる。
【００２３】
図１に示すように、登録装置３０は、情報生成部３０１、暗号処理部３０２、データ送受信部３０３、情報入力部３０４、情報出力部３０５、一次記憶部３０６、データ記憶部３０７から構成することができる。
【００２４】
このうち情報生成部３０１は、集計装置１０へ登録する数値データなどの情報を生成するものであり、例えば情報入力部３０４から入力された信号やデータ送受信部３０３で受信したデータを基に情報を生成するものである。また、暗号処理部３０２は、前記数値データの暗号化処理をするものである。また、一次記憶部３０６は、半導体を用いた一次記憶領域である。また、データ記憶部３０７は集計装置１０へ登録する数値データや秘匿演算システム１のシステム公開鍵を管理するものである。また、データ送受信部３０３は、集計装置１０から秘匿演算システム１のシステム公開鍵を受信したり、集計装置１０に暗号化データを送信したりする。また、情報入力部３０４は、情報生成部３０１で生成する情報の入力にあたる信号を受け付けるものである。また、情報出力部３０５は、情報入力部３０４で入力した信号などを表示したりするものである。
【００２５】
このような機能を有する登録装置３０は、図２に例示するように一般的な情報処理装置６０により実現できる。例えば、情報生成部３０１、暗号処理部３０２、データ送受信部３０３、情報入力部３０４、情報出力部３０５はＣＰＵ（ＣＥＮＴＲＡＬ ＰＲＯＣＥＳＳＩＮＧ ＵＮＩＴ）等のＣＰＵ６０５により実行されるコンピュータプログラムとして実現できる。こうしたコンピュータプログラムは、例えば、ハードディスクなどの記憶装置６０４に予め格納、保持するか、或いはネットワーク５０から配布を受けて利用することとできる。また、データ記憶部３０７も上述の記憶装置６０４として実現できる。また、一次記憶部３０６はメモリー６０３にて実現出来る。また、情報出力部３０５は、例えば液晶表示装置や有機ＥＬ（ＥＬＥＣＴＲＯ ＬＵＭＩＮＥＳＣＥＮＣＥ）ディスプレイなどの入出力装置６０１として実現できる。また、情報入力部３０４は、利用者からの指示、入力を受け付けるキーボードやマウスなどの入出力装置６０１として実現できる。
【００２６】
この他、登録装置３０は、ネットワーク５０を介して他装置と通信する通信装置６０２を備え、バスなどの内部通信線（以下，バスという）６０６で連結された情報処理装置６０上に構成することができる。
【００２７】
また、図１に示すように、利用者端末装置４０は、情報生成部４０１、暗号処理部４０２、データ送受信部４０３、情報入力部４０４、情報出力部４０５、一次記憶部４０６、データ記憶部４０７、鍵記憶部４０８から構成することができる。
【００２８】
このうち情報生成部４０１は、利用者端末装置４０の秘密鍵および公開鍵などの情報や、受付装置２０を介して集計装置１０に送る秘匿演算依頼などの情報を生成するものであり、例えば情報入力部４０４から入力された信号を基に情報を生成するものである。また、暗号処理部４０２は、主に集計装置１０から受付装置２０を介して受信した暗号化演算結果の復号処理をするものである。また、鍵記憶部４０８は、情報生成部４０１で生成した秘密鍵を安全に管理するものである。また、一次記憶部４０６は、半導体を用いた一次記憶領域である。また、データ記憶部４０７は復号した演算結果などの情報を管理するものである。また、データ送受信部４０３は、受付装置２０を介して集計装置１０に秘匿演算依頼を送信したり、受付装置２０を介して集計装置１０から暗号化演算結果を受信したりする。また、情報入力部４０４は、情報生成部４０１で生成する情報の入力にあたる信号を受け付けるものである。また、情報出力部４０５は、情報入力部４０４で入力した信号などを表示したりするものである。
【００２９】
このような機能を有する利用者端末装置４０は、図２に例示するように一般的な情報処理装置６０により実現できる。例えば、情報生成部４０１、暗号処理部４０２、データ送受信部４０３、情報入力部４０４、情報出力部４０５はＣＰＵ（ＣＥＮＴＲＡＬ ＰＲＯＣＥＳＳＩＮＧ ＵＮＩＴ）等のＣＰＵ６０５により実行されるコンピュータプログラムとして実現できる。こうしたコンピュータプログラムは、例えば、ハードディスクなどの記憶装置６０４に予め格納、保持するか、或いはネットワーク５０から配布を受けて利用することとできる。また、データ記憶部４０７や鍵記憶部４０８も上述の記憶装置６０４として実現できる。尚、鍵記憶部４０８は、ＨＳＭ（Ｈａｒｄｗａｒｅ Ｓｅｃｕｒｉｔｙ Ｍｏｄｕｌｅ）と呼ばれるセキュアなモジュール装置を用いて実現してもよい。
【００３０】
また、一次記憶部４０６はメモリー６０３にて実現出来る。また、情報出力部４０５は、例えば液晶表示装置や有機ＥＬ（ＥＬＥＣＴＲＯ ＬＵＭＩＮＥＳＣＥＮＣＥ）ディスプレイなどの入出力装置６０１として実現できる。また、情報入力部４０４は、利用者からの指示、入力を受け付けるキーボードやマウスなどの入出力装置６０１として実現できる。
【００３１】
この他、利用者端末装置４０は、ネットワーク５０を介して他装置と通信する通信装置６０２を備え、バスなどの内部通信線（以下，バスという）６０６で連結された情報処理装置６０上に構成することができる。
【００３２】
−−−処理手順例−−−
以下、本実施形態における手順について図に基づき説明する。以下で説明する秘匿演算処理に対応する各種動作は、秘匿演算システム１を構成する各装置、すなわち集計装置１０、受付装置２０、登録装置３０および利用者端末装置４０がそれぞれメモリー等に読み出して実行するプログラムによって実現される。
【００３３】
図３は、本実施形態における処理の全体像を示す図である。尚、図３では、登録装置３０および利用者端末装置４０は複数存在する。ここでは、メッセージｍｊｋは整数値とし、例えば、登録装置３０ｋ（ｋ＝1、２、・・・、ｍ）が、個人が支払った医療費や介護費または個人の所得額などを、クラウド上の集計装置１０のデータ記憶部１０７内のテーブル１０９に暗号化して登録し、利用者端末装置４０ｉ（ｉ＝1、２、・・・、ｎ）のいずれかが、クラウド上の受付装置２０を介して当該個人（ここではＩＤ１とする）が支払った医療費と介護費から所得額を引いた値を計算するように秘匿演算依頼を行い、集計装置１０は、その依頼に基づき秘匿演算を行い、要求元の利用者端末装置４０ｉに暗号化演算結果を受付装置２０経由で送信し、前記利用者端末装置４０ｉは、前記暗号化演算結果を復号して演算結果を取得する。
【００３４】
このとき、利用者端末装置４０ｉは、該当個人の個々の支払額や所得額はわからないが、医療費と介護費から所得額を引いた演算結果のみを取得することができる。尚、集計装置１０および受付装置２０には個々の値だけでなく演算結果も秘匿させることで、不必要な情報漏洩のリスクを低減させることができる。
【００３５】
この仕組みは、例えば、その演算結果がある上限を超えた場合に医療費や介護費の支払を免除するなどの高額療養費・高額介護合算療養費制度などへの応用が期待できる。その他、電子選挙システムでの投票結果の集計やアンケートシステムでの集計など、個々の値は秘匿しつつ、その合計値のみを復号権限のある複数の利用者に提供するシステムへの適用が期待できる。
【００３６】
図４は、本実施形態における秘匿演算処理手順を示すシーケンス図である。
【００３７】
本実施形態では大きく２つのフェーズに分かれており、一つは事前準備フェーズ（ステップＳ００１〜Ｓ００２、Ｓ１０１〜Ｓ１０３、Ｓ２０１〜Ｓ２０２）であり、もう一つは秘匿演算処理フェーズ（ステップＳ３０１〜Ｓ３０７）である。
【００３８】
まず、事前準備フェーズについて説明する。事前準備フェーズは更にシステム公開鍵生成処理（ステップＳ００１〜Ｓ００２）、暗号化データ登録処理（ステップＳ１０１〜Ｓ１０３）、利用者端末装置初期登録処理（ステップＳ２０１〜Ｓ２０２）に分けられる。
【００３９】
システム公開鍵生成処理では、受付装置２０は、受付装置２０の鍵ペア（公開鍵および秘密鍵）を生成し、受付装置２０の公開鍵を集計装置１０に送信する（ステップＳ００１）。集計装置１０では集計装置１０の秘密鍵を生成し、前記受付装置２０の公開鍵と前記集計装置１０の秘密鍵を入力として、秘匿演算システム１のシステム公開鍵を生成する。そして、前記システム公開鍵を全登録装置３０に送信する（ステップＳ００２）。
【００４０】
暗号化データ登録処理では、登録装置３０は、各データ（整数値）を前記システム公開鍵で暗号化し（ステップＳ１０１）、前記暗号化データを集計装置１０に登録する（ステップＳ１０２）。集計装置１０では前記暗号化データをデータ記憶部１０７に保管する（ステップＳ１０３）。この暗号化データ登録処理は、データ登録の必要性に応じて随時行われる。
【００４１】
利用者端末装置初期登録処理では、各利用者端末装置４０は、広く一般的に使われているＲＳＡ暗号などの公開鍵暗号における鍵ペア（公開鍵および秘密鍵）を生成し（ステップＳ２０１）、受付装置２０に利用者端末装置４０の公開鍵を送付する。また、ステップＳ２０１で生成した秘密鍵は利用者端末装置４０の鍵記憶部４０８で保管する。利用者端末装置４０の公開鍵を受信した受付装置２０では、前記利用者端末装置４０の公開鍵をデータ記憶部２０７に保管する（ステップＳ２０２）。
【００４２】
次に秘匿演算処理フェーズについて説明する。
【００４３】
利用者端末装置４０は、受付装置２０に秘匿演算依頼を行う（ステップＳ３０１）。受付装置２０は、前記秘匿演算依頼を集計装置１０に中継する（ステップＳ３０２）。集計装置１０は、前記秘匿演算依頼に基づき、ステップＳ１０３で保管した暗号化データの内、該当暗号化データを選択し、暗号化状態のまま演算処理を施す（ステップＳ３０３）。そして暗号化演算結果を受付装置２０に送信する。受付装置２０では前記暗号化演算結果を受付装置２０の秘密鍵で一部復号処理を行い（ステップＳ３０４）、処理データ１として集計装置１０に送信する。集計装置１０は処理データ１を集計装置１０の秘密鍵で一部復号処理を行い（ステップＳ３０５）、処理データ２として受付装置２０に送信する。受付装置２０では処理データ２を受付装置２０の秘密鍵で一部復号処理を行い（ステップＳ３０６）、処理データ３として前記利用者端末装置４０に送信する。利用者端末装置４０は利用者端末装置４０の秘密鍵で処理データ３を復号し、要求した演算結果を取得する。尚、ステップＳ３０４〜Ｓ３０７は、集計装置１０の秘密鍵、受付装置２０の秘密鍵、利用者端末４０の秘密鍵を用いて、夫々の装置が通信を介して復号を行う処理であり、その詳細は図８のフロー図を用いて後述する。
【００４４】
図５から図８は、本実施形態における各処理の詳細を説明する為のフロー図である。
【００４５】
図５は事前準備フェーズのシステム公開鍵生成処理（ステップＳ００１〜Ｓ００２）のフロー図である。
【００４６】
図６は事前準備フェーズの暗号化データ登録処理（ステップＳ１０１〜Ｓ１０３）のフロー図である。
【００４７】
図７は秘匿演算処理フェーズの秘匿演算依頼（ステップＳ３０１）から秘匿演算処理（ステップＳ３０３）までのフロー図である。
【００４８】
図８は秘匿演算処理フェーズの復号処理（ステップＳ３０４〜Ｓ３０７）までのフロー図である。
【００４９】
尚、利用者端末装置初期登録処理は、広く一般的に使われているＲＳＡ暗号などの公開鍵暗号における鍵ペア（公開鍵および秘密鍵）を利用者端末装置４０が生成し、前記利用者端末装置４０の公開鍵を受付装置２０に登録するという処理であり、とりわけフロー図を使っての説明は省略する。
【００５０】
まず、図５を用いて事前準備フェーズのシステム公開鍵生成処理（ステップＳ００１〜Ｓ００２）フローを説明する。
【００５１】
受付装置２０は、大きな素数ｐおよびｑを選ぶ（フローＦ００１）。このとき、ｐ’＝（ｐ−１）／２およびｑ’＝（ｑ−１）／２も素数になるように選ぶ。
【００５２】
次に受付装置２０はｎ＝ｐ・ｑを計算する（フローＦ００２）。尚、ここでは演算子“・”は掛け算を意味する。
【００５３】
次に受付装置２０は乱数ｋ∈Ｚｎを任意に選び（フローＦ００３）、ｇ＝１＋ｋ・ｎ  ｍｏｄ ｎ２を計算する（フローＦ００４）。
【００５４】
そして受付装置２０は、フローＦ００１で選んだ素数ｐおよびｑを受付装置２０の秘密鍵として鍵記憶部２０８に保管する（フローＦ００５）。
【００５５】
また受付装置２０は、フローＦ００２およびフローＦ００４で計算したｎおよびｇを受付装置２０の公開鍵として、集計装置１０に送信する（フローＦ００６）。
【００５６】
受付装置２０の公開鍵（ｎ、ｇ）を受信した集計装置１０は（フローＦ００７）、ａ∈Ｚｎを任意に選び（フローＦ００８）、ａ’・ａ＝１  ｍｏｄ ｎなるａ’を求める。通常、この計算はユークリッドの互除法と呼ばれる計算を行うことでａ’を求めることができる（フローＦ００９）。
【００５７】
そして集計装置１０は、Ｇ＝ｇａ  ｍｏｄ ｎ２を計算する（フローＦ０１０）。
【００５８】
また、集計装置１０は、ｕ∈ＺＮを任意に選ぶ。尚、便宜上、ここではｎ２をＮと記述する（フローＦ０１１）。
【００５９】
そして集計装置１０は、フローＦ００９で求めたａ’とフローＦ０１１で選んだｕを集計装置１０の秘密鍵として、鍵記憶部１０８に保管する（フローＦ０１２）。
【００６０】
また、集計装置１０は、パラメータｂをｎ／２より小さい自然数から選ぶ（フローＦ０１３）。尚、パラメータｂは演算を行う項数の最大値とする。つまり、本実施形態では最大ｂ個までの足し算または引き算を行うことができる。
【００６１】
そして集計装置１０は、フローＦ００７で受付装置２０から受信したｎとフローＦ０１０で計算したＧを秘匿演算システム１のシステム公開鍵として、各登録装置３０に送信する。また、フローＦ０１３で選んだｂも秘匿演算システム１の公開パラメータとして、各登録装置３０に送信する（フローＦ０１４）。
【００６２】
次に、図６を用いて事前準備フェーズの暗号化データ登録処理（ステップＳ１０１〜Ｓ１０３）フローを説明する。
【００６３】
登録装置３０は、暗号化対象のデータ（整数値）としてｍ∈Ｚ（（ｎ／２ｂ）−１）を選ぶ（フローＦ１０１）。
【００６４】
次に登録装置３０は、乱数ｒ∈Ｚｎを任意に選び（フローＦ１０２）、フローＦ１０１で選んだデータｍに対して、フローＦ０１４で集計装置１０から登録装置３０に送られてきた秘匿演算システム１のシステム公開鍵（ｎ、Ｇ）とフローＦ１０２で選んだ乱数ｒを用いて、暗号化データｃ＝Ｇｍ・ｒｎ  ｍｏｄ ｎ２を計算する（フローＦ１０３）。
【００６５】
そして登録装置３０は、前記暗号化データｃが何に対するデータであるかの属性情報（例えば“ＩＤ１”の“医療費”のデータであることを示す情報（図３、テーブル１０９参照））を添えて、前記暗号化データｃを収集装置１０に送信する（フローＦ１０４）。
【００６６】
暗号化データｃを受信した集計装置１０は（フローＦ１０５）、フローＦ０１２で鍵記憶部１０８に保管してある秘密鍵ｕを取り出し、前記暗号化データｃをｃ＝ｃ＋ｕ  ｍｏｄ ｎ２に変換して、前記属性情報（例えば“ＩＤ１”の“医療費”のデータであることを示す情報（図３、テーブル１０９参照））に従い、変換したｃを集計装置１０のデータ記憶部１０７に登録する（フローＦ１０６）。
【００６７】
次に、図７を用いて秘匿演算処理フェーズの秘匿演算依頼（ステップＳ３０１）から秘匿演算処理（ステップＳ３０３）フローを説明する。
【００６８】
利用者端末装置４０は、演算範囲を指定して（例えば“ＩＤ１”の“医療費”と“介護費”の和を知りたいということを示す情報（図３、テーブル１０９参照））、受付装置２０に秘匿演算依頼を送信する（フローＦ２０１）。
【００６９】
利用者端末装置４０からの秘匿演算依頼を受信した受付装置２０は（フローＦ２０２）、前記利用者端末装置４０が利用者端末装置初期登録処理（ステップＳ２０２）で初期登録されているかなど、秘匿演算システム１を利用できる装置からのアクセスであるかの確認を行う（フローＦ２０３）。もし、不正な装置からのアクセスであれば前記秘匿演算依頼は拒否する。もし、正当な装置からのアクセスであれば、ステップＳ２０２でデータ記憶部２０７に保管した前記利用者端末装置４０の該当公開鍵を取り出し、前記利用者端末装置４０の公開鍵をフローＦ２０２で受信した秘匿演算依頼と共に集計装置１０に送信する（フローＦ２０４）。
【００７０】
受付装置２０からの秘匿演算依頼を受信した集計装置１０は（フローＦ２０５）、フローＦ２０１で指定されている演算範囲を基に該当暗号化データをデータ記憶部１０７から取得する（フローＦ２０６）。ここでは、“ＩＤ１の医療費に対する暗号化データ”を“ｃ１”とし、“ＩＤ１の介護費に対する暗号化データ”を“ｃ２”として説明する。
【００７１】
各該当暗号化データを取得した集計装置１０は、鍵記憶部１０８より集計装置１０の秘密鍵ｕを取り出し、ｃ１およびｃ２を、各々ｃ１＝ｃ１−ｕ  ｍｏｄ ｎ２、ｃ２＝ｃ２−ｕ  ｍｏｄ ｎ２に置き換える（フローＦ２０７）。
【００７２】
ここで集計装置１０は、要求されている演算が和であるか差であるかを判断し（フローＦ２０８）、和であればｃ’＝（ｃ１・ｃ２）  ｍｏｄ ｎ２を計算し（フローＦ２０９１）、差であればｃ’＝（ｃ１／ｃ２）  ｍｏｄ ｎ２を計算する（フローＦ２０９２）。
【００７３】
またｃ’を計算した集計装置１０は、ｓ∈Ｚｎを任意に選び、ｓ’・ｓ＝１  ｍｏｄ ｎなるｓ’を求め、一次記憶装部１０６またはデータ記憶装部１０７に記憶しておく（フローＦ２１０）。
【００７４】
また、集計装置１０は、ｖ∈Ｚｎを任意に選び、ｖ’・ｖ＝１  ｍｏｄ ｎなるｖ’も求める（フローＦ２１１）。そして集計装置１０は、フローＦ２０４で受付装置２０から送られてきた該当利用者端末４０の公開鍵で、ｖ’を暗号化する（フローＦ２１２）。
【００７５】
さらに集計装置１０は、フローＦ２０９で計算したｃ’と、フローＦ２１０、フローＦ２１１で選んだｓおよびｖより、暗号化演算結果Ｃ＝（ｃ’）ｓ・ｖ  ｍｏｄ ｎ２を計算し、フローＦ２１２で暗号化したｖ’と共に受付装置２０に送信する（フローＦ２１３）。
【００７６】
最後に、図８を用いて秘匿演算処理フェーズの復号処理（ステップＳ３０４〜Ｓ３０７）フローを説明する。
【００７７】
暗号化演算結果Ｃと該当利用者端末４０の公開鍵で暗号化されたｖ’を受信した受付装置２０は、Ｍ＝Ｌ（（Ｃλ  ｍｏｄ ｎ２）／Ｌ（ｇλ  ｍｏｄ ｎ２））ｍｏｄ ｎ  を計算する。ここで、Ｌ（ｘ）＝（ｘ−１）／ｎであり、λ＝ｌｃｍ（ｐ−１、ｑ−１）である（フローＦ３０１）。
【００７８】
また、受付装置２０は、ｔ∈Ｚｎを任意に選び、ｔ’・ｔ＝１  ｍｏｄ ｎなるｔ’を求め、一次記憶装部２０６またはデータ記憶装部２０７に記憶しておく（フローＦ３０２）。
【００７９】
そして受付装置２０は、フローＦ３０１で計算したＭとフローＦ３０２で選んだｔを使って、Ｃ’＝Ｍ・ｔ  ｍｏｄ ｎ  を計算し、Ｃ’を処理データ１として集計装置１０に送信する（フローＦ３０３）。
【００８０】
Ｃ’を受信した集計装置１０は（フローＦ３０４）、フローＦ０１２で鍵記憶部１０８に保管したａ’と、フローＦ２１０で一次記憶装部１０６またはデータ記憶装部１０７に記憶してあるｓ’を取り出し、Ｃ’’＝ａ’・ｓ’・Ｃ’  ｍｏｄ ｎ  を計算する（フローＦ３０４）。そして集計装置１０は、Ｃ’’を処理データ２として受付装置２０に送信する（フローＦ３０６）。
【００８１】
Ｃ’’を受信した受付装置２０は（フローＦ３０７）、フローＦ３０２で一次記憶装部２０６またはデータ記憶装部２０７に記憶してあるｔ’を取り出し、処理データ３としてＣ’’’＝ｔ’・Ｃ’’  ｍｏｄ ｎ  を計算する（フローＦ３０８）。
【００８２】
そして受付装置２０は、フローＦ２１３で集計装置１０から送られてきた該当利用者端末４０の公開鍵で暗号化されたｖ’とフローＦ３０４で計算したＣ’’’（処理データ３）を秘匿演算依頼の要求元である利用者端末４０に送信する（フローＦ３０９）。
【００８３】
利用者端末４０の公開鍵で暗号化されたｖ’と処理データ３であるＣ’’’を受信した利用者端末４０は（フローＦ３１０）、まず、ステップＳ２０１で生成した利用者端末装置４０の秘密鍵を鍵記憶部４０８より取り出し、利用者端末４０の公開鍵で暗号化されたｖ’を復号してｖ’を取得する（フローＦ３１１）。
【００８４】
そして利用者端末装置４０は、フローＦ３１０で受信したＣ’’’とフローＦ３１１で復号したｖ’より、ｍ’＝ｖ’・Ｃ’’’ｍｏｄ ｎを計算する（フローＦ３１２）。
【００８５】
ここでｍ’＜ｎ／２であれば、ｍ’＝ｍ’とし（フローＦ３１４１）、ｍ’≧ｎ／２であればｍ’＝ｍ’−ｎとする（フローＦ３１４２）。
【００８６】
そして利用者端末装置４０は、ｍ’を要求した演算結果として取得する（フローＦ３１５）。
【００８７】
尚、ｍ’が求める演算結果であることは以下よりわかる。
各暗号化データｃ１およびｃ２を、
ｃ１＝Ｇｍ１・ｒ１ｎ  ＝ｇａ・ｍ１・ｒ１ｎ  ｍｏｄ ｎ２、
ｃ２＝Ｇｍ２・ｒ２ｎ  ＝ｇａ・ｍ２・ｒ２ｎ  ｍｏｄ ｎ２としたとき、
ｃ’＝ｃ１・ｃ２＝ｇａ・(ｍ１＋ｍ２) ・（ｒ１・ｒ２）ｎ  ｍｏｄ ｎ２であり、
Ｃ＝（ｃ’）ｓ・ｖ＝ｇａ・(ｍ１＋ｍ２)・ｓ・ｖ ・（ｒ１・ｒ２）ｎ・ｓ・ｖ  ｍｏｄ ｎ２である。
そして、Ｌ（（Ｃλ  ｍｏｄ ｎ２）／Ｌ（ｇλ  ｍｏｄ ｎ２））ｍｏｄ ｎの計算は、ｇの指数部分の値を出力するので、  
Ｍ＝ａ・（ｍ１＋ｍ２）・ｓ・ｖ  ｍｏｄ ｎとなり、
Ｃ’＝ａ・（ｍ１＋ｍ２）・ｓ・ｖ・ｔ  ｍｏｄ ｎとなる。
そして
Ｃ’’＝（ａ’・ｓ’）・Ｃ’＝（ｍ１＋ｍ２）・ｖ・ｔ  ｍｏｄ ｎとなり、
Ｃ’’’＝ｔ’・Ｃ’’＝（ｍ１＋ｍ２）・ｖ  ｍｏｄ ｎとなる。
そして、
ｍ’＝ｖ’・Ｃ’’’＝（ｍ１＋ｍ２）  ｍｏｄ ｎとなる。
【００８８】
なお、ｍ１、ｍ２∈Ｚ（（ｎ／２ｂ）−１）であるので、ｍ１＋ｍ２＜ｎ／２であり、
ｍ’は求める  ｍ’＝ｍ１＋ｍ２であることがわかる。
【００８９】
上記で説明した構成により、本実施例は、２つの秘密鍵から生成されるシステム公開鍵を用いて暗号化した各データは、クラウド上のサーバ上で暗号化状態のまま演算をさせることが可能である。
【００９０】
また、前記２つの秘密鍵は別々の装置にて管理させることにより、各装置の結託が無い限り、前記サーバから各データおよび演算結果の秘匿性を保つことができる。
【００９１】
また、暗号化状態で演算した演算結果の一部（演算をする際に生成される部分情報）を、演算結果を利用する利用者端末装置の公開鍵で更に暗号化させることにより、該当利用者端末装置のみが前記暗号化演算結果を復号することができるようになる。つまり言い換えると、宛先の利用者端末の公開鍵で前記演算結果の一部（演算をする際に生成される部分情報）を暗号化させることにより、同一の復号用の秘密鍵を事前に配布させることなく、複数の利用者端末装置向けに演算結果を安全に提供することができるようになる。
【００９２】
尚、暗号化演算結果を復号する為には、各データを暗号化したシステム公開鍵に対応する２つの秘密鍵および演算結果を利用する利用者端末装置の秘密鍵が必要であり、本発明では装置間の通信を介して処理することで、暗号化演算結果を該当利用者端末が復号できるように加工することで、該当利用者端末装置は暗号化演算結果を復号することができるようになる。
【符号の説明】
【００９３】
１  秘匿演算システム
１０  集計装置
２０  受付装置
３０  登録装置
４０  利用者端末装置
５０  ネットワーク
１０１  情報生成部
１０２  暗号処理部
１０３  データ送受信部
１０４  情報入力部
１０５  情報出力部
１０６  一次記憶部
１０７  データ記憶部
１０８  鍵記憶部
１０９  テーブル
２０１  情報生成部
２０２  暗号処理部
２０３  データ送受信部
２０４  情報入力部
２０５  情報出力部
２０６  一次記憶部
２０７  データ記憶部
２０８  鍵記憶部
３０１  情報生成部
３０２  暗号処理部
３０３  データ送受信部
３０４  情報入力部
３０５  情報出力部
３０６  一次記憶部
３０７  データ記憶部
４０１  情報生成部
４０２  暗号処理部
４０３  データ送受信部
４０４  情報入力部
４０５  情報出力部
４０６  一次記憶部
４０７  データ記憶部
４０８  鍵記憶部
６０１  入出力装置
６０２  通信装置
６０３  メモリー
６０４  記憶装置
６０５  ＣＰＵ
【図１】
2018025587.tif 000003
【図２】
2018025587.tif 000004
【図３】
2018025587.tif 000005
【図４】
2018025587.tif 000006
【図５】
2018025587.tif 000007
【図６】
2018025587.tif 000008
【図７】
2018025587.tif 000009
【図８】
2018025587.tif 000010