IBM Cloud Docs
Operaciones criptográficos: API de PKCS #11

Operaciones criptográficos: API de PKCS #11

IBM Cloud® Hyper Protect Crypto Services proporciona un conjunto de funciones de criptografía que se ejecutan en un Módulo de seguridad de hardware(HSM)A physical appliance that provides on-demand encryption, key management, and key storage as a managed service. en la nube. Puede realizar operaciones criptográficas accediendo a una biblioteca de PKCS #11 que se escribe en el estándar PKCS #11. PKCS #11 es un estándar que especifica una interfaz de programación de aplicaciones (API), denominada Cryptoki, para los dispositivos que contienen información criptográfica y realizan funciones criptográficas.

Para más información sobre PKCS #11, consulte Introducción de PKCS #11.

Instalación y configuración de la biblioteca de PKCS #11

Para realizar una llamada de API PKCS #11 , primero debe instalar la biblioteca PKCS #11y, a continuación, configurar los tipos de usuario PKCS #11.

Los nombres de archivo de biblioteca utilizan el convenio de denominación: pkcs11-grep11-<**platform**>.so.<**version**>. La plataforma es amd64 o s390x y la versión es la sintaxis major.minor.build estándar. Después de descargar la biblioteca, mueva la biblioteca a una carpeta a la que puedan acceder sus aplicaciones. Por ejemplo, si ejecuta la aplicación en Linux®, puede mover la biblioteca a /usr/local/lib, /usr/local/lib64 o /usr/lib.

Para acceder a la API PKCS #11 , configure la biblioteca PKCS #11 estableciendo el punto final de API y la clave de API en el archivo de configuración grep11client.yaml. Y, a continuación, inicialice la biblioteca. Para obtener instrucciones detalladas, consulte Realización de operaciones criptográficas con la API de PKCS #11.

Si está ejecutando una aplicación Java PKCS #11 utilizando el proveedor SunPKCS11 en la plataforma IBM Z (s390x), asegúrese de que utiliza la JVM Semeru de IBM más reciente y especifique la opción -Xjit:noResumableTrapHandler Java al iniciar la aplicación. Puede descargar la última versión de s390x de la JVM de IBM Semeru cambiando el campo de filtro Arquitectura a s390x en la página de descargas de tiempo de ejecución deIBM Semeru.

Manejo de errores

La API PKCS #11 de Hyper Protect Crypto Services sigue el método estándar de PKCS #11 Cryptographic Token Interface para el manejo de errores.

Verificar que las claves estén protegidas por unidades criptográficas

La API de PKCS #11 funciona con objetos de clave generados que se pueden almacenar, actualizar y recuperar desde un almacén de claves remoto en IBM Cloud. Como un nivel protección adicional, también se pueden comprobar los objetos de claves que se almacenan en IBM Cloud para asegurarse de que no se lleva a cabo ninguna manipulación indebida.

Cada clave simétrica generada, derivada o desenvuelta contiene una huella dactilar digital que se almacena en un atributo de clave denominado CKA_CHECK_VALUE. Este atributo es una suma de comprobación de 3 bytes para el propio objeto de clave.

Después de generar, derivar o desenvolver un objeto de clave, se le recomienda que almacene el valor de la suma de comprobación inicial (el contenido del atributo CKA_CHECK_VALUE) junto con cualquier identificador exclusivo del objeto de clave por separado. Se pueden utilizar las sumas de comprobación almacenadas por separado para verificar si se han manipulado indebidamente las claves.

Para verificar una clave, realice una operación de cifrado del libro de códigos electrónico (ECB) de un único bloque de bytes nulos (0x00) utilizando la clave que se va a verificar. Si los primeros 3 bytes del cifrado resultante son idénticos al valor del atributo de clave CKA_CHECK_VALUE que se ha almacenado localmente para la misma clave, significa que el objeto de clave no se ha manipulado indebidamente. El atributo de clave CKA_CHECK_VALUE no se puede utilizar para obtener ninguna parte del valor de la clave.

Aquípuede encontrar un ejemplo de cómo recuperar valores de suma de comprobación para las claves AES, DES2y DES3 junto con la verificación de las sumas de comprobación de clave.

Lista de funciones de PKCS #11

El estándar de PKCS #11 define una API denominada Cryptoki. La siguiente tabla lista las funciones y descripciones de API de PKCS #11 Cryptoki.

