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.
| 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.
| 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.
| 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.
| 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) |
|
| CKM_EC_KEY_PAIR_GEN | Curvas regulares de pool cerebral(BP) |
|
| CKM_EC_KEY_PAIR_GEN | Twisted Brain pool(BP)curvas |
|
| CKM_EC_KEY_PAIR_GEN | Curvas de Cryptography Eficiente(SEC) |
|
| CKM_EC_KEY_PAIR_GEN | Curvas de Edwards |
|
| CKM_EC_KEY_PAIR_GEN | Curvas de Edwards |
|
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.
| 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) |
|
| SLIP10 | CKM_IBM_BTC_DERIVE | Curvas do National Institute of Standards and Technology(NIST) |
|
| SLIP10 | CKM_IBM_BTC_DERIVE | Curvas de Cryptography Eficiente(SEC) |
|
| SLIP10 | CKM_IBM_BTC_DERIVE | Curvas de Edwards |
|
| EdDSA | CKM_IBM_ED25519_SHA512 | Curvas de Edwards |
|
| Schnorr | CKM_IBM_ECDSA_OTHER | Curvas de Cryptography Eficiente(SEC) |
|
| Schnorr | CKM_IBM_ECDSA_OTHER | Curvas do National Institute of Standards and Technology(NIST) |
|
| Schnorr | CKM_IBM_ECDSA_OTHER | Curvas regulares de pool cerebral(BP) |
|
| Schnorr | CKM_IBM_ECDSA_OTHER | Twisted Brain pool(BP)curvas |
|
| Schnorr | ECSG_IBM_ECSDSA_S256 |
|
|
| Schnorr-Zilliqa | ECSG_IBM_ECSDSA_COMPR_MULTI |
|
Referência de API PKCS n.º 11 padrão
Para revisar a documentação padrão do PKCS n.º 11, consulte: