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