JP7004478B2 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

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

Info

Publication number
JP7004478B2
JP7004478B2 JP2021564898A JP2021564898A JP7004478B2 JP 7004478 B2 JP7004478 B2 JP 7004478B2 JP 2021564898 A JP2021564898 A JP 2021564898A JP 2021564898 A JP2021564898 A JP 2021564898A JP 7004478 B2 JP7004478 B2 JP 7004478B2
Authority
JP
Japan
Prior art keywords
hash value
rewriting
page data
guest
information processing
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
JP2021564898A
Other languages
English (en)
Other versions
JPWO2021161418A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2021161418A1 publication Critical patent/JPWO2021161418A1/ja
Application granted granted Critical
Publication of JP7004478B2 publication Critical patent/JP7004478B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Description

本開示は、改ざん検知に関する。
一般的に、OS(Operating System)の起動時にOSが改ざんされていないことを検証するためには、セキュアブートが有効である。セキュアブートでは、OSがストレージから読み出されるときにOSイメージから計算されたハッシュ値と、保存されている真正のハッシュ値とが一致するか否かが検証される。ハイパーバイザ環境におけるゲストOSの改ざん検知においても、セキュアブートが有効である。しかしながら、ゲストOSはベアメタル環境のOSと比べて複製及び再起動が頻繁に行われる。そのため、ゲストOSの再起動におけるセキュアブートの高速化が必要である。
単純に設計されたセキュアブートでは、前述のように、ストレージに格納されているOSイメージ全体のハッシュ値と、保存されている真正のハッシュ値との比較が行われ、OSイメージの真正性が検証される。このため、単純に設計されたセキュアブートでは、OS再起動時の遅延が大きいという課題がある。
この点、セキュアブートに要する時間を削減する技術として、特許文献1に開示の技術がある。
特許文献1では、OSの起動ごとに、OSを複数に区分した部分プログラムのうち、ハッシュ値の検証対象となる1つの部分プログラムが選択される。そして、選択された部分プログラムのハッシュ値が算出される。また、算出されたハッシュ値が、当該部分プログラムの正解のハッシュ値である正解部分ハッシュ値と一致するか否かが判定される。算出されたハッシュ値と正解部分ハッシュ値が一致する場合にシステムの起動処理が継続される。
特開2015-022521号公報
特許文献1の技術では、OS起動時に、ハッシュ値の算出対象として予め定められた1つの部分プログラムにのみハッシュ値を算出し、算出したハッシュ値と正解部分ハッシュ値とが比較される。
このため、一部のOSページデータに一時的な書換え処理が行われた後にOSの再起動が行われる場合は、特許文献1の技術では、ハッシュ値の算出対象のOSページデータについてのみハッシュ値を用いた検証のみが行われる。つまり、特許文献1の技術では、書換え処理が行われたOSページデータについてはハッシュ値を用いた検証は行われない。
従って、特許文献1の技術では、書換え処理が行われたOSページデータの元データ(ストレージ上のデータ)に改ざんが行われていたとしても、当該改ざんを検出することができないという課題がある。
本開示は、上記のような課題を解決することを主な目的の一つとしている。より具体的には、本開示は、書換え処理が行われたOSページデータの元データへの改ざんを検出できる構成を得ることを主な目的とする。
本開示に係る情報処理装置は、
OS(Operating System)の動作中にいずれかのOSページデータへの書換え処理が検知された場合に、書換え前のOSページデータである書換え前OSページデータのハッシュ値を書換え前ハッシュ値として算出する書換え前ハッシュ値算出部と、
前記OSの再起動時及び前記OSの再起動後のいずれかにストレージからメモリにロードされた前記書換え前OSページデータのハッシュ値を再起動ハッシュ値として算出する再起動ハッシュ値算出部と、
前記書換え前ハッシュ値と前記再起動ハッシュ値とを比較するハッシュ値比較部とを有する。
本開示によれば、書換え処理が行われたOSページデータの元データへの改ざんを検出することができる。
実施の形態1に係る情報処理装置のハードウェア構成例を示す図。 実施の形態1に係る情報処理装置の機能構成例を示す図。 実施の形態1に係るハッシュ値テーブルの例を示す図。 実施の形態1に係る情報処理装置の動作例を示すフローチャート。 実施の形態1に係る情報処理装置の動作例を示すフローチャート。 実施の形態2に係る情報処理装置の動作例を示すフローチャート。 実施の形態3に係る情報処理装置の機能構成例を示す図。 実施の形態3に係る情報処理装置の動作例を示すフローチャート。 実施の形態3に係る情報処理装置の動作例を示すフローチャート。
以下、実施の形態を図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
実施の形態1.
***構成の説明***
図1は、本実施の形態に係る情報処理装置100のハードウェア構成例を示す。
情報処理装置100はコンピュータである。
情報処理装置100の動作手順は、情報処理方法に相当する。また、情報処理装置100の動作を実現するプログラムは、情報処理プログラムに相当する。
図1に示すように、情報処理装置100はプロセッサ101、RAM(Random・Access・Memory)103、ストレージ104、I/O(Input/Output)装置105及びセキュア領域106を備える。プロセッサ101、RAM103、ストレージ104、I/O装置105及びセキュア領域106は、バス102で接続される。
プロセッサ101は、情報処理装置100の制御を行う演算装置である。プロセッサ101は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。情報処理装置100は、プロセッサ101を複数個備えていてもよい。
RAM103は、プロセッサ101上で実行中のプログラム、スタック、変数等が格納される揮発性記憶装置である。
ストレージ104は、プログラム、データ等が格納される不揮発性記憶装置である。ストレージ104は、例えば、SSD(Solid State Drive)、HDD(Hard Disk Drive)等である。
I/O装置105は、ディスプレイ、キーボード等の外部デバイスを接続するためのインタフェースである。
セキュア領域106は、暗号化で使用する鍵等の保存、暗号化処理の高速化等に使用されるデバイスである。セキュア領域106は、HSM(Hardware・Security・Module)等で実現される。
また、セキュア領域106は、SoC(System-on-a-Chip)の構成によって、バス102を経由せずにプロセッサ101と直接接続されていてもよい。
本実施の形態では、セキュア領域106は、セキュアブートのハッシュ値を格納するために使用される。本実施の形態のようにセキュア領域106がハッシュ値を格納する場合でも、セキュア領域106は、バス102に接続されていても、プロセッサ101に直接接続されていてもよい。
ここでは、プロセッサ101、RAM103、ストレージ104、I/O装置105、セキュア領域106がバス102で接続される例を示しているが、プロセッサ101、RAM103、ストレージ104、I/O装置105、セキュア領域106が他の接続形態によって接続されていてもよい。
図2は、本実施の形態に係る情報処理装置100の機能構成例を示す。
本実施の形態では、情報処理装置100は、ハイパーバイザ構成の仮想マシンである。
図2では、RAM103において、ハイパーバイザ203が動作している。ハイパーバイザ203には、起動処理部2031、ハッシュ値算出部2032及びハッシュ値比較部2033が含まれる。起動処理部2031、ハッシュ値算出部2032及びハッシュ値比較部2033の詳細は後述する。
また、RAM103では、ハイパーバイザ203の上でゲストOSカーネル202が動作する。RAM103では、ゲストOSカーネル202はメモリページであるゲストOSページデータとして管理される。図2では、ゲストOSカーネル202は、ゲストOSページデータ2021~2026として管理されている。
RAM103にロードされるゲストOSカーネル202はストレージ104にゲストOSカーネル201として格納されている。ストレージ104に格納されるゲストOSカーネル201とRAM上に展開されるゲストOSカーネル202は、記録方式やロード方式によって、データ形式が異なってもよい。
セキュア領域106のハッシュ値記憶領域204は、ストレージ104にあるゲストOSカーネル201全体の真正性を確認するためのハッシュ値を保存する。ハッシュ値記憶領域204に保存されているゲストOSカーネル201全体の真正性を確認するためのハッシュ値を、以下では照合ハッシュ値という。
ストレージ104のハッシュ値テーブル205は、RAM103に展開されているゲストOSカーネル202のOSページデータのハッシュ値(後述する書換え前ハッシュ値)とアドレスを保存する。
起動処理部2031は、ゲストOSカーネル202の起動処理及び再起動処理を行う。
なお、ゲストOSカーネル202の起動とは、いずれのゲストOSページデータにも書換え処理が行われずにゲストOSカーネル202の動作が終了した後のゲストOSカーネル202の起動をいう。一方、ゲストOSカーネル202の再起動とは、いずれかのゲストOSページデータに書換え処理が行われてゲストOSカーネル202のリブートが行われる場合のゲストOSカーネル202の起動をいう。
起動処理部2031は、置換え処理部に相当する。
ハッシュ値算出部2032は、ハッシュ値を算出する。ハッシュ値算出部2032は、暗号学的ハッシュ関数を適用してハッシュ値を算出する。
具体的には、ハッシュ値算出部2032は、ゲストOSカーネル202の起動時にゲストOSカーネル201全体のハッシュ値を起動ハッシュ値として算出する。
また、ハッシュ値算出部2032は、ゲストOSカーネル202の動作中にいずれかのゲストOSページデータへの書換え処理が検知された場合に、書換え前のゲストOSページデータである書換え前ゲストOSページデータのハッシュ値を書換え前ハッシュ値として算出する。
更に、ハッシュ値算出部2032は、ゲストOSカーネル202の再起動時に、ストレージ104からRAM103にロードされた書換え前ゲストOSページデータのハッシュ値を再起動ハッシュ値として算出する。
ハッシュ値算出部2032は、起動ハッシュ値算出部、書換え前ハッシュ値算出部、再起動ハッシュ値算出部に相当する。
ハッシュ値比較部2033は、ゲストOSカーネル202の起動時に、ハッシュ値算出部2032により算出された起動ハッシュ値と、ハッシュ値記憶領域204で保存されている照合ハッシュ値とを比較する。起動ハッシュ値と照合ハッシュ値とが一致する場合に、ハッシュ値比較部2033は、ゲストOSカーネル202の起動の継続を許可する。一方、起動ハッシュ値と照合ハッシュ値とが一致しない場合に、ハッシュ値比較部2033は、ゲストOSカーネル202の起動を停止する。
また、ハッシュ値比較部2033は、ゲストOSカーネル202の再起動時に、ハッシュ値算出部2032により算出された再起動ハッシュ値と、ハッシュ値テーブル205で保存されている書換え前ハッシュ値とを比較する。再起動ハッシュ値と書換え前ハッシュ値とが一致する場合に、ハッシュ値比較部2033は、ゲストOSカーネル202の再起動の継続を許可する。一方、再起動ハッシュ値と書換え前ハッシュ値とが一致しない場合に、ハッシュ値比較部2033は、ゲストOSカーネル202の再起動を停止する。
図3は、図2に示すハッシュ値テーブル205の例を示す。
ハッシュ値テーブル205では、書換え処理が行われたゲストOSページデータに対するエントリが管理されている。
具体的には、各エントリは、インデクス、メモリ上のアドレス、書換え前ハッシュ値で構成される。インデクスは、エントリの識別子である。メモリ上のアドレスは、書換え処理が行われたゲストOSページデータが存在するRAM103のアドレスである。書換え前ハッシュ値は、ハッシュ値算出部2032により生成された、書換え処理が行われたゲストOSページデータの書換え前ハッシュ値である。
なお、インデクスはデータベース一般に付与されるものである。ハッシュ値テーブル205では、インデクスはなくてもよい。
***動作の説明***
次に、本実施の形態に係る情報処理装置100の動作を説明する。
なお、情報処理装置100の動作の前提として、ゲストOSカーネル201イメージ全体に対して暗号学的ハッシュ関数を使用して求めたハッシュ値(照合ハッシュ値)がハッシュ値記憶領域204に格納されているものとする。この照合ハッシュ値は、開発環境でゲストOSカーネル201イメージを作成する時点で生成することも可能であるし、ゲストOSカーネル201イメージを情報処理装置100にデプロイする時点で計算することも可能である。
図4は、本実施の形態に係る情報処理装置100の動作例を示す。
より具体的には、図4は、情報処理装置100の起動から、ゲストOSページデータへの書換え処理(COW(Copy-On-Write))が発生し、リブートが発生するまでの動作フローを示す。
先ず、情報処理装置100が起動し(ステップS300)、ハイパーバイザ203が起動する(ステップS301)。つまり、ハイパーバイザ203を実現するプログラムがストレージ104からRAM103にロードされ、プロセッサ101によりハイパーバイザ203が起動される。
ハイパーバイザ203では、ハッシュ値算出部2032が、ゲストOSカーネル201イメージ全体のハッシュ値(起動ハッシュ値)を計算する(ステップS302)。
そして、ハッシュ値比較部2033が、ハッシュ値記憶領域204に格納してある照合ハッシュ値と起動ハッシュ値を比較する(ステップS303)。
起動ハッシュ値と照合ハッシュ値とが一致しない場合(ステップS303でFALSE)は、起動処理部2031は、予め定められたポリシにしたがって、起動処理を停止する等のセキュアブート処理を行う(ステップS304)。
一方、起動ハッシュ値と照合ハッシュ値とが一致する場合(ステップS303でTRUE)は、起動処理部2031は、ゲストOSカーネル202の起動処理を継続する(ステップS305)。
ゲストOSカーネル202が定常動作している間(ステップS306)に、いずれかのゲストOSページデータへの書換え(COW)が発生した場合(ステップS307でTRUE)に、ハイパーバイザ203が書換え(COW)の発生(ゲストOSページデータへのアクセス)をトラップする(ステップS308)。
そして、ハッシュ値算出部2032が、暗号学的ハッシュ関数を使用して、RAM103にある書換え前ゲストOSページデータの書換え前ハッシュ値を算出する(ステップS309)。
その後、ハッシュ値算出部2032が、ステップS309で算出した書換え前ハッシュ値と、書換え処理のあったゲストOSページデータのメモリアドレスを対応付けてハッシュ値テーブル205に格納する(ステップS310)。
なお、ステップS309及びS310と並行して、書換え対象のゲストOSページデータは書換えられている。
リブートが発生しなければ、ゲストOSページデータの書換えが発生するたびに、ステップS307~S310の手順が繰り返される。
なお、既に書換えが発生しているゲストOSページデータで更に書換えが発生した場合は、既に当該ゲストOSページデータの書換え前ハッシュ値がハッシュ値テーブル205に存在している。この場合に、ハッシュ値算出部2032は書換え前ハッシュ値の更新は行わない。つまり、ハッシュ値テーブル205に最初に登録された書換え前ハッシュ値が維持される。
リブートが発生したら(ステップS311でTRUE)、処理が図5に進む(ステップS312)。
図5は、リブート発生後の情報処理装置100の動作例を示す。
リブートが発生したら(ステップS311でTRUE)、起動処理部2031がゲストOSカーネル202の再起動処理を開始する(ステップS313)。なお、再起動の高速化のために、RAM103はクリアされない。すなわち、ゲストOSカーネル202の再起動時に、再起動前のゲストOSページデータ2021~2026がRAM103に残されている。つまり、書換え処理による書換え後のゲストOSページデータもRAM103に残されている。なお、書換え後のゲストOSページデータが格納されている領域をCOW領域という。図2のゲストOSページデータ2026に書換え処理が発生していた場合は、ゲストOSページデータ2026の領域がCOW領域である。
ハイパーバイザ203にCOW領域の再読み込みサポートがある場合、起動処理部2031が、COW領域の書換え前ゲストOSページデータをストレージ104からRAM103にロードする(ステップS314)。
図2のゲストOSページデータ2026に書換え処理が発生していた場合は、起動処理部2031は、ストレージ104から書換え前のゲストOSページデータ2026をロードする。
次に、ハッシュ値算出部2032が再起動ハッシュ値を算出する(ステップS315)。
前述の例では、ハッシュ値算出部2032は、ステップS314でロードされた書換え前のゲストOSページデータ2026のハッシュ値を再起動ハッシュ値として算出する。
次に、ハッシュ値比較部2033が、ハッシュ値テーブル205から書換え前ハッシュ値を読み込む(ステップS316)。
前述の例では、ハッシュ値算出部2032は、ゲストOSページデータ2026のメモリアドレスをキーにしてハッシュ値テーブル205を探索し、ゲストOSページデータ2026の書換え前ハッシュ値を取得する。
次に、ハッシュ値比較部2033が、ステップS315で算出された再起動ハッシュ値とステップS316で取得された書換え前ハッシュ値とを比較する(ステップS317)。
再起動ハッシュ値と書換え前ハッシュ値とが一致しない場合(ステップS317でFALSE)は、起動処理部2031は、ゲストOSカーネル202の再起動を停止する(ステップS321)。ステップS321では、例えば、ステップS304と同様の動作が行われる。
一方、再起動ハッシュ値と書換え前ハッシュ値とが一致する場合(ステップS317でTRUE)は、起動処理部2031は、COW領域の書換え後のゲストOSページデータを、ステップS314でロードされた書換え前のゲストOSページデータで置き換える(ステップS318)。
前述の例では、COW領域の書換え後のゲストOSページデータ2026を、書換え前のゲストOSページデータ2026で置き換える。
ステップS314以降の処理が行われていないCOW領域があれば(ステップS319でFALSE)、ステップS314以降の処理が行われる。
一方、ステップS314以降の処理が全てのCOW領域で行われていれば(ステップS319でTRUE)、起動処理部2031は、ゲストOSカーネル202の再起動処理を継続する(ステップS320)。
***実施の形態の効果の説明***
以上、本実施の形態では、ゲストOSの再起動時に、書換え処理が行われたゲストOSページデータについて、再起動ハッシュ値と書換え前ハッシュ値とが比較される。このため、本実施の形態によれば、書換え処理が行われたゲストOSページデータの元データ(ストレージ上のデータ)への改ざんを検出することができる。
また、本実施の形態では、ゲストOS再起動時に、ゲストOSの再起動前のゲストOSページデータがRAM103に残されている。本実施の形態では、再起動時のストレージからの読み込みは、書換え処理があったゲストOSページデータに限られるので、ゲストOSの再起動を高速に行うことができる。
また、本実施の形態では、ゲストOS再起動時に、書換え処理が行われたゲストOSページデータについてのみハッシュ値の比較が行われ、書換え処理が行われていないゲストOSページデータについてはハッシュ値の比較が行われない。この点からも、ゲストOSの再起動を高速に行うことができる。
例えば、特許文献1では、全てのゲストOSページデータの正解ハッシュ値を保存しておく必要がある。これに対して、本実施の形態では、書換え前ゲストOSページデータの書換え前ハッシュ値のみをストレージに保存すればよいので、ストレージ容量の削減が可能である。
実施の形態2.
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
ハイパーバイザ又はゲストOSの設計によっては、ゲストOSの起動時に全てのCOW領域の書換え前ゲストOSページデータがRAM103にロードされていなくてもよい場合がある。つまり、ゲストOSの再起動後に、書換え前ゲストOSページデータのロードが必要になったときにオンデマンドで書換え前ゲストOSページデータがロードされる場合もある。
本実施の形態では、このようなゲストOSの再起動後にオンデマンドで書換え前ゲストOSページデータがロードされる例を説明する。
図6は、本実施の形態に係る情報処理装置100の動作例を示す。
図6は、実施の形態1で説明した図5に対応する。すなわち、本実施の形態に係る情報処理装置100は、図4のステップS311においてリブートが発生した場合に、図6に示すフローを実施する。
図5では、ゲストOSの再起動処理中にステップS314にて起動処理部2031がCOW領域の書換え前ゲストOSページデータをストレージからロードする。一方で、図6では、ゲストOSの起動処理が完了して、ゲストOSが定常動作を行っている際に、COW領域の書換え前ゲストOSページデータをストレージからロードする。
ゲストOSカーネル202が定常動作を行っている際に(ステップS322)、COW領域へのアクセスが発生した場合に、ハイパーバイザ203がCOW領域へのアクセスをトラップする(ステップS323)。
次に、起動処理部2031が、COW領域の書換え前のゲストOSページデータをストレージ104からRAM103にロードする(ステップS314)。
次に、ハッシュ値算出部2032が再起動ハッシュ値を算出する(ステップS315)。
次に、ハッシュ値比較部2033が、ハッシュ値テーブル205から書換え前ハッシュ値を読み込む(ステップS316)。
次に、ハッシュ値比較部2033が、ステップS315で算出された再起動ハッシュ値とステップS316で取得された書換え前ハッシュ値とを比較する(ステップS317)。
再起動ハッシュ値と書換え前ハッシュ値とが一致しない場合(ステップS317でFALSE)は、起動処理部2031は、ゲストOSカーネル202を停止する(ステップS324)。ステップS324では、例えば、ステップS304と同様の動作が行われる。
一方、再起動ハッシュ値と書換え前ハッシュ値とが一致する場合(ステップS317でTRUE)は、起動処理部2031は、COW領域の書換え後のゲストOSページデータを、ステップS314で読み込まれた書換え前のゲストOSページデータで置き換える(ステップS318)。
その後、処理がステップS322に戻り、ゲストOSカーネル202の定常動作が継続する。
本実施の形態によれば、ゲストOSの再起動後にも、書換え処理が行われたゲストOSページデータの元データ(ストレージ上のデータ)への改ざんを検出することができる。また、本実施の形態でも、ゲストOSの再起動を高速に行うことができ、更に、ストレージ容量の削減も可能である。
実施の形態3.
本実施の形態では、主に実施の形態1、2との差異を説明する。
なお、以下で説明していない事項は、実施の形態1、2と同様である。
実施の形態1及び実施の形態2では、情報処理装置100がハイパーバイザによる仮想マシンである例を説明した。
本実施の形態では、情報処理装置100がブートローダとベアメタルのOSで実現されている。
***構成の説明***
図7は、本実施の形態に係る情報処理装置100の機能構成例を示す。なお、本実施の形態に係る情報処理装置100のハードウェア構成例は、図1と同様である。
ブートローダ208は、情報処理装置100の起動時にRAM103上にブートローダ209として展開されて動作する。
ブートローダ209には、起動処理部2091、ハッシュ値算出部2092及びハッシュ値比較部2093が含まれる。
起動処理部2091は、起動処理部2031と同様の処理を行う。起動処理部2091も置き換え処理部に相当する。
ハッシュ値算出部2092は、起動処理部2031と同様の処理を行う。ハッシュ値算出部2092も起動ハッシュ値算出部、書換え前ハッシュ値算出部及び再起動ハッシュ値算出部に相当する。
ハッシュ値比較部2093は、ハッシュ値比較部2033と同様の処理を行う。
なお、本実施の形態では、情報処理装置100がソフトリセットする際に、RAM103のデータが消去されないようになっているものとする。
本実施の形態では、OSカーネル210がRAM103にロードされ、OSカーネル211として動作する。OSカーネル211は、RAM103では、メモリページであるOSページデータとして管理される。図7では、OSカーネル211は、OSページデータ2111~2116として管理されている。
図7の他の要素は、図2に示したものと同様であるため、説明を省略する。
***動作の説明***
次に、本実施の形態に係る情報処理装置100の動作を説明する。
本実施の形態でも、情報処理装置100の動作の前提として、OSカーネル210イメージ全体に対して暗号学的ハッシュ関数を使用して求めたハッシュ値(照合ハッシュ値)がハッシュ値記憶領域204に格納されているものとする。この照合ハッシュ値は、開発環境でOSカーネル210イメージを作成する時点で生成することも可能であるし、OSカーネル210イメージを情報処理装置100にデプロイする時点で計算することも可能である。
図8は、本実施の形態に係る情報処理装置100の動作例を示す。
より具体的には、図4は、情報処理装置100の起動から、OSページデータへの書換え処理(COW)が発生し、リブートが発生するまでの動作フローを示す。
先ず、情報処理装置100が起動し(ステップS300)、ブートローダ208がRAM103にロードされ、ブートローダ209が実行される(ステップS400)。
次に、ハッシュ値算出部2092が、OSカーネルイ209メージ全体のハッシュ値(起動ハッシュ値)を計算する(ステップ401)。
そして、ハッシュ値比較部2093が、ハッシュ値記憶領域204に格納してある照合ハッシュ値と起動ハッシュ値を比較する(ステップS402)。
起動ハッシュ値と照合ハッシュ値とが一致しない場合(ステップS402でFALSE)は、起動処理部2091は、予め定められたポリシにしたがって、起動処理を停止する等のセキュアブート処理を行う(ステップS403)。
一方、起動ハッシュ値と照合ハッシュ値とが一致する場合(ステップS402でTRUE)は、起動処理部2091は、OSカーネル211の起動処理を継続する(ステップS404)。
そして、OSカーネル211は、一般的なOSが行っている外部からのトリガ入力を待つ状態に遷移する(ステップS405)。
OSカーネル211が定常動作している間(ステップS405)に、いずれかのOSページデータへの書換え(COW)が発生した場合(ステップS406でTRUE)に、MMU(Memory Management Unit)が書換え(COW)の発生(OSページデータへのアクセス)をトラップする(ステップS407)。
そして、ハッシュ値算出部2092が、暗号学的ハッシュ関数を使用して、RAM103にある書換え前のOSページデータの書換え前ハッシュ値を算出する(ステップS408)。
その後、ハッシュ値算出部2092が、ステップS408で算出した書換え前ハッシュ値と、書換え処理のあったOSページデータのメモリアドレスを対応付けてハッシュ値テーブル205に格納する(ステップS409)。
なお、ステップS408及びS409と並行して、書換え処理の対象のOSページデータは書換えられている。
リブートが発生しなければ、OSページデータの書換えが発生するたびに、ステップS406~S409の手順が繰り返される。
なお、既に書換えが発生しているOSページデータで更に書換えが発生した場合は、既に当該OSページデータの書換え前ハッシュ値がハッシュ値テーブル205に存在している。この場合に、ハッシュ値算出部2092は書換え前ハッシュ値の更新は行わない。つまり、ハッシュ値テーブル205に最初に登録された書換え前ハッシュ値が維持される。
リブートが発生したら(ステップS410でTRUE)、起動処理部2091がハッシュ値テーブル205にあるメモリアドレスに対するMMUのエントリを無効化し(ステップS411)、処理が図9に進む(ステップS412)。なお、図8では、ステップS405、ステップS406、ステップS410という順序の動作手順を記載しているが、OSカーネル211はイベントドリブンに実装されているため、ステップS405から直接ステップS410に遷移することも可能である。
図9は、リブート発生後の情報処理装置100の動作例を示す。
リブートが発生したら(ステップS410でTRUE)、起動処理部2091がOSカーネル211の再起動処理を開始する(ステップS413)。なお、再起動の高速化のために、RAM103はクリアされない。すなわち、OSカーネル211の再起動時に、再起動前のOSページデータ2111~2116がRAM103に残されている。つまり、書換え処理による書換え後のOSページデータもRAM103に残されている。
このため、RAM103に残されているOSページデータを用いて起動処理部2091は、OSカーネル211の起動を行う。
そして、OSカーネル211は定常動作に遷移する(ステップS414)。
OSカーネル211が定常動作を行っている際に、COW領域へのアクセスが発生した場合に、MMUがページフォルトでCOW領域へのアクセスをトラップする(ステップS415)。
次に、起動処理部2091が、COW領域の書換え前のOSページデータをストレージ104からRAM103にロードする(ステップS416)。
次に、ハッシュ値算出部2092が再起動ハッシュ値を算出する(ステップS417)。
次に、ハッシュ値比較部2093が、ハッシュ値テーブル205から書換え前ハッシュ値を読み込む(ステップS418)。
次に、ハッシュ値比較部2093が、ステップS417で算出された再起動ハッシュ値とステップS418で取得された書換え前ハッシュ値とを比較する(ステップS419)。
再起動ハッシュ値と書換え前ハッシュ値とが一致しない場合(ステップS419でFALSE)は、起動処理部2091は、OSカーネル211を停止する(ステップS421)。ステップS421では、例えば、ステップS403と同様の動作が行われる。
一方、再起動ハッシュ値と書換え前ハッシュ値とが一致する場合(ステップS419でTRUE)は、起動処理部2091は、COW領域の書換え後のOSページデータを、ステップS416でロードされた書換え前のゲストOSページデータで置き換え、またMMUのエントリを更新する(ステップS420)。
その後、処理がステップS414に戻り、OSカーネル211の定常動作が継続する。
***実施の形態の効果の説明***
以上、本実施の形態によれば、ブートローダとベアメタルのOSで実現されている情報処理装置100でも、書換え処理が行われたOSページデータの元データ(ストレージ上のデータ)への改ざんを検出することができる。
また、本実施の形態でもOSの再起動を高速に行うことができ、更に、ストレージ容量の削減が可能である。
以上、実施の形態1~3を説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
また、これらの実施の形態に記載された構成及び手順を必要に応じて変更してもよい。
***ハードウェア構成の補足説明***
最後に、情報処理装置100のハードウェア構成の補足説明を行う。
起動処理部2031、ハッシュ値算出部2032、ハッシュ値比較部2033、起動処理部2091、ハッシュ値算出部2092及びハッシュ値比較部2093の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、RAM103、ストレージ104、プロセッサ101内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、起動処理部2031、ハッシュ値算出部2032、ハッシュ値比較部2033、起動処理部2091、ハッシュ値算出部2092及びハッシュ値比較部2093の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、起動処理部2031、ハッシュ値算出部2032、ハッシュ値比較部2033、起動処理部2091、ハッシュ値算出部2092及びハッシュ値比較部2093の機能を実現するプログラムが格納された可搬記録媒体を流通させてもよい。
また、起動処理部2031、ハッシュ値算出部2032、ハッシュ値比較部2033、起動処理部2091、ハッシュ値算出部2092及びハッシュ値比較部2093の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、情報処理装置100は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
100 情報処理装置、101 プロセッサ、102 バス、103 RAM、104 ストレージ、105 I/O装置、106 セキュア領域、201 ゲストOSカーネル、202 ゲストOSカーネル、203 ハイパーバイザ、204 ハッシュ値記憶領域、205 ハッシュ値テーブル、208 ブートローダ、209 ブートローダ、210 OSカーネル、211 OSカーネル、2021 ゲストOSページデータ、2022 ゲストOSページデータ、2023 ゲストOSページデータ、2024 ゲストOSページデータ、2025 ゲストOSページデータ、2026 ゲストOSページデータ、2031 起動処理部、2032 ハッシュ値算出部、2033 ハッシュ値比較部、2111 OSページデータ、2112 OSページデータ、2113 OSページデータ、2114 OSページデータ、2115 OSページデータ、2116 OSページデータ、2091 起動処理部、2092 ハッシュ値算出部、2093 ハッシュ値比較部。

