Il prossimo anno arriverà Windows 8, ultima incarnazione del famoso sistema operativo di casa Microsoft, che porterà parecchie innovazioni, da quel che s’è visto e letto finora, ma qualcosa saltata fuori di recente ha provocato parecchi mal di pancia.
Si tratta dell’introduzione dell’avvio tramite funzionalità “Secure Boot” presente nelle schede madri moderne che fanno uso dell’UEFI al posto del vecchio BIOS che ha accompagnato i PC da 30 anni a questa parte.
Senza perdere troppo tempo in spiegazioni (un articolo esaustivo su come funziona si trova in questa pagina), sui sistemi UEFI con attiva questa modalità l’avvio di Windows 8 avverrà in maniera “sicura”, poiché verrà effettuato un controllo della firma del codice di boot, e soltanto se andrà a buon fine si proseguirà con la sua esecuzione.
Ne abbiamo già parlato diverse volte, ma l’argomento è ormai ben noto: si tratta di sfruttare le funzionalità messe a disposizione dal cosiddetto Trusted Computing, che in questo modo fa il suo ingresso “ufficiale” nel mondo dei PC.
Microsoft lo adotta nella misura in cui vuole proteggere l’esecuzione di tutto il codice fin dall’inizio, assicurandosi quindi che tutta la catena, dal reset fino all’esecuzione del suo codice di boot (e da lì a seguire), sia controllata e verificata accuratamente, senza manomissione in nessuna sua parte.
Quando Microsoft stava lavorando a Longhorn, poi commercializzato come Vista, era già all’opera su tecnologie come questa (all’epoca denominata Palladium internamente, poi rinominata in NGSCB, Next-Generation Secure Computing Base), e si pensava che sarebbe stata inserita in questo s.o., appunto.
L’erede di XP fu, stranamente, rilasciato senza alcun supporto a NGSCB, forse perché ancora immaturo, ma molto più probabilmente perché l’hardware su cui sarebbe dovuto girare era pressoché inesistente. O, magari, ben nascosto; ho, infatti, scoperto parecchi anni dopo che il mio ThinkPad R40 monta il famigerato chip “Fritz”, ma IBM ha cancellato da tempo dal suo sito ogni informazione a riguardo, probabilmente per non comprometterne le vendite (a causa della cattiva fama che si fece questa tecnologia).
“Ora il cerchio è completo“. Adesso tanti dispositivi, in primis la CPU, supportano la tecnologia trusted, ivi compreso l’erede del BIOS, l’UEFI, che consente di memorizzare un insieme di chiavi certificate e utilizzarle per la validazione dei dati letti al boot, prima di lanciare il codice di inizializzazione del kernel, se l’opzione Secure Boot di cui sopra risulta attiva.
Nel caso in cui risulti inattivo, l’UEFI si comporta esattamente come il BIOS: carica il codice di boot e lo segue, senza effettuare alcun controllo (a parte uno di consistenza dei dati appena letti: un banale “checksum” per verificare se sono presenti eventuali errori).
Appare evidente come ciò comporti l’introduzione di una nuova caratteristica, che può essere fruita o meno dall’utente finale, a proprio arbitrio. Ma ciò che ha fatto storcere il naso a Matthew Garrett di Red Hat (suo è l’intervento nel link a inizio articolo ) è stata la certificazione Microsoft che impone agli OEM la presenza di questa voce nel boot e, soprattutto, che rimanga abilitata e non sia modificabile durante l’esecuzione.
Si tratta, però, di una richiesta a dir poco ovvia, poiché, diversamente, il codice di avvio potrebbe tranquillamente essere modificato da software malevolo, rompendo questa catena di responsabilità e rendendo vani tutti gli sforzi fatti per arrivare a questo stato dell’arte. Un esempio è arrivato qualche giorno fa con Mebromi, che si installa nel BIOS.
Sappiamo bene quanto in passato sia stata criticata Microsoft per non aver speso abbastanza risorse nella sicurezza dei suoi prodotti, che peraltro risultano anche i più bersagliati in quanto maggiormente diffusi (provocando danni in primis agli utenti), per cui se si presenta un’ottima opportunità per fortificarli, dovrebbe essere doveroso sfruttarla al meglio.
Questo non significa che Windows 8 richiederà necessariamente un firmware UEFI per poter girare, poiché il supporto al vecchio BIOS continua a esser presente. Semplicemente con l’UEFI gli OEM saranno tenuti e rispettare quelle indicazioni, in modo tale che gli utenti finali, spesso digiuni di informatica, possano ritrovarsi con un sistema “più sicuro” dall’accensione fino alla visualizzazione del desktop (e oltre).
In ogni caso, con la possibilità di disabilitare il Secure Boot, anche un sistema UEFI potrà continuare a lanciare s.o./software non firmati, esattamente come avviene adesso. Per cui, anche qui, non c’è alcun motivo di preoccupazione.
Viene, però, sollevata la possibilità che gli OEM possano eliminare questa possibilità. Microsoft non impone assolutamente nulla a riguardo, per cui l’operazione sarebbe a totale carico dei primi, che sono liberi di preparare e commercializzare i propri prodotti nella maniera che ritengono più opportuna per i loro affari (sarà poi il mercato a decretarne il successo o meno).
Certamente suonerebbe strano togliere di mezzo una caratteristica come questa, poiché ridurrebbe gli scenari di utilizzo del sistema. Pensiamo, ad esempio, al software per il recupero dei dati in caso di malfunzionamenti / disastri, oppure a quelli per il (ri)partizionamento dei dischi, ecc. Il campo è vasto.
Nel malaugurato caso che l’opzione non fosse più disponibile, si dovrebbe necessariamente passare da software digitalmente firmato. Anche qui, l’UEFI viene in aiuto consentendo di memorizzare più chiavi al suo interno, da utilizzare allo scopo. Oltre a quella di Microsoft potrebbero, quindi, essercene altre fornite da altri enti / aziende, che consentirebbero pertanto l’esecuzione di software con esse firmato.
Ancora una volta, non esistono imposizioni da parte di Microsoft sulla presenza o meno di altre chiavi. Gli OEM, quindi, possono memorizzarne altre nei loro firmware UEFI, come pure dare la possibilità agli utenti di aggiungerle o cancellarle (ivi comprese quelle di una black list, concetto anche questo supportato, oltre alle precedenti che fanno parte della white list).
Nel caso peggiore, quindi, sarebbe comunque possibile eseguire codice firmato, cosa che già esiste per alcune versioni di Linux. Il problema posto da Garrett riguarda il fatto che per una soluzione più generale servirebbe un boot manager firmato che consenta, poi, di lanciare una qualunque versione di Linux (o di altri s.o.).
Il candidato numero uno sarebbe ormai da tempo il diffusissimo Grub2, che però è GPL v3, ed è questo il problema maggiore su cui si sofferma il personaggio. Questa licenza è stata partorita da Richard Stallman per eliminare quello che è stato definito “tivoization” , ossia un s.o. open source e addirittura GPL (v2) che però non consentiva di eseguire codice diverso da quello firmato con apposite chiavi del produttore.
Dunque Grub2, per quanto molto completo, non è una soluzione che si può prendere in considerazione, avendo abbracciato una licenza che nasce per motivazioni diametralmente opposte e in pieno contrasto con quelle che hanno portato al Secure Boot. La versione 1 è ancora GPL v2, ma è ormai obsoleta e ci vorrebbe parecchio tempo per portarla al livello della 2. Ci sarebbe LILO, che utilizza BSD come licenza, e quindi sarebbe papabile allo scopo.
In conclusione, per l’esecuzione di s.o. diversi da Windows 8 su macchine UEFI con Secure Boot attivo le soluzioni ci sono o si possono comunque realizzare, e non si può certamente tirare in ballo la GPLv3 per puntare il dito contro questi meccanismi, perché sarebbe paradossale visto che nasce proprio per combatterli.
Come già detto altre volte in queste pagine, il futuro è certamente rappresentato da sistemi “trusted” poiché il nuovo ecosistema permette di risolvere diversi problemi di sicurezza. Si tratta, inoltre, di una tecnologia “neutra” e utilizzabile da qualunque s.o., quindi non esclusivamente da Windows, considerato che pure Linus Torvalds la vede di buon occhio e applicabile al suo Linux (che è stato, inoltre, il primo kernel a supportarla).
Al solito, l’argomento si dimostra indigesto a chi vede ormai il demonio a ogni angolo della strada, ma fortunatamente la tecnologia va avanti, e la razionalità predomina..