Ir al contenido

R3 Corda

Información general

Corda Esta guía del usuario integrada con el software R3 se ha preparado utilizando las versiones de software y firmware que se indican a continuación: - SO Windows 10 (Español) Corda - R3 4.7 - FirmwareHSM: 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

Aplicación

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

Visión general

Corda El proveedor de cifrado 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 WRAPPEDCorda que es el modo más seguro disponible en .

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.

CordaAlgunos ejemplos de alias de :

  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. Corda La solución es una transformación de los alias pasados por :

  1. CordaHacer un hash MD5 de los alias pasados por ;
  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. Corda Este es el modo utilizado en el ejemplo de . 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. Dinamo El nombre del servicio Crypto es:

DINAMO

En los archivos de configuración corda

freshIdentitiesConfiguration {
    mode="WRAPPED"
    cryptoServiceConfiguration {
       cryptoServiceName="DINAMO"
       cryptoServiceConf="dinamo.conf"
    }
    masterKeyAlias="master_key"
}

El fichero 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 cordacordacorda hsm.config.file=C:-4.7-full-release -4.7-full-release -4.7-full-release -4.7-full-release -4.7-full-release -4.7-full-release -4.7-full-release -4.7-full-release

  • 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.

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

  • 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 SLF4JCordaigual que . Corda La configuración para la generación de registros se realiza del mismo modo que . 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

Corda Las pruebas de compatibilidad 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 cordacorda.\repository\com\r3\ \ -hsm-tck\4.7; - Se ejecuta con el comando cordajava -jar -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:

    Dinamo02 después de instalar y configurar JCA :

    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.

    supportedSchemes: ["RSA_SHA256", "ECDSA_SECP256R1_SHA256", "ECDSA_SECP256K1_SHA256"]
    
    supportedSchemesForWrappingOperations: ["RSA_SHA256", "ECDSA_SECP256R1_SHA256", "ECDSA_SECP256K1_SHA256"]
    
    supportedWrappingMode: WRAPPED
    
    sessionInactivityTimeoutMinutes: 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; - cordac:\ .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.