No todas las funciones de PKCS #11 están implementadas por Hyper Protect Crypto Services. Las funciones implementadas se marcan con Yes en la tabla.

Tabla 1. Describe las funciones PKCS #11 implementadas por el programa de fondo de servicio
Categoría Función de PKCS #11 ¿Se ha implementado? (Sí o no) Descripción
Finalidad general C_Initialize Inicializa Cryptoki.
Finalidad general C_Finalize Limpia los recursos varios asociados con Cryptoki.
Finalidad general C_GetInfo Obtiene información general a través de Cryptoki.
Finalidad general C_GetFunctionList Obtiene puntos de entrada de las funciones de biblioteca de Cryptoki.
Gestión de ranuras y señales C_GetSlotList Obtiene una lista de ranuras en el sistema.
Gestión de ranuras y señales C_GetSlotInfo Obtiene información sobre una ranura en particular.
Gestión de ranuras y señales C_GetTokenInfo Obtiene información sobre una señal en particular.
Gestión de ranuras y señales C_WaitForSlotEvent No Espera a que se genere un suceso de ranura (inserción de señal, eliminación, etc.).
Gestión de ranuras y señales C_GetMechanismList Obtiene una lista de los mecanismos soportados por una señal.
Gestión de ranuras y señales C_GetMechanismInfo Obtiene información sobre un mecanismo en particular.
Gestión de ranuras y señales C_InitToken Inicializa una señal.
Gestión de ranuras y señales C_InitPIN Inicializa el PIN de usuario normal.
Gestión de ranuras y señales C_SetPIN Modifica el PIN del usuario actual.
Gestión de sesiones C_OpenSession Abre una conexión entre una aplicación y una señal en particular o configurar una devolución de llamada de aplicación para la inserción de señales.
Gestión de sesiones C_CloseSession Cierra una sesión.
Gestión de sesiones C_CloseAllSessions Cierra todas las sesiones con una señal.
Gestión de sesiones C_GetSessionInfo Obtiene información sobre la sesión.
Gestión de sesiones C_GetOperationState Obtiene el estado de las operaciones criptográficas de una sesión.
Gestión de sesiones C_SetOperationState Defina el estado de las operaciones criptográficas de una sesión.
Gestión de sesiones C_Login Inicia sesión en una señal.
Gestión de sesiones C_Logout Finaliza la sesión de una señal.
Gestión de objetos C_CreateObject 1 Crea un objeto.
Gestión de objetos C_CopyObject Crea una copia de un objeto.
Gestión de objetos C_DestroyObject Destruye un objeto.
Gestión de objetos C_GetObjectSize Obtiene el tamaño de un objeto en bytes.
Gestión de objetos C_GetAttributeValue Obtiene un valor de atributo de un objeto.
Gestión de objetos C_SetAttributeValue Modifica un valor de atributo de un objeto. Sólo se pueden modificar los atributos booleanos.
Gestión de objetos C_FindObjectsInit Inicializa una operación de búsqueda de objetos.
Gestión de objetos C_FindObjects Continúa una operación de búsqueda de objetos.
Gestión de objetos C_FindObjectsFinal Finaliza una operación de búsqueda de objetos.
Cifrado C_EncryptInit Inicializa una operación de cifrado.
Cifrado C_Encrypt Cifra los datos de una sola parte.
Cifrado C_EncryptUpdate Continúa una operación de cifrado de varias partes.
Cifrado C_EncryptFinal Finaliza una operación de cifrado de varias partes.
Descifrado C_DecryptInit Inicializa una operación de descifrado.
Descifrado C_Decrypt Descifra datos cifrados de una sola parte.
Descifrado C_DecryptUpdate Continúa una operación de descifrado de varias partes.
Descifrado C_DecryptFinal Finaliza una operación de descifrado de varias partes.
Resumen de mensajes C_DigestInit Inicializa una operación de resumen de mensajes.
Resumen de mensajes C_Digest Resume los datos de una sola parte. La longitud de los datos de entrada no puede ser cero y el puntero que apunta a la ubicación de datos de entrada no puede ser NULL.
Resumen de mensajes C_DigestUpdate Continúa una operación de resumen de varias partes. La longitud de los datos de entrada no puede ser cero y el puntero que apunta a la ubicación de datos de entrada no puede ser NULL.
Resumen de mensajes C_DigestKey No Resume una clave.
Resumen de mensajes C_DigestFinal Finaliza una operación de resumen de varias partes.
Firma y MACing C_SignInit Inicializa una operación de firma.
Firma y MACing C_Sign Firma datos de una sola parte.
Firma y MACing C_SignUpdate Continúa una operación de firma de varias partes.
Firma y MACing C_SignFinal Finaliza una operación de firma de varias partes.
Firma y MACing C_SignRecoverInit No Inicializa una operación de firma, donde los datos se recuperan de la firma.
Firma y MACing C_SignRecover No Firma datos de una sola parte, donde los datos se recuperan de la firma.
Verificación de firmas y MAC C_VerifyInit Inicializa una operación de verificación.
Verificación de firmas y MAC C_Verify Verifica una firma en datos de una sola parte.
Verificación de firmas y MAC C_VerifyUpdate Continúa una operación de verificación de varias partes.
Verificación de firmas y MAC C_VerifyFinal Finaliza una operación de verificación de varias partes.
Verificación de firmas y MAC C_VerifyRecoverInit No Inicializa una operación de verificación en la que los datos se recuperan de la firma.
Verificación de firmas y MAC C_VerifyRecover No Verifica una firma en datos de una sola parte, donde los datos se recuperan de la firma.
Funciones criptográficas de doble finalidad C_DigestEncryptUpdate Continúa las operaciones simultáneas de resumen y cifrado de varias partes.
Funciones criptográficas de doble finalidad C_DecryptDigestUpdate Continúa las operaciones simultáneas de descifrado y resumen de varias partes.
Funciones criptográficas de doble finalidad C_SignEncryptUpdate Continúa las operaciones simultáneas de firma y cifrado de varias partes.
Funciones criptográficas de doble finalidad C_DecryptVerifyUpdate Continúa las operaciones simultáneas de descifrado y verificación de varias partes.
Gestión de claves C_GenerateKey Genera una clave secreta.
Gestión de claves C_GenerateKeyPair Genera un par de claves públicas o privadas.
Gestión de claves C_WrapKey Envuelve (cifra) una clave.
Gestión de claves C_UnwrapKey Desenvuelve (descifra) una clave.
Gestión de claves C_DeriveKey Deriva una clave de una clave base.
Generación de números aleatorios C_SeedRandom No Añade material de inicio al generador de números aleatorios.
Generación de números aleatorios C_GenerateRandom Genera datos aleatorios. La longitud de los datos aleatorios no puede ser cero y el valor del puntero que apunta a la ubicación de los datos aleatorios no puede ser NULL.
Gestión de funciones paralelas C_GetFunctionStatus No Función heredada que siempre devuelve CKR_FUNCTION_NOT_PARALLEL.
Gestión de funciones paralelas C_CancelFunction No Función heredada que siempre devuelve CKR_FUNCTION_NOT_PARALLEL.

