Operações criptográficas: API PKCS n.º 11

IBM Cloud® Hyper Protect Crypto Services fornece um conjunto de funções de criptografia que são executadas em um Hardware Security Module(HSM)A physical appliance that provides on-demand encryption, key management, and key storage as a managed service. na nuvem. É possível executar operações criptográficas acessando uma biblioteca PKCS n.º 11 que é escrita para o padrão PKCS n.º 11. O PKCS n.º 11 é um padrão que especifica uma interface de programação de aplicativos (API), chamada Cryptoki, para dispositivos que retêm informações de criptografia e executam funções de criptografia.

Para obter mais informações sobre PKCS n.º 11, consulte Apresentando o PKCS n.º 11.

Instalando e configurando a biblioteca PKCS n.º 11

Para executar uma chamada API PKCS #11 , primeiro é necessário instalar a biblioteca PKCS #11e, em seguida, configurar tipos de usuário PKCS #11.

Os nomes dos arquivos de biblioteca usam a convenção de nomenclatura: pkcs11-grep11-<**platform**>.so.<**version**>. A plataforma é a amd64 ou a s390x e a versão é a sintaxe padrão major.minor.build. Após fazer download da biblioteca, mova a biblioteca para uma pasta acessível pelos seus aplicativos. Por exemplo, se você estiver executando o seu aplicativo no Linux®, poderá mover a biblioteca para /usr/local/lib, /usr/local/lib64 ou /usr/lib.

Para acessar a API PKCS #11 , configure a biblioteca PKCS #11 configurando o terminal de API e a chave de API no arquivo de configuração grep11client.yaml. E, em seguida, inicialize a biblioteca. Para obter instruções detalhadas, consulte Executando operações criptográficas com a API do PKCS n.º 11.

Se você estiver executando um aplicativo Java PKCS #11 usando o provedor SunPKCS11 na plataforma IBM Z (s390x), certise-se de usar a mais recente JVM IBM Semeru e especificar a opção -Xjit:noResumableTrapHandler Java ao iniciar sua aplicação. Você pode baixar a versão mais recente do s390x da JVM do IBM Semeru alterando o campo de filtro Architecture para s390x na página IBM Semeru Runtime Downloads.

Manipulação de erros

A API PKCS #11 do Hyper Protect Crypto Services segue o método padrão do PKCS #11 Cryptographic Token Interface para manipulação de erros.

Verificando se as chaves são protegidas por unidades de criptografia

A API do PKCS n° 11 funciona com objetos de chaves gerados que podem ser armazenados, atualizados e recuperados a partir de um keystore remoto em IBM Cloud. Como um nível adicional de proteção, os objetos de chave armazenados no IBM Cloud também podem ser verificados para garantir que não ocorra nenhuma violação.

Toda chave simétrica que é gerada, derivada ou desagrupada contém uma impressão digital que é armazenada em um atributo de chave chamado CKA_CHECK_VALUE. Este atributo é uma soma de verificação de 3 dígitos para o próprio objeto de chave.

Após gerar, derivar ou desagrupar um objeto de chave, sugere-se armazenar o valor da soma de verificação inicial (conteúdos do atributo CKA_CHECK_VALUE) juntamente com quaisquer identificadores exclusivos do objeto de chave separadamente. As somas de verificação armazenadas separadamente podem, então, ser usadas para verificar se as chaves foram, ou não, adulteradas.

Para verificar uma chave, execute uma operação de criptografia de livro de código eletrônico (BCE) de um único bloco de bytes nulos (0x00) usando a chave a ser verificada. Se os primeiros 3 bytes da cifra resultante forem idênticos ao valor do atributo de chave CKA_CHECK_VALUE armazenado localmente para a mesma chave, isso indica que o objeto de chave não foi adulterado. O atributo de chave CKA_CHECK_VALUE não pode ser usado para obter qualquer parte do valor de chave.

Um exemplo de como recuperar valores de soma de verificação para as chaves AES, DES2e DES3 junto com a verificação das somas de verificação de chaves pode ser localizado aqui.

