example algorithms security encryption encryption-asymmetric

security - algorithms - Ok, he cifrado mis datos ahora, ¿dónde escondo la clave?



public key cryptography (7)

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.

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


¿Asumo que tiene alguna forma de verificar las credenciales del usuario antes de permitirles acceder a la base de datos?

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

  • Base de datos
  • Servidor
  • Cliente

El cliente se conecta al servidor, que luego 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.


Almacene las llaves en un contenedor CSP. Considere el CSP de Java aquí .

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.


Encripte la clave (usando DPAPI), póngala en un archivo, ponga una ACL en ese archivo, etc.


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, quieren darle acceso a Bob pero evitan que Eve lo vea.

Esto es DRM, no funciona.


Requiere 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.


requiere que el usuario inicie sesión usando una contraseña segura; utilice la contraseña como la clave para un algoritmo de cifrado simétrico para descifrar la clave de base de datos asimétrica

mantenga la clave db en la memoria segura mientras la aplicación se está ejecutando (si esa es una opción)


Lea sobre tiendas de llaves.