Ir al contenido

Aplicación

El CSP Dinamo es referenciado por JCA\JCE utilizando el identificador ND.

Las clases CSP no pueden clonarse.

El archivo keystore almacena la relación entre las claves almacenadas en el HSM y el CSP. Esta relación se establece de las siguientes maneras:

  1. Creación de una clave a partir de las API JCA/JCE. De este modo, la clave se crea en el HSM pero se elimina al final del programa o cuando el objeto clave es eliminado por el recolector de basura de Java. Para que esta clave se mantenga en el HSM, debe incluirse en el almacén de claves, de modo que se garantice que no se eliminará al final del programa.

  2. Al cargar un almacén de claves la lista de claves se carga directamente desde el HSM. No existe una representación física del almacén de claves, por lo que cuando se llama a la función cargar() sucede null en los parámetros de fichero y clave. Las claves se reconocerán como se describe en los puntos 3 y 4. Las contraseñas de las claves son una cadena vacía.

    Información

    El nombre de la clave en HSM es una secuencia de 16 caracteres aleatorios más 3 caracteres JCA que se colocan al final del nombre de la clave, con un total de 19 caracteres.

    Atención

    Si el programa finaliza con un fallo inesperado, la llave no podrá retirarse del HSM.

Nomenclatura

Para la correcta interpretación de la clave privada, con su respectivo certificado (.cer) y cadena de certificados CA (p7b), debe seguirse la siguiente nomenclatura de claves.

Objeto Regla de formación del nombre
Clave privada <id_chave>
Certificado <id_chave>_cert
Cadena de certificados <id_chave>_chain

Información

Cuando la cadena de certificados se carga en el almacén de claves, se clasifica según se define en RFC-5246.

Una vez cargadas las claves en el almacén de claves, se puede acceder al certificado y a la cadena de certificados a través de los respectivos métodos de recuperación disponibles en el alias de clave privada.

keystoreinstance.ObtenerCertificado(clave_id)
keystoreinstance.ObtenerCadenaDeCertificado(clave_id)

Cadenas

Las cadenas de certificados se aceptan con o sin el certificado principal (certificado relacionado con la propia clave).

Además de la forma descrita anteriormente, se permiten relaciones clave/cadena utilizando MAPs (objetos HSM que permiten relacionar otros dos objetos). El uso de MAPs permite definir de forma más flexible la relación entre una clave privada y una cadena de certificados con nombres que no siguen la nomenclatura descrita en el punto (3) y el nombre del Alias en el KeyStore.

Esta relación es la siguiente:

  1. El nombre del objeto MAP dentro del HSM será el nombre del Alias en el KeyStore;
  2. El nombre de objeto de la primera ranura MAP será el nombre de la clave privada dentro del HSM;
  3. El nombre de objeto de la segunda ranura MAP será el nombre de la cadena de certificados dentro del HSM;

Las cadenas de certificados se aceptan con o sin el certificado principal (certificado relacionado con la propia clave).

Tiendas de llaves

Hay tres tipos de almacén de claves disponibles en JCA/JCE Dinamo, que se describen a continuación.

TAC

Tiene todos los permisos sobre las claves en el HSM, incluyendo eliminar y añadir claves en el HSM.

keystoreintance.getInstance("TAC", "ND")

TACV

TAC Virtual, similar al tipo TAC pero la eliminación de claves es sólo virtual, es decir, las claves sólo se eliminan del almacén de claves y no del HSM.

keystoreintance.getInstance("TACV", "ND")`

TACCON

Se comporta de la misma manera que el tipo TAC, salvo que el identificador de usuario, la contraseña y la dirección IP del HSM deben introducirse en los siguientes formatos usuario:contraseña@IP o accessToken@IP.

Cuando se utiliza nombre de usuario y contraseña, los campos ID de usuario y contraseña son obligatorios.

Al utilizar Fichas de acceso el campo accessToken es obligatorio. O Ficha de acceso es la estructura DN_A_TOKEN en formato Base64; por ejemplo AToken devuelto por HSMCON o el TacAccessToken.getAToken() y transformado en Base64.

La dirección IP del HSM sólo puede omitirse cuando está activo el equilibrio de carga.

Atención

Cuando se utiliza nombre de usuario y contraseña, las dos pestañas : e @ debe utilizarse siempreaunque no se indique la dirección IP del HSM. En el caso de los tokens de acceso @ debe ser siempre usado.

Ex:

keystoreintance.getInstance("TACCON", "ND")
almacén de claves.cargar(null, ("usr:12345678@10.0.62.10").toCharArray())
keyStore.cargar(null, ("usr:12345678@").toCharArray())
keyStore.cargar(null, ("bHVhbgAAAAAAAAAAAAAAAGIwx1mtzLLQ9OkapMIzRrTNxAssvFeUvDh1mO7I4x5xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=?@10.0.62.10").toCharArray())

ECCDHconSHA256KDF

Para utilizar el AcuerdoClave ECCDHconSHA256KDF con JCA DINAMO debe utilizarse para generar Clave secreta el parámetro spec DNECDHX963EspecParámetros.

Constructor 1

Para inicializar DNECDHX963EspecParámetros se pueden utilizar los siguientes parámetros.

Genera una clave persistente y exportable.

  • kdfData KDF utilizado para generar la clave.
  • keyLen Tamaño de la clave, en bits, que se generará en KeyAgreement.generateSecret(). El tamaño de la clave debe ser compatible con el algoritmo pasado en KeyAgreement .generateSecret().
    público DNECDHX963EspecParámetro(byte[] kdfData, int keyLen );

Constructor 2

Inicializa los parámetros del algoritmo ECDH X9.63, que se utilizarán en la clase KeyAgreement.

  • kdfData KDF utilizado para generar la clave.
  • keyLen Tamaño de la clave, en bits, que se generará en KeyAgreement.generateSecret(). El tamaño de la clave debe ser compatible con el algoritmo pasado en KeyAgreement.generateSecret().
  • exportable Informa de si la clave generada será exportable o no. Introduzca true para exportable y false para no exportable.
  • temporary Informa de si la clave generada será temporal o no. Introduzca true para temporal y false para persistente.

java public DNECDHX963ParameterSpec(byte[] kdfData, int keyLen, boolean exportable, boolean temporary);