API Java
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
EFT

Descripción detallada

Operaciones de transferencia electrónica de fondos.

EFT

Las API del módulo EFT(Electronic Funds Transfer) están destinadas a las operaciones de autenticación de usuarios y verificación de identidad en las transacciones de Visa y Mastercard.

Por lo general, la identidad del usuario de la tarjeta puede verificarse de dos maneras:

  1. firma manuscrita, en comparación con una tarjeta de firma en poder del emisor de la tarjeta;
  2. mediante un PIN (número de identificación personal) introducido por el usuario; la verificación del PIN puede hacerse en línea, con validación del emisor de la tarjeta, o fuera de línea, utilizando una tarjeta con chip.

Las normas adoptadas se ajustan al Manual de Normas de Tecnología de Pagos de Visa (octubre de 2007).

En términos generales, el proceso de transferencia de fondos con tarjeta sigue el flujo de la figura siguiente. En el proceso intervienen varios actores. El titular de la tarjeta la presenta al minorista (minorista/comerciante), la autenticidad del titular de la tarjeta puede verificarse mediante un PIN, que el titular introduce en la estación del minorista (por ejemplo, un terminal de punto de venta). A partir de ahí, el PIN se encripta (se genera un Bloque PIN) y los datos de la transacción se envían a un proveedor de servicios de pago electrónico contratado por el comerciante (Adquirente), que a su vez envía los datos a la correspondiente red de tarjetas, según la marca de tarjeta utilizada por el titular, y de ahí se envían al emisor de la tarjeta, que dispone de los datos de identificación, crédito y otros sobre el titular y mantiene un contrato con el titular para el uso del servicio. Tras analizar los datos de la transacción, en términos de registro, crédito y autenticación, entre otros, el emisor puede autorizar o rechazar la transacción, y este mensaje de respuesta viaja en sentido contrario.

--- título: Proceso genérico de transferencia electrónica de fondos --- diagrama secuencial autonúmero participante Transportista participante Tienda participante Red participante Bandera participante Banco Titular ->> Tienda: Tarjeta/PIN/CVV activar Tienda Tienda ->> Red: Datos
Transacción desactivar Tienda activar Red Red ->> Bandera: Datos
Transacción desactivar Red activar Bandera Flag ->> Banco: Datos
Transacción desactivar Flag activar Banco Banco ->> Bandera: $ desactivar Banco activar Bandera Bandera ->> Red: $ desactivar Bandera activar Red Red ->> Tienda: $ desactivar Red activar Tienda Tienda ->> Transportista: Mercancías/
Servicios desactivar Tienda Banco -->> Portador: Débito Titular -->> Banco: $

Desde el punto de vista de las claves de cifrado utilizadas en el proceso, éste se muestra en la figura siguiente. Cada actor conserva sus propias claves, y cada vez que un mensaje cifrado debe pasar de un actor a otro, hay que traducir el cifrado, es decir, utilizar la clave correspondiente del actor que debe descifrar el mensaje.

--- título: Claves criptográficas en la transferencia de fondos --- secuenciaDiagrama participante Portador participante Almacén participante Red participante Bandera participante Banco destruir Titular de la tarjeta Titular ->> Tienda: Tarjeta/PIN/CVV destruir Tienda Tienda ->> Red: Bloqueo PIN Nota sobre la red: HSM:
PIN Translation Nota sobre la red: ZCMK
AWK
... destruir Red Red ->> Bandera: PIN Block Nota sobre el indicador: HSM:
PIN Translation Nota sobre el indicador: ZCMK
AWK
IWK
... destruir Flag Bandera ->> Banco: Bloqueo PIN activar Banco Nota sobre banco: HSM:
PIN Block Verification
CVV Verification Nota sobre Banco: ZCMK
IWK
CVK
PVK
... desactivar Banco

Pueden utilizarse variaciones o simplificaciones del esquema anterior, por ejemplo, cuando una misma entidad desempeña más de una función, o existe una comunicación directa del adquirente con el emisor, como puede ocurrir en determinadas operaciones de débito.

