UEFIとSecureBootの影響、どれほど深刻ですか?


18

近日中に新しいラップトップを購入する計画を立てており、新しくてクールなウルトラブックに感銘を受けています。長い間GNU / Linuxを使用しているので、もちろん自分で選んだディストリビューションをインストールします。

おそらく、Windows 8がプレインストールされたコンピューターを購入する必要があります。そして、UEFIを実行し、「セキュアブート」を行う可能性があります。このブートでは、署名されていないカーネルは起動しません。

UEFIはおそらく良好であり、BIOSは廃止する必要があるかもしれません。毛深いのはセキュアブートだと思います。

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

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

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

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

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

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

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


2
UEFIそれ自体はそれほど問題ではありませんが、セキュアブートが問題になる場合があります。
ヨルダン

3
セキュアブートを無効にした状態でいつでもUEFIブートできます
...-jasonwryan

1
この記事によると Microsoftは、Windows 8互換ロゴの使用ライセンスを提供するために、ARMベースのデバイスでSecureBootが非アクティブ化されないようにすることをベンダーに要求しています。

1
私は見ていませんが、マザーボードにフラッシュできなくても物事が機能する場合(各デバイスがPOST-OSハンドオーバーで適切な状態にある場合)、あまり役に立ちません。そして、グラフィックカードファームウェアがあります。ハードディスクファームウェア?キーボード?...これは、明確化の要求よりも議論に近づいています。(そしてもちろん、少なくともその引用はUEFIがコミュニティの努力であり、特定の実装ではないと主張しているだけです。)
CVn

1
UEFIとセキュアブートに関するLinux Foundationのドキュメントをご覧ください。
フォンブランド

回答:


9

このプロセスは、認証されていないソフトウェアの起動を防ぎます。私はそれらを見ることができませんが、これには利点があるかもしれません。

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

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

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

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

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

あなたが情熱を持って肥大化コードの複製を嫌うタイプのLinuxユーザーであれば、ファームウェアレベルでマルチブートを管理し、ブートローダーを完全に削除することもできます。UEFIは、カーネルに直接起動するか、ファームウェアメニューで他のOSを起動することを選択できるブートマネージャーを提供します。少し手を加える必要があるかもしれませんが。

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

とにかく、Linusが言ったように、BIOS / UEFIは「OSをロードしてそこから抜け出す」だけであり、UEFIは確かに高速起動のホームユーザーにはそう見えます。確かに内部のBIOSよりも多くの機能を実行しますが、ホームユーザーのことを言っている場合、彼らはそれを気にしません。

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

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

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

手続き的に、公開キーはOEMによってファームウェアに保存されます。これはマイクロソフトのものです。次の2つの選択肢があります。

  1. あなた自身の鍵のペアを生成し、しっかりと管理し、ファームウェアにあなた自身の公開鍵をインストールし、そしてあなた自身の秘密鍵(とバイナリに署名sbsignのUbuntuから、またはpesignのFedoraから)、または
  2. バイナリをマイクロソフトに送信し、署名してもらいます。

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

署名/証明書はバイナリに埋め込まれているため、すべてのユーザーが署名を取得する必要があります。誰でも独自のCAをセットアップし、自分用の証明書を生成できます。ただし、Microsoftに証明書を生成してもらいたい場合は、Verisignを使用して身元を確認する必要があります。プロセスの費用は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ユーザーグループは、Europan Comissionの件名でMicrosoftに対して苦情を申し立てました。

上記のように、Microsoft以外の誰も公共サービスを行うためにステップアップしていません。現在、Microsoftがこれを悪用する意図があるという証拠はありませんが、Microsoftが事実上の独占を濫用してパワートリップを行うことを防ぐものもありません。そのため、FSFとLinuxのユーザーグループは実用的ではなく、建設的に問題を解決するために実際には座っていないかもしれませんが、Microsoftに圧力をかけてその影響について警告することは非常に必要です。

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

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

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

2
この詳細で素晴らしい答えをありがとう!非常に包括的な。UEFIはかなりクールに聞こえますが、コードを使用したり書いたりしたことはありません。

1
とても良い答えです。ただ2つのこと:1)通常、独自のキーをUEFIにロードする可能性があります。これにより、自分で署名したものを安全に起動できます。2)セキュアブートは、UEFIを信頼するポイントでのみ安全です-悪意のあるファームウェアの更新を使用すると、信頼のチェーンが壊れます。そして、それは考えられないことではありません
ペテルフ

それでは、GNU / LinuxディストリビューションはFastBoot / QuickBootを使用していますか?なぜそれが難しいのかわかりませんが、それについての情報を見つけることもできません。しかし、これをエンドユーザーの目に見える機能として言及しているので、最終的に使用されると思いますか?
ハイエンジェル

9

最近、Windows 8に付属のラップトップを購入し、UEFIセキュアブートでこれを試しました。多くの時間と研究を経て、ここに私が答えることができます:

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

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

その後、Microsoftカーネル/ブートローダーの待機画面にうまく移行します。これは、Microsoftをテーマにしたエクスペリエンスを「促進する」力を示します。それが実際の利益であるなら、見る人の目にあると思います。起動時に表示されると予想される通常の情報がなかったので、私はかなり気になりました。たとえば、ベンダーが標準のキーを使用して基本UEFI / Biosセットアップを入力しない場合は幸運です。

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

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

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

すべてのシステムメーカーが明らかにMicrosoftのキーをそこに入れます。彼らは可能性もCanonicalの(Ubuntuの)キー、Red Hatのキー、Appleのキーなどの違反のための手段より多くのポイントが、よりキーに入れ、それらが格納することができどのように多くの物理的な限界は明らかに存在しています。

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

  • システムベンダーがシステムブート構成にアクセスできることを願っています

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

  • あなたが本当に幸運なら、システムベンダーはあなたにあなた自身の認証局キーを入れることを許可し、あなたはあなた自身のものに署名することができます。これは、セキュアブートで遊んでみたい場合にのみ本当に必要です。

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

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

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


ようこそ、ありがとう!非常にクールな答えですが、他の人の考えを見てみたいので、受け入れる前にもう少し待ちます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.