これらは、JamesBottomleyが彼のブログで取った1つの投稿の翻訳です。 最初の投稿は2013月XNUMX日に行われ、「LCAXNUMXとセキュアブートの再構築」と呼ばれています。
私は少し静かだったので、LinuxFoundationのSecureBoot Loaderで何が起こっているのかについて最新情報を提供する時が来ました(特にLCA2013で取り上げられました)。 ((スライドへのリンク)
問題の本質は、GregKH(カーネル開発者のGreg Kroah-Hartman)が、提案されたPre-BootLoaderがGummibootでは現在の形式では機能しないことをXNUMX月初旬に発見したことです。 これは、すべてのブートローダーをアクティブ化するというLinuxFoundationの使命を果たしていないことを意味するためやや困難でした。 調査では、理由は単純でした。Gummibootは、GRUBのような大規模なリンクローダーではなく、UEFIプラットフォームで利用可能なすべてのサービスを利用する小型でシンプルなブートローダーを作成できることを実証するために作成されました。 残念ながら、これはBootServices-> LoadImage()関数を使用してカーネルを起動することを意味します。つまり、起動するカーネルはUEFIプラットフォームでセキュアブートチェックを実行する必要があります。 もともとは、次のようなPre-BootLoaderです。 シム (Mathew Garrettのブートローダー)は、PE / Coffリンクの読み込みを使用して安全なブートチェックを打ち負かすように作成されました。 残念ながら、Pre-BootLoaderによって実行されるものは、リンクローディングを使用して、ロードしたいもののセキュアブートチェックを打ち負かす必要があるため、意図的にリンクローダーではないGummibootはこのスキームでは機能しません。
そのため、再構築して書き直す必要がありました。問題は、「ポリシーに従うMicrosoftによって署名されたリンクローダーを作成する方法」から「BootServices-> LoadImage()関数を使用するためにブートローダーのすべての子をアクティブ化する方法」になりました。彼らの方針に従う方法の。 幸い、独自のアーキテクチャセキュリティプロトコルをインストールすることで、UEFIプラットフォーム署名インフラストラクチャを傍受する方法があります。 残念ながら、プラットフォーム初期化仕様は実際にはUEFI仕様の一部ではありませんが、ありがたいことに、見つけることができるすべてのWindows8システムによって実装されています。 新しいアーキテクチャはそのプロトコルを傍受し、独自のセキュリティチェックを追加します。 ただし、XNUMXつ目の問題があります。アーキテクチャセキュリティプロトコルのコールバック中に、必ずしもUEFIシステム画面を所有しているとは限らないため、バイナリの実行を承認するためのユーザーテストを実行することは完全に不可能です。 幸い、これを行うための非対話型の方法があり、それがSUSE Machine Owner Key(MOK)メカニズムです。 そのため、Linux Foundation Pre-BootLoaderは、標準のMOK変数を使用して許可されたバイナリハッシュを格納するように進化しました。
これらすべての結果として、GummibootでPre-BootLoaderを使用できるようになりました(LCA2013のデモで行われたように)。 起動するには、2つのハッシュを追加する必要があります。XNUMXつはGummiboot自体用で、もうXNUMXつは起動するカーネル用ですが、起動シーケンス全体を制御する単一のセキュリティポリシーがあるため、実際には良いことです。 Gummiboot自体も、セキュアブートによるバグを認識するようにパッチが適用され、登録するハッシュを通知するメッセージが表示されます。
新しいアーキテクチャがどのように機能するかを説明する別の投稿を行いますが、先月何が起こったのかを説明したほうがよいと思いました。
そして、彼が昨日行ったこのXNUMX番目の投稿は、「LinuxFoundationセキュアブートシステムの立ち上げ」と呼ばれています。
約束通り、これがLinuxFoundationのセキュアブートシステムです。 実際には6月XNUMX日にマイクロソフトからリリースされましたが、旅行、会議、会議で、今日まですべてを検証する時間がありませんでした。 ファイルは次のとおりです。
PreLoader.efi (md5sum 4f7a4f566781869d252a09dc84923a82)
ハッシュツール.efi (md5sum 45639d23aa5f2a394b03a65fc732acf2)
また、起動可能なミニUSBイメージを作成します。 (ddを使用してUSBにインストールする必要があります。イメージにはGPTパーティションがあるため、ディスク全体を使用します)。 カーネルがあるべき場所にEFIシェルがあり、gummibootを使用してロードします。 あなたはここでそれを見つけることができます (md5sum 7971231d133e41dd667a184c255b599f).mini-USBイメージを使用するには、loader.efi(\ EFI \ BOOTフォルダー内)およびshell.efi(ルートフォルダー内)のハッシュを入力する必要があります。 KeyTool.efiのコピーも含まれているため、実行するにはハッシュを入力する必要があります。
KeyTool.efiはどうなりましたか? もともとは署名済みキットの一部になる予定でした。 ただし、Microsoftはテスト中に、UEFIプラットフォームのXNUMXつにバグがあるため、プラットフォームキーをプログラムで削除するために使用できることを発見しました。これにより、UEFIセキュリティシステムが台無しになります。 これを解決できるまで(ループ内にプライベートベンダーがあります)、KeyTool.efiに署名することを拒否しましたが、実行する場合はMOK変数を追加して承認できます。
何が機能し、何が機能しないかについてのフィードバックを収集することに興味があるので、これがどうなるか教えてください。 特に、セキュリティプロトコルのオーバーライドが一部のプラットフォームで機能しないのではないかと心配しているので、特にそれらのプラットフォームで機能しないかどうかを知りたいと思います。
フエンテス:
http://blog.hansenpartnership.com/lca2013-and-rearchitecting-secure-boot/
http://blog.hansenpartnership.com/linux-foundation-secure-boot-system-released/
それが良いニュースか悪いニュースかを判断します。