Tengo una columna en mi base de datos que necesito cifrar. La columna puede contener cualquier dato arbitrario.
Lo que estoy pensando es generar primero un par de claves pública y privada. Almacene la clave pública en un archivo de configuración y almacene la clave privada de forma segura.
Después de eso, para cada fila de datos que necesito cifrar,
- Genere una clave criptográfica segura y IV
- Cifre los datos utilizando la clave simétrica generada
- Encripta la clave simétrica con la clave pública
- Almacene datos cifrados, IV, clave simétrica cifrada en la base de datos
Cuando quiera descifrarlo,
- Descifrar clave simétrica usando clave privada
- Descifre los datos utilizando una clave simétrica descifrada y IV
Preguntas
- ¿Es innecesaria esta gestión de clave asimétrica + simétrica?
- ¿Es lo suficientemente bueno si solo cifro y descifro utilizando criptografía asimétrica? Si la longitud de los datos es pequeña, ¿está bien?
- ¿Es un riesgo almacenar la clave cifrada en la base de datos?