¿Las búsquedas de números de tarjetas de crédito son más seguras con una función hash que con un algoritmo de cifrado determinista?

3

Entiendo que PCI DSS 3.0 permite que los hashes de los números de tarjeta se almacenen por separado de los valores cifrados, pero me sorprende la eficiencia de herramientas como el hashcat para descubrir números de tarjeta a partir de datos hash dada la entropía limitada.

Debido a que, para fines de búsqueda, una sal aleatoria no es una opción (ya que a menudo solo tienes el número de tarjeta para realizar la búsqueda), entonces cualquier sal debería ser estática para buscar el hash.

Leí una sugerencia que decía,

  

Una clave secreta se puede usar efectivamente como un valor de sal, aunque esto elimina algunas de las razones para el hashing en primer lugar y requiere la misma administración de claves que el cifrado.    enlace

Mi pregunta es, si estoy usando una "clave secreta" para una sal, que está sujeta a descubrimiento y fuerza bruta (aunque su longitud podría hacer que esto último sea poco práctico), ¿por qué no simplemente cifrar el valor con AES256? ¿Las búsquedas a través del valor cifrado?

¿Existe alguna ventaja de seguridad para el hashing con una "sal secreta pero uniforme", en comparación con el cifrado determinista?

    
pregunta Clayton Hall 08.01.2015 - 14:33
fuente

3 respuestas

3

Las búsquedas de tarjetas con un hash en lugar de contra un valor encriptado se realizan para la velocidad, por lo que son beneficios para el rendimiento, en lugar de la seguridad.

En términos de seguridad y funcionalidad de búsqueda, puede considerar una sal estática (pimienta) así como una sal adicional, algo dinámica (como la fecha de caducidad del número de tarjeta).

    
respondido por el AndyMac 09.02.2015 - 02:53
fuente
0

La diferencia entre una función hash y un cifrado es que se supone que un hash es una función de una sola vía, mientras que con el cifrado puede obtener fácilmente los datos originales.

Si le roban su clave de cifrado, puede leer todos los números de tarjeta directamente. Si te roban la sal, todavía tienes que forzarla. Dependiendo de su función hash, esto podría ser más difícil como podría pensar.

Con una función hash débil como md5 o sha1, el forzamiento bruto sería simple y el hash no es una gran mejora. Pero con un hash de memoria y CPU intensivo, puede obtener algo de seguridad aquí.

Echa un vistazo a bcrypt o tal vez incluso a scrypt. Con bcrypt puede aumentar el tiempo de CPU necesario con un parámetro para dificultar la fuerza bruta. Scrypt tiene mucha memoria, por lo que no se puede forzar con las GPU pero es algo nuevo (2009).

    
respondido por el PiTheNumber 09.01.2015 - 12:32
fuente
0

De hecho, aunque se podría decir que está realizando el hash para el rendimiento de búsqueda, se está haciendo para ser compatible con PCI. Hay dos maneras de ver esto.

  1. Haz x, es lo correcto.
  2. Haz x, o nos atraparemos si no lo hacemos.

Hacer x para prevenir el agrietamiento no entra realmente en él, ya que solo hay alrededor de 5 números para adivinar en algunos casos. 6 dígitos de BIN, 1 dígito de control, y tiene que pasar Luhn.

Solo debería ser útil junto con las fechas de caducidad, el cvv y los detalles de facturación.

La comprobación y el número de tarjeta de entrada contra un hash es impar. ¿Se está utilizando como contraseña de facto? ¿O se está verificando el valor descifrado contra el hash?

Es decir, si el usuario está autenticado, podemos usar la tarjeta "Almacén guardado" para una transacción, ¿por qué volvemos a verificar el número de la tarjeta?

La única otra razón para hacer hash es nivelar un índice, que de lo contrario tendría un punto de acceso fantástico en cada uno de los BIN, aparte de la cardinalidad de los siguientes dígitos.

    
respondido por el mckenzm 12.05.2015 - 00:17
fuente

Lea otras preguntas en las etiquetas