cifrando datos mientras está en la memoria

1

¿Cuál es la mejor manera de proteger el ingreso de texto sensible y almacenarlo en la memoria hasta que se complete el envío del formulario y luego borrarlo poco después?

Estoy buscando proteger la información confidencial, como la información del paciente y las credenciales de inicio de sesión, mientras se envía en la página en iOS, Android y Windows Phone a través de un método criptográfico. Necesito llamar a una API y consultar con el servidor si la información es correcta y, de no ser así, solicitar una nueva entrada, sin tener que perder toda otra información válida.

No quiero que los datos de texto simple permanezcan / permanezcan si el usuario no completa completamente el formulario de envío o si los datos se escriben inadvertidamente en los archivos de la página.

    
pregunta TJ Aodha 19.03.2016 - 18:10
fuente

2 respuestas

1

Si está trabajando en un idioma que le da acceso a las ubicaciones de memoria de las cadenas que se están ingresando, podría sobrescribir la información confidencial con bytes nulos cuando el usuario abandone la página / deje de ingresar datos por un período de tiempo determinado.

    
respondido por el Ethan Donowitz 20.03.2016 - 19:05
fuente
0

Supongo que está trabajando en Java ya que marcó la pregunta con "Android".

Si realmente tienes miedo de que tu memoria sea fisgoneada, estás bastante muerto en el agua si te enfrentas a alguien con un nivel de sofisticación decente. Pero hay algunas técnicas de "seguridad a través de la oscuridad" que pueden protegerlo contra una fisgonería informal.

Para comenzar, los datos confidenciales se deben almacenar en la matriz de caracteres [] y no en la cadena. Una vez que lo haya utilizado, lo "quema" sobrescribiendo con ceros y luego liberando. Estas son las mejores prácticas estándar y siempre debes hacer esto.

Puedes intentar "cifrar" los datos mientras están almacenados en la memoria. La forma más sencilla es XOR con una larga serie de bytes pseudoaleatorios. Esto hará que sea ininteligible para alguien que escanea casualmente a través de un volcado de memoria, pero una vez que descompongan su aplicación, probablemente descubrirán cuál fue su algoritmo de ofuscación y también descubrirán qué memoria utilizaron para almacenar los datos confidenciales.

Como se mencionó en otro póster, debe tomarse la molestia de asegurarse de que su memoria nunca se cambie al almacenamiento a largo plazo. Se pueden hacer llamadas al sistema en Linux para evitar el intercambio, pero creo que su uso en Java no sería aconsejable. La buena noticia es que no creo que Android use swap, por lo que no será un problema para ti.

    
respondido por el Edward Falk 21.03.2016 - 22:27
fuente

Lea otras preguntas en las etiquetas