Problemas conhecidos da biblioteca PKCS #11 - AWS CloudHSM

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Problemas conhecidos da biblioteca PKCS #11

Problema: a quebra de AES chave na versão 3.0.0 da biblioteca PKCS #11 não é validada IVs antes do uso

Se você especificar um IV com menos de 8 bytes de comprimento, ele será preenchido por bytes imprevisíveis antes de usar.

nota

Isso impacta ‭‬C_WrapKey somente com o mecanismo CKM_AES_KEY_WRAP‭.

  • Impacto: se você fornecer um IV com menos de 8 bytes na versão 3.0.0 da biblioteca PKCS #11, talvez não consiga desempacotar a chave.

  • Soluções alternativas:

    • É altamente recomendável que você atualize para a versão 3.0.1 ou superior da biblioteca PKCS #11, que aplica adequadamente o comprimento IV durante a quebra de AES chave. Altere seu código de empacotamento para passar um NULL IV ou especifique o IV padrão de. 0xA6A6A6A6A6A6A6A6 Para obter mais informações, consulte Personalizado IVs com comprimento não compatível para quebra de AES chave.

    • Se você empacotou alguma chave com a versão 3.0.0 da biblioteca PKCS #11 usando um IV menor que 8 bytes, entre em contato conosco para obter suporte.

  • Status da resolução: Esse problema foi resolvido na versão 3.0.1 da biblioteca PKCS #11. Para agrupar chaves usando quebra de AES chave, especifique um IV com 8 NULL ou 8 bytes de comprimento.

Problema: PKCS #11 SDK 2.0.4 e versões anteriores sempre usavam o IV padrão de 0xA6A6A6A6A6A6A6A6 para embrulhar e desembrulhar a AES chave

IVsOs fornecidos pelo usuário foram ignorados silenciosamente.

nota

Isso impacta ‭‬C_WrapKey somente com o mecanismo CKM_AES_KEY_WRAP‭.

  • Impacto:

    • Se você usou PKCS #11 SDK 2.0.4 ou uma versão anterior e um IV fornecido pelo usuário, suas chaves são agrupadas com o IV padrão de. 0xA6A6A6A6A6A6A6A6

    • Se você usou PKCS #11 SDK 3.0.0 ou posterior e um IV fornecido pelo usuário, suas chaves são agrupadas com o IV fornecido pelo usuário.

  • Soluções alternativas:

    • Para desempacotar chaves encapsuladas com PKCS #11 SDK 2.0.4 ou anterior, use o IV padrão do. 0xA6A6A6A6A6A6A6A6

    • Para desempacotar as chaves encapsuladas com PKCS #11 SDK 3.0.0 ou posterior, use o IV fornecido pelo usuário.

  • Status da resolução: é altamente recomendável que você altere seu código de empacotamento e desempacotamento para passar um NULL IV ou especifique o IV padrão de. 0xA6A6A6A6A6A6A6A6

Problema: o atributo CKA_DERIVE não era compatível e, portanto, não era processado

  • Status da resolução: implementamos correções para aceitar CKA_DERIVE caso ele seja definido como FALSE. O atributo CKA_DERIVE definido como TRUE não será comportado enquanto não começarmos a acrescentar a função de derivação de chaves no AWS CloudHSM. Você deve atualizar seu cliente e SDK (s) para a versão 1.1.1 ou superior para se beneficiar da correção.

Problema: o atributo CKA_SENSITIVE não era compatível e, portanto, não era processado

  • Status da resolução: implementamos correções para aceitar e tratar adequadamente o atributo CKA_SENSITIVE. Você deve atualizar seu cliente e SDK (s) para a versão 1.1.1 ou superior para se beneficiar da correção.

Problema: o hash e a assinatura em várias partes não são compatíveis.

  • Impacto: C_DigestUpdate e C_DigestFinal não estão implementados. C_SignFinal também não é implementado e apresentará falha com CKR_ARGUMENTS_BAD para um buffer não NULL.

  • Solução alternativa: faça o hash dos dados em seu aplicativo e use-os AWS CloudHSM somente para assinar o hash.

  • Status da resolução: estamos corrigindo o cliente e implementando corretamente SDKs o hashing de várias partes. As atualizações serão anunciadas no fórum do AWS CloudHSM e na página de histórico de versões.

Problema: C_GenerateKeyPair não lida com CKA_MODULUS_BITS ou CKA_PUBLIC_EXPONENT no modelo privado de uma forma a estar em conformidade com os padrões

  • Impacto: C_GenerateKeyPair deve retornar CKA_TEMPLATE_INCONSISTENT quando o modelo privado contém CKA_MODULUS_BITS ou CKA_PUBLIC_EXPONENT. Em vez disso, ele gera uma chave privada para a qual todos os campos de uso são definidos como FALSE. A chave não pode ser usada.

  • Solução alternativa: recomendamos que o seu aplicativo verifique os valores dos campos de uso, além do código de erros.

  • Status da resolução: estamos implementando correções para retornar a mensagem de erro adequada quando um modelo de chave privada incorreto é usado. A biblioteca PKCS #11 atualizada será anunciada na página do histórico de versões.

Problema: os buffers para as C_Decrypt API operações C_Encrypt e não podem exceder 16 KB ao usar o mecanismo CKM_AES_GCM

