En criptografía , el esquema de gestión de claves DUKPT ( clave única derivada por transacción ) utiliza una clave única para cada transacción, la cual se deriva de una clave fija. Por lo tanto, si una clave derivada se ve comprometida, los datos de las transacciones pasadas y futuras permanecen protegidos, ya que las claves siguientes o anteriores no se pueden determinar fácilmente.
La versión actual (a mayo de 2024) del estándar (ANSI X9.24-3-2017 [ 1 ] ) se publicó en 2017. [ 2 ] Se basa en el algoritmo de cifrado AES y se recomienda para nuevas implementaciones.
Este artículo trata sobre la variante original de DUKPT, que se basa en el algoritmo de cifrado TDEA y se describe en el Apéndice C de la norma ANSI X9.24-3-2017.
Descripción general
DUKPT permite trasladar el procesamiento del cifrado fuera de los dispositivos que almacenan la clave secreta compartida. El cifrado se realiza con una clave derivada , que no se reutiliza después de la transacción. DUKPT se utiliza para cifrar transacciones de comercio electrónico. Si bien puede utilizarse para proteger información entre dos empresas o bancos, se emplea habitualmente para cifrar la información PIN obtenida mediante terminales de punto de venta (TPV).
DUKPT no es en sí mismo un estándar de cifrado; más bien, es una técnica de gestión de claves. Las características del esquema DUKPT son:
- permitir que tanto la parte originadora como la receptora estén de acuerdo en cuanto a la clave que se utilizará para una transacción determinada,
- Cada transacción tendrá una clave distinta a la de todas las demás transacciones, excepto por coincidencia.
- Si una clave derivada actual se ve comprometida, las claves pasadas y futuras (y, por lo tanto, los datos transaccionales cifrados con ellas) permanecen intactas.
- cada dispositivo genera una secuencia de teclas diferente,
- Ni los remitentes ni los receptores de mensajes cifrados tienen que realizar previamente un protocolo interactivo de intercambio de claves .
Historia
DUKPT se inventó a finales de la década de 1980 en Visa, pero no tuvo mucha aceptación hasta la década de 1990, cuando las prácticas de la industria cambiaron hacia la recomendación, y posteriormente la exigencia, de que cada dispositivo tuviera una clave de cifrado distinta.
Antes de DUKPT, la tecnología de vanguardia se conocía como Maestro/Sesión , que requería que cada dispositivo de cifrado de PIN se inicializara con una clave maestra única. Al gestionar transacciones originadas por dispositivos que utilizaban la gestión de claves Maestro/Sesión, un efecto secundario no deseado era la necesidad de una tabla de claves de cifrado tan numerosa como los dispositivos desplegados. En una importante entidad adquirente de comercios, la tabla podía llegar a ser bastante grande. DUKPT resolvió este problema. En DUKPT, cada dispositivo se sigue inicializando con una clave distinta, pero todas las claves de inicialización de una familia completa de dispositivos se derivan de una única clave, la clave de derivación base (BDK). Para descifrar mensajes cifrados de dispositivos en funcionamiento, el destinatario solo necesita almacenar la BDK.
Llaves
Como se mencionó anteriormente, el algoritmo requiere una clave inicial única que, en su descripción original, se denominaba clave supersecreta , pero que posteriormente se renombró —de una manera más formal— como Clave de Derivación Base (o BDK). El nombre original quizás refleja mejor la verdadera naturaleza de esta clave, ya que si se ve comprometida, todos los dispositivos y todas las transacciones también se verán comprometidos.
Esto se ve atenuado por el hecho de que solo hay dos partes que conocen el BDK:
- el destinatario de los mensajes cifrados (normalmente un adquirente comercial)
- la parte que inicializa los dispositivos de cifrado (normalmente el fabricante del dispositivo).
La clave BDK suele almacenarse en un módulo de seguridad a prueba de manipulaciones (TRSM) o en un módulo de seguridad de hardware (HSM). Es importante aclarar que esta clave no es la que se utiliza para inicializar el dispositivo de cifrado que participará en las operaciones DUKPT. A continuación, se describe el proceso de generación de la clave de cifrado.
- Una clave derivada del BDK, conocida como Clave de cifrado PIN inicial (IPEK) [ Nota 1 ]
- El IPEK se inyecta en el dispositivo.
- Un conjunto de claves futuras se derivan del IPEK y se almacenan (dentro del dispositivo).
- Posteriormente, el IPEK se desecha inmediatamente.
- Para cada transacción, una de las claves futuras se utiliza para derivar una clave de cifrado PIN (PEK) y, opcionalmente, una clave de código de autenticación de mensajes (MAC) y una clave de cifrado de datos. Las dos últimas claves solo son necesarias cuando el dispositivo admite la autenticación de mensajes y el cifrado de datos.
Comunicación
Origen
En el extremo de origen (cifrado), el sistema funciona de la siguiente manera:
- Se inicia una transacción que implica el cifrado de datos. El caso típico es el PIN de un cliente.
- Se recupera una clave del conjunto de “Claves Futuras”.
- Esto se utiliza para cifrar el mensaje, creando un criptograma .
- El dispositivo de cifrado devuelve un identificador conocido como "Número de Serie de Clave" (KSN, por sus siglas en inglés) junto con el criptograma. El KSN se forma a partir del identificador único del dispositivo y un contador de transacciones interno.
- El par (criptograma, KSN) se reenvía al destinatario previsto, normalmente el adquirente comercial, donde se descifra y se procesa posteriormente.
- Internamente, el dispositivo realiza lo siguiente:
- Incrementa el contador de transacciones (utilizando un contador interno).
- Invalida la clave que se acaba de usar y
- Si es necesario, genera más claves futuras.
Recepción
En el extremo receptor (descifrador), el sistema funciona de la siguiente manera:
- Se recibe el par (criptograma, KSN).
- Se ha localizado el BDK apropiado (si el sistema tiene más de uno).
- El sistema receptor primero regenera la IPEK y luego sigue un proceso similar al utilizado en el sistema de origen para obtener la misma clave de cifrado que se usó (la clave de sesión ). El número de serie de la clave (KSN) proporciona la información necesaria para ello.
- El criptograma se descifra con la clave de sesión.
- Se realiza cualquier procesamiento adicional. Para los adquirentes de comercios, esto generalmente significa cifrar con otra clave para enviarla a un conmutador (realizar una "traducción"), pero para ciertas operaciones de circuito cerrado puede implicar el procesamiento directo de los datos, como la verificación del PIN.
Claves de sesión
El método para obtener las claves de sesión difiere ligeramente entre el emisor y el receptor. En el emisor, se conserva información de estado considerable entre transacciones, incluyendo un contador de transacciones, un número de serie y una matriz de hasta 21 "claves futuras". En el receptor, no se conserva información de estado; solo la clave de sesión (BDK) se mantiene durante las operaciones de procesamiento. Esta configuración facilita el trabajo del receptor (se pueden gestionar numerosos dispositivos almacenando una sola clave). Además, proporciona seguridad adicional para el emisor (los dispositivos de captura de PIN suelen implementarse en entornos con restricciones de seguridad; los parámetros de seguridad de estos dispositivos están alejados de la clave de sesión, que es confidencial, y si un dispositivo se ve comprometido, los demás no se ven afectados implícitamente).
Uso de registros
Registros de respaldo
Las siguientes áreas de almacenamiento relacionadas con la gestión de claves se mantienen desde el momento en que se ejecuta el comando "Cargar clave inicial" durante toda la vida útil del dispositivo de entrada de PIN:
Contador de cifrado (21 bits)
Un contador que indica el número de cifrados de PIN realizados desde la inicialización del dispositivo de entrada de PIN. Algunos valores del contador se omiten (como se explica más adelante), lo que permite realizar más de un millón de operaciones de cifrado de PIN. Nota: La concatenación (de izquierda a derecha) del registro del número de serie de la clave inicial y el contador de cifrado forman el registro del número de serie de la clave de 80 bits (20 dígitos hexadecimales).
Registros de claves futuras (21 registros de 34 dígitos hexadecimales cada uno)
Un conjunto de 21 registros, numerados del #1 al #21, utilizados para almacenar futuras claves de cifrado PIN. Cada registro incluye una comprobación de redundancia longitudinal (LRC) de 2 dígitos hexadecimales o una comprobación de redundancia cíclica (CRC) de 2 dígitos hexadecimales.
Registros temporales
Las siguientes áreas de almacenamiento relacionadas con la gestión de claves son necesarias de forma temporal y pueden ser utilizadas para otros fines por otras rutinas de procesamiento de PIN:
Puntero de tecla actual (aproximadamente 4 dígitos hexadecimales)
Contiene la dirección del Registro de Clave Futura cuyo contenido se utiliza en la operación criptográfica actual. Identifica el contenido de dicho Registro de Clave Futura cuya dirección se encuentra en el Puntero de Clave Actual.
Registro de desplazamiento (21 bits)
Un registro de 21 bits, cuyos bits están numerados de izquierda a derecha del #1 al #21. Este registro normalmente contiene 20 bits "cero" y un bit "uno". Una de las funciones de este registro es seleccionar uno de los Registros de Clave Futura. El Registro de Clave Futura que se seleccionará es aquel cuyo número coincide con el bit del Registro de Desplazamiento que contiene el único "uno".
Registro criptográfico-1 (16 dígitos hexadecimales)
Un registro utilizado para realizar operaciones criptográficas.
Registro criptográfico-2 (16 dígitos hexadecimales)
Un segundo registro utilizado para realizar operaciones criptográficas.
Registro de claves (32 dígitos hexadecimales)
Un registro utilizado para almacenar una clave criptográfica.
Asuntos prácticos (programa KSN)
En aplicaciones prácticas, se suelen tener varios BDK registrados, posiblemente para diferentes clientes o para delimitar el alcance de una posible vulneración de claves. Al procesar transacciones, es importante que el receptor sepa qué BDK se utilizó para inicializar el dispositivo de origen. Para ello, el KSN de 80 bits se estructura en tres partes: un ID de conjunto de claves, un ID de TRSM y el contador de transacciones. El algoritmo especifica que el contador de transacciones es de 21 bits, pero trata los 59 bits restantes de forma opaca (solo especifica que los bits no utilizados se rellenen con ceros hasta un límite de nibble y, posteriormente, con 'f' hasta el límite de 80 bits). Por ello, la entidad que gestiona la creación de los dispositivos DUKPT (normalmente un adquirente comercial) puede subdividir los 59 bits según sus preferencias.
La práctica habitual en la industria consiste en designar la partición mediante una serie de tres dígitos, que indican el número de dígitos hexadecimales utilizados en cada parte: el ID del conjunto de claves, el ID del TRSM y el contador de transacciones. Una opción común es '6-5-5', lo que significa que los primeros 6 dígitos hexadecimales del KSN indican el ID del conjunto de claves (es decir, qué BDK se va a utilizar), los siguientes 5 son el ID del TRSM (es decir, un número de serie del dispositivo dentro del rango que se inicializa mediante un BDK común) y los últimos 5 son el contador de transacciones.
Este esquema de notación no es del todo preciso, ya que el contador de transacciones es de 21 bits, lo cual no es un múltiplo exacto de 4 (el número de bits en un dígito hexadecimal). En consecuencia, el contador de transacciones consume un bit del campo que corresponde al ID de TRSM (en este ejemplo, esto significa que el campo ID de TRSM puede albergar 2 (5*4-1) dispositivos, en lugar de 2 (5*4) , o aproximadamente medio millón).
Además, es práctica común en la industria usar solo 64 bits del KSN (probablemente por razones relacionadas con sistemas heredados y cifrado DES), lo que implica que el KSN completo se rellena a la izquierda con cuatro dígitos hexadecimales 'f'. Los cuatro dígitos hexadecimales restantes (16 bits) están disponibles, no obstante, para los sistemas que los admiten.
El esquema 6-5-5 mencionado anteriormente permitiría unos 16 millones de BDK, 500.000 dispositivos por BDK y 1 millón de transacciones por dispositivo.
Notas
- ↑ El término IPEK es inapropiado, ya que esta clave también puede utilizarse para derivar claves de cifrado de datos y autenticación de mensajes. El método de derivación para crear una IPEK se definió en X9.24-1:2009. En X9.24-1:2017 (DUKPT basado en AES), la IPEK se reemplaza por la Clave Inicial (IK).
Referencias
- https://www.emscorporate.com/glossary/derived-unique-key-per-transaction#:~:text=Qué%20es%20una%20clave%20única%20derivada,de%20cualquier%20clave%20usada%20anteriormente.
- https://www.futurex.com/derived-unique-key-per-transaction/
- https://handpoint.atlassian.net/wiki/spaces/PD/pages/32014361/DUKPT
- Gestión clave