En primer lugar, esto depende del país en el que se encuentre y de sus leyes. La mejor práctica es cifrar todos sus datos de usuario ya que está manejando datos financieros.
Solo para evitar confusiones sobre el cifrado de datos, generalmente hay dos cosas que tratar, como se describe a continuación. La razón por la que menciono esto es que, según mi experiencia, la gente me dice, como consultor de seguridad, que "la base de datos está cifrada".
Sin embargo, al hacer algunas preguntas más, resulta que los datos de la base de datos en sí no están cifrados, pero los discos en los que se ejecuta la base de datos.
1. Cifrado de disco
Este tipo de cifrado protege sus datos contra el robo si una o más máquinas físicas están en reposo (tal vez apagadas y robadas)
2. Cifrado de base de datos
Este tipo de cifrado protege sus datos en la propia base de datos. Por ejemplo, si un atacante puede volcar (parcialmente) su base de datos, los registros están cifrados y son básicamente inútiles para el atacante.
El único desafío aquí es dónde almacena la clave de cifrado. Esta clave nunca debe estar en el mismo disco (por ejemplo, en un archivo de configuración) del servidor de aplicaciones y del servidor de bases de datos.
Para leer la clave de cifrado, se recomienda un mecanismo de 'bóveda'. La "bóveda de clave de cifrado" de Google debería llevar a varias soluciones que podría implementar.
¿Cuánto debo cifrar?
En mi opinión, los datos financieros en sí deberían estar definitivamente encriptados, pero esto también depende de las regulaciones y la política de la compañía. He estado en compañías que usan la siguiente política:
"Todos los registros que se pueden usar para identificar a una persona se consideran datos confidenciales"
Los ejemplos son: números de seguridad social, números de cuentas bancarias, etc.
¿Cuál es la mejor manera de cifrarlo?
En mi experiencia, la mayoría de las veces, se utiliza el cifrado de clave simétrica.
¿Cuál es el mejor medio de almacenamiento?
La mayoría de las bases de datos de código abierto son compatibles con el cifrado de columnas, al igual que Postgres.