Lista de funções do PKCS n.º 11

O padrão PKCS n.º 11 define uma API chamada Cryptoki. A tabela a seguir lista as funções e descrições da API PKCS n.º 11 Cryptoki.

Nem todas as funções do PKCS n° 11 são implementadas pelo Hyper Protect Crypto Services. As funções implementadas são marcadas com Yes na tabela.

Tabela 1. Descreve as funções PKCS #11 implementadas por backend de serviço
Categoria Função do PKCS n.º 11 Implementada? (Sim ou Não) Descrição
Propósito geral C_Initialize True Inicializa Cryptoki.
Propósito geral C_Finalize True Limpa recursos variados associados do Cryptoki.
Propósito geral C_GetInfo True Obtém informações gerais sobre Cryptoki.
Propósito geral C_GetFunctionList True Obtém pontos de entrada de funções de biblioteca do Cryptoki.
Gerenciamento de slots e tokens C_GetSlotList True Obtém uma lista de intervalos no sistema.
Gerenciamento de slots e tokens C_GetSlotInfo True Obtém informações sobre um intervalo específico.
Gerenciamento de slots e tokens C_GetTokenInfo True Obtém informações sobre um token específico.
Gerenciamento de slots e tokens C_WaitForSlotEvent Não Aguarda um evento de slot (inserção de token, remoção de token e assim por diante) ocorrer.
Gerenciamento de slots e tokens C_GetMechanismList True Obtém uma lista de mecanismos suportados por um token.
Gerenciamento de slots e tokens C_GetMechanismInfo True Obtém informações sobre um mecanismo específico.
Gerenciamento de slots e tokens C_InitToken True Inicializa um token.
Gerenciamento de slots e tokens C_InitPIN True Inicializa o PIN do usuário normal.
Gerenciamento de slots e tokens C_SetPIN True Modifica o PIN do usuário atual.
Gerenciamento de sessões C_OpenSession True Abre uma conexão entre um aplicativo e um token específico ou configura um retorno de chamada de aplicativo para inserção de token.
Gerenciamento de sessões C_CloseSession True Fecha uma sessão.
Gerenciamento de sessões C_CloseAllSessions True Fecha todas as sessões com um token.
Gerenciamento de sessões C_GetSessionInfo True Obtém informações sobre a sessão.
Gerenciamento de sessões C_GetOperationState True Obtém o estado de operações criptográficas de uma sessão.
Gerenciamento de sessões C_SetOperationState True Configura o estado de operações criptográficas de uma sessão.
Gerenciamento de sessões C_Login True Efetua login em um token.
Gerenciamento de sessões C_Logout True Efetua logout de um token.
Gerenciamento de objetos C_CreateObject Sim1 Cria um objeto.
Gerenciamento de objetos C_CopyObject True Cria uma cópia de um objeto.
Gerenciamento de objetos C_DestroyObject True Destrói um objeto.
Gerenciamento de objetos C_GetObjectSize True Obtém o tamanho de um objeto em bytes.
Gerenciamento de objetos C_GetAttributeValue True Obtém um valor de atributo de um objeto.
Gerenciamento de objetos C_SetAttributeValue True Modifica um valor de atributo de um objeto. Apenas atributos booleanos podem ser modificados.
Gerenciamento de objetos C_FindObjectsInit True Inicializa uma operação de procura de objeto.
Gerenciamento de objetos C_FindObjects True Continua uma operação de procura de objeto.
Gerenciamento de objetos C_FindObjectsFinal True Conclui uma operação de procura de objeto.
Criptografia C_EncryptInit True Inicializa uma operação de criptografia.
Criptografia C_Encrypt True Criptografa dados de parte única.
Criptografia C_EncryptUpdate True Continua uma operação de criptografia de múltiplas partes.
Criptografia C_EncryptFinal True Conclui uma operação de criptografia de múltiplas partes.
Decriptografia C_DecryptInit True Inicializa uma operação de decriptografia.
Decriptografia C_Decrypt True Decriptografa dados criptografados de parte única.
Decriptografia C_DecryptUpdate True Continua uma operação de decriptografia de múltiplas partes.
Decriptografia C_DecryptFinal True Conclui uma operação de decriptografia de múltiplas partes.
Digestando Mensagem C_DigestInit True Inicializa uma operação de compilação de mensagem.
Digestando Mensagem C_Digest True Compila dados de parte única. O comprimento dos dados de entrada não pode ser zero e o ponteiro que aponta para o local dos dados de entrada não pode ser NULL.
Digestando Mensagem C_DigestUpdate True Continua uma operação de compilação de múltiplas partes. O comprimento dos dados de entrada não pode ser zero e o ponteiro que aponta para o local dos dados de entrada não pode ser NULL.
Digestando Mensagem C_DigestKey Não Compila uma chave.
Digestando Mensagem C_DigestFinal True Conclui uma operação de compilação de múltiplas partes.
Assinatura e MACing C_SignInit True Inicializa uma operação de assinatura.
Assinatura e MACing C_Sign True Assina dados de parte única.
Assinatura e MACing C_SignUpdate True Continua uma operação de assinatura de múltiplas partes.
Assinatura e MACing C_SignFinal True Conclui uma operação de assinatura de múltiplas partes.
Assinatura e MACing C_SignRecoverInit Não Inicializa uma operação de assinatura na qual os dados são recuperados da assinatura.
Assinatura e MACing C_SignRecover Não Assina dados de parte única, nos quais os dados são recuperados da assinatura.
Verificando assinaturas e MACs C_VerifyInit True Inicializa uma operação de verificação.
Verificando assinaturas e MACs C_Verify True Verifica uma assinatura em dados de parte única.
Verificando assinaturas e MACs C_VerifyUpdate True Continua uma operação de verificação de múltiplas partes.
Verificando assinaturas e MACs C_VerifyFinal True Conclui uma operação de verificação de múltiplas partes.
Verificando assinaturas e MACs C_VerifyRecoverInit Não Inicializa uma operação de verificação na qual os dados são recuperados da assinatura.
Verificando assinaturas e MACs C_VerifyRecover Não Verifica uma assinatura em dados de parte única, em que os dados são recuperados da assinatura.
Funções Criptográficas de duplo propósito C_DigestEncryptUpdate True Continua operações simultâneas de criptografia e de compilação de múltiplas partes.
Funções Criptográficas de duplo propósito C_DecryptDigestUpdate True Continua operações simultâneas de decriptografia e de compilação de múltiplas partes.
Funções Criptográficas de duplo propósito C_SignEncryptUpdate True Continua operações simultâneas de assinatura e de criptografia de múltiplas partes.
Funções Criptográficas de duplo propósito C_DecryptVerifyUpdate True Continua operações simultâneas de decriptografia e de verificação de múltiplas partes.
Gerenciamento do usuário C_GenerateKey True Gera uma chave secreta.
Gerenciamento do usuário C_GenerateKeyPair True Gera um par de chaves públicas ou privadas.
Gerenciamento do usuário C_WrapKey True Agrupa (criptografa) uma chave.
Gerenciamento do usuário C_UnwrapKey True Desagrupa (decriptografa) uma chave.
Gerenciamento do usuário C_DeriveKey True Deriva uma chave de uma chave base.
Geração de número aleatório C_SeedRandom Não Inclui material de valor inicial no gerador de números aleatórios.
Geração de número aleatório C_GenerateRandom True Gera dados aleatórios. O comprimento dos dados aleatórios não pode ser zero e o ponteiro que aponta para o local dos dados aleatórios não pode ser NULL.
Gerenciamento da função paralela C_GetFunctionStatus Não Função legada que sempre retorna CKR_FUNCTION_NOT_PARALLEL.
Gerenciamento da função paralela C_CancelFunction Não Função legada que sempre retorna CKR_FUNCTION_NOT_PARALLEL.

