¿Qué es la función de derivación de claves DUKPT?

13

Tengo la tarea de descifrar el texto cifrado adquirido de un lector de tarjetas cifrado. El lector de tarjetas utiliza el esquema DUKPT (clave única derivada por transacción) y el cifrado 3DES. No tengo ningún problema con el cifrado 3DES, ya que es un algoritmo común implementado por bibliotecas conocidas como BouncyCastle y Java JCE.

Antes de esta tarea, no he tenido ningún encuentro con DUKPT en absoluto, por lo que soy un completo novato en esto.

Por lo que he leído hasta ahora, DUKPT utiliza un mecanismo de derivación de claves basado en una Clave de Derivación de Base (BDK) que es básicamente una clave secreta compartida y Números de Serie de la transacción en particular. En el caso del lector de tarjetas, cada vez que deslizo (incluso con la misma tarjeta), el texto cifrado sería diferente y el KSN sería diferente. Conociendo el BDK, el KSN, el algoritmo de cifrado (que en este caso es 3DES) y el texto cifrado, ¿cómo puedo obtener la Clave para la transacción basada en esta información? Me imagino que hay algún tipo de función de derivación de claves, ¿no?

    
pregunta Hyangelo 30.03.2012 - 21:47
fuente

3 respuestas

15

Básicamente funciona así: el servidor tiene una clave maestra (el BDK) y cada dispositivo cliente tiene un número de serie único y un contador (que cuando se combinan son el KSN).

Para configurar un nuevo dispositivo, debe cifrar el KSN utilizando la clave maestra (el BDK, el proceso descrito en el enlace de la respuesta de Yoav) y obtiene una nueva clave (la IPEK). Es como que necesitas dos personas (el servidor y el cliente) con dos claves (el BDK y el KSN) para abrir una bóveda que contiene otra clave. Esa otra clave es el IPEK y es lo que instala en el dispositivo.

El dispositivo cliente utiliza el IPEK para crear una tabla de claves futuras y luego descarta el IPEK. Por lo tanto, el dispositivo cliente ahora tiene su número de serie original, un contador (combinado con el KSN) y una lista de claves futuras.

Para cifrar los datos, el dispositivo cliente toma la primera clave futura de la lista y la utiliza como clave de cifrado. Luego envía los datos cifrados y es KSN (que contiene el contador) al servidor.

En el extremo del servidor, el servidor sabe que es su propio secreto (el BDK) y ahora tiene el KSN del dispositivo clent. El servidor usa esas dos claves para producir el IPEK (abra esa bóveda de nuevo). Con el IPEK, el servidor puede recrear la tabla de claves futuras y, sabiendo el contador proporcionado por el cliente (los últimos 5 caracteres del KSN), sabe qué clave de la tabla debe usar.

En cuanto a todos los detalles técnicos, sugeriría buscar en el blog de Andy Orrock (vinculado a la respuesta de Yoav) y tal vez obtener una copia de ANSI X9.24 que tenga la especificación completa.

    
respondido por el Mark Burnett 31.03.2012 - 05:54
fuente
10

No se pudieron encontrar muchos recursos en línea, pero me imagino que esto debería especificarse bastante bien en algún lugar. Lo que sí descubrí, sin embargo, es esta descripción del proceso de derivación .

Si entiendo esto correctamente, la función de derivación funciona aproximadamente como sigue:

  1. El KSN está normalizado usando alguna forma de relleno
  2. El KSN normalizado se encripta con el BDK
  3. El resultado de este proceso es la clave derivada para la transacción

Espero que no te engañe. Probablemente esto merezca una respuesta de alguien más familiarizado con las especificaciones reales.

    
respondido por el Yoav Aner 30.03.2012 - 23:01
fuente
5

Los detalles de cómo crear las claves futuras son bastante horribles, pero están contenidas en la especificación ANSI. La especificación no está oficialmente disponible en línea, pero si busca en Google "Baidu ansi x9.24" obtendrá un enlace a la versión de 2004 (la actual es 2009). Leerlo en el sitio web de Baidu (la respuesta china a Google) es desagradable, pero los $ 140 que ANSI quiere cobrar son aún más desagradables. Habiendo invertido el dinero en la versión actual de la especificación (después de jugar con Baidu durante unos días), puedo dar fe de que el proceso no es tan obvio.

    
respondido por el RC Bryan 19.04.2012 - 07:30
fuente

Lea otras preguntas en las etiquetas