LinuxでMOKを使用する方法は?

LinuxでMOKを使用する方法は?

Nvidiaドライバをインストールした後、MOKパスワードを設定するように求められます。そうしないと、サードパーティのドライバが正しく動作しない可能性があるため、パスワードを作成しました。再起動後、いくつかのオプションを含む青いMOK管理画面が表示され、そのうちの最初のオプションは起動を続行することでした。だからこれを選択しましたが、起動が完了したときに2番目のモニタが認識されませんでした。最初にMOKに関するメッセージが表示されたときに、セキュアブートについて読んだことを覚えていて、BIOSでブートしてセキュアブートをオフにしました。これで2番目の画面が戻ってきました。いくつかの質問が浮かんでいます。

  1. まず、MOKとは何ですか?
  2. 私にそれが必要ですか?必要でない場合はどうすれば削除できますか?
  3. NvidiaドライバのインストールまたはMOK設定のために2番目の画面が認識されませんか?
  4. セーフブートをオフにすることはできますか?

助けてくれてありがとう!

答え1

広告1)

マシン所有者キー(MOK)は、承認されたオペレーティングシステムコンポーネントとドライバのみを実行できるようにすることでブートプロセスを保護するように設計されています。それにもかかわらず、MOKは「BIOS」またはコンピュータ内部のいくつかの起動コードとして実装する必要があります。

主なアイデアは、オペレーティングシステム(OS)がロードされたときに署名されたコードのみを実行できることです。一度起動すると、オペレーティングシステムはBIOSからシステムを保護する責任を負うことができます。

MOK システムは公開鍵暗号化を使用します。つまり、鍵ペアを作成し、秘密鍵と秘密鍵ペアを使用して実行できるすべてのコンポーネントに署名します。これには、GRUB ブートローダ自体が含まれます。その後、BIOSは公開キー(インストールする必要があります)を使用してコードを実行する前に署名を確認します。

以下は、セキュアブートとMOKに関するいくつかのドキュメントです。

私の個人的な意見では、MOKの利点は、キーを直接生成して信頼できるコンポーネントに署名できることです。以前はEFI BIOSがMicrosoftの公開鍵のみをインストールし、Linuxブートローダの署名を消極的にしました:-) 過去にSHIM(EFI BIOSとGRUBの間の仲介者)が必要だった理由です。

すべてのセキュアブート方法は、システムが正常に起動し、マルウェアによって改ざんされないようにして、ハッカーやウイルスからシステムを保護することを願っています。スタートアップコードまたはドライバーが改ざんされている場合は、システムがそれを検出して適切な処置を取ることができます。攻撃者がコンピュータに物理的にアクセスできる場合(「邪悪なメイド攻撃」)、コンピュータを保護するオプションはあまりありません。すべての機密データを含むディスクが暗号化されていても、攻撃者は起動コードを修正して読み取ることができます。パスワードを入力するときにパスワードをインポートしてから、後で読むために送信または保存してください。セキュアブートはこれらの変更を防ぎます。

Kyle Rankinは、Libremノートブックファミリのブートプロセスセキュリティのために多くの作業を行いました。彼の作品に関する素晴らしい記事は次のとおりです。。私はそれがあなたのシステムに直接適用されていなくても読む価値があると思います。アイデアは同じです。

広告2)と4)

MOKとセキュアブートが必要ですか?ハッカー、特にラップトップに物理的にアクセスできる場合、またはブラウザ/オフィス/Linuxのバグを介してインターネットからrootアクセス権を取得できるハッカーによって正常に破損した場合は、そうではありません。無効化については正しいことを行いました。 BIOSでセキュアブートを無効にします。

答え2

広告3)

セキュアブートが適用されると、有効な署名を持つカーネルモジュールのみが許可されます。 MOKのインストールプロセスが実際に完了していないため、Nvidiaモジュールの署名検証が失敗し、Nvidiaモジュールのインストールプロセスがカーネルドライバをnouveauブラックリストに載せた可能性があるため、システムは高速化されていないefifbディスプレイドライバに置き換えられる可能性が高くなります。ファームウェアに設定されているものがサポートされます。

MOKの不正な変更からシステムを保護するために、MOKインストールプロセスは、オペレーティングシステムが実際に実行されている間ではなく、起動時にのみアクセスできるようにMOKを保存するようにファームウェアに要求します。したがって、MOKのインストールプロセスを再開する必要があります。

まず、オペレーティングシステムの実行中にMOKを生成してインストールを準備し、インストールプロセスの第2段階を保護するために使い捨てパスワードを生成する。これにより、システムが再起動し、shimx64.efiMOKインストールプロセスが開始されたことが検出され、起動時に青いMOKマネージャ画面が表示されます。このとき、「キーのインストール」オプションを選択し、再起動する前に設定した使い捨てパスワードを入力して確認する必要があります。このパスワードはもう必要ありません:MOKのインストールが成功すると、カーネルモジュール管理ツールが必要なときに自動的にMOKを使用でき、失敗した場合は最初からMOKのインストールプロセスを開始する必要があります。


最初に、セキュアブートファームウェアは*.efi暗号ハッシュを介して明示的にホワイトリストに含まれているか、セキュアブートによって生成されたブートローダファイルのみを受け入れます。証明書に署名されたファームウェアNVRAM 1個。これにより、shimx64.efiLinuxディストリビューションの署名証明書とオプションのMOK証明書が許可された証明書(非永続)のリストに追加されます。

これにより、特定のLinuxディストリビューションのセキュアブート署名キーを使用して、署名付きブートローダと展開カーネルをshimx64.efiロードできます。grubx64.efiUEFI用に構築されている場合、LinuxカーネルにはUEFIブートスタブを含めることができます。これにより、カーネルは PE32+ バイナリのように見えるため、セキュアブート互換方式でカーネルに署名することもできます。

セキュアブート仕様では、カーネルがすべてのカーネルコードを実行する前に署名検証を維持する必要があります。そうしないと、互換性のないカーネルが将来のセキュアブート仕様互換ファームウェアバージョンによってブラックリストに追加される可能性があります。したがって、カーネルはロードするすべてのカーネルモジュールに対して署名検証を実行します。この目的のために、カーネルは構築された署名鍵を公理的に信頼します。展開カーネルは通常、Secure Bootが許可するキーをホワイトリストに追加します(Modern Linux以前のバージョンを参照keyctl list %:.builtin_trusted_keys)。 MOKが設定されている場合はここに含まれます。keyctl list %:.secondary_trusted_keyskeyctl list %:.system_keyring

関連情報