web-dev-qa-db-ja.com

UEFIとセキュアブートへの影響、どの程度深刻ですか?

数日中に新しいラップトップを購入する予定ですが、新しくてかっこいいUltrabookにとても感銘を受けています。長年のGNU/Linuxユーザーとして、私はもちろん自分が選んだディストリビューションをインストールします。

Windows8がプリインストールされたコンピューターを購入しなければならない可能性があります。そして可能性は、それがUEFIを実行し、「セキュアブート」を持ち、その上で署名されていないカーネルがブートしないことです。

UEFIはおそらく良いです、BIOSは引退する必要があるかもしれません。厄介なのはセキュアブートだと思います。

私が理解できる限り、いくつかの 信頼できる 証明書はファームウェアに埋め込まれ、カーネルなどに埋め込まれます。カーネルの証明書 ファームウェアのいずれか1つまでさかのぼることができます の場合、カーネルは起動します。そうでない場合、UEFIは私に通知して起動を拒否します。このプロセスにより、認定されていないソフトウェアが起動するのを防ぎます。見えませんが、メリットがあるかもしれません。

オープンソースカーネルがこれらのキーの1つを取得し、それでも 無料 であるにはどうすればよいのでしょうか。私は読んだ Linuxメーリングリストのスレッド RedHatの従業員がLinusTorvaldsに、PEバイナリを解析する機能を実装するチェンジセットをプルし、カーネルをセキュアブートモードで起動させるための複雑な一連のアクションを実行するように依頼する(私が理解できる限り)。 MicrosoftはPEバイナリにのみ署名するため、彼らはこれを望んでいます。 Torvalds氏は親切にこのチェンジセットを拒否し、 カーネルはすでに標準を実装していますが、PEではありません と述べています。 RedHatはこのコードをカーネルにプッシュしようとしているので、いつかフォークする必要はありません。

ほら、これは複雑なことです。質問させてください。

  • ホームユーザーとして、UEFIとセキュアブートでどのようなメリットがありますか?
  • この署名はどのように行われますか?
  • 誰が署名/証明書を取得できますか?支払われますか?公開できますか? (Linuxのソースコードで利用できるはずですよね?)
  • マイクロソフトが署名を提供する唯一の機関ですか?それらを提供するための独立した基盤があるべきではありませんか?
  • これは、オープンソースおよび無料のカーネル、愛好家/学術カーネル開発者などにどのように影響しますか。例えばこれは起動しますか( 非常に基本的なブートセクターコード ):

    hang:
       jmp hang
    times 510-($-$$) db 0
    db 0x55
    db 0xAA
    

ニュース項目 このウェブサイトで はこの質問のインスピレーションでした。 Hispalinux と呼ばれるスペインのLinuxユーザーグループが、EuropanComissionの対象となるこの件に関してMicrosoftに対して苦情を申し立てました。

心配すべきですか?私は、専有ソフトウェアも trust ed企業が署名したソフトウェアも使用することを拒否します。今までそうしてきましたが、これからも続けていきたいです。前もって感謝します。

18
user27225

このプロセスにより、認定されていないソフトウェアが起動するのを防ぎます。見えませんが、メリットがあるかもしれません。

ハードウェアから起動できるものとできないものを制御するための新しいセキュリティメカニズムがあります。セキュリティ機能。手遅れになるまで、それが必要だとは感じません。しかし、私は余談です。

Linuxメーリングリストのスレッドを読んだところ、RedHatの従業員がLinusTorvaldsに、PEバイナリを解析する機能を実装するチェンジセットをプルし、カーネルをセキュアブートモードで起動させるための複雑な一連のアクションを実行するように依頼しました(私が理解できる限り) )。

GPUファームウェアなどのドライバーは、セキュアブートに合わせて署名する必要があります。そうでない場合は、さらに別のルートキットになる可能性があります。現状では、これらのドライバーはPE形式で署名されています。カーネルはとにかくそれらなしで起動できますが、ハードウェアは機能しません。カーネルでPE形式を解析することは、すべてのハードウェアベンダーに各ディストリビューションのブロブに署名するように依頼したり、これを行うためのユーザースペースフレームワークを設定したりするよりも、技術的に簡単な選択です。ライナスはマイクロソフトのペニスを吸わないことにしました。それは技術的な議論ではありません。

ホームユーザーとして、UEFIとセキュアブートでどのようなメリットがありますか?

最も目に見える機能はUEFI高速ブートです。私はいくつかのWindows 8ロゴデスクトップを手に入れましたが、それらは非常に速く起動するので、ブートメニューをポップアップ表示するのに失敗することがよくあります。 IntelとOEMはこれに関してかなりのエンジニアリングを行っています。

