Posso dire a Linux di non scambiare lo spazio dati di un processo specifico?

3

Devo essere in grado di scrivere un programma che utilizza un valore segreto che voglio garantire che non venga mai scritto sul disco durante uno scambio di pagine. Il valore viene inserito in modo sicuro all'avvio del programma e viene cancellato (mediante garbage collection sicura) quando non è più in uso.

Posso dire a Linux di non scrivere sul disco un valore specifico di un processo specifico durante un cambio di processo o uno scambio di pagina? Se non un singolo valore, tutte variabili / dati per un processo specifico?

Questa domanda è stata posta in parte qui:

link

ma non c'era una risposta soddisfacente (un sacco di risposte "do not do this" perché il contesto non era spiegato).

Non riesco a trovare riferimenti specifici a questo problema altrove.

Se la risposta è "no", allora come può un programma che si occupa di informazioni private (ad esempio GnuPGP, tra gli altri) evitare di avere le chiavi private in giro sul disco per qualche tempo (anche se molto breve) lasciandolo incline a snooping non autorizzato o forense recupero dati?

    
posta David Scholefield 25.10.2015 - 11:14
fonte

1 risposta

3

Puoi usare mlock, che sono stati menzionati anche nella domanda a cui fai riferimento. Dalla pagina man :

mlock() and mlockall() respectively lock part or all of the calling process's virtual address space into RAM, preventing that memory from being paged to the swap area.

Tuttavia, questo potrebbe non essere sufficiente perché in caso di arresto anomalo il programma potrebbe lasciare un core dump che include ancora questi dati. Per ottenere una risposta molto più dettagliata, leggi Protezione dei dati riservati in memoria .

    
risposta data 25.10.2015 - 11:46
fonte

Leggi altre domande sui tag