(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）を呼び出すと、演算処理要求が制御部１１１に出力される。制御部１１１の仮想実行環境構築部１１２は、演算処理要求に応じて上述の仮想実行環境を構築する。
【００２９】
仮想実行環境には、ＯＳ１３０が搭載される。ＯＳ１３０は、演算処理部１３１を備える。制御部１１１は、ＯＳ１１０とＯＳ１３０との間で、セキュアな通信チャネルを形成する。例えば、ＯＳ１１０とＯＳ１３０との間で送受信されるデータを暗号化するセッション鍵を、予め仮想実行環境が含むように仮想実行環境を構築してもよいし、ＯＳ１３０またはＯＳ１１０で生成したセッション鍵を、公開鍵アルゴリズム等を利用した周知技術により共有するようにしてもよい。本実施形態では、ＯＳ１１０とＯＳ１３０とは、上述のセキュアな通信チャネルを通してデータを送受信するが、暗号化されているデータについては、セッション鍵で暗号化を行わないようにしてもよい。これにより、処理の負担が軽減する。
【００３０】
演算処理部１３１は、例えば、ＯＳ１３０にインストールされる演算プログラムであって、取得部１３２と、復号部１３３と、ソースコード実行部１３４と、暗号化部１３５と、提供部１３６と、を含む。
【００３１】
取得部１３２は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部１１６から暗号化データ１１７およびソースコード１１８、並びに鍵管理部１１５からシステム鍵を取得する。
【００３２】
復号部１３３は、取得部１３２が取得したシステム鍵によって、暗号化データ１１７を復号する。
【００３３】
ソースコード実行部１３４は、復号された暗号化データ１１７に対し、ソースコード１１８を実行する。
【００３４】
暗号化部１３５は、ソースコード実行部１３４が実行した演算結果を暗号化する。暗号化部１３５は、取得部１３２が取得したシステム鍵によって暗号化してもよいし、当該システム鍵に代えて、当該システム鍵とは異なる鍵によって暗号化してもよい。例えば、鍵管理部１１５は、システム鍵および当該システム鍵とは異なる鍵（システム鍵）を生成し、取得部１３２は、これらの鍵を取得して暗号化部１３５に送ってもよい。また、取得部１３２は、演算処理部１３１の鍵生成部（図２において不図示）で生成した、システム鍵とは異なる鍵を取得し、暗号化部１３５に送ってもよい。これにより、例えば、演算結果にアクセスを許可するユーザにのみ上記異なる鍵を付与するようにして、演算結果に対するアクセス権限を管理することができる。
【００３５】
提供部１３６は、暗号化された演算結果を標準実行環境等に提供する。例えば、暗号化された演算結果を記憶部１１６に格納してもよいし、アプリケーション１２０に処理要求に対する応答として出力してもよい。なお、提供部１３６は、上述の鍵生成部で生成した、システム鍵とは異なる鍵（システム鍵）を、標準実行環境に提供するようにしてもよい。
【００３６】
暗号化された演算結果が提供された後、仮想実行環境は廃棄される。なお、本実施形態では、仮想実行環境廃棄部１１３は、ＯＳ１１０に備えられるが、ＯＳ１１０に代えてＯＳ１３０に備えられてもよいし、ＯＳ１１０およびＯＳ１３０に備えられてもよい。
【００３７】
上述のように、本実施形態における演算処理では、アプリケーション１２０が演算ＡＰＩを呼び出すと、制御部１１１の仮想実行環境構築部１１２が標準実行環境から保護された仮想実行環境を構築し、暗号化データについての演算処理をＯＳ１３０の演算処理部１３１に委託する。演算処理部１３１は、暗号化データを復号し、復号された暗号化データについて演算を実行し、演算結果を暗号化して、標準実行環境に提供する。復号された暗号化データ（生データ）に対して演算処理を行うことにより、暗号化状態のまま演算を行うことができる準同型暗号等を用いた演算よりも処理効率を向上させることができる。また、標準実行環境から保護された仮想実行環境においてデータの復号を行って演算処理を行うので、認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【００３８】
また、仮想実行環境は、ソースコード実行後、所定のタイミングで廃棄されるワンタイム（使い捨て）の実行環境であるため、仮想実行環境のＯＳ１３０への攻撃による暗号鍵の不正取得等のリスクを低減し、セキュリティの向上を図ることができる。また、本実施形態における仮想実行環境の構成は、ソフトウエア技術のみで実現可能であり、追加ハードウェアを必要としないため、運用コストを安価にすることができる。
【００３９】
（登録サーバ２００の機能構成）
図３は、登録サーバ２００の機能構成の一例を示す機能ブロック図である。図３を参照して、登録サーバ２００の機能構成の一例について説明する。
【００４０】
登録サーバ２００は、ＩＤ生成部２０１と、認証情報生成部２０２と、を備える。ＩＤ生成部２０１は、ユーザの利用申請に応じて、ユーザを識別する識別情報（ＩＤ）を生成する。認証情報生成部２０２は、ユーザの認証情報を生成する。例えば、乱数発生器等を用いて、認証情報としてパスワードを生成する。
【００４１】
（登録サーバ２００における処理）
図４は、登録サーバ２００における処理の一例を示すシーケンス図である。図４を参照して、本実施形態に係る情報処理システム１に対する利用登録処理について説明する。なお、利用登録は、端末３００、登録サーバ２００、演算サーバ１００間において、上述のようにセキュリティが確保された方法により行われる。
【００４２】
ステップＳ１０１において、端末３００は、登録サーバ２００に対し、利用申請を行う。
【００４３】
ステップＳ１０３において、登録サーバ２００は、ユーザを識別するＩＤおよび認証情報を生成する。
【００４４】
ステップＳ１０５において、端末３００は、ステップＳ１０３において生成されたＩＤおよび認証情報を取得する。例えば、端末３００は、情報処理システム１の運営会社から書面によってＩＤおよび認証情報を受け取ってもよいし、公開鍵アルゴリズム等の周知技術によりＩＤおよび認証情報を受信してもよい。
【００４５】
ステップＳ１０７において、演算サーバ１００の認証部１１４は、ステップＳ１０５と同様に、セキュリティが確保された方法により、ＩＤと認証情報を取得する。
【００４６】
ステップＳ１０９において、認証部１１４は、認証データベースにＩＤと認証情報とを対応付けて登録する。
【００４７】
ステップＳ１１１において、鍵管理部１１５は、ユーザのＩＤを取得する。
【００４８】
ステップＳ１１３において、鍵管理部１１５は、ユーザのＩＤに対応したシステム鍵を生成し、鍵データベースにＩＤとシステム鍵とを対応付けて登録する。
【００４９】
（演算サーバ１００における認証処理）
図５は、演算サーバ１００における認証処理の一例を示すシーケンス図である。図５を参照して、演算サーバ１００における認証処理について説明する。なお、図５で示す処理ステップの順序は一例であり、また、認証方法や、システム鍵の共有方法は、以下で説明する方法に限られないことは言うまでもない。
【００５０】
ステップＳ２０１において、端末３００は、演算サーバ１００に対し、認証要求と共に、端末３００を利用するユーザのＩＤを送信する。また、ステップＳ２０２において、端末３００は、自身の公開鍵および秘密鍵を生成する。
【００５１】
ステップＳ２０３において、認証部１１４は、認証要求に応じて乱数を生成し、ステップＳ２０５において、端末３００に送信する。
【００５２】
ステップＳ２０７において、端末３００は、受信した乱数と、上述の利用登録により取得した認証情報とを連結して、ハッシュを生成する。
【００５３】
ステップＳ２０９において、端末３００は、生成したハッシュおよび公開鍵を含む情報を認証部１１４に送信する。
【００５４】
ステップＳ２１１において、認証部１１４は、ステップＳ２０１において認証要求と共に受信したＩＤに対応する認証情報を認証データベースから読み出し、読み出した認証情報と、ステップＳ２０３において生成した乱数とを連結して、ハッシュを生成する。そして、端末３００から受信したハッシュが、認証部１１４が生成したハッシュと一致するか否かを判定する。
【００５５】
ハッシュが一致しない場合、ステップＳ２１２において、認証部１１４は、認証要求したユーザは、利用登録されていないユーザとして判断し、認証に失敗した旨を送信する。一方、ハッシュが一致した場合、ステップＳ２１３において、認証部１１４は、認証要求したユーザを認証されたユーザとして判断し、鍵管理部１１５に対し、ユーザのＩＤとステップＳ２０９において受信した公開鍵を送信する。
【００５６】
ステップＳ２１５において、鍵管理部１１５は、ＩＤに対応するシステム鍵を鍵データベースにおいて検索する。
【００５７】
ステップＳ２１７において、鍵管理部１１５は、検索したシステム鍵をステップＳ２１３において受信した公開鍵で暗号化し、ステップＳ２１９において、暗号化されたシステム鍵を端末３００に送信する。
【００５８】
ステップ２２１において、端末３００は、暗号化されたシステム鍵を、ステップＳ２０２において生成した秘密鍵で復号し、システム鍵を登録する。端末３００は、情報処理システム１において、演算サーバ１００で演算処理を要求する際に扱うデータは、当該システム鍵で暗号化する。
【００５９】
なお、本実施形態では、システム鍵は鍵管理部１１５によって生成されたが、端末３００側で生成し、鍵管理部１１５と共有してもよい。
【００６０】
（演算サーバ１００における演算処理）
図６は、演算サーバ１００における演算処理の一例を示すシーケンス図である。図６を参照して、演算サーバ１００における演算処理について説明する。なお、図６で示す処理ステップの順序は一例であり、以下で説明する処理手順に限られないことは言うまでもない。また、図６において、端末３００は、図５で認証された端末３００とする。
【００６１】
ステップＳ３０１において、端末３００は、演算サーバ１００に対し、演算の処理要求を行う。例えば、演算ＡＰＩを呼び出し、制御部１１１に対し演算の処理要求を行う。なお、ＯＳ１１０上で動作するアプリケーションから処理要求が行われてもよい。
【００６２】
ステップＳ３０３において、制御部１１１は、処理要求に応じて、仮想実行環境を構築する。
【００６３】
ステップＳ３０５において、端末３００は、演算サーバ１００に対し、暗号化データを送信し、記憶部１１６は、暗号化データを格納する。なお、図６の例では、記憶部１１６には予めソースコードが格納されている。
【００６４】
ステップＳ３０７において、演算処理部１３１は、暗号化データおよびソースコードを記憶部１１６から取得する。
【００６５】
ステップＳ３０９において、演算処理部１３１は、鍵管理部１１５からシステム鍵を取得する。
【００６６】
ステップＳ３１１において、演算処理部１３１は、暗号化データをシステム鍵により復号し、ステップＳ３１３において、復号された暗号化データに対し、ソースコードを実行する。
【００６７】
ステップＳ３１５において、ソースコードを実行した演算結果をシステム鍵により暗号化し、ステップＳ３１７において、端末３００に対して送信される。なお、暗号化された演算結果は、記憶部１１６に格納されてもよい。
【００６８】
ステップ３１９において、演算処理部１３１は、暗号化された演算結果を提供したことを制御部１１１に通知する。
【００６９】
ステップＳ３２１において、制御部１１１は、ステップＳ３１９において演算結果の提供が終了した旨の通知を受けたことに応じて、仮想実行環境の廃棄を行う。
【００７０】
（ハードウェア構成図）
図７は、演算サーバ１００のハードウェア構成を示すブロック図である。演算サーバ１００は、コンピュータ５０１に実装される。コンピュータ５０１は、ＣＰＵ５０２と、主記憶装置５０３と、補助記憶装置５０４と、インターフェイス５０５と、を備える。
【００７１】
演算サーバ１００の各構成要素の動作は、プログラムの形式で補助記憶装置５０４に記憶されている。ＣＰＵ５０２は、プログラムを補助記憶装置５０４から読み出して主記憶装置５０３に展開し、当該プログラムに従って上記処理を実行する。また、ＣＰＵ５０２は、プログラムに従って、記憶領域を主記憶装置５０３に確保する。当該プログラムは、具体的には、コンピュータ５０１に、暗号化データについて演算を行うプログラムである。
【００７２】
なお、補助記憶装置５０４は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インターフェイス５０５を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムがネットワークを介してコンピュータ５０１に配信される場合、配信を受けたコンピュータ５０１が当該プログラムを主記憶装置５０３に展開し、処理を実行してもよい。
【００７３】
また、当該プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、当該プログラムは、前述した機能を補助記憶装置５０４に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル（差分プログラム）であってもよい。なお、図７に示したハードウェア構成は、登録サーバ２００および端末３００も同様の構成としてもよい。これらの装置における各構成要素の動作も、上述の演算サーバ１００と同様に、補助記憶装置に記憶されたプログラムに従ったＣＰＵにより実現する。
【００７４】
（効果の説明）
上述したように、本実施形態では、標準実行環境から保護された仮想実行環境を構築し、暗号化データについての演算処理を仮想実行環境において実行する。仮想実行環境では、暗号化データが復号され、復号された暗号化データについて演算が実行される。そして、演算結果は暗号化され、標準実行環境に提供される。復号された暗号化データ（生データ）に対して演算処理を行うことにより、暗号化状態のまま演算を行うことができる準同型暗号等を用いた演算よりも処理効率を向上させることができる。また、標準実行環境から保護された仮想実行環境においてデータの復号を行って演算処理を行うので、認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【００７５】
また、仮想実行環境は、ソースコード実行後、所定のタイミングで廃棄されるワンタイム（使い捨て）の実行環境であるため、仮想実行環境のＯＳへの攻撃等による暗号鍵の不正取得等のリスクを低減し、セキュリティの向上を図ることができる。また、本実施形態における仮想実行環境の構成は、ソフトウエア技術のみで実現可能であり、追加ハードウェアを必要としないため、運用コストを安価にすることができる。
【００７６】
＜実施形態１の変形例＞
上述の演算サーバ１００において実行される演算のためのソースコード１１８は、秘密計算処理プロセスの高速化のための演算アルゴリズムであってもよい。ソースコード実行部１３４は、例えば、復号した暗号化データ１１７についてキーデータの比較演算等を行い、演算結果としてデータ解析のための条件分岐先が決定されたデータや、ソート等されたデータを生成してもよい。すなわち、準同型暗号などによる暗号化状態のまま計算すると処理時間がかかってしまうような秘密計算処理プロセスについて、仮想実行環境において暗号化データを復号して演算を実行することで、処理の高速化を図るものである。
【００７７】
また、ソースコード１１８は、暗号アルゴリズムであってもよい。例えば、記憶部１１６は、ソースコード１１８として、暗号ライブラリを記憶し、ソースコード実行部１３４は、復号した暗号化データ１１７について、任意の他の暗号方式（暗号化データ１１７で用いられた暗号方式とは異なる暗号方式）で暗号化する。すなわち、暗号化データ１１７の暗号形式の変換を図るものである。
【００７８】
また、演算サーバ１００を、プロキシサーバとして機能させてもよい。例えば、通信量の増大／減少に応じて仮想実行環境を構築・廃棄することで、暗号化ゲートウェイを目的として、セキュリティを確保することができる。また、効率的にアクセス制御を行うことができる。
【００７９】
＜実施形態２＞
本実施形態に係る演算サーバ４００は、仮想実行環境に対する不正なアクセスを検知する検知部を備える点で、実施形態１に係る演算サーバ１００と異なる。
【００８０】
図８は、演算サーバ４００の機能構成の一例を示す機能ブロック図である。図２で示した実施形態１に係る演算サーバ１００とは、検知部１１９を備える点と、仮想実行環境廃棄部１１３に代えて仮想実行環境廃棄部４１３を備える点が異なる。したがって、一致する点については、説明は省略する。
【００８１】
ＯＳ１１０は、仮想実行環境に対する不正なアクセスを検知する検知部１１９を備える。検知部１１９は、例えば、ＯＳ１１０上で動作するプログラムであり、ＯＳ１１０上でプログラム等を動作させるために必要な各種リソース（ファイルやレジストリ、カーネルデータ構造体など）に対して書き込みや削除を行うようなアクセス要求を不正なアクセスとして検知してもよい。また、検知部１１９は、例えば、アカウントの乗っ取りや、異なるＩＰアドレスからのアクセス、ＩＤや認証情報等について所定期間における所定回数以上の試行、ユーザ指定プログラム以外のプログラムの割り込み等を不正なアクセスとして検知してもよいし、これらに限られず、公知の技術を採用して、不正なアクセスを検知してもよい。検知部１１９は、不正なアクセスを検知すると、不正なアクセスがある旨を仮想実行環境廃棄部４１３に通知する。
【００８２】
仮想実行環境廃棄部４１３は、検知部１１９が不正なアクセスを検知したことに基づいて、仮想実行環境を廃棄する。仮想実行環境に対する不正なアクセスを検知したことに応じて、仮想実行環境を廃棄することで、復号された暗号化データが不正に取得されることを防止することができ、セキュリティを向上させることができる。
【００８３】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【００８４】
１  情報処理システム、１００，４００  演算サーバ、２００  登録サーバ、３００  端末、１１０，１３０  ＯＳ、１１１  制御部、１１２  仮想実行環境構築部、１１３，４１３  仮想実行環境廃棄部、１１４  認証部、１１５  鍵管理部、１１６  記憶部、１１７  暗号化データ、１１８  ソースコード、１１９  検知部、１２０  アプリケーション、１３１  演算処理部、１３２  取得部、１３３  復号部、１３４  ソースコード実行部、１３５  暗号化部、１３６  提供部、２０１  ＩＤ生成部、２０２  認証情報生成部
【要約】      （修正有）【課題】暗号化されたデータについて効率よく演算することができる演算装置を提供する。【解決手段】演算サーバ１００は、標準実行環境から保護される仮想実行環境において暗号化データ１１７について演算を行う装置であって、仮想実行環境を構築する仮想実行環境構築部１１２を備える。仮想実行環境は、暗号化データ１１７を取得する暗号化データ取得部と、演算のためのソースコードを取得するソースコード取得部と、システム鍵を取得する鍵取得部と、取得したシステム鍵によって暗号化データ１１７を復号する復号部１３３と、復号された暗号化データ１１７に対し、ソースコードを実行するソースコード実行部１３４と、ソースコードを実行した演算結果を、システム鍵によって暗号化する暗号化部１３５と、暗号化された演算結果を標準実行環境に提供する提供部１３６と、を含む。【選択図】図２【図１】
0006671701.tif 000002
【図２】
0006671701.tif 000003
【図３】
0006671701.tif 000004
【図４】
0006671701.tif 000005
【図５】
0006671701.tif 000006
【図６】
0006671701.tif 000007
【図７】
0006671701.tif 000008
【図８】
0006671701.tif 000009