あなたが 肥大化コードの重複 を嫌うLinuxユーザーのタイプである場合は、ファームウェアレベルでマルチブートを管理し、ブートローダーを完全に取り除くこともできます。 UEFIは ブートマネージャー を提供します カーネルを直接ブートする またはファームウェアメニューで他のOSをブートすることを選択できます。いじくり回す必要があるかもしれませんが。

また、起動時およびファームウェアメニューのグラフィックがより洗練されています。起動時のセキュリティの向上(セキュアブート)。その他の機能(IPv4/6ネットブート、2TB +ブートデバイスなど)は、主にエンタープライズユーザーを対象としています。

とにかく、Linus said のように、BIOS/UEFIは「OSをロードしてそこから地獄を切り抜ける」ように想定されており、UEFIは高速ブートのホームユーザーには確かに表示されます。確かに、内部ではBIOSよりも多くのことを実行しますが、ホームユーザーについて話している場合、彼らはそれを気にしません。

この署名はどのように行われますか?

理論的には、バイナリは秘密鍵で暗号化されて署名が生成されます。次に、公開鍵を使用して署名を検証し、秘密鍵の所有者がバイナリに署名したことを証明してから、バイナリを検証します。 ウィキペディアで詳細を参照

技術的には、バイナリのハッシュのみが署名され、署名はPE形式と追加の形式をいじってバイナリに埋め込まれます。

手続き的に、公開鍵はOEMによってファームウェアに格納され、それはMicrosoftから提供されます。 2つの選択肢があります。

  1. 独自のキーペアを生成して安全に管理します 独自の公開キーをファームウェアにインストールします 、独自の秘密キーでバイナリに署名します(Ubuntuの-- sbsign 、または- pesign Fedoraから)、または
  2. バイナリをMicrosoftに送信し、署名してもらいます。

誰が署名/証明書を取得できますか?支払われますか?公開できますか? (Linuxのソースコードで利用できるはずですよね?)

署名/証明書はバイナリに埋め込まれているため、すべてのユーザーがそれらを取得する必要があります。誰でも自分のCAをセットアップし、自分用の証明書を生成できます。ただし、Microsoftに証明書を生成させたい場合は、Verisignを使用してIDを確認する必要があります。このプロセスには99ドルかかります。公開鍵はファームウェアにあります。秘密鍵はマイクロソフトの金庫にあります。証明書は署名されたバイナリにあります。ソースコードは含まれていません。

マイクロソフトが署名を提供する唯一の機関ですか?それらを提供するための独立した基盤があるべきではありませんか?

PKIの管理、IDの検証、すべての既知のOEMおよびハードウェアベンダーとの調整のプロセスと比較すると、技術的な側面はかなり些細なものです。これにはかなりの費用がかかります。マイクロソフトには、インフラストラクチャ(WHQL)と、これに対する長年の経験があります。したがって、彼らはバイナリに署名することを提案します。独立した財団は誰でも同じことを提供するためにステップアップすることができますが、これまでのところ誰もそれを行っていません。

IDF 2013でのUEFIセッションから、Canonicalもいくつかのタブレットファームウェアに独自のキーを配置し始めていることがわかります。したがって、Canonicalは、Microsoftを経由せずに独自のバイナリに署名できます。しかし、彼らはあなたが誰であるかを知らないので、彼らはあなたのためにバイナリに署名することはほとんどありません。

これは、オープンソースおよび無料のカーネル、愛好家/学術カーネル開発者などにどのように影響しますか。

カスタムビルドのカーネルは、署名されていないため、セキュアブートでは起動しません。オフにすることもできます。

セキュアブートの信頼モデルは、カーネルのいくつかの側面をロックダウンします。たとえrootになっていても、/ dev/kmemに書き込んでカーネルを破壊することはできません。再開時にカーネルイメージがブートキットに変更されないようにする方法がないため、ディスクに休止状態にすることはできません(アップストリームで動作しています)。 kdump(kexec)のメカニズムを使用してブートキットを起動できるため(アップストリームでも機能しているため)、カーネルがパニックになったときにコアをダンプすることはできません。これらは物議を醸すものであり、Linusがメインラインカーネルに受け入れないものですが、一部のディストリビューション(Fedora、RHEL、Ubuntu、openSUSE、SUSE)には、とにかく独自のセキュアブートパッチが付属しています。

個人的には、セキュアブートカーネルの構築に必要なモジュール署名には10分かかりますが、実際のコンパイルには5分しかかかりません。モジュール署名をオフにしてccacheをオンにすると、カーネルの構築には1分しかかかりません。

