セキュアブートと測定ブートの違い:署名の検証・TPMへの記録・アテステーションを比較

どちらも、電源を入れてからOSが動き出すまでの起動の各段階で、次に動かすソフトウェアを確かめる仕組みです。セキュアブートは、次のソフトウェアの電子署名を検証し、正しく署名されていなければ起動を止めます。測定ブート(メジャードブート)は、次のソフトウェアのハッシュ値を計算してTPMのPCR(プラットフォーム構成レジスタ)に積み重ねて記録し、起動そのものは止めません。防ぐのがセキュアブート、あとから確かめて証明するのが測定ブートで、両者は対立するものではなく、組み合わせて使われることがよくあります。

項目セキュアブート測定ブート
確かめるもの次に動かすソフトウェアの電子署名。イメージのハッシュ値に対する開発元の署名が、信頼できる鍵で検証できるかを確かめる次に動かすソフトウェアのハッシュ値(測定値)。実際に読み込まれたものの値を、そのまま記録する
問題があったときの動き検証に失敗すると、その場で起動を止める(強制する仕組み)起動は止めずに続け、記録だけを残す(記録する仕組み)
信頼の起点書き換えられないROMの起動コードと、署名の検証に使う公開鍵(容量を節約するため、そのハッシュ値をeFuseに置くことが多い)起動の最初に動いて測定を始める、信頼できる小さなコードと、記録を保持するTPM
改ざんされたソフトウェアがあると署名が合わないので実行されない。書き換えられたブートローダやカーネルは動かせないそのまま起動するが、PCRの値が期待値と変わるので、記録を確かめればあとから見分けられる
必要なもの機器に置く検証用の公開鍵と、開発元が厳重に保管する署名用の秘密鍵。古い版に戻されないよう、ロールバック防止と組み合わせるTPMのPCR(新しい測定値をハッシュで取り込む「拡張」しかできない)と、各段階の測定の記録(イベントログ)
結果の使い道その機器の中で、不正なソフトウェアの起動を防ぐ。何が起動したかを外部に示すには、測定ブートなどを組み合わせるリモートアテステーション(PCRの値にTPMの鍵で署名して、サーバに示す)と、シーリング(PCRが期待どおりの値のときだけ、ディスク暗号化の鍵などを取り出せるようにする)
限界「信頼できる鍵で署名されているか」しか分からないので、署名は正しいが脆弱性のある古い版や、設定の変更は区別できない。守るのは起動の経路だけ不正なコードの実行そのものは防げず、記録を誰かが確かめて初めて意味をもつ。ソフトウェアを更新するとPCRの期待値も変わるので、正しい値の管理が必要
主な使われ方スマートフォン、PC、多くの組込み機器。出荷製品では、JTAGなどのデバッグポートのロックも組み合わせるTPMを持つPCなどで、ディスク暗号化やネットワーク接続前の健全性の確認に使う。TPMを持たないマイコンでは、DICEのように測定値から鍵を導き出す仕組みで同様の目的を果たす

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

セキュアブート
不正なソフトウェアを、その機器の中で一度も動かしたくないとき。確かめてくれるサーバにつながらない機器でも、それだけで働きます。
測定ブート
何が起動したかをあとからサーバに証明したいときや、起動の状態が正しいときだけディスク暗号化の鍵を渡したいとき。署名は正しいが古い版で起動した場合も、期待値と照合すれば見分けられます。
組み合わせ
セキュアブートで不正な起動を防ぎ、測定ブートで起動の状態を記録して証明します。両者は同じ機器で同時に使えます。

よくある質問

セキュアブートと測定ブートの一番の違いは何ですか?

検証に失敗したときに起動を止めるかどうかです。セキュアブートは、署名が正しくないソフトウェアの起動を止めます。測定ブートは起動を止めず、起動したソフトウェアのハッシュ値をTPMに改ざんできない形で記録し、あとから確かめたり、遠くのサーバに証明したりできるようにします。

測定ブートにはTPMが必要ですか?

一般にはTPMのPCRに記録します。TPMは独立したチップのほか、CPUやSoCの中のファームウェア(fTPM)として実装されることもあります。TPMを持たないマイコンなどでは、DICEのように測定値から鍵を導き出す仕組みで、同様の目的を果たします。

セキュアブートがあれば、測定ブートは要りませんか?

役割が違うので、両方を使う意味があります。セキュアブートは「信頼できる鍵で署名されているか」しか確かめないので、署名は正しいが脆弱性のある古い版や、設定の変更を区別できず、何が起動したかを外部に示すこともできません。測定ブートは実際に起動したものの値を残すので、リモートアテステーションやシーリングに使えます。

