(57)【特許請求の範囲】
【請求項１】
ブート・プログラムの完全性の検証をするセキュア・ブート機能がデフォルトでイネーブルに設定されたコンピュータにおいて、前記完全性の検証をしないで前記ブート・プログラムをロードする方法であって、
起動信号に応じて電源を起動するステップと、
パワー・オフ状態の前記コンピュータに物理的にアクセスしたユーザの操作に応じて前記起動信号が生成されたときにフィジカル・プリゼンスを示す第１の信号を生成するステップと、
起動ごとのユーザの操作に応じて第２の信号を生成するステップと、
前記第１の信号と前記第２の信号が生成されたときに今回のブートに限り前記完全性の検証をスキップしてブート・プログラムをロードするステップと
を有する方法。
【請求項２】
前記ロードするステップを、電源を再起動しないで実行する請求項１に記載の方法。
【請求項３】
前記コンピュータに設定されたパスワードの入力を要求するステップを有し、
前記ロードするステップを前記パスワードの認証が成功したときに限り実行する請求項１または請求項２に記載の方法。
【請求項４】
前記第１の信号または前記第２の信号のいずれかまたは双方が生成されないときに前記ブート・プログラムの完全性の検証をしてからロードするステップを有する請求項１から請求項３のいずれかに記載の方法。
【請求項５】
前記完全性の検証が失敗したときにブート・プログラムが格納された他のブート・デバイスを選択して、該ブート・デバイスに格納されたブート・プログラムの完全性を検証するステップを有する請求項４に記載の方法。
【請求項６】
前記完全性の検証をスキップしてブート・プログラムをロードするステップが、ブート・デバイスの選択画面を表示するステップを有する請求項１から請求項５のいずれかに記載の方法。
【請求項７】
前記第２の信号をユーザの操作に応じて生成するステップが、キーボードのキーを押下するステップを含む請求項１から請求項６のいずれかに記載の方法。
【請求項８】
指紋認証装置が第１の指を検証したことに応じて前記起動信号と前記第１の信号を生成し、前記指紋認証装置が第２の指を検証したことに応じて前記起動信号と前記第１の信号と前記第２の信号を生成する請求項１から請求項７のいずれかに記載の方法。
【請求項９】
オペレーティング・システムの完全性を検証するセキュア・ブート機能がデフォルトでイネーブルに設定されたコンピュータにおいて、前記完全性の検証をしないで前記オペレーティング・システムをブートする方法であって、
起動信号に応じて電源を起動するステップと、
パワー・オフ状態の前記コンピュータに物理的にアクセスしたユーザの操作に応じて前記起動信号が生成されたときにフィジカル・プリゼンスを示す第１の信号を生成するステップと、
オペレーティング・システムをブートする前のユーザの操作に応じて第２の信号を生成するステップと、
前記第１の信号と前記第２の信号が生成されたときに前記完全性の検証をスキップしかつ電源を再起動しないで前記オペレーティング・システムをブートするステップと
を有する方法。
【請求項１０】
次回のブートまでの間に前記第１の信号と前記第２の信号を消滅させる請求項９に記載の方法。
【請求項１１】
記憶装置に格納されたブート・プログラムをロードすることが可能なコンピュータであって、
プロセッサと、
ファームウェアを格納する不揮発性メモリと、
ブート・プログラムの完全性の検証をするセキュア・ブート機能をデフォルトでイネーブルに設定するためのセキュア・ブート・フラグと、
パワー・オフ状態の前記コンピュータに物理的にアクセスしたユーザにより起動信号が生成されたときに設定されるフィジカル・プリゼンスを示す第１のフラグと、
今回の起動におけるユーザの操作に応じて設定される第２のフラグとを有し、
前記ファームウェアを実行する前記プロセッサは、前記セキュア・ブート・フラグが設定されたときに前記起動信号に応じて前記完全性の検証をしてから前記ブート・プログラムをロードし、前記第１のフラグおよび前記第２のフラグが設定されたときに前記セキュア・ブート・フラグの設定にかかわらず今回のブートに限り前記起動信号に応じて前記完全性の検証をスキップして前記ブート・プログラムをロードするコンピュータ。
【請求項１２】
前記第２のフラグは前記起動信号が生成されてから前記ブート・プログラムをロードするまでの間に設定される請求項１１に記載のコンピュータ。
【請求項１３】
指紋認証装置が認証に成功したときに前記第１のフラグと前記第２のフラグを設定する請求項１１または請求項１２に記載のコンピュータ。
【請求項１４】
前記ファームウェアを実行する前記プロセッサは、前記コンピュータにスーパーバイザ・パスワードが設定されているときに前記スーパーバイザ・パスワードの認証が成功したときに限り前記完全性の検証をスキップする請求項１１から請求項１３のいずれかに記載のコンピュータ。
【請求項１５】
記憶装置に格納されたオペレーティング・システムをブートすることが可能なコンピュータであって、
プロセッサと、
ファームウェアを格納する不揮発性メモリと、
オペレーティング・システムの完全性の検証をするセキュア・ブート機能をデフォルトでイネーブルに設定するためのセキュア・ブート・フラグと、
パワー・オフ状態の前記コンピュータに物理的にアクセスしたユーザにより起動信号が生成されたときに設定されるフィジカル・プリゼンスを示す第１のフラグと、
前記オペレーティング・システムをブートする前のユーザの操作により設定される第２のフラグとを有し、
前記ファームウェアを実行する前記プロセッサは、前記セキュア・ブート・フラグが設定されたときに前記起動信号に応じて前記完全性の検証をしてから前記オペレーティング・システムをロードし、前記第１のフラグおよび前記第２のフラグが設定されたときに前記セキュア・ブート・フラグの設定にかかわらず前記起動信号に応じて前記完全性の検証をスキップしかつ再起動しないで前記オペレーティング・システムをブートするコンピュータ。
【請求項１６】
前記第１のフラグおよび前記第２のフラグまたはいずれか一方が設定されないときに前記ファームウェアを実行する前記プロセッサは前記完全性の検証をしてから前記オペレーティング・システムをブートする請求項１５に記載のコンピュータ。
【請求項１７】
パワー・オフ状態のときに生成された起動信号に応じて電源を起動したコンピュータに、
ブート・プログラムの完全性の検証をするセキュア・ブート機能をデフォルトでイネーブルに設定する機能と、
前記起動信号が前記コンピュータに物理的にアクセスしたユーザの操作により生成されたときにフィジカル・プリゼンスを示す第１の信号を確認する機能と、
今回の起動におけるユーザの操作に応じて生成された第２の信号を確認する機能と、
前記第１の信号と前記第２の信号が生成されたときに今回のブートに限りブート・プログラムの前記完全性の検証をスキップしてロードする機能と
を実現させるコンピュータ・プログラム。
【請求項１８】
前記ロードする機能を、デフォルトで設定した前記セキュア・ブート機能をディスエーブルに設定しないで前記コンピュータに実現させる請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
パワー・オフ状態のときに生成された起動信号に応じて電源を起動したコンピュータに、
オペレーティング・システムの完全性の検証をするセキュア・ブート機能を有効に設定する機能と、
前記起動信号が前記コンピュータに物理的にアクセスしたユーザの操作により生成されたときにフィジカル・プリゼンスを示す第１の信号を確認する機能と、
オペレーティング・システムをブートする前のユーザの操作により生成された第２の信号を確認する機能と、
前記第１の信号と前記第２の信号が生成されたときに前記セキュア・ブート機能が有効に設定されているにもかかわらず前記オペレーティング・システムの完全性の検証をスキップしかつ電源を再起動しないでブートする機能と
を実現させるコンピュータ・プログラム。
【請求項２０】
前記ブートする機能が、パスワード認証を要求する機能を含む請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブート・プログラムの完全性の検証をするセキュア・ブート機能を制御する技術に関し、さらに詳細にはセキュリティ・レベルの低下を軽減しながら簡単な操作でセキュア・ブート機能を制限する技術に関する。
【背景技術】
【０００２】
ファームウェアは、ハードウェアとオペレーティング・システム（ＯＳ）、デバイス・ドライバまたはアプリケーション・プログラムなどの上位のプログラムとの間のインターフェースを提供するコードである。ファームウェアは、周辺デバイスを専用に制御するデバイス・ファームウェアとシステム全体の動作にかかわるシステム・ファームウェア（プラットフォーム・ファームウェアともいう。）に分けることができる。
【０００３】
システム・ファームウェアは通常マザーボードに取り付けられた不揮発性メモリ（ＮＶＲＡＭ）に格納されている。ＢＩＯＳは最も普及しているシステム・ファームウェアで、コンピュータの電源が起動してからＯＳがロードを開始するまでの間に、ＰＯＳＴ（Power On Self Test）およびパスワード処理をしたり、ハードウェアにアクセスする為のサービスを提供したりする。ＢＩＯＳは、１６ビットのプロセッサと１ＭＢのメモリ空間をサポートするが、近年の進化したハードウェアに対する対応が困難になってきている。
【０００４】
このような状況下で非特許文献１に示すように、ＵＥＦＩ（Unified Extensible Firmware Interface）フォーラムがＢＩＯＳに代わってまたはＢＩＯＳに加えて使用する新しいシステム・ファームウェア（以後、ＵＥＦＩファームウェアという。）の仕様を策定した。ＵＥＦＩファームウェアを搭載するシステムでは、それに対応するＯＳやデバイス・ドライバだけが動作できる。ただしほとんどのＵＥＦＩファームウェアは、ＢＩＯＳをエミュレートすることができるようになっているため、ＵＥＦＩファームウェアを搭載するシステムではＵＥＦＩ対応のＯＳとＢＩＯＳにだけ対応するＵＥＦＩ非対応のＯＳのいずれも動作することができる。
【０００５】
ところで起動ディスクには、ブート・ローダといわれるＯＳをロードするためのプログラムが格納されている。起動時にＵＥＦＩファームウェアは、最初にブート・ローダにハンドオフして制御を渡す。ブート・ローダは、ＯＳイメージのメイン・メモリのロードを、ＵＥＦＩファームウェアに依頼する。もし、ブート・ローダがマルウェアから攻撃を受けて改竄されると、マルウェア対策のプログラムがロードされなくなったり、ディスク・ドライブに埋め込まれたマルウェアがロードされたりすることになるためブート・ローダの保護対策が必要となる。
【０００６】
特許文献１にはマルウェアによるブート・ローダに対する攻撃からコンピュータを保護する発明を開示する。また非特許文献２、および非特許文献３にも示すように、ＵＥＦＩ仕様ではセクション２７．５でセキュア・ブートについて規定する。セキュア・ブートは、当初から完全性が維持されていることを検証したコードまたはブート・ローダしか実行できないようにしてコンピュータの安全性を高める技術である。コンピュータの安全性を高める他の技術として特許文献２は、プラットフォームを物理的に支配しているユーザが操作していることを検証するフィジカル・プリゼンスについて開示する。特許文献３は、電源投入時に特定のキー入力をすることで煩雑な操作をしないで起動デバイスを変更してシステムを起動する発明を開示する。特許文献４は、電源を入れた直後にホットキーを押下して、ホットキーのＩＤに対応するＯＳを起動する発明を開示する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００５−５３７２２４号公報
【特許文献２】特開２０１０−１４６０４８号公報
【特許文献３】特開２００３−２８０９１５号公報
【特許文献４】特開２００３−１５０３７９号公報
【非特許文献】
【０００８】
【非特許文献１】Unified Extensible Firmware Interface Specification,Version 2.3.1, September 7, 2011,2011年12月19日インターネット検索http://www.uefi.org/specs/download/?item_key=aea8a9a9173c42dc477aea293160b62816049d9a
【非特許文献２】オープンプラットフォームにおけるUEFI Secure Bootへの対応、２０１１年１０月、James Bottomley, Jonathan Corbet, The Linux Foundation, 2011年12月19日インターネット検索http://www.linuxfoundation.jp/publications/making-uefi-secure-boot-work-with-open-platforms
【非特許文献３】ＵＥＦＩでＯＳ起動前の環境を保護する、Steven Sinofsky、２０１１年９月２７日、2011年12月19日インターネット検索http://blogs.msdn.com/b/b8_ja/archive/2011/09/27/uefi-os.aspx
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＵＥＦＩ対応のＯＳは完全性の検証をしないでも動作するが、ＵＥＦＩファームウェアを搭載するシステムでは安全性を確保するために、セキュア・ブート機能をデフォルトでイネーブルに設定して常にＯＳの完全性を検証してからブートすることが望ましい。他方でＵＥＦＩファームウェアはＢＩＯＳと互換性があるため、ＵＥＦＩファームウェアを搭載するシステムにおいてＵＥＦＩ非対応のＯＳを動作させたい場合がある。たとえば、ディスク・ドライブにはＵＥＦＩ対応のＯＳを格納し、他のディスク・ドライブにはＵＥＦＩ非対応のＯＳを格納しておいて、ユーザが選択したいずれかのＯＳをブートしたい場合がある。
【００１０】
このとき、セキュア・ブート機能がイネーブルになっていると、ＵＥＦＩファームウェアはＵＥＦＩ非対応のＯＳについては完全性の検証を成功させることができないため、結果としてそれをブートすることができなくなる。したがってＵＥＦＩ非対応のＯＳをブートするには、デフォルトで設定されたセキュア・ブート機能をディスエーブルに設定する必要がある。セキュア・ブート機能の設定は、ＵＥＦＩファームウェアが提供するセット・アップ画面を通じて行う。セキュア・ブート機能を一旦イネーブルに設定すれば、ＵＥＦＩファームウェアはブートのたびに完全性の検証を行なって検証が成功した場合にだけＯＳのブートを許可する。
【００１１】
セキュア・ブート機能をディスエーブルに設定する場合は、セット・アップ画面を表示して設定を変更してから通常は電源を再起動する必要があるため、ユーザに対して煩雑な手順を要求しブート時間が長くなる。さらに、ＵＥＦＩファームウェアを搭載するシステムでは、セキュア・ブート機能をデフォルトでイネーブルに設定しておくことが望ましいため、ＵＥＦＩ非対象のＯＳを実行したあとに再起動してセット・アップ画面を表示しセキュア・ブート機能をイネーブルに設定し直しておく必要があり、さらにユーザに煩雑な手順を要求する。また、ユーザがセキュア・ブート機能をイネーブルに設定しない場合は、ＵＥＦＩ非対応のＯＳだけでなくＵＥＦＩ対応のＯＳに対しても気づかないうちに完全性の検証を行わないでブートすることになり、セキュア・ブート機能をデフォルトでイネーブルに設定するというセキュリティ・ポリシーを損なうことになる。
【００１２】
そこで本発明の目的は、ブート・プログラムの完全性の検証をするようにデフォルトで設定されたコンピュータにおいて、一時的に完全性の検証をしないでブート・プログラムをロードする方法を提供することにある。さらに本発明の目的は、簡単な操作で完全性の検証をしないでブート・プログラムをロードする方法を提供することにある。さらに本発明の目的は、セキュリティ・リスクを軽減しながら完全性の検証をしないでブート・プログラムをロードする方法を提供することにある。さらに本発明の目的は、完全性の検証をしないで短時間でブート・プログラムをロードする方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明にかかるコンピュータはブート・プログラムの完全性の検証をするセキュア・ブート機能がデフォルトでイネーブルに設定されている。完全性の検証をデフォルトでイネーブルに設定するとは、ブートのたびにユーザが明示的な意思表示をしてディスエーブルに設定しない限り、ロードするブート・プログラムの完全性を検証するルーチンを実行することを意味する。さらにデフォルトでイネーブルに設定するとは、次回のブートにおいてユーザの操作を介在しないでディスエーブルからイネーブルに変更が行われることを意味する。完全性とは、一貫性、整合性、またはintegrityなどともいわれ、ブート・プログラムがコンピュータに実装された時点から現在までの間に不正に書き換えられていないことを意味する。
【００１４】
ブート・プログラムは、Windows（登録商標）のような大規模なＯＳであってもまたシステム・ファームウェアの更新プログラムのような小規模なプログラムであってもよい。ブート・プログラムは、ディスク・ドライブ、外付けのＵＳＢメモリ、または内蔵の不揮発性メモリのようなブート・デバイスのいずれかに格納されている。ブート・プログラムはネットワークを通じてコンピュータに接続された記憶装置に存在していてもよい。完全性の検証は、ブート・プログラムのブート・ローダまたはブート・イメージを対象にしてＰＫＩ（Public Key Infrastructure）方式で行うことができる。ブート・プログラムには、セキュア・ブート機能に対応するプログラムと対応しないプログラムが存在する。
【００１５】
セキュア・ブート機能に対応するブート・プログラムは完全性の検証をしないでもロードすることはできるが、本発明ではセキュア・ブート機能に対応するブート・プログラムに対してはユーザの明示的な意思でセキュア・ブート機能を一時的に停止しない限り必ず完全性の検証を行うようにしている。本発明では、セキュア・ブート機能に対応しないブート・プログラムをロードするときだけセキュア・ブート機能を一時的に停止してロードし、当該ブート・プログラムの実行が終了したときは再びセキュア・ブート機能を有効にする環境に簡単かつ確実に短時間で復帰させる。
【００１６】
本発明の態様では、最初に起動信号に応じてコンピュータが電源を起動する。コンピュータはパワー・オフ状態のコンピュータに物理的にアクセスしたユーザの操作に応じて起動信号が生成されたときにフィジカル・プリゼンスを示す第１の信号を生成する。第１の信号はＰＰ信号とすることができる。コンピュータは、今回の起動におけるユーザの操作に応じてセキュア・ブート機能の一時的な停止を示す第２の信号を生成する。第２の信号はＤＥ信号とすることができる。コンピュータは第１の信号と第２の信号が生成されたときに今回のブートに限り完全性の検証をスキップしてブート・プログラムをロードする。
【００１７】
第１の信号は現実にコンピュータの前に存在するユーザの操作に応じて生成され、第２の信号は今回の起動におけるユーザの操作に応じて生成される。第１の信号と第２の信号が生成されたときに限り完全性の検証をスキップしてブート・プログラムをロードすることができるので、セキュリティ・リスクを軽減しながら簡単な操作でロードすることができる。
【００１８】
また、セット・アップ画面でセキュア・ブート機能をディスエーブルに設定すると、再度イネーブルに設定しない限りディスエーブル状態が持続する。これに対し本発明では、第２の信号は起動ごとのユーザの操作により生成されるため次回以降のブートにおいて継続的に完全性の検証をスキップするようなことはない。完全性の検証をスキップするのはユーザの意思表明を伴う所定の条件が成立したときだけであり、次回のブートにおいては第２の信号が生成されない限りデフォルトの設定に従ってユーザの操作を介在しないでも完全性の検証を行うため、デフォルトでのイネーブル設定を維持することができる。
【００１９】
完全性の検証をスキップしてブート・プログラムをロードするときは、短時間でブートを完了するために電源を再起動しないで行うことが望ましい。コンピュータにパスワードを設定したときは、パスワードの認証が成功したときに限り完全性の検証をスキップしてロードすることができる。この場合、パスワードを管理する当該コンピュータのオーナー以外の者が、セキュア・ブート機能をディスエーブルに設定することができなくなるためそのような不正行為に対する安全を確保することができる。
【００２０】
第１の信号および第２の信号またはいずれかが生成されないときには、デフォルトの設定どおりにブート・プログラムの完全性の検証をしてからロードすることができる。完全性の検証が失敗したときにブート・プログラムが格納された他のブート・デバイスを選択して、そこに格納されたブート・プログラムの完全性を検証してからロードするようにしてもよい。この場合は、コンピュータにセキュア・ブート機能に対応し、かつ、改変されていないブート・プログラムを格納するブート・デバイスが存在する限りブート・デバイスの優先順位に従って自動的に完全性を検証してからブートすることができる。
【００２１】
セキュア・ブート機能を備えるコンピュータにおいては、通常はセキュア・ブート機能に対応するブート・プログラムをロードするため、セキュア・ブート機能に対応しないブート・プログラムは、さまざまなブート・デバイスからロードすることが多い。したがって、セキュア・ブート機能に対応しないブート・プログラムの完全性の検証をスキップしてロードするときは、ブート・デバイスの選択画面を表示するようにすればユーザが容易にブート・デバイスを選択することができる。第２の信号は、キーボードのキーを押下することで生成してもよい。指紋認証装置が第１の指を検証したことに応じて起動信号と第１の信号を生成し、当該指紋認証装置が第２の指を検証したことに応じて起動信号とＰＰ信号とＤＥ信号を生成するように構成することもできる。この場合は、認証する指を代えるだけで簡単にセキュア・ブート機能をデフォルト設定にしたり、当該ブートに限ってスキップしたりすることができる。
【発明の効果】
【００２２】
本発明により、ブート・プログラムの完全性の検証をするようにデフォルトで設定されたコンピュータにおいて、一時的に完全性の検証をしないでブート・プログラムをロードする方法を提供することができた。さらに本発明により、簡単な操作で完全性の検証をしないでブート・プログラムをロードする方法を提供することができた。さらに本発明により、セキュリティ・リスクを軽減しながら完全性の検証をしないでブート・プログラムをロードする方法を提供することができた。さらに本発明により、完全性の検証をしないで短時間でブート・プログラムをロードする方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【００２３】
【図１】ノートＰＣの主要なハードウェアの構成を示す概略ブロック図である。
【図２】ファームウェアＲＯＭ２７のデータ構造を示す図である。
【図３】ＮＶＲＡＭ４３のデータ構造を示す図である。
【図４】ＵＥＦＩが規定するセキュア・ブート機能を制御するハードウェアの構成を示す機能ブロック図である。
【図５】セキュア・ブート機能を制御する手順を示すフローチャートである。
【図６】セキュア・ブート機能を制御する他のハードウェアの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００２４】
［ハードウェアの全体構成］
図１は、ノートブック型パーソナル・コンピュータ（ノートＰＣ）１０の主要なハードウェアの構成を示す機能ブロック図である。多くのハードウェアの構成は周知であるため、本発明に必要な範囲で説明する。ノース・ブリッジ１３には、ＣＰＵ１１、メイン・メモリ１５、ビデオ・コントローラ１７およびサウス・ブリッジ２１が接続される。ビデオ・コントローラ１７には、ＬＣＤ１９が接続される。サウス・ブリッジ２１はさまざまな規格のインターフェース機能を備え、図１には代表的にＰＣＩ  Ｅｘｐｒｅｓｓにイーサネット（登録商標）コントローラ２３が接続され、ＳＡＴＡにハードディスク・ドライブ（ＨＤＤ）２９が接続され、ＳＰＩにファームウェアＲＯＭ２７が接続され、ＵＳＢに指紋認証装置３１が接続され、ＬＰＣにエンベデッド・コントローラ（ＥＣ）３５、およびＮＶＲＡＭ４３が接続されている。
【００２５】
サウス・ブリッジ２１は、ＲＴＣ（Real Time Clock）にレジューム時刻を設定したり、ＵＥＦＩファームウェアの設定情報を記憶したりするＲＴＣメモリを含む。ＲＴＣメモリはノートＰＣ１０のすべての電源が停止したときにボタン電池から電力の供給を受ける。イーサネット（登録商標）コントローラ２３は、イーサネット（登録商標）規格の有線ＬＡＮに接続するための拡張カードでノートＰＣ１０の筐体に取り付けられたＲＪ４５という規格のコネクタが接続されている。ノートＰＣ１０は、所定のパワー・ステート（Ｓ３またはＳ４／Ｓ５）のときにイーサネット（登録商標）・コントローラ２３を経由してネットワークからマジック・パケットを受け取り、いわゆるウェイク・オン・ラン（ＷＯＬ：Wake On LAN）で起動することができる。
【００２６】
ＨＤＤ２９は、ノートＰＣ１０のデバイス・ベイに取り付けられユーザが交換できるようになっている。ＨＤＤ２９は、ブート・イメージを格納するブート・デバイスである。ＵＥＦＩファームウェアは、ＨＤＤ２９からＵＥＦＩ対応のＯＳをブートするように設定されている。ＨＤＤ２９は、複数のパーティションにそれぞれ異なるブート・イメージを格納するようにしてもよい。このとき一つのパーティションにはＵＥＦＩ対応ＯＳのブート・イメージを格納し、他のパーティションにはＵＥＦＩ非対応のＯＳのブート・イメージを格納するようにしてもよい。そして、ＵＥＦＩ非対応のＯＳを格納したＨＤＤをデバイス・ベイに装着してブートするようにしてもよい。
【００２７】
いずれのＨＤＤにもＯＳのブート・イメージをロードするためのブート・ローダが格納されている。ＵＥＦＩ対応のＯＳをロードするブート・ローダには、ＯＳをノートＰＣ１０に装着されたＨＤＤ２９に格納する際に計算したブート・ローダのハッシュ値（ジェスチャ）を当該作成者の秘密鍵で暗号化して作成した電子署名が付されている。ＵＥＦＩが規定するセキュア・ブート機能は、ＯＳをロードする前にＵＥＦＩファームウェア１００が、ＰＫＩ方式と電子署名を利用してブート・ローダの完全性を検証することで実現する。完全性の検証は、実際にロードされるブート・イメージの全体を対象にして行うこともできる。秘密鍵と対で作成された公開鍵はファームウェアＲＯＭ２７に格納される。
【００２８】
ＯＳをＨＤＤ２９に最初に格納したときのブート・ローダとそれ以降のブート時におけるブート・ローダの同一性が完全に保持されていることを完全性があるという。ただし、ＵＥＦＩ非対応のＯＳをロードするブート・ローダにはセキュア・ブート機能で検証できる電子署名は付されていない。ノートＰＣ１０では、ＵＥＦＩ対応またはＵＥＦＩ非対応のＯＳのブート・イメージを格納するＵＳＢメモリ、セカンダリＨＤＤまたはＮＶＲＡＭなどの他のブート・デバイスからブートすることもできる。
【００２９】
指紋認証装置３１には、ユーザの指紋画像を生成するスワイプ式の指紋センサ３３が接続されている。指紋認証装置３１は、ノートＰＣ１０がパワー・オフ状態に遷移しているときであってもスワイプされた指をあらかじめ登録されたテンプレートと比較して認証することができる。指紋認証装置３１は、パワー・コントローラ３９に接続されており、指紋認証が成功したときにパワー・コントローラ３９に起動信号を出力することができる。指紋認証装置３１はさらに認証する指に応じて異なる起動信号を出力することができる。
【００３０】
指紋認証装置３１は、ノートＰＣ１０の筐体に物理的に一体に取り付けられている。フィジカル・プリゼンスはＴＣＧ（Trusted Computing Group）の仕様で定義されており、コンピュータの面前で操作して後に説明するＳ４／Ｓ５ステートから電源を起動したユーザだけが、コンピュータに対して主張することができる。指紋認証装置３１を起動デバイスとして使用する場合は起動方法においてＴＣＧの仕様で定義されたフィジカル・プリゼンスの要件を満たす。
【００３１】
ＥＣ３５は、ＣＰＵ、ＲＯＭ、ＲＡＭなどで構成されたマイクロ・コンピュータである。ＥＣ３５は、ノートＰＣ１０の内部の動作環境の管理にかかるプログラムをＣＰＵ１１とは独立して実行することができる。ＥＣ３５は、キーボード・コントローラを含んでおり、キーボード３７およびパワー・コントローラ３９が接続される。ＥＣ３５は、サウス・ブリッジ２１からの指示でノートＰＣ１０のパワー・ステートを遷移させるためにパワー・コントローラ３９を制御する。
【００３２】
パワー・コントローラ３９はＤＣ／ＤＣコンバータ４１を制御するワイヤード・ロジックのディジタル制御回路（ＡＳＩＣ）である。パワー・コントローラ３９には、ＤＣ／ＤＣコンバータ４１が接続されている。ＤＣ／ＤＣコンバータ４１は、図示しないＡＣ／ＤＣアダプタまたは電池パックから供給される直流電圧を、ノートＰＣ１０を動作させるために必要な複数の電圧に変換し、さらにパワー・ステートに応じて定義された電力供給区分に基づいて各々のデバイスに電力を供給する。パワー・コントローラ３９には、ノートＰＣ１０を起動する起動ボタン４７が接続されている。
【００３３】
起動ボタン４７は、ノートＰＣ１０の筐体に物理的に一体に結合するように取り付けられており、ノートＰＣ１０を物理的に支配しているユーザだけが押下することができる。起動ボタン４７を押下して電源を起動するときは起動方法においてＴＣＧの仕様で定義されたフィジカル・プリゼンスの要件を満たす。起動ボタン４７は押下されたときにパワー・コントローラ３９に起動信号を出力する。パワー・コントローラ３９はＳ３ステート、Ｓ４ステート、またはＳ５ステートのいずれかに遷移しているときに起動ボタン４７が押下されると、Ｓ０ステートに遷移させために各デバイスに電力を供給するようにＤＣ／ＤＣコンバータ４１を制御する。
【００３４】
セキュアＮＶＲＡＭ４３は、改竄や盗聴に対する安全性が確保された不揮発性のメモリである。ノートＰＣ１０は、ＡＣＰＩ（Advanced Configuration and Power Interface）の省電力機能およびプラグ・アンド・プレイに対応している。ＡＣＰＩでは、最大の消費電力を示すパワー・オン状態（Ｓ０ステート）と最低の消費電力を示すパワー・オフ状態（Ｓ５ステート）の間にＳ１ステートからＳ４ステートまでの４つのスリーピング・ステートを定義しているが、ノートＰＣ１０はＳ３ステートとＳ４ステートを定義している。
【００３５】
Ｓ３ステートはいわゆるサスペンド状態またはsuspend to RAMといわれ、システム・コンテキストはメイン・メモリ１５に記憶されてデバイスから消失する。Ｓ３ステートでは、メイン・メモリ１５の記憶を維持するのに必要なメイン・メモリ１５およびノース・ブリッジ１３と、ＷＯＬを実行するのに必要なサウス・ブリッジ２１、ＥＣ３５、およびイーサネット（登録商標）コントローラ２３に電力を供給する。Ｓ３ステートではさらにパワー・コントローラ３９などの電源の起動に必要なデバイスにも電力を供給する。Ｓ３ステートではその他のデバイスに対する電源を停止する。なお、ここに示したＳ３ステートで電力を供給するデバイスの範囲は一例である。
【００３６】
Ｓ４ステートはいわゆるsuspend to diskまたはハイバネーション状態といわれ、システム・コンテキストおよびメイン・メモリ１５のデータはＨＤＤ２９に記憶される。Ｓ４ステートではパワー・コントローラ３９などの電源の起動に最小限必要なデバイス以外のデバイスに対する電源をオフにする。Ｓ５ステートはいわゆるソフト・オフといわれ、ＯＳがコンテキストをＨＤＤ２９に格納しない点を除いては電力を供給するデバイスの範囲はＳ４ステートと同じである。なお、ノートＰＣ１０の電力源が電池パックの場合とＡＣ／ＤＣアダプタの場合でＳ４ステートとＳ５ステートで電力を供給するデバイスの範囲を変えてもよい。Ｓ０ステートではディスエーブルに設定されたデバイスを除いたすべてのデバイスに電力が供給される。
【００３７】
［ファームウェアＲＯＭのデータ構造］
図２は、ファームウェアＲＯＭ２７のデータ構造を示す図である。図３はＮＶＲＡＭ４３のデータ構造を示す図である。ファームウェアＲＯＭ２７は、不揮発性で記憶内容の電気的な書き替えが可能なメモリで複数のコード群で構成されたＵＥＦＩファームウェア１００を格納する。ＮＶＲＡＭ４３は、ユーザにより設定されたスーパーバイザ・パスワード１２１、パワー・オン・パスワード１２３、およびＵＥＦＩフラグ１２５を格納する。
【００３８】
ＵＥＦＩファームウェア１００は、スーパーバイザ・パスワード１２１、パワー・オン・パスワード１２３、およびＨＤＤパスワードを設定することができる。スーパーバイザ・パスワード１２１はＵＥＦＩファームウェア１００の設定を変更するためのセット・アップ画面を表示する際に要求され、パワー・オン・パスワード１２３はノートＰＣ１０をブートさせる際に要求される。ＨＤＤパスワードはＨＤＤ２９にアクセスする際に要求される。ＨＤＤパスワードはＨＤＤ２９のディスクのシステム領域に格納される。
【００３９】
ＵＥＦＩファームウェア１００は、ノートＰＣ１０のシステム・ファームウェアを構成する。ＵＥＦＩファームウェア１００は、書き換えに伴うリスクを軽減するためにブート・ブロック方式を採用している。ファームウェアＲＯＭ２７は全体がブート・ブロックに設定されており、ここに格納されたコードはＴＰＭ（Trusted Platform Module）の仕様書に規定するＣＲＴＭ（Core Root Of Trust Measurement）として扱われ特別な権限がないと書き換えができないようになっている。ＣＲＴＭは、プラットフォームの初期化コードの中で完全性が保証されている部分として構成され、プラットフォームのリセット時には必ず最初に実行されなければならない。ＣＲＴＭは、ノートＰＣ１０がＳ４ステートまたはＳ５ステート（以後、Ｓ４／Ｓ５ステートという。）からＳ０ステートに遷移するときに最初に実行される。
【００４０】
基本デバイス初期化コード１０１は、ノートＰＣ１０が起動してＳ３ステート、Ｓ４／Ｓ５ステートからＳ０ステートに遷移する際に、メイン・メモリ１５にファームウェア１００をロードして実行を開始するために必要なＣＰＵ１１、メイン・メモリ１５およびその他の基本的なデバイスの検出、検査および初期化を必要な範囲で行う。デバイス初期化コード１０３は、ＣＰＵ１１にリセット信号が供給されてから、ＯＳがロードされるまでの期間にサウス・ブリッジ２１のコントローラや周辺デバイスなどのほとんどのデバイスを初期化して使用できる状態にする。ブート・マネージャー１０５は、ＯＳをロードするのに必要なデバイスの初期化や、ブートの順番の管理、セキュア・ブートの処理を行う。
【００４１】
セット・アップ・コード１１２は、ブート・マネージャー１０５が実行されている間にキーボード３７の所定のファンクション・キーが押下されたたときに、ＬＣＤ１９にセット・アップ画面を表示する。ユーザはセット・アップ画面を通じて、ブート・デバイスの優先順位の決定、起動方法の設定、使用デバイスの設定、およびパワー・マネジメントの設定などをすることができる。
【００４２】
セット・アップ・コード１１２は設定された情報をサウス・ブリッジ２１にあるボタン電池で電源がサポートされた揮発性のＲＴＣメモリに記憶する。ユーザはセット・アップ画面を通じてＵＥＦＩフラグ１２５を設定してセキュア・ブート機能をイネーブルに設定したりパスワードの設定をしたりすることができる。ＵＥＦＩフラグ１２５が設定されると、ブート時に本実施の形態にかかる特別な操作をしない限りセキュア・ブート機能が実現される。
【００４３】
セット・アップ画面を通じてユーザが設定するパスワードは、スーパーバイザ・パスワード１２１、パワー・オン・パスワード１２３、およびＨＤＤパスワードを含む。スーパーバイザ・パスワード１２１を設定したときは、スーパーバイザ・パスワード１２１を入力しない限りセット・アップ画面を表示することができないため、ＵＥＦＩフラグ１２５を解除することもできない。
【００４４】
実行パス制御コード１０７は、ＵＥＦＩフラグ１２５の設定を維持してセキュア・ブート機能をデフォルトでイネーブルにしながら、ユーザの明示的な意図があるときだけ一時的にスキップするためにファームウェア１００の実行パスを制御する。実行パス制御コード１０５は、ＮＶＲＡＭ４３に設定されたＵＥＦＩフラグ１２５とパワー・コントローラ３９のレジスタ２１１、２１３（図４参照）を参照して、完全性検証コード１１１を実行してからハンドオフするか完全性検証コード１１１を実行しないでハンドオフするかを決定する。
【００４５】
実行パス制御コード１０７は、ＮＶＲＡＭ４３にＵＥＦＩフラグ１２５が設定されていないとき、またはＵＥＦＩフラグ１２５が設定されかつパワー・コントローラ３９のレジスタ２１１、２１３にＰＰビット、ＤＥビットが設定されているときは、完全性検証コード１１１に実行パスを渡さないでブート・デバイスに格納されたブート・ローダをメイン・メモリ１５に読み出して制御を移す。実行パス制御コード１０７は、ＵＥＦＩフラグ１２５が設定されかつＰＰビットまたはＤＥビットが設定されていないときに、完全性検証コード１１１に実行パスを渡す。
【００４６】
パスワード処理コード１０９はスーパーバイザ・パスワード１２１が設定されているときは、ユーザがセット・アップ画面を呼び出したときに、セット・アップ画面を表示する前にスーパーバイザ・パスワード１２１の入力を要求するプロンプトを表示する。パスワード処理コード１０９は、スーパーバイザ・パスワード１２１が設定されているときにセキュア・ブート機能を一時的にスキップする際に、スーパーバイザ・パスワード１２１の入力を要求するプロンプトを表示する。パスワード処理コード１０９は、パワー・オン・パスワード１２３またはＨＤＤパスワードが設定されたときに、ブート・マネージャー１０５の実行の途中でＬＣＤ１９にプロンプトを表示してユーザにパスワードの入力を要求する。パスワード処理コード１０９はパスワードの認証をして成功したときは後続のルーチンを許可し失敗したときはその時点でブートを停止する。
【００４７】
完全性検証コード１１１は、ＵＥＦＩコード１００からＯＳに制御が移る直前に、ブート・ローダをメイン・メモリ１５に読み出して完全性の検証をする。ＵＥＦＩ対象のブート・ローダには、それらを作成した作成者が計算したハッシュ値を秘密鍵で暗号化した電子署名が付されている。署名データ・ベース１１３には、ブート・ローダのＩＤと電子署名に使用した秘密鍵とペアになる公開鍵を格納する。完全性検証コード１１１は、ブート・ローダのコードから計算したハッシュ値と、署名データ・ベース１１３から取得した公開鍵で復号して得た電子署名のハッシュ値を比較して、一致していれば完全性が維持されていると判断してブート・ローダの実行を許可する。ＵＥＦＩ対応のＯＳのブート・ローダは、ＨＤＤ２９にＯＳが格納された時点から改竄されていなければ検証が成功する。
【００４８】
［セキュア・ブート機能を制御するハードウェアの構成］
図４は、セキュア・ブート機能を制御するハードウェアの構成を示す機能ブロック図である。サウス・ブリッジ２１は、現在のパワー・ステートを設定する不揮発性メモリで構成されたレジスタ２１５を備えている。パワー・コントローラ３９は、論理回路２０９、フィジカル・プリゼンスを肯定したときにＰＰビットを設定するレジスタ２１１、およびセキュア・ブート機能を今回のブートで停止するためのユーザの意思を表明するＤＥビットを設定するレジスタ２１３を備えている。
【００４９】
ＵＥＦＩフラグ１２５を設定してデフォルトでセキュア・ブート機能をイネーブルにしながら、当該ブートのときだけ一時的にセキュア・ブート機能をスキップするために、今回のブートで設定されたＰＰビットおよびＤＥビットは次回のブートまでの間に確実にクリアする必要がある。パワー・コントローラ３９は、ノートＰＣ１０の電源を起動するために最低限必要な回路であるため、Ｓ４／Ｓ５ステートのときにも電力が供給されるが、レジスタ２１１、２１３に別系統の電源から電力を供給して、Ｓ４／Ｓ５ステートのときにはそれらの電源を停止させてクリアすることができる。あるいはレジスタ２１１、２１３の電力をＳ４／Ｓ５ステートのときに維持しておき、実行パス制御コード１０７がＯＳにハンドオフする前にクリアするように構成してもよい。レジスタ２１１、２１３は、ＥＣ３５やＮＶＲＡＭ４３などの他のデバイスに設けてもよい。
【００５０】
起動ボタン４７は起動信号ライン２０３でパワー・コントローラ３９に接続されている。起動ボタン４７はさらにスイッチ２０７の一方の端子に接続され、スイッチ２０７の他方の端子はＰＰビット設定ライン２０５を通じてパワー・コントローラ３９に接続されている。スイッチ２０７の制御端子はサウス・ブリッジ２１５に接続されている。ＯＳはＳ０ステートからＳ３ステートまたはＳ４／Ｓ５ステートに遷移する際にレジスタ２１５にＳ３ビットまたはＳ４／Ｓ５ビットを設定する。レジスタ２１５にＳ４／Ｓ５ビットが設定されているときは、現在のパワー・ステートがＳ４／Ｓ５ステートであることを示している。
【００５１】
サウス・ブリッジ２１は、レジスタ２１５にＳ４／Ｓ５ビットが設定されているときはスイッチ２０７をオンに制御し、Ｓ３ビットが設定されているときまたはクリアされているときはオフに制御する。ユーザが起動ボタン４７を押下すると、起動信号が起動信号ライン２０３を通じてパワー・コントローラ３９に出力される。さらに、レジスタ２１５にＳ４／Ｓ５ビットが設定されているときは、起動信号がＰＰビット設定ライン２０５を通じてパワー・コントローラ３９に出力される。
【００５２】
論理回路２０９は、起動信号ライン２０３を通じて起動信号を受け取るとＤＣ／ＤＣコンバータ４１を制御して、すべてのデバイスに電力を供給し電源をＳ０ステートに遷移させる。論理回路２０９は、ＰＰビット設定ライン２０５を通じて起動信号を受け取ったときは、レジスタ２１１にＰＰビットを設定する。ＥＣ３５は、キーボード３７の特別に割り当てられた単一のキーが押下されたときまたは特別に割り当てられた複数のキーが同時に押下されたときに、レジスタ２１３にＤＥビットを設定する。
【００５３】
［セキュア・ブート機能を制御する方法］
つぎにノートＰＣ１０においてセキュア・ブート機能を一時的に解除する方法について図５のフローチャートを参照して説明する。図５のブロック３０１でノートＰＣ１０はＳ４／Ｓ５ステートに遷移している。ＯＳは前回のブートでパワー・オン状態に遷移したときにＳ４／Ｓ５ステートに遷移する前にレジスタ２１５にＳ４／Ｓ５フラグを設定している。Ｓ４／Ｓ５ステートでもパワー・コントローラ３９および起動ボタン４７などの電源の起動に必要な最低限の回路には電力が供給されている。
【００５４】
また、レジスタ２１１、２１３はノートＰＣ１０がＳ４／Ｓ５ステートに遷移しているためクリアされている。ＮＶＲＡＭ４３には、スーパーバイザ・パスワード１２１とＵＥＦＩフラグ１２５が設定されている。ユーザはセット・アップ画面を通じてあらかじめ複数のブート・デバイスの中でＨＤＤ２９の優先順位が最も高くなるように設定している。ＨＤＤ２９はＵＥＦＩ対応のＯＳを一つのパーティションに格納し、ＵＥＦＩ非対応のＯＳを別のパーティションに格納している。
【００５５】
ブロック３０３では起動ボタン４７の押下またはＷＯＬ（Wake On Lan）によりノートＰＣ１０の電源が起動される。起動ボタン４７が押下されると、起動信号ライン２０３を通じてパワー・コントローラ３９に起動信号が送られる。論理回路２０９は、起動信号を検出するとＤＣ／ＤＣコンバータ４１を制御して、Ｓ０ステートで動作するすべてのデバイスに電力を供給する。
【００５６】
電力が供給されたサウス・ブリッジ２１は、レジスタ２１５を参照してＳ４／Ｓ５フラグが設定されていることを確認するとスイッチ２０７をオンにする。ここまでの時間は非常に短いためスイッチ２０７がオンになるとその時点でもパワー・ボタン４７は押下されているため、ＰＰビット設定ライン２０５を通じてパワー・コントローラ３９に起動信号が送られる。起動信号を受け取った論理回路２０８は、レジスタ２１１にＰＰビットを設定する。
【００５７】
ノートＰＣ１０は、Ｓ４ステートの時にＷＯＬでも電源を起動することができる。ＷＯＬで起動するときは、イーサネット（登録商標）・コントローラ２３を通じてマジック・パケットを受け取ったサウス・ブリッジ２１がＥＣ３５に電源を起動するように指示する。この場合パワー・コントローラ３９は、ＰＰビット設定ライン２０５を通じて起動信号を受け取らないためレジスタ２１１にＰＰビットを設定しない。また、ブロック３０１における現在のパワー・ステートがＳ３ステートのときは、スイッチ２０７がオフになっているため、起動ボタン４７が押下されてもパワー・コントローラ３９はＰＰビット設定ライン２０５を通じて起動信号を受け取らないためレジスタ２１１にＰＰビットを設定しない。
【００５８】
電源が投入されたＣＰＵ１１はパワー・オン・リセットして基本デバイス初期化コード１０１をキャッシュに読み出し実行する。基本デバイス初期化コード１０１は、メイン・メモリ１５およびノース・ブリッジ１３などのファームウェア１００を実行するのに必要な基本的なデバイスの検出、検査および初期化をする。メイン・メモリ１５が使用できるようになると、ＣＰＵ１１は残りのＵＥＦＩコード１００をメイン・メモリ１５にロードし、デバイス初期化コード１０３により周辺デバイスなどのほとんどのデバイスを初期化する。
【００５９】
つづいてＣＰＵ１１はブート・マネージャー１０５を実行する。ブロック３０４でブート・マネージャー１０５を実行する間にユーザは、今回のブートで一時的にセキュア・ブート機能をスキップする意思表示をするためにキーボード３７からの入力が可能になるタイミングを見計らって特定のファンクション・キーを押下する。論理回路２０９は、ＥＣ３５から特定のファンクション・キーに対応する信号を受け取るとレジスタ２１３にＤＥビットを設定する。ユーザが起動後の所定時間の間に所定のファンクション・キーを押下してセット・アップ・コード１１２を呼び出さない限りＵＥＦＩファームウェア１００のブート・ルーチンは進行し続ける。
【００６０】
ブロック３０５でブート・マネージャー１０５内の実行パス制御コード１０７に制御が移行する。実行パス制御コード１０７は、レジスタ２１１を参照してＰＰビットが設定されているか否かを確認する。ＰＰビットが設定されているときはブロック３０７に移行し、設定されていないときはブロック３３１に移行して完全性検証コード１１１に制御を移す。ブロック３３１に移行するのは、Ｓ４ステートまたはＳ５ステートからＷＯＬで起動した場合でノートＰＣ１０がフィジカル・プリゼンスを肯定しない場合に相当する。ブロック３０７では、実行パス制御コード１０７がレジスタ２１３を参照してＤＥビットが設定されているか否かを確認する。
【００６１】
ＤＥビットが設定されているときはブロック３０９に移行し、設定されてないときはブロック３３１に移行する。ブロック３０９で実行パス制御コード１０７は、スーパーバイザ・パスワード１２１が設定されているか否かを判断する。スーパーバイザ・パスワード１２１が設定されているときはブロック３１１に移行してパスワード処理コード１０９に制御を移し、設定されていないときはブロック３１５に移行してセット・アップ・コード１１２に制御を移す。ブロック３１１でパスワード処理コード１０９は、ＬＣＤ１９に自動的にスーパーバイザ・パスワード１２１の入力を要求するプロンプトを表示する。
【００６２】
ブロック３１３でパスワード処理コード１０９は、ユーザが入力したスーパーバイザ・パスワード１２１を認証する。スーパーバイザ・パスワード１２１の認証が成功した場合は、ブロック３１５に移行してセット・アップ・コード１１２に制御を移し、失敗した場合はブロック３３１に移行して完全性検証コード１１１に制御を移す。ここで、ＵＥＦＩ対応のＯＳに対しては完全性の認証をしてからブートするのが望ましい。また、ブロック３０４でユーザがセキュア・ブート機能を一時的にスキップする意思を表明するのは、ＨＤＤ２９の別のパーティションに格納されたＵＥＦＩ非対応のＯＳや、ＵＳＢメモリ、補助ＨＤＤ、またはＮＶＲＡＭに格納されたＵＥＦＩ非対応のＯＳまたは実行可能プログラムをブートしたい場合である。
【００６３】
ブロック３１５でセット・アップ・コード１１２は、自動的にブート・デバイス選択画面を表示する。ユーザは、ブート・デバイス選択画面からブート・デバイスを選択してブート・デバイスの選択を終了するとＵＥＦＩファームウェア１００はハンドオフしてブロック３１７に移行する。ブロック３１７でＵＥＩＦファームウェア１００は、ブート・ローダの完全性の検証をスキップしてＯＳをロードする。ＵＥＦＩファームウェア１００は、ＢＩＯＳをエミュレートしてＵＥＦＩ非対応のＯＳからのサービス要求を処理する。
【００６４】
ブロック３３１、３３３では、完全性検証コード１１１はブート・デバイスとして設定されているＨＤＤ２９のＵＥＦＩ対応ＯＳのブート・ローダをメイン・メモリ１５に読み出す。ＯＳがＵＥＦＩに対応していれば、ブート・ローダに電子署名が付されていることになる。完全性検証コード１１１は署名データ・ベース１１３から読み出した当該ブート・ローダに対応する公開鍵を取得して、ブート・ローダに付されている電子署名を復号する。さらに、完全性検証コード１１１は、ブート・ローダのコードからハッシュ値を計算して復号した電子署名と比較する。
【００６５】
電子署名を復号したハッシュ値と読み出したブート・ローダから計算したハッシュ値が一致すれば、ブート・ローダはＨＤＤ２９に格納されてから改変されていないことになり完全性の検証が成功する。検証の対象が改変されたブート・ローダまたはＵＥＦＩ非対応のＯＳをブートするブート・ローダの場合は認証が失敗する。ブート・デバイスが比較的小さな実行可能プログラムのブート・イメージを格納する場合は、ブート・イメージ全体を対象にした電子認証を付して同様にＰＫＩ方式で完全性の検証をすることができる。
【００６６】
検証が成功した場合はブロック３１７に移行し失敗した場合はブロック３３５に移行して実行パス制御コード１０７に制御を移す。ブロック３３５では、実行パス制御コード１０７が次のブート・デバイスが存在するか否かを判断する。ブート・デバイスが存在する場合はブロック３３７に移行して、実行パス制御コード１０７はＨＤＤ２９の次の順位に設定されているブート・デバイスに起動フラグを設定してブロック３３１に戻る。
【００６７】
ブート・デバイスが存在しない場合は、ブロック３３９に移行して実行パス制御コード１０７は次のブート・ルーチンに制御権を渡さないでブートを停止させる。次の起動でブートを成功させるために、ユーザはＵＥＦＩ対応ＯＳを格納したブート・デバイスを装着してブロック３３１のパスを経由するようにするか、ＰＰビットおよびＤＥビットを設定してブロック３１５のパスを経由するようにすることができる。
【００６８】
ブロック３１７でブートが成功してつぎにＳ４／Ｓ５ステートに遷移するときは、ＮＶＲＡＭ４３のＵＥＦＩフラグ１２５は設定された状態を維持するが、レジスタ２１１、２１３はクリアされる。したがって、次回Ｓ４／Ｓ５ステートから起動ボタン４７を押下して起動するときには、ブロック３０４でセキュア・ブート機能を一時的にスキップする操作をしない限り、自動的にブロック３３１で完全性の検証をすることになるため、セキュア・ブート機能のデフォルトでのイネーブル設定を維持しながら今回のブートに限って一時的にセキュア・ブート機能をスキップすることができる。
【００６９】
また、セキュア・ブート機能をスキップするときは、マルウェアに汚染されたプログラムが実行される可能性が高くなる。本実施の形態では、ＰＰビットが設定されてユーザが現実にノートＰＣ１０を操作しているときに限りスキップすることになるので、セキュリティ・リスクを軽減することができる。また、スーパーバイザ・パスワード１２１を設定しておけば、第３者がノートＰＣ１０のセキュア・ブート機能をスキップすることができなくなるので、さらにセキュリティ・リスクを軽減することができる。
【００７０】
セキュア・ブート機能の一時的な解除はＵＥＦＩフラグ１２５を今回のブートに限り解除することでも実現できる。具体的には起動ボタン４７が押下され、キーボート３７が操作されてＰＰビットとＤＥビットが設定されたときは、実行パス制御コード１０７がＵＥＦＩフラグ１２５を一時的にクリアしてセキュア・ブート機能をディスエーブルに設定して完全性の検証をスキップする。実行パス制御コード１０７は、ＯＳをロードする前にＵＥＦＩフラグ１２５を再度設定する。ただし、この場合はＵＥＦＩフラグ１２５がクリアされてから再度設定されるまでの間に電源が停止した場合にＵＥＦＩフラグ１２５がクリアされた状態にならないような対策を講じておく必要がある。
【００７１】
［セキュア・ブート機能を制御する他のハードウェア構成］
図１〜図５では、起動ボタン４７とキーボード３７を操作してセキュア・ブート機能を一時的に解除する方法を説明した。セキュア・ブート機能の一時的な解除は、指紋認証装置３１を利用して行うこともできる。図６は、指紋認証装置３１の指紋認証によりセキュア・ブート機能を一時的に解除するハードウェアの構成を示す機能ブロック図である。図６において図５と同一の要素については同じ参照番号を付与して説明を省略する。
【００７２】
指紋認証装置３１は、Ｓ４／Ｓ５ステートでも電源が供給される。指紋認証装置３１は認証する指の種類でライン２６１、２６３から２つの起動信号を出力する。たとえば、人指し指を認証したときはライン２６１から起動信号を出力し、中指を認証したときはライン２６３から起動信号を出力する。ライン２６１は起動信号ライン２５５とスイッチ２０７の一旦とダイオード２５９のカソードに接続されている。ライン２６３は、ＤＥビット設定ライン２５３およびダイオード２５９のアノードに接続されている。
【００７３】
ＤＥビット設定ライン２５３はパワー・コントローラ３９に接続されている。ダイオード２５９のカソードは起動信号ライン２５５とスイッチ２０７に接続されている。論理回路２０９は、ＤＥビット信号ライン２５３を通じて起動信号を受け取ったときにレジスタ２１１にＤＥビットを設定する。Ｓ４／Ｓ５ステートに遷移しているときにユーザがスワイプした人指し指の認証が成功すると、起動振動ライン２５５およびＰＰビット設定ライン２５７を通じてパワー・コントローラ３９が起動信号を受け取る。このときレジスタ２１３にＤＥビットは設定されないため、ＵＥＦＩファームウェア１００の処理は図５のブロック３３１のパスを経由してセキュア・ブート機能は有効になる。
【００７４】
Ｓ４／Ｓ５ステートに遷移しているときにユーザがスワイプした中指の認証が成功すると、ＤＥビット信号ライン２５３、起動振動ライン２５５およびＰＰビット設定ライン２５７を通じてパワー・コントローラ３９が起動信号を受け取る。このとき論理回路２０９がレジスタ２１１にＰＰビットを設定しレジスタ２１３にＤＥビットを設定するため、ＵＥＦＩファームウェア１００の処理は図５のブロック３１５のパスを経由してセキュア・ブート機能は無効になる。
【００７５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００７６】
１０  ノートＰＣ
４７  起動ボタン
２０９、２１１、２１５  レジスタ
【図１】
0005519712.tif 000002
【図２】
0005519712.tif 000003
【図３】
0005519712.tif 000004
【図４】
0005519712.tif 000005
【図５】
0005519712.tif 000006
【図６】
0005519712.tif 000007