説明

情報処理装置及び情報処理プログラム

【課題】処理対象データと処理プログラムを取得し、処理対象データに対して処理プログラムを実行する場合において、仮想計算機を利用し、当該処理の実行単位で処理対象データの暗号化処理と復号処理を制御できる情報処理装置を提供する。
【解決手段】情報処理装置の仮想計算機の鍵対生成手段は、秘密鍵Aと公開鍵Aを生成し、公開鍵出力手段は、公開鍵Aを出力し、処理対象データ取得手段は、公開鍵Aで暗号化された処理対象データを外部から取得し、復号手段は、処理対象データを秘密鍵Aで復号し、処理プログラム取得手段は、処理プログラムを外部から取得し、実行手段は、復号された処理対象データを対象に処理プログラムを実行し、公開鍵取得手段は、公開鍵Bを外部から取得し、暗号化手段は、処理プログラムの処理結果として生成された処理結果データを、公開鍵Bで暗号化し、出力手段は、暗号化された処理結果データを外部へ出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【0002】
情報処理を依頼する場合に、情報処理が依頼される処理側の正当性を確認する技術がある。
これに関連する技術として、例えば、特許文献1には、サーバシステムがクライアント装置からの送信要求に適切に対応することが可能な情報処理システムを提供することを課題とし、情報処理システムは、クライアント装置とサーバシステムとを備え、クライアント装置は、機密情報に基づいて処理を行うための機密プロセスとしてアプリケーションプログラムを実行し、クライアント装置は、実行中のアプリケーションプログラムにより、機密情報の送信を要求する送信要求が生成された場合、当該送信要求と、当該送信要求を生成したプロセスが機密プロセスであることを表す機密プロセス情報と、をサーバシステムへ送信し、サーバシステムは、クライアント装置から、送信要求及び機密プロセス情報を受信した場合、受信した送信要求に応じて、記憶されている機密情報をクライアント装置へ送信することが開示されている。
【0003】
また、例えば、特許文献2には、情報処理要求元の情報処理装置のセキュリティ条件を反映した情報処理要求を他の情報処理装置に対して行うことを課題とし、データサーバがデータサーバからのデータに対する処理要求を取得すると、処理要求に基づいて、データに対するセキュリティ要求を作成し、作成されたセキュリティ要求をデータサーバに送信し、次に、データサーバは、セキュリティ要求に基づいて、データサーバが作成するセキュリティ設定情報を取得し、そして、取得するセキュリティ設定情報と、前記セキュリティ要求とに基づいてデータに対する処理要求の可否を判断し、そして、判断された判断結果を伴って処理要求に対する可否と、データと、データのセキュリティ指示情報とをデータサーバに送信することが開示されている。
【0004】
また、例えば、特許文献3には、サーバとクライアントが接続されるネットワークシステムにおける第三者への情報漏洩を防ぐことを課題とし、第三者がサービス利用者であるクライアントは、SecurityTagを付与したサービス検索要求を送信せず、要求を受信したサーバはSecurityTagが無い要求は破棄するため、第三者のクライアントへサービス検索要求に対する応答が行われないことにより、第三者のクライアントに対してサービス情報の漏洩を防ぎ、サービス利用に制限をかけられることが開示されている。
【0005】
また、例えば、特許文献4には、管理装置を用いて端末間で処理されるデータを管理する管理システムにおいて、端末間及び管理装置において大きな処理負担を与えず、且つ端末間においては安全性の確認されたデータのやり取りを行うことができる管理システムを提供することを課題とし、管理システムは、他の端末装置からのファイル情報の取得を要求して管理装置に対して処理依頼のための依頼信号を発行する処理依頼端末、ファイル情報を保持している依頼先端末、及び処理依頼端末と依頼先端末と間でのやり取りされるファイル情報の管理を行う管理装置がネットワークバスを介して相互に接続されて構成されることが開示されている。
【0006】
また、例えば、特許文献5には、メッセージの信託システムに関し、ネットワーク経由で送受信される機密度の高いメッセージについてのセキュリティ業務の信頼性を向上させることを目的とし、身分証明ID発行サーバ及び身分証明ID管理サーバは、ユーザからの要求に応じて当該ユーザ固有の身分証明IDPを発行及び交付し、ユーザは、身分証明IDPを用いてセキュリティ業務管理サーバにメッセージについての信託条件を提示し、これに基づいてセキュリティ業務管理サーバは、メッセージの保管,公開,破棄などのセキュリティ業務を行い、ネットワークを介したデータ通信では、公開鍵暗号方式によって身分証明IDPやメッセージの機密保護を図り、また、信託するメッセージには、作成者がユーザであることを示す証拠情報や、原本であることを証明する証拠情報を付加することが開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2010−108237号公報
【特許文献2】特開2008−257340号公報
【特許文献3】特開2005−150829号公報
【特許文献4】特開2004−157993号公報
【特許文献5】特開平08−185376号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、処理対象データと処理プログラムを取得し、処理対象データに対して処理プログラムを実行する場合において、仮想計算機を利用し、当該処理の実行単位で処理対象データの暗号化処理と復号処理を制御できる情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【0009】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項1の発明は、本情報処理装置の仮想計算機内でのみ利用される仮想計算機秘密鍵と該仮想計算機秘密鍵に対応する仮想計算機公開鍵とを有する非対称鍵暗号の鍵対を生成する鍵対生成手段と、前記鍵対生成手段によって生成された鍵対のうち仮想計算機公開鍵を出力する公開鍵出力手段と、前記仮想計算機公開鍵で暗号化された処理対象データを外部から取得する処理対象データ取得手段と、前記処理対象データ取得手段で取得された前記仮想計算機公開鍵で暗号化された処理対象データを前記仮想計算機秘密鍵で復号する復号手段と、処理プログラムを外部から取得する処理プログラム取得手段と、前記復号手段によって復号された処理対象データを対象にして、前記処理プログラム取得手段によって取得された処理プログラムを実行する実行手段と、処理依頼者公開鍵を外部から取得する公開鍵取得手段と、前記実行手段による処理プログラムの処理結果として生成された処理結果データを、前記公開鍵取得手段によって取得された依頼者公開鍵で暗号化する暗号化手段と、前記暗号化手段によって暗号化された処理結果データを外部へ出力する処理結果データ出力手段を有する仮想計算機を具備することを特徴とする情報処理装置である。
【0010】
請求項2の発明は、処理依頼者が用いている計算機である処理依頼者計算機から前記仮想計算機公開鍵で暗号化された処理対象データと前記依頼者公開鍵を取得する処理対象データ取得手段と、処理プログラム提供手段から処理プログラムを取得する処理プログラム取得手段と、前記仮想計算機の前記公開鍵出力手段により出力された仮想計算機公開鍵と、仮想計算機の前記処理結果データ出力手段により出力された前記依頼者公開鍵で暗号化された処理結果データを前記処理依頼者計算機に送信する処理結果データ送信手段と、前記仮想計算機の起動、削除、該削除の場合に該仮想計算機が用いたデータを消去する制御を行う仮想計算機制御手段をさらに具備することを特徴とする請求項1に記載の情報処理装置である。
【0011】
請求項3の発明は、計算機を、該計算機の仮想計算機内でのみ利用される仮想計算機秘密鍵と該仮想計算機秘密鍵に対応する仮想計算機公開鍵とを有する非対称鍵暗号の鍵対を生成する鍵対生成手段と、前記鍵対生成手段によって生成された鍵対のうち仮想計算機公開鍵を出力する公開鍵出力手段と、前記仮想計算機公開鍵で暗号化された処理対象データを外部から取得する処理対象データ取得手段と、前記処理対象データ取得手段で取得された前記仮想計算機公開鍵で暗号化された処理対象データを前記仮想計算機秘密鍵で復号する復号手段と、処理プログラムを外部から取得する処理プログラム取得手段と、前記復号手段によって復号された処理対象データを対象にして、前記処理プログラム取得手段によって取得された処理プログラムを実行する実行手段と、処理依頼者公開鍵を外部から取得する公開鍵取得手段と、前記実行手段による処理プログラムの処理結果として生成された処理結果データを、前記公開鍵取得手段によって取得された依頼者公開鍵で暗号化する暗号化手段と、前記暗号化手段によって暗号化された処理結果データを外部へ出力する処理結果データ出力手段を有する仮想計算機として機能させるための情報処理プログラムである。
【発明の効果】
【0012】
請求項1の情報処理装置によれば、処理対象データと処理プログラムを取得し、処理対象データに対して処理プログラムを実行する場合において、処理対象データが処理プログラムによる処理以外の処理には使用されないようにすることができる。
【0013】
請求項2の情報処理装置によれば、仮想計算機を削除する場合にその仮想計算機が用いたデータを消去することができる。
【0014】
請求項3の情報処理プログラムによれば、処理対象データと処理プログラムを取得し、処理対象データに対して処理プログラムを実行する場合において、処理対象データが処理プログラムによる処理以外の処理には使用されないようにすることができる。
【図面の簡単な説明】
【0015】
【図1】本実施の形態の構成例についての概念的なモジュール構成図である。
【図2】仮想計算機モジュール内の構成例についての概念的なモジュール構成図である。
【図3】本実施の形態による処理例を示すフローチャートである。
【図4】本実施の形態による処理例を示すフローチャートである。
【図5】計算機内の構成例についての概念的なモジュール構成図である。
【図6】本実施の形態による処理例を示すフローチャートである。
【図7】本実施の形態による処理例を示すフローチャートである。
【図8】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム、以下、単にプログラムともいう)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(計算機にそれぞれの手順を実行させるためのプログラム、計算機をそれぞれの手段として機能させるためのプログラム、計算機にそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、「保存する」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1つの計算機によって実行されてもよいし、分散又は並列環境における計算機によって1モジュールが複数の計算機で実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。
また、システム又は装置とは、複数の計算機、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つの計算機、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(社会システム)にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
【0017】
本実施の形態である情報処理装置(計算機112)は、機密性を有する処理対象データと処理プログラムを取得し、処理対象データに対して処理プログラムを実行する(以下、処理代行ともいう)ものであって、図1の例に示すように、計算機112は、通信回線150を介して計算機160、計算機170と接続されている。計算機112、計算機160、計算機170は、物理的な実体を有している計算機であるが、1つの機器で構成されていてもよいし、複数の機器によって構成されていてもよい。通信回線150は、インターネット等であってもよい。
【0018】
例えば、インターネットを経由してデータ処理を有償又は無償で実施するサービスが普及しており、一般的にウェブ・サービスなどと呼ばれる。本実施の形態は、例えばウェブ・サービスで用いられる。
ウェブ・サービスにおいて、処理を依頼する側は、処理に必要な計算機やプログラムを用意すること無しに、処理を行いたいデータをウェブ・サービスに送信し、処理の結果となるデータを受信するのみで所望の処理結果が得られる。ウェブ・サービスにおけるデータのやり取りには、HTTP(Hyper Text Transfer Protocol)と呼ばれる技術などが用いられ、さらにデータを第三者から秘匿する目的では、SSL(Secure Socket Layer)と呼ばれる技術を用いることが一般的に行われている。さらに、特許文献1には、データを用いるプロセス(アプリケーションプログラムがメモリ上で実行されている各々の実体)を特定し、クライアントは、そのプロセスに特有の情報とともにサーバに対してデータの送信要求を行うとともに、要求されたサーバはプロセスに特有の情報に基づいて機密性を持つデータの送信の可否判断を行う技術が開示されている。
ウェブ・サービスの形態で提供されるデータ処理はさまざまであり、多くの提供主体により提供される。ここではデータ処理を提供しようとする提供主体を、処理提供者と呼ぶ。また、自らが持つデータに対するデータ処理を依頼する主体を、処理依頼者と呼ぶ。
例えば企業活動において、業務内において必要なデータ処理はさまざまであり、ウェブ・サービスを利用してそれらのデータ処理を実施しようとする場合、多数の処理提供者による処理が必要となる。
【0019】
計算機160は、通信回線150を介して、計算機112の処理対象データ取得モジュール102、処理結果データ送信モジュール104と接続されている。計算機160は、処理依頼者が使用する計算機である。計算機112に対して、処理代行を要求して、その処理対象となるデータ(以下、処理対象データともいう)を送信する。そして、処理結果であるデータ(以下、処理結果データともいう)を受信する。
計算機170は、通信回線150を介して、計算機112の処理プログラム取得モジュール106と接続されている。計算機170は、処理代行用の処理プログラムを提供する計算機である。計算機112に対して、処理代行用の処理プログラムを送信する。処理プログラムの提供者(以下、処理提供者ともいう)が使用する計算機である。
計算機112は、処理代行の処理を行う計算機である。計算機112は、計算機160から処理代行の要求を受け取り、処理対象データを受け取る。そして、その処理対象データを処理する処理プログラムを計算機170から受け取り(予め計算機170から処理プログラムを受け取っており蓄積していてもよい)、処理対象データを対象にして、処理プログラムを実行する。計算機112の所有者は、処理提供者であってもよいし、他の者であってもよい。
【0020】
計算機112は、処理対象データ取得モジュール102、処理結果データ送信モジュール104、処理プログラム取得モジュール106、仮想計算機制御モジュール108、仮想計算機モジュール110を有している。各モジュールは、計算機112の上で実行されるプログラムとして実施される。
処理対象データ取得モジュール102は、仮想計算機制御モジュール108と接続されており、通信回線150を介して、計算機160と接続されている。
処理結果データ送信モジュール104は、仮想計算機制御モジュール108と接続されており、通信回線150を介して、計算機160と接続されている。
処理プログラム取得モジュール106は、仮想計算機制御モジュール108と接続されており、通信回線150を介して、計算機170と接続されている。
【0021】
処理対象データ取得モジュール102、処理結果データ送信モジュール104、処理プログラム取得モジュール106の各プログラムは、HTTPサービス・プログラムを用いることが好ましい。この場合、データ、処理プログラム等の取得、送信は、HTTPプロトコルによるリクエストとそれに対する応答として実現される。すなわち、処理対象データの取得については、処理依頼者が使用する計算機160から処理対象データをHTTPプロトコルにより送信し、処理代行の処理を行う計算機112が受信することにより実現される。処理対象データの取得の取得手順の詳細は、後述する。また、処理結果データの送信については、処理代行の処理を行う計算機112から処理結果データをHTTPプロトコルにより送信し、処理依頼者が使用する計算機160が受信することにより実現される。処理プログラムの取得については、処理提供者が使用する計算機170から処理プログラムをHTTPプロトコルにより送信し、処理代行の処理を行う計算機112が受信することにより実現される。取得した処理プログラムは繰り返し利用されることが想定されるので、処理代行の処理を行う計算機112内の記憶装置に保存する。
【0022】
仮想計算機制御モジュール108は、処理対象データ取得モジュール102、処理結果データ送信モジュール104、処理プログラム取得モジュール106、仮想計算機モジュール110と接続されている。仮想計算機制御モジュール108は、仮想計算機モジュール110の起動、削除(仮想計算機モジュール110の処理終了に伴う削除)、その削除の場合に仮想計算機モジュール110が用いたデータを消去する制御を行う。この他に、データ、処理プログラムの入出力、仮想計算機モジュール110の状態データの管理を行う。具体的な処理の手順は後述する。なお、仮想計算機とは、計算機の動作をエミュレートするプログラムである。また、エミュレートされた仮想の計算機そのものも仮想計算機という。仮想計算機によって、1つの計算機上で複数の計算機やOSを動作させたり、別のアーキテクチャである計算機用のプログラムを動作させたりすることができる。つまり、物理的な計算機において、1つ以上の仮想計算機を動作させ、各々の仮想計算機の上で、例えばデータの加工を行うような計算処理を実施させることが可能である。仮想計算機においては、仮想計算機内の状態すべてを一つ又は複数のファイルにより保存することができる。このファイル群をここでは状態データと呼ぶ。同じ内容の状態データを用いて仮想計算機を動作させることにより、同じ状態から仮想計算機の動作を始めたりすること、また、状態データを削除することにより、仮想計算機内に含まれていたすべての情報を削除したりすること等ができる。
仮想計算機制御モジュール108は、仮想計算機モジュール110の初期化から削除までの間に、仮想計算機モジュール110に対しては、処理対象データと処理プログラムの入力、仮想計算機公開鍵と処理結果データの出力を除いて、入出力が無いように制御する。又は、仮想計算機モジュール110は、処理対象データと処理プログラムの入力、仮想計算機公開鍵と処理結果データの出力を除いて、入出力が無いように構成している。
【0023】
仮想計算機モジュール110は、仮想計算機制御モジュール108と接続されている。仮想計算機モジュール110内のモジュール構成例、処理内容については、次に詳述する。
図2は、仮想計算機モジュール110内の構成例についての概念的なモジュール構成図である。
仮想計算機モジュール110は、仮想計算機鍵対生成モジュール202、仮想計算機公開鍵出力モジュール204、暗号化処理対象データ取得モジュール206、処理対象データ復号モジュール208、処理プログラム取得モジュール210、処理プログラム実行モジュール212、処理結果データ暗号化モジュール214、暗号化処理結果データ出力モジュール216、処理依頼者公開鍵取得モジュール218を有している。各モジュールは、仮想計算機モジュール110内で実行されるプログラムとして実施される。なお、仮想計算機モジュール110は、仮想計算機制御モジュール108によって起動(生成)されるものであり、1つであってもよいし、複数あってもよい。複数ある場合は、各仮想計算機モジュール110は、独立して並列的に実施され、相互に干渉しない。もちろんのことながら、仮想計算機モジュール110が用いるデータの入力、仮想計算機モジュール110によるデータ出力、仮想計算機モジュール110で実施される処理プログラムの入力は、仮想計算機制御モジュール108のみが制御し、仮想計算機モジュール110内で用いたデータ等について、仮想計算機モジュール110の外部からアクセスすることはできない。
なお、仮想計算機モジュール110が内部に保持するデータを外部から秘匿する技術は広く知られており、それらの技術を本実施の形態でも用いることが好ましい。例えば、仮想計算機モジュール110の状態を保持する状態データは仮想計算機モジュール110が保持する鍵(後述する非対称鍵暗号の鍵であってもよいし、他の暗号化手法に用いられる鍵であってもよい)により暗号化する技術が知られている。
【0024】
仮想計算機鍵対生成モジュール202は、仮想計算機公開鍵出力モジュール204、処理対象データ復号モジュール208と接続されている。仮想計算機鍵対生成モジュール202は、計算機112の仮想計算機モジュール110内でのみ利用される仮想計算機秘密鍵とその仮想計算機秘密鍵に対応する仮想計算機公開鍵とを有する非対称鍵暗号の鍵対を生成する。
仮想計算機公開鍵出力モジュール204は、仮想計算機鍵対生成モジュール202と接続されている。仮想計算機公開鍵出力モジュール204は、仮想計算機鍵対生成モジュール202によって生成された鍵対のうち仮想計算機公開鍵を出力する。
仮想計算機鍵対生成モジュール202と仮想計算機公開鍵出力モジュール204の処理について説明する。仮想計算機鍵対生成モジュール202は、非対称鍵暗号に用いることができる鍵対、すなわち2つの対になった数値を生成する。2つの数値のうち一方は、公開鍵として仮想計算機公開鍵出力モジュール204により外部、すなわち本実施の形態では仮想計算機制御モジュール108へ出力する。もう一方の数値は秘密鍵として、仮想計算機モジュール110内の秘密鍵記憶モジュール(図示せず)に保持する。
【0025】
暗号化処理対象データ取得モジュール206は、処理対象データ復号モジュール208と接続されている。暗号化処理対象データ取得モジュール206は、仮想計算機公開鍵で暗号化された処理対象データを外部から取得する。
処理対象データ復号モジュール208は、仮想計算機鍵対生成モジュール202、暗号化処理対象データ取得モジュール206、処理プログラム実行モジュール212と接続されている。処理対象データ復号モジュール208は、暗号化処理対象データ取得モジュール206で取得された仮想計算機公開鍵で暗号化された処理対象データを仮想計算機秘密鍵で復号する。
暗号化処理対象データ取得モジュール206と処理対象データ復号モジュール208の処理について説明する。暗号化処理対象データ取得モジュール206は、仮想計算機モジュール110の外部、すなわち仮想計算機制御モジュール108から処理対象データを取得する。取得した暗号化処理対象データは、前述の仮想計算機公開鍵で暗号化されており、処理対象データ復号モジュール208は仮想計算機モジュール110内の秘密鍵記憶モジュールに保持している仮想計算機秘密鍵により復号する。
【0026】
処理プログラム取得モジュール210は、処理プログラム実行モジュール212と接続されている。処理プログラム取得モジュール210は、処理プログラムを外部から取得する。
処理プログラム実行モジュール212は、処理対象データ復号モジュール208、処理プログラム取得モジュール210、処理結果データ暗号化モジュール214と接続されている。処理プログラム実行モジュール212は、処理対象データ復号モジュール208によって復号された処理対象データを対象にして、処理プログラム取得モジュール210によって取得された処理プログラムを実行する。
処理プログラム取得モジュール210と処理プログラム実行モジュール212の処理について説明する。処理プログラム取得モジュール210は、仮想計算機モジュール110の外部、すなわち仮想計算機制御モジュール108から処理プログラムを取得する。処理プログラム実行モジュール212は、前述の復号された処理対象データを対象に、処理プログラムを実行し、処理結果データを得る。
【0027】
処理依頼者公開鍵取得モジュール218は、処理結果データ暗号化モジュール214と接続されている。処理依頼者公開鍵取得モジュール218は、処理依頼者公開鍵を外部から取得する。
処理結果データ暗号化モジュール214は、処理プログラム実行モジュール212、暗号化処理結果データ出力モジュール216、処理依頼者公開鍵取得モジュール218と接続されている。処理結果データ暗号化モジュール214は、処理プログラム実行モジュール212による処理プログラムの処理結果として生成された処理結果データを、処理依頼者公開鍵取得モジュール218によって取得された依頼者公開鍵で暗号化する。
暗号化処理結果データ出力モジュール216は、処理結果データ暗号化モジュール214と接続されている。暗号化処理結果データ出力モジュール216は、処理結果データ暗号化モジュール214によって暗号化された処理結果データを外部へ出力する。
処理依頼者公開鍵取得モジュール218と処理結果データ暗号化モジュール214と暗号化処理結果データ出力モジュール216の処理について説明する。処理依頼者公開鍵取得モジュール218は、仮想計算機モジュール110の外部、すなわち仮想計算機制御モジュール108から処理依頼者公開鍵を取得する。処理結果データ暗号化モジュール214は、処理依頼者公開鍵により処理結果データを暗号化する。暗号化処理結果データ出力モジュール216は、暗号化された処理結果データを仮想計算機モジュール110の外部、すなわち仮想計算機制御モジュール108へ出力する。
【0028】
図3は、本実施の形態による処理例を示すフローチャートである。処理代行の処理を行う計算機112が一回の処理依頼に対する動作を行う手順例を説明する。なお、この処理代行は、サービスの形態で実現され、一つの処理依頼が行われるまでは待機しており、処理依頼に応じて、図3に例示する処理を実施する。処理依頼は複数回、サービスに対して行われることが可能であり、各々の処理依頼に対して同じ処理を繰り返す。また、異なる処理依頼に対する動作を並行して行うようにしてもよい。なお、この処理例では、予め一つ以上の処理プログラムを、処理プログラム取得モジュール106により処理提供者の計算機170から受信し、処理代行を実施する計算機112内の記憶モジュール(図示せず)に、処理種別と対応付けて保存してあるものとする。
【0029】
待機状態として、計算機112は既に処理プログラムを取得しており、未だ処理要求は受信していないとする。
ステップS302では、処理対象データ取得モジュール102が、処理依頼者の計算機160から処理要求を受信する。
ステップS304では、受信が完了したら、仮想計算機制御モジュール108が、仮想計算機モジュール110を起動する。つまり、仮想計算機モジュール110を生成する。したがって、仮想計算機モジュール110は初期状態(仮想計算機モジュール110内には、処理プログラム、処理対象データがない状態)である。
ステップS306では、仮想計算機制御モジュール108が、仮想計算機モジュール110から仮想計算機公開鍵を取得する。前述のように、仮想計算機鍵対生成モジュール202が生成し、仮想計算機公開鍵出力モジュール204が出力した仮想計算機公開鍵である。
ステップS308では、処理対象データ取得モジュール102が、処理依頼者の計算機160へ仮想計算機公開鍵を送信する。
【0030】
ステップS310では、処理対象データ取得モジュール102が、処理依頼者の計算機160から処理種別を受信する。処理種別とは、処理対象データに対して行う処理を示すインデックスであり、この処理種別に対応して処理プログラムが決定される。
ステップS312では、処理対象データ取得モジュール102が、処理依頼者の計算機160から処理対象データを受信する。
ステップS314では、処理対象データ取得モジュール102が、処理依頼者の計算機160から処理依頼者公開鍵を受信する。
ステップS310からステップS314までの処理は、この順番に限らず、いずれの処理を先に行ってもよい。
【0031】
ステップS316では、仮想計算機制御モジュール108が、仮想計算機モジュール110へ処理種別に対応する処理プログラムを渡す。
ステップS318では、仮想計算機制御モジュール108が、仮想計算機モジュール110へ処理対象データを渡す。
ステップS320では、仮想計算機制御モジュール108が、仮想計算機モジュール110へ処理依頼者公開鍵を渡す。
ステップS316からステップS320までの処理は、この順番に限らず、いずれの処理を先に行ってもよい。
その後、仮想計算機モジュール110内での処理完了を待ち、以下の処理を行う。
【0032】
ステップS322では、仮想計算機制御モジュール108が、仮想計算機モジュール110から処理結果データを取得する。
ステップS324では、処理結果データ送信モジュール104が、処理依頼者の計算機160へ処理結果データを送信する。
ステップS326では、仮想計算機制御モジュール108が、仮想計算機モジュール110を終了する。
ステップS328では、仮想計算機制御モジュール108が、仮想計算機モジュール110の状態データを破棄(具体的には削除)する。ここでの状態データとは、仮想計算機モジュール110が今回の処理で必要としたデータであり、ステップS322で仮想計算機モジュール110から出力された処理結果データ以外のデータである。また、ステップS324で処理結果データを送信した場合は、その処理結果データを含めてもよい。
【0033】
したがって、処理対象データ取得モジュール102は、処理依頼者が用いている計算機160(処理依頼者計算機)から仮想計算機公開鍵で暗号化された処理対象データと依頼者公開鍵を取得する。
処理プログラム取得モジュール106は、計算機170から処理プログラムを取得する。
処理結果データ送信モジュール104は、仮想計算機モジュール110の仮想計算機公開鍵出力モジュール204により出力された仮想計算機公開鍵と、仮想計算機モジュール110の暗号化処理結果データ出力モジュール216により出力された依頼者公開鍵で暗号化された処理結果データを計算機160(処理依頼者計算機)に送信する。もちろんのことながら、仮想計算機制御モジュール108を介して仮想計算機モジュール110との入出力が行われる。
【0034】
図4は、本実施の形態による処理例を示すフローチャートである。仮想計算機モジュール110が一回の処理依頼に対する動作を行う手順例を説明する。仮想計算機制御モジュール108によって仮想計算機モジュール110が起動された後の処理例である。
ステップS402では、仮想計算機鍵対生成モジュール202が、非対称鍵暗号に用いるための一対の鍵を生成する。
ステップS404では、仮想計算機公開鍵出力モジュール204が、鍵のうち一方を仮想計算機公開鍵として仮想計算機制御モジュール108へ出力する。鍵のもう一方は仮想計算機秘密鍵として仮想計算機モジュール110内の秘密鍵記憶モジュールに保持する。
【0035】
ステップS406では、処理プログラム取得モジュール210が、仮想計算機制御モジュール108から処理プログラムを取得する。
ステップS408では、暗号化処理対象データ取得モジュール206が、仮想計算機制御モジュール108から暗号化された処理対象データを取得する。
ステップS410では、処理依頼者公開鍵取得モジュール218が、仮想計算機制御モジュール108から処理依頼者公開鍵を取得する。
ステップS406からステップS410までの処理は、この順番に限らず、いずれの処理を先に行ってもよい。
【0036】
ステップS412では、処理対象データ復号モジュール208が、処理対象データを仮想計算機秘密鍵で復号する。
ステップS414では、処理プログラム実行モジュール212が、復号された処理対象データを対象として処理プログラムを実行する。
ステップS416では、処理結果データ暗号化モジュール214が、処理の結果として得られる処理結果データを、ステップS410で取得した処理依頼者公開鍵で暗号化する。
ステップS418では、暗号化処理結果データ出力モジュール216が、暗号化された処理結果データを仮想計算機制御モジュール108へ出力する。
【0037】
図5は、処理依頼用の計算機160内の構成例についての概念的なモジュール構成図である。
計算機160は、処理要求出力モジュール502、仮想計算機公開鍵取得モジュール504、処理対象データ暗号化モジュール506、処理種別出力モジュール508、暗号化処理対象データ出力モジュール510、処理依頼者鍵生成モジュール512、処理依頼者公開鍵出力モジュール514、暗号化処理結果データ取得モジュール516、処理結果データ復号モジュール518を有している。各モジュールは、計算機160の上で実行されるプログラムとして実施される。
【0038】
処理要求出力モジュール502は、計算機112に対して処理要求を出力する。
処理種別出力モジュール508は、計算機112に対して処理種別を出力する。
仮想計算機公開鍵取得モジュール504は、処理対象データ暗号化モジュール506と接続されている。仮想計算機公開鍵取得モジュール504は、計算機112から仮想計算機公開鍵を取得する。
処理対象データ暗号化モジュール506は、仮想計算機公開鍵取得モジュール504、暗号化処理対象データ出力モジュール510と接続されている。処理対象データ暗号化モジュール506は、仮想計算機公開鍵取得モジュール504によって取得された仮想計算機公開鍵を用いて、処理対象データを暗号化する。
暗号化処理対象データ出力モジュール510は、処理対象データ暗号化モジュール506と接続されている。暗号化処理対象データ出力モジュール510は、処理対象データ暗号化モジュール506で暗号化された処理対象データを計算機112へ出力する。
【0039】
処理依頼者鍵生成モジュール512は、処理依頼者公開鍵出力モジュール514、処理結果データ復号モジュール518と接続されている。処理依頼者鍵生成モジュール512は、処理依頼用の計算機160内でのみ利用される処理依頼者秘密鍵とその処理依頼者秘密鍵に対応する処理依頼者公開鍵とを有する非対称鍵暗号の鍵対を生成する。
処理依頼者公開鍵出力モジュール514は、処理依頼者鍵生成モジュール512と接続されている。処理依頼者公開鍵出力モジュール514は、処理依頼者鍵生成モジュール512によって生成された鍵対のうち処理依頼者公開鍵を計算機112へ出力する。処理依頼者秘密鍵は、計算機160内の秘密鍵記憶モジュール(図示せず)に保持する。
暗号化処理結果データ取得モジュール516は、処理結果データ復号モジュール518と接続されている。暗号化処理結果データ取得モジュール516は、計算機112から処理結果データを受信する。
処理結果データ復号モジュール518は、処理依頼者鍵生成モジュール512、暗号化処理結果データ取得モジュール516と接続されている。処理結果データ復号モジュール518は、暗号化処理結果データ取得モジュール516によって取得された処理結果データを計算機160の秘密鍵記憶モジュール内の処理依頼者秘密鍵で復号する。
【0040】
図6は、本実施の形態による処理例を示すフローチャートである。これは、計算機160の処理例を示すものである。
ステップS602では、処理要求出力モジュール502が、計算機112へ処理要求を出力する。
ステップS604では、仮想計算機公開鍵取得モジュール504が、計算機112から仮想計算機公開鍵を取得する。
ステップS606では、処理依頼者鍵生成モジュール512が、処理依頼者公開鍵と処理依頼者秘密鍵との鍵対を生成する。
ステップS608では、処理対象データ暗号化モジュール506が、仮想計算機公開鍵で処理対象データを暗号化する。
【0041】
ステップS610では、処理種別出力モジュール508が、計算機112へ処理種別を出力する。
ステップS612では、暗号化処理対象データ出力モジュール510が、計算機112へ暗号化された処理対象データを出力する。
ステップS614では、処理依頼者公開鍵出力モジュール514が、計算機112へ依頼者公開鍵を出力する。
ステップS610からステップS614までの処理は、この順番に限らず、いずれの処理を先に行ってもよい。
【0042】
ステップS616では、暗号化処理結果データ取得モジュール516が、計算機112から処理結果データを取得したか否かを判断し、取得した場合はステップS618へ進み、それ以外の場合(処理結果データを取得するまでの待機状態)はステップS616の処理を行う。
ステップS618では、処理結果データ復号モジュール518が、処理結果データを依頼者秘密鍵で復号する。
なお、図6に例示した処理を行うプログラムを予め作成しておき、計算機112が計算機160へ提供する構成としてもよい。
【0043】
図7は、本実施の形態による処理例を示すフローチャートである。仮想計算機モジュール110、仮想計算機制御モジュール108、計算機160の3者間の関係を用いた処理例を示す。
ステップS702では、計算機160が、処理要求を計算機112に送信する。
ステップS704では、仮想計算機制御モジュール108が、仮想計算機モジュール110を起動する。
ステップS706では、仮想計算機モジュール110が、仮想計算機公開鍵と仮想計算機秘密鍵との鍵対を生成する。
ステップS708では、仮想計算機モジュール110が、仮想計算機公開鍵を仮想計算機制御モジュール108に出力する。
【0044】
ステップS710では、仮想計算機制御モジュール108が、仮想計算機公開鍵を仮想計算機モジュール110から受信し、計算機160に送信する。
ステップS712では、計算機160が、処理依頼者公開鍵と処理依頼者秘密鍵とを生成する。
ステップS714では、計算機160が、処理種別、仮想計算機公開鍵で暗号化した暗号化処理対象データ、処理依頼者公開鍵を計算機112に送信する。
ステップS716では、仮想計算機制御モジュール108が、処理種別、暗号化処理対象データ及び処理依頼者公開鍵を、処理対象データ取得モジュール102を介して計算機160から受信し、そのうち暗号化処理対象データ及び処理依頼者公開鍵を仮想計算機モジュール110に送信する。
【0045】
ステップS718では、仮想計算機モジュール110が、暗号化処理対象データ及び処理依頼者公開鍵を受信する。
ステップS720では、仮想計算機モジュール110が、暗号化処理対象データを仮想計算機秘密鍵で復号する。
ステップS722では、仮想計算機モジュール110が、仮想計算機制御モジュール108から処理プログラムを取得する。
ステップS724では、仮想計算機モジュール110が、取得した処理プログラムを用いて復号した処理対象データを処理する。
【0046】
ステップS726では、仮想計算機モジュール110が、処理結果データを処理依頼者公開鍵で暗号化する。
ステップS728では、仮想計算機モジュール110が、仮想計算機制御モジュール108に暗号化処理結果データを送信する。
ステップS730では、仮想計算機制御モジュール108が、暗号化処理結果データを、処理結果データ送信モジュール104を介して計算機160に送信する。
【0047】
ステップS732では、仮想計算機制御モジュール108が、仮想計算機モジュール110を終了する。
ステップS734では、計算機160が、受信した暗号化処理結果データを処理依頼者秘密鍵で復号する。
ステップS736では、仮想計算機制御モジュール108が、仮想計算機モジュール110の状態データを破棄する。
【0048】
処理依頼者から送信される処理対象データは、仮想計算機公開鍵により暗号化されており、復号を可能とするための仮想計算機秘密鍵は仮想計算機モジュール110内に保持されるため、仮想計算機モジュール110の外部では復号することができない。また、処理結果データは仮想計算機モジュール110内で処理依頼者公開鍵により暗号化されるため、処理依頼者が保持する処理依頼者秘密鍵によってのみ復号可能である。仮想計算機モジュール110は、暗号化された処理対象データ、処理プログラム、処理依頼者公開鍵のみが入力され、仮想計算機公開鍵、暗号化された処理結果データのみが出力されるように構成されている。したがって、計算機170によって提供されている処理プログラムの機密性に関する動作が信頼できないような場合であっても、処理対象データに関する情報が秘匿されない状態で仮想計算機モジュール110の外部に出ることはない。また、仮想計算機モジュール110による処理の完了後に、仮想計算機モジュール110の内部状態を保持する状態データを、仮想計算機制御モジュール108が破棄するため、処理対象データに関する情報を利用されることはなくなる。
【0049】
なお、本実施の形態としてのプログラムが実行される計算機(計算機112、計算機160、計算機170)のハードウェア構成は、図8に例示するように、一般的な計算機であり、具体的にはパーソナルコンピュータ、サーバとなり得るコンピュータ等である。つまり、具体例として、処理部(演算部)としてCPU801を用い、記憶装置としてRAM802、ROM803、HD804を用いている。HD804として、例えばハードディスクを用いてもよい。処理対象データ取得モジュール102、処理結果データ送信モジュール104、処理プログラム取得モジュール106、仮想計算機制御モジュール108、仮想計算機モジュール110、仮想計算機鍵対生成モジュール202、仮想計算機公開鍵出力モジュール204、暗号化処理対象データ取得モジュール206、処理対象データ復号モジュール208、処理プログラム取得モジュール210、処理プログラム実行モジュール212、処理結果データ暗号化モジュール214、暗号化処理結果データ出力モジュール216、処理依頼者公開鍵取得モジュール218、処理要求出力モジュール502、仮想計算機公開鍵取得モジュール504、処理対象データ暗号化モジュール506、処理種別出力モジュール508、暗号化処理対象データ出力モジュール510、処理依頼者鍵生成モジュール512、処理依頼者公開鍵出力モジュール514、暗号化処理結果データ取得モジュール516、処理結果データ復号モジュール518等のプログラムを実行するCPU801と、そのプログラムやデータを記憶するRAM802と、本計算機を起動するためのプログラム等が格納されているROM803と、補助記憶装置であるHD804と、キーボード、マウス、タッチパネル等に対する利用者の操作に基づいてデータを受け付ける受付装置806と、CRT、液晶ディスプレイ等の出力装置805と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース807、そして、それらをつないでデータのやり取りをするためのバス808により構成されている。これらの計算機が複数台互いにネットワークによって接続されていてもよい。
【0050】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図8に示すハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図8に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えばASIC等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図8に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、情報家電、複写機、ファックス、スキャナ、プリンタ、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)などに組み込まれていてもよい。
なお、各モジュールの処理内容として背景技術として説明した技術を採用してもよい。
【0051】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録した計算機読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録した計算機読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録された計算機で読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray Disc(登録商標))、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【0052】
102…処理対象データ取得モジュール
104…処理結果データ送信モジュール
106…処理プログラム取得モジュール
108…仮想計算機制御モジュール
110…仮想計算機モジュール
112…計算機
150…通信回線
160…計算機
170…計算機
202…仮想計算機鍵対生成モジュール
204…仮想計算機公開鍵出力モジュール
206…暗号化処理対象データ取得モジュール
208…処理対象データ復号モジュール
210…処理プログラム取得モジュール
212…処理プログラム実行モジュール
214…処理結果データ暗号化モジュール
216…暗号化処理結果データ出力モジュール
218…処理依頼者公開鍵取得モジュール
502…処理要求出力モジュール
504…仮想計算機公開鍵取得モジュール
506…処理対象データ暗号化モジュール
508…処理種別出力モジュール
510…暗号化処理対象データ出力モジュール
512…処理依頼者鍵生成モジュール
514…処理依頼者公開鍵出力モジュール
516…暗号化処理結果データ取得モジュール
518…処理結果データ復号モジュール

