mlock e cambio di contesto

2

Una raccomandazione comune è di mantenere le chiavi di crittografia e altri piccoli segreti nella memoria del mlocked.

Purtroppo i segreti nei registri saranno ancora versati se una discussione viene anticipata. Ci sono modi per garantire che il kernel sovrascriva i dati versati piuttosto che lasciarli indugiare o fare in modo che i kernel lo facciano già?

Il kernel salva i registri nello stesso percorso ogni volta? Sono principalmente interessato a Linux, anche se non mi dispiacerebbe qualcosa di portatile.

    
posta user134665 28.12.2016 - 22:44
fonte

1 risposta

1

Ci sono più cose che possono causare la fuoriuscita di registro, dalla preemption di thread come hai menzionato a tutti i tipi di interrupt. Al momento non c'è modo di prevenirlo, a meno di disabilitare completamente le interruzioni (che è difficile quando si prendono in considerazione gli NMI e le SMI) e la preventiva. Questo può essere fatto solo in kernelmode e rende un computer completamente inutilizzabile.

Penso che il problema sia l'incomprensione dello scopo di mlock() . Non è progettato per mantenere le informazioni sensibili fuori dalla RAM (dopo tutto, la memoria bloccata è ancora memoria), ma per impedire che venga scambiata su disco, per ragioni di sicurezza o di prestazioni. I registri che sono stati messi in pila durante un cambio di contesto non sono soggetti ad essere scambiati in primo luogo. Non appena l'interruttore di contesto è finito, i registri vengono ripristinati.

Does the kernel save registers in the same location each time?

I registri vengono salvati in alcune posizioni, a seconda dell'origine dell'interruttore di contesto. Nel file sorgente del kernel arch/x86/entry/entry_64.S , generale i registri di scopo vengono spinti in pila, in genere utilizzando macro dedicate. Successivamente vengono ripristinati usando il pop. Le macro rilevanti (come SAVE_C_REGS e RESTORE_C_REGS ) sono definite in arch/x86/entry/calling.h .

    
risposta data 30.11.2017 - 05:53
fonte

Leggi altre domande sui tag