Ya he leído Saving credit card information in MySQL database? y Storing Credit Card Information.Cómo cifrar de forma segura la información de la tarjeta de crédito en una base de datos
Soy consciente de que el almacenamiento de la información de la tarjeta de crédito requiere el cumplimiento de PCI, lo cual no es una tarea fácil.
De eso no se trata esta pregunta. Mi pregunta es la siguiente:
¿Qué es una forma segura de cifrar las tarjetas de crédito de los usuarios? Lo más simple y fácil que se me ocurre es usar una clave privada y cifrar los CC con eso. Esto no parece muy seguro porque la clave debe almacenarse en el servidor, y si un atacante puede obtener mi base de datos, probablemente también puedan obtener la clave.
Lo que me gustaría poder hacer es encriptar cada CC usando esa contraseña de usuarios como parte del proceso de encriptación. Si alguien obtiene la base de datos, no puede descifrar nada porque las contraseñas se almacenan como hashes salados. Esto funcionaría muy bien para compras transaccionales: el usuario hace clic en "Comprar", escribe su contraseña como confirmación, descifro su CC y realiza el cargo. Su contraseña solo está en la memoria durante la duración de la solicitud y nunca se escribe en el disco.
Lamentablemente, esto no funcionará para lo que estoy tratando de construir: un servicio que cobra una tarifa recurrente (por ejemplo, una vez al mes), independientemente de si el usuario está conectado o no cuando necesito cargar.
Dado este escenario, ¿existe una forma segura de almacenar CC de usuario?
¿El servidor que * almacena * la información CC también debe poder * leer * la información? P.ej. Si la carga mensual puede ser realizada por una máquina fuera de línea que lee una copia de los datos cifrados, es posible que desee considerar los métodos de clave pública ... –
Es de suponer que el sistema siempre está conectado y se pueden enviar datos cada vez que un usuario se registra . Sí, más fácil de asegurar con una interfaz especializada, pero implica una aplicación externa; y probablemente no sea un software web estándar, de lo contrario, probablemente muestre muchas de las mismas vulnerabilidades que el host original. Existen soluciones de terceros externas especializadas para hacer exactamente esto ya existente. – shannon