【特許請求の範囲】
【請求項1】
本情報処理装置の仮想計算機内でのみ利用される仮想計算機秘密鍵と該仮想計算機秘密鍵に対応する仮想計算機公開鍵とを有する非対称鍵暗号の鍵対を生成する鍵対生成手段と、
前記鍵対生成手段によって生成された鍵対のうち仮想計算機公開鍵を出力する公開鍵出力手段と、
前記仮想計算機公開鍵で暗号化された処理対象データを外部から取得する処理対象データ取得手段と、
前記処理対象データ取得手段で取得された前記仮想計算機公開鍵で暗号化された処理対象データを前記仮想計算機秘密鍵で復号する復号手段と、
処理プログラムを外部から取得する処理プログラム取得手段と、
前記復号手段によって復号された処理対象データを対象にして、前記処理プログラム取得手段によって取得された処理プログラムを実行する実行手段と、
処理依頼者公開鍵を外部から取得する公開鍵取得手段と、
前記実行手段による処理プログラムの処理結果として生成された処理結果データを、前記公開鍵取得手段によって取得された依頼者公開鍵で暗号化する暗号化手段と、
前記暗号化手段によって暗号化された処理結果データを外部へ出力する処理結果データ出力手段
を有する仮想計算機
を具備することを特徴とする情報処理装置。
【請求項2】
処理依頼者が用いている計算機である処理依頼者計算機から前記仮想計算機公開鍵で暗号化された処理対象データと前記依頼者公開鍵を取得する処理対象データ取得手段と、
処理プログラム提供手段から処理プログラムを取得する処理プログラム取得手段と、
前記仮想計算機の前記公開鍵出力手段により出力された仮想計算機公開鍵と、仮想計算機の前記処理結果データ出力手段により出力された前記依頼者公開鍵で暗号化された処理結果データを前記処理依頼者計算機に送信する処理結果データ送信手段と、
前記仮想計算機の起動、削除、該削除の場合に該仮想計算機が用いたデータを消去する制御を行う仮想計算機制御手段
をさらに具備することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
計算機を、
該計算機の仮想計算機内でのみ利用される仮想計算機秘密鍵と該仮想計算機秘密鍵に対応する仮想計算機公開鍵とを有する非対称鍵暗号の鍵対を生成する鍵対生成手段と、
前記鍵対生成手段によって生成された鍵対のうち仮想計算機公開鍵を出力する公開鍵出力手段と、
前記仮想計算機公開鍵で暗号化された処理対象データを外部から取得する処理対象データ取得手段と、
前記処理対象データ取得手段で取得された前記仮想計算機公開鍵で暗号化された処理対象データを前記仮想計算機秘密鍵で復号する復号手段と、
処理プログラムを外部から取得する処理プログラム取得手段と、
前記復号手段によって復号された処理対象データを対象にして、前記処理プログラム取得手段によって取得された処理プログラムを実行する実行手段と、
処理依頼者公開鍵を外部から取得する公開鍵取得手段と、
前記実行手段による処理プログラムの処理結果として生成された処理結果データを、前記公開鍵取得手段によって取得された依頼者公開鍵で暗号化する暗号化手段と、
前記暗号化手段によって暗号化された処理結果データを外部へ出力する処理結果データ出力手段
を有する仮想計算機
として機能させるための情報処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−58006(P2013−58006A)
【公開日】平成25年3月28日(2013.3.28)
【国際特許分類】
【出願番号】特願2011−194921(P2011−194921)
【出願日】平成23年9月7日(2011.9.7)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】