¿PCI prohíbe el uso de MD5 para almacenar datos confidenciales?

4

Un proveedor me dijo que debido a que sus auditores de PCI no recomendaron prohibir el uso de MD5 sin sal para almacenar datos confidenciales en este momento con su nivel actual de cumplimiento de PCI, no van a prohibir el uso de MD5 para almacenar datos sensibles.

NOTA: El proveedor se negó a decir si los auditores: (1) descubrieron que el proveedor estaba usando MD5 para almacenar datos confidenciales, pero dijo que no era un problema; (2) no descubrió que lo estaban haciendo, pero dijo que usar MD5 para almacenar datos confidenciales estaba bien; (3) no descubrió que lo estaban haciendo y no dijo que el uso de MD5 para almacenar datos confidenciales estaba bien; (4) si su nivel de cumplimiento de PCI no requiere que los hash MD5 no se utilicen para almacenar datos confidenciales de acuerdo con el PCI Security Standards Council. (5) etc.

Una vez más, todo lo que dirían es que sus auditores de PCI no recomendaron prohibir el uso de MD5 sin sal para almacenar datos confidenciales.

Dejando de lado si es correcto o no prohibir el uso de MD5 para almacenar datos confidenciales, ¿qué niveles de cumplimiento de PCI si alguno prohíbe el uso de MD5 sin sal y / o MD5 para almacenar datos confidenciales?

    
pregunta blunders 05.09.2013 - 23:00
fuente

3 respuestas

2

PCI-DSS no menciona ningún algoritmo. Solo dice que cuando se usan hashes, deben ser hashes de una sola vía basados en criptografía fuerte. Dependiendo de con quién hables, eso podría incluir MD5 (ah bueno).

PCI-DSS es realmente un contrato entre el proveedor y la compañía de tarjetas de crédito. Probablemente desee que le proporcionen un informe SOC 2 con la estipulación de que los algoritmos de hash están cubiertos.

    
respondido por el Jeff Ferland 05.09.2013 - 23:14
fuente
4

El uso de cualquier algoritmo de hash para "difuminar" la tarjeta a menudo es reversible.

Como solo hay una cantidad finita de números de tarjeta, recuerde que el último dígito puede ser un dígito de control. No es necesario verificar todo el espacio de la tarjeta. Es bien sabido cuáles son los prefijos del emisor de la tarjeta, por lo que realiza las búsquedas allí. Así que ahora su PAN de 16 dígitos, perdió el último dígito para el dígito de control y los primeros 4 a 6 para el emisor de la tarjeta. Eso no es una gran cantidad de combinaciones para la fuerza bruta, quizás una sola PC con una GPU pueda hacerlo en unas pocas horas.

Por lo tanto, incluso los datos salados son inútiles cuando puede buscar de forma exhaustiva todo el espacio de teclas con unos pocos clics y un clúster de botnet de AWS o malvado y obtener los resultados en una hora. Las computadoras son lo suficientemente rápidas para recorrer todas las combinaciones para encontrar el hash que coincida. La sal es generalmente conocida y diseñada para proteger contra el cálculo previo, pero eso no importa si puede volver a calcular un conjunto de datos completamente nuevo basado en sal conocida rápidamente.

Entonces, lo que es importante es el algoritmo exacto utilizado junto con un hash como MD5.

¿Cuál es el punto de usar MD5 de todos modos? Si necesita un token, represente un número de tarjeta emítalo desde un espacio de teclas independiente. Un contador secuencial que comienza en 000000001 y encriptado con una clave completamente secreta siempre le otorgará un valor de salida único para el tamaño de bloque que no tiene ninguna relación con los datos de la tarjeta (y por lo tanto no es reversible) sin que la base de datos de mapeo se vea comprometida.

Si realmente necesita borrar el número de tarjeta, busque PBKDF2 para todos los usos en los que haya considerado un hash. Ya que puede recuperar la intención de la sal haciendo que la fuerza bruta sea demasiado costosa (incluso en GPU incluso en el grupo AWS).

Pregunte a su personal de cumplimiento de PCI si sustituyó el número 0 por A, 1 por B, ... 9 por J, etc ... y lo almacenó en la base de datos si esto es lo suficientemente "fuerte".

El uso directo de MD5 para difuminar el número de tarjeta (incluso con sal conocida) se puede interrumpir a una velocidad de 450 millones / seg en una GPU (de mi rápido google). Recuerde que perdimos algunos dígitos de PAN a Brute, por lo que podemos hacer 10 dígitos en 2 segundos.

Lo siento, si no es 100% sobre el tema, pero el uso de MD5 para asegurar "fuertemente" la tarjeta de crédito es una broma en 2013.

    
respondido por el Darryl Miles 06.09.2013 - 00:22
fuente
0

El glosario de PCI DSS define el mínimo de 112 bits de intensidad de clave efectiva (consulte Criptografía fuerte) y se hace referencia en la norma principal (por ejemplo, req 2.2.3).

Wikipedia muestra la fuerza efectiva de los diversos algoritmos de hash en la entrada SHA-1. Esto muestra que MD5 tiene < 64 bits, y SHA-1 < 80 bits. Las series SHA-2 y -3 se ven mucho mejor en la actualidad y se admiten de forma inmediata para las herramientas principales / entornos de desarrollo.

PCI DSS también hace referencia a OWASP, y sus estados de "Hoja de referencia de almacenamiento criptográfico" indican "No utilice algoritmos débiles, como MD5 o SHA1".

Sería fantástico si pudiéramos obtener una lista de todos estos distintos cifrados y algoritmos y obtener una declaración definitiva de su fortaleza relativa para evitar discusiones con auditores / bancos / abogados.

    
respondido por el J Sec 13.09.2016 - 17:55
fuente

Lea otras preguntas en las etiquetas