UEFIはBIOSとはまったく異なるブートパスです。すべてのBIOSブートコードがUEFIファームウェアによって呼び出されるわけではありません。

Hispalinuxと呼ばれるスペインのLinuxユーザーグループは、EuropanComissionの対象としてこの件に関してMicrosoftに対して苦情を申し立てました。

上で述べたように、マイクロソフト以外の誰も公共サービスを行うためにステップアップしていません。現在、これを悪用するというMicrosoftの意向を示す証拠はありませんが、Microsoftが事実上の独占権を乱用して停電するのを防ぐこともできません。したがって、FSFとLinuxのユーザーグループは実利的ではなく、実際に問題を建設的に解決するために座っていない可能性がありますが、人々がMicrosoftに圧力をかけ、影響について警告することは非常に必要です。

心配すべきですか?私は、プロプライエタリソフトウェアも信頼できる会社によって署名されたソフトウェアも使用することを拒否します。今までそうしてきましたが、これからも続けていきたいです。

セキュアブートを採用する理由:

  • 実際のセキュリティ攻撃ベクトルを排除します。
  • これは、ユーザーがハードウェアをより自由に制御できるようにするための技術的なメカニズムです。
  • Linuxユーザーは、Microsoftがセキュアブートポリシーの独占に取り掛かる前に、セキュアブートのメカニズムを理解し、積極的に行動する必要があります。
9
Lingzhu Xiang

私は、Windows 8に付属の最近のラップトップの購入と、UEFIセキュアブートでこれを経験しました。多くの時間と調査の結果、私が答えることができるのは次のとおりです。

  • 「ホームユーザー」カテゴリに当てはまるようには聞こえません。

平均的なユーザーが気付くUEFIの利点は、画面に最初に表示されるのはMicrosoft/VendorブランドのUEFIブートローダーディスプレイであるということです。それらのどれも怖い「Delを押してセットアップ、F11で起動デバイスを選択する」などのようなもの.

その後、Microsoftカーネル/ブートローダーの待機画面にうまく移行します。これは、マイクロソフトをテーマにした「プロンプトを表示する力」を提供します。それが実際の利益である場合は、見る人の目にあると思います。起動時に期待する通常の情報がないことにかなりうんざりしていました。たとえば、ベンダーが標準のキーを使用して基本のUEFI/BIOSセットアップを入力しない場合は幸運です。

そうそう、理論は、これによりブートセクターウイルスが阻止されるか、少なくとも作成者が誰かのIDを作成/盗み、Verisign(RedHat Fedoraルート。Googleit。)に99ドルを支払うようになるというものです。

ああ、そして摩擦があります。誰でも任意の鍵でコードに署名できます。問題は、マシンが信頼できる機関のキーによって署名されたコードのみを実行することです。鍵の公開半分は、工場のシステムUEFIコアにインストールされ、秘密鍵で署名されたUEFIプログラムの署名(ブートコード)を検証するために使用されます。

工場で公開鍵がインストールされているのは誰ですか?セキュアブートをデフォルトで有効にする必要があるのは誰だと思いますか?

すべてのシステムメーカーは明らかにマイクロソフトの鍵をそこに置くでしょう。それらはcould Canonical(Ubuntu)キー、Red Hatキー、Appleキーなどにも入れられます。ただし、キーが多いほど、違反のポイントが多くなり、保存できる数には明らかに物理的な制限があります。

そしてあなたのような反逆者のコンピューターユーザーのための解決策は何ですか?

  • システムベンダーがシステムブート構成へのアクセスを許可していることを願っています

  • セキュアブートをオフにできることを願っています。 Windowsのブートコードは、セキュアブートなしでも実行されます。

  • 運が良ければ、システムベンダーが独自の認証局キーを入力することを許可し、独自のものに署名することができます。これは、セキュアブートを試してみたい場合にのみ本当に必要です。

私のMSIラップトップでは、上記のすべてを実行できます。

誰でもLinux Distroの無料コピーを入手してOSを置き換えることができる世界が欲しいです。これは、セキュアブートの前の状態です。また、ブートセクタウイルスもたくさんありました。システム構成でセキュアブートを無効にする必要があることは、OSをインストールする頭脳の力があることを確認したり、インストールした人を知ったりするのに十分なハードルです。

それをオフにする機能がないことは悪いことであり、それはメーカー次第です。セキュアブートの無効化を防ぐようにメーカーを「説得」していない限り、Microsoftを非難しないでください。

9
The Other Dude