Quanto è sicuro memorizzare le informazioni crittografiche nel registro della CPU anziché nella RAM

1

Ho letto di Tresor / TreVisor / Corazzato .

Quanto è sicuro memorizzare le informazioni di crittografia nella CPU Debug-Registrati per immagazzinarlo nella RAM?

E perché attualmente non è molto usato?

So che questo attenuerà un attacco di avvio a freddo che è uno dei modi per "rompere" una crittografia completa del disco, ma quali sono ulteriori usi?

Per quanto ne so, la programmazione di questa funzionalità non è molto più complicata dell'uso "normale" della RAM.

    
posta Serverfrog 28.02.2017 - 10:19
fonte

1 risposta

3

Ovviamente la risposta dipende dal tipo di CPU di cui si sta parlando.

Ad esempio, con i registri general-purpose su una CPU x86 moderna, hai diversi problemi:

  1. I registri della CPU sono largamente 64 bit. Per memorizzare una chiave crittografica di dimensioni accettabili, sono necessari almeno due registri. Questo è un problema perché il numero di registri su x86 è molto limitato (è ancora peggio con le vecchie CPU x86)

  2. I registri della CPU sono la "zona di lavoro" principale di una CPU, quindi non è possibile memorizzare una chiave crittografica per periodi di tempo più lunghi perché non c'è praticamente alcuna protezione / isolamento in atto - qualsiasi registro, tranne alcuni registri di scopo speciale (che, tuttavia, sono necessari per il corretto funzionamento del sistema operativo / cambio di attività ecc. e quindi non possono essere utilizzati per memorizzare chiavi crittografiche), possono essere accessibili da chiunque possa ottenere il processore per eseguire alcune istruzioni . Questo non è vero per la memoria, che può essere protetta dall'accesso da programmi non autorizzati.

  3. Sui sistemi operativi che supportano il multitasking (quindi, praticamente tutti i sistemi operativi correnti), quando si verifica un cambio attività, tutti i contenuti del registro vengono salvati nella RAM quando un'attività viene preempita e ricaricata dalla RAM quando l'attività viene assegnata CPU di nuovo. Questo succede a dozzine, se non centinaia di volte al secondo. Quindi le tue chiavi crittografiche finirebbero per essere memorizzate comunque. Potrebbero anche finire scambiati su disco quando una pagina che memorizza un'attività attualmente arrestata è stata trasferita su disco per fare spazio a un altro processo.

Modifica : poiché il tuo commento di follow-up e la mia risposta ad esso spiegano, puoi aggirare alcuni di questi problemi usando registri di scopo speciale che di solito non sono usati. Tuttavia, ci sono ancora problemi che non sembrano essere degni di questo nome:

  1. Il tuo sistema operativo deve collaborare - se capita di utilizzare questi registri speciali per lo scopo per cui sono stati progettati, i tuoi tasti vengono sovrascritti e i tuoi dati potrebbero essere spostati nel cestino senza che tu te ne accorga.

  2. Sei ancora protetto solo contro gli attacchi cold-boot (presupponendo che nessuno stato lasci la CPU, il che non è così facile da garantire a causa della priorità delle attività) e contro gli attacchi a basso privilegio che non riescono a ottenere accesso allo squillo 0. Quando il tuo kernel viene compromesso, le tue chiavi possono essere facilmente rubate con poche semplici istruzioni della CPU. Potrebbe essere ancora più facile rubarli in quel caso, perché sapresti esattamente dove cercarli. Quindi non stai aggiungendo alcuna sicurezza tranne contro l'avvio a freddo e forse alcuni attacchi DMA (quando un programma non privilegiato memorizza le chiavi nella RAM, altri programmi non privilegiati non possono leggerle, neanche).

Non so in che modo gli attacchi con avvio a freddo prevalenti per l'estrazione di chiavi siano effettivamente disponibili. Assumerei team operativi speciali sponsorizzati dallo stato, inoltre il tuo occasionale gadget potrebbe portarli fuori. Ma mi preoccuperei molto di più dei kernel OS compromessi rispetto agli attacchi cold boot.

    
risposta data 28.02.2017 - 14:57
fonte

Leggi altre domande sui tag