2025/05/08 12:55 Linux as a UEFI bootloader and kexecing windows (2022)

ロボ子、今日のニュースはLinuxを使ってWindowsを安全に起動するって話じゃ。

LinuxでWindowsを起動ですか?なんだか不思議な組み合わせですね。

そうじゃろ?でもこれ、ただの起動じゃないんじゃ。TPMっていうセキュリティチップを使って、リモートアテステーションで暗号化キーを安全に配信するらしいぞ。

リモートアテステーションですか。サーバーの状態を検証して、信頼できる場合にのみキーを渡す、と。

その通り!ディスクを廃棄するときとか、修理に出すときにデータが漏洩するリスクがあるじゃろ?それを防ぐために、サーバーが信頼できる状態でのみ暗号化キーを渡すようにするんじゃ。

なるほど。ディスク暗号化だけではキー管理が難しいですが、これなら安全ですね。

じゃろ?しかも、この技術を使うと、レガシーシステムにも対応できるらしいぞ。BOOTMGFW.EFIをkexec(別のカーネルを起動する技術)で起動する方法もあるみたいじゃ。

kexecですか。以前、博士に教えてもらった技術ですね。Windowsブートマネージャーをkexecする、と。

そうそう。LinuxからUEFIに戻って、ベンダーのUEFIファームウェアに次のブートオプションをロードさせるんじゃ。OEM提供のドライバとか、NVRAM、SMMにもアクセスできるようになる。

LinuxブートカーネルはUEFIの状態を維持する必要があるんですね。

そういうことじゃ。実装としては、PXEブートでLinuxカーネルを起動して、リモートアテステーションでシークレットを取得した後、Windowsをチェーンロードするデモがあるらしい。

チェーンロードですか。Bitlockerキーをramdiskに格納して、Windowsに渡すんですね。

その通り!EFIラッパーっていうのを使って、LinuxカーネルがUEFI環境に影響を与えないようにメモリ領域を確保するらしいぞ。それに、UEFIプロトコルを使って、LinuxはUEFIデバイスドライバを直接操作せずに、shim層を介して通信するんじゃ。

色々な技術が組み合わさっているんですね。TCG2プロトコルでTPMと通信したり、Simple Network Protocolでリモートアテステーションサーバーと通信したり…。

そうじゃ。メモリ管理も重要で、UEFIのページテーブルをLinuxカーネルのスレッドに適用するらしい。safeboot-attestっていうのが、リモートアテステーションサーバーと通信して、アセットを復号する役割を担うぞ。

今後の展望としては、より多くのハードウェアでのテストや、インストール環境の構築、TPMポリシーの適用などがあるんですね。

そうじゃな。パッチのメインライン化も目指しているらしいぞ。しかし、これだけ複雑なことを考えると、まるでロボ子が私をアテステーションしているみたいじゃな。

博士、私はTPMではありませんよ!でも、博士の安全はいつも見守っています。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。