Aventurile în semnătura UEFI a Microsoft

Se întâmplă să traduc acest articol pe care l-a scris el James Bottomley, consilier tehnic al Linux Foundation, care a început să pună cap la cap un pre-bootloader pentru a putea porni Linux.

După cum am explicat în postarea mea anterioară, avem la dispoziție codul pentru pre-bootloader-ul Linux Foundation. Cu toate acestea, a existat un întârziere în timp ce aveam acces la sistemul de semnare Microsoft.

Primul lucru de făcut este plătiți 99 USD către Verisign (acum Symantec) și au o cheie verificată de Verisign. Am făcut-o pentru Linux Foundation și tot ce vor să facă este să sune la sediul central pentru a verifica. Cheia revine într-o adresă URL instalată în browserul dvs., dar instrumentele standard SSL Linux pot fi folosite pentru a o extrage și a crea un certificat și o cheie PEM obișnuite. Nu are nicio legătură cu semnarea UEFI, dar este utilizată pentru validarea sistemului sysdev Microsoft că ești cine spui că ești. Înainte de a putea crea un cont sysdev, trebuie să-l testați semnând un executabil pe care vi-l oferă și încărcându-l. Acestea impun cerințe stricte ca să îl semnați pe o anumită platformă Windows, dar sbsign cel puțin a funcționat și bingo a fost creat contul nostru.

Odată ce contul este creat, nu puteți încărca încă binare UEFI pentru semnare fără mai întâi semnează un contract pe hârtie. Acordurile sunt foarte oneroase, incluzând o mulțime de licențe excluse (inclusiv toate GPL-urile pentru drivere, dar nu și pentru bootloadere). Cea mai grea parte este că acordurile par să ajungă dincolo de obiectele UEFI pe care le semnați. Avocații pentru Linux Foundation au concluzionat că este în mare parte inofensiv pentru LF deoarece nu vindem produse, dar poate fi dezgustător pentru alte companii. Potrivit lui Matthew Garrett, Microsoft este dispusă să negocieze acorduri speciale cu distribuții pentru a atenua unele dintre aceste probleme.

Odată ce acordurile sunt semnate, realul distracție tehnică. Nu puteți încărca doar un binar UEFI și să îl semnați. Mai întâi trebuie înfășurați-l într-un fișier .cab. Din fericire, există un proiect open source care poate crea fișiere cabinet numite lcab. Atunci trebuie semnează fișierul .cab cu tasta Verisign. Din nou, există un alt proiect open source care poate face acest lucru: osslsigncode. Pentru oricine are nevoie de aceste instrumente, acestea sunt disponibile în depozitul meu openSuse Build Service UEFI. Ultima problemă este că încărcarea fișierului necesită silverlight. Din păcate, lumina lunii pare să nu funcționeze și chiar și cu previzualizarea versiunii 4, caseta de încărcare rămâne necompletată este timpul să folosiți Windows 7 sub un kvm (mașină virtuală bazată pe kernel). Când ajungeți la acea parte, trebuie să certificați că binarul „care urmează să fie semnat, nu trebuie să fie licențiat sub GPLv3 sau licențe open source similare”. Presupun că este de teama dezvăluirii cheii, dar nu este deloc clar (la fel cu „licențe open source similare”).

După finalizarea încărcării, fișierul cabinet se oprește în șapte etape. Din păcate, primul test de urcare a rămas blocat în etapa 6 (semnătura dosarelor). După 6 zile am trimis un e-mail de asistență la Microsoft întrebându-mă ce se întâmplă. Răspunsul: „Codul de eroare aruncat de procesul de semnare este că fișierul dvs. nu este o aplicație Win32 validă. Este o aplicație Win32 validă? ”. Răspuns: evident că nu, este un binar UEFI pe 64 de biți valid. Nu mai existau răspunsuri...

Am încercat din nou. De data aceasta am primit un e-mail de descărcare pentru fișierul semnat și bordul spune asta semnatul a eșuat. L-am descărcat și l-am verificat. Binarul funcționează pe platforma secureboot și este semnat cu cheia

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

Am cerut asistență de ce procesul a indicat un eșec, dar am avut o descărcare validă și, după o mulțime de e-mailuri, mi-au răspuns „nu folosiți fișierul care era semnat greșit. Ma voi intoarce la tine. " Încă nu sunt sigur care este problema, dar dacă te uiți la subiectul cheii de semnare, nu există nimic în cheie care să indice Linux Foundation, prin urmare, bănuiesc că problema este că binarul este semnat cu o cheie Microsoft generică mai degrabă decât cu o cheie specifică (și revocabilă) legată de Linux Foundation.

Cu toate acestea, acesta este starea: Vom continua să așteptăm ca Microsoft să ofere Linux Foundation un pre-bootloader semnat și validat. Când se întâmplă acest lucru, acesta va fi încărcat pe site-ul Linux Foundation pentru ca toți să îl poată folosi.

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

Trageți concluziile, dar acest lucru va necesita timp.


Adăugați ca sursă preferată în Google