Claims (7)

  1. OS(Operating System)の動作中にいずれかのOSページデータへの書換え処理が検知された場合に、書換え前のOSページデータである書換え前OSページデータのハッシュ値を書換え前ハッシュ値として算出する書換え前ハッシュ値算出部と、
    前記OSの再起動時及び前記OSの再起動後のいずれかにストレージからメモリにロードされた前記書換え前OSページデータのハッシュ値を再起動ハッシュ値として算出する再起動ハッシュ値算出部と、
    前記書換え前ハッシュ値と前記再起動ハッシュ値とを比較するハッシュ値比較部とを有する情報処理装置。
  2. 前記OSの再起動時に、前記OSの再起動前のOSページデータが前記メモリに残されている請求項1に記載の情報処理装置。
  3. 前記情報処理装置は、更に、
    前記書換え前ハッシュ値と前記再起動ハッシュ値とが一致する場合に、前記メモリ内の、前記書換え処理による書換え後のOSページデータを、前記ストレージから前記メモリにロードされた前記書換え前OSページデータで置換える置換え処理部を有する請求項1に記載の情報処理装置。
  4. 前記情報処理装置は、更に、
    前記OSの起動時に、前記OS全体のハッシュ値を起動ハッシュ値として算出する起動ハッシュ値算出部を有し、
    前記ハッシュ値比較部は、
    前記起動ハッシュ値と、予め生成されている前記OS全体のハッシュ値である照合ハッシュ値とを比較し、前記起動ハッシュ値と前記照合ハッシュ値とが一致する場合に、前記OSの起動を許可する請求項1に記載の情報処理装置。
  5. 前記書換え前ハッシュ値算出部は、
    ハイパーバイザ上で動作するゲストOSの動作中にいずれかのゲストOSページデータへの書換え処理が検知された場合に、書換え前のゲストOSページデータである書換え前ゲストOSページデータのハッシュ値を前記書換え前ハッシュ値として算出し、
    前記再起動ハッシュ値算出部は、
    前記ゲストOSの再起動時及び前記ゲストOSの再起動後のいずれかに前記ストレージから前記メモリにロードされた前記書換え前ゲストOSページデータのハッシュ値を前記再起動ハッシュ値として算出する請求項1に記載の情報処理装置。
  6. OS(Operating System)の動作中にいずれかのOSページデータへの書換え処理が検知された場合に、書換え前ハッシュ値算出部が、書換え前のOSページデータである書換え前OSページデータのハッシュ値を書換え前ハッシュ値として算出し、
    再起動ハッシュ値算出部が、前記OSの再起動時及び前記OSの再起動後のいずれかにストレージからメモリにロードされた前記書換え前OSページデータのハッシュ値を再起動ハッシュ値として算出し、
    ハッシュ値比較部が、前記書換え前ハッシュ値と前記再起動ハッシュ値とを比較する情報処理方法。
  7. OS(Operating System)の動作中にいずれかのOSページデータへの書換え処理が検知された場合に、書換え前のOSページデータである書換え前OSページデータのハッシュ値を書換え前ハッシュ値として算出する書換え前ハッシュ値算出処理と、
    前記OSの再起動時及び前記OSの再起動後のいずれかにストレージからメモリにロードされた前記書換え前OSページデータのハッシュ値を再起動ハッシュ値として算出する再起動ハッシュ値算出処理と、
    前記書換え前ハッシュ値と前記再起動ハッシュ値とを比較するハッシュ値比較処理とをコンピュータに実行させる情報処理プログラム。
