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.
Categoría | Función de PKCS #11 | ¿Se ha implementado? (Sí o no) | Descripción |
---|---|---|---|
Finalidad general | C_Initialize | Sí | Inicializa Cryptoki. |
Finalidad general | C_Finalize | Sí | Limpia los recursos varios asociados con Cryptoki. |
Finalidad general | C_GetInfo | Sí | Obtiene información general a través de Cryptoki. |
Finalidad general | C_GetFunctionList | Sí | Obtiene puntos de entrada de las funciones de biblioteca de Cryptoki. |
Gestión de ranuras y señales | C_GetSlotList | Sí | Obtiene una lista de ranuras en el sistema. |
Gestión de ranuras y señales | C_GetSlotInfo | Sí | Obtiene información sobre una ranura en particular. |
Gestión de ranuras y señales | C_GetTokenInfo | Sí | 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 | Sí | Obtiene una lista de los mecanismos soportados por una señal. |
Gestión de ranuras y señales | C_GetMechanismInfo | Sí | Obtiene información sobre un mecanismo en particular. |
Gestión de ranuras y señales | C_InitToken | Sí | Inicializa una señal. |
Gestión de ranuras y señales | C_InitPIN | Sí | Inicializa el PIN de usuario normal. |
Gestión de ranuras y señales | C_SetPIN | Sí | Modifica el PIN del usuario actual. |
Gestión de sesiones | C_OpenSession | Sí | 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 | Sí | Cierra una sesión. |
Gestión de sesiones | C_CloseAllSessions | Sí | Cierra todas las sesiones con una señal. |
Gestión de sesiones | C_GetSessionInfo | Sí | Obtiene información sobre la sesión. |
Gestión de sesiones | C_GetOperationState | Sí | Obtiene el estado de las operaciones criptográficas de una sesión. |
Gestión de sesiones | C_SetOperationState | Sí | Defina el estado de las operaciones criptográficas de una sesión. |
Gestión de sesiones | C_Login | Sí | Inicia sesión en una señal. |
Gestión de sesiones | C_Logout | Sí | Finaliza la sesión de una señal. |
Gestión de objetos | C_CreateObject | Sí1 | Crea un objeto. |
Gestión de objetos | C_CopyObject | Sí | Crea una copia de un objeto. |
Gestión de objetos | C_DestroyObject | Sí | Destruye un objeto. |
Gestión de objetos | C_GetObjectSize | Sí | Obtiene el tamaño de un objeto en bytes. |
Gestión de objetos | C_GetAttributeValue | Sí | Obtiene un valor de atributo de un objeto. |
Gestión de objetos | C_SetAttributeValue | Sí | Modifica un valor de atributo de un objeto. Sólo se pueden modificar los atributos booleanos. |
Gestión de objetos | C_FindObjectsInit | Sí | Inicializa una operación de búsqueda de objetos. |
Gestión de objetos | C_FindObjects | Sí | Continúa una operación de búsqueda de objetos. |
Gestión de objetos | C_FindObjectsFinal | Sí | Finaliza una operación de búsqueda de objetos. |
Cifrado | C_EncryptInit | Sí | Inicializa una operación de cifrado. |
Cifrado | C_Encrypt | Sí | Cifra los datos de una sola parte. |
Cifrado | C_EncryptUpdate | Sí | Continúa una operación de cifrado de varias partes. |
Cifrado | C_EncryptFinal | Sí | Finaliza una operación de cifrado de varias partes. |
Descifrado | C_DecryptInit | Sí | Inicializa una operación de descifrado. |
Descifrado | C_Decrypt | Sí | Descifra datos cifrados de una sola parte. |
Descifrado | C_DecryptUpdate | Sí | Continúa una operación de descifrado de varias partes. |
Descifrado | C_DecryptFinal | Sí | Finaliza una operación de descifrado de varias partes. |
Resumen de mensajes | C_DigestInit | Sí | Inicializa una operación de resumen de mensajes. |
Resumen de mensajes | C_Digest | Sí | 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 | Sí | 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 | Sí | Finaliza una operación de resumen de varias partes. |
Firma y MACing | C_SignInit | Sí | Inicializa una operación de firma. |
Firma y MACing | C_Sign | Sí | Firma datos de una sola parte. |
Firma y MACing | C_SignUpdate | Sí | Continúa una operación de firma de varias partes. |
Firma y MACing | C_SignFinal | Sí | 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 | Sí | Inicializa una operación de verificación. |
Verificación de firmas y MAC | C_Verify | Sí | Verifica una firma en datos de una sola parte. |
Verificación de firmas y MAC | C_VerifyUpdate | Sí | Continúa una operación de verificación de varias partes. |
Verificación de firmas y MAC | C_VerifyFinal | Sí | 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 | Sí | Continúa las operaciones simultáneas de resumen y cifrado de varias partes. |
Funciones criptográficas de doble finalidad | C_DecryptDigestUpdate | Sí | Continúa las operaciones simultáneas de descifrado y resumen de varias partes. |
Funciones criptográficas de doble finalidad | C_SignEncryptUpdate | Sí | Continúa las operaciones simultáneas de firma y cifrado de varias partes. |
Funciones criptográficas de doble finalidad | C_DecryptVerifyUpdate | Sí | Continúa las operaciones simultáneas de descifrado y verificación de varias partes. |
Gestión de claves | C_GenerateKey | Sí | Genera una clave secreta. |
Gestión de claves | C_GenerateKeyPair | Sí | Genera un par de claves públicas o privadas. |
Gestión de claves | C_WrapKey | Sí | Envuelve (cifra) una clave. |
Gestión de claves | C_UnwrapKey | Sí | Desenvuelve (descifra) una clave. |
Gestión de claves | C_DeriveKey | Sí | 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 | Sí | 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.
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_DecryptUpdate
y 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.
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.
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) |
|
CKM_EC_KEY_PAIR_GEN | Curvas de agrupación cerebral regular(BP) |
|
CKM_EC_KEY_PAIR_GEN | Curvas de agrupación de cerebros retorcidos(BP) |
|
CKM_EC_KEY_PAIR_GEN | Curvas SEC(Standards for Eficiente Cryptography) |
|
CKM_EC_KEY_PAIR_GEN | Curvas de Edwards |
|
CKM_EC_KEY_PAIR_GEN | Curvas de Edwards |
|
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.
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) |
|
SLIP10 | CKM_IBM_BTC_XX_ENCODE_CASE_ONE derivE | Curvas del Instituto Nacional de Estándares y Tecnología(NIST) |
|
SLIP10 | CKM_IBM_BTC_XX_ENCODE_CASE_ONE derivE | Curvas SEC(Standards for Eficiente Cryptography) |
|
SLIP10 | CKM_IBM_BTC_XX_ENCODE_CASE_ONE derivE | Curvas de Edwards |
|
EdDSA | CKM_IBM_ED25519_SHA512 | Curvas de Edwards |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Curvas SEC(Standards for Eficiente Cryptography) |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Curvas del Instituto Nacional de Estándares y Tecnología(NIST) |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Curvas de agrupación cerebral regular(BP) |
|
Schnorr | CKM_IBM_ECDSA_OTHER | Curvas de agrupación de cerebros retorcidos(BP) |
|
Schnorr | ECSG_IBM_ECSDSA_S256 |
|
|
Schnorr-Zilliqa | ECSG_IBM_ECSDSA_COMPR_MULTI |
|
Referencia de API de PKCS #11 estándar
Para revisar la documentación estándar de PKCS #11, consulte: