Para proteger los datos confidenciales del usuario, estoy considerando los siguientes 2 enfoques:
- Cree 1 clave de cifrado de datos (DEK) para cada usuario, utilícela para cifrar (utilizando el modo AES CBC con un IV aleatorio para cada operación de cifrado) Todos los datos del mismo usuario. DEK está protegido y almacenado por separado a partir de datos.
- Utilice múltiples DEK, 1 cada vez que se deba cifrar una nueva parte de los datos del usuario (utilizando AES / CBC con IV como la anterior). El DEK es entonces ecrypted usando una KEK correspondiente a ese usuario, y almacenada por lado (por ejemplo, la misma fila en la base de datos) con los datos que se ecriptan con eso. La KEK se almacena de forma segura, separada de los datos y DEK.
¿Se conocen vulnerabilidades en AES / CBC con buenos IV aleatorios? ¿Cuál es el beneficio del segundo enfoque, aparte de minimizar la cantidad de datos encriptados con la misma clave, y así reducir el riesgo de ser analizado criptográficamente?