JP2021564898A 2020-02-12 2020-02-12 情報処理装置、情報処理方法及び情報処理プログラム Active JP7004478B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/005343 WO2021161418A1 (ja) 2020-02-12 2020-02-12 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JPWO2021161418A1 JPWO2021161418A1 (ja) 2021-08-19
JP7004478B2 true JP7004478B2 (ja) 2022-01-21

Family

ID=77292135

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021564898A Active JP7004478B2 (ja) 2020-02-12 2020-02-12 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (2)

Country Link
JP (1) JP7004478B2 (ja)
WO (1) WO2021161418A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004280284A (ja) 2003-03-13 2004-10-07 Sony Corp 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
JP2006053787A (ja) 2004-08-12 2006-02-23 Ntt Docomo Inc プログラム実行装置及びプログラム実行方法
US20170371388A1 (en) 2016-06-23 2017-12-28 Vmware, Inc. Efficient reboot of an operating system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004280284A (ja) 2003-03-13 2004-10-07 Sony Corp 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
JP2006053787A (ja) 2004-08-12 2006-02-23 Ntt Docomo Inc プログラム実行装置及びプログラム実行方法
US20170371388A1 (en) 2016-06-23 2017-12-28 Vmware, Inc. Efficient reboot of an operating system

Also Published As

Publication number Publication date
JPWO2021161418A1 (ja) 2021-08-19
WO2021161418A1 (ja) 2021-08-19

Similar Documents

Publication Publication Date Title
EP3764237B1 (en) System startup method and apparatus, electronic device and storage medium
US10073703B2 (en) Booting an operating system of a system using a read ahead technique
JP4916576B2 (ja) マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法
US9965270B2 (en) Updating computer firmware
KR101201186B1 (ko) 데이터를 기억 장치에 기록하기 위한 방법 및 시스템
JP5740573B2 (ja) 情報処理装置および情報処理方法
US7313683B2 (en) Computer system and method which boots from a bootup-memory-image stored in nonvolatile memory and copies data within an address range of predetermined width to main memory so that the system boots quickly after initialization
US9230116B2 (en) Technique for providing secure firmware
CN103718165B (zh) Bios闪存攻击保护和通知
US8943491B2 (en) Systems and methods for maintaining CRTM code
US20110213954A1 (en) Method and apparatus for generating minimum boot image
US7069445B2 (en) System and method for migration of a version of a bootable program
EP2726977A2 (en) Virtual machine image analysis
CN110162429B (zh) 系统修复方法、服务器及存储介质
JP5466645B2 (ja) 記憶装置、情報処理装置およびプログラム
JPWO2020075303A1 (ja) ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム
US8688933B2 (en) Firmware component modification
JP7004478B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US7080243B2 (en) Method and system for comparing firmware images
US6971003B1 (en) Method and apparatus for minimizing option ROM BIOS code
US20240095188A1 (en) Memory deduplication for encrypted virtual machines
US11734182B2 (en) Latency reduction for kernel same page merging
US20230342132A1 (en) Patch uninstallation using a signed operating system install package
US20230069169A1 (en) Information processing apparatus and control method of the same
CN115933966A (zh) 信息处理装置和用于控制信息处理装置的控制方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211101

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20211101

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: 20211207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211229

R150 Certificate of patent or registration of utility model

Ref document number: 7004478

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150