Observación
  1. Cada clave criptográfica debe dedicarse a una sola aplicación, según determine el manual de Visa.
  2. Los tamaños introducidos para los parámetros se refieren a los datos; la aplicación debe asegurarse de que el búfer pasado tiene espacio suficiente para los datos más el carácter terminador.
  3. El módulo EFT funciona con tamaños de PIN de 4 (MIN_EFT_PIN_LEN) a 12 (MAX_EFT_PIN_LEN) dígitos.

Acerca de la compatibilidad con los algoritmos del protocolo 3-D Secure:

HSM Dinamo implementa algoritmos criptográficos que soportan el protocolo 3-D Secure, desarrollado por Visa. Los servicios Verified by Visa de Visa y Secure Code de Mastercard son ofrecidos por marcas basadas en este protocolo. HSM implementa los algoritmos criptográficos de verificación de tarjetas que soportan el protocolo y los servicios, permitiendo al usuario de HSM generar y verificar códigos, CVC2 (Card Verification Code 2) y HMAC SHA1 en el caso de Mastercard (Secure Payment Application Algorithm) y CAVV (Cardholder Authentication). Valor de Verificación, CVV2 con método ATN) en el caso de Visa.

El HSM es compatible con los mecanismos de autenticación CAP (Visa) y DPA (Mastercard).

El HSM ofrece soporte para la carga/transporte remoto de claves ATM mediante funcionalidades criptográficas basadas en funciones RSA y X.509.

La aplicación del HSM cumple las normas definidas en la documentación que se indica a continuación:

EMVCo

Visa

Mastercard

Enlace

JCB

Otros

Mecanismos de la CVV

Existen tres formas de generar y verificar el CVV(valor de verificación de la tarjeta) en el HSM:

  1. Valor de verificación de la tarjeta (CVV), para transacciones con tarjetas de banda magnética;
  2. Card Verification Value 2 (CVV 2); para transacciones sin presencia física de la tarjeta (por teléfono, correo o Internet, por ejemplo);
  3. Alternate Card Verification Value (iCVV), para transacciones con tarjeta chip; El mecanismo de cálculo es el mismo en las tres formas, y la diferencia radica en la forma en que la aplicación introduce los datos.

La clave utilizada para la generación del CVV y los cálculos de verificación se denomina CVK(Card Verification Key). Esta clave es interna al HSM, la aplicación sólo tiene que introducir su nombre de clave (id). Físicamente, es una clave 3DES de 112 bits, que corresponde a dos claves DES de 56 bits.

La figura siguiente ilustra los diagramas de generación y comprobación de CVV, iCVV y CVV2.

--- title: Geração de CVV / iCVV / CVV2 --- %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% flowchart TB PAN[PAN] Service[Código de serviço / 99/ 000] Data[Data de expiração] CVKid[CVK id] H[\"HSM: CVK (3DES 112)"/] cvv((CVV)) icvv((iCVV)) cvv2((CVV 2)) PAN --> H Service --> H Data --> H CVKid --> H H --> cvv H --> icvv H --> cvv2

Mecanismos PIN

El HSM funciona generando PINs (Números de Identificación Personal) mediante un mecanismo de derivación, basado en una clave interna llamada PGK(Clave de Generación de PIN). Esta forma de generación presenta varias ventajas, especialmente en comparación con el método de generación de PINs con valores aleatorios, ya que no requiere el uso de una base de datos para su validación (con la probable exposición de datos sensibles) y además mantiene tanto el proceso de generación como el de validación más seguros, al realizarse internamente al HSM.

El estándar utilizado para generar el PIN por el HSM es el IBM 3624, que utiliza compensaciones para que el PIN pueda ser modificado por el usuario o el emisor de la tarjeta. Para mitigar los ataques de decimalización y verificación, el HSM utiliza una tabla de conversión interna que no se expone a la aplicación. Como factor de seguridad adicional, se utiliza una clave 3DES de 168 bits en lugar de una clave 3DES de 112 bits; no hay interferencias en el funcionamiento del algoritmo, ya que las claves DES y 3DES utilizan bloques de entrada y salida del mismo tamaño.

