¿Cómo puedo asegurar la clave secreta?

4

Estoy un poco confundido acerca de la seguridad de la clave de cifrado secreta. Aquí está el escenario:

  1. Necesito cifrar algunos datos (archivo)
  2. Estos datos serán leídos por un programa (por ejemplo, escrito en C / C ++).
  3. Tanto el programa binario como los datos encriptados serán accesibles para algún usuario arbitrario.

Sin embargo, para leer los datos, el programa necesita tener la clave secreta que se utilizó para cifrar los datos. Una posibilidad sería codificar la clave secreta en el código fuente del propio programa. Sin embargo, la clave se puede encontrar incluso en el binario compilado. Tampoco tengo la posibilidad de recibir información del usuario para la contraseña / clave secreta, etc. Tampoco tengo acceso a la red para solicitar un servidor para enviar la clave. Por favor, supongamos que el sistema operativo es Linux / Linux como.

Entonces, la pregunta es, ¿cómo puedo asegurar esta clave?

    
pregunta user2219907 27.08.2014 - 18:22
fuente

3 respuestas

2

El mejor esquema posible sería tener esa clave de cifrado para cada usuario, similar a un código de autorización otorgado para los productos de Microsoft. La única diferencia sería que todos los programas que distribuyas tendrían que tener una clave de cifrado diferente incrustada en él.

Esa sería la única forma de proteger un poco los datos cifrados.

De cualquier manera, está rompiendo el principio de Kerckhoffs (2. El enemigo conoce el sistema), por lo que probablemente sería bueno implementar el descifrado / ofuscación de la clase que descifrará el archivo de datos. No detendrá a las personas que realmente quieren obtenerlo, pero definitivamente pondría una barrera.

No hay una buena manera de asegurar el programa al 100%.

    
respondido por el crypto 27.08.2014 - 19:17
fuente
2

Primero, no hornee la clave en el binario. Como señaló Xander, un HSM está diseñado para este propósito de tal manera que una clave es Solo accesible a la aplicación y no está en el sistema. Es posible que pueda configurar un host de bastión que bloqueó en una red de administración independiente para cumplir con este propósito, lo cual es un poco menos seguro. El siguiente nivel sería mantener al menos la clave en un área segura del sistema de archivos local. A continuación, utiliza el control de acceso y la administración y supervisión de identidades privilegiadas para limitar la posibilidad de que el usuario root obtenga la clave y no sea detectado.

Si los equipos nunca utilizan los datos y solo se identifican explícitamente los usuarios / sujetos, puede intentar algo como Mylar desde el MIT.

Debe encontrar la solución que maximice el retorno de su inversión en seguridad en relación con el riesgo de que se expongan los datos cifrados. Siempre habrá amenazas, pero habrá que considerar la probabilidad y el impacto antes de seleccionar cualquier contramedida.

Tampoco está claro si se trata de una aplicación cliente-servidor, una aplicación web o un programa de escritorio que utiliza un archivo de datos local. Estos detalles podrían impactar aún más su estrategia.

    
respondido por el Eric G 28.08.2014 - 04:35
fuente
1

¿No podría generar la clave de cifrado en función de una frase de contraseña proporcionada por el usuario que cifra los datos? Luego, esa frase de contraseña tendría que ser suministrada nuevamente para descifrar los datos cifrados. Por supuesto, esto requeriría que la frase de contraseña sea conocida e ingresada por un usuario para que nada ocurra mágicamente.

    
respondido por el inquam 22.06.2015 - 11:03
fuente

Lea otras preguntas en las etiquetas