De avonturen in de UEFI-handtekening van Microsoft

Ik vertaal toevallig dit artikel dat hij schreef James Bottomly, technisch adviseur van de Linux Foundation, die begon samen te stellen een pre-bootloader zodat je Linux kunt opstarten.

Zoals ik in mijn vorige bericht heb uitgelegd, hebben we de code voor de Linux Foundation pre-bootloader. Er was echter een vertraging terwijl we toegang hadden tot het ondertekeningssysteem van Microsoft.

Het eerste wat je moet doen is betaal de $ 99 aan Verisign (nu Symantec) en laat een sleutel verifiëren door Verisign. We deden het voor de Linux Foundation, en het enige wat ze willen doen is het hoofdkantoor bellen om te verifiëren. De sleutel keert terug in een URL die in uw browser is geïnstalleerd, maar standaard Linux SSL-tools kunnen worden gebruikt om deze uit te pakken en het gebruikelijke PEM-certificaat en -sleutel te maken. Het heeft niets te maken met UEFI-ondertekening, maar wordt gebruikt om het systeem te valideren systeemdev Microsoft dat je bent wie je zegt dat je bent. Voordat u een sysdev-account kunt maken, moet u deze testen het ondertekenen van een uitvoerbaar bestand dat ze u geven en het uploaden. Ze stellen strikte eisen dat u het ondertekent op een specifiek Windows-platform, maar sbsign het werkte tenminste en bingo onze account is gemaakt.

Nadat het account is gemaakt, kunt u nog steeds geen UEFI-binaire bestanden uploaden om te ondertekenen zonder eerst teken een papieren contract. De overeenkomsten zijn erg omslachtig, inclusief veel uitgesloten licenties (inclusief alle GPL's voor stuurprogramma's, maar niet voor bootloaders). Het meest bezwarende deel is dat de afspraken lijken te komen buiten de UEFI-objecten die u ondertekent. Advocaten van de Linux Foundation concludeerden dat het grotendeels onschadelijk is voor de LF omdat we geen producten verkopen, maar het kan walgelijk zijn voor andere bedrijven. Volgens Matthew Garrett is Microsoft bereid om speciale deals te sluiten met distributies om een ​​aantal van die problemen te verminderen.

Zodra de overeenkomsten zijn ondertekend, is het echte technisch plezier. U kunt niet zomaar een UEFI-binair bestand uploaden en laten ondertekenen. Eerst moet je wikkel het in een .cab-bestand. Gelukkig is er een open source-project dat cabinetbestanden genaamd lcab kan maken. Dan moet je onderteken het .cab-bestand met de Verisign-sleutel. Nogmaals, er is een ander open source-project dat dat kan doen: osslsigncode. Voor iedereen die deze tools nodig heeft, zijn ze beschikbaar in mijn openSuse Build Service UEFI-repository. Het laatste probleem is dat het uploaden van het bestand vereist zilverlicht. Helaas lijkt maanlicht niet te werken en zelfs met versie 4 preview wordt de upload box leeg dus het is tijd om Windows 7 te gebruiken onder een kvm (op kernel gebaseerde virtuele machine). Wanneer u bij dat deel komt, moet u ook verklaren dat het binaire bestand 'moet worden ondertekend, mag niet worden gelicentieerd onder GPLv3 of vergelijkbare open source-licenties”. Ik neem aan dat het is uit angst voor belangrijke openbaarmaking, maar het is helemaal niet duidelijk (hetzelfde geldt voor "soortgelijke open source-licenties").

Zodra het uploaden is voltooid, stopt het cabinetbestand door zeven fasen. Helaas bleef de eerste testklim opgesloten in fase 6 (de handtekening van de bestanden). Na 6 dagen stuurde ik een ondersteuningsmail naar Microsoft met de vraag wat er aan de hand was. Het antwoord: “De foutcode die door het ondertekeningsproces wordt gegenereerd, is dat uw bestand is geen geldige Win32-toepassing. Is het een geldige Win32-applicatie? ”. Antwoord: uiteraard niet, het is een geldig 64 bit UEFI binair bestand. Er waren geen antwoorden meer...

Ik heb het opnieuw geprobeerd. Deze keer ontving ik een download-e-mail voor het ondertekende bestand en dat zegt het bord het ondertekende is mislukt. Ik heb het gedownload en geverifieerd. Het binaire bestand werkt op het secureboot-platform en is ondertekend met de sleutel

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

Ik vroeg de ondersteuning waarom het proces een mislukking aangaf, maar ik had een geldige download en na een golf van e-mails antwoordden ze: 'Gebruik dat bestand niet dat verkeerd getekend. Ik kom bij je terug. " Ik weet nog steeds niet wat het probleem is, maar als je naar het onderwerp van de ondertekeningssleutel kijkt, er staat niets in de sleutel om aan te geven aan de Linux Foundationdaarom vermoed ik dat het probleem is dat het binaire bestand is ondertekend met een generieke Microsoft-sleutel in plaats van een specifieke (en herroepbare) sleutel die is gekoppeld aan de Linux Foundation.

Dit is echter de status: we zullen blijven wachten tot Microsoft de Linux Foundation een ondertekende en gevalideerde pre-bootloader geeft. Wanneer dat gebeurt, wordt het geüpload naar de Linux Foundation-site zodat iedereen het kan gebruiken.

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

Trek uw conclusies, maar dit zal tijd kosten.


Voeg dit toe als voorkeursbron in Google.