1: La implementación actual de la función C_CreateObject da soporte a objetos de clave secreta, objetos de clave privada, objetos de clave pública, objetos de datos, objetos de certificado de clave pública X.509, objetos de certificado de clave pública WTLS y objetos de certificado de atributo X.509.

Mecanismos soportados

Un mecanismo se conoce como un proceso para implementar una operación criptográfica. Puede variar en función del nivel de firmware en la tarjeta criptográfica. La tabla siguiente muestra los mecanismos soportados y cómo se relacionan con las categorías de funciones de Cryptoki comunes.

Tabla 2. Describe los mecanismos PKCS #11 soportados
Grupo de funciones Mecanismos soportados
Cifrar y descifrar. CKM_RSA_PKCS1, CKM_RSA_PKCS_OAEP1, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Firmar y verificar. CKM_RSA_PKCS1, CKM_RSA_PKCS_PSS1, CKM_RSA_X9_311, CKM_SHA1_RSA_PKCS, CKM_SHA256_RSA_PKCS, CKM_SHA224_RSA_PKCS, CKM_SHA384_RSA_PKCS, CKM_SHA512_RSA_PKCS, CKM_SHA1_RSA_PKCS_PSS, CKM_SHA224_RSA_PKCS_PSS, CKM_SHA256_RSA_PKCS_PSS, CKM_SHA384_RSA_PKCS_PSS, CKM_SHA512_RSA_PKCS_PSS, CKM_SHA1_RSA_X9_31, CKM_DSA1, CKM_DSA_SHA1, CKM_ECDSA1, CKM_ECDSA_SHA1, CKM_ECDSA_SHA224, CKM_ECDSA_SHA256, CKM_ECDSA_SHA384, CKM_ECDSA_SHA512, CKM_SHA1_HMAC, CKM_SHA256_HMAC, CKM_SHA384_HMAC, CKM_SHA512_HMAC, CKM_SHA512_224_HMAC, CKM_SHA512_256_HMAC, CKM_IBM_ED25519_SHA512, CKM_IBM_ED448_SHA3, CKM_IBM_DILITHIUM2
Resumen. CKM_SHA_1, CKM_SHA224, CKM_SHA256, CKM_SHA384, CKM_SHA512, CKM_SHA512_224, CKM_SHA512_256
Generar clave o generar par de claves. CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_RSA_X9_31_KEY_PAIR_GEN, CKM_DSA_KEY_PAIR_GEN, CKM_DSA_PARAMETER_GEN, CKM_EC_KEY_PAIR_GEN (CKM_ECDSA_KEY_PAIR_GEN), CKM_DH_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_PARAMETER_GEN, CKM_GENERIC_SECRET_KEY_GEN, CKM_AES_KEY_GEN, CKM_DES2_KEY_GEN, CKM_DES3_KEY_GEN, CKM_IBM_DILITHIUM
Envolver y desenvolver. CKM_RSA_PKCS, CKM_RSA_PKCS_OAEP, CKM_AES_ECB, CKM_AES_CBC, CKM_AES_CBC_PAD, CKM_DES3_ECB, CKM_DES3_CBC, CKM_DES3_CBC_PAD
Derivar. CKM_ECDH1_DERIVE, CKM_DH_PKCS_DERIVE, CKM_DES3_ECB_ENCRYPT_DATA, CKM_SHA1_KEY_DERIVATION, CKM_SHA224_KEY_DERIVATION, CKM_SHA256_KEY_DERIVATION, CKM_SHA384_KEY_DERIVATION, CKM_SHA512_KEY_DERIVATION, CKM_IBM_BTC_DERIVE

