2021年7月7日水曜日

セキュアブート

Windows11の発表によって一般にもよく知られるようになったセキュアブート。
CPUの起動からOSが立ち上がるまでの間に
不正な(認証されていない)コードが走るのを防ぐ仕組みです。
技術的には公開鍵方式を使うのが一般的であると思われ、
CPU(SoC)内部のブートコードやCPU(チップセット/TPM)に
埋め込まれた(書き込まれた)公開鍵を使って、
これからロードして実行権を与えるコードに対し、
正当な秘密鍵で署名されたかどうかや改ざんがないかを調べ、
必要なら実行を停止するという機能を持っています。
これをOSローダーやカーネル等への実行権の引渡し毎に
いちいち調べることで信頼の鎖を構成し、
セキュアなOS環境を実現しています。
スマートフォンなんかは数年前からセキュアブート化されており、
特殊な方法で許可を与えなければ野良OSは起動できません。
もちろんセキュアであることを諦めることと引き換えです。

PCでもセキュアブートは何年か前からサポートされており、
当然Windowsとの組み合わせ前提で実現されています。
主要なLinuxディストリビューションもサポートしています。
ただ通常PCはWindowsのことしか考えておらず、
前述の公開鍵もMicrosoftのものしか積んでいないため、
ディストリビューター各社はMicrosoftにお願いして
自身のOSローダー等をMicrosoftの秘密鍵で署名してもらっているんだそう。
なんとも面倒な話です。

ということでPCのセキュアブートは無効にしておくのが吉。
実際以前セキュアブートでトラブったこともあり、
個人的にはいい印象がありません。
またたとえLinuxであっても自分でビルドしたLinux Kernelでは
セキュアブートを完了することができず、あまり意味がありません。
昔はカーネルの再構築なんて普通にやってましたが、
今時は配布されたバイナリーをそのまま使うのが標準的なので
あまり関係ないとは言え、そもそも大いなる自由を享受すべき
PCやLinuxの文化にはそぐわない気もします。
まあセキュリティ最優先時代に変わったと理解するしかないか。

0 件のコメント:

コメントを投稿