Eventyrene i Microsofts UEFI-signatur

Jeg oversætter tilfældigvis denne artikel, som han skrev James Bottomley, teknisk rådgiver for Linux Foundation, der begyndte at sammensætte en pre-bootloader, så du kan starte Linux.

Som jeg forklarede i mit tidligere indlæg, har vi koden til Linux Foundation pre-bootloader på plads. Der var dog en forsinke mens vi havde adgang til Microsofts signeringssystem.

Den første ting at gøre er betale $ 99 til Verisign (nu Symantec) og få en nøgle verificeret af Verisign. Vi gjorde det for Linux Foundation, og alt hvad de vil gøre er at ringe til hovedkvarteret for at bekræfte. Nøglen vender tilbage i en URL, der er installeret i din browser, men standard Linux SSL-værktøjer kan bruges til at udtrække den og oprette det sædvanlige PEM-certifikat og nøgle. Det har intet at gøre med UEFI-signering, men bruges til at validere systemet sysdev Microsoft, at du er den, du siger, du er. Før du kan oprette en sysdev-konto, skal du teste den underskrive en eksekverbar de giver dig og uploader den. De stiller strenge krav til, at du underskriver det på en bestemt Windows-platform, men sbsign fungerede i det mindste, og bingo blev vores konto oprettet.

Når først kontoen er oprettet, kan du stadig ikke uploade UEFI-binære filer til at underskrive uden først underskrive en papirkontrakt. Aftalerne er meget besværlige, herunder mange ekskluderede licenser (inklusive alle GPL'er til drivere, men ikke til bootloadere). Den mest byrdefulde del er, at aftalerne ser ud til at ankomme ud over de UEFI-objekter, du underskriver. Advokater for Linux Foundation konkluderede, at det for det meste er harmløst for LF, fordi vi ikke sælger produkter, men det kan være modbydeligt for andre virksomheder. Ifølge Matthew Garrett er Microsoft villig til at forhandle specielle tilbud med distributioner for at afbøde nogle af disse problemer.

Når aftalerne er underskrevet, er den virkelige teknisk sjov. Du kan ikke bare uploade en UEFI-binær og få den underskrevet. Først skal du pakk den ind i en .cab-fil. Heldigvis er der et open source-projekt, der kan oprette kabinetfiler kaldet lcab. Så skal du underskrive .cab-filen med Verisign-nøglen. Igen er der et andet open source-projekt, der kan gøre det: osslsigncode. For alle, der har brug for disse værktøjer, er de tilgængelige i mit openSuse Build Service UEFI-lager. Det sidste problem er at uploade filen kræver silverlight. Desværre ser måneskin ikke ud til at virke, og selv med version 4-forhåndsvisning bliver uploadfeltet tomt så det er tid til at bruge Windows 7 under en kvm (kerne-baseret virtuel maskine). Når du kommer til den del, skal du også bekræfte, at den binære “der skal underskrives, må ikke licenseres under GPLv3 eller lignende open source-licenser”. Jeg antager, at det er af frygt for afsløring af nøgler, men det er slet ikke klart (det samme med "lignende open source-licenser").

Når overførslen er afsluttet, stopper kabinetsfilen gennem syv faser. Desværre forblev den første testklatring låst i trin 6 (filernes underskrift). Efter 6 dage sendte jeg en support-e-mail til Microsoft, hvor jeg spurgte, hvad der skete. Svaret: “Fejlkoden, der blev kastet af signeringsprocessen, er, at din fil er ikke et gyldigt Win32-program. Er det et gyldigt Win32-program? ”. Svar: selvfølgelig ikke, det er en gyldig 64 bit UEFI-binær. Der var ikke flere svar...

Jeg prøvede igen. Denne gang modtog jeg en download-e-mail til den underskrevne fil, og bestyrelsen siger det det underskrevne mislykkedes. Jeg downloadede det og bekræftede det. Binæren fungerer på secureboot-platformen og er underskrevet med nøglen

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

Jeg spurgte supporten, hvorfor processen angav en fejl, men jeg havde en gyldig download, og efter en masse e-mails svarede de "brug ikke den fil, der var forkert underskrevet. Jeg kommer tilbage til dig. " Jeg er stadig ikke sikker på, hvad problemet er, men hvis du ser på emnet for signaturnøglen, der er intet i nøglen, der kan angive Linux Foundation, derfor formoder jeg, at problemet er, at binærsystemet er underskrevet med en generisk Microsoft-nøgle snarere end en specifik (og tilbagekaldelig) nøgle bundet til Linux Foundation.

Dette er dog status: Vi vil fortsætte med at vente på, at Microsoft giver Linux Foundation en underskrevet og valideret pre-bootloader. Når det sker, uploades det til Linux Foundation-webstedet, så alle kan bruge det.

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

Træk dine konklusioner, men det vil tage tid.


Tilføj som foretrukken kilde i Google