MicrosoftのUEFI署名の冒険

彼が書いたこの記事をたまたま翻訳しました ジェームズ・ボトムリー、のテクニカルアドバイザー Linux Foundationの、まとめ始めた人 Linuxを起動できるようにするプリブートローダー.

以前の投稿で説明したように、LinuxFoundationプリブートローダーのコードが用意されています。 しかし、 ディレイ マイクロソフトの署名システムにアクセスできました。

最初に行うべきことは、 ベリサインに99ドル支払う (現在はSymantec)、Verisignによって検証されたキーがあります。 Linux Foundationのためにそれを行いました。彼らがやりたいのは、本社に電話して確認することだけです。 キーはブラウザにインストールされているURLで返されますが、標準のLinux SSLツールを使用してキーを抽出し、通常のPEM証明書とキーを作成できます。 UEFI署名とは関係ありませんが、システムの検証に使用されます システム開発 あなたがあなたであるとあなたが言う人であるというマイクロソフト。 sysdevアカウントを作成する前に、それをテストする必要があります 彼らがあなたに与える実行可能ファイルに署名し、それをアップロードします。 彼らはあなたが特定のWindowsプラットフォームでそれに署名することを厳格に要求していますが、少なくともそれは機能し、私たちのアカウントが作成されました。

アカウントが作成された後でも、UEFIバイナリをアップロードして署名することはできません。 紙の契約書に署名する。 多くの除外されたライセンス(ドライバーのすべてのGPLを含みますが、ブートローダーのGPLは含みません)を含め、取引は非常に面倒です。 最も厄介な部分は、合意が到着したように見えることです 署名したUEFIオブジェクトを超えて。 Linux Foundationの弁護士は、私たちが製品を販売していないため、LFにはほとんど無害であると結論付けましたが、他の企業にとっては嫌なことかもしれません。 Matthew Garrettによると、Microsoftは、これらの問題のいくつかを軽減するために、ディストリビューションとの特別な取引について交渉する用意があります。

契約が締結されると、実際の 技術的な楽しみ。 UEFIバイナリをアップロードして、署名してもらうことはできません。 最初にあなたがしなければならない .cabファイルでラップします。 幸い、lcabと呼ばれるキャビネットファイルを作成できるオープンソースプロジェクトがあります。 それからあなたはしなければなりません Verisignキーを使用して.cabファイルに署名します。 繰り返しになりますが、それを実行できる別のオープンソースプロジェクトがあります:osslsigncode。 これらのツールが必要な場合は、openSuse Build ServiceUEFIリポジトリで入手できます。 最後の問題は、ファイルをアップロードすることです Silverlightが必要。 残念ながら、月明かりは機能していないようで、バージョン4のプレビューを使用しても、アップロードボックスが空白になるため、 Windows7を使用する時が来ました kvm(カーネルベースの仮想マシン)の下。 その部分に到達したら、バイナリが「署名される」ことを証明する必要もあります。 GPLv3または同様のオープンソースライセンスの下でライセンスされてはなりません」。 鍵開示を恐れていると思いますが、まったくわかりません(「類似のオープンソースライセンス」と同じ)。

アップロードが完了すると、キャビネットファイルはXNUMXつの段階で停止します。 残念ながら、最初のテストクライムは残りました ステージ6でロック (ファイルの署名)。 6日後、何が起こっているのかを尋ねるサポートメールをマイクロソフトに送信しました。 答え:「署名プロセスによってスローされるエラーコードは、 ファイルは有効なWin32アプリケーションではありません。 有効なWin32アプリケーションですか?」 回答:明らかにそうではありません。これは有効な64ビットUEFIバイナリです。 これ以上の答えはありませんでした...

もう一度やり直しました。 今回、署名されたファイルのダウンロードメールを受け取りましたが、ボードには次のように書かれています。 署名は失敗しました。 ダウンロードして確認しました。 バイナリはsecurebootプラットフォームで動作し、キーで署名されています

件名= / C = US / ST =ワシントン/ L =レドモンド/ O =マイクロソフトコーポレーション/ OU = MOPR / CN = Microsoft WindowsUEFIドライバーパブリッシャー
発行者= / C = US / ST =ワシントン/ L =レドモンド/ O =マイクロソフトコーポレーション/ CN =マイクロソフトコーポレーションUEFICA 2011

プロセスが失敗を示した理由をサポートに尋ねましたが、有効なダウンロードがあり、メールが殺到した後、「そのファイルを使用しないでください。 間違って署名した。 私はあなたに戻ってきます。」 何が問題なのかはまだわかりませんが、署名鍵の件名を見ると、 LinuxFoundationに示すキーには何もありませんしたがって、問題は、バイナリがLinux Foundationに関連付けられた特定の(および取り消し可能な)キーではなく、汎用のMicrosoftキーで署名されていることだと思います。

ただし、これはステータスです。マイクロソフトがLinuxFoundationに署名および検証済みのプリブートローダーを提供するのを引き続き待ちます。 その場合、すべての人が使用できるようにLinuxFoundationサイトにアップロードされます。

出典 http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/

結論を導き出しますが、これには時間がかかります。


Googleで優先ソースとして追加する