1: A implementação atual da função C_CreateObject suporta objetos de chave secreta, objetos de chave privada, objetos de chave pública, objetos de dados, objetos de X.509 Public Key Certificate, objetos de certificado de chave pública WTLS e objetos de certificado de atributo X.509.

Mecanismos suportados

Um mecanismo é referido como um processo para implementar uma operação criptográfica. Ele pode variar dependendo do nível de firmware no cartão de criptografia. A tabela a seguir mostra os mecanismos que são suportados e como eles se relacionam às categorias de função comuns do Cryptoki.

Tabela 2. Descreve os mecanismos PKCS #11 suportados
Grupo de funções Mecanismos suportados
Criptografar e decriptografar. 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
Assinar e 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
Compilação. CKM_SHA_1, CKM_SHA224, CKM_SHA256, CKM_SHA384, CKM_SHA512, CKM_SHA512_224, CKM_SHA512_256
Gere chave ou gere par de chaves. 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
Agrupe ou desagrupe. 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
Derive. 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: C_EncryptUpdate, C_DecryptUpdate este mecanismo suporta apenas operações de parte única que não são capazes de utilizar nenhuma das funções Update Cryptotoki, como C_DigestUpdate.

2: Este mecanismo não é suportado pelo cartão de criptografia IBM 4768 e não está disponível para operações C_SignUpdate e C_VerifyUpdate.

