Cuando uso la banca por Internet con mi banco, uso algo llamado PIN centinela , es decir:
(imagen de wikimedia commons)
Para usarlo, inserto mi tarjeta chip-an-pin (lado del chip) y presiono uno de los tres botones superiores: IDENTIFY, RESPOND o SIGN. El centinela me pide el PIN y produce un código de 8 dígitos que luego uso dentro de la banca por Internet.
El centinela en sí mismo no contiene ninguna clave que esté en mi cuenta (y EMV ya usa la criptografía de clave pública), ya que puedo usar el centinela de PIN de otra persona. Pero me pregunto qué hará realmente para generar esos dígitos.
Mi conjetura
Al principio, pensé que realizaba una autorización fuera de línea para 1 unidad de moneda, una autorización que simplemente nunca se borraría. Luego el centinela imprimirá los primeros dígitos del HMAC. Pero esta suposición tiene dos problemas:
-
En algún momento, la tarjeta querrá conectarse y negarse a realizar una autorización sin conexión. Probé esto (usando el centinela varias veces en secuencia y la tarjeta nunca lo rechazó).
-
EMV tiene UN (número impredecible, es decir, número aleatorio, en
9F37
) que genera la tarjeta y se envía como parte de una transacción. Por lo que sé, la ONU se utiliza en el cálculo de HMAC, por lo tanto, un emisor que verifique que HMAC necesita la ONU. Pero, si el emisor recibe solo los dígitos de HMAC, no puede verificarlo.
Así que sí, no tengo ideas de cómo puede funcionar esto. Pero tengo una pregunta más sobre este dispositivo y PCI-DSS. El resumen de la pregunta es por lo tanto:
Pregunta
-
El centinela de PIN genera un código numérico de 8 dígitos, que es relativamente fácil de aplicar a la fuerza bruta. ¿Cómo puede esto ser compatible con PCI?
-
Es poco probable que el centinela del PIN realice una transacción por una unidad de moneda. ¿Por lo tanto, cómo puede usar el chip para validar el PIN y producir una salida que pueda ser verificada por el emisor?