Die Abenteuer in der UEFI-Signatur von Microsoft

Ich werde diesen Artikel von James Bottomley übersetzen , dem technischen Berater der Linux Foundation , der sich daran gemacht hat, einen Pre-Bootloader zu entwickeln , damit Linux booten kann.

Wie ich in meinem vorherigen Beitrag erläutert habe, liegt der Code für den Linux Foundation Pre-Bootloader vor. Es gab jedoch eine Verzögerung , da wir erst Zugriff auf das Signatursystem von Microsoft erlangen mussten.

Als Erstes müssen Sie die Gebühr von 99 US-Dollar an Verisign (jetzt Symantec) zahlen und einen Verisign-verifizierten Schlüssel erhalten. Wir haben dies für die Linux Foundation getan, und diese verlangt lediglich einen Anruf beim Hauptsitz zur Verifizierung. Der Schlüssel wird über eine URL bereitgestellt, die sich in Ihrem Browser installiert. Alternativ können Sie Standard-Linux-SSL-Tools verwenden, um ihn zu extrahieren und ein reguläres PEM-Zertifikat mit Schlüssel zu erstellen. Dies hat nichts mit der UEFI-Signierung zu tun, sondern dient der Authentifizierung gegenüber Microsofts Sysdev- System , um Ihre Identität zu bestätigen. Bevor Sie ein Sysdev-Konto erstellen können, müssen Sie es testen, indem Sie eine von Microsoft bereitgestellte ausführbare Datei signieren und hochladen . Es gelten strenge Anforderungen hinsichtlich der Signierung auf einer bestimmten Windows-Plattform, aber sbsign hat funktioniert, und siehe da, unser Konto wurde erstellt.

Nach der Kontoerstellung können Sie ohne vorherige Unterzeichnung eines Papiervertrags keine UEFI-Binärdateien zum Signieren hochladen . Die Vereinbarungen sind sehr restriktiv und enthalten zahlreiche Ausschlussklauseln (darunter alle GPLs für Treiber, jedoch nicht für Bootloader). Besonders problematisch ist, dass die Vereinbarungen über die signierten UEFI-Objekte hinauszugehen scheinen . Die Anwälte der Linux Foundation kamen zu dem Schluss, dass dies für die LF größtenteils unproblematisch ist, da wir keine Produkte verkaufen, für andere Unternehmen jedoch inakzeptabel sein könnte. Laut Matthew Garrett ist Microsoft bereit, mit Distributionen Sondervereinbarungen auszuhandeln, um einige dieser Probleme zu entschärfen.

Sobald die Verträge unterzeichnet sind, beginnt der eigentliche technische Teil . Man kann nicht einfach eine UEFI-Binärdatei hochladen und erwarten, dass sie signiert wird. Zuerst muss sie in eine .cab-Datei verpackt werden . Glücklicherweise gibt es ein Open-Source-Projekt namens lcab, das solche CAB-Dateien erstellen kann. Anschließend muss die .cab-Datei mit dem Verisign-Schlüssel signiert werden . Auch hierfür gibt es ein Open-Source-Projekt: osslsigncode. Wer diese Tools benötigt, findet sie in meinem openSUSE UEFI Build Service Repository. Die letzte Hürde ist, dass zum Hochladen der Datei Silverlight erforderlich ist . Moonlight scheint leider nicht zu funktionieren, und selbst mit der Preview-Version 4 bleibt das Upload-Fenster leer. Daher muss man Windows 7 unter einer KVM (kernelbasierte virtuelle Maschine) verwenden. In diesem Schritt muss außerdem bestätigt werden, dass die zu signierende Binärdatei „ nicht unter der GPLv3 oder ähnlichen Open-Source-Lizenzen lizenziert sein darf “. Ich nehme an, es liegt an der Angst vor der Offenlegung des Schlüssels, aber es ist überhaupt nicht klar (dasselbe gilt für "ähnliche Open-Source-Lizenzen").

Nach Abschluss des Uploads durchläuft die Archivdatei sieben Phasen. Leider blieb der erste Test-Upload in Phase 6 (der Dateisignierung) hängen. Nach sechs Tagen kontaktierte ich den Microsoft-Support per E-Mail und fragte nach dem Grund. Die Antwort: „Der vom Signierungsprozess zurückgegebene Fehlercode besagt, dass Ihre Datei keine gültige Win32-Anwendung ist . Handelt es sich um eine gültige Win32-Anwendung?“ Die Antwort: Natürlich nicht, es ist eine gültige 64-Bit-UEFI-Binärdatei. Es gab keine weiteren Antworten

Ich habe es erneut versucht. Diesmal erhielt ich eine E-Mail mit einem Download-Link für die signierte Datei, aber im Dashboard wurde ein Signierungsfehler angezeigt . Ich habe die Datei heruntergeladen und überprüft. Die Binärdatei funktioniert auf der Secure-Boot-Plattform und ist mit dem Schlüssel signiert.

Betreff = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
Emittent = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011

Ich fragte den Support, warum der Prozess einen Fehler anzeigte, obwohl der Download gültig war. Nach einigen E-Mails erhielt ich die Antwort: „Verwenden Sie diese Datei nicht; sie ist falsch signiert . Ich melde mich wieder.“ Mir ist das Problem immer noch nicht ganz klar, aber der Betreff des Signaturschlüssels weist nicht auf die Linux Foundation hin . Daher vermute ich, dass die Binärdatei mit einem generischen Microsoft-Schlüssel signiert ist, anstatt mit einem spezifischen (und widerrufbaren) Schlüssel der Linux Foundation.

Dies ist jedoch der Status: Wir werden weiterhin darauf warten, dass Microsoft der Linux Foundation einen signierten und validierten Pre-Bootloader zur Verfügung stellt. In diesem Fall wird es auf die Linux Foundation-Site hochgeladen, damit alle es verwenden können.

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

Ziehen Sie Ihre Schlussfolgerungen, aber dies wird einige Zeit dauern.


Als bevorzugte Quelle in Google hinzufügen