Atributos suportados e tipos de chave

Os atributos PKCS #11 definem características de objeto que configuram como um objeto pode ser usado e acessado. A tabela a seguir mostra os atributos suportados e a sua relação com os vários tipos de chave suportados.

Tabela 3. Atributos suportados e tipos de chave
Atributo Descrição Tipos de chave suportados
CKA_BASE Parâmetro de Domínio DSA e usado para C_CreateObject Base g. Chaves privadas DSA, chaves públicas DSA
CKA_CERTIFICATE_CATEGORY Usado para indicar se um certificado armazenado é um certificado de usuário para o qual a chave privada correspondente está disponível no token ("usuário do token"), um certificado de CA ("autoridade")ou outro certificado de entidade final ("outra entidade"). O valor padrão é CK_CERTIFICATE_CATEGORY_UNSPECIFIED. Não aplicável
CKA_CERTIFICATE_TYPE Deve ser especificado quando o objeto de certificado for criado com C_CreateObject Os tipos de certificado são chave pública X.509, certificado de chave pública WTLS e certificado de atributo X.509. Não aplicável
CKA_CHECK_VALUE A soma de verificação da chave ou do certificado Chaves do AES, chaves do DES
CKA_CLASS Classe de objeto (tipo) e é comum para todos os objetos. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_COEFICIENTE Usado para C_CreatObject.. Chaves privadas do RSA
CKA_COPYABLE Se configurado como CKA_TRUE, o objeto poderá ser copiado usando C_CopyObject. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_DECRYPT CK_TRUE se a chave suporta decriptografia. Chaves privadas do EC, chaves privadas do RSA, chaves privadas do DH, chaves privadas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_DERIVE CK_TRUE se a chave suporta derivação de chave (outras chaves podem ser derivadas dessa chave). O padrão é CK_FALSE. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_EC_PARAMS (CKA_ECDSA_PARAMS) Codificação de DER de um valor dos Parâmetros ANSI X9.62. Chaves privadas do EC, chaves públicas do EC
CKA_EC_POINT Codificação DER do ANSI X9.62 ECPoint valor Q. Chaves públicas do CE
CKA_ENCRYPT CK_TRUE se a chave der suporte à criptografia. Chaves públicas do EC, chaves públicas do RSA, chaves públicas do DH, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_END_DATE Data de encerramento do certificado ou da chave. O padrão está vazio. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_EXTRACTABLE CK_TRUE se a chave for extraível e puder ser agrupada. Chaves privadas do EC, chaves privadas do RSA, chaves privadas do DH, chaves privadas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_EXPONENT_1 Use para C_CreateObject.. Expoente privado d modulo q-1. Chaves privadas do RSA
CKA_EXPONENT_2 Use para C_CreateObject.. Coeficiente CRT q-1 mod p. Chaves privadas do RSA
CKA_HASH_OF_ISSUER_PUBLIC_KEY Hash da chave pública do emissor para um certificado.. O padrão está vazio. Não aplicável
CKA_HASH_OF_SUBJECT_PUBLIC_KEY O hash da chave pública do assunto para um certificado O padrão está vazio. Não aplicável
CKA_IBM_PQC_PARAMS Parâmetros de apoio para mecanismos de criptografia pós-quantum. No caso do mecanismo Dilithium CKM_IBM_DILITHIUM, ele fornece um identificador de objeto serializado (OID) que representa a intensidade do algoritmo Dilithium a usar. Atualmente, apenas a força de Dilithium 4 round 2 é suportada. Chaves de Dilithium
CKA_IBM_USE_AS_DATA Um objeto é usado para operações de hash ou derivação de chave quando CK_TRUE Chaves privadas do EC, chaves públicas do EC
CKA_ID Identificador de chave para par de chaves públicas ou privadas ou chave. O padrão está vazio. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_ISSUER DER-codificação do nome do emissor do certificado O padrão está vazio. Não aplicável
CKA_JAVA_MIDP_SECURITY_DOMAIN domínio de segurança MIDP Java para um certificado. O padrão é CK_SECURITY_DOMAIN_UNSPECIFIED.. Não aplicável
CKA_KEY_TYPE Tipo de chave. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_LABEL A descrição do objeto. O padrão está vazio. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_LOCAL CK_TRUE apenas se a chave foi gerada localmente (no token) com uma chamada C_GenerateKey ou C_GenerateKeyPair ou criada com uma chamada C_CopyObject como uma cópia de uma chave que tinha o atributo CKA_LOCAL configurado como CK_TRUE. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_MODIFICÁVEL Configure como CK_TRUE se o objeto pode ser modificado. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_MODULUS Módulo n. Chaves privadas do RSA
CKA_MODULUS_BITS Comprimento em bits do módulo n. Chaves públicas do RSA
CKA_NAME_HASH_ALGORITHM Define o mecanismo usado para calcular o hash das chaves públicas Subject e Issuer para um certificado. O padrão é SHA-1.. Não aplicável
CKA_PRIME Parâmetro de Domínio DSA e usado para C_CreateObject Prime p (512 a 2048 bits em passos de 64 bits). Chaves privadas DSA, chaves públicas DSA
CKA_PRIME_1 Usado para C_CreateObject.. Prime q. Chaves privadas do RSA
CKA_PRIME_2 Usado para C_CreateObject.. Expoente privado d modulo p-1. Chaves privadas do RSA
CKA_PRIVATE CK_TRUE se o objeto for um objeto privado; CK_FALSE se o objeto for um objeto público. O valor padrão é específico do token, e pode depender dos valores de outros atributos do objeto. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_PRIVATE_EXPONENT Usado para C_CreateObject.. Prime p. Chaves privadas do RSA
CKA_PUBLIC_EXPONENT Expoente público e. Chaves privadas RSA, chaves públicas RSA
CKA_PUBLIC_KEY_INFO Codificação DER do SubjectPublicKeyInfo para a chave pública O valor é derivado dos dados de chave pública subjacentes e está vazio por padrão. Chaves públicas RSA, chaves públicas EC, chaves públicas Dilithium
CKA_SENSITIVE CK_TRUE se a chave for sensível. Chaves privadas do EC, chaves privadas do RSA, chaves privadas do DH, chaves privadas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_SERIAL_NUMBER codificação DER do número de série do certificado. O padrão está vazio. Não aplicável
CKA_SIGN CK_TRUE se a chave suporta assinaturas em que a assinatura é um apêndice para os dados. Chaves privadas do EC, chaves privadas do RSA, chaves privadas do DH, chaves privadas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_START_DATE Data de início do certificado ou da chave. O padrão está vazio. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_SUBJECT Codificação DER do certificado ou do nome de assunto da chave. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA
CKA_SUBPRIME Parâmetro de Domínio DSA e usado para C_CreateObject Subprime q (160 bits para p < = 1024 bits, 224 bits ou 256 bits para p> 1024 bits). Chaves privadas DSA, chaves públicas DSA
CKA_TOKEN CK_TRUE se o objeto for um objeto de token; CK_FALSE se o objeto for um objeto de sessão. Chaves privadas do EC, chaves públicas do EC, chaves privadas do RSA, chaves públicas do RSA, chaves privadas do DH, chaves públicas do DH, chaves privadas do DSA, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_TRUSTED O certificado ou chave pode ser confiável para o aplicativo que foi criado. Chaves públicas do EC, chaves públicas do RSA, chaves públicas do DH, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_UNWRAP CK_TRUE se a chave suporta desagrupamento (pode ser usado para desagrupar outras chaves). Chaves privadas do EC, chaves privadas do RSA, chaves privadas do DH, chaves privadas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_URL A URL onde o certificado completo pode ser obtido. O padrão está vazio. Não aplicável
CKA_VALUE Bytes de certificado codificados ou bytes de chave ao usar C_CreateObject Chaves privadas EC, chaves públicas DSA, chaves privadas DSA, ED25519 chaves privadas, ED448 chaves privadas, chaves AES, chaves DES
CKA_VALUE_LEN Comprimento em bytes de valor da chave. Chaves do AES
CKA_VERIFY CK_TRUE se a chave suporta verificação em que a assinatura é um apêndice para os dados. Chaves públicas do EC, chaves públicas do RSA, chaves públicas do DH, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_WRAP CK_TRUE se a chave suporta agrupamento (pode ser usado para agrupar outras chaves). Chaves públicas do EC, chaves públicas do RSA, chaves públicas do DH, chaves públicas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_WRAP_WITH_TRUSTED CK_TRUE se a chave só puder ser agrupada com uma chave de quebra que tenha o CKA_TRUSTED configurado como CK_TRUE. O padrão é CK_FALSE. Chaves privadas do EC, chaves privadas do RSA, chaves privadas do DH, chaves privadas do DSA, chaves do AES, chaves do DES, chaves genéricas
CKA_APPLICATION Descrição do aplicativo que gerencia o objeto (padrão vazio) Não aplicável
CKA_OBJECT_ID Codificação DER do identificador de objeto indicando o tipo de objeto de dados (padrão vazio) Não aplicável
CKA_OWNER Codificação DER do campo de assunto do certificado de atributo. Isso é diferente do atributo CKA_SUBJECT contido nos certificados CKC_X_509 porque a sintaxe ASN.1 e a codificação são diferentes. Não aplicável
CKA_AC_ISSUER Codificação DER do campo do emissor do certificado de atributo. Isso é diferente do atributo CKA_ISSUER contido nos certificados CKC_X_509 porque a sintaxe e a codificação ASN.1 são diferentes (padrão vazio) Não aplicável
CKA_ATTR_TYPES Codificação BER de uma sequência de valores de identificador de objeto correspondentes aos tipos de atributos contidos no certificado. Quando presente, esse campo oferece uma oportunidade para que os aplicativos procurem um determinado certificado de atributo sem buscar e analisar o próprio certificado (padrão vazio) Não aplicável

