Seikkailut Microsoftin UEFI-allekirjoituksessa

Aion kääntää tämän artikkelin, jonka on kirjoittanut James Bottomley , Linux Foundationin tekninen neuvonantaja , joka ryhtyi kokoamaan käynnistystä edeltävää latainta, jotta Linux voi käynnistyä.

Kuten edellisessä viestissäni selitin, Linux Foundationin esilataajan koodi on valmiina. Microsoftin allekirjoitusjärjestelmän käytössä oli kuitenkin viive .

Ensimmäiseksi sinun tarvitsee maksaa 99 dollarin maksu Verisignille (nykyisin Symantec) ja hankkia Verisignin vahvistama avain. Teimme tämän Linux Foundationille, ja he haluavat vain soittaa pääkonttoriin vahvistaakseen sen. Avain palautetaan URL-osoitteen kautta, joka asentuu selaimeesi, mutta sen purkamiseen ja tavallisen PEM-varmenteen ja -avaimen luomiseen voidaan käyttää tavallisia Linux SSL -työkaluja. Sillä ei ole mitään tekemistä UEFI-allekirjoituksen kanssa, mutta sitä käytetään vahvistamaan Microsoftin sysdev- järjestelmälle , että olet se, joka väität olevasi. Ennen kuin voit luoda sysdev-tilin, sinun on testattava se allekirjoittamalla heidän tarjoama suoritettava tiedosto ja lataamalla se palvelimelle . Heillä on tiukat vaatimukset, joiden mukaan sinun on allekirjoitettava se tietyllä Windows-alustalla, mutta sbsign ainakin toimi, ja bingo, tilimme luotiin.

Kun olet luonut tilin, et vieläkään voi ladata UEFI-binäärejä allekirjoitettavaksi allekirjoittamatta ensin paperisopimusta . Sopimukset ovat erittäin raskaita ja sisältävät paljon poissuljettuja lisenssejä (mukaan lukien kaikki GPL-lisenssit ajureille, mutta ei käynnistyslataimille). Raskaita puolia on, että sopimukset näyttävät ulottuvan pidemmälle kuin allekirjoittamasi UEFI-objektit . Linux Foundationin asianajajat totesivat, että se on enimmäkseen vaaratonta LF:lle, koska emme myy tuotteita, mutta se voi olla mahdoton hyväksyä muille yrityksille. Matthew Garrettin mukaan Microsoft on halukas neuvottelemaan erityissopimuksia jakelijoiden kanssa joidenkin näiden ongelmien lieventämiseksi.

Kun sopimukset on allekirjoitettu, alkaa todellinen tekninen hauskuus . Et voi vain ladata UEFI-binääritiedostoa ja odottaa sen allekirjoittamista. Ensin sinun on käärittävä se .cab-tiedostoon . Onneksi on olemassa avoimen lähdekoodin projekti nimeltä lcab, joka voi luoda cab-tiedostoja. Sitten sinun on allekirjoitettava .cab-tiedosto Verisign-avaimella . Jälleen on olemassa toinen avoimen lähdekoodin projekti, joka voi tehdä sen: osslsigncode. Kaikille, jotka tarvitsevat näitä työkaluja, ne ovat saatavilla openSUSE UEFI Build Service -arkistossani. Viimeinen este on, että tiedoston lataaminen vaatii Silverlightin . Valitettavasti Moonlight ei näytä toimivan, ja jopa version 4 esikatselussa latausruutu tyhjenee, joten on aika käyttää Windows 7:ää KVM:n (kernel-based virtual machine) alla. Kun pääset tähän osaan, sinun on myös vahvistettava, että "allekirjoitettavaa binääritiedostoa ei saa lisensoida GPLv3:n tai vastaavien avoimen lähdekoodin lisenssien alaisuudessa ". Oletan, että se johtuu avaimen paljastumisen pelosta, mutta se ei ole lainkaan selvää (sama pätee "vastaaviin avoimen lähdekoodin lisensseihin").

Kun lataus on valmis, cab-tiedosto käy läpi seitsemän vaihetta. Valitettavasti ensimmäinen testilataus juuttui vaiheeseen 6 (tiedoston allekirjoitusvaihe). Kuuden päivän kuluttua lähetin sähköpostia Microsoftin tukeen ja kysyin, mitä tapahtui. Vastaus: "Allekirjoitusprosessin palauttama virhekoodi on, että tiedostosi ei ole kelvollinen Win32-sovellus . Onko se kelvollinen Win32-sovellus?" Vastaus: ei tietenkään, se on kelvollinen 64-bittinen UEFI-binääritiedosto. Enempiä vastauksia ei tullut ...

Yritin uudelleen. Tällä kertaa sain lataussähköpostin allekirjoitetusta tiedostosta, mutta kojelauta ilmoitti allekirjoittamisen epäonnistuneen . Latasin ja varmistin sen. Binääritiedosto toimii Secure Boot -alustalla ja on allekirjoitettu avaimella.

aihe = / C = USA / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI -ohjainjulkaisija
liikkeeseenlaskija = / C = USA / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011

Kysyin tuelta, miksi prosessissa ilmoitettiin virheestä, mutta minulla oli kelvollinen lataus. Useiden sähköpostien jälkeen he vastasivat: "Älä käytä kyseistä tiedostoa, se on allekirjoitettu väärin . Palaan asiaan." En vieläkään ole varma, mikä ongelma on, mutta jos katsot allekirjoitusavaimen otsikkoa, avaimessa ei ole mitään, mikä viittaisi Linux Foundationiin . Siksi epäilen, että ongelma on siinä, että binääritiedosto on allekirjoitettu yleisellä Microsoft-avaimella tietyn (ja peruutettavissa olevan) Linux Foundationiin linkitetyn avaimen sijaan.

Tämä on kuitenkin tila: Odotamme edelleen, että Microsoft antaa Linux Foundationille allekirjoitetun ja vahvistetun esikäynnistysohjelman. Kun näin tapahtuu, se ladataan Linux Foundation -sivustolle kaikkien käytettäväksi.

Lähde: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/

Tee johtopäätöksesi, mutta tämä vie aikaa.


Lisää ensisijaiseksi lähteeksi Googlessa