UEFIとセキュアブートについて少し

UEFI



UEFI(Unified Extensible Firmware Interface)-古いBIOSの置き換え。 この仕様は、Itanium用にIntelによって考案され、EFI(Extensible Firmware Interface)とも呼ばれ、x86、x64、ARMに移植されました。 ブート手順自体とOSとの対話方法の両方で、BIOSとは大きく異なります。 2010年以降にコンピューターを購入した場合、おそらくUEFIを使用しています。



UEFIとBIOSの主な違い:




GPT-MBRに代わる新しいマークアップ方法。 MBRとは異なり、GPTは2TBを超えるディスクと無制限の数のパーティションをサポートしますが、MBRは松葉杖なしで4つのみをサポートしますUEFIはデフォルトでGPTパーティションのFAT32をサポートします。 UEFIはMBR自体をサポートしていません; MBRを使用したサポートとダウンロードは、CSM(互換性サポートモジュール)拡張機能によって実行されます。





UEFIには、ブートサービスとランタイムサービスの2種類のサービスがあります。 前者は、OSをロードする前にのみ機能し、グラフィックおよびテキスト端末、バス、ブロックデバイスなどとの対話を提供し、ランタイムサービスはOSを使用できます。 ランタイムサービスの一例は、NVRAMに値を保存する変数サービスです。 Linuxは可変サービスを使用して、コンピューターの再起動後に取り出すことができるクラッシュダンプを保存します。





UEFIでアプリケーションを使用できます。 ドライバーをUEFIにアップロードできます。 本当にない! UEFI Shellのようなものがあります。 製造元によってはUEFIに含まれていますが、私のラップトップ(Lenovo Thinkpad X220)にはありません。 ただし、インターネットからダウンロードして、USBフラッシュドライブまたはハードドライブに置くことができます。 また、ReiserFS、ext2 / 3/4、その他のドライバーもあります。 UEFIシェルからそれらをダウンロードし、UEFIから直接ファイルシステムの広がりを見て回ることができます。

UEFIはネットワークもサポートしているため、ネットワークカード用のUEFIドライバーが見つかった場合、またはマザーボードの製造元によって有効になっている場合は、シェルから8.8.8.8にpingを送信できます。

一般に、UEFI仕様は、OSからのUEFIドライバーの相互作用を提供します。 OSにネットワークカード用のドライバーがなく、UEFIにロードされている場合、OSはUEFIを介してネットワークカードを使用できますが、そのような実装は見ていません。





一般に、マルチブートが必要な場合、UEFIはブートローダーを必要としません。 独自のメニュー項目を追加でき、それらはUEFIブートメニューのディスクとフラッシュドライブのすぐ隣に表示されます。 これは非常に便利で、ブートローダーをまったく使用せずに、すぐにカーネルをLinuxにロードできます。 したがって、サードパーティのブートローダーなしでWindowsおよびLinuxをインストールできます。



UEFIでの読み込みはどのように行われますか?


識別子EF00のGPTパーティションとFAT32ファイルシステムから、ファイル\ efi \ boot \ boot [アーキテクチャ名] .efiがデフォルトでロードおよび起動されます(例:\ efi \ boot \ bootx64.efi

つまり たとえば、Windowsで起動可能なUSBフラッシュドライブを作成するには、GPTでUSBフラッシュドライブをマークし、その上にFAT32パーティションを作成し、ISOイメージからすべてのファイルをコピーします。 ブートセクタはもうありません。忘れてください。

UEFIへのダウンロードはずっと高速です。たとえば、電源ボタンを押してArchLinuxからラップトップを完全に操作可能な状態にダウンロードするのはわずか30秒です。 私の知る限り、Windows 8にはUEFIモードでのダウンロード速度の最適化も非常に優れています。



セキュアブート



インターネットで次のような多くの質問を見ました。

「マイクロソフトはWindows 8でセキュアブートを実装していると聞きました。このテクノロジーは、ユーザーをマルウェアから保護するために、たとえばブートローダーによって不正コードを実行することを許可しません。 また、Secure Bootに対するFree Software Foundationのキャンペーンがあり、多くの人々がそれに反対しました。 Windows 8を搭載したコンピューターを購入した場合、Linuxまたは別のOSをインストールできますか? または、このテクノロジーはWindowsのみを実行できますか?」


そもそも、このテクノロジーはマイクロソフトによって発明されたものではありませんが、UEFI 2.2仕様の一部です。 セキュアブートを有効にしても、Windows以外のOSを起動できないわけではありません。 実際、Windows 8の実行が認定されているコンピューターとラップトップは、セキュアブートとキーを管理する機能を無効にできる必要があるため、心配する必要はありません。 切断不可能なセキュアブートは、WindowsがプリインストールされているARMタブレットでのみ使用可能です



セキュアブートを提供するものは何ですか? ブート段階だけでなく、OS実行段階でも、署名されていないコードの実行から保護します。たとえば、WindowsとLinuxの両方がカーネルドライバー/モジュールの署名を検証するため、カーネルモードで悪意のあるコードを実行できません。 ただし、 これは 、ほとんどの場合、物理的なアクセスで、キーを自分のキーに置き換えることができるため、 コンピューターへの物理的なアクセスがない場合にのみ当てはまります。



セキュアブートには、セットアップとユーザーの2つのモードがあります。 最初のモードは設定に使用され、そこからPK(プラットフォームキー、デフォルトではOEMから)、KEK(キー交換キー)、db(許可されたキーのデータベース)、dbx(失効したキーのデータベース)を置き換えることができます。 KEKはそうではなく、すべてがPKによって署名されているかもしれませんが、誰も署名していません。 PKは、KEKの署名に使用されるメインキーです。次に、dbおよびdbxは、KEKのキーで署名されます(複数ある場合があります)。 ユーザーモードで署名済みの.efiファイルを実行するには、dbxではなくdbにあるキーで署名する必要があります。



Linuxの場合、セキュアブートをサポートするプリローダーにはShimとPRELoaderの2つがあります。 それらは似ていますが、わずかなニュアンスがあります。

Shimには、セキュアブートキー(UEFIのキー)、Shimキー(自分で生成してコンパイル時に指定できる)、およびMOK(NVRAMに保存されているマシン所有者キー)の3種類のキーがあります。 ShimはUEFI経由でブートメカニズムを使用しないため、Shimをサポートせず、MOKについて何も知らないブートローダーはコードを実行できません(したがって、gummibootブートローダーは機能しません)。 対照的に、PRELoaderはその認証メカニズムをUEFIに組み込んでおり、問題はありません。

ShimはMOKに依存しています。 バイナリは、実行する前に変更(署名)する必要があります。 一方、PRELoaderは正しいバイナリを「記憶」し、信頼できるかどうかを伝えます。

両方のプリローダーは、Microsoftからの有効な署名を使用してコンパイルされているため、UEFIキーを変更する必要はありません。



セキュアブートは、Evil Maidのような攻撃からブートキットを保護するように設計されており、私の意見では、効果的に実行します。

ご清聴ありがとうございました!



All Articles