Tengo un caso de uso en el que necesito cifrar una parte de la información de PII en una base de datos, que luego puede ser descifrada y accedida por múltiples roles de usuario en una aplicación (por ejemplo, el usuario al que pertenece, servicio al cliente, ingeniería, etc.) ..).
¿Qué es una estrategia estándar de la industria para este tipo de cosas?
ACTUALIZACIÓN: POR FAVOR LEA ANTES DE PUBLICAR : Además de publicar los comentarios de mi idea a continuación (que realmente aprecio), también proponga una estrategia. Creo que sería muy útil para cualquiera que intente cifrar cualquier recurso compartido en la actualidad.
Esto es lo que tengo en mente en este momento y espero que describa a qué me refiero mejor:
Divulgación completa : la información a continuación también está destinada a obtener una opinión o una revisión por pares sobre mi estrategia actual que encontré
Como parte de una estrategia de defensa en capas, mi criterio es tener al menos 3 factores para la estrategia de cifrado / descifrado de esa manera, si se comprometen 2 piezas, los datos aún no se pueden descifrar.
Los 3 factores: el software que accede a la información, una base de datos con datos cifrados (DB1), una base de datos con las claves de cifrado (DB2).
La estrategia de cifrado:
- Los datos se ingresan en el software
- A, digamos, se genera una clave de 128 bits
- Los datos se cifran con esa clave
- Los datos cifrados se almacenan en la base de datos (que se presenta como DB1 en los 3 factores anteriores)
- La clave 128b se encripta con una clave maestra codificada en el software
- La clave 128b cifrada se almacena en la otra base de datos (presentada como DB2 en los 3 factores anteriores)
La estrategia de descifrado es la inversa ...
El punto es que el software contiene la clave maestra (Factor 1), DB1 tiene los datos cifrados (Factor 2) y DB2 tiene las claves de cifrado cifradas (yay para la repetición de palabras ... también Factor 3) que solo se pueden descifrar con la llave maestra.
En mi cabeza, si alguno de estos se expone, es información inútil que no revela la PII cifrada.
Por cierto, esto supone algoritmos de cifrado sólidos como AES (... lo más probable es que AES solo se deba a que DES, 3DES y Blowfish están en desuso).
Actualizar me doy cuenta de que no me aclaré en qué punto se verán estos 3 factores. Los 3 estarán en diferentes entornos de alojamiento en 3 servidores diferentes Estamos hablando de una estrategia a gran escala (que también podría funcionar a pequeña escala) donde los DB son entidades de hardware inherentemente separadas. En mi opinión, ese era el supuesto para empezar.
Actualización 2 Gran parte de los comentarios aquí con razón sugiere que el software es el talón del ágil aquí. Este también es mi gran cananda. No puedo pensar en ninguna estrategia de software en la que, si el software está comprometido, los datos no estén en riesgo, dado que el software siempre tiene una abra la conexión en la base de datos y contiene toda la lógica empresarial para ver / manejar esos datos. Incluso si implementa mydiamo en el software, eso significa que los datos se verán comprometidos si alguien toma el control del software.