前号: No 428 / 次号: No 430 / 一覧(note.com)へ / ブログページに戻る
前号では、ゼロトラストというものを実現するためには、Windows 10 では無理があったために、Windows 11 に移行せざるを得なかったというお話をしました。 では、実際にゼロトラストを守るために、どんな仕組みが用意されているのでしょうか? 今回は世のWindowsパソコン(PC)に登載されている、安全な起動(Secure boot)という仕組みについて、お話します。 なお、今回はマニアックかつハードウェア寄り、という相当にニッチな内容でして、やや難しい目になっています。1. ゼロトラストとは?(おさらい)
ゼロトラストというのは、コンピュータやネットワークを構成する全ての要素を、信頼できない前提で、ソフトウェアやハードウェアを作ろう、という考え方です。 つまり、「いくらなんでもCPUは信じてもいいだろう」「さすがに起動処理は信じるしかないよね」といった前提なしでも安全に動作させましょう、ということです。 具体的には、プログラムを動かす前に、「待てヨ?このアプリは信頼できるのか?」といったチェックを各所に入れ、もしチェックエラーになれば、「こいつは信頼できないから、実行はしないぞ」と判断するというものです。 一般にゼロトラストというと、ネットワーク上での安全レベルを向上させるための手法として知られています。 社内へのアクセスが許されるにしても、他部門には簡単にアクセスさせない、許可には関所でのチェックが必要、と多重に防禦しようというわけです。 こうした多重防禦によって、万一ランサムウェアなどのマルウェア(ウイルス)の侵入を許してもなお、被害拡大が抑えられるわけです。 Windowsパソコンのゼロトラストも同じような考え方で、プログラムを実行する前に、そのプログラムは本当に正しいか?といった事前チェックをすることで、安全を確保しようという考え方です。2. UEFI
「UEFI?なんだそれ?」となりそうな単語ですが、このUEFIこそがパソコンの安全な起動を担っています。 UEFI(ユーイーエフアイ:Unified Extensible Firmware Interface)は、Intel(インテル)とHP(ヒューレットパッカード)が2005年頃に共同開発をした、コンピュータ起動時の面倒を一手に引き受けるプログラム(正確にはインタフェース仕様)のことです。 たいがいのパソコンの中にはUEFIが内蔵されています。AppleのMacintoshにもUEFI相当の機構が載っているくらいです。 コンピュータが動く時って、裏側では実にいろんな作業が必要です。 UEFIはそういった、面倒ごとのかなりの部分を吸収してくれるのです。 このUEFIはコンピュータの起動時、最初に実行されるプログラムです。 そう、実は電源を入れると、Windowsよりも先に動いているプログラムがあるのですね。 このUEFIの役割はすごく地味なもので、コンピュータ起動時に各パーツがちゃんと動いているかをチェックし、そして目的のOS(通常はWindows)の起動プログラム(ブートローダ)を動かすまでが仕事です。 そのUEFIが、、安全な起動を実現するために、決定的に重要なのです。3. 安全な起動
安全な起動、って何でしょうか? ここでは、悪意のプログラム(ウイルスなど)に騙されることなく、不正な動きを見つけ出せる仕組みのことを指します。 コンピュータでWindowsが使えるようになるまでには、たくさんのプログラムを適切な順で実行する必要があります。 Windowsを起動させた時、ログイン画面が出るまでに、どれくらいのプログラムが実行されると思われますか? なんと、裏側では百を超えるプログラムが実行されているのです。 この中に一つでも不正なプログラムが含まれていると、安全とは言えません。 特に最初に動かすプログラムの役割は重要です。 このプログラムがマルウェア(ウイルス)に犯されていると、それ以降の全てが信用できないからです。 ですので、安全に起動させるためには、それぞれのプログラムを動かす前に「ホントにおまえは安全なのか?」というのを確認する必要があります。 その次のプログラムを実行する前も「おまえは安全か?」をチェック、その次も...という具合に、プログラムを動かす前に、安全かどうかをチェックする必要があります。 これを「安全(信頼)の連鎖(chain of trust)」と呼びます。4. 誰がどうやって安全って決めるの?
でも、「安全」なんて漠然としたことを、コンピュータにどうやって判断させるの?と思いますよね? この「何をもって安全とみなすか」の定義ってすごく難しいのです。 UEFIがどうしているかというと、電子署名というものを使っています。 「あれ?電子署名って、最近見た覚えがあるぞ」という方、いつもご愛読ありがとうございます。415号(2025年7月配信)で書いています。 実はパスキーは「電子署名」だった(415号) https://note.com/egao_it/n/n6f23853f03b5 電子署名というのは、ハンコの印影のようなもので、印影(データ)を検証することで、ホントに本人が署名したものかどうかがわかる仕組みになっています。 実際の署名というのは、数百ケタの巨大な数値で、印影のような画像データではありません。 というわけで、プログラムを実行する前に、署名の有無を確認します。 署名がない場合は、「こいつは信用ならない」ということで、実行を停止します。結果として、目的のOS(例えばWindows)は起動しません。 また、署名が正しくない(計算結果が期待値と異なる)場合も同様です。 つまり、署名が正しいこと=安全である、と判断するわけです。5. 信頼の基点
さて、実は、ここまでの話だけですと、実は100%の安全は確保できないということにお気付きでしょうか。 最初に動くプログラムのUEFIが改ざんされた場合、それを「不正だ」と検出する仕組みがないのです。 もちろん、それを防ぐ方法も用意されています。 今度は、UEFIの正しさを検証するプログラムがあればいいのです。 ですが、その検証プログラムが改ざんされたら?と考えると堂々めぐりですよね。 この問題は、絶対に改ざんできない領域――CPU内部にチェックプログラムを置くという意外な方法で解決しているのです。 この仕組みを、Boot Guard (またはAMD Platform SecureBoot)と呼びます。 ところが、これは利用者がON/OFFできるものではありません。 だって、簡単にOFFにできるなら、攻撃側がそれを見逃すはずがないからです。 この機能は、メーカがパソコン出荷前に仕掛けを施して、有効にしないといけません。 一度有効にすると、メーカといえど無効に戻すことはできません。 Boot Guardが有効な場合、電源投入時にCPUがUEFIプログラムの改ざんチェックをします。このチェック処理も書き換えができないように、CPU内部のマイクロコード(CPU内部用のプログラムコード)として動いています。 こうして、Boot Guardを有効化することで、真のゼロトラストが実現できるのです。 いいことづくめのようなBoot Guardですが、難点がいくつかあります。 Boot Guardを有効化すると、起動時には必ずUEFIのチェックを行います。 ところがこのチェックプログラムは機種(UEFI)に依存しますので、CPUを外して他のコンピュータ(特に異なるメーカのもの)に装着すると、UEFIチェックで「不正だ!」と判断され、起動してくれません。もちろん、上述の通り、後で無効にはできません。 結果、可搬性がめちゃくちゃ悪くなります。 また、メーカ側での有効化がかなり繁雑で、コストがかかるのも問題です。 結局、せっかく考えられたBoot Guardですが、使われているのは、特殊用途やセキュリティを最重視する場合くらいで、一般的に販売されているパソコンなどで、有効化しているものはまずありません。 Boot Guardは理想的な「ゼロトラスト」を実現してくれますが、そこまでしなくても十分なので、利用頻度は低いのです。 これもまた、「がんばりすぎないセキュリティ」ですね。6. まとめ
前回に続き、今回はゼロトラストを実現するためにパソコンの中で何が行われているかをお話しました。 今回の話を書くにあたって、同様のテーマの記事を調べてみたのですが、ほとんどなくて驚きました。 おそらくは、ハードウェアの話とセキュリティの話、両方に興味を持つ読者が少なく、さらに両方をブリッジした文章を書ける人が少ないという二重苦なのでしょう。 ですが、本来はセキュリティ対策にはハードウェアの知見も重要です。 今回のようなテーマに、皆さんも是非興味を持っていただきたいと思います。 次回もお楽しみに 今日からできること: ・Secure boot はONにしましょう。 →不要と思ってOFFにしている方は是非ONにしてください。 (通常は最初からONになっています) ・パソコンの起動が遅くても、「いろいろやっとるんやな」と 思ってあげてください。 →ホントに遅い時は、トラブルの予兆かも。 専門家に見てもらいましょう。 (本稿は 2025年10月に作成しました)
前号: No 428 / 次号: No 430 / 一覧(note.com)へ / ブログページに戻る