Curvas suportadas

A biblioteca do PKCS n° 11 suporta tipos limitados de curvas para determinados mecanismos. A tabela a seguir lista os nomes de curvas suportadas para diferentes mecanismos. O número no nome da curva significa a contagem principal de bits suportada.

Curvas suportadas para a geração de chaves de Curva Elíptica (CE)

O mecanismo CKM_EC_KEY_PAIR_GEN é suportado quando você chama a função C_GenerateKeyPair para gerar chaves de Curva Elíptica (CE). Os parâmetros do nome da curva devem ser especificados como identificadores de objetos (OIDs) usando CKA_EC_PARAMS. É possível obter o OID procurando o nome da curva no repositório OID.

Tabela 4. Tipos de curva suportados para gerar chaves EC
Mecanismo do PKCS n° 11 Tipos de curva suportados Nomes de curva suportados
CKM_EC_KEY_PAIR_GEN Curvas do National Institute of Standards and Technology(NIST)
  • P-192, conhecido como secp192r1 e prime192v1.
  • P-224, conhecido como secp224r1.
  • P-256, conhecido como secp256r1 e prime256v1.
  • P-384, conhecido como secp384r1.
  • P-521, conhecido como secp521r.
CKM_EC_KEY_PAIR_GEN Curvas regulares de pool cerebral(BP)
  • BP-160R, conhecido como brainpoolP160r1.
  • BP-192R, conhecido como brainpoolP192r1.
  • BP-224R, conhecido como brainpoolP224r1.
  • BP-256R, conhecido como brainpoolP256r1.
  • BP-320R, conhecido como brainpoolP320r1.
  • BP-384R, conhecido como brainpoolP384r1.
  • BP-512R, conhecido como brainpoolP512r1.
