¿Por qué esta no es una buena manera de almacenar datos de tarjetas de crédito? [cerrado]

-4

¿Por qué la siguiente tabla de base de datos no es segura? ¿Qué método de encriptación es mejor para las tarjetas de crédito?

+--------------+-------------------------------+-----------+--------------+
| customer_id  | card_number                   | card_cvv  | card_expiry  |
+--------------+-------------------------------+-----------+--------------+
| 2315         | ODU2OS0xMjU0LTc4NTQtMzI2NQ==  | MjU4OQ==  | May 2018     |
+--------------+-------------------------------+-----------+--------------+
    
pregunta anonymous 11.08.2017 - 15:11
fuente

6 respuestas

55

Está obviamente codificado en base64. Si alguien roba su base de datos, puede descodificar los datos y obtener todas las tarjetas de crédito de cada cliente. Puede simplemente almacenar como cadena y tener básicamente la misma seguridad, ya que solo está utilizando más bytes para lograr lo mismo.

Para almacenar los datos de la tarjeta de crédito, debe cumplir con las reglas de PCI. Y PCI prohíbe explícitamente el almacenamiento de la CVV. Si su tabla tiene un campo para CVV, falló. Si lo codificas y almacenas, fallaste. Incluso si lo cifras, fallaste. CVV nunca debe almacenarse de ninguna manera.

En cuanto al método de cifrado, lea primero documentación de PCI . Crear una tarjeta de crédito segura es una tarea muy difícil y muy seria, así que no intente hacerlo sin entender los métodos, riesgos y mitigaciones correctos, o expondrá a sus clientes a pérdidas financieras y a usted mismo a un litigio.

    
respondido por el ThoriumBR 11.08.2017 - 15:30
fuente
6

Almacenar números de tarjetas de crédito es más que simplemente cifrar los datos. Como lo señaló ThoriumBR, los requisitos de PCI determinan no solo qué información se puede almacenar, sino también cómo debe protegerse, sino que también configuran las condiciones ambientales para los controles que deben existir en torno a la configuración de los servidores que manejan los datos y las cosas. Me gustan los controles físicos de acceder a ellos.

El cumplimiento para almacenar números de tarjetas de crédito es extremadamente complicado y costoso. A menos que esté procesando un número muy alto de transacciones, es mucho más rentable utilizar un proveedor de manejo de tarjetas de crédito existente que manejará el manejo de la información de la tarjeta de crédito y entregará una identificación de transacción segura (básicamente un recibo) después de manejar la transacción para ti. Estos servicios cuestan más por transacción, pero son mucho más baratos que los costos asociados con la creación de una solución compatible y un entorno de alojamiento para tratar con los números CC y otra información de la tarjeta de pago.

    
respondido por el AJ Henderson 11.08.2017 - 16:48
fuente
2

El número está oculto con base64.

No estoy seguro de cuál es la intención, pero esto no es mejor que solo mostrar el número.

    
respondido por el domen 11.08.2017 - 15:23
fuente
2

8569-1254-7854-3265

¿Cómo supe eso? Acabo de buscar un decodificador Base64.

Según Wikipedia.

  

Base64 es un grupo de esquemas de codificación binarios a texto similares que representan datos binarios en un formato de cadena ASCII al traducirlos a una representación de raíz 64. El término Base64 se origina a partir de una codificación de transferencia de contenido MIME específica.

Base64 es una codificación utilizada para imágenes. Debe utilizar el cifrado (AES-256 o RSA-4096, por ejemplo). De todos modos, esta es información de la tarjeta de crédito.

Estos son datos personales muy serios.

Las funciones de hash de una vía, la criptografía fuerte y truncada son directrices. No debe almacenar datos del titular de la tarjeta a menos que sea absolutamente necesario. Debe cumplir con las leyes de protección de datos y los estándares de tarjetas de crédito.

    
respondido por el Steve Woods 11.08.2017 - 19:20
fuente
1

Además de otras respuestas excelentes, me gustaría mencionar principio de Kerckhoffs . El principio de Kerckhoffs se resume en esta cita:

  

Un sistema criptográfico debe ser seguro incluso si todo lo relacionado con el sistema, excepto la clave, es de conocimiento público.

En este caso, asumió que los atacantes no podrían determinar que utilizó base64 (que es no un algoritmo de cifrado) para codificar los datos. Las respuestas anteriores demuestran que fue trivial descubrir esa información, y los atacantes son mucho, mucho más inteligentes que esto en la práctica. Siempre debe asumir que su atacante puede averiguar fácilmente qué algoritmos utilizó para ofuscar los datos. Si lo hubieras hecho, te habrías dado cuenta rápidamente de que cualquiera puede simplemente descodificar los datos, ya que ni siquiera hay una clave secreta involucrada.

Tenga en cuenta que cambiar a un algoritmo de cifrado real está lejos de ser suficiente para almacenar información de la tarjeta de crédito. Vea otras respuestas que detallan los estándares muy exigentes para proteger dichos datos (que van mucho más allá de los algoritmos y en las políticas internas de la empresa y los comportamientos de los empleados y más).

    
respondido por el jpmc26 11.08.2017 - 22:38
fuente
0

Como ya se señaló, el 8569-1254-7854-3265 no parece ser un número válido (no se puede pasar Luhn alg y los primeros dígitos no son como el código bancario (BIN) conocido; consulte enlace ), por lo que podría estar realmente encriptado.

Almacenar el código CVV en forma simple o encriptada junto a cardnumber definitivamente no tiene sentido.

    
respondido por el i555i666wHeretic 12.08.2017 - 03:35
fuente

Lea otras preguntas en las etiquetas