domingo, 25 de febrero de 2018

Sobre el KCV de llaves criptográficas

El key check value (KCV), dígito de chequeo en español, es un valor generalmente de 6 dígitos hexadecimales que permiten identificar de forma inequívoca a una llave criptográfica. Durante ceremonias de llaves con oficiales de seguridad, estos comparan el KCV generado por el sistema de seguridad vs el anotado en el formulario o elemento seguro donde trasladan la llave o componentes, y si la comparación es OK, entonces se da por sentado que la llave fue cargada correctamente.

Ahora bien, si no tengo el KCV como lo obtengo?, tengo forma de generarlo luego de crear la llave?, normalmente al trabajar con un HSM Thales, Atalla, Futurex, por la misma naturaleza de estos dispositivos y procedimientos de seguridad, no puedes simplemente decir luego de un tiempo, se me olvido anotar el KCV me permites el acceso al HSM para volver a obtenerlo?, en este contexto, es ideal que sepas como se genera este valor.

En primer lugar, necesitas tener la llave o componentes que forman la llave en claro y esto es potencialmente inseguro, por lo tanto, evita este procedimientos a menos que sea tu última opción o  para un entorno de prueba.

El calculo del KCV es muy simple, se utiliza triple DES, cifrando un bloqueo de al menos 16 ceros (0) con la llave criptográfica, del resultado solo capturas los primeros 6 dígitos hexadecimales.

Ejemplo:

Llave: 0123456789ABCDEFFEDCBA9876543210

Si tienes solo los componentes en claro de la llave, primero se debe realizar un XOR entre todos componentes para formar la llave.

Nota: Para este ejercicio se utiliza una llave de doble longitud 32 dígitos hexadecimal (recuerda que no es lo mismo 3DES que llaves de doble o triple longitud)

Bloque de datos para KCV: 0000000000000000

Para calcular el KCV necesitaras de una calculadora 3DES, al final de esta entrada encontrarás un link (DES.rar.quitar, renombra extension a .rar y descomprimir).

El resultado lo puedes observar en la siguiente imagen, el KCV de la llave 0123456789ABCDEFFEDCBA9876543210 es: 08D7B4

Sino tienes la llave o los componentes que la conforman en claro, no hay forma de obtener el KCV de una llave desde un criptograma (una llave cifrada con otra), por consiguiente, necesitaras obligatoriamente pedir el acceso al HSM, para el caso de los Thales, estos disponen de comandos que permiten obtener un KCV desde un criptograma de llave, siempre y cuando haya sido generado con la llave maestra de dicho dispositivo.




Link para descargar calculadora 3DES:
https://drive.google.com/open?id=1G8qlzb7XpgfZSk-zZbEi_l3pdxpQ932c


Saludos,


No hay comentarios:

Publicar un comentario

Sobre el KCV de llaves criptográficas

El key check value (KCV), dígito de chequeo en español, es un valor generalmente de 6 dígitos hexadecimales que permiten identificar de form...