CKM_EC_KEY_PAIR_GEN Twisted Brain pool(BP)curvas
  • BP-160T, conhecido como brainpoolP160t1.
  • BP-192T, conhecido como brainpoolP192t1.
  • BP-224T, conhecido como brainpoolP224t1.
  • BP-256T, conhecido como brainpoolP256t1.
  • BP-320T, conhecido como brainpoolP320t1.
  • BP-384T, conhecido como brainpoolP384t1.
  • BP-512T, conhecido como brainpoolP512t1.
CKM_EC_KEY_PAIR_GEN Curvas de Cryptography Eficiente(SEC)
  • secp256k1
CKM_EC_KEY_PAIR_GEN Curvas de Edwards
  • Ed25519
CKM_EC_KEY_PAIR_GEN Curvas de Edwards
  • Ed448

Curvas suportadas para criptografar ativos digitais e gerar assinaturas digitais

As curvas a seguir são suportadas para mecanismos relacionados ao ativo digital e à assinatura digital.

Tabela 5. Tipos de curva suportados para criptografar ativos digitais e assinaturas
Norma ou esquema Mecanismo do PKCS n° 11 Tipos de curva suportados Nomes de curva suportados
BIP32/BIP44 CKM_IBM_BTC_DERIVE Curvas de Cryptography Eficiente(SEC)
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE Curvas do National Institute of Standards and Technology(NIST)
  • P-256, também conhecido como secp256r1 e prime256v1
