Tengo un caso de uso en el que necesito cifrar un fragmento de información PII en una base de datos, que luego pueden descifrar y acceder a múltiples roles de usuario en una aplicación (por ejemplo, el usuario al que pertenece, servicio al cliente, ingeniería, etc. ..).
¿Cuál es una estrategia estándar de la industria para este tipo de cosas?
ACTUALIZACIÓN: LEA ANTES DE PUBLICAR : además de publicando comentarios sobre mi idea a continuación (que realmente aprecio), por favor también proponga una estrategia. Creo que sería muy útil para cualquiera que intente cifrar cualquier recurso compartido hoy en día.
Esto es lo que tengo en mente en este momento y que, con suerte, describirá mejor a lo que me refiero:
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 se me ocurrió
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 2 piezas están comprometidas, 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
- Una, 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 (presentados como DB1 en los 3 factores anteriores)
- La clave 128b g ets cifrados 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 tiene la clave maestra (factor 1), DB1 tiene los datos cifrados (factor 2) y DB2 tiene las claves cifradas (yay para la repetición de palabras ... también Factor 3) que solo se puede descifrar con la clave maestra.
En mi cabeza, si alguno de estos se expone, es información inútil que no revela la PII cifrada.
Por cierto, esto asume algoritmos de cifrado sólidos como AES (... lo más probable es que AES solo dado que DES, 3DES y Blowfish están en desuso).
Actualización me doy cuenta de que no me expuse claramente en el punto en el que estos 3 factores cambiarán. 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 las bases de datos son entidades de hardware inherentemente separadas. En mi mente, esa era la suposición para empezar.
Actualización 2 Muchos de los comentarios aquí con razón sugieren que el software es el talón de aquile aquí . Este también es mi gran canandrum. No puedo pensar en ninguna estrategia de software en la que, si el software está comprometido, los datos no corren riesgo, dado que el software siempre tiene una conexión abierta a la base de datos y contiene toda la lógica empresarial para ver / manejar esos datos. Incluso al implementar mydiamo en el software, eso significa que los datos se verán comprometidos si alguien toma el control del software.