2011-02-07 29 views
6

Tenemos un sitio en el que un usuario guardará datos extremadamente personales y confidenciales en nuestra base de datos.Cifrado de datos para almacenamiento en la base de datos

Por supuesto, tendremos que encriptar estos datos antes de que se almacenen en la base de datos y utilizando SSL. Es una aplicación MVC que usará autenticación de formulario. ¿Cuál es la mejor manera de garantizar que estos datos estén encriptados desde el momento en que los guardamos hasta el momento en que se descifran para mostrarlos en su página personal?

También debemos asegurarnos de que sea seguro incluso con nuestros desarrolladores y dba trabajando en la aplicación.

¿Cuál es la mejor manera de manejar esta situación?

+0

¿De qué/quién estás tratando de proteger los datos? –

+0

Cualquiera que quiera obtenerlo. Básicamente, solo debemos asegurar a los usuarios que serán los únicos en ver los datos. (aunque sé que es imposible garantizarlo al 100%, tenemos que acercarnos lo más posible) – twal

+3

Luego, básicamente necesitas encriptar con una clave provista por el usuario en tiempo de ejecución. Por supuesto, si el usuario pierde esa clave (recuerde, son los usuarios de los que estamos hablando), diga adiós a los datos. –

Respuesta

1

No hay forma de mantener un DBA fuera de los datos a menos que haya utilizado una encriptación de clave pública y el usuario final tendría que controlar esto. Si el usuario final pierde su clave, perderá todos sus datos.

Puede tener una base de datos separada donde almacene las claves y su DBA no tendrá acceso a esta base de datos.

Debería tener dos DBA, uno para los datos y otro para las claves.

Esto es asumiendo que no confías en tus DBA, pero no deberías haberlos contratado.

Si confías en tus DBA, les permites tener acceso a ambos DB, pero requieren que tengan cuentas separadas, por lo que si una cuenta se ve comprometida, ellos (hackers) no tendrían acceso a todo.

Normalmente, en un sistema bien diseñado, los DBA/Admins tienen cuentas separadas para su trabajo personal y una cuenta elevada para hacer el trabajo.

Supongo que los programadores solo tienen acceso a un entorno de prueba. Si tienen acceso al entorno de producción, entonces tendrán acceso tanto a las claves como a los datos.

+0

Confiamos en ellos, como se ha mencionado que sólo estamos tratando garantizar la mayor privacidad posible para el cliente, entiendo que la situación que describí es idealista. Por supuesto que entendemos que al final algunas personas tendrán acceso a los datos si realmente quieren/necesitan obtenerlos. Estamos tratando de acercarnos lo más posible al escenario ideal. Estos comentarios están ayudando mucho. Gracias – twal

0

Cada cifrado tiene una llave y la clave es (para obtener/no conseguir) esa clave :) La mejor forma de hacerlo es establecer la clave de web.config que se puede hacer sin ningún tipo de conocimientos de programación


Y he visto una hermosa AES Encryption Algorithm implementation at StackOverflow. Sugeriría que uses eso.

+0

Configurar la clave en web.config permitiría a los desarrolladores acceder a los datos, a menos que me falta algo. – mxmissile

+0

@mxmissile: Production web.config ≠ Desarrollo web.config. Además, producción db ≠ desarrollo db. – rsenna

+0

@mxmissile: permita que el desarrollador se desarrolle con una clave que conozcan. podríamos cambiarlo después de la implementación. – naveen

Cuestiones relacionadas