SLIP10 CKM_IBM_BTC_DERIVE Curvas de Cryptography Eficiente(SEC)
  • secp256k1
SLIP10 CKM_IBM_BTC_DERIVE Curvas de Edwards
  • Ed25519
EdDSA CKM_IBM_ED25519_SHA512 Curvas de Edwards
  • Ed25519
Schnorr CKM_IBM_ECDSA_OTHER Curvas de Cryptography Eficiente(SEC)
  • secp256k1
Schnorr CKM_IBM_ECDSA_OTHER Curvas do National Institute of Standards and Technology(NIST)
  • P-256, também conhecido como secp256r1 e prime256v1
Schnorr CKM_IBM_ECDSA_OTHER Curvas regulares de pool cerebral(BP)
  • BP-256R, também conhecido como brainpoolP256r1
Schnorr CKM_IBM_ECDSA_OTHER Twisted Brain pool(BP)curvas
  • BP-256T, também conhecido como brainpoolP256t1
Schnorr ECSG_IBM_ECSDSA_S256
  • secp256r1
  • secp256k1
  • BP-256R, também conhecido como brainpoolP256r1
  • BP-256T, também conhecido como brainpoolP256t1
Schnorr-Zilliqa ECSG_IBM_ECSDSA_COMPR_MULTI
  • secp256r1
  • secp256k1
  • BP-256R, também conhecido como brainpoolP256r1
  • BP-256T, também conhecido como brainpoolP256t1

Referência de API PKCS n.º 11 padrão

Para revisar a documentação padrão do PKCS n.º 11, consulte: