web-dev-qa-db-ja.com

サードパーティモジュールをインストールするときに「セキュアブート」を無効にすることがポリシーに適用される理由

16.04をインストールするときに、インストールする場合は「Secure Boot」をオフにするように求められましたサードパーティのモジュール/ドライバー

従わなかった。

そして、使用するサードパーティのドライバー(bcmwl-kernel-source)のみを手動でインストールしたとき、再度尋ねられました(パッケージのインストール中) 「セキュアブート」をオフにします。

bcmwl-kernel-sourceの使用は、Secure Boot in 15.1で完全に問題ありませんでした。これは私にはバグとは関係ないようです。

これは、Ubuntuがサードパーティのドライバー/モジュールに「セキュアブート」で動作(??)させるための署名を拒否したように見えます。または、サードパーティのモジュールは安全ではなく、「セキュアブート」を破ると見なしているようです。私は正しいですか?

46
solsTiCe

これはバグではなく、機能です。

Anthony Wongが言うように、DKMSパッケージをインストールすると、パッケージを自分でコンパイルするため、Canonicalはモジュールに署名できません。

ただし、セキュアブートは間違いなく使用できますが、これは、モジュールを信頼するかどうかを判断できないため、セキュアブートが自分から保護しようとするユースケースです。

デフォルトでは、UEFIマシン上にプラットフォームキー(PK)があります。これは、プロセッサにコードをロードするための最終的に信頼できる認証局です。

GRUB、またはシム、またはその他のブートメカニズムは、ルートCA(PK)によって信頼されているKEKによってデジタル署名できるため、コンピューターは、設定なしで、Ubuntu Live USB/DVDなどのソフトウェアを起動します。

Ubuntu 16.04では、カーネルはCONFIG_MODULE_SIG_FORCE = 1で構築されます。つまり、カーネルは、プラットフォーム内のモジュールが信頼できるキーによって署名されることを強制します。 UEFIプラットフォームには、デフォルトでは制御できないPKが含まれているため、ご使用のマシンで認識されるキーでバイナリに署名することはできません。

一部の人々はそれに対して不平を言ったりbutったりしますが、あなたが望む新しいキーを登録するのは自分自身である以上に、(セキュリティの観点から)本当に良い方法はありません。

ブートシステムがshimを使用している場合は、マシン所有者のキーデータベースと呼ばれるものを使用でき、MOKとしてキーを登録できます(mokutilでこれを実行できます) )。そうでない場合は、キーEFIデータベース内を署名キーとして登録することもできます。

キーを登録したら、MOKでDKMSビルドのパッケージに署名できます(/usr/src/kernels/$(uname -r)/scripts/sign-fileにPerlスクリプトがあるはずです)、および署名後、カーネルにロードできます

確かに、誰かがこれについてより視覚的な指示を行う必要があり、おそらくウィザードやキーを考慮に入れるためのより良いDKMS標準を作成する必要がありますが、これは現在のものです。

独自のカーネルモジュールに署名する方法については、この説明を参照できます。 https://askubuntu.com/a/768310/12049

38
ssice

要するに、これはバグではなく、16.04で導入された新しい変更です。

インストールしているのはdkmsパッケージだからです。 DKMSモジュールはユーザーのマシンでコンパイルされるため、Canonicalはモジュールに署名できません。 Canonicalが署名できない場合、デジタルで検証する方法はありません。セキュアブートを有効にしている場合、モジュールを使用できないことを意味します。使用するには、セキュアブートを無効にする必要があります。そのため、質問が表示されます。

以前のリリースではなく、16.04でのみ発生する理由については、Rod Smithが適切な回答を提供しました。 Ubuntu 16.04では、Ubuntuはカーネルレベルへのセキュアブートの実施を開始します。 16.04より前のUbuntuでは、セキュアブートが有効になっていても、署名されたカーネルと署名されたカーネルモジュールの使用を実際に強制していません。しかし、これは16.04には当てはまりません。

これは関連するバグです: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

これは関連する青写真です: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot

20
Anthony Wong

別の方法として、独自のキーを作成し、パブリックパーツをMOKデータベースに挿入し、プライベートパーツでコンパイルしたモジュールに署名します。詳細情報はこちらをご覧ください: buntu 16.04へのアップグレード後に「vboxdrv」をロードできませんでした(セキュアブートを維持したい)

6
user261814

受け入れられた答えは非常に完全ですが、ここから取られたこの簡単な情報を追加したいと思います。

https://askubuntu.com/a/843678/664391

基本的に安全なブートは、インストールした一部のドライバーのロードを妨げる可能性があり、非常にイライラする可能性があります。私はこれを自分で行ってきました。ドライバーが正しくインストールされ、すべてがうまくいくように見えましたが、うまくいきませんでした。 セキュアブートでOSがロードできなかったことを見つけるのに時間がかかりました。

0