Avanture u Microsoftovom UEFI potpisu

Slučajno prevedem ovaj članak koji je on napisao James Bottomley, tehnički savjetnik Linux Foundation, koji su počeli sastavljati pre-bootloader tako da možete pokrenuti Linux.

Kao što sam objasnio u svom prethodnom postu, imamo kôd za Linux-ov pokretač za pokretanje unaprijed. Međutim, postojao je odgoditi dok smo imali pristup Microsoftovom sistemu potpisivanja.

Prva stvar koju treba uraditi jeste platite 99 dolara Verisign-u (sada Symantec) i neka verifikacijski ključ verificira Verisign. Učinili smo to za Linux Foundation, a sve što žele je nazvati sjedište radi provjere. Ključ se vraća u URL-u koji je instaliran u vašem pregledniku, ali za njegovo izdvajanje i stvaranje uobičajenog PEM certifikata i ključa mogu se koristiti standardni Linux SSL alati. To nema nikakve veze s potpisivanjem UEFI-a, već se koristi za provjeru valjanosti sistema sysdev Microsoft da ste ono što kažete da jeste. Da biste mogli stvoriti sysdev račun, morate ga testirati potpisivanje izvršne datoteke koju vam daju i učitavanje. Oni postavljaju stroge zahtjeve da ga potpišete na određenoj Windows platformi, ali sbsign barem djeluje i bingo je naš račun kreiran.

Jednom kada je račun kreiran, i dalje ne možete učitati UEFI binarne datoteke za potpisivanje bez prethodnog potpisati papirni ugovor. Dogovori su vrlo teški, uključujući puno izuzetih licenci (uključujući sve GPL-ove za vozače, ali ne i za bootloadere). Najteži dio je taj što sporazumi izgleda stižu izvan UEFI objekata koje potpisujete. Pravnici zaklade Linux zaključili su da je to uglavnom bezopasno za LF jer ne prodajemo proizvode, ali drugim tvrtkama može biti odvratno. Prema Matthewu Garrettu, Microsoft je spreman pregovarati o posebnim ugovorima s distribucijama kako bi ublažio neke od tih problema.

Jednom kada su sporazumi potpisani, pravi tehnička zabava. Ne možete samo uploadati UEFI binarnu datoteku i dati je potpisati. Prvo moraš zamotajte ga u .cab datoteku. Srećom, postoji projekat otvorenog koda koji može stvoriti datoteke kabineta zvane lcab. Onda moraš potpisati .cab datoteku ključem Verisign. Opet, postoji još jedan projekat otvorenog koda koji to može učiniti: osslsigncode. Svima kojima su potrebni ti alati dostupni su u mom repozitorijumu openSuse Build Service UEFI. Konačni problem je prijenos datoteke zahtijeva srebrnu svjetlost. Nažalost, čini se da mjesečina ne radi, pa čak i s pregledom verzije 4, okvir za prijenos postaje prazan, pa vrijeme je da upotrijebite Windows 7 pod kvm (virtualna mašina zasnovana na jezgri). Kad dođete do tog dijela, također morate potvrditi da je binarni „koji treba potpisati, ne smije imati licencu pod GPLv3 ili sličnim licencama otvorenog koda”. Pretpostavljam da je to zbog straha od otkrivanja ključa, ali to uopće nije jasno (isto sa "sličnim licencama otvorenog koda").

Kada se prijenos završi, kartoteka se zaustavlja kroz sedam faza. Nažalost, prvi probni uspon je ostao zaključano u fazi 6 (potpis datoteka). Nakon 6 dana poslao sam e-poštu za podršku Microsoftu s pitanjem šta se događa. Odgovor: „Kôd greške koji je bacio postupak potpisivanja je taj vaša datoteka nije važeća Win32 aplikacija. Je li to valjana aplikacija Win32? ”. Odgovor: očito nije, to je valjana 64-bitna UEFI binarna datoteka. Više nije bilo odgovora...

Pokušao sam ponovo. Ovaj put sam primio e-mail za preuzimanje potpisane datoteke, a odbor to kaže potpisano nije uspjelo. Preuzeo sam ga i provjerio. Binarni program radi na platformi secureboot i potpisan je ključem

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

Pitao sam podršku zašto je postupak ukazivao na neuspjeh, ali imao sam valjano preuzimanje i, nakon naleta e-mailova, odgovorili su: "Ne koristi tu datoteku koja je pogrešno potpisan. Vratit ću vam se. " Još uvijek nisam siguran u čemu je problem, ali ako pogledate Predmet ključa za potpisivanje, u ključu nema ničega što bi ukazalo na Linux Foundation, stoga sumnjam da je problem u tome što je binarni zapis potpisan generičkim Microsoftovim ključem umjesto određenim (i opozivim) ključem vezanim za Linux Foundation.

Međutim, ovo je status: Nastavit ćemo čekati da Microsoft da Linux Foundation-u potpisan i potvrđen pred-pokretački program. Kada se to dogodi, bit će otpremljeno na web lokaciju Linux Foundation kako bi ga svi mogli koristiti.

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

Izvucite zaključke, ali ovo će potrajati.


Dodaj kao preferirani izvor na Googleu