¿Se pueden mantener fuera de la memoria del programa las claves y los inicios de sesión no cifrados?

2

No importa qué técnica se use para almacenar claves de cifrado & logins, parece que todos los caminos llevan a la memoria del programa (que yo sepa), como una versión sin cifrar de las teclas & los inicios de sesión se almacenarán allí para realizar el cifrado y el inicio de sesión, y un atacante puede leer físicamente desde la RAM.

¿Es esto cierto? Si es así, ¿hay alguna manera de evitar que las teclas & ¿Los inicios de sesión se almacenan en la memoria sin cifrar?

    
pregunta 29.05.2013 - 17:38
fuente

2 respuestas

7

Como señala DeerHunter, se puede almacenar información a la que nunca se debe acceder mediante un juego de instrucciones por cable en un Módulo de seguridad de hardware .

Los HSM mantienen la clave y pueden realizar tareas que la utilizan, por ejemplo, generar firmas, sin que la clave se conozca fuera del HSM. Un HSM no es una caja en la que se guarda una clave de cifrado, que debe cargarse cuando se utiliza: la clave permanece en la caja, el HSM está diseñado para no egresar nunca la clave.

Sin embargo, si su modelo de amenaza incluye atacantes que tienen acceso físico a la RAM, no tiene esperanza. Es como preguntar si es posible mantener a los ladrones fuera de su casa mientras los deja en todas las habitaciones.

Si todo lo que pretende lograr nunca es tener la clave de cifrado presente en la RAM en su totalidad, podría imaginar un esquema de cifrado que no utilizara toda la clave de una vez, quizás introduciendo la clave un byte a la vez en Un algoritmo iterativo. El resultado de esta iteración sería una función de cifrado de bloque.

Como de costumbre, el oso ha proporcionado una excelente respuesta que cubre este tema , y no hay necesidad de Que repita sus esfuerzos.

    
respondido por el lynks 29.05.2013 - 17:49
fuente
2

Si alguien a quien no quiere saber su contraseña tiene acceso directo a la memoria de una computadora en la que se conoce una contraseña en texto sin formato, ha fallado completamente en la seguridad de la información.

En algún punto, en algún lugar, su información de inicio de sesión simplemente debe existir en texto sin formato. No tiene que estar allí por mucho tiempo, y nunca debe estar persistido en la memoria no volátil a largo plazo de esta forma, pero simplemente no es factible diseñar un sistema utilizable de entrada de credenciales estática eso es invulnerable a la "caja blanca" de indagación (donde se asume que el atacante tiene acceso ilimitado a la información de estado de la máquina y puede analizar la ejecución paso a paso). El usuario debe poder escribir su contraseña en un cuadro de texto, que almacena esa contraseña claramente en la memoria (incluso si lo que se muestra en la pantalla es una serie de viñetas), y luego su programa debe poder recuperarla claramente antes de codificarla para el transporte al sistema de autenticación.

Del mismo modo, algo en algún lugar debe conocer la clave que está utilizando para cifrar o descifrar. Esto, sin embargo, no tiene que ser tu computadora real. Se sugirieron los HSM; estos son módulos de procesamiento de datos diseñados para generar y almacenar claves de una manera que no requiere la participación directa de la CPU o la memoria de la computadora a la que está conectada; Una caja negra ideal. También están diseñados para resistir todos los esfuerzos para ingresar dentro de esta caja, desde cualquier fuente, incluida la computadora a la que está conectado. La computadora es solo un proxy y una fuente de comandos y datos de entrada al HSM. Sin embargo, esa computadora aún debe ser confiable, en la medida en que en cualquier momento en que un atacante pueda ver y / o controlar lo que se envía entre la computadora y el HSM, realmente no necesita los datos del HSM para comprometer su comunicación o incluso tu llave; él tiene un oráculo de descifrado sentado allí para que lo explote.

Si está preocupado por los keyloggers u otros sistemas que podrían leer una contraseña estática, entonces no use una; En cambio, invierta en etiquetas de claves RSA o dispositivos similares. Estos dispositivos utilizan un algoritmo con una semilla inicial para generar una secuencia de números, cada uno válido por un minuto aproximadamente. El mismo algoritmo, dado el mismo valor de semilla, está generando los mismos números en el lado del servidor. Escriba el número que ve en la etiqueta (en espera de la siguiente si la actual está a punto de actualizarse) como su contraseña. Realmente no importa si escribe ese código en un dispositivo que obviamente le está enviando las teclas a un tipo con una computadora portátil a pocos pies de distancia; ese código solo funcionará durante un minuto, y por completo, tiene una posibilidad infinitesimal de adivinar correctamente el siguiente código, incluso si supiera cada código que el generador haya producido.

    
respondido por el KeithS 30.05.2013 - 22:03
fuente

Lea otras preguntas en las etiquetas