AWS CloudHSM não suporta GCM criptografia em várias partesAES.

  • Impacto: não é possível usar o mecanismo CKM_AES_GCM para criptografar dados maiores que 16 KB.

  • Solução alternativa: use um mecanismo alternativo como o CKM_AES_CBC , CKM_AES_CBC_PAD ou divida os dados em partes e criptografe cada parte usando AES_GCM individualmente. Se você estiver usandoAES_GCM, deverá gerenciar a divisão de seus dados e a criptografia subsequente. AWS CloudHSM não executa GCM criptografia em várias partes AES para você. Observe que FIPS requer que o vetor de inicialização (IV) AES-GCM seja gerado noHSM. Portanto, o IV para cada parte de seus AES dados GCM criptografados será diferente.

  • Status da resolução: estamos corrigindo SDK a falha explicitamente se o buffer de dados for muito grande. Retornamos CKR_MECHANISM_INVALID para C_EncryptUpdate as C_DecryptUpdate API operações. Estamos avaliando alternativas para oferecer suporte a buffers maiores sem depender da criptografia em várias partes. As atualizações serão anunciadas no AWS CloudHSM fórum e na página do histórico de versões.

Problema: a derivação da chave de curva elíptica Diffie-Hellman () é executada parcialmente dentro do ECDH HSM

Sua chave privada EC permanece sempre dentro doHSM, mas o processo de derivação da chave é executado em várias etapas. Consequentemente, os resultados intermediários de cada etapa estão disponíveis no cliente.

  • Impacto: no Cliente SDK 3, a chave derivada usando o CKM_ECDH1_DERIVE mecanismo está disponível primeiro no cliente e depois importada para HSM o. Um identificador de chave é retornado ao aplicativo.

  • Solução alternativa: se você estiver implementando SSL TLS /Offload in AWS CloudHSM, essa limitação pode não ser um problema. Se seu aplicativo exigir que sua chave permaneça sempre dentro de um FIPS limite, considere usar um protocolo alternativo que não dependa da derivação de ECDH chaves.

  • Status da resolução: Estamos desenvolvendo a opção de realizar a derivação de ECDH chaves inteiramente dentro doHSM. A implementação atualizada será anunciada na página de histórico de versões quando estiver disponível.

Problema: a verificação das assinaturas secp256k1 falha em EL6 plataformas como Cent e 6 OS6 RHEL

Isso acontece porque a biblioteca Cloud HSM PKCS #11 evita uma chamada de rede durante a inicialização da operação de verificação usando Open SSL para verificar os dados da curva EC. Como o Secp256k1 não é suportado pelo SSL pacote Open padrão nas EL6 plataformas, a inicialização falha.

  • Impacto: a verificação da assinatura SECP256k1 falhará nas plataformas. EL6 Haverá falha na chamada para verificar com um erro CKR_HOST_MEMORY.

  • Solução alternativa: recomendamos usar o Amazon Linux 1 ou qualquer EL7 plataforma se seu aplicativo PKCS #11 precisar verificar as assinaturas secp256k1. Como alternativa, atualize para uma versão do SSL pacote Open que suporte a curva secp256k1.

  • Status da resolução: estamos implementando correções para voltar ao HSM caso a validação da curva local não esteja disponível. A biblioteca PKCS #11 atualizada será anunciada na página do histórico de versões.

Problema: a sequência incorreta de chamadas de função fornece resultados indefinidos em vez de falhar

  • Impacto: se você chamar uma sequência incorreta de funções, o resultado final será incorreto, mesmo que as chamadas de função individuais retornem com sucesso. Por exemplo, os dados descriptografados podem não corresponder ao texto simples original ou as assinaturas podem falhar na verificação. Esse problema afeta as operações de parte única e de várias partes.

    Exemplos de sequências de funções incorretas:

    • C_EncryptInit/C_EncryptUpdateseguido por C_Encrypt

    • C_DecryptInit/C_DecryptUpdateseguido por C_Decrypt

    • C_SignInit/C_SignUpdateseguido por C_Sign

    • C_VerifyInit/C_VerifyUpdateseguido por C_Verify

    • C_FindObjectsInitseguido por C_FindObjectsInit

  • Solução alternativa: seu aplicativo deve, em conformidade com a especificação PKCS #11, usar a sequência correta de chamadas de função para operações de uma e várias partes. Seu aplicativo não deve depender da biblioteca Cloud HSM PKCS #11 para retornar um erro nessa circunstância.

Problema: a sessão somente leitura não é suportada em SDK 5

  • Problema: o SDK 5 não suporta a abertura de sessões somente de leitura com. C_OpenSession

  • Impacto: se você tentar chamar C_OpenSession sem fornecer CKF_RW_SESSION, a chamada falhará com o erro CKR_FUNCTION_FAILED.

  • Solução alternativa: ao abrir uma sessão, você deve passar os CKF_SERIAL_SESSION | CKF_RW_SESSION sinalizadores para a chamada da função C_OpenSession.

Problema: o arquivo de cabeçalho cryptoki.h é somente para Windows

  • Problema: com as versões 5.0.0 a 5.4.0 do AWS CloudHSM Client SDK 5 no Linux, o arquivo de cabeçalho só /opt/cloudhsm/include/pkcs11/cryptoki.h é compatível com sistemas operacionais Windows.

  • Impacto: você pode encontrar problemas ao tentar incluir esse arquivo de cabeçalho em seu aplicativo em sistemas operacionais baseados em Linux.

  • Status da resolução: atualize para a versão 5.4.1 ou superior do AWS CloudHSM Client SDK 5, que inclui uma versão compatível com Linux desse arquivo de cabeçalho.