(57)【特許請求の範囲】
【請求項１】
ユーザと対応付けられるシステム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての処理の要求に応じて、標準実行環境から保護される仮想実行環境を一時的に構築する処理実行部と、を備え、
前記鍵管理部は、前記処理実行部が前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境は、
前記暗号化データを取得する暗号化データ取得部と、
前記鍵管理部から、前記システム鍵を取得する鍵取得部と、
前記取得したシステム鍵に基づき前記暗号化データを復号する演算処理部と、を含み、
前記演算処理部は、前記取得したシステム鍵とは異なるシステム鍵を生成する鍵生成部を有し、
前記演算処理部は、前記復号した暗号化データについて、前記生成したシステム鍵を用いて所定の処理を実行し、実行結果を前記記憶部に記憶させる、情報処理システム。
【請求項２】
前記演算処理部は、前記所定の処理として、前記復号前の暗号化データの暗号方式とは異なる暗号方式で暗号化する、請求項１に記載の情報処理システム。
【請求項３】
前記演算処理部は、前記所定の処理として、所定の演算を行い、当該演算の結果を暗号化する、請求項１に記載の情報処理システム。
【請求項４】
前記演算処理部は、前記所定の処理として、複数の前記復号された暗号化データを１つのデータに統合し、当該統合の結果を暗号化する、請求項１に記載の情報処理システム。
【請求項５】
前記処理実行部は、
前記演算処理部の前記所定の処理として、復号前の暗号化データの暗号方式とは異なる暗号方式で暗号化する暗号方式変換部と、
前記演算処理部の前記所定の処理として、所定の演算を行い、当該演算の結果を暗号化する演算部と、
前記演算処理部の前記所定の処理として、複数の前記復号された暗号化データを１つのデータに統合し、統合の結果を暗号化する統合部と、
前記処理の要求に応じて、前記暗号方式変換部、前記演算部、または前記統合部の少なくともいずれか一つを制御する制御部と、を含む、請求項１に記載の情報処理システム。
【請求項６】
ユーザと対応付けられるシステム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての処理の要求に応じて、標準実行環境から保護される仮想実行環境を一時的に構築する処理実行部と、を備え、
前記鍵管理部は、前記処理実行部が前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境は、
前記暗号化データを取得する暗号化データ取得部と、
前記鍵管理部から、前記システム鍵を取得する鍵取得部と、
前記取得したシステム鍵に基づき前記暗号化データを復号する第１演算処理部と、を含み、
前記処理実行部は、
前記仮想実行環境を構築する仮想実行環境構築部と、
前記暗号化データについての処理が所定の条件を満たすか否かを判断する判断部と、
前記暗号化データを復号せずに前記処理を実行する第２演算処理部と、を有し、
前記判断部が前記所定の条件を満たすと判断したことに応じて、
前記仮想実行環境構築部は、前記仮想実行環境を構築し、
前記第１演算処理部は、前記暗号化データについて復号して、前記処理を実行し、実行結果を前記記憶部に記憶させ、
前記判断部が前記所定の条件を満たさないと判断したことに応じて、
前記第２演算処理部は、前記暗号化データについて前記処理を実行する、情報処理システム。
【請求項７】
標準実行環境から保護される仮想実行環境において、ユーザと対応付けられるシステム鍵に基づき暗号化された暗号化データについての処理を実行する情報処理装置であって、
前記システム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての前記処理の要求に応じて、前記仮想実行環境を構築する仮想実行環境構築部と、を備え、
前記鍵管理部は、前記仮想実行環境構築部が前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境は、
前記暗号化データを取得する暗号化データ取得部と、
前記取得した暗号化データの暗号方式とは異なる暗号ライブラリをソースコードとして取得するソースコード取得部と、
前記鍵管理部から、前記システム鍵を取得する鍵取得部と、
前記取得したシステム鍵とは異なるシステム鍵を生成する鍵生成部と、
前記取得したシステム鍵に基づき、前記暗号化データを復号する復号部と、
前記復号された暗号化データに対し、前記生成したシステム鍵に基づいて前記暗号ライブラリであるソースコードを実行するソースコード実行部と、
前記実行した結果を、暗号化データとして前記記憶部に記憶させる提供部と、
を含む、情報処理装置。
【請求項８】
標準実行環境から保護される仮想実行環境において、ユーザと対応付けられるシステム鍵に基づき暗号化された暗号化データについての処理を行う情報処理装置であって、
前記システム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての前記処理の要求に応じて、前記仮想実行環境を構築する仮想実行環境構築部と、を備え、
前記鍵管理部は、前記仮想実行環境構築部が前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境は、
前記暗号化データを取得する暗号化データ取得部と、
前記処理のためのソースコードを取得するソースコード取得部と、
前記鍵管理部から、前記システム鍵を取得する鍵取得部と、
前記取得したシステム鍵とは異なるシステム鍵を生成する鍵生成部と、
前記取得したシステム鍵に基づいて、前記暗号化データを復号する復号部と、
前記復号された暗号化データに対し、前記ソースコードを実行するソースコード実行部と、
前記実行した結果を、前記生成したシステム鍵に基づいて暗号化する暗号化部と、
前記暗号化された実行結果を、暗号化データとして前記記憶部に記憶させる提供部と、
を含む、情報処理装置。
【請求項９】
標準実行環境から保護される仮想実行環境において、システム鍵に基づき暗号化された暗号化データについての処理を行う情報処理装置であって、
前記システム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての前記処理の要求に応じて、前記仮想実行環境を構築する仮想実行環境構築部と、
前記暗号化データについての処理が所定の条件を満たすか否かを判断する判断部と、
前記暗号化データを復号せずに前記処理を行う演算処理部と、を備え、
前記仮想実行環境は、
前記暗号化データを取得する暗号化データ取得部と、
前記処理のためのソースコードを取得するソースコード取得部と、
前記鍵管理部から、前記システム鍵を取得する鍵取得部と、
前記取得したシステム鍵に基づいて、前記暗号化データを復号する復号部と、
前記復号された暗号化データに対し、前記ソースコードを実行するソースコード実行部と、
前記実行した結果を、前記システム鍵に基づいて暗号化する暗号化部と、
前記暗号化された実行結果を、暗号化データとして前記記憶部に記憶させる提供部と、
を含み、
前記判断部が前記所定の条件を満たすと判断したことに応じて、前記仮想実行環境構築部は、前記仮想実行環境を構築し、
前記判断部が前記所定の条件を満たさないと判断したことに応じて、前記演算処理部は、前記暗号化データについて前記処理を行う、情報処理装置。
【請求項１０】
標準実行環境から保護される仮想実行環境において、ユーザと対応付けられるシステム鍵に基づき暗号化された暗号化データについての処理を行う情報処理装置であって、
前記システム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての前記処理の要求に応じて、前記仮想実行環境を構築する仮想実行環境構築部と、を備え、
前記鍵管理部は、前記仮想実行環境構築部が前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境は、
前記暗号化データを複数取得する暗号化データ取得部と、
複数のデータを１つに統合する前記処理のためのソースコードを取得するソースコード取得部と、
前記鍵管理部から、前記複数の暗号化データのそれぞれを暗号化したシステム鍵を取得する鍵取得部と、
前記取得したシステム鍵と異なるシステム鍵を生成する鍵生成部と、
前記取得したシステム鍵に基づいて、前記複数の暗号化データを復号する復号部と、
前記復号された暗号化データに対し、前記ソースコードを実行するソースコード実行部と、
前記実行した結果を、前記生成したシステム鍵に基づいて暗号化する暗号化部と、
前記暗号化された実行結果を、暗号化データとして前記記憶部に記憶させる提供部と、
を含む、情報処理装置。
【請求項１１】
前記仮想実行環境構築部は、前記ソースコードを前記仮想実行環境に含めて前記仮想実行環境を構築する、請求項７から請求項１０のいずれか一項に記載の情報処理装置。
【請求項１２】
ユーザと対応付けられるシステム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての処理の要求に応じて、標準実行環境から保護される仮想実行環境を一時的に構築する処理実行部と、を備え、
前記鍵管理部は、前記処理実行部が前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境は、
前記暗号化データを取得する暗号化データ取得部と、
前記鍵管理部から、前記システム鍵を取得する鍵取得部と、
前記取得したシステム鍵に基づき前記暗号化データを復号する演算処理部と、を含み、
前記演算処理部は、前記取得したシステム鍵とは異なるシステム鍵を生成する鍵生成部を有し、
前記演算処理部は、前記復号した暗号化データについて、前記生成したシステム鍵を用いて所定の処理を実行し、実行結果を前記記憶部に記憶させる、情報処理装置。
【請求項１３】
制御部および記憶部を備えるコンピュータにおいて実行させる情報処理方法であって、
前記制御部が、ユーザと対応付けられるシステム鍵を管理するステップと、
前記記憶部が、前記システム鍵で暗号化された暗号化データを記憶するステップと、
前記制御部が、前記暗号化データについての処理の要求に応じて、標準実行環境から保護される仮想実行環境を一時的に構築するステップと、を備え、
前記制御部は、前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境において、
前記制御部が、前記暗号化データを取得するステップと、
前記制御部が、前記システム鍵を取得するステップと、
前記制御部が、前記取得したシステム鍵に基づき前記暗号化データを復号するステップと、
前記制御部が、前記取得したシステム鍵とは異なるシステム鍵を生成するステップと、
前記制御部が、前記復号した暗号化データについて、前記生成したシステム鍵を用いて所定の処理を実行し、実行結果を前記記憶部に記憶させるステップと、を含む、
情報処理方法。
【請求項１４】
請求項１３に記載の情報処理方法をコンピュータに実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理システム、情報処理装置、情報処理方法、および、情報処理プログラムに関する。
【背景技術】
【０００２】
個人情報などの機密データをクラウド上のサーバで管理している状況において、クラウドサーバからの情報漏洩を防止しつつ同時に情報を活用する為に、データを予め暗号化してからクラウドサーバに預けておき、クラウドサーバに預けられた暗号化データを利用する際に、暗号化状態のまま演算をすることができる暗号技術が知られている。例えば、特許文献１には、加法・減法に対して準同型の性質を持つ暗号関数を利用し、暗号化状態のまま加法、減法、乗法、除法の演算をすることができる公開鍵暗号ベースの秘匿演算技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２２７１９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１のように、準同型暗号方式を用いれば、暗号文の加算や乗算により、暗号文を復号することなく、加算や乗算を行った演算結果の暗号文を得ることができる。しかしながら、準同型の性質を持つような暗号関数により暗号化された暗号文は、信頼性は高いものの、暗号文のサイズが非常に大きく、計算量が膨大になってしまうため、実用的システムへの適用は容易ではない。
【０００５】
そこで、本開示は、上記課題を解決すべくなされたものであって、その目的は、暗号化されたデータについて効率よく処理することができる技術を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本開示に係る情報処理システムは、システム鍵を管理する鍵管理部と、システム鍵で暗号化された暗号化データを記憶する記憶部と、標準実行環境から保護される仮想実行環境を一時的に構築し、当該仮想実行環境において、鍵管理部から取得したシステム鍵に基づき暗号化データを復号する処理実行部と、を備える。
【０００７】
上記目的を達成するため、本開示に係る情報処理装置は、システム鍵を管理する鍵管理部と、システム鍵で暗号化された暗号化データを記憶する記憶部と、標準実行環境から保護される仮想実行環境を一時的に構築し、当該仮想実行環境において、鍵管理部から取得したシステム鍵に基づき暗号化データを復号する処理実行部と、を備える。
【０００８】
また、上記目的を達成するため、本開示に係る情報処理方法は、制御部および記憶部を備えるコンピュータにおいて実行させる方法であって、制御部が、システム鍵を管理するステップと、記憶部が、システム鍵で暗号化された暗号化データを記憶するステップと、制御部が、標準実行環境から保護される仮想実行環境を一時的に構築し、当該仮想実行環境において、システム鍵に基づき暗号化データを復号するステップと、を備える。
【０００９】
また、上記目的を達成するため、本開示に係る情報処理プログラムは、上記情報処理方法をコンピュータに実行させる。
【発明の効果】
【００１０】
本開示によれば、暗号化されたデータについて効率よく処理することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理システム１の構成を示す図である。
【図２】演算サーバ１００の機能構成の一例を示す機能ブロック図である。
【図３】登録サーバ２００の機能構成の一例を示す機能ブロック図である。
【図４】登録サーバ２００における処理の一例を示すシーケンス図である。
【図５】演算サーバ１００における認証処理の一例を示すシーケンス図である。
【図６】演算サーバ１００における演算処理の一例を示すシーケンス図である。
【図７】演算サーバ１００のハードウェア構成を示すブロック図である。
【図８】演算サーバ４００の機能構成の一例を示す機能ブロック図である。
【図９】演算サーバ５００の機能構成の一例を示す機能ブロック図である。
【図１０】秘密計算システム１０００の構成を示す図である。
【図１１】暗号方式変換部１４００の機能構成の一例を示す機能ブロック図である。
【図１２】演算部１５００の機能構成の一例を示す機能ブロック図である。
【図１３】統合部１６００の機能構成の一例を示す機能ブロック図である。
【図１４】秘密計算システム１０００における処理の一例を示すフローチャートである。
【図１５】統合する処理を説明する図である。
【発明を実施するための形態】
【００１２】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【００１３】
＜実施形態１＞
（情報処理システム１の構成）
図１は、本実施形態に係る情報処理システム１の構成を示す図である。図１を参照して、実施形態１に係る情報処理システム１の構成について説明する。
【００１４】
情報処理システム１は、データセンタ１０と、端末３００−１，３００−２，…，３００−Ｎ（Ｎは自然数）と、を備え、ネットワークＮＷを介して通信可能に接続される。ネットワークＮＷは、例えば、ＷＡＮ（Wide Area Network）、ＬＡＮ（Local Area Network）等であるが、任意のネットワークから構成されてもよい。なお、以下の説明では、端末３００−１，３００−２，…，３００−Ｎは、特に区別する必要のない限り、端末３００と記載する。また、本実施形態においては、データセンタ１０はネットワークＮＷを介して端末３００等と接続されているが、これに限られず、情報処理システム１は、データセンタ１０とローカルに接続される端末３００等を備えていてもよい。
【００１５】
データセンタ１０は、情報処理システム１を利用するユーザ等に対し演算処理を提供し、演算サーバ１００と登録サーバ２００とを有する。演算サーバ１００は、暗号化データについて演算を行う演算装置に相当し、ネットワークＮＷに接続される端末３００等から受信した演算処理要求に応じて、暗号化データについて演算を行う。登録サーバ２００は、上述のユーザに対し、情報処理システム１を利用するための事前登録処理を行う。
【００１６】
端末３００は、上述のユーザが用いる情報処理装置であって、例えば、ＰＣ（Personal Computer）、スマートフォン、タブレット端末、ヘッドマウントディスプレイ等のウェアラブル端末、ＡＲ（Augmented Reality）／ＶＲ（Virtual Reality）／ＭＲ（Mixed Reality）装置等である。端末３００は、登録サーバ２００に対して利用の申請を行ったり、演算サーバ１００に対して演算処理の要求を行なったりする。
【００１７】
（演算サーバ１００の機能構成）
図２は、演算サーバ１００の機能構成の一例を示す機能ブロック図である。図２を参照して、演算サーバ１００の機能構成の一例について説明する。
【００１８】
演算サーバ１００には、ＯＳ（Operating System）１１０が搭載され、ＯＳ１１０において、アプリケーション１２０が動作する。ＯＳ１１０は、制御部１１１と、認証部１１４と、鍵管理部１１５と、記憶部１１６と、を備える。ここで、ＯＳ１１０において、ＯＳにインストールされるプログラムや、アプリケーション等の実行に使用される環境を「標準実行環境」と呼ぶ。
【００１９】
制御部１１１は、仮想実行環境構築部１１２と、仮想実行環境廃棄部１１３と、を有し、暗号化データ１１７（後述）を利用するアプリケーション１２０から、暗号化データ１１７についての演算処理要求を受けて、演算処理の制御を行う。
【００２０】
仮想実行環境構築部１１２は、演算処理要求に応じて、標準実行環境から保護された仮想実行環境を構築する。すなわち、認証もしくは許可されたユーザしか標準実行環境から仮想実行環境にはアクセスすることができない。認証や許可は、予め条件が定義されている場合は自動的に行われ、また、定義されていない場合は、アクセスするごとに認証や許可に関する処理が行われるようにしてもよい。なお、認証や許可の方法は、公知の任意の技術を用いることができる。また、仮想実行環境は、標準実行環境から信頼された環境であってもよい。本実施形態において、仮想実行環境は、ＯＳ１１０の一部として実装されるが、構築する方法は特に限定されるものではなく、アプリケーションとして実装されてもよいし、アプリケーション内のモジュールとして実装されてもよい。また、仮想実行環境は、標準実行環境とハードウェアのメモリ部分を共有してもよいし、非共有であってもよい。仮想実行環境は、実体としては所定のデータで表されるが、ＯＳ１１０上で実行されることにより、仮想化されたアプリケーションサーバ等として利用できる。
【００２１】
仮想実行環境廃棄部１１３は、上述の仮想実行環境を廃棄する（消滅させる）。例えば、仮想実行環境を表す所定のデータを削除することで、仮想実行環境を廃棄する。仮想実行環境廃棄部１１３は、ソースコード実行部１３４（後述）がソースコードの実行を開始して所定時間経過後、仮想実行環境を廃棄してもよい。また、提供部１３６（後述）が暗号化された演算結果を提供した後、仮想実行環境を廃棄してもよい。また、認証部１１４（後述）が認証したユーザからの指示に基づいて、仮想実行環境を廃棄してもよい。また、仮想実行環境は、所定の定期的なタイミングで廃棄されてもよい。なお、仮想実行環境を廃棄するまでの時間（期間）は数秒から数分が好ましいが、処理量などに応じて適宜設定されてもよい。
【００２２】
すなわち、暗号化データについてソースコードの実行により演算を行う仮想実行環境は、ワンタイム（使い捨て）の実行環境である。アクセス制限された実行環境であっても、十分な時間が与えられた侵入者（認証されない、不正なユーザ等）には容易にアクセスしうる。そこで、本実施形態では、ワンタイムの仮想実行環境において演算を行うことで、侵入者がアクセスするリスクを低減させ、セキュリティの向上を図っている。
【００２３】
認証部１１４は、仮想実行環境に対し、セキュアにアクセス可能なユーザか否かを認証する。例えば、ユーザを識別する識別情報（ＩＤ）と認証情報とを対応付けて記憶する認証データベースを有しており、情報処理システム１の利用登録がされたユーザについて認証する。なお、認証情報は、ユーザの意思に基づいて変更可能としてもよいし、所定期間ごとに変更させるようにしてもよい。また、認証情報は、所定期間ごとや、仮想実行環境を構築するごとに更新されるワンタイムパスワード（One Time Password;ＯＴＰ）としてもよい。ＯＴＰは、例えば、時間に依存した関数によって計算されたランダムな数字、文字、記号等から生成されるが、この方法に限定されず、他の方法で行われてもよい。ＯＰＴは、例えば、ユーザからの認証要求の度に、認証部１１４からユーザのメールアドレスやＳＭＳ（Short Message Service）に送られるようにしてもよい。この場合、メールやＳＭＳについて閲覧権限がないとＯＰＴを取得することができないため、セキュリティをより強固にすることができる。
【００２４】
鍵管理部１１５は、ユーザのＩＤと、情報処理システム１においてデータを暗号化するのに用いるシステム鍵とを対応付けて記憶する鍵データベースを有している。鍵管理部１１５は、例えば、ユーザの利用登録が実行された際にシステム鍵を生成し、鍵データベースに登録してもよい。なお、鍵管理部１１５は、演算サーバ１００においてＯＳ１１０とは異なるＯＳに備えられていてもよい。また、システム鍵は、ネットワークＮＷを介したユーザ側で生成され、セキュリティが確保された方法により、鍵管理部１１５の鍵データベースに登録されるようにしてもよいし、鍵管理部１１５がネットワークＮＷを介して演算サーバ１００に接続されていてもよい。セキュリティが確保された方法は、例えば、公開鍵アルゴリズム等の周知技術を利用する方法に限られず、書類や対面であってもよい。
【００２５】
記憶部１１６は、暗号化データ１１７と、ソースコード１１８と、を記憶する。暗号化データ１１７は、上述のシステム鍵によって暗号化されたデータである。本実施形態において、暗号化されるデータは、例えば、個人情報などプライバシー面での配慮が要求されるデータであるが、これに限られず、暗号化されたデータを含んで生成されるデータなど、どのようなデータであってもよい。
【００２６】
ソースコード１１８は、演算のためのソースコードであり、暗号化データ１１７をシステム鍵によって復号したデータについて演算を実行するプログラムである。暗号化データ１１７およびソースコード１１８は、端末３００から演算サーバ１００に対してネットワークＮＷを介して送信されてもよいし、記憶媒体等から取得してもよい。また、予め記憶部１１６に格納されていてもよい。
【００２７】
ソースコード１１８は、暗号化データ１１７に基づいて学習モデルを生成するアルゴリズムであってもよく、例えば、復号した暗号化データ１１７について相関関係等を抽出し、演算結果として学習モデルを生成する。
【００２８】
アプリケーション１２０は、ＯＳ１１０上で動作するアプリケーションであり、例えば、暗号化されたデータについて、解析や分析を行う。アプリケーション１２０が演算ＡＰＩ（Application Program Interface）を呼び出すと、演算処理要求が制御部１１１に出力される。制御部１１１の仮想実行環境構築部１１２は、演算処理要求に応じて上述の仮想実行環境を構築する。
【００２９】
仮想実行環境には、ＯＳ１３０が搭載される。ＯＳ１３０は、演算処理部１３１を備える。制御部１１１は、ＯＳ１１０とＯＳ１３０との間で、セキュアな通信チャネルを形成する。例えば、ＯＳ１１０とＯＳ１３０との間で送受信されるデータを暗号化するセッション鍵を、予め仮想実行環境が含むように仮想実行環境を構築してもよいし、ＯＳ１３０またはＯＳ１１０で生成したセッション鍵を、公開鍵アルゴリズム等を利用した周知技術により共有するようにしてもよい。本実施形態では、ＯＳ１１０とＯＳ１３０とは、上述のセキュアな通信チャネルを通してデータを送受信するが、暗号化されているデータについては、セッション鍵で暗号化を行わないようにしてもよい。これにより、処理の負担が軽減する。
【００３０】
演算処理部１３１は、例えば、ＯＳ１３０にインストールされる演算プログラムであって、取得部１３２と、復号部１３３と、ソースコード実行部１３４と、暗号化部１３５と、提供部１３６と、を含む。
【００３１】
取得部１３２は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部１１６から暗号化データ１１７およびソースコード１１８、並びに鍵管理部１１５からシステム鍵を取得する。
【００３２】
復号部１３３は、取得部１３２が取得したシステム鍵によって、暗号化データ１１７を復号する。
【００３３】
ソースコード実行部１３４は、復号された暗号化データ１１７に対し、ソースコード１１８を実行する。
【００３４】
暗号化部１３５は、ソースコード実行部１３４が実行した演算結果を暗号化する。暗号化部１３５は、取得部１３２が取得したシステム鍵によって暗号化してもよいし、当該システム鍵に代えて、当該システム鍵とは異なる鍵によって暗号化してもよい。例えば、鍵管理部１１５は、システム鍵および当該システム鍵とは異なる鍵（システム鍵）を生成し、取得部１３２は、これらの鍵を取得して暗号化部１３５に送ってもよい。また、取得部１３２は、演算処理部１３１の鍵生成部（図２において不図示）で生成した、システム鍵とは異なる鍵を取得し、暗号化部１３５に送ってもよい。これにより、例えば、演算結果にアクセスを許可するユーザにのみ上記異なる鍵を付与するようにして、演算結果に対するアクセス権限を管理することができる。
【００３５】
提供部１３６は、暗号化された演算結果を標準実行環境等に提供する。例えば、暗号化された演算結果を記憶部１１６に格納してもよいし、アプリケーション１２０に処理要求に対する応答として出力してもよい。なお、提供部１３６は、上述の鍵生成部で生成した、システム鍵とは異なる鍵（システム鍵）を、標準実行環境に提供するようにしてもよい。
【００３６】
暗号化された演算結果が提供された後、仮想実行環境は廃棄される。なお、本実施形態では、仮想実行環境廃棄部１１３は、ＯＳ１１０に備えられるが、ＯＳ１１０に代えてＯＳ１３０に備えられてもよいし、ＯＳ１１０およびＯＳ１３０に備えられてもよい。
【００３７】
上述のように、本実施形態における演算処理では、アプリケーション１２０が演算ＡＰＩを呼び出すと、制御部１１１の仮想実行環境構築部１１２が標準実行環境から保護された仮想実行環境を構築し、暗号化データについての演算処理をＯＳ１３０の演算処理部１３１に委託する。演算処理部１３１は、暗号化データを復号し、復号された暗号化データについて演算を実行し、演算結果を暗号化して、標準実行環境に提供する。復号された暗号化データ（生データ）に対して演算処理を行うことにより、暗号化状態のまま演算を行うことができる準同型暗号等を用いた演算よりも処理効率を向上させることができる。また、標準実行環境から保護された仮想実行環境においてデータの復号を行って演算処理を行うので、認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【００３８】
また、仮想実行環境は、ソースコード実行後、所定のタイミングで廃棄されるワンタイム（使い捨て）の実行環境であるため、仮想実行環境のＯＳ１３０への攻撃による暗号鍵の不正取得等のリスクを低減し、セキュリティの向上を図ることができる。また、本実施形態における仮想実行環境の構成は、ソフトウエア技術のみで実現可能であり、追加ハードウェアを必要としないため、運用コストを安価にすることができる。
【００３９】
（登録サーバ２００の機能構成）
図３は、登録サーバ２００の機能構成の一例を示す機能ブロック図である。図３を参照して、登録サーバ２００の機能構成の一例について説明する。
【００４０】
登録サーバ２００は、ＩＤ生成部２０１と、認証情報生成部２０２と、を備える。ＩＤ生成部２０１は、ユーザの利用申請に応じて、ユーザを識別する識別情報（ＩＤ）を生成する。認証情報生成部２０２は、ユーザの認証情報を生成する。例えば、乱数発生器等を用いて、認証情報としてパスワードを生成する。
【００４１】
（登録サーバ２００における処理）
図４は、登録サーバ２００における処理の一例を示すシーケンス図である。図４を参照して、本実施形態に係る情報処理システム１に対する利用登録処理について説明する。なお、利用登録は、端末３００、登録サーバ２００、演算サーバ１００間において、上述のようにセキュリティが確保された方法により行われる。
【００４２】
ステップＳ１０１において、端末３００は、登録サーバ２００に対し、利用申請を行う。
【００４３】
ステップＳ１０３において、登録サーバ２００は、ユーザを識別するＩＤおよび認証情報を生成する。
【００４４】
ステップＳ１０５において、端末３００は、ステップＳ１０３において生成されたＩＤおよび認証情報を取得する。例えば、端末３００は、情報処理システム１の運営会社から書面によってＩＤおよび認証情報を受け取ってもよいし、公開鍵アルゴリズム等の周知技術によりＩＤおよび認証情報を受信してもよい。
【００４５】
ステップＳ１０７において、演算サーバ１００の認証部１１４は、ステップＳ１０５と同様に、セキュリティが確保された方法により、ＩＤと認証情報を取得する。
【００４６】
ステップＳ１０９において、認証部１１４は、認証データベースにＩＤと認証情報とを対応付けて登録する。
【００４７】
ステップＳ１１１において、鍵管理部１１５は、ユーザのＩＤを取得する。
【００４８】
ステップＳ１１３において、鍵管理部１１５は、ユーザのＩＤに対応したシステム鍵を生成し、鍵データベースにＩＤとシステム鍵とを対応付けて登録する。
【００４９】
（演算サーバ１００における認証処理）
図５は、演算サーバ１００における認証処理の一例を示すシーケンス図である。図５を参照して、演算サーバ１００における認証処理について説明する。なお、図５で示す処理ステップの順序は一例であり、また、認証方法や、システム鍵の共有方法は、以下で説明する方法に限られないことは言うまでもない。
【００５０】
ステップＳ２０１において、端末３００は、演算サーバ１００に対し、認証要求と共に、端末３００を利用するユーザのＩＤを送信する。また、ステップＳ２０２において、端末３００は、自身の公開鍵および秘密鍵を生成する。
【００５１】
ステップＳ２０３において、認証部１１４は、認証要求に応じて乱数を生成し、ステップＳ２０５において、端末３００に送信する。
【００５２】
ステップＳ２０７において、端末３００は、受信した乱数と、上述の利用登録により取得した認証情報とを連結して、ハッシュを生成する。
【００５３】
ステップＳ２０９において、端末３００は、生成したハッシュおよび公開鍵を含む情報を認証部１１４に送信する。
【００５４】
ステップＳ２１１において、認証部１１４は、ステップＳ２０１において認証要求と共に受信したＩＤに対応する認証情報を認証データベースから読み出し、読み出した認証情報と、ステップＳ２０３において生成した乱数とを連結して、ハッシュを生成する。そして、端末３００から受信したハッシュが、認証部１１４が生成したハッシュと一致するか否かを判定する。
【００５５】
ハッシュが一致しない場合、ステップＳ２１２において、認証部１１４は、認証要求したユーザは、利用登録されていないユーザとして判断し、認証に失敗した旨を送信する。一方、ハッシュが一致した場合、ステップＳ２１３において、認証部１１４は、認証要求したユーザを認証されたユーザとして判断し、鍵管理部１１５に対し、ユーザのＩＤとステップＳ２０９において受信した公開鍵を送信する。
【００５６】
ステップＳ２１５において、鍵管理部１１５は、ＩＤに対応するシステム鍵を鍵データベースにおいて検索する。
【００５７】
ステップＳ２１７において、鍵管理部１１５は、検索したシステム鍵をステップＳ２１３において受信した公開鍵で暗号化し、ステップＳ２１９において、暗号化されたシステム鍵を端末３００に送信する。
【００５８】
ステップ２２１において、端末３００は、暗号化されたシステム鍵を、ステップＳ２０２において生成した秘密鍵で復号し、システム鍵を登録する。端末３００は、情報処理システム１において、演算サーバ１００で演算処理を要求する際に扱うデータは、当該システム鍵で暗号化する。
【００５９】
なお、本実施形態では、システム鍵は鍵管理部１１５によって生成されたが、端末３００側で生成し、鍵管理部１１５と共有してもよい。
【００６０】
（演算サーバ１００における演算処理）
図６は、演算サーバ１００における演算処理の一例を示すシーケンス図である。図６を参照して、演算サーバ１００における演算処理について説明する。なお、図６で示す処理ステップの順序は一例であり、以下で説明する処理手順に限られないことは言うまでもない。また、図６において、端末３００は、図５で認証された端末３００とする。
【００６１】
ステップＳ３０１において、端末３００は、演算サーバ１００に対し、演算の処理要求を行う。例えば、演算ＡＰＩを呼び出し、制御部１１１に対し演算の処理要求を行う。なお、ＯＳ１１０上で動作するアプリケーションから処理要求が行われてもよい。
【００６２】
ステップＳ３０３において、制御部１１１は、処理要求に応じて、仮想実行環境を構築する。
【００６３】
ステップＳ３０５において、端末３００は、演算サーバ１００に対し、暗号化データを送信し、記憶部１１６は、暗号化データを格納する。なお、図６の例では、記憶部１１６には予めソースコードが格納されている。
【００６４】
ステップＳ３０７において、演算処理部１３１は、暗号化データおよびソースコードを記憶部１１６から取得する。
【００６５】
ステップＳ３０９において、演算処理部１３１は、鍵管理部１１５からシステム鍵を取得する。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。
【００６６】
ステップＳ３１１において、演算処理部１３１は、暗号化データをシステム鍵により復号し、ステップＳ３１３において、復号された暗号化データに対し、ソースコードを実行する。
【００６７】
ステップＳ３１５において、ソースコードを実行した演算結果をシステム鍵により暗号化し、ステップＳ３１７において、端末３００に対して送信される。なお、暗号化された演算結果は、記憶部１１６に格納されてもよい。
【００６８】
ステップ３１９において、演算処理部１３１は、暗号化された演算結果を提供したことを制御部１１１に通知する。
【００６９】
ステップＳ３２１において、制御部１１１は、ステップＳ３１９において演算結果の提供が終了した旨の通知を受けたことに応じて、仮想実行環境の廃棄を行う。
【００７０】
（ハードウェア構成図）
図７は、演算サーバ１００のハードウェア構成を示すブロック図である。演算サーバ１００は、コンピュータ５０１に実装される。コンピュータ５０１は、ＣＰＵ５０２と、主記憶装置５０３と、補助記憶装置５０４と、インターフェイス５０５と、を備える。
【００７１】
演算サーバ１００の各構成要素の動作は、プログラムの形式で補助記憶装置５０４に記憶されている。ＣＰＵ５０２は、プログラムを補助記憶装置５０４から読み出して主記憶装置５０３に展開し、当該プログラムに従って上記処理を実行する。また、ＣＰＵ５０２は、プログラムに従って、記憶領域を主記憶装置５０３に確保する。当該プログラムは、具体的には、コンピュータ５０１に、暗号化データについて演算を行うプログラムである。
【００７２】
なお、補助記憶装置５０４は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インターフェイス５０５を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムがネットワークを介してコンピュータ５０１に配信される場合、配信を受けたコンピュータ５０１が当該プログラムを主記憶装置５０３に展開し、処理を実行してもよい。
【００７３】
また、当該プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、当該プログラムは、前述した機能を補助記憶装置５０４に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル（差分プログラム）であってもよい。なお、図７に示したハードウェア構成は、登録サーバ２００および端末３００も同様の構成としてもよい。これらの装置における各構成要素の動作も、上述の演算サーバ１００と同様に、補助記憶装置に記憶されたプログラムに従ったＣＰＵにより実現する。
【００７４】
（効果の説明）
上述したように、本実施形態では、標準実行環境から保護された仮想実行環境を構築し、暗号化データについての演算処理を仮想実行環境において実行する。仮想実行環境では、暗号化データが復号され、復号された暗号化データについて演算が実行される。そして、演算結果は暗号化され、標準実行環境に提供される。復号された暗号化データ（生データ）に対して演算処理を行うことにより、暗号化状態のまま演算を行うことができる準同型暗号等を用いた演算よりも処理効率を向上させることができる。また、標準実行環境から保護された仮想実行環境においてデータの復号を行って演算処理を行うので、認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【００７５】
また、仮想実行環境は、ソースコード実行後、所定のタイミングで廃棄されるワンタイム（使い捨て）の実行環境であるため、仮想実行環境のＯＳへの攻撃等による暗号鍵の不正取得等のリスクを低減し、セキュリティの向上を図ることができる。また、本実施形態における仮想実行環境の構成は、ソフトウエア技術のみで実現可能であり、追加ハードウェアを必要としないため、運用コストを安価にすることができる。
【００７６】
＜実施形態１の変形例１＞
上述の演算サーバ１００において、鍵管理部１１５は、共通鍵暗号方式および公開鍵暗号方式のシステム鍵を管理してもよい。すなわち、鍵管理部１１５は、共通鍵、ならびに公開鍵および秘密鍵の鍵対であるシステム鍵（システム公開鍵およびシステム秘密鍵）を管理し、ユーザが用いる端末３００と共有するようにしてもよい。なお、鍵管理部１１５は、ユーザと対応付けられていないシステム鍵を管理していてもよく、また、暗号化データへのアクセスが許可されたユーザと事後的に対応付けられるようにしておいてもよい。
【００７７】
端末３００は、システム鍵に基づいて、機微データ等のプライバシー面での考慮が要求されるデータを暗号化し、暗号化データ１１７として演算サーバ１００に送信する。端末３００は、例えば、暗号化するデータの属性（文字列や変数の中身等）に応じて、ＡＥＳや共通鍵暗号ベース検索可能暗号などの共通鍵暗号方式や、準同型暗号（ＨＥ：Homomorphic Encryption）などの公開鍵暗号方式の暗号方式を用いて暗号化する。また、上記の暗号方式に限られず、総務省及び経済産業省によって策定されている「電子政府における調達のために参照すべき暗号のリスト(ＣＲＹＰＴＲＥＣ暗号リスト)」に記載される暗号技術が用いられてもよい。暗号化データ１１７は、仮想実行環境において、復号部１３３により、システム鍵に基づいて復号され、平文データに対して、ソースコード１１８が実行される。
【００７８】
ソースコード１１８は、平文処理用の演算アルゴリズムであり、仮想実行環境において復号された暗号化データ１１７に対して実行されることにより、暗号化データ１１７の秘密計算プロセスを高速化することができる。ソースコード実行部１３４は、例えば、復号した暗号化データ１１７についてキーデータの比較演算、データ解析のための条件分岐先が決定されたデータや、ソート等されたデータを生成するソースコードを実行する。すなわち、準同型暗号などによる暗号化状態のまま計算すると処理時間がかかってしまうような暗号化データについて、一時的に構築した仮想実行環境において暗号化データを復号して演算を実行することで、処理の高速化を図るものである。
【００７９】
暗号化部１３５は、演算結果をシステム鍵に基づいて暗号化し、暗号化された演算結果は、標準実行環境に提供される。暗号化部１３５は、共通鍵方式や公開鍵方式の暗号方式で暗号化を行う。端末３００は、暗号化された演算結果を、システム鍵に基づいて復号し、利用することが出来る。なお、暗号化部１３５において用いられるシステム鍵は、当該暗号化データ１１７を送信した端末３００と共有したシステム鍵と異なる鍵にしてもよい。演算結果を暗号化する鍵を管理し、認証もしくは許可された者にのみ鍵を付与することで、演算結果へのアクセス管理を容易に行うことが出来る。
【００８０】
また、仮想実行環境廃棄部１１３は、復号部１３３が暗号化データ１１７を復号した後、認証部１１４が認証したユーザ等からの指示に基づいて、復号した暗号化データ１１７と共に仮想実行環境を廃棄するようにしてもよい。認証されたユーザのみが仮想実行環境にアクセスするため、ユーザは、セキュリティが確保された環境において復号された暗号化データ１１７の内容の確認や分析を行うことができる。また、標準実行環境に提供することなく仮想実行環境とともに廃棄するため、情報流出の虞がない。
【００８１】
＜実施形態１の変形例２＞
上述の演算サーバ１００において、仮想実行環境において複数の暗号化データを復号し、１つのデータに統合して暗号化するようにしてもよい。すなわち、ソースコード１１８は、複数のデータを１つのデータに統合する処理を行うためのアルゴリズムであってもよい。統合とは、例えば、共通したキーをもつ２つ以上のデータベーステーブルについて、その共通キーを「統合キー」として、データベーステーブルを横・もしくは縦に連結させることである。
【００８２】
図１５は、統合する処理を説明する図である。図１５の例では、人事ドキュメント（テーブル）Ａ１５０ａと成績ドキュメント（テーブル）Ａ１５０ｂについて、共通したキーである「社員ＩＤ」を統合キーとして連結させ、統合ドキュメント（テーブル）Ａ１５１が生成される。なお、図１５の例は「統合」処理の一例であって、データの統合方法は上記方法に限られない。
【００８３】
＜実施形態２＞
本実施形態に係る演算サーバ４００は、仮想実行環境に対する不正なアクセスを検知する検知部を備える点で、実施形態１に係る演算サーバ１００と異なる。
【００８４】
図８は、演算サーバ４００の機能構成の一例を示す機能ブロック図である。図２で示した実施形態１に係る演算サーバ１００とは、検知部１１９を備える点と、仮想実行環境廃棄部１１３に代えて仮想実行環境廃棄部４１３を備える点が異なる。したがって、一致する点については、説明は省略する。
【００８５】
ＯＳ１１０は、仮想実行環境に対する不正なアクセスを検知する検知部１１９を備える。検知部１１９は、例えば、ＯＳ１１０上で動作するプログラムであり、ＯＳ１１０上でプログラム等を動作させるために必要な各種リソース（ファイルやレジストリ、カーネルデータ構造体など）に対して書き込みや削除を行うようなアクセス要求を不正なアクセスとして検知してもよい。また、検知部１１９は、例えば、アカウントの乗っ取りや、異なるＩＰアドレスからのアクセス、ＩＤや認証情報等について所定期間における所定回数以上の試行、ユーザ指定プログラム以外のプログラムの割り込み等を不正なアクセスとして検知してもよいし、これらに限られず、公知の技術を採用して、不正なアクセスを検知してもよい。検知部１１９は、不正なアクセスを検知すると、不正なアクセスがある旨を仮想実行環境廃棄部４１３に通知する。
【００８６】
仮想実行環境廃棄部４１３は、検知部１１９が不正なアクセスを検知したことに基づいて、仮想実行環境を廃棄する。仮想実行環境に対する不正なアクセスを検知したことに応じて、仮想実行環境を廃棄することで、復号された暗号化データが不正に取得されることを防止することができ、セキュリティを向上させることができる。
【００８７】
＜実施形態３＞
本実施形態に係る演算サーバ５００は、暗号化データの暗号方式を変換する演算装置である。暗号方式の変換とは、例えば、鍵方式が異なる暗号方式への変換であったり、ある暗号方式における計算手法等が異なる方式への変換であったりするものである。より具体的には、ＡＥＳから準同型暗号への変換、共通鍵暗号ベース検索可能暗号から準同型暗号への変換、完全準同型暗号におけるＧＳＷ方式からＢＧＶ方式への変換など（それぞれ逆の変換であってもよい。）であるが、これらに限定するものではない。
【００８８】
なお、準同型暗号は、上述のように、データを暗号化したまま加算や乗算を行った演算結果の暗号文を得ることができる暗号技術である。準同型暗号は、暗号文の加算のみ実行可能な「加法準同型暗号」、乗算のみ実行可能な「乗法準同型暗号」、加算および乗算の両方が実行可能な「完全準同型暗号」、加算と乗算のどちらも実行できるものの演算の実行回数に制限がある「Ｓｏｍｅｗｈａｔ準同型暗号」等の複数の種類が存在するが、以下の本実施形態の説明では、準同型暗号の種類を特に限定するものではない。
【００８９】
図９は、演算サーバ５００の機能構成の一例を示す機能ブロック図である。図２で示した実施形態１に係る演算サーバ１００と機能が一致する点については同一の符号を付し、説明を省略する。
【００９０】
制御部５１１は、仮想実行環境構築部５１２と、仮想実行環境廃棄部１１３と、判定部５１４とを有し、暗号化データ５１７（後述）を利用するアプリケーション１２０から、暗号化データ５１７についての暗号方式変換の処理要求を受けて、処理の制御を行う。
【００９１】
判定部５１４は、暗号化データ５１７の暗号方式を判定する。判定部５１４は、例えば、暗号化データ５１７に含まれる暗号方式を示すタグ情報に基づいて暗号方式を判定してもよいし、アプリケーション１２０から暗号化データ５１７の暗号方式を示す情報を取得してもよい。また、判定部５１４は、暗号化データ５１７を解析し自動で暗号方式を判定するアルゴリズムを備えるようにしてもよい。なお、これらは判定方法を限定するものではなく、任意の方法で判定してよい。暗号方式は、例えば、共通暗号鍵方式である「ＤＥＳ」，「ＲＣ４」，「ＡＥＳ」，「共通鍵暗号ベース検索可能暗号」や、公開鍵暗号方式である「準同型暗号」，「ＲＳＡ」，「楕円曲線暗号」等である。また、上記の暗号方式に限られず、総務省及び経済産業省によって策定されている「電子政府における調達のために参照すべき暗号のリスト(ＣＲＹＰＴＲＥＣ暗号リスト)」に記載される暗号技術であってもよい。
【００９２】
判定部５１４は、暗号化データ５１７の暗号方式が所定の暗号方式であると判定すると、仮想実行環境構築部５１２に、標準実行環境から保護された仮想実行環境を構築するよう指示する。判定部５１４は、例えば、予め所定の暗号方式を示すテーブルを記憶しており、当該テーブルに基づいてどの暗号方式に変換するか判定する。また、判定部５１４は、例えば、アプリケーション１２０から暗号化データ５１７とソースコード（暗号ライブラリ）５１８とを受け付けて解析し、自動的にどの暗号方式に変換すべきか判定するアルゴリズムを備えるようにしてもよい。
【００９３】
仮想実行環境構築部５１２は、判定部５１４の判定に基づいて、仮想実行環境を構築する。
【００９４】
鍵管理部５１５は、ユーザのＩＤと、情報処理システム１においてデータを暗号化するのに用いるシステム鍵とを対応付けて記憶する鍵データベースを有している。鍵管理部５１５は、例えば、ユーザの利用登録が実行された際にシステム鍵を生成し、鍵データベースに登録してもよい。なお、鍵管理部５１５は、ユーザと対応付けられていないシステム鍵を管理していてもよく、また、暗号化データへのアクセスが許可されたユーザと事後的に対応付けられるようにしておいてもよい。システム鍵は、共通鍵、または、公開鍵および秘密鍵の鍵対（非対称鍵）であってもよく、いずれの場合であっても、上述の実施形態１に係る鍵管理部１１５と同様もしくは同様のセキュリティ水準が確保された方法等により、当該システム鍵をユーザと共有することができる。
【００９５】
記憶部５１６は、暗号化データ５１７と、ソースコード５１８と、を記憶する。暗号化データ５１７は、上述したように、例えば、「ＤＥＳ」，「ＲＣ４」，「ＡＥＳ」，「検索可能暗号」，「準同型暗号」，「ＲＳＡ」，「楕円曲線暗号」等の種々の暗号方式で暗号化されたデータであり、暗号化方式を示すタグ情報を含む。
【００９６】
ソースコード５１８は、種々の暗号方式の暗号ライブラリを含むソースコードであり、ソースコードが実行されることにより、例えば、平文データを、上述したような暗号方式で暗号化することができる。
【００９７】
演算処理部５３１は、取得部５３２と、復号部５３３と、ソースコード実行部５３４と、提供部５３６と、を含む。
【００９８】
取得部５３２は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部５１６から暗号化データ５１７および鍵管理部５１５からシステム鍵を取得する。当該システム鍵は、処理要求の暗号化データ５１７の暗号化に用いられたシステム鍵である。また、取得部５３２は、上記判定に応じ、変換すべき暗号方式の暗号ライブラリであるソースコード５１８を取得する。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。
【００９９】
復号部５３３は、取得部５３２が取得したシステム鍵によって、暗号化データ５１７を復号する。
【０１００】
ソースコード実行部５３４は、復号された暗号化データ５１７に対し、暗号ライブラリであるソースコードを実行する。なお、暗号ライブラリの実行に際し、復号で用いたシステム鍵を用いてもよいし、復号で用いたシステム鍵とは異なるシステム鍵を鍵管理部５１５から取得して用いるようにしてもよい。どのシステム鍵を用いるかは、システムの管理者やユーザが適宜設定することができる。
【０１０１】
提供部５３６は、ソースコード実行部５３４が実行した結果（すなわち、暗号方式が変換された暗号化データ）を、標準実行環境等に提供する。例えば、暗号方式が変換された暗号化データを記憶部５１６に格納してもよいし、アプリケーション１２０に処理要求に対する応答として出力してもよい。
【０１０２】
（効果の説明）
上述したように、本実施形態では、標準実行環境から保護された仮想実行環境を一時的に構築し、暗号化データの暗号方式の変換を仮想実行環境において実行する。仮想実行環境では、暗号化データが復号され、復号された暗号化データについて暗号ライブラリがソースコードとして実行される。すなわち、復号された暗号化データが、暗号ライブラリの暗号方式で暗号化（再暗号化）され、標準実行環境に提供される。標準実行環境から保護された仮想実行環境においてデータの復号を行って暗号方式の変換を行うので、信頼または認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【０１０３】
＜実施形態４＞
（秘密計算システム１０００の構成）
図１０は、本実施形態に係る秘密計算システム１０００の構成を示す図である。図１０を参照して、実施形態４に係る秘密計算システム１０００の構成について説明する。
【０１０４】
本実施形態の秘密計算システム１０００は、暗号化されたデータについて、仮想実行環境を一時的に構築して処理を実行することで、セキュリティを確保しつつ、効率よく演算を行う情報処理システムである。秘密計算システム１０００は、取得部１０５０と、記憶部１２００と、鍵管理部１３００と、処理実行部１１００と、を備える。秘密計算システム１０００は、仮想実行環境に対し、セキュアにアクセス可能なユーザか否かを認証する認証部（不図示）を備えるが、認証部の機能については、上述の実施形態１等で説明したのと同様であるので詳細は省略する。なお、認証部は、後述する暗号方式変換部１４００、演算部１５００、統合部１６００に含まれていてもよい。
【０１０５】
取得部１０５０は、暗号化データを取得し、記憶部１２００の暗号化データ１２１０に格納する。取得した暗号化データは、後述する鍵管理部１３００と秘密計算システム１０００を利用する端末等（不図示）とが共有する、または鍵管理部１３００が管理するシステム鍵に基づき、種々の暗号方式で暗号化されている。暗号方式については後述する。
【０１０６】
記憶部１２００は、システム鍵で暗号化された暗号化データを記憶する。記憶部１２００は、暗号化データ１２１０と、ソースコード１２２０と、を含む。
【０１０７】
暗号化データ１２１０は、例えば、共通暗号鍵方式である「ＤＥＳ」，「ＲＣ４」，「ＡＥＳ」，「共通鍵暗号ベース検索可能暗号」や、公開鍵暗号方式である「準同型暗号」，「ＲＳＡ」，「楕円曲線暗号」等の暗号方式で暗号化されたデータである。また、上記の暗号方式に限られず、総務省及び経済産業省によって策定されている「電子政府における調達のために参照すべき暗号のリスト(ＣＲＹＰＴＲＥＣ暗号リスト)」に記載される暗号技術であってもよい。暗号化データ１２１０には、上述の様々な方式の暗号化データが含まれていてもよい。また、暗号化データ１２１０は、認証または許可されたユーザ等の指示に応じて記憶部１２００に記憶され、または削除されるようにしてもよい。
【０１０８】
ソースコード１２２０は、暗号ライブラリやデータの演算、統合のためのソースコードであり、暗号化データ１２１０をシステム鍵によって復号したデータ（平文データ）について実行されるプログラムである。暗号ライブラリは、例えば、準同型暗号、ＡＥＳ、検索可能暗号などの暗号ライブラリである。なお、上記暗号ライブラリやデータの演算、統合のためのソースコードは、処理実行部１１００（後述する仮想実行環境構築部１４１２，１５１２，１６１２）が、仮想実行環境に含めて（プリインストールさせて）仮想実行環境を構築するようにしてもよい。
【０１０９】
鍵管理部１３００は、秘密計算システム１０００を利用するユーザのＩＤと、秘密計算システム１０００においてデータを暗号化するのに用いるシステム鍵とを対応付けて記憶する鍵データベースを有しており、システム鍵を管理する。鍵管理部１３００は、例えば、ユーザの利用登録が実行された際にシステム鍵を生成し、鍵データベースに登録してもよい。システム鍵は、共通鍵、または、公開鍵および秘密鍵の鍵対（非対称鍵）であってもよく、また、１ユーザに複数のシステム鍵が対応付けられていてもよい。また、鍵管理部１３００は、ユーザと対応付けられていないシステム鍵を管理していてもよく、また、当該システム鍵を暗号化データへのアクセスが許可されたユーザと事後的に対応付けられるようにしておいてもよい。また、鍵管理部１３００は、システム鍵に対して別のシステム鍵を対応付けておき、仮想実行環境において復号に用いたシステム鍵（復号鍵）と対応付けられた当該別のシステム鍵で当該復号鍵を暗号化するようにしてもよい。
【０１１０】
いずれの場合であっても、上述の実施形態１に係る鍵管理部１１５と同様もしくは同様のセキュリティ水準が確保された方法（例えば、認証部による認証）等により、当該システム鍵をユーザと共有することができる。また、システム鍵は、ネットワークＮＷを介したユーザ側で生成され、セキュリティが確保された方法により、鍵管理部１３００の鍵データベースに登録されるようにしてもよい。
【０１１１】
処理実行部１１００は、標準実行環境から保護される仮想実行環境を一時的に構築し、当該仮想実行環境において、鍵管理部１３００から取得したシステム鍵に基づき暗号化データ１２１０を復号して所定の処理を実行し、実行結果を記憶部１２００に記憶させる。処理実行部１１００は、暗号方式変換部１４００と、演算部１５００と、統合部１６００と、制御部１７００と、を含む。
【０１１２】
暗号方式変換部１４００は、取得部１０５０が取得した暗号化データの暗号方式を変換する処理を実行する。暗号方式の変換は、標準実行環境から保護される仮想実行環境において、鍵管理部１３００から取得したシステム鍵に基づき、暗号化データ１２１０を復号して行われるが、処理の詳細は、図１１において説明する。
【０１１３】
演算部１５００は、暗号化データについて所定の演算に関する処理を実行し、演算の結果を暗号化して記憶部１２００の暗号化データ１２１０に格納する。演算処理は、仮想実行環境において、鍵管理部１３００から取得したシステム鍵に基づき、暗号化データ１２１０を復号して行われるが、処理の詳細は、図１２において説明する。
【０１１４】
統合部１６００は、複数の復号された暗号化データを１つのデータに統合する処理を実行し、統合の結果を暗号化して記憶部１２００の暗号化データ１２１０に格納する。処理の詳細は、図１３において説明する。
【０１１５】
制御部１７００は、演算処理要求に応じて、暗号方式変換部１４００、演算部１５００、統合部１６００の少なくともいずれか一つに対し、要求される演算処理を実行するよう制御する。
【０１１６】
なお、本実施形態に係る秘密計算システム１０００は、取得部１０５０、記憶部１２００、鍵管理部１３００、処理実行部１１００のそれぞれが、１つの装置（コンピュータ：ＰＣまたは仮想空間）であってもよいし、一つの装置内に、取得部１０５０、記憶部１２００、鍵管理部１３００、処理実行部１１００のいずれかが同時に含まれていてもよい。例えば、取得部１０５０と記憶部１２００、処理実行部１１００とが１つの装置内に含まれていてもよい。なお、鍵管理部１３００と記憶部１２００とは、セキュリティ上、別個の装置であることが好ましい。しかし、上記の実施の形態で説明した機能を実現することができれば、秘密計算システムの各装置をどのように組み合わせて構成しても構わない。
【０１１７】
また、本実施の形態のうち、複数の機能要素を部分的に組合せて実施しても構わない。あるいは、本実施の形態のうち、１つの発明を部分的に実施しても構わない。その他、本実施の形態を、全体としてあるいは部分的に、どのように組合せて実施しても構わない。
【０１１８】
（暗号方式変換部１４００の機能構成）
図１１は、暗号方式変換部１４００の機能構成の一例を示す機能ブロック図である。図１１を参照して、暗号方式変換部１４００の機能構成の一例について説明する。なお、以下では、暗号方式変換部１４００として機能する装置に搭載されるＯＳ（不図示）等については、実施の形態１で述べたのと同様であるため、説明を省略する。
【０１１９】
制御部１４１０は、仮想実行環境構築部１４１２と、仮想実行環境廃棄部１４１３と、判定部１４１４とを有し、暗号化データ１２１０を利用するアプリケーション（不図示）から、暗号化データ１２１０についての暗号方式変換の処理要求を受けて、処理の制御を行う。なお、暗号化データ１２１０は、記憶部１２００に格納されたデータではなく、取得部１０５０が取得した暗号化データであってもよい。
【０１２０】
判定部１４１４は、暗号化データ１２１０の暗号方式を判定する。判定方法は、上述の判定部５１４と同様であるため説明を省略する。
【０１２１】
判定部１４１４は、暗号化データ１２１０の暗号方式が所定の暗号方式であると判定すると、仮想実行環境構築部１４１２に、標準実行環境から保護された仮想実行環境を構築するよう指示する。判定部１４１４は、例えば、予め所定の暗号方式を示すテーブルを記憶しており、当該テーブルに基づいてどの暗号方式に変換するか判定する。判定部１４１４は、例えば、ＡＥＳから準同型暗号へ、共通鍵暗号ベース検索可能暗号から準同型暗号へ、などの変換すべき暗号方式を示すテーブルを記憶していてもよい。また、判定部１４１４は、例えば、暗号化データ１２１０を利用するアプリケーション（不図示）から暗号化データ１２１０とソースコード（暗号ライブラリ）１２２０とを受け付けて解析し、自動的にどの暗号方式に変換すべきか判定するアルゴリズムを備えるようにしてもよい。
【０１２２】
仮想実行環境構築部１４１２は、判定部１４１４の判定に基づいて、仮想実行環境を構築する。仮想実行環境にはＯＳ（不図示）が搭載され、当該ＯＳは、演算処理部１４３０を備える。また、仮想実行環境廃棄部１４１３は、実施形態１に係る仮想実行環境廃棄部１１３と同様に、上述の仮想実行環境を廃棄する（消滅させる）。
【０１２３】
演算処理部１４３０は、取得部１４３２と、復号部１４３３と、ソースコード実行部１４３４と、提供部１４３６と、を含む。
【０１２４】
取得部１４３２は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部１２００から暗号化データ１２１０および鍵管理部１３００からシステム鍵を取得する。また、取得部１４３２は、判定部１４１４の上記判定に応じ、変換すべき暗号方式の暗号ライブラリであるソースコード１２２０を取得する。なお、上記システム鍵は、取得した暗号化データ１２１０の暗号化に用いられたシステム鍵および後述するソースコード１２２０（暗号ライブラリ）で用いるシステム鍵である。
【０１２５】
復号部１４３３は、取得部１４３２が取得したシステム鍵によって、暗号化データ１２１０を復号する。
【０１２６】
ソースコード実行部１４３４は、復号された暗号化データ１２１０に対し、変換すべき暗号方式の暗号ライブラリであるソースコードを実行する。すなわち、復号された暗号化データ１２１０は再暗号化される。この際用いられるシステム鍵は、鍵管理部１３００が、当該暗号化データの送信元である認証済みのユーザと予め共有（管理）しているシステム鍵であってもよいし、共有（管理）していないシステム鍵であってもよい。なお、鍵管理部１３００は、当該共有していないシステム鍵を、新規に共有（管理）することができる。また、鍵管理部１３００は、再暗号化に際して、新たにシステム鍵を生成した場合は、当該新たに生成したシステム鍵を新規に共有（管理）することができる。また、演算処理部１４３０の鍵生成部（図１１において不図示）が新たにシステム鍵を生成し、再暗号化に用いた場合は、後述する提供部１４３６が鍵管理部１３００に当該新たに生成されたシステム鍵を提供し、管理させるようにしてもよい。
【０１２７】
提供部１４３６は、ソースコード実行部１４３４が実行した結果（すなわち、暗号方式が変換された暗号化データ）を、標準実行環境等に提供する。例えば、暗号方式が変換された暗号化データを記憶部１２００の暗号化データ１２１０に格納してもよいし、アプリケーション（不図示）へ処理要求に対する応答として出力してもよい。また、取得部１４３２が鍵管理部１３００から取得し、ソースコード実行部１４３４がソースコードの実行の際に用いたシステム鍵は、仮想実行環境廃棄部１４１３が仮想実行環境を廃棄する際に廃棄する。
【０１２８】
（演算部１５００の機能構成）
図１２は、演算部１５００の機能構成の一例を示す機能ブロック図である。図１２を参照して、演算部１５００の機能構成の一例について説明する。なお、以下では、演算部１５００として機能する装置に搭載されるＯＳ（不図示）等については、実施の形態１で述べたのと同様であるため、説明を省略する。
【０１２９】
制御部１５１０は、推定部１５１１と、仮想実行環境構築部１５１２と、仮想実行環境廃棄部１５１３と、第２演算処理部１５１４と、を有し、暗号化データ１２１０を利用するアプリケーション（不図示）から、暗号化データ１２１０についての演算処理要求を受けて、演算処理の制御を行う。
【０１３０】
推定部１５１１は、暗号化データ１２１０についての処理が所定の条件を満たすか否かを判断する判断部として機能する。例えば、所定の条件として、推定部１５１１は、要求された演算処理に基づいて、暗号化データ１２１０についての演算の計算量を推定し、計算量が所定の計算量以上である（所定の条件を満たす）と判断すると、仮想実行環境構築部１５１２に、仮想実行環境を構築するよう指示する。推定部１５１１は、例えば、要求される演算の種類等（比較などの演算処理）に応じて、計算量を算出する。
【０１３１】
また、推定部１５１１は、所定の条件として、上述の計算量以外に、秘密計算システム１０００におけるリソース（メモリ、ＣＰＵ、並列サーバなど）、ユーザによる演算処理完了までの時間指定等を総合的に考慮して仮想実行環境を構築するか否かを判断してもよい。また、推定部１５１１は、演算処理ごとの一般実行時間基準を対応テーブル等で管理し、参照した実行時間に応じて仮想実行環境を構築するか否かを判断してもよい。
【０１３２】
また、推定部１５１１は、所定の条件として、暗号化データ１２１０が所定の暗号化データであると判断した場合は、仮想実行環境を構築するよう仮想実行環境構築部１５１２に指示するようにしてもよい。所定の暗号化データとは、例えば、準同型暗号で暗号化されているデータである。準同型暗号は、暗号化状態で演算可能であるものの、暗号サイズが非常に大きく、計算量が膨大となるため、後述するように仮想実行環境において復号して平文で演算することによりセキュリティが確保された状態で高速に処理することが可能である。
【０１３３】
また、所定の暗号化データは、例えば、ＡＥＳや検索可能暗号で暗号化されているデータであってもよい。これらの暗号方式で暗号化されているデータは、暗号化状態で統計値等の計算をすることが困難であり、上記と同様に仮想実行実行環境において復号して平文で演算することにより、セキュリティが確保された状態で高速に処理することが可能である。
【０１３４】
仮想実行環境構築部１５１２は、推定部１５１１の指示に基づき、仮想実行環境を構築する。仮想実行環境にはＯＳ（不図示）が搭載され、当該ＯＳは、第１演算処理部１５３０を備える。
【０１３５】
仮想実行環境廃棄部１５１３は、実施形態１に係る仮想実行環境廃棄部１１３と同様に、上述の仮想実行環境を廃棄する（消滅させる）。
【０１３６】
第２演算処理部１５１４は、推定部１５１１が暗号化データ１２１０について所定の条件を満たさない（例えば、推定した計算量が所定の計算量以上ではない）と判断した場合に、暗号化データ１２１０について復号せずに要求された演算処理を実行する。処理要求の対象である暗号化データ１２１０が、例えば準同型暗号であった場合は、暗号化したまま演算を実行することができ、標準実行環境においても機密性を保持して演算結果を得ることができる。また、暗号化データ１２１０がＡＥＳであった場合は、全文一致等による検索などの処理を実行することができる。第２演算処理部１５１４は、記憶部１２００のソースコード１２２０から準同型暗号の暗号データを演算するための秘密計算アルゴリズムを取得してもよい。
【０１３７】
第１演算処理部１５３０は、取得部１５３２と、復号部１５３３と、ソースコード実行部１５３４と、暗号化部１５３５と、提供部１５３６と、を含む。
【０１３８】
取得部１５３２は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部１２００から暗号化データ１２１０およびソースコード１２２０、並びに鍵管理部１３００からシステム鍵を取得する。当該システム鍵は、処理要求の暗号化データ１２１０の暗号化に用いられたシステム鍵である。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。
【０１３９】
復号部１５３３は、取得部１５３２が取得したシステム鍵によって、暗号化データ１２１０を復号する。
【０１４０】
ソースコード実行部１５３４は、復号された暗号化データ１２１０に対し、ソースコード１２２０を実行する。ソースコード１２２０は、平文処理用の演算アルゴリズムであり、例えば、復号された暗号化データ１２１０について、キーデータの比較演算、データ分布・クラスター生成、データ解析効率化のための条件分岐、もしくはその判別や、ソート等されたデータの生成、学習モデルの生成を行うためのアルゴリズムである。
【０１４１】
暗号化部１５３５は、ソースコード実行部１５３４が実行した演算の結果を暗号化する。暗号化部１５３５は、取得部１５３２が取得したシステム鍵に基づいて暗号化してもよいし、当該システム鍵に代えて、当該システム鍵とは異なる鍵に基づいて暗号化してもよい。例えば、鍵管理部１３００は、システム鍵および当該システム鍵とは異なる鍵（システム鍵）を生成し、取得部１５３２は、これらの鍵を取得して暗号化部１５３５に送ってもよい。また、取得部１５３２は、第１演算処理部１５３０の鍵生成部（図１２において不図示）で生成した、システム鍵とは異なる鍵を取得し、暗号化部１５３５に送ってもよい。当該新たに生成された鍵は、後述する提供部１５３６が、鍵管理部１３００に提供し、管理させるようにしてもよい。これにより、例えば、演算結果にアクセスを許可するユーザにのみ上記異なる鍵を付与するようにして、演算結果に対するアクセス権限を管理することができる。
【０１４２】
提供部１５３６は、暗号化された演算結果を標準実行環境等に提供する。例えば、暗号化された演算の結果を記憶部１２００に格納してもよいし、アプリケーション（不図示）の処理要求に対する応答として出力してもよい。なお、提供部１５３６は、上述の鍵生成部で生成したシステム鍵を、鍵管理部１３００に提供する。また、取得部１５３２が鍵管理部１３００から取得し、暗号化部１５３５が暗号化に用いたシステム鍵は、仮想実行環境廃棄部１５１３が仮想実行環境を廃棄する際に廃棄する。
【０１４３】
（統合部１６００の機能構成）
図１３は、統合部１６００の機能構成の一例を示す機能ブロック図である。図１３を参照して、統合部１６００の機能構成の一例について説明する。なお、以下では、統合部１６００として機能する装置に搭載されるＯＳ（不図示）等については、実施の形態１で述べたのと同様であるため、説明を省略する。
【０１４４】
制御部１６１０は、仮想実行環境構築部１６１２と、仮想実行環境廃棄部１６１３と、を有し、暗号化データ１２１０を利用するアプリケーション（不図示）から、暗号化データ１２１０についての統合処理要求を受けて、統合処理の制御を行う。
仮想実行環境構築部１６１２は、統合処理要求に応じて、仮想実行環境を構築する。仮想実行環境にはＯＳ（不図示）が搭載され、当該ＯＳは、演算処理部１６３０を備える。
【０１４５】
仮想実行環境廃棄部１５１３は、実施形態１に係る仮想実行環境廃棄部１１３と同様に、上述の仮想実行環境を廃棄する（消滅させる）。
【０１４６】
演算処理部１６３０は、取得部１６３２と、復号部１６３３と、ソースコード実行部１６３４と、暗号化部１６３５と、提供部１６３６と、を含む。
【０１４７】
取得部１６３２は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部１２００から統合する対象である複数の暗号化データ１２１０およびソースコード１２２０、並びに鍵管理部１３００からシステム鍵を取得する。当該システム鍵は、処理要求の暗号化データ１２１０それぞれの暗号化に用いられたシステム鍵である。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。また、ソースコード１２２０は、複数のデータを１つのデータに統合する処理を行うためのアルゴリズムである。
【０１４８】
復号部１６３３は、取得部１６３２が取得したシステム鍵によって、暗号化データ１２１０を復号する。
【０１４９】
ソースコード実行部１６３４は、復号された複数の暗号化データ１２１０に対し、統合処理を行うアルゴリズムであるソースコード１２２０を実行し、１つのデータに統合する。ソースコードの実行により、例えば、共通したキーをもつ２つ以上のデータベーステーブルについて、その共通キーを「統合キー」として、データベーステーブルを横・もしくは縦に連結させ、１つのデータベーステーブルとする（上述の図１５参照）。
【０１５０】
暗号化部１６３５は、ソースコード実行部１６３４が実行した統合の結果を暗号化する。暗号化部１６３５は、取得部１６３２が取得したシステム鍵のいずれかに基づいて暗号化してもよいし、当該システム鍵に代えて、当該システム鍵とは異なる鍵に基づいて暗号化してもよい。例えば、鍵管理部１３００は、システム鍵および当該システム鍵とは異なる鍵（システム鍵）を生成し、取得部１６３２は、これらの鍵を取得して暗号化部１６３５に送ってもよい。また、取得部１６３２は、演算処理部１６３０の鍵生成部（図１３において不図示）で生成した、システム鍵とは異なる鍵を取得し、暗号化部１６３５に送ってもよい。当該新たに生成された鍵は、後述する提供部１６３６が、鍵管理部１３００に提供し、管理させるようにしてもよい。これにより、例えば、統合結果にアクセスを許可するユーザにのみ上記異なる鍵を付与するようにして、統合結果に対するアクセス権限を管理することができる。
【０１５１】
提供部１６３６は、暗号化された演算結果を標準実行環境等に提供する。例えば、暗号化された演算の結果を記憶部１２００に格納してもよいし、アプリケーション（不図示）の処理要求に対する応答として出力してもよい。なお、提供部１６３６は、上述の鍵生成部で生成したシステム鍵を、鍵管理部１３００に提供する。また、取得部１６３２が取得し、暗号化部１６３５が暗号化に用いたシステム鍵は、仮想実行環境廃棄部１６１３が仮想実行環境を廃棄する際に廃棄する。
【０１５２】
（秘密計算システム１０００における処理の流れ）
図１４は、秘密計算システム１０００における処理の一例を示すフローチャートである。図１４を参照して、秘密計算システム１０００における、暗号化データの演算処理要求に応じた処理について説明する。なお、図１４で示す処理ステップの順序は一例であり、秘密計算システム１０００で行われる処理は、以下で説明する順序に限られないことは言うまでもない。すなわち、図１４においては、「暗号方式の変換」→「統合」→「演算」の順序で処理が実行されるが、処理要求の内容に応じて、任意の組み合わせ、任意の順序で処理を実行してもよい。例えば、「統合」→「暗号方式の変換」→「演算」、「暗号方式の変換」→「演算」→「統合」、「暗号方式の変換」→「統合」→「暗号方式の変換」、「統合」→「演算」、「暗号方式の変換」→「演算」、「演算」→「統合」などの順序で処理を実行させることができる。また、秘密計算システム１０００は、処理要求の内容に応じて、「暗号方式の変換」のみ、「統合」のみ、「演算」のみを実行してもよい。
【０１５３】
また、図１４において、鍵管理部１３００は、当該システムの認証もしくは許可されたユーザとシステム鍵の共有がなされているとして説明する。
【０１５４】
ステップＳ１００３〜Ｓ１００６から成る処理は、暗号方式変換部１４００における処理である。また、ステップＳ１００７〜Ｓ１００８の処理は、統合部１６００における処理であり、ステップＳ１００９〜Ｓ１０１５から成る処理は、演算部１５００における処理である。制御部１７００は、演算処理要求に応じて、暗号方式変換部１４００、演算部１５００、統合部１６００に対し演算処理を実行するよう制御する。
【０１５５】
ステップＳ１００１において、取得部１０５０は、暗号化データを取得する。また、取得部１０５０は、暗号化データに対する演算処理要求も取得する。
【０１５６】
ステップＳ１００３において、暗号方式変換部１４００は、取得した暗号化データの暗号方式が所定の暗号方式であるか判定する。例えば、所定の暗号方式を示した暗号方式のテーブルを予めシステムの運営者等が設定しておき、当該テーブルに基づいて判定してもよい。所定の暗号方式であると判定した場合（ステップＳ１００３において、Ｙ）、ステップＳ１００５において、仮想実行環境構築部１４１２は仮想実行環境を構築し、演算処理部１４３０が暗号化データの暗号方式を変換する。変換が終了すると、仮想実行環境廃棄部１４１３は、仮想実行環境を廃棄する。演算処理部１４３０における処理は図１１で説明した通りである。
【０１５７】
所定の暗号方式ではないと判定した場合（ステップＳ１００３において、Ｎ）、すなわち、暗号方式を変換する必要がない場合は、ステップＳ１００６の処理に進む。
【０１５８】
ステップＳ１００６において、暗号方式変換部１４００は、ステップＳ１００５において暗号方式を変換した暗号化データまたはステップＳ１００３において所定の暗号方式ではないと判定した暗号化データを記憶部１２００の暗号化データ１２１０に格納する。
【０１５９】
ステップＳ１００７において、統合部１６００は、記憶部１２００から複数の暗号化データ１２１０を取得し、仮想実行環境において暗号化データを復号する。そして、復号された暗号化データを１つのデータに統合し、統合の結果を暗号化する。
【０１６０】
ステップＳ１００８において、統合部１６００は、暗号化した統合の結果を記憶部１２００の暗号化データ１２１０に格納する。
【０１６１】
ステップＳ１００９において、演算部１５００は、暗号化データ１２１０について処理要求される演算の計算量を推定し、計算量が所定量以上であるか（所定の条件を満たすか否か）を判断する。計算量は、処理要求される演算の種類等に基づいて判断してもよい。
【０１６２】
計算量が所定量以上であると判断した場合（ステップＳ１００９において、Ｙ）、ステップＳ１０１１において、仮想実行環境構築部１５１２は仮想実行環境を構築し、第１演算処理部１５３０が演算を実行する。演算が終了すると、仮想実行環境廃棄部１５１３は仮想実行環境を廃棄する。第１演算処理部１５３０における処理は、図１２で説明したとおりである。
【０１６３】
計算量が所定量以上ではないと判断した場合（ステップＳ１００９において、Ｎ）、ステップＳ１０１３において、第２演算処理部１５１４によって演算を実行する。すなわち、処理要求される演算が、例えば準同型暗号のような暗号化データに対して、所定の計算量以下であると推定される場合は、準同型暗号で暗号化したまま演算を実行する。計算量が所定の計算量以上である場合は、標準実行環境から保護される仮想実行環境において暗号化データを復号して演算を実行することで、セキュリティを確保しつつ演算速度を向上させることができる。
【０１６４】
ステップＳ１０１５において、演算部１５００は、暗号化されている演算結果を記憶部１２００の演算結果１２３０に格納し、処理を終了する。
【０１６５】
（効果の説明）
上述したように、本実施形態に係る秘密計算システムでは、暗号化されたデータについて、仮想実行環境を一時的に構築して処理を実行することで、セキュリティを確保しつつ、効率よく演算を行うことができる。すなわち、標準実行環境から保護された仮想実行環境において暗号化データを復号し、平文データに対して処理を実行することで、安全に、高速な演算を行うことができる。
【０１６６】
＜実施形態４の変形例＞
秘密計算システム１０００において、処理実行部１１００は、仮想実行環境を構築し、当該仮想実行環境において、鍵管理部１３００から取得したシステム鍵に基づき、暗号化データ１２１０を復号させる。そして、再暗号化や、処理結果を標準実行環境に提供することなく、復号した暗号化データと共に、仮想実行環境を廃棄するようにしてもよい。すなわち、一時的に構築された仮想実行環境において暗号化データを復号し、許可されたユーザ等のみを仮想空実行環境にアクセスさせ、目視等によりデータを確認や分析することができるようにする。これにより、セキュリティが確保された状態でデータの分析や確認を可能にしつつ、分析結果等を標準実行環境にデータとして出力させないようにすることができる。
【０１６７】
上記実施形態は、システムの形態の他、上述したコンピュータ（ハードウェア）において実行される情報処理プログラムや情報処理装置の形態で実施されることが可能である。
【０１６８】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【０１６９】
１  情報処理システム、１００，４００，５００  演算サーバ、２００  登録サーバ、３００  端末、１１０，１３０  ＯＳ、１１１，５１２，１４１０，１５１０  制御部、１１２，５１２，１４１２，１５１２，１６１２  仮想実行環境構築部、１１３，４１３，１４１３，１５１３，１６１３  仮想実行環境廃棄部、１１４  認証部、１１５，５１５，１３００  鍵管理部、１１６，５１６，１２００  記憶部、１１７，５１７，１２１０  暗号化データ、１１８，５１８，１２２０  ソースコード、１１９  検知部、１２０  アプリケーション、１３１，５３１，１４３０，１６３０  演算処理部、１３２，５３２，１４３２，１５３２，１６３２  取得部、１３３，５３３，１４３３，１５３３，１６３３  復号部、１３４，５３４，１４３４，１５３４，１６３４  ソースコード実行部、１３５，１５３５，１６３５  暗号化部、１３６，５３６，１４３６，１５３６，１６３６  提供部、２０１  ＩＤ生成部、２０２  認証情報生成部、１０００  秘密計算システム、１１００  取得部、１２３０  演算結果、１４００  暗号方式変換部、１４１４  判定部、１５００  演算部、１５１１  推定部、１５１４  第２演算処理部、１５３０  第１演算処理部、１６００  統合部、１７００  制御部
【要約】
【課題】暗号化されたデータについて効率よく処理することができる技術を提供すること。
【解決手段】
本発明に係る情報処理システムは、システム鍵を管理する鍵管理部と、システム鍵で暗号化された暗号化データを記憶する記憶部と、標準実行環境から保護される仮想実行環境を一時的に構築し、当該仮想実行環境において、鍵管理部から取得したシステム鍵に基づき暗号化データを復号する処理実行部と、を備える。
【選択図】図１０【図１】
0006867718.tif 000002
【図２】
0006867718.tif 000003
【図３】
0006867718.tif 000004
【図４】
0006867718.tif 000005
【図５】
0006867718.tif 000006
【図６】
0006867718.tif 000007
【図７】
0006867718.tif 000008
【図８】
0006867718.tif 000009
【図９】
0006867718.tif 000010
【図１０】
0006867718.tif 000011
【図１１】
0006867718.tif 000012
【図１２】
0006867718.tif 000013
【図１３】
0006867718.tif 000014
【図１４】
0006867718.tif 000015
【図１５】
0006867718.tif 000016