1: este mecanismo sólo da soporte a operaciones de una sola parte que no pueden utilizar ninguna de las funciones de Actualización de Cryptotoki, como C_EncryptUpdate, C_DecryptUpdatey C_DigestUpdate.

2: Este mecanismo no está soportado por la tarjeta criptográfica IBM 4768 y no está disponible para las operaciones de C_SignUpdate y C_VerifyUpdate.

Atributos y tipos de claves soportados

Los atributos de PKCS #11 definen características de objeto que configuran cómo se puede utilizar y acceder a un objeto. En la tabla siguiente se muestran los atributos soportados y su relación con los distintos tipos de claves soportados.

Tabla 3. Atributos y tipos de claves soportados
Atributo Descripción Tipos de claves soportados
BASE de CKA Parámetro de dominio DSA y se utiliza para C_CreateObject. Base g. claves privadas DSA, claves públicas DSA
CATEGORÍA_CERTIFICADO_CKA Se utiliza para indicar si un certificado almacenado es un certificado de usuario para el que la clave privada correspondiente está disponible en la señal ("usuario de señal"), un certificado de CA ("autoridad")u otro certificado de entidad final ("otra entidad"). El valor predeterminado es CK_CERTIFICATE_CATEGORY_UNSPECIFIED. No aplicable
TIPO_CERTIFICADO_CKA_ Debe especificarse cuando se crea el objeto de certificado con C_CreateObject. Los tipos de certificado son clave pública X.509, certificado de clave pública WTLS y certificado de atributo X.509. No aplicable
CKA_CHECK_VALUE Suma de comprobación de la clave o el certificado. Claves AES, claves DES
CKA_CLASS Clase de objeto (tipo) y es común para todos los objetos. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
COEFICIENTES Se utiliza para C_CreatObject. Claves privadas RSA
CKA_COPYABLE Si se establece en CKA_TRUE, el objeto se puede copiar utilizando C_CopyObject. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_DECRYPT CK_TRUE si la clave da soporte al descifrado. Claves privadas EC, claves privadas RSA, claves privadas DH, claves privadas DSA, claves AES, claves DES, claves genéricas
CKA_DERIVE CK_TRUE si la clave da soporte a la derivación de claves (otras claves se pueden derivar de esta clave). El valor predeterminado es CK_FALSE. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_EC_PARAMS (CKA_ECDSA_PARAMS) Codificación DER de un valor de parámetros ANSI X9.62. Claves privadas CE, claves públicas CE
CKA_EC_POINT Codificación DER del valor Q de ANSI X9.62 ECPoint. Claves públicas de CE
CKA_ENCRYPT CK_TRUE si la clave da soporte al cifrado. Claves públicas EC, claves públicas RSA, claves públicas DH, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_END_DATE Fecha de finalización del certificado o la clave. El valor predeterminado está vacío. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_EXTRACTABLE CK_TRUE si la clave es extraíble y se puede encapsular. Claves privadas EC, claves privadas RSA, claves privadas DH, claves privadas DSA, claves AES, claves DES, claves genéricas
CKA_EXPONENT_1 Se utiliza para C_CreateObject. Exponente privado d módulo q-1. Claves privadas RSA
CKA_EXPONENT_2 Se utiliza para C_CreateObject. Coeficiente CRT q-1 módulo p. Claves privadas RSA
CKA_HASH_OF_ISSUER_PUBLIC_KEY Hash de la clave pública del emisor para un certificado. El valor predeterminado está vacío. No aplicable
CKA_HASH_OF_SUBJECT_PUBLIC_KEY Hash de la clave pública del asunto para un certificado. El valor predeterminado está vacío. No aplicable
CKA_IBM_PQC_PARAMS Parámetros de soporte para mecanismos de criptografía postcuántica. En el caso del mecanismo de Dilithium CKM_IBM_DILITHIUM, proporciona un identificador de objeto convertido (OID) que representa la intensidad del algoritmo Dilithium que se va a utilizar. Actualmente, solo se admite la fuerza de Dilithium 4 round 2. Claves de Dilithium
CKA_IBM_USE_AS_DATA Un objeto se utiliza para operaciones de derivación de clave o hash cuando CK_TRUE Claves privadas CE, claves públicas CE
CKA_ID Identificador de clave para el par de claves pública o privada o clave. El valor predeterminado está vacío. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
EMISOR Codificación DER del nombre del emisor del certificado. El valor predeterminado está vacío. No aplicable
_XX_ENCODE_CASE_ONE cka_java_midp_security_domain Dominio de seguridad Java MIDP para un certificado. El valor predeterminado es CK_SECURITY_DOMAIN_UNSPECIFIED. No aplicable
CKA_KEY_TYPE Tipo de clave. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_LABEL Descripción del objeto. El valor predeterminado está vacío. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_LOCAL CK_TRUE solo si la clave se ha generado localmente (en la señal) con una llamada C_GenerateKey o C_GenerateKeyPair o se ha creado con una llamada C_CopyObject como una copia de una clave con el atributo CKA_LOCAL establecido en CK_TRUE. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_MODIFIABLE Establézcalo en CK_TRUE si el objeto se puede modificar. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_MODULUS Módulo n. Claves privadas RSA
CKA_MODULUS_BITS Longitud en bits del módulo n. Claves públicas RSA
NOMBRE_CK_HASH_ALGORITHM Define el mecanismo utilizado para calcular el hash de las claves públicas de sujeto y emisor para un certificado. El valor predeterminado es SHA-1. No aplicable
CKA_PRIME Parámetro de dominio DSA y se utiliza para C_CreateObject. Prime p (512 a 2048 bits en pasos de 64 bits). claves privadas DSA, claves públicas DSA
CKA_PRIME_1 Se utiliza para C_CreateObject. Primo q. Claves privadas RSA
CKA_PRIME_2 Se utiliza para C_CreateObject. Exponente privado d módulo p-1. Claves privadas RSA
CKA_PRIVATE CK_TRUE si el objeto es un objeto privado; CK_FALSE si el objeto es un objeto público. El valor predeterminado es específico de la señal y puede depender de los valores de otros atributos del objeto. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
EXPONENTE_PRIVATE_CKA_ Se utiliza para C_CreateObject. Primo p. Claves privadas RSA
CKA_PUBLIC_EXPONENT Exponente público e. Claves privadas RSA, claves públicas RSA
INFORMACIÓN_CLAVE_PÚBLICA_CKM Codificación DER de SubjectPublicKeyInfo para la clave pública. El valor se deriva de los datos de clave pública subyacentes y está vacío de forma predeterminada. Claves públicas RSA, claves públicas EC, claves públicas Dilithium
CKA_SENSITIVE CK_TRUE si la clave es sensible. Claves privadas EC, claves privadas RSA, claves privadas DH, claves privadas DSA, claves AES, claves DES, claves genéricas
NÚMERO_SERIE_CKA_ Codificación DER del número de serie del certificado. El valor predeterminado está vacío. No aplicable
CKA_SIGN CK_TRUE si la clave da soporte a la firma donde la firma es un apéndice de los datos. Claves privadas EC, claves privadas RSA, claves privadas DH, claves privadas DSA, claves AES, claves DES, claves genéricas
CKA_START_DATE Fecha de inicio para el certificado o la clave. El valor predeterminado está vacío. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_SUBJECT Codificación DER del nombre de certificado o sujeto de clave. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA
CKA_SUBPRIME Parámetro de dominio DSA y se utiliza para C_CreateObject. Subprime q (160 bits para p < = 1024 bits, 224 bits o 256 bits para p > 1024 bits). claves privadas DSA, claves públicas DSA
CKA_TOKEN CK_TRUE si el objeto es un objeto de señal; CK_FALSE si el objeto es un objeto de sesión. Claves privadas EC, claves públicas CE, claves privadas RSA, claves públicas RSA, claves privadas DH, claves públicas DH, claves privadas DSA, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_TRUSTED Se puede confiar en el certificado o la clave para la aplicación que se ha creado. Claves públicas EC, claves públicas RSA, claves públicas DH, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_UNWRAP CK_TRUE si la clave da soporte al desenvolvimiento (se puede utilizar para desenvolver otras claves). Claves privadas EC, claves privadas RSA, claves privadas DH, claves privadas DSA, claves AES, claves DES, claves genéricas
URL_CKA El URL donde se puede obtener el certificado completo. El valor predeterminado está vacío. No aplicable
CKA_VALOR Bytes de certificado codificados o bytes de clave cuando se utiliza C_CreateObject. Claves privadas EC, claves públicas DSA, claves privadas DSA, claves privadas ED25519, claves privadas ED448, claves AES, claves DES
CKA_VALUE_LEN Longitud en bytes del valor de clave. Claves AES
CKA_VERIFY CK_TRUE si la clave da soporte a la verificación donde la firma es un apéndice de los datos. Claves públicas EC, claves públicas RSA, claves públicas DH, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_WRAP CK_TRUE si la clave da soporte al envolmimiento (se puede utilizar para envolver otras claves). Claves públicas EC, claves públicas RSA, claves públicas DH, claves públicas DSA, claves AES, claves DES, claves genéricas
CKA_WRAP_WITH_TRUSTED CK_TRUE si la clave solo puede encapsularse con una clave de encapsulado que tiene CKA_TRUSTED establecido en CK_TRUE. El valor predeterminado es CK_FALSE. Claves privadas EC, claves privadas RSA, claves privadas DH, claves privadas DSA, claves AES, claves DES, claves genéricas
APLICACIÓN DE CKA Descripción de la aplicación que gestiona el objeto (valor predeterminado vacío) No aplicable
ID_OBJE_CKA Codificación DER del identificador de objeto que indica el tipo de objeto de datos (valor predeterminado vacío) No aplicable
PROPIETARIO_GRUPO Codificación DER del campo de sujeto del certificado de atributo. Es distinto del atributo CKA_SUBJECT contenido en los certificados CKC_X_509 porque la codificación y la sintaxis de ASN.1 son diferentes. No aplicable
Emisor CKA_AC_EMISOR Codificación DER del campo de emisor del certificado de atributo. Esto es distinto del atributo CKA_ISSUER contenido en los certificados CKC_X_509 porque la sintaxis y la codificación de ASN.1 son diferentes. (valor predeterminado vacío) No aplicable
TIPOS_ATRIBUTO Codificación BER de una secuencia de valores de identificador de objeto correspondientes a los tipos de atributo contenidos en el certificado. Cuando está presente, este campo ofrece una oportunidad para que las aplicaciones busquen un certificado de atributo determinado sin captar y analizar el propio certificado. (valor predeterminado vacío) No aplicable