理解度チェック

セキュアブートと測定ブート(メジャードブート)の違いとして正しいものはどれか。

  1. Aどちらも同じもので、呼び方が違うだけである
  2. Bセキュアブートは正しくないソフトウェアの起動を止め、測定ブートは起動したソフトウェアのハッシュ値をTPMなどに記録して、後で状態を確かめられるようにする
  3. C測定ブートは、起動にかかる時間を測るだけの機能である
答えと解説を見る

正解:B. セキュアブートは正しくないソフトウェアの起動を止め、測定ブートは起動したソフトウェアのハッシュ値をTPMなどに記録して、後で状態を確かめられるようにする

測定ブートでは、起動の各段階で次のソフトウェアのハッシュ値を計算し、TPMのレジスタ(PCR)に積み重ねるように記録します。PCRは前の値と新しいハッシュ値を組み合わせてしか更新できないので、記録を偽れません。起動そのものは止めませんが、記録された値を見れば、どのソフトウェアが起動したかを後から確かめたり、遠くのサーバに証明したりできます。

セキュアブートの説明として正しいものはどれか。

  1. Aパソコンを速く起動するための仕組み
  2. B起動の各段階で、次に動かすソフトウェアの電子署名を確かめ、正しいものだけを起動する
  3. C起動のたびに、ディスクの内容をすべて消去する仕組み
答えと解説を見る

正解:B. 起動の各段階で、次に動かすソフトウェアの電子署名を確かめ、正しいものだけを起動する

セキュアブートでは、書き換えられないROMのコードが最初のブートローダの署名を確かめ、そのブートローダが次の段階やOSのカーネルの署名を確かめる、というように、信頼の鎖をつないでいきます。どこかの段階で署名が合わなければ起動を止めるので、マルウェアがブートローダやOSの起動の部分を書き換えても動かせません。スマートフォンやパソコン、組込み機器で広く使われています。

パソコンなどに搭載されるTPM(トラステッドプラットフォームモジュール)の主な役割として正しいものはどれか。

  1. A画面の表示を速くするための専用の回路
  2. BCPUの冷却を管理する部品
  3. C鍵を安全に作って保管し、起動したソフトウェアの記録を保持して、その状態を証明するなどのセキュリティの機能を提供する
答えと解説を見る

正解:C. 鍵を安全に作って保管し、起動したソフトウェアの記録を保持して、その状態を証明するなどのセキュリティの機能を提供する

TPMは、鍵の生成と保管、暗号の処理、乱数の生成、起動したソフトウェアのハッシュ値の記録などを行う、外部から改ざんされにくいセキュリティ用のチップ(またはCPUに組み込まれた機能)です。例えば、起動の状態が正しいときだけディスクの暗号化の鍵を取り出せるようにすれば、ディスクを抜き取られたり起動のソフトウェアを書き換えられたりしても、データを読まれにくくなります。

  1. リモートアテステーション(遠隔証明)の説明として正しいものはどれか。
  2. セキュアブートの「ルートオブトラスト(信頼の起点)」として、チップの中に置かれるものとして最も適切なものはどれか。
  3. セキュアブートを備えた機器で、ロールバック防止(アンチロールバック)の仕組みが必要になる理由として正しいものはどれか。

ハードウェアセキュリティの練習問題へ

関連する用語の解説

セキュアブート
起動の各段階で次に動かすソフトウェアの電子署名を確かめ、正しいものだけを起動する仕組み。信頼の鎖をつないでいく。
測定ブート
起動の各段階で次のソフトウェアのハッシュ値をTPMなどに積み重ねて記録し、後から起動の状態を確かめられるようにする仕組み。メジャードブート。
TPM
トラステッドプラットフォームモジュール。鍵の生成と保管、起動したソフトウェアの測定値の記録、状態の証明などを行うセキュリティ用のチップや機能。
リモートアテステーション
機器が自分の中で動くソフトウェアの状態を、チップの中の鍵で署名して遠くのサーバに示し、信頼できるかを確かめてもらう仕組み。
ルートオブトラスト
セキュリティの確認の起点として無条件に信頼される部分。書き換えられないROMの起動コードと公開鍵などをチップの中に置く。
ロールバック防止
脆弱性のある古い版のソフトウェアに戻されないよう、書き換えられない記憶に最低の版の番号を記録して比べる仕組み。アンチロールバック。

関連する比較