--- title: Geração de PIN por derivação --- %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% flowchart TB PAN[PAN] InPIN[InPIN] Offset[offset] PGKid[PGK id] H[\"HSM: CVK (3DES 112)"/] r((PIN)) PAN --> H InPIN --> H Offset --> H PGKid --> H H --> r

Se definen tres modos de generación de PIN por derivación:

  1. a partir del PAN(Personal Account Number), el PIN de entrada (inPIN) y el PGK;
  2. a partir de un PIN de entrada y el PGK, el uso de un offset permite al usuario cambiar el PIN;
  3. del PAN, el PGK y un PIN de entrada, con el uso de un offset permite el cambio automático del PIN;

No hay gestión de reglas de negocio para PINs generados dentro del HSM; esta función debe ser llevada a cabo por la aplicación llamante.

Los algoritmos de generación mediante el estándar IBM 3624 se muestran en los siguientes diagramas.

--- title: Algoritmo de Geração de PIN IBM 3624 --- %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% flowchart TD Dado{{Dado de Validação}} PGK{{PGK}} Op3DES[\Operação 3DES/] Troca[Troca de dígito] Ajuste[Ajuste de tamanho] Pin((PIN)) Dado --> Op3DES PGK --> Op3DES Op3DES -- Tabela de decimalização interna --> Troca Troca -- PIN Intermediário --> Ajuste Ajuste --> Pin

Para que el usuario(titular de la tarjeta) pueda seleccionar su propio PIN, en el método IBM 3624 se utiliza un desplazamiento del PIN, de modo que se requieren dos nuevas entradas, el PIN establecido por el usuario y una comprobación de 4 bits de longitud. La operación de desplazamiento se realiza después de los pasos del algoritmo IBM 3624 mostrados anteriormente. Esto permite que el proceso interno del HSM valide el PIN, aunque el usuario defina un PIN diferente al generado inicialmente por el HSM.

