Ir al contenido

R3 Corda

Información general

Esta guía del usuario integrada con el software R3 Corda se ha preparado utilizando las versiones de software y firmware que se indican a continuación: - SO Windows 10 (Español) - R3 Corda 4.7 - Firmware HSM: 5.0.26.0 (o superior) - Cliente HSM: 4.7.30 (o superior)

Requisitos

  1. Conectividad con el HSM (puerto TCP 4433).
  2. Software cliente HSM instalado (véase el tema Instalación).
  3. Servicio HSM iniciado.
  4. Credenciales de la partición HSM donde se creará o utilizará la clave privada.

Integración R3 Corda con HSM

Aplicación

El proveedor de cifrado Corda devuelve objetos JCA que se utilizan externamente. Por tanto, el paso inicial es configurar esta API de integración para conectar con el HSM. Para obtener más detalles sobre la API JCA/JCE del HSM, consulta el tema JCA/JCE.

Visión general

El proveedor de cifrado Corda utiliza dos tipos de claves: 1. simétricas 1. asimétrica

Las claves asimétricas están protegidas por la clave simétrica( wrapping) y se almacenan externamente al HSM. La clave simétrica, denominada clave envolvente, se guarda en el HSM y no se exporta (no existe tal opción en la interfaz del proveedor).

El proveedor implementa, y es llamado para ejecutar, las siguientes operaciones:

  • Generar KEK(clave envolvente);
  • Generar clave privada;
  • Exportar clave privada cifrada por KEK;
  • Exportar clave pública;
  • Eliminar la clave privada del HSM;
  • Firma;

El proveedor Dinamo Corda implementa WRAPPED que es el modo más seguro disponible en Corda.

Existen dos modos de funcionamiento. En ambos modos, la clave simétrica se genera y se mantiene en el HSM y la clave asimétrica se almacena fuera del HSM. La diferencia radica en el tratamiento de la clave asimétrica.

  1. Envuelta: Genera y utiliza la clave privada dentro del HSM. La clave fuera del HSM siempre está cifrada por la KEK(clave envolvente).

  2. Modo Degradado Envuelto: Genera y utiliza la clave privada fuera del HSM. La clave se genera y utiliza en la memoria de la aplicación. Sólo entra en el HSM para ser cifrada/descifrada por la KEK(clave envolvente).

Nombres clave

Los alias de clave no son compatibles con los nombres de objeto de HSM, ya que contienen caracteres no aceptados y suelen ser más largos que el máximo permitido por HSM.

Algunos ejemplos de alias de Corda:

  1. Claves simétricas (clave de envoltura) : a74eb4c1-b4d9-4e1d-9e48-88e6abad7d63
  2. Llaves no persistentes: 2f5f5b11-35bc-4eb3-8f6b-fb4e3d723a26

La abstracción del proveedor permite procesar el nombre de la clave y pasar un nombre compatible al HSM. La solución es una transformación de los alias pasados por Corda:

  1. Hacer un hash MD5 de los alias pasados por Corda;
  2. Transformar en una cadena hexadecimal;

Estos alias transformados se utilizan como alias en las llamadas JCA.

Las transformaciones sólo se realizan en claves no efímeras. En estos casos, el alias original se almacena en los metadatos del objeto, en el atributo label.

Peligro

En caso de error, utilice siempre el nombre del alias original que se recibió como parámetro. Estas cadenas se validan en las pruebas de compatibilidad.

Atributos clave

Los atributos de las claves simétrica y asimétrica se definen en la configuración de JCA. Para más detalles, consulte el tema Configuración.

Tipo de llave Exportable Observaciones
Asimétrico ✔️ Las claves asimétricas se cifran mediante una clave simétrica y se almacenan fuera del HSM. Por tanto, deben poder exportarse. Siempre se exportan.
Simétrico Las claves simétricas se utilizan para proteger claves asimétricas y no salen del HSM. Por tanto, pueden no ser exportables. Este es el modo utilizado en el ejemplo de Corda. No hay ningún obstáculo para cambiar este parámetro.

Peligro

Sólo puede utilizar 01 usuario configurado por aplicación. No utilice varios usuarios en el mismo proceso.

Configuración

Dado que utilizamos la JCA en nuestra implementación, la configuración se realiza a través de la función Configuración.ND de la JCA. Las claves asimétricas deben configurarse como exportables y las simétricas opcionalmente como no exportables. El nombre del servicio Crypto Dinamo es:

DINAMO

En los archivos de configuración corda

freshIdentitiesConfFiguration {
    mode="WRAPPED
    cryptoServiceConfFiguration {
       cryptoServiceName="DINAMO"
       cryptoServiceConf="dinamo.conf"
    }
    perotienenKeyAlias="llave_maestra"
}

El archivo de configuración dinamo.conf puede estar vacío o contener el archivo.config.hsm. El campo archivo.config.hsm debe introducirse en el archivo de configuración de JCA. Introduzca el nombre del archivo con la ruta completa. No utilice comillas " y si Windows utiliza \\ para separar las carpetas.

Ejemplos de contenidos aceptados:

  • ini hsm.config.file=C:corda-4.7-full-release\pository\com\r3\corda\\corda-hsm-tck\4.7\cordaconfidential.nd

  • ini hsm.config.file=

  • Archivo vacío

Configure el archivo de configuración JCA:

  • Marcar las claves asimétricas como exportables;
  • Marcar las claves simétricas como no exportables (opcional).

Ejemplo de configuración de JCA

Ejemplo de configuración de JCA

Peligro

Sólo puede utilizar 01 usuario configurado por aplicación. No utilice varios usuarios en el mismo proceso.

Los archivos JCA y JNI Dinamo pueden estar ubicados en la misma carpeta que el proveedor Corda Dinamo , que es la carpeta del controlador por defecto para Corda o una específica indicada en la configuración Corda.

  • ndjca.jar
  • tancjavalib.jar
  • dinamo_corda.jar

La biblioteca binaria (TacNDJavaLib.so o TacNDJavaLib.dll) debe estar disponible en SENDERO del sistema operativo.

En proveedor Dinamo Corda están disponibles en SLF4Jigual que Corda. La configuración para la generación de registros se realiza del mismo modo que Corda. Es posible que tenga que introducir el spec de proveedor Dinamo Corda. Basta con crear el archivo cordaspec.conf con el contenido que figura a continuación e informe en caso necesario.

Pruebas

Las pruebas de compatibilidad Corda están disponibles en sitio web Corda y puede descargarse tras inscribirse en la versión de prueba. - Descargar el archivo corda-4.7-full-release.tar.gz y descomprímelo; - La prueba está disponible en .\repository\com\r3\corda\corda-hsm-tck\4.7; - Se ejecuta con el comando java -jar corda-hsm-tck-4.7.jar más opciones, que se describen a continuación;

Información

La aplicación de prueba está disponible en deps en corda\4.7\bin

  • Requisitos previos:

    02 después de instalar y configurar JCA Dinamo:

    1. Archivo de configuración del proveedor Dinamo Corda. Llamaremos a este archivo corda.propiedades;
    2. Archivo de especificaciones del proveedor Dinamo Corda. Llamaremos a este archivo cordaspec.conf;

    El archivo de propiedades del proveedor puede configurarse como se describe en la sección Configuración. El archivo de especificaciones debe tener el siguiente contenido.

    soportesoportedEsquemas: ["RSA_SHA256", "ECDSA_SECP256R1_SHA256", "ECDSA_SECP256K1_SHA256"]
    
    supptedSchemesForWrappingOperatons: ["RSA_SHA256", "ECDSA_SECP256R1_SHA256", "ECDSA_SECP256K1_SHA256"]
    
    suppendWrappingMode: WRAPPED
    
    sessionIenctivityTimeotMinutos: 20
    

Ejecución

Para ejecutar la prueba de interfaz, utilice el siguiente comando.

Reemplazar: - c:\cordaprovider: por la ruta de la carpeta que contiene dinamo_corda.jar incluidos los tarros JCA; - c:\corda.properties: por la ruta con el nombre de archivo del archivo de configuración Dinamo Corda; - c:\cordaspec.conf: por la ruta con el nombre de archivo del archivo de especificaciones Dinamo Corda;

Peligro

No utilice rutas relativas, algunas pruebas se ejecutan en carpetas fuera del directorio actual.

java -jar .\corda-hsm-tck-4.7.jar -n "DINAMO" -d "c:\cordaprovider" -r ".\rest-results" -lc "c:\corda.properties" -s "c:\cordaspec.conf" -cc "c:\corda.properties" -tc "c:\corda.properties" -t interface

Se pueden realizar más pruebas cambiando el -t. Ver ayuda.