En criptografía , un valor de suma de verificación de clave (KCV) es la suma de verificación de una clave criptográfica . [ 1 ] Se utiliza para validar la integridad de la clave o comparar claves sin conocer sus valores reales. El KCV se calcula cifrando un bloque de bytes, cada uno con valor '00' o '01', con la clave criptográfica y conservando los primeros 6 caracteres hexadecimales del resultado cifrado. Se utiliza en la gestión de claves en diferentes dispositivos de cifrado, como tarjetas SIM o módulos de seguridad de hardware (HSM) .
En las especificaciones técnicas de GlobalPlatform , el KCV se define para las claves DES/3DES y AES de la siguiente manera: [ 2 ]
Para una clave DES, el valor de verificación de clave se calcula cifrando 8 bytes, cada uno con el valor '00', con la clave que se va a verificar y conservando los 3 bytes de orden superior del resultado cifrado. Para una clave AES, el valor de verificación de clave se calcula cifrando 16 bytes, cada uno con el valor '01', con la clave que se va a verificar y conservando los 3 bytes de orden superior del resultado cifrado.
KCV para la gestión de claves simétricas en servicios financieros minoristas
La industria de tarjetas de pago utiliza la siguiente definición, tal como se documenta en el requisito 15-1 del estándar PCI PIN Security. [ 4 ] Las mismas definiciones también se pueden encontrar en los estándares ASC X9 bajo ANSI x9.24-1-2017 Retail Financial Services Symmetric Key Management Part 1 [ 5 ]
Los valores de verificación se pueden calcular mediante dos métodos. TDEA puede usar cualquiera de ellos. AES solo debe usar el método CMAC . En el primer método, los valores de verificación se calculan cifrando un bloque binario de ceros usando la clave o componente como clave de cifrado, utilizando los n bits más a la izquierda del resultado; donde n es como máximo 24 bits (6 dígitos hexadecimales/3 bytes). En el segundo método, el KCV se calcula mediante MAC de un bloque binario de ceros usando el algoritmo CMAC , tal como se especifica en ISO 9797-1 (véase también NIST SP 800-38B ). El valor de verificación serán los n bits más a la izquierda del resultado, donde n es como máximo 40 bits (10 dígitos hexadecimales). El cifrado de bloques utilizado en la función CMAC es el mismo que el cifrado de bloques de la clave misma. Una clave TDEA o un componente de una clave TDEA se cifrará mediante el cifrado de bloques TDEA , mientras que una clave AES de 128 bits o un componente se cifrará mediante el cifrado de bloques AES -128 .
Referencias
- ↑ "Criptografía: detección de claves incorrectas mediante AES/GCM en JAVA" .
- ↑ GPC_SPE_034, "Especificación de tarjeta GlobalPlatform 2.3.1" , GlobalPlatform , marzo de 2018, Sección B5
- ↑ "Arquitectura de aprovisionamiento remoto para UICC 3.1 integrado" , GSMA , mayo de 2016, Anexo F
- ↑ Seguridad del PIN de PCI, requisitos y procedimientos de prueba versión 3.1 , PCI , marzo de 2021, Requisito 15-1
- ↑ ANSI x9.24-1-2017 Gestión de claves simétricas para servicios financieros minoristas, Parte 1 , ASC X9, 2017, Anexo A
- Gestión clave