/boot
には、2つのvmlinuz
カーネルファイルがあります。
vmlinuz-4.8.0-37-generic
vmlinuz-4.8.0-37-generic.efi.signed
これら2つのカーネルファイルの違いは何ですか? 2番目のものに署名するのは誰ですか(名前が示すように実際に署名されている場合)、そしてUEFI/BIOSは*-generic.efi.signed
の代わりに*-generic
を信頼して使用することをどのように知っていますか?
.efi.signed
で終わるファイル名のカーネルは、セキュアブートで使用するためにCanonicalによって署名されています。ただし、ほとんどのコンピューターにはCanonicalの署名を信頼しないファームウェアがあります。署名されたカーネルが信頼されるのは、Shimプログラム( ESP のshimx64.efi
バイナリ)の助けを借りてのみです。
少し詳しく説明すると、セキュアブートを有効にしたUbuntuの署名済みコンポーネントのロードパスは次のようになります。
EFI -> Shim -> GRUB 2 -> Kernel -> Kernel modules
以前、IIRC、Ubuntu 15.10、UbuntuのGRUB 2はカーネルにセキュアブートポリシーを適用しませんでした。また、カーネルはカーネルモジュールにセキュアブートポリシーを適用しませんでした。しかし、それは最近厳しくなりました。私の知る限り、通常のシステムバイナリの署名を要求する計画はありません。
Ubuntuに未署名のカーネルファイルが存在する理由をはっきりとは知りません。署名されたファイルは、セキュアブートをサポートしていないシステム(pure-BIOSコンピューターを含む)でも正常に機能します。したがって、署名のないファイルはかなり冗長です。
Shim以降の各コンポーネントは、署名なしの形式で取得したり、署名を削除したりできることに注意してください。自分でShimを構築する場合、Canonicalの公開キーを自分の公開キー、または他の任意の公開キーに置き換えることができます。 (ほとんどの主要なディストリビューションには、独自のキーが埋め込まれた独自のShimバイナリがあります。)Microsoftに署名させない限り、ソースからShimを構築しても意味がありません。これには100ドルかかり、lotの労力がかかります。自分で署名するには、キーをマシン所有者キー(MOK)として追加する方が、Shimを再構築してMicrosoftが署名するよりも簡単です。 、これらのすべての部分がどのように組み合わされるかについて変更できるものがたくさんあります。詳細については、 セキュアブートのメインページ および セキュアブートの完全な制御を取得するページ を参照してください。セキュアブートの管理方法。
署名されたバージョンは、UEFIセキュアブート用です。非対称暗号化を使用して署名されています。暗号化を解除するキーは、暗号化に使用したキーとは異なることを意味します。 BIOSには公開鍵のみがあり、署名が正しい(改ざんされていない)かどうかを確認できます。このような署名を作成するための秘密鍵は秘密であるため、自分で作成することはできません。 BIOSがそれを信頼し、開始できるようにする理由です。