(57)【特許請求の範囲】
【請求項１】
ホストＯＳにおいて稼動する仮想マシンを用いて少なくとも１つのゲストＯＳを動作させる情報処理システムであって、
前記ホストＯＳは、
前記ゲストＯＳからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストＯＳを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストＯＳを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行う鍵管理部を備え、
前記ゲストＯＳは、
該ゲストＯＳにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ホストＯＳに送信し、該要求情報に対する応答として前記ホストＯＳから暗号化されたデータ又は復号化されたデータを受信する拡張暗号化提供部を備え、
前記ホストＯＳは、
前記拡張暗号化提供部を稼動させる際に、前記ゲストＯＳを利用する利用者が入力した暗号鍵の識別情報とクレデンシャルとに基づいて、該ゲストＯＳが前記鍵管理部を用いたデータの暗号化及び復号化を行うことを許可するか否かを認証する認証部を更に備える
ことを特徴とする情報処理システム。
【請求項２】
前記認証部は、
前記鍵管理部に対してデータの暗号化及び復号化することを許可された前記ゲストＯＳに対して、該ゲストＯＳとの間で送受信されるデータを暗号化する際に用いるセッション鍵を生成し、生成したセッション鍵を該ゲストＯＳに対応する暗号鍵に対応付けて前記鍵データベースに記憶させ、
前記セッション鍵による暗号化は、
前記ホストＯＳにて復号化されたデータを該セッション鍵に対応する前記ゲストＯＳに送信する際に行われ、前記ホストＯＳにて暗号化されたデータを前記ゲストＯＳに送信する際には行われない
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
ホストＯＳにおいて稼動する仮想マシンを用いて少なくとも１つのゲストＯＳを動作させる情報処理システムにおける情報処理方法であって、
前記ホストＯＳが、前記ゲストＯＳを利用する利用者が入力した暗号鍵の識別情報とクレデンシャルとに基づいて、該ゲストＯＳから要求されるデータの暗号化及び復号化を行うことを許可するか否かを認証するステップと、
認証された前記ゲストＯＳが、該ゲストＯＳにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ホストＯＳに送信するステップと、
前記ホストＯＳが、前記ゲストＯＳからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストＯＳを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストＯＳを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行うステップと、
前記ゲストＯＳが、前記要求情報に対する応答として前記ホストＯＳから暗号化されたデータ又は復号化されたデータを受信するステップと
を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化システム環境下で暗復号処理に用いる情報処理システム、及び情報処理方法に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングが注目を集め、ＰａａＳ（Platform as a Service）やＩａａＳ（Infrastructure as a Service）と呼ばれる、仮想マシンをネットワーク経由で利用者に提供するサービスの普及が進んでいる。ＰａａＳでは、仮想化されたアプリケーションサーバやデータベース等、利用者にネットワーク経由のアプリケーション実行用のプラットフォームが提供される。ＩａａＳでは、仮想化サーバや共有ディスク等、利用者がＯＳ(Operating System)等を含めてシステムを導入できる。このような仮想マシンは、ホストＯＳ下でゲストＯＳを起動させることで実現される。
【０００３】
このような仮想化環境において、暗号化処理を伴うアプリケーションをゲストＯＳで実行する際に、暗号鍵の不正取得や、暗号鍵の不正利用を目的としたゲストＯＳに対する攻撃から暗号鍵を保護する必要がある。暗号鍵の不正取得を目的とした攻撃には、例えば、メモリダンプがある。メモリダンプは、メモリ上の値をダンプすることにより、メモリ上に残された暗号鍵を不正に取得するものである。また、暗号鍵の不正取得及び不正使用を目的としたゲストＯＳに対する攻撃として、例えば、リバースエンジニアリングがある。リバースエンジニアリングは、プログラムを逆コンパイルすることにより、プログラムに埋め込まれている暗号鍵や、クレデンシャル（ＩＤ、パスワード）を抽出するものである。
【０００４】
このような攻撃を防ぐための手段として、ハードウェア暗号化装置（ＨＳＭ；Hardware Security Module）がある。また、例えば、特許文献１には、仮想化環境において、サーバをＶＰＮ（Virtual Private Network）で接続し、サーバ間を伝送するデータをホストＯＳが暗号化する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−６２７３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ハードウェア暗号化装置では、専用のデバイスが必要になり、また、コストが高くなる。また、ハードウェア暗号化装置を用いた場合、提供可能なＯＳの種類が制限されるため、利用者の要求に応じたサービスを提供することが困難になる。
【０００７】
また、特許文献１に記載されているものは、仮想化環境下のサーバ間でＶＰＮチャネル構築時に、暗号化情報をホストＯＳ側で暗号化情報を自動的に判断し、セットするものである。この特許文献１に記載されているものでは、仮想化環境下のサーバ間の通信での暗号化に関する技術であり、ゲストＯＳにおいて扱うデータを暗号化及び復号化するものではない。また、特許文献１に記載されているものでは、ゲストＯＳ側のアプリケーションの要求によりデータを暗復号したり、ゲストＯＳ側で蓄積されるデータの暗復号したりすることはできず、データベース等を作成する際に記憶装置や、記憶媒体に記憶させたデータのセキュリティに対する考慮がされていないという問題がある。
【０００８】
上述の課題を鑑み、仮想化環境において、ゲストＯＳにおいて扱うデータの暗号化及び復号化に用いる暗号鍵に対するセキュリティを確保するともに向上させることができる情報処理システム、及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の課題を解決するために、本発明は、ホストＯＳにおいて稼動する仮想マシンを用いて少なくとも１つのゲストＯＳを動作させる情報処理システムであって、前記ホストＯＳは、前記ゲストＯＳからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストＯＳを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストＯＳを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行う鍵管理部を備え、前記ゲストＯＳは、該ゲストＯＳにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ホストＯＳに送信し、該要求情報に対する応答として前記ホストＯＳから暗号化されたデータ又は復号化されたデータを受信する拡張暗号化提供部を備え、前記ホストＯＳは、前記拡張暗号化提供部を稼動させる際に、前記ゲストＯＳを利用する利用者が入力した暗号鍵の識別情報とクレデンシャルとに基づいて、該ゲストＯＳが前記鍵管理部を用いたデータの暗号化及び復号化を行うことを許可するか否かを認証する認証部を更に備えることを特徴とする情報処理システムである。
【００１１】
また、本発明は、上記に記載の発明において、前記認証部は、前記鍵管理部に対してデータの暗号化及び復号化することを許可された前記ゲストＯＳに対して、該ゲストＯＳとの間で送受信されるデータを暗号化する際に用いるセッション鍵を生成し、生成したセッション鍵を該ゲストＯＳに対応する暗号鍵に対応付けて前記鍵データベースに記憶させ、前記セッション鍵による暗号化は、前記ホストＯＳにて復号化されたデータを該セッション鍵に対応する前記ゲストＯＳに送信する際に行われ、前記ホストＯＳにて暗号化されたデータを前記ゲストＯＳに送信する際には行われないことを特徴とする。
【００１２】
また、本発明は、ホストＯＳにおいて稼動する仮想マシンを用いて少なくとも１つのゲストＯＳを動作させる情報処理システムにおける情報処理方法であって、前記ホストＯＳが、前記ゲストＯＳを利用する利用者が入力した暗号鍵の識別情報とクレデンシャルとに基づいて、該ゲストＯＳから要求されるデータの暗号化及び復号化を行うことを許可するか否かを認証するステップと、認証された前記ゲストＯＳが、該ゲストＯＳにおいて実行されているアプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報を前記ホストＯＳに送信するステップと、前記ホストＯＳが、前記ゲストＯＳからデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストＯＳを利用する利用者ごとに対応付けられた暗号鍵が記憶されている鍵データベースから、前記要求情報を送信したゲストＯＳを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて前記要求情報に含まれるデータに対して暗号化及び復号化を行うステップと、前記ゲストＯＳが、前記要求情報に対する応答として前記ホストＯＳから暗号化されたデータ又は復号化されたデータを受信するステップとを有することを特徴とする情報処理方法である。
【発明の効果】
【００１３】
本発明によれば、ゲストＯＳにおいて実行されているアプリケーションで扱われているデータを暗号化又は復号化に用いる暗号鍵を、ホストＯＳが備える鍵管理部が記憶するとともに、ゲストＯＳにおいてデータの暗号化及び復号化の必要が生じると、ホストＯＳに当該データ暗号化及び復号化を要求するようにした。
これにより、ゲストＯＳには暗号鍵を記憶させておく必要がなく、ゲストＯＳにおけるセキュリティを確保することができる。また、複数のゲストＯＳそれぞれで用いられる全ての暗号鍵は、ホストＯＳが備える鍵管理部に記憶されるので、外部よりの攻撃を防ぐ領域（複数のゲストＯＳ及びホストＯＳ）を鍵管理部に限定することができるのでセキュリティを向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明が適用できるコンピュータシステムの概要を示すブロック図である。
【図２】第１実施形態における暗復号処理の概要を示す機能ブロック図である。
【図３】第１実施形態における登録サーバの構成を示す機能ブロック図である。
【図４】第１実施形態におけるサービス利用事前登録の処理の一例を示すシーケンス図である。
【図５】第１実施形態における鍵データベースの一例を示す図である。
【図６】第１実施形態における認証データベースの一例を示す図である。
【図７】第１実施形態におけるサービス認証処理での各部の処理の例を示すシーケンス図である。
【図８】第１実施形態における利用者がゲストＯＳ６０上で運用する暗号利用アプリケーション６２から暗号化要求があった場合の処理の例を示すシーケンス図である。
【図９】第１実施形態における利用者がゲストＯＳ６０上で運用する暗号利用アプリケーション６２から復号化要求があった場合の処理の例を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
（第１実施形態）
以下、本発明の実施の形態について図面を参照しながら説明する。図１は、本発明が適用できるコンピュータシステム（情報処理システム）の概要を示すものである。
【００１６】
図１において、ＰａａＳやＩａａＳなどを提供するデータセンター１には、管理マシン２と、仮想マシン（Virtual Machine；ＶＭ）３が設けられる。ここで、管理マシン２に搭載されるＯＳをホストＯＳと呼ぶ。仮想マシン３は、実体としては所定のデータで表されるが、管理マシン２に読み込まれ、ホストＯＳ上で実行されることにより、仮想の機器として動作するものである。仮想マシン３に搭載されるＯＳをゲストＯＳと呼ぶ。なお、データセンター１は、少なくとも１つのコンピュータにより構成されるものである。複数のコンピュータにより構成される場合、各コンピュータをネットワークで接続した分散システムとして構成するようにしてもよい。仮想マシン３は、ホストＯＳ上で複数稼動させることができ、複数の仮想マシン３が稼動する場合、各仮想マシン３は、独立した機器として扱うことができる。
【００１７】
データセンター１の運営会社により、利用者に対して仮想マシン３の管理権限が付与され、仮想マシン３の機器資源が提供される。利用者は、利用者端末５により、ネットワーク網６を介して、データセンター１上の仮想マシン３をアクセスし、この仮想マシン３を仮想化されたアプリケーションサーバやデータベースとして利用できる。
【００１８】
第１実施形態では、このような仮想化された環境下で、セキュアな暗復号化処理を行うことで、データの保護を図り、信頼性を向上させるものである。このような第１実施形態に係る暗号化処理について、以下に説明する。
【００１９】
図２は、第１実施形態に係る暗復号処理を行う情報処理システムの構成を示す概略ブロック図である。図２において、ホストＯＳ５０には、暗復号制御部５１と、認証部５２と、鍵管理部５３とが備えられている。また、ゲストＯＳ６０には、拡張暗号化提供部６１が備えられている。
【００２０】
ホストＯＳ５０において、暗復号制御部５１は、暗復号化処理の制御を行うとともに、ゲストＯＳ６０と、ホストＯＳ５０に備えられている認証部５２及び鍵管理部５３との間の処理制御を行う。認証部５２は、鍵ＩＤとクレデンシャルとが対応付けて記憶されている認証データベースを有しており、ゲストＯＳ６０から受信した情報を鍵管理部５３に出力することを許可するか否かの認証を行う。
【００２１】
鍵管理部５３は、鍵ＩＤと、ゲストＯＳ６０とホストＯＳ５０との間で送受信されるデータを暗号化する共通鍵（セッション鍵）と、暗号鍵の鍵値とが対応付けられて記憶されている鍵データベースを有している。また、この鍵データベースには、ゲストＯＳ６０に対する認証に用いる一対の公開鍵（HOST_PUBLIC_KEY）及び秘密鍵（HOST_PRIVATE_KEY）が暗号化等された形式で保護された上で予め記憶されている。また、鍵管理部５３は、鍵データベースに記憶されている暗号鍵を用いてデータの暗号化及び復号化を行う。また、鍵管理部５３は、鍵データベースに記憶されている暗号化された暗号鍵（公開鍵、秘密鍵、後述するゲストＯＳ６０で扱うデータに対して用いる鍵値）を用いる際には、暗号化された暗号鍵に対して所定の復号処理を行う。
【００２２】
ゲストＯＳ６０において、拡張暗号化提供部６１は、例えば、ゲストＯＳ６０にインストールされるプログラムであり、ゲストＯＳ６０上で実行される暗号化及び復号化を利用する暗号利用アプリケーション６２からのデータの暗号化、又はデータの復号化の要求を受けて、ゲストＯＳ６０とホストＯＳ５０との間で、セキュアな通信チャネルを形成する。
なお、拡張暗号化提供部６１のソフトウェアは、例えば、データセンター１の運営会社のサイトからダウンロードできるようにしてもよいし、ＣＤ−ＲＯＭ等の記録媒体により、拡張暗号化提供部６１のプログラムを配布するようにしてもよい。
【００２３】
第１実施形態に係る暗復号処理では、図２において、ゲストＯＳ６０起動時に、当該ゲストＯＳ６０に対する認証が行われる。利用者は、事前に、データセンター１の運営会社に対して、ホストＯＳ５０における暗号化及び復号化の処理を要求することを許可するか否かの認証に用いるクレデンシャルと、利用者を識別する鍵ＩＤの登録を行い、データセンター１の運営会社から鍵ＩＤとクレデンシャルとを受領しており、当該鍵ＩＤ及び当該クレデンシャルを用いて認証が行われる。すなわち、鍵ＩＤ及びクレデンシャルは、利用者ごとに対応付けられている情報である。
ゲストＯＳ６０に備えられている拡張暗号化提供部６１は、鍵ＩＤと、クレデンシャルをホストＯＳ５０に備えられている認証部５２に送信し、認証部５２が当該ゲストＯＳ６０の認証を行う。認証が成立すると、鍵ＩＤとセッション鍵とが認証部５２が有する認証データベースに記憶される。
【００２４】
暗復号処理では、ゲストＯＳ６０の暗号利用アプリケーション６２が暗復号ＡＰＩ（Application Program Interface）を呼び出すと、データ、及び該データに対する暗号化又は復号化を示す要求情報が、暗復号ＡＰＩを通じて、暗号利用アプリケーション６２から拡張暗号化提供部６１に出力される。拡張暗号化提供部６１は、要求情報が入力されると、ゲストＯＳ６０とホストＯＳ５０との間に、セキュアな通信チャネルを構築し、暗復号処理をホストＯＳ５０に委託する。ホストＯＳ５０の暗復号制御部５１は、鍵管理部５３に予め記憶されている暗号鍵を読み出し、読み出した暗号鍵を用いて、ゲストＯＳ６０が要求する暗復号処理に対応する暗復号処理を実施する。そして、暗復号制御部５１は、処理結果をゲストＯＳ６０の拡張暗号化提供部６１に送り、拡張暗号化提供部６１は、この処理結果を暗号利用アプリケーション６２に送信する。
【００２５】
このように、第１実施形態における暗復号処理では、ゲストＯＳ６０の暗号利用アプリケーション６２が暗復号ＡＰＩを呼び出した際、ゲストＯＳ６０はホストＯＳ５０に対してセキュアな通信チャネルを構築し、暗復号処理をホストＯＳ５０に委託する。そして、ホストＯＳ５０は、ゲストＯＳ６０を利用する利用者に対応する対応する暗号鍵を用いて暗復号処理を行い、暗復号処理の結果を上記の通信チャネルを介してゲストＯＳ６０に送信する。これにより、仮想化環境において、セキュアな暗復号化処理を行い、ゲストＯＳ６０で扱うデータの保護を図りつつ、セキュリティの向上を図っている。
【００２６】
つまり、ホストＯＳ５０は、ゲストＯＳ６０から隔離されており、ゲストＯＳ６０に比べ信頼性が高い。そこで、暗号化処理をゲストＯＳ６０から隔離されたホストＯＳ５０上で行うことで、ゲストＯＳ６０への攻撃によって、メモリ上の鍵を抽出するメモリダンプや、プログラムに内蔵されている暗号鍵のリバースエンジニアリングにより暗号鍵の不正取得、プログラムへ内蔵されているクレデンシャルのリバースエンジニアリングによる暗号鍵の不正利用を防ぐことができる。また、第１実施形態に示した構成は、ソフトウェア技術のみで安価に実現可能であり、追加ハードウェアを必要としないという利点がある。
【００２７】
次に、第１実施形態における暗復号処理について説明する。まず、ゲストＯＳ６０を利用する前に行うサービス利用事前登録の処理について説明する。
【００２８】
第１実施形態に係る暗復号処理を行うためには、事前登録処理が必要になる。
図３は、事前登録処理を行う登録サーバ７０の構成を示す概略ブロック図である。同図に示すように、登録サーバ７０は、鍵ＩＤ生成部７１と、鍵生成部７２と、クレデンシャル生成部７３とを備えている。
鍵ＩＤ生成部７１は、所定のルールに従って、利用者の鍵ＩＤを生成する。鍵生成部７２は、鍵ＩＤ生成部７１が生成した鍵ＩＤに対応する暗号鍵としての鍵値を生成する。クレデンシャル生成部７３は、乱数生成器などを用いて、利用者のクレデンシャル（例えばパスワード）を生成する。
【００２９】
図４は、第１実施形態におけるサービス利用事前登録の処理の一例を示すシーケンス図である。なお、事前登録は、セキュリティの向上を考慮すると、書類や対面での交付等、電文以外のセキュリティが確保された方法により行うことが望ましい。ここでは、書類や対面での利用事前登録について説明する。
【００３０】
図４において、利用者８０がデータセンター１の運営会社に対して利用申請を行うと（ステップＳ１００）、登録サーバ７０の鍵ＩＤ生成部７１は、所定のルールに従って、利用者に対応する鍵ＩＤを生成する（ステップＳ１０１）。
次に、登録サーバ７０の鍵生成部７２は、鍵ＩＤ生成部７１が生成した鍵ＩＤに対応する暗号鍵としての鍵値を生成する（ステップＳ１０２）。次に、登録サーバ７０のクレデンシャル生成部７３は、乱数生成器を用いて、利用者に対応するクレデンシャルを生成する（ステップＳ１０３)。
【００３１】
ステップＳ１０１で利用者の鍵ＩＤが生成され、ステップＳ１０２で鍵値が生成されると、登録サーバ７０は、この鍵ＩＤと鍵値とを対応付けて、ホストＯＳ５０の鍵管理部５３の鍵データベースに記憶させる（ステップＳ１０４）。
また、ステップＳ１０３でクレデンシャルが生成されると、登録サーバ７０は、鍵ＩＤとクレデンシャルとを対応付けて、ホストＯＳ５０に備えられている認証部５２の認証データベースに記憶させる（ステップＳ１０５）。また、利用者８０は、データセンター１の運営会社から鍵ＩＤとクレデンシャルとを受け取る（ステップＳ１０６）。
【００３２】
このように、サービス利用事前登録が終了すると、利用者８０に対して、鍵ＩＤとクレデンシャルとが知らされる。また、サービス利用事前登録が終了すると、ホストＯＳ５０の鍵管理部５３の鍵データベースと、ホストＯＳ５０の認証部５２の認証データベースとが更新される。
【００３３】
図５は、第１実施形態における鍵データベースの一例を示す図である。図６は、第１実施形態における認証データベースの一例を示す図である。
ホストＯＳ５０の鍵管理部５３には、図５に示すように、公開鍵（HOST_PUBLIC_KEY）及び秘密鍵（HOST_PRIVATE_KEY）に加えて、利用者８０に対する鍵ＩＤ（KEY_ID_001）に対応付けられた暗号鍵としての鍵値（471cd0…）が鍵データベースに記憶される。この際、鍵データベースに記憶される鍵値は、別途暗号化などの方法で適切に保護されるものとする。
また、ホストＯＳ５０に備えられている認証部５２の認証データベースには、図６に示すように、利用者８０に対する鍵ＩＤ（KEY_ID_001）と、クレデンシャル（PASSWORD_001）とが対応付けられて記憶される。
【００３４】
次に、サービス認証処理について説明する。
図７は、第１実施形態におけるサービス認証処理での各部の処理の例を示すシーケンス図である。ここでは、図４に示したサービス利用事前登録の処理が既に行われている場合におけるサービス認証処理を説明する。
【００３５】
ゲストＯＳ６０が起動した後に、利用者端末５は、利用者の操作に応じて、ゲストＯＳ６０に、拡張暗号化提供部６１のソフトウェアをインストールする（ステップＳ１０７）。このとき、ゲストＯＳ６０にインストールされる拡張暗号化提供部６１のソフトウェアには、データの暗号化及び復号化を委託するホストＯＳ５０を識別する情報が予め含まれている。
【００３６】
拡張暗号化提供部６１のソフトウェアインストールが完了すると、拡張暗号化提供部６１はダイアログ画面を生成し、利用者端末５に対して、鍵ＩＤとクレデンシャルとの入力を要求する（ステップＳ１０８）。
【００３７】
利用者端末５は、利用者８０の操作に応じて、ステップＳ１０６における鍵ＩＤとクレデンシャルとを、拡張暗号化提供部６１に送信する（ステップＳ１０９）。
ゲストＯＳ６０の拡張暗号化提供部６１は、鍵ＩＤとクレデンシャルとを受信すると、自己に予め設定されているホストＯＳ５０の情報（例：ホスト名、ＩＰアドレス、ＭＡＣアドレスなど）を用いて、受信した鍵ＩＤ及びクレデンシャルを含む認証要求をホストＯＳ５０に送信する（ステップＳ１１０）。
【００３８】
暗復号制御部５１は、ゲストＯＳ６０から受信した認証要求を、認証部５２へ送信する（ステップＳ１１１）。
ホストＯＳ５０の認証部５２は、認証要求を受信すると、乱数を生成する（ステップＳ１１２）。また、鍵管理部５３が有する鍵データベースには、公開鍵（HOST_PUBLIC_KEY）及び秘密鍵（HOST_PRIVATE_KEY）のペアが予め記憶されている。ホストＯＳ５０の認証部５２は、ステップＳ１１２で乱数を生成すると、鍵管理部５３の鍵データベースから自己の公開鍵（HOST_PUBLIC_KEY）を読み出す（ステップＳ１１３）。
【００３９】
続いて、認証部５２は、生成した乱数と、読み出した公開鍵（HOST_PUBLIC_KEY）とを含む情報を、暗復号制御部５１へ送信する（ステップＳ１１４）。
暗復号制御部５１は、乱数と公開鍵（HOST_PUBLIC_KEY）とを含む情報を受信すると、受信した情報をゲストＯＳ６０の拡張暗号化提供部６１に送信する（ステップＳ１１５）。
【００４０】
拡張暗号化提供部６１は、乱数と公開鍵（HOST_PUBLIC_KEY）とを含む情報を暗復号制御部５１から受信すると、受信した情報に含まれる乱数と、利用者８０に対応するクレデンシャルとを連結してハッシュ値を生成する（ステップＳ１１６）。
続いて、拡張暗号化提供部６１は、共通鍵（セッション鍵）を生成し、ステップＳ１１５で受信した公開鍵（HOST_PUBLIC_KEY）を用いて、に生成した共通鍵と鍵ＩＤとを暗号化する（ステップＳ１１７）。
拡張暗号化提供部６１は、ステップＳ１１６で生成したハッシュ値と、ステップＳ１１７で暗号化した共通鍵及び鍵ＩＤとを含む情報を、ホストＯＳ５０の暗復号制御部５１に送信する（ステップＳ１１８）。
【００４１】
暗復号制御部５１は、暗号化された共通鍵及び鍵ＩＤと、ハッシュ値とを含む情報を受信すると、受信した情報を認証部５２に送信する（ステップＳ１１９）。
認証部５２は、暗復号制御部５１から情報を受信すると、ステップＳ１１２で生成された乱数と、認証部５２が有する認証データベースに記憶されているクレデンシャルとを連結してハッシュ値を生成する（ステップＳ１２０）。そして、認証部５２は、ステップＳ１２０で生成されたハッシュ値と、ステップＳ１１９で受信したハッシュ値とを比較し、ハッシュ値が一致するか否かを判定する（ステップＳ１２１）。
【００４２】
ステップＳ１２１において、ハッシュ値が一致すると判定すると認証部５２は、鍵管理部５３が有する鍵データベースから、公開鍵（HOST_PUBLIC_KEY）とペアとなる秘密鍵（HOST_PRIVATE_KEY）を読み出す（ステップＳ１２２）。
ホストＯＳ５０の認証部５２は、読み出した秘密鍵（HOST_PRIVATE_KEY）を用いて、ステップＳ１１９において受信した情報に含まれる共通鍵及び鍵ＩＤを復号する（ステップＳ１２３）。
【００４３】
ホストＯＳ５０の鍵管理部５３は、共通鍵及び鍵ＩＤを復号すると、ステップＳ１２３で復号した共通鍵を、ホストＯＳ５０とゲストＯＳ６０との間の通信に用いるセッション鍵として、鍵ＩＤ及びセッション鍵と対応させて、鍵データベースに記憶させる（ステップＳ１２４）。
そして、ホストＯＳ５０の認証部５２は、ゲストＯＳ６０に対して、ホストＯＳ５０が備える鍵管理部５３を用いたデータの暗号化及び復号化の処理を許可することを示す認証応答情報を、ホストＯＳ５０の暗復号制御部５１に送信する（ステップＳ１２５）。
ホストＯＳ５０の暗復号制御部５１は、ステップＳ１２５で受信した認証応答情報を、ゲストＯＳ６０に送信する（ステップＳ１２６）。
【００４４】
ゲストＯＳ６０の拡張暗号化提供部６１は、認証応答情報を受信すると、共通鍵をセッション鍵として鍵ＩＤと対応付けて、メモリ上に記憶させる（ステップＳ１２７）。そして、ゲストＯＳ６０の拡張暗号化提供部６１は、ステップＳ１２５で受信した認証応答情報が処理の許可を示す情報（認証ＯＫ）であれば認証成功画面を出力し、認証が不成立の場合、拡張暗号化提供部６１は認証エラー画面を出力し（ステップＳ１２８）、ステップＳ１０８へ戻る。
【００４５】
このように、ホストＯＳ５０の認証部５２は、拡張暗号化提供部６１を稼動させる際に、サービス認証処理において、クレデンシャルを用いて、ゲストＯＳ６０に対する認証を行う。認証が成立すると、ゲストＯＳ６０には、鍵ＩＤとセッション鍵とが対応付けて記憶される。また、ホストＯＳ５０の鍵管理部５３の鍵データベースには、鍵ＩＤとセッション鍵とが対応付けて記憶される。
【００４６】
次に、暗復号処理について説明する。
図８は、第１実施形態において、利用者がゲストＯＳ６０上で運用する暗号利用アプリケーション６２から暗号化要求があった場合の処理の例を示すシーケンス図である。ここでは、図７に示したサービス認証処理が既に行われ、ホストＯＳ５０に備えられている鍵管理部５３を用いたデータの暗号化及び復号化の処理を行うことを許可する認証が、ゲストＯＳ６０に対して行われている場合について説明する。
【００４７】
図８において、ゲストＯＳ６０の暗号利用アプリケーション６２は、暗号化対象データを含む処理要求をゲストＯＳ６０の拡張暗号化提供部６１に送信する（ステップＳ１２９）。
ゲストＯＳ６０の拡張暗号化提供部６１は、暗号化対象データを含む処理要求を受信すると、処理要求に含まれる暗号化対象データと鍵ＩＤとを、サービス認証処理において記憶したセッション鍵を用いて暗号化する（ステップＳ１３０）。
拡張暗号化提供部６１は、ステップＳ１３０で暗号化したデータを含む暗号化要求情報を、ホストＯＳ５０の暗復号制御部５１へ送信する（ステップＳ１３１）。
【００４８】
ホストＯＳ５０の暗復号制御部５１は、ステップＳ１３１で受信した暗号化要求情報を、鍵管理部５３に送信する（ステップＳ１３２）。
鍵管理部５３は、暗復号制御部５１から暗号化要求情報を受信すると、鍵管理部５３の鍵データベースからのセッション鍵を用いて、受信した暗号化要求情報に含まれる暗号化対象データと鍵ＩＤとを復号する（ステップＳ１３３）。
【００４９】
鍵管理部５３は、復号した鍵ＩＤに対応する鍵値（暗号鍵）を鍵データベースから読み出す（ステップＳ１３４）。
鍵管理部５３は、読み出した鍵値を用いて、暗号化対象データを暗号化し（ステップＳ１３５）、暗号化したデータを、暗復号制御部５１へ送信する（ステップＳ１３６）。
暗復号制御部５１は、鍵管理部５３から受信した暗号化されたデータを、ゲストＯＳ６０の拡張暗号化提供部６１へ送信する（ステップＳ１３７）。
【００５０】
ゲストＯＳ６０の拡張暗号化提供部６１は、ホストＯＳ５０の暗復号制御部５１から暗号化されたデータを受信し、暗号利用アプリケーション６２に送信する（ステップＳ１３８）。
これにより、暗号利用アプリケーション６２は、ステップＳ１２９でゲストＯＳ６０に対して要求した暗号化対象データに対する暗号化データを得ることができる。
【００５１】
このように、暗号化処理では、ゲストＯＳ６０の暗号利用アプリケーション６２が暗復号ＡＰＩを呼び出してゲストＯＳ６０にデータの暗号化を要求すると、ゲストＯＳ６０の拡張暗号化提供部６１は、ホストＯＳ５０に対してセキュアな通信チャネルを構築し、暗号処理をホストＯＳ５０に委託する。ステップＳ１３１で、ゲストＯＳ６０からホストＯＳ５０に送信するデータは、セッション鍵を用いて暗号化することで、盗聴の危険性を回避し、データの保護が図られている。ステップＳ１３７で、ホストＯＳ５０からゲストＯＳ６０に送信するデータは、既に暗号化されているので、セッション鍵での暗号化は行われない。セッション鍵での暗号化を行わないことで、処理の負担が減少し、性能劣化を防ぐことができる。
【００５２】
図９は、第１実施形態における利用者がゲストＯＳ６０上で運用する暗号利用アプリケーション６２から復号化要求があった場合の処理の例を示すシーケンス図である。ここでは、上述の暗号化要求があった場合と同様に、図７に示したサービス認証処理が既に行われ、ホストＯＳ５０に備えられている鍵管理部５３を用いたデータの暗号化及び復号化の処理を行うことを許可する認証が、ゲストＯＳ６０に対して行われている場合について説明する。
【００５３】
図９において、暗号利用アプリケーション６２は、復号化対象データを含む処理要求を、ゲストＯＳ６０の拡張暗号化提供部６１に送信する（ステップＳ１３９）。
拡張暗号化提供部６１は、復号化対象データを含む処理要求を受信すると、鍵ＩＤを該鍵ＩＤに対応するセッション鍵を用いて暗号化する（ステップＳ１４０）。そして、拡張暗号化提供部６１は、復号化対象データと、暗号化された鍵ＩＤとを含む復号要求情報を、ホストＯＳ５０の暗復号制御部５１へ送信する（ステップＳ１４１）。
【００５４】
ホストＯＳ５０の暗復号制御部５１は、ステップＳ１４１でデータを受信すると、受信した復号要求情報を、鍵管理部５３に送信する（ステップＳ１４２）。
鍵管理部５３は、鍵データベースに記憶されているセッション鍵を用いて、暗復号制御部５１から受信した復号要求情報に含まれる暗号化された鍵ＩＤを復号し（ステップＳ１４３）、復号した鍵ＩＤに対応する鍵値（暗号鍵）を鍵データベースから読み出す（検索する）（ステップＳ１４４）。
【００５５】
そして、鍵管理部５３は、読み出した鍵値を用いて、復号化対象データを復号する（ステップＳ１４５）。鍵管理部５３は、復号したデータを、セッション鍵で暗号化し（ステップＳ１４６）、暗号化したデータを、ホストＯＳ５０の暗復号制御部５１へ送信する（ステップＳ１４７）。
【００５６】
ホストＯＳ５０の暗復号制御部５１は、セッション鍵で暗号化されたデータを鍵管理部５３から受信すると、受信した当該データをゲストＯＳ６０の拡張暗号化提供部６１に送信する（ステップＳ１４８）。
【００５７】
ゲストＯＳ６０の拡張暗号化提供部６１は、ホストＯＳ５０の暗復号制御部５１から受信したデータを、セッション鍵で復号する（ステップＳ１４９）。そして、拡張暗号化提供部６１は、復号したデータを、暗号利用アプリケーション６２に送信する（ステップＳ１５０）。これにより、暗号利用アプリケーション６２は、ステップＳ１３９で要求した復号化対象データに対する復号データを得ることができる。
【００５８】
このように、復号化処理では、ゲストＯＳ６０の暗号利用アプリケーション６２が暗復号ＡＰＩを呼び出してゲストＯＳ６０にデータの復号化を要求すると、ゲストＯＳ６０の拡張暗号化提供部６１は、ホストＯＳ５０に対してセキュアな通信チャネルを構築し、復号処理をホストＯＳ５０に委託する。ステップＳ１４１で、ゲストＯＳ６０からホストＯＳ５０に送信するデータは、暗号化されているため、セッション鍵での暗号化は不要である。ただし、鍵ＩＤについては、盗聴の危険あるため、セッション鍵で暗号化している。ステップＳ１４８で、ホストＯＳ５０からゲストＯＳ６０に送信するデータは、セッション鍵を用いて暗号化して、盗聴の危険性を回避している。
【００５９】
上述のように、ホストＯＳ５０において、鍵管理部５３が、ゲストＯＳ６０からデータと該データに対する暗号化又は復号化の要求とを示す要求情報を受信すると、ゲストＯＳ６０を利用する利用者ごとに対応付けられた暗号鍵が記憶されている認証データベースから、要求情報を送信したゲストＯＳを利用する利用者に対応する暗号鍵を読み出し、読み出した暗号鍵を用いて要求情報に含まれるデータに対して暗号化及び復号化を行う。また、ゲストＯＳ６０において、拡張暗号化提供部６１が、当該ゲストＯＳ６０において実行されている暗号利用アプリケーションからデータの暗号化又は復号化の要求が入力されると、該データと該データに対する暗号化又は復号化の要求を示す要求情報をホストＯＳ５０に送信し、該要求情報に対する応答としてホストＯＳ５０から暗号化されたデータ又は復号化されたデータを受信する。
これにより、ゲストＯＳ６０は、暗復号処理をホストＯＳ５０に委託し、ホストＯＳ５０がゲストＯＳ６０から要求された暗復号処理に対応する暗号鍵を用いて暗復号処理を実施し、処理結果をゲストＯＳ６０に送信することで、仮想化された環境下で、セキュアな暗復号化処理を行い、データの保護を図るとともに、信頼性を向上させることができる。
【００６０】
また、ホストＯＳ５０において、認証部５２は、ゲストＯＳ６０において拡張暗号化提供部６１を稼動させる際に、該ゲストＯＳ６０が鍵管理部５３を用いたデータの暗号化及び復号化を行うことを許可するか否かを認証する。すなわち、ゲストＯＳ６０から受信した鍵ＩＤ及びクレデンシャルと、利用者に予め割り当てられている鍵ＩＤ及びクレデンシャルとが一致するか否かを判定し、一致する場合に、当該ゲストＯＳ６０から要求されるデータの暗号化及び復号化を行うことを許可するようにした。
これにより、鍵管理部５３を利用したデータの暗号化及び復号化を許可するゲストＯＳ６０を限定することにより、暗号鍵を利用したデータの暗号化及び復号化に対するセキュリティを向上させることができる。
【００６１】
また、認証部５２は、鍵管理部５３に対してデータの暗号化及び復号化することを許可されたゲストＯＳ６０に対して、当該ゲストＯＳ６０との間で送受信されるデータを暗号化する際に用いるセッション鍵を生成し、生成したセッション鍵を該ゲストＯＳに対応する暗号鍵に対応付けて前記鍵データベースに記憶させるようにした。
これにより、ホストＯＳ５０とゲストＯＳ６０との間で送受信されるデータは、セッション鍵を用いて暗号化されるので、秘匿性を高めることができ、セキュリティを向上させることができる。
【００６２】
なお、例えば、暗復号鍵として利用者が要求した鍵を用いたいような場合がある。このような場合には、ステップＳ１０４における鍵値の登録は行わず、鍵データベースの鍵値は空白にしておき、利用者には鍵ＩＤとクレデンシャルだけを知らせておき、図７のステップＳ１２５でサービス認証処理が終了した後、利用者に鍵の入力を要求して鍵を取得し、この鍵をセッション鍵で暗号化して、ゲストＯＳ６０からホストＯＳ５０に送信し、ホストＯＳ５０の鍵管理部５３の鍵データベースに記憶させるようにしてもよい。
【００６３】
また、ホストＯＳ５０に対して、複数のゲストＯＳ６０がデータの暗号化及び復号化の要求を行う場合、ホストＯＳ５０は、各ゲストＯＳ６０を一意に識別するために割り当てるゲストＯＳ−ＩＤや、ＩＰアドレス、ＭＡＣアドレスなどと対応付けてセッション鍵を記憶して、各ゲストＯＳ６０に対応するセッション鍵を管理するようにしてもよい。
また、ステップＳ１２６において、ゲストＯＳ６０に対して送信する応答認証情報に、ゲストＯＳ６０を一意に識別するための情報を含めて送信するとともに、当該ゲストＯＳ６０に対するセッション鍵と当該情報とを対応付けて記憶するようにしてもよい。更に、ゲストＯＳ６０は、当該情報をホストＯＳ５０に対して送信する情報を含めるようにして、ホストＯＳ５０がいずれのゲストＯＳ６０から送信された情報であるか識別できるようにしてもよい。
【００６４】
また、本実施形態においては、利用者と暗号鍵が１対１に対応付けられた構成について説明したが、利用者に対して複数の暗号鍵を対応付けるようにしてもよい。この場合、利用者が試用する暗号利用アプリケーションと、鍵ＩＤ及び暗号鍵（鍵値）との組合せを鍵データベースに記憶させるようにしてもよい。また、利用者が利用する複数の鍵ＩＤ及び暗号鍵（鍵値）と、利用者とを対応付ける設定ファイルをゲストＯＳごとに用意し、ゲストＯＳが起動するときに当該設定ファイルを読み出して、サービス認証処理（図７）において複数の鍵ＩＤ及び暗号鍵に対応するクレデンシャルの認証を一括で行うようにしてもよい。これにより、利用者は、暗号利用アプリケーションごとに異なる暗号鍵を用いてデータを扱うことができ、ゲストＯＳにおけるセキュリティを更に向上させることができる。
【００６５】
本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【００６６】
１…データセンター
２…管理マシン
３…仮想マシン
５…利用者端末
６…ネットワーク網
５０…ホストＯＳ
５１…暗復号制御部
５２…認証部
５３…鍵管理部
６０…ゲストＯＳ
６１…拡張暗号化提供部
６２…暗号利用アプリケーション
７０…登録サーバ
【図１】
0005564453.tif 000002
【図２】
0005564453.tif 000003
【図３】
0005564453.tif 000004
【図４】
0005564453.tif 000005
【図５】
0005564453.tif 000006
【図６】
0005564453.tif 000007
【図７】
0005564453.tif 000008
【図８】
0005564453.tif 000009
【図９】
0005564453.tif 000010