説明

情報処理システム、及び情報処理方法

【課題】仮想化環境下において、ゲストOSで用いられる鍵を安全に管理でき、信頼性の高い暗復号処理を行える情報処理システムを提供する。
【解決手段】ゲストOS60の暗号利用アプリケーション62が暗復号APIを呼び出すと、暗復号要求が拡張暗号化提供部61に送られる。拡張暗号化提供部61は、暗復号要求を受けると、ゲストOS60とホストOS50との間に、セキュアな通信チャネルを構築し、暗復号処理をホストOS50に委託する。ホストOS50の暗復号制御部51は、鍵管理部53から暗号鍵を検索し、検索された暗号鍵を用いて、ゲストOS60が要求する暗復号処理に対応する暗復号処理を実施し、処理結果をゲストOS60の拡張暗号化提供部61に送り、拡張暗号化提供部61は、この処理結果を暗号利用アプリケーション62に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想化システム環境下で暗復号処理に用いる情報処理システム、及び情報処理方法に関する。
【背景技術】
【0002】
近年、クラウドコンピューティングが注目を集め、PaaS(Platform as a Service)やIaaS(Infrastructure as a Service)と呼ばれる、仮想マシンをネットワーク経由で利用者に提供するサービスの普及が進んでいる。PaaSでは、仮想化されたアプリケーションサーバやデータベース等、利用者にネットワーク経由のアプリケーション実行用のプラットフォームが提供される。IaaSでは、仮想化サーバや共有ディスク等、利用者がOS(Operating System)等を含めてシステムを導入できる。このような仮想マシンは、ホストOS下でゲストOSを起動させることで実現される。
【0003】
このような仮想化環境において、暗号化処理を伴うアプリケーションをゲストOSで実行する際に、暗号鍵の不正取得や、暗号鍵の不正利用を目的としたゲストOSに対する攻撃から暗号鍵を保護する必要がある。暗号鍵の不正取得を目的とした攻撃には、例えば、メモリダンプがある。メモリダンプは、メモリ上の値をダンプすることにより、メモリ上に残された暗号鍵を不正に取得するものである。また、暗号鍵の不正取得及び不正使用を目的としたゲストOSに対する攻撃として、例えば、リバースエンジニアリングがある。リバースエンジニアリングは、プログラムを逆コンパイルすることにより、プログラムに埋め込まれている暗号鍵や、クレデンシャル(ID、パスワード)を抽出するものである。
【0004】
このような攻撃を防ぐための手段として、ハードウェア暗号化装置(HSM;Hardware Security Module)がある。また、例えば、特許文献1には、仮想化環境において、サーバをVPN(Virtual Private Network)で接続し、サーバ間を伝送するデータをホストOSが暗号化する技術が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−62738号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、ハードウェア暗号化装置では、専用のデバイスが必要になり、また、コストが高くなる。また、ハードウェア暗号化装置を用いた場合、提供可能なOSの種類が制限されるため、利用者の要求に応じたサービスを提供することが困難になる。
【0007】
また、特許文献1に記載されているものは、仮想化環境下のサーバ間でVPNチャネル構築時に、暗号化情報をホストOS側で暗号化情報を自動的に判断し、セットするものである。この特許文献1に記載されているものでは、仮想化環境下のサーバ間の通信での暗号化に関する技術であり、ゲストOSにおいて扱うデータを暗号化及び復号化するものではない。また、特許文献1に記載されているものでは、ゲストOS側のアプリケーションの要求によりデータを暗復号したり、ゲストOS側で蓄積されるデータの暗復号したりすることはできず、データベース等を作成する際に記憶装置や、記憶媒体に記憶させたデータのセキュリティに対する考慮がされていないという問題がある。
【0008】
上述の課題を鑑み、仮想化環境において、ゲストOSにおいて扱うデータの暗号化及び復号化に用いる暗号鍵に対するセキュリティを確保するともに向上させることができる情報処理システム、及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上述の課題を解決するために、本発明は、ホストOSにおいて稼動する仮想マシンを用いて少なくとも1つのゲストOSを動作させる情報処理システムであって、前記ホストOSは、前記ゲストOSからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストOSを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストOSを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行う鍵管理部を備え、前記ゲストOSは、該ゲストOSにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ゲストOSに送信し、該要求情報に対する応答として前記ゲストOSから暗号化されたデータ又は復号化されたデータを受信する拡張暗号化提供部を備えていることを特徴とする情報処理システムである。
【0010】
また、本発明は、上記に記載の発明において、前記ホストOSは、前記ゲストOSを稼動させる際に、該ゲストOSが前記鍵管理部を用いたデータの暗号化及び復号化を行うことを許可するか否かを認証する認証部を更に備えるであることを特徴とする。
【0011】
また、本発明は、上記に記載の発明において、前記認証部は、前記鍵管理部に対してデータの暗号化及び復号化することを許可された前記ゲストOSに対して、該ゲストOSとの間で送受信されるデータを暗号化する際に用いるセッション鍵を生成し、生成したセッション鍵を該ゲストOSに対応する暗号鍵に対応付けて前記鍵データベースに記憶させるであることを特徴とする。
【0012】
また、本発明は、ホストOSにおいて稼動する仮想マシンを用いて少なくとも1つのゲストOSを動作させる情報処理システムにおける情報処理方法であって、前記ゲストOSが、該ゲストOSにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ゲストOSに送信するステップと、前記ホストOSが、前記ゲストOSからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストOSを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストOSを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行うステップと、前記ゲストOSが、前記要求情報に対する応答として前記ゲストOSから暗号化されたデータ又は復号化されたデータを受信するステップとを有することを特徴とする情報処理方法である。
【発明の効果】
【0013】
本発明によれば、ゲストOSにおいて実行されているアプリケーションで扱われているデータを暗号化又は復号化に用いる暗号鍵を、ホストOSが備える鍵管理部が記憶するとともに、ゲストOSにおいてデータの暗号化及び復号化の必要が生じると、ホストOSに当該データ暗号化及び復号化を要求するようにした。
これにより、ゲストOSには暗号鍵を記憶させておく必要がなく、ゲストOSにおけるセキュリティを確保することができる。また、複数のゲストOSそれぞれで用いられる全ての暗号鍵は、ホストOSが備える鍵管理部に記憶されるので、外部よりの攻撃を防ぐ領域(複数のゲストOS及びホストOS)を鍵管理部に限定することができるのでセキュリティを向上させることができる。
【図面の簡単な説明】
【0014】
【図1】本発明が適用できるコンピュータシステムの概要を示すブロック図である。
【図2】第1実施形態における暗復号処理の概要を示す機能ブロック図である。
【図3】第1実施形態における登録サーバの構成を示す機能ブロック図である。
【図4】第1実施形態におけるサービス利用事前登録の処理の一例を示すシーケンス図である。
【図5】第1実施形態における鍵データベースの一例を示す図である。
【図6】第1実施形態における認証データベースの一例を示す図である。
【図7】第1実施形態におけるサービス認証処理での各部の処理の例を示すシーケンス図である。
【図8】第1実施形態における利用者がゲストOS60上で運用する暗号利用アプリケーション62から暗号化要求があった場合の処理の例を示すシーケンス図である。
【図9】第1実施形態における利用者がゲストOS60上で運用する暗号利用アプリケーション62から復号化要求があった場合の処理の例を示すシーケンス図である。
【発明を実施するための形態】
【0015】
(第1実施形態)
以下、本発明の実施の形態について図面を参照しながら説明する。図1は、本発明が適用できるコンピュータシステム(情報処理システム)の概要を示すものである。
【0016】
図1において、PaaSやIaaSなどを提供するデータセンター1には、管理マシン2と、仮想マシン(Virtual Machine;VM)3が設けられる。ここで、管理マシン2に搭載されるOSをホストOSと呼ぶ。仮想マシン3は、実体としては所定のデータで表されるが、管理マシン2に読み込まれ、ホストOS上で実行されることにより、仮想の機器として動作するものである。仮想マシン3に搭載されるOSをゲストOSと呼ぶ。なお、データセンター1は、少なくとも1つのコンピュータにより構成されるものである。複数のコンピュータにより構成される場合、各コンピュータをネットワークで接続した分散システムとして構成するようにしてもよい。仮想マシン3は、ホストOS上で複数稼動させることができ、複数の仮想マシン3が稼動する場合、各仮想マシン3は、独立した機器として扱うことができる。
【0017】
データセンター1の運営会社により、利用者に対して仮想マシン3の管理権限が付与され、仮想マシン3の機器資源が提供される。利用者は、利用者端末5により、ネットワーク網6を介して、データセンター1上の仮想マシン3をアクセスし、この仮想マシン3を仮想化されたアプリケーションサーバやデータベースとして利用できる。
【0018】
第1実施形態では、このような仮想化された環境下で、セキュアな暗復号化処理を行うことで、データの保護を図り、信頼性を向上させるものである。このような第1実施形態に係る暗号化処理について、以下に説明する。
【0019】
図2は、第1実施形態に係る暗復号処理を行う情報処理システムの構成を示す概略ブロック図である。図2において、ホストOS50には、暗復号制御部51と、認証部52と、鍵管理部53とが備えられている。また、ゲストOS60には、拡張暗号化提供部61が備えられている。
【0020】
ホストOS50において、暗復号制御部51は、暗復号化処理の制御を行うとともに、ゲストOS60と、ホストOS50に備えられている認証部52及び鍵管理部53との間の処理制御を行う。認証部52は、鍵IDとクレデンシャルとが対応付けて記憶されている認証データベースを有しており、ゲストOS60から受信した情報を鍵管理部53に出力することを許可するか否かの認証を行う。
【0021】
鍵管理部53は、鍵IDと、ゲストOS60とホストOS50との間で送受信されるデータを暗号化する共通鍵(セッション鍵)と、暗号鍵の鍵値とが対応付けられて記憶されている鍵データベースを有している。また、この鍵データベースには、ゲストOS60に対する認証に用いる一対の公開鍵(HOST_PUBLIC_KEY)及び秘密鍵(HOST_PRIVATE_KEY)が暗号化等された形式で保護された上で予め記憶されている。また、鍵管理部53は、鍵データベースに記憶されている暗号鍵を用いてデータの暗号化及び復号化を行う。また、鍵管理部53は、鍵データベースに記憶されている暗号化された暗号鍵(公開鍵、秘密鍵、後述するゲストOS60で扱うデータに対して用いる鍵値)を用いる際には、暗号化された暗号鍵に対して所定の復号処理を行う。
【0022】
ゲストOS60において、拡張暗号化提供部61は、例えば、ゲストOS60にインストールされるプログラムであり、ゲストOS60上で実行される暗号化及び復号化を利用する暗号利用アプリケーション62からのデータの暗号化、又はデータの復号化の要求を受けて、ゲストOS60とホストOS50との間で、セキュアな通信チャネルを形成する。
なお、拡張暗号化提供部61のソフトウェアは、例えば、データセンター1の運営会社のサイトからダウンロードできるようにしてもよいし、CD−ROM等の記録媒体により、拡張暗号化提供部61のプログラムを配布するようにしてもよい。
【0023】
第1実施形態に係る暗復号処理では、図2において、ゲストOS60起動時に、当該ゲストOS60に対する認証が行われる。利用者は、事前に、データセンター1の運営会社に対して、ホストOS50における暗号化及び復号化の処理を要求することを許可するか否かの認証に用いるクレデンシャルと、利用者を識別する鍵IDの登録を行い、データセンター1の運営会社から鍵IDとクレデンシャルとを受領しており、当該鍵ID及び当該クレデンシャルを用いて認証が行われる。すなわち、鍵ID及びクレデンシャルは、利用者ごとに対応付けられている情報である。
ゲストOS60に備えられている拡張暗号化提供部61は、鍵IDと、クレデンシャルをホストOS50に備えられている認証部52に送信し、認証部52が当該ゲストOS60の認証を行う。認証が成立すると、鍵IDとセッション鍵とが認証部52が有する認証データベースに記憶される。
【0024】
暗復号処理では、ゲストOS60の暗号利用アプリケーション62が暗復号API(Application Program Interface)を呼び出すと、データ、及び該データに対する暗号化又は復号化を示す要求情報が、暗復号APIを通じて、暗号利用アプリケーション62から拡張暗号化提供部61に出力される。拡張暗号化提供部61は、要求情報が入力されると、ゲストOS60とホストOS50との間に、セキュアな通信チャネルを構築し、暗復号処理をホストOS50に委託する。ホストOS50の暗復号制御部51は、鍵管理部53に予め記憶されている暗号鍵を読み出し、読み出した暗号鍵を用いて、ゲストOS60が要求する暗復号処理に対応する暗復号処理を実施する。そして、暗復号制御部51は、処理結果をゲストOS60の拡張暗号化提供部61に送り、拡張暗号化提供部61は、この処理結果を暗号利用アプリケーション62に送信する。
【0025】
このように、第1実施形態における暗復号処理では、ゲストOS60の暗号利用アプリケーション62が暗復号APIを呼び出した際、ゲストOS60はホストOS50に対してセキュアな通信チャネルを構築し、暗復号処理をホストOS50に委託する。そして、ホストOS50は、ゲストOS60を利用する利用者に対応する対応する暗号鍵を用いて暗復号処理を行い、暗復号処理の結果を上記の通信チャネルを介してゲストOS60に送信する。これにより、仮想化環境において、セキュアな暗復号化処理を行い、ゲストOS60で扱うデータの保護を図りつつ、セキュリティの向上を図っている。
【0026】
つまり、ホストOS50は、ゲストOS60から隔離されており、ゲストOS60に比べ信頼性が高い。そこで、暗号化処理をゲストOS60から隔離されたホストOS50上で行うことで、ゲストOS60への攻撃によって、メモリ上の鍵を抽出するメモリダンプや、プログラムに内蔵されている暗号鍵のリバースエンジニアリングにより暗号鍵の不正取得、プログラムへ内蔵されているクレデンシャルのリバースエンジニアリングによる暗号鍵の不正利用を防ぐことができる。また、第1実施形態に示した構成は、ソフトウェア技術のみで安価に実現可能であり、追加ハードウェアを必要としないという利点がある。
【0027】
次に、第1実施形態における暗復号処理について説明する。まず、ゲストOS60を利用する前に行うサービス利用事前登録の処理について説明する。
【0028】
第1実施形態に係る暗復号処理を行うためには、事前登録処理が必要になる。
図3は、事前登録処理を行う登録サーバ70の構成を示す概略ブロック図である。同図に示すように、登録サーバ70は、鍵ID生成部71と、鍵生成部72と、クレデンシャル生成部73とを備えている。
鍵ID生成部71は、所定のルールに従って、利用者の鍵IDを生成する。鍵生成部72は、鍵ID生成部71が生成した鍵IDに対応する暗号鍵としての鍵値を生成する。クレデンシャル生成部73は、乱数生成器などを用いて、利用者のクレデンシャル(例えばパスワード)を生成する。
【0029】
図4は、第1実施形態におけるサービス利用事前登録の処理の一例を示すシーケンス図である。なお、事前登録は、セキュリティの向上を考慮すると、書類や対面での交付等、電文以外のセキュリティが確保された方法により行うことが望ましい。ここでは、書類や対面での利用事前登録について説明する。
【0030】
図4において、利用者80がデータセンター1の運営会社に対して利用申請を行うと(ステップS100)、登録サーバ70の鍵ID生成部71は、所定のルールに従って、利用者に対応する鍵IDを生成する(ステップS101)。
次に、登録サーバ70の鍵生成部72は、鍵ID生成部71が生成した鍵IDに対応する暗号鍵としての鍵値を生成する(ステップS102)。次に、登録サーバ70のクレデンシャル生成部73は、乱数生成器を用いて、利用者に対応するクレデンシャルを生成する(ステップS103)。
【0031】
ステップS101で利用者の鍵IDが生成され、ステップS102で鍵値が生成されると、登録サーバ70は、この鍵IDと鍵値とを対応付けて、ホストOS50の鍵管理部53の鍵データベースに記憶させる(ステップS104)。
また、ステップS103でクレデンシャルが生成されると、登録サーバ70は、鍵IDとクレデンシャルとを対応付けて、ホストOS50に備えられている認証部52の認証データベースに記憶させる(ステップS105)。また、利用者80は、データセンター1の運営会社から鍵IDとクレデンシャルとを受け取る(ステップS106)。
【0032】
このように、サービス利用事前登録が終了すると、利用者80に対して、鍵IDとクレデンシャルとが知らされる。また、サービス利用事前登録が終了すると、ホストOS50の鍵管理部53の鍵データベースと、ホストOS50の認証部52の認証データベースとが更新される。
【0033】
図5は、第1実施形態における鍵データベースの一例を示す図である。図6は、第1実施形態における認証データベースの一例を示す図である。
ホストOS50の鍵管理部53には、図5に示すように、公開鍵(HOST_PUBLIC_KEY)及び秘密鍵(HOST_PRIVATE_KEY)に加えて、利用者80に対する鍵ID(KEY_ID_001)に対応付けられた暗号鍵としての鍵値(471cd0…)が鍵データベースに記憶される。この際、鍵データベースに記憶される鍵値は、別途暗号化などの方法で適切に保護されるものとする。
また、ホストOS50に備えられている認証部52の認証データベースには、図6に示すように、利用者80に対する鍵ID(KEY_ID_001)と、クレデンシャル(PASSWORD_001)とが対応付けられて記憶される。
【0034】
次に、サービス認証処理について説明する。
図7は、第1実施形態におけるサービス認証処理での各部の処理の例を示すシーケンス図である。ここでは、図4に示したサービス利用事前登録の処理が既に行われている場合におけるサービス認証処理を説明する。
【0035】
ゲストOS60が起動した後に、利用者端末5は、利用者の操作に応じて、ゲストOS60に、拡張暗号化提供部61のソフトウェアをインストールする(ステップS107)。このとき、ゲストOS60にインストールされる拡張暗号化提供部61のソフトウェアには、データの暗号化及び復号化を委託するホストOS50を識別する情報が予め含まれている。
【0036】
拡張暗号化提供部61のソフトウェアインストールが完了すると、拡張暗号化提供部61はダイアログ画面を生成し、利用者端末5に対して、鍵IDとクレデンシャルとの入力を要求する(ステップS108)。
【0037】
利用者端末5は、利用者80の操作に応じて、ステップS106における鍵IDとクレデンシャルとを、拡張暗号化提供部61に送信する(ステップS109)。
ゲストOS60の拡張暗号化提供部61は、鍵IDとクレデンシャルとを受信すると、自己に予め設定されているホストOS50の情報(例:ホスト名、IPアドレス、MACアドレスなど)を用いて、受信した鍵ID及びクレデンシャルを含む認証要求をホストOS50に送信する(ステップS110)。
【0038】
暗復号制御部51は、ゲストOS60から受信した認証要求を、認証部52へ送信する(ステップS111)。
ホストOS50の認証部52は、認証要求を受信すると、乱数を生成する(ステップS112)。また、鍵管理部53が有する鍵データベースには、公開鍵(HOST_PUBLIC_KEY)及び秘密鍵(HOST_PRIVATE_KEY)のペアが予め記憶されている。ホストOS50の認証部52は、ステップS112で乱数を生成すると、鍵管理部53の鍵データベースから自己の公開鍵(HOST_PUBLIC_KEY)を読み出す(ステップS113)。
【0039】
続いて、認証部52は、生成した乱数と、読み出した公開鍵(HOST_PUBLIC_KEY)とを含む情報を、暗復号制御部51へ送信する(ステップS114)。
暗復号制御部51は、乱数と公開鍵(HOST_PUBLIC_KEY)とを含む情報を受信すると、受信した情報をゲストOS60の拡張暗号化提供部61に送信する(ステップS115)。
【0040】
拡張暗号化提供部61は、乱数と公開鍵(HOST_PUBLIC_KEY)とを含む情報を暗復号制御部51から受信すると、受信した情報に含まれる乱数と、利用者80に対応するクレデンシャルとを連結してハッシュ値を生成する(ステップS116)。
続いて、拡張暗号化提供部61は、共通鍵(セッション鍵)を生成し、ステップS115で受信した公開鍵(HOST_PUBLIC_KEY)を用いて、に生成した共通鍵と鍵IDとを暗号化する(ステップS117)。
拡張暗号化提供部61は、ステップS116で生成したハッシュ値と、ステップS117で暗号化した共通鍵及び鍵IDとを含む情報を、ホストOS50の暗復号制御部51に送信する(ステップS118)。
【0041】
暗復号制御部51は、暗号化された共通鍵及び鍵IDと、ハッシュ値とを含む情報を受信すると、受信した情報を認証部52に送信する(ステップS119)。
認証部52は、暗復号制御部51から情報を受信すると、ステップS112で生成された乱数と、認証部52が有する認証データベースに記憶されているクレデンシャルとを連結してハッシュ値を生成する(ステップS120)。そして、認証部52は、ステップS120で生成されたハッシュ値と、ステップS119で受信したハッシュ値とを比較し、ハッシュ値が一致するか否かを判定する(ステップS121)。
【0042】
ステップS121において、ハッシュ値が一致すると判定すると認証部52は、鍵管理部53が有する鍵データベースから、公開鍵(HOST_PUBLIC_KEY)とペアとなる秘密鍵(HOST_PRIVATE_KEY)を読み出す(ステップS122)。
ホストOS50の認証部52は、読み出した秘密鍵(HOST_PRIVATE_KEY)を用いて、ステップS119において受信した情報に含まれる共通鍵及び鍵IDを復号する(ステップS123)。
【0043】
ホストOS50の鍵管理部53は、共通鍵及び鍵IDを復号すると、ステップS123で復号した共通鍵を、ホストOS50とゲストOS60との間の通信に用いるセッション鍵として、鍵ID及びセッション鍵と対応させて、鍵データベースに記憶させる(ステップS124)。
そして、ホストOS50の認証部52は、ゲストOS60に対して、ホストOS50が備える鍵管理部53を用いたデータの暗号化及び復号化の処理を許可することを示す認証応答情報を、ホストOS50の暗復号制御部51に送信する(ステップS125)。
ホストOS50の暗復号制御部51は、ステップS125で受信した認証応答情報を、ゲストOS60に送信する(ステップS126)。
【0044】
ゲストOS60の拡張暗号化提供部61は、認証応答情報を受信すると、共通鍵をセッション鍵として鍵IDと対応付けて、メモリ上に記憶させる(ステップS127)。そして、ゲストOS60の拡張暗号化提供部61は、ステップS125で受信した認証応答情報が処理の許可を示す情報(認証OK)であれば認証成功画面を出力し、認証が不成立の場合、拡張暗号化提供部61は認証エラー画面を出力し(ステップS128)、ステップS108へ戻る。
【0045】
このように、ホストOS50の認証部52は、拡張暗号化提供部61を稼動させる際に、サービス認証処理において、クレデンシャルを用いて、ゲストOS60に対する認証を行う。認証が成立すると、ゲストOS60には、鍵IDとセッション鍵とが対応付けて記憶される。また、ホストOS50の鍵管理部53の鍵データベースには、鍵IDとセッション鍵とが対応付けて記憶される。
【0046】
次に、暗復号処理について説明する。
図8は、第1実施形態において、利用者がゲストOS60上で運用する暗号利用アプリケーション62から暗号化要求があった場合の処理の例を示すシーケンス図である。ここでは、図7に示したサービス認証処理が既に行われ、ホストOS50に備えられている鍵管理部53を用いたデータの暗号化及び復号化の処理を行うことを許可する認証が、ゲストOS60に対して行われている場合について説明する。
【0047】
図8において、ゲストOS60の暗号利用アプリケーション62は、暗号化対象データを含む処理要求をゲストOS60の拡張暗号化提供部61に送信する(ステップS129)。
ゲストOS60の拡張暗号化提供部61は、暗号化対象データを含む処理要求を受信すると、処理要求に含まれる暗号化対象データと鍵IDとを、サービス認証処理において記憶したセッション鍵を用いて暗号化する(ステップS130)。
拡張暗号化提供部61は、ステップS130で暗号化したデータを含む暗号化要求情報を、ホストOS50の暗復号制御部51へ送信する(ステップS131)。
【0048】
ホストOS50の暗復号制御部51は、ステップS131で受信した暗号化要求情報を、鍵管理部53に送信する(ステップS132)。
鍵管理部53は、暗復号制御部51から暗号化要求情報を受信すると、鍵管理部53の鍵データベースからのセッション鍵を用いて、受信した暗号化要求情報に含まれる暗号化対象データと鍵IDとを復号する(ステップS133)。
【0049】
鍵管理部53は、復号した鍵IDに対応する鍵値(暗号鍵)を鍵データベースから読み出す(ステップS134)。
鍵管理部53は、読み出した鍵値を用いて、暗号化対象データを暗号化し(ステップS135)、暗号化したデータを、暗復号制御部51へ送信する(ステップS136)。
暗復号制御部51は、鍵管理部53から受信した暗号化されたデータを、ゲストOS60の拡張暗号化提供部61へ送信する(ステップS137)。
【0050】
ゲストOS60の拡張暗号化提供部61は、ホストOS50の暗復号制御部51から暗号化されたデータを受信し、暗号利用アプリケーション62に送信する(ステップS138)。
これにより、暗号利用アプリケーション62は、ステップS129でゲストOS60に対して要求した暗号化対象データに対する暗号化データを得ることができる。
【0051】
このように、暗号化処理では、ゲストOS60の暗号利用アプリケーション62が暗復号APIを呼び出してゲストOS60にデータの暗号化を要求すると、ゲストOS60の拡張暗号化提供部61は、ホストOS50に対してセキュアな通信チャネルを構築し、暗号処理をホストOS50に委託する。ステップS131で、ゲストOS60からホストOS50に送信するデータは、セッション鍵を用いて暗号化することで、盗聴の危険性を回避し、データの保護が図られている。ステップS137で、ホストOS50からゲストOS60に送信するデータは、既に暗号化されているので、セッション鍵での暗号化は行われない。セッション鍵での暗号化を行わないことで、処理の負担が減少し、性能劣化を防ぐことができる。
【0052】
図9は、第1実施形態における利用者がゲストOS60上で運用する暗号利用アプリケーション62から復号化要求があった場合の処理の例を示すシーケンス図である。ここでは、上述の暗号化要求があった場合と同様に、図7に示したサービス認証処理が既に行われ、ホストOS50に備えられている鍵管理部53を用いたデータの暗号化及び復号化の処理を行うことを許可する認証が、ゲストOS60に対して行われている場合について説明する。
【0053】
図9において、暗号利用アプリケーション62は、復号化対象データを含む処理要求を、ゲストOS60の拡張暗号化提供部61に送信する(ステップS139)。
拡張暗号化提供部61は、復号化対象データを含む処理要求を受信すると、鍵IDを該鍵IDに対応するセッション鍵を用いて暗号化する(ステップS140)。そして、拡張暗号化提供部61は、復号化対象データと、暗号化された鍵IDとを含む復号要求情報を、ホストOS50の暗復号制御部51へ送信する(ステップS141)。
【0054】
ホストOS50の暗復号制御部51は、ステップS141でデータを受信すると、受信した復号要求情報を、鍵管理部53に送信する(ステップS142)。
鍵管理部53は、鍵データベースに記憶されているセッション鍵を用いて、暗復号制御部51から受信した復号要求情報に含まれる暗号化された鍵IDを復号し(ステップS143)、復号した鍵IDに対応する鍵値(暗号鍵)を鍵データベースから読み出す(検索する)(ステップS144)。
【0055】
そして、鍵管理部53は、読み出した鍵値を用いて、復号化対象データを復号する(ステップS145)。鍵管理部53は、復号したデータを、セッション鍵で暗号化し(ステップS146)、暗号化したデータを、ホストOS50の暗復号制御部51へ送信する(ステップS147)。
【0056】
ホストOS50の暗復号制御部51は、セッション鍵で暗号化されたデータを鍵管理部53から受信すると、受信した当該データをゲストOS60の拡張暗号化提供部61に送信する(ステップS148)。
【0057】
ゲストOS60の拡張暗号化提供部61は、ホストOS50の暗復号制御部51から受信したデータを、セッション鍵で復号する(ステップS149)。そして、拡張暗号化提供部61は、復号したデータを、暗号利用アプリケーション62に送信する(ステップS150)。これにより、暗号利用アプリケーション62は、ステップS139で要求した復号化対象データに対する復号データを得ることができる。
【0058】
このように、復号化処理では、ゲストOS60の暗号利用アプリケーション62が暗復号APIを呼び出してゲストOS60にデータの復号化を要求すると、ゲストOS60の拡張暗号化提供部61は、ホストOS50に対してセキュアな通信チャネルを構築し、復号処理をホストOS50に委託する。ステップS141で、ゲストOS60からホストOS50に送信するデータは、暗号化されているため、セッション鍵での暗号化は不要である。ただし、鍵IDについては、盗聴の危険あるため、セッション鍵で暗号化している。ステップS148で、ホストOS50からゲストOS60に送信するデータは、セッション鍵を用いて暗号化して、盗聴の危険性を回避している。
【0059】
上述のように、ホストOS50において、鍵管理部53が、ゲストOS60からデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストOS60を利用する利用者ごとに対応付けられた暗号鍵が記憶されている認証データベースから、要求情報を送信したゲストOSを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて要求情報に含まれるデータに対して暗号化及び復号化を行う。また、ゲストOS60において、拡張暗号化提供部61が、当該ゲストOS60において実行されている暗号利用アプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報をホストOS50に送信し、該要求情報に対する応答としてホストOS50から暗号化されたデータ又は復号化されたデータを受信する。
これにより、ゲストOS60は、暗復号処理をホストOS50に委託し、ホストOS50がゲストOS60から要求された暗復号処理に対応する暗号鍵を用いて暗復号処理を実施し、処理結果をゲストOS60に送信することで、仮想化された環境下で、セキュアな暗復号化処理を行い、データの保護を図るとともに、信頼性を向上させることができる。
【0060】
また、ホストOS50において、認証部52は、ゲストOS60において拡張暗号化提供部61を稼動させる際に、該ゲストOS60が鍵管理部53を用いたデータの暗号化及び復号化を行うことを許可するか否かを認証する。すなわち、ゲストOS60から受信した鍵ID及びクレデンシャルと、利用者に予め割り当てられている鍵ID及びクレデンシャルとが一致するか否かを判定し、一致する場合に、当該ゲストOS60から要求されるデータの暗号化及び復号化を行うことを許可するようにした。
これにより、鍵管理部53を利用したデータの暗号化及び復号化を許可するゲストOS60を限定することにより、暗号鍵を利用したデータの暗号化及び復号化に対するセキュリティを向上させることができる。
【0061】
また、認証部52は、鍵管理部53に対してデータの暗号化及び復号化することを許可されたゲストOS60に対して、当該ゲストOS60との間で送受信されるデータを暗号化する際に用いるセッション鍵を生成し、生成したセッション鍵を該ゲストOSに対応する暗号鍵に対応付けて前記鍵データベースに記憶させるようにした。
これにより、ホストOS50とゲストOS60との間で送受信されるデータは、セッション鍵を用いて暗号化されるので、秘匿性を高めることができ、セキュリティを向上させることができる。
【0062】
なお、例えば、暗復号鍵として利用者が要求した鍵を用いたいような場合がある。このような場合には、ステップS104における鍵値の登録は行わず、鍵データベースの鍵値は空白にしておき、利用者には鍵IDとクレデンシャルだけを知らせておき、図7のステップS125でサービス認証処理が終了した後、利用者に鍵の入力を要求して鍵を取得し、この鍵をセッション鍵で暗号化して、ゲストOS60からホストOS50に送信し、ホストOS50の鍵管理部53の鍵データベースに記憶させるようにしてもよい。
【0063】
また、ホストOS50に対して、複数のゲストOS60がデータの暗号化及び復号化の要求を行う場合、ホストOS50は、各ゲストOS60を一意に識別するために割り当てるゲストOS−IDや、IPアドレス、MACアドレスなどと対応付けてセッション鍵を記憶して、各ゲストOS60に対応するセッション鍵を管理するようにしてもよい。
また、ステップS126において、ゲストOS60に対して送信する応答認証情報に、ゲストOS60を一意に識別するための情報を含めて送信するとともに、当該ゲストOS60に対するセッション鍵と当該情報とを対応付けて記憶するようにしてもよい。更に、ゲストOS60は、当該情報をホストOS50に対して送信する情報を含めるようにして、ホストOS50がいずれのゲストOS60から送信された情報であるか識別できるようにしてもよい。
【0064】
また、本実施形態においては、利用者と暗号鍵が1対1に対応付けられた構成について説明したが、利用者に対して複数の暗号鍵を対応付けるようにしてもよい。この場合、利用者が試用する暗号利用アプリケーションと、鍵ID及び暗号鍵(鍵値)との組合せを鍵データベースに記憶させるようにしてもよい。また、利用者が利用する複数の鍵ID及び暗号鍵(鍵値)と、利用者とを対応付ける設定ファイルをゲストOSごとに用意し、ゲストOSが起動するときに当該設定ファイルを読み出して、サービス認証処理(図7)において複数の鍵ID及び暗号鍵に対応するクレデンシャルの認証を一括で行うようにしてもよい。これにより、利用者は、暗号利用アプリケーションごとに異なる暗号鍵を用いてデータを扱うことができ、ゲストOSにおけるセキュリティを更に向上させることができる。
【0065】
本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【0066】
1…データセンター
2…管理マシン
3…仮想マシン
5…利用者端末
6…ネットワーク網
50…ホストOS
51…暗復号制御部
52…認証部
53…鍵管理部
60…ゲストOS
61…拡張暗号化提供部
62…暗号利用アプリケーション
70…登録サーバ

