¿Cómo puedo mejorar la seguridad en un entorno de producción?

4

Estoy configurando un sistema donde los dispositivos se probarán justo después de la producción. Cada dispositivo tiene una clave AES dada individualmente, que debe ser conocida para poder comunicarse. Esas claves individuales son entregadas por el fabricante del dispositivo en un archivo de envío (uno por cada 1000 dispositivos), que a su vez está encriptado por RSA. Solo la autoridad de prueba tiene la clave privada para descifrar dichos archivos de envío.

El plan actual fue el primero en exportar las claves del dispositivo desde los archivos de envío a una base de datos central. Esto se hará una vez para una entrega de ~ 1000 dispositivos. La aplicación de prueba accederá a esta base de datos para obtener las claves de los dispositivos individuales.

Poner todas las claves del dispositivo directamente en la base de datos funciona, pero no es una solución muy atractiva: todos los que acceden a la base de datos obtienen acceso automáticamente a las claves del dispositivo.

Teniendo en cuenta que esto es muy vulnerable, ¿cómo puedo mejorar la seguridad? Podría AES cifrar las claves del dispositivo antes de escribir en la base de datos, pero luego la aplicación de prueba debe conocer esta clave privada AES. El problema simplemente cambia a "cómo mantener en secreto esta clave interna". Así que es un poco mejor, pero aún insatisfactorio.

¿Qué otra cosa sería una solución aceptable? Tal vez usando una tarjeta inteligente?

    
pregunta michael 26.03.2018 - 18:33
fuente

2 respuestas

4

La mejor opción es usar un modelo de seguridad de hardware (HSM) para cifrar / descifrar datos en su base de datos. Pero los HSM son caros y pueden ser difíciles de usar.

Sin el soporte de hardware, tendrá el problema de la gallina y el huevo de dónde guarda la llave inicial. Dicho esto, agregar una capa más de cifrado, el cifrado antes de ser almacenado en la base de datos y almacenar la contraseña maestra de AES en un archivo de configuración para el cliente sí agrega seguridad. Un atacante que tenga acceso a su base de datos, por ejemplo, debido a una vulnerabilidad de inyección de SQL o una configuración incorrecta de la base de datos, todavía necesitará acceder al maestro del sistema AES. Por lo tanto, deberán comprometer su archivo de configuración u obtener acceso a la memoria de su cliente.

Asegúrese de rotar la contraseña maestra de AES con frecuencia (quizás para cada lote). Esto reducirá el daño causado por un compromiso de base de datos y el robo de claves. Tampoco almacenaría la contraseña maestra de AES en texto claro. Puede cifrarlo con una segunda contraseña estática AES que está incorporada en el código. Esto agrega seguridad mínima, pero evita que los empleados impriman accidentalmente el archivo de configuración y expongan la contraseña.

    
respondido por el Neil Smithline 26.03.2018 - 20:45
fuente
2

Tal como se diseñó, el sistema requiere claves AES "por todo el lugar". No dices qué son los dispositivos, pero lo primero que te viene a la mente es alejarte del uso de AES a un sistema de clave pública.

(Esto podría no funcionar si los dispositivos están muy limitados computacionalmente, como una tarjeta inteligente, pero la mayoría de los dispositivos ahora pueden manejar claves públicas).

    
respondido por el Adam Shostack 26.03.2018 - 19:47
fuente

Lea otras preguntas en las etiquetas