JP5829959B2 - 情報処理装置及びプログラム - Google Patents

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

Info

Publication number
JP5829959B2
JP5829959B2 JP2012066264A JP2012066264A JP5829959B2 JP 5829959 B2 JP5829959 B2 JP 5829959B2 JP 2012066264 A JP2012066264 A JP 2012066264A JP 2012066264 A JP2012066264 A JP 2012066264A JP 5829959 B2 JP5829959 B2 JP 5829959B2
Authority
JP
Japan
Prior art keywords
block
data
encryption
module
encrypted
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012066264A
Other languages
English (en)
Other versions
JP2013196650A (ja
Inventor
高廣 品川
高廣 品川
洋輔 忠鉢
洋輔 忠鉢
祐志 表
祐志 表
朋宏 北村
朋宏 北村
英樹 榮樂
英樹 榮樂
克弥 松原
克弥 松原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Tokyo NUC
Original Assignee
University of Tokyo NUC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Tokyo NUC filed Critical University of Tokyo NUC
Priority to JP2012066264A priority Critical patent/JP5829959B2/ja
Publication of JP2013196650A publication Critical patent/JP2013196650A/ja
Application granted granted Critical
Publication of JP5829959B2 publication Critical patent/JP5829959B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ハイパーバイザを備えた情報処理装置及びプログラムに関する。
近年では、セキュリティの向上等の目的でコンピュータを仮想化するハイパーバイザが広く利用されている。ハイパーバイザは、ハードウェアと、オペレーティングシステム(ゲスト・オペレーティングシステム)との間に介在し、オペレーティングシステムからのハードウェアに対するアクセスを管理する。
このようなハイパーバイザの一例として、セキュリティの向上のために仮想化の必要なハードウェア以外のハードウェア資源に対しては、オペレーティングシステムからのアクセスを素通し(パススルー)するシステムが、特許文献1に開示されている。
特開2009−223776号公報
セキュリティの向上の一つの例として、ハイパーバイザにより、ハードディスク等のディスクデバイスの内容を暗号化するものがある。このようなハイパーバイザでは、オペレーティングシステムからディスクデバイスへの読み出し指示を受けると、当該指示の対象となったデータ(ディスクデバイス上で暗号化されている)を読み出し、さらに復号してからオペレーティングシステムへ出力する。また、オペレーティングシステムからディスクデバイスへの書込みの指示を受けると、当該指示の対象となったデータを暗号化してからディスクデバイスへ書き込む。
しかしながら、従来このようなシステムを実現するには、一旦ディスクデバイスに格納されているデータを暗号化しておく必要があった。すなわち、オペレーティングシステムからディスクデバイスへのアクセスを一時的に禁止して、禁止している間にディスクデバイス内のデータを暗号化することが必要であった。このため、ディスクデバイスの暗号化は、セキュリティ上有効な方法であるにも関わらず、導入が進んでいなかった。
本発明は、上記実情に鑑みて為されたもので、オペレーティングシステムの運用と、ディスクデバイスの暗号化とを並行して行うことのできる情報処理装置を提供することを、その目的の一つとする。
上記従来例の問題点を解決するための本発明は、情報処理装置であって、オペレーティングシステムからストレージデバイスの指定ブロックへの書込み、または指定ブロックからの読み出し命令を受け入れて、当該命令に従い前記ストレージデバイスの指定されたブロックへのデータの書き込みまたは指定されたブロックからのデータの読み出しを実行するアクセス手段と、前記ストレージデバイスのブロックごとに、当該ブロックに格納されたデータが暗号化されているか否かを表す情報を記録する記録手段と、前記ストレージデバイスのブロックのうち、前記記録手段に記録された情報により暗号化されていないと判断されるブロックからデータを読み出す処理と、当該読み出したデータを暗号化する処理と、当該暗号化処理の結果を読み出し元のブロックへ書込む処理とを実行する暗号化処理手段と、前記暗号化処理手段の各処理の実行を制御する制御手段と、を含み、前記制御手段は、前記暗号化処理手段が暗号化処理のためにデータを読み出したブロックに対し、暗号化処理の結果を書込むまでの間に、前記オペレーティングシステムから当該ブロックへのデータの書き込み命令により、当該ブロックにデータが書込まれたときは、前記暗号化処理手段に対して当該ブロックに新たに書込まれたデータを再度読み出す処理を実行させることとしたものである。
またここで、前記暗号化処理手段の暗号化処理の結果を読み出し元のブロックへ書込む処理はさらに、当該ブロックについて前記記録手段に記録されている情報を、データが暗号化されていることを表す情報に書換える書換処理と、暗号化されたデータを当該ブロックに書込む処理とを含み、前記制御手段は、前記書換処理後に、前記アクセス手段がオペレーティングシステムからストレージデバイスの指定ブロックからの読み出し命令を受け入れたときには、前記暗号化処理手段が暗号化されたデータを当該ブロックに書込むまで、当該命令への応答を待機するよう前記アクセス手段を制御することとしてもよい。
さらに前記制御手段が、オペレーティングシステムと入出力デバイスとの間のアクセス頻度に基づいて、前記暗号化処理手段における処理の頻度を制御してもよい。
さらに前記制御手段が、前記ストレージデバイス上で前回アクセスしたブロック近傍のブロックのうちから暗号化処理の対象となるブロックを選択して、前記暗号化処理手段に当該選択したブロックの暗号化処理を行わせてもよい。
また、さらに前記制御手段が、暗号化処理の進捗に関する情報を前記ストレージデバイスのブロックのうち、オペレーティングシステムによって利用されていないブロックへ書込むこととしてもよい。
本発明の一態様に係るプログラムは、コンピュータを、オペレーティングシステムからストレージデバイスの指定ブロックへの書込み、または指定ブロックからの読み出し命令を受け入れて、当該命令に従い前記ストレージデバイスの指定されたブロックへのデータの書き込みまたは指定されたブロックからのデータの読み出しを実行するアクセス手段と、前記ストレージデバイスのブロックごとに、当該ブロックに格納されたデータが暗号化されているか否かを表す情報を記録する記録手段と、前記ストレージデバイスのブロックのうち、前記記録手段に記録された情報により暗号化されていないと判断されるブロックからデータを読み出す処理と、当該読み出したデータを暗号化する処理と、当該暗号化処理の結果を読み出し元のブロックへ書込む処理とを実行する暗号化処理手段と、前記暗号化処理手段の各処理の実行を制御する制御手段と、として機能させ、前記制御手段として機能させる際に、前記暗号化処理手段が暗号化処理のためにデータを読み出したブロックに対し、暗号化処理の結果を書込むまでの間に、前記オペレーティングシステムから当該ブロックへのデータの書き込み命令により、当該ブロックにデータが書込まれたときは、前記暗号化処理手段に対して当該ブロックに新たに書込まれたデータを再度読み出す処理を実行させることとしたものである。
本発明によると、オペレーティングシステムの運用と、ディスクデバイスの暗号化とを並行して行うことができる。
本発明の実施の形態に係る情報処理装置の構成例を表すブロック図である。 本発明の実施の形態に係る情報処理装置の一例を表す機能ブロック図である。 本発明の実施の形態に係る情報処理装置が保持する暗号記録情報の例を表す説明図である。 本発明の実施の形態に係る情報処理装置の動作の一例を表す流れ図である。 本発明の実施の形態に係る情報処理装置の動作の別の例を表す流れ図である。
本発明の実施の形態について図面を参照しながら説明する。本実施の形態の情報処理装置は、制御部11と、メモリ部12と、ストレージ部13と、操作部14と、表示部15と、通信部16と、を含んで構成される。
制御部11は、CPUなどのプログラム制御デバイスであり、メモリ部12または、ストレージ部13に格納されたプログラムに従って動作する。本実施の形態の制御部11は、このプログラムを実行することにより、機能的には図2に例示するように、ハイパーバイザ部20と、オペレーティングシステム30とを含む。本実施の形態の制御部11のハイパーバイザ部20は、オペレーティングシステム30からストレージデバイスであるストレージ部13の指定ブロックへの書込み、またはストレージ部13の指定ブロックからの読み出し命令を受け入れて、当該命令に従い前記ストレージデバイスの指定されたブロックへのデータの書き込みまたは指定されたブロックからのデータの読み出しを実行する。
またこのハイパーバイザ部20は、ストレージ部13のブロックごとに、当該ブロックに格納されたデータが暗号化されているか否かを表す情報を記録している。そしてハイパーバイザ部20は、ストレージ部13のブロックのうち、当該記録された情報により暗号化されていないと判断されるブロックからデータを読み出す処理と、当該読み出したデータを暗号化する処理と、当該暗号化処理の結果を読み出し元のブロックへ書込む処理とを含む暗号化処理を実行している。この制御部11の処理の内容は、後に詳しく述べる。
メモリ部12は、RAM(Random Access Memory)等のメモリデバイスを含む。このメモリ部12は、制御部11によって実行されるプログラムを少なくとも一時的に記憶する。また、このメモリ部12は、制御部11のワークメモリとしても動作する。
ストレージ部13は、ハードディスクドライブや、SSD(Solid State Drive)等のストレージデバイスであり、その記憶領域はブロック単位に分割されて管理される。本実施の形態においてこのストレージ部13には制御部11によって実行されるプログラムが格納される。このプログラムは、DVD−ROM(Digital Versatile Disc Read Only Memory)等のコンピュータ可読な記録媒体に格納されて提供され、このストレージ部13に複写して格納されたものであってもよい。またこのストレージ部13には、制御部11が実行するプログラムで利用するデータが格納される。
操作部14は、マウスやキーボード等であり、利用者の操作を受け入れて、当該操作の内容を制御部11に出力する。表示部15は、ディスプレイ等であり、制御部11から入力される指示に従って情報を表示出力する。通信部16は、ネットワークインタフェース等であり、ネットワーク等の通信手段を介して外部の機器との間でデータの送受信を行う。これらストレージ部13,操作部14,表示部15,通信部16は、入出力デバイスに相当する。
次に制御部11の動作について述べる。制御部11によりソフトウエア的に実現されるハイパーバイザ部20は、図2に例示するように、イベント監視部21と、フィルタモジュール22と、暗号化モジュール23と、制御モジュール24と、乗せ込み(ピギーバック)モジュール25とを含み、暗号化モジュール23がさらに、アクセスモジュール26と、記録モジュール27と、処理モジュール28とを含んで構成される。
イベント監視部21は、オペレーティングシステム30からハードウェアHW側のデバイスへの要求(I/Oコマンド等)を受け入れる。つまり、このイベント監視部21は、ストレージ部13,操作部14,表示部15,通信部16等のI/O(Input/Output)デバイスへの、オペレーティングシステム30のアクセス命令を受け入れる。また、これらデバイスからオペレーティングシステム30宛の情報を受け入れる。
このイベント監視部21は、受け入れたアクセス命令が、予め捕捉の必要ありとして定められたデバイスへの命令でなければ、当該アクセス命令を素通し(パススルー)して、当該命令の宛先であるデバイスへ出力する。本実施の一例では、ストレージ部13を捕捉の必要があるデバイスとして定めておく。この場合、例えばオペレーティングシステム30から表示部15へのアクセス命令は、そのまま素通しして、表示部15へ出力される。
またこのイベント監視部21は、デバイスからオペレーティングシステム30への情報を受け入れ、当該情報の受入元であるデバイスが、予め捕捉の必要ありとして定められたデバイスでなければ、当該情報を素通し(パススルー)して、オペレーティングシステム30に出力する。既に述べた例のように、ストレージ部13を捕捉の必要があるデバイスとして定めてある場合は、例えば操作部14から入力される情報は、そのまま素通ししてオペレーティングシステム30へ出力される。
イベント監視部21は、捕捉の必要ありとして定められたデバイス(ここではストレージ部13)へのアクセス命令がオペレーティングシステム30から受け入れられると、当該アクセス命令を乗せ込みモジュール25へ出力する。またこのイベント監視部21は、捕捉の必要ありとして定められたデバイスからオペレーティングシステム30への情報を受け入れると、当該情報をオペレーティングシステム30へ出力する。
フィルタモジュール22は、ストレージ部13の各ブロックが暗号化されているか否かを表す暗号記録情報を保持する。具体的に、この暗号記録情報は図3に例示するように、ブロックアドレスと、暗号化されているか否かを表すフラグ情報とを関連付けたものである。
このフィルタモジュール22は、オペレーティングシステム30からのアクセス命令を受け入れる。ここでアクセス命令には、書込み命令と、読み出し命令とがあるので、以下それぞれ区別して説明する。
フィルタモジュール22がオペレーティングシステム30から書込み命令を受け入れると、この書込み命令に含まれる、データの書込み先のブロックアドレスを抽出する。フィルタモジュール22は暗号記録情報を参照して、抽出したブロックアドレスに関連付けたフラグ情報により、当該ブロック内の情報が暗号化されているか否かを調べる。
フィルタモジュール22は、書込み先となったブロック内の情報が暗号化されていると判断したときには、オペレーティングシステム30から受け入れた書込み命令に含まれるデータの本体部分(格納先を表すブロックアドレス等を除く部分)を暗号化する。ここで暗号化の方法は特に制限されるものではないが、暗号化の前後でデータサイズの変化がない暗号化、例えばDES(Data Encryption Standard)暗号化や、Blowfish暗号化、AES(Advanced Encryption Standard)等を採用すればよい。そしてフィルタモジュール22は、データの本体部分を暗号化した書込み命令を、乗せ込みモジュール25に出力する。
一方、フィルタモジュール22は、書込み先となったブロック内の情報が暗号化されていないと判断すると、オペレーティングシステム30から受け入れた書込み命令をそのまま乗せ込みモジュール25に出力する。
またこのフィルタモジュール22がオペレーティングシステム30から読み出し命令を受け入れると、この読み出し命令に含まれる、データの読み出し先のブロックアドレスを抽出する。フィルタモジュール22は暗号記録情報を参照して、抽出したブロックアドレスに関連付けたフラグ情報により、当該ブロック内の情報が暗号化されているか否かを調べる。
フィルタモジュール22は、オペレーティングシステム30から受け入れた読み出し命令をそのまま乗せ込みモジュール25に出力する。またフィルタモジュール22は、乗せ込みモジュール25から読み出し命令に対する応答として、読み出し先として指定されたブロックアドレスに格納されていたデータを受け入れる。
フィルタモジュール22は、読み出し先となったブロック内の情報が暗号化されていると判断したときには、当該受け入れたデータを復号する。この復号は、先の暗号化に対応する復号処理によって行われる。そしてフィルタモジュール22は、当該復号したデータをオペレーティングシステム30へ出力する。またフィルタモジュール22は、読み出し先となったブロック内の情報が暗号化されていないと判断したときには、当該受け入れたデータをそのままオペレーティングシステム30へ出力する。
暗号化モジュール23は、制御モジュール24から入力される制御により、ストレージ部13の各ブロックを暗号化する処理を実行する。例えばこの暗号化モジュール23は、制御モジュール24から暗号化処理中のデータ(ディスクから読み出したデータや暗号化処理したデータ)を破棄するべき旨の指示を受けると、当該データを破棄して、ストレージ部13へ書込まれないように制御する。
暗号化モジュール23のアクセスモジュール26は、制御モジュール24から読み出し先のブロックを指定するブロックアドレスの入力を受けて、乗せ込みモジュール25に対して当該ブロックアドレスからのデータの読み出しを要求する。またこのアクセスモジュール26は、当該読み出し要求に応答して乗せ込みモジュール25が出力するデータを処理モジュール28に出力する。
アクセスモジュール26は、また、処理モジュール28において暗号化したデータを受け入れると、先に読み出し先としたブロックアドレスに対して、当該暗号化したデータを書込むよう、乗せ込みモジュール25に対して要求する。
なお、このアクセスモジュール26は、制御モジュール24からデータを破棄するべき旨の指示を受けると、乗せ込みモジュール25から受けたデータや、処理モジュール28から入力されたデータを破棄し、以降の処理を中断する。
記録モジュール27は、予め定めたタイミングで、フィルタモジュール22の暗号化記録情報のうち、暗号化したデータの書き込み先ブロックアドレスに関連するフラグ情報を、暗号化されていることを表す値に書き換える。この書換えのタイミングは、例えば処理モジュール28が暗号化の処理を終了し、アクセスモジュール26に出力したタイミングなどとすればよい。
処理モジュール28は、アクセスモジュール26が出力するデータを受け入れて、当該受け入れたデータを、フィルタモジュール22と同じ暗号化アルゴリズムで暗号化する。そしてこの処理モジュール28は、当該暗号化したデータをアクセスモジュール26に出力する。
制御モジュール24は、暗号化モジュール23の処理を制御する。この制御モジュール24の動作は後に述べる。乗せ込みモジュール25は、アクセス手段を実現するものであり、フィルタモジュール22から書込み命令を受け入れると、この書込み命令に従って、ストレージ部13の指定されたブロックに、指定されたデータを書込む。またこの乗せ込みモジュール25は、フィルタモジュール22から読み出し命令を受け入れると、この読み出し命令に従って、ストレージ部13の指定されたブロックからデータを読み出し、この読み出したデータをフィルタモジュール22に出力する。
またこの乗せ込みモジュール25は、アクセスモジュール26から要求を受け入れると、フィルタモジュール22から命令を受け入れておらず、かつ、フィルタモジュール22からの命令に基づく処理を行っていない間に、当該要求に基いた処理を行う。つまり当該要求が指定されたブロックからのデータの読み出しであれば、ストレージ部13の指定されたブロックからデータを読み出し、この読み出したデータをアクセスモジュール26に出力する。また、アクセスモジュール26から受けた要求がデータの書き込みであれば、フィルタモジュール22から命令を受け入れておらず、かつ、フィルタモジュール22からの命令に基づく処理を行っていない間に、当該要求に基いて、ストレージ部13の指定されたブロックに、要求に係るデータを書込む。
つまり、この乗せ込みモジュール25は、オペレーティングシステム30によるストレージ部13へのアクセスの空いたタイミングに、暗号化モジュール23からの要求に基づく処理を挿入する。従って、乗せ込みモジュール25の動作によると、同じブロックアドレスが示すブロックに対してオペレーティングシステム30と、暗号化モジュール23とが競合してアクセスすることがあり得ることになる。
このアクセスモジュール26による要求タイミングのパターンは、次の表に示す9通りに分類される。この表において、Rはオペレーティングシステム30による暗号化されていないブロックからのデータ読み出し、Wは、オペレーティングシステム30による暗号化されていないブロックへのデータ書込み、Reはオペレーティングシステム30による、暗号化されたブロックからのデータ読み出し、Weはオペレーティングシステム30による暗号化されたブロックへのデータ書込みを意味する。また、rは、暗号化モジュール23によるデータ読み出し(以下で説明するように、必ず暗号化されていないブロックからの読み出しとなる)、weは、暗号化モジュール23によって暗号化されたデータの書き込みを意味する。
Figure 0005829959
本実施の形態のアクセスパターンは、通常の競合とは異なり、暗号化モジュール23があるブロックに格納されていたデータに暗号化を施した暗号化データがあっても、当該ブロックが暗号化されていると暗号記録情報に記録された結果、オペレーティングシステム30側から当該ブロックへ書込むべき旨の指示があり、そのデータがフィルタモジュール22により暗号化されたならば、暗号化モジュール23が生成した暗号化データは破棄ないし上書きしてよいこととなっている。従って、上記のアクセスパターンのうち、パターン名称A,B,C1,またはC2のケースは問題が生じない。
一方、アクセスパターンが、パターン名称D1,D2,E1,E2,またはFのケースである場合は対処のための処理が必要となる。制御モジュール24が行う制御の一つは、この問題の生じるアクセスパターンにおける暗号化モジュール23の制御に係る処理である。
次にこの制御モジュール24の動作の例について述べる。本実施の形態における制御モジュール24は、暗号化モジュール23による暗号化処理の対象となるブロックのブロックアドレスを、対象ブロックアドレスとして、暗号化モジュール23に出力する。
本実施の形態の制御モジュール24は、ストレージ部13に含まれるブロックのうち、オペレーティングシステム30が自由に使用できるブロックについては、データが書込まれているか否かを判断する手段を有していない。しかしながら本実施の形態のハイパーバイザ部20は、オペレーティングシステム30によってどのブロックが利用されているかを記録する手段を有しなくてもよく、オペレーティングシステム30によって利用可能なブロックを順次、すべて暗号化処理すればよい。
本実施の形態のある例では制御モジュール24は、LBAによって示されるブロックを先頭から順次暗号化するように制御する。具体的に制御モジュール24は、オペレーティングシステム30によって自由に利用可能なブロックの先頭から順に、暗号化対象候補ブロックとする。制御モジュール24は、暗号化対象候補ブロックのブロックアドレスに関連付けて、フィルタモジュール22の暗号記録情報に格納されているフラグ情報を参照し、暗号化対象候補ブロック内のデータが既に暗号化されているか否かを調べる。ここで既に暗号化されていれば制御モジュール24は、暗号化対象候補ブロックの次のブロックを新たに暗号化対象候補ブロックとして、フィルタモジュール22の暗号記録情報に格納されているフラグ情報を参照する処理から繰返す。
一方、暗号化対象候補ブロック内のデータが暗号化されていないと判断されたならば、制御モジュール24は、暗号化モジュール23のアクセスモジュール26に対して、読み出し先のブロックとして、当該暗号化対象候補ブロックのブロックアドレスを出力して、暗号化の処理を開始させる。
さらにこの制御モジュール24は、乗せ込みモジュール25によるストレージ部13へのアクセスの内容と、アクセス時におけるフィルタモジュール22の暗号記録情報とを参照して、アクセスパターンを検出する。例えば乗せ込みモジュール25がフィルタモジュール22からの読み出し命令を処理する場合であって、当該アクセス先のブロックアドレスに関連付けられたフラグ情報が暗号化されていないことを表すものである場合は、上記アクセスパターンにおける「R」に相当すると判断する。
そして制御モジュール24は、暗号化処理手段としての暗号化モジュール23が暗号化処理のためにデータを読み出した(r)ブロックに対し、暗号化処理の結果を書込むより前(weより前)に、オペレーティングシステム30から当該ブロックへ、暗号化されていないデータの書き込み命令(W)があった場合、つまり当該ブロックに暗号化されていないデータが新たに書込まれたときは(上記アクセスパターンのD1またはD2に相当する場合)、暗号化モジュール23に対して、現在処理しているデータを破棄し、処理の対象としたブロックに新たに書込まれたデータを再度読み出す処理を実行させる。
また制御モジュール24は、暗号化処理手段としての暗号化モジュール23が暗号化処理のためにデータを読み出した(r)ブロックに対し、暗号化処理の結果を書込むより前に、オペレーティングシステム30から当該ブロックへのデータ書込み命令があったが、当該書込み命令があったタイミングでは既に、フィルタモジュール22の暗号記録情報において、当該ブロックのブロックアドレスに関連付けたフラグ情報が暗号化されていることを表すものとなっている場合(Weとなった場合:アクセスパターンにおけるE1,E2に対応する場合)は、暗号化モジュール23に対して暗号化後のデータを破棄して書込まないよう指示する。
さらに制御モジュール24は、暗号化処理手段としての暗号化モジュール23が暗号化処理のためにデータを読み出した(r)ブロックに対し、暗号化処理の結果を書込むより前に、オペレーティングシステム30から当該ブロックへのデータ読み出し命令があったが、当該読み出し命令があったタイミングで既に、フィルタモジュール22の暗号記録情報において、当該ブロックのブロックアドレスに関連付けたフラグ情報に対する記録モジュール27による書換えがなされており、暗号化されていることを表すものとなっている場合(Reとなるべき場合:アクセスパターンにおけるFに対応する場合)は、乗せ込みモジュール25に対して、暗号化モジュール23からの要求を優先的に処理するよう指示する。この場合、乗せ込みモジュール25は、暗号化モジュール23から書込み要求(we)を受けて、当該要求に応答して指定されたブロックへの暗号化データの書き込み後に、フィルタモジュール22から入力された読み出し命令に応答して、当該書込んだ暗号化データを読み出す処理を行う。
この制御モジュール24の動作によって、アクセスパターンFは、r→Re→weとなってしまうところ、r→we→Reとなるよう制御される。
本実施の形態は、以上の構成を備えており、次のように動作する。以下の例では、オペレーティングシステム30と、ハイパーバイザ部20の暗号化モジュール23とが同じブロックに対してアクセスする競合が発生する場合の動作について説明する。また以下の例ではブロックアドレスXのデータは、当初は暗号化されていないものとする。
図4に例示するように、オペレーティングシステム30が、ハイパーバイザ部20に対してブロックアドレスXのブロックに格納されたデータの読み出し命令を出力すると(S1)、ハイパーバイザ部20の乗せ込みモジュール25は、この命令に従って、ストレージ部13からデータを読み出す(R:S2)。次のタイミングで制御モジュール24が暗号化モジュール23に対してブロックアドレスXを出力し、このブロック内のデータの暗号化を指示する(S3)と、暗号化モジュール23は乗せ込みモジュール25に対してデータの読み出しを要求する(S4)。
乗せ込みモジュール25は、ステップS2で読み出したデータをフィルタモジュール22を介してオペレーティングシステム30へ出力する(S5)。この段階では、ブロックアドレスXのブロックは暗号化されていないので、フィルタモジュール22はデータをそのままオペレーティングシステム30へ出力する。
乗せ込みモジュール25は、ステップS5の完了後、ステップS4で受けた要求に応答して、ストレージ部13からブロックアドレスXのブロックのデータを読み出し(r:S6)、このデータを暗号化モジュール23に出力する(S7)。暗号化モジュール23では暗号化処理を行う(S8)。そして暗号化完了後に、記録モジュール27が暗号記録情報のブロックアドレスXに関連付けられたフラグ情報を、暗号化されていることを表す情報に書換える(S9)。
そして暗号化モジュール23は、暗号化後のデータをブロックアドレスXのブロックへ書込むよう、乗せ込みモジュール25に要求する(S10)。乗せ込みモジュール25は、オペレーティングシステム30からのアクセスがこの時点ではないので、この要求に応答してストレージ部13のブロックアドレスXのブロックへ、暗号化モジュール23が暗号化したデータを書込む(we:S11)。
このタイミングでフィルタモジュール22がオペレーティングシステム30からブロックアドレスXのブロックへのデータ書込み命令を受け入れる(S12)。このデータはステップS2やS6で読み出されたデータとは異なってもよい。フィルタモジュール22は、暗号記録情報から、ブロックアドレスXのブロックが暗号化されていると判断し、受け入れた書込み命令によって書込まれるべきデータを暗号化する(S13)。そして乗せ込みモジュール25がこの暗号化されたデータを、ストレージ部13のブロックアドレスXのブロックへ書込む(We:S14)。
この例では、暗号化モジュール23が暗号化したデータが、オペレーティングシステム30側から書込むよう命令されたデータを暗号化したもので上書きされるが、そもそもオペレーティングシステム30側のデータであるから、この動作にて問題がない。この例は、先に掲げた表のC1のアクセスパターンに対応する。
一方、図5に示す例では、オペレーティングシステム30が、ハイパーバイザ部20に対してブロックアドレスXのブロックに格納されたデータの読み出し命令を出力すると(S1)、ハイパーバイザ部20の乗せ込みモジュール25は、この命令に従って、ストレージ部13からデータを読み出す(R:S2)。次のタイミングで制御モジュール24が暗号化モジュール23に対してブロックアドレスXを出力し、このブロック内のデータの暗号化を指示する(S3)と、暗号化モジュール23は乗せ込みモジュール25に対してデータの読み出しを要求する(S4)。
乗せ込みモジュール25は、ステップS2で読み出したデータをフィルタモジュール22を介してオペレーティングシステム30へ出力する(S5)。この段階では、ブロックアドレスXのブロックは暗号化されていないので、フィルタモジュール22はデータをそのままオペレーティングシステム30へ出力する。
乗せ込みモジュール25は、ステップS5の完了後、ステップS4で受けた要求に応答して、ストレージ部13からブロックアドレスXのブロックのデータを読み出し(r:S6)、このデータを暗号化モジュール23に出力する(S7)。暗号化モジュール23では暗号化処理を開始する(S8)。
一方、このステップS7,S8の実行タイミングに前後して、フィルタモジュール22がオペレーティングシステム30からブロックアドレスXのブロックへのデータ書込み命令を受け入れる(S21)と、フィルタモジュール22は、暗号記録情報から、ブロックアドレスXのブロックが暗号化されていないと判断し、受け入れた書込み命令をそのまま乗せ込みモジュール25に出力する。そして乗せ込みモジュール25がこの命令に係るデータを、ストレージ部13のブロックアドレスXのブロックへ書込む(W:S22)。
制御モジュール24は、乗せ込みモジュール25の動作から、暗号化処理手段としての暗号化モジュール23が暗号化処理のためにデータを読み出した(r)ブロックに対し、暗号化処理の結果を書込むより前(weより前)に、オペレーティングシステム30から当該ブロックへ、暗号化されていないデータの書き込み命令(W)があったと判断する。
そして制御モジュール24は、暗号化モジュール23に対して、現在処理しているデータを破棄し、処理の対象としたブロックに新たに書込まれたデータを再度読み出す処理を行うよう指示する(S23)。この例は、先に掲げた表のD1のアクセスパターンに対応する。
[速度調整]
また本実施の形態の情報処理装置では、ハイパーバイザ部20の制御モジュール24は、オペレーティングシステム30と、入出力デバイス(ストレージ部13,操作部14,表示部15,及び通信部16のいずれか)との間のアクセス頻度に基づいて、暗号化モジュール23の処理頻度を制御してもよい。
本実施の形態の一例では、これら入出力デバイスへのアクセスが、割込み(インタラプト)によって行われる。この場合、ハイパーバイザ部20は、例えば200ミリ秒あたりの入出力デバイスに対する割込みの回数を調べる。
割込みは入出力デバイスへのアクセス以外にも発生するため、利用者がなにもしていないときにも200ミリ秒あたり100回弱の割込みが発生しているとする。しかしキーボードやマウスへの操作が行われると、割込みは150回程度となり、ファイルのダウンロードや、アプリケーションの起動、動画再生等では、200回程度の割込みが発生する。このうち、キーボードやマウスへの操作については利用者の体感応答速度に直接関係するので、制御モジュール24は、割込み頻度が、キーボードやマウスの操作が行われているときの頻度に相当する頻度以上となる場合、暗号化対象候補ブロックの出力を行わず、暗号化処理を一時的に保留する。これにより暗号化処理の頻度が制御される。
[スケジューリング]
またここまでの説明では、制御モジュール24は、オペレーティングシステム30によって自由に利用可能なブロックの先頭から順に、暗号化対象候補ブロックとすることとしていたが、本実施の形態はこれに限られない。
例えばハイパーバイザ部20は、前回アクセスされたブロック近傍の暗号化されていないブロックから順に、暗号化対象候補ブロックとしてもよい。ここで近傍とあるのは、前回アクセスされたブロックのブロックアドレスXからの距離(ブロックアドレスYとブロックアドレスXとの距離を例えば|Y−X|とする。ここで|*|は*の絶対値を意味する)が予め定めた範囲内であることとしてもよいし、あるいは前回アクセスされたブロックアドレスXからの距離が最も小さいブロックであって、暗号化されていないブロックであることとしてもよい。これによると、前回アクセスされたブロックに近いブロックが暗号化処理の対象となるので、ストレージ部13がハードディスクドライブである場合など、シークタイムが比較的大きいデバイスである場合に暗号化処理をより迅速に行わせるのに有効である。
[進捗状況の記録]
なお、ハイパーバイザ部20のフィルタモジュール22が保持する暗号記録情報は、ブロックごとの暗号化の進捗に関する情報として、情報処理装置が電源を切られた後でも保持しておくことが好ましい。そこで本実施の形態のハイパーバイザ部20は、オペレーティングシステム30からシャットダウンに関わる指示(デバイスへの停止コマンド、電源断のコマンド、再起動のコマンド等)が入力されると、ハイパーバイザ部20は、フィルタモジュール22の保持する暗号記録情報をストレージ部13のうち、オペレーティングシステム30によって利用されない部分(例えばパーティションとパーティションとの間の空き領域等)に格納する。
なお、オペレーティングシステム30によって利用されない部分が存在しない場合は、オペレーティングシステム30が利用しているブロックの一部(複数のブロック)内のデータに対して、圧縮処理を実行し、当該ブロックにわたって圧縮処理後のデータを記録したのち、その圧縮処理によって空いた部分に、暗号記録情報を記録してもよい。
ハイパーバイザ部20は、情報処理装置が起動されたときに、予め指定された記憶領域から暗号記録情報を読み出す。例えばパーティションとパーティションとの間の空き領域に格納した場合は、当該パーティションとパーティションとの間の空き領域から暗号記録情報を読み出して、フィルタモジュール22がこれを保持し、ハイパーバイザ部20としての処理を開始し、また暗号化の処理を継続する。
またブロック内のデータを圧縮し、その圧縮により得られた空き領域に暗号記録情報を保持させた場合は、当該空き領域から暗号記録情報を読み出してフィルタモジュール22がこれをリストアする一方、圧縮したデータを伸長してもとの(圧縮前の)ブロックごとのデータを再生する。そして再生したブロックごとのデータを、元のブロックに書き戻してから、ハイパーバイザ部20としての処理を開始し、また暗号化の処理を継続する。
[暗号化処理完了後の動作]
なお、暗号化の処理が終了し、ストレージ部13のすべてのブロックが暗号化された後は、フィルタモジュール22において暗号化されているか否かを判断する必要はなくなる。そこでハイパーバイザ部20は、暗号化の処理が終了すると、その後のストレージ部13へのアクセスにおいて、フィルタモジュール22での暗号化判定を働かないように制御する。
この暗号化判定が働かないように制御されたフィルタモジュール22は、暗号記録情報を参照することなく、オペレーティングシステム30から受け入れた書き込み命令に含まれるデータを暗号化して、格納先のブロックに格納する。またこの暗号化判定が働かないように制御されたフィルタモジュール22は、指定されたブロックから読み出したデータを(暗号記録情報を参照することなく)復号して、オペレーティングシステム30へ出力する。
11 制御部、12 メモリ部、13 ストレージ部、14 操作部、15 表示部、16 通信部、20 ハイパーバイザ部、21 イベント監視部、22 フィルタモジュール、23 暗号化モジュール、24 制御モジュール、25 乗せ込みモジュール、26 アクセスモジュール、27 記録モジュール、28 処理モジュール、30 オペレーティングシステム。

Claims (6)

  1. オペレーティングシステムからストレージデバイスの指定ブロックへの書込み、または指定ブロックからの読み出し命令を受け入れて、当該命令に従い前記ストレージデバイスの指定されたブロックへのデータの書き込みまたは指定されたブロックからのデータの読み出しを実行するアクセス手段と、
    前記ストレージデバイスのブロックごとに、当該ブロックに格納されたデータが暗号化されているか否かを表す情報を記録する記録手段と、
    前記ストレージデバイスのブロックのうち、前記記録手段に記録された情報により暗号化されていないと判断されるブロックからデータを読み出す処理と、当該読み出したデータを暗号化する処理と、当該暗号化処理の結果を読み出し元のブロックへ書込む処理とを実行する暗号化処理手段と、
    前記暗号化処理手段の各処理の実行を制御する制御手段と、
    を含み、
    前記制御手段は、前記暗号化処理手段が暗号化処理のためにデータを読み出したブロックに対し、暗号化処理の結果を書込むまでの間に、前記オペレーティングシステムから当該ブロックへのデータの書き込み命令により、当該ブロックにデータが書込まれたときは、前記暗号化処理手段に対して当該ブロックに新たに書込まれたデータを再度読み出す処理を実行させる情報処理装置。
  2. 請求項1記載の情報処理装置において、
    前記暗号化処理手段の暗号化処理の結果を読み出し元のブロックへ書込む処理はさらに、当該ブロックについて前記記録手段に記録されている情報を、データが暗号化されていることを表す情報に書換える書換処理と、暗号化されたデータを当該ブロックに書込む処理とを含み、
    前記制御手段は、前記書換処理後に、前記アクセス手段がオペレーティングシステムからストレージデバイスの指定ブロックからの読み出し命令を受け入れたときには、前記暗号化処理手段が暗号化されたデータを当該ブロックに書込むまで、当該命令への応答を待機するよう前記アクセス手段を制御する情報処理装置。
  3. 請求項1または2記載の情報処理装置において、
    前記制御手段が、オペレーティングシステムと入出力デバイスとの間のアクセス頻度に基づいて、前記暗号化処理手段における処理の頻度を制御する情報処理装置。
  4. 請求項1から3のいずれか一項に記載の情報処理装置において、
    前記制御手段が、前記ストレージデバイス上で前回アクセスしたブロック近傍のブロックのうちから暗号化処理の対象となるブロックを選択して、前記暗号化処理手段に当該選択したブロックの暗号化処理を行わせる情報処理装置。
  5. 請求項1から4のいずれか一項に記載の情報処理装置であって、
    前記制御手段が、暗号化処理の進捗に関する情報を前記ストレージデバイスのブロックのうち、オペレーティングシステムによって利用されていないブロックへ書込む情報処理装置。
  6. コンピュータを、
    オペレーティングシステムからストレージデバイスの指定ブロックへの書込み、または指定ブロックからの読み出し命令を受け入れて、当該命令に従い前記ストレージデバイスの指定されたブロックへのデータの書き込みまたは指定されたブロックからのデータの読み出しを実行するアクセス手段と、
    前記ストレージデバイスのブロックごとに、当該ブロックに格納されたデータが暗号化されているか否かを表す情報を記録する記録手段と、
    前記ストレージデバイスのブロックのうち、前記記録手段に記録された情報により暗号化されていないと判断されるブロックからデータを読み出す処理と、当該読み出したデータを暗号化する処理と、当該暗号化処理の結果を読み出し元のブロックへ書込む処理とを実行する暗号化処理手段と、
    前記暗号化処理手段の各処理の実行を制御する制御手段と、
    として機能させ、
    前記制御手段として機能させる際に、前記暗号化処理手段が暗号化処理のためにデータを読み出したブロックに対し、暗号化処理の結果を書込むまでの間に、前記オペレーティングシステムから当該ブロックへのデータの書き込み命令により、当該ブロックにデータが書込まれたときは、前記暗号化処理手段に対して当該ブロックに新たに書込まれたデータを再度読み出す処理を実行させるプログラム。
JP2012066264A 2012-03-22 2012-03-22 情報処理装置及びプログラム Active JP5829959B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012066264A JP5829959B2 (ja) 2012-03-22 2012-03-22 情報処理装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012066264A JP5829959B2 (ja) 2012-03-22 2012-03-22 情報処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2013196650A JP2013196650A (ja) 2013-09-30
JP5829959B2 true JP5829959B2 (ja) 2015-12-09

Family

ID=49395444

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012066264A Active JP5829959B2 (ja) 2012-03-22 2012-03-22 情報処理装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5829959B2 (ja)

Also Published As

Publication number Publication date
JP2013196650A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
JP6289029B2 (ja) 保安コンテンツを処理するシステムオンチップ及びそれを含むモバイル装置
KR101288700B1 (ko) 멀티 오퍼레이팅 시스템(os) 기동 장치, 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법
JP4620158B2 (ja) コンテンツ保護装置およびコンテンツ保護方法
KR20130101147A (ko) 인플레이스 암호화 시스템 및 방법
JP5574858B2 (ja) 情報処理装置、情報処理装置の制御方法、プログラム
KR20070008653A (ko) 실행장치
US20130166922A1 (en) Method and system for frame buffer protection
JP2020528608A5 (ja)
US10204234B2 (en) Image processing apparatus capable of efficiently deleting stored data, method of controlling the same, and storage medium
CN108229190B (zh) 透明加解密的控制方法、装置、程序、存储介质和电子设备
JP4895990B2 (ja) 画像処理装置及びデータ消去方法
JP6189267B2 (ja) 情報処理装置、方法およびプログラム
JP5374751B2 (ja) メモリ管理方法
JP5829959B2 (ja) 情報処理装置及びプログラム
JP2001318768A (ja) エンタテインメント装置及びその部品、エンタテインメント装置によるディジタル情報のローディング方法、コンピュータプログラム
JP2007122391A (ja) 暗号化プログラムを復号して実行する情報処理装置及びメモリ管理方法
JP5481354B2 (ja) 情報処理装置
JP2009175880A (ja) 情報処理装置及びプログラム
JP2007026105A (ja) ファイル管理装置、ファイル管理方法、及びファイル管理プログラム
WO2016095506A1 (zh) 密文数据解密方法、系统及计算机存储介质
WO2011096073A1 (ja) メモリ管理方法
JP6458866B2 (ja) 情報処理装置、復号化方法及び復号化プログラム
JP2020115250A (ja) ストレージ装置およびコマンド処理方法
US20160357470A1 (en) Computer readable medium, information processing apparatus, and method
JP5361945B2 (ja) 電子機器および情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150324

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150324

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150915

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151023

R150 Certificate of patent or registration of utility model

Ref document number: 5829959

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250