Curvas soportadas

La biblioteca de PKCS #11 admite tipos de curvas limitados para determinados mecanismos. En la tabla siguiente se muestran los nombres de curvas soportados para diferentes mecanismos. El número en el nombre de la curva significa el recuento de bits principal soportado.

Curvas soportadas para generar las claves de curva elíptica (EC)

El mecanismo CKM_EC_KEY_PAIR_GEN está soportado cuando se llama a la función C_GenerateKeyPair para generar claves de curva elíptica (EC). Los parámetros de nombre de curva se deben especificar como identificadores de objetos (OID) utilizando CKA_EC_PARAMS. Puede obtener el OID buscando el nombre de curva en el repositorio de OID.

Tabla 4. Tipos de curva soportados para generar claves EC
Mecanismo PKCS #11 Tipos de curva soportados Nombres de curva soportados
CKM_EC_KEY_PAIR_GEN Curvas del Instituto Nacional de Estándares y Tecnología(NIST)
  • P-192, también conocida como secp192r1 y prime192v1.
  • P-224, también conocida como secp224r1.
  • P-256, conocida también como secp256r1 y prime256v1.
  • P-384, también conocida como secp384r1.
  • P-521, también conocida como secp521r.
CKM_EC_KEY_PAIR_GEN Curvas de agrupación cerebral regular(BP)
  • BP-160R, también conocida como brainpoolP160r1.
  • BP-192R, también conocida como brainpoolP192r1.
  • BP-224R, también conocida como brainpool-P224r1.
  • BP-256R, también conocida como brainpoolP256r1.
  • BP-320R, también conocida como brainpoolP320r1.
  • BP-384R, también conocida como brainpoolP384r1.
  • BP-512R, también conocido como brainpoolP512r1.
