¿Puedo decirle a Linux que no cambie el espacio de datos de un proceso específico?

3

Necesito poder escribir un programa que use un valor secreto que quiero asegurar que nunca se escriba en el disco durante un intercambio de página. El valor se ingresa de manera segura cuando se inicia el programa y se borra (mediante la recolección de basura segura) cuando ya no está en uso.

¿Puedo decirle a Linux que no escriba un valor de datos específico de un proceso específico en el disco durante un cambio de proceso o un cambio de página? Si no es un valor único, todas variables / datos para un proceso específico?

Esta pregunta se ha formulado en parte aquí:

enlace

pero no hubo una respuesta satisfactoria (muchas respuestas de tipo "no hagas esto" porque no se explicó el contexto).

No puedo encontrar ninguna referencia específica a este problema en otro lugar.

Si la respuesta es 'no', ¿cómo puede un programa que trata con información privada (por ejemplo, GnuPGP, entre otros) evitar tener claves privadas en el disco durante algún tiempo (aunque sea muy breve) y dejarlo propenso a la indagación no autorizada o forense? recuperación de datos?

    
pregunta David Scholefield 25.10.2015 - 11:14
fuente

1 respuesta

3

Puede usar mlock, que también se mencionaron en la pregunta a la que hizo referencia. De la página de manual :

  

mlock () y mlockall () bloquean respectivamente parte o la totalidad del espacio de direcciones virtuales del proceso de llamada en la RAM, evitando que la memoria se pagine al área de intercambio.

Pero, esto podría no ser suficiente porque en caso de una falla, su programa podría dejar un volcado de memoria que aún incluya estos datos. Para obtener una respuesta mucho más detallada, lea Protección de datos confidenciales en la memoria .

    
respondido por el Steffen Ullrich 25.10.2015 - 11:46
fuente

Lea otras preguntas en las etiquetas