【文献】
勝村幸博,知っておきたいサービスと技術の基礎知識 クラウドの正体?,日経パソコン,日経BP社,2011年 9月26日,No.634,pp.74-83
【文献】
可児潤也 他,SaaR:Sandbox as a Requestの提案,コンピュータセキュリティシンポジウム2013論文集,2013年10月14日,第2013巻 第4号,pp.769-776
【文献】
林卓也,準同型暗号を用いた秘密計算とその応用,システム/制御/情報,2019年 2月 5日,第63巻 第2号,p.64-70
(58)【調査した分野】(Int.Cl.,DB名)
標準実行環境から保護される仮想実行環境において、ユーザと対応付けられるシステム鍵に基づき暗号化された暗号化データについての処理を実行する情報処理装置であって、
前記システム鍵を管理する鍵管理部と、
前記システム鍵で暗号化された暗号化データを記憶する記憶部と、
前記暗号化データについての前記処理の要求に応じて、前記仮想実行環境を構築する仮想実行環境構築部と、を備え、
前記鍵管理部は、前記仮想実行環境構築部が前記仮想実行環境を構築する前に、前記ユーザが用いる端末と前記システム鍵を共有し、
前記仮想実行環境は、
前記暗号化データを取得する暗号化データ取得部と、
前記取得した暗号化データの暗号方式とは異なる暗号ライブラリをソースコードとして取得するソースコード取得部と、
前記鍵管理部から、前記システム鍵を取得する鍵取得部と、
前記取得したシステム鍵とは異なるシステム鍵を生成する鍵生成部と、
前記取得したシステム鍵に基づき、前記暗号化データを復号する復号部と、
前記復号された暗号化データに対し、前記生成したシステム鍵に基づいて前記暗号ライブラリであるソースコードを実行するソースコード実行部と、
前記実行した結果を、暗号化データとして前記記憶部に記憶させる提供部と、
を含む、情報処理装置。
【発明を実施するための形態】
【0012】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【0013】
<実施形態1>
(情報処理システム1の構成)
図1は、本実施形態に係る情報処理システム1の構成を示す図である。
図1を参照して、実施形態1に係る情報処理システム1の構成について説明する。
【0014】
情報処理システム1は、データセンタ10と、端末300−1,300−2,…,300−N(Nは自然数)と、を備え、ネットワークNWを介して通信可能に接続される。ネットワークNWは、例えば、WAN(Wide Area Network)、LAN(Local Area Network)等であるが、任意のネットワークから構成されてもよい。なお、以下の説明では、端末300−1,300−2,…,300−Nは、特に区別する必要のない限り、端末300と記載する。また、本実施形態においては、データセンタ10はネットワークNWを介して端末300等と接続されているが、これに限られず、情報処理システム1は、データセンタ10とローカルに接続される端末300等を備えていてもよい。
【0015】
データセンタ10は、情報処理システム1を利用するユーザ等に対し演算処理を提供し、演算サーバ100と登録サーバ200とを有する。演算サーバ100は、暗号化データについて演算を行う演算装置に相当し、ネットワークNWに接続される端末300等から受信した演算処理要求に応じて、暗号化データについて演算を行う。登録サーバ200は、上述のユーザに対し、情報処理システム1を利用するための事前登録処理を行う。
【0016】
端末300は、上述のユーザが用いる情報処理装置であって、例えば、PC(Personal Computer)、スマートフォン、タブレット端末、ヘッドマウントディスプレイ等のウェアラブル端末、AR(Augmented Reality)/VR(Virtual Reality)/MR(Mixed Reality)装置等である。端末300は、登録サーバ200に対して利用の申請を行ったり、演算サーバ100に対して演算処理の要求を行なったりする。
【0017】
(演算サーバ100の機能構成)
図2は、演算サーバ100の機能構成の一例を示す機能ブロック図である。
図2を参照して、演算サーバ100の機能構成の一例について説明する。
【0018】
演算サーバ100には、OS(Operating System)110が搭載され、OS110において、アプリケーション120が動作する。OS110は、制御部111と、認証部114と、鍵管理部115と、記憶部116と、を備える。ここで、OS110において、OSにインストールされるプログラムや、アプリケーション等の実行に使用される環境を「標準実行環境」と呼ぶ。
【0019】
制御部111は、仮想実行環境構築部112と、仮想実行環境廃棄部113と、を有し、暗号化データ117(後述)を利用するアプリケーション120から、暗号化データ117についての演算処理要求を受けて、演算処理の制御を行う。
【0020】
仮想実行環境構築部112は、演算処理要求に応じて、標準実行環境から保護された仮想実行環境を構築する。すなわち、認証もしくは許可されたユーザしか標準実行環境から仮想実行環境にはアクセスすることができない。認証や許可は、予め条件が定義されている場合は自動的に行われ、また、定義されていない場合は、アクセスするごとに認証や許可に関する処理が行われるようにしてもよい。なお、認証や許可の方法は、公知の任意の技術を用いることができる。また、仮想実行環境は、標準実行環境から信頼された環境であってもよい。本実施形態において、仮想実行環境は、OS110の一部として実装されるが、構築する方法は特に限定されるものではなく、アプリケーションとして実装されてもよいし、アプリケーション内のモジュールとして実装されてもよい。また、仮想実行環境は、標準実行環境とハードウェアのメモリ部分を共有してもよいし、非共有であってもよい。仮想実行環境は、実体としては所定のデータで表されるが、OS110上で実行されることにより、仮想化されたアプリケーションサーバ等として利用できる。
【0021】
仮想実行環境廃棄部113は、上述の仮想実行環境を廃棄する(消滅させる)。例えば、仮想実行環境を表す所定のデータを削除することで、仮想実行環境を廃棄する。仮想実行環境廃棄部113は、ソースコード実行部134(後述)がソースコードの実行を開始して所定時間経過後、仮想実行環境を廃棄してもよい。また、提供部136(後述)が暗号化された演算結果を提供した後、仮想実行環境を廃棄してもよい。また、認証部114(後述)が認証したユーザからの指示に基づいて、仮想実行環境を廃棄してもよい。また、仮想実行環境は、所定の定期的なタイミングで廃棄されてもよい。なお、仮想実行環境を廃棄するまでの時間(期間)は数秒から数分が好ましいが、処理量などに応じて適宜設定されてもよい。
【0022】
すなわち、暗号化データについてソースコードの実行により演算を行う仮想実行環境は、ワンタイム(使い捨て)の実行環境である。アクセス制限された実行環境であっても、十分な時間が与えられた侵入者(認証されない、不正なユーザ等)には容易にアクセスしうる。そこで、本実施形態では、ワンタイムの仮想実行環境において演算を行うことで、侵入者がアクセスするリスクを低減させ、セキュリティの向上を図っている。
【0023】
認証部114は、仮想実行環境に対し、セキュアにアクセス可能なユーザか否かを認証する。例えば、ユーザを識別する識別情報(ID)と認証情報とを対応付けて記憶する認証データベースを有しており、情報処理システム1の利用登録がされたユーザについて認証する。なお、認証情報は、ユーザの意思に基づいて変更可能としてもよいし、所定期間ごとに変更させるようにしてもよい。また、認証情報は、所定期間ごとや、仮想実行環境を構築するごとに更新されるワンタイムパスワード(One Time Password;OTP)としてもよい。OTPは、例えば、時間に依存した関数によって計算されたランダムな数字、文字、記号等から生成されるが、この方法に限定されず、他の方法で行われてもよい。OPTは、例えば、ユーザからの認証要求の度に、認証部114からユーザのメールアドレスやSMS(Short Message Service)に送られるようにしてもよい。この場合、メールやSMSについて閲覧権限がないとOPTを取得することができないため、セキュリティをより強固にすることができる。
【0024】
鍵管理部115は、ユーザのIDと、情報処理システム1においてデータを暗号化するのに用いるシステム鍵とを対応付けて記憶する鍵データベースを有している。鍵管理部115は、例えば、ユーザの利用登録が実行された際にシステム鍵を生成し、鍵データベースに登録してもよい。なお、鍵管理部115は、演算サーバ100においてOS110とは異なるOSに備えられていてもよい。また、システム鍵は、ネットワークNWを介したユーザ側で生成され、セキュリティが確保された方法により、鍵管理部115の鍵データベースに登録されるようにしてもよいし、鍵管理部115がネットワークNWを介して演算サーバ100に接続されていてもよい。セキュリティが確保された方法は、例えば、公開鍵アルゴリズム等の周知技術を利用する方法に限られず、書類や対面であってもよい。
【0025】
記憶部116は、暗号化データ117と、ソースコード118と、を記憶する。暗号化データ117は、上述のシステム鍵によって暗号化されたデータである。本実施形態において、暗号化されるデータは、例えば、個人情報などプライバシー面での配慮が要求されるデータであるが、これに限られず、暗号化されたデータを含んで生成されるデータなど、どのようなデータであってもよい。
【0026】
ソースコード118は、演算のためのソースコードであり、暗号化データ117をシステム鍵によって復号したデータについて演算を実行するプログラムである。暗号化データ117およびソースコード118は、端末300から演算サーバ100に対してネットワークNWを介して送信されてもよいし、記憶媒体等から取得してもよい。また、予め記憶部116に格納されていてもよい。
【0027】
ソースコード118は、暗号化データ117に基づいて学習モデルを生成するアルゴリズムであってもよく、例えば、復号した暗号化データ117について相関関係等を抽出し、演算結果として学習モデルを生成する。
【0028】
アプリケーション120は、OS110上で動作するアプリケーションであり、例えば、暗号化されたデータについて、解析や分析を行う。アプリケーション120が演算API(Application Program Interface)を呼び出すと、演算処理要求が制御部111に出力される。制御部111の仮想実行環境構築部112は、演算処理要求に応じて上述の仮想実行環境を構築する。
【0029】
仮想実行環境には、OS130が搭載される。OS130は、演算処理部131を備える。制御部111は、OS110とOS130との間で、セキュアな通信チャネルを形成する。例えば、OS110とOS130との間で送受信されるデータを暗号化するセッション鍵を、予め仮想実行環境が含むように仮想実行環境を構築してもよいし、OS130またはOS110で生成したセッション鍵を、公開鍵アルゴリズム等を利用した周知技術により共有するようにしてもよい。本実施形態では、OS110とOS130とは、上述のセキュアな通信チャネルを通してデータを送受信するが、暗号化されているデータについては、セッション鍵で暗号化を行わないようにしてもよい。これにより、処理の負担が軽減する。
【0030】
演算処理部131は、例えば、OS130にインストールされる演算プログラムであって、取得部132と、復号部133と、ソースコード実行部134と、暗号化部135と、提供部136と、を含む。
【0031】
取得部132は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部116から暗号化データ117およびソースコード118、並びに鍵管理部115からシステム鍵を取得する。
【0032】
復号部133は、取得部132が取得したシステム鍵によって、暗号化データ117を復号する。
【0033】
ソースコード実行部134は、復号された暗号化データ117に対し、ソースコード118を実行する。
【0034】
暗号化部135は、ソースコード実行部134が実行した演算結果を暗号化する。暗号化部135は、取得部132が取得したシステム鍵によって暗号化してもよいし、当該システム鍵に代えて、当該システム鍵とは異なる鍵によって暗号化してもよい。例えば、鍵管理部115は、システム鍵および当該システム鍵とは異なる鍵(システム鍵)を生成し、取得部132は、これらの鍵を取得して暗号化部135に送ってもよい。また、取得部132は、演算処理部131の鍵生成部(
図2において不図示)で生成した、システム鍵とは異なる鍵を取得し、暗号化部135に送ってもよい。これにより、例えば、演算結果にアクセスを許可するユーザにのみ上記異なる鍵を付与するようにして、演算結果に対するアクセス権限を管理することができる。
【0035】
提供部136は、暗号化された演算結果を標準実行環境等に提供する。例えば、暗号化された演算結果を記憶部116に格納してもよいし、アプリケーション120に処理要求に対する応答として出力してもよい。なお、提供部136は、上述の鍵生成部で生成した、システム鍵とは異なる鍵(システム鍵)を、標準実行環境に提供するようにしてもよい。
【0036】
暗号化された演算結果が提供された後、仮想実行環境は廃棄される。なお、本実施形態では、仮想実行環境廃棄部113は、OS110に備えられるが、OS110に代えてOS130に備えられてもよいし、OS110およびOS130に備えられてもよい。
【0037】
上述のように、本実施形態における演算処理では、アプリケーション120が演算APIを呼び出すと、制御部111の仮想実行環境構築部112が標準実行環境から保護された仮想実行環境を構築し、暗号化データについての演算処理をOS130の演算処理部131に委託する。演算処理部131は、暗号化データを復号し、復号された暗号化データについて演算を実行し、演算結果を暗号化して、標準実行環境に提供する。復号された暗号化データ(生データ)に対して演算処理を行うことにより、暗号化状態のまま演算を行うことができる準同型暗号等を用いた演算よりも処理効率を向上させることができる。また、標準実行環境から保護された仮想実行環境においてデータの復号を行って演算処理を行うので、認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【0038】
また、仮想実行環境は、ソースコード実行後、所定のタイミングで廃棄されるワンタイム(使い捨て)の実行環境であるため、仮想実行環境のOS130への攻撃による暗号鍵の不正取得等のリスクを低減し、セキュリティの向上を図ることができる。また、本実施形態における仮想実行環境の構成は、ソフトウエア技術のみで実現可能であり、追加ハードウェアを必要としないため、運用コストを安価にすることができる。
【0039】
(登録サーバ200の機能構成)
図3は、登録サーバ200の機能構成の一例を示す機能ブロック図である。
図3を参照して、登録サーバ200の機能構成の一例について説明する。
【0040】
登録サーバ200は、ID生成部201と、認証情報生成部202と、を備える。ID生成部201は、ユーザの利用申請に応じて、ユーザを識別する識別情報(ID)を生成する。認証情報生成部202は、ユーザの認証情報を生成する。例えば、乱数発生器等を用いて、認証情報としてパスワードを生成する。
【0041】
(登録サーバ200における処理)
図4は、登録サーバ200における処理の一例を示すシーケンス図である。
図4を参照して、本実施形態に係る情報処理システム1に対する利用登録処理について説明する。なお、利用登録は、端末300、登録サーバ200、演算サーバ100間において、上述のようにセキュリティが確保された方法により行われる。
【0042】
ステップS101において、端末300は、登録サーバ200に対し、利用申請を行う。
【0043】
ステップS103において、登録サーバ200は、ユーザを識別するIDおよび認証情報を生成する。
【0044】
ステップS105において、端末300は、ステップS103において生成されたIDおよび認証情報を取得する。例えば、端末300は、情報処理システム1の運営会社から書面によってIDおよび認証情報を受け取ってもよいし、公開鍵アルゴリズム等の周知技術によりIDおよび認証情報を受信してもよい。
【0045】
ステップS107において、演算サーバ100の認証部114は、ステップS105と同様に、セキュリティが確保された方法により、IDと認証情報を取得する。
【0046】
ステップS109において、認証部114は、認証データベースにIDと認証情報とを対応付けて登録する。
【0047】
ステップS111において、鍵管理部115は、ユーザのIDを取得する。
【0048】
ステップS113において、鍵管理部115は、ユーザのIDに対応したシステム鍵を生成し、鍵データベースにIDとシステム鍵とを対応付けて登録する。
【0049】
(演算サーバ100における認証処理)
図5は、演算サーバ100における認証処理の一例を示すシーケンス図である。
図5を参照して、演算サーバ100における認証処理について説明する。なお、
図5で示す処理ステップの順序は一例であり、また、認証方法や、システム鍵の共有方法は、以下で説明する方法に限られないことは言うまでもない。
【0050】
ステップS201において、端末300は、演算サーバ100に対し、認証要求と共に、端末300を利用するユーザのIDを送信する。また、ステップS202において、端末300は、自身の公開鍵および秘密鍵を生成する。
【0051】
ステップS203において、認証部114は、認証要求に応じて乱数を生成し、ステップS205において、端末300に送信する。
【0052】
ステップS207において、端末300は、受信した乱数と、上述の利用登録により取得した認証情報とを連結して、ハッシュを生成する。
【0053】
ステップS209において、端末300は、生成したハッシュおよび公開鍵を含む情報を認証部114に送信する。
【0054】
ステップS211において、認証部114は、ステップS201において認証要求と共に受信したIDに対応する認証情報を認証データベースから読み出し、読み出した認証情報と、ステップS203において生成した乱数とを連結して、ハッシュを生成する。そして、端末300から受信したハッシュが、認証部114が生成したハッシュと一致するか否かを判定する。
【0055】
ハッシュが一致しない場合、ステップS212において、認証部114は、認証要求したユーザは、利用登録されていないユーザとして判断し、認証に失敗した旨を送信する。一方、ハッシュが一致した場合、ステップS213において、認証部114は、認証要求したユーザを認証されたユーザとして判断し、鍵管理部115に対し、ユーザのIDとステップS209において受信した公開鍵を送信する。
【0056】
ステップS215において、鍵管理部115は、IDに対応するシステム鍵を鍵データベースにおいて検索する。
【0057】
ステップS217において、鍵管理部115は、検索したシステム鍵をステップS213において受信した公開鍵で暗号化し、ステップS219において、暗号化されたシステム鍵を端末300に送信する。
【0058】
ステップ221において、端末300は、暗号化されたシステム鍵を、ステップS202において生成した秘密鍵で復号し、システム鍵を登録する。端末300は、情報処理システム1において、演算サーバ100で演算処理を要求する際に扱うデータは、当該システム鍵で暗号化する。
【0059】
なお、本実施形態では、システム鍵は鍵管理部115によって生成されたが、端末300側で生成し、鍵管理部115と共有してもよい。
【0060】
(演算サーバ100における演算処理)
図6は、演算サーバ100における演算処理の一例を示すシーケンス図である。
図6を参照して、演算サーバ100における演算処理について説明する。なお、
図6で示す処理ステップの順序は一例であり、以下で説明する処理手順に限られないことは言うまでもない。また、
図6において、端末300は、
図5で認証された端末300とする。
【0061】
ステップS301において、端末300は、演算サーバ100に対し、演算の処理要求を行う。例えば、演算APIを呼び出し、制御部111に対し演算の処理要求を行う。なお、OS110上で動作するアプリケーションから処理要求が行われてもよい。
【0062】
ステップS303において、制御部111は、処理要求に応じて、仮想実行環境を構築する。
【0063】
ステップS305において、端末300は、演算サーバ100に対し、暗号化データを送信し、記憶部116は、暗号化データを格納する。なお、
図6の例では、記憶部116には予めソースコードが格納されている。
【0064】
ステップS307において、演算処理部131は、暗号化データおよびソースコードを記憶部116から取得する。
【0065】
ステップS309において、演算処理部131は、鍵管理部115からシステム鍵を取得する。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。
【0066】
ステップS311において、演算処理部131は、暗号化データをシステム鍵により復号し、ステップS313において、復号された暗号化データに対し、ソースコードを実行する。
【0067】
ステップS315において、ソースコードを実行した演算結果をシステム鍵により暗号化し、ステップS317において、端末300に対して送信される。なお、暗号化された演算結果は、記憶部116に格納されてもよい。
【0068】
ステップ319において、演算処理部131は、暗号化された演算結果を提供したことを制御部111に通知する。
【0069】
ステップS321において、制御部111は、ステップS319において演算結果の提供が終了した旨の通知を受けたことに応じて、仮想実行環境の廃棄を行う。
【0070】
(ハードウェア構成図)
図7は、演算サーバ100のハードウェア構成を示すブロック図である。演算サーバ100は、コンピュータ501に実装される。コンピュータ501は、CPU502と、主記憶装置503と、補助記憶装置504と、インターフェイス505と、を備える。
【0071】
演算サーバ100の各構成要素の動作は、プログラムの形式で補助記憶装置504に記憶されている。CPU502は、プログラムを補助記憶装置504から読み出して主記憶装置503に展開し、当該プログラムに従って上記処理を実行する。また、CPU502は、プログラムに従って、記憶領域を主記憶装置503に確保する。当該プログラムは、具体的には、コンピュータ501に、暗号化データについて演算を行うプログラムである。
【0072】
なお、補助記憶装置504は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インターフェイス505を介して接続される磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等が挙げられる。また、このプログラムがネットワークを介してコンピュータ501に配信される場合、配信を受けたコンピュータ501が当該プログラムを主記憶装置503に展開し、処理を実行してもよい。
【0073】
また、当該プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、当該プログラムは、前述した機能を補助記憶装置504に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であってもよい。なお、
図7に示したハードウェア構成は、登録サーバ200および端末300も同様の構成としてもよい。これらの装置における各構成要素の動作も、上述の演算サーバ100と同様に、補助記憶装置に記憶されたプログラムに従ったCPUにより実現する。
【0074】
(効果の説明)
上述したように、本実施形態では、標準実行環境から保護された仮想実行環境を構築し、暗号化データについての演算処理を仮想実行環境において実行する。仮想実行環境では、暗号化データが復号され、復号された暗号化データについて演算が実行される。そして、演算結果は暗号化され、標準実行環境に提供される。復号された暗号化データ(生データ)に対して演算処理を行うことにより、暗号化状態のまま演算を行うことができる準同型暗号等を用いた演算よりも処理効率を向上させることができる。また、標準実行環境から保護された仮想実行環境においてデータの復号を行って演算処理を行うので、認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【0075】
また、仮想実行環境は、ソースコード実行後、所定のタイミングで廃棄されるワンタイム(使い捨て)の実行環境であるため、仮想実行環境のOSへの攻撃等による暗号鍵の不正取得等のリスクを低減し、セキュリティの向上を図ることができる。また、本実施形態における仮想実行環境の構成は、ソフトウエア技術のみで実現可能であり、追加ハードウェアを必要としないため、運用コストを安価にすることができる。
【0076】
<実施形態1の変形例1>
上述の演算サーバ100において、鍵管理部115は、共通鍵暗号方式および公開鍵暗号方式のシステム鍵を管理してもよい。すなわち、鍵管理部115は、共通鍵、ならびに公開鍵および秘密鍵の鍵対であるシステム鍵(システム公開鍵およびシステム秘密鍵)を管理し、ユーザが用いる端末300と共有するようにしてもよい。なお、鍵管理部115は、ユーザと対応付けられていないシステム鍵を管理していてもよく、また、暗号化データへのアクセスが許可されたユーザと事後的に対応付けられるようにしておいてもよい。
【0077】
端末300は、システム鍵に基づいて、機微データ等のプライバシー面での考慮が要求されるデータを暗号化し、暗号化データ117として演算サーバ100に送信する。端末300は、例えば、暗号化するデータの属性(文字列や変数の中身等)に応じて、AESや共通鍵暗号ベース検索可能暗号などの共通鍵暗号方式や、準同型暗号(HE:Homomorphic Encryption)などの公開鍵暗号方式の暗号方式を用いて暗号化する。また、上記の暗号方式に限られず、総務省及び経済産業省によって策定されている「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」に記載される暗号技術が用いられてもよい。暗号化データ117は、仮想実行環境において、復号部133により、システム鍵に基づいて復号され、平文データに対して、ソースコード118が実行される。
【0078】
ソースコード118は、平文処理用の演算アルゴリズムであり、仮想実行環境において復号された暗号化データ117に対して実行されることにより、暗号化データ117の秘密計算プロセスを高速化することができる。ソースコード実行部134は、例えば、復号した暗号化データ117についてキーデータの比較演算、データ解析のための条件分岐先が決定されたデータや、ソート等されたデータを生成するソースコードを実行する。すなわち、準同型暗号などによる暗号化状態のまま計算すると処理時間がかかってしまうような暗号化データについて、一時的に構築した仮想実行環境において暗号化データを復号して演算を実行することで、処理の高速化を図るものである。
【0079】
暗号化部135は、演算結果をシステム鍵に基づいて暗号化し、暗号化された演算結果は、標準実行環境に提供される。暗号化部135は、共通鍵方式や公開鍵方式の暗号方式で暗号化を行う。端末300は、暗号化された演算結果を、システム鍵に基づいて復号し、利用することが出来る。なお、暗号化部135において用いられるシステム鍵は、当該暗号化データ117を送信した端末300と共有したシステム鍵と異なる鍵にしてもよい。演算結果を暗号化する鍵を管理し、認証もしくは許可された者にのみ鍵を付与することで、演算結果へのアクセス管理を容易に行うことが出来る。
【0080】
また、仮想実行環境廃棄部113は、復号部133が暗号化データ117を復号した後、認証部114が認証したユーザ等からの指示に基づいて、復号した暗号化データ117と共に仮想実行環境を廃棄するようにしてもよい。認証されたユーザのみが仮想実行環境にアクセスするため、ユーザは、セキュリティが確保された環境において復号された暗号化データ117の内容の確認や分析を行うことができる。また、標準実行環境に提供することなく仮想実行環境とともに廃棄するため、情報流出の虞がない。
【0081】
<実施形態1の変形例2>
上述の演算サーバ100において、仮想実行環境において複数の暗号化データを復号し、1つのデータに統合して暗号化するようにしてもよい。すなわち、ソースコード118は、複数のデータを1つのデータに統合する処理を行うためのアルゴリズムであってもよい。統合とは、例えば、共通したキーをもつ2つ以上のデータベーステーブルについて、その共通キーを「統合キー」として、データベーステーブルを横・もしくは縦に連結させることである。
【0082】
図15は、統合する処理を説明する図である。
図15の例では、人事ドキュメント(テーブル)A150aと成績ドキュメント(テーブル)A150bについて、共通したキーである「社員ID」を統合キーとして連結させ、統合ドキュメント(テーブル)A151が生成される。なお、
図15の例は「統合」処理の一例であって、データの統合方法は上記方法に限られない。
【0083】
<実施形態2>
本実施形態に係る演算サーバ400は、仮想実行環境に対する不正なアクセスを検知する検知部を備える点で、実施形態1に係る演算サーバ100と異なる。
【0084】
図8は、演算サーバ400の機能構成の一例を示す機能ブロック図である。
図2で示した実施形態1に係る演算サーバ100とは、検知部119を備える点と、仮想実行環境廃棄部113に代えて仮想実行環境廃棄部413を備える点が異なる。したがって、一致する点については、説明は省略する。
【0085】
OS110は、仮想実行環境に対する不正なアクセスを検知する検知部119を備える。検知部119は、例えば、OS110上で動作するプログラムであり、OS110上でプログラム等を動作させるために必要な各種リソース(ファイルやレジストリ、カーネルデータ構造体など)に対して書き込みや削除を行うようなアクセス要求を不正なアクセスとして検知してもよい。また、検知部119は、例えば、アカウントの乗っ取りや、異なるIPアドレスからのアクセス、IDや認証情報等について所定期間における所定回数以上の試行、ユーザ指定プログラム以外のプログラムの割り込み等を不正なアクセスとして検知してもよいし、これらに限られず、公知の技術を採用して、不正なアクセスを検知してもよい。検知部119は、不正なアクセスを検知すると、不正なアクセスがある旨を仮想実行環境廃棄部413に通知する。
【0086】
仮想実行環境廃棄部413は、検知部119が不正なアクセスを検知したことに基づいて、仮想実行環境を廃棄する。仮想実行環境に対する不正なアクセスを検知したことに応じて、仮想実行環境を廃棄することで、復号された暗号化データが不正に取得されることを防止することができ、セキュリティを向上させることができる。
【0087】
<実施形態3>
本実施形態に係る演算サーバ500は、暗号化データの暗号方式を変換する演算装置である。暗号方式の変換とは、例えば、鍵方式が異なる暗号方式への変換であったり、ある暗号方式における計算手法等が異なる方式への変換であったりするものである。より具体的には、AESから準同型暗号への変換、共通鍵暗号ベース検索可能暗号から準同型暗号への変換、完全準同型暗号におけるGSW方式からBGV方式への変換など(それぞれ逆の変換であってもよい。)であるが、これらに限定するものではない。
【0088】
なお、準同型暗号は、上述のように、データを暗号化したまま加算や乗算を行った演算結果の暗号文を得ることができる暗号技術である。準同型暗号は、暗号文の加算のみ実行可能な「加法準同型暗号」、乗算のみ実行可能な「乗法準同型暗号」、加算および乗算の両方が実行可能な「完全準同型暗号」、加算と乗算のどちらも実行できるものの演算の実行回数に制限がある「Somewhat準同型暗号」等の複数の種類が存在するが、以下の本実施形態の説明では、準同型暗号の種類を特に限定するものではない。
【0089】
図9は、演算サーバ500の機能構成の一例を示す機能ブロック図である。
図2で示した実施形態1に係る演算サーバ100と機能が一致する点については同一の符号を付し、説明を省略する。
【0090】
制御部511は、仮想実行環境構築部512と、仮想実行環境廃棄部113と、判定部514とを有し、暗号化データ517(後述)を利用するアプリケーション120から、暗号化データ517についての暗号方式変換の処理要求を受けて、処理の制御を行う。
【0091】
判定部514は、暗号化データ517の暗号方式を判定する。判定部514は、例えば、暗号化データ517に含まれる暗号方式を示すタグ情報に基づいて暗号方式を判定してもよいし、アプリケーション120から暗号化データ517の暗号方式を示す情報を取得してもよい。また、判定部514は、暗号化データ517を解析し自動で暗号方式を判定するアルゴリズムを備えるようにしてもよい。なお、これらは判定方法を限定するものではなく、任意の方法で判定してよい。暗号方式は、例えば、共通暗号鍵方式である「DES」,「RC4」,「AES」,「共通鍵暗号ベース検索可能暗号」や、公開鍵暗号方式である「準同型暗号」,「RSA」,「楕円曲線暗号」等である。また、上記の暗号方式に限られず、総務省及び経済産業省によって策定されている「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」に記載される暗号技術であってもよい。
【0092】
判定部514は、暗号化データ517の暗号方式が所定の暗号方式であると判定すると、仮想実行環境構築部512に、標準実行環境から保護された仮想実行環境を構築するよう指示する。判定部514は、例えば、予め所定の暗号方式を示すテーブルを記憶しており、当該テーブルに基づいてどの暗号方式に変換するか判定する。また、判定部514は、例えば、アプリケーション120から暗号化データ517とソースコード(暗号ライブラリ)518とを受け付けて解析し、自動的にどの暗号方式に変換すべきか判定するアルゴリズムを備えるようにしてもよい。
【0093】
仮想実行環境構築部512は、判定部514の判定に基づいて、仮想実行環境を構築する。
【0094】
鍵管理部515は、ユーザのIDと、情報処理システム1においてデータを暗号化するのに用いるシステム鍵とを対応付けて記憶する鍵データベースを有している。鍵管理部515は、例えば、ユーザの利用登録が実行された際にシステム鍵を生成し、鍵データベースに登録してもよい。なお、鍵管理部515は、ユーザと対応付けられていないシステム鍵を管理していてもよく、また、暗号化データへのアクセスが許可されたユーザと事後的に対応付けられるようにしておいてもよい。システム鍵は、共通鍵、または、公開鍵および秘密鍵の鍵対(非対称鍵)であってもよく、いずれの場合であっても、上述の実施形態1に係る鍵管理部115と同様もしくは同様のセキュリティ水準が確保された方法等により、当該システム鍵をユーザと共有することができる。
【0095】
記憶部516は、暗号化データ517と、ソースコード518と、を記憶する。暗号化データ517は、上述したように、例えば、「DES」,「RC4」,「AES」,「検索可能暗号」,「準同型暗号」,「RSA」,「楕円曲線暗号」等の種々の暗号方式で暗号化されたデータであり、暗号化方式を示すタグ情報を含む。
【0096】
ソースコード518は、種々の暗号方式の暗号ライブラリを含むソースコードであり、ソースコードが実行されることにより、例えば、平文データを、上述したような暗号方式で暗号化することができる。
【0097】
演算処理部531は、取得部532と、復号部533と、ソースコード実行部534と、提供部536と、を含む。
【0098】
取得部532は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部516から暗号化データ517および鍵管理部515からシステム鍵を取得する。当該システム鍵は、処理要求の暗号化データ517の暗号化に用いられたシステム鍵である。また、取得部532は、上記判定に応じ、変換すべき暗号方式の暗号ライブラリであるソースコード518を取得する。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。
【0099】
復号部533は、取得部532が取得したシステム鍵によって、暗号化データ517を復号する。
【0100】
ソースコード実行部534は、復号された暗号化データ517に対し、暗号ライブラリであるソースコードを実行する。なお、暗号ライブラリの実行に際し、復号で用いたシステム鍵を用いてもよいし、復号で用いたシステム鍵とは異なるシステム鍵を鍵管理部515から取得して用いるようにしてもよい。どのシステム鍵を用いるかは、システムの管理者やユーザが適宜設定することができる。
【0101】
提供部536は、ソースコード実行部534が実行した結果(すなわち、暗号方式が変換された暗号化データ)を、標準実行環境等に提供する。例えば、暗号方式が変換された暗号化データを記憶部516に格納してもよいし、アプリケーション120に処理要求に対する応答として出力してもよい。
【0102】
(効果の説明)
上述したように、本実施形態では、標準実行環境から保護された仮想実行環境を一時的に構築し、暗号化データの暗号方式の変換を仮想実行環境において実行する。仮想実行環境では、暗号化データが復号され、復号された暗号化データについて暗号ライブラリがソースコードとして実行される。すなわち、復号された暗号化データが、暗号ライブラリの暗号方式で暗号化(再暗号化)され、標準実行環境に提供される。標準実行環境から保護された仮想実行環境においてデータの復号を行って暗号方式の変換を行うので、信頼または認証されないユーザからのアクセスを防ぐことができ、セキュリティも確保される。
【0103】
<実施形態4>
(秘密計算システム1000の構成)
図10は、本実施形態に係る秘密計算システム1000の構成を示す図である。
図10を参照して、実施形態4に係る秘密計算システム1000の構成について説明する。
【0104】
本実施形態の秘密計算システム1000は、暗号化されたデータについて、仮想実行環境を一時的に構築して処理を実行することで、セキュリティを確保しつつ、効率よく演算を行う情報処理システムである。秘密計算システム1000は、取得部1050と、記憶部1200と、鍵管理部1300と、処理実行部1100と、を備える。秘密計算システム1000は、仮想実行環境に対し、セキュアにアクセス可能なユーザか否かを認証する認証部(不図示)を備えるが、認証部の機能については、上述の実施形態1等で説明したのと同様であるので詳細は省略する。なお、認証部は、後述する暗号方式変換部1400、演算部1500、統合部1600に含まれていてもよい。
【0105】
取得部1050は、暗号化データを取得し、記憶部1200の暗号化データ1210に格納する。取得した暗号化データは、後述する鍵管理部1300と秘密計算システム1000を利用する端末等(不図示)とが共有する、または鍵管理部1300が管理するシステム鍵に基づき、種々の暗号方式で暗号化されている。暗号方式については後述する。
【0106】
記憶部1200は、システム鍵で暗号化された暗号化データを記憶する。記憶部1200は、暗号化データ1210と、ソースコード1220と、を含む。
【0107】
暗号化データ1210は、例えば、共通暗号鍵方式である「DES」,「RC4」,「AES」,「共通鍵暗号ベース検索可能暗号」や、公開鍵暗号方式である「準同型暗号」,「RSA」,「楕円曲線暗号」等の暗号方式で暗号化されたデータである。また、上記の暗号方式に限られず、総務省及び経済産業省によって策定されている「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」に記載される暗号技術であってもよい。暗号化データ1210には、上述の様々な方式の暗号化データが含まれていてもよい。また、暗号化データ1210は、認証または許可されたユーザ等の指示に応じて記憶部1200に記憶され、または削除されるようにしてもよい。
【0108】
ソースコード1220は、暗号ライブラリやデータの演算、統合のためのソースコードであり、暗号化データ1210をシステム鍵によって復号したデータ(平文データ)について実行されるプログラムである。暗号ライブラリは、例えば、準同型暗号、AES、検索可能暗号などの暗号ライブラリである。なお、上記暗号ライブラリやデータの演算、統合のためのソースコードは、処理実行部1100(後述する仮想実行環境構築部1412,1512,1612)が、仮想実行環境に含めて(プリインストールさせて)仮想実行環境を構築するようにしてもよい。
【0109】
鍵管理部1300は、秘密計算システム1000を利用するユーザのIDと、秘密計算システム1000においてデータを暗号化するのに用いるシステム鍵とを対応付けて記憶する鍵データベースを有しており、システム鍵を管理する。鍵管理部1300は、例えば、ユーザの利用登録が実行された際にシステム鍵を生成し、鍵データベースに登録してもよい。システム鍵は、共通鍵、または、公開鍵および秘密鍵の鍵対(非対称鍵)であってもよく、また、1ユーザに複数のシステム鍵が対応付けられていてもよい。また、鍵管理部1300は、ユーザと対応付けられていないシステム鍵を管理していてもよく、また、当該システム鍵を暗号化データへのアクセスが許可されたユーザと事後的に対応付けられるようにしておいてもよい。また、鍵管理部1300は、システム鍵に対して別のシステム鍵を対応付けておき、仮想実行環境において復号に用いたシステム鍵(復号鍵)と対応付けられた当該別のシステム鍵で当該復号鍵を暗号化するようにしてもよい。
【0110】
いずれの場合であっても、上述の実施形態1に係る鍵管理部115と同様もしくは同様のセキュリティ水準が確保された方法(例えば、認証部による認証)等により、当該システム鍵をユーザと共有することができる。また、システム鍵は、ネットワークNWを介したユーザ側で生成され、セキュリティが確保された方法により、鍵管理部1300の鍵データベースに登録されるようにしてもよい。
【0111】
処理実行部1100は、標準実行環境から保護される仮想実行環境を一時的に構築し、当該仮想実行環境において、鍵管理部1300から取得したシステム鍵に基づき暗号化データ1210を復号して所定の処理を実行し、実行結果を記憶部1200に記憶させる。処理実行部1100は、暗号方式変換部1400と、演算部1500と、統合部1600と、制御部1700と、を含む。
【0112】
暗号方式変換部1400は、取得部1050が取得した暗号化データの暗号方式を変換する処理を実行する。暗号方式の変換は、標準実行環境から保護される仮想実行環境において、鍵管理部1300から取得したシステム鍵に基づき、暗号化データ1210を復号して行われるが、処理の詳細は、
図11において説明する。
【0113】
演算部1500は、暗号化データについて所定の演算に関する処理を実行し、演算の結果を暗号化して記憶部1200の暗号化データ1210に格納する。演算処理は、仮想実行環境において、鍵管理部1300から取得したシステム鍵に基づき、暗号化データ1210を復号して行われるが、処理の詳細は、
図12において説明する。
【0114】
統合部1600は、複数の復号された暗号化データを1つのデータに統合する処理を実行し、統合の結果を暗号化して記憶部1200の暗号化データ1210に格納する。処理の詳細は、
図13において説明する。
【0115】
制御部1700は、演算処理要求に応じて、暗号方式変換部1400、演算部1500、統合部1600の少なくともいずれか一つに対し、要求される演算処理を実行するよう制御する。
【0116】
なお、本実施形態に係る秘密計算システム1000は、取得部1050、記憶部1200、鍵管理部1300、処理実行部1100のそれぞれが、1つの装置(コンピュータ:PCまたは仮想空間)であってもよいし、一つの装置内に、取得部1050、記憶部1200、鍵管理部1300、処理実行部1100のいずれかが同時に含まれていてもよい。例えば、取得部1050と記憶部1200、処理実行部1100とが1つの装置内に含まれていてもよい。なお、鍵管理部1300と記憶部1200とは、セキュリティ上、別個の装置であることが好ましい。しかし、上記の実施の形態で説明した機能を実現することができれば、秘密計算システムの各装置をどのように組み合わせて構成しても構わない。
【0117】
また、本実施の形態のうち、複数の機能要素を部分的に組合せて実施しても構わない。あるいは、本実施の形態のうち、1つの発明を部分的に実施しても構わない。その他、本実施の形態を、全体としてあるいは部分的に、どのように組合せて実施しても構わない。
【0118】
(暗号方式変換部1400の機能構成)
図11は、暗号方式変換部1400の機能構成の一例を示す機能ブロック図である。
図11を参照して、暗号方式変換部1400の機能構成の一例について説明する。なお、以下では、暗号方式変換部1400として機能する装置に搭載されるOS(不図示)等については、実施の形態1で述べたのと同様であるため、説明を省略する。
【0119】
制御部1410は、仮想実行環境構築部1412と、仮想実行環境廃棄部1413と、判定部1414とを有し、暗号化データ1210を利用するアプリケーション(不図示)から、暗号化データ1210についての暗号方式変換の処理要求を受けて、処理の制御を行う。なお、暗号化データ1210は、記憶部1200に格納されたデータではなく、取得部1050が取得した暗号化データであってもよい。
【0120】
判定部1414は、暗号化データ1210の暗号方式を判定する。判定方法は、上述の判定部514と同様であるため説明を省略する。
【0121】
判定部1414は、暗号化データ1210の暗号方式が所定の暗号方式であると判定すると、仮想実行環境構築部1412に、標準実行環境から保護された仮想実行環境を構築するよう指示する。判定部1414は、例えば、予め所定の暗号方式を示すテーブルを記憶しており、当該テーブルに基づいてどの暗号方式に変換するか判定する。判定部1414は、例えば、AESから準同型暗号へ、共通鍵暗号ベース検索可能暗号から準同型暗号へ、などの変換すべき暗号方式を示すテーブルを記憶していてもよい。また、判定部1414は、例えば、暗号化データ1210を利用するアプリケーション(不図示)から暗号化データ1210とソースコード(暗号ライブラリ)1220とを受け付けて解析し、自動的にどの暗号方式に変換すべきか判定するアルゴリズムを備えるようにしてもよい。
【0122】
仮想実行環境構築部1412は、判定部1414の判定に基づいて、仮想実行環境を構築する。仮想実行環境にはOS(不図示)が搭載され、当該OSは、演算処理部1430を備える。また、仮想実行環境廃棄部1413は、実施形態1に係る仮想実行環境廃棄部113と同様に、上述の仮想実行環境を廃棄する(消滅させる)。
【0123】
演算処理部1430は、取得部1432と、復号部1433と、ソースコード実行部1434と、提供部1436と、を含む。
【0124】
取得部1432は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部1200から暗号化データ1210および鍵管理部1300からシステム鍵を取得する。また、取得部1432は、判定部1414の上記判定に応じ、変換すべき暗号方式の暗号ライブラリであるソースコード1220を取得する。なお、上記システム鍵は、取得した暗号化データ1210の暗号化に用いられたシステム鍵および後述するソースコード1220(暗号ライブラリ)で用いるシステム鍵である。
【0125】
復号部1433は、取得部1432が取得したシステム鍵によって、暗号化データ1210を復号する。
【0126】
ソースコード実行部1434は、復号された暗号化データ1210に対し、変換すべき暗号方式の暗号ライブラリであるソースコードを実行する。すなわち、復号された暗号化データ1210は再暗号化される。この際用いられるシステム鍵は、鍵管理部1300が、当該暗号化データの送信元である認証済みのユーザと予め共有(管理)しているシステム鍵であってもよいし、共有(管理)していないシステム鍵であってもよい。なお、鍵管理部1300は、当該共有していないシステム鍵を、新規に共有(管理)することができる。また、鍵管理部1300は、再暗号化に際して、新たにシステム鍵を生成した場合は、当該新たに生成したシステム鍵を新規に共有(管理)することができる。また、演算処理部1430の鍵生成部(
図11において不図示)が新たにシステム鍵を生成し、再暗号化に用いた場合は、後述する提供部1436が鍵管理部1300に当該新たに生成されたシステム鍵を提供し、管理させるようにしてもよい。
【0127】
提供部1436は、ソースコード実行部1434が実行した結果(すなわち、暗号方式が変換された暗号化データ)を、標準実行環境等に提供する。例えば、暗号方式が変換された暗号化データを記憶部1200の暗号化データ1210に格納してもよいし、アプリケーション(不図示)へ処理要求に対する応答として出力してもよい。また、取得部1432が鍵管理部1300から取得し、ソースコード実行部1434がソースコードの実行の際に用いたシステム鍵は、仮想実行環境廃棄部1413が仮想実行環境を廃棄する際に廃棄する。
【0128】
(演算部1500の機能構成)
図12は、演算部1500の機能構成の一例を示す機能ブロック図である。
図12を参照して、演算部1500の機能構成の一例について説明する。なお、以下では、演算部1500として機能する装置に搭載されるOS(不図示)等については、実施の形態1で述べたのと同様であるため、説明を省略する。
【0129】
制御部1510は、推定部1511と、仮想実行環境構築部1512と、仮想実行環境廃棄部1513と、第2演算処理部1514と、を有し、暗号化データ1210を利用するアプリケーション(不図示)から、暗号化データ1210についての演算処理要求を受けて、演算処理の制御を行う。
【0130】
推定部1511は、暗号化データ1210についての処理が所定の条件を満たすか否かを判断する判断部として機能する。例えば、所定の条件として、推定部1511は、要求された演算処理に基づいて、暗号化データ1210についての演算の計算量を推定し、計算量が所定の計算量以上である(所定の条件を満たす)と判断すると、仮想実行環境構築部1512に、仮想実行環境を構築するよう指示する。推定部1511は、例えば、要求される演算の種類等(比較などの演算処理)に応じて、計算量を算出する。
【0131】
また、推定部1511は、所定の条件として、上述の計算量以外に、秘密計算システム1000におけるリソース(メモリ、CPU、並列サーバなど)、ユーザによる演算処理完了までの時間指定等を総合的に考慮して仮想実行環境を構築するか否かを判断してもよい。また、推定部1511は、演算処理ごとの一般実行時間基準を対応テーブル等で管理し、参照した実行時間に応じて仮想実行環境を構築するか否かを判断してもよい。
【0132】
また、推定部1511は、所定の条件として、暗号化データ1210が所定の暗号化データであると判断した場合は、仮想実行環境を構築するよう仮想実行環境構築部1512に指示するようにしてもよい。所定の暗号化データとは、例えば、準同型暗号で暗号化されているデータである。準同型暗号は、暗号化状態で演算可能であるものの、暗号サイズが非常に大きく、計算量が膨大となるため、後述するように仮想実行環境において復号して平文で演算することによりセキュリティが確保された状態で高速に処理することが可能である。
【0133】
また、所定の暗号化データは、例えば、AESや検索可能暗号で暗号化されているデータであってもよい。これらの暗号方式で暗号化されているデータは、暗号化状態で統計値等の計算をすることが困難であり、上記と同様に仮想実行実行環境において復号して平文で演算することにより、セキュリティが確保された状態で高速に処理することが可能である。
【0134】
仮想実行環境構築部1512は、推定部1511の指示に基づき、仮想実行環境を構築する。仮想実行環境にはOS(不図示)が搭載され、当該OSは、第1演算処理部1530を備える。
【0135】
仮想実行環境廃棄部1513は、実施形態1に係る仮想実行環境廃棄部113と同様に、上述の仮想実行環境を廃棄する(消滅させる)。
【0136】
第2演算処理部1514は、推定部1511が暗号化データ1210について所定の条件を満たさない(例えば、推定した計算量が所定の計算量以上ではない)と判断した場合に、暗号化データ1210について復号せずに要求された演算処理を実行する。処理要求の対象である暗号化データ1210が、例えば準同型暗号であった場合は、暗号化したまま演算を実行することができ、標準実行環境においても機密性を保持して演算結果を得ることができる。また、暗号化データ1210がAESであった場合は、全文一致等による検索などの処理を実行することができる。第2演算処理部1514は、記憶部1200のソースコード1220から準同型暗号の暗号データを演算するための秘密計算アルゴリズムを取得してもよい。
【0137】
第1演算処理部1530は、取得部1532と、復号部1533と、ソースコード実行部1534と、暗号化部1535と、提供部1536と、を含む。
【0138】
取得部1532は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部1200から暗号化データ1210およびソースコード1220、並びに鍵管理部1300からシステム鍵を取得する。当該システム鍵は、処理要求の暗号化データ1210の暗号化に用いられたシステム鍵である。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。
【0139】
復号部1533は、取得部1532が取得したシステム鍵によって、暗号化データ1210を復号する。
【0140】
ソースコード実行部1534は、復号された暗号化データ1210に対し、ソースコード1220を実行する。ソースコード1220は、平文処理用の演算アルゴリズムであり、例えば、復号された暗号化データ1210について、キーデータの比較演算、データ分布・クラスター生成、データ解析効率化のための条件分岐、もしくはその判別や、ソート等されたデータの生成、学習モデルの生成を行うためのアルゴリズムである。
【0141】
暗号化部1535は、ソースコード実行部1534が実行した演算の結果を暗号化する。暗号化部1535は、取得部1532が取得したシステム鍵に基づいて暗号化してもよいし、当該システム鍵に代えて、当該システム鍵とは異なる鍵に基づいて暗号化してもよい。例えば、鍵管理部1300は、システム鍵および当該システム鍵とは異なる鍵(システム鍵)を生成し、取得部1532は、これらの鍵を取得して暗号化部1535に送ってもよい。また、取得部1532は、第1演算処理部1530の鍵生成部(
図12において不図示)で生成した、システム鍵とは異なる鍵を取得し、暗号化部1535に送ってもよい。当該新たに生成された鍵は、後述する提供部1536が、鍵管理部1300に提供し、管理させるようにしてもよい。これにより、例えば、演算結果にアクセスを許可するユーザにのみ上記異なる鍵を付与するようにして、演算結果に対するアクセス権限を管理することができる。
【0142】
提供部1536は、暗号化された演算結果を標準実行環境等に提供する。例えば、暗号化された演算の結果を記憶部1200に格納してもよいし、アプリケーション(不図示)の処理要求に対する応答として出力してもよい。なお、提供部1536は、上述の鍵生成部で生成したシステム鍵を、鍵管理部1300に提供する。また、取得部1532が鍵管理部1300から取得し、暗号化部1535が暗号化に用いたシステム鍵は、仮想実行環境廃棄部1513が仮想実行環境を廃棄する際に廃棄する。
【0143】
(統合部1600の機能構成)
図13は、統合部1600の機能構成の一例を示す機能ブロック図である。
図13を参照して、統合部1600の機能構成の一例について説明する。なお、以下では、統合部1600として機能する装置に搭載されるOS(不図示)等については、実施の形態1で述べたのと同様であるため、説明を省略する。
【0144】
制御部1610は、仮想実行環境構築部1612と、仮想実行環境廃棄部1613と、を有し、暗号化データ1210を利用するアプリケーション(不図示)から、暗号化データ1210についての統合処理要求を受けて、統合処理の制御を行う。
仮想実行環境構築部1612は、統合処理要求に応じて、仮想実行環境を構築する。仮想実行環境にはOS(不図示)が搭載され、当該OSは、演算処理部1630を備える。
【0145】
仮想実行環境廃棄部1513は、実施形態1に係る仮想実行環境廃棄部113と同様に、上述の仮想実行環境を廃棄する(消滅させる)。
【0146】
演算処理部1630は、取得部1632と、復号部1633と、ソースコード実行部1634と、暗号化部1635と、提供部1636と、を含む。
【0147】
取得部1632は、暗号化データ取得部、ソースコード取得部および鍵取得部に相当し、記憶部1200から統合する対象である複数の暗号化データ1210およびソースコード1220、並びに鍵管理部1300からシステム鍵を取得する。当該システム鍵は、処理要求の暗号化データ1210それぞれの暗号化に用いられたシステム鍵である。なお、システム鍵の取得に関しては、例えばセッションキーで暗号化する等のセキュリティが確保された方法で行われることが好ましい。また、ソースコード1220は、複数のデータを1つのデータに統合する処理を行うためのアルゴリズムである。
【0148】
復号部1633は、取得部1632が取得したシステム鍵によって、暗号化データ1210を復号する。
【0149】
ソースコード実行部1634は、復号された複数の暗号化データ1210に対し、統合処理を行うアルゴリズムであるソースコード1220を実行し、1つのデータに統合する。ソースコードの実行により、例えば、共通したキーをもつ2つ以上のデータベーステーブルについて、その共通キーを「統合キー」として、データベーステーブルを横・もしくは縦に連結させ、1つのデータベーステーブルとする(上述の
図15参照)。
【0150】
暗号化部1635は、ソースコード実行部1634が実行した統合の結果を暗号化する。暗号化部1635は、取得部1632が取得したシステム鍵のいずれかに基づいて暗号化してもよいし、当該システム鍵に代えて、当該システム鍵とは異なる鍵に基づいて暗号化してもよい。例えば、鍵管理部1300は、システム鍵および当該システム鍵とは異なる鍵(システム鍵)を生成し、取得部1632は、これらの鍵を取得して暗号化部1635に送ってもよい。また、取得部1632は、演算処理部1630の鍵生成部(
図13において不図示)で生成した、システム鍵とは異なる鍵を取得し、暗号化部1635に送ってもよい。当該新たに生成された鍵は、後述する提供部1636が、鍵管理部1300に提供し、管理させるようにしてもよい。これにより、例えば、統合結果にアクセスを許可するユーザにのみ上記異なる鍵を付与するようにして、統合結果に対するアクセス権限を管理することができる。
【0151】
提供部1636は、暗号化された演算結果を標準実行環境等に提供する。例えば、暗号化された演算の結果を記憶部1200に格納してもよいし、アプリケーション(不図示)の処理要求に対する応答として出力してもよい。なお、提供部1636は、上述の鍵生成部で生成したシステム鍵を、鍵管理部1300に提供する。また、取得部1632が取得し、暗号化部1635が暗号化に用いたシステム鍵は、仮想実行環境廃棄部1613が仮想実行環境を廃棄する際に廃棄する。
【0152】
(秘密計算システム1000における処理の流れ)
図14は、秘密計算システム1000における処理の一例を示すフローチャートである。
図14を参照して、秘密計算システム1000における、暗号化データの演算処理要求に応じた処理について説明する。なお、
図14で示す処理ステップの順序は一例であり、秘密計算システム1000で行われる処理は、以下で説明する順序に限られないことは言うまでもない。すなわち、
図14においては、「暗号方式の変換」→「統合」→「演算」の順序で処理が実行されるが、処理要求の内容に応じて、任意の組み合わせ、任意の順序で処理を実行してもよい。例えば、「統合」→「暗号方式の変換」→「演算」、「暗号方式の変換」→「演算」→「統合」、「暗号方式の変換」→「統合」→「暗号方式の変換」、「統合」→「演算」、「暗号方式の変換」→「演算」、「演算」→「統合」などの順序で処理を実行させることができる。また、秘密計算システム1000は、処理要求の内容に応じて、「暗号方式の変換」のみ、「統合」のみ、「演算」のみを実行してもよい。
【0153】
また、
図14において、鍵管理部1300は、当該システムの認証もしくは許可されたユーザとシステム鍵の共有がなされているとして説明する。
【0154】
ステップS1003〜S1006から成る処理は、暗号方式変換部1400における処理である。また、ステップS1007〜S1008の処理は、統合部1600における処理であり、ステップS1009〜S1015から成る処理は、演算部1500における処理である。制御部1700は、演算処理要求に応じて、暗号方式変換部1400、演算部1500、統合部1600に対し演算処理を実行するよう制御する。
【0155】
ステップS1001において、取得部1050は、暗号化データを取得する。また、取得部1050は、暗号化データに対する演算処理要求も取得する。
【0156】
ステップS1003において、暗号方式変換部1400は、取得した暗号化データの暗号方式が所定の暗号方式であるか判定する。例えば、所定の暗号方式を示した暗号方式のテーブルを予めシステムの運営者等が設定しておき、当該テーブルに基づいて判定してもよい。所定の暗号方式であると判定した場合(ステップS1003において、Y)、ステップS1005において、仮想実行環境構築部1412は仮想実行環境を構築し、演算処理部1430が暗号化データの暗号方式を変換する。変換が終了すると、仮想実行環境廃棄部1413は、仮想実行環境を廃棄する。演算処理部1430における処理は
図11で説明した通りである。
【0157】
所定の暗号方式ではないと判定した場合(ステップS1003において、N)、すなわち、暗号方式を変換する必要がない場合は、ステップS1006の処理に進む。
【0158】
ステップS1006において、暗号方式変換部1400は、ステップS1005において暗号方式を変換した暗号化データまたはステップS1003において所定の暗号方式ではないと判定した暗号化データを記憶部1200の暗号化データ1210に格納する。
【0159】
ステップS1007において、統合部1600は、記憶部1200から複数の暗号化データ1210を取得し、仮想実行環境において暗号化データを復号する。そして、復号された暗号化データを1つのデータに統合し、統合の結果を暗号化する。
【0160】
ステップS1008において、統合部1600は、暗号化した統合の結果を記憶部1200の暗号化データ1210に格納する。
【0161】
ステップS1009において、演算部1500は、暗号化データ1210について処理要求される演算の計算量を推定し、計算量が所定量以上であるか(所定の条件を満たすか否か)を判断する。計算量は、処理要求される演算の種類等に基づいて判断してもよい。
【0162】
計算量が所定量以上であると判断した場合(ステップS1009において、Y)、ステップS1011において、仮想実行環境構築部1512は仮想実行環境を構築し、第1演算処理部1530が演算を実行する。演算が終了すると、仮想実行環境廃棄部1513は仮想実行環境を廃棄する。第1演算処理部1530における処理は、
図12で説明したとおりである。
【0163】
計算量が所定量以上ではないと判断した場合(ステップS1009において、N)、ステップS1013において、第2演算処理部1514によって演算を実行する。すなわち、処理要求される演算が、例えば準同型暗号のような暗号化データに対して、所定の計算量以下であると推定される場合は、準同型暗号で暗号化したまま演算を実行する。計算量が所定の計算量以上である場合は、標準実行環境から保護される仮想実行環境において暗号化データを復号して演算を実行することで、セキュリティを確保しつつ演算速度を向上させることができる。
【0164】
ステップS1015において、演算部1500は、暗号化されている演算結果を記憶部1200の演算結果1230に格納し、処理を終了する。
【0165】
(効果の説明)
上述したように、本実施形態に係る秘密計算システムでは、暗号化されたデータについて、仮想実行環境を一時的に構築して処理を実行することで、セキュリティを確保しつつ、効率よく演算を行うことができる。すなわち、標準実行環境から保護された仮想実行環境において暗号化データを復号し、平文データに対して処理を実行することで、安全に、高速な演算を行うことができる。
【0166】
<実施形態4の変形例>
秘密計算システム1000において、処理実行部1100は、仮想実行環境を構築し、当該仮想実行環境において、鍵管理部1300から取得したシステム鍵に基づき、暗号化データ1210を復号させる。そして、再暗号化や、処理結果を標準実行環境に提供することなく、復号した暗号化データと共に、仮想実行環境を廃棄するようにしてもよい。すなわち、一時的に構築された仮想実行環境において暗号化データを復号し、許可されたユーザ等のみを仮想空実行環境にアクセスさせ、目視等によりデータを確認や分析することができるようにする。これにより、セキュリティが確保された状態でデータの分析や確認を可能にしつつ、分析結果等を標準実行環境にデータとして出力させないようにすることができる。
【0167】
上記実施形態は、システムの形態の他、上述したコンピュータ(ハードウェア)において実行される情報処理プログラムや情報処理装置の形態で実施されることが可能である。
【0168】
上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
本発明に係る情報処理システムは、システム鍵を管理する鍵管理部と、システム鍵で暗号化された暗号化データを記憶する記憶部と、標準実行環境から保護される仮想実行環境を一時的に構築し、当該仮想実行環境において、鍵管理部から取得したシステム鍵に基づき暗号化データを復号する処理実行部と、を備える。