CKM_EC_KEY_PAIR_GEN Curvas de agrupación de cerebros retorcidos(BP)
  • BP-160T, también conocida como brainpoolP160t1.
  • BP-192T, también conocida como brainpoolP192t1.
  • BP-224T, también conocida como brainpool-P224t1.
  • BP-256T, también conocida como brainpoolP256t1.
  • BP-320T, también conocida como brainpoolP320t1.
  • BP-384T, también conocida como brainpoolP384t1.
  • BP-512T, también conocida como brainpoolP512t1.
CKM_EC_KEY_PAIR_GEN Curvas SEC(Standards for Eficiente Cryptography)
  • secp256k1
CKM_EC_KEY_PAIR_GEN Curvas de Edwards
  • Ed25519
CKM_EC_KEY_PAIR_GEN Curvas de Edwards
  • Ed448

Curvas soportadas para cifrar activos digitales y generar firmas digitales

Las curvas siguientes están soportadas para los mecanismos relacionados con el activo digital y la firma digital.

Tabla 5. Tipos de curva soportados para cifrar activos digitales y firmas
Estándar o esquema Mecanismo PKCS #11 Tipos de curva soportados Nombres de curva soportados
BIP32/BIP44 CKM_IBM_BTC_XX_ENCODE_CASE_ONE derivE Curvas SEC(Standards for Eficiente Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_XX_ENCODE_CASE_ONE derivE Curvas del Instituto Nacional de Estándares y Tecnología(NIST)
  • P-256, también conocido como secp256r1 y prime256v1
SLIP10 CKM_IBM_BTC_XX_ENCODE_CASE_ONE derivE Curvas SEC(Standards for Eficiente Cryptography)
  • secp256k1
SLIP10 CKM_IBM_BTC_XX_ENCODE_CASE_ONE derivE Curvas de Edwards
  • Ed25519
EdDSA CKM_IBM_ED25519_SHA512 Curvas de Edwards
  • Ed25519
Schnorr CKM_IBM_ECDSA_OTHER Curvas SEC(Standards for Eficiente Cryptography)
  • secp256k1
Schnorr CKM_IBM_ECDSA_OTHER Curvas del Instituto Nacional de Estándares y Tecnología(NIST)
  • P-256, también conocido como secp256r1 y prime256v1
Schnorr CKM_IBM_ECDSA_OTHER Curvas de agrupación cerebral regular(BP)
  • BP-256R, también conocido como brainpoolP256r1
Schnorr CKM_IBM_ECDSA_OTHER Curvas de agrupación de cerebros retorcidos(BP)
  • BP-256T, también conocido como brainpoolP256t1
Schnorr ECSG_IBM_ECSDSA_S256
  • secp256r1
  • secp256k1
  • BP-256R, también conocido como brainpoolP256r1
  • BP-256T, también conocido como brainpoolP256t1
Schnorr-Zilliqa ECSG_IBM_ECSDSA_COMPR_MULTI
  • secp256r1
  • secp256k1
  • BP-256R, también conocido como brainpoolP256r1
  • BP-256T, también conocido como brainpoolP256t1

Referencia de API de PKCS #11 estándar

Para revisar la documentación estándar de PKCS #11, consulte: