tokenización distribuida para números de tarjetas de crédito

5

Tengo dos ubicaciones dentro de la misma empresa que tienen números de tarjetas de crédito. Quiero poder "unirme" en el número de tarjeta de crédito para hacer análisis de negocios después de transmitir datos vinculados a números de tarjeta de una ubicación a otra.

El número de la tarjeta de crédito en sí no es realmente necesario para vincular los conjuntos de datos. Un token, con cero o colisiones muy raras, sería lo suficientemente bueno.

El problema se convierte entonces en cómo generar tokens en las dos ubicaciones, de modo que la misma tarjeta de crédito se asigne al mismo token, y hacerlo de forma segura.

De manera ingenua, uno podría usar un hash criptográfico, pero como el espacio que se está mapeando es muy pequeño (facialmente 10 ^ 16, pero en realidad es menos que eso), no es una buena solución, especialmente si los hashes no lo son. salado. (Y no está claro cómo funcionaría la salada y aún así permitir que los registros se vinculen de todos modos).

También se podría proponer el uso de un cifrado simétrico fuerte de los CCN, compartiendo la clave secreta con mucho cuidado, pero no estoy lo suficientemente versado en criptografía para saber si el hecho de que el conjunto de Plaintexts sea tan limitado abre el esquema para atacar.

(NB: Sé que uno no debería "rodar tu propio cripto". No estoy directamente en este proyecto, pero tengo curiosidad acerca de las soluciones que escucho que se están discutiendo.)

    
pregunta user1071847 06.07.2015 - 16:46
fuente

1 respuesta

1

Lo primero que haría sería ejecutar cualquier solución propuesta más allá de su auditor de PCI para garantizar que no vaya a implementar nada que cause problemas y ponga a la compañía fuera del cumplimiento de PCI.

Parece que todo lo que necesita es que los números de las tarjetas se tokenen de tal forma que siempre obtenga el mismo token si se les da el mismo número de tarjeta y no es necesario volver al otro lado. Esto indicaría que está buscando un hash en lugar de cifrado. Usted puede agregar una sal también.

Mucho dependerá de qué datos se asociarán con esta información. Si los únicos datos que ha vinculado a esos hash (fuera de su bóveda muy segura) es el hash del número de la tarjeta y ningún otro dato de identificación personal, como el nombre del titular de la tarjeta, etc. , probablemente será suficiente. Los números de tarjetas de crédito por sí mismos sin otra información no son tan útiles. Ya conocemos el algoritmo para verificar números de tarjetas de crédito válidos y, por lo tanto, podríamos generar grandes cantidades de números de tarjetas válidos. Solo cuando puede agregar la información adicional, como la fecha de caducidad, el nombre del titular de la tarjeta, etc., la información se vuelve realmente útil.

Por otra parte, si va a incluir datos confidenciales adicionales en su trabajo, entonces buscaría formas de generar un token único que no se base en el número de la tarjeta de crédito (identificación del cliente o posiblemente un hash) de múltiples campos: realmente depende de los detalles de lo que intenta hacer.

En general, piense en el peor de los casos: no asuma que su solución es segura. En su lugar, suponga que alguien podrá realizar ingeniería inversa en algún momento. luego haga una evaluación del riesgo de cuál será el impacto si son capaces de hacerlo. Luego, busque formas en que puede reducir ese impacto, así como formas de reducir la probabilidad. Por ejemplo, asegúrese de que todos los datos sean realmente necesarios; a veces, solo eliminar algunos bits de datos puede marcar la diferencia. También tenga en cuenta qué controles puede establecer para alertarlo sobre un problema, es decir, la detección de acceso no autorizado, la respuesta a un acceso no autorizado, etc.

    
respondido por el Tim X 10.07.2015 - 00:47
fuente

Lea otras preguntas en las etiquetas