2010-01-06 6 views
14

Estoy trabajando en un administrador de contraseñas Java y actualmente tengo todos los datos del usuario, después de descifrarlos de un archivo, permaneciendo en la memoria en todo momento y almacenados como una cadena para mostrar en el UI, etc.Datos confidenciales en la memoria

¿Es esto un riesgo de seguridad de alguna manera? Estoy particularmente preocupado con alguien "dumping" o leer la memoria de la computadora de alguna manera y encontrar datos desnudos de un usuario.

He considerado mantener encriptados todos los datos confidenciales (las contraseñas) y solo descifrar cada pieza según sea necesario y destruirla después ... pero prefiero no pasar y cambiar una gran cantidad de código en una superstición.

Respuesta

21

Si su adversario tiene la capacidad de ejecutar código arbitrario en su máquina de destino (con los privilegios de depuración necesarios para volcar una imagen de proceso), está todo tipo de problemas.

Si su adversario tiene la capacidad de leer la memoria a una distancia precisa (es decir, TEMPEST), está todo tipo de atornillado.

Proteja los datos en tránsito y en almacenamiento (en el cable y en el disco), pero no se preocupe * por los datos en la memoria.

* Ok, hay clases de programas que sí deben preocuparse. El 99.99% de todas las aplicaciones no, apuesto que el tuyo no.

+0

Entonces, esencialmente, si tuviera que hacer el cambio y mantener todos los datos encriptados, simplemente haría que algo ya sea muy difícil/improbable, incluso más difícil. Me imagino que encontrar el byte [] que contiene la tecla AES es _mucho_ más difícil que encontrar texto sin formato. – defectivehalt

+3

No realmente en Java; se convierte en una búsqueda de un objeto byte [] de un tamaño dado (a diferencia de un objeto String) en el montón. Pero sí, el tipo de atacante que te preocupa es tan extremadamente raro que estarías perdiendo el tiempo tratando de defenderte de ellos (y probablemente no tener éxito). –

+0

No podría estar más de acuerdo contigo Kevin. – Tower

5

Sí, ciertamente lo es, especialmente porque trivialmente puede depurar una aplicación. La mayoría de los códigos que tratan sobre cifrado y datos inseguros utilizan matrices de caracteres en lugar de cadenas. Mediante el uso de matrices de caracteres, puede sobrescribir la memoria con detalles confidenciales, lo que limita la vida útil de los datos confidenciales.

+4

Si puede depurar un programa, puede tomar el texto cifrado Y la clave y generar el texto llano usted mismo. Los privilegios de depuración son prácticamente imposibles de defender. –

+0

Sí, tienes un punto allí. Pero hace que la búsqueda de texto sea un poco más compleja. –

+0

¿Por qué un vuelco al leer desde '/ proc' puede hacer bien? – Xailor

5

En teoría, no puede proteger nada en la memoria por completo. Algunos grupos lograron congelar los chips de memoria y leer sus contenidos 4 horas después de apagar la computadora. Incluso sin llegar a tales extremos, un depurador y un punto de interrupción en el momento adecuado harán el truco.

Prácticamente sin embargo, simplemente no mantenga el texto plano en la memoria durante más tiempo de lo estrictamente necesario. Un atacante lo suficientemente determinado lo conseguirá, pero bueno.

+0

Su comentario sobre '4 horas' es incorrecto, eso podría ser posible solo cuando [congela] (https: // www.usenix.org/legacy/event/sec08/tech/full_papers/halderman/halderman.pdf) la memoria RAM con nitrógeno o algo así. –

+0

Nunca dije nada acerca de la temperatura ambiente :) El grupo lo logró, ergo, la afirmación es técnicamente correcta. –

+0

su declaración es engañosa en este contexto, ya que el cartel original no decía nada acerca de las temperaturas bajo cero. Sin embargo, puedes editar tu publicación para especificar estas condiciones. –

4

Vale la pena señalar que el sistema operativo puede decidir cambiar la memoria al disco, donde podría permanecer durante bastante tiempo. Por supuesto, leer el archivo de intercambio requiere fuertes privilegios, pero ¿quién sabe? La computadora portátil del usuario podría ser robada ...

Cuestiones relacionadas