Le avventure nella firma UEFI di Microsoft

Tradurrò questo articolo scritto da James Bottomley , consulente tecnico della Linux Foundation , che si è dedicato alla creazione di un pre-bootloader per consentire l'avvio di Linux.

Come ho spiegato nel mio precedente post, abbiamo già il codice per il pre-bootloader della Linux Foundation. Tuttavia, si è verificato un ritardo mentre cercavamo di ottenere l'accesso al sistema di firma di Microsoft.

La prima cosa da fare è pagare la quota di 99 dollari a Verisign (ora Symantec) e ottenere una chiave verificata da Verisign. Noi l'abbiamo fatto per la Linux Foundation e tutto ciò che ci hanno chiesto è stato di contattare la sede centrale per la verifica. La chiave viene restituita tramite un URL che si installa nel browser, ma è possibile utilizzare i normali strumenti SSL di Linux per estrarla e creare un certificato e una chiave PEM standard. Non ha nulla a che vedere con la firma UEFI, ma viene utilizzata per convalidare al sistema sysdev di Microsoft la tua identità. Prima di poter creare un account sysdev, è necessario testarlo firmando un eseguibile fornito da loro e caricandolo . Hanno requisiti rigorosi per la firma su una specifica piattaforma Windows, ma sbsign ha funzionato e, voilà, il nostro account è stato creato.

Una volta creato un account, non è comunque possibile caricare i binari UEFI per la firma senza prima firmare un contratto cartaceo . Gli accordi sono molto onerosi e includono numerose licenze escluse (tra cui tutte le licenze GPL per i driver, ma non per i bootloader). L'aspetto più gravoso è che gli accordi sembrano estendersi oltre gli oggetti UEFI che si firmano . Gli avvocati della Linux Foundation hanno concluso che la situazione è sostanzialmente innocua per la LF, poiché non vendiamo prodotti, ma potrebbe essere inaccettabile per altre aziende. Secondo Matthew Garrett, Microsoft è disposta a negoziare accordi speciali con le distribuzioni per mitigare alcuni di questi problemi.

Una volta firmati gli accordi, inizia il vero divertimento tecnico . Non basta caricare un binario UEFI e aspettarsi che venga firmato. Prima di tutto, bisogna racchiuderlo in un file .cab . Fortunatamente, esiste un progetto open source chiamato lcab che può creare file .cab. Dopodiché, bisogna firmare il file .cab con la chiave Verisign . Anche in questo caso, esiste un altro progetto open source che può farlo: osslsigncode. Chiunque avesse bisogno di questi strumenti, li può trovare nel mio repository openSUSE UEFI Build Service. L'ultimo ostacolo è che il caricamento del file richiede Silverlight . Sfortunatamente, Moonlight non sembra funzionare e, anche con la versione di anteprima 4, la casella di caricamento risulta vuota, quindi è necessario utilizzare Windows 7 sotto una KVM (macchina virtuale basata sul kernel). Quando si arriva a questo punto, bisogna anche certificare che il binario "da firmare non deve essere distribuito con licenza GPLv3 o licenze open source simili ". Presumo sia dovuto al timore che la chiave venga divulgata, ma non è affatto chiaro (lo stesso vale per le "licenze open source simili").

Una volta completato il caricamento, il file cabinet attraversa sette fasi. Sfortunatamente, il primo caricamento di prova si è bloccato alla fase 6 (la fase di firma del file). Dopo sei giorni, ho inviato un'e-mail all'assistenza Microsoft chiedendo spiegazioni. La risposta: "Il codice di errore restituito dal processo di firma indica che il file non è un'applicazione Win32 valida . È un'applicazione Win32 valida?" La risposta: ovviamente no, è un binario UEFI a 64 bit valido. Non ci sono state ulteriori risposte ...

Ho riprovato. Questa volta ho ricevuto un'email per scaricare il file firmato, ma la dashboard indicava che la firma non era andata a buon fine . L'ho scaricato e verificato. Il file binario funziona sulla piattaforma Secure Boot ed è firmato con la chiave.

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

Ho chiesto all'assistenza perché il processo segnalasse un errore, nonostante avessi scaricato il file correttamente. Dopo una serie di email, mi hanno risposto: "Non usare quel file; è stato firmato in modo errato . Ti ricontatterò". Non sono ancora sicuro di quale sia il problema, ma se si guarda l'oggetto della chiave di firma, non c'è nulla che indichi la Linux Foundation . Pertanto, sospetto che il problema sia che il file binario sia firmato con una chiave generica di Microsoft anziché con una chiave specifica (e revocabile) collegata alla Linux Foundation.

Tuttavia, questo è lo stato: continueremo ad aspettare che Microsoft fornisca a Linux Foundation un pre-bootloader firmato e convalidato. Quando ciò accadrà, verrà caricato sul sito di Linux Foundation affinché tutti possano usarlo.

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

Trai le tue conclusioni, ma ci vorrà tempo.


Aggiungi come fonte preferita in Google