【特許請求の範囲】
【請求項1】
ホストOSにおいて稼動する仮想マシンを用いて少なくとも1つのゲストOSを動作させる情報処理システムであって、
前記ホストOSは、
前記ゲストOSからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストOSを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストOSを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行う鍵管理部を備え、
前記ゲストOSは、
該ゲストOSにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ゲストOSに送信し、該要求情報に対する応答として前記ゲストOSから暗号化されたデータ又は復号化されたデータを受信する拡張暗号化提供部を備えている
ことを特徴とする情報処理システム。
【請求項2】
前記ホストOSは、
前記拡張暗号化提供部を稼動させる際に、該ゲストOSが前記鍵管理部を用いたデータの暗号化及び復号化を行うことを許可するか否かを認証する認証部を更に備える
ことを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記認証部は、
前記鍵管理部に対してデータの暗号化及び復号化することを許可された前記ゲストOSに対して、該ゲストOSとの間で送受信されるデータを暗号化する際に用いるセッション鍵を生成し、生成したセッション鍵を該ゲストOSに対応する暗号鍵に対応付けて前記鍵データベースに記憶させる
ことを特徴とする請求項2に記載の情報処理システム。
【請求項4】
ホストOSにおいて稼動する仮想マシンを用いて少なくとも1つのゲストOSを動作させる情報処理システムにおける情報処理方法であって、
前記ゲストOSが、該ゲストOSにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ゲストOSに送信するステップと、
前記ホストOSが、前記ゲストOSからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストOSを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストOSを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行うステップと、
前記ゲストOSが、前記要求情報に対する応答として前記ゲストOSから暗号化されたデータ又は復号化されたデータを受信するステップと
を有することを特徴とする情報処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−178010(P2012−178010A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−40022(P2011−40022)
【出願日】平成23年2月25日(2011.2.25)
【出願人】(000102728)株式会社エヌ・ティ・ティ・データ (438)
【Fターム(参考)】