2009-01-22 10 views
9

Tengo una base de datos que contiene información confidencial. Puedo cifrar/descifrar los datos en las operaciones de escritura de lectura. El problema es que necesito guardar la clave en la aplicación. Si alguien ha pirateado su camino en los que tienen acceso a la base de datos, entonces también pueden agarrar la aplicación (java) descomponerla y sacar la clave.Ok, he cifrado mis datos ahora, ¿dónde escondo la clave?

Esto parece un golpe de velocidad en el mejor de los casos. ¿Qué otras soluciones hay disponibles?

Respuesta

2

Exige que el usuario ingrese una frase de contraseña para acceder a sus datos. Enterrar la clave en el código es seguridad por oscuridad.

-1

cifrar la clave (utilizando DPAPI), lo puso en un archivo, poner una ACL en ese archivo, etc ...

+0

DPAPI es relevante sólo en Windows, pero es una sugerencia razonable ... –

+0

También es específico de la máquina, por lo que si migra su base de datos a un nuevo servidor, su clave no se podrá descifrar. – Russ

3

estoy asumiendo que usted tiene alguna forma de verificar las credenciales del usuario antes de permitir que acceder a la base de datos?

Por lo general, la arquitectura de este tipo de cosas, es el siguiente:

  • base de datos
  • servidor
  • cliente

el cliente se conecta al servidor, que a su vez se conecta a la base de datos . El servidor se asegura de que el cliente se autentique correctamente antes de permitirles el acceso a información confidencial. La clave de descifrado se almacena solo en el servidor. Nadie debería tener acceso al servidor, y especialmente al archivo que contiene la clave. De esta forma, los clientes no tienen ningún cifrado/descifrado que tengan que hacer, y no tienen que almacenar ninguna clave.

+1

Sí, pero la pregunta original de OP era "si el servidor está en peligro, ¿cómo puedo evitar que encuentren la clave?", Que es una pregunta totalmente diferente. Me gusta la idea de Kent de utilizar la administración de claves integrada del sistema operativo – Coderer

3

Lea en las tiendas de claves.

+0

¿Funcionan con Java? Todas las tiendas de llaves que conozco son específicas del sistema operativo – TToni

+0

Consulte la herramienta de claves de Java. http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/keytool.html –

+1

¿Cómo ayudarían las cajas de seguridad? –

5

Lo único que puede hacer es dificultar la extracción de la clave de su aplicación. No puedes hacerlo imposible. Si le da a alguien una caja con los contenidos que está tratando de proteger, debe darles la clave si desea que puedan acceder a los contenidos. Una vez que les das la llave, pueden hacer lo que quieran ... si se toman la molestia de encontrar la llave.

Este es un caso en el que Bob y Eve son la misma persona, quieres dar acceso a Bob pero evitar que Eve lo vea.

Esto es DRM, no funciona.

2

Almacene las llaves en un contenedor CSP. Considere el Java CSP here.

Esta es la OMI de la manera más segura posible. Pero también puede considerar almacenar la clave en un archivo que está protegido por el sistema operativo utilizando algún tipo de ACL.

+0

¿Qué pasa si el usuario reinstaló el sistema operativo, se perderán las claves? –

1

requieren que el usuario inicie sesión con una contraseña segura; utilizar la contraseña como la clave para un algoritmo de encriptación simétrica para descifrar la base de datos de clave asimétrica

mantener la tecla db en la memoria segura mientras se ejecuta la aplicación (si eso es una opción)

Cuestiones relacionadas