¿Cómo protejo los datos de usuario en reposo?

5

Quiero cifrar los campos de nombre de usuario, correo electrónico y contraseña en la base de datos Y cifrar los archivos de usuario en reposo. ¿Cómo puedo hacer esto? Soy consciente de software como Gazzang y como no se publica el costo, solo puedo calcular que costará miles de dólares cada año.

¿Existe alguna solución alternativa que pueda construir yo mismo O usar un software que se ejecute en el servidor y que pueda cifrar los campos y los archivos del usuario?

No estoy seguro de si hace una diferencia, pero estoy usando PHP / MYSQL y tengo servidores en la nube.

    
pregunta AAA 25.06.2012 - 19:28
fuente

2 respuestas

5

El método más simple de cifrado en un servidor mysql es aes_encrypt () utilizando una frase de contraseña generada aleatoriamente.

No debe cifrar las contraseñas de los usuarios, las contraseñas siempre deben estar ocultas. Las contraseñas deben almacenarse utilizando bcrypt o sha256.

    
respondido por el Mikey 25.06.2012 - 20:20
fuente
3

Cifrado para los datos que debes descifrar: usa variables para establecer la clave.

  • No registre las consultas que contienen la entrada del usuario, contendrán los datos que está cifrando. Si tiene que iniciar sesión, no le dé al usuario de la base de datos los privilegios de lectura en el registro
  • No ejecute su base de datos como usuario privilegiado (por ejemplo, sistema local / raíz)
  • Almacene la clave por separado de la aplicación PHP y cree una instancia de la variable cuando se inicie la base de datos
  • Cifre la clave con otra clave a la que solo la raíz pueda acceder, openssl en bash es candidato para hacer esto. El usuario de la base de datos no debe tener acceso directo tanto a la clave como a la clave de cifrado de la clave.

Hashes salados para datos que solo necesita verificar (Contraseñas).

Salting es increíblemente importante. No puedo subrayar esto lo suficiente. Utilizando un dispositivo relativamente económico (aproximadamente 2k), puedo ejecutar 100 hash por segundo en la mayoría de los algos, un dispositivo de extremo superior (~ 6k - usado principalmente para fines industriales). Puedo alcanzar más de 1,2 billones de hashes por segundo (sha, md5, md4, etc.) Si su atacante tiene una granja de FPGA, los trillones de conjeturas por segundo no son descabellados. Puede ver las estadísticas aquí

Usando el código de John y el código no optimizado, la lista de Linkedin (hashes without salt) se calculó en un ~ 70% usando las reglas de gestión predeterminadas en menos de 24 horas ... Sal de sus Hashes. Cuando su base de datos esté expuesta, esto le dará tiempo para informar a sus usuarios para cambiar sus contraseñas sin comprometer (necesariamente) inmediatamente su acceso.

No lo guarde si no lo necesita.

Sé que esta no es directamente la pregunta, pero en serio, es igual de importante. Suponiendo que su base de datos esté comprometida en algún momento, si no tiene datos, no podrá ser expuesta.

Último: use las mejores prácticas de seguridad para las bases de datos: valide sus datos, utilice procedimientos almacenados para procesar las entradas y supervise + audite sus registros de acceso a la base de datos.

    
respondido por el Ori 25.06.2012 - 20:46
fuente

Lea otras preguntas en las etiquetas