--- title: Algoritmo de Geração de PIN IBM 3624 com offset --- %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% flowchart TD Dado{{Dado de Validação}} PGK{{PGK}} Op3DES[\Operação 3DES/] Troca[Troca de dígito] Ajuste[Ajuste de tamanho] Sub[\"Subtração em módulo 10
(InPin -PIN)"/] OpOff[\Operação de offset no PIN/] Pin((PIN)) InPin{{"InPin
(PIN gerado pelo usuário)"}} Of{{"dado de offset
(4-bit)"}} Dado --> Op3DES PGK --> Op3DES Op3DES -- Tabela de decimalização interna --> Troca Troca -- PIN Intermediário --> Ajuste Ajuste --> Sub Sub --> OpOff OpOff --> Pin InPin --> Sub Of --> OpOff

Las operaciones PIN BlockTranslate funcionan con dos claves, una de origen y otra de destino; existe una fase intermedia para compatibilizar, si es posible, el formato de entrada con el de salida. Hay determinados formatos de bloque que no son interoperables, ya sea porque no hay datos para la conversión o por una restricción de la norma.

El modo de traducción por defecto del HSM consiste en traducir el bloque de entrada al formato ISO PIN Block Format 0. En el modo de traducción automática, la conversión se realiza de forma opaca, convirtiendo del bloque con la clave de origen al bloque con la clave de destino, sin analizar el formato ni el contenido del bloque.

--- title: Operação de PIN Translate --- %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% flowchart TD blockin{{Bloco de entrada}} keyin{{Chave de entrada}} OpDES1[\DES/] Prep[Preparação] OpDES2[\DES/] keyout{{Chave de destino}} blockout{{Bloco da saída}} blockin --> OpDES1 keyin --> OpDES1 OpDES1 --> Prep Prep --> OpDES2 keyout --> OpDES2 OpDES2 --> blockout

Cuando se verifica un Bloque PIN, tienen lugar dos operaciones clave: primero se descifra el Bloque PIN con la PTK(Clave de Transporte PIN), se extrae el PIN del Bloque PIN descifrado, y luego se verifica el PIN utilizando la PGK(Clave de Generación PIN, la misma clave utilizada para generar el PIN original). Esta verificación puede realizarse con o sin el uso de un desplazamiento; este desplazamiento del PIN no forma parte del Bloque PIN y no está cifrado por la PTK. El formato de bloque PIN esperado es el formato ISO PIN Block Format 0 (equivalente a ANSI PIN Block Format 0 y VISA PIN Block Format 1).

--- title: Operação de Verificação de PIN Block --- %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% flowchart TD pinblock{{PIN Block}} ptk{{PTK}} OpDES1[\DES/] Prep[PIN, PAN, ...] pin[PIN] pgk{{PGK}} off{{offset}} OpDES2[\3DES/] r((Result)) ptk --> OpDES1 pinblock --> OpDES1 OpDES1 --> Prep Prep --> pin pin --> OpDES2 pgk --> OpDES2 off --> OpDES2 OpDES2 --> r

Mecanismos de DUKPT

DUKPT(Derived Unique Key Per Transaction) es una forma de utilizar claves únicas por transacción, derivadas de una clave fija, y este proceso se define en ANSI X9.24 parte 1.

El KSN(Key Serial Number) es el identificador de una clave de transacción y se divide en partes como: KSI(Key Set ID), TRSM(Tamper Resistant Security Module), POS(Point of Sale) identificador también conocido como DID(Device ID) y el CTR(Transaction Counter).

--- título: DUKPT key generation --- secuenciaDiagrama participante hsm como HSM participant pos como dispositivo PoS/ATM
Nota sobre hsm: BDK activar hsm hsm ->> hsm: IPEK (Id de dispositivo) desactivar hsm hsm ->> pos: IPEK Nota sobre pos: IPEK

HSM utiliza las partes de KSN separadas en KSI y DID + CTR, cada una de las cuales contiene 5 bytes.

Los pasos del proceso de utilización de DUKPT son, en cada extremo de la comunicación:

En el punto de venta:

  1. Inicializado previamente con un IPEK derivado de un BDK.
  2. Genera (o recupera de una tabla de claves futuras) la clave futura utilizando el DID y el CTR.
  3. Cifra el bloque requerido (por ejemplo, el bloque PIN).
  4. Envía KSN + bloque cifrado. KSN se compone de TRMS (o DID), KSI y CTR.
  5. Aumenta el CTR interno.

En HSM:

  1. Recibe KSN + bloque cifrado.
  2. Selecciona la BDK adecuada en función del KSN recibido. El KSN se compone de TRMS (o DID), KSI y CTR.
  3. Genera el IPEK basándose en el BDK y el KSN seleccionados.
  4. Utiliza el IPEK, el DID y el CTR contenidos en el KSN para generar la clave de sesión.
  5. Descifra el bloque y realiza el procesamiento necesario.
  6. El TPV tiene una IPEK(Clave Inicial de Cifrado de Clavijas) derivada de una BDK(Clave Base de Derivación). Esta BDK se almacena dentro del HSM y se utiliza en la regeneración de la IPEK del TPV correspondiente y, a continuación, esta IPEK se utiliza en la derivación de las claves de transacción únicas de este TPV.

--- título: DUKPT comunicación entre TPV/ATM y HSM --- diagrama secuencial participante pos como dispositivo POS/ATM
participante hsm como HSM Nota sobre pos: IPEK activar pos pos ->> pos: KSI,CTR pos ->> pos: Clave de sesión pos ->> pos: Texto sin formato > bloque cifrado desactivar pos pos ->> hsm: cipher block
TRSM (Device Id)
KSI
CTR activar hsm pos sobre hsm: BDK hsm ->> hsm: IPEK (Id de dispositivo) hsm ->> hsm: KSI,CTR hsm ->> hsm: Clave de sesión hsm ->> hsm: bloque de cifrado > texto en claro desactivar hsm

Envoltura de llaves TR-31

Se trata de un proceso de envoltura/_desenvoltura_ con protección de la confidencialidad y la integridad de las claves y los datos asociados, definido en el documento ASC X9 TR 31-2018.

KBPK(Key Block Protection Key) es la clave de derivación utilizada para derivar las claves de cifrado y autenticación. Esta clave sólo se utiliza para la derivación. También se conoce como KWK (Key Wrapping Key). Se almacena en el HSM.

KBEK(Key Block Encryption Key) es la clave derivada de KBPK y utilizada únicamente para el cifrado de bloque de claves. Se genera con cada operación de envoltura/desenvoltura y no se almacena de forma persistente en el HSM.

KBAK(Key Block Authentication Key) es la clave derivada de KBPK y utilizada únicamente para calcular la MAC de la clave klock. Se genera con cada operación de envoltura/desenvoltura y no se almacena de forma persistente en el HSM.

KDID(Key Derivation Input Data) son los datos utilizados para derivar las claves KBEK y KBAK. Contiene datos como: contador, indicador de uso de clave, indicador de algoritmo y tamaño. Varía en función del método de derivación utilizado, la clave que debe derivarse y otros parámetros.

La derivación de las claves KBEK y KBAK utiliza CMAC con los datos de entrada de derivación de claves (específicos de cada clave derivada) y la clave KBPK como entrada.

--- title: Processo de derivação KBEK e KBAK --- %%{ init: { 'flowchart': { 'curve': 'basis' } } }%% flowchart TD kbekin("Key derivation
input data
KBEK") kbakin("Key derivation
input data
KBAK") cmac1([CMAC]) kbpk(KBPK) cmac2([CMAC]) kbek("Key Block
Encryption Key") kbak("Key Block
Authentication Key") kbekin --> cmac1 kbakin --> cmac2 cmac1 --> kbek cmac2 --> kbpk cmac2 --> kbak cmac1 --> kbpk

El bloque Clave contiene los datos de la clave exportada. Este bloque se divide en 3 partes:

  1. KBH(Key Block Header) contiene información sobre la clave y el bloque de claves.
  1. Los datos confidenciales que se enviarán/guardarán. Se encriptan con la clave KBEK. Los datos de entrada para el cifrado son: el tamaño de la clave, la clave y el relleno.
  1. La MAC que conecta el KBH y el bloque de claves cifrado. Se genera utilizando la clave KBAK. Los datos de entrada para la operación MAC son: el KBH, y los datos de entrada para el cifrado.

%%{init: { 'theme': 'dark' } }%% timeline title Processo de Geração do Key Block section KBH section Bloco Cifrado Inputs#58; : tamanho da chave : chave KBEK : padding section MAC Inputs#58; : KBH : tamanho da chave : chave KBAK : padding

Definiciones

Funciones

Cadena generateDUKPT (byte[] baKSI, byte[] baDID_CTR, int dwParam) throws TacException
 Genera una clave DUKPT dentro del HSM utilizando un KSI (Key Serial Identification), un DID (Device ID) y un CTR (Transaction Counter) del mismo KSN (Key Serial Number).
 
Cadena generateDUKPTName (byte[] baKSI, byte[] baDID_CTR) throws TacException
 Genera el nombre del DUKPT a partir del KSI y el CTR introducidos.
 
Cadena generateBDKName (byte[] baKSI) throws TacException
 Genera el nombre del BDK a partir de un KSI (Key Serial Identification).
 
byte[] translatePINBlock (String srcPEK, String dstPEK, int transBlockType, String PAN, byte[] inPINBlock) throws TacException
 Traduce un bloque PIN, descifrándolo con una clave y cifrándolo con otra.
 
byte[] exportTR31 (String kbpk, String key, int usage, byte mode, byte export) throws TacException
 Exporta una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
 
void importTR31 (String kbpk, String key, int keyAttributes, byte[] keyBlock) throws TacException
 Importe una clave en formato TR-31 según la norma ASC X9 TR 31-2018.
 

Funciones

generarDUKPT()

Cadena generateDUKPT ( byte[] baKSI,
byte[] baDID_CTR,
int dwParam ) lanza una TacException

Genera una clave DUKPT dentro del HSM utilizando un KSI (Key Serial Identification), un DID (Device ID) y un CTR (Transaction Counter) del mismo KSN (Key Serial Number).

Parámetros
baKSIBuffer de tamaño TacNDJavaLib.MIN_KSI_LEN que contiene el KSI (primeros 05 bytes del KSN).
baDID_CTRBuffer de tamaño TacNDJavaLib.MIN_CTR_LEN que contiene el DID y el CTR (últimos 05 bytes del KSN).
dwParamBanderas de funcionamiento según la tabla siguiente.
Valor Significado
TacNDJavaLib.NEW_DUKPT_MODE_DUK Genera una DUK (Clave Única Derivada) estándar de acuerdo con el manual ISO X9.24-1-2004.
TacNDJavaLib.NEW_DUKPT_MODE_PEK Genera una clave PEK (PIN Encryption Key) según el manual ISO X9.24-1-2004 A-1,A-6 aplicando el XOR de la máscara 0000 0000 0000 FF00 a las partes de la clave.
TacNDJavaLib.NEW_DUKPT_MODE_MEK Genera una clave MEK (MAC Encryption Key) según el manual ISO X9.24-1-2004 A-1,A-6 aplicando el XOR de la máscara 0000 0000 0000 00FF a las partes de la clave.
TacNDJavaLib.NEW_DUKPT_MODE_DE Diversifica la clave generada en formato de Cifrado de Datos. Aplica un XOR de la máscara 0000 0000 00FF 0000 0000 00FF 0000 a la clave DUKPT generada, encripta la clave izquierda del DUKPT utilizando el DUKPT generado y repite la encriptación con la clave derecha. Tras esta operación, une las partes izquierda y derecha cifradas para formar la clave de cifrado de datos. Como se describe en el MANUAL DE USUARIO IDTECH SecureMag Encrypted MagStripe Reader (80096504-001 RevL 06/19/14).
Debe utilizarse en combinación (mediante la operación OR) con uno de los indicadores: TacNDJavaLib . NEW_DUKPT_MODE_DUK, TacNDJavaLib.NEW_DUKPT_MODE_PEK o TacNDJavaLib.NEW_DUKPT_MODE_MEK.
TacNDJavaLib.NEW_DUKPT_MODE_EXP Genera una clave DUKPT exportable. Se trata de un indicador de atributo y debe utilizarse en combinación con otros indicadores. Utilícela sólo si se requiere específicamente.
TacNDJavaLib.NEW_DUKPT_MODE_TMP Genera una clave DUKPT temporal. Se trata de un indicador de atributo y debe utilizarse en combinación con otros indicadores.
Devolución
Devuelve el nombre de la clave DUKPT generada.
Excepciones
TacException

generateDUKPTName()

Cadena generateDUKPTName ( byte[] baKSI,
byte[] baDID_CTR ) lanza una TacException

Genera el nombre del DUKPT a partir del KSI y el CTR introducidos.

Parámetros
baKSIBuffer de tamaño TacNDJavaLib.MIN_KSI_LEN que contiene el KSI (primeros 05 bytes del KSN).
baDID_CTRBuffer de tamaño TacNDJavaLib.MIN_CTR_LEN que contiene el DID y el CTR (últimos 05 bytes del KSN).
Devolución
Devuelve el nombre de la clave DUKPT.
Excepciones
TacException

generateBDKName()

Cadena generateBDKName ( byte[] baKSI) lanza una TacException

Genera el nombre del BDK a partir de un KSI (Key Serial Identification).

Parámetros
baKSIBuffer de tamaño TacNDJavaLib.MIN_KSI_LEN que contiene el KSI (primeros 05 bytes del KSN).
Devolución
Devuelve el nombre de la clave BDK.
Excepciones
TacException

translatePINBlock()

byte[] translatePINBlock ( Cadena srcPEK,
Cadena dstPEK,
int transBlockType,
Cadena PAN,
byte[] inPINBlock ) lanza una TacException

Traduce un bloque PIN, descifrándolo con una clave y cifrándolo con otra.

El formato de bloque entrante se identifica automáticamente, y el formato de bloque saliente puede ser definido por el emisor de la llamada, siempre que el cambio de formato no sea de un PAN Unbound a un PAN Bound. Los formatos PAN Bound son aquellos que utilizan información PAN en su composición. Por tanto, es posible realizar tanto la traducción de claves como la traducción de formatos. El llamante puede realizar una validación forzada del formato indicando para el formato saliente, el mismo que está utilizando en el Bloque PIN entrante.

Parámetros
srcPEKIdentificador de la clave de descifrado dentro del HSM.
dstPEKIdentificador de la clave de cifrado dentro del HSM.
transBlockTypeIdentificador del formato del bloque de salida. Según la tabla siguiente.
Valor Significado
TacNDJavaLib.TP_TRANSLATE_TYPE_AUTO Realiza una conversión opaca, traduciendo del bloque con la clave de origen al bloque con la clave de destino, sin analizar el formato ni el contenido del bloque.
PAN Bound: no se aplica.
TacNDJavaLib.TP_TRANSLATE_TYPE_ISO_0 Utiliza ISO PIN Block Format 0 (equivalente a ANSI PIN Block Format 0 y VISA PIN Block Format 1).
PAN Bound: sí.
TacNDJavaLib.TP_TRANSLATE_TYPE_ISO_1 Utiliza el formato ISO PIN Block 1.
PAN Bound: no.
TacNDJavaLib.TP_TRANSLATE_TYPE_ISO_3 Utiliza el formato ISO PIN Block Format 3.
PAN Bound: sí.
TacNDJavaLib.TP_TRANSLATE_TYPE_IBM_3624 Tipo de bloque IBM 3624 utilizado.
No implementado.
PANPAN (Número de cuenta principal).
inPINBlockEntrada de bloque PIN. El búfer debe tener el tamaño de un PIN Block, TacNDJavaLib.DES_BLOCK (8 bytes).
Devolución
Salida del bloque PIN.
Excepciones
TacException
Notas
En el caso de una conversión no opaca, es decir, una traducción de formato, si no se puede reconocer el formato PIN Block de entrada, se devolverá un error D_ERR_OPERATION_FAILED.
El método ISO PIN Block Format 2 no está implementado en el HSM, ya que este formato está destinado a utilizarse para la protección del PIN cuando se envía desde el lector de tarjetas chip.

exportTR31()

byte[] exportTR31 ( Cadena kbpk,
Cadena clave,
int uso,
byte modo,
byte exportar ) lanza una TacException

Exporta una clave en formato TR-31 según la norma ASC X9 TR 31-2018.

Parámetros
kbpkNombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación.
claveNombre de la clave que se exportará del HSM.
usoIdentificador de uso de clave, como se describe en ASC X9 TR 31-2018 Sección A.5.1 tabla 6. Se aceptan las siguientes opciones.
Valor Significado
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_AUTO Define el identificador automáticamente. Se utilizan los siguientes valores: TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D0 para clave simétrica y TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D1 para clave asimétrica.
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_B0 BDK Clave de derivación base
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_B1 Clave inicial DUKPT
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_B2 Clave base Clave variante
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_C0 CVK Clave de verificación de la tarjeta
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D0 Clave simétrica para el cifrado de datos
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D1 Clave asimétrica para el cifrado de datos
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_D2 Clave de encriptación de datos para la tabla de decimalización
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E0 EMV/chip Issuer Master Key: Criptogramas de aplicación
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E1 Clave maestra del emisor EMV/chip: mensajería segura para la confidencialidad
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E2 Clave maestra del emisor EMV/chip: mensajería segura para la integridad
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E3 EMV/chip Clave maestra del emisor: Código de autenticación de datos
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E4 EMV/chip Clave maestra del emisor: Números dinámicos
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E5 EMV/chip Emisor Llave maestra: Personalización de tarjetas
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_E6 EMV/chip Llave maestra del emisor: Otro
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_I0 Vector de inicialización (IV)
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K0 Cifrado o envoltura de claves
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K1 TR-31 Llave de protección del bloque de llaves
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K2 TR-34 Clave asimétrica
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_K3 Clave asimétrica para acuerdo de claves/envuelta de claves
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M0 ISO 16609 MAC algoritmo 1 (utilizando TDEA)
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M1 ISO 9797-1 Algoritmo MAC 1
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M2 ISO 9797-1 Algoritmo MAC 2
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M3 ISO 9797-1 Algoritmo MAC 3
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M4 ISO 9797-1 Algoritmo MAC 4
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M5 ISO 9797-1:1999 Algoritmo MAC 5
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M6 ISO 9797-1:2011 Algoritmo MAC 5/CMAC
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M7 HMAC
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_M8 ISO 9797-1:2011 Algoritmo MAC 6
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_P0 Cifrado de PIN
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_S0 Par de claves asimétricas para la firma digital
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_S1 Par de claves asimétricas, clave CA
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_S2 Par de claves asimétricas, clave no X9.24
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V0 Verificación PIN, KPV, otro algoritmo
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V1 Verificación del PIN, IBM 3624
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V2 Verificación del PIN, VISA PVV
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V3 Verificación del PIN, X9.132 algoritmo 1
TacNDJavaLib.EFT_ME_TR31_EXP_USAGE_V4 Verificación del PIN, X9.132 algoritmo 2
modoIdentificador del modo de uso de la clave, como se describe en ASC X9 TR 31-2018 Sección A.5.3 tabla 8. Se aceptan las siguientes opciones.
Valor Significado
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_AUTO Define automáticamente el identificador del modo de uso. Se utiliza el siguiente valor TacNDJavaLib.EFT_ME_TR31_EXP_MODE_N.
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_B Cifrado y descifrado / Envolver y desenvolver
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_C Generación y verificación
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_D Sólo desencriptación / desenvoltura
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_E Cifrado / Sólo envoltura
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_G Sólo generación
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_N Sin restricciones especiales (excepto las definidas por el identificador de uso de la clave)
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_S Sólo firma
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_T Firma y descifrado
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_V Sólo verificación
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_X Clave utilizada para derivar otra(s) clave(s)
TacNDJavaLib.EFT_ME_TR31_EXP_MODE_Y Clave utilizada para crear variantes de clave
exportarIdentificador clave de exportabilidad, como se describe en ASC X9 TR 31-2018 Sección A.5.5 tabla 10. Se aceptan las siguientes opciones.
Valor Significado
TacNDJavaLib.EFT_ME_TR31_EXP_AUTO Define automáticamente el identificador de exportabilidad. Se utiliza el siguiente valor TacNDJavaLib.EFT_ME_TR31_EXP_X9_24.
TacNDJavaLib.EFT_ME_TR31_EXP_X9_24 Exportable con una KEK (clave de cifrado) en un formato que cumpla lo definido en los requisitos de X9.24 Partes 1 o 2.
TacNDJavaLib.EFT_ME_TR31_EXP_NON_EXPORTABLE No exportable por el destinatario del bloque de claves ni por el lugar de almacenamiento. No impide la exportación de claves derivadas de una clave no exportable.
TacNDJavaLib.EFT_ME_TR31_EXP_KEK_EXPORTABLE Sensible, Exportable bajo una KEK (Clave de Cifrado) en un formato no necesariamente conforme con los requisitos de X9.24 Partes 1 ó 2.
Devolución
bloque de teclas
Excepciones
TacException
Notas
Esta API exporta una clave utilizando los métodos para generar bloque_clave abajo.
Algoritmo KBPK Método de exportación
3DES 5.3.2.1 Método vinculante de derivación de claves - TDEA
AES 5.3.2.3 Método de vinculación de bloques de claves - AES

importarTR31()

void importTR31 ( Cadena kbpk,
Cadena clave,
int keyAttributes,
byte[] keyBlock ) lanza una TacException

Importe una clave en formato TR-31 según la norma ASC X9 TR 31-2018.

Parámetros
kbpkNombre de la clave KBPK (Key Block Protection Key) utilizada para derivar las claves de cifrado y autenticación.
claveNombre de la clave que se importará en el HSM.
keyAttributesParámetros adicionales de la clave. Consulte las opciones del método createKey().
keyBlockbloque de teclas
Excepciones
TacException
Notas
Esta API importa claves protegidas por los métodos de generación de la aplicación bloque_clave.
Algoritmo KBPK Método
3DES 5.3.2.1 Método vinculante de derivación de claves - TDEA
AES 5.3.2.3 Método de vinculación de bloques de claves - AES