Linuxシステムで作業していて、セキュアブートを構成したいと考えています。面白いのは、UEFIブートローダーを含め、システムのすべての部分を所有していることです。
ブートプロセスの一部が欠けていると誰かが教えてくれるのではないかと思っていました。
結論として、私は自分のキーを使用し、自分のキーだけを使用してgrub2とカーネルを検証したいと考えています。それを実現するには何が必要ですか?
ブートプロセスは次のように説明します。
1.)電源を入れ、セキュアブート対応UEFIファームウェアの実行を開始します
2.)ファームウェアは、システムのNVRAM(またはコンパイル済みのデフォルト)に保存されているセキュアブートキーセットに対して潜在的なブートローダーをチェックします。
3.)ブートローダーはOSカーネルを同じ方法でチェックすることになっています。
4.)セキュアブートに準拠し、意味のある効果を発揮するために、Linuxカーネルはロードされたカーネルモジュールを暗号でチェックする必要もあります。
最新のカーネルには、ポイント4)のオプション機能が含まれています。RedHatなどのエンタープライズディストリビューションのカーネルは、セキュアブート対応システムでの起動時に自動的に有効にします。カスタムカーネルには、コンパイル時に署名キーを提供できます。
RedHatカーネルの場合、実行時に許可されるキーのリストは、(メインカーネルの署名に使用されるキー)+(セキュアブートdb
キーセットにあるもの)+(MOK
存在する場合は、shim.efi
が使用するセット)。
したがって、セキュアブートを使用していて、配布カーネルでサードパーティのカーネルモジュールを使用する予定の場合は、それらに署名し、許可リストにある署名キーを取得する必要があります。ただし、独自のカーネルをロールしたり、セキュアブートキーを制御したりしている場合は、セキュアブート秘密キーを使用して、サードパーティのモジュールに署名することもできます。
セキュアブートを制御できるようにするには、システムでセキュアブートキーの変更を許可する必要があります。関心のある4つの(セットの)キーがあります。
db
、許可されたブートローダーのパブリック証明書のセット、および/または許可されたSHA256チェックサムブートローダーdbx
明示的にブラックリストに登録されたブートローダーの公開証明書やチェックサムのセット。KEK
、db
への署名付き更新の検証に使用される公開証明書のセットPK
KEK
への署名付き更新を検証するために使用される唯一の主キー(証明書)。デフォルトでは、システムのハードウェアメーカーのPK、およびKEK
とdb
にMicrosoftとハードウェアメーカーの両方のキーが必要です。これにより、Microsoft認定のブートローダー(一部のLinuxで使用される「shim」を含む)およびハードウェアメーカーのファームウェア更新ツールをそのまま使用できます。
最初のステップは、UEFI BIOSセットアップ設定を非常に注意深く調べることです。一部のシステムでは、セットアップですべてのセキュアブートキーの追加と削除の両方が可能です。他のシステムでは、唯一のオプションは工場出荷時のデフォルトのキーにリセットし、すべてのキーをクリアすることです。カスタムキーを使用できるようにするために、セットアップですべてのキーをクリアする必要がある場合は、既存のキーを最初にバックアップして、必要に応じて選択的に復元できるようにすることができます。
セキュアブート仕様によると、PK
がクリアされている場合、セキュアブートはいわゆるセットアップモードになります。これにより、すべてのキーセットを自由に編集して、無制限のブートを行うことができます。したがって、理想的には、PK
を削除するだけで、他のキーは現状のままにしておきます。
最良の場合、これにより、適切なツールを使用して、UEFI対応OS内からセキュアブートキーを編集できます。最悪の場合、UEFIシェルとkeytool.efi
ユーティリティを James Bottomleyのefitoolsパッケージ から使用する必要があります。
最終目標は、おそらく次のようになります。
db
セットには次のものが含まれている必要があります:KEK
セットには次のものが含まれている必要があります:db
およびdbx
を更新するための独自の証明書db
やdbx
へのアップデートが含まれることがあり、これらのアップデートは正常にインストールされない場合があるためです。セキュアブートへのアクセスが拒否されましたPK
に配置して、セキュアブートを再び有効にする必要があります。このセクションの SakakiのEFIインストールガイド は、自己署名カーネルを認証するためのキーをインストールする方法を示しています。ガイド全体はGentoo向けに作成されていますが、このセクションのほとんどはすべてのOSでの使用に適合させることができ、それがどのように機能するかも説明しています。