(57)【要約】【課題】マルチＯＳの動作環境におけるコンピュータのセキュリティを強化する。【解決手段】プライマリＯＳのメモリ・イメージがアクティブ状態でセカンダリＯＳのメモリ・イメージがノンアクティブ状態である。プライマリＯＳからセカンダリＯＳに切り換える際に、ランタイム・イメージ１６４を作成してダイジェストＰを計算し暗号化する（Ｃ）。つぎにセカンダリＯＳからプライマリＯＳに切り換える際に、それまで停止していたランタイム・イメージのダイジェストを計算し、復号したダイジェストＰと計算したダイジェストを比較して一致するときだけプライマリＯＳに切り換える。【選択図】図６
2016021220.tif 000002
【特許請求の範囲】
【請求項１】
複数の動作環境のいずれかで動作することが可能なコンピュータにおいて、退避ファイルの一貫性を検証する方法であって、
第１の動作環境から第２の動作環境への切換操作に応じて前記第１の動作環境を構成する第１のメモリ・イメージの少なくとも一部の同一性の検証が可能な代表ファイルを暗号化するステップと、
前記第１のメモリ・イメージを所定の場所に退避するステップと、
前記第２の動作環境から前記第１の動作環境への切換操作に応じて前記暗号化した代表ファイルを復号するステップと、
前記退避した第１のメモリ・イメージから抽出した代表ファイルと前記復号した代表ファイルを比較するステップと
を有する方法。
【請求項２】
前記代表ファイルが、前記第１のメモリ・イメージの少なくとも一部をハッシュして作成したダイジェストである請求項１に記載の方法。
【請求項３】
前記暗号化するステップと前記退避するステップと前記復号するステップと前記比較するステップを、システム・ファームウェアが前記コンピュータに実現させる請求項１に記載の方法。
【請求項４】
前記暗号化するステップが、ＳＭＲＡＭ領域に記憶した暗号鍵を利用するステップを含む請求項３に記載の方法。
【請求項５】
前記暗号化するステップが、
公開鍵と暗号化した秘密鍵を作成するステップと、
復号した秘密鍵をＳＭＲＡＭ領域に記憶するステップと
を含む請求項３に記載の方法。
【請求項６】
前記秘密鍵の暗号化と復号をセキュリティ・チップ（ＴＰＭ）がＰＣＲ［０］とＰＣＲ［４］が記憶するＰＣＲ値に関連づけて行う請求項５に記載の方法。
【請求項７】
前記暗号化するステップと前記復号するステップを、前記システム・ファームウェアだけがアクセスできる不揮発性メモリに格納した共通鍵を利用するステップを含む請求項３に記載の方法。
【請求項８】
前記所定の場所が、システム・メモリの前記第２の動作環境が動作する物理アドレス空間から区分したアドレス空間である請求項１に記載の方法。
【請求項９】
前記所定の場所が、前記第１の動作環境および前記第２の動作環境のブート・イメージを格納するディスク・ドライブである請求項１に記載の方法。
【請求項１０】
前記第２の動作環境から前記第１の動作環境への切換操作に応じて前記第２の動作環境を構成する第２のメモリ・イメージの少なくとも一部の同一性の検証が可能な代表ファイルを暗号化するステップと、
前記第２のメモリ・イメージを所定の場所に退避するステップと、
前記第１の動作環境から前記第２の動作環境への切換操作に応じて前記暗号化した代表ファイルを復号するステップと、
前記退避した第２のメモリ・イメージから抽出した代表ファイルと前記復号した代表ファイルを比較するステップと
を有する請求項１に記載の方法。
【請求項１１】
複数の動作環境のいずれかで動作することが可能なコンピュータのセキュリティ機能を強化する方法であって、
退避操作に対応するメモリ・イメージから暗号化した代表ファイルを作成するステップと、
前記メモリ・イメージの記憶を前記システム・メモリに維持して前記動作環境をノンアクティブ状態に遷移させるステップと、
レジューム操作に応じて前記動作環境がアクティブ状態に遷移する前に前記暗号化した代表ファイルを復号するステップと、
前記復号した代表ファイルとノンアクティブ状態で維持していた前記メモリ・イメージから抽出した代表ファイルが一致しないときに前記レジュームを停止するステップと
を有する方法。
【請求項１２】
前記暗号化した代表ファイルを作成するステップが、前記切換操作に応じてシステム・ファームウェアの実行環境に遷移するステップを含み、
前記システム・ファームウェアが前記代表ファイルを暗号化する機能と前記代表ファイルを復号する機能を前記コンピュータに実現させるステップを有する請求項１に記載の方法。
【請求項１３】
前記システム・ファームウェアが前記復号した代表ファイルとノンアクティブ状態で維持していた前記メモリ・イメージから抽出した代表ファイルを比較する機能を前記コンピュータに実現させるステップを有する請求項１２に記載の方法。
【請求項１４】
複数の動作環境のいずれかで動作することが可能なコンピュータのセキュリティ機能を強化する方法であって、
退避操作に対応するメモリ・イメージから暗号化した代表ファイルを作成するステップと、
前記メモリ・イメージを前記不揮発性記憶装置に退避して前記動作環境をノンアクティブ状態に遷移させるステップと、
レジューム操作に応じて前記動作環境をレジュームする前に前記暗号化した代表ファイルを復号するステップと、
前記復号した代表ファイルと退避した状態で維持していた前記メモリ・イメージから抽出した代表ファイルが一致しないときに前記レジュームを停止するステップと
を有する方法。
【請求項１５】
第１の動作環境または第２の動作環境のいずれかで動作することが可能なコンピュータに、
前記第１の動作環境から前記第２の動作環境への切換操作に応じて前記システム・メモリが記憶する前記第１の動作環境のランタイム・イメージから抽出した代表ファイルを暗号化する機能と、
前記ランタイム・イメージを所定の場所に退避する機能と、
前記第２の動作環境から前記第１の動作環境への切換操作に応じて前記暗号化した代表ファイルを復号する機能と、
前記退避したランタイム・イメージから抽出した代表ファイルと前記復号した代表ファイルを比較する機能と
を実現させるためのコンピュータ・プログラム。
【請求項１６】
各機能をプロセッサがリセットされてからオペレーティング・システムが動作する前に実行させる請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
複数の動作環境のいずれかで動作することが可能なコンピュータであって、
プロセッサと、
前記プロセッサが実行するプログラムを記憶する揮発性メモリと、
ブート可能な複数のオペレーティング・システムを格納するディスク・ドライブと、
切換操作をするためのユーザ・インターフェースと、
第１の動作環境から第２の動作環境への切換操作に応じて前記揮発性メモリが記憶するメモリ・イメージから抽出した代表ファイルを暗号化する暗号化部と、
前記メモリ・イメージを所定の場所に退避する退避部と、
前記第２の動作環境から前記第１の動作環境への切換操作に応じて前記暗号化した代表ファイルを復号する復号部と、
前記退避したメモリ・イメージから抽出した代表ファイルと前記復号した代表ファイルを比較する比較部と
を有するコンピュータ。
【請求項１８】
前記暗号化部と前記復号部を構成するモジュールを含むシステム・ファームウェアを格納した不揮発性メモリを有する請求項１７に記載のコンピュータ。
【請求項１９】
前記システム・ファームウェアからの要求でＰＣＲ［０］とＰＣＲ［４］が記憶するＰＣＲ値を使って前記代表ファイルを暗号化するキーの暗号化および復号をするセキュリティ・チップ（ＴＰＭ）を有する請求項１８に記載のコンピュータ。
【請求項２０】
前記所定の場所が、前記ディスク・ドライブとは異なる不揮発性の記憶装置である請求項１７に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのセキュリティを強化する技術に関し、さらには、複数の動作環境で動作するコンピュータにおいて停止した動作環境が作成した退避ファイルの一貫性を検証する技術に関する。
【背景技術】
【０００２】
コンピュータは、搭載するソフトウェアの改変やマルウェアの埋め込みなどのさまざまな攻撃に晒されるため、攻撃を受けたときにはそれを検出して、適切な対応をとる必要がある。コンピュータの電源が起動したときに、ＢＩＯＳ、ブート・ローダ、オペレーティング・システム（ＯＳ）、およびアプリケーションといった順番でブート・プログラムがロードされる。これらのブート・プログラムがすべて製造当初から改変されておらず、かつ、ロードの順番も変更されていなければ、少なくともブートが完了した時点での動作環境は安全であるといえる。
【０００３】
ブート・プログラムの改変およびブートの順序を検証する方法に、ＴＣＧ（Trusted Computing Group）が使用を策定したＴＰＭ（Trusted Platform Module）と呼ばれるセキュリティ・チップを信頼の基礎とした、Trust Bootという技術が知られている。Trust Bootでは、物理的に書き換えの保護がされているＣＲＴＭ（Core Root of Trust Measurement）というコードを起点として、順番につぎにブートするコードについて計算したハッシュ値をＴＰＭが搭載するＰＣＲ（Platform Configuration Register）に記録していく。
【０００４】
ＰＣＲはコンピュータの電源を再起動するまでリセットすることはできない。プログラムは、ＰＣＲが記録するＰＣＲ値を任意の値に書き替えることはできないが、必要なときに読み出すことができる。あるプログラムについて任意のタイミングで実行する際に計算したＰＣＲ値が、ＰＣＲが記録しているＰＣＲ値に一致すれば、当該プログラムはＰＣＲにＰＣＲ値が書き込まれた時点から変更がないことを確認することができる。
【０００５】
また、ＵＥＦＩ（Unified Extensible Firmware Interface）フォーラムは、ＢＩＯＳに代わってまたはＢＩＯＳに加えて使用する新しいシステム・ファームウェア（ＵＥＦＩファームウェア）の仕様を策定した。ＵＥＦＩファームウェアは、Secure BootというＯＳの改変を検出したときにブートを停止する安全対策をサポートする。Secure Bootでは起動時にＵＥＦＩファームウェアが、起動ディスクが格納するＯＳをロードするためのブート・ローダにハンドオフして制御を渡す。
【０００６】
ブート・ローダは、ＯＳのブート・イメージのシステム・メモリへのロードをＵＥＦＩファームウェアに依頼する。ＵＥＦＩファームウェアは、ブート・ローダに付されたディジタル証明を製造者の公開鍵で復号し、ブート・ローダから計算したその時点のハッシュ値と比較して一致しない場合はブートを停止する。ＯＳを起動ディスクに最初に格納したときのブート・ローダとそれ以降のブート時におけるブート・ローダの同一性が完全に保持されていれば、ブート先を誘導するマルウェアの埋め込みがなく正規のＯＳをロードしているといえる。
【０００７】
特許文献１は、ＯＳがハイバネーション・ファイルを暗号化して、レジュームのときに復号することで、ハイバネーション・ファイルを安全に維持する発明を開示する。特許文献２は、複数のＯＳを搭載したコンピュータにおいて動作するＯＳを切り換える発明を開示する。同文献には、起動時に複数のＯＳのブート・ローダに順次アクセスして、システムに共存するすべてのＯＳを、割り当てられたメイン・メモリの論理メモリ・ブロックにロードすることが記載されている。また動作するＯＳを切り換える際にサスペンドすることが記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第８３７５４４０号明細書
【特許文献２】特開２００１−２５６０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
搭載する複数のＯＳのいずれかに切り換えて動作するマルチＯＳの動作環境を実現する１つの方法では、選択したいずれかのＯＳをブートして実行し、切り換えるときは当該ＯＳをパワー・オフ状態にしてから別のＯＳをブートすることができる。しかし、この方法は動作環境の切り換えに時間を費やす。これに対して特許文献２のように分割した論理メモリ・ブロックに同時に複数のＯＳをロードしておき、停止するＯＳのメモリ・イメージを論理メモリ・ブロックに残しておけば短時間で切り換えができるため便利である。
【００１０】
あるいは、システム・メモリを論理メモリ・ブロックに分けないで、動作を停止するＯＳのメモリ・イメージをハイバネーション・ファイルのように不揮発性メモリに退避して、一方のＯＳから他方のＯＳへレジュームと退避を繰り返して切り換えることでもパワー・オフ状態を経由して切り換えるよりも切り換え時間を短縮することができる。さらに、同一のハードウェア環境の上に仮想環境を構築して複数のＯＳを動作させて短時間で切り換えることもできる。以後、パワー・オフ状態を経由しない動作環境の切り換えを高速切換ということにする。
【００１１】
高速切換を行うと、システム・メモリまたはディスク・ドライブのような不揮発性記憶装置には、一方のＯＳが動作している間、動作を停止したレジューム可能なＯＳのメモリ・イメージ（退避ファイル）が残っている。先のTrust BootやSecure Bootでは、ブートが完了した時点でのソフトウェアの一貫性は保証できる。しかしそれ以後は、動作しているＯＳは自らのメモリ空間に存在するメモリ・イメージを、自身でまたはウィルス検知プログラムなどで管理して保護することができるが、動作を停止したシステム・メモリまたはディスク・ドライブなどの異なるメモリ空間に存在する退避ファイルを同様の方法で保護することはできない。
【００１２】
マルチＯＳの動作環境では動作環境を切り換えるたびに、システム・メモリやディスク・ドライブに退避ファイルが残るため退避ファイルの一貫性を検証することが必要になってきた。しかし、マルチＯＳの動作環境で退避ファイルの一貫性を検証する場合でも高速切換を阻害しないようにする必要がある。また、一貫性の検証は高い信頼性が確保された環境下で行う必要がある。さらに動作環境を構成するＯＳに変更を加えないで一貫性の検証ができれば、任意のＯＳに適用できるため有益である。
【００１３】
そこで本発明の目的は、マルチＯＳの動作環境で動作するコンピュータのセキュリティ機能を強化する方法を提供することにある。さらに本発明の目的は、退避ファイルの一貫性を信頼性の高い環境下で実現する方法を提供することにある。さらに本発明の目的は、短時間での動作環境の切り換えを可能にしながら退避ファイルの一貫性を検証する方法を提供することにある。さらに本発明の目的は、ＯＳに変更を加えないようにしながら退避ファイルの一貫性を検証する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータ・プログラム、およびコンピュータを提供することにある。
【課題を解決するための手段】
【００１４】
本発明は、複数の動作環境のいずれかで動作することが可能なコンピュータにおいて、退避ファイルの一貫性を検証する方法を提供する。第１の動作環境から第２の動作環境への切換操作に応じて第１の動作環境を構成する第１のメモリ・イメージの少なくとも一部の同一性の検証が可能な代表ファイルを暗号化する。つぎに、第１のメモリ・イメージを所定の場所に退避する。つぎに第２の動作環境から第１の動作環境への切換操作に応じて暗号化した代表ファイルを復号する。つづいて退避した第１のメモリ・イメージから抽出した代表ファイルと復号した代表ファイルを比較する。
【００１５】
上記構成により、第２の動作環境から第１の動作環境への切換操作のときにそれまで退避していた第１のメモリ・イメージの少なくとも一部について、代表ファイルを通じて一貫性を検証することができる。代表ファイルは、第1のメモリ・イメージの少なくとも一部の同一性の検証が可能なファイルであればよく、第１のメモリ・イメージの全体、カーネル部分、またはランタイム・イメージとすることができる。また代表ファイルは、第１のメモリ・イメージの全体または一部からハッシュ計算したダイジェストでもよい。暗号化した代表ファイルは、第１のメモリ・イメージと同じ場所に退避してもよいし、異なる場所に退避してもよい。暗号化と、退避と、復号と、比較をシステム・ファームウェアが行えば、ＯＳの動作環境よりも安全に一貫性を検証しながら動作環境を切り換えることができる。また、ＯＳに変更を加える必要もなくなる。
【００１６】
このとき暗号化は、システム・ファームウェアのＳＭＩハンドラしかアクセスできないＳＭＲＡＭ領域に記憶した暗号鍵を利用しておこなえば、暗号鍵の安全を確保することができる。このとき、システム・ファームウェアを格納する揮発性メモリに公開鍵と暗号鍵を記憶し、復号した秘密鍵をＳＭＲＡＭ領域に記憶し、公開鍵で代表ファイルを復号することができる。したがって暗号鍵は暗号化しているため、セキュリティ対策をした不揮発性メモリを用意しなくても安全に保管することができて便利である。
【００１７】
秘密鍵の暗号化と復号は、セキュリティ・チップ（ＴＰＭ）がシステム・ファームウェアの一貫性を検証するＰＣＲ［０］とＰＣＲ［４］のＰＣＲ値に関連づけて行うことができる。暗号化は、システム・ファームウェアだけがアクセスできる不揮発性メモリに格納した共通鍵を利用して行ってもよい。所定の場所は、システム・メモリの第２の動作環境が動作する物理アドレス空間から区分したアドレス空間とすることができる。
【００１８】
所定の場所は、第１の動作環境および第２の動作環境のブート・イメージを格納するディスク・ドライブとすることもできる。第２の動作環境から第１の動作環境への切換操作に応じて第２の動作環境を構成する第２のメモリ・イメージの少なくとも一部の同一性の検証が可能な代表ファイルを暗号化する。第２のメモリ・イメージを所定の場所に退避する。第１の動作環境から前記第２の動作環境への切換操作に応じて、暗号化した代表ファイルを復号する。退避した第２のメモリ・イメージから抽出した代表ファイルと復号した代表ファイルを比較する。
【発明の効果】
【００１９】
本発明により、マルチＯＳの動作環境で動作するコンピュータのセキュリティ機能を強化する方法を提供することができた。さらに本発明により、退避ファイルの一貫性を信頼性の高い環境下で実現する方法を提供することができた。さらに本発明により、短時間での動作環境の切り換えを可能にしながら退避ファイルの一貫性を検証する方法を提供するができた。さらに本発明により、ＯＳに変更を加えないようにしながら退避ファイルの一貫性を検証する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータ・プログラム、およびコンピュータを提供することができた。
【図面の簡単な説明】
【００２０】
【図１】コンピュータ１０の概略のハードウェアの構成を説明するためのブロック図である。
【図２】コンピュータ１０が実装するソフトウェアの構成を説明するための図である。
【図３】デュアルＯＳの動作環境２００においてコンピュータ１０の状態変化と退避ファイルに対して想定されるソフトウェア攻撃を説明するための状態遷移図である。
【図４】デュアルＯＳの動作環境において、システム・メモリ１５に退避した退避ファイルを保護する手順を説明するためのフローチャートである。
【図５】デュアルＯＳの動作環境において、システム・メモリ１５に退避した退避ファイルを保護する手順を説明するためのフローチャートである。
【図６】図４、図５に対応するシステム・メモリのデータ構造の変遷を説明するための図である。
【図７】デュアルＯＳの動作環境において、ディスク・ドライブ２１に退避した退避ファイルを保護する手順を説明するためのフローチャートである。
【図８】デュアルＯＳの動作環境において、ディスク・ドライブ２１に退避した退避ファイルを保護する手順を説明するためのフローチャートである。
【図９】図７、図８に対応するシステム・メモリ１５とディスク・ドライブ２１のデータ構造の変遷を説明するための図である
【発明を実施するための形態】
【００２１】
［コンピュータの概略構成］
図１は、ノートブック型またはデスクトップ型のコンピュータ１０のハードウェアの概略構成を説明するための機能ブロック図である。図２は、コンピュータ１０が実装するソフトウェアの構成を説明するための図である。多くのハードウェアおよびソフトウェアの構成は周知であるため、本明細書では本発明の理解に必要な範囲で各要素を説明する。図１においてチップセット１３はさまざまな規格のインターフェース機能を備えており、ＣＰＵ１１、システム・メモリ（ＲＡＭ）１５、ＧＰＵ１７、ＨＤＤまたはＳＳＤなどのディスク・ドライブ２１、ファームウェアＲＯＭ２３、ネットワーク・モジュール２５、ロック可能な不揮発性メモリ（ＮＶＲＡＭ）２７、ＴＣＧが規定するセキュリティ・チップ（ＴＰＭ）２９およびエンベデッド・コントローラ（ＥＣ）３３などが接続されている。
【００２２】
ＧＰＵ１７にはタッチスクリーン１９が接続されている。タッチスクリーン１９は本発明の実現に必須ではないが、たとえばセカンダリＯＳ１１３の動作環境でタッチ操作のユーザ・インターフェースを提供するために利用することができる。ディスク・ドライブ２１は起動ディスクで、本実施の形態では図２に示す起動可能なプライマリＯＳ１０３、プライマリＯＳ１０３上で動作するアプリケーション１０５、起動可能なセカンダリＯＳ１１３、およびセカンダリＯＳ１１３上で動作するアプリケーション１１５などを格納する。
【００２３】
一例としてプライマリＯＳ１０３は、Ｗｉｎｄｏｗｓ（登録商標）、ＭＡＣ＿ＯＳ（登録商標）などの大規模なプログラムで、セカンダリＯＳ１１３は、Ａｎｄｒｏｉｄ（登録商標）、組み込み用Ｌｉｎｕｘ（登録商標）などの小規模のプログラムとすることができるが、本発明の適用が可能なＯＳの種類は特に限定する必要がない。ディスク・ドライブ２１は、起動可能な３種類以上のＯＳを格納してもよい。また、本発明は、プライマリＯＳ１０３とセカンダリＯＳ１１３を異なる起動ディスクに格納してもよい。
【００２４】
ファームウェアＲＯＭ２７は、ＢＩＯＳやSecure BootをサポートするＵＥＦＩファームウェアといったシステム・ファームウェア１０１を格納している。システム・ファームウェア１０１は、コンピュータの起動時にデバイスの検査や初期化などを行うほかに、本実施の形態にかかる退避ファイルの一貫性を検証するための処理を行う。ＣＰＵ１１は、ＣＰＵ１１の電源を再起動するパワーオン・リセット、ＣＰＵ１１にリセット信号を送るハードウェア・リセットおよびＣＰＵ１１が実行するプログラムがリセット信号を生成するソフトウェア・リセットのいずれかの方法でリセットされたときに必ずシステム・ファームウェア１０１を所定のアドレス（リセット・ベクタ）から実行する。
【００２５】
ＮＶＲＡＭ２７は、システム・ファームウェア１０１だけがアクセスできるロック可能な不揮発性メモリである。ＮＶＲＡＭ２７は、本実施の形態の一例において利用する共通鍵の格納に利用することができる。ＮＶＲＡＭ２７は、ＣＰＵ１１がリセットされたときにロックが解除される。システム・ファームウェア１０１は、ＯＳにＣＰＵ１１の制御権を渡す前にＮＶＲＡＭ２７をロックすることができる。ＴＰＭ２９の構成は周知である。ＴＰＭ２９は、プラットフォームが真正なものでＴＣＧに準拠しているかを検証する完全性検証機能、ハードウェアやソフトウェアが改ざんされていないことを確認する一貫性（Integrity）の記録機能、内部に保存された暗号鍵は外部に出さないという暗号鍵の保護機能、および各種暗号処理機能を備える。
【００２６】
ＴＰＭ２９は、Trust Bootを実現するために、ソフトウェアの一貫性を記録するＰＣＲ（Platform Configuration Register）３１を搭載する。システム・ファームウェア１０１、プライマリＯＳ１０３、およびセカンダリＯＳ１１３のブート・モジュールは、ブート時に順番に後続のモジュールのハッシュ値を計算してＥｘｔｅｎｄコマンドを使ってＰＣＲ３１に書き込む。Ｅｘｔｅｎｄコマンドが発行されるとＴＰＭは新ＰＣＲ値＝ＨＡＳＨ（旧ＰＣＲ値＋ハッシュ値）という計算をして、新ＰＣＲ値をＰＣＲ３１の所定の位置に記録する。
【００２７】
一旦記録されたＰＣＲ値は、再起動するまで書き換えおよび消去することはできないようになっている。したがって、一旦記録されたＰＣＲ値をソフトウェアが任意の値に操作することは困難である。システム・ファームウェアやＯＳは、ＰＣＲ値を利用して、周知の方法でソフトウェアの一貫性を検証することができる。ＰＣＲ３１は一例においてＰＣＲ［０］からＰＣＲ［２３］までの２４個のレジスタを含んでおり、利用の仕方はＴＣＧが規定している。
【００２８】
たとえば、システム・ファームウェア１０１は、ＰＣＲ［０］〜ＰＣＲ［７］までの７個のＰＣＲに計算したハッシュ値を書き込むことができる。本実施の形態との関連では一例として、ＣＲＴＭが計算したハッシュ値に対するＰＣＲ値を記録するＰＣＲ［０］と、ＯＳのブート・ローダのハッシュ値に対するＰＣＲ値を記録するＣＲＴＭ［４］を利用する。ＰＣＲ［０］とＰＣＲ［４］の存在は周知であるが、本発明では退避ファイルの検証を、ＣＲＴＭから開始してＣＰＵ１１の制御権がＯＳに渡る前のシステム・ファームウェア１０１の動作環境であることを担保するために、一例においてＰＣＲ［０］とＰＣＲ［４］を利用する。ＴＰＭ２９はTrust Bootを実現するが、本発明はTrust Bootを採用しないシステムに適用することも可能である。
【００２９】
ＥＣ３３は、ＣＰＵ、ＲＡＭ、ＲＯＭなどを含むマイクロ・コンピュータでコンピュータ１０の電源の制御や筐体内部の温度管理などを行う。ＥＣ３３は、システム・ファームウェア１０１、プライマリＯＳ１０３およびセカンダリＯＳ１１３が利用可能なレジスタ３５を備えている。レジスタ３５には、起動時にシステム・ファームウェア１０１が参照して、ブートＯＳの選択や動作状態の移行先などを判断する状態情報が記憶される。ＥＣ３３には、キーボード３７が接続されている。キーボード３７は、一例としてプライマリＯＳ１０３の動作環境におけるユーザ・インターフェースとして機能する。
【００３０】
［状態遷移とソフトウェア攻撃］
図３は、デュアルＯＳの動作環境２００においてコンピュータ１０の状態変化と退避ファイルに対して想定されるソフトウェア攻撃を説明するための状態遷移図である。ここに動作環境は、ＯＳやアプリケーションなどのプログラム・コード、プログラムの状態を示すデータおよびアプリケーションが作成したユーザ・データなどの動作中にシステム・メモリ１５が記憶しているメモリ・イメージと、当該動作環境下で動作しているＣＰＵ１１を含むすべてのハードウェアのレジスタ、キャッシュ、ポインタなどが保持する内部状態を示す状態情報（システム・コンテキスト）が構成する。動作環境の数は実装されているＯＳの数に一致する。本明細書では２つの動作環境（デュアルＯＳの動作環境）の切り換え時の退避ファイルを保護する方法を説明するが、３以上の動作環境（マルチＯＳの動作環境）の切り換え時の退避ファイルの保護に適用することもできる。
【００３１】
コンピュータ１０は、ＡＣＰＩが規定するパワー・オフ状態（Ｓ５ステート）２０１からプライマリＯＳ１０３の動作環境２０３またはセカンダリＯＳ１１３の動作環境２０５のいずれかに遷移する。ただし、コンピュータ１０は、パワー・オフ状態２０１からシングルＯＳの動作環境に移行することもできる。プライマリＯＳの動作環境２０３では、セカンダリＯＳ１１３が動作を停止する直前の動作状態を構成するランタイム・イメージをシステム・メモリ１５またはディスク・ドライブ２１に退避した状態でプライマリＯＳ１０３が実行される。ここに、ランタイム・イメージは、メモリ・イメージとシステム・コンテキストが構成する。
【００３２】
システム・コンテキストは、デバイスが停止する前、または他の動作環境への切換操作に応じてシステム・メモリ１５に保存されて、ランタイム・イメージの一部を形成する。同様に、セカンダリＯＳの動作環境２０５では、プライマリＯＳ１０３のランタイム・イメージをシステム・メモリ１５またはディスク・ドライブ２１に退避した状態でセカンダリＯＳ１１３が実行される。
【００３３】
プライマリＯＳの動作環境２０３とセカンダリＯＳの動作環境２０５からは、それぞれ停止している動作環境は変化しないで、実行しているＯＳだけがＡＣＰＩに規定するサスペンド状態２０７、２０９に遷移し元の状態に復帰することができる。また、プライマリＯＳの動作環境２０３とセカンダリＯＳの動作環境２０５からは、それぞれ停止している動作環境は変化しないで、実行しているＯＳだけがＡＣＰＩに規定するハイバネーション状態２０８、２１０に遷移し、元の状態に復帰することができる。ただし、ハイバネーション状態２０８、２１０に遷移するときは、停止している動作環境を維持するために、システム・メモリ１５の記憶は維持する。本発明による退避ファイルの一貫性の検証方法は、サスペンド状態２０７、２０９またはハイバネーション状態２０８、２１０に適用することもできる。
【００３４】
プライマリＯＳの動作環境２０３とセカンダリＯＳの動作環境２０５の間では、切換サスペンド状態２１３または切換ハイバネーション状態２１５のいずれかを経由して双方向に短時間で切り換えることができる。ここに、切換サスペンド状態２１３および切換ハイバネーション状態２１５は、システムが動作環境の切り換えのために、一時的にその時点で動作しているＯＳのランタイム・イメージをシステム・メモリ１５またはディスク・ドライブ２１に退避してから、ＣＰＵ１１をリセットしてシステム・ファームウェア１０１を実行する状態をいう。切換サスペンド状態２１３の間はシステム・メモリ１５の電源を維持して記憶を保持する必要があるが、切換ハイバネーション状態２１５の際はシステム・メモリ１５の電源を一時的に停止することが可能である。換サスペンド状態２１３および切換ハイバネーション状態２１５の間は、ネットワーク・モジュール２５を停止してネットワークから遮断した環境を形成することができる。
【００３５】
動作環境の切り換えが終了したときには、それまでシステム・メモリ１５またはディスク・ドライブ２１に退避していたランタイム・イメージがアクティブになって、移行先の動作環境が動作する。ここで、プライマリＯＳの動作環境２０３、セカンダリＯＳの動作環境２０５、サスペンド状態２０７、２０９またはハイバネーション状態２０８、２１０では、システム・メモリ１５またはディスク・ドライブ２１に退避中のランタイム・イメージ（退避ファイル）が存在する。退避ファイルは、やがてアクティブになって実行されるが、退避中にマルウェアの埋め込みや改変などの攻撃を受ける可能性がある。本実施の形態では、以下の手順で、退避ファイルがアクティブになる前に一貫性を検証して実行を停止する。
【００３６】
［システム・メモリの退避ファイルを保護する手順］
図４、図５は、デュアルＯＳの動作環境において、システム・メモリ１５に退避した退避ファイルを保護する手順を説明するためのフローチャートである。図６は、これに対応するシステム・メモリ１５のデータ構造の変遷を説明するための図である。ブロック３０１では、コンピュータ１０がパワー・オフ状態２０１（図３）である。
【００３７】
図６（Ａ）に示すようにファームウェアＲＯＭ２３は、システム・ファームウェア１０１と、暗号化した秘密鍵Ｃ、秘密鍵Ｃとペアで作成した公開鍵Ｃ、セカンダリＯＳ１１３のブート・ローダに添付したディジタル証明書Ｂを復号する公開鍵Ｂ、プライマリＯＳ１０３のブート・ローダに添付したディジタル証明書Ａを復号する公開鍵Ａを格納している。秘密鍵Ｃと公開鍵Ｃのペアは、コンピュータ１０の出荷時または任意の時期に、コンピュータ１０が実装する暗号モジュールで作成することができる。公開鍵Ａ、Ｂに対応する秘密鍵Ａ、Ｂは、ＯＳの製造者が秘密を保持している。
【００３８】
退避ファイルの一貫性を検証する信頼性の強度は、格納中と利用中の秘密鍵Ｃの保護の強度に依存するため、秘密鍵Ｃは確実に保護する必要がある。一例においてはシステム・ファームウェア１０１がＴＰＭ２９を使用して秘密鍵Ｃを保護する。システム・ファームウェア１０１は、秘密鍵Ｃと公開鍵Ｃのペアを作成したときに、暗号化のために秘密鍵Ｃを、ＰＣＲ［０］およびＰＣＲ［４］を指定してＴＰＭ２９に渡す。ＴＰＭ２９は、そのときＰＣＲ［０］およびＰＣＲ［４］が記録しているＰＣＲ値に関連付けて秘密鍵Ｃを暗号化しシステム・ファームウェア１０１に返す。システム・ファームウェア１０１は、ファームウェアＲＯＭ２３またはその他の不揮発性メモリに暗号化した秘密鍵Ｃを格納する。秘密鍵Ｃは暗号化されているためロックが可能な不揮発性メモリに格納する必要がない。
【００３９】
ＴＰＭ２９は、暗号化された秘密鍵Ｃを、暗号化されたときに指定されたＰＣＲ［０］とＰＣＲ［４］が記憶していたＰＣＲ値と、復号の要求があったときに指定されたＰＣＲ［０］とＰＣＲ［４］のＰＣＲ値が一致しない限り復号しない。このようなＴＰＭの暗号化処理をシールという。秘密鍵ＣはＴＰＭ２９によって、ＰＣＲ［０］とＰＣＲ［４］をアンシール条件として暗号化されることになる。ＴＰＭ２９がシールした秘密鍵Ｃは、一貫性があるシステム・ファームウェア１０１のブート・モジュール以外はアンシール（復号）できないことになる。
【００４０】
ディスク・ドライブ２１は、所定のパーティションにプライマリＯＳ１０３のブート・イメージと、ブート・ローダのハッシュ値を秘密鍵Ａで暗号化したディジタル証明書Ａを格納している。また、他のパーティションにセカンダリＯＳ１１３のブート・イメージと、ブート・ローダのハッシュ値を秘密鍵Ｂで暗号化したディジタル証明書Ｂを格納している。
【００４１】
ディジタル証明書Ａ、Ｂは、それぞれのＯＳの製造者が、プライマリＯＳ１０３またはセカンダリＯＳ１１３のハッシュ値を秘密鍵Ａ、Ｂでそれぞれ暗号化した証明書である。ブロック３０３で電源が起動されて、最初にセカンダリＯＳ１１３がブートされる。システム・ファームウェア１０１に対する設定により最初にプライマリＯＳ１０３からブートするようにしてもよい。
【００４２】
システム・ファームウェア１０１は、Secure Bootの方法で公開鍵Ｂを使ってディジタル証明書Ｂを復号した値と、セカンダリＯＳのブート・ローダから計算したハッシュ値が一致する場合だけセカンダリＯＳ１１３のブートを許可する。なお、プライマリＯＳ１０３のときも公開鍵Ａを使ってディジタル証明書Ａを復号して、同様にSecure Bootを行う。
【００４３】
システム・ファームウェア１０１は、セカンダリＯＳ１１３にシステム・メモリ１５の所定の物理アドレス空間１６３（図６（Ｂ））を割り当ててハードウェアの初期化や認証などを開始する。システム・ファームウェア１０１のＣＲＴＭに続くブート・モジュールは順番に計算したハッシュ値をＰＣＲ３１のＰＣＲ［０］からＰＣＲ［７］に記録していく。ブロック３０５で、システム・ファームウェア１０１は、ＴＰＭ２９にＰＣＲ［０］とＰＣＲ［４］を指定して暗号化された秘密鍵Ｃの復号（アンシール）を要求する。秘密鍵Ｃを作成したときのＰＣＲ値と現在のＰＣＲ値が一致すれば、ＴＰＭ２９は暗号化された秘密鍵Ｃを復号してシステム・ファームウェア１０１に返す。
【００４４】
したがって、秘密鍵ＣはＣＲＴＭを起点とする一貫性のあるブート・シーケンスおよびブート・モジュールのもとでだけ復号される。システム・ファームウェア１０１はＳＭＩを発行してＣＰＵ１１をＳＭＭ（System Management Mode）に移行させ、システム・メモリ１５の物理アドレス空間１６３に対応するＳＭＲＡＭ領域に、復号した秘密鍵Ｃを記憶する。ＳＭＭでは、ＳＭＲＡＭ領域でＳＭＩハンドラしか動作できないため、秘密鍵Ｃの安全は確保されている。
【００４５】
ＳＭＲＡＭ領域は、秘密鍵Ｃを使用してランタイム・イメージを暗号化するＳＭＩハンドラを記憶している。ブロック３０７でシステム・ファームウェア１０１からセカンダリＯＳ１１３にブート・シーケンスが移って、セカンダリＯＳの動作環境２０５に移行する。ただし、この時点では、デュアルＯＳの動作環境を構築する途中であるため、ブートが完了するとアプリケーション１１５はただちにプライマリＯＳ１０３をブートするようにセカンダリＯＳ１１３に要求するようにしている。
【００４６】
セカンダリＯＳ１１３は、サスペンド状態２０７に遷移するときと同じようにランタイム・イメージ１６２を作成してからブロック３０９で切換サスペンド状態２１３に遷移する。切換サスペンド状態に遷移するとシステム・メモリ１５の記憶が維持された状態で、セカンダリＯＳ１１３の動作環境２０５は停止する。このときシステム・メモリ１５が記憶しているランタイム・イメージ１６２が退避ファイルとなる。リセットされたＣＰＵ１１はシステム・ファームウェア１０１を実行する。
【００４７】
システム・ファームウェア１０１は、レジスタ３５を参照してブロック３１１でプライマリＯＳ１０３のブートを開始する。このときシステム・ファームウェア１０１は、プライマリＯＳ１０３にセカンダリＯＳ１１３とは異なる物理アドレス空間１６１を割り当てる。ブロック３１３では、ブロック３０５と同じ手順で暗号化された秘密鍵ＣがＴＰＭ２９で復号されて、物理アドレス空間１６１に対応するＳＭＲＡＭ領域に記憶される。
【００４８】
プライマリＯＳ１０３のブートが完了すると、ブロック３１５でデュアルＯＳの動作環境２００が構築さる。システム・メモリ１５を利用して構築したデュアルＯＳの動作環境２００では、プライマリＯＳの動作環境２０３とセカンダリＯＳの動作環境２０５のメモリ・イメージがともにシステム・メモリ１５の相互に区分された物理アドレス空間１６１、１６３に記憶された状態で、一方がアクティブになって動作し、他方がインアクティブになって退避する。
【００４９】
ブロック３０１からブロック３１７まではパワー・オフ状態で電源を起動したときに自動的に進行させることができる。プライマリＯＳ１０３から先にブートすれば、デュアルＯＳの動作環境２００が構築されたときにセカンダリＯＳの動作環境２０５に移行する。このときのシステム・メモリ１５のデータ構造を図６（Ｂ）に示す。ブロック３１７でコンピュータ１０は、プライマリＯＳの動作環境２０３で動作してユーザが作業をする。
【００５０】
ブロック３１９でユーザが、アプリケーション１０５が提供するユーザ・インターフェースを通じてキーボード３７またはタッチスクリーン１９にセカンダリＯＳの動作環境２０５に移行するための切換操作をする。ブロック３２１でプライマリＯＳ１０３はシステム・コンテキストをシステム・メモリ１５に記憶してランライム・イメージ１６４（図６（Ｃ））を作成し、ブロック３２３で切換サスペンド状態２１３に移行する。リセットされたＣＰＵ１１は、システム・ファームウェア１０１を実行する。システム・ファームウェア１０１はレジスタ３５を参照して、切換サスペンド状態２１３に遷移していることを認識する。
【００５１】
システム・ファームウェア１０１は、切換サスペンド状態に遷移するとＳＭＩを発行してＳＭＩハンドラを実行する。ＳＭＩハンドラはブロック３２５で、プライマリＯＳのランタイム・イメージ１６４をハッシュしてダイジェストＰを計算し、秘密鍵Ｃで暗号化する。ここにハッシュ値の計算の対象となるランタイム・イメージ１６４は、プライマリＯＳ１０３に割り当てられた物理アドレス空間１６１の全体の領域としてもよいし、物理アドレス空間１６１のなかでデータが格納されている領域、メモリ・イメージの全体、またはメモリ・イメージのなかでＯＳのカーネルが記憶されている領域などのように物理アドレス空間１６１の一部の領域としてもよい。暗号化の範囲は、ＯＳがシステム・メモリ１５の共用空間を通じてシステム・ファームウェア１０１に通知することができる。
【００５２】
ＳＭＩハンドラは暗号化したダイジェストＰを物理アドレス空間１６１に記憶する。このときのシステム・メモリ１５のデータ構造を図６（Ｃ）に示す。ブロック３２７でシステム・ファームウェア１０１は、セカンダリＯＳ１１３にＣＰＵ１１の制御権を渡してアクティブ化するとシステム・コンテキストが復帰してセカンダリＯＳの動作環境２０５に移行し、ユーザが作業をすることができる。ブロック３２９でユーザが、ユーザ・インターフェースを通じて、プライマリＯＳの動作環境２０３へ移行させる切換操作をする。ブロック３３１ではブロック３２１と同様にセカンダリＯＳ１１３がランタイム・イメージ１６６を作成してブロック３３３で切換サスペンド状態２１３に移行する。
【００５３】
ブロック３３５でＳＭＩハンドラはブロック３２５と同様の手順でセカンダリＯＳのランタイム・イメージ１６６のダイジェストＳを計算し、秘密鍵Ｃで暗号化して、物理アドレス空間１６３に記憶する。このときのシステム・メモリ１５のデータ構造を図６（Ｄ）に示す。ブロック３３７でシステム・ファームウェア１０１は、プライマリＯＳ１０３をアクティブ化する前に、ブロック３２５でダイジェストＰを計算したプライマリＯＳ１０３の対象と同じ対象に対してダイジェストＰ’を計算する。
【００５４】
ブロック３３９でシステム・ファームウェア１０１は、物理アドレス空間１６１に記憶していた暗号化したダイジェストＰをファームウェアＲＯＭ２３から読み取った公開鍵Ｃで復号する。ブロック３４１でシステム・ファームウェア１０１は、ダイジェストＰとダイジェストＰ’を比較して一致しない場合はブロック３４３でプライマリＯＳ１０３のアクティブ化を停止する。一致する場合は、アクティブ化する直前のそれまで退避していたランタイム・イメージ１６４が、切換操作の直後に作成したランタイム・イメージ１６４とダイジェストを計算した範囲において同一であるといえる。この状態を退避ファイルに一貫性があるという。
【００５５】
一致する場合は、ブロック３４５に移行して、プライマリＯＳ１０３にＣＰＵ１１の制御権を渡してアクティブ化するとシステム・コンテキストが復帰してプライマリＯＳ１０３がブロック３２１でランタイム・イメージを作成した時点の状態に復帰する。攻撃者が意図的に両者を一致させようとする場合は、ダイジェストＰ‘とダイジェストＰを同時に改変する必要があるが、ダイジェストＰは秘密鍵Ｃの安全性が保証されている限りダイジェストＰ’と同一性を保つように改変することができないため、改変があればそれを検出してアクティブ化を停止することができる。
【００５６】
図５のブロック４０１では、ユーザによってセカンダリＯＳの動作環境２０５へ移行する操作が行われる。ブロック４０３ではブロック３３１と同様の手順でプライマリＯＳ１０３の新たなランタイム・イメージが生成され、ブロック４０５で切換サスペンド状態に移行する。ブロック４０７ではブロック３３５と同じ手順でＳＭＩハンドラがプライマリＯＳ１０３のランタイム・イメージのダイジェストＰを計算し、秘密鍵Ｃで暗号化して、物理アドレス空間１６１に記憶する。ブロック４０９ではブロック３３７と同様にシステム・ファームウェア１０１が、セカンダリＯＳ１１３をアクティブ化する前に、セカンダリＯＳ１１３のランタイム・イメージのダイジェストＳ’を計算する。
【００５７】
ブロック４１１ではブロック３３９と同様にシステム・ファームウェア１０１が、物理アドレス空間１６３に記憶していた暗号化されたダイジェストＳを公開鍵Ｃで復号する。ブロック４１３ではブロック３４１と同様にシステム・ファームウェア１０１が、ダイジェストＳとダイジェストＳ’を比較して一致しない場合はブロック４１５でセカンダリＯＳ１１３のアクティブ化を停止する。一致する場合は、図４のブロック３２７に移行して、セカンダリＯＳ１１３にＣＰＵ１１の制御権を渡してアクティブ化するとシステム・コンテキストが復帰してセカンダリＯＳ１１３がブロック３３１でランタイム・イメージを作成した状態に復帰する。
【００５８】
［ディスク・ドライブの退避ファイルを保護する手順］
図７、図８は、デュアルＯＳの動作環境において、ディスク・ドライブ２１に退避した退避ファイルを保護する手順を説明するためのフローチャートである。図９は、これに対応するシステム・メモリ１５とディスク・ドライブ２１のデータ構造の変遷を説明するための図である。図４、図５の手順に類似する手順および図４、図５の手順から容易に類推できる手順は説明を簡略化する。本実施の形態におけるランタイム・イメージの退避先は、ディスク・ドライブ２１とは異なる不揮発性メモリであってもよい。
【００５９】
図７のブロック５０１では、ファームウェアＲＯＭ２３とディスク・ドライブ２１のデータ構造が図６（Ａ）と同様に図９（Ａ）のとおりである。ブロック５０３でシステム・ファームウェア１０１は、一例として先にセカンダリＯＳ１１３のブート・イメージを物理アドレス空間１７１にロードする。ここでは、物理アドレス空間１７１に、プライマリＯＳ１０３またはセカンダリＯＳ１１３のブート・イメージがロードされる例を説明する。ブロック５０５ではブロック３０５と同様にシステム・ファームウェア１０１が暗号化した秘密鍵Ｃを復号してＳＭＲＡＭ領域に記憶する。
【００６０】
ブロック５０７でセカンダリＯＳ１１３が動作しブロック５０９で自動的にランタイム・イメージ１７２（図９（Ｂ））をディスク・ドライブ２１に退避してからコンピュータ１０の電源を一旦停止して、切換ハイバネーション状態２１５に遷移する。ディスク・ドライブ２１に退避したランタイム・イメージ１７２は退避ファイルとなる。切換ハイバネーション状態２１５に遷移するとただちに電源が投入されて、リセットされたＣＰＵ１１がシステム・ファームウェア１０１を実行する。システム・ファームウェア１０１はブロック５１１で、レジスタ３５を参照して物理アドレス空間１７１にプライマリＯＳのブート・イメージ１３１をロードする。
【００６１】
ブロック５１３では、システム・ファームウェア１０１がブロック３１３と同様に暗号化した秘密鍵Ｃを復号してＳＭＲＡＭ領域に記憶する。ブロック５１５ではデュアルＯＳの動作環境２００が構築される。ディスク・ドライブ２１を利用して構築したデュアルＯＳの動作環境２００では、プライマリＯＳの動作環境２０３とセカンダリＯＳ１のなかで一方の動作環境が動作し、他方の動作環境がディスク・ドライブ２１に退避している。
【００６２】
ブロック５１７でプライマリＯＳ１０３が動作したときのシステム・メモリ１５とディスク・ドライブ２１のデータ構造を図９（Ｂ）に示す。ブロック５１９でプライマリＯＳ１０３への切換操作が行われ、ブロック５２１でブロック３２１と同様にプライマリＯＳ１０３がランタイム・イメージ１７４を生成する。ブロック５２３でシステムは切換ハイバネーション状態２１５への移行を開始し、リセットされたＣＰＵ１１が、システム・ファームウェア１０１を実行する。
【００６３】
ブロック５２５でＳＭＩハンドラがランタイム・イメージ１７４のダイジェストＰを計算して秘密鍵Ｃで暗号化してシステム・メモリ１５に記憶する。ブロック５２６でシステム・ファームウェア１０１は、ランタイム・イメージ１７４と暗号化したダイジェストＰを含む物理アドレス空間１７１のファイルをディスク・ドライブ２１のセカンダリＯＳ１１３の退避ファイルとは異なる記憶領域に退避して電源を再起動する。退避先は、このときのシステム・メモリ１５とディスク・ドライブ２１のデータ構造を図９（Ｃ）に示す。
【００６４】
ブロック５２７でセカンダリＯＳ１１３がアクティブ化し、ブロック５２９でプライマリＯＳ１０３への切換操作が行われる。ブロック５３１で動作を開始したセカンダリＯＳ１３３がランタイム・イメージ１７６を作成し、ブロック５３３でシステム・ファームウェア１０１が切換ハイバネーション状態２１５への移行を開始する。ブロック５３５でシステム・ファームウェア１０１がランタイム・イメージ１７６のダイジェストＳを計算してシステム・メモリ１５に記憶すると、ＳＭＩハンドラがダイジェストＳを秘密鍵Ｃで暗号化する。ブロック５３６でシステム・ファームウェア１０１は、暗号化したダイジェストＳとランタイム・イメージ１７６をディスク・ドライブ２１に退避してから電源を再起動する。このとき、ランライム・イメージ１７６はブロック５２６で退避したランタイム・イメージ１７２を上書きしてもよい。
【００６５】
このときのシステム・メモリ１５とディスク・ドライブ２１のデータ構造を図９（Ｄ）に示す。ブロック５３７でシステム・ファームウェア１０１は、ディスク・ドライブ２１から読み出したプライマリＯＳのランタイム・イメージ１７４のダイジェストＰ’を計算する。ブロック５３９でシステム・ファームウェア１０１は、ディスク・ドライブ２１から読み取った暗号化したダイジェストＰを公開鍵Ｃで復号してブロック５４１でダイジェストＰ’と比較する。一致する場合は、ブロック５４５でプライマリＯＳのランタイム・イメージ１７４をレジュームしてアクティブ化し、ブロック５２１でランタイム・イメージ１７４を作成した状態に復帰させる。一致しない場合はブロック５４３で、プライマリＯＳのランタイム・イメージ１７４のレジュームを停止する。
【００６６】
図８のブロック６０１では、セカンダリＯＳの動作環境２０３への切換操作が行われる。ブロック６０３から６０８までの手順はブロック５２１からブロック５２６までの手順と同様に、ブロック６０３でプライマリＯＳ１０３がランタイム・イメージを作成する。システム・ファームウェア１０１はブロック６０５で切換ハイバネーション状態２１５への切換操作を開始する。ブロック６０７で新たなランタイム・イメージのダイジェストＰを計算して秘密鍵Ｃで暗号化してから、ブロック６０８で新たなランタイム・イメージと新たな暗号化したダイジェストＰをディスク・ドライブ２１に退避する。
【００６７】
ブロック６０９でからブロック６１５までの手順は、ブロック５３７からブロック５４３までの手順と同様に、ブロック６０９でシステム・ファームウェア１０１は、ディスク・ドライブ２１から読み出したセカンダリＯＳのランタイム・イメージ１７６のダイジェストＳ’を計算する。ブロック６１１でシステム・ファームウェア１０１は、ディスク・ドライブ２１から読み取った暗号化したダイジェストＳを公開鍵Ｃで復号してブロック６１３でダイジェストＳ’と比較する。一致する場合は、セカンダリＯＳのランタイム・イメージ１７６をレジュームしてブロック５２７でアクティブ化し、ブロック５３１でランタイム・イメージ１７６を作成した状態に復帰させる。一致しない場合はブロック６１５で、セカンダリＯＳのランタイム・イメージ１７６のレジュームを停止する。
【００６８】
図４から図９までの手順は、本発明の実施形態を説明するための一例であり、本発明はこの手順に限定するものではない、各手順を複数の手順に分割したり、統合したり、または入れ替えたりすることは当業者が容易に想起できるものである限り本発明に含まれる。また、明細書に具体的に示したファイルの処理は、同等の機能を実現する周知な他の処理で行うことも同等の効果を奏するものであれば本発明に含まれる。
【００６９】
以上の手順では、システム・ファームウェア１０１だけがダイジェストＰ、Ｓを暗号化する秘密鍵Ｃにアクセスし、かつ、ネットワークから遮断された安全な環境でランタイム・イメージの一貫性を検証できる。システム・ファームウェア１０１の一貫性の検証にＴＰＭを採用すれば、一層安全な環境で処理できる。ランタイム・イメージの作成は、ＡＣＰＩが規定するサスペンド状態またはハイバネーション状態に遷移する手順を採用することができるため、ＯＳに変更を加える必要がない。
【００７０】
これまでランタイム・イメージの少なくとも一部の同一性の検証を小さなデータ量で可能にするダイジェストＰ、Ｓを利用する方法を説明したが、本発明はダイジェストの利用に限定する必要がない。ダイジェストに代えてランタイム・イメージの少なくとも一部の同一性の検証が可能な代表ファイルを採用することができる。代表ファイルは、ランタイム・イメージの全体でも、カーネルのような主要な部分だけでもよい。
【００７１】
また本発明は実環境で構築するマルチＯＳの動作環境だけでなく、仮想環境で動作複数のＯＳのなかで、動作を停止するＯＳのランタイム・イメージを保護することに適用することもできる。さらに、規模の大きなＯＳの物理アドレス空間の中に小さい物理アドレス空間を形成し、規模の大きなＯＳをサスペンド状態にしながら小さい物理アドレス空間で規模の小さなＯＳを動作させるような動作環境の切り換え方式にも適用できる。
【００７２】
ランタイム・イメージのダイジェストＰ、Ｓを暗号化するための秘密鍵Ｃは、サイズが大きいため、ロック可能なＮＶＲＡＭ２７に格納することが困難な場合があるが、ＴＰＭを使ってシールすることで、ファームウェアＲＯＭ２３のようなロックできない不揮発性メモリに保管することができる。また、本発明はダイジェストＰ、Ｓの暗号化に、共通鍵（対称鍵）を使用することもできるが、共通鍵は秘密鍵に比べてサイズが小さいため、ＣＲＴＭだけがアクセスできるようなロック可能なＮＶＲＡＭ２７に格納して保護することができる。このときＣＲＴＭは、共通鍵をＳＭＲＡＭ領域に記憶するときだけＮＶＲＡＭのロックを解除し、共通鍵を取り出したらロックするようにして共通鍵を保護することができる。
【００７３】
暗号化したダイジェストＰ、Ｓを、ランタイム・イメージ１６４、１６６、１７４、１７６と同じシステム・メモリ１５またはディスク・ドライブ２１に退避する例を説明したが、暗号化したダイジェストＰ、Ｓの退避先はこの例に限定する必要はない。暗号化したダイジェストＰ、Ｓは、たとえば、ロック可能なＮＶＲＡＭ２７に格納したり、またはその他のロック機能がない不揮発性メモリに退避したりするようにしてもよい。
【００７４】
本発明は、図１に示したハードウェアと図２に示したソフトウェアの協働により構成した暗号化部、退避部、復号部、または比較部といったハードウェア要素で実現することもできる。たとえば暗号化部は、システム・メモリ１５が記憶するランタイム・イメージから抽出した代表ファイルの暗号化を行い、退避部がランタイム・イメージのシステム・メモリ１５またはディスク・ドライブ２１への退避をすることができる。また、復号部が暗号化した代表ファイルの復号を行い、比較部が退避したランライム・イメージから抽出した代表ファイルと復号した代表ファイルの比較を行うことができる。
【００７５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００７６】
１０  コンピュータ
２１  ディスク・ドライブ
２３  ファームウェアＲＯＭ
２９  ＴＰＭ
１６１、１６３、１７１  物理アドレス空間
１６２、１６４、１６６、１７２、１７４、１７６  ランタイム・イメージ
２００  デュアルＯＳの動作環境
２０３  プライマリＯＳの動作環境
２０５  セカンダリＯＳの動作環境
２１３  切換サスペンド状態
２１５  切換ハイバネーション状態
【図１】
2016021220.tif 000003
【図２】
2016021220.tif 000004
【図３】
2016021220.tif 000005
【図４】
2016021220.tif 000006
【図５】
2016021220.tif 000007
【図６】
2016021220.tif 000008
【図７】
2016021220.tif 000009
【図８】
2016021220.tif 000010
【図９】
2016021220.tif 000011