La crittografia della memoria nelle CPU consumer di AMD è sparita all’improvviso, e gli utenti non l’hanno presa affatto bene. Per anni una funzione chiamata TSME ha protetto i dati conservati nei chip di memoria collegati ai processori, anche quelli più economici, da una serie di attacchi fisici piuttosto subdoli. Poi, senza un annuncio, senza una riga di spiegazione, quella protezione è scomparsa dai modelli Ryzen destinati al grande pubblico. E il modo in cui è successo ha lasciato parecchi utenti con l’amaro in bocca.
Facciamo un passo indietro. Circa dieci anni fa AMD introdusse la Transparent Secure Memory Encryption sulle sue CPU di fascia alta. L’idea era semplice quanto efficace, cifrare l’intero contenuto della memoria così da rendere i dati inutilizzabili per chi cerca di estrarli fisicamente, ad esempio con i cosiddetti attacchi cold boot. Con il passare del tempo questa protezione arrivò anche sui chip più economici, compresa la versione consumer dei Ryzen, quella che costa meno rispetto alla variante Pro. Gli utenti si erano abituati ad averla, e per qualcuno era diventata praticamente scontata. Salvo poi accorgersi che non c’era più, in maniera impossibile da rilevare su Windows e con un bel po’ di lavoro tecnico necessario su Linux.
Ora la vedi, ora non più
La cosa curiosa è che AMD non ha mai spiegato perché TSME funzionasse su questi processori, né ha confermato il cambiamento. Alle domande inviate via email l’azienda ha risposto in modo secco, limitandosi a dire che TSME è una funzione di sicurezza applicata solo alle CPU PRO nell’ambito delle AMD PRO Technologies. È la prima volta che il produttore mette nero su bianco questa restrizione in pubblico.
A scoperchiare il vaso è stato Ben Kilpatrick, che si definisce un appassionato di Linux attento alla privacy. Mentre installava un nuovo sistema operativo sulla sua macchina con un Ryzen 7 9700X di architettura Zen 5, fece partire uno strumento di controllo chiamato Host Security ID, pensato per verificare le configurazioni di sicurezza di firmware e hardware. Sorpresa, lo strumento segnalava che la cifratura della RAM non era più supportata. Eppure lui aveva attivato TSME nel BIOS fin dall’inizio.
Da lì è cominciata un’indagine durata mesi. Kilpatrick ha contattato MSI, il produttore della sua scheda madre, finché gli ingegneri non hanno acconsentito a fare dei test. Il risultato, le versioni consumer dei Ryzen su schede MSI e Gigabyte avevano TSME attivo solo con un firmware più vecchio, fornito tramite l’AGESA di AMD. Con la versione più recente, la 1.2.7.0, la protezione spariva. Le versioni Pro, invece, mantenevano TSME in ogni configurazione.
Non ho altro da aggiungere
Il punto che ancora oggi rimane senza risposta è se si tratti di una scelta deliberata o di un bug introdotto per sbaglio. La differenza non è da poco. Se è una decisione voluta, AMD ha tolto consapevolmente una funzione che girava bene per riservarla ai clienti enterprise. Se è un errore, allora è un baco del firmware che andrebbe corretto. In entrambi i casi il silicio è capace di gestirla, in entrambi i casi il cambiamento è arrivato con AGESA, e in entrambi i casi AMD ha preferito non spiegare.
Kilpatrick ha aperto una segnalazione sul repository GitHub pubblico dell’ingegneria di AMD. Due ingegneri hanno risposto. Tom Lendacky, fellow software engineer, ha detto di non sapere cosa avesse causato il cambiamento, suggerendo di disattivare e riattivare l’opzione nel BIOS. Mario Limonciello, senior principal software engineer, ha proposto la stessa cosa, rimandando eventualmente al produttore della scheda.
Sei settimane dopo, con in mano i risultati dei test di MSI, Kilpatrick è tornato alla carica. Il marketing di MSI gli aveva riferito che AMD aveva comunicato ufficialmente che TSME è supportato esclusivamente sui processori della serie PRO. I test su una scheda Asus X870E lo confermavano, con un Ryzen 9800X3D consumer lo stato di TSME risultava 0, mentre con un Ryzen 9945 PRO risultava 1, stessa scheda e stesso BIOS.
C’è di più. Le catture di memoria dell’AMD Boot Loader mostravano che un flag interno, chiamato DfIsTsmeEnabled, restituiva FALSE per i processori consumer a prescindere dalle impostazioni del BIOS, mentre risultava TRUE per i chip PRO o EPYC quando TSME era abilitato. Kilpatrick ha ricordato a Lendacky che nel 2020 lo stesso ingegnere aveva confermato il supporto a TSME su un Ryzen 3700X consumer. Poi la domanda diretta, si tratta di un limite a livello di silicio o di una scelta di policy nel firmware. La risposta di Limonciello è arrivata svelta, “Mi scuso, ma non ho altre informazioni da condividere su questo argomento”. E lì la discussione si è chiusa.
Vale la pena ricordare la differenza tra le due protezioni. La SME, Secure Memory Encryption, è gestita dal sistema operativo, usa una sola chiave e permette di cifrare singole pagine di memoria, ed è disponibile solo nelle fasce Pro ed Epyc. La TSME invece è gestita dal firmware, cifra tutta la RAM senza alcun coinvolgimento del sistema operativo e si attiva in silenzio quando viene abilitata nel BIOS. È questa caratteristica a renderla, nella pratica, la più utile delle due, capace di proteggere da attacchi cold boot, intercettazioni sull’interfaccia DRAM e rimozione fisica dei moduli di memoria.
Non risulta che AMD abbia mai pubblicizzato TSME come disponibile sui processori consumer. Eppure i commenti degli stessi ingegneri e gli anni in cui la funzione ha lavorato senza problemi avevano portato Kilpatrick e altri a considerarla parte del pacchetto. Toglierla in sordina, senza una parola, è stato vissuto come una specie di tradimento. “Potrebbero non essersi accorti di averlo fatto, oppure averlo fatto di proposito sperando di passarla liscia, e in entrambi i casi le risposte sono state evasive allo stesso modo”, ha osservato Joe Fitzgerald, esperto di sicurezza a livello di silicio. Secondo lui una spiegazione sarebbe doverosa, anche solo per dire che TSME non sarebbe mai dovuta essere supportata e che i firmware che la abilitavano erano un errore.